You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ma...@apache.org on 2017/06/27 20:12:27 UTC
[01/14] incubator-superset-site git commit: Initial commit - Superset
docs as of 0.18.5
Repository: incubator-superset-site
Updated Branches:
refs/heads/asf-site [created] 886f04b06
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/videos.html
----------------------------------------------------------------------
diff --git a/videos.html b/videos.html
new file mode 100644
index 0000000..f2397e1
--- /dev/null
+++ b/videos.html
@@ -0,0 +1,270 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <title>Videos — Superset's documentation documentation</title>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+
+
+
+
+
+ <link rel="index" title="Index"
+ href="genindex.html"/>
+ <link rel="search" title="Search" href="search.html"/>
+ <link rel="top" title="Superset's documentation documentation" href="index.html"/>
+ <link rel="next" title="Gallery" href="gallery.html"/>
+ <link rel="prev" title="Visualization Tools" href="visualization.html"/>
+
+
+ <script src="_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+ <div class="wy-grid-for-nav">
+
+
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search">
+
+
+
+ <a href="index.html" class="icon icon-home"> Superset's documentation
+
+
+
+ </a>
+
+
+
+
+
+
+
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+
+
+ </div>
+
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+
+
+
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation & Configuration</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial for Superset Administrators</a></li>
+<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l1"><a class="reference internal" href="sqllab.html">SQL Lab</a></li>
+<li class="toctree-l1"><a class="reference internal" href="visualization.html">Visualization Tools</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Videos</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#quick-intro">Quick Intro</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#dashboard-creation">Dashboard Creation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#dashboard-filtering">Dashboard Filtering</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#customize-css-and-dashboard-themes">Customize CSS and dashboard themes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#slice-annotations">Slice Annotations</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#adding-a-table">Adding a Table</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#define-sql-expressions">Define SQL Expressions</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="gallery.html">Gallery</a></li>
+<li class="toctree-l1"><a class="reference internal" href="druid.html">Druid</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
+</ul>
+
+
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+
+ <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="index.html">Superset's documentation</a>
+ </nav>
+
+
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="index.html">Docs</a> »</li>
+
+ <li>Videos</li>
+ <li class="wy-breadcrumbs-aside">
+
+
+
+ </li>
+ </ul>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <div class="section" id="videos">
+<h1>Videos<a class="headerlink" href="#videos" title="Permalink to this headline">¶</a></h1>
+<p>Here is a collection of short videos showing different aspect
+of Superset.</p>
+<div class="section" id="quick-intro">
+<h2>Quick Intro<a class="headerlink" href="#quick-intro" title="Permalink to this headline">¶</a></h2>
+<p>This video demonstrates how Superset works at a high level, it shows how
+to navigate through datasets and dashboards that are already available.</p>
+<iframe width="640" height="360" src="//www.youtube.com/embed/3Txm_nj_R7M?feature=player_detailpage" frameborder="0" allowfullscreen="1"> </iframe></div>
+<div class="section" id="dashboard-creation">
+<h2>Dashboard Creation<a class="headerlink" href="#dashboard-creation" title="Permalink to this headline">¶</a></h2>
+<p>This video walk you through the creation of a simple dashboard as a
+collection of data slices.</p>
+<ul class="simple">
+<li>Coming soon!</li>
+</ul>
+</div>
+<div class="section" id="dashboard-filtering">
+<h2>Dashboard Filtering<a class="headerlink" href="#dashboard-filtering" title="Permalink to this headline">¶</a></h2>
+<p>This video shows how to create dynamic filters on dashboards, how to
+immunize certain widgets from being affected by filters.</p>
+<ul class="simple">
+<li>Coming soon!</li>
+</ul>
+</div>
+<div class="section" id="customize-css-and-dashboard-themes">
+<h2>Customize CSS and dashboard themes<a class="headerlink" href="#customize-css-and-dashboard-themes" title="Permalink to this headline">¶</a></h2>
+<p>A quick walkthrough on how to apply existing CSS templates, alter them and
+create new ones.</p>
+<ul class="simple">
+<li>Coming soon!</li>
+</ul>
+</div>
+<div class="section" id="slice-annotations">
+<h2>Slice Annotations<a class="headerlink" href="#slice-annotations" title="Permalink to this headline">¶</a></h2>
+<p>A short video on how to annotate your charts, the markdown language and
+to toggle them on dashboards.</p>
+<ul class="simple">
+<li>Coming soon!</li>
+</ul>
+</div>
+<div class="section" id="adding-a-table">
+<h2>Adding a Table<a class="headerlink" href="#adding-a-table" title="Permalink to this headline">¶</a></h2>
+<p>This videos shows you how to expose a new table in Superset, and how to
+define the semantics on how this can be accessed by others in the <code class="docutils literal"><span class="pre">Explore</span></code>
+and <code class="docutils literal"><span class="pre">Dashboard</span></code> views.</p>
+<ul class="simple">
+<li>Coming soon!</li>
+</ul>
+</div>
+<div class="section" id="define-sql-expressions">
+<h2>Define SQL Expressions<a class="headerlink" href="#define-sql-expressions" title="Permalink to this headline">¶</a></h2>
+<p>A walkthrough on how to create your own derived dimensions and metrics.</p>
+<ul class="simple">
+<li>Coming soon!</li>
+</ul>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ <footer>
+
+ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+
+ <a href="gallery.html" class="btn btn-neutral float-right" title="Gallery" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
+
+
+ <a href="visualization.html" class="btn btn-neutral" title="Visualization Tools" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+
+ </div>
+
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>
+
+ </p>
+ </div>
+ Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
+
+ </div>
+ </div>
+
+ </section>
+
+ </div>
+
+
+
+
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT:'./',
+ VERSION:'',
+ COLLAPSE_INDEX:false,
+ FILE_SUFFIX:'.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+
+
+
+
+
+ <script type="text/javascript" src="_static/js/theme.js"></script>
+
+
+
+
+ <script type="text/javascript">
+ jQuery(function () {
+ SphinxRtdTheme.StickyNav.enable();
+ });
+ </script>
+
+
+</body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/visualization.html
----------------------------------------------------------------------
diff --git a/visualization.html b/visualization.html
new file mode 100644
index 0000000..6947a23
--- /dev/null
+++ b/visualization.html
@@ -0,0 +1,2887 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <title>Visualization Tools — Superset's documentation documentation</title>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+
+
+
+
+
+ <link rel="index" title="Index"
+ href="genindex.html"/>
+ <link rel="search" title="Search" href="search.html"/>
+ <link rel="top" title="Superset's documentation documentation" href="index.html"/>
+ <link rel="next" title="Videos" href="videos.html"/>
+ <link rel="prev" title="SQL Lab" href="sqllab.html"/>
+
+
+ <script src="_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+ <div class="wy-grid-for-nav">
+
+
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search">
+
+
+
+ <a href="index.html" class="icon icon-home"> Superset's documentation
+
+
+
+ </a>
+
+
+
+
+
+
+
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+
+
+ </div>
+
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+
+
+
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation & Configuration</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial for Superset Administrators</a></li>
+<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l1"><a class="reference internal" href="sqllab.html">SQL Lab</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Visualization Tools</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#country-map-tools">Country Map Tools</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#list-of-countries">List of Countries</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#you-need-to-add-a-new-country">You need to add a new Country ?</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="videos.html">Videos</a></li>
+<li class="toctree-l1"><a class="reference internal" href="gallery.html">Gallery</a></li>
+<li class="toctree-l1"><a class="reference internal" href="druid.html">Druid</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
+</ul>
+
+
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+
+ <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="index.html">Superset's documentation</a>
+ </nav>
+
+
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="index.html">Docs</a> »</li>
+
+ <li>Visualization Tools</li>
+ <li class="wy-breadcrumbs-aside">
+
+
+
+ </li>
+ </ul>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <div class="section" id="visualization-tools">
+<h1>Visualization Tools<a class="headerlink" href="#visualization-tools" title="Permalink to this headline">¶</a></h1>
+<p>The data is visualized via the slices. These slices are visual components made with the D3.js. Some components can be completed or required inputs.</p>
+<div class="section" id="country-map-tools">
+<h2>Country Map Tools<a class="headerlink" href="#country-map-tools" title="Permalink to this headline">¶</a></h2>
+<p>This tool is used in slices for visualization number or string by region, province or department of your countries.
+So, if you want to use tools, you need ISO 3166-2 code of region, province or departmenent.</p>
+<p>ISO 3166-2 is part of the ISO 3166 standard published by the International Organization for Standardization (ISO), and defines codes for identifying the principal subdivisions (e.g., provinces or states) of all countries coded in ISO 3166-1</p>
+<p>The purpose of ISO 3166-2 is to establish an international standard of short and unique alphanumeric codes to represent the relevant administrative divisions and dependent territories of all countries in a more convenient and less ambiguous form than their full names. Each complete ISO 3166-2 code consists of two parts, separated by a hyphen:[1]</p>
+<p>The first part is the ISO 3166-1 alpha-2 code of the country;
+The second part is a string of up to three alphanumeric characters, which is usually obtained from national sources and stems from coding systems already in use in the country concerned, but may also be developed by the ISO itself.</p>
+</div>
+<div class="section" id="list-of-countries">
+<h2>List of Countries<a class="headerlink" href="#list-of-countries" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Belgium</li>
+</ul>
+<table border="1" class="docutils">
+<colgroup>
+<col width="32%" />
+<col width="68%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">ISO</th>
+<th class="head">Name of region</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>BE-BRU</td>
+<td>Bruxelles</td>
+</tr>
+<tr class="row-odd"><td>BE-VAN</td>
+<td>Antwerpen</td>
+</tr>
+<tr class="row-even"><td>BE-VLI</td>
+<td>Limburg</td>
+</tr>
+<tr class="row-odd"><td>BE-VOV</td>
+<td>Oost-Vlaanderen</td>
+</tr>
+<tr class="row-even"><td>BE-VBR</td>
+<td>Vlaams Brabant</td>
+</tr>
+<tr class="row-odd"><td>BE-VWV</td>
+<td>West-Vlaanderen</td>
+</tr>
+<tr class="row-even"><td>BE-WBR</td>
+<td>Brabant Wallon</td>
+</tr>
+<tr class="row-odd"><td>BE-WHT</td>
+<td>Hainaut</td>
+</tr>
+<tr class="row-even"><td>BE-WLG</td>
+<td>Liège</td>
+</tr>
+<tr class="row-odd"><td>BE-VLI</td>
+<td>Limburg</td>
+</tr>
+<tr class="row-even"><td>BE-WLX</td>
+<td>Luxembourg</td>
+</tr>
+<tr class="row-odd"><td>BE-WNA</td>
+<td>Namur</td>
+</tr>
+</tbody>
+</table>
+<ul class="simple">
+<li>Brazil</li>
+</ul>
+<table border="1" class="docutils">
+<colgroup>
+<col width="30%" />
+<col width="70%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">ISO</th>
+<th class="head">Name of region</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>BR-AC</td>
+<td>Acre</td>
+</tr>
+<tr class="row-odd"><td>BR-AL</td>
+<td>Alagoas</td>
+</tr>
+<tr class="row-even"><td>BR-AP</td>
+<td>Amapá</td>
+</tr>
+<tr class="row-odd"><td>BR-AM</td>
+<td>Amazonas</td>
+</tr>
+<tr class="row-even"><td>BR-BA</td>
+<td>Bahia</td>
+</tr>
+<tr class="row-odd"><td>BR-CE</td>
+<td>Ceará</td>
+</tr>
+<tr class="row-even"><td>BR-DF</td>
+<td>Distrito Federal</td>
+</tr>
+<tr class="row-odd"><td>BR-ES</td>
+<td>Espírito Santo</td>
+</tr>
+<tr class="row-even"><td>BR-GO</td>
+<td>Goiás</td>
+</tr>
+<tr class="row-odd"><td>BR-MA</td>
+<td>Maranhão</td>
+</tr>
+<tr class="row-even"><td>BR-MS</td>
+<td>Mato Grosso do Sul</td>
+</tr>
+<tr class="row-odd"><td>BR-MT</td>
+<td>Mato Grosso</td>
+</tr>
+<tr class="row-even"><td>BR-MG</td>
+<td>Minas Gerais</td>
+</tr>
+<tr class="row-odd"><td>BR-PA</td>
+<td>Pará</td>
+</tr>
+<tr class="row-even"><td>BR-PB</td>
+<td>Paraíba</td>
+</tr>
+<tr class="row-odd"><td>BR-PR</td>
+<td>Paraná</td>
+</tr>
+<tr class="row-even"><td>BR-PE</td>
+<td>Pernambuco</td>
+</tr>
+<tr class="row-odd"><td>BR-PI</td>
+<td>Piauí</td>
+</tr>
+<tr class="row-even"><td>BR-RJ</td>
+<td>Rio de Janeiro</td>
+</tr>
+<tr class="row-odd"><td>BR-RN</td>
+<td>Rio Grande do Norte</td>
+</tr>
+<tr class="row-even"><td>BR-RS</td>
+<td>Rio Grande do Sul</td>
+</tr>
+<tr class="row-odd"><td>BR-RO</td>
+<td>Rondônia</td>
+</tr>
+<tr class="row-even"><td>BR-RR</td>
+<td>Roraima</td>
+</tr>
+<tr class="row-odd"><td>BR-SP</td>
+<td>São Paulo</td>
+</tr>
+<tr class="row-even"><td>BR-SC</td>
+<td>Santa Catarina</td>
+</tr>
+<tr class="row-odd"><td>BR-SE</td>
+<td>Sergipe</td>
+</tr>
+<tr class="row-even"><td>BR-TO</td>
+<td>Tocantins</td>
+</tr>
+</tbody>
+</table>
+<ul class="simple">
+<li>China</li>
+</ul>
+<table border="1" class="docutils">
+<colgroup>
+<col width="31%" />
+<col width="69%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">ISO</th>
+<th class="head">Name of region</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>CN-34</td>
+<td>Anhui</td>
+</tr>
+<tr class="row-odd"><td>CN-11</td>
+<td>Beijing</td>
+</tr>
+<tr class="row-even"><td>CN-50</td>
+<td>Chongqing</td>
+</tr>
+<tr class="row-odd"><td>CN-35</td>
+<td>Fujian</td>
+</tr>
+<tr class="row-even"><td>CN-62</td>
+<td>Gansu</td>
+</tr>
+<tr class="row-odd"><td>CN-44</td>
+<td>Guangdong</td>
+</tr>
+<tr class="row-even"><td>CN-45</td>
+<td>Guangxi</td>
+</tr>
+<tr class="row-odd"><td>CN-52</td>
+<td>Guizhou</td>
+</tr>
+<tr class="row-even"><td>CN-46</td>
+<td>Hainan</td>
+</tr>
+<tr class="row-odd"><td>CN-13</td>
+<td>Hebei</td>
+</tr>
+<tr class="row-even"><td>CN-23</td>
+<td>Heilongjiang</td>
+</tr>
+<tr class="row-odd"><td>CN-41</td>
+<td>Henan</td>
+</tr>
+<tr class="row-even"><td>CN-42</td>
+<td>Hubei</td>
+</tr>
+<tr class="row-odd"><td>CN-43</td>
+<td>Hunan</td>
+</tr>
+<tr class="row-even"><td>CN-32</td>
+<td>Jiangsu</td>
+</tr>
+<tr class="row-odd"><td>CN-36</td>
+<td>Jiangxi</td>
+</tr>
+<tr class="row-even"><td>CN-22</td>
+<td>Jilin</td>
+</tr>
+<tr class="row-odd"><td>CN-21</td>
+<td>Liaoning</td>
+</tr>
+<tr class="row-even"><td>CN-15</td>
+<td>Nei Mongol</td>
+</tr>
+<tr class="row-odd"><td>CN-64</td>
+<td>Ningxia Hui</td>
+</tr>
+<tr class="row-even"><td>CN-63</td>
+<td>Qinghai</td>
+</tr>
+<tr class="row-odd"><td>CN-61</td>
+<td>Shaanxi</td>
+</tr>
+<tr class="row-even"><td>CN-37</td>
+<td>Shandong</td>
+</tr>
+<tr class="row-odd"><td>CN-31</td>
+<td>Shanghai</td>
+</tr>
+<tr class="row-even"><td>CN-14</td>
+<td>Shanxi</td>
+</tr>
+<tr class="row-odd"><td>CN-51</td>
+<td>Sichuan</td>
+</tr>
+<tr class="row-even"><td>CN-12</td>
+<td>Tianjin</td>
+</tr>
+<tr class="row-odd"><td>CN-65</td>
+<td>Xinjiang Uygur</td>
+</tr>
+<tr class="row-even"><td>CN-54</td>
+<td>Xizang</td>
+</tr>
+<tr class="row-odd"><td>CN-53</td>
+<td>Yunnan</td>
+</tr>
+<tr class="row-even"><td>CN-33</td>
+<td>Zhejiang</td>
+</tr>
+</tbody>
+</table>
+<ul class="simple">
+<li>Egypt</li>
+</ul>
+<table border="1" class="docutils">
+<colgroup>
+<col width="31%" />
+<col width="69%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">ISO</th>
+<th class="head">Name of region</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>EG-DK</td>
+<td>Ad Daqahliyah</td>
+</tr>
+<tr class="row-odd"><td>EG-BA</td>
+<td>Al Bahr al Ahmar</td>
+</tr>
+<tr class="row-even"><td>EG-BH</td>
+<td>Al Buhayrah</td>
+</tr>
+<tr class="row-odd"><td>EG-FYM</td>
+<td>Al Fayyum</td>
+</tr>
+<tr class="row-even"><td>EG-GH</td>
+<td>Al Gharbiyah</td>
+</tr>
+<tr class="row-odd"><td>EG-ALX</td>
+<td>Al Iskandariyah</td>
+</tr>
+<tr class="row-even"><td>EG-IS</td>
+<td>Al Isma iliyah</td>
+</tr>
+<tr class="row-odd"><td>EG-GZ</td>
+<td>Al Jizah</td>
+</tr>
+<tr class="row-even"><td>EG-MNF</td>
+<td>Al Minufiyah</td>
+</tr>
+<tr class="row-odd"><td>EG-MN</td>
+<td>Al Minya</td>
+</tr>
+<tr class="row-even"><td>EG-C</td>
+<td>Al Qahirah</td>
+</tr>
+<tr class="row-odd"><td>EG-KB</td>
+<td>Al Qalyubiyah</td>
+</tr>
+<tr class="row-even"><td>EG-LX</td>
+<td>Al Uqsur</td>
+</tr>
+<tr class="row-odd"><td>EG-WAD</td>
+<td>Al Wadi al Jadid</td>
+</tr>
+<tr class="row-even"><td>EG-SUZ</td>
+<td>As Suways</td>
+</tr>
+<tr class="row-odd"><td>EG-SHR</td>
+<td>Ash Sharqiyah</td>
+</tr>
+<tr class="row-even"><td>EG-ASN</td>
+<td>Aswan</td>
+</tr>
+<tr class="row-odd"><td>EG-AST</td>
+<td>Asyut</td>
+</tr>
+<tr class="row-even"><td>EG-BNS</td>
+<td>Bani Suwayf</td>
+</tr>
+<tr class="row-odd"><td>EG-PTS</td>
+<td>Bur Sa id</td>
+</tr>
+<tr class="row-even"><td>EG-DT</td>
+<td>Dumyat</td>
+</tr>
+<tr class="row-odd"><td>EG-JS</td>
+<td>Janub Sina’</td>
+</tr>
+<tr class="row-even"><td>EG-KFS</td>
+<td>Kafr ash Shaykh</td>
+</tr>
+<tr class="row-odd"><td>EG-MT</td>
+<td>Matrouh</td>
+</tr>
+<tr class="row-even"><td>EG-KN</td>
+<td>Qina</td>
+</tr>
+<tr class="row-odd"><td>EG-SIN</td>
+<td>Shamal Sina’</td>
+</tr>
+<tr class="row-even"><td>EG-SHG</td>
+<td>Suhaj</td>
+</tr>
+</tbody>
+</table>
+<ul class="simple">
+<li>France</li>
+</ul>
+<table border="1" class="docutils">
+<colgroup>
+<col width="23%" />
+<col width="77%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">ISO</th>
+<th class="head">Name of region</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>FR-67</td>
+<td>Bas-Rhin</td>
+</tr>
+<tr class="row-odd"><td>FR-68</td>
+<td>Haut-Rhin</td>
+</tr>
+<tr class="row-even"><td>FR-24</td>
+<td>Dordogne</td>
+</tr>
+<tr class="row-odd"><td>FR-33</td>
+<td>Gironde</td>
+</tr>
+<tr class="row-even"><td>FR-40</td>
+<td>Landes</td>
+</tr>
+<tr class="row-odd"><td>FR-47</td>
+<td>Lot-et-Garonne</td>
+</tr>
+<tr class="row-even"><td>FR-64</td>
+<td>Pyrénées-Atlantiques</td>
+</tr>
+<tr class="row-odd"><td>FR-03</td>
+<td>Allier</td>
+</tr>
+<tr class="row-even"><td>FR-15</td>
+<td>Cantal</td>
+</tr>
+<tr class="row-odd"><td>FR-43</td>
+<td>Haute-Loire</td>
+</tr>
+<tr class="row-even"><td>FR-63</td>
+<td>Puy-de-Dôme</td>
+</tr>
+<tr class="row-odd"><td>FR-91</td>
+<td>Essonne</td>
+</tr>
+<tr class="row-even"><td>FR-92</td>
+<td>Hauts-de-Seine</td>
+</tr>
+<tr class="row-odd"><td>FR-75</td>
+<td>Paris</td>
+</tr>
+<tr class="row-even"><td>FR-77</td>
+<td>Seine-et-Marne</td>
+</tr>
+<tr class="row-odd"><td>FR-93</td>
+<td>Seine-Saint-Denis</td>
+</tr>
+<tr class="row-even"><td>FR-95</td>
+<td>Val-d’Oise</td>
+</tr>
+<tr class="row-odd"><td>FR-94</td>
+<td>Val-de-Marne</td>
+</tr>
+<tr class="row-even"><td>FR-78</td>
+<td>Yvelines</td>
+</tr>
+<tr class="row-odd"><td>FR-14</td>
+<td>Calvados</td>
+</tr>
+<tr class="row-even"><td>FR-50</td>
+<td>Manche</td>
+</tr>
+<tr class="row-odd"><td>FR-61</td>
+<td>Orne</td>
+</tr>
+<tr class="row-even"><td>FR-21</td>
+<td>Côte-d’Or</td>
+</tr>
+<tr class="row-odd"><td>FR-58</td>
+<td>Nièvre</td>
+</tr>
+<tr class="row-even"><td>FR-71</td>
+<td>Saône-et-Loire</td>
+</tr>
+<tr class="row-odd"><td>FR-89</td>
+<td>Yonne</td>
+</tr>
+<tr class="row-even"><td>FR-22</td>
+<td>Côtes-d’Armor</td>
+</tr>
+<tr class="row-odd"><td>FR-29</td>
+<td>Finistère</td>
+</tr>
+<tr class="row-even"><td>FR-35</td>
+<td>Ille-et-Vilaine</td>
+</tr>
+<tr class="row-odd"><td>FR-56</td>
+<td>Morbihan</td>
+</tr>
+<tr class="row-even"><td>FR-18</td>
+<td>Cher</td>
+</tr>
+<tr class="row-odd"><td>FR-28</td>
+<td>Eure-et-Loir</td>
+</tr>
+<tr class="row-even"><td>FR-37</td>
+<td>Indre-et-Loire</td>
+</tr>
+<tr class="row-odd"><td>FR-36</td>
+<td>Indre</td>
+</tr>
+<tr class="row-even"><td>FR-41</td>
+<td>Loir-et-Cher</td>
+</tr>
+<tr class="row-odd"><td>FR-45</td>
+<td>Loiret</td>
+</tr>
+<tr class="row-even"><td>FR-08</td>
+<td>Ardennes</td>
+</tr>
+<tr class="row-odd"><td>FR-10</td>
+<td>Aube</td>
+</tr>
+<tr class="row-even"><td>FR-52</td>
+<td>Haute-Marne</td>
+</tr>
+<tr class="row-odd"><td>FR-51</td>
+<td>Marne</td>
+</tr>
+<tr class="row-even"><td>FR-2A</td>
+<td>Corse-du-Sud</td>
+</tr>
+<tr class="row-odd"><td>FR-2B</td>
+<td>Haute-Corse</td>
+</tr>
+<tr class="row-even"><td>FR-25</td>
+<td>Doubs</td>
+</tr>
+<tr class="row-odd"><td>FR-70</td>
+<td>Haute-Saône</td>
+</tr>
+<tr class="row-even"><td>FR-39</td>
+<td>Jura</td>
+</tr>
+<tr class="row-odd"><td>FR-90</td>
+<td>Territoire de Belfort</td>
+</tr>
+<tr class="row-even"><td>FR-27</td>
+<td>Eure</td>
+</tr>
+<tr class="row-odd"><td>FR-76</td>
+<td>Seine-Maritime</td>
+</tr>
+<tr class="row-even"><td>FR-11</td>
+<td>Aude</td>
+</tr>
+<tr class="row-odd"><td>FR-30</td>
+<td>Gard</td>
+</tr>
+<tr class="row-even"><td>FR-34</td>
+<td>Hérault</td>
+</tr>
+<tr class="row-odd"><td>FR-48</td>
+<td>Lozère</td>
+</tr>
+<tr class="row-even"><td>FR-66</td>
+<td>Pyrénées-Orientales</td>
+</tr>
+<tr class="row-odd"><td>FR-19</td>
+<td>Corrèze</td>
+</tr>
+<tr class="row-even"><td>FR-23</td>
+<td>Creuse</td>
+</tr>
+<tr class="row-odd"><td>FR-87</td>
+<td>Haute-Vienne</td>
+</tr>
+<tr class="row-even"><td>FR-54</td>
+<td>Meurthe-et-Moselle</td>
+</tr>
+<tr class="row-odd"><td>FR-55</td>
+<td>Meuse</td>
+</tr>
+<tr class="row-even"><td>FR-57</td>
+<td>Moselle</td>
+</tr>
+<tr class="row-odd"><td>FR-88</td>
+<td>Vosges</td>
+</tr>
+<tr class="row-even"><td>FR-09</td>
+<td>Ariège</td>
+</tr>
+<tr class="row-odd"><td>FR-12</td>
+<td>Aveyron</td>
+</tr>
+<tr class="row-even"><td>FR-32</td>
+<td>Gers</td>
+</tr>
+<tr class="row-odd"><td>FR-31</td>
+<td>Haute-Garonne</td>
+</tr>
+<tr class="row-even"><td>FR-65</td>
+<td>Hautes-Pyrénées</td>
+</tr>
+<tr class="row-odd"><td>FR-46</td>
+<td>Lot</td>
+</tr>
+<tr class="row-even"><td>FR-82</td>
+<td>Tarn-et-Garonne</td>
+</tr>
+<tr class="row-odd"><td>FR-81</td>
+<td>Tarn</td>
+</tr>
+<tr class="row-even"><td>FR-59</td>
+<td>Nord</td>
+</tr>
+<tr class="row-odd"><td>FR-62</td>
+<td>Pas-de-Calais</td>
+</tr>
+<tr class="row-even"><td>FR-44</td>
+<td>Loire-Atlantique</td>
+</tr>
+<tr class="row-odd"><td>FR-49</td>
+<td>Maine-et-Loire</td>
+</tr>
+<tr class="row-even"><td>FR-53</td>
+<td>Mayenne</td>
+</tr>
+<tr class="row-odd"><td>FR-72</td>
+<td>Sarthe</td>
+</tr>
+<tr class="row-even"><td>FR-85</td>
+<td>Vendée</td>
+</tr>
+<tr class="row-odd"><td>FR-02</td>
+<td>Aisne</td>
+</tr>
+<tr class="row-even"><td>FR-60</td>
+<td>Oise</td>
+</tr>
+<tr class="row-odd"><td>FR-80</td>
+<td>Somme</td>
+</tr>
+<tr class="row-even"><td>FR-17</td>
+<td>Charente-Maritime</td>
+</tr>
+<tr class="row-odd"><td>FR-16</td>
+<td>Charente</td>
+</tr>
+<tr class="row-even"><td>FR-79</td>
+<td>Deux-Sèvres</td>
+</tr>
+<tr class="row-odd"><td>FR-86</td>
+<td>Vienne</td>
+</tr>
+<tr class="row-even"><td>FR-04</td>
+<td>Alpes-de-Haute-Provence</td>
+</tr>
+<tr class="row-odd"><td>FR-06</td>
+<td>Alpes-Maritimes</td>
+</tr>
+<tr class="row-even"><td>FR-13</td>
+<td>Bouches-du-Rhône</td>
+</tr>
+<tr class="row-odd"><td>FR-05</td>
+<td>Hautes-Alpes</td>
+</tr>
+<tr class="row-even"><td>FR-83</td>
+<td>Var</td>
+</tr>
+<tr class="row-odd"><td>FR-84</td>
+<td>Vaucluse</td>
+</tr>
+<tr class="row-even"><td>FR-01</td>
+<td>Ain</td>
+</tr>
+<tr class="row-odd"><td>FR-07</td>
+<td>Ardèche</td>
+</tr>
+<tr class="row-even"><td>FR-26</td>
+<td>Drôme</td>
+</tr>
+<tr class="row-odd"><td>FR-74</td>
+<td>Haute-Savoie</td>
+</tr>
+<tr class="row-even"><td>FR-38</td>
+<td>Isère</td>
+</tr>
+<tr class="row-odd"><td>FR-42</td>
+<td>Loire</td>
+</tr>
+<tr class="row-even"><td>FR-69</td>
+<td>Rhône</td>
+</tr>
+<tr class="row-odd"><td>FR-73</td>
+<td>Savoie</td>
+</tr>
+</tbody>
+</table>
+<ul class="simple">
+<li>Germany</li>
+</ul>
+<table border="1" class="docutils">
+<colgroup>
+<col width="23%" />
+<col width="77%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">ISO</th>
+<th class="head">Name of region</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>DE-BW</td>
+<td>Baden-Württemberg</td>
+</tr>
+<tr class="row-odd"><td>DE-BY</td>
+<td>Bayern</td>
+</tr>
+<tr class="row-even"><td>DE-BE</td>
+<td>Berlin</td>
+</tr>
+<tr class="row-odd"><td>DE-BB</td>
+<td>Brandenburg</td>
+</tr>
+<tr class="row-even"><td>DE-HB</td>
+<td>Bremen</td>
+</tr>
+<tr class="row-odd"><td>DE-HH</td>
+<td>Hamburg</td>
+</tr>
+<tr class="row-even"><td>DE-HE</td>
+<td>Hessen</td>
+</tr>
+<tr class="row-odd"><td>DE-MV</td>
+<td>Mecklenburg-Vorpommern</td>
+</tr>
+<tr class="row-even"><td>DE-NI</td>
+<td>Niedersachsen</td>
+</tr>
+<tr class="row-odd"><td>DE-NW</td>
+<td>Nordrhein-Westfalen</td>
+</tr>
+<tr class="row-even"><td>DE-RP</td>
+<td>Rheinland-Pfalz</td>
+</tr>
+<tr class="row-odd"><td>DE-SL</td>
+<td>Saarland</td>
+</tr>
+<tr class="row-even"><td>DE-ST</td>
+<td>Sachsen-Anhalt</td>
+</tr>
+<tr class="row-odd"><td>DE-SN</td>
+<td>Sachsen</td>
+</tr>
+<tr class="row-even"><td>DE-SH</td>
+<td>Schleswig-Holstein</td>
+</tr>
+<tr class="row-odd"><td>DE-TH</td>
+<td>Thüringen</td>
+</tr>
+</tbody>
+</table>
+<ul class="simple">
+<li>Italy</li>
+</ul>
+<table border="1" class="docutils">
+<colgroup>
+<col width="14%" />
+<col width="86%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">ISO</th>
+<th class="head">Name of region</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>IT-CH</td>
+<td>Chieti</td>
+</tr>
+<tr class="row-odd"><td>IT-AQ</td>
+<td>L’Aquila</td>
+</tr>
+<tr class="row-even"><td>IT-PE</td>
+<td>Pescara</td>
+</tr>
+<tr class="row-odd"><td>IT-TE</td>
+<td>Teramo</td>
+</tr>
+<tr class="row-even"><td>IT-BA</td>
+<td>Bari</td>
+</tr>
+<tr class="row-odd"><td>IT-BT</td>
+<td>Barletta-Andria-Trani</td>
+</tr>
+<tr class="row-even"><td>IT-BR</td>
+<td>Brindisi</td>
+</tr>
+<tr class="row-odd"><td>IT-FG</td>
+<td>Foggia</td>
+</tr>
+<tr class="row-even"><td>IT-LE</td>
+<td>Lecce</td>
+</tr>
+<tr class="row-odd"><td>IT-TA</td>
+<td>Taranto</td>
+</tr>
+<tr class="row-even"><td>IT-MT</td>
+<td>Matera</td>
+</tr>
+<tr class="row-odd"><td>IT-PZ</td>
+<td>Potenza</td>
+</tr>
+<tr class="row-even"><td>IT-CZ</td>
+<td>Catanzaro</td>
+</tr>
+<tr class="row-odd"><td>IT-CS</td>
+<td>Cosenza</td>
+</tr>
+<tr class="row-even"><td>IT-KR</td>
+<td>Crotone</td>
+</tr>
+<tr class="row-odd"><td>IT-RC</td>
+<td>Reggio Di Calabria</td>
+</tr>
+<tr class="row-even"><td>IT-VV</td>
+<td>Vibo Valentia</td>
+</tr>
+<tr class="row-odd"><td>IT-AV</td>
+<td>Avellino</td>
+</tr>
+<tr class="row-even"><td>IT-BN</td>
+<td>Benevento</td>
+</tr>
+<tr class="row-odd"><td>IT-CE</td>
+<td>Caserta</td>
+</tr>
+<tr class="row-even"><td>IT-NA</td>
+<td>Napoli</td>
+</tr>
+<tr class="row-odd"><td>IT-SA</td>
+<td>Salerno</td>
+</tr>
+<tr class="row-even"><td>IT-BO</td>
+<td>Bologna</td>
+</tr>
+<tr class="row-odd"><td>IT-FE</td>
+<td>Ferrara</td>
+</tr>
+<tr class="row-even"><td>IT-FC</td>
+<td>Forli’ - Cesena</td>
+</tr>
+<tr class="row-odd"><td>IT-MO</td>
+<td>Modena</td>
+</tr>
+<tr class="row-even"><td>IT-PR</td>
+<td>Parma</td>
+</tr>
+<tr class="row-odd"><td>IT-PC</td>
+<td>Piacenza</td>
+</tr>
+<tr class="row-even"><td>IT-RA</td>
+<td>Ravenna</td>
+</tr>
+<tr class="row-odd"><td>IT-RE</td>
+<td>Reggio Nell’Emilia</td>
+</tr>
+<tr class="row-even"><td>IT-RN</td>
+<td>Rimini</td>
+</tr>
+<tr class="row-odd"><td>IT-GO</td>
+<td>Gorizia</td>
+</tr>
+<tr class="row-even"><td>IT-PN</td>
+<td>Pordenone</td>
+</tr>
+<tr class="row-odd"><td>IT-TS</td>
+<td>Trieste</td>
+</tr>
+<tr class="row-even"><td>IT-UD</td>
+<td>Udine</td>
+</tr>
+<tr class="row-odd"><td>IT-FR</td>
+<td>Frosinone</td>
+</tr>
+<tr class="row-even"><td>IT-LT</td>
+<td>Latina</td>
+</tr>
+<tr class="row-odd"><td>IT-RI</td>
+<td>Rieti</td>
+</tr>
+<tr class="row-even"><td>IT-RM</td>
+<td>Roma</td>
+</tr>
+<tr class="row-odd"><td>IT-VT</td>
+<td>Viterbo</td>
+</tr>
+<tr class="row-even"><td>IT-GE</td>
+<td>Genova</td>
+</tr>
+<tr class="row-odd"><td>IT-IM</td>
+<td>Imperia</td>
+</tr>
+<tr class="row-even"><td>IT-SP</td>
+<td>La Spezia</td>
+</tr>
+<tr class="row-odd"><td>IT-SV</td>
+<td>Savona</td>
+</tr>
+<tr class="row-even"><td>IT-BG</td>
+<td>Bergamo</td>
+</tr>
+<tr class="row-odd"><td>IT-BS</td>
+<td>Brescia</td>
+</tr>
+<tr class="row-even"><td>IT-CO</td>
+<td>Como</td>
+</tr>
+<tr class="row-odd"><td>IT-CR</td>
+<td>Cremona</td>
+</tr>
+<tr class="row-even"><td>IT-LC</td>
+<td>Lecco</td>
+</tr>
+<tr class="row-odd"><td>IT-LO</td>
+<td>Lodi</td>
+</tr>
+<tr class="row-even"><td>IT-MN</td>
+<td>Mantua</td>
+</tr>
+<tr class="row-odd"><td>IT-MI</td>
+<td>Milano</td>
+</tr>
+<tr class="row-even"><td>IT-MB</td>
+<td>Monza and Brianza</td>
+</tr>
+<tr class="row-odd"><td>IT-PV</td>
+<td>Pavia</td>
+</tr>
+<tr class="row-even"><td>IT-SO</td>
+<td>Sondrio</td>
+</tr>
+<tr class="row-odd"><td>IT-VA</td>
+<td>Varese</td>
+</tr>
+<tr class="row-even"><td>IT-AN</td>
+<td>Ancona</td>
+</tr>
+<tr class="row-odd"><td>IT-AP</td>
+<td>Ascoli Piceno</td>
+</tr>
+<tr class="row-even"><td>IT-FM</td>
+<td>Fermo</td>
+</tr>
+<tr class="row-odd"><td>IT-MC</td>
+<td>Macerata</td>
+</tr>
+<tr class="row-even"><td>IT-PU</td>
+<td>Pesaro E Urbino</td>
+</tr>
+<tr class="row-odd"><td>IT-CB</td>
+<td>Campobasso</td>
+</tr>
+<tr class="row-even"><td>IT-IS</td>
+<td>Isernia</td>
+</tr>
+<tr class="row-odd"><td>IT-AL</td>
+<td>Alessandria</td>
+</tr>
+<tr class="row-even"><td>IT-AT</td>
+<td>Asti</td>
+</tr>
+<tr class="row-odd"><td>IT-BI</td>
+<td>Biella</td>
+</tr>
+<tr class="row-even"><td>IT-CN</td>
+<td>Cuneo</td>
+</tr>
+<tr class="row-odd"><td>IT-NO</td>
+<td>Novara</td>
+</tr>
+<tr class="row-even"><td>IT-TO</td>
+<td>Torino</td>
+</tr>
+<tr class="row-odd"><td>IT-VB</td>
+<td>Verbano-Cusio-Ossola</td>
+</tr>
+<tr class="row-even"><td>IT-VC</td>
+<td>Vercelli</td>
+</tr>
+<tr class="row-odd"><td>IT-CA</td>
+<td>Cagliari</td>
+</tr>
+<tr class="row-even"><td>IT-CI</td>
+<td>Carbonia-Iglesias</td>
+</tr>
+<tr class="row-odd"><td>IT-VS</td>
+<td>Medio Campidano</td>
+</tr>
+<tr class="row-even"><td>IT-NU</td>
+<td>Nuoro</td>
+</tr>
+<tr class="row-odd"><td>IT-OG</td>
+<td>Ogliastra</td>
+</tr>
+<tr class="row-even"><td>IT-OT</td>
+<td>Olbia-Tempio</td>
+</tr>
+<tr class="row-odd"><td>IT-OR</td>
+<td>Oristano</td>
+</tr>
+<tr class="row-even"><td>IT-SS</td>
+<td>Sassari</td>
+</tr>
+<tr class="row-odd"><td>IT-AG</td>
+<td>Agrigento</td>
+</tr>
+<tr class="row-even"><td>IT-CL</td>
+<td>Caltanissetta</td>
+</tr>
+<tr class="row-odd"><td>IT-CT</td>
+<td>Catania</td>
+</tr>
+<tr class="row-even"><td>IT-EN</td>
+<td>Enna</td>
+</tr>
+<tr class="row-odd"><td>IT-ME</td>
+<td>Messina</td>
+</tr>
+<tr class="row-even"><td>IT-PA</td>
+<td>Palermo</td>
+</tr>
+<tr class="row-odd"><td>IT-RG</td>
+<td>Ragusa</td>
+</tr>
+<tr class="row-even"><td>IT-SR</td>
+<td>Syracuse</td>
+</tr>
+<tr class="row-odd"><td>IT-TP</td>
+<td>Trapani</td>
+</tr>
+<tr class="row-even"><td>IT-AR</td>
+<td>Arezzo</td>
+</tr>
+<tr class="row-odd"><td>IT-FI</td>
+<td>Florence</td>
+</tr>
+<tr class="row-even"><td>IT-GR</td>
+<td>Grosseto</td>
+</tr>
+<tr class="row-odd"><td>IT-LI</td>
+<td>Livorno</td>
+</tr>
+<tr class="row-even"><td>IT-LU</td>
+<td>Lucca</td>
+</tr>
+<tr class="row-odd"><td>IT-MS</td>
+<td>Massa Carrara</td>
+</tr>
+<tr class="row-even"><td>IT-PI</td>
+<td>Pisa</td>
+</tr>
+<tr class="row-odd"><td>IT-PT</td>
+<td>Pistoia</td>
+</tr>
+<tr class="row-even"><td>IT-PO</td>
+<td>Prato</td>
+</tr>
+<tr class="row-odd"><td>IT-SI</td>
+<td>Siena</td>
+</tr>
+<tr class="row-even"><td>IT-BZ</td>
+<td>Bolzano</td>
+</tr>
+<tr class="row-odd"><td>IT-TN</td>
+<td>Trento</td>
+</tr>
+<tr class="row-even"><td>IT-PG</td>
+<td>Perugia</td>
+</tr>
+<tr class="row-odd"><td>IT-TR</td>
+<td>Terni</td>
+</tr>
+<tr class="row-even"><td>IT-AO</td>
+<td>Aosta</td>
+</tr>
+<tr class="row-odd"><td>IT-BL</td>
+<td>Belluno</td>
+</tr>
+<tr class="row-even"><td>IT-PD</td>
+<td>Padua</td>
+</tr>
+<tr class="row-odd"><td>IT-RO</td>
+<td>Rovigo</td>
+</tr>
+<tr class="row-even"><td>IT-TV</td>
+<td>Treviso</td>
+</tr>
+<tr class="row-odd"><td>IT-VE</td>
+<td>Venezia</td>
+</tr>
+<tr class="row-even"><td>IT-VR</td>
+<td>Verona</td>
+</tr>
+<tr class="row-odd"><td>IT-VI</td>
+<td>Vicenza</td>
+</tr>
+</tbody>
+</table>
+<ul class="simple">
+<li>Morocco</li>
+</ul>
+<table border="1" class="docutils">
+<colgroup>
+<col width="17%" />
+<col width="83%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">ISO</th>
+<th class="head">Name of region</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>MA-BES</td>
+<td>Ben Slimane</td>
+</tr>
+<tr class="row-odd"><td>MA-KHO</td>
+<td>Khouribga</td>
+</tr>
+<tr class="row-even"><td>MA-SET</td>
+<td>Settat</td>
+</tr>
+<tr class="row-odd"><td>MA-JDI</td>
+<td>El Jadida</td>
+</tr>
+<tr class="row-even"><td>MA-SAF</td>
+<td>Safi</td>
+</tr>
+<tr class="row-odd"><td>MA-BOM</td>
+<td>Boulemane</td>
+</tr>
+<tr class="row-even"><td>MA-FES</td>
+<td>Fès</td>
+</tr>
+<tr class="row-odd"><td>MA-SEF</td>
+<td>Sefrou</td>
+</tr>
+<tr class="row-even"><td>MA-MOU</td>
+<td>Zouagha-Moulay Yacoub</td>
+</tr>
+<tr class="row-odd"><td>MA-KEN</td>
+<td>Kénitra</td>
+</tr>
+<tr class="row-even"><td>MA-SIK</td>
+<td>Sidi Kacem</td>
+</tr>
+<tr class="row-odd"><td>MA-CAS</td>
+<td>Casablanca</td>
+</tr>
+<tr class="row-even"><td>MA-MOH</td>
+<td>Mohammedia</td>
+</tr>
+<tr class="row-odd"><td>MA-ASZ</td>
+<td>Assa-Zag</td>
+</tr>
+<tr class="row-even"><td>MA-GUE</td>
+<td>Guelmim</td>
+</tr>
+<tr class="row-odd"><td>MA-TNT</td>
+<td>Tan-Tan</td>
+</tr>
+<tr class="row-even"><td>MA-TAT</td>
+<td>Tata</td>
+</tr>
+<tr class="row-odd"><td>MA-LAA</td>
+<td>Laâyoune</td>
+</tr>
+<tr class="row-even"><td>MA-HAO</td>
+<td>Al Haouz</td>
+</tr>
+<tr class="row-odd"><td>MA-CHI</td>
+<td>Chichaoua</td>
+</tr>
+<tr class="row-even"><td>MA-KES</td>
+<td>El Kelaâ des Sraghna</td>
+</tr>
+<tr class="row-odd"><td>MA-ESI</td>
+<td>Essaouira</td>
+</tr>
+<tr class="row-even"><td>MA-MMD</td>
+<td>Marrakech</td>
+</tr>
+<tr class="row-odd"><td>MA-HAJ</td>
+<td>El Hajeb</td>
+</tr>
+<tr class="row-even"><td>MA-ERR</td>
+<td>Errachidia</td>
+</tr>
+<tr class="row-odd"><td>MA-IFR</td>
+<td>Ifrane</td>
+</tr>
+<tr class="row-even"><td>MA-KHN</td>
+<td>Khénifra</td>
+</tr>
+<tr class="row-odd"><td>MA-MEK</td>
+<td>Meknès</td>
+</tr>
+<tr class="row-even"><td>MA-BER</td>
+<td>Berkane Taourirt</td>
+</tr>
+<tr class="row-odd"><td>MA-FIG</td>
+<td>Figuig</td>
+</tr>
+<tr class="row-even"><td>MA-JRA</td>
+<td>Jerada</td>
+</tr>
+<tr class="row-odd"><td>MA-NAD</td>
+<td>Nador</td>
+</tr>
+<tr class="row-even"><td>MA-OUJ</td>
+<td>Oujda Angad</td>
+</tr>
+<tr class="row-odd"><td>MA-KHE</td>
+<td>Khémisset</td>
+</tr>
+<tr class="row-even"><td>MA-RAB</td>
+<td>Rabat</td>
+</tr>
+<tr class="row-odd"><td>MA-SAL</td>
+<td>Salé</td>
+</tr>
+<tr class="row-even"><td>MA-SKH</td>
+<td>Skhirate-Témara</td>
+</tr>
+<tr class="row-odd"><td>MA-AGD</td>
+<td>Agadir-Ida ou Tanane</td>
+</tr>
+<tr class="row-even"><td>MA-CHT</td>
+<td>Chtouka-Aït Baha</td>
+</tr>
+<tr class="row-odd"><td>MA-INE</td>
+<td>Inezgane-Aït Melloul</td>
+</tr>
+<tr class="row-even"><td>MA-OUA</td>
+<td>Ouarzazate</td>
+</tr>
+<tr class="row-odd"><td>MA-TAR</td>
+<td>Taroudannt</td>
+</tr>
+<tr class="row-even"><td>MA-TIZ</td>
+<td>Tiznit</td>
+</tr>
+<tr class="row-odd"><td>MA-ZAG</td>
+<td>Zagora</td>
+</tr>
+<tr class="row-even"><td>MA-AZI</td>
+<td>Azilal</td>
+</tr>
+<tr class="row-odd"><td>MA-BEM</td>
+<td>Béni Mellal</td>
+</tr>
+<tr class="row-even"><td>MA-CHE</td>
+<td>Chefchaouen</td>
+</tr>
+<tr class="row-odd"><td>MA-FAH</td>
+<td>Fahs Anjra</td>
+</tr>
+<tr class="row-even"><td>MA-LAR</td>
+<td>Larache</td>
+</tr>
+<tr class="row-odd"><td>MA-TET</td>
+<td>Tétouan</td>
+</tr>
+<tr class="row-even"><td>MA-TNG</td>
+<td>Tanger-Assilah</td>
+</tr>
+<tr class="row-odd"><td>MA-HOC</td>
+<td>Al Hoceïma</td>
+</tr>
+<tr class="row-even"><td>MA-TAO</td>
+<td>Taounate</td>
+</tr>
+<tr class="row-odd"><td>MA-TAZ</td>
+<td>Taza</td>
+</tr>
+</tbody>
+</table>
+<ul class="simple">
+<li>Netherlands</li>
+</ul>
+<table border="1" class="docutils">
+<colgroup>
+<col width="17%" />
+<col width="83%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">ISO</th>
+<th class="head">Name of region</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>NL-DR</td>
+<td>Drenthe</td>
+</tr>
+<tr class="row-odd"><td>NL-FL</td>
+<td>Flevoland</td>
+</tr>
+<tr class="row-even"><td>NL-FR</td>
+<td>Friesland</td>
+</tr>
+<tr class="row-odd"><td>NL-GE</td>
+<td>Gelderland</td>
+</tr>
+<tr class="row-even"><td>NL-GR</td>
+<td>Groningen</td>
+</tr>
+<tr class="row-odd"><td>NL-YS</td>
+<td>IJsselmeer</td>
+</tr>
+<tr class="row-even"><td>NL-LI</td>
+<td>Limburg</td>
+</tr>
+<tr class="row-odd"><td>NL-NB</td>
+<td>Noord-Brabant</td>
+</tr>
+<tr class="row-even"><td>NL-NH</td>
+<td>Noord-Holland</td>
+</tr>
+<tr class="row-odd"><td>NL-OV</td>
+<td>Overijssel</td>
+</tr>
+<tr class="row-even"><td>NL-UT</td>
+<td>Utrecht</td>
+</tr>
+<tr class="row-odd"><td>NL-ZE</td>
+<td>Zeeland</td>
+</tr>
+<tr class="row-even"><td>NL-ZM</td>
+<td>Zeeuwse meren</td>
+</tr>
+<tr class="row-odd"><td>NL-ZH</td>
+<td>Zuid-Holland</td>
+</tr>
+</tbody>
+</table>
+<ul class="simple">
+<li>Russian</li>
+</ul>
+<table border="1" class="docutils">
+<colgroup>
+<col width="17%" />
+<col width="83%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">ISO</th>
+<th class="head">Name of region</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>RU-AD</td>
+<td>Adygey</td>
+</tr>
+<tr class="row-odd"><td>RU-ALT</td>
+<td>Altay</td>
+</tr>
+<tr class="row-even"><td>RU-AMU</td>
+<td>Amur</td>
+</tr>
+<tr class="row-odd"><td>RU-ARK</td>
+<td>Arkhangel’sk</td>
+</tr>
+<tr class="row-even"><td>RU-AST</td>
+<td>Astrakhan’</td>
+</tr>
+<tr class="row-odd"><td>RU-BA</td>
+<td>Bashkortostan</td>
+</tr>
+<tr class="row-even"><td>RU-BEL</td>
+<td>Belgorod</td>
+</tr>
+<tr class="row-odd"><td>RU-BRY</td>
+<td>Bryansk</td>
+</tr>
+<tr class="row-even"><td>RU-BU</td>
+<td>Buryat</td>
+</tr>
+<tr class="row-odd"><td>RU-CE</td>
+<td>Chechnya</td>
+</tr>
+<tr class="row-even"><td>RU-CHE</td>
+<td>Chelyabinsk</td>
+</tr>
+<tr class="row-odd"><td>RU-CHU</td>
+<td>Chukot</td>
+</tr>
+<tr class="row-even"><td>RU-CU</td>
+<td>Chuvash</td>
+</tr>
+<tr class="row-odd"><td>RU-SPE</td>
+<td>City of St. Petersburg</td>
+</tr>
+<tr class="row-even"><td>RU-DA</td>
+<td>Dagestan</td>
+</tr>
+<tr class="row-odd"><td>RU-AL</td>
+<td>Gorno-Altay</td>
+</tr>
+<tr class="row-even"><td>RU-IN</td>
+<td>Ingush</td>
+</tr>
+<tr class="row-odd"><td>RU-IRK</td>
+<td>Irkutsk</td>
+</tr>
+<tr class="row-even"><td>RU-IVA</td>
+<td>Ivanovo</td>
+</tr>
+<tr class="row-odd"><td>RU-KB</td>
+<td>Kabardin-Balkar</td>
+</tr>
+<tr class="row-even"><td>RU-KGD</td>
+<td>Kaliningrad</td>
+</tr>
+<tr class="row-odd"><td>RU-KL</td>
+<td>Kalmyk</td>
+</tr>
+<tr class="row-even"><td>RU-KLU</td>
+<td>Kaluga</td>
+</tr>
+<tr class="row-odd"><td>RU-KAM</td>
+<td>Kamchatka</td>
+</tr>
+<tr class="row-even"><td>RU-KC</td>
+<td>Karachay-Cherkess</td>
+</tr>
+<tr class="row-odd"><td>RU-KR</td>
+<td>Karelia</td>
+</tr>
+<tr class="row-even"><td>RU-KEM</td>
+<td>Kemerovo</td>
+</tr>
+<tr class="row-odd"><td>RU-KHA</td>
+<td>Khabarovsk</td>
+</tr>
+<tr class="row-even"><td>RU-KK</td>
+<td>Khakass</td>
+</tr>
+<tr class="row-odd"><td>RU-KHM</td>
+<td>Khanty-Mansiy</td>
+</tr>
+<tr class="row-even"><td>RU-KIR</td>
+<td>Kirov</td>
+</tr>
+<tr class="row-odd"><td>RU-KO</td>
+<td>Komi</td>
+</tr>
+<tr class="row-even"><td>RU-KOS</td>
+<td>Kostroma</td>
+</tr>
+<tr class="row-odd"><td>RU-KDA</td>
+<td>Krasnodar</td>
+</tr>
+<tr class="row-even"><td>RU-KYA</td>
+<td>Krasnoyarsk</td>
+</tr>
+<tr class="row-odd"><td>RU-KGN</td>
+<td>Kurgan</td>
+</tr>
+<tr class="row-even"><td>RU-KRS</td>
+<td>Kursk</td>
+</tr>
+<tr class="row-odd"><td>RU-LEN</td>
+<td>Leningrad</td>
+</tr>
+<tr class="row-even"><td>RU-LIP</td>
+<td>Lipetsk</td>
+</tr>
+<tr class="row-odd"><td>RU-MAG</td>
+<td>Maga Buryatdan</td>
+</tr>
+<tr class="row-even"><td>RU-ME</td>
+<td>Mariy-El</td>
+</tr>
+<tr class="row-odd"><td>RU-MO</td>
+<td>Mordovia</td>
+</tr>
+<tr class="row-even"><td>RU-MOW</td>
+<td>Moscow City</td>
+</tr>
+<tr class="row-odd"><td>RU-MOS</td>
+<td>Moskva</td>
+</tr>
+<tr class="row-even"><td>RU-MUR</td>
+<td>Murmansk</td>
+</tr>
+<tr class="row-odd"><td>RU-NEN</td>
+<td>Nenets</td>
+</tr>
+<tr class="row-even"><td>RU-NIZ</td>
+<td>Nizhegorod</td>
+</tr>
+<tr class="row-odd"><td>RU-SE</td>
+<td>North Ossetia</td>
+</tr>
+<tr class="row-even"><td>RU-NGR</td>
+<td>Novgorod</td>
+</tr>
+<tr class="row-odd"><td>RU-NVS</td>
+<td>Novosibirsk</td>
+</tr>
+<tr class="row-even"><td>RU-OMS</td>
+<td>Omsk</td>
+</tr>
+<tr class="row-odd"><td>RU-ORL</td>
+<td>Orel</td>
+</tr>
+<tr class="row-even"><td>RU-ORE</td>
+<td>Orenburg</td>
+</tr>
+<tr class="row-odd"><td>RU-PNZ</td>
+<td>Penza</td>
+</tr>
+<tr class="row-even"><td>RU-PER</td>
+<td>Perm’</td>
+</tr>
+<tr class="row-odd"><td>RU-PRI</td>
+<td>Primor’ye</td>
+</tr>
+<tr class="row-even"><td>RU-PSK</td>
+<td>Pskov</td>
+</tr>
+<tr class="row-odd"><td>RU-ROS</td>
+<td>Rostov</td>
+</tr>
+<tr class="row-even"><td>RU-RYA</td>
+<td>Ryazan’</td>
+</tr>
+<tr class="row-odd"><td>RU-SAK</td>
+<td>Sakhalin</td>
+</tr>
+<tr class="row-even"><td>RU-SA</td>
+<td>Sakha</td>
+</tr>
+<tr class="row-odd"><td>RU-SAM</td>
+<td>Samara</td>
+</tr>
+<tr class="row-even"><td>RU-SAR</td>
+<td>Saratov</td>
+</tr>
+<tr class="row-odd"><td>RU-SMO</td>
+<td>Smolensk</td>
+</tr>
+<tr class="row-even"><td>RU-STA</td>
+<td>Stavropol’</td>
+</tr>
+<tr class="row-odd"><td>RU-SVE</td>
+<td>Sverdlovsk</td>
+</tr>
+<tr class="row-even"><td>RU-TAM</td>
+<td>Tambov</td>
+</tr>
+<tr class="row-odd"><td>RU-TA</td>
+<td>Tatarstan</td>
+</tr>
+<tr class="row-even"><td>RU-TOM</td>
+<td>Tomsk</td>
+</tr>
+<tr class="row-odd"><td>RU-TUL</td>
+<td>Tula</td>
+</tr>
+<tr class="row-even"><td>RU-TY</td>
+<td>Tuva</td>
+</tr>
+<tr class="row-odd"><td>RU-TVE</td>
+<td>Tver’</td>
+</tr>
+<tr class="row-even"><td>RU-TYU</td>
+<td>Tyumen’</td>
+</tr>
+<tr class="row-odd"><td>RU-UD</td>
+<td>Udmurt</td>
+</tr>
+<tr class="row-even"><td>RU-ULY</td>
+<td>Ul’yanovsk</td>
+</tr>
+<tr class="row-odd"><td>RU-VLA</td>
+<td>Vladimir</td>
+</tr>
+<tr class="row-even"><td>RU-VGG</td>
+<td>Volgograd</td>
+</tr>
+<tr class="row-odd"><td>RU-VLG</td>
+<td>Vologda</td>
+</tr>
+<tr class="row-even"><td>RU-VOR</td>
+<td>Voronezh</td>
+</tr>
+<tr class="row-odd"><td>RU-YAN</td>
+<td>Yamal-Nenets</td>
+</tr>
+<tr class="row-even"><td>RU-YAR</td>
+<td>Yaroslavl’</td>
+</tr>
+<tr class="row-odd"><td>RU-YEV</td>
+<td>Yevrey</td>
+</tr>
+<tr class="row-even"><td>RU-ZAB</td>
+<td>Zabaykal’ye</td>
+</tr>
+</tbody>
+</table>
+<ul class="simple">
+<li>Singapore</li>
+</ul>
+<table border="1" class="docutils">
+<colgroup>
+<col width="14%" />
+<col width="86%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Id</th>
+<th class="head">Name of region</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>205</td>
+<td>Singapore</td>
+</tr>
+</tbody>
+</table>
+<ul class="simple">
+<li>Spain</li>
+</ul>
+<table border="1" class="docutils">
+<colgroup>
+<col width="17%" />
+<col width="83%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">ISO</th>
+<th class="head">Name of region</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>ES-AL</td>
+<td>Almería</td>
+</tr>
+<tr class="row-odd"><td>ES-CA</td>
+<td>Cádiz</td>
+</tr>
+<tr class="row-even"><td>ES-CO</td>
+<td>Córdoba</td>
+</tr>
+<tr class="row-odd"><td>ES-GR</td>
+<td>Granada</td>
+</tr>
+<tr class="row-even"><td>ES-H</td>
+<td>Huelva</td>
+</tr>
+<tr class="row-odd"><td>ES-J</td>
+<td>Jaén</td>
+</tr>
+<tr class="row-even"><td>ES-MA</td>
+<td>Málaga</td>
+</tr>
+<tr class="row-odd"><td>ES-SE</td>
+<td>Sevilla</td>
+</tr>
+<tr class="row-even"><td>ES-HU</td>
+<td>Huesca</td>
+</tr>
+<tr class="row-odd"><td>ES-TE</td>
+<td>Teruel</td>
+</tr>
+<tr class="row-even"><td>ES-Z</td>
+<td>Zaragoza</td>
+</tr>
+<tr class="row-odd"><td>ES-S3</td>
+<td>Cantabria</td>
+</tr>
+<tr class="row-even"><td>ES-AB</td>
+<td>Albacete</td>
+</tr>
+<tr class="row-odd"><td>ES-CR</td>
+<td>Ciudad Real</td>
+</tr>
+<tr class="row-even"><td>ES-CU</td>
+<td>Cuenca</td>
+</tr>
+<tr class="row-odd"><td>ES-GU</td>
+<td>Guadalajara</td>
+</tr>
+<tr class="row-even"><td>ES-TO</td>
+<td>Toledo</td>
+</tr>
+<tr class="row-odd"><td>ES-AV</td>
+<td>Ávila</td>
+</tr>
+<tr class="row-even"><td>ES-BU</td>
+<td>Burgos</td>
+</tr>
+<tr class="row-odd"><td>ES-LE</td>
+<td>León</td>
+</tr>
+<tr class="row-even"><td>ES-P</td>
+<td>Palencia</td>
+</tr>
+<tr class="row-odd"><td>ES-SA</td>
+<td>Salamanca</td>
+</tr>
+<tr class="row-even"><td>ES-SG</td>
+<td>Segovia</td>
+</tr>
+<tr class="row-odd"><td>ES-SO</td>
+<td>Soria</td>
+</tr>
+<tr class="row-even"><td>ES-VA</td>
+<td>Valladolid</td>
+</tr>
+<tr class="row-odd"><td>ES-ZA</td>
+<td>Zamora</td>
+</tr>
+<tr class="row-even"><td>ES-B</td>
+<td>Barcelona</td>
+</tr>
+<tr class="row-odd"><td>ES-GI</td>
+<td>Girona</td>
+</tr>
+<tr class="row-even"><td>ES-L</td>
+<td>Lleida</td>
+</tr>
+<tr class="row-odd"><td>ES-T</td>
+<td>Tarragona</td>
+</tr>
+<tr class="row-even"><td>ES-CE</td>
+<td>Ceuta</td>
+</tr>
+<tr class="row-odd"><td>ES-ML</td>
+<td>Melilla</td>
+</tr>
+<tr class="row-even"><td>ES-M5</td>
+<td>Madrid</td>
+</tr>
+<tr class="row-odd"><td>ES-NA7</td>
+<td>Navarra</td>
+</tr>
+<tr class="row-even"><td>ES-A</td>
+<td>Alicante</td>
+</tr>
+<tr class="row-odd"><td>ES-CS</td>
+<td>Castellón</td>
+</tr>
+<tr class="row-even"><td>ES-V</td>
+<td>Valencia</td>
+</tr>
+<tr class="row-odd"><td>ES-BA</td>
+<td>Badajoz</td>
+</tr>
+<tr class="row-even"><td>ES-CC</td>
+<td>Cáceres</td>
+</tr>
+<tr class="row-odd"><td>ES-C</td>
+<td>A Coruña</td>
+</tr>
+<tr class="row-even"><td>ES-LU</td>
+<td>Lugo</td>
+</tr>
+<tr class="row-odd"><td>ES-OR</td>
+<td>Ourense</td>
+</tr>
+<tr class="row-even"><td>ES-PO</td>
+<td>Pontevedra</td>
+</tr>
+<tr class="row-odd"><td>ES-PM</td>
+<td>Baleares</td>
+</tr>
+<tr class="row-even"><td>ES-GC</td>
+<td>Las Palmas</td>
+</tr>
+<tr class="row-odd"><td>ES-TF</td>
+<td>Santa Cruz de Tenerife</td>
+</tr>
+<tr class="row-even"><td>ES-LO4</td>
+<td>La Rioja</td>
+</tr>
+<tr class="row-odd"><td>ES-VI</td>
+<td>Álava</td>
+</tr>
+<tr class="row-even"><td>ES-SS</td>
+<td>Guipúzcoa</td>
+</tr>
+<tr class="row-odd"><td>ES-BI</td>
+<td>Vizcaya</td>
+</tr>
+<tr class="row-even"><td>ES-O2</td>
+<td>Asturias</td>
+</tr>
+<tr class="row-odd"><td>ES-MU6</td>
+<td>Murcia</td>
+</tr>
+</tbody>
+</table>
+<ul class="simple">
+<li>Uk</li>
+</ul>
+<table border="1" class="docutils">
+<colgroup>
+<col width="17%" />
+<col width="83%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">ISO</th>
+<th class="head">Name of region</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>GB-BDG</td>
+<td>Barking and Dagenham</td>
+</tr>
+<tr class="row-odd"><td>GB-BAS</td>
+<td>Bath and North East Somerset</td>
+</tr>
+<tr class="row-even"><td>GB-BDF</td>
+<td>Bedfordshire</td>
+</tr>
+<tr class="row-odd"><td>GB-WBK</td>
+<td>Berkshire</td>
+</tr>
+<tr class="row-even"><td>GB-BEX</td>
+<td>Bexley</td>
+</tr>
+<tr class="row-odd"><td>GB-BBD</td>
+<td>Blackburn with Darwen</td>
+</tr>
+<tr class="row-even"><td>GB-BMH</td>
+<td>Bournemouth</td>
+</tr>
+<tr class="row-odd"><td>GB-BEN</td>
+<td>Brent</td>
+</tr>
+<tr class="row-even"><td>GB-BNH</td>
+<td>Brighton and Hove</td>
+</tr>
+<tr class="row-odd"><td>GB-BST</td>
+<td>Bristol</td>
+</tr>
+<tr class="row-even"><td>GB-BRY</td>
+<td>Bromley</td>
+</tr>
+<tr class="row-odd"><td>GB-BKM</td>
+<td>Buckinghamshire</td>
+</tr>
+<tr class="row-even"><td>GB-CAM</td>
+<td>Cambridgeshire</td>
+</tr>
+<tr class="row-odd"><td>GB-CMD</td>
+<td>Camden</td>
+</tr>
+<tr class="row-even"><td>GB-CHS</td>
+<td>Cheshire</td>
+</tr>
+<tr class="row-odd"><td>GB-CON</td>
+<td>Cornwall</td>
+</tr>
+<tr class="row-even"><td>GB-CRY</td>
+<td>Croydon</td>
+</tr>
+<tr class="row-odd"><td>GB-CMA</td>
+<td>Cumbria</td>
+</tr>
+<tr class="row-even"><td>GB-DAL</td>
+<td>Darlington</td>
+</tr>
+<tr class="row-odd"><td>GB-DBY</td>
+<td>Derbyshire</td>
+</tr>
+<tr class="row-even"><td>GB-DER</td>
+<td>Derby</td>
+</tr>
+<tr class="row-odd"><td>GB-DEV</td>
+<td>Devon</td>
+</tr>
+<tr class="row-even"><td>GB-DOR</td>
+<td>Dorset</td>
+</tr>
+<tr class="row-odd"><td>GB-DUR</td>
+<td>Durham</td>
+</tr>
+<tr class="row-even"><td>GB-EAL</td>
+<td>Ealing</td>
+</tr>
+<tr class="row-odd"><td>GB-ERY</td>
+<td>East Riding of Yorkshire</td>
+</tr>
+<tr class="row-even"><td>GB-ESX</td>
+<td>East Sussex</td>
+</tr>
+<tr class="row-odd"><td>GB-ENF</td>
+<td>Enfield</td>
+</tr>
+<tr class="row-even"><td>GB-ESS</td>
+<td>Essex</td>
+</tr>
+<tr class="row-odd"><td>GB-GLS</td>
+<td>Gloucestershire</td>
+</tr>
+<tr class="row-even"><td>GB-GRE</td>
+<td>Greenwich</td>
+</tr>
+<tr class="row-odd"><td>GB-HCK</td>
+<td>Hackney</td>
+</tr>
+<tr class="row-even"><td>GB-HAL</td>
+<td>Halton</td>
+</tr>
+<tr class="row-odd"><td>GB-HMF</td>
+<td>Hammersmith and Fulham</td>
+</tr>
+<tr class="row-even"><td>GB-HAM</td>
+<td>Hampshire</td>
+</tr>
+<tr class="row-odd"><td>GB-HRY</td>
+<td>Haringey</td>
+</tr>
+<tr class="row-even"><td>GB-HRW</td>
+<td>Harrow</td>
+</tr>
+<tr class="row-odd"><td>GB-HPL</td>
+<td>Hartlepool</td>
+</tr>
+<tr class="row-even"><td>GB-HAV</td>
+<td>Havering</td>
+</tr>
+<tr class="row-odd"><td>GB-HRT</td>
+<td>Herefordshire</td>
+</tr>
+<tr class="row-even"><td>GB-HEF</td>
+<td>Hertfordshire</td>
+</tr>
+<tr class="row-odd"><td>GB-HIL</td>
+<td>Hillingdon</td>
+</tr>
+<tr class="row-even"><td>GB-HNS</td>
+<td>Hounslow</td>
+</tr>
+<tr class="row-odd"><td>GB-IOW</td>
+<td>Isle of Wight</td>
+</tr>
+<tr class="row-even"><td>GB-ISL</td>
+<td>Islington</td>
+</tr>
+<tr class="row-odd"><td>GB-KEC</td>
+<td>Kensington and Chelsea</td>
+</tr>
+<tr class="row-even"><td>GB-KEN</td>
+<td>Kent</td>
+</tr>
+<tr class="row-odd"><td>GB-KHL</td>
+<td>Kingston upon Hull</td>
+</tr>
+<tr class="row-even"><td>GB-KTT</td>
+<td>Kingston upon Thames</td>
+</tr>
+<tr class="row-odd"><td>GB-LBH</td>
+<td>Lambeth</td>
+</tr>
+<tr class="row-even"><td>GB-LAN</td>
+<td>Lancashire</td>
+</tr>
+<tr class="row-odd"><td>GB-LEC</td>
+<td>Leicestershire</td>
+</tr>
+<tr class="row-even"><td>GB-LCE</td>
+<td>Leicester</td>
+</tr>
+<tr class="row-odd"><td>GB-LEW</td>
+<td>Lewisham</td>
+</tr>
+<tr class="row-even"><td>GB-LIN</td>
+<td>Lincolnshire</td>
+</tr>
+<tr class="row-odd"><td>GB-LND</td>
+<td>London</td>
+</tr>
+<tr class="row-even"><td>GB-LUT</td>
+<td>Luton</td>
+</tr>
+<tr class="row-odd"><td>GB-MAN</td>
+<td>Manchester</td>
+</tr>
+<tr class="row-even"><td>GB-MDW</td>
+<td>Medway</td>
+</tr>
+<tr class="row-odd"><td>GB-MER</td>
+<td>Merseyside</td>
+</tr>
+<tr class="row-even"><td>GB-MRT</td>
+<td>Merton</td>
+</tr>
+<tr class="row-odd"><td>GB-MDB</td>
+<td>Middlesbrough</td>
+</tr>
+<tr class="row-even"><td>GB-MIK</td>
+<td>Milton Keynes</td>
+</tr>
+<tr class="row-odd"><td>GB-NWM</td>
+<td>Newham</td>
+</tr>
+<tr class="row-even"><td>GB-NFK</td>
+<td>Norfolk</td>
+</tr>
+<tr class="row-odd"><td>GB-NEL</td>
+<td>North East Lincolnshire</td>
+</tr>
+<tr class="row-even"><td>GB-NLN</td>
+<td>North Lincolnshire</td>
+</tr>
+<tr class="row-odd"><td>GB-NSM</td>
+<td>North Somerset</td>
+</tr>
+<tr class="row-even"><td>GB-NYK</td>
+<td>North Yorkshire</td>
+</tr>
+<tr class="row-odd"><td>GB-NTH</td>
+<td>Northamptonshire</td>
+</tr>
+<tr class="row-even"><td>GB-NBL</td>
+<td>Northumberland</td>
+</tr>
+<tr class="row-odd"><td>GB-NTT</td>
+<td>Nottinghamshire</td>
+</tr>
+<tr class="row-even"><td>GB-NGM</td>
+<td>Nottingham</td>
+</tr>
+<tr class="row-odd"><td>GB-OXF</td>
+<td>Oxfordshire</td>
+</tr>
+<tr class="row-even"><td>GB-PTE</td>
+<td>Peterborough</td>
+</tr>
+<tr class="row-odd"><td>GB-PLY</td>
+<td>Plymouth</td>
+</tr>
+<tr class="row-even"><td>GB-POL</td>
+<td>Poole</td>
+</tr>
+<tr class="row-odd"><td>GB-POR</td>
+<td>Portsmouth</td>
+</tr>
+<tr class="row-even"><td>GB-RDB</td>
+<td>Redbridge</td>
+</tr>
+<tr class="row-odd"><td>GB-RCC</td>
+<td>Redcar and Cleveland</td>
+</tr>
+<tr class="row-even"><td>GB-RIC</td>
+<td>Richmond upon Thames</td>
+</tr>
+<tr class="row-odd"><td>GB-RUT</td>
+<td>Rutland</td>
+</tr>
+<tr class="row-even"><td>GB-SHR</td>
+<td>Shropshire</td>
+</tr>
+<tr class="row-odd"><td>GB-SOM</td>
+<td>Somerset</td>
+</tr>
+<tr class="row-even"><td>GB-SGC</td>
+<td>South Gloucestershire</td>
+</tr>
+<tr class="row-odd"><td>GB-SY</td>
+<td>South Yorkshire</td>
+</tr>
+<tr class="row-even"><td>GB-STH</td>
+<td>Southampton</td>
+</tr>
+<tr class="row-odd"><td>GB-SOS</td>
+<td>Southend-on-Sea</td>
+</tr>
+<tr class="row-even"><td>GB-SWK</td>
+<td>Southwark</td>
+</tr>
+<tr class="row-odd"><td>GB-STS</td>
+<td>Staffordshire</td>
+</tr>
+<tr class="row-even"><td>GB-STT</td>
+<td>Stockton-on-Tees</td>
+</tr>
+<tr class="row-odd"><td>GB-STE</td>
+<td>Stoke-on-Trent</td>
+</tr>
+<tr class="row-even"><td>GB-SFK</td>
+<td>Suffolk</td>
+</tr>
+<tr class="row-odd"><td>GB-SRY</td>
+<td>Surrey</td>
+</tr>
+<tr class="row-even"><td>GB-STN</td>
+<td>Sutton</td>
+</tr>
+<tr class="row-odd"><td>GB-SWD</td>
+<td>Swindon</td>
+</tr>
+<tr class="row-even"><td>GB-TFW</td>
+<td>Telford and Wrekin</td>
+</tr>
+<tr class="row-odd"><td>GB-THR</td>
+<td>Thurrock</td>
+</tr>
+<tr class="row-even"><td>GB-TOB</td>
+<td>Torbay</td>
+</tr>
+<tr class="row-odd"><td>GB-TWH</td>
+<td>Tower Hamlets</td>
+</tr>
+<tr class="row-even"><td>GB-TAW</td>
+<td>Tyne and Wear</td>
+</tr>
+<tr class="row-odd"><td>GB-WFT</td>
+<td>Waltham Forest</td>
+</tr>
+<tr class="row-even"><td>GB-WND</td>
+<td>Wandsworth</td>
+</tr>
+<tr class="row-odd"><td>GB-WRT</td>
+<td>Warrington</td>
+</tr>
+<tr class="row-even"><td>GB-WAR</td>
+<td>Warwickshire</td>
+</tr>
+<tr class="row-odd"><td>GB-WM</td>
+<td>West Midlands</td>
+</tr>
+<tr class="row-even"><td>GB-WSX</td>
+<td>West Sussex</td>
+</tr>
+<tr class="row-odd"><td>GB-WY</td>
+<td>West Yorkshire</td>
+</tr>
+<tr class="row-even"><td>GB-WSM</td>
+<td>Westminster</td>
+</tr>
+<tr class="row-odd"><td>GB-WIL</td>
+<td>Wiltshire</td>
+</tr>
+<tr class="row-even"><td>GB-WOR</td>
+<td>Worcestershire</td>
+</tr>
+<tr class="row-odd"><td>GB-YOR</td>
+<td>York</td>
+</tr>
+<tr class="row-even"><td>GB-ANT</td>
+<td>Antrim</td>
+</tr>
+<tr class="row-odd"><td>GB-ARD</td>
+<td>Ards</td>
+</tr>
+<tr class="row-even"><td>GB-ARM</td>
+<td>Armagh</td>
+</tr>
+<tr class="row-odd"><td>GB-BLA</td>
+<td>Ballymena</td>
+</tr>
+<tr class="row-even"><td>GB-BLY</td>
+<td>Ballymoney</td>
+</tr>
+<tr class="row-odd"><td>GB-BNB</td>
+<td>Banbridge</td>
+</tr>
+<tr class="row-even"><td>GB-BFS</td>
+<td>Belfast</td>
+</tr>
+<tr class="row-odd"><td>GB-CKF</td>
+<td>Carrickfergus</td>
+</tr>
+<tr class="row-even"><td>GB-CSR</td>
+<td>Castlereagh</td>
+</tr>
+<tr class="row-odd"><td>GB-CLR</td>
+<td>Coleraine</td>
+</tr>
+<tr class="row-even"><td>GB-CKT</td>
+<td>Cookstown</td>
+</tr>
+<tr class="row-odd"><td>GB-CGV</td>
+<td>Craigavon</td>
+</tr>
+<tr class="row-even"><td>GB-DRY</td>
+<td>Derry</td>
+</tr>
+<tr class="row-odd"><td>GB-DOW</td>
+<td>Down</td>
+</tr>
+<tr class="row-even"><td>GB-DGN</td>
+<td>Dungannon</td>
+</tr>
+<tr class="row-odd"><td>GB-FER</td>
+<td>Fermanagh</td>
+</tr>
+<tr class="row-even"><td>GB-LRN</td>
+<td>Larne</td>
+</tr>
+<tr class="row-odd"><td>GB-LMV</td>
+<td>Limavady</td>
+</tr>
+<tr class="row-even"><td>GB-LSB</td>
+<td>Lisburn</td>
+</tr>
+<tr class="row-odd"><td>GB-MFT</td>
+<td>Magherafelt</td>
+</tr>
+<tr class="row-even"><td>GB-MYL</td>
+<td>Moyle</td>
+</tr>
+<tr class="row-odd"><td>GB-NYM</td>
+<td>Newry and Mourne</td>
+</tr>
+<tr class="row-even"><td>GB-NTA</td>
+<td>Newtownabbey</td>
+</tr>
+<tr class="row-odd"><td>GB-NDN</td>
+<td>North Down</td>
+</tr>
+<tr class="row-even"><td>GB-OMH</td>
+<td>Omagh</td>
+</tr>
+<tr class="row-odd"><td>GB-STB</td>
+<td>Strabane</td>
+</tr>
+<tr class="row-even"><td>GB-ABD</td>
+<td>Aberdeenshire</td>
+</tr>
+<tr class="row-odd"><td>GB-ABE</td>
+<td>Aberdeen</td>
+</tr>
+<tr class="row-even"><td>GB-ANS</td>
+<td>Angus</td>
+</tr>
+<tr class="row-odd"><td>GB-AGB</td>
+<td>Argyll and Bute</td>
+</tr>
+<tr class="row-even"><td>GB-CLK</td>
+<td>Clackmannanshire</td>
+</tr>
+<tr class="row-odd"><td>GB-DGY</td>
+<td>Dumfries and Galloway</td>
+</tr>
+<tr class="row-even"><td>GB-DND</td>
+<td>Dundee</td>
+</tr>
+<tr class="row-odd"><td>GB-EAY</td>
+<td>East Ayrshire</td>
+</tr>
+<tr class="row-even"><td>GB-EDU</td>
+<td>East Dunbartonshire</td>
+</tr>
+<tr class="row-odd"><td>GB-ELN</td>
+<td>East Lothian</td>
+</tr>
+<tr class="row-even"><td>GB-ERW</td>
+<td>East Renfrewshire</td>
+</tr>
+<tr class="row-odd"><td>GB-EDH</td>
+<td>Edinburgh</td>
+</tr>
+<tr class="row-even"><td>GB-ELS</td>
+<td>Eilean Siar</td>
+</tr>
+<tr class="row-odd"><td>GB-FAL</td>
+<td>Falkirk</td>
+</tr>
+<tr class="row-even"><td>GB-FIF</td>
+<td>Fife</td>
+</tr>
+<tr class="row-odd"><td>GB-GLG</td>
+<td>Glasgow</td>
+</tr>
+<tr class="row-even"><td>GB-HLD</td>
+<td>Highland</td>
+</tr>
+<tr class="row-odd"><td>GB-IVC</td>
+<td>Inverclyde</td>
+</tr>
+<tr class="row-even"><td>GB-MLN</td>
+<td>Midlothian</td>
+</tr>
+<tr class="row-odd"><td>GB-MRY</td>
+<td>Moray</td>
+</tr>
+<tr class="row-even"><td>GB-NAY</td>
+<td>North Ayshire</td>
+</tr>
+<tr class="row-odd"><td>GB-NLK</td>
+<td>North Lanarkshire</td>
+</tr>
+<tr class="row-even"><td>GB-ORK</td>
+<td>Orkney Islands</td>
+</tr>
+<tr class="row-odd"><td>GB-PKN</td>
+<td>Perthshire and Kinross</td>
+</tr>
+<tr class="row-even"><td>GB-RFW</td>
+<td>Renfrewshire</td>
+</tr>
+<tr class="row-odd"><td>GB-SCB</td>
+<td>Scottish Borders</td>
+</tr>
+<tr class="row-even"><td>GB-ZET</td>
+<td>Shetland Islands</td>
+</tr>
+<tr class="row-odd"><td>GB-SAY</td>
+<td>South Ayrshire</td>
+</tr>
+<tr class="row-even"><td>GB-SLK</td>
+<td>South Lanarkshire</td>
+</tr>
+<tr class="row-odd"><td>GB-STG</td>
+<td>Stirling</td>
+</tr>
+<tr class="row-even"><td>GB-WDU</td>
+<td>West Dunbartonshire</td>
+</tr>
+<tr class="row-odd"><td>GB-WLN</td>
+<td>West Lothian</td>
+</tr>
+<tr class="row-even"><td>GB-AGY</td>
+<td>Anglesey</td>
+</tr>
+<tr class="row-odd"><td>GB-BGW</td>
+<td>Blaenau Gwent</td>
+</tr>
+<tr class="row-even"><td>GB-BGE</td>
+<td>Bridgend</td>
+</tr>
+<tr class="row-odd"><td>GB-CAY</td>
+<td>Caerphilly</td>
+</tr>
+<tr class="row-even"><td>GB-CRF</td>
+<td>Cardiff</td>
+</tr>
+<tr class="row-odd"><td>GB-CMN</td>
+<td>Carmarthenshire</td>
+</tr>
+<tr class="row-even"><td>GB-CGN</td>
+<td>Ceredigion</td>
+</tr>
+<tr class="row-odd"><td>GB-CWY</td>
+<td>Conwy</td>
+</tr>
+<tr class="row-even"><td>GB-DEN</td>
+<td>Denbighshire</td>
+</tr>
+<tr class="row-odd"><td>GB-FLN</td>
+<td>Flintshire</td>
+</tr>
+<tr class="row-even"><td>GB-GWN</td>
+<td>Gwynedd</td>
+</tr>
+<tr class="row-odd"><td>GB-MTY</td>
+<td>Merthyr Tydfil</td>
+</tr>
+<tr class="row-even"><td>GB-MON</td>
+<td>Monmouthshire</td>
+</tr>
+<tr class="row-odd"><td>GB-NTL</td>
+<td>Neath Port Talbot</td>
+</tr>
+<tr class="row-even"><td>GB-NWP</td>
+<td>Newport</td>
+</tr>
+<tr class="row-odd"><td>GB-PEM</td>
+<td>Pembrokeshire</td>
+</tr>
+<tr class="row-even"><td>GB-POW</td>
+<td>Powys</td>
+</tr>
+<tr class="row-odd"><td>GB-RCT</td>
+<td>Rhondda</td>
+</tr>
+<tr class="row-even"><td>GB-SWA</td>
+<td>Swansea</td>
+</tr>
+<tr class="row-odd"><td>GB-TOF</td>
+<td>Torfaen</td>
+</tr>
+<tr class="row-even"><td>GB-VGL</td>
+<td>Vale of Glamorgan</td>
+</tr>
+<tr class="row-odd"><td>GB-WRX</td>
+<td>Wrexham</td>
+</tr>
+</tbody>
+</table>
+<ul class="simple">
+<li>Ukraine</li>
+</ul>
+<table border="1" class="docutils">
+<colgroup>
+<col width="17%" />
+<col width="83%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">ISO</th>
+<th class="head">Name of region</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>UA-71</td>
+<td>Cherkasy</td>
+</tr>
+<tr class="row-odd"><td>UA-74</td>
+<td>Chernihiv</td>
+</tr>
+<tr class="row-even"><td>UA-77</td>
+<td>Chernivtsi</td>
+</tr>
+<tr class="row-odd"><td>UA-43</td>
+<td>Crimea</td>
+</tr>
+<tr class="row-even"><td>UA-12</td>
+<td>Dnipropetrovs’k</td>
+</tr>
+<tr class="row-odd"><td>UA-14</td>
+<td>Donets’k</td>
+</tr>
+<tr class="row-even"><td>UA-26</td>
+<td>Ivano-Frankivs’k</td>
+</tr>
+<tr class="row-odd"><td>UA-63</td>
+<td>Kharkiv</td>
+</tr>
+<tr class="row-even"><td>UA-65</td>
+<td>Kherson</td>
+</tr>
+<tr class="row-odd"><td>UA-68</td>
+<td>Khmel’nyts’kyy</td>
+</tr>
+<tr class="row-even"><td>UA-30</td>
+<td>Kiev City</td>
+</tr>
+<tr class="row-odd"><td>UA-32</td>
+<td>Kiev</td>
+</tr>
+<tr class="row-even"><td>UA-35</td>
+<td>Kirovohrad</td>
+</tr>
+<tr class="row-odd"><td>UA-46</td>
+<td>L’viv</td>
+</tr>
+<tr class="row-even"><td>UA-09</td>
+<td>Luhans’k</td>
+</tr>
+<tr class="row-odd"><td>UA-48</td>
+<td>Mykolayiv</td>
+</tr>
+<tr class="row-even"><td>UA-51</td>
+<td>Odessa</td>
+</tr>
+<tr class="row-odd"><td>UA-53</td>
+<td>Poltava</td>
+</tr>
+<tr class="row-even"><td>UA-56</td>
+<td>Rivne</td>
+</tr>
+<tr class="row-odd"><td>UA-40</td>
+<td>Sevastopol’</td>
+</tr>
+<tr class="row-even"><td>UA-59</td>
+<td>Sumy</td>
+</tr>
+<tr class="row-odd"><td>UA-61</td>
+<td>Ternopil’</td>
+</tr>
+<tr class="row-even"><td>UA-21</td>
+<td>Transcarpathia</td>
+</tr>
+<tr class="row-odd"><td>UA-05</td>
+<td>Vinnytsya</td>
+</tr>
+<tr class="row-even"><td>UA-07</td>
+<td>Volyn</td>
+</tr>
+<tr class="row-odd"><td>UA-23</td>
+<td>Zaporizhzhya</td>
+</tr>
+<tr class="row-even"><td>UA-18</td>
+<td>Zhytomyr</td>
+</tr>
+</tbody>
+</table>
+<ul class="simple">
+<li>Usa</li>
+</ul>
+<table border="1" class="docutils">
+<colgroup>
+<col width="17%" />
+<col width="83%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">ISO</th>
+<th class="head">Name of region</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>US-AL</td>
+<td>Alabama</td>
+</tr>
+<tr class="row-odd"><td>US-AK</td>
+<td>Alaska</td>
+</tr>
+<tr class="row-even"><td>US-AK</td>
+<td>Alaska</td>
+</tr>
+<tr class="row-odd"><td>US-AZ</td>
+<td>Arizona</td>
+</tr>
+<tr class="row-even"><td>US-AR</td>
+<td>Arkansas</td>
+</tr>
+<tr class="row-odd"><td>US-CA</td>
+<td>California</td>
+</tr>
+<tr class="row-even"><td>US-CO</td>
+<td>Colorado</td>
+</tr>
+<tr class="row-odd"><td>US-CT</td>
+<td>Connecticut</td>
+</tr>
+<tr class="row-even"><td>US-DE</td>
+<td>Delaware</td>
+</tr>
+<tr class="row-odd"><td>US-DC</td>
+<td>District of Columbia</td>
+</tr>
+<tr class="row-even"><td>US-FL</td>
+<td>Florida</td>
+</tr>
+<tr class="row-odd"><td>US-GA</td>
+<td>Georgia</td>
+</tr>
+<tr class="row-even"><td>US-HI</td>
+<td>Hawaii</td>
+</tr>
+<tr class="row-odd"><td>US-ID</td>
+<td>Idaho</td>
+</tr>
+<tr class="row-even"><td>US-IL</td>
+<td>Illinois</td>
+</tr>
+<tr class="row-odd"><td>US-IN</td>
+<td>Indiana</td>
+</tr>
+<tr class="row-even"><td>US-IA</td>
+<td>Iowa</td>
+</tr>
+<tr class="row-odd"><td>US-KS</td>
+<td>Kansas</td>
+</tr>
+<tr class="row-even"><td>US-KY</td>
+<td>Kentucky</td>
+</tr>
+<tr class="row-odd"><td>US-LA</td>
+<td>Louisiana</td>
+</tr>
+<tr class="row-even"><td>US-ME</td>
+<td>Maine</td>
+</tr>
+<tr class="row-odd"><td>US-MD</td>
+<td>Maryland</td>
+</tr>
+<tr class="row-even"><td>US-MA</td>
+<td>Massachusetts</td>
+</tr>
+<tr class="row-odd"><td>US-MI</td>
+<td>Michigan</td>
+</tr>
+<tr class="row-even"><td>US-MN</td>
+<td>Minnesota</td>
+</tr>
+<tr class="row-odd"><td>US-MS</td>
+<td>Mississippi</td>
+</tr>
+<tr class="row-even"><td>US-MO</td>
+<td>Missouri</td>
+</tr>
+<tr class="row-odd"><td>US-MT</td>
+<td>Montana</td>
+</tr>
+<tr class="row-even"><td>US-NE</td>
+<td>Nebraska</td>
+</tr>
+<tr class="row-odd"><td>US-NV</td>
+<td>Nevada</td>
+</tr>
+<tr class="row-even"><td>US-NH</td>
+<td>New Hampshire</td>
+</tr>
+<tr class="row-odd"><td>US-NJ</td>
+<td>New Jersey</td>
+</tr>
+<tr class="row-even"><td>US-NM</td>
+<td>New Mexico</td>
+</tr>
+<tr class="row-odd"><td>US-NY</td>
+<td>New York</td>
+</tr>
+<tr class="row-even"><td>US-NC</td>
+<td>North Carolina</td>
+</tr>
+<tr class="row-odd"><td>US-ND</td>
+<td>North Dakota</td>
+</tr>
+<tr class="row-even"><td>US-OH</td>
+<td>Ohio</td>
+</tr>
+<tr class="row-odd"><td>US-OK</td>
+<td>Oklahoma</td>
+</tr>
+<tr class="row-even"><td>US-OR</td>
+<td>Oregon</td>
+</tr>
+<tr class="row-odd"><td>US-PA</td>
+<td>Pennsylvania</td>
+</tr>
+<tr class="row-even"><td>US-RI</td>
+<td>Rhode Island</td>
+</tr>
+<tr class="row-odd"><td>US-SC</td>
+<td>South Carolina</td>
+</tr>
+<tr class="row-even"><td>US-SD</td>
+<td>South Dakota</td>
+</tr>
+<tr class="row-odd"><td>US-TN</td>
+<td>Tennessee</td>
+</tr>
+<tr class="row-even"><td>US-TX</td>
+<td>Texas</td>
+</tr>
+<tr class="row-odd"><td>US-UT</td>
+<td>Utah</td>
+</tr>
+<tr class="row-even"><td>US-VT</td>
+<td>Vermont</td>
+</tr>
+<tr class="row-odd"><td>US-VA</td>
+<td>Virginia</td>
+</tr>
+<tr class="row-even"><td>US-WA</td>
+<td>Washington</td>
+</tr>
+<tr class="row-odd"><td>US-WV</td>
+<td>West Virginia</td>
+</tr>
+<tr class="row-even"><td>US-WI</td>
+<td>Wisconsin</td>
+</tr>
+<tr class="row-odd"><td>US-WY</td>
+<td>Wyoming</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="you-need-to-add-a-new-country">
+<h2>You need to add a new Country ?<a class="headerlink" href="#you-need-to-add-a-new-country" title="Permalink to this headline">¶</a></h2>
+<p>To add a new country in country map tools, we need follow next steps :</p>
+<ol class="arabic simple">
+<li>You need shapfiles why contains data of your map.
+You can get this file in this site : <a class="reference external" href="http://www.diva-gis.org/gdata">http://www.diva-gis.org/gdata</a></li>
+<li>You need to add ISO 3166-2 with column name ISO for all record in your file.
+It’s important because, it’s a norm for mapping your data with geojson file</li>
+<li>You need to convert shapfile to geojson file.
+This action can make with ogr2ogr tools : <a class="reference external" href="http://www.gdal.org/ogr2ogr.html">http://www.gdal.org/ogr2ogr.html</a></li>
+<li>Put your geojson file in next folder : superset/assets/visualizations/countries with the next name : nameofyourcountries.geojson</li>
+<li>You can to reduce size of geojson file ont this site : <a class="reference external" href="http://mapshaper.org/">http://mapshaper.org/</a></li>
+<li>Go in file superset/assets/javascripts/explorev2/stores/controls.jsx</li>
+<li>Add your country in component ‘select_country’
+Example :</li>
+</ol>
+<div class="code python highlight-default"><div class="highlight"><pre><span></span><span class="n">select_country</span><span class="p">:</span> <span class="p">{</span>
+ <span class="nb">type</span><span class="p">:</span> <span class="s1">'SelectControl'</span><span class="p">,</span>
+ <span class="n">label</span><span class="p">:</span> <span class="s1">'Country Name Type'</span><span class="p">,</span>
+ <span class="n">default</span><span class="p">:</span> <span class="s1">'France'</span><span class="p">,</span>
+ <span class="n">choices</span><span class="p">:</span> <span class="p">[</span>
+ <span class="s1">'Belgium'</span><span class="p">,</span>
+ <span class="s1">'Brazil'</span><span class="p">,</span>
+ <span class="s1">'China'</span><span class="p">,</span>
+ <span class="s1">'Egypt'</span><span class="p">,</span>
+ <span class="s1">'France'</span><span class="p">,</span>
+ <span class="s1">'Germany'</span><span class="p">,</span>
+ <span class="s1">'Italy'</span><span class="p">,</span>
+ <span class="s1">'Morocco'</span><span class="p">,</span>
+ <span class="s1">'Netherlands'</span><span class="p">,</span>
+ <span class="s1">'Russia'</span><span class="p">,</span>
+ <span class="s1">'Singapore'</span><span class="p">,</span>
+ <span class="s1">'Spain'</span><span class="p">,</span>
+ <span class="s1">'Uk'</span><span class="p">,</span>
+ <span class="s1">'Usa'</span><span class="p">,</span>
+ <span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">s</span> <span class="o">=></span> <span class="p">[</span><span class="n">s</span><span class="p">,</span> <span class="n">s</span><span class="p">]),</span>
+ <span class="n">description</span><span class="p">:</span> <span class="s1">'The name of country that Superset should display'</span><span class="p">,</span>
+<span class="p">},</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ <footer>
+
+ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+
+ <a href="videos.html" class="btn btn-neutral float-right" title="Videos" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
+
+
+ <a href="sqllab.html" class="btn btn-neutral" title="SQL Lab" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+
+ </div>
+
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>
+
+ </p>
+ </div>
+ Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
+
+ </div>
+ </div>
+
+ </section>
+
+ </div>
+
+
+
+
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT:'./',
+ VERSION:'',
+ COLLAPSE_INDEX:false,
+ FILE_SUFFIX:'.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+
+
+
+
+
+ <script type="text/javascript" src="_static/js/theme.js"></script>
+
+
+
+
+ <script type="text/javascript">
+ jQuery(function () {
+ SphinxRtdTheme.StickyNav.enable();
+ });
+ </script>
+
+
+</body>
+</html>
\ No newline at end of file
[04/14] incubator-superset-site git commit: Initial commit - Superset
docs as of 0.18.5
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/underscore.js
----------------------------------------------------------------------
diff --git a/_static/underscore.js b/_static/underscore.js
new file mode 100644
index 0000000..5b55f32
--- /dev/null
+++ b/_static/underscore.js
@@ -0,0 +1,31 @@
+// Underscore.js 1.3.1
+// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
+// Underscore is freely distributable under the MIT license.
+// Portions of Underscore are inspired or borrowed from Prototype,
+// Oliver Steele's Functional, and John Resig's Micro-Templating.
+// For all details and documentation:
+// http://documentcloud.github.com/underscore
+(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
+c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
+h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
+b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==
+null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
+function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
+e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
+function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});
+return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
+c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=
+b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);
+return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,
+d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
+var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
+c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
+a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};
+b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
+1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
+b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
+b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a),
+function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
+u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
+function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
+true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/up-pressed.png
----------------------------------------------------------------------
diff --git a/_static/up-pressed.png b/_static/up-pressed.png
new file mode 100644
index 0000000..99e7210
Binary files /dev/null and b/_static/up-pressed.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/up.png
----------------------------------------------------------------------
diff --git a/_static/up.png b/_static/up.png
new file mode 100644
index 0000000..26de002
Binary files /dev/null and b/_static/up.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/websupport.js
----------------------------------------------------------------------
diff --git a/_static/websupport.js b/_static/websupport.js
new file mode 100644
index 0000000..98e7f40
--- /dev/null
+++ b/_static/websupport.js
@@ -0,0 +1,808 @@
+/*
+ * websupport.js
+ * ~~~~~~~~~~~~~
+ *
+ * sphinx.websupport utilities for all documentation.
+ *
+ * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+(function($) {
+ $.fn.autogrow = function() {
+ return this.each(function() {
+ var textarea = this;
+
+ $.fn.autogrow.resize(textarea);
+
+ $(textarea)
+ .focus(function() {
+ textarea.interval = setInterval(function() {
+ $.fn.autogrow.resize(textarea);
+ }, 500);
+ })
+ .blur(function() {
+ clearInterval(textarea.interval);
+ });
+ });
+ };
+
+ $.fn.autogrow.resize = function(textarea) {
+ var lineHeight = parseInt($(textarea).css('line-height'), 10);
+ var lines = textarea.value.split('\n');
+ var columns = textarea.cols;
+ var lineCount = 0;
+ $.each(lines, function() {
+ lineCount += Math.ceil(this.length / columns) || 1;
+ });
+ var height = lineHeight * (lineCount + 1);
+ $(textarea).css('height', height);
+ };
+})(jQuery);
+
+(function($) {
+ var comp, by;
+
+ function init() {
+ initEvents();
+ initComparator();
+ }
+
+ function initEvents() {
+ $(document).on("click", 'a.comment-close', function(event) {
+ event.preventDefault();
+ hide($(this).attr('id').substring(2));
+ });
+ $(document).on("click", 'a.vote', function(event) {
+ event.preventDefault();
+ handleVote($(this));
+ });
+ $(document).on("click", 'a.reply', function(event) {
+ event.preventDefault();
+ openReply($(this).attr('id').substring(2));
+ });
+ $(document).on("click", 'a.close-reply', function(event) {
+ event.preventDefault();
+ closeReply($(this).attr('id').substring(2));
+ });
+ $(document).on("click", 'a.sort-option', function(event) {
+ event.preventDefault();
+ handleReSort($(this));
+ });
+ $(document).on("click", 'a.show-proposal', function(event) {
+ event.preventDefault();
+ showProposal($(this).attr('id').substring(2));
+ });
+ $(document).on("click", 'a.hide-proposal', function(event) {
+ event.preventDefault();
+ hideProposal($(this).attr('id').substring(2));
+ });
+ $(document).on("click", 'a.show-propose-change', function(event) {
+ event.preventDefault();
+ showProposeChange($(this).attr('id').substring(2));
+ });
+ $(document).on("click", 'a.hide-propose-change', function(event) {
+ event.preventDefault();
+ hideProposeChange($(this).attr('id').substring(2));
+ });
+ $(document).on("click", 'a.accept-comment', function(event) {
+ event.preventDefault();
+ acceptComment($(this).attr('id').substring(2));
+ });
+ $(document).on("click", 'a.delete-comment', function(event) {
+ event.preventDefault();
+ deleteComment($(this).attr('id').substring(2));
+ });
+ $(document).on("click", 'a.comment-markup', function(event) {
+ event.preventDefault();
+ toggleCommentMarkupBox($(this).attr('id').substring(2));
+ });
+ }
+
+ /**
+ * Set comp, which is a comparator function used for sorting and
+ * inserting comments into the list.
+ */
+ function setComparator() {
+ // If the first three letters are "asc", sort in ascending order
+ // and remove the prefix.
+ if (by.substring(0,3) == 'asc') {
+ var i = by.substring(3);
+ comp = function(a, b) { return a[i] - b[i]; };
+ } else {
+ // Otherwise sort in descending order.
+ comp = function(a, b) { return b[by] - a[by]; };
+ }
+
+ // Reset link styles and format the selected sort option.
+ $('a.sel').attr('href', '#').removeClass('sel');
+ $('a.by' + by).removeAttr('href').addClass('sel');
+ }
+
+ /**
+ * Create a comp function. If the user has preferences stored in
+ * the sortBy cookie, use those, otherwise use the default.
+ */
+ function initComparator() {
+ by = 'rating'; // Default to sort by rating.
+ // If the sortBy cookie is set, use that instead.
+ if (document.cookie.length > 0) {
+ var start = document.cookie.indexOf('sortBy=');
+ if (start != -1) {
+ start = start + 7;
+ var end = document.cookie.indexOf(";", start);
+ if (end == -1) {
+ end = document.cookie.length;
+ by = unescape(document.cookie.substring(start, end));
+ }
+ }
+ }
+ setComparator();
+ }
+
+ /**
+ * Show a comment div.
+ */
+ function show(id) {
+ $('#ao' + id).hide();
+ $('#ah' + id).show();
+ var context = $.extend({id: id}, opts);
+ var popup = $(renderTemplate(popupTemplate, context)).hide();
+ popup.find('textarea[name="proposal"]').hide();
+ popup.find('a.by' + by).addClass('sel');
+ var form = popup.find('#cf' + id);
+ form.submit(function(event) {
+ event.preventDefault();
+ addComment(form);
+ });
+ $('#s' + id).after(popup);
+ popup.slideDown('fast', function() {
+ getComments(id);
+ });
+ }
+
+ /**
+ * Hide a comment div.
+ */
+ function hide(id) {
+ $('#ah' + id).hide();
+ $('#ao' + id).show();
+ var div = $('#sc' + id);
+ div.slideUp('fast', function() {
+ div.remove();
+ });
+ }
+
+ /**
+ * Perform an ajax request to get comments for a node
+ * and insert the comments into the comments tree.
+ */
+ function getComments(id) {
+ $.ajax({
+ type: 'GET',
+ url: opts.getCommentsURL,
+ data: {node: id},
+ success: function(data, textStatus, request) {
+ var ul = $('#cl' + id);
+ var speed = 100;
+ $('#cf' + id)
+ .find('textarea[name="proposal"]')
+ .data('source', data.source);
+
+ if (data.comments.length === 0) {
+ ul.html('<li>No comments yet.</li>');
+ ul.data('empty', true);
+ } else {
+ // If there are comments, sort them and put them in the list.
+ var comments = sortComments(data.comments);
+ speed = data.comments.length * 100;
+ appendComments(comments, ul);
+ ul.data('empty', false);
+ }
+ $('#cn' + id).slideUp(speed + 200);
+ ul.slideDown(speed);
+ },
+ error: function(request, textStatus, error) {
+ showError('Oops, there was a problem retrieving the comments.');
+ },
+ dataType: 'json'
+ });
+ }
+
+ /**
+ * Add a comment via ajax and insert the comment into the comment tree.
+ */
+ function addComment(form) {
+ var node_id = form.find('input[name="node"]').val();
+ var parent_id = form.find('input[name="parent"]').val();
+ var text = form.find('textarea[name="comment"]').val();
+ var proposal = form.find('textarea[name="proposal"]').val();
+
+ if (text == '') {
+ showError('Please enter a comment.');
+ return;
+ }
+
+ // Disable the form that is being submitted.
+ form.find('textarea,input').attr('disabled', 'disabled');
+
+ // Send the comment to the server.
+ $.ajax({
+ type: "POST",
+ url: opts.addCommentURL,
+ dataType: 'json',
+ data: {
+ node: node_id,
+ parent: parent_id,
+ text: text,
+ proposal: proposal
+ },
+ success: function(data, textStatus, error) {
+ // Reset the form.
+ if (node_id) {
+ hideProposeChange(node_id);
+ }
+ form.find('textarea')
+ .val('')
+ .add(form.find('input'))
+ .removeAttr('disabled');
+ var ul = $('#cl' + (node_id || parent_id));
+ if (ul.data('empty')) {
+ $(ul).empty();
+ ul.data('empty', false);
+ }
+ insertComment(data.comment);
+ var ao = $('#ao' + node_id);
+ ao.find('img').attr({'src': opts.commentBrightImage});
+ if (node_id) {
+ // if this was a "root" comment, remove the commenting box
+ // (the user can get it back by reopening the comment popup)
+ $('#ca' + node_id).slideUp();
+ }
+ },
+ error: function(request, textStatus, error) {
+ form.find('textarea,input').removeAttr('disabled');
+ showError('Oops, there was a problem adding the comment.');
+ }
+ });
+ }
+
+ /**
+ * Recursively append comments to the main comment list and children
+ * lists, creating the comment tree.
+ */
+ function appendComments(comments, ul) {
+ $.each(comments, function() {
+ var div = createCommentDiv(this);
+ ul.append($(document.createElement('li')).html(div));
+ appendComments(this.children, div.find('ul.comment-children'));
+ // To avoid stagnating data, don't store the comments children in data.
+ this.children = null;
+ div.data('comment', this);
+ });
+ }
+
+ /**
+ * After adding a new comment, it must be inserted in the correct
+ * location in the comment tree.
+ */
+ function insertComment(comment) {
+ var div = createCommentDiv(comment);
+
+ // To avoid stagnating data, don't store the comments children in data.
+ comment.children = null;
+ div.data('comment', comment);
+
+ var ul = $('#cl' + (comment.node || comment.parent));
+ var siblings = getChildren(ul);
+
+ var li = $(document.createElement('li'));
+ li.hide();
+
+ // Determine where in the parents children list to insert this comment.
+ for(i=0; i < siblings.length; i++) {
+ if (comp(comment, siblings[i]) <= 0) {
+ $('#cd' + siblings[i].id)
+ .parent()
+ .before(li.html(div));
+ li.slideDown('fast');
+ return;
+ }
+ }
+
+ // If we get here, this comment rates lower than all the others,
+ // or it is the only comment in the list.
+ ul.append(li.html(div));
+ li.slideDown('fast');
+ }
+
+ function acceptComment(id) {
+ $.ajax({
+ type: 'POST',
+ url: opts.acceptCommentURL,
+ data: {id: id},
+ success: function(data, textStatus, request) {
+ $('#cm' + id).fadeOut('fast');
+ $('#cd' + id).removeClass('moderate');
+ },
+ error: function(request, textStatus, error) {
+ showError('Oops, there was a problem accepting the comment.');
+ }
+ });
+ }
+
+ function deleteComment(id) {
+ $.ajax({
+ type: 'POST',
+ url: opts.deleteCommentURL,
+ data: {id: id},
+ success: function(data, textStatus, request) {
+ var div = $('#cd' + id);
+ if (data == 'delete') {
+ // Moderator mode: remove the comment and all children immediately
+ div.slideUp('fast', function() {
+ div.remove();
+ });
+ return;
+ }
+ // User mode: only mark the comment as deleted
+ div
+ .find('span.user-id:first')
+ .text('[deleted]').end()
+ .find('div.comment-text:first')
+ .text('[deleted]').end()
+ .find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id +
+ ', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id)
+ .remove();
+ var comment = div.data('comment');
+ comment.username = '[deleted]';
+ comment.text = '[deleted]';
+ div.data('comment', comment);
+ },
+ error: function(request, textStatus, error) {
+ showError('Oops, there was a problem deleting the comment.');
+ }
+ });
+ }
+
+ function showProposal(id) {
+ $('#sp' + id).hide();
+ $('#hp' + id).show();
+ $('#pr' + id).slideDown('fast');
+ }
+
+ function hideProposal(id) {
+ $('#hp' + id).hide();
+ $('#sp' + id).show();
+ $('#pr' + id).slideUp('fast');
+ }
+
+ function showProposeChange(id) {
+ $('#pc' + id).hide();
+ $('#hc' + id).show();
+ var textarea = $('#pt' + id);
+ textarea.val(textarea.data('source'));
+ $.fn.autogrow.resize(textarea[0]);
+ textarea.slideDown('fast');
+ }
+
+ function hideProposeChange(id) {
+ $('#hc' + id).hide();
+ $('#pc' + id).show();
+ var textarea = $('#pt' + id);
+ textarea.val('').removeAttr('disabled');
+ textarea.slideUp('fast');
+ }
+
+ function toggleCommentMarkupBox(id) {
+ $('#mb' + id).toggle();
+ }
+
+ /** Handle when the user clicks on a sort by link. */
+ function handleReSort(link) {
+ var classes = link.attr('class').split(/\s+/);
+ for (var i=0; i<classes.length; i++) {
+ if (classes[i] != 'sort-option') {
+ by = classes[i].substring(2);
+ }
+ }
+ setComparator();
+ // Save/update the sortBy cookie.
+ var expiration = new Date();
+ expiration.setDate(expiration.getDate() + 365);
+ document.cookie= 'sortBy=' + escape(by) +
+ ';expires=' + expiration.toUTCString();
+ $('ul.comment-ul').each(function(index, ul) {
+ var comments = getChildren($(ul), true);
+ comments = sortComments(comments);
+ appendComments(comments, $(ul).empty());
+ });
+ }
+
+ /**
+ * Function to process a vote when a user clicks an arrow.
+ */
+ function handleVote(link) {
+ if (!opts.voting) {
+ showError("You'll need to login to vote.");
+ return;
+ }
+
+ var id = link.attr('id');
+ if (!id) {
+ // Didn't click on one of the voting arrows.
+ return;
+ }
+ // If it is an unvote, the new vote value is 0,
+ // Otherwise it's 1 for an upvote, or -1 for a downvote.
+ var value = 0;
+ if (id.charAt(1) != 'u') {
+ value = id.charAt(0) == 'u' ? 1 : -1;
+ }
+ // The data to be sent to the server.
+ var d = {
+ comment_id: id.substring(2),
+ value: value
+ };
+
+ // Swap the vote and unvote links.
+ link.hide();
+ $('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id)
+ .show();
+
+ // The div the comment is displayed in.
+ var div = $('div#cd' + d.comment_id);
+ var data = div.data('comment');
+
+ // If this is not an unvote, and the other vote arrow has
+ // already been pressed, unpress it.
+ if ((d.value !== 0) && (data.vote === d.value * -1)) {
+ $('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide();
+ $('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show();
+ }
+
+ // Update the comments rating in the local data.
+ data.rating += (data.vote === 0) ? d.value : (d.value - data.vote);
+ data.vote = d.value;
+ div.data('comment', data);
+
+ // Change the rating text.
+ div.find('.rating:first')
+ .text(data.rating + ' point' + (data.rating == 1 ? '' : 's'));
+
+ // Send the vote information to the server.
+ $.ajax({
+ type: "POST",
+ url: opts.processVoteURL,
+ data: d,
+ error: function(request, textStatus, error) {
+ showError('Oops, there was a problem casting that vote.');
+ }
+ });
+ }
+
+ /**
+ * Open a reply form used to reply to an existing comment.
+ */
+ function openReply(id) {
+ // Swap out the reply link for the hide link
+ $('#rl' + id).hide();
+ $('#cr' + id).show();
+
+ // Add the reply li to the children ul.
+ var div = $(renderTemplate(replyTemplate, {id: id})).hide();
+ $('#cl' + id)
+ .prepend(div)
+ // Setup the submit handler for the reply form.
+ .find('#rf' + id)
+ .submit(function(event) {
+ event.preventDefault();
+ addComment($('#rf' + id));
+ closeReply(id);
+ })
+ .find('input[type=button]')
+ .click(function() {
+ closeReply(id);
+ });
+ div.slideDown('fast', function() {
+ $('#rf' + id).find('textarea').focus();
+ });
+ }
+
+ /**
+ * Close the reply form opened with openReply.
+ */
+ function closeReply(id) {
+ // Remove the reply div from the DOM.
+ $('#rd' + id).slideUp('fast', function() {
+ $(this).remove();
+ });
+
+ // Swap out the hide link for the reply link
+ $('#cr' + id).hide();
+ $('#rl' + id).show();
+ }
+
+ /**
+ * Recursively sort a tree of comments using the comp comparator.
+ */
+ function sortComments(comments) {
+ comments.sort(comp);
+ $.each(comments, function() {
+ this.children = sortComments(this.children);
+ });
+ return comments;
+ }
+
+ /**
+ * Get the children comments from a ul. If recursive is true,
+ * recursively include childrens' children.
+ */
+ function getChildren(ul, recursive) {
+ var children = [];
+ ul.children().children("[id^='cd']")
+ .each(function() {
+ var comment = $(this).data('comment');
+ if (recursive)
+ comment.children = getChildren($(this).find('#cl' + comment.id), true);
+ children.push(comment);
+ });
+ return children;
+ }
+
+ /** Create a div to display a comment in. */
+ function createCommentDiv(comment) {
+ if (!comment.displayed && !opts.moderator) {
+ return $('<div class="moderate">Thank you! Your comment will show up '
+ + 'once it is has been approved by a moderator.</div>');
+ }
+ // Prettify the comment rating.
+ comment.pretty_rating = comment.rating + ' point' +
+ (comment.rating == 1 ? '' : 's');
+ // Make a class (for displaying not yet moderated comments differently)
+ comment.css_class = comment.displayed ? '' : ' moderate';
+ // Create a div for this comment.
+ var context = $.extend({}, opts, comment);
+ var div = $(renderTemplate(commentTemplate, context));
+
+ // If the user has voted on this comment, highlight the correct arrow.
+ if (comment.vote) {
+ var direction = (comment.vote == 1) ? 'u' : 'd';
+ div.find('#' + direction + 'v' + comment.id).hide();
+ div.find('#' + direction + 'u' + comment.id).show();
+ }
+
+ if (opts.moderator || comment.text != '[deleted]') {
+ div.find('a.reply').show();
+ if (comment.proposal_diff)
+ div.find('#sp' + comment.id).show();
+ if (opts.moderator && !comment.displayed)
+ div.find('#cm' + comment.id).show();
+ if (opts.moderator || (opts.username == comment.username))
+ div.find('#dc' + comment.id).show();
+ }
+ return div;
+ }
+
+ /**
+ * A simple template renderer. Placeholders such as <%id%> are replaced
+ * by context['id'] with items being escaped. Placeholders such as <#id#>
+ * are not escaped.
+ */
+ function renderTemplate(template, context) {
+ var esc = $(document.createElement('div'));
+
+ function handle(ph, escape) {
+ var cur = context;
+ $.each(ph.split('.'), function() {
+ cur = cur[this];
+ });
+ return escape ? esc.text(cur || "").html() : cur;
+ }
+
+ return template.replace(/<([%#])([\w\.]*)\1>/g, function() {
+ return handle(arguments[2], arguments[1] == '%' ? true : false);
+ });
+ }
+
+ /** Flash an error message briefly. */
+ function showError(message) {
+ $(document.createElement('div')).attr({'class': 'popup-error'})
+ .append($(document.createElement('div'))
+ .attr({'class': 'error-message'}).text(message))
+ .appendTo('body')
+ .fadeIn("slow")
+ .delay(2000)
+ .fadeOut("slow");
+ }
+
+ /** Add a link the user uses to open the comments popup. */
+ $.fn.comment = function() {
+ return this.each(function() {
+ var id = $(this).attr('id').substring(1);
+ var count = COMMENT_METADATA[id];
+ var title = count + ' comment' + (count == 1 ? '' : 's');
+ var image = count > 0 ? opts.commentBrightImage : opts.commentImage;
+ var addcls = count == 0 ? ' nocomment' : '';
+ $(this)
+ .append(
+ $(document.createElement('a')).attr({
+ href: '#',
+ 'class': 'sphinx-comment-open' + addcls,
+ id: 'ao' + id
+ })
+ .append($(document.createElement('img')).attr({
+ src: image,
+ alt: 'comment',
+ title: title
+ }))
+ .click(function(event) {
+ event.preventDefault();
+ show($(this).attr('id').substring(2));
+ })
+ )
+ .append(
+ $(document.createElement('a')).attr({
+ href: '#',
+ 'class': 'sphinx-comment-close hidden',
+ id: 'ah' + id
+ })
+ .append($(document.createElement('img')).attr({
+ src: opts.closeCommentImage,
+ alt: 'close',
+ title: 'close'
+ }))
+ .click(function(event) {
+ event.preventDefault();
+ hide($(this).attr('id').substring(2));
+ })
+ );
+ });
+ };
+
+ var opts = {
+ processVoteURL: '/_process_vote',
+ addCommentURL: '/_add_comment',
+ getCommentsURL: '/_get_comments',
+ acceptCommentURL: '/_accept_comment',
+ deleteCommentURL: '/_delete_comment',
+ commentImage: '/static/_static/comment.png',
+ closeCommentImage: '/static/_static/comment-close.png',
+ loadingImage: '/static/_static/ajax-loader.gif',
+ commentBrightImage: '/static/_static/comment-bright.png',
+ upArrow: '/static/_static/up.png',
+ downArrow: '/static/_static/down.png',
+ upArrowPressed: '/static/_static/up-pressed.png',
+ downArrowPressed: '/static/_static/down-pressed.png',
+ voting: false,
+ moderator: false
+ };
+
+ if (typeof COMMENT_OPTIONS != "undefined") {
+ opts = jQuery.extend(opts, COMMENT_OPTIONS);
+ }
+
+ var popupTemplate = '\
+ <div class="sphinx-comments" id="sc<%id%>">\
+ <p class="sort-options">\
+ Sort by:\
+ <a href="#" class="sort-option byrating">best rated</a>\
+ <a href="#" class="sort-option byascage">newest</a>\
+ <a href="#" class="sort-option byage">oldest</a>\
+ </p>\
+ <div class="comment-header">Comments</div>\
+ <div class="comment-loading" id="cn<%id%>">\
+ loading comments... <img src="<%loadingImage%>" alt="" /></div>\
+ <ul id="cl<%id%>" class="comment-ul"></ul>\
+ <div id="ca<%id%>">\
+ <p class="add-a-comment">Add a comment\
+ (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
+ <div class="comment-markup-box" id="mb<%id%>">\
+ reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
+ <code>``code``</code>, \
+ code blocks: <code>::</code> and an indented block after blank line</div>\
+ <form method="post" id="cf<%id%>" class="comment-form" action="">\
+ <textarea name="comment" cols="80"></textarea>\
+ <p class="propose-button">\
+ <a href="#" id="pc<%id%>" class="show-propose-change">\
+ Propose a change ▹\
+ </a>\
+ <a href="#" id="hc<%id%>" class="hide-propose-change">\
+ Propose a change ▿\
+ </a>\
+ </p>\
+ <textarea name="proposal" id="pt<%id%>" cols="80"\
+ spellcheck="false"></textarea>\
+ <input type="submit" value="Add comment" />\
+ <input type="hidden" name="node" value="<%id%>" />\
+ <input type="hidden" name="parent" value="" />\
+ </form>\
+ </div>\
+ </div>';
+
+ var commentTemplate = '\
+ <div id="cd<%id%>" class="sphinx-comment<%css_class%>">\
+ <div class="vote">\
+ <div class="arrow">\
+ <a href="#" id="uv<%id%>" class="vote" title="vote up">\
+ <img src="<%upArrow%>" />\
+ </a>\
+ <a href="#" id="uu<%id%>" class="un vote" title="vote up">\
+ <img src="<%upArrowPressed%>" />\
+ </a>\
+ </div>\
+ <div class="arrow">\
+ <a href="#" id="dv<%id%>" class="vote" title="vote down">\
+ <img src="<%downArrow%>" id="da<%id%>" />\
+ </a>\
+ <a href="#" id="du<%id%>" class="un vote" title="vote down">\
+ <img src="<%downArrowPressed%>" />\
+ </a>\
+ </div>\
+ </div>\
+ <div class="comment-content">\
+ <p class="tagline comment">\
+ <span class="user-id"><%username%></span>\
+ <span class="rating"><%pretty_rating%></span>\
+ <span class="delta"><%time.delta%></span>\
+ </p>\
+ <div class="comment-text comment"><#text#></div>\
+ <p class="comment-opts comment">\
+ <a href="#" class="reply hidden" id="rl<%id%>">reply ▹</a>\
+ <a href="#" class="close-reply" id="cr<%id%>">reply ▿</a>\
+ <a href="#" id="sp<%id%>" class="show-proposal">proposal ▹</a>\
+ <a href="#" id="hp<%id%>" class="hide-proposal">proposal ▿</a>\
+ <a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\
+ <span id="cm<%id%>" class="moderation hidden">\
+ <a href="#" id="ac<%id%>" class="accept-comment">accept</a>\
+ </span>\
+ </p>\
+ <pre class="proposal" id="pr<%id%>">\
+<#proposal_diff#>\
+ </pre>\
+ <ul class="comment-children" id="cl<%id%>"></ul>\
+ </div>\
+ <div class="clearleft"></div>\
+ </div>\
+ </div>';
+
+ var replyTemplate = '\
+ <li>\
+ <div class="reply-div" id="rd<%id%>">\
+ <form id="rf<%id%>">\
+ <textarea name="comment" cols="80"></textarea>\
+ <input type="submit" value="Add reply" />\
+ <input type="button" value="Cancel" />\
+ <input type="hidden" name="parent" value="<%id%>" />\
+ <input type="hidden" name="node" value="" />\
+ </form>\
+ </div>\
+ </li>';
+
+ $(document).ready(function() {
+ init();
+ });
+})(jQuery);
+
+$(document).ready(function() {
+ // add comment anchors for all paragraphs that are commentable
+ $('.sphinx-has-comment').comment();
+
+ // highlight search words in search results
+ $("div.context").each(function() {
+ var params = $.getQueryParameters();
+ var terms = (params.q) ? params.q[0].split(/\s+/) : [];
+ var result = $(this);
+ $.each(terms, function() {
+ result.highlightText(this.toLowerCase(), 'highlighted');
+ });
+ });
+
+ // directly open comment window if requested
+ var anchor = document.location.hash;
+ if (anchor.substring(0, 9) == '#comment-') {
+ $('#ao' + anchor.substring(9)).click();
+ document.location.hash = '#s' + anchor.substring(9);
+ }
+});
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/druid.html
----------------------------------------------------------------------
diff --git a/druid.html b/druid.html
new file mode 100644
index 0000000..524a7c8
--- /dev/null
+++ b/druid.html
@@ -0,0 +1,256 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <title>Druid — Superset's documentation documentation</title>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+
+
+
+
+
+ <link rel="index" title="Index"
+ href="genindex.html"/>
+ <link rel="search" title="Search" href="search.html"/>
+ <link rel="top" title="Superset's documentation documentation" href="index.html"/>
+ <link rel="next" title="FAQ" href="faq.html"/>
+ <link rel="prev" title="Gallery" href="gallery.html"/>
+
+
+ <script src="_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+ <div class="wy-grid-for-nav">
+
+
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search">
+
+
+
+ <a href="index.html" class="icon icon-home"> Superset's documentation
+
+
+
+ </a>
+
+
+
+
+
+
+
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+
+
+ </div>
+
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+
+
+
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation & Configuration</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial for Superset Administrators</a></li>
+<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l1"><a class="reference internal" href="sqllab.html">SQL Lab</a></li>
+<li class="toctree-l1"><a class="reference internal" href="visualization.html">Visualization Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="videos.html">Videos</a></li>
+<li class="toctree-l1"><a class="reference internal" href="gallery.html">Gallery</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Druid</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#supported">Supported</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#aggregations">Aggregations</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#post-aggregations">Post-Aggregations</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="#not-yet-supported">Not yet supported</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
+</ul>
+
+
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+
+ <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="index.html">Superset's documentation</a>
+ </nav>
+
+
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="index.html">Docs</a> »</li>
+
+ <li>Druid</li>
+ <li class="wy-breadcrumbs-aside">
+
+
+
+ </li>
+ </ul>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <div class="section" id="druid">
+<h1>Druid<a class="headerlink" href="#druid" title="Permalink to this headline">¶</a></h1>
+<p>Superset works well with Druid, though currently not all
+advanced features out of Druid are covered. This page clarifies what is
+covered and what isn’t and explains how to use some of the features.</p>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Currently Airbnb runs against Druid <code class="docutils literal"><span class="pre">0.8.x</span></code> and previous /
+following versions are not tested against.</p>
+</div>
+<div class="section" id="supported">
+<h2>Supported<a class="headerlink" href="#supported" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="aggregations">
+<h3>Aggregations<a class="headerlink" href="#aggregations" title="Permalink to this headline">¶</a></h3>
+<p>Common aggregations, or Druid metrics can be defined and used in Superset.
+The first and simpler use case is to use the checkbox matrix expose in your
+datasource’s edit view (<code class="docutils literal"><span class="pre">Sources</span> <span class="pre">-></span> <span class="pre">Druid</span> <span class="pre">Datasources</span> <span class="pre">-></span>
+<span class="pre">[your</span> <span class="pre">datasource]</span> <span class="pre">-></span> <span class="pre">Edit</span> <span class="pre">-></span> <span class="pre">[tab]</span> <span class="pre">List</span> <span class="pre">Druid</span> <span class="pre">Column</span></code>).
+Clicking the <code class="docutils literal"><span class="pre">GroupBy</span></code> and <code class="docutils literal"><span class="pre">Filterable</span></code> checkboxes will make the column
+appear in the related dropdowns while in explore view. Checking
+<code class="docutils literal"><span class="pre">Count</span> <span class="pre">Distinct</span></code>, <code class="docutils literal"><span class="pre">Min</span></code>, <code class="docutils literal"><span class="pre">Max</span></code> or <code class="docutils literal"><span class="pre">Sum</span></code> will result in creating
+new metrics that will appear in the <code class="docutils literal"><span class="pre">List</span> <span class="pre">Druid</span> <span class="pre">Metric</span></code> tab upon saving the
+datasource. By editing these metrics, you’ll notice that they their <code class="docutils literal"><span class="pre">json</span></code>
+element correspond to Druid aggregation definition. You can create your own
+aggregations manually from the <code class="docutils literal"><span class="pre">List</span> <span class="pre">Druid</span> <span class="pre">Metric</span></code> tab following Druid
+documentation.</p>
+<a class="reference internal image-reference" href="_images/druid_agg.png"><img alt="_images/druid_agg.png" src="_images/druid_agg.png" style="width: 894.0px; height: 564.0px;" /></a>
+</div>
+<div class="section" id="post-aggregations">
+<h3>Post-Aggregations<a class="headerlink" href="#post-aggregations" title="Permalink to this headline">¶</a></h3>
+<p>Druid supports post aggregation and this works in Superset. All you have to
+do is creating a metric, much like you would create an aggregation manually,
+but specify <code class="docutils literal"><span class="pre">postagg</span></code> as a <code class="docutils literal"><span class="pre">Metric</span> <span class="pre">Type</span></code>. You then have to provide a valid
+json post-aggregation definition (as specified in the Druid docs) in the
+Json field.</p>
+</div>
+</div>
+<div class="section" id="not-yet-supported">
+<h2>Not yet supported<a class="headerlink" href="#not-yet-supported" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Regex filters</li>
+<li>Lookups / joins</li>
+</ul>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ <footer>
+
+ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+
+ <a href="faq.html" class="btn btn-neutral float-right" title="FAQ" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
+
+
+ <a href="gallery.html" class="btn btn-neutral" title="Gallery" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+
+ </div>
+
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>
+
+ </p>
+ </div>
+ Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
+
+ </div>
+ </div>
+
+ </section>
+
+ </div>
+
+
+
+
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT:'./',
+ VERSION:'',
+ COLLAPSE_INDEX:false,
+ FILE_SUFFIX:'.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+
+
+
+
+
+ <script type="text/javascript" src="_static/js/theme.js"></script>
+
+
+
+
+ <script type="text/javascript">
+ jQuery(function () {
+ SphinxRtdTheme.StickyNav.enable();
+ });
+ </script>
+
+
+</body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/faq.html
----------------------------------------------------------------------
diff --git a/faq.html b/faq.html
new file mode 100644
index 0000000..04f8452
--- /dev/null
+++ b/faq.html
@@ -0,0 +1,327 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <title>FAQ — Superset's documentation documentation</title>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+
+
+
+
+
+ <link rel="index" title="Index"
+ href="genindex.html"/>
+ <link rel="search" title="Search" href="search.html"/>
+ <link rel="top" title="Superset's documentation documentation" href="index.html"/>
+ <link rel="prev" title="Druid" href="druid.html"/>
+
+
+ <script src="_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+ <div class="wy-grid-for-nav">
+
+
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search">
+
+
+
+ <a href="index.html" class="icon icon-home"> Superset's documentation
+
+
+
+ </a>
+
+
+
+
+
+
+
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+
+
+ </div>
+
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+
+
+
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation & Configuration</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial for Superset Administrators</a></li>
+<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l1"><a class="reference internal" href="sqllab.html">SQL Lab</a></li>
+<li class="toctree-l1"><a class="reference internal" href="visualization.html">Visualization Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="videos.html">Videos</a></li>
+<li class="toctree-l1"><a class="reference internal" href="gallery.html">Gallery</a></li>
+<li class="toctree-l1"><a class="reference internal" href="druid.html">Druid</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">FAQ</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#can-i-query-join-multiple-tables-at-one-time">Can I query/join multiple tables at one time?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#how-big-can-my-data-source-be">How BIG can my data source be?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#how-do-i-create-my-own-visualization">How do I create my own visualization?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#why-are-my-queries-timing-out">Why are my queries timing out?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#why-is-the-map-not-visible-in-the-mapbox-visualization">Why is the map not visible in the mapbox visualization?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#how-to-add-dynamic-filters-to-a-dashboard">How to add dynamic filters to a dashboard?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#why-does-fabmanager-or-superset-freezed-hung-not-responding-when-started-my-home-directory-is-nfs-mounted">Why does fabmanager or superset freezed/hung/not responding when started (my home directory is NFS mounted)?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#how-do-i-add-new-columns-to-an-existing-table">How do I add new columns to an existing table</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#how-do-i-go-about-developing-a-new-visualization-type">How do I go about developing a new visualization type?</a></li>
+</ul>
+</li>
+</ul>
+
+
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+
+ <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="index.html">Superset's documentation</a>
+ </nav>
+
+
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="index.html">Docs</a> »</li>
+
+ <li>FAQ</li>
+ <li class="wy-breadcrumbs-aside">
+
+
+
+ </li>
+ </ul>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <div class="section" id="faq">
+<h1>FAQ<a class="headerlink" href="#faq" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="can-i-query-join-multiple-tables-at-one-time">
+<h2>Can I query/join multiple tables at one time?<a class="headerlink" href="#can-i-query-join-multiple-tables-at-one-time" title="Permalink to this headline">¶</a></h2>
+<p>Not directly no. A Superset SQLAlchemy datasource can only be a single table
+or a view.</p>
+<p>When working with tables, the solution would be to materialize
+a table that contains all the fields needed for your analysis, most likely
+through some scheduled batch process.</p>
+<p>A view is a simple logical layer that abstract an arbitrary SQL queries as
+a virtual table. This can allow you to join and union multiple tables, and
+to apply some transformation using arbitrary SQL expressions. The limitation
+there is your database performance as Superset effectively will run a query
+on top of your query (view). A good practice may be to limit yourself to
+joining your main large table to one or many small tables only, and avoid
+using <code class="docutils literal"><span class="pre">GROUP</span> <span class="pre">BY</span></code> where possible as Superset will do its own <code class="docutils literal"><span class="pre">GROUP</span> <span class="pre">BY</span></code> and
+doing the work twice might slow down performance.</p>
+<p>Whether you use a table or a view, the important factor is whether your
+database is fast enough to serve it in an interactive fashion to provide
+a good user experience in Superset.</p>
+</div>
+<div class="section" id="how-big-can-my-data-source-be">
+<h2>How BIG can my data source be?<a class="headerlink" href="#how-big-can-my-data-source-be" title="Permalink to this headline">¶</a></h2>
+<p>It can be gigantic! As mentioned above, the main criteria is whether your
+database can execute queries and return results in a time frame that is
+acceptable to your users. Many distributed databases out there can execute
+queries that scan through terabytes in an interactive fashion.</p>
+</div>
+<div class="section" id="how-do-i-create-my-own-visualization">
+<h2>How do I create my own visualization?<a class="headerlink" href="#how-do-i-create-my-own-visualization" title="Permalink to this headline">¶</a></h2>
+<p>We are planning on making it easier to add new visualizations to the
+framework, in the meantime, we’ve tagged a few pull requests as
+<code class="docutils literal"><span class="pre">example</span></code> to give people examples of how to contribute new
+visualizations.</p>
+<p><a class="reference external" href="https://github.com/airbnb/superset/issues?q=label%3Aexample+is%3Aclosed">https://github.com/airbnb/superset/issues?q=label%3Aexample+is%3Aclosed</a></p>
+</div>
+<div class="section" id="why-are-my-queries-timing-out">
+<h2>Why are my queries timing out?<a class="headerlink" href="#why-are-my-queries-timing-out" title="Permalink to this headline">¶</a></h2>
+<p>If you are seeing timeouts (504 Gateway Time-out) when running queries,
+it’s because the web server is timing out web requests. If you want to
+increase the default (50), you can specify the timeout when starting the
+web server with the <code class="docutils literal"><span class="pre">-t</span></code> flag, which is expressed in seconds.</p>
+<p><code class="docutils literal"><span class="pre">superset</span> <span class="pre">runserver</span> <span class="pre">-t</span> <span class="pre">300</span></code></p>
+</div>
+<div class="section" id="why-is-the-map-not-visible-in-the-mapbox-visualization">
+<h2>Why is the map not visible in the mapbox visualization?<a class="headerlink" href="#why-is-the-map-not-visible-in-the-mapbox-visualization" title="Permalink to this headline">¶</a></h2>
+<p>You need to register to mapbox.com, get an API key and configure it as
+<code class="docutils literal"><span class="pre">MAPBOX_API_KEY</span></code> in <code class="docutils literal"><span class="pre">superset_config.py</span></code>.</p>
+</div>
+<div class="section" id="how-to-add-dynamic-filters-to-a-dashboard">
+<h2>How to add dynamic filters to a dashboard?<a class="headerlink" href="#how-to-add-dynamic-filters-to-a-dashboard" title="Permalink to this headline">¶</a></h2>
+<p>It’s easy: use the <code class="docutils literal"><span class="pre">Filter</span> <span class="pre">Box</span></code> widget, build a slice, and add it to your
+dashboard.</p>
+<p>The <code class="docutils literal"><span class="pre">Filter</span> <span class="pre">Box</span></code> widget allows you to define a query to populate dropdowns
+that can be use for filtering. To build the list of distinct values, we
+run a query, and sort the result by the metric you provide, sorting
+descending.</p>
+<p>The widget also has a checkbox <code class="docutils literal"><span class="pre">Date</span> <span class="pre">Filter</span></code>, which enables time filtering
+capabilities to your dashboard. After checking the box and refreshing, you’ll
+see a <code class="docutils literal"><span class="pre">from</span></code> and a <code class="docutils literal"><span class="pre">to</span></code> dropdown show up.</p>
+<p>By default, the filtering will be applied to all the slices that are built
+on top of a datasource that shares the column name that the filter is based
+on. It’s also a requirement for that column to be checked as “filterable”
+in the column tab of the table editor.</p>
+<p>But what about if you don’t want certain widgets to get filtered on your
+dashboard? You can do that by editing your dashboard, and in the form,
+edit the <code class="docutils literal"><span class="pre">JSON</span> <span class="pre">Metadata</span></code> field, more specifically the
+<code class="docutils literal"><span class="pre">filter_immune_slices</span></code> key, that receives an array of sliceIds that should
+never be affected by any dashboard level filtering.</p>
+<p>..code:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="p">{</span>
+ <span class="s2">"filter_immune_slices"</span><span class="p">:</span> <span class="p">[</span><span class="mi">324</span><span class="p">,</span> <span class="mi">65</span><span class="p">,</span> <span class="mi">92</span><span class="p">],</span>
+ <span class="s2">"expanded_slices"</span><span class="p">:</span> <span class="p">{},</span>
+ <span class="s2">"filter_immune_slice_fields"</span><span class="p">:</span> <span class="p">{</span>
+ <span class="s2">"177"</span><span class="p">:</span> <span class="p">[</span><span class="s2">"country_name"</span><span class="p">,</span> <span class="s2">"__from"</span><span class="p">,</span> <span class="s2">"__to"</span><span class="p">],</span>
+ <span class="s2">"32"</span><span class="p">:</span> <span class="p">[</span><span class="s2">"__from"</span><span class="p">,</span> <span class="s2">"__to"</span><span class="p">]</span>
+ <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>In the json blob above, slices 324, 65 and 92 won’t be affected by any
+dashboard level filtering.</p>
+<p>Now note the <code class="docutils literal"><span class="pre">filter_immune_slice_fields</span></code> key. This one allows you to
+be more specific and define for a specific slice_id, which filter fields
+should be disregarded.</p>
+<p>Note the use of the <code class="docutils literal"><span class="pre">__from</span></code> and <code class="docutils literal"><span class="pre">__to</span></code> keywords, those are reserved
+for dealing with the time boundary filtering mentioned above.</p>
+<p>But what happens with filtering when dealing with slices coming from
+different tables or databases? If the column name is shared, the filter will
+be applied, it’s as simple as that.</p>
+</div>
+<div class="section" id="why-does-fabmanager-or-superset-freezed-hung-not-responding-when-started-my-home-directory-is-nfs-mounted">
+<h2>Why does fabmanager or superset freezed/hung/not responding when started (my home directory is NFS mounted)?<a class="headerlink" href="#why-does-fabmanager-or-superset-freezed-hung-not-responding-when-started-my-home-directory-is-nfs-mounted" title="Permalink to this headline">¶</a></h2>
+<p>superset creates and uses an sqlite database at <code class="docutils literal"><span class="pre">~/.superset/superset.db</span></code>. Sqlite is known to <a class="reference external" href="https://www.sqlite.org/lockingv3.html">don’t work well if used on NFS</a> due to broken file locking implementation on NFS.</p>
+<p>One work around is to create a symlink from ~/.superset to a directory located on a non-NFS partition.</p>
+<p>Another work around is to change where superset stores the sqlite database by adding <code class="docutils literal"><span class="pre">SQLALCHEMY_DATABASE_URI</span> <span class="pre">=</span> <span class="pre">'sqlite:////new/localtion/superset.db'</span></code> in superset_config.py (create the file if needed), then adding the directory where superset_config.py lives to PYTHONPATH environment variable (e.g. <code class="docutils literal"><span class="pre">export</span> <span class="pre">PYTHONPATH=/opt/logs/sandbox/airbnb/</span></code>).</p>
+</div>
+<div class="section" id="how-do-i-add-new-columns-to-an-existing-table">
+<h2>How do I add new columns to an existing table<a class="headerlink" href="#how-do-i-add-new-columns-to-an-existing-table" title="Permalink to this headline">¶</a></h2>
+<p>Table schemas evolve, and Superset needs to reflect that. It’s pretty common
+in the life cycle of a dashboard to want to add a new dimension or metric.
+To get Superset to discover your new columns, all you have to do is to
+go to <code class="docutils literal"><span class="pre">Menu</span> <span class="pre">-></span> <span class="pre">Sources</span> <span class="pre">-></span> <span class="pre">Tables</span></code>, click the <code class="docutils literal"><span class="pre">edit</span></code> icon next to the
+table who’s schema has changed, and hit <code class="docutils literal"><span class="pre">Save</span></code> from the <code class="docutils literal"><span class="pre">Detail</span></code> tab.
+Behind the scene, the new columns will get merged it. Following this,
+you may want to
+re-edit the table afterwards to configure the <code class="docutils literal"><span class="pre">Column</span></code> tab, check the
+appropriate boxes and save again.</p>
+</div>
+<div class="section" id="how-do-i-go-about-developing-a-new-visualization-type">
+<h2>How do I go about developing a new visualization type?<a class="headerlink" href="#how-do-i-go-about-developing-a-new-visualization-type" title="Permalink to this headline">¶</a></h2>
+<p>Here’s an example as a Github PR with comments that describe what the
+different sections of the code do:
+<a class="reference external" href="https://github.com/airbnb/superset/pull/3013">https://github.com/airbnb/superset/pull/3013</a></p>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ <footer>
+
+ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+
+
+ <a href="druid.html" class="btn btn-neutral" title="Druid" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+
+ </div>
+
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>
+
+ </p>
+ </div>
+ Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
+
+ </div>
+ </div>
+
+ </section>
+
+ </div>
+
+
+
+
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT:'./',
+ VERSION:'',
+ COLLAPSE_INDEX:false,
+ FILE_SUFFIX:'.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+
+
+
+
+
+ <script type="text/javascript" src="_static/js/theme.js"></script>
+
+
+
+
+ <script type="text/javascript">
+ jQuery(function () {
+ SphinxRtdTheme.StickyNav.enable();
+ });
+ </script>
+
+
+</body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/gallery.html
----------------------------------------------------------------------
diff --git a/gallery.html b/gallery.html
new file mode 100644
index 0000000..3ccdb87
--- /dev/null
+++ b/gallery.html
@@ -0,0 +1,235 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <title>Gallery — Superset's documentation documentation</title>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+
+
+
+
+
+ <link rel="index" title="Index"
+ href="genindex.html"/>
+ <link rel="search" title="Search" href="search.html"/>
+ <link rel="top" title="Superset's documentation documentation" href="index.html"/>
+ <link rel="next" title="Druid" href="druid.html"/>
+ <link rel="prev" title="Videos" href="videos.html"/>
+
+
+ <script src="_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+ <div class="wy-grid-for-nav">
+
+
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search">
+
+
+
+ <a href="index.html" class="icon icon-home"> Superset's documentation
+
+
+
+ </a>
+
+
+
+
+
+
+
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+
+
+ </div>
+
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+
+
+
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation & Configuration</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial for Superset Administrators</a></li>
+<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l1"><a class="reference internal" href="sqllab.html">SQL Lab</a></li>
+<li class="toctree-l1"><a class="reference internal" href="visualization.html">Visualization Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="videos.html">Videos</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Gallery</a></li>
+<li class="toctree-l1"><a class="reference internal" href="druid.html">Druid</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
+</ul>
+
+
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+
+ <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="index.html">Superset's documentation</a>
+ </nav>
+
+
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="index.html">Docs</a> »</li>
+
+ <li>Gallery</li>
+ <li class="wy-breadcrumbs-aside">
+
+
+
+ </li>
+ </ul>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <div class="section" id="gallery">
+<h1>Gallery<a class="headerlink" href="#gallery" title="Permalink to this headline">¶</a></h1>
+<a class="reference internal image-reference" href="_images/line.png"><img alt="_images/line.png" src="_images/line.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/bubble.png"><img alt="_images/bubble.png" src="_images/bubble.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/table.png"><img alt="_images/table.png" src="_images/table.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/pie.png"><img alt="_images/pie.png" src="_images/pie.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/bar.png"><img alt="_images/bar.png" src="_images/bar.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/world_map.png"><img alt="_images/world_map.png" src="_images/world_map.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/sankey.png"><img alt="_images/sankey.png" src="_images/sankey.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/word_cloud.png"><img alt="_images/word_cloud.png" src="_images/word_cloud.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/filter_box.png"><img alt="_images/filter_box.png" src="_images/filter_box.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/pivot_table.png"><img alt="_images/pivot_table.png" src="_images/pivot_table.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/directed_force.png"><img alt="_images/directed_force.png" src="_images/directed_force.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/compare.png"><img alt="_images/compare.png" src="_images/compare.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/sunburst.png"><img alt="_images/sunburst.png" src="_images/sunburst.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/area.png"><img alt="_images/area.png" src="_images/area.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/big_number.png"><img alt="_images/big_number.png" src="_images/big_number.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/big_number_total.png"><img alt="_images/big_number_total.png" src="_images/big_number_total.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/bullet.png"><img alt="_images/bullet.png" src="_images/bullet.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/dist_bar.png"><img alt="_images/dist_bar.png" src="_images/dist_bar.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/heatmap.png"><img alt="_images/heatmap.png" src="_images/heatmap.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/markup.png"><img alt="_images/markup.png" src="_images/markup.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/para.png"><img alt="_images/para.png" src="_images/para.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/iframe.png"><img alt="_images/iframe.png" src="_images/iframe.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/box_plot.png"><img alt="_images/box_plot.png" src="_images/box_plot.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/treemap.png"><img alt="_images/treemap.png" src="_images/treemap.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/cal_heatmap.png"><img alt="_images/cal_heatmap.png" src="_images/cal_heatmap.png" style="width: 187.75px; height: 187.75px;" /></a>
+<a class="reference internal image-reference" href="_images/horizon.png"><img alt="_images/horizon.png" src="_images/horizon.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/mapbox.png"><img alt="_images/mapbox.png" src="_images/mapbox.png" style="width: 125.0px; height: 125.0px;" /></a>
+<a class="reference internal image-reference" href="_images/separator.png"><img alt="_images/separator.png" src="_images/separator.png" style="width: 256.0px; height: 256.0px;" /></a>
+<a class="reference internal image-reference" href="_images/histogram.png"><img alt="_images/histogram.png" src="_images/histogram.png" style="width: 256.0px; height: 256.0px;" /></a>
+</div>
+
+
+ </div>
+ </div>
+ <footer>
+
+ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+
+ <a href="druid.html" class="btn btn-neutral float-right" title="Druid" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
+
+
+ <a href="videos.html" class="btn btn-neutral" title="Videos" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+
+ </div>
+
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>
+
+ </p>
+ </div>
+ Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
+
+ </div>
+ </div>
+
+ </section>
+
+ </div>
+
+
+
+
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT:'./',
+ VERSION:'',
+ COLLAPSE_INDEX:false,
+ FILE_SUFFIX:'.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+
+
+
+
+
+ <script type="text/javascript" src="_static/js/theme.js"></script>
+
+
+
+
+ <script type="text/javascript">
+ jQuery(function () {
+ SphinxRtdTheme.StickyNav.enable();
+ });
+ </script>
+
+
+</body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/genindex.html
----------------------------------------------------------------------
diff --git a/genindex.html b/genindex.html
new file mode 100644
index 0000000..36af928
--- /dev/null
+++ b/genindex.html
@@ -0,0 +1,221 @@
+
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <title>Index — Superset's documentation documentation</title>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+
+
+
+
+
+ <link rel="index" title="Index"
+ href="#"/>
+ <link rel="search" title="Search" href="search.html"/>
+ <link rel="top" title="Superset's documentation documentation" href="index.html"/>
+
+
+ <script src="_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+ <div class="wy-grid-for-nav">
+
+
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search">
+
+
+
+ <a href="index.html" class="icon icon-home"> Superset's documentation
+
+
+
+ </a>
+
+
+
+
+
+
+
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+
+
+ </div>
+
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+
+
+
+ <ul>
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation & Configuration</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial for Superset Administrators</a></li>
+<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l1"><a class="reference internal" href="sqllab.html">SQL Lab</a></li>
+<li class="toctree-l1"><a class="reference internal" href="visualization.html">Visualization Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="videos.html">Videos</a></li>
+<li class="toctree-l1"><a class="reference internal" href="gallery.html">Gallery</a></li>
+<li class="toctree-l1"><a class="reference internal" href="druid.html">Druid</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
+</ul>
+
+
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+
+ <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="index.html">Superset's documentation</a>
+ </nav>
+
+
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="index.html">Docs</a> »</li>
+
+ <li>Index</li>
+ <li class="wy-breadcrumbs-aside">
+
+
+
+ </li>
+ </ul>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+
+<h1 id="index">Index</h1>
+
+<div class="genindex-jumpbox">
+ <a href="#P"><strong>P</strong></a>
+ | <a href="#U"><strong>U</strong></a>
+
+</div>
+<h2 id="P">P</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%" valign="top"><dl>
+
+ <dt><a href="sqllab.html#superset.jinja_context.PrestoTemplateProcessor">PrestoTemplateProcessor (class in superset.jinja_context)</a>
+ </dt>
+
+ </dl></td>
+</tr></table>
+
+<h2 id="U">U</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%" valign="top"><dl>
+
+ <dt><a href="sqllab.html#superset.jinja_context.url_param">url_param() (in module superset.jinja_context)</a>
+ </dt>
+
+ </dl></td>
+</tr></table>
+
+
+
+ </div>
+ </div>
+ <footer>
+
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>
+
+ </p>
+ </div>
+ Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
+
+ </div>
+ </div>
+
+ </section>
+
+ </div>
+
+
+
+
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT:'./',
+ VERSION:'',
+ COLLAPSE_INDEX:false,
+ FILE_SUFFIX:'.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+
+
+
+
+
+ <script type="text/javascript" src="_static/js/theme.js"></script>
+
+
+
+
+ <script type="text/javascript">
+ jQuery(function () {
+ SphinxRtdTheme.StickyNav.enable();
+ });
+ </script>
+
+
+</body>
+</html>
\ No newline at end of file
[06/14] incubator-superset-site git commit: Initial commit - Superset
docs as of 0.18.5
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/jquery.js
----------------------------------------------------------------------
diff --git a/_static/jquery.js b/_static/jquery.js
new file mode 100644
index 0000000..ab28a24
--- /dev/null
+++ b/_static/jquery.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,argumen
ts))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a=
=a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d
===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(ar
guments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[
^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,
bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&
(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLower
Case();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassNam
e=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a
,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("
|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]=
==i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=
null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.len
gth)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowe
rCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));retu
rn d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"
===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.n
th=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(
b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}fu
nction wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[
q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort
(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c
){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(
?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=
a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function
D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e
.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=voi
d 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=
f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m
.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.crea
teElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b
in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;
+if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},
data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(
e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Botto
m","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>
",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=
m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||
[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("
."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m.
_data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,hand
lers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.cl
ientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,origin
alEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cance
lBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrig
ger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(th
is,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return
this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]
+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push
(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.rem
oveAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e
,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:
function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:fu
nction(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;
c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEv
al")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.ge
tElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void
0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.ex
tend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=
i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++
)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(
e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}
}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter
"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,init:fun
ction(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")
+},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:fu
nction(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._
data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m
._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.durati
on,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return
d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&
&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length|
|m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.opt
Disabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?
null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){v
ar d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c
=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.styl
e={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b
=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)|
|[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mou
sedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b
){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each
(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)f
or(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"
object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase(
).match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.0
1":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajax
Success":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}re
turn this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.para
m=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.
test(thi
<TRUNCATED>
[05/14] incubator-superset-site git commit: Initial commit - Superset
docs as of 0.18.5
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/js/modernizr.min.js
----------------------------------------------------------------------
diff --git a/_static/js/modernizr.min.js b/_static/js/modernizr.min.js
new file mode 100644
index 0000000..f65d479
--- /dev/null
+++ b/_static/js/modernizr.min.js
@@ -0,0 +1,4 @@
+/* Modernizr 2.6.2 (Custom Build) | MIT & BSD
+ * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
+ */
+;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a){var e=a[d];if(!G(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function K(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:
absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["­",'<style id="s',h,'">',a,
"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.
call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return J("flexWrap")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=funct
ion(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=fun
ction(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return J("
transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayTy
pe("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var L
in s)C(s,L)&&(x=L.toLowerCase(),e[x]=s[L](),v.push((e[x]?"":"no-")+x));return e.input||K(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)C(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},D(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var
d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.create
Element("a");a.innerHTML="<xyz></xyz>",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,e.prefixed=function(a,b,c){return b?J(a,b,c):J(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){functio
n d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.load
er={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,
i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.
addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/js/theme.js
----------------------------------------------------------------------
diff --git a/_static/js/theme.js b/_static/js/theme.js
new file mode 100644
index 0000000..48a9f06
--- /dev/null
+++ b/_static/js/theme.js
@@ -0,0 +1,153 @@
+require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"sphinx-rtd-theme":[function(require,module,exports){
+var jQuery = (typeof(window) != 'undefined') ? window.jQuery : require('jquery');
+
+// Sphinx theme nav state
+function ThemeNav () {
+
+ var nav = {
+ navBar: null,
+ win: null,
+ winScroll: false,
+ winResize: false,
+ linkScroll: false,
+ winPosition: 0,
+ winHeight: null,
+ docHeight: null,
+ isRunning: null
+ };
+
+ nav.enable = function () {
+ var self = this;
+
+ jQuery(function ($) {
+ self.init($);
+
+ self.reset();
+ self.win.on('hashchange', self.reset);
+
+ // Set scroll monitor
+ self.win.on('scroll', function () {
+ if (!self.linkScroll) {
+ self.winScroll = true;
+ }
+ });
+ setInterval(function () { if (self.winScroll) self.onScroll(); }, 25);
+
+ // Set resize monitor
+ self.win.on('resize', function () {
+ self.winResize = true;
+ });
+ setInterval(function () { if (self.winResize) self.onResize(); }, 25);
+ self.onResize();
+ });
+ };
+
+ nav.init = function ($) {
+ var doc = $(document),
+ self = this;
+
+ this.navBar = $('div.wy-side-scroll:first');
+ this.win = $(window);
+
+ // Set up javascript UX bits
+ $(document)
+ // Shift nav in mobile when clicking the menu.
+ .on('click', "[data-toggle='wy-nav-top']", function() {
+ $("[data-toggle='wy-nav-shift']").toggleClass("shift");
+ $("[data-toggle='rst-versions']").toggleClass("shift");
+ })
+
+ // Nav menu link click operations
+ .on('click', ".wy-menu-vertical .current ul li a", function() {
+ var target = $(this);
+ // Close menu when you click a link.
+ $("[data-toggle='wy-nav-shift']").removeClass("shift");
+ $("[data-toggle='rst-versions']").toggleClass("shift");
+ // Handle dynamic display of l3 and l4 nav lists
+ self.toggleCurrent(target);
+ self.hashChange();
+ })
+ .on('click', "[data-toggle='rst-current-version']", function() {
+ $("[data-toggle='rst-versions']").toggleClass("shift-up");
+ })
+
+ // Make tables responsive
+ $("table.docutils:not(.field-list)")
+ .wrap("<div class='wy-table-responsive'></div>");
+
+ // Add expand links to all parents of nested ul
+ $('.wy-menu-vertical ul').not('.simple').siblings('a').each(function () {
+ var link = $(this);
+ expand = $('<span class="toctree-expand"></span>');
+ expand.on('click', function (ev) {
+ self.toggleCurrent(link);
+ ev.stopPropagation();
+ return false;
+ });
+ link.prepend(expand);
+ });
+ };
+
+ nav.reset = function () {
+ // Get anchor from URL and open up nested nav
+ var anchor = encodeURI(window.location.hash);
+ if (anchor) {
+ try {
+ var link = $('.wy-menu-vertical')
+ .find('[href="' + anchor + '"]');
+ $('.wy-menu-vertical li.toctree-l1 li.current')
+ .removeClass('current');
+ link.closest('li.toctree-l2').addClass('current');
+ link.closest('li.toctree-l3').addClass('current');
+ link.closest('li.toctree-l4').addClass('current');
+ }
+ catch (err) {
+ console.log("Error expanding nav for anchor", err);
+ }
+ }
+ };
+
+ nav.onScroll = function () {
+ this.winScroll = false;
+ var newWinPosition = this.win.scrollTop(),
+ winBottom = newWinPosition + this.winHeight,
+ navPosition = this.navBar.scrollTop(),
+ newNavPosition = navPosition + (newWinPosition - this.winPosition);
+ if (newWinPosition < 0 || winBottom > this.docHeight) {
+ return;
+ }
+ this.navBar.scrollTop(newNavPosition);
+ this.winPosition = newWinPosition;
+ };
+
+ nav.onResize = function () {
+ this.winResize = false;
+ this.winHeight = this.win.height();
+ this.docHeight = $(document).height();
+ };
+
+ nav.hashChange = function () {
+ this.linkScroll = true;
+ this.win.one('hashchange', function () {
+ this.linkScroll = false;
+ });
+ };
+
+ nav.toggleCurrent = function (elem) {
+ var parent_li = elem.closest('li');
+ parent_li.siblings('li.current').removeClass('current');
+ parent_li.siblings().find('li.current').removeClass('current');
+ parent_li.find('> ul li.current').removeClass('current');
+ parent_li.toggleClass('current');
+ }
+
+ return nav;
+};
+
+module.exports.ThemeNav = ThemeNav();
+
+if (typeof(window) != 'undefined') {
+ window.SphinxRtdTheme = { StickyNav: module.exports.ThemeNav };
+}
+
+},{"jquery":"jquery"}]},{},["sphinx-rtd-theme"]);
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/minus.png
----------------------------------------------------------------------
diff --git a/_static/minus.png b/_static/minus.png
new file mode 100644
index 0000000..0f22b16
Binary files /dev/null and b/_static/minus.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/plus.png
----------------------------------------------------------------------
diff --git a/_static/plus.png b/_static/plus.png
new file mode 100644
index 0000000..0cfe084
Binary files /dev/null and b/_static/plus.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/pygments.css
----------------------------------------------------------------------
diff --git a/_static/pygments.css b/_static/pygments.css
new file mode 100644
index 0000000..8213e90
--- /dev/null
+++ b/_static/pygments.css
@@ -0,0 +1,65 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #eeffcc; }
+.highlight .c { color: #408090; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #007020; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #007020 } /* Comment.Preproc */
+.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #333333 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #007020 } /* Keyword.Pseudo */
+.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #902000 } /* Keyword.Type */
+.highlight .m { color: #208050 } /* Literal.Number */
+.highlight .s { color: #4070a0 } /* Literal.String */
+.highlight .na { color: #4070a0 } /* Name.Attribute */
+.highlight .nb { color: #007020 } /* Name.Builtin */
+.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.highlight .no { color: #60add5 } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #007020 } /* Name.Exception */
+.highlight .nf { color: #06287e } /* Name.Function */
+.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #bb60d5 } /* Name.Variable */
+.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mb { color: #208050 } /* Literal.Number.Bin */
+.highlight .mf { color: #208050 } /* Literal.Number.Float */
+.highlight .mh { color: #208050 } /* Literal.Number.Hex */
+.highlight .mi { color: #208050 } /* Literal.Number.Integer */
+.highlight .mo { color: #208050 } /* Literal.Number.Oct */
+.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
+.highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
+.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #c65d09 } /* Literal.String.Other */
+.highlight .sr { color: #235388 } /* Literal.String.Regex */
+.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
+.highlight .ss { color: #517918 } /* Literal.String.Symbol */
+.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
+.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
+.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/searchtools.js
----------------------------------------------------------------------
diff --git a/_static/searchtools.js b/_static/searchtools.js
new file mode 100644
index 0000000..a51e0dc
--- /dev/null
+++ b/_static/searchtools.js
@@ -0,0 +1,651 @@
+/*
+ * searchtools.js_t
+ * ~~~~~~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for the full-text search.
+ *
+ * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+
+/* Non-minified version JS is _stemmer.js if file is provided */
+/**
+ * Porter Stemmer
+ */
+var Stemmer = function() {
+
+ var step2list = {
+ ational: 'ate',
+ tional: 'tion',
+ enci: 'ence',
+ anci: 'ance',
+ izer: 'ize',
+ bli: 'ble',
+ alli: 'al',
+ entli: 'ent',
+ eli: 'e',
+ ousli: 'ous',
+ ization: 'ize',
+ ation: 'ate',
+ ator: 'ate',
+ alism: 'al',
+ iveness: 'ive',
+ fulness: 'ful',
+ ousness: 'ous',
+ aliti: 'al',
+ iviti: 'ive',
+ biliti: 'ble',
+ logi: 'log'
+ };
+
+ var step3list = {
+ icate: 'ic',
+ ative: '',
+ alize: 'al',
+ iciti: 'ic',
+ ical: 'ic',
+ ful: '',
+ ness: ''
+ };
+
+ var c = "[^aeiou]"; // consonant
+ var v = "[aeiouy]"; // vowel
+ var C = c + "[^aeiouy]*"; // consonant sequence
+ var V = v + "[aeiou]*"; // vowel sequence
+
+ var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
+ var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
+ var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
+ var s_v = "^(" + C + ")?" + v; // vowel in stem
+
+ this.stemWord = function (w) {
+ var stem;
+ var suffix;
+ var firstch;
+ var origword = w;
+
+ if (w.length < 3)
+ return w;
+
+ var re;
+ var re2;
+ var re3;
+ var re4;
+
+ firstch = w.substr(0,1);
+ if (firstch == "y")
+ w = firstch.toUpperCase() + w.substr(1);
+
+ // Step 1a
+ re = /^(.+?)(ss|i)es$/;
+ re2 = /^(.+?)([^s])s$/;
+
+ if (re.test(w))
+ w = w.replace(re,"$1$2");
+ else if (re2.test(w))
+ w = w.replace(re2,"$1$2");
+
+ // Step 1b
+ re = /^(.+?)eed$/;
+ re2 = /^(.+?)(ed|ing)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ re = new RegExp(mgr0);
+ if (re.test(fp[1])) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ }
+ else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ re2 = new RegExp(s_v);
+ if (re2.test(stem)) {
+ w = stem;
+ re2 = /(at|bl|iz)$/;
+ re3 = new RegExp("([^aeiouylsz])\\1$");
+ re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re2.test(w))
+ w = w + "e";
+ else if (re3.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ else if (re4.test(w))
+ w = w + "e";
+ }
+ }
+
+ // Step 1c
+ re = /^(.+?)y$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(s_v);
+ if (re.test(stem))
+ w = stem + "i";
+ }
+
+ // Step 2
+ re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem))
+ w = stem + step2list[suffix];
+ }
+
+ // Step 3
+ re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem))
+ w = stem + step3list[suffix];
+ }
+
+ // Step 4
+ re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+ re2 = /^(.+?)(s|t)(ion)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ if (re.test(stem))
+ w = stem;
+ }
+ else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1] + fp[2];
+ re2 = new RegExp(mgr1);
+ if (re2.test(stem))
+ w = stem;
+ }
+
+ // Step 5
+ re = /^(.+?)e$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ re2 = new RegExp(meq1);
+ re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
+ w = stem;
+ }
+ re = /ll$/;
+ re2 = new RegExp(mgr1);
+ if (re.test(w) && re2.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+
+ // and turn initial Y back to y
+ if (firstch == "y")
+ w = firstch.toLowerCase() + w.substr(1);
+ return w;
+ }
+}
+
+
+
+/**
+ * Simple result scoring code.
+ */
+var Scorer = {
+ // Implement the following function to further tweak the score for each result
+ // The function takes a result array [filename, title, anchor, descr, score]
+ // and returns the new score.
+ /*
+ score: function(result) {
+ return result[4];
+ },
+ */
+
+ // query matches the full name of an object
+ objNameMatch: 11,
+ // or matches in the last dotted part of the object name
+ objPartialMatch: 6,
+ // Additive scores depending on the priority of the object
+ objPrio: {0: 15, // used to be importantResults
+ 1: 5, // used to be objectResults
+ 2: -5}, // used to be unimportantResults
+ // Used when the priority is not in the mapping.
+ objPrioDefault: 0,
+
+ // query found in title
+ title: 15,
+ // query found in terms
+ term: 5
+};
+
+
+/**
+ * Search Module
+ */
+var Search = {
+
+ _index : null,
+ _queued_query : null,
+ _pulse_status : -1,
+
+ init : function() {
+ var params = $.getQueryParameters();
+ if (params.q) {
+ var query = params.q[0];
+ $('input[name="q"]')[0].value = query;
+ this.performSearch(query);
+ }
+ },
+
+ loadIndex : function(url) {
+ $.ajax({type: "GET", url: url, data: null,
+ dataType: "script", cache: true,
+ complete: function(jqxhr, textstatus) {
+ if (textstatus != "success") {
+ document.getElementById("searchindexloader").src = url;
+ }
+ }});
+ },
+
+ setIndex : function(index) {
+ var q;
+ this._index = index;
+ if ((q = this._queued_query) !== null) {
+ this._queued_query = null;
+ Search.query(q);
+ }
+ },
+
+ hasIndex : function() {
+ return this._index !== null;
+ },
+
+ deferQuery : function(query) {
+ this._queued_query = query;
+ },
+
+ stopPulse : function() {
+ this._pulse_status = 0;
+ },
+
+ startPulse : function() {
+ if (this._pulse_status >= 0)
+ return;
+ function pulse() {
+ var i;
+ Search._pulse_status = (Search._pulse_status + 1) % 4;
+ var dotString = '';
+ for (i = 0; i < Search._pulse_status; i++)
+ dotString += '.';
+ Search.dots.text(dotString);
+ if (Search._pulse_status > -1)
+ window.setTimeout(pulse, 500);
+ }
+ pulse();
+ },
+
+ /**
+ * perform a search for something (or wait until index is loaded)
+ */
+ performSearch : function(query) {
+ // create the required interface elements
+ this.out = $('#search-results');
+ this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
+ this.dots = $('<span></span>').appendTo(this.title);
+ this.status = $('<p style="display: none"></p>').appendTo(this.out);
+ this.output = $('<ul class="search"/>').appendTo(this.out);
+
+ $('#search-progress').text(_('Preparing search...'));
+ this.startPulse();
+
+ // index already loaded, the browser was quick!
+ if (this.hasIndex())
+ this.query(query);
+ else
+ this.deferQuery(query);
+ },
+
+ /**
+ * execute search (requires search index to be loaded)
+ */
+ query : function(query) {
+ var i;
+ var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
+
+ // stem the searchterms and add them to the correct list
+ var stemmer = new Stemmer();
+ var searchterms = [];
+ var excluded = [];
+ var hlterms = [];
+ var tmp = query.split(/\W+/);
+ var objectterms = [];
+ for (i = 0; i < tmp.length; i++) {
+ if (tmp[i] !== "") {
+ objectterms.push(tmp[i].toLowerCase());
+ }
+
+ if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) ||
+ tmp[i] === "") {
+ // skip this "word"
+ continue;
+ }
+ // stem the word
+ var word = stemmer.stemWord(tmp[i].toLowerCase());
+ var toAppend;
+ // select the correct list
+ if (word[0] == '-') {
+ toAppend = excluded;
+ word = word.substr(1);
+ }
+ else {
+ toAppend = searchterms;
+ hlterms.push(tmp[i].toLowerCase());
+ }
+ // only add if not already in the list
+ if (!$u.contains(toAppend, word))
+ toAppend.push(word);
+ }
+ var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
+
+ // console.debug('SEARCH: searching for:');
+ // console.info('required: ', searchterms);
+ // console.info('excluded: ', excluded);
+
+ // prepare search
+ var terms = this._index.terms;
+ var titleterms = this._index.titleterms;
+
+ // array of [filename, title, anchor, descr, score]
+ var results = [];
+ $('#search-progress').empty();
+
+ // lookup as object
+ for (i = 0; i < objectterms.length; i++) {
+ var others = [].concat(objectterms.slice(0, i),
+ objectterms.slice(i+1, objectterms.length));
+ results = results.concat(this.performObjectSearch(objectterms[i], others));
+ }
+
+ // lookup as search terms in fulltext
+ results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
+
+ // let the scorer override scores with a custom scoring function
+ if (Scorer.score) {
+ for (i = 0; i < results.length; i++)
+ results[i][4] = Scorer.score(results[i]);
+ }
+
+ // now sort the results by score (in opposite order of appearance, since the
+ // display function below uses pop() to retrieve items) and then
+ // alphabetically
+ results.sort(function(a, b) {
+ var left = a[4];
+ var right = b[4];
+ if (left > right) {
+ return 1;
+ } else if (left < right) {
+ return -1;
+ } else {
+ // same score: sort alphabetically
+ left = a[1].toLowerCase();
+ right = b[1].toLowerCase();
+ return (left > right) ? -1 : ((left < right) ? 1 : 0);
+ }
+ });
+
+ // for debugging
+ //Search.lastresults = results.slice(); // a copy
+ //console.info('search results:', Search.lastresults);
+
+ // print the results
+ var resultCount = results.length;
+ function displayNextItem() {
+ // results left, load the summary and display it
+ if (results.length) {
+ var item = results.pop();
+ var listItem = $('<li style="display:none"></li>');
+ if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
+ // dirhtml builder
+ var dirname = item[0] + '/';
+ if (dirname.match(/\/index\/$/)) {
+ dirname = dirname.substring(0, dirname.length-6);
+ } else if (dirname == 'index/') {
+ dirname = '';
+ }
+ listItem.append($('<a/>').attr('href',
+ DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
+ highlightstring + item[2]).html(item[1]));
+ } else {
+ // normal html builders
+ listItem.append($('<a/>').attr('href',
+ item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
+ highlightstring + item[2]).html(item[1]));
+ }
+ if (item[3]) {
+ listItem.append($('<span> (' + item[3] + ')</span>'));
+ Search.output.append(listItem);
+ listItem.slideDown(5, function() {
+ displayNextItem();
+ });
+ } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
+ $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[0] + '.txt',
+ dataType: "text",
+ complete: function(jqxhr, textstatus) {
+ var data = jqxhr.responseText;
+ if (data !== '' && data !== undefined) {
+ listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
+ }
+ Search.output.append(listItem);
+ listItem.slideDown(5, function() {
+ displayNextItem();
+ });
+ }});
+ } else {
+ // no source available, just display title
+ Search.output.append(listItem);
+ listItem.slideDown(5, function() {
+ displayNextItem();
+ });
+ }
+ }
+ // search finished, update title and status message
+ else {
+ Search.stopPulse();
+ Search.title.text(_('Search Results'));
+ if (!resultCount)
+ Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
+ else
+ Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
+ Search.status.fadeIn(500);
+ }
+ }
+ displayNextItem();
+ },
+
+ /**
+ * search for object names
+ */
+ performObjectSearch : function(object, otherterms) {
+ var filenames = this._index.filenames;
+ var objects = this._index.objects;
+ var objnames = this._index.objnames;
+ var titles = this._index.titles;
+
+ var i;
+ var results = [];
+
+ for (var prefix in objects) {
+ for (var name in objects[prefix]) {
+ var fullname = (prefix ? prefix + '.' : '') + name;
+ if (fullname.toLowerCase().indexOf(object) > -1) {
+ var score = 0;
+ var parts = fullname.split('.');
+ // check for different match types: exact matches of full name or
+ // "last name" (i.e. last dotted part)
+ if (fullname == object || parts[parts.length - 1] == object) {
+ score += Scorer.objNameMatch;
+ // matches in last name
+ } else if (parts[parts.length - 1].indexOf(object) > -1) {
+ score += Scorer.objPartialMatch;
+ }
+ var match = objects[prefix][name];
+ var objname = objnames[match[1]][2];
+ var title = titles[match[0]];
+ // If more than one term searched for, we require other words to be
+ // found in the name/title/description
+ if (otherterms.length > 0) {
+ var haystack = (prefix + ' ' + name + ' ' +
+ objname + ' ' + title).toLowerCase();
+ var allfound = true;
+ for (i = 0; i < otherterms.length; i++) {
+ if (haystack.indexOf(otherterms[i]) == -1) {
+ allfound = false;
+ break;
+ }
+ }
+ if (!allfound) {
+ continue;
+ }
+ }
+ var descr = objname + _(', in ') + title;
+
+ var anchor = match[3];
+ if (anchor === '')
+ anchor = fullname;
+ else if (anchor == '-')
+ anchor = objnames[match[1]][1] + '-' + fullname;
+ // add custom score for some objects according to scorer
+ if (Scorer.objPrio.hasOwnProperty(match[2])) {
+ score += Scorer.objPrio[match[2]];
+ } else {
+ score += Scorer.objPrioDefault;
+ }
+ results.push([filenames[match[0]], fullname, '#'+anchor, descr, score]);
+ }
+ }
+ }
+
+ return results;
+ },
+
+ /**
+ * search for full-text terms in the index
+ */
+ performTermsSearch : function(searchterms, excluded, terms, titleterms) {
+ var filenames = this._index.filenames;
+ var titles = this._index.titles;
+
+ var i, j, file;
+ var fileMap = {};
+ var scoreMap = {};
+ var results = [];
+
+ // perform the search on the required terms
+ for (i = 0; i < searchterms.length; i++) {
+ var word = searchterms[i];
+ var files = [];
+ var _o = [
+ {files: terms[word], score: Scorer.term},
+ {files: titleterms[word], score: Scorer.title}
+ ];
+
+ // no match but word was a required one
+ if ($u.every(_o, function(o){return o.files === undefined;})) {
+ break;
+ }
+ // found search word in contents
+ $u.each(_o, function(o) {
+ var _files = o.files;
+ if (_files === undefined)
+ return
+
+ if (_files.length === undefined)
+ _files = [_files];
+ files = files.concat(_files);
+
+ // set score for the word in each file to Scorer.term
+ for (j = 0; j < _files.length; j++) {
+ file = _files[j];
+ if (!(file in scoreMap))
+ scoreMap[file] = {}
+ scoreMap[file][word] = o.score;
+ }
+ });
+
+ // create the mapping
+ for (j = 0; j < files.length; j++) {
+ file = files[j];
+ if (file in fileMap)
+ fileMap[file].push(word);
+ else
+ fileMap[file] = [word];
+ }
+ }
+
+ // now check if the files don't contain excluded terms
+ for (file in fileMap) {
+ var valid = true;
+
+ // check if all requirements are matched
+ if (fileMap[file].length != searchterms.length)
+ continue;
+
+ // ensure that none of the excluded terms is in the search result
+ for (i = 0; i < excluded.length; i++) {
+ if (terms[excluded[i]] == file ||
+ titleterms[excluded[i]] == file ||
+ $u.contains(terms[excluded[i]] || [], file) ||
+ $u.contains(titleterms[excluded[i]] || [], file)) {
+ valid = false;
+ break;
+ }
+ }
+
+ // if we have still a valid result we can add it to the result list
+ if (valid) {
+ // select one (max) score for the file.
+ // for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
+ var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
+ results.push([filenames[file], titles[file], '', null, score]);
+ }
+ }
+ return results;
+ },
+
+ /**
+ * helper function to return a node containing the
+ * search summary for a given text. keywords is a list
+ * of stemmed words, hlwords is the list of normal, unstemmed
+ * words. the first one is used to find the occurrence, the
+ * latter for highlighting it.
+ */
+ makeSearchSummary : function(text, keywords, hlwords) {
+ var textLower = text.toLowerCase();
+ var start = 0;
+ $.each(keywords, function() {
+ var i = textLower.indexOf(this.toLowerCase());
+ if (i > -1)
+ start = i;
+ });
+ start = Math.max(start - 120, 0);
+ var excerpt = ((start > 0) ? '...' : '') +
+ $.trim(text.substr(start, 240)) +
+ ((start + 240 - text.length) ? '...' : '');
+ var rv = $('<div class="context"></div>').text(excerpt);
+ $.each(hlwords, function() {
+ rv = rv.highlightText(this, 'highlighted');
+ });
+ return rv;
+ }
+};
+
+$(document).ready(function() {
+ Search.init();
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/underscore-1.3.1.js
----------------------------------------------------------------------
diff --git a/_static/underscore-1.3.1.js b/_static/underscore-1.3.1.js
new file mode 100644
index 0000000..208d4cd
--- /dev/null
+++ b/_static/underscore-1.3.1.js
@@ -0,0 +1,999 @@
+// Underscore.js 1.3.1
+// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
+// Underscore is freely distributable under the MIT license.
+// Portions of Underscore are inspired or borrowed from Prototype,
+// Oliver Steele's Functional, and John Resig's Micro-Templating.
+// For all details and documentation:
+// http://documentcloud.github.com/underscore
+
+(function() {
+
+ // Baseline setup
+ // --------------
+
+ // Establish the root object, `window` in the browser, or `global` on the server.
+ var root = this;
+
+ // Save the previous value of the `_` variable.
+ var previousUnderscore = root._;
+
+ // Establish the object that gets returned to break out of a loop iteration.
+ var breaker = {};
+
+ // Save bytes in the minified (but not gzipped) version:
+ var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
+
+ // Create quick reference variables for speed access to core prototypes.
+ var slice = ArrayProto.slice,
+ unshift = ArrayProto.unshift,
+ toString = ObjProto.toString,
+ hasOwnProperty = ObjProto.hasOwnProperty;
+
+ // All **ECMAScript 5** native function implementations that we hope to use
+ // are declared here.
+ var
+ nativeForEach = ArrayProto.forEach,
+ nativeMap = ArrayProto.map,
+ nativeReduce = ArrayProto.reduce,
+ nativeReduceRight = ArrayProto.reduceRight,
+ nativeFilter = ArrayProto.filter,
+ nativeEvery = ArrayProto.every,
+ nativeSome = ArrayProto.some,
+ nativeIndexOf = ArrayProto.indexOf,
+ nativeLastIndexOf = ArrayProto.lastIndexOf,
+ nativeIsArray = Array.isArray,
+ nativeKeys = Object.keys,
+ nativeBind = FuncProto.bind;
+
+ // Create a safe reference to the Underscore object for use below.
+ var _ = function(obj) { return new wrapper(obj); };
+
+ // Export the Underscore object for **Node.js**, with
+ // backwards-compatibility for the old `require()` API. If we're in
+ // the browser, add `_` as a global object via a string identifier,
+ // for Closure Compiler "advanced" mode.
+ if (typeof exports !== 'undefined') {
+ if (typeof module !== 'undefined' && module.exports) {
+ exports = module.exports = _;
+ }
+ exports._ = _;
+ } else {
+ root['_'] = _;
+ }
+
+ // Current version.
+ _.VERSION = '1.3.1';
+
+ // Collection Functions
+ // --------------------
+
+ // The cornerstone, an `each` implementation, aka `forEach`.
+ // Handles objects with the built-in `forEach`, arrays, and raw objects.
+ // Delegates to **ECMAScript 5**'s native `forEach` if available.
+ var each = _.each = _.forEach = function(obj, iterator, context) {
+ if (obj == null) return;
+ if (nativeForEach && obj.forEach === nativeForEach) {
+ obj.forEach(iterator, context);
+ } else if (obj.length === +obj.length) {
+ for (var i = 0, l = obj.length; i < l; i++) {
+ if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return;
+ }
+ } else {
+ for (var key in obj) {
+ if (_.has(obj, key)) {
+ if (iterator.call(context, obj[key], key, obj) === breaker) return;
+ }
+ }
+ }
+ };
+
+ // Return the results of applying the iterator to each element.
+ // Delegates to **ECMAScript 5**'s native `map` if available.
+ _.map = _.collect = function(obj, iterator, context) {
+ var results = [];
+ if (obj == null) return results;
+ if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
+ each(obj, function(value, index, list) {
+ results[results.length] = iterator.call(context, value, index, list);
+ });
+ if (obj.length === +obj.length) results.length = obj.length;
+ return results;
+ };
+
+ // **Reduce** builds up a single result from a list of values, aka `inject`,
+ // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
+ _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
+ var initial = arguments.length > 2;
+ if (obj == null) obj = [];
+ if (nativeReduce && obj.reduce === nativeReduce) {
+ if (context) iterator = _.bind(iterator, context);
+ return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
+ }
+ each(obj, function(value, index, list) {
+ if (!initial) {
+ memo = value;
+ initial = true;
+ } else {
+ memo = iterator.call(context, memo, value, index, list);
+ }
+ });
+ if (!initial) throw new TypeError('Reduce of empty array with no initial value');
+ return memo;
+ };
+
+ // The right-associative version of reduce, also known as `foldr`.
+ // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
+ _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
+ var initial = arguments.length > 2;
+ if (obj == null) obj = [];
+ if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
+ if (context) iterator = _.bind(iterator, context);
+ return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
+ }
+ var reversed = _.toArray(obj).reverse();
+ if (context && !initial) iterator = _.bind(iterator, context);
+ return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator);
+ };
+
+ // Return the first value which passes a truth test. Aliased as `detect`.
+ _.find = _.detect = function(obj, iterator, context) {
+ var result;
+ any(obj, function(value, index, list) {
+ if (iterator.call(context, value, index, list)) {
+ result = value;
+ return true;
+ }
+ });
+ return result;
+ };
+
+ // Return all the elements that pass a truth test.
+ // Delegates to **ECMAScript 5**'s native `filter` if available.
+ // Aliased as `select`.
+ _.filter = _.select = function(obj, iterator, context) {
+ var results = [];
+ if (obj == null) return results;
+ if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
+ each(obj, function(value, index, list) {
+ if (iterator.call(context, value, index, list)) results[results.length] = value;
+ });
+ return results;
+ };
+
+ // Return all the elements for which a truth test fails.
+ _.reject = function(obj, iterator, context) {
+ var results = [];
+ if (obj == null) return results;
+ each(obj, function(value, index, list) {
+ if (!iterator.call(context, value, index, list)) results[results.length] = value;
+ });
+ return results;
+ };
+
+ // Determine whether all of the elements match a truth test.
+ // Delegates to **ECMAScript 5**'s native `every` if available.
+ // Aliased as `all`.
+ _.every = _.all = function(obj, iterator, context) {
+ var result = true;
+ if (obj == null) return result;
+ if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);
+ each(obj, function(value, index, list) {
+ if (!(result = result && iterator.call(context, value, index, list))) return breaker;
+ });
+ return result;
+ };
+
+ // Determine if at least one element in the object matches a truth test.
+ // Delegates to **ECMAScript 5**'s native `some` if available.
+ // Aliased as `any`.
+ var any = _.some = _.any = function(obj, iterator, context) {
+ iterator || (iterator = _.identity);
+ var result = false;
+ if (obj == null) return result;
+ if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
+ each(obj, function(value, index, list) {
+ if (result || (result = iterator.call(context, value, index, list))) return breaker;
+ });
+ return !!result;
+ };
+
+ // Determine if a given value is included in the array or object using `===`.
+ // Aliased as `contains`.
+ _.include = _.contains = function(obj, target) {
+ var found = false;
+ if (obj == null) return found;
+ if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
+ found = any(obj, function(value) {
+ return value === target;
+ });
+ return found;
+ };
+
+ // Invoke a method (with arguments) on every item in a collection.
+ _.invoke = function(obj, method) {
+ var args = slice.call(arguments, 2);
+ return _.map(obj, function(value) {
+ return (_.isFunction(method) ? method || value : value[method]).apply(value, args);
+ });
+ };
+
+ // Convenience version of a common use case of `map`: fetching a property.
+ _.pluck = function(obj, key) {
+ return _.map(obj, function(value){ return value[key]; });
+ };
+
+ // Return the maximum element or (element-based computation).
+ _.max = function(obj, iterator, context) {
+ if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj);
+ if (!iterator && _.isEmpty(obj)) return -Infinity;
+ var result = {computed : -Infinity};
+ each(obj, function(value, index, list) {
+ var computed = iterator ? iterator.call(context, value, index, list) : value;
+ computed >= result.computed && (result = {value : value, computed : computed});
+ });
+ return result.value;
+ };
+
+ // Return the minimum element (or element-based computation).
+ _.min = function(obj, iterator, context) {
+ if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj);
+ if (!iterator && _.isEmpty(obj)) return Infinity;
+ var result = {computed : Infinity};
+ each(obj, function(value, index, list) {
+ var computed = iterator ? iterator.call(context, value, index, list) : value;
+ computed < result.computed && (result = {value : value, computed : computed});
+ });
+ return result.value;
+ };
+
+ // Shuffle an array.
+ _.shuffle = function(obj) {
+ var shuffled = [], rand;
+ each(obj, function(value, index, list) {
+ if (index == 0) {
+ shuffled[0] = value;
+ } else {
+ rand = Math.floor(Math.random() * (index + 1));
+ shuffled[index] = shuffled[rand];
+ shuffled[rand] = value;
+ }
+ });
+ return shuffled;
+ };
+
+ // Sort the object's values by a criterion produced by an iterator.
+ _.sortBy = function(obj, iterator, context) {
+ return _.pluck(_.map(obj, function(value, index, list) {
+ return {
+ value : value,
+ criteria : iterator.call(context, value, index, list)
+ };
+ }).sort(function(left, right) {
+ var a = left.criteria, b = right.criteria;
+ return a < b ? -1 : a > b ? 1 : 0;
+ }), 'value');
+ };
+
+ // Groups the object's values by a criterion. Pass either a string attribute
+ // to group by, or a function that returns the criterion.
+ _.groupBy = function(obj, val) {
+ var result = {};
+ var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };
+ each(obj, function(value, index) {
+ var key = iterator(value, index);
+ (result[key] || (result[key] = [])).push(value);
+ });
+ return result;
+ };
+
+ // Use a comparator function to figure out at what index an object should
+ // be inserted so as to maintain order. Uses binary search.
+ _.sortedIndex = function(array, obj, iterator) {
+ iterator || (iterator = _.identity);
+ var low = 0, high = array.length;
+ while (low < high) {
+ var mid = (low + high) >> 1;
+ iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid;
+ }
+ return low;
+ };
+
+ // Safely convert anything iterable into a real, live array.
+ _.toArray = function(iterable) {
+ if (!iterable) return [];
+ if (iterable.toArray) return iterable.toArray();
+ if (_.isArray(iterable)) return slice.call(iterable);
+ if (_.isArguments(iterable)) return slice.call(iterable);
+ return _.values(iterable);
+ };
+
+ // Return the number of elements in an object.
+ _.size = function(obj) {
+ return _.toArray(obj).length;
+ };
+
+ // Array Functions
+ // ---------------
+
+ // Get the first element of an array. Passing **n** will return the first N
+ // values in the array. Aliased as `head`. The **guard** check allows it to work
+ // with `_.map`.
+ _.first = _.head = function(array, n, guard) {
+ return (n != null) && !guard ? slice.call(array, 0, n) : array[0];
+ };
+
+ // Returns everything but the last entry of the array. Especcialy useful on
+ // the arguments object. Passing **n** will return all the values in
+ // the array, excluding the last N. The **guard** check allows it to work with
+ // `_.map`.
+ _.initial = function(array, n, guard) {
+ return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
+ };
+
+ // Get the last element of an array. Passing **n** will return the last N
+ // values in the array. The **guard** check allows it to work with `_.map`.
+ _.last = function(array, n, guard) {
+ if ((n != null) && !guard) {
+ return slice.call(array, Math.max(array.length - n, 0));
+ } else {
+ return array[array.length - 1];
+ }
+ };
+
+ // Returns everything but the first entry of the array. Aliased as `tail`.
+ // Especially useful on the arguments object. Passing an **index** will return
+ // the rest of the values in the array from that index onward. The **guard**
+ // check allows it to work with `_.map`.
+ _.rest = _.tail = function(array, index, guard) {
+ return slice.call(array, (index == null) || guard ? 1 : index);
+ };
+
+ // Trim out all falsy values from an array.
+ _.compact = function(array) {
+ return _.filter(array, function(value){ return !!value; });
+ };
+
+ // Return a completely flattened version of an array.
+ _.flatten = function(array, shallow) {
+ return _.reduce(array, function(memo, value) {
+ if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value));
+ memo[memo.length] = value;
+ return memo;
+ }, []);
+ };
+
+ // Return a version of the array that does not contain the specified value(s).
+ _.without = function(array) {
+ return _.difference(array, slice.call(arguments, 1));
+ };
+
+ // Produce a duplicate-free version of the array. If the array has already
+ // been sorted, you have the option of using a faster algorithm.
+ // Aliased as `unique`.
+ _.uniq = _.unique = function(array, isSorted, iterator) {
+ var initial = iterator ? _.map(array, iterator) : array;
+ var result = [];
+ _.reduce(initial, function(memo, el, i) {
+ if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) {
+ memo[memo.length] = el;
+ result[result.length] = array[i];
+ }
+ return memo;
+ }, []);
+ return result;
+ };
+
+ // Produce an array that contains the union: each distinct element from all of
+ // the passed-in arrays.
+ _.union = function() {
+ return _.uniq(_.flatten(arguments, true));
+ };
+
+ // Produce an array that contains every item shared between all the
+ // passed-in arrays. (Aliased as "intersect" for back-compat.)
+ _.intersection = _.intersect = function(array) {
+ var rest = slice.call(arguments, 1);
+ return _.filter(_.uniq(array), function(item) {
+ return _.every(rest, function(other) {
+ return _.indexOf(other, item) >= 0;
+ });
+ });
+ };
+
+ // Take the difference between one array and a number of other arrays.
+ // Only the elements present in just the first array will remain.
+ _.difference = function(array) {
+ var rest = _.flatten(slice.call(arguments, 1));
+ return _.filter(array, function(value){ return !_.include(rest, value); });
+ };
+
+ // Zip together multiple lists into a single array -- elements that share
+ // an index go together.
+ _.zip = function() {
+ var args = slice.call(arguments);
+ var length = _.max(_.pluck(args, 'length'));
+ var results = new Array(length);
+ for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i);
+ return results;
+ };
+
+ // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
+ // we need this function. Return the position of the first occurrence of an
+ // item in an array, or -1 if the item is not included in the array.
+ // Delegates to **ECMAScript 5**'s native `indexOf` if available.
+ // If the array is large and already in sort order, pass `true`
+ // for **isSorted** to use binary search.
+ _.indexOf = function(array, item, isSorted) {
+ if (array == null) return -1;
+ var i, l;
+ if (isSorted) {
+ i = _.sortedIndex(array, item);
+ return array[i] === item ? i : -1;
+ }
+ if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item);
+ for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i;
+ return -1;
+ };
+
+ // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
+ _.lastIndexOf = function(array, item) {
+ if (array == null) return -1;
+ if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item);
+ var i = array.length;
+ while (i--) if (i in array && array[i] === item) return i;
+ return -1;
+ };
+
+ // Generate an integer Array containing an arithmetic progression. A port of
+ // the native Python `range()` function. See
+ // [the Python documentation](http://docs.python.org/library/functions.html#range).
+ _.range = function(start, stop, step) {
+ if (arguments.length <= 1) {
+ stop = start || 0;
+ start = 0;
+ }
+ step = arguments[2] || 1;
+
+ var len = Math.max(Math.ceil((stop - start) / step), 0);
+ var idx = 0;
+ var range = new Array(len);
+
+ while(idx < len) {
+ range[idx++] = start;
+ start += step;
+ }
+
+ return range;
+ };
+
+ // Function (ahem) Functions
+ // ------------------
+
+ // Reusable constructor function for prototype setting.
+ var ctor = function(){};
+
+ // Create a function bound to a given object (assigning `this`, and arguments,
+ // optionally). Binding with arguments is also known as `curry`.
+ // Delegates to **ECMAScript 5**'s native `Function.bind` if available.
+ // We check for `func.bind` first, to fail fast when `func` is undefined.
+ _.bind = function bind(func, context) {
+ var bound, args;
+ if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
+ if (!_.isFunction(func)) throw new TypeError;
+ args = slice.call(arguments, 2);
+ return bound = function() {
+ if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
+ ctor.prototype = func.prototype;
+ var self = new ctor;
+ var result = func.apply(self, args.concat(slice.call(arguments)));
+ if (Object(result) === result) return result;
+ return self;
+ };
+ };
+
+ // Bind all of an object's methods to that object. Useful for ensuring that
+ // all callbacks defined on an object belong to it.
+ _.bindAll = function(obj) {
+ var funcs = slice.call(arguments, 1);
+ if (funcs.length == 0) funcs = _.functions(obj);
+ each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
+ return obj;
+ };
+
+ // Memoize an expensive function by storing its results.
+ _.memoize = function(func, hasher) {
+ var memo = {};
+ hasher || (hasher = _.identity);
+ return function() {
+ var key = hasher.apply(this, arguments);
+ return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
+ };
+ };
+
+ // Delays a function for the given number of milliseconds, and then calls
+ // it with the arguments supplied.
+ _.delay = function(func, wait) {
+ var args = slice.call(arguments, 2);
+ return setTimeout(function(){ return func.apply(func, args); }, wait);
+ };
+
+ // Defers a function, scheduling it to run after the current call stack has
+ // cleared.
+ _.defer = function(func) {
+ return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
+ };
+
+ // Returns a function, that, when invoked, will only be triggered at most once
+ // during a given window of time.
+ _.throttle = function(func, wait) {
+ var context, args, timeout, throttling, more;
+ var whenDone = _.debounce(function(){ more = throttling = false; }, wait);
+ return function() {
+ context = this; args = arguments;
+ var later = function() {
+ timeout = null;
+ if (more) func.apply(context, args);
+ whenDone();
+ };
+ if (!timeout) timeout = setTimeout(later, wait);
+ if (throttling) {
+ more = true;
+ } else {
+ func.apply(context, args);
+ }
+ whenDone();
+ throttling = true;
+ };
+ };
+
+ // Returns a function, that, as long as it continues to be invoked, will not
+ // be triggered. The function will be called after it stops being called for
+ // N milliseconds.
+ _.debounce = function(func, wait) {
+ var timeout;
+ return function() {
+ var context = this, args = arguments;
+ var later = function() {
+ timeout = null;
+ func.apply(context, args);
+ };
+ clearTimeout(timeout);
+ timeout = setTimeout(later, wait);
+ };
+ };
+
+ // Returns a function that will be executed at most one time, no matter how
+ // often you call it. Useful for lazy initialization.
+ _.once = function(func) {
+ var ran = false, memo;
+ return function() {
+ if (ran) return memo;
+ ran = true;
+ return memo = func.apply(this, arguments);
+ };
+ };
+
+ // Returns the first function passed as an argument to the second,
+ // allowing you to adjust arguments, run code before and after, and
+ // conditionally execute the original function.
+ _.wrap = function(func, wrapper) {
+ return function() {
+ var args = [func].concat(slice.call(arguments, 0));
+ return wrapper.apply(this, args);
+ };
+ };
+
+ // Returns a function that is the composition of a list of functions, each
+ // consuming the return value of the function that follows.
+ _.compose = function() {
+ var funcs = arguments;
+ return function() {
+ var args = arguments;
+ for (var i = funcs.length - 1; i >= 0; i--) {
+ args = [funcs[i].apply(this, args)];
+ }
+ return args[0];
+ };
+ };
+
+ // Returns a function that will only be executed after being called N times.
+ _.after = function(times, func) {
+ if (times <= 0) return func();
+ return function() {
+ if (--times < 1) { return func.apply(this, arguments); }
+ };
+ };
+
+ // Object Functions
+ // ----------------
+
+ // Retrieve the names of an object's properties.
+ // Delegates to **ECMAScript 5**'s native `Object.keys`
+ _.keys = nativeKeys || function(obj) {
+ if (obj !== Object(obj)) throw new TypeError('Invalid object');
+ var keys = [];
+ for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key;
+ return keys;
+ };
+
+ // Retrieve the values of an object's properties.
+ _.values = function(obj) {
+ return _.map(obj, _.identity);
+ };
+
+ // Return a sorted list of the function names available on the object.
+ // Aliased as `methods`
+ _.functions = _.methods = function(obj) {
+ var names = [];
+ for (var key in obj) {
+ if (_.isFunction(obj[key])) names.push(key);
+ }
+ return names.sort();
+ };
+
+ // Extend a given object with all the properties in passed-in object(s).
+ _.extend = function(obj) {
+ each(slice.call(arguments, 1), function(source) {
+ for (var prop in source) {
+ obj[prop] = source[prop];
+ }
+ });
+ return obj;
+ };
+
+ // Fill in a given object with default properties.
+ _.defaults = function(obj) {
+ each(slice.call(arguments, 1), function(source) {
+ for (var prop in source) {
+ if (obj[prop] == null) obj[prop] = source[prop];
+ }
+ });
+ return obj;
+ };
+
+ // Create a (shallow-cloned) duplicate of an object.
+ _.clone = function(obj) {
+ if (!_.isObject(obj)) return obj;
+ return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
+ };
+
+ // Invokes interceptor with the obj, and then returns obj.
+ // The primary purpose of this method is to "tap into" a method chain, in
+ // order to perform operations on intermediate results within the chain.
+ _.tap = function(obj, interceptor) {
+ interceptor(obj);
+ return obj;
+ };
+
+ // Internal recursive comparison function.
+ function eq(a, b, stack) {
+ // Identical objects are equal. `0 === -0`, but they aren't identical.
+ // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal.
+ if (a === b) return a !== 0 || 1 / a == 1 / b;
+ // A strict comparison is necessary because `null == undefined`.
+ if (a == null || b == null) return a === b;
+ // Unwrap any wrapped objects.
+ if (a._chain) a = a._wrapped;
+ if (b._chain) b = b._wrapped;
+ // Invoke a custom `isEqual` method if one is provided.
+ if (a.isEqual && _.isFunction(a.isEqual)) return a.isEqual(b);
+ if (b.isEqual && _.isFunction(b.isEqual)) return b.isEqual(a);
+ // Compare `[[Class]]` names.
+ var className = toString.call(a);
+ if (className != toString.call(b)) return false;
+ switch (className) {
+ // Strings, numbers, dates, and booleans are compared by value.
+ case '[object String]':
+ // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
+ // equivalent to `new String("5")`.
+ return a == String(b);
+ case '[object Number]':
+ // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
+ // other numeric values.
+ return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
+ case '[object Date]':
+ case '[object Boolean]':
+ // Coerce dates and booleans to numeric primitive values. Dates are compared by their
+ // millisecond representations. Note that invalid dates with millisecond representations
+ // of `NaN` are not equivalent.
+ return +a == +b;
+ // RegExps are compared by their source patterns and flags.
+ case '[object RegExp]':
+ return a.source == b.source &&
+ a.global == b.global &&
+ a.multiline == b.multiline &&
+ a.ignoreCase == b.ignoreCase;
+ }
+ if (typeof a != 'object' || typeof b != 'object') return false;
+ // Assume equality for cyclic structures. The algorithm for detecting cyclic
+ // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
+ var length = stack.length;
+ while (length--) {
+ // Linear search. Performance is inversely proportional to the number of
+ // unique nested structures.
+ if (stack[length] == a) return true;
+ }
+ // Add the first object to the stack of traversed objects.
+ stack.push(a);
+ var size = 0, result = true;
+ // Recursively compare objects and arrays.
+ if (className == '[object Array]') {
+ // Compare array lengths to determine if a deep comparison is necessary.
+ size = a.length;
+ result = size == b.length;
+ if (result) {
+ // Deep compare the contents, ignoring non-numeric properties.
+ while (size--) {
+ // Ensure commutative equality for sparse arrays.
+ if (!(result = size in a == size in b && eq(a[size], b[size], stack))) break;
+ }
+ }
+ } else {
+ // Objects with different constructors are not equivalent.
+ if ('constructor' in a != 'constructor' in b || a.constructor != b.constructor) return false;
+ // Deep compare objects.
+ for (var key in a) {
+ if (_.has(a, key)) {
+ // Count the expected number of properties.
+ size++;
+ // Deep compare each member.
+ if (!(result = _.has(b, key) && eq(a[key], b[key], stack))) break;
+ }
+ }
+ // Ensure that both objects contain the same number of properties.
+ if (result) {
+ for (key in b) {
+ if (_.has(b, key) && !(size--)) break;
+ }
+ result = !size;
+ }
+ }
+ // Remove the first object from the stack of traversed objects.
+ stack.pop();
+ return result;
+ }
+
+ // Perform a deep comparison to check if two objects are equal.
+ _.isEqual = function(a, b) {
+ return eq(a, b, []);
+ };
+
+ // Is a given array, string, or object empty?
+ // An "empty" object has no enumerable own-properties.
+ _.isEmpty = function(obj) {
+ if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
+ for (var key in obj) if (_.has(obj, key)) return false;
+ return true;
+ };
+
+ // Is a given value a DOM element?
+ _.isElement = function(obj) {
+ return !!(obj && obj.nodeType == 1);
+ };
+
+ // Is a given value an array?
+ // Delegates to ECMA5's native Array.isArray
+ _.isArray = nativeIsArray || function(obj) {
+ return toString.call(obj) == '[object Array]';
+ };
+
+ // Is a given variable an object?
+ _.isObject = function(obj) {
+ return obj === Object(obj);
+ };
+
+ // Is a given variable an arguments object?
+ _.isArguments = function(obj) {
+ return toString.call(obj) == '[object Arguments]';
+ };
+ if (!_.isArguments(arguments)) {
+ _.isArguments = function(obj) {
+ return !!(obj && _.has(obj, 'callee'));
+ };
+ }
+
+ // Is a given value a function?
+ _.isFunction = function(obj) {
+ return toString.call(obj) == '[object Function]';
+ };
+
+ // Is a given value a string?
+ _.isString = function(obj) {
+ return toString.call(obj) == '[object String]';
+ };
+
+ // Is a given value a number?
+ _.isNumber = function(obj) {
+ return toString.call(obj) == '[object Number]';
+ };
+
+ // Is the given value `NaN`?
+ _.isNaN = function(obj) {
+ // `NaN` is the only value for which `===` is not reflexive.
+ return obj !== obj;
+ };
+
+ // Is a given value a boolean?
+ _.isBoolean = function(obj) {
+ return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
+ };
+
+ // Is a given value a date?
+ _.isDate = function(obj) {
+ return toString.call(obj) == '[object Date]';
+ };
+
+ // Is the given value a regular expression?
+ _.isRegExp = function(obj) {
+ return toString.call(obj) == '[object RegExp]';
+ };
+
+ // Is a given value equal to null?
+ _.isNull = function(obj) {
+ return obj === null;
+ };
+
+ // Is a given variable undefined?
+ _.isUndefined = function(obj) {
+ return obj === void 0;
+ };
+
+ // Has own property?
+ _.has = function(obj, key) {
+ return hasOwnProperty.call(obj, key);
+ };
+
+ // Utility Functions
+ // -----------------
+
+ // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
+ // previous owner. Returns a reference to the Underscore object.
+ _.noConflict = function() {
+ root._ = previousUnderscore;
+ return this;
+ };
+
+ // Keep the identity function around for default iterators.
+ _.identity = function(value) {
+ return value;
+ };
+
+ // Run a function **n** times.
+ _.times = function (n, iterator, context) {
+ for (var i = 0; i < n; i++) iterator.call(context, i);
+ };
+
+ // Escape a string for HTML interpolation.
+ _.escape = function(string) {
+ return (''+string).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, ''').replace(/\//g,'/');
+ };
+
+ // Add your own custom functions to the Underscore object, ensuring that
+ // they're correctly added to the OOP wrapper as well.
+ _.mixin = function(obj) {
+ each(_.functions(obj), function(name){
+ addToWrapper(name, _[name] = obj[name]);
+ });
+ };
+
+ // Generate a unique integer id (unique within the entire client session).
+ // Useful for temporary DOM ids.
+ var idCounter = 0;
+ _.uniqueId = function(prefix) {
+ var id = idCounter++;
+ return prefix ? prefix + id : id;
+ };
+
+ // By default, Underscore uses ERB-style template delimiters, change the
+ // following template settings to use alternative delimiters.
+ _.templateSettings = {
+ evaluate : /<%([\s\S]+?)%>/g,
+ interpolate : /<%=([\s\S]+?)%>/g,
+ escape : /<%-([\s\S]+?)%>/g
+ };
+
+ // When customizing `templateSettings`, if you don't want to define an
+ // interpolation, evaluation or escaping regex, we need one that is
+ // guaranteed not to match.
+ var noMatch = /.^/;
+
+ // Within an interpolation, evaluation, or escaping, remove HTML escaping
+ // that had been previously added.
+ var unescape = function(code) {
+ return code.replace(/\\\\/g, '\\').replace(/\\'/g, "'");
+ };
+
+ // JavaScript micro-templating, similar to John Resig's implementation.
+ // Underscore templating handles arbitrary delimiters, preserves whitespace,
+ // and correctly escapes quotes within interpolated code.
+ _.template = function(str, data) {
+ var c = _.templateSettings;
+ var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' +
+ 'with(obj||{}){__p.push(\'' +
+ str.replace(/\\/g, '\\\\')
+ .replace(/'/g, "\\'")
+ .replace(c.escape || noMatch, function(match, code) {
+ return "',_.escape(" + unescape(code) + "),'";
+ })
+ .replace(c.interpolate || noMatch, function(match, code) {
+ return "'," + unescape(code) + ",'";
+ })
+ .replace(c.evaluate || noMatch, function(match, code) {
+ return "');" + unescape(code).replace(/[\r\n\t]/g, ' ') + ";__p.push('";
+ })
+ .replace(/\r/g, '\\r')
+ .replace(/\n/g, '\\n')
+ .replace(/\t/g, '\\t')
+ + "');}return __p.join('');";
+ var func = new Function('obj', '_', tmpl);
+ if (data) return func(data, _);
+ return function(data) {
+ return func.call(this, data, _);
+ };
+ };
+
+ // Add a "chain" function, which will delegate to the wrapper.
+ _.chain = function(obj) {
+ return _(obj).chain();
+ };
+
+ // The OOP Wrapper
+ // ---------------
+
+ // If Underscore is called as a function, it returns a wrapped object that
+ // can be used OO-style. This wrapper holds altered versions of all the
+ // underscore functions. Wrapped objects may be chained.
+ var wrapper = function(obj) { this._wrapped = obj; };
+
+ // Expose `wrapper.prototype` as `_.prototype`
+ _.prototype = wrapper.prototype;
+
+ // Helper function to continue chaining intermediate results.
+ var result = function(obj, chain) {
+ return chain ? _(obj).chain() : obj;
+ };
+
+ // A method to easily add functions to the OOP wrapper.
+ var addToWrapper = function(name, func) {
+ wrapper.prototype[name] = function() {
+ var args = slice.call(arguments);
+ unshift.call(args, this._wrapped);
+ return result(func.apply(_, args), this._chain);
+ };
+ };
+
+ // Add all of the Underscore functions to the wrapper object.
+ _.mixin(_);
+
+ // Add all mutator Array functions to the wrapper.
+ each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
+ var method = ArrayProto[name];
+ wrapper.prototype[name] = function() {
+ var wrapped = this._wrapped;
+ method.apply(wrapped, arguments);
+ var length = wrapped.length;
+ if ((name == 'shift' || name == 'splice') && length === 0) delete wrapped[0];
+ return result(wrapped, this._chain);
+ };
+ });
+
+ // Add all accessor Array functions to the wrapper.
+ each(['concat', 'join', 'slice'], function(name) {
+ var method = ArrayProto[name];
+ wrapper.prototype[name] = function() {
+ return result(method.apply(this._wrapped, arguments), this._chain);
+ };
+ });
+
+ // Start chaining a wrapped Underscore object.
+ wrapper.prototype.chain = function() {
+ this._chain = true;
+ return this;
+ };
+
+ // Extracts the result from a wrapped and chained object.
+ wrapper.prototype.value = function() {
+ return this._wrapped;
+ };
+
+}).call(this);
[13/14] incubator-superset-site git commit: Initial commit - Superset
docs as of 0.18.5
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_sources/installation.txt
----------------------------------------------------------------------
diff --git a/_sources/installation.txt b/_sources/installation.txt
new file mode 100644
index 0000000..10aa7d7
--- /dev/null
+++ b/_sources/installation.txt
@@ -0,0 +1,475 @@
+Installation & Configuration
+============================
+
+Getting Started
+---------------
+
+Superset is tested against Python ``2.7`` and Python ``3.4``.
+Airbnb currently uses 2.7.* in production. We do not plan on supporting
+Python ``2.6``.
+
+
+OS dependencies
+---------------
+
+Superset stores database connection information in its metadata database.
+For that purpose, we use the ``cryptography`` Python library to encrypt
+connection passwords. Unfortunately this library has OS level dependencies.
+
+You may want to attempt the next step
+("Superset installation and initialization") and come back to this step if
+you encounter an error.
+
+Here's how to install them:
+
+For **Debian** and **Ubuntu**, the following command will ensure that
+the required dependencies are installed: ::
+
+ sudo apt-get install build-essential libssl-dev libffi-dev python-dev python-pip libsasl2-dev libldap2-dev
+
+For **Fedora** and **RHEL-derivatives**, the following command will ensure
+that the required dependencies are installed: ::
+
+ sudo yum upgrade python-setuptools
+ sudo yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel libsasl2-devel openldap-devel
+
+**OSX**, system python is not recommended. brew's python also ships with pip ::
+
+ brew install pkg-config libffi openssl python
+ env LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(brew --prefix openssl)/include" pip install cryptography==1.7.2
+
+**Windows** isn't officially supported at this point, but if you want to
+attempt it, download `get-pip.py <https://bootstrap.pypa.io/get-pip.py>`_, and run ``python get-pip.py`` which may need admin access. Then run the following: ::
+
+ C:\> pip install cryptography
+
+ # You may also have to create C:\Temp
+ C:\> md C:\Temp
+
+Python virtualenv
+-----------------
+It is recommended to install Superset inside a virtualenv. Python 3 already ships virtualenv, for
+Python 2 you need to install it. If it's packaged for your operating systems install it from there
+otherwise you can install from pip: ::
+
+ pip install virtualenv
+
+You can create and activate a virtualenv by: ::
+
+ # virtualenv is shipped in Python 3 as pyvenv
+ virtualenv venv
+ . ./venv/bin/activate
+
+On windows the syntax for activating it is a bit different: ::
+
+ venv\Scripts\activate
+
+Once you activated your virtualenv everything you are doing is confined inside the virtualenv.
+To exit a virtualenv just type ``deactivate``.
+
+Python's setup tools and pip
+----------------------------
+Put all the chances on your side by getting the very latest ``pip``
+and ``setuptools`` libraries.::
+
+ pip install --upgrade setuptools pip
+
+Superset installation and initialization
+----------------------------------------
+Follow these few simple steps to install Superset.::
+
+ # Install superset
+ pip install superset
+
+ # Create an admin user (you will be prompted to set username, first and last name before setting a password)
+ fabmanager create-admin --app superset
+
+ # Initialize the database
+ superset db upgrade
+
+ # Load some data to play with
+ superset load_examples
+
+ # Create default roles and permissions
+ superset init
+
+ # Start the web server on port 8088, use -p to bind to another port
+ superset runserver
+
+ # To start a development web server, use the -d switch
+ # superset runserver -d
+
+
+After installation, you should be able to point your browser to the right
+hostname:port `http://localhost:8088 <http://localhost:8088>`_, login using
+the credential you entered while creating the admin account, and navigate to
+`Menu -> Admin -> Refresh Metadata`. This action should bring in all of
+your datasources for Superset to be aware of, and they should show up in
+`Menu -> Datasources`, from where you can start playing with your data!
+
+Please note that *gunicorn*, Superset default application server, does not
+work on Windows so you need to use the development web server.
+The development web server though is not intended to be used on production systems
+so better use a supported platform that can run *gunicorn*.
+
+Configuration behind a load balancer
+------------------------------------
+
+If you are running superset behind a load balancer or reverse proxy (e.g. NGINX
+or ELB on AWS), you may need to utilise a healthcheck endpoint so that your
+load balancer knows if your superset instance is running. This is provided
+at ``/health`` which will return a 200 response containing "OK" if the
+webserver is running.
+
+If the load balancer is inserting X-Forwarded-For/X-Forwarded-Proto headers, you
+should set `ENABLE_PROXY_FIX = True` in the superset config file to extract and use
+the headers.
+
+
+Configuration
+-------------
+
+To configure your application, you need to create a file (module)
+``superset_config.py`` and make sure it is in your PYTHONPATH. Here are some
+of the parameters you can copy / paste in that configuration module: ::
+
+ #---------------------------------------------------------
+ # Superset specific config
+ #---------------------------------------------------------
+ ROW_LIMIT = 5000
+ SUPERSET_WORKERS = 4
+
+ SUPERSET_WEBSERVER_PORT = 8088
+ #---------------------------------------------------------
+
+ #---------------------------------------------------------
+ # Flask App Builder configuration
+ #---------------------------------------------------------
+ # Your App secret key
+ SECRET_KEY = '\2\1thisismyscretkey\1\2\e\y\y\h'
+
+ # The SQLAlchemy connection string to your database backend
+ # This connection defines the path to the database that stores your
+ # superset metadata (slices, connections, tables, dashboards, ...).
+ # Note that the connection information to connect to the datasources
+ # you want to explore are managed directly in the web UI
+ SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'
+
+ # Flask-WTF flag for CSRF
+ WTF_CSRF_ENABLED = True
+
+ # Set this API key to enable Mapbox visualizations
+ MAPBOX_API_KEY = ''
+
+This file also allows you to define configuration parameters used by
+Flask App Builder, the web framework used by Superset. Please consult
+the `Flask App Builder Documentation
+<http://flask-appbuilder.readthedocs.org/en/latest/config.html>`_
+for more information on how to configure Superset.
+
+Please make sure to change:
+
+* *SQLALCHEMY_DATABASE_URI*, by default it is stored at *~/.superset/superset.db*
+* *SECRET_KEY*, to a long random string
+
+Database dependencies
+---------------------
+
+Superset does not ship bundled with connectivity to databases, except
+for Sqlite, which is part of the Python standard library.
+You'll need to install the required packages for the database you
+want to use as your metadata database as well as the packages needed to
+connect to the databases you want to access through Superset.
+
+Here's a list of some of the recommended packages.
+
++---------------+-------------------------------------+-------------------------------------------------+
+| database | pypi package | SQLAlchemy URI prefix |
++===============+=====================================+=================================================+
+| MySQL | ``pip install mysqlclient`` | ``mysql://`` |
++---------------+-------------------------------------+-------------------------------------------------+
+| Postgres | ``pip install psycopg2`` | ``postgresql+psycopg2://`` |
++---------------+-------------------------------------+-------------------------------------------------+
+| Presto | ``pip install pyhive`` | ``presto://`` |
++---------------+-------------------------------------+-------------------------------------------------+
+| Oracle | ``pip install cx_Oracle`` | ``oracle://`` |
++---------------+-------------------------------------+-------------------------------------------------+
+| sqlite | | ``sqlite://`` |
++---------------+-------------------------------------+-------------------------------------------------+
+| Redshift | ``pip install sqlalchemy-redshift`` | ``postgresql+psycopg2://`` |
++---------------+-------------------------------------+-------------------------------------------------+
+| MSSQL | ``pip install pymssql`` | ``mssql://`` |
++---------------+-------------------------------------+-------------------------------------------------+
+| Impala | ``pip install impyla`` | ``impala://`` |
++---------------+-------------------------------------+-------------------------------------------------+
+| SparkSQL | ``pip install pyhive`` | ``jdbc+hive://`` |
++---------------+-------------------------------------+-------------------------------------------------+
+| Greenplum | ``pip install psycopg2`` | ``postgresql+psycopg2://`` |
++---------------+-------------------------------------+-------------------------------------------------+
+| Athena | ``pip install "PyAthenaJDBC>1.0.9"``| ``awsathena+jdbc://`` |
++---------------+-------------------------------------+-------------------------------------------------+
+| Vertica | ``pip install | ``vertica+vertica_python://`` |
+| | sqlalchemy-vertica-python`` | |
++---------------+-------------------------------------+-------------------------------------------------+
+| ClickHouse | ``pip install | ``clickhouse://`` |
+| | sqlalchemy-clickhouse`` | |
++---------------+-------------------------------------+-------------------------------------------------+
+
+Note that many other database are supported, the main criteria being the
+existence of a functional SqlAlchemy dialect and Python driver. Googling
+the keyword ``sqlalchemy`` in addition of a keyword that describes the
+database you want to connect to should get you to the right place.
+
+(AWS) Athena
+------------
+
+This currently relies on an unreleased future version of `PyAthenaJDBC <https://github.com/laughingman7743/PyAthenaJDBC>`_. If you're adventurous or simply impatient, you can install directly from git: ::
+
+ pip install git+https://github.com/laughingman7743/PyAthenaJDBC@support_sqlalchemy
+
+The connection string for Athena looks like this ::
+
+ awsathena+jdbc://{aws_access_key_id}:{aws_secret_access_key}@athena.{region_name}.amazonaws.com/{schema_name}?s3_staging_dir={s3_staging_dir}&...
+
+Where you need to escape/encode at least the s3_staging_dir, i.e., ::
+
+ s3://... -> s3%3A//...
+
+
+Caching
+-------
+
+Superset uses `Flask-Cache <https://pythonhosted.org/Flask-Cache/>`_ for
+caching purpose. Configuring your caching backend is as easy as providing
+a ``CACHE_CONFIG``, constant in your ``superset_config.py`` that
+complies with the Flask-Cache specifications.
+
+Flask-Cache supports multiple caching backends (Redis, Memcached,
+SimpleCache (in-memory), or the local filesystem). If you are going to use
+Memcached please use the `pylibmc` client library as `python-memcached` does
+not handle storing binary data correctly. If you use Redis, please install
+the `redis <https://pypi.python.org/pypi/redis>`_ Python package: ::
+
+ pip install redis
+
+For setting your timeouts, this is done in the Superset metadata and goes
+up the "timeout searchpath", from your slice configuration, to your
+data source's configuration, to your database's and ultimately falls back
+into your global default defined in ``CACHE_CONFIG``.
+
+
+Deeper SQLAlchemy integration
+-----------------------------
+
+It is possible to tweak the database connection information using the
+parameters exposed by SQLAlchemy. In the ``Database`` edit view, you will
+find an ``extra`` field as a ``JSON`` blob.
+
+.. image:: _static/img/tutorial/add_db.png
+ :scale: 30 %
+
+This JSON string contains extra configuration elements. The ``engine_params``
+object gets unpacked into the
+`sqlalchemy.create_engine <http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine>`_ call,
+while the ``metadata_params`` get unpacked into the
+`sqlalchemy.MetaData <http://docs.sqlalchemy.org/en/rel_1_0/core/metadata.html#sqlalchemy.schema.MetaData>`_ call. Refer to the SQLAlchemy docs for more information.
+
+
+Schemas (Postgres & Redshift)
+-----------------------------
+
+Postgres and Redshift, as well as other database,
+use the concept of **schema** as a logical entity
+on top of the **database**. For Superset to connect to a specific schema,
+there's a **schema** parameter you can set in the table form.
+
+
+SSL Access to databases
+-----------------------
+This example worked with a MySQL database that requires SSL. The configuration
+may differ with other backends. This is what was put in the ``extra``
+parameter ::
+
+ {
+ "metadata_params": {},
+ "engine_params": {
+ "connect_args":{
+ "sslmode":"require",
+ "sslrootcert": "/path/to/my/pem"
+ }
+ }
+ }
+
+
+Druid
+-----
+
+* From the UI, enter the information about your clusters in the
+ ``Admin->Clusters`` menu by hitting the + sign.
+
+* Once the Druid cluster connection information is entered, hit the
+ ``Admin->Refresh Metadata`` menu item to populate
+
+* Navigate to your datasources
+
+Note that you can run the ``superset refresh_druid`` command to refresh the
+metadata from your Druid cluster(s)
+
+
+CORS
+-----
+
+The extra CORS Dependency must be installed:
+
+ superset[cors]
+
+
+The following keys in `superset_config.py` can be specified to configure CORS:
+
+
+* ``ENABLE_CORS``: Must be set to True in order to enable CORS
+* ``CORS_OPTIONS``: options passed to Flask-CORS (`documentation <http://flask-cors.corydolphin.com/en/latest/api.html#extension>`)
+
+
+MIDDLEWARE
+----------
+
+Superset allows you to add your own middleware. To add your own middleware, update the ``ADDITIONAL_MIDDLEWARE`` key in
+your `superset_config.py`. ``ADDITIONAL_MIDDLEWARE`` should be a list of your additional middleware classes.
+
+For example, to use AUTH_REMOTE_USER from behind a proxy server like nginx, you have to add a simple middleware class to
+add the value of ``HTTP_X_PROXY_REMOTE_USER`` (or any other custom header from the proxy) to Gunicorn's ``REMOTE_USER``
+environment variable: ::
+
+ class RemoteUserMiddleware(object):
+ def __init__(self, app):
+ self.app = app
+ def __call__(self, environ, start_response):
+ user = environ.pop('HTTP_X_PROXY_REMOTE_USER', None)
+ environ['REMOTE_USER'] = user
+ return self.app(environ, start_response)
+
+ ADDITIONAL_MIDDLEWARE = [RemoteUserMiddleware, ]
+
+*Adapted from http://flask.pocoo.org/snippets/69/*
+
+
+Upgrading
+---------
+
+Upgrading should be as straightforward as running::
+
+ pip install superset --upgrade
+ superset db upgrade
+ superset init
+
+SQL Lab
+-------
+SQL Lab is a powerful SQL IDE that works with all SQLAlchemy compatible
+databases. By default, queries are executed in the scope of a web
+request so they
+may eventually timeout as queries exceed the maximum duration of a web
+request in your environment, whether it'd be a reverse proxy or the Superset
+server itself.
+
+On large analytic databases, it's common to run queries that
+execute for minutes or hours.
+To enable support for long running queries that
+execute beyond the typical web request's timeout (30-60 seconds), it is
+necessary to configure an asynchronous backend for Superset which consist of:
+
+* one or many Superset worker (which is implemented as a Celery worker), and
+ can be started with the ``superset worker`` command, run
+ ``superset worker --help`` to view the related options
+* a celery broker (message queue) for which we recommend using Redis
+ or RabbitMQ
+* a results backend that defines where the worker will persist the query
+ results
+
+Configuring Celery requires defining a ``CELERY_CONFIG`` in your
+``superset_config.py``. Both the worker and web server processes should
+have the same configuration.
+
+.. code-block:: python
+
+ class CeleryConfig(object):
+ BROKER_URL = 'redis://localhost:6379/0'
+ CELERY_IMPORTS = ('superset.sql_lab', )
+ CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
+ CELERY_ANNOTATIONS = {'tasks.add': {'rate_limit': '10/s'}}
+
+ CELERY_CONFIG = CeleryConfig
+
+To setup a result backend, you need to pass an instance of a derivative
+of ``werkzeug.contrib.cache.BaseCache`` to the ``RESULTS_BACKEND``
+configuration key in your ``superset_config.py``. It's possible to use
+Memcached, Redis, S3 (https://pypi.python.org/pypi/s3werkzeugcache),
+memory or the file system (in a single server-type setup or for testing),
+or to write your own caching interface. Your ``superset_config.py`` may
+look something like:
+
+.. code-block:: python
+
+ # On S3
+ from s3cache.s3cache import S3Cache
+ S3_CACHE_BUCKET = 'foobar-superset'
+ S3_CACHE_KEY_PREFIX = 'sql_lab_result'
+ RESULTS_BACKEND = S3Cache(S3_CACHE_BUCKET, S3_CACHE_KEY_PREFIX)
+
+ # On Redis
+ from werkzeug.contrib.cache import RedisCache
+ RESULTS_BACKEND = RedisCache(
+ host='localhost', port=6379, key_prefix='superset_results')
+
+
+Also note that SQL Lab supports Jinja templating in queries, and that it's
+possible to overload
+the default Jinja context in your environment by defining the
+``JINJA_CONTEXT_ADDONS`` in your superset configuration. Objects referenced
+in this dictionary are made available for users to use in their SQL.
+
+.. code-block:: python
+
+ JINJA_CONTEXT_ADDONS = {
+ 'my_crazy_macro': lambda x: x*2,
+ }
+
+
+Making your own build
+---------------------
+
+For more advanced users, you may want to build Superset from sources. That
+would be the case if you fork the project to add features specific to
+your environment.::
+
+ # assuming $SUPERSET_HOME as the root of the repo
+ cd $SUPERSET_HOME/superset/assets
+ npm install
+ npm run build
+ cd $SUPERSET_HOME
+ python setup.py install
+
+
+Blueprints
+----------
+
+`Blueprints are Flask's reusable apps <http://flask.pocoo.org/docs/0.12/blueprints/>`_.
+Superset allows you to specify an array of Blueprints
+in your ``superset_config`` module. Here's
+an example on how this can work with a simple Blueprint. By doing
+so, you can expect Superset to serve a page that says "OK"
+at the ``/simple_page`` url. This can allow you to run other things such
+as custom data visualization applications alongside Superset, on the
+same server.
+
+..code ::
+
+ from flask import Blueprint
+ simple_page = Blueprint('simple_page', __name__,
+ template_folder='templates')
+ @simple_page.route('/', defaults={'page': 'index'})
+ @simple_page.route('/<page>')
+ def show(page):
+ return "Ok"
+
+ BLUEPRINTS = [simple_page]
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_sources/security.txt
----------------------------------------------------------------------
diff --git a/_sources/security.txt b/_sources/security.txt
new file mode 100644
index 0000000..b5d5b63
--- /dev/null
+++ b/_sources/security.txt
@@ -0,0 +1,161 @@
+Security
+========
+Security in Superset is handled by Flask AppBuilder (FAB). FAB is a
+"Simple and rapid application development framework, built on top of Flask.".
+FAB provides authentication, user management, permissions and roles.
+
+
+Provided Roles
+--------------
+Superset ships with a set of roles that are handled by Superset itself.
+You can assume that these roles will stay up-to-date as Superset evolves.
+Even though it's possible for ``Admin`` usrs to do so, it is not recommended
+that you alter these roles in any way by removing
+or adding permissions to them as these roles will be re-synchronized to
+their original values as you run your next ``superset init`` command.
+
+Since it's not recommended to alter the roles described here, it's right
+to assume that your security strategy should be to compose user access based
+on these base roles and roles that you create. For instance you could
+create a role ``Financial Analyst`` that would be made of set of permissions
+to a set of data sources (tables) and/or databases. Users would then be
+granted ``Gamma``, ``Financial Analyst``, and perhaps ``sql_lab``.
+
+Admin
+"""""
+Admins have all possible rights, including granting or revoking rights from
+other users and altering other people's slices and dashboards.
+
+Alpha
+"""""
+Alpha have access to all data sources, but they cannot grant or revoke access
+from other users. They are also limited to altering the objects that they
+own. Alpha users can add and alter data sources.
+
+Gamma
+"""""
+Gamma have limited access. They can only consume data coming from data sources
+they have been giving access to through another complementary role.
+They only have access to view the slices and
+dashboards made from data sources that they have access to. Currently Gamma
+users are not able to alter or add data sources. We assume that they are
+mostly content consumers, though they can create slices and dashboards.
+
+Also note that when Gamma users look at the dashboards and slices list view,
+they will only see the objects that they have access to.
+
+sql_lab
+"""""""
+The ``sql_lab`` role grants access to SQL Lab. Note that while ``Admin``
+users have access to all databases by default, both ``Alpha`` and ``Gamma``
+users need to be given access on a per database basis.
+
+Public
+""""""
+It's possible to allow logged out users to access some Superset features.
+
+By setting ``PUBLIC_ROLE_LIKE_GAMMA = True`` in your ``superset_config.py``,
+you grant public role the same set of permissions as for the GAMMA role.
+This is useful if one wants to enable anonymous users to view
+dashboards. Explicit grant on specific datasets is still required, meaning
+that you need to edit the ``Public`` role and add the Public data sources
+to the role manually.
+
+
+Managing Gamma per data source access
+-------------------------------------
+Here's how to provide users access to only specific datasets. First make
+sure the users with limited access have [only] the Gamma role assigned to
+them. Second, create a new role (``Menu -> Security -> List Roles``) and
+click the ``+`` sign.
+
+.. image:: _static/img/create_role.png
+ :scale: 50 %
+
+This new window allows you to give this new role a name, attribute it to users
+and select the tables in the ``Permissions`` dropdown. To select the data
+sources you want to associate with this role, simply click in the dropdown
+and use the typeahead to search for your table names.
+
+You can then confirm with your Gamma users that they see the objects
+(dashboards and slices) associated with the tables related to their roles.
+
+
+Customizing
+-----------
+
+The permissions exposed by FAB are very granular and allow for a great level
+of customization. FAB creates many permissions automagically for each model
+that is create (can_add, can_delete, can_show, can_edit, ...) as well as for
+each view. On top of that, Superset can expose more granular permissions like
+``all_datasource_access``.
+
+We do not recommend altering the 3 base roles as there
+are a set of assumptions that Superset build upon. It is possible though for
+you to create your own roles, and union them to existing ones.
+
+Permissions
+"""""""""""
+
+Roles are composed of a set of permissions, and Superset has many categories
+of permissions. Here are the different categories of permissions:
+
+- **Model & action**: models are entities like ``Dashboard``,
+ ``Slice``, or ``User``. Each model has a fixed set of permissions, like
+ ``can_edit``, ``can_show``, ``can_delete``, ``can_list``, ``can_add``, and
+ so on. By adding ``can_delete on Dashboard`` to a role, and granting that
+ role to a user, this user will be able to delete dashboards.
+- **Views**: views are individual web pages, like the ``explore`` view or the
+ ``SQL Lab`` view. When granted to a user, he/she will see that view in
+ the its menu items, and be able to load that page.
+- **Data source**: For each data source, a permission is created. If the user
+ does not have the ``all_datasource_access`` permission granted, the user
+ will only be able to see Slices or explore the data sources that are granted
+ to them
+- **Database**: Granting access to a database allows for the user to access
+ all data sources within that database, and will enable the user to query
+ that database in SQL Lab, provided that the SQL Lab specific permission
+ have been granted to the user
+
+
+Restricting access to a subset of data sources
+""""""""""""""""""""""""""""""""""""""""""""""
+
+The best way to go is probably to give user ``Gamma`` plus one or many other
+roles that would add access to specific data sources. We recommend that you
+create individual roles for each access profile. Say people in your finance
+department might have access to a set of databases and data sources, and
+these permissions can be consolidated in a single role. Users with this
+profile then need to be attributed ``Gamma`` as a foundation to the models
+and views they can access, and that ``Finance`` role that is a collection
+of permissions to data objects.
+
+One user can have many roles, so a finance executive could be granted
+``Gamma``, ``Finance``, and perhaps another ``Executive`` role that gather
+a set of data sources that power dashboards only made available to executives.
+When looking at its dashboard list, this user will only see the
+list of dashboards it has access to, based on the roles and
+permissions that were attributed.
+
+
+Restricting the access to some metrics
+""""""""""""""""""""""""""""""""""""""
+
+Sometimes some metrics are relatively sensitive (e.g. revenue).
+We may want to restrict those metrics to only a few roles.
+For example, assumed there is a metric ``[cluster1].[datasource1].[revenue]``
+and only Admin users are allowed to see it. Here’s how to restrict the access.
+
+1. Edit the datasource (``Menu -> Source -> Druid datasources -> edit the
+ record "datasource1"``) and go to the tab ``List Druid Metric``. Check
+ the checkbox ``Is Restricted`` in the row of the metric ``revenue``.
+
+2. Edit the role (``Menu -> Security -> List Roles -> edit the record
+ “Admin”``), in the permissions field, type-and-search the permission
+ ``metric access on [cluster1].[datasource1].[revenue] (id: 1)``, then
+ click the Save button on the bottom of the page.
+
+Any users without the permission will see the error message
+*Access to the metrics denied: revenue (Status: 500)* in the slices.
+It also happens when the user wants to access a post-aggregation metric that
+is dependent on revenue.
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_sources/sqllab.txt
----------------------------------------------------------------------
diff --git a/_sources/sqllab.txt b/_sources/sqllab.txt
new file mode 100644
index 0000000..a1da6c7
--- /dev/null
+++ b/_sources/sqllab.txt
@@ -0,0 +1,64 @@
+SQL Lab
+=======
+
+SQL Lab is a modern, feature-rich SQL IDE written in
+`React <https://facebook.github.io/react/>`_.
+
+
+Feature Overview
+----------------
+- Connects to just about any database backend
+- A multi-tab environment to work on multiple queries at a time
+- A smooth flow to visualize your query results using Superset's rich
+ visualization capabilities
+- Browse database metadata: tables, columns, indexes, partitions
+- Support for long-running queries
+
+ - uses the `Celery distributed queue <http://www.python.org/>`_
+ to dispatch query handling to workers
+ - supports defining a "results backend" to persist query results
+
+- A search engine to find queries executed in the past
+- Supports templating using the
+ `Jinja templating language <http://jinja.pocoo.org/docs/dev/>`_
+ which allows for using macros in your SQL code
+
+Extra features
+--------------
+- Hit ``alt + enter`` as a keyboard shortcut to run your query
+
+Templating with Jinja
+---------------------
+
+.. code-block:: sql
+
+ SELECT *
+ FROM some_table
+ WHERE partition_key = '{{ presto.latest_partition('some_table') }}'
+
+Templating unleashes the power and capabilities of a
+programming language within your SQL code.
+
+Templates can also be used to write generic queries that are
+parameterized so they can be re-used easily.
+
+
+Available macros
+''''''''''''''''
+
+We expose certain modules from Python's standard library in
+Superset's Jinja context:
+- ``time``: ``time``
+- ``datetime``: ``datetime.datetime``
+- ``uuid``: ``uuid``
+- ``random``: ``random``
+- ``relativedelta``: ``dateutil.relativedelta.relativedelta``
+- more to come!
+
+`Jinja's builtin filters <http://jinja.pocoo.org/docs/dev/templates/>`_ can be also be applied where needed.
+
+
+.. autoclass:: superset.jinja_context.PrestoTemplateProcessor
+ :members:
+
+.. autofunction:: superset.jinja_context.url_param
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_sources/tutorial.txt
----------------------------------------------------------------------
diff --git a/_sources/tutorial.txt b/_sources/tutorial.txt
new file mode 100644
index 0000000..695057c
--- /dev/null
+++ b/_sources/tutorial.txt
@@ -0,0 +1,308 @@
+Tutorial for Superset Administrators
+====================================
+
+This tutorial targets a Superset administrator: someone configuring Superset
+for an organization on behalf of users. We'll show you how to connect Superset
+to a new database and configure a table in that database for analysis. You'll
+also explore the data you've exposed and add a visualization to a dashboard
+so that you get a feel for the end-to-end user experience.
+
+Connecting to a new database
+----------------------------
+
+We assume you already have a database configured and can connect to it from the
+instance on which you’re running Superset. If you’re just testing Superset and
+want to explore sample data, you can load some
+`sample PostgreSQL datasets <https://wiki.postgresql.org/wiki/Sample_Databases>`_
+into a fresh DB, or configure the
+`example weather data <https://github.com/dylburger/noaa-ghcn-weather-data>`_
+we use here.
+
+Under the **Sources** menu, select the *Databases* option:
+
+.. image:: _static/img/tutorial/tutorial_01_sources_database.png
+ :scale: 70%
+
+On the resulting page, click on the green plus sign, near the top left:
+
+.. image:: _static/img/tutorial/tutorial_02_add_database.png
+ :scale: 70%
+
+You can configure a number of advanced options on this page, but for
+this walkthrough, you’ll only need to do **two things**:
+
+1. Name your database connection:
+
+.. image:: _static/img/tutorial/tutorial_03_database_name.png
+ :scale: 70%
+
+2. Provide the SQLAlchemy Connection URI and test the connection:
+
+.. image:: _static/img/tutorial/tutorial_04_sqlalchemy_connection_string.png
+ :scale: 70%
+
+This example shows the connection string for our test weather database.
+As noted in the text below the URI, you should refer to the SQLAlchemy
+documentation on
+`creating new connection URIs <http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html#database-urls>`_
+for your target database.
+
+Click the **Test Connection** button to confirm things work end to end.
+Once Superset can successfully connect and authenticate, you should see
+a popup like this:
+
+.. image:: _static/img/tutorial/tutorial_05_connection_popup.png
+ :scale: 50%
+
+Moreover, you should also see the list of tables Superset can read from
+the schema you’re connected to, at the bottom of the page:
+
+.. image:: _static/img/tutorial/tutorial_06_list_of_tables.png
+ :scale: 70%
+
+If the connection looks good, save the configuration by clicking the **Save**
+button at the bottom of the page:
+
+.. image:: _static/img/tutorial/tutorial_07_save_button.png
+ :scale: 70%
+
+Adding a new table
+------------------
+
+Now that you’ve configured a database, you’ll need to add specific tables
+to Superset that you’d like to query.
+
+Under the **Sources** menu, select the *Tables* option:
+
+.. image:: _static/img/tutorial/tutorial_08_sources_tables.png
+ :scale: 70%
+
+On the resulting page, click on the green plus sign, near the top left:
+
+.. image:: _static/img/tutorial/tutorial_09_add_new_table.png
+ :scale: 70%
+
+You only need a few pieces of information to add a new table to Superset:
+
+* The name of the table
+
+.. image:: _static/img/tutorial/tutorial_10_table_name.png
+ :scale: 70%
+
+* The target database from the **Database** drop-down menu (i.e. the one
+ you just added above)
+
+.. image:: _static/img/tutorial/tutorial_11_choose_db.png
+ :scale: 70%
+
+* Optionally, the database schema. If the table exists in the “default” schema
+ (e.g. the *public* schema in PostgreSQL or Redshift), you can leave the schema
+ field blank.
+
+Click on the **Save** button to save the configuration:
+
+.. image:: _static/img/tutorial/tutorial_07_save_button.png
+ :scale: 70%
+
+When redirected back to the list of tables, you should see a message indicating
+that your table was created:
+
+.. image:: _static/img/tutorial/tutorial_12_table_creation_success_msg.png
+ :scale: 70%
+
+This message also directs you to edit the table configuration. We’ll edit a limited
+portion of the configuration now - just to get you started - and leave the rest for
+a more advanced tutorial.
+
+Click on the edit button next to the table you’ve created:
+
+.. image:: _static/img/tutorial/tutorial_13_edit_table_config.png
+ :scale: 70%
+
+On the resulting page, click on the **List Table Column** tab. Here, you’ll define the
+way you can use specific columns of your table when exploring your data. We’ll run
+through these options to describe their purpose:
+
+* If you want users to group metrics by a specific field, mark it as **Groupable**.
+* If you need to filter on a specific field, mark it as **Filterable**.
+* Is this field something you’d like to get the distinct count of? Check the **Count
+ Distinct** box.
+* Is this a metric you want to sum, or get basic summary statistics for? The **Sum**,
+ **Min**, and **Max** columns will help.
+* The **is temporal** field should be checked for any date or time fields. We’ll cover
+ how this manifests itself in analyses in a moment.
+
+Here’s how we’ve configured fields for the weather data. Even for measures like the
+weather measurements (precipitation, snowfall, etc.), it’s ideal to group and filter
+by these values:
+
+.. image:: _static/img/tutorial/tutorial_14_field_config.png
+
+As with the configurations above, click the **Save** button to save these settings.
+
+Exploring your data
+-------------------
+
+To start exploring your data, simply click on the table name you just created in
+the list of available tables:
+
+.. image:: _static/img/tutorial/tutorial_15_click_table_name.png
+
+By default, you’ll be presented with a Table View:
+
+.. image:: _static/img/tutorial/tutorial_16_datasource_chart_type.png
+
+Let’s walk through a basic query to get the count of all records in our table.
+First, we’ll need to change the **Since** filter to capture the range of our data.
+You can use simple phrases to apply these filters, like "3 years ago":
+
+.. image:: _static/img/tutorial/tutorial_17_choose_time_range.png
+
+The upper limit for time, the **Until** filter, defaults to "now", which may or may
+not be what you want.
+
+Look for the Metrics section under the **GROUP BY** header, and start typing "Count"
+- you’ll see a list of metrics matching what you type:
+
+.. image:: _static/img/tutorial/tutorial_18_choose_metric.png
+
+Select the *COUNT(\*)* metric, then click the green **Query** button near the top
+of the explore:
+
+.. image:: _static/img/tutorial/tutorial_19_click_query.png
+
+You’ll see your results in the table:
+
+.. image:: _static/img/tutorial/tutorial_20_count_star_result.png
+
+Let’s group this by the *weather_description* field to get the count of records by
+the type of weather recorded by adding it to the *Group by* section:
+
+.. image:: _static/img/tutorial/tutorial_21_group_by.png
+
+and run the query:
+
+.. image:: _static/img/tutorial/tutorial_22_group_by_result.png
+
+Let’s find a more useful data point: the top 10 times and places that recorded the
+highest temperature in 2015.
+
+We replace *weather_description* with *latitude*, *longitude* and *measurement_date* in the
+*Group by* section:
+
+.. image:: _static/img/tutorial/tutorial_23_group_by_more_dimensions.png
+
+And replace *COUNT(\*)* with *max__measurement_flag*:
+
+.. image:: _static/img/tutorial/tutorial_24_max_metric.png
+
+The *max__measurement_flag* metric was created when we checked the box under **Max** and
+next to the *measurement_flag* field, indicating that this field was numeric and that
+we wanted to find its maximum value when grouped by specific fields.
+
+In our case, *measurement_flag* is the value of the measurement taken, which clearly
+depends on the type of measurement (the researchers recorded different values for
+precipitation and temperature). Therefore, we must filter our query only on records
+where the *weather_description* is equal to "Maximum temperature", which we do in
+the **Filters** section at the bottom of the explore:
+
+.. image:: _static/img/tutorial/tutorial_25_max_temp_filter.png
+
+Finally, since we only care about the top 10 measurements, we limit our results to
+10 records using the *Row limit* option under the **Options** header:
+
+.. image:: _static/img/tutorial/tutorial_26_row_limit.png
+
+We click **Query** and get the following results:
+
+.. image:: _static/img/tutorial/tutorial_27_top_10_max_temps.png
+
+In this dataset, the maximum temperature is recorded in tenths of a degree Celsius.
+The top value of 1370, measured in the middle of Nevada, is equal to 137 C, or roughly
+278 degrees F. It’s unlikely this value was correctly recorded. We’ve already been able
+to investigate some outliers with Superset, but this just scratches the surface of what
+we can do.
+
+You may want to do a couple more things with this measure:
+
+* The default formatting shows values like 1.37k, which may be difficult for some
+ users to read. It’s likely you may want to see the full, comma-separated value.
+ You can change the formatting of any measure by editing its config (*Edit Table
+ Config > List Sql Metric > Edit Metric > D3Format*)
+* Moreover, you may want to see the temperature measurements in plain degrees C,
+ not tenths of a degree. Or you may want to convert the temperature to degrees
+ Fahrenheit. You can change the SQL that gets executed agains the database, baking
+ the logic into the measure itself (*Edit Table Config > List Sql Metric > Edit
+ Metric > SQL Expression*)
+
+For now, though, let’s create a better visualization of these data and add it to
+a dashboard.
+
+We change the Chart Type to "Distribution - Bar Chart":
+
+.. image:: _static/img/tutorial/tutorial_28_bar_chart.png
+
+Our filter on Maximum temperature measurements was retained, but the query and
+formatting options are dependent on the chart type, so you’ll have to set the
+values again:
+
+.. image:: _static/img/tutorial/tutorial_29_bar_chart_series_metrics.png
+
+You should note the extensive formatting options for this chart: the ability to
+set axis labels, margins, ticks, etc. To make the data presentable to a broad
+audience, you’ll want to apply many of these to slices that end up in dashboards.
+For now, though, we run our query and get the following chart:
+
+.. image:: _static/img/tutorial/tutorial_30_bar_chart_results.png
+ :scale: 70%
+
+Creating a slice and dashboard
+------------------------------
+
+This view might be interesting to researchers, so let’s save it. In Superset,
+a saved query is called a **Slice**.
+
+To create a slice, click the **Save as** button near the top-left of the
+explore:
+
+.. image:: _static/img/tutorial/tutorial_19_click_query.png
+
+A popup should appear, asking you to name the slice, and optionally add it to a
+dashboard. Since we haven’t yet created any dashboards, we can create one and
+immediately add our slice to it. Let’s do it:
+
+.. image:: _static/img/tutorial/tutorial_31_save_slice_to_dashboard.png
+ :scale: 70%
+
+Click Save, which will direct you back to your original query. We see that
+our slice and dashboard were successfully created:
+
+.. image:: _static/img/tutorial/tutorial_32_save_slice_confirmation.png
+ :scale: 70%
+
+Let’s check out our new dashboard. We click on the **Dashboards** menu:
+
+.. image:: _static/img/tutorial/tutorial_33_dashboard.png
+
+and find the dashboard we just created:
+
+.. image:: _static/img/tutorial/tutorial_34_weather_dashboard.png
+
+Things seemed to have worked - our slice is here!
+
+.. image:: _static/img/tutorial/tutorial_35_slice_on_dashboard.png
+ :scale: 70%
+
+But it’s a bit smaller than we might like. Luckily, you can adjust the size
+of slices in a dashboard by clicking, holding and dragging the bottom-right
+corner to your desired dimensions:
+
+.. image:: _static/img/tutorial/tutorial_36_adjust_dimensions.gif
+ :scale: 120%
+
+After adjusting the size, you’ll be asked to click on the icon near the
+top-right of the dashboard to save the new configuration.
+
+Congrats! You’ve successfully linked, analyzed, and visualized data in Superset.
+There are a wealth of other table configuration and visualization options, so
+please start exploring and creating slices and dashboards of your own.
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_sources/videos.txt
----------------------------------------------------------------------
diff --git a/_sources/videos.txt b/_sources/videos.txt
new file mode 100644
index 0000000..15ef91d
--- /dev/null
+++ b/_sources/videos.txt
@@ -0,0 +1,54 @@
+Videos
+======
+
+Here is a collection of short videos showing different aspect
+of Superset.
+
+Quick Intro
+'''''''''''
+This video demonstrates how Superset works at a high level, it shows how
+to navigate through datasets and dashboards that are already available.
+
+.. youtube:: https://www.youtube.com/watch?v=3Txm_nj_R7M
+
+Dashboard Creation
+''''''''''''''''''
+This video walk you through the creation of a simple dashboard as a
+collection of data slices.
+
+- Coming soon!
+
+Dashboard Filtering
+'''''''''''''''''''
+This video shows how to create dynamic filters on dashboards, how to
+immunize certain widgets from being affected by filters.
+
+- Coming soon!
+
+Customize CSS and dashboard themes
+''''''''''''''''''''''''''''''''''
+A quick walkthrough on how to apply existing CSS templates, alter them and
+create new ones.
+
+- Coming soon!
+
+Slice Annotations
+'''''''''''''''''
+A short video on how to annotate your charts, the markdown language and
+to toggle them on dashboards.
+
+- Coming soon!
+
+Adding a Table
+''''''''''''''
+This videos shows you how to expose a new table in Superset, and how to
+define the semantics on how this can be accessed by others in the ``Explore``
+and ``Dashboard`` views.
+
+- Coming soon!
+
+Define SQL Expressions
+''''''''''''''''''''''
+A walkthrough on how to create your own derived dimensions and metrics.
+
+- Coming soon!
[07/14] incubator-superset-site git commit: Initial commit - Superset
docs as of 0.18.5
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/jquery-1.11.1.js
----------------------------------------------------------------------
diff --git a/_static/jquery-1.11.1.js b/_static/jquery-1.11.1.js
new file mode 100644
index 0000000..d4b67f7
--- /dev/null
+++ b/_static/jquery-1.11.1.js
@@ -0,0 +1,10308 @@
+/*!
+ * jQuery JavaScript Library v1.11.1
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2014-05-01T17:42Z
+ */
+
+(function( global, factory ) {
+
+ if ( typeof module === "object" && typeof module.exports === "object" ) {
+ // For CommonJS and CommonJS-like environments where a proper window is present,
+ // execute the factory and get jQuery
+ // For environments that do not inherently posses a window with a document
+ // (such as Node.js), expose a jQuery-making factory as module.exports
+ // This accentuates the need for the creation of a real window
+ // e.g. var jQuery = require("jquery")(window);
+ // See ticket #14549 for more info
+ module.exports = global.document ?
+ factory( global, true ) :
+ function( w ) {
+ if ( !w.document ) {
+ throw new Error( "jQuery requires a window with a document" );
+ }
+ return factory( w );
+ };
+ } else {
+ factory( global );
+ }
+
+// Pass this if window is not defined yet
+}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Can't do this because several apps including ASP.NET trace
+// the stack via arguments.caller.callee and Firefox dies if
+// you try to trace through "use strict" call chains. (#13335)
+// Support: Firefox 18+
+//
+
+var deletedIds = [];
+
+var slice = deletedIds.slice;
+
+var concat = deletedIds.concat;
+
+var push = deletedIds.push;
+
+var indexOf = deletedIds.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var support = {};
+
+
+
+var
+ version = "1.11.1",
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ // Need init if jQuery is called (just allow error to be thrown if not included)
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Support: Android<4.1, IE<9
+ // Make sure we trim BOM and NBSP
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
+
+ // Matches dashed string for camelizing
+ rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([\da-z])/gi,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ };
+
+jQuery.fn = jQuery.prototype = {
+ // The current version of jQuery being used
+ jquery: version,
+
+ constructor: jQuery,
+
+ // Start with an empty selector
+ selector: "",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ toArray: function() {
+ return slice.call( this );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num != null ?
+
+ // Return just the one element from the set
+ ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
+
+ // Return all the elements in a clean array
+ slice.call( this );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems ) {
+
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+ ret.context = this.context;
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ) );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ eq: function( i ) {
+ var len = this.length,
+ j = +i + ( i < 0 ? len : 0 );
+ return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: deletedIds.sort,
+ splice: deletedIds.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var src, copyIsArray, copy, name, options, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+
+ // skip the boolean and the target
+ target = arguments[ i ] || {};
+ i++;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( i === length ) {
+ target = this;
+ i--;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ // Unique for each copy of jQuery on the page
+ expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+ // Assume jQuery is ready without the ready module
+ isReady: true,
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ noop: function() {},
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray || function( obj ) {
+ return jQuery.type(obj) === "array";
+ },
+
+ isWindow: function( obj ) {
+ /* jshint eqeqeq: false */
+ return obj != null && obj == obj.window;
+ },
+
+ isNumeric: function( obj ) {
+ // parseFloat NaNs numeric-cast false positives (null|true|false|"")
+ // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+ // subtraction forces infinities to NaN
+ return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0;
+ },
+
+ isEmptyObject: function( obj ) {
+ var name;
+ for ( name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ isPlainObject: function( obj ) {
+ var key;
+
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ try {
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !hasOwn.call(obj, "constructor") &&
+ !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+ } catch ( e ) {
+ // IE8,9 Will throw exceptions on certain host objects #9897
+ return false;
+ }
+
+ // Support: IE<9
+ // Handle iteration over inherited properties before own properties.
+ if ( support.ownLast ) {
+ for ( key in obj ) {
+ return hasOwn.call( obj, key );
+ }
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+ for ( key in obj ) {}
+
+ return key === undefined || hasOwn.call( obj, key );
+ },
+
+ type: function( obj ) {
+ if ( obj == null ) {
+ return obj + "";
+ }
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[ toString.call(obj) ] || "object" :
+ typeof obj;
+ },
+
+ // Evaluates a script in a global context
+ // Workarounds based on findings by Jim Driscoll
+ // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
+ globalEval: function( data ) {
+ if ( data && jQuery.trim( data ) ) {
+ // We use execScript on Internet Explorer
+ // We use an anonymous function so that context is window
+ // rather than jQuery in Firefox
+ ( window.execScript || function( data ) {
+ window[ "eval" ].call( window, data );
+ } )( data );
+ }
+ },
+
+ // Convert dashed to camelCase; used by the css and data modules
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+ },
+
+ // args is for internal usage only
+ each: function( obj, callback, args ) {
+ var value,
+ i = 0,
+ length = obj.length,
+ isArray = isArraylike( obj );
+
+ if ( args ) {
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback.apply( obj[ i ], args );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ value = callback.apply( obj[ i ], args );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback.call( obj[ i ], i, obj[ i ] );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ value = callback.call( obj[ i ], i, obj[ i ] );
+
+ if ( value === false ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return obj;
+ },
+
+ // Support: Android<4.1, IE<9
+ trim: function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( arr, results ) {
+ var ret = results || [];
+
+ if ( arr != null ) {
+ if ( isArraylike( Object(arr) ) ) {
+ jQuery.merge( ret,
+ typeof arr === "string" ?
+ [ arr ] : arr
+ );
+ } else {
+ push.call( ret, arr );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, arr, i ) {
+ var len;
+
+ if ( arr ) {
+ if ( indexOf ) {
+ return indexOf.call( arr, elem, i );
+ }
+
+ len = arr.length;
+ i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
+
+ for ( ; i < len; i++ ) {
+ // Skip accessing in sparse arrays
+ if ( i in arr && arr[ i ] === elem ) {
+ return i;
+ }
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var len = +second.length,
+ j = 0,
+ i = first.length;
+
+ while ( j < len ) {
+ first[ i++ ] = second[ j++ ];
+ }
+
+ // Support: IE<9
+ // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)
+ if ( len !== len ) {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, invert ) {
+ var callbackInverse,
+ matches = [],
+ i = 0,
+ length = elems.length,
+ callbackExpect = !invert;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( ; i < length; i++ ) {
+ callbackInverse = !callback( elems[ i ], i );
+ if ( callbackInverse !== callbackExpect ) {
+ matches.push( elems[ i ] );
+ }
+ }
+
+ return matches;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var value,
+ i = 0,
+ length = elems.length,
+ isArray = isArraylike( elems ),
+ ret = [];
+
+ // Go through the array, translating each of the items to their new values
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( i in elems ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ var args, proxy, tmp;
+
+ if ( typeof context === "string" ) {
+ tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
+
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
+ }
+
+ // Simulated bind
+ args = slice.call( arguments, 2 );
+ proxy = function() {
+ return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+ };
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+ return proxy;
+ },
+
+ now: function() {
+ return +( new Date() );
+ },
+
+ // jQuery.support is not used in Core but other projects attach their
+ // properties to it so it needs to exist.
+ support: support
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+function isArraylike( obj ) {
+ var length = obj.length,
+ type = jQuery.type( obj );
+
+ if ( type === "function" || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ if ( obj.nodeType === 1 && length ) {
+ return true;
+ }
+
+ return type === "array" || length === 0 ||
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v1.10.19
+ * http://sizzlejs.com/
+ *
+ * Copyright 2013 jQuery Foundation, Inc. and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2014-04-18
+ */
+(function( window ) {
+
+var i,
+ support,
+ Expr,
+ getText,
+ isXML,
+ tokenize,
+ compile,
+ select,
+ outermostContext,
+ sortInput,
+ hasDuplicate,
+
+ // Local document vars
+ setDocument,
+ document,
+ docElem,
+ documentIsHTML,
+ rbuggyQSA,
+ rbuggyMatches,
+ matches,
+ contains,
+
+ // Instance-specific data
+ expando = "sizzle" + -(new Date()),
+ preferredDoc = window.document,
+ dirruns = 0,
+ done = 0,
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ }
+ return 0;
+ },
+
+ // General-purpose constants
+ strundefined = typeof undefined,
+ MAX_NEGATIVE = 1 << 31,
+
+ // Instance methods
+ hasOwn = ({}).hasOwnProperty,
+ arr = [],
+ pop = arr.pop,
+ push_native = arr.push,
+ push = arr.push,
+ slice = arr.slice,
+ // Use a stripped-down indexOf if we can't use a native one
+ indexOf = arr.indexOf || function( elem ) {
+ var i = 0,
+ len = this.length;
+ for ( ; i < len; i++ ) {
+ if ( this[i] === elem ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+ // Regular expressions
+
+ // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+ // http://www.w3.org/TR/css3-syntax/#characters
+ characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
+
+ // Loosely modeled on CSS identifier characters
+ // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
+ // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = characterEncoding.replace( "w", "w#" ),
+
+ // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+ attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
+ // Operator (capture 2)
+ "*([*^$|!~]?=)" + whitespace +
+ // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+ "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+ "*\\]",
+
+ pseudos = ":(" + characterEncoding + ")(?:\\((" +
+ // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+ // 1. quoted (capture 3; capture 4 or capture 5)
+ "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+ // 2. simple (capture 6)
+ "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+ // 3. anything else (capture 2)
+ ".*" +
+ ")\\)|)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+ rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+ rpseudo = new RegExp( pseudos ),
+ ridentifier = new RegExp( "^" + identifier + "$" ),
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + characterEncoding + ")" ),
+ "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
+ "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+ // For use in libraries implementing .is()
+ // We use this for POS matching in `select`
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+ },
+
+ rinputs = /^(?:input|select|textarea|button)$/i,
+ rheader = /^h\d$/i,
+
+ rnative = /^[^{]+\{\s*\[native \w/,
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+ rsibling = /[+~]/,
+ rescape = /'|\\/g,
+
+ // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+ funescape = function( _, escaped, escapedWhitespace ) {
+ var high = "0x" + escaped - 0x10000;
+ // NaN means non-codepoint
+ // Support: Firefox<24
+ // Workaround erroneous numeric interpretation of +"0x"
+ return high !== high || escapedWhitespace ?
+ escaped :
+ high < 0 ?
+ // BMP codepoint
+ String.fromCharCode( high + 0x10000 ) :
+ // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+ };
+
+// Optimize for push.apply( _, NodeList )
+try {
+ push.apply(
+ (arr = slice.call( preferredDoc.childNodes )),
+ preferredDoc.childNodes
+ );
+ // Support: Android<4.0
+ // Detect silently failing push.apply
+ arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+ push = { apply: arr.length ?
+
+ // Leverage slice if possible
+ function( target, els ) {
+ push_native.apply( target, slice.call(els) );
+ } :
+
+ // Support: IE<9
+ // Otherwise append directly
+ function( target, els ) {
+ var j = target.length,
+ i = 0;
+ // Can't trust NodeList.length
+ while ( (target[j++] = els[i++]) ) {}
+ target.length = j - 1;
+ }
+ };
+}
+
+function Sizzle( selector, context, results, seed ) {
+ var match, elem, m, nodeType,
+ // QSA vars
+ i, groups, old, nid, newContext, newSelector;
+
+ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+ setDocument( context );
+ }
+
+ context = context || document;
+ results = results || [];
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( documentIsHTML && !seed ) {
+
+ // Shortcuts
+ if ( (match = rquickExpr.exec( selector )) ) {
+ // Speed-up: Sizzle("#ID")
+ if ( (m = match[1]) ) {
+ if ( nodeType === 9 ) {
+ elem = context.getElementById( m );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document (jQuery #6963)
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE, Opera, and Webkit return items
+ // by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ } else {
+ return results;
+ }
+ } else {
+ // Context is not a document
+ if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
+ contains( context, elem ) && elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ }
+
+ // Speed-up: Sizzle("TAG")
+ } else if ( match[2] ) {
+ push.apply( results, context.getElementsByTagName( selector ) );
+ return results;
+
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
+ push.apply( results, context.getElementsByClassName( m ) );
+ return results;
+ }
+ }
+
+ // QSA path
+ if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+ nid = old = expando;
+ newContext = context;
+ newSelector = nodeType === 9 && selector;
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ groups = tokenize( selector );
+
+ if ( (old = context.getAttribute("id")) ) {
+ nid = old.replace( rescape, "\\$&" );
+ } else {
+ context.setAttribute( "id", nid );
+ }
+ nid = "[id='" + nid + "'] ";
+
+ i = groups.length;
+ while ( i-- ) {
+ groups[i] = nid + toSelector( groups[i] );
+ }
+ newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
+ newSelector = groups.join(",");
+ }
+
+ if ( newSelector ) {
+ try {
+ push.apply( results,
+ newContext.querySelectorAll( newSelector )
+ );
+ return results;
+ } catch(qsaError) {
+ } finally {
+ if ( !old ) {
+ context.removeAttribute("id");
+ }
+ }
+ }
+ }
+ }
+
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ * deleting the oldest entry
+ */
+function createCache() {
+ var keys = [];
+
+ function cache( key, value ) {
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+ if ( keys.push( key + " " ) > Expr.cacheLength ) {
+ // Only keep the most recent entries
+ delete cache[ keys.shift() ];
+ }
+ return (cache[ key + " " ] = value);
+ }
+ return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+ fn[ expando ] = true;
+ return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+ var div = document.createElement("div");
+
+ try {
+ return !!fn( div );
+ } catch (e) {
+ return false;
+ } finally {
+ // Remove from its parent by default
+ if ( div.parentNode ) {
+ div.parentNode.removeChild( div );
+ }
+ // release memory in IE
+ div = null;
+ }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+ var arr = attrs.split("|"),
+ i = attrs.length;
+
+ while ( i-- ) {
+ Expr.attrHandle[ arr[i] ] = handler;
+ }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+ var cur = b && a,
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+ ( ~b.sourceIndex || MAX_NEGATIVE ) -
+ ( ~a.sourceIndex || MAX_NEGATIVE );
+
+ // Use IE sourceIndex if available on both nodes
+ if ( diff ) {
+ return diff;
+ }
+
+ // Check if b follows a
+ if ( cur ) {
+ while ( (cur = cur.nextSibling) ) {
+ if ( cur === b ) {
+ return -1;
+ }
+ }
+ }
+
+ return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+ return context && typeof context.getElementsByTagName !== strundefined && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+ var hasCompare,
+ doc = node ? node.ownerDocument || node : preferredDoc,
+ parent = doc.defaultView;
+
+ // If no document and documentElement is available, return
+ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ return document;
+ }
+
+ // Set our document
+ document = doc;
+ docElem = doc.documentElement;
+
+ // Support tests
+ documentIsHTML = !isXML( doc );
+
+ // Support: IE>8
+ // If iframe document is assigned to "document" variable and if iframe has been reloaded,
+ // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
+ // IE6-8 do not support the defaultView property so parent will be undefined
+ if ( parent && parent !== parent.top ) {
+ // IE11 does not have attachEvent, so all must suffer
+ if ( parent.addEventListener ) {
+ parent.addEventListener( "unload", function() {
+ setDocument();
+ }, false );
+ } else if ( parent.attachEvent ) {
+ parent.attachEvent( "onunload", function() {
+ setDocument();
+ });
+ }
+ }
+
+ /* Attributes
+ ---------------------------------------------------------------------- */
+
+ // Support: IE<8
+ // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
+ support.attributes = assert(function( div ) {
+ div.className = "i";
+ return !div.getAttribute("className");
+ });
+
+ /* getElement(s)By*
+ ---------------------------------------------------------------------- */
+
+ // Check if getElementsByTagName("*") returns only elements
+ support.getElementsByTagName = assert(function( div ) {
+ div.appendChild( doc.createComment("") );
+ return !div.getElementsByTagName("*").length;
+ });
+
+ // Check if getElementsByClassName can be trusted
+ support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) {
+ div.innerHTML = "<div class='a'></div><div class='a i'></div>";
+
+ // Support: Safari<4
+ // Catch class over-caching
+ div.firstChild.className = "i";
+ // Support: Opera<10
+ // Catch gEBCN failure to find non-leading classes
+ return div.getElementsByClassName("i").length === 2;
+ });
+
+ // Support: IE<10
+ // Check if getElementById returns elements by name
+ // The broken getElementById methods don't pick up programatically-set names,
+ // so use a roundabout getElementsByName test
+ support.getById = assert(function( div ) {
+ docElem.appendChild( div ).id = expando;
+ return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
+ });
+
+ // ID find and filter
+ if ( support.getById ) {
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
+ var m = context.getElementById( id );
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [ m ] : [];
+ }
+ };
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ return elem.getAttribute("id") === attrId;
+ };
+ };
+ } else {
+ // Support: IE6/7
+ // getElementById is not reliable as a find shortcut
+ delete Expr.find["ID"];
+
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
+ return node && node.value === attrId;
+ };
+ };
+ }
+
+ // Tag
+ Expr.find["TAG"] = support.getElementsByTagName ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== strundefined ) {
+ return context.getElementsByTagName( tag );
+ }
+ } :
+ function( tag, context ) {
+ var elem,
+ tmp = [],
+ i = 0,
+ results = context.getElementsByTagName( tag );
+
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
+
+ return tmp;
+ }
+ return results;
+ };
+
+ // Class
+ Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
+ return context.getElementsByClassName( className );
+ }
+ };
+
+ /* QSA/matchesSelector
+ ---------------------------------------------------------------------- */
+
+ // QSA and matchesSelector support
+
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ rbuggyMatches = [];
+
+ // qSa(:focus) reports false when true (Chrome 21)
+ // We allow this because of a bug in IE8/9 that throws an error
+ // whenever `document.activeElement` is accessed on an iframe
+ // So, we allow :focus to pass through QSA all the time to avoid the IE error
+ // See http://bugs.jquery.com/ticket/13378
+ rbuggyQSA = [];
+
+ if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( div ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explicitly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // http://bugs.jquery.com/ticket/12359
+ div.innerHTML = "<select msallowclip=''><option selected=''></option></select>";
+
+ // Support: IE8, Opera 11-12.16
+ // Nothing should be selected when empty strings follow ^= or $= or *=
+ // The test attribute must be unknown in Opera but "safe" for WinRT
+ // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+ if ( div.querySelectorAll("[msallowclip^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+ }
+
+ // Support: IE8
+ // Boolean attributes and "value" are not treated correctly
+ if ( !div.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+ }
+
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+ });
+
+ assert(function( div ) {
+ // Support: Windows 8 Native Apps
+ // The type and name attributes are restricted during .innerHTML assignment
+ var input = doc.createElement("input");
+ input.setAttribute( "type", "hidden" );
+ div.appendChild( input ).setAttribute( "name", "D" );
+
+ // Support: IE8
+ // Enforce case-sensitivity of name attribute
+ if ( div.querySelectorAll("[name=d]").length ) {
+ rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+ }
+
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here and will not see later tests
+ if ( !div.querySelectorAll(":enabled").length ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Opera 10-11 does not throw on post-comma invalid pseudos
+ div.querySelectorAll("*,:x");
+ rbuggyQSA.push(",.*:");
+ });
+ }
+
+ if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+ docElem.webkitMatchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector) )) ) {
+
+ assert(function( div ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ support.disconnectedMatch = matches.call( div, "div" );
+
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( div, "[s!='']:x" );
+ rbuggyMatches.push( "!=", pseudos );
+ });
+ }
+
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+ /* Contains
+ ---------------------------------------------------------------------- */
+ hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+ // Element contains another
+ // Purposefully does not implement inclusive descendent
+ // As in, an element does not contain itself
+ contains = hasCompare || rnative.test( docElem.contains ) ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && (
+ adown.contains ?
+ adown.contains( bup ) :
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+ ));
+ } :
+ function( a, b ) {
+ if ( b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+ /* Sorting
+ ---------------------------------------------------------------------- */
+
+ // Document order sorting
+ sortOrder = hasCompare ?
+ function( a, b ) {
+
+ // Flag for duplicate removal
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ // Sort on method existence if only one input has compareDocumentPosition
+ var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+ if ( compare ) {
+ return compare;
+ }
+
+ // Calculate position if both inputs belong to the same document
+ compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+ a.compareDocumentPosition( b ) :
+
+ // Otherwise we know they are disconnected
+ 1;
+
+ // Disconnected nodes
+ if ( compare & 1 ||
+ (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+ // Choose the first element that is related to our preferred document
+ if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+ return -1;
+ }
+ if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+ return 1;
+ }
+
+ // Maintain original order
+ return sortInput ?
+ ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+ 0;
+ }
+
+ return compare & 4 ? -1 : 1;
+ } :
+ function( a, b ) {
+ // Exit early if the nodes are identical
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ var cur,
+ i = 0,
+ aup = a.parentNode,
+ bup = b.parentNode,
+ ap = [ a ],
+ bp = [ b ];
+
+ // Parentless nodes are either documents or disconnected
+ if ( !aup || !bup ) {
+ return a === doc ? -1 :
+ b === doc ? 1 :
+ aup ? -1 :
+ bup ? 1 :
+ sortInput ?
+ ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+ 0;
+
+ // If the nodes are siblings, we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+ }
+
+ // Otherwise we need full lists of their ancestors for comparison
+ cur = a;
+ while ( (cur = cur.parentNode) ) {
+ ap.unshift( cur );
+ }
+ cur = b;
+ while ( (cur = cur.parentNode) ) {
+ bp.unshift( cur );
+ }
+
+ // Walk down the tree looking for a discrepancy
+ while ( ap[i] === bp[i] ) {
+ i++;
+ }
+
+ return i ?
+ // Do a sibling check if the nodes have a common ancestor
+ siblingCheck( ap[i], bp[i] ) :
+
+ // Otherwise nodes in our document sort first
+ ap[i] === preferredDoc ? -1 :
+ bp[i] === preferredDoc ? 1 :
+ 0;
+ };
+
+ return doc;
+};
+
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace( rattributeQuotes, "='$1']" );
+
+ if ( support.matchesSelector && documentIsHTML &&
+ ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
+
+ try {
+ var ret = matches.call( elem, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || support.disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
+ }
+ } catch(e) {}
+ }
+
+ return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+ // Set document vars if needed
+ if ( ( context.ownerDocument || context ) !== document ) {
+ setDocument( context );
+ }
+ return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ var fn = Expr.attrHandle[ name.toLowerCase() ],
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, !documentIsHTML ) :
+ undefined;
+
+ return val !== undefined ?
+ val :
+ support.attributes || !documentIsHTML ?
+ elem.getAttribute( name ) :
+ (val = elem.getAttributeNode(name)) && val.specified ?
+ val.value :
+ null;
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ duplicates = [],
+ j = 0,
+ i = 0;
+
+ // Unless we *know* we can detect duplicates, assume their presence
+ hasDuplicate = !support.detectDuplicates;
+ sortInput = !support.sortStable && results.slice( 0 );
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ // Clear input after sorting to release objects
+ // See https://github.com/jquery/sizzle/pull/225
+ sortInput = null;
+
+ return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+ // If no nodeType, this is expected to be an array
+ while ( (node = elem[i++]) ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
+ }
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (jQuery #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+
+ return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+ // Can be adjusted by the user
+ cacheLength: 50,
+
+ createPseudo: markFunction,
+
+ match: matchExpr,
+
+ attrHandle: {},
+
+ find: {},
+
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( runescape, funescape );
+
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
+
+ return match.slice( 0, 4 );
+ },
+
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 what (child|of-type)
+ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 4 xn-component of xn+y argument ([+-]?\d*n|)
+ 5 sign of xn-component
+ 6 x of xn-component
+ 7 sign of y-component
+ 8 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1].slice( 0, 3 ) === "nth" ) {
+ // nth-* requires argument
+ if ( !match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ return match;
+ },
+
+ "PSEUDO": function( match ) {
+ var excess,
+ unquoted = !match[6] && match[2];
+
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
+ }
+
+ // Accept quoted arguments as-is
+ if ( match[3] ) {
+ match[2] = match[4] || match[5] || "";
+
+ // Strip excess characters from unquoted arguments
+ } else if ( unquoted && rpseudo.test( unquoted ) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ match[0] = match[0].slice( 0, excess );
+ match[2] = unquoted.slice( 0, excess );
+ }
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
+ }
+ },
+
+ filter: {
+
+ "TAG": function( nodeNameSelector ) {
+ var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+ return nodeNameSelector === "*" ?
+ function() { return true; } :
+ function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
+
+ "CLASS": function( className ) {
+ var pattern = classCache[ className + " " ];
+
+ return pattern ||
+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+ classCache( className, function( elem ) {
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
+ });
+ },
+
+ "ATTR": function( name, operator, check ) {
+ return function( elem ) {
+ var result = Sizzle.attr( elem, name );
+
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
+
+ result += "";
+
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.slice( -check.length ) === check :
+ operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
+
+ "CHILD": function( type, what, argument, first, last ) {
+ var simple = type.slice( 0, 3 ) !== "nth",
+ forward = type.slice( -4 ) !== "last",
+ ofType = what === "of-type";
+
+ return first === 1 && last === 0 ?
+
+ // Shortcut for :nth-*(n)
+ function( elem ) {
+ return !!elem.parentNode;
+ } :
+
+ function( elem, context, xml ) {
+ var cache, outerCache, node, diff, nodeIndex, start,
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
+ parent = elem.parentNode,
+ name = ofType && elem.nodeName.toLowerCase(),
+ useCache = !xml && !ofType;
+
+ if ( parent ) {
+
+ // :(first|last|only)-(child|of-type)
+ if ( simple ) {
+ while ( dir ) {
+ node = elem;
+ while ( (node = node[ dir ]) ) {
+ if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
+ return false;
+ }
+ }
+ // Reverse direction for :only-* (if we haven't yet done so)
+ start = dir = type === "only" && !start && "nextSibling";
+ }
+ return true;
+ }
+
+ start = [ forward ? parent.firstChild : parent.lastChild ];
+
+ // non-xml :nth-child(...) stores cache data on `parent`
+ if ( forward && useCache ) {
+ // Seek `elem` from a previously-cached index
+ outerCache = parent[ expando ] || (parent[ expando ] = {});
+ cache = outerCache[ type ] || [];
+ nodeIndex = cache[0] === dirruns && cache[1];
+ diff = cache[0] === dirruns && cache[2];
+ node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+ // Fallback to seeking `elem` from the start
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ // When found, cache indexes on `parent` and break
+ if ( node.nodeType === 1 && ++diff && node === elem ) {
+ outerCache[ type ] = [ dirruns, nodeIndex, diff ];
+ break;
+ }
+ }
+
+ // Use previously-cached element index if available
+ } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
+ diff = cache[1];
+
+ // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
+ } else {
+ // Use the same loop as above to seek `elem` from the start
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
+ // Cache the index of each encountered element
+ if ( useCache ) {
+ (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
+ }
+
+ if ( node === elem ) {
+ break;
+ }
+ }
+ }
+ }
+
+ // Incorporate the offset, then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
+ }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf.call( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }
+ },
+
+ pseudos: {
+ // Potentially complex pseudos
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
+
+ "contains": markFunction(function( text ) {
+ return function( elem ) {
+ return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ // "Whether an element is represented by a :lang() selector
+ // is based solely on the element's language value
+ // being equal to the identifier C,
+ // or beginning with the identifier C immediately followed by "-".
+ // The matching of C against the element's language value is performed case-insensitively.
+ // The identifier C does not have to be a valid language name."
+ // http://www.w3.org/TR/selectors/#lang-pseudo
+ "lang": markFunction( function( lang ) {
+ // lang value must be a valid identifier
+ if ( !ridentifier.test(lang || "") ) {
+ Sizzle.error( "unsupported lang: " + lang );
+ }
+ lang = lang.replace( runescape, funescape ).toLowerCase();
+ return function( elem ) {
+ var elemLang;
+ do {
+ if ( (elemLang = documentIsHTML ?
+ elem.lang :
+ elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+ elemLang = elemLang.toLowerCase();
+ return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+ }
+ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+ return false;
+ };
+ }),
+
+ // Miscellaneous
+ "target": function( elem ) {
+ var hash = window.location && window.location.hash;
+ return hash && hash.slice( 1 ) === elem.id;
+ },
+
+ "root": function( elem ) {
+ return elem === docElem;
+ },
+
+ "focus": function( elem ) {
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+
+ // Boolean properties
+ "enabled": function( elem ) {
+ return elem.disabled === false;
+ },
+
+ "disabled": function( elem ) {
+ return elem.disabled === true;
+ },
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ // Contents
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+ // but not by others (comment: 8; processing instruction: 7; etc.)
+ // nodeType < 6 works because attributes (2) do not appear as children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ if ( elem.nodeType < 6 ) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ // Element/input types
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
+
+ "text": function( elem ) {
+ var attr;
+ return elem.nodeName.toLowerCase() === "input" &&
+ elem.type === "text" &&
+
+ // Support: IE<8
+ // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+ },
+
+ // Position-in-collection
+ "first": createPositionalPseudo(function() {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 0;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 1;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
+ }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+ Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+ Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+ var matched, match, tokens, type,
+ soFar, groups, preFilters,
+ cached = tokenCache[ selector + " " ];
+
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
+
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ // Don't consume trailing commas as valid
+ soFar = soFar.slice( match[0].length ) || soFar;
+ }
+ groups.push( (tokens = []) );
+ }
+
+ matched = false;
+
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ // Cast descendant combinators to space
+ type: match[0].replace( rtrim, " " )
+ });
+ soFar = soFar.slice( matched.length );
+ }
+
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ (match = preFilters[ type ]( match ))) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ type: type,
+ matches: match
+ });
+ soFar = soFar.slice( matched.length );
+ }
+ }
+
+ if ( !matched ) {
+ break;
+ }
+ }
+
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+ var i = 0,
+ len = tokens.length,
+ selector = "";
+ for ( ; i < len; i++ ) {
+ selector += tokens[i].value;
+ }
+ return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ checkNonElements = base && dir === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ } :
+
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ var oldCache, outerCache,
+ newCache = [ dirruns, doneName ];
+
+ // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
+ if ( xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ if ( matcher( elem, context, xml ) ) {
+ return true;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ outerCache = elem[ expando ] || (elem[ expando ] = {});
+ if ( (oldCache = outerCache[ dir ]) &&
+ oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+ // Assign to newCache so results back-propagate to previous elements
+ return (newCache[ 2 ] = oldCache[ 2 ]);
+ } else {
+ // Reuse newcache so results back-propagate to previous elements
+ outerCache[ dir ] = newCache;
+
+ // A match means we're done; a fail means we have to keep checking
+ if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ };
+}
+
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results );
+ }
+ return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
+ }
+ }
+ }
+
+ return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ var temp, i, elem,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ temp = condense( matcherOut, postMap );
+ postFilter( temp, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = temp.length;
+ while ( i-- ) {
+ if ( (elem = temp[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ }
+ }
+ }
+
+ if ( seed ) {
+ if ( postFinder || preFilter ) {
+ if ( postFinder ) {
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
+ temp = [];
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ // Restore matcherIn since elem is not yet a final match
+ temp.push( (matcherIn[i] = elem) );
+ }
+ }
+ postFinder( null, (matcherOut = []), temp, xml );
+ }
+
+ // Move matched elements from seed to results to keep them synchronized
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) &&
+ (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
+
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
+ }
+
+ // Add elements to results, through postFinder if defined
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
+ }
+ });
+}
+
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf.call( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+ } else {
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+ ).replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && toSelector( tokens )
+ );
+ }
+ matchers.push( matcher );
+ }
+ }
+
+ return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ var bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, outermost ) {
+ var elem, j, matcher,
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ setMatched = [],
+ contextBackup = outermostContext,
+ // We must always have either seed elements or outermost context
+ elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+ // Use integer dirruns iff this is the outermost matcher
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+ len = elems.length;
+
+ if ( outermost ) {
+ outermostContext = context !== document && context;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
+ // Support: IE<9, Safari
+ // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+ for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ j = 0;
+ while ( (matcher = elementMatchers[j++]) ) {
+ if ( matcher( elem, context, xml ) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ }
+ }
+
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
+
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
+ }
+ }
+
+ // Apply set filters to unmatched elements
+ matchedCount += i;
+ if ( bySet && i !== matchedCount ) {
+ j = 0;
+ while ( (matcher = setMatchers[j++]) ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
+
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
+
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
+
+ // Add matches to results
+ push.apply( results, setMatched );
+
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
+
+ Sizzle.uniqueSort( results );
+ }
+ }
+
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+
+ return unmatched;
+ };
+
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ selector + " " ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !match ) {
+ match = tokenize( selector );
+ }
+ i = match.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( match[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
+ }
+ }
+
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+ // Save selector and tokenization
+ cached.selector = selector;
+ }
+ return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ * selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ * selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+ var i, tokens, token, type, find,
+ compiled = typeof selector === "function" && selector,
+ match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+ results = results || [];
+
+ // Try to minimize operations if there is no seed and only one group
+ if ( match.length === 1 ) {
+
+ // Take a shortcut and set the context if the root selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ support.getById && context.nodeType === 9 && documentIsHTML &&
+ Expr.relative[ tokens[1].type ] ) {
+
+ context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+ if ( !context ) {
+ return results;
+
+ // Precompiled matchers will still verify ancestry, so step up a level
+ } else if ( compiled ) {
+ context = context.parentNode;
+ }
+
+ selector = selector.slice( tokens.shift().value.length );
+ }
+
+ // Fetch a seed set for right-to-left matching
+ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ while ( i-- ) {
+ token = tokens[i];
+
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
+ }
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( runescape, funescape ),
+ rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && toSelector( tokens );
+ if ( !selector ) {
+ push.apply( results, seed );
+ return results;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ // Compile and execute a filtering function if one is not provided
+ // Provide `match` to avoid retokenization if we modified the selector above
+ ( compiled || compile( selector, match ) )(
+ seed,
+ context,
+ !documentIsHTML,
+ results,
+ rsibling.test( selector ) && testContext( context.parentNode ) || context
+ );
+ return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome<14
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( div1 ) {
+ // Should return 1, but returns 4 (following)
+ return div1.compareDocumentPosition( document.createElement("div") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( div ) {
+ div.innerHTML = "<a href='#'></a>";
+ return div.firstChild.getAttribute("href") === "#" ;
+}) ) {
+ addHandle( "type|href|height|width", function( elem, name, isXML ) {
+ if ( !isXML ) {
+ return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+ }
+ });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( div ) {
+ div.innerHTML = "<input/>";
+ div.firstChild.setAttribute( "value", "" );
+ return div.firstChild.getAttribute( "value" ) === "";
+}) ) {
+ addHandle( "value", function( elem, name, isXML ) {
+ if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+ return elem.defaultValue;
+ }
+ });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( div ) {
+ return div.getAttribute("disabled") == null;
+}) ) {
+ addHandle( booleans, function( elem, name, isXML ) {
+ var val;
+ if ( !isXML ) {
+ return elem[ name ] === true ? name.toLowerCase() :
+ (val = elem.getAttributeNode( name )) && val.specified ?
+ val.value :
+ null;
+ }
+ });
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.pseudos;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
+
+
+
+var risSimple = /^.[^:#\[\.,]*$/;
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep( elements, function( elem, i ) {
+ /* jshint -W018 */
+ return !!qualifier.call( elem, i, elem ) !== not;
+ });
+
+ }
+
+ if ( qualifier.nodeType ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( elem === qualifier ) !== not;
+ });
+
+ }
+
+ if ( typeof qualifier === "string" ) {
+ if ( risSimple.test( qualifier ) ) {
+ return jQuery.filter( qualifier, elements, not );
+ }
+
+ qualifier = jQuery.filter( qualifier, elements );
+ }
+
+ return jQuery.grep( elements, function( elem ) {
+ return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;
+ });
+}
+
+jQuery.filter = function( expr, elems, not ) {
+ var elem = elems[ 0 ];
+
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 && elem.nodeType === 1 ?
+ jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
+ jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+ return elem.nodeType === 1;
+ }));
+};
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var i,
+ ret = [],
+ self = this,
+ len = self.length;
+
+ if ( typeof selector !== "string" ) {
+ return this.pushStack( jQuery( selector ).filter(function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ }) );
+ }
+
+ for ( i = 0; i < len; i++ ) {
+ jQuery.find( selector, self[ i ], ret );
+ }
+
+ // Needed because $( selector, context ) becomes $( context ).find( selector )
+ ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+ ret.selector = this.selector ? this.selector + " " + selector : selector;
+ return ret;
+ },
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector || [], false) );
+ },
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector || [], true) );
+ },
+ is: function( selector ) {
+ return !!winnow(
+ this,
+
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test( selector ) ?
+ jQuery( selector ) :
+ selector || [],
+ false
+ ).length;
+ }
+});
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+ // Use the correct document accordingly with window argument (sandbox)
+ document = window.document,
+
+ // A simple way to check for HTML strings
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+ // Strict HTML recognition (#11290: must start with <)
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+
+ init = jQuery.fn.init = function( selector, context ) {
+ var match, elem;
+
+ // HANDLE: $(""), $(null), $(undefined), $(false)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = rquickExpr.exec( selector );
+ }
+
+ // Match html or make sure no context is specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ context = context instanceof jQuery ? context[0] : context;
+
+ // scripts is true for back-compat
+ // Intentionally let the error be thrown if parseHTML is not present
+ jQuery.merge( this, jQuery.parseHTML(
+ match[1],
+ context && context.nodeType ? context.ownerDocument || context : document,
+ true
+ ) );
+
+ // HANDLE: $(html, props)
+ if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
+ for ( match in context ) {
+ // Properties of context are called as methods if possible
+ if ( jQuery.isFunction( this[ match ] ) ) {
+ this[ match ]( context[ match ] );
+
+ // ...and otherwise set as attributes
+ } else {
+ this.attr( match, context[ match ] );
+ }
+ }
+ }
+
+ return this;
+
+ // HANDLE: $(#id)
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || rootjQuery ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(DOMElement)
+ } else if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return typeof rootjQuery.ready !== "undefined" ?
+ rootjQuery.ready( selector ) :
+ // Execute immediately if ready is not present
+ selector( jQuery );
+ }
+
+ if ( selector.selector !== undefined ) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ };
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+ // methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.extend({
+ dir: function( elem, dir, until ) {
+ var matched = [],
+ cur = elem[ dir ];
+
+ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+ if ( cur.nodeType === 1 ) {
+ matched.push( cur );
+ }
+ cur = cur[dir];
+ }
+ return matched;
+ },
+
+ sibling: function( n, elem ) {
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ r.push( n );
+ }
+ }
+
+ return r;
+ }
+});
+
+jQuery.fn.extend({
+ has: function( target ) {
+ var i,
+ targets = jQuery( target, this ),
+ len = targets.length;
+
+ return this.filter(function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ closest: function( selectors, context ) {
+ var cur,
+ i = 0,
+ l = this.length,
+ matched = [],
+ pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
+ jQuery( selectors, context || this.context ) :
+ 0;
+
+ for ( ; i < l; i++ ) {
+ for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
+ // Always skip document fragments
+ if ( cur.nodeType < 11 && (pos ?
+ pos.index(cur) > -1 :
+
+ // Don't pass non-elements to Sizzle
+ cur.nodeType === 1 &&
+ jQuery.find.matchesSelector(cur, selectors)) ) {
+
+ matched.push( cur );
+ break;
+ }
+ }
+ }
+
+ return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;
+ }
+
+ // index in selector
+ if ( typeof elem === "string" ) {
+ return jQuery.inArray( this[0], jQuery( elem ) );
+ }
+
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[0] : elem, this );
+ },
+
+ add: function( selector, context ) {
+ return this.pushStack(
+ jQuery.unique(
+ jQuery.merge( this.get(), jQuery( selector, context ) )
+ )
+ );
+ },
+
+ addBack: function( selector ) {
+ return this.add( selector == null ?
+ this.prevObject : this.prevObject.filter(selector)
+ );
+ }
+});
+
+function sibling( cur, dir ) {
+ do {
+ cur = cur[ dir ];
+ } while ( cur && cur.nodeType !== 1 );
+
+ return cur;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return sibling( elem, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return sibling( elem, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return jQuery.nodeName( elem, "iframe" ) ?
+ elem.contentDocument || elem.contentWindow.document :
+ jQuery.merge( [], elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var ret = jQuery.map( this, fn, until );
+
+ if ( name.slice( -5 ) !== "Until" ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ ret = jQuery.filter( selector, ret );
+ }
+
+ if ( this.length > 1 ) {
+ // Remove duplicates
+ if ( !guaranteedUnique[ name ] ) {
+ ret = jQuery.unique( ret );
+ }
+
+ // Reverse order for parents* and prev-derivatives
+ if ( rparentsprev.test( name ) ) {
+ ret = ret.reverse();
+ }
+ }
+
+ return this.pushStack( ret );
+ };
+});
+var rnotwhite = (/\S+/g);
+
+
+
+// String to Object options format cache
+var optionsCache = {};
+
+// Convert String-formatted options into Object-formatted ones and store in cache
+function createOptions( options ) {
+ var object = optionsCache[ options ] = {};
+ jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
+ object[ flag ] = true;
+ });
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * options: an optional list of space-separated options that will change how
+ * the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+ // Convert options from String-formatted to Object-formatted if needed
+ // (we check in cache first)
+ options = typeof options === "string" ?
+ ( optionsCache[ options ] || createOptions( options ) ) :
+ jQuery.extend( {}, options );
+
+ var // Flag to know if list is currently firing
+ firing,
+ // Last fire value (for non-forgettable lists)
+ memory,
+ // Flag to know if list was already fired
+ fired,
+ // End of the loop when firing
+ firingLength,
+ // Index of currently firing callback (modified by remove if needed)
+ firingIndex,
+ // First callback to fire (used internally by add and fireWith)
+ firingStart,
+ // Actual callback list
+ list = [],
+ // Stack of fire calls for repeatable lists
+ stack = !options.once && [],
+ // Fire callbacks
+ fire = function( data ) {
+ memory = options.memory && data;
+ fired = true;
+ firingIndex = firingStart || 0;
+ firingStart = 0;
+ firingLength = list.length;
+ firing = true;
+ for ( ; list && firingIndex < firingLength; firingIndex++ ) {
+ if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
+ memory = false; // To prevent further calls using add
+ break;
+ }
+ }
+ firing = false;
+ if ( list ) {
+ if ( stack ) {
+ if ( stack.length ) {
+ fire( stack.shift() );
+ }
+ } else if ( memory ) {
+ list = [];
+ } else {
+ self.disable();
+ }
+ }
+ },
+ // Actual Callbacks object
+ self = {
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+ // First, we save the current length
+ var start = list.length;
+ (function add( args ) {
+ jQuery.each( args, function( _, arg ) {
+ var type = jQuery.type( arg );
+ if ( type === "function" ) {
+ if ( !options.unique || !self.has( arg ) ) {
+ list.push( arg );
+ }
+ } else if ( arg && arg.length && type !== "string" ) {
+ // Inspect recursively
+
<TRUNCATED>
[11/14] incubator-superset-site git commit: Initial commit - Superset
docs as of 0.18.5
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/css/theme.css
----------------------------------------------------------------------
diff --git a/_static/css/theme.css b/_static/css/theme.css
new file mode 100644
index 0000000..7be9339
--- /dev/null
+++ b/_static/css/theme.css
@@ -0,0 +1,5 @@
+*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}[hidden]{display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:hover,a:active{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;color:#000;text-decoration:none}mark{background:#ff0;color:#000;font-style:italic;font-weight:bold}pre,code,.rst-content tt,.rst-content code,kbd,samp{font-family:monospace,serif;_font-family:"courier new",monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:before,q:after{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;ver
tical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}ul,ol,dl{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:0;margin:0;padding:0}label{cursor:pointer}legend{border:0;*margin-left:-7px;padding:0;white-space:normal}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decor
ation,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top;resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:0.2em 0;background:#ccc;color:#000;padding:0.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none !important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{html,body,section{background:none !important}*{box-shadow:n
one !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,.rst-content .toctree-wrapper p.caption,h3{orphans:3;widows:3}h2,.rst-content .toctree-wrapper p.caption,h3{page-break-after:avoid}}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-con
tent tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,.wy-menu-vertical li
.on a,.wy-menu-vertical li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}/*!
+ * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.2.0");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff?v=4.2.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.2.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font
-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:0.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:0.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.wy-menu-vertical li span.pull-left.toctree-expand,.wy-menu-vertical li.on a span.pull-left.toctree-expand,.wy-menu-vertical li.current>a span.pull-left.toctree-expand,.rst-content .pull-left.admonition-title,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.he
aderlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content dl dt .pull-left.headerlink,.rst-content p.caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.rst-content code.download span.pull-left:first-child,.pull-left.icon{margin-right:.3em}.fa.pull-right,.wy-menu-vertical li span.pull-right.toctree-expand,.wy-menu-vertical li.on a span.pull-right.toctree-expand,.wy-menu-vertical li.current>a span.pull-right.toctree-expand,.rst-content .pull-right.admonition-title,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content dl dt .pull-right.headerlink,.rst-content p.caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.rst-content code.download span.pull-right:first-child,.pull-right.icon{margin-left
:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0);-webkit-transform:scale(-1, 1);-ms
-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:
""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:befor
e{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-t
int:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crossha
irs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.rst-content .admonition-title:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:
before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:bef
ore{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-
down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-go
ogle-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.wy-dropdown .caret:before,.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-e
xchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:"�
��"}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:be
fore,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play
-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-r
ub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-squar
e:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-do
t-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li span.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:b
efore{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:b
efore,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share
-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:be
fore{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.downl
oad span:first-child,.icon,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context{font-family:inherit}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-valida
te-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before{font-family:"FontAwesome";display:inline-block;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa,a .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,a .rst-content .admonition-title,.rst-content a .admonition-title,a .rst-content h1 .headerlink,.rst-content h1 a .headerlink,a .rst-content h2 .headerlink,.rst-content h2 a .headerlink,a .rst-content h3 .headerlink,.rst-content h3 a .headerlink,a .rst-content h4 .headerlink,.rst-content h4 a .headerlink,a .rst-content h5 .headerlink,.rst-content h5 a .headerlink,a .rst-content h6 .headerlink,.rst-content h6 a .headerlink,a .rst-conte
nt dl dt .headerlink,.rst-content dl dt a .headerlink,a .rst-content p.caption .headerlink,.rst-content p.caption a .headerlink,a .rst-content tt.download span:first-child,.rst-content tt.download a span:first-child,a .rst-content code.download span:first-child,.rst-content code.download a span:first-child,a .icon{display:inline-block;text-decoration:inherit}.btn .fa,.btn .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .btn span.toctree-expand,.btn .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .btn span.toctree-expand,.btn .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .btn span.toctree-expand,.btn .rst-content .admonition-title,.rst-content .btn .admonition-title,.btn .rst-content h1 .headerlink,.rst-content h1 .btn .headerlink,.btn .rst-content h2 .headerlink,.rst-content h2 .btn .headerlink,.btn .rst-content h3 .headerlink,.rst-content h3 .btn .headerlink,.btn .rst-content h4 .headerlink,.rst-content h4 .b
tn .headerlink,.btn .rst-content h5 .headerlink,.rst-content h5 .btn .headerlink,.btn .rst-content h6 .headerlink,.rst-content h6 .btn .headerlink,.btn .rst-content dl dt .headerlink,.rst-content dl dt .btn .headerlink,.btn .rst-content p.caption .headerlink,.rst-content p.caption .btn .headerlink,.btn .rst-content tt.download span:first-child,.rst-content tt.download .btn span:first-child,.btn .rst-content code.download span:first-child,.rst-content code.download .btn span:first-child,.btn .icon,.nav .fa,.nav .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .nav span.toctree-expand,.nav .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .nav span.toctree-expand,.nav .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .nav span.toctree-expand,.nav .rst-content .admonition-title,.rst-content .nav .admonition-title,.nav .rst-content h1 .headerlink,.rst-content h1 .nav .headerlink,.nav .rst-content h2 .headerlink,.rst-cont
ent h2 .nav .headerlink,.nav .rst-content h3 .headerlink,.rst-content h3 .nav .headerlink,.nav .rst-content h4 .headerlink,.rst-content h4 .nav .headerlink,.nav .rst-content h5 .headerlink,.rst-content h5 .nav .headerlink,.nav .rst-content h6 .headerlink,.rst-content h6 .nav .headerlink,.nav .rst-content dl dt .headerlink,.rst-content dl dt .nav .headerlink,.nav .rst-content p.caption .headerlink,.rst-content p.caption .nav .headerlink,.nav .rst-content tt.download span:first-child,.rst-content tt.download .nav span:first-child,.nav .rst-content code.download span:first-child,.rst-content code.download .nav span:first-child,.nav .icon{display:inline}.btn .fa.fa-large,.btn .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .btn span.fa-large.toctree-expand,.btn .rst-content .fa-large.admonition-title,.rst-content .btn .fa-large.admonition-title,.btn .rst-content h1 .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.btn .rst-content h2 .fa-large.header
link,.rst-content h2 .btn .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.btn .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .btn .fa-large.headerlink,.btn .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .btn .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .btn span.fa-large:first-child,.btn .rst-content code.download span.fa-large:first-child,.rst-content code.download .btn span.fa-large:first-child,.btn .fa-large.icon,.nav .fa.fa-large,.nav .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .nav span.fa-large.toctree-expand,.nav .rst-content .fa-large.admonition-title,.rst-
content .nav .fa-large.admonition-title,.nav .rst-content h1 .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.nav .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.nav .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .nav .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.nav .rst-content code.download span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.nav .fa-large.icon{line-height:0.9em
}.btn .fa.fa-spin,.btn .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .btn span.fa-spin.toctree-expand,.btn .rst-content .fa-spin.admonition-title,.rst-content .btn .fa-spin.admonition-title,.btn .rst-content h1 .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.btn .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .btn .fa-spin.headerlink,.btn .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .btn .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .btn span.fa-spin:first-chi
ld,.btn .rst-content code.download span.fa-spin:first-child,.rst-content code.download .btn span.fa-spin:first-child,.btn .fa-spin.icon,.nav .fa.fa-spin,.nav .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .nav span.fa-spin.toctree-expand,.nav .rst-content .fa-spin.admonition-title,.rst-content .nav .fa-spin.admonition-title,.nav .rst-content h1 .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.nav .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.nav .rst-content p.caption .fa-spin.headerlink,.rst-content p.capti
on .nav .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.nav .rst-content code.download span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.nav .fa-spin.icon{display:inline-block}.btn.fa:before,.wy-menu-vertical li span.btn.toctree-expand:before,.rst-content .btn.admonition-title:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content dl dt .btn.headerlink:before,.rst-content p.caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.rst-content code.download span.btn:first-child:before,.btn.icon:before{opacity:0.5;-webkit-transition:opacity 0.05s ease-in;-moz-transition:opacity 0.05s ease-in;transition:opacity 0.05s ease-in}.btn.fa:hover:before,.wy-
menu-vertical li span.btn.toctree-expand:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content p.caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.rst-content code.download span.btn:first-child:hover:before,.btn.icon:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li .btn-mini span.toctree-expand:before,.btn-mini .rst-content .admonition-title:before,.rst-content .btn-mini .admonition-title:before,.btn-mini .rst-content h1 .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.rst
-content h2 .btn-mini .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.btn-mini .rst-content dl dt .headerlink:before,.rst-content dl dt .btn-mini .headerlink:before,.btn-mini .rst-content p.caption .headerlink:before,.rst-content p.caption .btn-mini .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.rst-content tt.download .btn-mini span:first-child:before,.btn-mini .rst-content code.download span:first-child:before,.rst-content code.download .btn-mini span:first-child:before,.btn-mini .icon:before{font-size:14px;vertical-align:-15%}.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.r
st-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.wy-alert-title,.rst-content .admonition-title{color:#fff;font-weight:bold;display:block;color:#fff;background:#6ab0de;margin:-12px;padding:6px 12px;margin-bottom:12px}.wy-alert.wy-alert-danger,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.admonition-todo{background:#fdf3f2}.wy-alert.wy-alert-danger .wy-alert-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger
.caution .wy-alert-title,.rst-content .danger .wy-alert-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .danger .admonition-title,.rst-content .error .admonition-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.warning .admonition-t
itle,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title{background:#f29f97}.wy-alert.wy-alert-warning,.rst-content .wy-alert-warning.note,.rst-content .attention,.rst-content .caution,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.tip,.rst-content .warning,.rst-content .wy-alert-warning.seealso,.rst-content .admonition-todo{background:#ffedcc}.wy-alert.wy-alert-warning .wy-alert-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .attention .wy-alert-title,.rst-content .caution .wy-alert-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-co
ntent .warning .wy-alert-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .admonition-todo .wy-alert-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .attention .admonition-title,.rst-content .caution .admonition-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .warning .admonition-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .admonition-todo .admonition-title{background:#f0b37e}.wy-alert.wy-alert-info,.rst-content .note,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-ale
rt-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.rst-content .seealso,.rst-content .wy-alert-info.admonition-todo{background:#e7f2fa}.wy-alert.wy-alert-info .wy-alert-title,.rst-content .note .wy-alert-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.rst-content .note .admonition-title,.rst-content .wy-alert-info.a
ttention .admonition-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .seealso .admonition-title,.rst-content .wy-alert-info.admonition-todo .admonition-title{background:#6ab0de}.wy-alert.wy-alert-success,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.warning,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.admonition-todo{background:#dbfaf4}.wy-alert.wy-alert-success .wy-alert-title,.rst-content
.wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .hint .wy-alert-title,.rst-content .important .wy-alert-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .hint .admonition-title,.rst-content .important
.admonition-title,.rst-content .tip .admonition-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.admonition-todo .admonition-title{background:#1abc9c}.wy-alert.wy-alert-neutral,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.admonition-todo{background:#f3f6f6}.wy-alert.wy-alert-neutral .wy-alert-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-cont
ent .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.warning .admonition-title,
.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .admonition-title{color:#404040;background:#e1e4e5}.wy-alert.wy-alert-neutral a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.admonition-todo a{color:#2980B9}.wy-alert p:last-child,.rst-content .note p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.rst-content .seeals
o p:last-child,.rst-content .admonition-todo p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0px;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,0.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all 0.3s ease-in;-moz-transition:all 0.3s ease-in;transition:all 0.3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27AE60}.wy-tray-container li.wy-tray-item-info{background:#2980B9}.wy-tray-container li.wy-tray-item-warning{background:#E67E22}.wy-tray-container li.wy-tray-item-danger{background:#E74C3C}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width: 768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:b
utton;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px 12px;color:#fff;border:1px solid rgba(0,0,0,0.1);background-color:#27AE60;text-decoration:none;font-weight:normal;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:0px 1px 2px -1px rgba(255,255,255,0.5) inset,0px -2px 0px 0px rgba(0,0,0,0.1) inset;outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all 0.1s linear;-moz-transition:all 0.1s linear;transition:all 0.1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:0px -1px 0px 0px rgba(0,0,0,0.05)
inset,0px 2px 0px 0px rgba(0,0,0,0.1) inset;padding:8px 12px 6px 12px}.btn:visited{color:#fff}.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:0.4;cursor:not-allowed;box-shadow:none}.btn-disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:0.4;cursor:not-allowed;box-shadow:none}.btn-disabled:hover,.btn-disabled:focus,.btn-disabled:active{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:0.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980B9 !important}.btn-info:hover{background-color:#2e8ece !important}.btn-neutral{background-color:#f3f6f6 !important;color:#404040 !important}.btn-neutral:hover{background-color:#e5ebeb !important;color:#404040}.btn-neutral:visited{co
lor:#404040 !important}.btn-success{background-color:#27AE60 !important}.btn-success:hover{background-color:#295 !important}.btn-danger{background-color:#E74C3C !important}.btn-danger:hover{background-color:#ea6153 !important}.btn-warning{background-color:#E67E22 !important}.btn-warning:hover{background-color:#e98b39 !important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f !important}.btn-link{background-color:transparent !important;color:#2980B9;box-shadow:none;border-color:transparent !important}.btn-link:hover{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:active{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:visited{color:#9B59B6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:before,.wy-btn-group:after{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:i
nline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:solid 1px #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980B9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:solid 1px #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type="search"]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#f
cfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980B9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned input,.wy-form-aligned textarea,.wy-form-aligned select,.wy-form-aligned .wy-help-inline,.wy-form-aligned label{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-c
ontrol select{margin-top:6px}fieldset{border:0;margin:0;padding:0}legend{display:block;width:100%;border:0;padding:0;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label{display:block;margin:0 0 0.3125em 0;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#E74C3C}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds select{widt
h:100%}.wy-control-group .wy-form-full input[type="text"],.wy-control-group .wy-form-full input[type="password"],.wy-control-group .wy-form-full input[type="email"],.wy-control-group .wy-form-full input[type="url"],.wy-control-group .wy-form-full input[type="date"],.wy-control-group .wy-form-full input[type="month"],.wy-control-group .wy-form-full input[type="time"],.wy-control-group .wy-form-full input[type="datetime"],.wy-control-group .wy-form-full input[type="datetime-local"],.wy-control-group .wy-form-full input[type="week"],.wy-control-group .wy-form-full input[type="number"],.wy-control-group .wy-form-full input[type="search"],.wy-control-group .wy-form-full input[type="tel"],.wy-control-group .wy-form-full input[type="color"],.wy-control-group .wy-form-halves input[type="text"],.wy-control-group .wy-form-halves input[type="password"],.wy-control-group .wy-form-halves input[type="email"],.wy-control-group .wy-form-halves input[type="url"],.wy-control-group .wy-form-halves inp
ut[type="date"],.wy-control-group .wy-form-halves input[type="month"],.wy-control-group .wy-form-halves input[type="time"],.wy-control-group .wy-form-halves input[type="datetime"],.wy-control-group .wy-form-halves input[type="datetime-local"],.wy-control-group .wy-form-halves input[type="week"],.wy-control-group .wy-form-halves input[type="number"],.wy-control-group .wy-form-halves input[type="search"],.wy-control-group .wy-form-halves input[type="tel"],.wy-control-group .wy-form-halves input[type="color"],.wy-control-group .wy-form-thirds input[type="text"],.wy-control-group .wy-form-thirds input[type="password"],.wy-control-group .wy-form-thirds input[type="email"],.wy-control-group .wy-form-thirds input[type="url"],.wy-control-group .wy-form-thirds input[type="date"],.wy-control-group .wy-form-thirds input[type="month"],.wy-control-group .wy-form-thirds input[type="time"],.wy-control-group .wy-form-thirds input[type="datetime"],.wy-control-group .wy-form-thirds input[type="dateti
me-local"],.wy-control-group .wy-form-thirds input[type="week"],.wy-control-group .wy-form-thirds input[type="number"],.wy-control-group .wy-form-thirds input[type="search"],.wy-control-group .wy-form-thirds input[type="tel"],.wy-control-group .wy-form-thirds input[type="color"]{width:100%}.wy-control-group .wy-form-full{float:left;display:block;margin-right:2.35765%;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child{margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n+1){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child{margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nt
h-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control{margin:6px 0 0 0;font-size:90%}.wy-control-no-input{display:inline-block;margin:6px 0 0 0;font-size:90%}.wy-control-group.fluid-input input[type="text"],.wy-control-group.fluid-input input[type="password"],.wy-control-group.fluid-input input[type="email"],.wy-control-group.fluid-input input[type="url"],.wy-control-group.fluid-input input[type="date"],.wy-control-group.fluid-input input[type="month"],.wy-control-group.fluid-input input[type="time"],.wy-control-group.fluid-input input[type="datetime"],.wy-control-group.fluid-input input[type="datetime-local"],.wy-control-group.fluid-input input[type="week"],.wy-control-group.fluid-input input[type="number"],.wy-control-group.fluid-input input[type="search"],.wy-control-group.fluid-input input[type="tel"],.wy-control-group.fluid-input input[type="color"]{width:100%}.wy-form-message-inline{display:inline-block;padding-left:0.3em;color:#666;vertical-align:
middle;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:0.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;*overflow:visible}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border 0.3s linear;-moz-transiti
on:border 0.3s linear;transition:border 0.3s linear}input[type="datetime-local"]{padding:0.34375em 0.625em}input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin-right:0.3125em;*height:13px;*width:13px}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus{outline:0;outline:thin dotted \9;border-color:#333}input.no-focus:focus{border-color
:#ccc !important}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:1px auto #129FEA}input[type="text"][disabled],input[type="password"][disabled],input[type="email"][disabled],input[type="url"][disabled],input[type="date"][disabled],input[type="month"][disabled],input[type="time"][disabled],input[type="datetime"][disabled],input[type="datetime-local"][disabled],input[type="week"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="color"][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#E74C3C;border:1px solid #E74C3C}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#E74C3C}input[type="file"]:focus:invalid:focus,input[type="radio"]:focus:invalid:focus,input[type="checkbox"]:focus:invalid:focus{outline-color:#E74C3C}input.wy-input-large{paddin
g:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif}select,textarea{padding:0.5em 0.625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border 0.3s linear;-moz-transition:border 0.3s linear;transition:border 0.3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type="radio"][disabled],input[type="checkbox"][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-pre
fix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:solid 1px #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{width:36px;height:12px;margin:12px 0;position:relative;border-radius:4px;background:#ccc;cursor:pointer;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.wy-switch:before{position:absolute;content:"";display:block;width:18px;height:18px;border-radius:4px;background:#999;left:-3px;top:-3px;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.wy-switch:after{content:"false";position:absolute;left:48px;display:block;font-size:12px;color:#ccc}.wy-switch.active{background:#1e8449}.wy-switch.active:before{left:24px;background:#27AE60}.wy-switch.active:after{content:"true"}.wy-switch.disab
led,.wy-switch.active.disabled{cursor:not-allowed}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#E74C3C}.wy-control-group.wy-control-group-error input[type="text"],.wy-control-group.wy-control-group-error input[type="password"],.wy-control-group.wy-control-group-error input[type="email"],.wy-control-group.wy-control-group-error input[type="url"],.wy-control-group.wy-control-group-error input[type="date"],.wy-control-group.wy-control-group-error input[type="month"],.wy-control-group.wy-control-group-error input[type="time"],.wy-control-group.wy-control-group-error input[type="datetime"],.wy-control-group.wy-control-group-error input[type="datetime-local"],.wy-control-group.wy-control-group-error input[type="week"],.wy-control-group.wy-control-group-error input[type="number"],.wy-control-group.wy-control-group-error input[type="search"],.wy-control-group.wy-control-group-error input[type="tel"],.wy-control-group.wy-contr
ol-group-error input[type="color"]{border:solid 1px #E74C3C}.wy-control-group.wy-control-group-error textarea{border:solid 1px #E74C3C}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:0.5em 0.625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27AE60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#E74C3C}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#E67E22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980B9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-t
ransform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width: 480px){.wy-form button[type="submit"]{margin:0.7em 0 0}.wy-form input[type="text"],.wy-form input[type="password"],.wy-form input
[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0.3em;display:block}.wy-form label{margin-bottom:0.3em;display:block}.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:0.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0 0}.wy-form .wy-help-in
line,.wy-form-message-inline,.wy-form-message{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width: 768px){.tablet-hide{display:none}}@media screen and (max-width: 480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.wy-table,.rst-content table.docutils,.rst-content table.field-list{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.wy-table caption,.rst-content table.docutils caption,.rst-content table.field-list caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td,.wy-table th,.rst-content table.docutils th,.rst-content table.field-list th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.wy-table td:first-child,.rst-content table.docutils td:first-child,.rst-content table.field-list td:first-child,.wy-table th:first-child,.rst-content table.docutils th:first-child,.
rst-content table.field-list th:first-child{border-left-width:0}.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.wy-table thead th,.rst-content table.docutils thead th,.rst-content table.field-list thead th{font-weight:bold;border-bottom:solid 2px #e1e4e5}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td{background-color:transparent;vertical-align:middle}.wy-table td p,.rst-content table.docutils td p,.rst-content table.field-list td p{line-height:18px}.wy-table td p:last-child,.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child{margin-bottom:0}.wy-table .wy-table-cell-min,.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min{width:1%;padding-right:0}.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-co
ntent table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:gray;font-size:90%}.wy-table-tertiary{color:gray;font-size:80%}.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td,.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td{background-color:#f3f6f6}.wy-table-backed{background-color:#f3f6f6}.wy-table-bordered-all,.rst-content table.docutils{border:1px solid #e1e4e5}.wy-table-bordered-all td,.rst-content table.docutils td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.wy-table-bordered-all tbody>tr:last-child td,.rst-content table.docutils tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-ch
ild td{border-bottom-width:0}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0 !important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980B9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9B59B6}html{height:100%;overflow-x:hidden}body{font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;font-weight:normal;color:#404040;min-height:100%;overflow-x:hidden;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.w
y-text-warning{color:#E67E22 !important}a.wy-text-warning:hover{color:#eb9950 !important}.wy-text-info{color:#2980B9 !important}a.wy-text-info:hover{color:#409ad5 !important}.wy-text-success{color:#27AE60 !important}a.wy-text-success:hover{color:#36d278 !important}.wy-text-danger{color:#E74C3C !important}a.wy-text-danger:hover{color:#ed7669 !important}.wy-text-neutral{color:#404040 !important}a.wy-text-neutral:hover{color:#595959 !important}h1,h2,.rst-content .toctree-wrapper p.caption,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif}p{line-height:24px;margin:0;font-size:16px;margin-bottom:24px}h1{font-size:175%}h2,.rst-content .toctree-wrapper p.caption{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}code,.rst-content tt,.rst-content code{white-space:nowrap;max-width:100%;background:#ff
f;border:solid 1px #e1e4e5;font-size:75%;padding:0 5px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;color:#E74C3C;overflow-x:auto}code.code-large,.rst-content tt.code-large{font-size:90%}.wy-plain-list-disc,.rst-content .section ul,.rst-content .toctree-wrapper ul,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.wy-plain-list-disc li,.rst-content .section ul li,.rst-content .toctree-wrapper ul li,article ul li{list-style:disc;margin-left:24px}.wy-plain-list-disc li p:last-child,.rst-content .section ul li p:last-child,.rst-content .toctree-wrapper ul li p:last-child,article ul li p:last-child{margin-bottom:0}.wy-plain-list-disc li ul,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li ul,article ul li ul{margin-bottom:0}.wy-plain-list-disc li li,.rst-content .section ul li li,.rst-content
.toctree-wrapper ul li li,article ul li li{list-style:circle}.wy-plain-list-disc li li li,.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,article ul li li li{list-style:square}.wy-plain-list-disc li ol li,.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,article ul li ol li{list-style:decimal}.wy-plain-list-decimal,.rst-content .section ol,.rst-content ol.arabic,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.wy-plain-list-decimal li,.rst-content .section ol li,.rst-content ol.arabic li,article ol li{list-style:decimal;margin-left:24px}.wy-plain-list-decimal li p:last-child,.rst-content .section ol li p:last-child,.rst-content ol.arabic li p:last-child,article ol li p:last-child{margin-bottom:0}.wy-plain-list-decimal li ul,.rst-content .section ol li ul,.rst-content ol.arabic li ul,article ol li ul{margin-bottom:0}.wy-plain-list-decimal li ul li,.rst-content .section ol li ul li,.rst-content ol.arabic li ul li
,article ol li ul li{list-style:disc}.codeblock-example{border:1px solid #e1e4e5;border-bottom:none;padding:24px;padding-top:48px;font-weight:500;background:#fff;position:relative}.codeblock-example:after{content:"Example";position:absolute;top:0px;left:0px;background:#9B59B6;color:#fff;padding:6px 12px}.codeblock-example.prettyprint-example-only{border:1px solid #e1e4e5;margin-bottom:24px}.codeblock,pre.literal-block,.rst-content .literal-block,.rst-content pre.literal-block,div[class^='highlight']{border:1px solid #e1e4e5;padding:0px;overflow-x:auto;background:#fff;margin:1px 0 24px 0}.codeblock div[class^='highlight'],pre.literal-block div[class^='highlight'],.rst-content .literal-block div[class^='highlight'],div[class^='highlight'] div[class^='highlight']{border:none;background:none;margin:0}div[class^='highlight'] td.code{width:100%}.linenodiv pre{border-right:solid 1px #e6e9ea;margin:0;padding:12px 12px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Luc
ida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;font-size:12px;line-height:1.5;color:#d9d9d9}div[class^='highlight'] pre{white-space:pre;margin:0;padding:12px 12px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;font-size:12px;line-height:1.5;display:block;overflow:auto;color:#404040}@media print{.codeblock,pre.literal-block,.rst-content .literal-block,.rst-content pre.literal-block,div[class^='highlight'],div[class^='highlight'] pre{white-space:pre-wrap}}.hll{background-color:#ffc;margin:0 -12px;padding:0 12px;display:block}.c{color:#998;font-style:italic}.err{color:#a61717;background-color:#e3d2d2}.k{font-weight:bold}.o{font-weight:bold}.cm{color:#998;font-style:italic}.cp{color:#999;font-weight:bold}.c1{color:#998;font-style:it
alic}.cs{color:#999;font-weight:bold;font-style:italic}.gd{color:#000;background-color:#fdd}.gd .x{color:#000;background-color:#faa}.ge{font-style:italic}.gr{color:#a00}.gh{color:#999}.gi{color:#000;background-color:#dfd}.gi .x{color:#000;background-color:#afa}.go{color:#888}.gp{color:#555}.gs{font-weight:bold}.gu{color:purple;font-weight:bold}.gt{color:#a00}.kc{font-weight:bold}.kd{font-weight:bold}.kn{font-weight:bold}.kp{font-weight:bold}.kr{font-weight:bold}.kt{color:#458;font-weight:bold}.m{color:#099}.s{color:#d14}.n{color:#333}.na{color:teal}.nb{color:#0086b3}.nc{color:#458;font-weight:bold}.no{color:teal}.ni{color:purple}.ne{color:#900;font-weight:bold}.nf{color:#900;font-weight:bold}.nn{color:#555}.nt{color:navy}.nv{color:teal}.ow{font-weight:bold}.w{color:#bbb}.mf{color:#099}.mh{color:#099}.mi{color:#099}.mo{color:#099}.sb{color:#d14}.sc{color:#d14}.sd{color:#d14}.s2{color:#d14}.se{color:#d14}.sh{color:#d14}.si{color:#d14}.sx{color:#d14}.sr{color:#009926}.s1{color:#d14}.ss
{color:#990073}.bp{color:#999}.vc{color:teal}.vg{color:teal}.vi{color:teal}.il{color:#099}.gc{color:#999;background-color:#EAF2F5}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.wy-breadcrumbs li code,.wy-breadcrumbs li .rst-content tt,.rst-content .wy-breadcrumbs li tt{padding:5px;border:none;background:none}.wy-breadcrumbs li code.literal,.wy-breadcrumbs li .rst-content tt.literal,.rst-content .wy-breadcrumbs li tt.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width: 480px){.wy-breadcrumbs-extra{display:none}.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:before,.wy-men
u-horiz:after{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz ul,.wy-menu-horiz li{display:inline-block}.wy-menu-horiz li:hover{background:rgba(255,255,255,0.1)}.wy-menu-horiz li.divide-left{border-left:solid 1px #404040}.wy-menu-horiz li.divide-right{border-right:solid 1px #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{height:32px;display:inline-block;line-height:32px;padding:0 1.618em;margin-bottom:0;display:block;font-weight:bold;text-transform:uppercase;font-size:80%;color:#555;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:solid 1px #404040}.wy-menu-vertical li.divide-bottom{border-bottom:solid 1px #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:gray;border-right:solid 1px #c9c9c9;padding:0.4045em 2.427em}.wy-menu-vertical li.current a
:hover{background:#d6d6d6}.wy-menu-vertical li code,.wy-menu-vertical li .rst-content tt,.rst-content .wy-menu-vertical li tt{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li span.toctree-expand{display:block;float:left;margin-left:-1.2em;font-size:0.8em;line-height:1.6em;color:#4d4d4d}.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a{color:#404040;padding:0.4045em 1.618em;font-weight:bold;position:relative;background:#fcfcfc;border:none;border-bottom:solid 1px #c9c9c9;border-top:solid 1px #c9c9c9;padding-left:1.618em -4px}.wy-menu-vertical li.on a:hover,.wy-menu-vertical li.current>a:hover{background:#fcfcfc}.wy-menu-vertical li.on a:hover span.toctree-expand,.wy-menu-vertical li.current>a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand{display:block;font-size:0.8em;line-height:1.6em;color:#333}.wy-menu-vertical li.toctree-l1.current li.toctre
e-l2>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>ul{display:none}.wy-menu-vertical li.toctree-l1.current li.toctree-l2.current>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3.current>ul{display:block}.wy-menu-vertical li.toctree-l2.current>a{background:#c9c9c9;padding:0.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{display:block;background:#c9c9c9;padding:0.4045em 4.045em}.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l2 span.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3{font-size:0.9em}.wy-menu-vertical li.toctree-l3.current>a{background:#bdbdbd;padding:0.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{display:block;background:#bdbdbd;padding:0.4045em 5.663em;border-top:none;border-bottom:none}.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l3 span.toctree-expand{color:#969696}.wy-menu-vertical
li.toctree-l4{font-size:0.9em}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical .local-toc li ul{display:block}.wy-menu-vertical li ul li a{margin-bottom:0;color:#b3b3b3;font-weight:normal}.wy-menu-vertical a{display:inline-block;line-height:18px;padding:0.4045em 1.618em;display:block;position:relative;font-size:90%;color:#b3b3b3}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover span.toctree-expand{color:#b3b3b3}.wy-menu-vertical a:active{background-color:#2980B9;cursor:pointer;color:#fff}.wy-menu-vertical a:active span.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:0.809em;margin-bottom:0.809em;z-index:200;background-color:#2980B9;text-align:center;padding:0.809em;display:block;color:#fcfcfc;margin-bottom:0.809em}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{di
splay:block;margin:auto auto 0.809em auto;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a{color:#fcfcfc;font-size:100%;font-weight:bold;display:inline-block;padding:4px 6px;margin-bottom:0.809em}.wy-side-nav-search>a:hover,.wy-side-nav-search .wy-dropdown>a:hover{background:rgba(255,255,255,0.1)}.wy-side-nav-search>a img.logo,.wy-side-nav-search .wy-dropdown>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search>a.icon img.logo,.wy-side-nav-search .wy-dropdown>a.icon img.logo{margin-top:0.85em}.wy-side-nav-search>div.version{margin-top:-0.4045em;margin-bottom:0.809em;font-weight:normal;color:rgba(255,255,255,0.3)}.wy-nav .wy-menu-vertical header{color:#2980B9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980B9;color:#fff}[data-menu-wrap]{-webkit-transition:all 0.2s eas
e-in;-moz-transition:all 0.2s ease-in;transition:all 0.2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:left repeat-y #fcfcfc;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9I
mh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOERBMTRGRDBFMUUxMUUzODUwMkJCOThDMEVFNURFMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOERBMTRGRTBFMUUxMUUzODUwMkJCOThDMEVFNURFMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE4REExNEZCMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE4REExNEZDMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EwrlwAAAAA5JREFUeNpiMDU0BAgwAAE2AJgB9BnaAAAAAElFTkSuQmCC);background-size:300px 1px}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;backgroun
d:#2980B9;color:#fff;padding:0.4045em 0.809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:before,.wy-nav-top:after{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:bold}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:#999}footer p{margin-bottom:12px}footer span.commit code,footer span.commit .rst-content tt,.rst-content footer span.commit tt{padding:0px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans M
<TRUNCATED>
[03/14] incubator-superset-site git commit: Initial commit - Superset
docs as of 0.18.5
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..8423d38
--- /dev/null
+++ b/index.html
@@ -0,0 +1,332 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <title>Superset’s documentation — Superset's documentation documentation</title>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+
+
+
+
+
+ <link rel="index" title="Index"
+ href="genindex.html"/>
+ <link rel="search" title="Search" href="search.html"/>
+ <link rel="top" title="Superset's documentation documentation" href="#"/>
+ <link rel="next" title="Installation & Configuration" href="installation.html"/>
+
+
+ <script src="_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+ <div class="wy-grid-for-nav">
+
+
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search">
+
+
+
+ <a href="#" class="icon icon-home"> Superset's documentation
+
+
+
+ </a>
+
+
+
+
+
+
+
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+
+
+ </div>
+
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+
+
+
+ <ul>
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation & Configuration</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial for Superset Administrators</a></li>
+<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l1"><a class="reference internal" href="sqllab.html">SQL Lab</a></li>
+<li class="toctree-l1"><a class="reference internal" href="visualization.html">Visualization Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="videos.html">Videos</a></li>
+<li class="toctree-l1"><a class="reference internal" href="gallery.html">Gallery</a></li>
+<li class="toctree-l1"><a class="reference internal" href="druid.html">Druid</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
+</ul>
+
+
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+
+ <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="#">Superset's documentation</a>
+ </nav>
+
+
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="#">Docs</a> »</li>
+
+ <li>Superset’s documentation</li>
+ <li class="wy-breadcrumbs-aside">
+
+
+
+ </li>
+ </ul>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <img alt="_images/s.png" src="_images/s.png" />
+<div class="section" id="superset-s-documentation">
+<h1>Superset’s documentation<a class="headerlink" href="#superset-s-documentation" title="Permalink to this headline">¶</a></h1>
+<p>Superset is a data exploration platform designed to be visual, intuitive
+and interactive.</p>
+<hr class="docutils" />
+<div class="admonition warning">
+<p class="first admonition-title">Warning</p>
+<p class="last">This project was originally named Panoramix, was renamed to
+Caravel in March 2016, and is currently named Superset as of November 2016</p>
+</div>
+<div class="section" id="overview">
+<h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="features">
+<h3>Features<a class="headerlink" href="#features" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>A rich set of data visualizations, integrated from some of the best
+visualization libraries</li>
+<li>Create and share simple dashboards</li>
+<li>An extensible, high-granularity security/permission model allowing
+intricate rules on who can access individual features and the dataset</li>
+<li>Enterprise-ready authentication with integration with major authentication
+providers (database, OpenID, LDAP, OAuth & REMOTE_USER through
+Flask AppBuilder)</li>
+<li>A simple semantic layer, allowing users to control how data sources are
+displayed in the UI by defining which fields should show up in which
+drop-down and which aggregation and function metrics are made available
+to the user</li>
+<li>Integration with most RDBMS through SqlAlchemy</li>
+<li>Deep integration with Druid.io</li>
+</ul>
+<hr class="docutils" />
+<img alt="https://camo.githubusercontent.com/82e264ef777ba06e1858766fe3b8817ee108eb7e/687474703a2f2f672e7265636f726469742e636f2f784658537661475574732e676966" src="https://camo.githubusercontent.com/82e264ef777ba06e1858766fe3b8817ee108eb7e/687474703a2f2f672e7265636f726469742e636f2f784658537661475574732e676966" />
+<hr class="docutils" />
+<img alt="https://camo.githubusercontent.com/4991ff37a0005ea4e4267919a52786fda82d2d21/687474703a2f2f672e7265636f726469742e636f2f755a6767594f645235672e676966" src="https://camo.githubusercontent.com/4991ff37a0005ea4e4267919a52786fda82d2d21/687474703a2f2f672e7265636f726469742e636f2f755a6767594f645235672e676966" />
+<hr class="docutils" />
+<img alt="https://camo.githubusercontent.com/a389af15ac1e32a3d0fee941b4c62c850b1d583b/687474703a2f2f672e7265636f726469742e636f2f55373046574c704c76682e676966" src="https://camo.githubusercontent.com/a389af15ac1e32a3d0fee941b4c62c850b1d583b/687474703a2f2f672e7265636f726469742e636f2f55373046574c704c76682e676966" />
+</div>
+<hr class="docutils" />
+<div class="section" id="contents">
+<h3>Contents<a class="headerlink" href="#contents" title="Permalink to this headline">¶</a></h3>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation & Configuration</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#getting-started">Getting Started</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#os-dependencies">OS dependencies</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#python-virtualenv">Python virtualenv</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#python-s-setup-tools-and-pip">Python’s setup tools and pip</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#superset-installation-and-initialization">Superset installation and initialization</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#configuration-behind-a-load-balancer">Configuration behind a load balancer</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#configuration">Configuration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#database-dependencies">Database dependencies</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#aws-athena">(AWS) Athena</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#caching">Caching</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#deeper-sqlalchemy-integration">Deeper SQLAlchemy integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#schemas-postgres-redshift">Schemas (Postgres & Redshift)</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#ssl-access-to-databases">SSL Access to databases</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#druid">Druid</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#cors">CORS</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#middleware">MIDDLEWARE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#upgrading">Upgrading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#sql-lab">SQL Lab</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#making-your-own-build">Making your own build</a></li>
+<li class="toctree-l2"><a class="reference internal" href="installation.html#blueprints">Blueprints</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial for Superset Administrators</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="tutorial.html#connecting-to-a-new-database">Connecting to a new database</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorial.html#adding-a-new-table">Adding a new table</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorial.html#exploring-your-data">Exploring your data</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorial.html#creating-a-slice-and-dashboard">Creating a slice and dashboard</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="security.html#provided-roles">Provided Roles</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html#managing-gamma-per-data-source-access">Managing Gamma per data source access</a></li>
+<li class="toctree-l2"><a class="reference internal" href="security.html#customizing">Customizing</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="sqllab.html">SQL Lab</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="sqllab.html#feature-overview">Feature Overview</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sqllab.html#extra-features">Extra features</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sqllab.html#templating-with-jinja">Templating with Jinja</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="visualization.html">Visualization Tools</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="visualization.html#country-map-tools">Country Map Tools</a></li>
+<li class="toctree-l2"><a class="reference internal" href="visualization.html#list-of-countries">List of Countries</a></li>
+<li class="toctree-l2"><a class="reference internal" href="visualization.html#you-need-to-add-a-new-country">You need to add a new Country ?</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="videos.html">Videos</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="videos.html#quick-intro">Quick Intro</a></li>
+<li class="toctree-l2"><a class="reference internal" href="videos.html#dashboard-creation">Dashboard Creation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="videos.html#dashboard-filtering">Dashboard Filtering</a></li>
+<li class="toctree-l2"><a class="reference internal" href="videos.html#customize-css-and-dashboard-themes">Customize CSS and dashboard themes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="videos.html#slice-annotations">Slice Annotations</a></li>
+<li class="toctree-l2"><a class="reference internal" href="videos.html#adding-a-table">Adding a Table</a></li>
+<li class="toctree-l2"><a class="reference internal" href="videos.html#define-sql-expressions">Define SQL Expressions</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="gallery.html">Gallery</a></li>
+<li class="toctree-l1"><a class="reference internal" href="druid.html">Druid</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="druid.html#supported">Supported</a></li>
+<li class="toctree-l2"><a class="reference internal" href="druid.html#not-yet-supported">Not yet supported</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="faq.html#can-i-query-join-multiple-tables-at-one-time">Can I query/join multiple tables at one time?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="faq.html#how-big-can-my-data-source-be">How BIG can my data source be?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="faq.html#how-do-i-create-my-own-visualization">How do I create my own visualization?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="faq.html#why-are-my-queries-timing-out">Why are my queries timing out?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="faq.html#why-is-the-map-not-visible-in-the-mapbox-visualization">Why is the map not visible in the mapbox visualization?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="faq.html#how-to-add-dynamic-filters-to-a-dashboard">How to add dynamic filters to a dashboard?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="faq.html#why-does-fabmanager-or-superset-freezed-hung-not-responding-when-started-my-home-directory-is-nfs-mounted">Why does fabmanager or superset freezed/hung/not responding when started (my home directory is NFS mounted)?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="faq.html#how-do-i-add-new-columns-to-an-existing-table">How do I add new columns to an existing table</a></li>
+<li class="toctree-l2"><a class="reference internal" href="faq.html#how-do-i-go-about-developing-a-new-visualization-type">How do I go about developing a new visualization type?</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div class="section" id="indices-and-tables">
+<h3>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></li>
+<li><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></li>
+<li><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></li>
+</ul>
+</div>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ <footer>
+
+ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+
+ <a href="installation.html" class="btn btn-neutral float-right" title="Installation & Configuration" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
+
+
+ </div>
+
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>
+
+ </p>
+ </div>
+ Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
+
+ </div>
+ </div>
+
+ </section>
+
+ </div>
+
+
+
+
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT:'./',
+ VERSION:'',
+ COLLAPSE_INDEX:false,
+ FILE_SUFFIX:'.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+
+
+
+
+
+ <script type="text/javascript" src="_static/js/theme.js"></script>
+
+
+
+
+ <script type="text/javascript">
+ jQuery(function () {
+ SphinxRtdTheme.StickyNav.enable();
+ });
+ </script>
+
+
+</body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/installation.html
----------------------------------------------------------------------
diff --git a/installation.html b/installation.html
new file mode 100644
index 0000000..5e3047d
--- /dev/null
+++ b/installation.html
@@ -0,0 +1,693 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <title>Installation & Configuration — Superset's documentation documentation</title>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+
+
+
+
+
+ <link rel="index" title="Index"
+ href="genindex.html"/>
+ <link rel="search" title="Search" href="search.html"/>
+ <link rel="top" title="Superset's documentation documentation" href="index.html"/>
+ <link rel="next" title="Tutorial for Superset Administrators" href="tutorial.html"/>
+ <link rel="prev" title="Superset’s documentation" href="index.html"/>
+
+
+ <script src="_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+ <div class="wy-grid-for-nav">
+
+
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search">
+
+
+
+ <a href="index.html" class="icon icon-home"> Superset's documentation
+
+
+
+ </a>
+
+
+
+
+
+
+
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+
+
+ </div>
+
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+
+
+
+ <ul class="current">
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Installation & Configuration</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#getting-started">Getting Started</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#os-dependencies">OS dependencies</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#python-virtualenv">Python virtualenv</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#python-s-setup-tools-and-pip">Python’s setup tools and pip</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#superset-installation-and-initialization">Superset installation and initialization</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#configuration-behind-a-load-balancer">Configuration behind a load balancer</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#configuration">Configuration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#database-dependencies">Database dependencies</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#aws-athena">(AWS) Athena</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#caching">Caching</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#deeper-sqlalchemy-integration">Deeper SQLAlchemy integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#schemas-postgres-redshift">Schemas (Postgres & Redshift)</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#ssl-access-to-databases">SSL Access to databases</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#druid">Druid</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#cors">CORS</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#middleware">MIDDLEWARE</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#upgrading">Upgrading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#sql-lab">SQL Lab</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#making-your-own-build">Making your own build</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#blueprints">Blueprints</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial for Superset Administrators</a></li>
+<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l1"><a class="reference internal" href="sqllab.html">SQL Lab</a></li>
+<li class="toctree-l1"><a class="reference internal" href="visualization.html">Visualization Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="videos.html">Videos</a></li>
+<li class="toctree-l1"><a class="reference internal" href="gallery.html">Gallery</a></li>
+<li class="toctree-l1"><a class="reference internal" href="druid.html">Druid</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
+</ul>
+
+
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+
+ <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="index.html">Superset's documentation</a>
+ </nav>
+
+
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="index.html">Docs</a> »</li>
+
+ <li>Installation & Configuration</li>
+ <li class="wy-breadcrumbs-aside">
+
+
+
+ </li>
+ </ul>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <div class="section" id="installation-configuration">
+<h1>Installation & Configuration<a class="headerlink" href="#installation-configuration" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="getting-started">
+<h2>Getting Started<a class="headerlink" href="#getting-started" title="Permalink to this headline">¶</a></h2>
+<p>Superset is tested against Python <code class="docutils literal"><span class="pre">2.7</span></code> and Python <code class="docutils literal"><span class="pre">3.4</span></code>.
+Airbnb currently uses 2.7.* in production. We do not plan on supporting
+Python <code class="docutils literal"><span class="pre">2.6</span></code>.</p>
+</div>
+<div class="section" id="os-dependencies">
+<h2>OS dependencies<a class="headerlink" href="#os-dependencies" title="Permalink to this headline">¶</a></h2>
+<p>Superset stores database connection information in its metadata database.
+For that purpose, we use the <code class="docutils literal"><span class="pre">cryptography</span></code> Python library to encrypt
+connection passwords. Unfortunately this library has OS level dependencies.</p>
+<p>You may want to attempt the next step
+(“Superset installation and initialization”) and come back to this step if
+you encounter an error.</p>
+<p>Here’s how to install them:</p>
+<p>For <strong>Debian</strong> and <strong>Ubuntu</strong>, the following command will ensure that
+the required dependencies are installed:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">build</span><span class="o">-</span><span class="n">essential</span> <span class="n">libssl</span><span class="o">-</span><span class="n">dev</span> <span class="n">libffi</span><span class="o">-</span><span class="n">dev</span> <span class="n">python</span><span class="o">-</span><span class="n">dev</span> <span class="n">python</span><span class="o">-</span><span class="n">pip</span> <span class="n">libsasl2</span><span class="o">-</span><span class="n">dev</span> <span class="n">libldap2</span><span class="o">-</span><span class="n">dev</span>
+</pre></div>
+</div>
+<p>For <strong>Fedora</strong> and <strong>RHEL-derivatives</strong>, the following command will ensure
+that the required dependencies are installed:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">yum</span> <span class="n">upgrade</span> <span class="n">python</span><span class="o">-</span><span class="n">setuptools</span>
+<span class="n">sudo</span> <span class="n">yum</span> <span class="n">install</span> <span class="n">gcc</span> <span class="n">gcc</span><span class="o">-</span><span class="n">c</span><span class="o">++</span> <span class="n">libffi</span><span class="o">-</span><span class="n">devel</span> <span class="n">python</span><span class="o">-</span><span class="n">devel</span> <span class="n">python</span><span class="o">-</span><span class="n">pip</span> <span class="n">python</span><span class="o">-</span><span class="n">wheel</span> <span class="n">openssl</span><span class="o">-</span><span class="n">devel</span> <span class="n">libsasl2</span><span class="o">-</span><span class="n">devel</span> <span class="n">openldap</span><span class="o">-</span><span class="n">devel</span>
+</pre></div>
+</div>
+<p><strong>OSX</strong>, system python is not recommended. brew’s python also ships with pip</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">brew</span> <span class="n">install</span> <span class="n">pkg</span><span class="o">-</span><span class="n">config</span> <span class="n">libffi</span> <span class="n">openssl</span> <span class="n">python</span>
+<span class="n">env</span> <span class="n">LDFLAGS</span><span class="o">=</span><span class="s2">"-L$(brew --prefix openssl)/lib"</span> <span class="n">CFLAGS</span><span class="o">=</span><span class="s2">"-I$(brew --prefix openssl)/include"</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">cryptography</span><span class="o">==</span><span class="mf">1.7</span><span class="o">.</span><span class="mi">2</span>
+</pre></div>
+</div>
+<p><strong>Windows</strong> isn’t officially supported at this point, but if you want to
+attempt it, download <a class="reference external" href="https://bootstrap.pypa.io/get-pip.py">get-pip.py</a>, and run <code class="docutils literal"><span class="pre">python</span> <span class="pre">get-pip.py</span></code> which may need admin access. Then run the following:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">C</span><span class="p">:</span>\<span class="o">></span> <span class="n">pip</span> <span class="n">install</span> <span class="n">cryptography</span>
+
+<span class="c1"># You may also have to create C:\Temp</span>
+<span class="n">C</span><span class="p">:</span>\<span class="o">></span> <span class="n">md</span> <span class="n">C</span><span class="p">:</span>\<span class="n">Temp</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="python-virtualenv">
+<h2>Python virtualenv<a class="headerlink" href="#python-virtualenv" title="Permalink to this headline">¶</a></h2>
+<p>It is recommended to install Superset inside a virtualenv. Python 3 already ships virtualenv, for
+Python 2 you need to install it. If it’s packaged for your operating systems install it from there
+otherwise you can install from pip:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="n">virtualenv</span>
+</pre></div>
+</div>
+<p>You can create and activate a virtualenv by:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1"># virtualenv is shipped in Python 3 as pyvenv</span>
+<span class="n">virtualenv</span> <span class="n">venv</span>
+<span class="o">.</span> <span class="o">./</span><span class="n">venv</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">activate</span>
+</pre></div>
+</div>
+<p>On windows the syntax for activating it is a bit different:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">venv</span>\<span class="n">Scripts</span>\<span class="n">activate</span>
+</pre></div>
+</div>
+<p>Once you activated your virtualenv everything you are doing is confined inside the virtualenv.
+To exit a virtualenv just type <code class="docutils literal"><span class="pre">deactivate</span></code>.</p>
+</div>
+<div class="section" id="python-s-setup-tools-and-pip">
+<h2>Python’s setup tools and pip<a class="headerlink" href="#python-s-setup-tools-and-pip" title="Permalink to this headline">¶</a></h2>
+<p>Put all the chances on your side by getting the very latest <code class="docutils literal"><span class="pre">pip</span></code>
+and <code class="docutils literal"><span class="pre">setuptools</span></code> libraries.:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="o">--</span><span class="n">upgrade</span> <span class="n">setuptools</span> <span class="n">pip</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="superset-installation-and-initialization">
+<h2>Superset installation and initialization<a class="headerlink" href="#superset-installation-and-initialization" title="Permalink to this headline">¶</a></h2>
+<p>Follow these few simple steps to install Superset.:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1"># Install superset</span>
+<span class="n">pip</span> <span class="n">install</span> <span class="n">superset</span>
+
+<span class="c1"># Create an admin user (you will be prompted to set username, first and last name before setting a password)</span>
+<span class="n">fabmanager</span> <span class="n">create</span><span class="o">-</span><span class="n">admin</span> <span class="o">--</span><span class="n">app</span> <span class="n">superset</span>
+
+<span class="c1"># Initialize the database</span>
+<span class="n">superset</span> <span class="n">db</span> <span class="n">upgrade</span>
+
+<span class="c1"># Load some data to play with</span>
+<span class="n">superset</span> <span class="n">load_examples</span>
+
+<span class="c1"># Create default roles and permissions</span>
+<span class="n">superset</span> <span class="n">init</span>
+
+<span class="c1"># Start the web server on port 8088, use -p to bind to another port</span>
+<span class="n">superset</span> <span class="n">runserver</span>
+
+<span class="c1"># To start a development web server, use the -d switch</span>
+<span class="c1"># superset runserver -d</span>
+</pre></div>
+</div>
+<p>After installation, you should be able to point your browser to the right
+hostname:port <a class="reference external" href="http://localhost:8088">http://localhost:8088</a>, login using
+the credential you entered while creating the admin account, and navigate to
+<cite>Menu -> Admin -> Refresh Metadata</cite>. This action should bring in all of
+your datasources for Superset to be aware of, and they should show up in
+<cite>Menu -> Datasources</cite>, from where you can start playing with your data!</p>
+<p>Please note that <em>gunicorn</em>, Superset default application server, does not
+work on Windows so you need to use the development web server.
+The development web server though is not intended to be used on production systems
+so better use a supported platform that can run <em>gunicorn</em>.</p>
+</div>
+<div class="section" id="configuration-behind-a-load-balancer">
+<h2>Configuration behind a load balancer<a class="headerlink" href="#configuration-behind-a-load-balancer" title="Permalink to this headline">¶</a></h2>
+<p>If you are running superset behind a load balancer or reverse proxy (e.g. NGINX
+or ELB on AWS), you may need to utilise a healthcheck endpoint so that your
+load balancer knows if your superset instance is running. This is provided
+at <code class="docutils literal"><span class="pre">/health</span></code> which will return a 200 response containing “OK” if the
+webserver is running.</p>
+<p>If the load balancer is inserting X-Forwarded-For/X-Forwarded-Proto headers, you
+should set <cite>ENABLE_PROXY_FIX = True</cite> in the superset config file to extract and use
+the headers.</p>
+</div>
+<div class="section" id="configuration">
+<h2>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline">¶</a></h2>
+<p>To configure your application, you need to create a file (module)
+<code class="docutils literal"><span class="pre">superset_config.py</span></code> and make sure it is in your PYTHONPATH. Here are some
+of the parameters you can copy / paste in that configuration module:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="c1">#---------------------------------------------------------</span>
+<span class="c1"># Superset specific config</span>
+<span class="c1">#---------------------------------------------------------</span>
+<span class="n">ROW_LIMIT</span> <span class="o">=</span> <span class="mi">5000</span>
+<span class="n">SUPERSET_WORKERS</span> <span class="o">=</span> <span class="mi">4</span>
+
+<span class="n">SUPERSET_WEBSERVER_PORT</span> <span class="o">=</span> <span class="mi">8088</span>
+<span class="c1">#---------------------------------------------------------</span>
+
+<span class="c1">#---------------------------------------------------------</span>
+<span class="c1"># Flask App Builder configuration</span>
+<span class="c1">#---------------------------------------------------------</span>
+<span class="c1"># Your App secret key</span>
+<span class="n">SECRET_KEY</span> <span class="o">=</span> <span class="s1">'</span><span class="se">\2\1</span><span class="s1">thisismyscretkey</span><span class="se">\1\2</span><span class="s1">\e\y\y\h'</span>
+
+<span class="c1"># The SQLAlchemy connection string to your database backend</span>
+<span class="c1"># This connection defines the path to the database that stores your</span>
+<span class="c1"># superset metadata (slices, connections, tables, dashboards, ...).</span>
+<span class="c1"># Note that the connection information to connect to the datasources</span>
+<span class="c1"># you want to explore are managed directly in the web UI</span>
+<span class="n">SQLALCHEMY_DATABASE_URI</span> <span class="o">=</span> <span class="s1">'sqlite:////path/to/superset.db'</span>
+
+<span class="c1"># Flask-WTF flag for CSRF</span>
+<span class="n">WTF_CSRF_ENABLED</span> <span class="o">=</span> <span class="kc">True</span>
+
+<span class="c1"># Set this API key to enable Mapbox visualizations</span>
+<span class="n">MAPBOX_API_KEY</span> <span class="o">=</span> <span class="s1">''</span>
+</pre></div>
+</div>
+<p>This file also allows you to define configuration parameters used by
+Flask App Builder, the web framework used by Superset. Please consult
+the <a class="reference external" href="http://flask-appbuilder.readthedocs.org/en/latest/config.html">Flask App Builder Documentation</a>
+for more information on how to configure Superset.</p>
+<p>Please make sure to change:</p>
+<ul class="simple">
+<li><em>SQLALCHEMY_DATABASE_URI</em>, by default it is stored at <em>~/.superset/superset.db</em></li>
+<li><em>SECRET_KEY</em>, to a long random string</li>
+</ul>
+</div>
+<div class="section" id="database-dependencies">
+<h2>Database dependencies<a class="headerlink" href="#database-dependencies" title="Permalink to this headline">¶</a></h2>
+<p>Superset does not ship bundled with connectivity to databases, except
+for Sqlite, which is part of the Python standard library.
+You’ll need to install the required packages for the database you
+want to use as your metadata database as well as the packages needed to
+connect to the databases you want to access through Superset.</p>
+<p>Here’s a list of some of the recommended packages.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="15%" />
+<col width="37%" />
+<col width="49%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">database</th>
+<th class="head">pypi package</th>
+<th class="head">SQLAlchemy URI prefix</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>MySQL</td>
+<td><code class="docutils literal"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">mysqlclient</span></code></td>
+<td><code class="docutils literal"><span class="pre">mysql://</span></code></td>
+</tr>
+<tr class="row-odd"><td>Postgres</td>
+<td><code class="docutils literal"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">psycopg2</span></code></td>
+<td><code class="docutils literal"><span class="pre">postgresql+psycopg2://</span></code></td>
+</tr>
+<tr class="row-even"><td>Presto</td>
+<td><code class="docutils literal"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">pyhive</span></code></td>
+<td><code class="docutils literal"><span class="pre">presto://</span></code></td>
+</tr>
+<tr class="row-odd"><td>Oracle</td>
+<td><code class="docutils literal"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">cx_Oracle</span></code></td>
+<td><code class="docutils literal"><span class="pre">oracle://</span></code></td>
+</tr>
+<tr class="row-even"><td>sqlite</td>
+<td> </td>
+<td><code class="docutils literal"><span class="pre">sqlite://</span></code></td>
+</tr>
+<tr class="row-odd"><td>Redshift</td>
+<td><code class="docutils literal"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">sqlalchemy-redshift</span></code></td>
+<td><code class="docutils literal"><span class="pre">postgresql+psycopg2://</span></code></td>
+</tr>
+<tr class="row-even"><td>MSSQL</td>
+<td><code class="docutils literal"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">pymssql</span></code></td>
+<td><code class="docutils literal"><span class="pre">mssql://</span></code></td>
+</tr>
+<tr class="row-odd"><td>Impala</td>
+<td><code class="docutils literal"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">impyla</span></code></td>
+<td><code class="docutils literal"><span class="pre">impala://</span></code></td>
+</tr>
+<tr class="row-even"><td>SparkSQL</td>
+<td><code class="docutils literal"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">pyhive</span></code></td>
+<td><code class="docutils literal"><span class="pre">jdbc+hive://</span></code></td>
+</tr>
+<tr class="row-odd"><td>Greenplum</td>
+<td><code class="docutils literal"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">psycopg2</span></code></td>
+<td><code class="docutils literal"><span class="pre">postgresql+psycopg2://</span></code></td>
+</tr>
+<tr class="row-even"><td>Athena</td>
+<td><code class="docutils literal"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">"PyAthenaJDBC>1.0.9"</span></code></td>
+<td><code class="docutils literal"><span class="pre">awsathena+jdbc://</span></code></td>
+</tr>
+<tr class="row-odd"><td>Vertica</td>
+<td><code class="docutils literal"><span class="pre">pip</span> <span class="pre">install</span>
+<span class="pre">sqlalchemy-vertica-python</span></code></td>
+<td><code class="docutils literal"><span class="pre">vertica+vertica_python://</span></code></td>
+</tr>
+<tr class="row-even"><td>ClickHouse</td>
+<td><code class="docutils literal"><span class="pre">pip</span> <span class="pre">install</span>
+<span class="pre">sqlalchemy-clickhouse</span></code></td>
+<td><code class="docutils literal"><span class="pre">clickhouse://</span></code></td>
+</tr>
+</tbody>
+</table>
+<p>Note that many other database are supported, the main criteria being the
+existence of a functional SqlAlchemy dialect and Python driver. Googling
+the keyword <code class="docutils literal"><span class="pre">sqlalchemy</span></code> in addition of a keyword that describes the
+database you want to connect to should get you to the right place.</p>
+</div>
+<div class="section" id="aws-athena">
+<h2>(AWS) Athena<a class="headerlink" href="#aws-athena" title="Permalink to this headline">¶</a></h2>
+<p>This currently relies on an unreleased future version of <a class="reference external" href="https://github.com/laughingman7743/PyAthenaJDBC">PyAthenaJDBC</a>. If you’re adventurous or simply impatient, you can install directly from git:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="n">git</span><span class="o">+</span><span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">laughingman7743</span><span class="o">/</span><span class="n">PyAthenaJDBC</span><span class="nd">@support_sqlalchemy</span>
+</pre></div>
+</div>
+<p>The connection string for Athena looks like this</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span>awsathena+jdbc://{aws_access_key_id}:{aws_secret_access_key}@athena.{region_name}.amazonaws.com/{schema_name}?s3_staging_dir={s3_staging_dir}&...
+</pre></div>
+</div>
+<p>Where you need to escape/encode at least the s3_staging_dir, i.e.,</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">s3</span><span class="p">:</span><span class="o">//...</span> <span class="o">-></span> <span class="n">s3</span><span class="o">%</span><span class="mi">3</span><span class="n">A</span><span class="o">//...</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="caching">
+<h2>Caching<a class="headerlink" href="#caching" title="Permalink to this headline">¶</a></h2>
+<p>Superset uses <a class="reference external" href="https://pythonhosted.org/Flask-Cache/">Flask-Cache</a> for
+caching purpose. Configuring your caching backend is as easy as providing
+a <code class="docutils literal"><span class="pre">CACHE_CONFIG</span></code>, constant in your <code class="docutils literal"><span class="pre">superset_config.py</span></code> that
+complies with the Flask-Cache specifications.</p>
+<p>Flask-Cache supports multiple caching backends (Redis, Memcached,
+SimpleCache (in-memory), or the local filesystem). If you are going to use
+Memcached please use the <cite>pylibmc</cite> client library as <cite>python-memcached</cite> does
+not handle storing binary data correctly. If you use Redis, please install
+the <a class="reference external" href="https://pypi.python.org/pypi/redis">redis</a> Python package:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="n">redis</span>
+</pre></div>
+</div>
+<p>For setting your timeouts, this is done in the Superset metadata and goes
+up the “timeout searchpath”, from your slice configuration, to your
+data source’s configuration, to your database’s and ultimately falls back
+into your global default defined in <code class="docutils literal"><span class="pre">CACHE_CONFIG</span></code>.</p>
+</div>
+<div class="section" id="deeper-sqlalchemy-integration">
+<h2>Deeper SQLAlchemy integration<a class="headerlink" href="#deeper-sqlalchemy-integration" title="Permalink to this headline">¶</a></h2>
+<p>It is possible to tweak the database connection information using the
+parameters exposed by SQLAlchemy. In the <code class="docutils literal"><span class="pre">Database</span></code> edit view, you will
+find an <code class="docutils literal"><span class="pre">extra</span></code> field as a <code class="docutils literal"><span class="pre">JSON</span></code> blob.</p>
+<a class="reference internal image-reference" href="_images/add_db.png"><img alt="_images/add_db.png" src="_images/add_db.png" style="width: 534.0px; height: 370.8px;" /></a>
+<p>This JSON string contains extra configuration elements. The <code class="docutils literal"><span class="pre">engine_params</span></code>
+object gets unpacked into the
+<a class="reference external" href="http://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine">sqlalchemy.create_engine</a> call,
+while the <code class="docutils literal"><span class="pre">metadata_params</span></code> get unpacked into the
+<a class="reference external" href="http://docs.sqlalchemy.org/en/rel_1_0/core/metadata.html#sqlalchemy.schema.MetaData">sqlalchemy.MetaData</a> call. Refer to the SQLAlchemy docs for more information.</p>
+</div>
+<div class="section" id="schemas-postgres-redshift">
+<h2>Schemas (Postgres & Redshift)<a class="headerlink" href="#schemas-postgres-redshift" title="Permalink to this headline">¶</a></h2>
+<p>Postgres and Redshift, as well as other database,
+use the concept of <strong>schema</strong> as a logical entity
+on top of the <strong>database</strong>. For Superset to connect to a specific schema,
+there’s a <strong>schema</strong> parameter you can set in the table form.</p>
+</div>
+<div class="section" id="ssl-access-to-databases">
+<h2>SSL Access to databases<a class="headerlink" href="#ssl-access-to-databases" title="Permalink to this headline">¶</a></h2>
+<p>This example worked with a MySQL database that requires SSL. The configuration
+may differ with other backends. This is what was put in the <code class="docutils literal"><span class="pre">extra</span></code>
+parameter</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="p">{</span>
+ <span class="s2">"metadata_params"</span><span class="p">:</span> <span class="p">{},</span>
+ <span class="s2">"engine_params"</span><span class="p">:</span> <span class="p">{</span>
+ <span class="s2">"connect_args"</span><span class="p">:{</span>
+ <span class="s2">"sslmode"</span><span class="p">:</span><span class="s2">"require"</span><span class="p">,</span>
+ <span class="s2">"sslrootcert"</span><span class="p">:</span> <span class="s2">"/path/to/my/pem"</span>
+ <span class="p">}</span>
+ <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="druid">
+<h2>Druid<a class="headerlink" href="#druid" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>From the UI, enter the information about your clusters in the
+<code class="docutils literal"><span class="pre">Admin->Clusters</span></code> menu by hitting the + sign.</li>
+<li>Once the Druid cluster connection information is entered, hit the
+<code class="docutils literal"><span class="pre">Admin->Refresh</span> <span class="pre">Metadata</span></code> menu item to populate</li>
+<li>Navigate to your datasources</li>
+</ul>
+<p>Note that you can run the <code class="docutils literal"><span class="pre">superset</span> <span class="pre">refresh_druid</span></code> command to refresh the
+metadata from your Druid cluster(s)</p>
+</div>
+<div class="section" id="cors">
+<h2>CORS<a class="headerlink" href="#cors" title="Permalink to this headline">¶</a></h2>
+<p>The extra CORS Dependency must be installed:</p>
+<blockquote>
+<div>superset[cors]</div></blockquote>
+<p>The following keys in <cite>superset_config.py</cite> can be specified to configure CORS:</p>
+<ul class="simple">
+<li><code class="docutils literal"><span class="pre">ENABLE_CORS</span></code>: Must be set to True in order to enable CORS</li>
+<li><code class="docutils literal"><span class="pre">CORS_OPTIONS</span></code>: options passed to Flask-CORS (<cite>documentation <http://flask-cors.corydolphin.com/en/latest/api.html#extension></cite>)</li>
+</ul>
+</div>
+<div class="section" id="middleware">
+<h2>MIDDLEWARE<a class="headerlink" href="#middleware" title="Permalink to this headline">¶</a></h2>
+<p>Superset allows you to add your own middleware. To add your own middleware, update the <code class="docutils literal"><span class="pre">ADDITIONAL_MIDDLEWARE</span></code> key in
+your <cite>superset_config.py</cite>. <code class="docutils literal"><span class="pre">ADDITIONAL_MIDDLEWARE</span></code> should be a list of your additional middleware classes.</p>
+<p>For example, to use AUTH_REMOTE_USER from behind a proxy server like nginx, you have to add a simple middleware class to
+add the value of <code class="docutils literal"><span class="pre">HTTP_X_PROXY_REMOTE_USER</span></code> (or any other custom header from the proxy) to Gunicorn’s <code class="docutils literal"><span class="pre">REMOTE_USER</span></code>
+environment variable:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">RemoteUserMiddleware</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">app</span><span class="p">):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">app</span> <span class="o">=</span> <span class="n">app</span>
+ <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">environ</span><span class="p">,</span> <span class="n">start_response</span><span class="p">):</span>
+ <span class="n">user</span> <span class="o">=</span> <span class="n">environ</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s1">'HTTP_X_PROXY_REMOTE_USER'</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="n">environ</span><span class="p">[</span><span class="s1">'REMOTE_USER'</span><span class="p">]</span> <span class="o">=</span> <span class="n">user</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">app</span><span class="p">(</span><span class="n">environ</span><span class="p">,</span> <span class="n">start_response</span><span class="p">)</span>
+
+<span class="n">ADDITIONAL_MIDDLEWARE</span> <span class="o">=</span> <span class="p">[</span><span class="n">RemoteUserMiddleware</span><span class="p">,</span> <span class="p">]</span>
+</pre></div>
+</div>
+<p><em>Adapted from http://flask.pocoo.org/snippets/69/</em></p>
+</div>
+<div class="section" id="upgrading">
+<h2>Upgrading<a class="headerlink" href="#upgrading" title="Permalink to this headline">¶</a></h2>
+<p>Upgrading should be as straightforward as running:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="n">superset</span> <span class="o">--</span><span class="n">upgrade</span>
+<span class="n">superset</span> <span class="n">db</span> <span class="n">upgrade</span>
+<span class="n">superset</span> <span class="n">init</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="sql-lab">
+<h2>SQL Lab<a class="headerlink" href="#sql-lab" title="Permalink to this headline">¶</a></h2>
+<p>SQL Lab is a powerful SQL IDE that works with all SQLAlchemy compatible
+databases. By default, queries are executed in the scope of a web
+request so they
+may eventually timeout as queries exceed the maximum duration of a web
+request in your environment, whether it’d be a reverse proxy or the Superset
+server itself.</p>
+<p>On large analytic databases, it’s common to run queries that
+execute for minutes or hours.
+To enable support for long running queries that
+execute beyond the typical web request’s timeout (30-60 seconds), it is
+necessary to configure an asynchronous backend for Superset which consist of:</p>
+<ul class="simple">
+<li>one or many Superset worker (which is implemented as a Celery worker), and
+can be started with the <code class="docutils literal"><span class="pre">superset</span> <span class="pre">worker</span></code> command, run
+<code class="docutils literal"><span class="pre">superset</span> <span class="pre">worker</span> <span class="pre">--help</span></code> to view the related options</li>
+<li>a celery broker (message queue) for which we recommend using Redis
+or RabbitMQ</li>
+<li>a results backend that defines where the worker will persist the query
+results</li>
+</ul>
+<p>Configuring Celery requires defining a <code class="docutils literal"><span class="pre">CELERY_CONFIG</span></code> in your
+<code class="docutils literal"><span class="pre">superset_config.py</span></code>. Both the worker and web server processes should
+have the same configuration.</p>
+<div class="highlight-python"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">CeleryConfig</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+<span class="n">BROKER_URL</span> <span class="o">=</span> <span class="s1">'redis://localhost:6379/0'</span>
+ <span class="n">CELERY_IMPORTS</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'superset.sql_lab'</span><span class="p">,</span> <span class="p">)</span>
+ <span class="n">CELERY_RESULT_BACKEND</span> <span class="o">=</span> <span class="s1">'redis://localhost:6379/0'</span>
+ <span class="n">CELERY_ANNOTATIONS</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'tasks.add'</span><span class="p">:</span> <span class="p">{</span><span class="s1">'rate_limit'</span><span class="p">:</span> <span class="s1">'10/s'</span><span class="p">}}</span>
+
+<span class="n">CELERY_CONFIG</span> <span class="o">=</span> <span class="n">CeleryConfig</span>
+</pre></div>
+</div>
+<p>To setup a result backend, you need to pass an instance of a derivative
+of <code class="docutils literal"><span class="pre">werkzeug.contrib.cache.BaseCache</span></code> to the <code class="docutils literal"><span class="pre">RESULTS_BACKEND</span></code>
+configuration key in your <code class="docutils literal"><span class="pre">superset_config.py</span></code>. It’s possible to use
+Memcached, Redis, S3 (<a class="reference external" href="https://pypi.python.org/pypi/s3werkzeugcache">https://pypi.python.org/pypi/s3werkzeugcache</a>),
+memory or the file system (in a single server-type setup or for testing),
+or to write your own caching interface. Your <code class="docutils literal"><span class="pre">superset_config.py</span></code> may
+look something like:</p>
+<div class="highlight-python"><div class="highlight"><pre><span></span> <span class="c1"># On S3</span>
+ <span class="kn">from</span> <span class="nn">s3cache.s3cache</span> <span class="kn">import</span> <span class="n">S3Cache</span>
+ <span class="n">S3_CACHE_BUCKET</span> <span class="o">=</span> <span class="s1">'foobar-superset'</span>
+ <span class="n">S3_CACHE_KEY_PREFIX</span> <span class="o">=</span> <span class="s1">'sql_lab_result'</span>
+ <span class="n">RESULTS_BACKEND</span> <span class="o">=</span> <span class="n">S3Cache</span><span class="p">(</span><span class="n">S3_CACHE_BUCKET</span><span class="p">,</span> <span class="n">S3_CACHE_KEY_PREFIX</span><span class="p">)</span>
+
+ <span class="c1"># On Redis</span>
+<span class="kn">from</span> <span class="nn">werkzeug.contrib.cache</span> <span class="kn">import</span> <span class="n">RedisCache</span>
+<span class="n">RESULTS_BACKEND</span> <span class="o">=</span> <span class="n">RedisCache</span><span class="p">(</span>
+ <span class="n">host</span><span class="o">=</span><span class="s1">'localhost'</span><span class="p">,</span> <span class="n">port</span><span class="o">=</span><span class="mi">6379</span><span class="p">,</span> <span class="n">key_prefix</span><span class="o">=</span><span class="s1">'superset_results'</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Also note that SQL Lab supports Jinja templating in queries, and that it’s
+possible to overload
+the default Jinja context in your environment by defining the
+<code class="docutils literal"><span class="pre">JINJA_CONTEXT_ADDONS</span></code> in your superset configuration. Objects referenced
+in this dictionary are made available for users to use in their SQL.</p>
+<div class="highlight-python"><div class="highlight"><pre><span></span><span class="n">JINJA_CONTEXT_ADDONS</span> <span class="o">=</span> <span class="p">{</span>
+ <span class="s1">'my_crazy_macro'</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="o">*</span><span class="mi">2</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="making-your-own-build">
+<h2>Making your own build<a class="headerlink" href="#making-your-own-build" title="Permalink to this headline">¶</a></h2>
+<p>For more advanced users, you may want to build Superset from sources. That
+would be the case if you fork the project to add features specific to
+your environment.:</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span># assuming $SUPERSET_HOME as the root of the repo
+cd $SUPERSET_HOME/superset/assets
+npm install
+npm run build
+cd $SUPERSET_HOME
+python setup.py install
+</pre></div>
+</div>
+</div>
+<div class="section" id="blueprints">
+<h2>Blueprints<a class="headerlink" href="#blueprints" title="Permalink to this headline">¶</a></h2>
+<p><a class="reference external" href="http://flask.pocoo.org/docs/0.12/blueprints/">Blueprints are Flask’s reusable apps</a>.
+Superset allows you to specify an array of Blueprints
+in your <code class="docutils literal"><span class="pre">superset_config</span></code> module. Here’s
+an example on how this can work with a simple Blueprint. By doing
+so, you can expect Superset to serve a page that says “OK”
+at the <code class="docutils literal"><span class="pre">/simple_page</span></code> url. This can allow you to run other things such
+as custom data visualization applications alongside Superset, on the
+same server.</p>
+<p>..code</p>
+<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">flask</span> <span class="k">import</span> <span class="n">Blueprint</span>
+<span class="n">simple_page</span> <span class="o">=</span> <span class="n">Blueprint</span><span class="p">(</span><span class="s1">'simple_page'</span><span class="p">,</span> <span class="n">__name__</span><span class="p">,</span>
+ <span class="n">template_folder</span><span class="o">=</span><span class="s1">'templates'</span><span class="p">)</span>
+<span class="nd">@simple_page</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s1">'/'</span><span class="p">,</span> <span class="n">defaults</span><span class="o">=</span><span class="p">{</span><span class="s1">'page'</span><span class="p">:</span> <span class="s1">'index'</span><span class="p">})</span>
+<span class="nd">@simple_page</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s1">'/<page>'</span><span class="p">)</span>
+<span class="k">def</span> <span class="nf">show</span><span class="p">(</span><span class="n">page</span><span class="p">):</span>
+ <span class="k">return</span> <span class="s2">"Ok"</span>
+
+<span class="n">BLUEPRINTS</span> <span class="o">=</span> <span class="p">[</span><span class="n">simple_page</span><span class="p">]</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ <footer>
+
+ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+
+ <a href="tutorial.html" class="btn btn-neutral float-right" title="Tutorial for Superset Administrators" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
+
+
+ <a href="index.html" class="btn btn-neutral" title="Superset’s documentation" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+
+ </div>
+
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>
+
+ </p>
+ </div>
+ Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
+
+ </div>
+ </div>
+
+ </section>
+
+ </div>
+
+
+
+
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT:'./',
+ VERSION:'',
+ COLLAPSE_INDEX:false,
+ FILE_SUFFIX:'.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+
+
+
+
+
+ <script type="text/javascript" src="_static/js/theme.js"></script>
+
+
+
+
+ <script type="text/javascript">
+ jQuery(function () {
+ SphinxRtdTheme.StickyNav.enable();
+ });
+ </script>
+
+
+</body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/objects.inv
----------------------------------------------------------------------
diff --git a/objects.inv b/objects.inv
new file mode 100644
index 0000000..a0e6342
--- /dev/null
+++ b/objects.inv
@@ -0,0 +1,7 @@
+# Sphinx inventory version 2
+# Project: Superset's documentation
+# Version:
+# The remainder of this file is compressed using zlib.
+x�m��j�0��~
+��vj�����Ơ���]�f+��c��<�=��8� �M��O�-�b����'�NpP�1^x� H��ش7�+$�A�ץ�@$������ȍ}x�3A�;�`-h��*:�ƻ;�:D�%�^j��l!{���k�
+�c?��}[mE�b���A��{ND��8��L����f�������p�g�Ɍ:��Z��8M�i�M/CF�|�2u�M���S��Y1r�O���ἄ�qZ������@��U1���h�Ι��4o'w۵\÷��>�c�h���J���O�tc�!N���ď��i�$+��W'�"X��o����ٽ�����
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/search.html
----------------------------------------------------------------------
diff --git a/search.html b/search.html
new file mode 100644
index 0000000..57269ac
--- /dev/null
+++ b/search.html
@@ -0,0 +1,210 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <title>Search — Superset's documentation documentation</title>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+
+
+
+
+
+ <link rel="index" title="Index"
+ href="genindex.html"/>
+ <link rel="search" title="Search" href="#"/>
+ <link rel="top" title="Superset's documentation documentation" href="index.html"/>
+
+
+ <script src="_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+ <div class="wy-grid-for-nav">
+
+
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search">
+
+
+
+ <a href="index.html" class="icon icon-home"> Superset's documentation
+
+
+
+ </a>
+
+
+
+
+
+
+
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="#" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+
+
+ </div>
+
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+
+
+
+ <ul>
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation & Configuration</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial for Superset Administrators</a></li>
+<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l1"><a class="reference internal" href="sqllab.html">SQL Lab</a></li>
+<li class="toctree-l1"><a class="reference internal" href="visualization.html">Visualization Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="videos.html">Videos</a></li>
+<li class="toctree-l1"><a class="reference internal" href="gallery.html">Gallery</a></li>
+<li class="toctree-l1"><a class="reference internal" href="druid.html">Druid</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
+</ul>
+
+
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+
+ <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="index.html">Superset's documentation</a>
+ </nav>
+
+
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="index.html">Docs</a> »</li>
+
+ <li>Search</li>
+ <li class="wy-breadcrumbs-aside">
+
+ </li>
+ </ul>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <noscript>
+ <div id="fallback" class="admonition warning">
+ <p class="last">
+ Please activate JavaScript to enable the search
+ functionality.
+ </p>
+ </div>
+ </noscript>
+
+
+ <div id="search-results">
+
+ </div>
+
+ </div>
+ </div>
+ <footer>
+
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>
+
+ </p>
+ </div>
+ Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
+
+ </div>
+ </div>
+
+ </section>
+
+ </div>
+
+
+
+
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT:'./',
+ VERSION:'',
+ COLLAPSE_INDEX:false,
+ FILE_SUFFIX:'.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <script type="text/javascript" src="_static/searchtools.js"></script>
+
+
+
+
+
+ <script type="text/javascript" src="_static/js/theme.js"></script>
+
+
+
+
+ <script type="text/javascript">
+ jQuery(function () {
+ SphinxRtdTheme.StickyNav.enable();
+ });
+ </script>
+
+ <script type="text/javascript">
+ jQuery(function() { Search.loadIndex("searchindex.js"); });
+ </script>
+
+ <script type="text/javascript" id="searchindexloader"></script>
+
+
+
+</body>
+</html>
\ No newline at end of file
[10/14] incubator-superset-site git commit: Initial commit - Superset
docs as of 0.18.5
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/docs.css
----------------------------------------------------------------------
diff --git a/_static/docs.css b/_static/docs.css
new file mode 100644
index 0000000..f592257
--- /dev/null
+++ b/_static/docs.css
@@ -0,0 +1,59 @@
+body {
+ padding-top: 0px;
+}
+
+div.navbar {
+ margin-bottom: 0px;
+}
+
+p {
+ margin-top: 5px;
+ margin-bottom: 15px;
+}
+
+#tutorial img {
+ border: 1px solid gray;
+ box-shadow: 5px 5px 5px #888888;
+ margin-bottom: 10px;
+}
+
+#gallery img {
+ border: 1px solid gray;
+ box-shadow: 5px 5px 5px #888888;
+ margin: 10px;
+}
+
+.carousel img {
+ max-height: 500px;
+}
+.carousel {
+ overflow: hidden;
+ height: 500px;
+}
+.carousel-caption h1 {
+ font-size: 80px;
+}
+.carousel-caption p {
+ font-size: 20px;
+}
+div.carousel-caption{
+ background: rgba(0,0,0,0.5);
+ border-radius: 20px;
+ top: 150px;
+ bottom: auto !important;
+}
+.carousel-inner > .item > img {
+ margin: 0 auto;
+}
+{
+ margin: -20px;
+}
+.carousel-indicators li {
+ background-color: #AAA;
+ border: 1px solid black;
+}
+
+.carousel-indicators .active {
+ background-color: #000;
+ border: 5px solid black;
+}
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/doctools.js
----------------------------------------------------------------------
diff --git a/_static/doctools.js b/_static/doctools.js
new file mode 100644
index 0000000..8163495
--- /dev/null
+++ b/_static/doctools.js
@@ -0,0 +1,287 @@
+/*
+ * doctools.js
+ * ~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for all documentation.
+ *
+ * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/**
+ * select a different prefix for underscore
+ */
+$u = _.noConflict();
+
+/**
+ * make the code below compatible with browsers without
+ * an installed firebug like debugger
+if (!window.console || !console.firebug) {
+ var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
+ "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
+ "profile", "profileEnd"];
+ window.console = {};
+ for (var i = 0; i < names.length; ++i)
+ window.console[names[i]] = function() {};
+}
+ */
+
+/**
+ * small helper function to urldecode strings
+ */
+jQuery.urldecode = function(x) {
+ return decodeURIComponent(x).replace(/\+/g, ' ');
+};
+
+/**
+ * small helper function to urlencode strings
+ */
+jQuery.urlencode = encodeURIComponent;
+
+/**
+ * This function returns the parsed url parameters of the
+ * current request. Multiple values per key are supported,
+ * it will always return arrays of strings for the value parts.
+ */
+jQuery.getQueryParameters = function(s) {
+ if (typeof s == 'undefined')
+ s = document.location.search;
+ var parts = s.substr(s.indexOf('?') + 1).split('&');
+ var result = {};
+ for (var i = 0; i < parts.length; i++) {
+ var tmp = parts[i].split('=', 2);
+ var key = jQuery.urldecode(tmp[0]);
+ var value = jQuery.urldecode(tmp[1]);
+ if (key in result)
+ result[key].push(value);
+ else
+ result[key] = [value];
+ }
+ return result;
+};
+
+/**
+ * highlight a given string on a jquery object by wrapping it in
+ * span elements with the given class name.
+ */
+jQuery.fn.highlightText = function(text, className) {
+ function highlight(node) {
+ if (node.nodeType == 3) {
+ var val = node.nodeValue;
+ var pos = val.toLowerCase().indexOf(text);
+ if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
+ var span = document.createElement("span");
+ span.className = className;
+ span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+ node.parentNode.insertBefore(span, node.parentNode.insertBefore(
+ document.createTextNode(val.substr(pos + text.length)),
+ node.nextSibling));
+ node.nodeValue = val.substr(0, pos);
+ }
+ }
+ else if (!jQuery(node).is("button, select, textarea")) {
+ jQuery.each(node.childNodes, function() {
+ highlight(this);
+ });
+ }
+ }
+ return this.each(function() {
+ highlight(this);
+ });
+};
+
+/*
+ * backward compatibility for jQuery.browser
+ * This will be supported until firefox bug is fixed.
+ */
+if (!jQuery.browser) {
+ jQuery.uaMatch = function(ua) {
+ ua = ua.toLowerCase();
+
+ var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
+ /(webkit)[ \/]([\w.]+)/.exec(ua) ||
+ /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
+ /(msie) ([\w.]+)/.exec(ua) ||
+ ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
+ [];
+
+ return {
+ browser: match[ 1 ] || "",
+ version: match[ 2 ] || "0"
+ };
+ };
+ jQuery.browser = {};
+ jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
+}
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+var Documentation = {
+
+ init : function() {
+ this.fixFirefoxAnchorBug();
+ this.highlightSearchWords();
+ this.initIndexTable();
+
+ },
+
+ /**
+ * i18n support
+ */
+ TRANSLATIONS : {},
+ PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
+ LOCALE : 'unknown',
+
+ // gettext and ngettext don't access this so that the functions
+ // can safely bound to a different name (_ = Documentation.gettext)
+ gettext : function(string) {
+ var translated = Documentation.TRANSLATIONS[string];
+ if (typeof translated == 'undefined')
+ return string;
+ return (typeof translated == 'string') ? translated : translated[0];
+ },
+
+ ngettext : function(singular, plural, n) {
+ var translated = Documentation.TRANSLATIONS[singular];
+ if (typeof translated == 'undefined')
+ return (n == 1) ? singular : plural;
+ return translated[Documentation.PLURALEXPR(n)];
+ },
+
+ addTranslations : function(catalog) {
+ for (var key in catalog.messages)
+ this.TRANSLATIONS[key] = catalog.messages[key];
+ this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
+ this.LOCALE = catalog.locale;
+ },
+
+ /**
+ * add context elements like header anchor links
+ */
+ addContextElements : function() {
+ $('div[id] > :header:first').each(function() {
+ $('<a class="headerlink">\u00B6</a>').
+ attr('href', '#' + this.id).
+ attr('title', _('Permalink to this headline')).
+ appendTo(this);
+ });
+ $('dt[id]').each(function() {
+ $('<a class="headerlink">\u00B6</a>').
+ attr('href', '#' + this.id).
+ attr('title', _('Permalink to this definition')).
+ appendTo(this);
+ });
+ },
+
+ /**
+ * workaround a firefox stupidity
+ * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
+ */
+ fixFirefoxAnchorBug : function() {
+ if (document.location.hash)
+ window.setTimeout(function() {
+ document.location.href += '';
+ }, 10);
+ },
+
+ /**
+ * highlight the search words provided in the url in the text
+ */
+ highlightSearchWords : function() {
+ var params = $.getQueryParameters();
+ var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
+ if (terms.length) {
+ var body = $('div.body');
+ if (!body.length) {
+ body = $('body');
+ }
+ window.setTimeout(function() {
+ $.each(terms, function() {
+ body.highlightText(this.toLowerCase(), 'highlighted');
+ });
+ }, 10);
+ $('<p class="highlight-link"><a href="javascript:Documentation.' +
+ 'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
+ .appendTo($('#searchbox'));
+ }
+ },
+
+ /**
+ * init the domain index toggle buttons
+ */
+ initIndexTable : function() {
+ var togglers = $('img.toggler').click(function() {
+ var src = $(this).attr('src');
+ var idnum = $(this).attr('id').substr(7);
+ $('tr.cg-' + idnum).toggle();
+ if (src.substr(-9) == 'minus.png')
+ $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
+ else
+ $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
+ }).css('display', '');
+ if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
+ togglers.click();
+ }
+ },
+
+ /**
+ * helper function to hide the search marks again
+ */
+ hideSearchWords : function() {
+ $('#searchbox .highlight-link').fadeOut(300);
+ $('span.highlighted').removeClass('highlighted');
+ },
+
+ /**
+ * make the url absolute
+ */
+ makeURL : function(relativeURL) {
+ return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
+ },
+
+ /**
+ * get the current relative url
+ */
+ getCurrentURL : function() {
+ var path = document.location.pathname;
+ var parts = path.split(/\//);
+ $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
+ if (this == '..')
+ parts.pop();
+ });
+ var url = parts.join('/');
+ return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+ },
+
+ initOnKeyListeners: function() {
+ $(document).keyup(function(event) {
+ var activeElementType = document.activeElement.tagName;
+ // don't navigate when in search box or textarea
+ if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') {
+ switch (event.keyCode) {
+ case 37: // left
+ var prevHref = $('link[rel="prev"]').prop('href');
+ if (prevHref) {
+ window.location.href = prevHref;
+ return false;
+ }
+ case 39: // right
+ var nextHref = $('link[rel="next"]').prop('href');
+ if (nextHref) {
+ window.location.href = nextHref;
+ return false;
+ }
+ }
+ }
+ });
+ }
+};
+
+// quick alias for translations
+_ = Documentation.gettext;
+
+$(document).ready(function() {
+ Documentation.init();
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/down-pressed.png
----------------------------------------------------------------------
diff --git a/_static/down-pressed.png b/_static/down-pressed.png
new file mode 100644
index 0000000..7c30d00
Binary files /dev/null and b/_static/down-pressed.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/down.png
----------------------------------------------------------------------
diff --git a/_static/down.png b/_static/down.png
new file mode 100644
index 0000000..f48098a
Binary files /dev/null and b/_static/down.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/file.png
----------------------------------------------------------------------
diff --git a/_static/file.png b/_static/file.png
new file mode 100644
index 0000000..254c60b
Binary files /dev/null and b/_static/file.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/fonts/Inconsolata-Bold.ttf
----------------------------------------------------------------------
diff --git a/_static/fonts/Inconsolata-Bold.ttf b/_static/fonts/Inconsolata-Bold.ttf
new file mode 100644
index 0000000..58c9fef
Binary files /dev/null and b/_static/fonts/Inconsolata-Bold.ttf differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/fonts/Inconsolata-Regular.ttf
----------------------------------------------------------------------
diff --git a/_static/fonts/Inconsolata-Regular.ttf b/_static/fonts/Inconsolata-Regular.ttf
new file mode 100644
index 0000000..a87ffba
Binary files /dev/null and b/_static/fonts/Inconsolata-Regular.ttf differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/fonts/Lato-Bold.ttf
----------------------------------------------------------------------
diff --git a/_static/fonts/Lato-Bold.ttf b/_static/fonts/Lato-Bold.ttf
new file mode 100644
index 0000000..7434369
Binary files /dev/null and b/_static/fonts/Lato-Bold.ttf differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/fonts/Lato-Regular.ttf
----------------------------------------------------------------------
diff --git a/_static/fonts/Lato-Regular.ttf b/_static/fonts/Lato-Regular.ttf
new file mode 100644
index 0000000..04ea8ef
Binary files /dev/null and b/_static/fonts/Lato-Regular.ttf differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/fonts/RobotoSlab-Bold.ttf
----------------------------------------------------------------------
diff --git a/_static/fonts/RobotoSlab-Bold.ttf b/_static/fonts/RobotoSlab-Bold.ttf
new file mode 100644
index 0000000..df5d1df
Binary files /dev/null and b/_static/fonts/RobotoSlab-Bold.ttf differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/fonts/RobotoSlab-Regular.ttf
----------------------------------------------------------------------
diff --git a/_static/fonts/RobotoSlab-Regular.ttf b/_static/fonts/RobotoSlab-Regular.ttf
new file mode 100644
index 0000000..eb52a79
Binary files /dev/null and b/_static/fonts/RobotoSlab-Regular.ttf differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/fonts/fontawesome-webfont.eot
----------------------------------------------------------------------
diff --git a/_static/fonts/fontawesome-webfont.eot b/_static/fonts/fontawesome-webfont.eot
new file mode 100644
index 0000000..84677bc
Binary files /dev/null and b/_static/fonts/fontawesome-webfont.eot differ
[12/14] incubator-superset-site git commit: Initial commit - Superset
docs as of 0.18.5
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_sources/visualization.txt
----------------------------------------------------------------------
diff --git a/_sources/visualization.txt b/_sources/visualization.txt
new file mode 100644
index 0000000..05247ca
--- /dev/null
+++ b/_sources/visualization.txt
@@ -0,0 +1,1759 @@
+Visualization Tools
+===================
+
+The data is visualized via the slices. These slices are visual components made with the D3.js. Some components can be completed or required inputs.
+
+Country Map Tools
+-----------------
+
+This tool is used in slices for visualization number or string by region, province or department of your countries.
+So, if you want to use tools, you need ISO 3166-2 code of region, province or departmenent.
+
+ISO 3166-2 is part of the ISO 3166 standard published by the International Organization for Standardization (ISO), and defines codes for identifying the principal subdivisions (e.g., provinces or states) of all countries coded in ISO 3166-1
+
+The purpose of ISO 3166-2 is to establish an international standard of short and unique alphanumeric codes to represent the relevant administrative divisions and dependent territories of all countries in a more convenient and less ambiguous form than their full names. Each complete ISO 3166-2 code consists of two parts, separated by a hyphen:[1]
+
+The first part is the ISO 3166-1 alpha-2 code of the country;
+The second part is a string of up to three alphanumeric characters, which is usually obtained from national sources and stems from coding systems already in use in the country concerned, but may also be developed by the ISO itself.
+
+List of Countries
+-----------------
+
+* Belgium
+
++---------+-------------------+
+| ISO | Name of region |
++=========+===================+
+| BE-BRU | Bruxelles |
++---------+-------------------+
+| BE-VAN | Antwerpen |
++---------+-------------------+
+| BE-VLI | Limburg |
++---------+-------------------+
+| BE-VOV | Oost-Vlaanderen |
++---------+-------------------+
+| BE-VBR | Vlaams Brabant |
++---------+-------------------+
+| BE-VWV | West-Vlaanderen |
++---------+-------------------+
+| BE-WBR | Brabant Wallon |
++---------+-------------------+
+| BE-WHT | Hainaut |
++---------+-------------------+
+| BE-WLG | Liège |
++---------+-------------------+
+| BE-VLI | Limburg |
++---------+-------------------+
+| BE-WLX | Luxembourg |
++---------+-------------------+
+| BE-WNA | Namur |
++---------+-------------------+
+
+
+
+* Brazil
+
++----------+-----------------------+
+| ISO | Name of region |
++==========+=======================+
+| BR-AC | Acre |
++----------+-----------------------+
+| BR-AL | Alagoas |
++----------+-----------------------+
+| BR-AP | Amapá |
++----------+-----------------------+
+| BR-AM | Amazonas |
++----------+-----------------------+
+| BR-BA | Bahia |
++----------+-----------------------+
+| BR-CE | Ceará |
++----------+-----------------------+
+| BR-DF | Distrito Federal |
++----------+-----------------------+
+| BR-ES | Espírito Santo |
++----------+-----------------------+
+| BR-GO | Goiás |
++----------+-----------------------+
+| BR-MA | Maranhão |
++----------+-----------------------+
+| BR-MS | Mato Grosso do Sul |
++----------+-----------------------+
+| BR-MT | Mato Grosso |
++----------+-----------------------+
+| BR-MG | Minas Gerais |
++----------+-----------------------+
+| BR-PA | Pará |
++----------+-----------------------+
+| BR-PB | Paraíba |
++----------+-----------------------+
+| BR-PR | Paraná |
++----------+-----------------------+
+| BR-PE | Pernambuco |
++----------+-----------------------+
+| BR-PI | Piauí |
++----------+-----------------------+
+| BR-RJ | Rio de Janeiro |
++----------+-----------------------+
+| BR-RN | Rio Grande do Norte |
++----------+-----------------------+
+| BR-RS | Rio Grande do Sul |
++----------+-----------------------+
+| BR-RO | Rondônia |
++----------+-----------------------+
+| BR-RR | Roraima |
++----------+-----------------------+
+| BR-SP | São Paulo |
++----------+-----------------------+
+| BR-SC | Santa Catarina |
++----------+-----------------------+
+| BR-SE | Sergipe |
++----------+-----------------------+
+| BR-TO | Tocantins |
++----------+-----------------------+
+
+* China
+
++---------+--------------------+
+| ISO | Name of region |
++=========+====================+
+| CN-34 | Anhui |
++---------+--------------------+
+| CN-11 | Beijing |
++---------+--------------------+
+| CN-50 | Chongqing |
++---------+--------------------+
+| CN-35 | Fujian |
++---------+--------------------+
+| CN-62 | Gansu |
++---------+--------------------+
+| CN-44 | Guangdong |
++---------+--------------------+
+| CN-45 | Guangxi |
++---------+--------------------+
+| CN-52 | Guizhou |
++---------+--------------------+
+| CN-46 | Hainan |
++---------+--------------------+
+| CN-13 | Hebei |
++---------+--------------------+
+| CN-23 | Heilongjiang |
++---------+--------------------+
+| CN-41 | Henan |
++---------+--------------------+
+| CN-42 | Hubei |
++---------+--------------------+
+| CN-43 | Hunan |
++---------+--------------------+
+| CN-32 | Jiangsu |
++---------+--------------------+
+| CN-36 | Jiangxi |
++---------+--------------------+
+| CN-22 | Jilin |
++---------+--------------------+
+| CN-21 | Liaoning |
++---------+--------------------+
+| CN-15 | Nei Mongol |
++---------+--------------------+
+| CN-64 | Ningxia Hui |
++---------+--------------------+
+| CN-63 | Qinghai |
++---------+--------------------+
+| CN-61 | Shaanxi |
++---------+--------------------+
+| CN-37 | Shandong |
++---------+--------------------+
+| CN-31 | Shanghai |
++---------+--------------------+
+| CN-14 | Shanxi |
++---------+--------------------+
+| CN-51 | Sichuan |
++---------+--------------------+
+| CN-12 | Tianjin |
++---------+--------------------+
+| CN-65 | Xinjiang Uygur |
++---------+--------------------+
+| CN-54 | Xizang |
++---------+--------------------+
+| CN-53 | Yunnan |
++---------+--------------------+
+| CN-33 | Zhejiang |
++---------+--------------------+
+
+* Egypt
+
++---------+--------------------+
+| ISO | Name of region |
++=========+====================+
+| EG-DK | Ad Daqahliyah |
++---------+--------------------+
+| EG-BA | Al Bahr al Ahmar |
++---------+--------------------+
+| EG-BH | Al Buhayrah |
++---------+--------------------+
+| EG-FYM| Al Fayyum |
++---------+--------------------+
+| EG-GH | Al Gharbiyah |
++---------+--------------------+
+| EG-ALX| Al Iskandariyah |
++---------+--------------------+
+| EG-IS | Al Isma iliyah |
++---------+--------------------+
+| EG-GZ | Al Jizah |
++---------+--------------------+
+| EG-MNF| Al Minufiyah |
++---------+--------------------+
+| EG-MN | Al Minya |
++---------+--------------------+
+| EG-C | Al Qahirah |
++---------+--------------------+
+| EG-KB | Al Qalyubiyah |
++---------+--------------------+
+| EG-LX | Al Uqsur |
++---------+--------------------+
+| EG-WAD| Al Wadi al Jadid |
++---------+--------------------+
+| EG-SUZ| As Suways |
++---------+--------------------+
+| EG-SHR| Ash Sharqiyah |
++---------+--------------------+
+| EG-ASN| Aswan |
++---------+--------------------+
+| EG-AST| Asyut |
++---------+--------------------+
+| EG-BNS| Bani Suwayf |
++---------+--------------------+
+| EG-PTS| Bur Sa id |
++---------+--------------------+
+| EG-DT | Dumyat |
++---------+--------------------+
+| EG-JS | Janub Sina' |
++---------+--------------------+
+| EG-KFS| Kafr ash Shaykh |
++---------+--------------------+
+| EG-MT | Matrouh |
++---------+--------------------+
+| EG-KN | Qina |
++---------+--------------------+
+| EG-SIN| Shamal Sina' |
++---------+--------------------+
+| EG-SHG| Suhaj |
++---------+--------------------+
+
+
+* France
+
++---------+------------------------------+
+| ISO | Name of region |
++=========+==============================+
+| FR-67 | Bas-Rhin |
++---------+------------------------------+
+| FR-68 | Haut-Rhin |
++---------+------------------------------+
+| FR-24 | Dordogne |
++---------+------------------------------+
+| FR-33 | Gironde |
++---------+------------------------------+
+| FR-40 | Landes |
++---------+------------------------------+
+| FR-47 | Lot-et-Garonne |
++---------+------------------------------+
+| FR-64 | Pyrénées-Atlantiques |
++---------+------------------------------+
+| FR-03 | Allier |
++---------+------------------------------+
+| FR-15 | Cantal |
++---------+------------------------------+
+| FR-43 | Haute-Loire |
++---------+------------------------------+
+| FR-63 | Puy-de-Dôme |
++---------+------------------------------+
+| FR-91 | Essonne |
++---------+------------------------------+
+| FR-92 | Hauts-de-Seine |
++---------+------------------------------+
+| FR-75 | Paris |
++---------+------------------------------+
+| FR-77 | Seine-et-Marne |
++---------+------------------------------+
+| FR-93 | Seine-Saint-Denis |
++---------+------------------------------+
+| FR-95 | Val-d'Oise |
++---------+------------------------------+
+| FR-94 | Val-de-Marne |
++---------+------------------------------+
+| FR-78 | Yvelines |
++---------+------------------------------+
+| FR-14 | Calvados |
++---------+------------------------------+
+| FR-50 | Manche |
++---------+------------------------------+
+| FR-61 | Orne |
++---------+------------------------------+
+| FR-21 | Côte-d'Or |
++---------+------------------------------+
+| FR-58 | Nièvre |
++---------+------------------------------+
+| FR-71 | Saône-et-Loire |
++---------+------------------------------+
+| FR-89 | Yonne |
++---------+------------------------------+
+| FR-22 | Côtes-d'Armor |
++---------+------------------------------+
+| FR-29 | Finistère |
++---------+------------------------------+
+| FR-35 | Ille-et-Vilaine |
++---------+------------------------------+
+| FR-56 | Morbihan |
++---------+------------------------------+
+| FR-18 | Cher |
++---------+------------------------------+
+| FR-28 | Eure-et-Loir |
++---------+------------------------------+
+| FR-37 | Indre-et-Loire |
++---------+------------------------------+
+| FR-36 | Indre |
++---------+------------------------------+
+| FR-41 | Loir-et-Cher |
++---------+------------------------------+
+| FR-45 | Loiret |
++---------+------------------------------+
+| FR-08 | Ardennes |
++---------+------------------------------+
+| FR-10 | Aube |
++---------+------------------------------+
+| FR-52 | Haute-Marne |
++---------+------------------------------+
+| FR-51 | Marne |
++---------+------------------------------+
+| FR-2A | Corse-du-Sud |
++---------+------------------------------+
+| FR-2B | Haute-Corse |
++---------+------------------------------+
+| FR-25 | Doubs |
++---------+------------------------------+
+| FR-70 | Haute-Saône |
++---------+------------------------------+
+| FR-39 | Jura |
++---------+------------------------------+
+| FR-90 | Territoire de Belfort |
++---------+------------------------------+
+| FR-27 | Eure |
++---------+------------------------------+
+| FR-76 | Seine-Maritime |
++---------+------------------------------+
+| FR-11 | Aude |
++---------+------------------------------+
+| FR-30 | Gard |
++---------+------------------------------+
+| FR-34 | Hérault |
++---------+------------------------------+
+| FR-48 | Lozère |
++---------+------------------------------+
+| FR-66 | Pyrénées-Orientales |
++---------+------------------------------+
+| FR-19 | Corrèze |
++---------+------------------------------+
+| FR-23 | Creuse |
++---------+------------------------------+
+| FR-87 | Haute-Vienne |
++---------+------------------------------+
+| FR-54 | Meurthe-et-Moselle |
++---------+------------------------------+
+| FR-55 | Meuse |
++---------+------------------------------+
+| FR-57 | Moselle |
++---------+------------------------------+
+| FR-88 | Vosges |
++---------+------------------------------+
+| FR-09 | Ariège |
++---------+------------------------------+
+| FR-12 | Aveyron |
++---------+------------------------------+
+| FR-32 | Gers |
++---------+------------------------------+
+| FR-31 | Haute-Garonne |
++---------+------------------------------+
+| FR-65 | Hautes-Pyrénées |
++---------+------------------------------+
+| FR-46 | Lot |
++---------+------------------------------+
+| FR-82 | Tarn-et-Garonne |
++---------+------------------------------+
+| FR-81 | Tarn |
++---------+------------------------------+
+| FR-59 | Nord |
++---------+------------------------------+
+| FR-62 | Pas-de-Calais |
++---------+------------------------------+
+| FR-44 | Loire-Atlantique |
++---------+------------------------------+
+| FR-49 | Maine-et-Loire |
++---------+------------------------------+
+| FR-53 | Mayenne |
++---------+------------------------------+
+| FR-72 | Sarthe |
++---------+------------------------------+
+| FR-85 | Vendée |
++---------+------------------------------+
+| FR-02 | Aisne |
++---------+------------------------------+
+| FR-60 | Oise |
++---------+------------------------------+
+| FR-80 | Somme |
++---------+------------------------------+
+| FR-17 | Charente-Maritime |
++---------+------------------------------+
+| FR-16 | Charente |
++---------+------------------------------+
+| FR-79 | Deux-Sèvres |
++---------+------------------------------+
+| FR-86 | Vienne |
++---------+------------------------------+
+| FR-04 | Alpes-de-Haute-Provence |
++---------+------------------------------+
+| FR-06 | Alpes-Maritimes |
++---------+------------------------------+
+| FR-13 | Bouches-du-Rhône |
++---------+------------------------------+
+| FR-05 | Hautes-Alpes |
++---------+------------------------------+
+| FR-83 | Var |
++---------+------------------------------+
+| FR-84 | Vaucluse |
++---------+------------------------------+
+| FR-01 | Ain |
++---------+------------------------------+
+| FR-07 | Ardèche |
++---------+------------------------------+
+| FR-26 | Drôme |
++---------+------------------------------+
+| FR-74 | Haute-Savoie |
++---------+------------------------------+
+| FR-38 | Isère |
++---------+------------------------------+
+| FR-42 | Loire |
++---------+------------------------------+
+| FR-69 | Rhône |
++---------+------------------------------+
+| FR-73 | Savoie |
++---------+------------------------------+
+
+
+* Germany
+
++---------+------------------------------+
+| ISO | Name of region |
++=========+==============================+
+| DE-BW | Baden-Württemberg |
++---------+------------------------------+
+| DE-BY | Bayern |
++---------+------------------------------+
+| DE-BE | Berlin |
++---------+------------------------------+
+| DE-BB | Brandenburg |
++---------+------------------------------+
+| DE-HB | Bremen |
++---------+------------------------------+
+| DE-HH | Hamburg |
++---------+------------------------------+
+| DE-HE | Hessen |
++---------+------------------------------+
+| DE-MV | Mecklenburg-Vorpommern |
++---------+------------------------------+
+| DE-NI | Niedersachsen |
++---------+------------------------------+
+| DE-NW | Nordrhein-Westfalen |
++---------+------------------------------+
+| DE-RP | Rheinland-Pfalz |
++---------+------------------------------+
+| DE-SL | Saarland |
++---------+------------------------------+
+| DE-ST | Sachsen-Anhalt |
++---------+------------------------------+
+| DE-SN | Sachsen |
++---------+------------------------------+
+| DE-SH | Schleswig-Holstein |
++---------+------------------------------+
+| DE-TH | Thüringen |
++---------+------------------------------+
+
+
+* Italy
+
+
++------+------------------------------------+
+|ISO | Name of region |
++======+====================================+
+|IT-CH |Chieti |
++------+------------------------------------+
+|IT-AQ |L'Aquila |
++------+------------------------------------+
+|IT-PE |Pescara |
++------+------------------------------------+
+|IT-TE |Teramo |
++------+------------------------------------+
+|IT-BA |Bari |
++------+------------------------------------+
+|IT-BT |Barletta-Andria-Trani |
++------+------------------------------------+
+|IT-BR |Brindisi |
++------+------------------------------------+
+|IT-FG |Foggia |
++------+------------------------------------+
+|IT-LE |Lecce |
++------+------------------------------------+
+|IT-TA |Taranto |
++------+------------------------------------+
+|IT-MT |Matera |
++------+------------------------------------+
+|IT-PZ |Potenza |
++------+------------------------------------+
+|IT-CZ |Catanzaro |
++------+------------------------------------+
+|IT-CS |Cosenza |
++------+------------------------------------+
+|IT-KR |Crotone |
++------+------------------------------------+
+|IT-RC |Reggio Di Calabria |
++------+------------------------------------+
+|IT-VV |Vibo Valentia |
++------+------------------------------------+
+|IT-AV |Avellino |
++------+------------------------------------+
+|IT-BN |Benevento |
++------+------------------------------------+
+|IT-CE |Caserta |
++------+------------------------------------+
+|IT-NA |Napoli |
++------+------------------------------------+
+|IT-SA |Salerno |
++------+------------------------------------+
+|IT-BO |Bologna |
++------+------------------------------------+
+|IT-FE |Ferrara |
++------+------------------------------------+
+|IT-FC | Forli' - Cesena |
++------+------------------------------------+
+|IT-MO |Modena |
++------+------------------------------------+
+|IT-PR |Parma |
++------+------------------------------------+
+|IT-PC |Piacenza |
++------+------------------------------------+
+|IT-RA |Ravenna |
++------+------------------------------------+
+|IT-RE |Reggio Nell'Emilia |
++------+------------------------------------+
+|IT-RN |Rimini |
++------+------------------------------------+
+|IT-GO |Gorizia |
++------+------------------------------------+
+|IT-PN |Pordenone |
++------+------------------------------------+
+|IT-TS |Trieste |
++------+------------------------------------+
+|IT-UD |Udine |
++------+------------------------------------+
+|IT-FR |Frosinone |
++------+------------------------------------+
+|IT-LT |Latina |
++------+------------------------------------+
+|IT-RI |Rieti |
++------+------------------------------------+
+|IT-RM |Roma |
++------+------------------------------------+
+|IT-VT |Viterbo |
++------+------------------------------------+
+|IT-GE |Genova |
++------+------------------------------------+
+|IT-IM |Imperia |
++------+------------------------------------+
+|IT-SP |La Spezia |
++------+------------------------------------+
+|IT-SV |Savona |
++------+------------------------------------+
+|IT-BG |Bergamo |
++------+------------------------------------+
+|IT-BS |Brescia |
++------+------------------------------------+
+|IT-CO |Como |
++------+------------------------------------+
+|IT-CR |Cremona |
++------+------------------------------------+
+|IT-LC |Lecco |
++------+------------------------------------+
+|IT-LO |Lodi |
++------+------------------------------------+
+|IT-MN |Mantua |
++------+------------------------------------+
+|IT-MI |Milano |
++------+------------------------------------+
+|IT-MB |Monza and Brianza |
++------+------------------------------------+
+|IT-PV |Pavia |
++------+------------------------------------+
+|IT-SO |Sondrio |
++------+------------------------------------+
+|IT-VA |Varese |
++------+------------------------------------+
+|IT-AN |Ancona |
++------+------------------------------------+
+|IT-AP |Ascoli Piceno |
++------+------------------------------------+
+|IT-FM |Fermo |
++------+------------------------------------+
+|IT-MC |Macerata |
++------+------------------------------------+
+|IT-PU |Pesaro E Urbino |
++------+------------------------------------+
+|IT-CB |Campobasso |
++------+------------------------------------+
+|IT-IS |Isernia |
++------+------------------------------------+
+|IT-AL |Alessandria |
++------+------------------------------------+
+|IT-AT |Asti |
++------+------------------------------------+
+|IT-BI |Biella |
++------+------------------------------------+
+|IT-CN |Cuneo |
++------+------------------------------------+
+|IT-NO |Novara |
++------+------------------------------------+
+|IT-TO |Torino |
++------+------------------------------------+
+|IT-VB |Verbano-Cusio-Ossola |
++------+------------------------------------+
+|IT-VC |Vercelli |
++------+------------------------------------+
+|IT-CA |Cagliari |
++------+------------------------------------+
+|IT-CI |Carbonia-Iglesias |
++------+------------------------------------+
+|IT-VS |Medio Campidano |
++------+------------------------------------+
+|IT-NU |Nuoro |
++------+------------------------------------+
+|IT-OG |Ogliastra |
++------+------------------------------------+
+|IT-OT |Olbia-Tempio |
++------+------------------------------------+
+|IT-OR |Oristano |
++------+------------------------------------+
+|IT-SS |Sassari |
++------+------------------------------------+
+|IT-AG |Agrigento |
++------+------------------------------------+
+|IT-CL |Caltanissetta |
++------+------------------------------------+
+|IT-CT |Catania |
++------+------------------------------------+
+|IT-EN |Enna |
++------+------------------------------------+
+|IT-ME |Messina |
++------+------------------------------------+
+|IT-PA |Palermo |
++------+------------------------------------+
+|IT-RG |Ragusa |
++------+------------------------------------+
+|IT-SR |Syracuse |
++------+------------------------------------+
+|IT-TP |Trapani |
++------+------------------------------------+
+|IT-AR |Arezzo |
++------+------------------------------------+
+|IT-FI |Florence |
++------+------------------------------------+
+|IT-GR |Grosseto |
++------+------------------------------------+
+|IT-LI |Livorno |
++------+------------------------------------+
+|IT-LU |Lucca |
++------+------------------------------------+
+|IT-MS |Massa Carrara |
++------+------------------------------------+
+|IT-PI |Pisa |
++------+------------------------------------+
+|IT-PT |Pistoia |
++------+------------------------------------+
+|IT-PO |Prato |
++------+------------------------------------+
+|IT-SI |Siena |
++------+------------------------------------+
+|IT-BZ |Bolzano |
++------+------------------------------------+
+|IT-TN |Trento |
++------+------------------------------------+
+|IT-PG |Perugia |
++------+------------------------------------+
+|IT-TR |Terni |
++------+------------------------------------+
+|IT-AO |Aosta |
++------+------------------------------------+
+|IT-BL |Belluno |
++------+------------------------------------+
+|IT-PD |Padua |
++------+------------------------------------+
+|IT-RO |Rovigo |
++------+------------------------------------+
+|IT-TV |Treviso |
++------+------------------------------------+
+|IT-VE |Venezia |
++------+------------------------------------+
+|IT-VR |Verona |
++------+------------------------------------+
+|IT-VI |Vicenza |
++------+------------------------------------+
+
+* Morocco
+
++------+------------------------------+
+|ISO | Name of region |
++======+==============================+
+|MA-BES| Ben Slimane |
++------+------------------------------+
+|MA-KHO| Khouribga |
++------+------------------------------+
+|MA-SET| Settat |
++------+------------------------------+
+|MA-JDI| El Jadida |
++------+------------------------------+
+|MA-SAF| Safi |
++------+------------------------------+
+|MA-BOM| Boulemane |
++------+------------------------------+
+|MA-FES| Fès |
++------+------------------------------+
+|MA-SEF| Sefrou |
++------+------------------------------+
+|MA-MOU| Zouagha-Moulay Yacoub |
++------+------------------------------+
+|MA-KEN| Kénitra |
++------+------------------------------+
+|MA-SIK| Sidi Kacem |
++------+------------------------------+
+|MA-CAS| Casablanca |
++------+------------------------------+
+|MA-MOH| Mohammedia |
++------+------------------------------+
+|MA-ASZ| Assa-Zag |
++------+------------------------------+
+|MA-GUE| Guelmim |
++------+------------------------------+
+|MA-TNT| Tan-Tan |
++------+------------------------------+
+|MA-TAT| Tata |
++------+------------------------------+
+|MA-LAA| Laâyoune |
++------+------------------------------+
+|MA-HAO| Al Haouz |
++------+------------------------------+
+|MA-CHI| Chichaoua |
++------+------------------------------+
+|MA-KES| El Kelaâ des Sraghna |
++------+------------------------------+
+|MA-ESI| Essaouira |
++------+------------------------------+
+|MA-MMD| Marrakech |
++------+------------------------------+
+|MA-HAJ| El Hajeb |
++------+------------------------------+
+|MA-ERR| Errachidia |
++------+------------------------------+
+|MA-IFR| Ifrane |
++------+------------------------------+
+|MA-KHN| Khénifra |
++------+------------------------------+
+|MA-MEK| Meknès |
++------+------------------------------+
+|MA-BER| Berkane Taourirt |
++------+------------------------------+
+|MA-FIG| Figuig |
++------+------------------------------+
+|MA-JRA| Jerada |
++------+------------------------------+
+|MA-NAD| Nador |
++------+------------------------------+
+|MA-OUJ| Oujda Angad |
++------+------------------------------+
+|MA-KHE| Khémisset |
++------+------------------------------+
+|MA-RAB| Rabat |
++------+------------------------------+
+|MA-SAL| Salé |
++------+------------------------------+
+|MA-SKH| Skhirate-Témara |
++------+------------------------------+
+|MA-AGD| Agadir-Ida ou Tanane |
++------+------------------------------+
+|MA-CHT| Chtouka-Aït Baha |
++------+------------------------------+
+|MA-INE| Inezgane-Aït Melloul |
++------+------------------------------+
+|MA-OUA| Ouarzazate |
++------+------------------------------+
+|MA-TAR| Taroudannt |
++------+------------------------------+
+|MA-TIZ| Tiznit |
++------+------------------------------+
+|MA-ZAG| Zagora |
++------+------------------------------+
+|MA-AZI| Azilal |
++------+------------------------------+
+|MA-BEM| Béni Mellal |
++------+------------------------------+
+|MA-CHE| Chefchaouen |
++------+------------------------------+
+|MA-FAH| Fahs Anjra |
++------+------------------------------+
+|MA-LAR| Larache |
++------+------------------------------+
+|MA-TET| Tétouan |
++------+------------------------------+
+|MA-TNG| Tanger-Assilah |
++------+------------------------------+
+|MA-HOC| Al Hoceïma |
++------+------------------------------+
+|MA-TAO| Taounate |
++------+------------------------------+
+|MA-TAZ| Taza |
++------+------------------------------+
+
+
+* Netherlands
+
++------+------------------------------+
+|ISO | Name of region |
++======+==============================+
+|NL-DR | Drenthe |
++------+------------------------------+
+|NL-FL | Flevoland |
++------+------------------------------+
+|NL-FR | Friesland |
++------+------------------------------+
+|NL-GE | Gelderland |
++------+------------------------------+
+|NL-GR | Groningen |
++------+------------------------------+
+|NL-YS | IJsselmeer |
++------+------------------------------+
+|NL-LI | Limburg |
++------+------------------------------+
+|NL-NB | Noord-Brabant |
++------+------------------------------+
+|NL-NH | Noord-Holland |
++------+------------------------------+
+|NL-OV | Overijssel |
++------+------------------------------+
+|NL-UT | Utrecht |
++------+------------------------------+
+|NL-ZE | Zeeland |
++------+------------------------------+
+|NL-ZM | Zeeuwse meren |
++------+------------------------------+
+|NL-ZH | Zuid-Holland |
++------+------------------------------+
+
+* Russian
+
++------+------------------------------+
+|ISO | Name of region |
++======+==============================+
+|RU-AD | Adygey |
++------+------------------------------+
+|RU-ALT| Altay |
++------+------------------------------+
+|RU-AMU| Amur |
++------+------------------------------+
+|RU-ARK| Arkhangel'sk |
++------+------------------------------+
+|RU-AST| Astrakhan' |
++------+------------------------------+
+|RU-BA | Bashkortostan |
++------+------------------------------+
+|RU-BEL| Belgorod |
++------+------------------------------+
+|RU-BRY| Bryansk |
++------+------------------------------+
+|RU-BU | Buryat |
++------+------------------------------+
+|RU-CE | Chechnya |
++------+------------------------------+
+|RU-CHE| Chelyabinsk |
++------+------------------------------+
+|RU-CHU| Chukot |
++------+------------------------------+
+|RU-CU | Chuvash |
++------+------------------------------+
+|RU-SPE| City of St. Petersburg |
++------+------------------------------+
+|RU-DA | Dagestan |
++------+------------------------------+
+|RU-AL | Gorno-Altay |
++------+------------------------------+
+|RU-IN | Ingush |
++------+------------------------------+
+|RU-IRK| Irkutsk |
++------+------------------------------+
+|RU-IVA| Ivanovo |
++------+------------------------------+
+|RU-KB | Kabardin-Balkar |
++------+------------------------------+
+|RU-KGD| Kaliningrad |
++------+------------------------------+
+|RU-KL | Kalmyk |
++------+------------------------------+
+|RU-KLU| Kaluga |
++------+------------------------------+
+|RU-KAM| Kamchatka |
++------+------------------------------+
+|RU-KC | Karachay-Cherkess |
++------+------------------------------+
+|RU-KR | Karelia |
++------+------------------------------+
+|RU-KEM| Kemerovo |
++------+------------------------------+
+|RU-KHA| Khabarovsk |
++------+------------------------------+
+|RU-KK | Khakass |
++------+------------------------------+
+|RU-KHM| Khanty-Mansiy |
++------+------------------------------+
+|RU-KIR| Kirov |
++------+------------------------------+
+|RU-KO | Komi |
++------+------------------------------+
+|RU-KOS| Kostroma |
++------+------------------------------+
+|RU-KDA| Krasnodar |
++------+------------------------------+
+|RU-KYA| Krasnoyarsk |
++------+------------------------------+
+|RU-KGN| Kurgan |
++------+------------------------------+
+|RU-KRS| Kursk |
++------+------------------------------+
+|RU-LEN| Leningrad |
++------+------------------------------+
+|RU-LIP| Lipetsk |
++------+------------------------------+
+|RU-MAG| Maga Buryatdan |
++------+------------------------------+
+|RU-ME | Mariy-El |
++------+------------------------------+
+|RU-MO | Mordovia |
++------+------------------------------+
+|RU-MOW| Moscow City |
++------+------------------------------+
+|RU-MOS| Moskva |
++------+------------------------------+
+|RU-MUR| Murmansk |
++------+------------------------------+
+|RU-NEN| Nenets |
++------+------------------------------+
+|RU-NIZ| Nizhegorod |
++------+------------------------------+
+|RU-SE | North Ossetia |
++------+------------------------------+
+|RU-NGR| Novgorod |
++------+------------------------------+
+|RU-NVS| Novosibirsk |
++------+------------------------------+
+|RU-OMS| Omsk |
++------+------------------------------+
+|RU-ORL| Orel |
++------+------------------------------+
+|RU-ORE| Orenburg |
++------+------------------------------+
+|RU-PNZ| Penza |
++------+------------------------------+
+|RU-PER| Perm' |
++------+------------------------------+
+|RU-PRI| Primor'ye |
++------+------------------------------+
+|RU-PSK| Pskov |
++------+------------------------------+
+|RU-ROS| Rostov |
++------+------------------------------+
+|RU-RYA| Ryazan' |
++------+------------------------------+
+|RU-SAK| Sakhalin |
++------+------------------------------+
+|RU-SA | Sakha |
++------+------------------------------+
+|RU-SAM| Samara |
++------+------------------------------+
+|RU-SAR| Saratov |
++------+------------------------------+
+|RU-SMO| Smolensk |
++------+------------------------------+
+|RU-STA| Stavropol' |
++------+------------------------------+
+|RU-SVE| Sverdlovsk |
++------+------------------------------+
+|RU-TAM| Tambov |
++------+------------------------------+
+|RU-TA | Tatarstan |
++------+------------------------------+
+|RU-TOM| Tomsk |
++------+------------------------------+
+|RU-TUL| Tula |
++------+------------------------------+
+|RU-TY | Tuva |
++------+------------------------------+
+|RU-TVE| Tver' |
++------+------------------------------+
+|RU-TYU| Tyumen' |
++------+------------------------------+
+|RU-UD | Udmurt |
++------+------------------------------+
+|RU-ULY| Ul'yanovsk |
++------+------------------------------+
+|RU-VLA| Vladimir |
++------+------------------------------+
+|RU-VGG| Volgograd |
++------+------------------------------+
+|RU-VLG| Vologda |
++------+------------------------------+
+|RU-VOR| Voronezh |
++------+------------------------------+
+|RU-YAN| Yamal-Nenets |
++------+------------------------------+
+|RU-YAR| Yaroslavl' |
++------+------------------------------+
+|RU-YEV| Yevrey |
++------+------------------------------+
+|RU-ZAB| Zabaykal'ye |
++------+------------------------------+
+
+* Singapore
+
++-----+------------------------------+
+| Id | Name of region |
++=====+==============================+
+| 205| Singapore |
++-----+------------------------------+
+
+* Spain
+
++------+-----------------------------+
+|ISO | Name of region |
++======+=============================+
+|ES-AL | Almería |
++------+-----------------------------+
+|ES-CA | Cádiz |
++------+-----------------------------+
+|ES-CO | Córdoba |
++------+-----------------------------+
+|ES-GR | Granada |
++------+-----------------------------+
+|ES-H | Huelva |
++------+-----------------------------+
+|ES-J | Jaén |
++------+-----------------------------+
+|ES-MA | Málaga |
++------+-----------------------------+
+|ES-SE | Sevilla |
++------+-----------------------------+
+|ES-HU | Huesca |
++------+-----------------------------+
+|ES-TE | Teruel |
++------+-----------------------------+
+|ES-Z | Zaragoza |
++------+-----------------------------+
+|ES-S3 | Cantabria |
++------+-----------------------------+
+|ES-AB | Albacete |
++------+-----------------------------+
+|ES-CR | Ciudad Real |
++------+-----------------------------+
+|ES-CU | Cuenca |
++------+-----------------------------+
+|ES-GU | Guadalajara |
++------+-----------------------------+
+|ES-TO | Toledo |
++------+-----------------------------+
+|ES-AV | Ávila |
++------+-----------------------------+
+|ES-BU | Burgos |
++------+-----------------------------+
+|ES-LE | León |
++------+-----------------------------+
+|ES-P | Palencia |
++------+-----------------------------+
+|ES-SA | Salamanca |
++------+-----------------------------+
+|ES-SG | Segovia |
++------+-----------------------------+
+|ES-SO | Soria |
++------+-----------------------------+
+|ES-VA | Valladolid |
++------+-----------------------------+
+|ES-ZA | Zamora |
++------+-----------------------------+
+|ES-B | Barcelona |
++------+-----------------------------+
+|ES-GI | Girona |
++------+-----------------------------+
+|ES-L | Lleida |
++------+-----------------------------+
+|ES-T | Tarragona |
++------+-----------------------------+
+|ES-CE | Ceuta |
++------+-----------------------------+
+|ES-ML | Melilla |
++------+-----------------------------+
+|ES-M5 | Madrid |
++------+-----------------------------+
+|ES-NA7| Navarra |
++------+-----------------------------+
+|ES-A | Alicante |
++------+-----------------------------+
+|ES-CS | Castellón |
++------+-----------------------------+
+|ES-V | Valencia |
++------+-----------------------------+
+|ES-BA | Badajoz |
++------+-----------------------------+
+|ES-CC | Cáceres |
++------+-----------------------------+
+|ES-C | A Coruña |
++------+-----------------------------+
+|ES-LU | Lugo |
++------+-----------------------------+
+|ES-OR | Ourense |
++------+-----------------------------+
+|ES-PO | Pontevedra |
++------+-----------------------------+
+|ES-PM | Baleares |
++------+-----------------------------+
+|ES-GC | Las Palmas |
++------+-----------------------------+
+|ES-TF | Santa Cruz de Tenerife |
++------+-----------------------------+
+|ES-LO4| La Rioja |
++------+-----------------------------+
+|ES-VI | Álava |
++------+-----------------------------+
+|ES-SS | Guipúzcoa |
++------+-----------------------------+
+|ES-BI | Vizcaya |
++------+-----------------------------+
+|ES-O2 | Asturias |
++------+-----------------------------+
+|ES-MU6| Murcia |
++------+-----------------------------+
+
+* Uk
+
++------+------------------------------+
+|ISO | Name of region |
++======+==============================+
+|GB-BDG| Barking and Dagenham |
++------+------------------------------+
+|GB-BAS| Bath and North East Somerset |
++------+------------------------------+
+|GB-BDF| Bedfordshire |
++------+------------------------------+
+|GB-WBK| Berkshire |
++------+------------------------------+
+|GB-BEX| Bexley |
++------+------------------------------+
+|GB-BBD| Blackburn with Darwen |
++------+------------------------------+
+|GB-BMH| Bournemouth |
++------+------------------------------+
+|GB-BEN| Brent |
++------+------------------------------+
+|GB-BNH| Brighton and Hove |
++------+------------------------------+
+|GB-BST| Bristol |
++------+------------------------------+
+|GB-BRY| Bromley |
++------+------------------------------+
+|GB-BKM| Buckinghamshire |
++------+------------------------------+
+|GB-CAM| Cambridgeshire |
++------+------------------------------+
+|GB-CMD| Camden |
++------+------------------------------+
+|GB-CHS| Cheshire |
++------+------------------------------+
+|GB-CON| Cornwall |
++------+------------------------------+
+|GB-CRY| Croydon |
++------+------------------------------+
+|GB-CMA| Cumbria |
++------+------------------------------+
+|GB-DAL| Darlington |
++------+------------------------------+
+|GB-DBY| Derbyshire |
++------+------------------------------+
+|GB-DER| Derby |
++------+------------------------------+
+|GB-DEV| Devon |
++------+------------------------------+
+|GB-DOR| Dorset |
++------+------------------------------+
+|GB-DUR| Durham |
++------+------------------------------+
+|GB-EAL| Ealing |
++------+------------------------------+
+|GB-ERY| East Riding of Yorkshire |
++------+------------------------------+
+|GB-ESX| East Sussex |
++------+------------------------------+
+|GB-ENF| Enfield |
++------+------------------------------+
+|GB-ESS| Essex |
++------+------------------------------+
+|GB-GLS| Gloucestershire |
++------+------------------------------+
+|GB-GRE| Greenwich |
++------+------------------------------+
+|GB-HCK| Hackney |
++------+------------------------------+
+|GB-HAL| Halton |
++------+------------------------------+
+|GB-HMF| Hammersmith and Fulham |
++------+------------------------------+
+|GB-HAM| Hampshire |
++------+------------------------------+
+|GB-HRY| Haringey |
++------+------------------------------+
+|GB-HRW| Harrow |
++------+------------------------------+
+|GB-HPL| Hartlepool |
++------+------------------------------+
+|GB-HAV| Havering |
++------+------------------------------+
+|GB-HRT| Herefordshire |
++------+------------------------------+
+|GB-HEF| Hertfordshire |
++------+------------------------------+
+|GB-HIL| Hillingdon |
++------+------------------------------+
+|GB-HNS| Hounslow |
++------+------------------------------+
+|GB-IOW| Isle of Wight |
++------+------------------------------+
+|GB-ISL| Islington |
++------+------------------------------+
+|GB-KEC| Kensington and Chelsea |
++------+------------------------------+
+|GB-KEN| Kent |
++------+------------------------------+
+|GB-KHL| Kingston upon Hull |
++------+------------------------------+
+|GB-KTT| Kingston upon Thames |
++------+------------------------------+
+|GB-LBH| Lambeth |
++------+------------------------------+
+|GB-LAN| Lancashire |
++------+------------------------------+
+|GB-LEC| Leicestershire |
++------+------------------------------+
+|GB-LCE| Leicester |
++------+------------------------------+
+|GB-LEW| Lewisham |
++------+------------------------------+
+|GB-LIN| Lincolnshire |
++------+------------------------------+
+|GB-LND| London |
++------+------------------------------+
+|GB-LUT| Luton |
++------+------------------------------+
+|GB-MAN| Manchester |
++------+------------------------------+
+|GB-MDW| Medway |
++------+------------------------------+
+|GB-MER| Merseyside |
++------+------------------------------+
+|GB-MRT| Merton |
++------+------------------------------+
+|GB-MDB| Middlesbrough |
++------+------------------------------+
+|GB-MIK| Milton Keynes |
++------+------------------------------+
+|GB-NWM| Newham |
++------+------------------------------+
+|GB-NFK| Norfolk |
++------+------------------------------+
+|GB-NEL| North East Lincolnshire |
++------+------------------------------+
+|GB-NLN| North Lincolnshire |
++------+------------------------------+
+|GB-NSM| North Somerset |
++------+------------------------------+
+|GB-NYK| North Yorkshire |
++------+------------------------------+
+|GB-NTH| Northamptonshire |
++------+------------------------------+
+|GB-NBL| Northumberland |
++------+------------------------------+
+|GB-NTT| Nottinghamshire |
++------+------------------------------+
+|GB-NGM| Nottingham |
++------+------------------------------+
+|GB-OXF| Oxfordshire |
++------+------------------------------+
+|GB-PTE| Peterborough |
++------+------------------------------+
+|GB-PLY| Plymouth |
++------+------------------------------+
+|GB-POL| Poole |
++------+------------------------------+
+|GB-POR| Portsmouth |
++------+------------------------------+
+|GB-RDB| Redbridge |
++------+------------------------------+
+|GB-RCC| Redcar and Cleveland |
++------+------------------------------+
+|GB-RIC| Richmond upon Thames |
++------+------------------------------+
+|GB-RUT| Rutland |
++------+------------------------------+
+|GB-SHR| Shropshire |
++------+------------------------------+
+|GB-SOM| Somerset |
++------+------------------------------+
+|GB-SGC| South Gloucestershire |
++------+------------------------------+
+|GB-SY | South Yorkshire |
++------+------------------------------+
+|GB-STH| Southampton |
++------+------------------------------+
+|GB-SOS| Southend-on-Sea |
++------+------------------------------+
+|GB-SWK| Southwark |
++------+------------------------------+
+|GB-STS| Staffordshire |
++------+------------------------------+
+|GB-STT| Stockton-on-Tees |
++------+------------------------------+
+|GB-STE| Stoke-on-Trent |
++------+------------------------------+
+|GB-SFK| Suffolk |
++------+------------------------------+
+|GB-SRY| Surrey |
++------+------------------------------+
+|GB-STN| Sutton |
++------+------------------------------+
+|GB-SWD| Swindon |
++------+------------------------------+
+|GB-TFW| Telford and Wrekin |
++------+------------------------------+
+|GB-THR| Thurrock |
++------+------------------------------+
+|GB-TOB| Torbay |
++------+------------------------------+
+|GB-TWH| Tower Hamlets |
++------+------------------------------+
+|GB-TAW| Tyne and Wear |
++------+------------------------------+
+|GB-WFT| Waltham Forest |
++------+------------------------------+
+|GB-WND| Wandsworth |
++------+------------------------------+
+|GB-WRT| Warrington |
++------+------------------------------+
+|GB-WAR| Warwickshire |
++------+------------------------------+
+|GB-WM | West Midlands |
++------+------------------------------+
+|GB-WSX| West Sussex |
++------+------------------------------+
+|GB-WY | West Yorkshire |
++------+------------------------------+
+|GB-WSM| Westminster |
++------+------------------------------+
+|GB-WIL| Wiltshire |
++------+------------------------------+
+|GB-WOR| Worcestershire |
++------+------------------------------+
+|GB-YOR| York |
++------+------------------------------+
+|GB-ANT| Antrim |
++------+------------------------------+
+|GB-ARD| Ards |
++------+------------------------------+
+|GB-ARM| Armagh |
++------+------------------------------+
+|GB-BLA| Ballymena |
++------+------------------------------+
+|GB-BLY| Ballymoney |
++------+------------------------------+
+|GB-BNB| Banbridge |
++------+------------------------------+
+|GB-BFS| Belfast |
++------+------------------------------+
+|GB-CKF| Carrickfergus |
++------+------------------------------+
+|GB-CSR| Castlereagh |
++------+------------------------------+
+|GB-CLR| Coleraine |
++------+------------------------------+
+|GB-CKT| Cookstown |
++------+------------------------------+
+|GB-CGV| Craigavon |
++------+------------------------------+
+|GB-DRY| Derry |
++------+------------------------------+
+|GB-DOW| Down |
++------+------------------------------+
+|GB-DGN| Dungannon |
++------+------------------------------+
+|GB-FER| Fermanagh |
++------+------------------------------+
+|GB-LRN| Larne |
++------+------------------------------+
+|GB-LMV| Limavady |
++------+------------------------------+
+|GB-LSB| Lisburn |
++------+------------------------------+
+|GB-MFT| Magherafelt |
++------+------------------------------+
+|GB-MYL| Moyle |
++------+------------------------------+
+|GB-NYM| Newry and Mourne |
++------+------------------------------+
+|GB-NTA| Newtownabbey |
++------+------------------------------+
+|GB-NDN| North Down |
++------+------------------------------+
+|GB-OMH| Omagh |
++------+------------------------------+
+|GB-STB| Strabane |
++------+------------------------------+
+|GB-ABD| Aberdeenshire |
++------+------------------------------+
+|GB-ABE| Aberdeen |
++------+------------------------------+
+|GB-ANS| Angus |
++------+------------------------------+
+|GB-AGB| Argyll and Bute |
++------+------------------------------+
+|GB-CLK| Clackmannanshire |
++------+------------------------------+
+|GB-DGY| Dumfries and Galloway |
++------+------------------------------+
+|GB-DND| Dundee |
++------+------------------------------+
+|GB-EAY| East Ayrshire |
++------+------------------------------+
+|GB-EDU| East Dunbartonshire |
++------+------------------------------+
+|GB-ELN| East Lothian |
++------+------------------------------+
+|GB-ERW| East Renfrewshire |
++------+------------------------------+
+|GB-EDH| Edinburgh |
++------+------------------------------+
+|GB-ELS| Eilean Siar |
++------+------------------------------+
+|GB-FAL| Falkirk |
++------+------------------------------+
+|GB-FIF| Fife |
++------+------------------------------+
+|GB-GLG| Glasgow |
++------+------------------------------+
+|GB-HLD| Highland |
++------+------------------------------+
+|GB-IVC| Inverclyde |
++------+------------------------------+
+|GB-MLN| Midlothian |
++------+------------------------------+
+|GB-MRY| Moray |
++------+------------------------------+
+|GB-NAY| North Ayshire |
++------+------------------------------+
+|GB-NLK| North Lanarkshire |
++------+------------------------------+
+|GB-ORK| Orkney Islands |
++------+------------------------------+
+|GB-PKN| Perthshire and Kinross |
++------+------------------------------+
+|GB-RFW| Renfrewshire |
++------+------------------------------+
+|GB-SCB| Scottish Borders |
++------+------------------------------+
+|GB-ZET| Shetland Islands |
++------+------------------------------+
+|GB-SAY| South Ayrshire |
++------+------------------------------+
+|GB-SLK| South Lanarkshire |
++------+------------------------------+
+|GB-STG| Stirling |
++------+------------------------------+
+|GB-WDU| West Dunbartonshire |
++------+------------------------------+
+|GB-WLN| West Lothian |
++------+------------------------------+
+|GB-AGY| Anglesey |
++------+------------------------------+
+|GB-BGW| Blaenau Gwent |
++------+------------------------------+
+|GB-BGE| Bridgend |
++------+------------------------------+
+|GB-CAY| Caerphilly |
++------+------------------------------+
+|GB-CRF| Cardiff |
++------+------------------------------+
+|GB-CMN| Carmarthenshire |
++------+------------------------------+
+|GB-CGN| Ceredigion |
++------+------------------------------+
+|GB-CWY| Conwy |
++------+------------------------------+
+|GB-DEN| Denbighshire |
++------+------------------------------+
+|GB-FLN| Flintshire |
++------+------------------------------+
+|GB-GWN| Gwynedd |
++------+------------------------------+
+|GB-MTY| Merthyr Tydfil |
++------+------------------------------+
+|GB-MON| Monmouthshire |
++------+------------------------------+
+|GB-NTL| Neath Port Talbot |
++------+------------------------------+
+|GB-NWP| Newport |
++------+------------------------------+
+|GB-PEM| Pembrokeshire |
++------+------------------------------+
+|GB-POW| Powys |
++------+------------------------------+
+|GB-RCT| Rhondda|
++------+------------------------------+
+|GB-SWA| Swansea |
++------+------------------------------+
+|GB-TOF| Torfaen |
++------+------------------------------+
+|GB-VGL| Vale of Glamorgan |
++------+------------------------------+
+|GB-WRX| Wrexham |
++------+------------------------------+
+
+* Ukraine
+
++------+------------------------------+
+|ISO | Name of region |
++======+==============================+
+|UA-71 | Cherkasy |
++------+------------------------------+
+|UA-74 | Chernihiv |
++------+------------------------------+
+|UA-77 | Chernivtsi |
++------+------------------------------+
+|UA-43 | Crimea |
++------+------------------------------+
+|UA-12 | Dnipropetrovs'k |
++------+------------------------------+
+|UA-14 | Donets'k |
++------+------------------------------+
+|UA-26 | Ivano-Frankivs'k |
++------+------------------------------+
+|UA-63 | Kharkiv |
++------+------------------------------+
+|UA-65 | Kherson |
++------+------------------------------+
+|UA-68 | Khmel'nyts'kyy |
++------+------------------------------+
+|UA-30 | Kiev City |
++------+------------------------------+
+|UA-32 | Kiev |
++------+------------------------------+
+|UA-35 | Kirovohrad |
++------+------------------------------+
+|UA-46 | L'viv |
++------+------------------------------+
+|UA-09 | Luhans'k |
++------+------------------------------+
+|UA-48 | Mykolayiv |
++------+------------------------------+
+|UA-51 | Odessa |
++------+------------------------------+
+|UA-53 | Poltava |
++------+------------------------------+
+|UA-56 | Rivne |
++------+------------------------------+
+|UA-40 | Sevastopol' |
++------+------------------------------+
+|UA-59 | Sumy |
++------+------------------------------+
+|UA-61 | Ternopil' |
++------+------------------------------+
+|UA-21 | Transcarpathia |
++------+------------------------------+
+|UA-05 | Vinnytsya |
++------+------------------------------+
+|UA-07 | Volyn |
++------+------------------------------+
+|UA-23 | Zaporizhzhya |
++------+------------------------------+
+|UA-18 | Zhytomyr |
++------+------------------------------+
+
+
+* Usa
+
++------+------------------------------+
+|ISO | Name of region |
++======+==============================+
+|US-AL | Alabama |
++------+------------------------------+
+|US-AK | Alaska |
++------+------------------------------+
+|US-AK | Alaska |
++------+------------------------------+
+|US-AZ | Arizona |
++------+------------------------------+
+|US-AR | Arkansas |
++------+------------------------------+
+|US-CA | California |
++------+------------------------------+
+|US-CO | Colorado |
++------+------------------------------+
+|US-CT | Connecticut |
++------+------------------------------+
+|US-DE | Delaware |
++------+------------------------------+
+|US-DC | District of Columbia |
++------+------------------------------+
+|US-FL | Florida |
++------+------------------------------+
+|US-GA | Georgia |
++------+------------------------------+
+|US-HI | Hawaii |
++------+------------------------------+
+|US-ID | Idaho |
++------+------------------------------+
+|US-IL | Illinois |
++------+------------------------------+
+|US-IN | Indiana |
++------+------------------------------+
+|US-IA | Iowa |
++------+------------------------------+
+|US-KS | Kansas |
++------+------------------------------+
+|US-KY | Kentucky |
++------+------------------------------+
+|US-LA | Louisiana |
++------+------------------------------+
+|US-ME | Maine |
++------+------------------------------+
+|US-MD | Maryland |
++------+------------------------------+
+|US-MA | Massachusetts |
++------+------------------------------+
+|US-MI | Michigan |
++------+------------------------------+
+|US-MN | Minnesota |
++------+------------------------------+
+|US-MS | Mississippi |
++------+------------------------------+
+|US-MO | Missouri |
++------+------------------------------+
+|US-MT | Montana |
++------+------------------------------+
+|US-NE | Nebraska |
++------+------------------------------+
+|US-NV | Nevada |
++------+------------------------------+
+|US-NH | New Hampshire |
++------+------------------------------+
+|US-NJ | New Jersey |
++------+------------------------------+
+|US-NM | New Mexico |
++------+------------------------------+
+|US-NY | New York |
++------+------------------------------+
+|US-NC | North Carolina |
++------+------------------------------+
+|US-ND | North Dakota |
++------+------------------------------+
+|US-OH | Ohio |
++------+------------------------------+
+|US-OK | Oklahoma |
++------+------------------------------+
+|US-OR | Oregon |
++------+------------------------------+
+|US-PA | Pennsylvania |
++------+------------------------------+
+|US-RI | Rhode Island |
++------+------------------------------+
+|US-SC | South Carolina |
++------+------------------------------+
+|US-SD | South Dakota |
++------+------------------------------+
+|US-TN | Tennessee |
++------+------------------------------+
+|US-TX | Texas |
++------+------------------------------+
+|US-UT | Utah |
++------+------------------------------+
+|US-VT | Vermont |
++------+------------------------------+
+|US-VA | Virginia |
++------+------------------------------+
+|US-WA | Washington |
++------+------------------------------+
+|US-WV | West Virginia |
++------+------------------------------+
+|US-WI | Wisconsin |
++------+------------------------------+
+|US-WY | Wyoming |
++------+------------------------------+
+
+
+You need to add a new Country ?
+-------------------------------
+
+To add a new country in country map tools, we need follow next steps :
+
+1. You need shapfiles why contains data of your map.
+ You can get this file in this site : http://www.diva-gis.org/gdata
+
+2. You need to add ISO 3166-2 with column name ISO for all record in your file.
+ It's important because, it's a norm for mapping your data with geojson file
+
+3. You need to convert shapfile to geojson file.
+ This action can make with ogr2ogr tools : http://www.gdal.org/ogr2ogr.html
+
+4. Put your geojson file in next folder : superset/assets/visualizations/countries with the next name : nameofyourcountries.geojson
+
+5. You can to reduce size of geojson file ont this site : http://mapshaper.org/
+
+6. Go in file superset/assets/javascripts/explorev2/stores/controls.jsx
+
+7. Add your country in component 'select_country'
+ Example :
+
+.. code:: python
+
+ select_country: {
+ type: 'SelectControl',
+ label: 'Country Name Type',
+ default: 'France',
+ choices: [
+ 'Belgium',
+ 'Brazil',
+ 'China',
+ 'Egypt',
+ 'France',
+ 'Germany',
+ 'Italy',
+ 'Morocco',
+ 'Netherlands',
+ 'Russia',
+ 'Singapore',
+ 'Spain',
+ 'Uk',
+ 'Usa',
+ ].map(s => [s, s]),
+ description: 'The name of country that Superset should display',
+ },
+
+
+
+
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/ajax-loader.gif
----------------------------------------------------------------------
diff --git a/_static/ajax-loader.gif b/_static/ajax-loader.gif
new file mode 100644
index 0000000..61faf8c
Binary files /dev/null and b/_static/ajax-loader.gif differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/basic.css
----------------------------------------------------------------------
diff --git a/_static/basic.css b/_static/basic.css
new file mode 100644
index 0000000..0b79414
--- /dev/null
+++ b/_static/basic.css
@@ -0,0 +1,611 @@
+/*
+ * basic.css
+ * ~~~~~~~~~
+ *
+ * Sphinx stylesheet -- basic theme.
+ *
+ * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+ clear: both;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+ width: 100%;
+ font-size: 90%;
+}
+
+div.related h3 {
+ display: none;
+}
+
+div.related ul {
+ margin: 0;
+ padding: 0 0 0 10px;
+ list-style: none;
+}
+
+div.related li {
+ display: inline;
+}
+
+div.related li.right {
+ float: right;
+ margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+ padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+ float: left;
+ width: 230px;
+ margin-left: -100%;
+ font-size: 90%;
+ word-wrap: break-word;
+ overflow-wrap : break-word;
+}
+
+div.sphinxsidebar ul {
+ list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+ margin-left: 20px;
+ list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+ margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+ border: 1px solid #98dbcc;
+ font-family: sans-serif;
+ font-size: 1em;
+}
+
+div.sphinxsidebar #searchbox input[type="text"] {
+ width: 170px;
+}
+
+img {
+ border: 0;
+ max-width: 100%;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+ margin: 10px 0 0 20px;
+ padding: 0;
+}
+
+ul.search li {
+ padding: 5px 0 5px 20px;
+ background-image: url(file.png);
+ background-repeat: no-repeat;
+ background-position: 0 7px;
+}
+
+ul.search li a {
+ font-weight: bold;
+}
+
+ul.search li div.context {
+ color: #888;
+ margin: 2px 0 0 30px;
+ text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+ font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+ width: 90%;
+}
+
+table.contentstable p.biglink {
+ line-height: 150%;
+}
+
+a.biglink {
+ font-size: 1.3em;
+}
+
+span.linkdescr {
+ font-style: italic;
+ padding-top: 5px;
+ font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable {
+ width: 100%;
+}
+
+table.indextable td {
+ text-align: left;
+ vertical-align: top;
+}
+
+table.indextable dl, table.indextable dd {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+table.indextable tr.pcap {
+ height: 10px;
+}
+
+table.indextable tr.cap {
+ margin-top: 10px;
+ background-color: #f2f2f2;
+}
+
+img.toggler {
+ margin-right: 3px;
+ margin-top: 3px;
+ cursor: pointer;
+}
+
+div.modindex-jumpbox {
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ margin: 1em 0 1em 0;
+ padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ margin: 1em 0 1em 0;
+ padding: 0.4em;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+div.body p, div.body dd, div.body li, div.body blockquote {
+ -moz-hyphens: auto;
+ -ms-hyphens: auto;
+ -webkit-hyphens: auto;
+ hyphens: auto;
+}
+
+a.headerlink {
+ visibility: hidden;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink,
+caption:hover > a.headerlink,
+p.caption:hover > a.headerlink,
+div.code-block-caption:hover > a.headerlink {
+ visibility: visible;
+}
+
+div.body p.caption {
+ text-align: inherit;
+}
+
+div.body td {
+ text-align: left;
+}
+
+.field-list ul {
+ padding-left: 1em;
+}
+
+.first {
+ margin-top: 0 !important;
+}
+
+p.rubric {
+ margin-top: 30px;
+ font-weight: bold;
+}
+
+img.align-left, .figure.align-left, object.align-left {
+ clear: left;
+ float: left;
+ margin-right: 1em;
+}
+
+img.align-right, .figure.align-right, object.align-right {
+ clear: right;
+ float: right;
+ margin-left: 1em;
+}
+
+img.align-center, .figure.align-center, object.align-center {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.align-left {
+ text-align: left;
+}
+
+.align-center {
+ text-align: center;
+}
+
+.align-right {
+ text-align: right;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar {
+ margin: 0 0 0.5em 1em;
+ border: 1px solid #ddb;
+ padding: 7px 7px 0 7px;
+ background-color: #ffe;
+ width: 40%;
+ float: right;
+}
+
+p.sidebar-title {
+ font-weight: bold;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+div.topic {
+ border: 1px solid #ccc;
+ padding: 7px 7px 0 7px;
+ margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+ font-size: 1.1em;
+ font-weight: bold;
+ margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ padding: 7px;
+}
+
+div.admonition dt {
+ font-weight: bold;
+}
+
+div.admonition dl {
+ margin-bottom: 0;
+}
+
+p.admonition-title {
+ margin: 0px 10px 5px 0px;
+ font-weight: bold;
+}
+
+div.body p.centered {
+ text-align: center;
+ margin-top: 25px;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+ border: 0;
+ border-collapse: collapse;
+}
+
+table caption span.caption-number {
+ font-style: italic;
+}
+
+table caption span.caption-text {
+}
+
+table.docutils td, table.docutils th {
+ padding: 1px 8px 1px 5px;
+ border-top: 0;
+ border-left: 0;
+ border-right: 0;
+ border-bottom: 1px solid #aaa;
+}
+
+table.field-list td, table.field-list th {
+ border: 0 !important;
+}
+
+table.footnote td, table.footnote th {
+ border: 0 !important;
+}
+
+th {
+ text-align: left;
+ padding-right: 5px;
+}
+
+table.citation {
+ border-left: solid 1px gray;
+ margin-left: 1px;
+}
+
+table.citation td {
+ border-bottom: none;
+}
+
+/* -- figures --------------------------------------------------------------- */
+
+div.figure {
+ margin: 0.5em;
+ padding: 0.5em;
+}
+
+div.figure p.caption {
+ padding: 0.3em;
+}
+
+div.figure p.caption span.caption-number {
+ font-style: italic;
+}
+
+div.figure p.caption span.caption-text {
+}
+
+
+/* -- other body styles ----------------------------------------------------- */
+
+ol.arabic {
+ list-style: decimal;
+}
+
+ol.loweralpha {
+ list-style: lower-alpha;
+}
+
+ol.upperalpha {
+ list-style: upper-alpha;
+}
+
+ol.lowerroman {
+ list-style: lower-roman;
+}
+
+ol.upperroman {
+ list-style: upper-roman;
+}
+
+dl {
+ margin-bottom: 15px;
+}
+
+dd p {
+ margin-top: 0px;
+}
+
+dd ul, dd table {
+ margin-bottom: 10px;
+}
+
+dd {
+ margin-top: 3px;
+ margin-bottom: 10px;
+ margin-left: 30px;
+}
+
+dt:target, .highlighted {
+ background-color: #fbe54e;
+}
+
+dl.glossary dt {
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+.field-list ul {
+ margin: 0;
+ padding-left: 1em;
+}
+
+.field-list p {
+ margin: 0;
+}
+
+.optional {
+ font-size: 1.3em;
+}
+
+.sig-paren {
+ font-size: larger;
+}
+
+.versionmodified {
+ font-style: italic;
+}
+
+.system-message {
+ background-color: #fda;
+ padding: 5px;
+ border: 3px solid red;
+}
+
+.footnote:target {
+ background-color: #ffa;
+}
+
+.line-block {
+ display: block;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+.line-block .line-block {
+ margin-top: 0;
+ margin-bottom: 0;
+ margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+ font-family: sans-serif;
+}
+
+.accelerator {
+ text-decoration: underline;
+}
+
+.classifier {
+ font-style: oblique;
+}
+
+abbr, acronym {
+ border-bottom: dotted 1px;
+ cursor: help;
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+ overflow: auto;
+ overflow-y: hidden; /* fixes display issues on Chrome browsers */
+}
+
+span.pre {
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ -webkit-hyphens: none;
+ hyphens: none;
+}
+
+td.linenos pre {
+ padding: 5px 0px;
+ border: 0;
+ background-color: transparent;
+ color: #aaa;
+}
+
+table.highlighttable {
+ margin-left: 0.5em;
+}
+
+table.highlighttable td {
+ padding: 0 0.5em 0 0.5em;
+}
+
+div.code-block-caption {
+ padding: 2px 5px;
+ font-size: small;
+}
+
+div.code-block-caption code {
+ background-color: transparent;
+}
+
+div.code-block-caption + div > div.highlight > pre {
+ margin-top: 0;
+}
+
+div.code-block-caption span.caption-number {
+ padding: 0.1em 0.3em;
+ font-style: italic;
+}
+
+div.code-block-caption span.caption-text {
+}
+
+div.literal-block-wrapper {
+ padding: 1em 1em 0;
+}
+
+div.literal-block-wrapper div.highlight {
+ margin: 0;
+}
+
+code.descname {
+ background-color: transparent;
+ font-weight: bold;
+ font-size: 1.2em;
+}
+
+code.descclassname {
+ background-color: transparent;
+}
+
+code.xref, a code {
+ background-color: transparent;
+ font-weight: bold;
+}
+
+h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
+ background-color: transparent;
+}
+
+.viewcode-link {
+ float: right;
+}
+
+.viewcode-back {
+ float: right;
+ font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+ margin: -1px -10px;
+ padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+ vertical-align: middle;
+}
+
+div.body div.math p {
+ text-align: center;
+}
+
+span.eqno {
+ float: right;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+@media print {
+ div.document,
+ div.documentwrapper,
+ div.bodywrapper {
+ margin: 0 !important;
+ width: 100%;
+ }
+
+ div.sphinxsidebar,
+ div.related,
+ div.footer,
+ #top-link {
+ display: none;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/comment-bright.png
----------------------------------------------------------------------
diff --git a/_static/comment-bright.png b/_static/comment-bright.png
new file mode 100644
index 0000000..551517b
Binary files /dev/null and b/_static/comment-bright.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/comment-close.png
----------------------------------------------------------------------
diff --git a/_static/comment-close.png b/_static/comment-close.png
new file mode 100644
index 0000000..09b54be
Binary files /dev/null and b/_static/comment-close.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/comment.png
----------------------------------------------------------------------
diff --git a/_static/comment.png b/_static/comment.png
new file mode 100644
index 0000000..92feb52
Binary files /dev/null and b/_static/comment.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/css/badge_only.css
----------------------------------------------------------------------
diff --git a/_static/css/badge_only.css b/_static/css/badge_only.css
new file mode 100644
index 0000000..7e17fb1
--- /dev/null
+++ b/_static/css/badge_only.css
@@ -0,0 +1,2 @@
+.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../font/fontawesome_webfont.eot");src:url("../font/fontawesome_webfont.eot?#iefix") format("embedded-opentype"),url("../font/fontawesome_webfont.woff") format("woff"),url("../font/fontawesome_webfont.ttf") format("truetype"),url("../font/fontawesome_webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:0.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:""}.icon-book:be
fore{content:""}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;border-top:solid 10px #343131;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-cu
rrent-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-ver
sion .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}img{width:100%;height:auto}}
+/*# sourceMappingURL=badge_only.css.map */
[08/14] incubator-superset-site git commit: Initial commit - Superset
docs as of 0.18.5
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/fonts/fontawesome-webfont.woff
----------------------------------------------------------------------
diff --git a/_static/fonts/fontawesome-webfont.woff b/_static/fonts/fontawesome-webfont.woff
new file mode 100644
index 0000000..628b6a5
Binary files /dev/null and b/_static/fonts/fontawesome-webfont.woff differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/babytux.jpg
----------------------------------------------------------------------
diff --git a/_static/img/babytux.jpg b/_static/img/babytux.jpg
new file mode 100644
index 0000000..4d0b052
Binary files /dev/null and b/_static/img/babytux.jpg differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/bubble.png
----------------------------------------------------------------------
diff --git a/_static/img/bubble.png b/_static/img/bubble.png
new file mode 100644
index 0000000..a65d5ed
Binary files /dev/null and b/_static/img/bubble.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/cloud.png
----------------------------------------------------------------------
diff --git a/_static/img/cloud.png b/_static/img/cloud.png
new file mode 100644
index 0000000..9478806
Binary files /dev/null and b/_static/img/cloud.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/create_role.png
----------------------------------------------------------------------
diff --git a/_static/img/create_role.png b/_static/img/create_role.png
new file mode 100644
index 0000000..0914a58
Binary files /dev/null and b/_static/img/create_role.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/dash.png
----------------------------------------------------------------------
diff --git a/_static/img/dash.png b/_static/img/dash.png
new file mode 100644
index 0000000..83ecf8e
Binary files /dev/null and b/_static/img/dash.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/druid_agg.png
----------------------------------------------------------------------
diff --git a/_static/img/druid_agg.png b/_static/img/druid_agg.png
new file mode 100644
index 0000000..2d14e1e
Binary files /dev/null and b/_static/img/druid_agg.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/favicon.png
----------------------------------------------------------------------
diff --git a/_static/img/favicon.png b/_static/img/favicon.png
new file mode 100644
index 0000000..804a1c9
Binary files /dev/null and b/_static/img/favicon.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/loading.gif
----------------------------------------------------------------------
diff --git a/_static/img/loading.gif b/_static/img/loading.gif
new file mode 100644
index 0000000..01ae393
Binary files /dev/null and b/_static/img/loading.gif differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/noimg.png
----------------------------------------------------------------------
diff --git a/_static/img/noimg.png b/_static/img/noimg.png
new file mode 100644
index 0000000..b311e6e
Binary files /dev/null and b/_static/img/noimg.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/s.png
----------------------------------------------------------------------
diff --git a/_static/img/s.png b/_static/img/s.png
new file mode 100644
index 0000000..2031b86
Binary files /dev/null and b/_static/img/s.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/superset-logo@2x.png
----------------------------------------------------------------------
diff --git a/_static/img/superset-logo@2x.png b/_static/img/superset-logo@2x.png
new file mode 100644
index 0000000..839f617
Binary files /dev/null and b/_static/img/superset-logo@2x.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/superset.png
----------------------------------------------------------------------
diff --git a/_static/img/superset.png b/_static/img/superset.png
new file mode 100644
index 0000000..fd4fd02
Binary files /dev/null and b/_static/img/superset.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/superset_screenshot.png
----------------------------------------------------------------------
diff --git a/_static/img/superset_screenshot.png b/_static/img/superset_screenshot.png
new file mode 100644
index 0000000..8045764
Binary files /dev/null and b/_static/img/superset_screenshot.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/add_db.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/add_db.png b/_static/img/tutorial/add_db.png
new file mode 100644
index 0000000..7282343
Binary files /dev/null and b/_static/img/tutorial/add_db.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_01_sources_database.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_01_sources_database.png b/_static/img/tutorial/tutorial_01_sources_database.png
new file mode 100644
index 0000000..ad92723
Binary files /dev/null and b/_static/img/tutorial/tutorial_01_sources_database.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_02_add_database.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_02_add_database.png b/_static/img/tutorial/tutorial_02_add_database.png
new file mode 100644
index 0000000..0ee12d3
Binary files /dev/null and b/_static/img/tutorial/tutorial_02_add_database.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_03_database_name.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_03_database_name.png b/_static/img/tutorial/tutorial_03_database_name.png
new file mode 100644
index 0000000..68f15cd
Binary files /dev/null and b/_static/img/tutorial/tutorial_03_database_name.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_04_sqlalchemy_connection_string.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_04_sqlalchemy_connection_string.png b/_static/img/tutorial/tutorial_04_sqlalchemy_connection_string.png
new file mode 100644
index 0000000..b7d0c43
Binary files /dev/null and b/_static/img/tutorial/tutorial_04_sqlalchemy_connection_string.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_05_connection_popup.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_05_connection_popup.png b/_static/img/tutorial/tutorial_05_connection_popup.png
new file mode 100644
index 0000000..d5c49af
Binary files /dev/null and b/_static/img/tutorial/tutorial_05_connection_popup.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_06_list_of_tables.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_06_list_of_tables.png b/_static/img/tutorial/tutorial_06_list_of_tables.png
new file mode 100644
index 0000000..849f4cc
Binary files /dev/null and b/_static/img/tutorial/tutorial_06_list_of_tables.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_07_save_button.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_07_save_button.png b/_static/img/tutorial/tutorial_07_save_button.png
new file mode 100644
index 0000000..976c619
Binary files /dev/null and b/_static/img/tutorial/tutorial_07_save_button.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_08_sources_tables.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_08_sources_tables.png b/_static/img/tutorial/tutorial_08_sources_tables.png
new file mode 100644
index 0000000..08eb79f
Binary files /dev/null and b/_static/img/tutorial/tutorial_08_sources_tables.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_09_add_new_table.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_09_add_new_table.png b/_static/img/tutorial/tutorial_09_add_new_table.png
new file mode 100644
index 0000000..fca2b51
Binary files /dev/null and b/_static/img/tutorial/tutorial_09_add_new_table.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_10_table_name.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_10_table_name.png b/_static/img/tutorial/tutorial_10_table_name.png
new file mode 100644
index 0000000..97838a3
Binary files /dev/null and b/_static/img/tutorial/tutorial_10_table_name.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_11_choose_db.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_11_choose_db.png b/_static/img/tutorial/tutorial_11_choose_db.png
new file mode 100644
index 0000000..c7fec3d
Binary files /dev/null and b/_static/img/tutorial/tutorial_11_choose_db.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_12_table_creation_success_msg.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_12_table_creation_success_msg.png b/_static/img/tutorial/tutorial_12_table_creation_success_msg.png
new file mode 100644
index 0000000..085c211
Binary files /dev/null and b/_static/img/tutorial/tutorial_12_table_creation_success_msg.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_13_edit_table_config.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_13_edit_table_config.png b/_static/img/tutorial/tutorial_13_edit_table_config.png
new file mode 100644
index 0000000..54b0062
Binary files /dev/null and b/_static/img/tutorial/tutorial_13_edit_table_config.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_14_field_config.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_14_field_config.png b/_static/img/tutorial/tutorial_14_field_config.png
new file mode 100644
index 0000000..245e436
Binary files /dev/null and b/_static/img/tutorial/tutorial_14_field_config.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_15_click_table_name.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_15_click_table_name.png b/_static/img/tutorial/tutorial_15_click_table_name.png
new file mode 100644
index 0000000..d6fc628
Binary files /dev/null and b/_static/img/tutorial/tutorial_15_click_table_name.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_16_datasource_chart_type.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_16_datasource_chart_type.png b/_static/img/tutorial/tutorial_16_datasource_chart_type.png
new file mode 100644
index 0000000..0dae19a
Binary files /dev/null and b/_static/img/tutorial/tutorial_16_datasource_chart_type.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_17_choose_time_range.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_17_choose_time_range.png b/_static/img/tutorial/tutorial_17_choose_time_range.png
new file mode 100644
index 0000000..f54b074
Binary files /dev/null and b/_static/img/tutorial/tutorial_17_choose_time_range.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_18_choose_metric.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_18_choose_metric.png b/_static/img/tutorial/tutorial_18_choose_metric.png
new file mode 100644
index 0000000..8cc62b9
Binary files /dev/null and b/_static/img/tutorial/tutorial_18_choose_metric.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_19_click_query.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_19_click_query.png b/_static/img/tutorial/tutorial_19_click_query.png
new file mode 100644
index 0000000..9ff8bba
Binary files /dev/null and b/_static/img/tutorial/tutorial_19_click_query.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_20_count_star_result.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_20_count_star_result.png b/_static/img/tutorial/tutorial_20_count_star_result.png
new file mode 100644
index 0000000..a50ca54
Binary files /dev/null and b/_static/img/tutorial/tutorial_20_count_star_result.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_21_group_by.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_21_group_by.png b/_static/img/tutorial/tutorial_21_group_by.png
new file mode 100644
index 0000000..b4ea5d5
Binary files /dev/null and b/_static/img/tutorial/tutorial_21_group_by.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_22_group_by_result.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_22_group_by_result.png b/_static/img/tutorial/tutorial_22_group_by_result.png
new file mode 100644
index 0000000..fb3205d
Binary files /dev/null and b/_static/img/tutorial/tutorial_22_group_by_result.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_23_group_by_more_dimensions.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_23_group_by_more_dimensions.png b/_static/img/tutorial/tutorial_23_group_by_more_dimensions.png
new file mode 100644
index 0000000..a004703
Binary files /dev/null and b/_static/img/tutorial/tutorial_23_group_by_more_dimensions.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_24_max_metric.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_24_max_metric.png b/_static/img/tutorial/tutorial_24_max_metric.png
new file mode 100644
index 0000000..b1ccc89
Binary files /dev/null and b/_static/img/tutorial/tutorial_24_max_metric.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_25_max_temp_filter.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_25_max_temp_filter.png b/_static/img/tutorial/tutorial_25_max_temp_filter.png
new file mode 100644
index 0000000..e57efb1
Binary files /dev/null and b/_static/img/tutorial/tutorial_25_max_temp_filter.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_26_row_limit.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_26_row_limit.png b/_static/img/tutorial/tutorial_26_row_limit.png
new file mode 100644
index 0000000..3d01983
Binary files /dev/null and b/_static/img/tutorial/tutorial_26_row_limit.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_27_top_10_max_temps.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_27_top_10_max_temps.png b/_static/img/tutorial/tutorial_27_top_10_max_temps.png
new file mode 100644
index 0000000..bc65243
Binary files /dev/null and b/_static/img/tutorial/tutorial_27_top_10_max_temps.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_28_bar_chart.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_28_bar_chart.png b/_static/img/tutorial/tutorial_28_bar_chart.png
new file mode 100644
index 0000000..936b008
Binary files /dev/null and b/_static/img/tutorial/tutorial_28_bar_chart.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_29_bar_chart_series_metrics.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_29_bar_chart_series_metrics.png b/_static/img/tutorial/tutorial_29_bar_chart_series_metrics.png
new file mode 100644
index 0000000..7c3758b
Binary files /dev/null and b/_static/img/tutorial/tutorial_29_bar_chart_series_metrics.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_30_bar_chart_results.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_30_bar_chart_results.png b/_static/img/tutorial/tutorial_30_bar_chart_results.png
new file mode 100644
index 0000000..77afceb
Binary files /dev/null and b/_static/img/tutorial/tutorial_30_bar_chart_results.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_31_save_slice_to_dashboard.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_31_save_slice_to_dashboard.png b/_static/img/tutorial/tutorial_31_save_slice_to_dashboard.png
new file mode 100644
index 0000000..6019c00
Binary files /dev/null and b/_static/img/tutorial/tutorial_31_save_slice_to_dashboard.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_32_save_slice_confirmation.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_32_save_slice_confirmation.png b/_static/img/tutorial/tutorial_32_save_slice_confirmation.png
new file mode 100644
index 0000000..027d3bb
Binary files /dev/null and b/_static/img/tutorial/tutorial_32_save_slice_confirmation.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_33_dashboard.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_33_dashboard.png b/_static/img/tutorial/tutorial_33_dashboard.png
new file mode 100644
index 0000000..7f332a5
Binary files /dev/null and b/_static/img/tutorial/tutorial_33_dashboard.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_34_weather_dashboard.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_34_weather_dashboard.png b/_static/img/tutorial/tutorial_34_weather_dashboard.png
new file mode 100644
index 0000000..1dd6776
Binary files /dev/null and b/_static/img/tutorial/tutorial_34_weather_dashboard.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_35_slice_on_dashboard.png
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_35_slice_on_dashboard.png b/_static/img/tutorial/tutorial_35_slice_on_dashboard.png
new file mode 100644
index 0000000..dc7d7e4
Binary files /dev/null and b/_static/img/tutorial/tutorial_35_slice_on_dashboard.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/tutorial/tutorial_36_adjust_dimensions.gif
----------------------------------------------------------------------
diff --git a/_static/img/tutorial/tutorial_36_adjust_dimensions.gif b/_static/img/tutorial/tutorial_36_adjust_dimensions.gif
new file mode 100644
index 0000000..01347e1
Binary files /dev/null and b/_static/img/tutorial/tutorial_36_adjust_dimensions.gif differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/area.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/area.png b/_static/img/viz_thumbnails/area.png
new file mode 100644
index 0000000..86f1080
Binary files /dev/null and b/_static/img/viz_thumbnails/area.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/bar.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/bar.png b/_static/img/viz_thumbnails/bar.png
new file mode 100644
index 0000000..ab0e8d9
Binary files /dev/null and b/_static/img/viz_thumbnails/bar.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/big_number.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/big_number.png b/_static/img/viz_thumbnails/big_number.png
new file mode 100644
index 0000000..2420f25
Binary files /dev/null and b/_static/img/viz_thumbnails/big_number.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/big_number_total.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/big_number_total.png b/_static/img/viz_thumbnails/big_number_total.png
new file mode 100644
index 0000000..eb4b345
Binary files /dev/null and b/_static/img/viz_thumbnails/big_number_total.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/box_plot.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/box_plot.png b/_static/img/viz_thumbnails/box_plot.png
new file mode 100644
index 0000000..de8f061
Binary files /dev/null and b/_static/img/viz_thumbnails/box_plot.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/bubble.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/bubble.png b/_static/img/viz_thumbnails/bubble.png
new file mode 100644
index 0000000..08de51f
Binary files /dev/null and b/_static/img/viz_thumbnails/bubble.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/bullet.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/bullet.png b/_static/img/viz_thumbnails/bullet.png
new file mode 100644
index 0000000..7a66a41
Binary files /dev/null and b/_static/img/viz_thumbnails/bullet.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/cal_heatmap.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/cal_heatmap.png b/_static/img/viz_thumbnails/cal_heatmap.png
new file mode 100644
index 0000000..bf79a9e
Binary files /dev/null and b/_static/img/viz_thumbnails/cal_heatmap.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/compare.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/compare.png b/_static/img/viz_thumbnails/compare.png
new file mode 100644
index 0000000..00b0a7c
Binary files /dev/null and b/_static/img/viz_thumbnails/compare.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/country_map.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/country_map.png b/_static/img/viz_thumbnails/country_map.png
new file mode 100644
index 0000000..896fd6b
Binary files /dev/null and b/_static/img/viz_thumbnails/country_map.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/directed_force.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/directed_force.png b/_static/img/viz_thumbnails/directed_force.png
new file mode 100644
index 0000000..1cc7ce9
Binary files /dev/null and b/_static/img/viz_thumbnails/directed_force.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/dist_bar.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/dist_bar.png b/_static/img/viz_thumbnails/dist_bar.png
new file mode 100644
index 0000000..b410147
Binary files /dev/null and b/_static/img/viz_thumbnails/dist_bar.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/dual_line.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/dual_line.png b/_static/img/viz_thumbnails/dual_line.png
new file mode 100644
index 0000000..23a7750
Binary files /dev/null and b/_static/img/viz_thumbnails/dual_line.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/filter_box.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/filter_box.png b/_static/img/viz_thumbnails/filter_box.png
new file mode 100644
index 0000000..209259c
Binary files /dev/null and b/_static/img/viz_thumbnails/filter_box.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/heatmap.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/heatmap.png b/_static/img/viz_thumbnails/heatmap.png
new file mode 100644
index 0000000..ac81a45
Binary files /dev/null and b/_static/img/viz_thumbnails/heatmap.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/histogram.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/histogram.png b/_static/img/viz_thumbnails/histogram.png
new file mode 100644
index 0000000..f7bbe62
Binary files /dev/null and b/_static/img/viz_thumbnails/histogram.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/horizon.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/horizon.png b/_static/img/viz_thumbnails/horizon.png
new file mode 100644
index 0000000..a5d4bf3
Binary files /dev/null and b/_static/img/viz_thumbnails/horizon.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/iframe.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/iframe.png b/_static/img/viz_thumbnails/iframe.png
new file mode 100644
index 0000000..d5f0f56
Binary files /dev/null and b/_static/img/viz_thumbnails/iframe.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/line.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/line.png b/_static/img/viz_thumbnails/line.png
new file mode 100644
index 0000000..67f8fe8
Binary files /dev/null and b/_static/img/viz_thumbnails/line.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/mapbox.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/mapbox.png b/_static/img/viz_thumbnails/mapbox.png
new file mode 100644
index 0000000..662c163
Binary files /dev/null and b/_static/img/viz_thumbnails/mapbox.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/markup.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/markup.png b/_static/img/viz_thumbnails/markup.png
new file mode 100644
index 0000000..675e42a
Binary files /dev/null and b/_static/img/viz_thumbnails/markup.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/para.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/para.png b/_static/img/viz_thumbnails/para.png
new file mode 100644
index 0000000..fc1a157
Binary files /dev/null and b/_static/img/viz_thumbnails/para.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/pie.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/pie.png b/_static/img/viz_thumbnails/pie.png
new file mode 100644
index 0000000..ab76749
Binary files /dev/null and b/_static/img/viz_thumbnails/pie.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/pivot_table.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/pivot_table.png b/_static/img/viz_thumbnails/pivot_table.png
new file mode 100644
index 0000000..37f86af
Binary files /dev/null and b/_static/img/viz_thumbnails/pivot_table.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/sankey.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/sankey.png b/_static/img/viz_thumbnails/sankey.png
new file mode 100644
index 0000000..981cdba
Binary files /dev/null and b/_static/img/viz_thumbnails/sankey.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/separator.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/separator.png b/_static/img/viz_thumbnails/separator.png
new file mode 100644
index 0000000..eddb59d
Binary files /dev/null and b/_static/img/viz_thumbnails/separator.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/sunburst.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/sunburst.png b/_static/img/viz_thumbnails/sunburst.png
new file mode 100644
index 0000000..f155363
Binary files /dev/null and b/_static/img/viz_thumbnails/sunburst.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/table.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/table.png b/_static/img/viz_thumbnails/table.png
new file mode 100644
index 0000000..a3dd1be
Binary files /dev/null and b/_static/img/viz_thumbnails/table.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/treemap.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/treemap.png b/_static/img/viz_thumbnails/treemap.png
new file mode 100644
index 0000000..0aec60c
Binary files /dev/null and b/_static/img/viz_thumbnails/treemap.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/word_cloud.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/word_cloud.png b/_static/img/viz_thumbnails/word_cloud.png
new file mode 100644
index 0000000..03936e1
Binary files /dev/null and b/_static/img/viz_thumbnails/word_cloud.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/img/viz_thumbnails/world_map.png
----------------------------------------------------------------------
diff --git a/_static/img/viz_thumbnails/world_map.png b/_static/img/viz_thumbnails/world_map.png
new file mode 100644
index 0000000..82e8ad2
Binary files /dev/null and b/_static/img/viz_thumbnails/world_map.png differ
[09/14] incubator-superset-site git commit: Initial commit - Superset
docs as of 0.18.5
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/fonts/fontawesome-webfont.svg
----------------------------------------------------------------------
diff --git a/_static/fonts/fontawesome-webfont.svg b/_static/fonts/fontawesome-webfont.svg
new file mode 100644
index 0000000..d907b25
--- /dev/null
+++ b/_static/fonts/fontawesome-webfont.svg
@@ -0,0 +1,520 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="fontawesomeregular" horiz-adv-x="1536" >
+<font-face units-per-em="1792" ascent="1536" descent="-256" />
+<missing-glyph horiz-adv-x="448" />
+<glyph unicode=" " horiz-adv-x="448" />
+<glyph unicode="	" horiz-adv-x="448" />
+<glyph unicode=" " horiz-adv-x="448" />
+<glyph unicode="¨" horiz-adv-x="1792" />
+<glyph unicode="©" horiz-adv-x="1792" />
+<glyph unicode="®" horiz-adv-x="1792" />
+<glyph unicode="´" horiz-adv-x="1792" />
+<glyph unicode="Æ" horiz-adv-x="1792" />
+<glyph unicode="Ø" horiz-adv-x="1792" />
+<glyph unicode=" " horiz-adv-x="768" />
+<glyph unicode=" " horiz-adv-x="1537" />
+<glyph unicode=" " horiz-adv-x="768" />
+<glyph unicode=" " horiz-adv-x="1537" />
+<glyph unicode=" " horiz-adv-x="512" />
+<glyph unicode=" " horiz-adv-x="384" />
+<glyph unicode=" " horiz-adv-x="256" />
+<glyph unicode=" " horiz-adv-x="256" />
+<glyph unicode=" " horiz-adv-x="192" />
+<glyph unicode=" " horiz-adv-x="307" />
+<glyph unicode=" " horiz-adv-x="85" />
+<glyph unicode=" " horiz-adv-x="307" />
+<glyph unicode=" " horiz-adv-x="384" />
+<glyph unicode="™" horiz-adv-x="1792" />
+<glyph unicode="∞" horiz-adv-x="1792" />
+<glyph unicode="≠" horiz-adv-x="1792" />
+<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
+<glyph unicode="" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
+<glyph unicode="" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t1
9 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+<glyph unicode="" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28
t28 -68z" />
+<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " />
+<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
+<glyph unicode="" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
+<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z " />
+<glyph unicode="" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
+<glyph unicode="" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" />
+<glyph unicode="" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
+<glyph unicode="" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -1
13 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" />
+<glyph unicode="" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
+<glyph unicode="" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
+<glyph unicode="" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
+<glyph unicode="" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
+<glyph unicode="" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
+<glyph unicode="" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57 q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5 q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" />
+<glyph unicode="" horiz-adv-x="1408" d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142 q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5 t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5 t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" />
+<glyph unicode="" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2 t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5 q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" />
+<glyph unicode="" d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1 t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5 t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41
.5t-59.5 49t-36 30q-26 21 -26 49 t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t
-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" />
+<glyph unicode="" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
+<glyph unicode="" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
+<glyph unicode="" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
+<glyph unicode="" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
+<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
+<glyph unicode="" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
+<glyph unicode="" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" />
+<glyph unicode="" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" />
+<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
+<glyph unicode="" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
+<glyph unicode="" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" />
+<glyph unicode="" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
+<glyph unicode="" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
+<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
+<glyph unicode="" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
+<glyph unicode="" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " />
+<glyph unicode="" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
+<glyph unicode="" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
+<glyph unicode="" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
+<glyph unicode="" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
+<glyph unicode="" horiz-adv-x="1664" d="M640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5 l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5 t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
+<glyph unicode="" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
+<glyph unicode="" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
+<glyph unicode="" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" d="M1536 160q0 -119 -84.5 -203.5t-203.5 -84.5h-192v608h203l30 224h-233v143q0 54 28 83t96 29l132 1v207q-96 9 -180 9q-136 0 -218 -80.5t-82 -225.5v-166h-224v-224h224v-608h-544q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5v-960z" />
+<glyph unicode="" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
+<glyph unicode="" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152
-23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
+<glyph unicode="" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
+<glyph unicode="" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" />
+<glyph unicode="" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" />
+<glyph unicode="" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
+<glyph unicode="" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
+<glyph unicode="" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
+<glyph unicode="" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5
-68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
+<glyph unicode="" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
+<glyph unicode="" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
+<glyph unicode="" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
+<glyph unicode="" horiz-adv-x="1024" d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" />
+<glyph unicode="" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
+<glyph unicode="" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
+<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
+<glyph unicode="" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
+<glyph unicode="" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5 t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
+<glyph unicode="" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
+<glyph unicode="" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
+<glyph unicode="" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
+<glyph unicode="" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
+<glyph unicode="" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
+<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
+<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17
t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-1
5 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q
-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7
<TRUNCATED>
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_static/fonts/fontawesome-webfont.ttf
----------------------------------------------------------------------
diff --git a/_static/fonts/fontawesome-webfont.ttf b/_static/fonts/fontawesome-webfont.ttf
new file mode 100644
index 0000000..96a3639
Binary files /dev/null and b/_static/fonts/fontawesome-webfont.ttf differ
[14/14] incubator-superset-site git commit: Initial commit - Superset
docs as of 0.18.5
Posted by ma...@apache.org.
Initial commit - Superset docs as of 0.18.5
Project: http://git-wip-us.apache.org/repos/asf/incubator-superset-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-superset-site/commit/886f04b0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-superset-site/tree/886f04b0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-superset-site/diff/886f04b0
Branch: refs/heads/asf-site
Commit: 886f04b066cde5bf9ee88f8f5d2103eaa7034dad
Parents:
Author: Maxime Beauchemin <ma...@gmail.com>
Authored: Tue Jun 27 13:08:29 2017 -0700
Committer: Maxime Beauchemin <ma...@gmail.com>
Committed: Tue Jun 27 13:08:47 2017 -0700
----------------------------------------------------------------------
.buildinfo | 4 +
_images/add_db.png | Bin 0 -> 157717 bytes
_images/area.png | Bin 0 -> 105237 bytes
_images/bar.png | Bin 0 -> 50564 bytes
_images/big_number.png | Bin 0 -> 51404 bytes
_images/big_number_total.png | Bin 0 -> 27637 bytes
_images/box_plot.png | Bin 0 -> 56136 bytes
_images/bubble.png | Bin 0 -> 135455 bytes
_images/bullet.png | Bin 0 -> 8764 bytes
_images/cal_heatmap.png | Bin 0 -> 31627 bytes
_images/compare.png | Bin 0 -> 258894 bytes
_images/create_role.png | Bin 0 -> 51474 bytes
_images/directed_force.png | Bin 0 -> 247382 bytes
_images/dist_bar.png | Bin 0 -> 52519 bytes
_images/druid_agg.png | Bin 0 -> 104052 bytes
_images/filter_box.png | Bin 0 -> 49653 bytes
_images/heatmap.png | Bin 0 -> 435496 bytes
_images/histogram.png | Bin 0 -> 64899 bytes
_images/horizon.png | Bin 0 -> 165253 bytes
_images/iframe.png | Bin 0 -> 755166 bytes
_images/line.png | Bin 0 -> 321509 bytes
_images/mapbox.png | Bin 0 -> 225567 bytes
_images/markup.png | Bin 0 -> 227846 bytes
_images/para.png | Bin 0 -> 471027 bytes
_images/pie.png | Bin 0 -> 28302 bytes
_images/pivot_table.png | Bin 0 -> 276020 bytes
_images/s.png | Bin 0 -> 11833 bytes
_images/sankey.png | Bin 0 -> 205313 bytes
_images/separator.png | Bin 0 -> 101451 bytes
_images/sunburst.png | Bin 0 -> 173806 bytes
_images/table.png | Bin 0 -> 109326 bytes
_images/treemap.png | Bin 0 -> 96420 bytes
_images/tutorial_01_sources_database.png | Bin 0 -> 19291 bytes
_images/tutorial_02_add_database.png | Bin 0 -> 19533 bytes
_images/tutorial_03_database_name.png | Bin 0 -> 13947 bytes
...tutorial_04_sqlalchemy_connection_string.png | Bin 0 -> 52808 bytes
_images/tutorial_05_connection_popup.png | Bin 0 -> 84173 bytes
_images/tutorial_06_list_of_tables.png | Bin 0 -> 23859 bytes
_images/tutorial_07_save_button.png | Bin 0 -> 8210 bytes
_images/tutorial_08_sources_tables.png | Bin 0 -> 18728 bytes
_images/tutorial_09_add_new_table.png | Bin 0 -> 18777 bytes
_images/tutorial_10_table_name.png | Bin 0 -> 26728 bytes
_images/tutorial_11_choose_db.png | Bin 0 -> 22024 bytes
.../tutorial_12_table_creation_success_msg.png | Bin 0 -> 33013 bytes
_images/tutorial_13_edit_table_config.png | Bin 0 -> 32220 bytes
_images/tutorial_14_field_config.png | Bin 0 -> 61811 bytes
_images/tutorial_15_click_table_name.png | Bin 0 -> 7863 bytes
_images/tutorial_16_datasource_chart_type.png | Bin 0 -> 13822 bytes
_images/tutorial_17_choose_time_range.png | Bin 0 -> 11627 bytes
_images/tutorial_18_choose_metric.png | Bin 0 -> 12536 bytes
_images/tutorial_19_click_query.png | Bin 0 -> 5734 bytes
_images/tutorial_20_count_star_result.png | Bin 0 -> 5333 bytes
_images/tutorial_21_group_by.png | Bin 0 -> 6840 bytes
_images/tutorial_22_group_by_result.png | Bin 0 -> 22576 bytes
.../tutorial_23_group_by_more_dimensions.png | Bin 0 -> 8191 bytes
_images/tutorial_24_max_metric.png | Bin 0 -> 6731 bytes
_images/tutorial_25_max_temp_filter.png | Bin 0 -> 11654 bytes
_images/tutorial_26_row_limit.png | Bin 0 -> 4927 bytes
_images/tutorial_27_top_10_max_temps.png | Bin 0 -> 49871 bytes
_images/tutorial_28_bar_chart.png | Bin 0 -> 14757 bytes
.../tutorial_29_bar_chart_series_metrics.png | Bin 0 -> 20374 bytes
_images/tutorial_30_bar_chart_results.png | Bin 0 -> 75926 bytes
_images/tutorial_31_save_slice_to_dashboard.png | Bin 0 -> 33789 bytes
_images/tutorial_32_save_slice_confirmation.png | Bin 0 -> 24041 bytes
_images/tutorial_33_dashboard.png | Bin 0 -> 5232 bytes
_images/tutorial_34_weather_dashboard.png | Bin 0 -> 6703 bytes
_images/tutorial_35_slice_on_dashboard.png | Bin 0 -> 66781 bytes
_images/tutorial_36_adjust_dimensions.gif | Bin 0 -> 126264 bytes
_images/word_cloud.png | Bin 0 -> 117846 bytes
_images/world_map.png | Bin 0 -> 136501 bytes
_modules/index.html | 194 +
_modules/superset/jinja_context.html | 343 +
_sources/druid.txt | 48 +
_sources/faq.txt | 145 +
_sources/gallery.txt | 89 +
_sources/index.txt | 74 +
_sources/installation.txt | 475 +
_sources/security.txt | 161 +
_sources/sqllab.txt | 64 +
_sources/tutorial.txt | 308 +
_sources/videos.txt | 54 +
_sources/visualization.txt | 1759 +++
_static/ajax-loader.gif | Bin 0 -> 673 bytes
_static/basic.css | 611 +
_static/comment-bright.png | Bin 0 -> 3500 bytes
_static/comment-close.png | Bin 0 -> 3578 bytes
_static/comment.png | Bin 0 -> 3445 bytes
_static/css/badge_only.css | 2 +
_static/css/theme.css | 5 +
_static/docs.css | 59 +
_static/doctools.js | 287 +
_static/down-pressed.png | Bin 0 -> 347 bytes
_static/down.png | Bin 0 -> 347 bytes
_static/file.png | Bin 0 -> 358 bytes
_static/fonts/Inconsolata-Bold.ttf | Bin 0 -> 66352 bytes
_static/fonts/Inconsolata-Regular.ttf | Bin 0 -> 84548 bytes
_static/fonts/Lato-Bold.ttf | Bin 0 -> 121788 bytes
_static/fonts/Lato-Regular.ttf | Bin 0 -> 120196 bytes
_static/fonts/RobotoSlab-Bold.ttf | Bin 0 -> 170616 bytes
_static/fonts/RobotoSlab-Regular.ttf | Bin 0 -> 169064 bytes
_static/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
_static/fonts/fontawesome-webfont.svg | 520 +
_static/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
_static/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
_static/img/babytux.jpg | Bin 0 -> 10131 bytes
_static/img/bubble.png | Bin 0 -> 470048 bytes
_static/img/cloud.png | Bin 0 -> 718612 bytes
_static/img/create_role.png | Bin 0 -> 51474 bytes
_static/img/dash.png | Bin 0 -> 336285 bytes
_static/img/druid_agg.png | Bin 0 -> 104052 bytes
_static/img/favicon.png | Bin 0 -> 5586 bytes
_static/img/loading.gif | Bin 0 -> 16671 bytes
_static/img/noimg.png | Bin 0 -> 1101 bytes
_static/img/s.png | Bin 0 -> 11833 bytes
_static/img/superset-logo@2x.png | Bin 0 -> 4132 bytes
_static/img/superset.png | Bin 0 -> 4722 bytes
_static/img/superset_screenshot.png | Bin 0 -> 565023 bytes
_static/img/tutorial/add_db.png | Bin 0 -> 157717 bytes
.../tutorial/tutorial_01_sources_database.png | Bin 0 -> 19291 bytes
.../img/tutorial/tutorial_02_add_database.png | Bin 0 -> 19533 bytes
.../img/tutorial/tutorial_03_database_name.png | Bin 0 -> 13947 bytes
...tutorial_04_sqlalchemy_connection_string.png | Bin 0 -> 52808 bytes
.../tutorial/tutorial_05_connection_popup.png | Bin 0 -> 84173 bytes
.../img/tutorial/tutorial_06_list_of_tables.png | Bin 0 -> 23859 bytes
.../img/tutorial/tutorial_07_save_button.png | Bin 0 -> 8210 bytes
.../img/tutorial/tutorial_08_sources_tables.png | Bin 0 -> 18728 bytes
.../img/tutorial/tutorial_09_add_new_table.png | Bin 0 -> 18777 bytes
_static/img/tutorial/tutorial_10_table_name.png | Bin 0 -> 26728 bytes
_static/img/tutorial/tutorial_11_choose_db.png | Bin 0 -> 22024 bytes
.../tutorial_12_table_creation_success_msg.png | Bin 0 -> 33013 bytes
.../tutorial/tutorial_13_edit_table_config.png | Bin 0 -> 32220 bytes
.../img/tutorial/tutorial_14_field_config.png | Bin 0 -> 61811 bytes
.../tutorial/tutorial_15_click_table_name.png | Bin 0 -> 7863 bytes
.../tutorial_16_datasource_chart_type.png | Bin 0 -> 13822 bytes
.../tutorial/tutorial_17_choose_time_range.png | Bin 0 -> 11627 bytes
.../img/tutorial/tutorial_18_choose_metric.png | Bin 0 -> 12536 bytes
.../img/tutorial/tutorial_19_click_query.png | Bin 0 -> 5734 bytes
.../tutorial/tutorial_20_count_star_result.png | Bin 0 -> 5333 bytes
_static/img/tutorial/tutorial_21_group_by.png | Bin 0 -> 6840 bytes
.../tutorial/tutorial_22_group_by_result.png | Bin 0 -> 22576 bytes
.../tutorial_23_group_by_more_dimensions.png | Bin 0 -> 8191 bytes
_static/img/tutorial/tutorial_24_max_metric.png | Bin 0 -> 6731 bytes
.../tutorial/tutorial_25_max_temp_filter.png | Bin 0 -> 11654 bytes
_static/img/tutorial/tutorial_26_row_limit.png | Bin 0 -> 4927 bytes
.../tutorial/tutorial_27_top_10_max_temps.png | Bin 0 -> 49871 bytes
_static/img/tutorial/tutorial_28_bar_chart.png | Bin 0 -> 14757 bytes
.../tutorial_29_bar_chart_series_metrics.png | Bin 0 -> 20374 bytes
.../tutorial/tutorial_30_bar_chart_results.png | Bin 0 -> 75926 bytes
.../tutorial_31_save_slice_to_dashboard.png | Bin 0 -> 33789 bytes
.../tutorial_32_save_slice_confirmation.png | Bin 0 -> 24041 bytes
_static/img/tutorial/tutorial_33_dashboard.png | Bin 0 -> 5232 bytes
.../tutorial/tutorial_34_weather_dashboard.png | Bin 0 -> 6703 bytes
.../tutorial/tutorial_35_slice_on_dashboard.png | Bin 0 -> 66781 bytes
.../tutorial/tutorial_36_adjust_dimensions.gif | Bin 0 -> 126264 bytes
_static/img/viz_thumbnails/area.png | Bin 0 -> 105237 bytes
_static/img/viz_thumbnails/bar.png | Bin 0 -> 50564 bytes
_static/img/viz_thumbnails/big_number.png | Bin 0 -> 51404 bytes
_static/img/viz_thumbnails/big_number_total.png | Bin 0 -> 27637 bytes
_static/img/viz_thumbnails/box_plot.png | Bin 0 -> 56136 bytes
_static/img/viz_thumbnails/bubble.png | Bin 0 -> 135455 bytes
_static/img/viz_thumbnails/bullet.png | Bin 0 -> 8764 bytes
_static/img/viz_thumbnails/cal_heatmap.png | Bin 0 -> 31627 bytes
_static/img/viz_thumbnails/compare.png | Bin 0 -> 258894 bytes
_static/img/viz_thumbnails/country_map.png | Bin 0 -> 303004 bytes
_static/img/viz_thumbnails/directed_force.png | Bin 0 -> 247382 bytes
_static/img/viz_thumbnails/dist_bar.png | Bin 0 -> 52519 bytes
_static/img/viz_thumbnails/dual_line.png | Bin 0 -> 165716 bytes
_static/img/viz_thumbnails/filter_box.png | Bin 0 -> 49653 bytes
_static/img/viz_thumbnails/heatmap.png | Bin 0 -> 435496 bytes
_static/img/viz_thumbnails/histogram.png | Bin 0 -> 64899 bytes
_static/img/viz_thumbnails/horizon.png | Bin 0 -> 165253 bytes
_static/img/viz_thumbnails/iframe.png | Bin 0 -> 755166 bytes
_static/img/viz_thumbnails/line.png | Bin 0 -> 321509 bytes
_static/img/viz_thumbnails/mapbox.png | Bin 0 -> 225567 bytes
_static/img/viz_thumbnails/markup.png | Bin 0 -> 227846 bytes
_static/img/viz_thumbnails/para.png | Bin 0 -> 471027 bytes
_static/img/viz_thumbnails/pie.png | Bin 0 -> 28302 bytes
_static/img/viz_thumbnails/pivot_table.png | Bin 0 -> 276020 bytes
_static/img/viz_thumbnails/sankey.png | Bin 0 -> 205313 bytes
_static/img/viz_thumbnails/separator.png | Bin 0 -> 101451 bytes
_static/img/viz_thumbnails/sunburst.png | Bin 0 -> 173806 bytes
_static/img/viz_thumbnails/table.png | Bin 0 -> 109326 bytes
_static/img/viz_thumbnails/treemap.png | Bin 0 -> 96420 bytes
_static/img/viz_thumbnails/word_cloud.png | Bin 0 -> 117846 bytes
_static/img/viz_thumbnails/world_map.png | Bin 0 -> 136501 bytes
_static/jquery-1.11.1.js | 10308 +++++++++++++++++
_static/jquery.js | 4 +
_static/js/modernizr.min.js | 4 +
_static/js/theme.js | 153 +
_static/minus.png | Bin 0 -> 173 bytes
_static/plus.png | Bin 0 -> 173 bytes
_static/pygments.css | 65 +
_static/searchtools.js | 651 ++
_static/underscore-1.3.1.js | 999 ++
_static/underscore.js | 31 +
_static/up-pressed.png | Bin 0 -> 345 bytes
_static/up.png | Bin 0 -> 345 bytes
_static/websupport.js | 808 ++
druid.html | 256 +
faq.html | 327 +
gallery.html | 235 +
genindex.html | 221 +
index.html | 332 +
installation.html | 693 ++
objects.inv | 7 +
search.html | 210 +
searchindex.js | 1 +
security.html | 364 +
sqllab.html | 292 +
tutorial.html | 416 +
videos.html | 270 +
visualization.html | 2887 +++++
212 files changed, 24736 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/.buildinfo
----------------------------------------------------------------------
diff --git a/.buildinfo b/.buildinfo
new file mode 100644
index 0000000..0885fbe
--- /dev/null
+++ b/.buildinfo
@@ -0,0 +1,4 @@
+# Sphinx build info version 1
+# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
+config:
+tags:
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/add_db.png
----------------------------------------------------------------------
diff --git a/_images/add_db.png b/_images/add_db.png
new file mode 100644
index 0000000..7282343
Binary files /dev/null and b/_images/add_db.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/area.png
----------------------------------------------------------------------
diff --git a/_images/area.png b/_images/area.png
new file mode 100644
index 0000000..86f1080
Binary files /dev/null and b/_images/area.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/bar.png
----------------------------------------------------------------------
diff --git a/_images/bar.png b/_images/bar.png
new file mode 100644
index 0000000..ab0e8d9
Binary files /dev/null and b/_images/bar.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/big_number.png
----------------------------------------------------------------------
diff --git a/_images/big_number.png b/_images/big_number.png
new file mode 100644
index 0000000..2420f25
Binary files /dev/null and b/_images/big_number.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/big_number_total.png
----------------------------------------------------------------------
diff --git a/_images/big_number_total.png b/_images/big_number_total.png
new file mode 100644
index 0000000..eb4b345
Binary files /dev/null and b/_images/big_number_total.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/box_plot.png
----------------------------------------------------------------------
diff --git a/_images/box_plot.png b/_images/box_plot.png
new file mode 100644
index 0000000..de8f061
Binary files /dev/null and b/_images/box_plot.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/bubble.png
----------------------------------------------------------------------
diff --git a/_images/bubble.png b/_images/bubble.png
new file mode 100644
index 0000000..08de51f
Binary files /dev/null and b/_images/bubble.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/bullet.png
----------------------------------------------------------------------
diff --git a/_images/bullet.png b/_images/bullet.png
new file mode 100644
index 0000000..7a66a41
Binary files /dev/null and b/_images/bullet.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/cal_heatmap.png
----------------------------------------------------------------------
diff --git a/_images/cal_heatmap.png b/_images/cal_heatmap.png
new file mode 100644
index 0000000..bf79a9e
Binary files /dev/null and b/_images/cal_heatmap.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/compare.png
----------------------------------------------------------------------
diff --git a/_images/compare.png b/_images/compare.png
new file mode 100644
index 0000000..00b0a7c
Binary files /dev/null and b/_images/compare.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/create_role.png
----------------------------------------------------------------------
diff --git a/_images/create_role.png b/_images/create_role.png
new file mode 100644
index 0000000..0914a58
Binary files /dev/null and b/_images/create_role.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/directed_force.png
----------------------------------------------------------------------
diff --git a/_images/directed_force.png b/_images/directed_force.png
new file mode 100644
index 0000000..1cc7ce9
Binary files /dev/null and b/_images/directed_force.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/dist_bar.png
----------------------------------------------------------------------
diff --git a/_images/dist_bar.png b/_images/dist_bar.png
new file mode 100644
index 0000000..b410147
Binary files /dev/null and b/_images/dist_bar.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/druid_agg.png
----------------------------------------------------------------------
diff --git a/_images/druid_agg.png b/_images/druid_agg.png
new file mode 100644
index 0000000..2d14e1e
Binary files /dev/null and b/_images/druid_agg.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/filter_box.png
----------------------------------------------------------------------
diff --git a/_images/filter_box.png b/_images/filter_box.png
new file mode 100644
index 0000000..209259c
Binary files /dev/null and b/_images/filter_box.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/heatmap.png
----------------------------------------------------------------------
diff --git a/_images/heatmap.png b/_images/heatmap.png
new file mode 100644
index 0000000..ac81a45
Binary files /dev/null and b/_images/heatmap.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/histogram.png
----------------------------------------------------------------------
diff --git a/_images/histogram.png b/_images/histogram.png
new file mode 100644
index 0000000..f7bbe62
Binary files /dev/null and b/_images/histogram.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/horizon.png
----------------------------------------------------------------------
diff --git a/_images/horizon.png b/_images/horizon.png
new file mode 100644
index 0000000..a5d4bf3
Binary files /dev/null and b/_images/horizon.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/iframe.png
----------------------------------------------------------------------
diff --git a/_images/iframe.png b/_images/iframe.png
new file mode 100644
index 0000000..d5f0f56
Binary files /dev/null and b/_images/iframe.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/line.png
----------------------------------------------------------------------
diff --git a/_images/line.png b/_images/line.png
new file mode 100644
index 0000000..67f8fe8
Binary files /dev/null and b/_images/line.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/mapbox.png
----------------------------------------------------------------------
diff --git a/_images/mapbox.png b/_images/mapbox.png
new file mode 100644
index 0000000..662c163
Binary files /dev/null and b/_images/mapbox.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/markup.png
----------------------------------------------------------------------
diff --git a/_images/markup.png b/_images/markup.png
new file mode 100644
index 0000000..675e42a
Binary files /dev/null and b/_images/markup.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/para.png
----------------------------------------------------------------------
diff --git a/_images/para.png b/_images/para.png
new file mode 100644
index 0000000..fc1a157
Binary files /dev/null and b/_images/para.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/pie.png
----------------------------------------------------------------------
diff --git a/_images/pie.png b/_images/pie.png
new file mode 100644
index 0000000..ab76749
Binary files /dev/null and b/_images/pie.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/pivot_table.png
----------------------------------------------------------------------
diff --git a/_images/pivot_table.png b/_images/pivot_table.png
new file mode 100644
index 0000000..37f86af
Binary files /dev/null and b/_images/pivot_table.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/s.png
----------------------------------------------------------------------
diff --git a/_images/s.png b/_images/s.png
new file mode 100644
index 0000000..2031b86
Binary files /dev/null and b/_images/s.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/sankey.png
----------------------------------------------------------------------
diff --git a/_images/sankey.png b/_images/sankey.png
new file mode 100644
index 0000000..981cdba
Binary files /dev/null and b/_images/sankey.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/separator.png
----------------------------------------------------------------------
diff --git a/_images/separator.png b/_images/separator.png
new file mode 100644
index 0000000..eddb59d
Binary files /dev/null and b/_images/separator.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/sunburst.png
----------------------------------------------------------------------
diff --git a/_images/sunburst.png b/_images/sunburst.png
new file mode 100644
index 0000000..f155363
Binary files /dev/null and b/_images/sunburst.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/table.png
----------------------------------------------------------------------
diff --git a/_images/table.png b/_images/table.png
new file mode 100644
index 0000000..a3dd1be
Binary files /dev/null and b/_images/table.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/treemap.png
----------------------------------------------------------------------
diff --git a/_images/treemap.png b/_images/treemap.png
new file mode 100644
index 0000000..0aec60c
Binary files /dev/null and b/_images/treemap.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_01_sources_database.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_01_sources_database.png b/_images/tutorial_01_sources_database.png
new file mode 100644
index 0000000..ad92723
Binary files /dev/null and b/_images/tutorial_01_sources_database.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_02_add_database.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_02_add_database.png b/_images/tutorial_02_add_database.png
new file mode 100644
index 0000000..0ee12d3
Binary files /dev/null and b/_images/tutorial_02_add_database.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_03_database_name.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_03_database_name.png b/_images/tutorial_03_database_name.png
new file mode 100644
index 0000000..68f15cd
Binary files /dev/null and b/_images/tutorial_03_database_name.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_04_sqlalchemy_connection_string.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_04_sqlalchemy_connection_string.png b/_images/tutorial_04_sqlalchemy_connection_string.png
new file mode 100644
index 0000000..b7d0c43
Binary files /dev/null and b/_images/tutorial_04_sqlalchemy_connection_string.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_05_connection_popup.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_05_connection_popup.png b/_images/tutorial_05_connection_popup.png
new file mode 100644
index 0000000..d5c49af
Binary files /dev/null and b/_images/tutorial_05_connection_popup.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_06_list_of_tables.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_06_list_of_tables.png b/_images/tutorial_06_list_of_tables.png
new file mode 100644
index 0000000..849f4cc
Binary files /dev/null and b/_images/tutorial_06_list_of_tables.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_07_save_button.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_07_save_button.png b/_images/tutorial_07_save_button.png
new file mode 100644
index 0000000..976c619
Binary files /dev/null and b/_images/tutorial_07_save_button.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_08_sources_tables.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_08_sources_tables.png b/_images/tutorial_08_sources_tables.png
new file mode 100644
index 0000000..08eb79f
Binary files /dev/null and b/_images/tutorial_08_sources_tables.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_09_add_new_table.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_09_add_new_table.png b/_images/tutorial_09_add_new_table.png
new file mode 100644
index 0000000..fca2b51
Binary files /dev/null and b/_images/tutorial_09_add_new_table.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_10_table_name.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_10_table_name.png b/_images/tutorial_10_table_name.png
new file mode 100644
index 0000000..97838a3
Binary files /dev/null and b/_images/tutorial_10_table_name.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_11_choose_db.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_11_choose_db.png b/_images/tutorial_11_choose_db.png
new file mode 100644
index 0000000..c7fec3d
Binary files /dev/null and b/_images/tutorial_11_choose_db.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_12_table_creation_success_msg.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_12_table_creation_success_msg.png b/_images/tutorial_12_table_creation_success_msg.png
new file mode 100644
index 0000000..085c211
Binary files /dev/null and b/_images/tutorial_12_table_creation_success_msg.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_13_edit_table_config.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_13_edit_table_config.png b/_images/tutorial_13_edit_table_config.png
new file mode 100644
index 0000000..54b0062
Binary files /dev/null and b/_images/tutorial_13_edit_table_config.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_14_field_config.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_14_field_config.png b/_images/tutorial_14_field_config.png
new file mode 100644
index 0000000..245e436
Binary files /dev/null and b/_images/tutorial_14_field_config.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_15_click_table_name.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_15_click_table_name.png b/_images/tutorial_15_click_table_name.png
new file mode 100644
index 0000000..d6fc628
Binary files /dev/null and b/_images/tutorial_15_click_table_name.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_16_datasource_chart_type.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_16_datasource_chart_type.png b/_images/tutorial_16_datasource_chart_type.png
new file mode 100644
index 0000000..0dae19a
Binary files /dev/null and b/_images/tutorial_16_datasource_chart_type.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_17_choose_time_range.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_17_choose_time_range.png b/_images/tutorial_17_choose_time_range.png
new file mode 100644
index 0000000..f54b074
Binary files /dev/null and b/_images/tutorial_17_choose_time_range.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_18_choose_metric.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_18_choose_metric.png b/_images/tutorial_18_choose_metric.png
new file mode 100644
index 0000000..8cc62b9
Binary files /dev/null and b/_images/tutorial_18_choose_metric.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_19_click_query.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_19_click_query.png b/_images/tutorial_19_click_query.png
new file mode 100644
index 0000000..9ff8bba
Binary files /dev/null and b/_images/tutorial_19_click_query.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_20_count_star_result.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_20_count_star_result.png b/_images/tutorial_20_count_star_result.png
new file mode 100644
index 0000000..a50ca54
Binary files /dev/null and b/_images/tutorial_20_count_star_result.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_21_group_by.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_21_group_by.png b/_images/tutorial_21_group_by.png
new file mode 100644
index 0000000..b4ea5d5
Binary files /dev/null and b/_images/tutorial_21_group_by.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_22_group_by_result.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_22_group_by_result.png b/_images/tutorial_22_group_by_result.png
new file mode 100644
index 0000000..fb3205d
Binary files /dev/null and b/_images/tutorial_22_group_by_result.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_23_group_by_more_dimensions.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_23_group_by_more_dimensions.png b/_images/tutorial_23_group_by_more_dimensions.png
new file mode 100644
index 0000000..a004703
Binary files /dev/null and b/_images/tutorial_23_group_by_more_dimensions.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_24_max_metric.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_24_max_metric.png b/_images/tutorial_24_max_metric.png
new file mode 100644
index 0000000..b1ccc89
Binary files /dev/null and b/_images/tutorial_24_max_metric.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_25_max_temp_filter.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_25_max_temp_filter.png b/_images/tutorial_25_max_temp_filter.png
new file mode 100644
index 0000000..e57efb1
Binary files /dev/null and b/_images/tutorial_25_max_temp_filter.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_26_row_limit.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_26_row_limit.png b/_images/tutorial_26_row_limit.png
new file mode 100644
index 0000000..3d01983
Binary files /dev/null and b/_images/tutorial_26_row_limit.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_27_top_10_max_temps.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_27_top_10_max_temps.png b/_images/tutorial_27_top_10_max_temps.png
new file mode 100644
index 0000000..bc65243
Binary files /dev/null and b/_images/tutorial_27_top_10_max_temps.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_28_bar_chart.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_28_bar_chart.png b/_images/tutorial_28_bar_chart.png
new file mode 100644
index 0000000..936b008
Binary files /dev/null and b/_images/tutorial_28_bar_chart.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_29_bar_chart_series_metrics.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_29_bar_chart_series_metrics.png b/_images/tutorial_29_bar_chart_series_metrics.png
new file mode 100644
index 0000000..7c3758b
Binary files /dev/null and b/_images/tutorial_29_bar_chart_series_metrics.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_30_bar_chart_results.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_30_bar_chart_results.png b/_images/tutorial_30_bar_chart_results.png
new file mode 100644
index 0000000..77afceb
Binary files /dev/null and b/_images/tutorial_30_bar_chart_results.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_31_save_slice_to_dashboard.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_31_save_slice_to_dashboard.png b/_images/tutorial_31_save_slice_to_dashboard.png
new file mode 100644
index 0000000..6019c00
Binary files /dev/null and b/_images/tutorial_31_save_slice_to_dashboard.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_32_save_slice_confirmation.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_32_save_slice_confirmation.png b/_images/tutorial_32_save_slice_confirmation.png
new file mode 100644
index 0000000..027d3bb
Binary files /dev/null and b/_images/tutorial_32_save_slice_confirmation.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_33_dashboard.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_33_dashboard.png b/_images/tutorial_33_dashboard.png
new file mode 100644
index 0000000..7f332a5
Binary files /dev/null and b/_images/tutorial_33_dashboard.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_34_weather_dashboard.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_34_weather_dashboard.png b/_images/tutorial_34_weather_dashboard.png
new file mode 100644
index 0000000..1dd6776
Binary files /dev/null and b/_images/tutorial_34_weather_dashboard.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_35_slice_on_dashboard.png
----------------------------------------------------------------------
diff --git a/_images/tutorial_35_slice_on_dashboard.png b/_images/tutorial_35_slice_on_dashboard.png
new file mode 100644
index 0000000..dc7d7e4
Binary files /dev/null and b/_images/tutorial_35_slice_on_dashboard.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/tutorial_36_adjust_dimensions.gif
----------------------------------------------------------------------
diff --git a/_images/tutorial_36_adjust_dimensions.gif b/_images/tutorial_36_adjust_dimensions.gif
new file mode 100644
index 0000000..01347e1
Binary files /dev/null and b/_images/tutorial_36_adjust_dimensions.gif differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/word_cloud.png
----------------------------------------------------------------------
diff --git a/_images/word_cloud.png b/_images/word_cloud.png
new file mode 100644
index 0000000..03936e1
Binary files /dev/null and b/_images/word_cloud.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_images/world_map.png
----------------------------------------------------------------------
diff --git a/_images/world_map.png b/_images/world_map.png
new file mode 100644
index 0000000..82e8ad2
Binary files /dev/null and b/_images/world_map.png differ
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_modules/index.html
----------------------------------------------------------------------
diff --git a/_modules/index.html b/_modules/index.html
new file mode 100644
index 0000000..1807977
--- /dev/null
+++ b/_modules/index.html
@@ -0,0 +1,194 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <title>Overview: module code — Superset's documentation documentation</title>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+
+
+
+
+
+ <link rel="index" title="Index"
+ href="../genindex.html"/>
+ <link rel="search" title="Search" href="../search.html"/>
+ <link rel="top" title="Superset's documentation documentation" href="../index.html"/>
+
+
+ <script src="../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+ <div class="wy-grid-for-nav">
+
+
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search">
+
+
+
+ <a href="../index.html" class="icon icon-home"> Superset's documentation
+
+
+
+ </a>
+
+
+
+
+
+
+
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+
+
+ </div>
+
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+
+
+
+ <ul>
+<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation & Configuration</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../tutorial.html">Tutorial for Superset Administrators</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../security.html">Security</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../sqllab.html">SQL Lab</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../visualization.html">Visualization Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../videos.html">Videos</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../gallery.html">Gallery</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../druid.html">Druid</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../faq.html">FAQ</a></li>
+</ul>
+
+
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+
+ <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../index.html">Superset's documentation</a>
+ </nav>
+
+
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="../index.html">Docs</a> »</li>
+
+ <li>Overview: module code</li>
+ <li class="wy-breadcrumbs-aside">
+
+
+
+ </li>
+ </ul>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <h1>All modules for which code is available</h1>
+<ul><li><a href="superset/jinja_context.html">superset.jinja_context</a></li>
+</ul>
+
+ </div>
+ </div>
+ <footer>
+
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>
+
+ </p>
+ </div>
+ Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
+
+ </div>
+ </div>
+
+ </section>
+
+ </div>
+
+
+
+
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT:'../',
+ VERSION:'',
+ COLLAPSE_INDEX:false,
+ FILE_SUFFIX:'.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../_static/jquery.js"></script>
+ <script type="text/javascript" src="../_static/underscore.js"></script>
+ <script type="text/javascript" src="../_static/doctools.js"></script>
+
+
+
+
+
+ <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+
+
+
+ <script type="text/javascript">
+ jQuery(function () {
+ SphinxRtdTheme.StickyNav.enable();
+ });
+ </script>
+
+
+</body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_modules/superset/jinja_context.html
----------------------------------------------------------------------
diff --git a/_modules/superset/jinja_context.html b/_modules/superset/jinja_context.html
new file mode 100644
index 0000000..1774dbe
--- /dev/null
+++ b/_modules/superset/jinja_context.html
@@ -0,0 +1,343 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <title>superset.jinja_context — Superset's documentation documentation</title>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+
+
+
+
+
+ <link rel="index" title="Index"
+ href="../../genindex.html"/>
+ <link rel="search" title="Search" href="../../search.html"/>
+ <link rel="top" title="Superset's documentation documentation" href="../../index.html"/>
+ <link rel="up" title="Module code" href="../index.html"/>
+
+
+ <script src="../../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+ <div class="wy-grid-for-nav">
+
+
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search">
+
+
+
+ <a href="../../index.html" class="icon icon-home"> Superset's documentation
+
+
+
+ </a>
+
+
+
+
+
+
+
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+
+
+ </div>
+
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+
+
+
+ <ul>
+<li class="toctree-l1"><a class="reference internal" href="../../installation.html">Installation & Configuration</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../tutorial.html">Tutorial for Superset Administrators</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../security.html">Security</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../sqllab.html">SQL Lab</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../visualization.html">Visualization Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../videos.html">Videos</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../gallery.html">Gallery</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../druid.html">Druid</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../faq.html">FAQ</a></li>
+</ul>
+
+
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+
+ <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../../index.html">Superset's documentation</a>
+ </nav>
+
+
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="../../index.html">Docs</a> »</li>
+
+ <li><a href="../index.html">Module code</a> »</li>
+
+ <li>superset.jinja_context</li>
+ <li class="wy-breadcrumbs-aside">
+
+
+
+ </li>
+ </ul>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <h1>Source code for superset.jinja_context</h1><div class="highlight"><pre>
+<span></span><span class="sd">"""Defines the templating context for SQL Lab"""</span>
+<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">absolute_import</span>
+<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">division</span>
+<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">__future__</span> <span class="k">import</span> <span class="n">unicode_literals</span>
+
+<span class="kn">from</span> <span class="nn">datetime</span> <span class="k">import</span> <span class="n">datetime</span><span class="p">,</span> <span class="n">timedelta</span>
+<span class="kn">import</span> <span class="nn">inspect</span>
+<span class="kn">import</span> <span class="nn">random</span>
+<span class="kn">import</span> <span class="nn">time</span>
+<span class="kn">import</span> <span class="nn">uuid</span>
+
+<span class="kn">from</span> <span class="nn">jinja2.sandbox</span> <span class="k">import</span> <span class="n">SandboxedEnvironment</span>
+<span class="kn">from</span> <span class="nn">flask</span> <span class="k">import</span> <span class="n">request</span><span class="p">,</span> <span class="n">g</span>
+
+<span class="kn">from</span> <span class="nn">dateutil.relativedelta</span> <span class="k">import</span> <span class="n">relativedelta</span>
+
+<span class="kn">from</span> <span class="nn">superset</span> <span class="k">import</span> <span class="n">app</span>
+
+<span class="n">config</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">config</span>
+<span class="n">BASE_CONTEXT</span> <span class="o">=</span> <span class="p">{</span>
+ <span class="s1">'datetime'</span><span class="p">:</span> <span class="n">datetime</span><span class="p">,</span>
+ <span class="s1">'random'</span><span class="p">:</span> <span class="n">random</span><span class="p">,</span>
+ <span class="s1">'relativedelta'</span><span class="p">:</span> <span class="n">relativedelta</span><span class="p">,</span>
+ <span class="s1">'time'</span><span class="p">:</span> <span class="n">time</span><span class="p">,</span>
+ <span class="s1">'timedelta'</span><span class="p">:</span> <span class="n">timedelta</span><span class="p">,</span>
+ <span class="s1">'uuid'</span><span class="p">:</span> <span class="n">uuid</span><span class="p">,</span>
+<span class="p">}</span>
+<span class="n">BASE_CONTEXT</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">config</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'JINJA_CONTEXT_ADDONS'</span><span class="p">,</span> <span class="p">{}))</span>
+
+
+<div class="viewcode-block" id="url_param"><a class="viewcode-back" href="../../sqllab.html#superset.jinja_context.url_param">[docs]</a><span class="k">def</span> <span class="nf">url_param</span><span class="p">(</span><span class="n">param</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+ <span class="sd">"""Get a url paramater</span>
+
+<span class="sd"> :param param: the url parameter to lookup</span>
+<span class="sd"> :type param: str</span>
+<span class="sd"> :param default: the value to return in the absence of the parameter</span>
+<span class="sd"> :type default: str</span>
+<span class="sd"> """</span>
+ <span class="nb">print</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">request</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">param</span><span class="p">,</span> <span class="n">default</span><span class="p">)</span></div>
+
+
+<span class="k">def</span> <span class="nf">current_user_id</span><span class="p">():</span>
+ <span class="sd">"""The id of the user who is currently logged in"""</span>
+ <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">user</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">g</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">id</span>
+
+
+<span class="k">def</span> <span class="nf">current_username</span><span class="p">():</span>
+ <span class="sd">"""The username of the user who is currently logged in"""</span>
+ <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">user</span><span class="p">:</span>
+ <span class="k">return</span> <span class="n">g</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">username</span>
+
+
+<span class="k">class</span> <span class="nc">BaseTemplateProcessor</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+
+ <span class="sd">"""Base class for database-specific jinja context</span>
+
+<span class="sd"> There's this bit of magic in ``process_template`` that instantiates only</span>
+<span class="sd"> the database context for the active database as a ``models.Database``</span>
+<span class="sd"> object binds it to the context object, so that object methods</span>
+<span class="sd"> have access to</span>
+<span class="sd"> that context. This way, {{ hive.latest_partition('mytable') }} just</span>
+<span class="sd"> knows about the database it is operating in.</span>
+
+<span class="sd"> This means that object methods are only available for the active database</span>
+<span class="sd"> and are given access to the ``models.Database`` object and schema</span>
+<span class="sd"> name. For globally available methods use ``@classmethod``.</span>
+<span class="sd"> """</span>
+ <span class="n">engine</span> <span class="o">=</span> <span class="kc">None</span>
+
+ <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">database</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">query</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">database</span> <span class="o">=</span> <span class="n">database</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">query</span> <span class="o">=</span> <span class="n">query</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">schema</span> <span class="o">=</span> <span class="kc">None</span>
+ <span class="k">if</span> <span class="n">query</span> <span class="ow">and</span> <span class="n">query</span><span class="o">.</span><span class="n">schema</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">schema</span> <span class="o">=</span> <span class="n">query</span><span class="o">.</span><span class="n">schema</span>
+ <span class="k">elif</span> <span class="n">table</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">schema</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">schema</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="p">{</span>
+ <span class="s1">'url_param'</span><span class="p">:</span> <span class="n">url_param</span><span class="p">,</span>
+ <span class="s1">'current_user_id'</span><span class="p">:</span> <span class="n">current_user_id</span><span class="p">,</span>
+ <span class="s1">'current_username'</span><span class="p">:</span> <span class="n">current_username</span><span class="p">,</span>
+ <span class="s1">'form_data'</span><span class="p">:</span> <span class="p">{},</span>
+ <span class="p">}</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">kwargs</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">BASE_CONTEXT</span><span class="p">)</span>
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">engine</span><span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">context</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">engine</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">env</span> <span class="o">=</span> <span class="n">SandboxedEnvironment</span><span class="p">()</span>
+
+ <span class="k">def</span> <span class="nf">process_template</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+ <span class="sd">"""Processes a sql template</span>
+
+<span class="sd"> >>> sql = "SELECT '{{ datetime(2017, 1, 1).isoformat() }}'"</span>
+<span class="sd"> >>> process_template(sql)</span>
+<span class="sd"> "SELECT '2017-01-01T00:00:00'"</span>
+<span class="sd"> """</span>
+ <span class="n">template</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">env</span><span class="o">.</span><span class="n">from_string</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span>
+ <span class="n">kwargs</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">context</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">kwargs</span><span class="p">)</span>
+
+
+<div class="viewcode-block" id="PrestoTemplateProcessor"><a class="viewcode-back" href="../../sqllab.html#superset.jinja_context.PrestoTemplateProcessor">[docs]</a><span class="k">class</span> <span class="nc">PrestoTemplateProcessor</span><span class="p">(</span><span class="n">BaseTemplateProcessor</span><span class="p">):</span>
+ <span class="sd">"""Presto Jinja context</span>
+
+<span class="sd"> The methods described here are namespaced under ``presto`` in the</span>
+<span class="sd"> jinja context as in ``SELECT '{{ presto.some_macro_call() }}'``</span>
+<span class="sd"> """</span>
+ <span class="n">engine</span> <span class="o">=</span> <span class="s1">'presto'</span>
+
+ <span class="nd">@staticmethod</span>
+ <span class="k">def</span> <span class="nf">_schema_table</span><span class="p">(</span><span class="n">table_name</span><span class="p">,</span> <span class="n">schema</span><span class="p">):</span>
+ <span class="k">if</span> <span class="s1">'.'</span> <span class="ow">in</span> <span class="n">table_name</span><span class="p">:</span>
+ <span class="n">schema</span><span class="p">,</span> <span class="n">table_name</span> <span class="o">=</span> <span class="n">table_name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'.'</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">table_name</span><span class="p">,</span> <span class="n">schema</span>
+
+ <span class="k">def</span> <span class="nf">latest_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">table_name</span><span class="p">):</span>
+ <span class="n">table_name</span><span class="p">,</span> <span class="n">schema</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_schema_table</span><span class="p">(</span><span class="n">table_name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span><span class="p">)</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">database</span><span class="o">.</span><span class="n">db_engine_spec</span><span class="o">.</span><span class="n">latest_partition</span><span class="p">(</span>
+ <span class="n">table_name</span><span class="p">,</span> <span class="n">schema</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">database</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
+
+ <span class="k">def</span> <span class="nf">latest_sub_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">table_name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+ <span class="n">table_name</span><span class="p">,</span> <span class="n">schema</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_schema_table</span><span class="p">(</span><span class="n">table_name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span><span class="p">)</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">database</span><span class="o">.</span><span class="n">db_engine_spec</span><span class="o">.</span><span class="n">latest_sub_partition</span><span class="p">(</span>
+ <span class="n">table_name</span><span class="o">=</span><span class="n">table_name</span><span class="p">,</span>
+ <span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">,</span>
+ <span class="n">database</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">database</span><span class="p">,</span>
+ <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></div>
+
+
+<span class="k">class</span> <span class="nc">HiveTemplateProcessor</span><span class="p">(</span><span class="n">PrestoTemplateProcessor</span><span class="p">):</span>
+ <span class="n">engine</span> <span class="o">=</span> <span class="s1">'hive'</span>
+
+
+<span class="n">template_processors</span> <span class="o">=</span> <span class="p">{}</span>
+<span class="n">keys</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="nb">globals</span><span class="p">()</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
+<span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">keys</span><span class="p">:</span>
+ <span class="n">o</span> <span class="o">=</span> <span class="nb">globals</span><span class="p">()[</span><span class="n">k</span><span class="p">]</span>
+ <span class="k">if</span> <span class="n">o</span> <span class="ow">and</span> <span class="n">inspect</span><span class="o">.</span><span class="n">isclass</span><span class="p">(</span><span class="n">o</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="n">BaseTemplateProcessor</span><span class="p">):</span>
+ <span class="n">template_processors</span><span class="p">[</span><span class="n">o</span><span class="o">.</span><span class="n">engine</span><span class="p">]</span> <span class="o">=</span> <span class="n">o</span>
+
+
+<span class="k">def</span> <span class="nf">get_template_processor</span><span class="p">(</span><span class="n">database</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">query</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
+ <span class="n">TP</span> <span class="o">=</span> <span class="n">template_processors</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">database</span><span class="o">.</span><span class="n">backend</span><span class="p">,</span> <span class="n">BaseTemplateProcessor</span><span class="p">)</span>
+ <span class="k">return</span> <span class="n">TP</span><span class="p">(</span><span class="n">database</span><span class="o">=</span><span class="n">database</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">query</span><span class="o">=</span><span class="n">query</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+</pre></div>
+
+ </div>
+ </div>
+ <footer>
+
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>
+
+ </p>
+ </div>
+ Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
+
+ </div>
+ </div>
+
+ </section>
+
+ </div>
+
+
+
+
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT:'../../',
+ VERSION:'',
+ COLLAPSE_INDEX:false,
+ FILE_SUFFIX:'.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+
+
+
+
+
+ <script type="text/javascript" src="../../_static/js/theme.js"></script>
+
+
+
+
+ <script type="text/javascript">
+ jQuery(function () {
+ SphinxRtdTheme.StickyNav.enable();
+ });
+ </script>
+
+
+</body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_sources/druid.txt
----------------------------------------------------------------------
diff --git a/_sources/druid.txt b/_sources/druid.txt
new file mode 100644
index 0000000..af956d9
--- /dev/null
+++ b/_sources/druid.txt
@@ -0,0 +1,48 @@
+Druid
+=====
+
+Superset works well with Druid, though currently not all
+advanced features out of Druid are covered. This page clarifies what is
+covered and what isn't and explains how to use some of the features.
+
+.. note ::
+ Currently Airbnb runs against Druid ``0.8.x`` and previous /
+ following versions are not tested against.
+
+Supported
+'''''''''
+
+Aggregations
+------------
+
+Common aggregations, or Druid metrics can be defined and used in Superset.
+The first and simpler use case is to use the checkbox matrix expose in your
+datasource's edit view (``Sources -> Druid Datasources ->
+[your datasource] -> Edit -> [tab] List Druid Column``).
+Clicking the ``GroupBy`` and ``Filterable`` checkboxes will make the column
+appear in the related dropdowns while in explore view. Checking
+``Count Distinct``, ``Min``, ``Max`` or ``Sum`` will result in creating
+new metrics that will appear in the ``List Druid Metric`` tab upon saving the
+datasource. By editing these metrics, you'll notice that they their ``json``
+element correspond to Druid aggregation definition. You can create your own
+aggregations manually from the ``List Druid Metric`` tab following Druid
+documentation.
+
+.. image:: _static/img/druid_agg.png
+ :scale: 50 %
+
+Post-Aggregations
+-----------------
+
+Druid supports post aggregation and this works in Superset. All you have to
+do is creating a metric, much like you would create an aggregation manually,
+but specify ``postagg`` as a ``Metric Type``. You then have to provide a valid
+json post-aggregation definition (as specified in the Druid docs) in the
+Json field.
+
+
+Not yet supported
+'''''''''''''''''
+
+- Regex filters
+- Lookups / joins
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_sources/faq.txt
----------------------------------------------------------------------
diff --git a/_sources/faq.txt b/_sources/faq.txt
new file mode 100644
index 0000000..350d483
--- /dev/null
+++ b/_sources/faq.txt
@@ -0,0 +1,145 @@
+FAQ
+===
+
+
+Can I query/join multiple tables at one time?
+---------------------------------------------
+Not directly no. A Superset SQLAlchemy datasource can only be a single table
+or a view.
+
+When working with tables, the solution would be to materialize
+a table that contains all the fields needed for your analysis, most likely
+through some scheduled batch process.
+
+A view is a simple logical layer that abstract an arbitrary SQL queries as
+a virtual table. This can allow you to join and union multiple tables, and
+to apply some transformation using arbitrary SQL expressions. The limitation
+there is your database performance as Superset effectively will run a query
+on top of your query (view). A good practice may be to limit yourself to
+joining your main large table to one or many small tables only, and avoid
+using ``GROUP BY`` where possible as Superset will do its own ``GROUP BY`` and
+doing the work twice might slow down performance.
+
+Whether you use a table or a view, the important factor is whether your
+database is fast enough to serve it in an interactive fashion to provide
+a good user experience in Superset.
+
+
+How BIG can my data source be?
+------------------------------
+
+It can be gigantic! As mentioned above, the main criteria is whether your
+database can execute queries and return results in a time frame that is
+acceptable to your users. Many distributed databases out there can execute
+queries that scan through terabytes in an interactive fashion.
+
+
+How do I create my own visualization?
+-------------------------------------
+
+We are planning on making it easier to add new visualizations to the
+framework, in the meantime, we've tagged a few pull requests as
+``example`` to give people examples of how to contribute new
+visualizations.
+
+https://github.com/airbnb/superset/issues?q=label%3Aexample+is%3Aclosed
+
+
+Why are my queries timing out?
+------------------------------
+
+If you are seeing timeouts (504 Gateway Time-out) when running queries,
+it's because the web server is timing out web requests. If you want to
+increase the default (50), you can specify the timeout when starting the
+web server with the ``-t`` flag, which is expressed in seconds.
+
+``superset runserver -t 300``
+
+
+Why is the map not visible in the mapbox visualization?
+-------------------------------------------------------
+
+You need to register to mapbox.com, get an API key and configure it as
+``MAPBOX_API_KEY`` in ``superset_config.py``.
+
+
+How to add dynamic filters to a dashboard?
+------------------------------------------
+
+It's easy: use the ``Filter Box`` widget, build a slice, and add it to your
+dashboard.
+
+The ``Filter Box`` widget allows you to define a query to populate dropdowns
+that can be use for filtering. To build the list of distinct values, we
+run a query, and sort the result by the metric you provide, sorting
+descending.
+
+The widget also has a checkbox ``Date Filter``, which enables time filtering
+capabilities to your dashboard. After checking the box and refreshing, you'll
+see a ``from`` and a ``to`` dropdown show up.
+
+By default, the filtering will be applied to all the slices that are built
+on top of a datasource that shares the column name that the filter is based
+on. It's also a requirement for that column to be checked as "filterable"
+in the column tab of the table editor.
+
+But what about if you don't want certain widgets to get filtered on your
+dashboard? You can do that by editing your dashboard, and in the form,
+edit the ``JSON Metadata`` field, more specifically the
+``filter_immune_slices`` key, that receives an array of sliceIds that should
+never be affected by any dashboard level filtering.
+
+
+..code::
+
+ {
+ "filter_immune_slices": [324, 65, 92],
+ "expanded_slices": {},
+ "filter_immune_slice_fields": {
+ "177": ["country_name", "__from", "__to"],
+ "32": ["__from", "__to"]
+ }
+ }
+
+In the json blob above, slices 324, 65 and 92 won't be affected by any
+dashboard level filtering.
+
+Now note the ``filter_immune_slice_fields`` key. This one allows you to
+be more specific and define for a specific slice_id, which filter fields
+should be disregarded.
+
+Note the use of the ``__from`` and ``__to`` keywords, those are reserved
+for dealing with the time boundary filtering mentioned above.
+
+But what happens with filtering when dealing with slices coming from
+different tables or databases? If the column name is shared, the filter will
+be applied, it's as simple as that.
+
+Why does fabmanager or superset freezed/hung/not responding when started (my home directory is NFS mounted)?
+-----------------------------------------------------------------------------------------
+superset creates and uses an sqlite database at ``~/.superset/superset.db``. Sqlite is known to `don't work well if used on NFS`__ due to broken file locking implementation on NFS.
+
+__ https://www.sqlite.org/lockingv3.html
+
+One work around is to create a symlink from ~/.superset to a directory located on a non-NFS partition.
+
+Another work around is to change where superset stores the sqlite database by adding ``SQLALCHEMY_DATABASE_URI = 'sqlite:////new/localtion/superset.db'`` in superset_config.py (create the file if needed), then adding the directory where superset_config.py lives to PYTHONPATH environment variable (e.g. ``export PYTHONPATH=/opt/logs/sandbox/airbnb/``).
+
+How do I add new columns to an existing table
+---------------------------------------------
+
+Table schemas evolve, and Superset needs to reflect that. It's pretty common
+in the life cycle of a dashboard to want to add a new dimension or metric.
+To get Superset to discover your new columns, all you have to do is to
+go to ``Menu -> Sources -> Tables``, click the ``edit`` icon next to the
+table who's schema has changed, and hit ``Save`` from the ``Detail`` tab.
+Behind the scene, the new columns will get merged it. Following this,
+you may want to
+re-edit the table afterwards to configure the ``Column`` tab, check the
+appropriate boxes and save again.
+
+How do I go about developing a new visualization type?
+------------------------------------------------------
+Here's an example as a Github PR with comments that describe what the
+different sections of the code do:
+https://github.com/airbnb/superset/pull/3013
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_sources/gallery.txt
----------------------------------------------------------------------
diff --git a/_sources/gallery.txt b/_sources/gallery.txt
new file mode 100644
index 0000000..f0c7dfa
--- /dev/null
+++ b/_sources/gallery.txt
@@ -0,0 +1,89 @@
+Gallery
+=======
+
+.. image:: _static/img/viz_thumbnails/line.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/bubble.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/table.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/pie.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/bar.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/world_map.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/sankey.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/word_cloud.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/filter_box.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/pivot_table.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/directed_force.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/compare.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/sunburst.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/area.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/big_number.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/big_number_total.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/bullet.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/dist_bar.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/heatmap.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/markup.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/para.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/iframe.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/box_plot.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/treemap.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/cal_heatmap.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/horizon.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/mapbox.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/separator.png
+ :scale: 25 %
+
+.. image:: _static/img/viz_thumbnails/histogram.png
+ :scale: 25 %
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/_sources/index.txt
----------------------------------------------------------------------
diff --git a/_sources/index.txt b/_sources/index.txt
new file mode 100644
index 0000000..5141039
--- /dev/null
+++ b/_sources/index.txt
@@ -0,0 +1,74 @@
+.. image:: _static/img/s.png
+
+Superset's documentation
+''''''''''''''''''''''''
+
+Superset is a data exploration platform designed to be visual, intuitive
+and interactive.
+
+
+----------------
+
+.. warning:: This project was originally named Panoramix, was renamed to
+ Caravel in March 2016, and is currently named Superset as of November 2016
+
+Overview
+=======================================
+
+Features
+---------
+
+- A rich set of data visualizations, integrated from some of the best
+ visualization libraries
+- Create and share simple dashboards
+- An extensible, high-granularity security/permission model allowing
+ intricate rules on who can access individual features and the dataset
+- Enterprise-ready authentication with integration with major authentication
+ providers (database, OpenID, LDAP, OAuth & REMOTE_USER through
+ Flask AppBuilder)
+- A simple semantic layer, allowing users to control how data sources are
+ displayed in the UI by defining which fields should show up in which
+ drop-down and which aggregation and function metrics are made available
+ to the user
+- Integration with most RDBMS through SqlAlchemy
+- Deep integration with Druid.io
+
+------
+
+.. image:: https://camo.githubusercontent.com/82e264ef777ba06e1858766fe3b8817ee108eb7e/687474703a2f2f672e7265636f726469742e636f2f784658537661475574732e676966
+
+------
+
+.. image:: https://camo.githubusercontent.com/4991ff37a0005ea4e4267919a52786fda82d2d21/687474703a2f2f672e7265636f726469742e636f2f755a6767594f645235672e676966
+
+------
+
+.. image:: https://camo.githubusercontent.com/a389af15ac1e32a3d0fee941b4c62c850b1d583b/687474703a2f2f672e7265636f726469742e636f2f55373046574c704c76682e676966
+
+------
+
+
+Contents
+---------
+
+.. toctree::
+ :maxdepth: 2
+
+ installation
+ tutorial
+ security
+ sqllab
+ visualization
+ videos
+ gallery
+ druid
+ faq
+
+
+Indices and tables
+------------------
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
[02/14] incubator-superset-site git commit: Initial commit - Superset
docs as of 0.18.5
Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/searchindex.js
----------------------------------------------------------------------
diff --git a/searchindex.js b/searchindex.js
new file mode 100644
index 0000000..befed68
--- /dev/null
+++ b/searchindex.js
@@ -0,0 +1 @@
+Search.setIndex({envversion:49,filenames:["druid","faq","gallery","index","installation","security","sqllab","tutorial","videos","visualization"],objects:{"superset.jinja_context":{PrestoTemplateProcessor:[6,0,1,""],url_param:[6,1,1,""]}},objnames:{"0":["py","class","Python class"],"1":["py","function","Python function"]},objtypes:{"0":"py:class","1":"py:function"},terms:{"1thisismyscretkei":4,"37k":7,"3aclose":1,"3aexampl":1,"\u00e1lava":9,"\u00e1vila":9,"a\u00eft":9,"abstract":1,"almer\u00eda":9,"amap\u00e1":9,"ard\u00e8che":9,"ari\u00e8g":9,"b\u00e9ni":9,"c\u00e1cere":9,"c\u00e1diz":9,"c\u00f3rdoba":9,"c\u00f4te":9,"case":[0,4,7],"castell\u00f3n":9,"cear\u00e1":9,"class":[4,6],"corr\u00e8z":9,"coru\u00f1a":9,"d\u00f4me":9,"default":[1,4,5,6,7,9],"dr\u00f4me":9,"esp\u00edrito":9,"export":1,"final":7,"finist\u00e8r":9,"function":[3,4],"goi\u00e1":9,"guip\u00fazcoa":9,"h\u00e9rault":9,"hoce\u00efma":9,"import":[1,4,9],"is\u00e8re":9,"ja\u00e9n":9,"k\u00e9nitra":9,"kela\u00e2":9,"kh\
u00e9misset":9,"kh\u00e9nifra":9,"la\u00e2youn":9,"le\u00f3n":9,"li\u00e8g":9,"long":[4,6],"loz\u00e8r":9,"m\u00e1laga":9,"maranh\u00e3o":9,"mekn\u00e8":9,"new":[],"ni\u00e8vr":9,"par\u00e1":9,"para\u00edba":9,"paran\u00e1":9,"piau\u00ed":9,"pyr\u00e9n\u00e9":9,"return":[1,4,6],"rh\u00f4ne":9,"rond\u00f4nia":9,"s\u00e3o":9,"s\u00e8vre":9,"sa\u00f4n":9,"sal\u00e9":9,"short":[8,9],"switch":4,"t\u00e9mara":9,"t\u00e9touan":9,"th\u00fcringen":9,"true":[4,5],"var":9,"vend\u00e9":9,"w\u00fcrttemberg":9,"while":[0,4,5],__call__:4,__from:1,__init__:4,__name__:4,__to:1,abd:9,abe:9,aberdeen:9,aberdeenshir:9,abil:7,abl:[4,5,7],about:[],abov:[1,7],absenc:6,accept:1,access:[],account:4,acre:9,action:[4,5,9],activ:4,adapt:4,adding:[],addit:4,additional_middleware:4,adjust:7,admin:[],administr:[],advanc:[0,4,7],adventur:4,adygei:9,affect:[1,8],after:[1,4,7],afterward:1,agadir:9,again:[1,7],against:[0,4],agb:9,agd:9,aggreg:[0,3,5],ago:7,agrigento:9,agy:9,ahmar:9,ain:9,airbnb:[0,1,4],aisn:9,alabama:
9,alagoa:9,alaska:9,albacet:9,alessandria:9,alicant:9,all:[0,1,4,5,7,9],all_datasource_access:5,allier:9,allow:[1,3,4,5,6],alongsid:4,alpe:9,alphanumer:9,alreadi:[4,7,8,9],also:[1,4,5,6,7,9],alt:[6,9],altai:9,alter:[5,8],alx:9,amazona:9,amazonaw:4,ambigu:9,amu:9,amur:9,analys:7,analysi:[1,7],analyst:5,analyt:4,analyz:7,ancona:9,andria:9,angad:9,anglesei:9,angu:9,anhalt:9,anhui:9,ani:[1,4,5,6,7],anjra:9,annot:8,annotat:[],anonym:5,anoth:[4,5],another:1,ans:9,ant:9,antrim:9,antwerpen:9,any:5,aosta:9,api:[1,4],app:4,appbuilder:[3,5],appear:[0,7],appli:[1,6,7,8],applic:[4,5],appropri:1,apt:4,aquila:9,arbitrari:1,ard:9,ardenn:9,arezzo:9,argyll:9,arizona:9,ark:9,arkansa:9,arkhangel:9,arm:9,armagh:9,armor:9,around:1,arrai:[1,4],ascoli:9,ash:9,ask:7,asn:9,aspect:8,assa:9,asset:[4,9],assign:5,assilah:9,associ:5,assum:[4,5,7],assumpt:5,ast:9,asti:9,astrakhan:9,asturia:9,aswan:9,async:[],asynchron:4,asyut:9,asz:9,athena:[],atlantiqu:9,attempt:4,attribut:5,aube:9,aude:9,audienc:7,auth_remote_us
er:4,authent:[3,5,7],automag:5,avail:[3,4,5,7,8],avellino:9,aveyron:9,avoid:1,awar:4,aws:[],aws_access_key_id:4,aws_secret_access_kei:4,awsathena:4,axi:7,ayrshir:9,ayshir:9,azi:9,azilal:9,back:[4,7],backend:[4,6],badajoz:9,baden:9,baha:9,bahia:9,bahr:9,bake:7,balanc:[],balear:9,balkar:9,ballymena:9,ballymonei:9,banbridg:9,bani:9,bar:7,barcelona:9,bari:9,bark:9,barletta:9,bas:9,base:[1,5],basecach:4,bashkortostan:9,basi:5,basic:7,batch:1,bath:9,bayern:9,bbd:9,bdf:9,bdg:9,becaus:[1,9],bedfordshir:9,been:[5,7],befor:4,behalf:7,behind:[],beij:9,bel:9,belfast:9,belfort:9,belgium:9,belgorod:9,belluno:9,below:7,bem:9,ben:9,benevento:9,ber:9,bergamo:9,berkan:9,berkshir:9,berlin:9,bes:9,best:[3,5],better:[4,7],bex:9,bexlei:9,beyond:4,bfs:9,bge:9,bgw:9,biella:9,bin:4,binari:4,bind:4,bit:[4,7],bkm:9,bla:9,blackburn:9,blaenau:9,blank:7,blob:[1,4],blueprint:[],blueprints:4,bly:9,bmh:9,bnb:9,bnh:9,bns:9,bologna:9,bolzano:9,bom:9,border:9,both:[4,5],bottom:[5,7],bouch:9,bouleman:9,boundari:1,bourn
emouth:9,box:[1,7],brabant:9,brandenburg:9,brazil:9,bremen:9,brent:9,brescia:9,brew:4,brianza:9,bridgend:9,brighton:9,brindisi:9,bring:4,bristol:9,broad:7,broken:1,broker:4,broker_url:4,bromlei:9,brows:6,browser:4,bru:9,bruxel:9,bry:9,bryansk:9,bst:9,buckinghamshir:9,buhayrah:9,build:[],builder:4,built:[1,5],builtin:6,bundl:4,bur:9,burgo:9,buryat:9,buryatdan:9,bute:9,button:[5,7],cach:[],cache_config:4,caerphilli:9,cagliari:9,calabria:9,calai:9,california:9,call:[4,7],caltanissetta:9,calvado:9,cam:9,cambridgeshir:9,camden:9,campidano:9,campobasso:9,can:[],can_add:5,can_delet:5,can_edit:5,can_list:5,can_show:5,cannot:5,cantabria:9,cantal:9,capabl:[1,6],captur:7,caravel:3,carbonia:9,cardiff:9,care:7,carmarthenshir:9,carolina:9,carrara:9,carrickfergu:9,cas:9,casablanca:9,caserta:9,castlereagh:9,catania:9,catanzaro:9,catarina:9,categori:5,cay:9,celeri:[4,6],celery_annotations:4,celery_config:4,celery_imports:4,celery_result_backend:4,celeryconfig:4,celsiu:7,ceredigion:9,certain:[1,6,8],
cesena:9,ceuta:9,cflags:4,cgn:9,cgv:9,chanc:4,chang:[1,4,7],charact:9,charent:9,chart:[7,8],che:9,chechnya:9,check:[0,1,5,7],checkbox:[0,1,5],chefchaouen:9,chelsea:9,chelyabinsk:9,cher:9,cherkasi:9,cherkess:9,chernihiv:9,chernivtsi:9,cheshir:9,chi:9,chichaoua:9,chieti:9,china:9,choic:9,chongq:9,chs:9,cht:9,chtouka:9,chu:9,chukot:9,chuvash:9,citi:9,ciudad:9,ckf:9,ckt:9,clackmannanshir:9,clarifi:0,clearli:7,cleveland:9,click:[0,1,5,7],clickhous:4,client:4,clk:9,clr:9,cluster1:5,cluster:4,cma:9,cmd:9,cmn:9,code:[1,4,6,9],colerain:9,collect:[5,8],colorado:9,columbia:9,column:[],com:[1,4],come:[1,4,5,6,8],comma:7,command:[4,5],comment:1,common:[0,1,4],como:9,compat:4,complementari:5,complet:9,compli:4,compon:9,compos:5,con:9,concept:4,concern:9,config:[4,7],configur:[],confin:4,confirm:[5,7],congrat:7,connect:[],connect_arg:4,connecticut:9,consist:[4,9],consolid:5,constant:4,consult:4,consum:5,contain:[1,4,9],context:[4,6],contrib:4,contribut:1,control:[3,9],conveni:9,convert:[7,9],conwi
:9,cookstown:9,copi:4,cor:4,corner:7,cornwal:9,correctli:[4,7],correspond:0,cors:[],cors_options:4,corydolphin:4,cosenza:9,could:5,count:[0,7],countri:[],country_nam:1,coupl:7,cover:[0,7],craigavon:9,creat:[],create_engin:4,creation:[],credenti:4,cremona:9,creus:9,crf:9,crimea:9,criteria:[1,4],croton:9,croydon:9,cruz:9,cry:9,cryptographi:4,csr:9,csrf:4,csrf_enabled:[],css:[],cuenca:9,cumbria:9,cuneo:9,current:[0,3,4,5],cusio:9,custom:[],cwy:9,cx_oracl:4,cycl:1,d3format:7,dagenham:9,dagestan:9,dakota:9,dal:9,daqahliyah:9,darlington:9,darwen:9,databas:[],dataset:[3,5,7,8],datasourc:[0,1,4,5],datasource1:5,date:[1,5,7],datetim:6,dateutil:6,dby:9,deactiv:4,deal:1,debian:4,deep:3,deeper:[],def:4,defin:[],definit:0,degre:7,delawar:9,delet:5,demonstr:8,den:9,denbighshir:9,deni:[5,9],depart:[5,9],departmen:9,depend:[],deploi:[],der:9,derbi:9,derbyshir:9,deriv:[4,8],derri:9,descend:1,describ:[1,4,5,6,7],descript:9,design:3,desir:7,detail:1,deux:9,dev:[4,9],devel:4,develop:[],devon:9,dgn:9,dg
y:9,dialect:4,dictionari:4,differ:[1,4,5,7,8],difficult:7,dimens:[1,7,8],direct:7,directli:[1,4],discov:1,dispatch:6,displai:[3,9],disregard:1,distinct:[0,1,7],distribut:[1,6,7],district:9,distrito:9,diva:9,divis:9,dnd:9,dnipropetrov:9,doc:[0,4],document:[],don:1,done:4,donet:9,dor:9,dordogn:9,dorset:9,doub:9,dow:9,down:[1,3,7,9],download:4,drag:7,drenth:9,driver:4,drop:[3,7],dropdown:[0,1,5],dry:9,due:1,dumfri:9,dumyat:9,dunbartonshir:9,dunde:9,dungannon:9,dur:9,durat:4,durham:9,each:[5,9],eal:9,eale:9,easi:[1,4],easier:1,easili:6,east:9,eay:9,edh:9,edinburgh:9,edit:[0,1,4,5,7],editor:1,edu:9,effect:1,egypt:9,eilean:9,elb:4,element:[0,4],eln:9,els:9,emilia:9,enabl:[1,4,5],enable_cors:4,enable_proxy_fix:4,encod:4,encount:4,encrypt:4,end:7,endpoint:4,enf:9,enfield:9,engin:6,engine_param:4,enna:9,enough:1,ensur:4,enter:[4,6],enterpris:3,entiti:[4,5],env:4,environ:[1,4,6],equal:7,err:9,errachidia:9,error:[4,5],erw:9,ery:9,escap:4,esi:9,ess:9,essaouira:9,essenti:4,essex:9,essonn:9,estab
lish:9,esx:9,etc:7,eure:9,even:[5,7],eventu:4,everyth:4,evolv:[1,5],exampl:[1,4,5,7,9],exce:4,except:4,execut:[1,4,5,6,7],exist:[],exit:4,expanded_slic:1,expect:4,experi:[1,7],explain:0,explicit:5,explor:[0,3,4,5,7],explore:[],explorev2:9,expos:[0,4,5,6,7,8],express:1,expression:[],extens:[3,4,7],extra:[],extract:4,fab:5,factor:1,fah:9,fahrenheit:7,fal:9,falkirk:9,fall:4,fashion:1,fast:1,fayyum:9,featur:[],feder:9,fedora:4,feel:7,fer:9,fermanagh:9,fermo:9,ferrara:9,fes:9,few:[1,4,5,7],field:[0,1,3,4,5,7],fif:9,fife:9,fig:9,figuig:9,file:[1,4,9],filesystem:4,filter:[],filter_immune_slic:1,filter_immune_slice_field:1,financ:5,financi:5,find:[4,6,7],first:[0,4,5,7,9],fix:5,flag:[1,4],flask:[3,4,5],flevoland:9,flintshir:9,fln:9,florenc:9,florida:9,flow:6,foggia:9,folder:9,follow:[0,1,4,7,9],foobar:4,forest:9,fork:4,forli:9,form:[1,4,9],format:7,forward:4,foundat:5,frame:1,framework:[1,4,5],franc:9,frankiv:9,fresh:7,friesland:9,from:[0,1,3,4,5,6,7,8,9],frosinon:9,fujian:9,fulham:9,full:[
7,9],futur:4,fym:9,gallowai:9,gamma:[],gansu:9,gard:9,garonn:9,gatewai:1,gather:5,gcc:4,gdal:9,gdata:9,gelderland:9,gener:6,genova:9,geojson:9,georgia:9,ger:9,gerai:9,germani:9,get:[],gharbiyah:9,gigant:1,girona:9,girond:9,git:4,github:[1,4],give:[1,5],given:5,glamorgan:9,glasgow:9,glg:9,global:4,gloucestershir:9,gls:9,goe:4,good:[1,7],googl:4,gorizia:9,gorno:9,granada:9,grand:9,grant:5,granular:[3,5],gre:9,great:5,green:7,greenplum:4,greenwich:9,groningen:9,grosseto:9,grosso:9,group:[1,7],groupabl:7,groupbi:0,guadalajara:9,guangdong:9,guangxi:9,gue:9,guelmim:9,guizhou:9,gunicorn:4,gwent:9,gwn:9,gwynedd:9,hacknei:9,hainan:9,hainaut:9,haj:9,hajeb:9,hal:9,halton:9,ham:9,hamburg:9,hamlet:9,hammersmith:9,hampshir:9,handl:[4,5,6],hao:9,haouz:9,happen:[1,5],haringei:9,harrow:9,hartlepool:9,haut:9,hav:9,have:[0,1,4,5,7],haven:7,haver:9,hawaii:9,hck:9,header:[4,7],health:4,healthcheck:4,hebei:9,hef:9,heilongjiang:9,help:[4,7],henan:9,here:[1,4,5,6,7,8],herefordshir:9,hertfordshir:9,hessen:9
,high:[3,8],highest:7,highland:9,hil:9,hillingdon:9,hit:[1,4,6],hive:4,hld:9,hmf:9,hns:9,hoc:9,hold:7,holland:9,holstein:9,host:4,hostnam:4,hounslow:9,hour:4,hove:9,how:[],hpl:9,hrt:9,hrw:9,hry:9,html:[4,9],http:[1,4,9],http_x_proxy_remote_user:4,hubei:9,huelva:9,huesca:9,hui:9,hull:9,hunan:9,hyphen:9,icon:[1,7],ida:9,idaho:9,ide:[4,6],ideal:7,identifi:9,ifr:9,ifrane:9,iglesia:9,ijsselmeer:9,iliyah:9,ille:9,illinoi:9,immedi:7,immun:8,impala:4,impati:4,imperia:9,implement:[1,4],impyla:4,includ:[4,5],increas:1,index:[3,4,6],indiana:9,indic:7,individu:[3,5],indre:9,ine:9,inezgan:9,inform:[4,7],ingush:9,init:[4,5],initi:[],initial:4,input:9,insert:4,insid:4,instal:[],install:4,installat:[],instanc:[4,5,7],integr:[],integrat:3,intend:4,interact:[1,3],interest:7,interfac:4,intern:9,internat:9,intric:3,intro:[],intuit:3,inverclyd:9,investig:7,iow:9,iowa:9,irk:9,irkutsk:9,isernia:9,iskandariyah:9,isl:9,island:9,isle:9,islington:9,isma:9,isn:[0,4],iso:9,issu:1,itali:9,item:[4,5],itself:[4,5,
7,9],iva:9,ivano:9,ivanovo:9,ivc:9,jadid:9,jadida:9,janeiro:9,janub:9,javascript:9,jdbc:4,jdi:9,jerada:9,jersei:9,jiangsu:9,jiangxi:9,jilin:9,jinja:[],jinja_context:6,jinja_context_addons:4,jizah:9,join:[],jra:9,json:[0,1,4],jsx:9,jura:9,just:[4,6,7],kabardin:9,kacem:9,kafr:9,kaliningrad:9,kalmyk:9,kaluga:9,kam:9,kamchatka:9,kansa:9,karachai:9,karelia:9,kda:9,kec:9,kei:[1,4],kem:9,kemerovo:9,ken:9,kensington:9,kent:9,kentucki:9,kes:9,key_prefix:4,keyboard:6,keyn:9,keyword:[1,4],kfs:9,kgd:9,kgn:9,kha:9,khabarovsk:9,khakass:9,khanti:9,kharkiv:9,khe:9,kherson:9,khl:9,khm:9,khmel:9,khn:9,kho:9,khouribga:9,kiev:9,kingston:9,kinross:9,kir:9,kirov:9,kirovohrad:9,klu:9,know:4,known:1,komi:9,kos:9,kostroma:9,krasnodar:9,krasnoyarsk:9,krs:9,ktt:9,kurgan:9,kursk:9,kwarg:6,kya:9,kyi:9,laa:9,lab:[],label:[1,7,9],lambda:4,lambeth:9,lan:9,lanarkshir:9,lancashir:9,land:9,languag:[6,8],lar:9,larach:9,larg:[1,4],larn:9,last:4,latest:4,latest_partit:6,latina:9,latitud:7,laughingman7743:4,layer:[1,3],l
bh:9,lce:9,ldap:3,ldflags:4,least:4,leav:7,lec:9,lecc:9,lecco:9,left:7,leicest:9,leicestershir:9,len:9,leningrad:9,less:9,let:7,level:[1,4,5,8],lew:9,lewisham:9,liaon:9,lib:4,libffi:4,libldap2:4,librari:[3,4,6],libsasl2:4,libssl:4,life:1,like:[0,1,4,5,7],limavadi:9,limburg:9,limit:[1,5,7],lin:9,lincolnshir:9,link:7,lip:9,lipetsk:9,lisburn:9,list:[],live:1,livorno:9,lleida:9,lmv:9,lnd:9,lo4:9,load:[],load_exampl:4,local:4,localhost:4,localt:1,locat:1,lock:1,lodi:9,log:[1,5],logic:[1,4,7],login:4,loir:9,loiret:9,london:9,longitud:7,look:[4,5,7],lookup:[0,6],lot:9,lothian:9,louisiana:9,lrn:9,lsb:9,lucca:9,luckili:7,lugo:9,luhan:9,lut:9,luton:9,luxembourg:9,macerata:9,made:[3,4,5,9],madrid:9,mag:9,maga:9,magherafelt:9,mai:[1,4,5,7,9],main:[1,4,9],major:3,make:[],man:9,manag:[],manch:9,manchest:9,mani:[1,4,5,7],manifest:7,mansii:9,mantua:9,manual:[0,5],mapbox_api_key:[1,4],mapshap:9,march:3,margin:7,marii:9,maritim:9,mark:7,markdown:8,marn:9,marrakech:9,maryland:9,massa:9,massachusett:9,
match:7,matera:9,materi:1,mato:9,matrix:0,matrouh:9,max:[0,7],max__measurement_flag:7,maximum:[4,7],mayenn:9,mdb:9,mdw:9,mean:5,meantim:1,measur:7,measurement_d:7,measurement_flag:7,mecklenburg:9,medio:9,medwai:9,mek:9,melilla:9,mellal:9,melloul:9,memcach:4,memori:4,mention:1,menu:[1,4,5,7],mer:9,meren:9,merg:1,merseysid:9,merthyr:9,merton:9,messag:[4,5,7],messina:9,metadata:[1,4,6],metadata_param:4,method:6,metric:[],meurth:9,meus:9,mexico:9,mft:9,michigan:9,middl:7,middlesbrough:9,middlewar:4,middleware:[],midland:9,midlothian:9,might:[1,5,7],mik:9,milano:9,milton:9,min:[0,7],mina:9,minnesota:9,minufiyah:9,minut:4,minya:9,mississippi:9,missouri:9,mln:9,mmd:9,mnf:9,model:[3,5],modena:9,modern:6,modul:[3,4,6],moh:9,mohammedia:9,moment:7,mon:9,mongol:9,monmouthshir:9,montana:9,monza:9,morai:9,morbihan:9,mordovia:9,more:[1,4,5,6,7,9],moreov:7,morocco:9,mos:9,moscow:9,mosel:9,moskva:9,most:[1,3],mostli:5,mou:9,moulai:9,mourn:9,mow:9,moyl:9,mrt:9,mry:9,mssql:4,mty:9,mu6:9,much:0,multi:6
,mur:9,murcia:9,murmansk:9,must:[4,7],my_crazy_macro:4,mykolayiv:9,myl:9,mysql:4,mysqlclient:4,na7:9,nad:9,nador:9,name:[1,3,4,5,7,9],nameofyourcountri:9,namespac:6,namur:9,napoli:9,nation:9,navarra:9,navig:[4,8],nay:9,nbl:9,ndn:9,neath:9,nebraska:9,necessari:4,need:[],nei:9,nel:9,nell:9,nen:9,nenet:9,netherland:9,nevada:[7,9],never:1,newham:9,newport:9,newri:9,newtownabbei:9,next:[1,4,5,7,9],nfk:9,nginx:4,ngm:9,ngr:9,niedersachsen:9,ningxia:9,niz:9,nizhegorod:9,nlk:9,nln:9,non:1,none:[4,6],noord:9,nord:9,nordrhein:9,norfolk:9,norm:9,nort:9,north:9,northamptonshir:9,northumberland:9,note:[1,4,5,7],notic:0,nottingham:9,nottinghamshir:9,novara:9,novemb:3,novgorod:9,novosibirsk:9,now:[1,7],npm:4,nsm:9,nta:9,nth:9,ntl:9,ntt:9,number:[7,9],numer:7,nuoro:9,nvs:9,nwm:9,nwp:9,nyk:9,nym:9,nyt:9,oauth:3,object:[4,5],obtain:9,odessa:9,offici:4,ogliastra:9,ogr2ogr:9,ohio:9,oise:9,oklahoma:9,olbia:9,omagh:9,omh:9,oms:9,omsk:9,once:[4,7],one:[1,5],onli:[1,5,7],ont:9,oost:9,openid:3,openldap:4,ope
nssl:4,oper:4,opt:1,option:[4,7],optional:7,oracl:4,order:4,ore:9,oregon:9,orel:9,orenburg:9,org:[4,9],organ:7,organiz:9,oriental:9,origin:[3,5,7],oristano:9,ork:9,orknei:9,orl:9,orne:9,ossetia:9,ossola:9,osx:4,other:[4,5,7,8],otherwis:4,oua:9,ouarzaz:9,ouj:9,oujda:9,our:7,ourens:9,out:[],outlier:7,overijssel:9,overload:4,overrid:[],own:[],oxf:9,oxfordshir:9,packag:4,padua:9,page:[0,3,4,5,7],palencia:9,palermo:9,palma:9,panoramix:3,param:6,paramat:6,paramet:[4,6],parameter:6,pari:9,parma:9,part:[4,9],partit:[1,6],partition_kei:6,pass:4,password:4,past:[4,6],path:4,paulo:9,pavia:9,pem:[4,9],pembrokeshir:9,pennsylvania:9,penza:9,peopl:[1,5],per:[],perform:1,perhap:5,period:[],perm:9,permiss:[],pernambuco:9,persist:[4,6],perthshir:9,perugia:9,pesaro:9,pescara:9,peterborough:9,petersburg:9,pfalz:9,phrase:7,piacenza:9,piceno:9,piec:7,pip:[],pisa:9,pistoia:9,pkg:4,pkn:9,place:[4,7],plai:4,plain:7,plan:[1,4],platform:[3,4],pleas:[4,7],plu:[5,7],ply:9,plymouth:9,pnz:9,pocoo:4,point:[4,7],po
l:9,poltava:9,pontevedra:9,pool:9,pop:4,popul:[1,4],popup:7,por:9,pordenon:9,port:[4,9],portion:7,portsmouth:9,possibl:[1,4,5],postagg:0,postgr:[],postgresql:[4,7],potenza:9,pow:9,power:[4,5,6],powi:9,practic:1,prato:9,precipit:7,prefer:[],prefix:4,present:7,presto:[4,6],prestotemplateprocessor:6,pretti:1,previou:0,pri:9,primor:9,princip:9,probabl:5,process:[1,4],product:4,profil:5,program:6,project:[3,4],prompt:4,proto:4,provenc:9,provid:[],provinc:9,proxi:4,psk:9,pskov:9,psycopg2:4,pte:9,pts:9,public_role_like_gamma:5,publish:9,pui:9,pull:1,purpos:[4,7,9],put:[4,9],pyathenajdbc:4,pyhiv:4,pylibmc:4,pymssql:4,pypi:4,python:[],pythonpath:[1,4],pyvenv:4,qahirah:9,qalyubiyah:9,qina:9,qinghai:9,queue:[4,6],quick:[],rab:9,rabat:9,rabbitmq:4,ragusa:9,random:[4,6],rang:7,rapid:5,rate_limit:4,ravenna:9,rcc:9,rct:9,rdb:9,rdbms:3,react:6,read:7,readi:3,real:9,receiv:1,recommend:[4,5],record:[5,7,9],redbridg:9,redcar:9,redi:4,redirect:7,rediscach:4,redshift:[],reduc:9,refer:[4,7],referenc:4,re
flect:1,refresh:[1,4],refresh_druid:4,regex:0,reggio:9,region:9,region_nam:4,regist:1,rel:5,relat:[0,4,5],relativedelta:6,relev:9,reli:4,remote_user:[3,4],remoteusermiddlewar:4,remov:5,renam:3,renfrewshir:9,replac:7,repo:4,repres:9,request:[1,4],requir:[1,4,5,9],research:7,reserv:1,respons:4,rest:7,result:[0,1,4,6,7],results_backend:4,retain:7,reusabl:4,revenu:5,revers:4,revok:5,rfw:9,rheinland:9,rhel:4,rhin:9,rhode:9,rhondda:9,ric:9,rich:[3,6],richmond:9,ride:9,rieti:9,right:[4,5,7],rimini:9,rio:9,rioja:9,rivn:9,role:[],roma:9,root:4,roraima:9,ros:9,rostov:9,roughli:7,rout:4,rovigo:9,row:[5,7],row_limit:4,rule:3,run:[0,1,4,5,6,7],runserv:[1,4],russia:9,russian:9,rut:9,rutland:9,rya:9,ryazan:9,s3_cache_bucket:4,s3_cache_key_prefix:4,s3_staging_dir:4,s3cach:4,s3werkzeugcach:4,saarland:9,sachsen:9,saf:9,safi:9,sai:[4,5],saint:9,sak:9,sakha:9,sakhalin:9,sal:9,salamanca:9,salerno:9,sam:9,samara:9,same:[4,5],sampl:7,sandbox:1,santa:9,santo:9,sar:9,saratov:9,sarth:9,sassari:9,save:[0,1,5,
7],savoi:9,savona:9,say:9,scan:1,scb:9,scene:1,schedul:1,schema:[],schema_nam:4,schleswig:9,scope:4,scottish:9,scratch:7,script:4,sea:9,search:[3,5,6],searchpath:4,second:[1,4,5,9],secret:4,secret_key:4,section:[1,7],secur:[],see:[1,5,7],seem:7,sef:9,sefrou:9,segovia:9,sein:9,select:[5,6,7],select_countri:9,selectcontrol:9,self:4,semant:[3,8],sensit:5,separ:[7,9],sergip:9,serv:[1,4],server:[1,4],set:[3,4,5,7,9],settat:9,setup:[],setuptool:4,sevastopol:9,sevilla:9,sfk:9,sgc:9,shaanxi:9,shamal:9,shandong:9,shanghai:9,shanxi:9,shapfil:9,share:[1,3],sharqiyah:9,shaykh:9,she:5,shetland:9,shg:9,ship:[4,5],shortcut:6,should:[1,3,4,5,7,9],show:[1,3,4,7,8],shr:9,shropshir:9,siar:9,sichuan:9,side:4,sidi:9,siena:9,sign:[4,5,7],sik:9,simpl:[1,3,4,5,7,8],simple_pag:4,simplecach:4,simpler:0,simpli:[4,5,7],sin:9,sina:9,sinc:[5,7],singapor:9,singl:[1,4,5],site:9,size:[7,9],skh:9,skhirat:9,slice:[],slice_id:1,sliceid:1,sliman:9,slk:9,slow:1,small:1,smaller:7,smo:9,smolensk:9,smooth:6,snippet:4,snowf
al:7,solut:1,som:9,some:[],some_macro_cal:6,some_t:6,someon:7,somerset:9,someth:[4,7],sometim:5,somm:9,sondrio:9,soon:8,soria:9,sort:1,sos:9,sourc:[],south:9,southampton:9,southend:9,southwark:9,spain:9,sparksql:4,spe:9,specif:[1,4,5,7],specifi:[0,1,4],spezia:9,sql:[],sql_lab_result:4,sqlalchemi:[],sqlalchemy_database_uri:[1,4],sqlite:[1,4],sraghna:9,sry:9,ssl:[],sslmode:4,sslrootcert:4,sta:9,staffordshir:9,stai:5,standard:[4,6,9],start_respons:4,state:9,statist:7,statu:5,stavropol:9,stb:9,ste:9,stem:9,step:[4,9],stg:9,sth:9,still:5,stirl:9,stn:9,stockton:9,stoke:9,store:[1,4,9],str:6,straban:9,straightforward:4,strategi:5,string:[4,7,9],sts:9,stt:9,subdivis:9,successfulli:7,sud:9,sudo:4,suffolk:9,suhaj:9,sul:9,sum:[0,7],sumi:9,summari:7,superset:[],superset_config:[1,4,5],superset_home:4,superset_result:4,superset_webserver_port:4,superset_workers:4,support_sqlalchemi:4,sure:[4,5],surfac:7,surrei:9,sussex:9,sutton:9,suwai:9,suwayf:9,suz:9,sve:9,sverdlovsk:9,swa:9,swansea:9,swd:9,sw
indon:9,swk:9,symlink:1,synchron:5,syntax:4,syracus:9,system:[4,9],tab:[0,1,5,6,7],tag:1,taken:7,talbot:9,tam:9,tambov:9,tan:9,tanan:9,tanger:9,tao:9,taounat:9,taourirt:9,tar:9,taranto:9,target:7,tarn:9,taroudannt:9,tarragona:9,task:4,tat:9,tata:9,tatarstan:9,taw:9,taz:9,taza:9,tee:9,telford:9,temp:4,temperatur:7,tempio:9,templat:[],template_fold:4,tempor:7,tenerif:9,tennesse:9,tenth:7,terabyt:1,teramo:9,terni:9,ternopil:9,territoir:9,territori:9,teruel:9,test:[0,4,7],tet:9,texa:9,text:7,tfw:9,thame:9,than:[7,9],thei:[0,4,5,6],them:[4,5,8],theme:[],therefor:7,thi:[0,1,3,4,5,7,8,9],thing:[4,7],those:[1,5],though:[0,4,5,7],thr:9,three:9,through:[1,3,4,5,7,8],thurrock:9,tianjin:9,tick:7,timeout:[1,4],tiz:9,tiznit:9,tng:9,tnt:9,tob:9,tocantin:9,tof:9,toggl:8,toledo:9,tom:9,tomsk:9,tool:[],top:[1,4,5,7],torbai:9,torfaen:9,torino:9,tower:9,trani:9,transcarpathia:9,transform:1,trapani:9,trent:9,trento:9,treviso:9,triest:9,tul:9,tula:9,tutori:[],tuva:9,tve:9,tver:9,tweak:4,twh:9,twice:1,two
:[7,9],tydfil:9,tyne:9,type:[],typeahead:5,typic:4,tyu:9,tyumen:9,ubuntu:4,udine:9,udmurt:9,ukrain:9,ultim:4,uly:9,uncommon:[],under:[6,7],unfortun:4,union:[1,5],uniqu:9,unleash:6,unlik:7,unpack:4,unreleas:4,until:7,updat:4,upgrad:4,upgrade:[],upon:[0,5,9],upper:7,uqsur:9,urbino:9,uri:[4,7],url:[4,6],url_param:6,usa:9,user:[1,3,4,5,7],usernam:4,usr:5,usual:9,utah:9,utilis:4,utrecht:9,uuid:6,uygur:9,val:9,vale:9,valencia:9,valentia:9,valid:0,valladolid:9,valu:[1,4,5,6,7],van:9,vares:9,variabl:[1,4],vauclus:9,vbr:9,venezia:9,venv:4,verbano:9,vercelli:9,veri:[4,5],vermont:9,verona:9,version:[0,4],vertica:4,vertica_python:4,vgg:9,vgl:9,via:9,vibo:9,vicenza:9,video:[],vienn:9,view:[0,1,4,5,7,8],vilain:9,vinnytsya:9,virginia:9,virtual:1,virtualenv:[],viterbo:9,viv:9,vizcaya:9,vla:9,vlaam:9,vlaanderen:9,vladimir:9,vlg:9,vli:9,volgograd:9,vologda:9,volyn:9,vor:9,voronezh:9,vorpommern:9,vosg:9,vov:9,vwv:9,wad:9,wadi:9,wai:[5,7],walk:[7,8],walkthrough:[7,8],wallon:9,waltham:9,wandsworth:9,wan
t:[1,4,5,7,9],war:9,warrington:9,warwickshir:9,washington:9,wbk:9,wbr:9,wdu:9,wealth:7,wear:9,weather:7,weather_descript:7,web:[1,4,5],webserv:4,well:[0,1,4,5],were:[5,7],werkzeug:4,west:9,westfalen:9,westminst:9,wft:9,what:[0,1,4,7],wheel:4,where:[1,4,6,7],whether:[1,4],which:[1,3,4,6,7,9],who:[1,3],wht:9,widget:[1,8],wight:9,wil:9,wiltshir:9,window:[4,5],wisconsin:9,within:[5,6],without:5,wlg:9,wln:9,wlx:9,wna:9,wnd:9,won:1,wor:9,worcestershir:9,work:[0,1,4,6,7,8],worker:[4,6],world:[],would:[0,1,4,5],wrekin:9,wrexham:9,write:[4,6],written:6,wrt:9,wrx:9,wsm:9,wsx:9,wtf:4,wtf_csrf_enabled:4,www:9,wyom:9,xinjiang:9,xizang:9,yacoub:9,yamal:9,yan:9,yanovsk:9,yar:9,yaroslavl:9,year:7,yev:9,yevrei:9,yonn:9,yor:9,york:9,yorkshir:9,you:[],your:[],yourself:1,yum:4,yunnan:9,yvelin:9,zab:9,zabayk:9,zag:9,zagora:9,zamora:9,zaporizhzhya:9,zaragoza:9,zeeland:9,zeeuws:9,zet:9,zhejiang:9,zhytomyr:9,zouagha:9,zuid:9},titles:["Druid","FAQ","Gallery","Superset’s documentation","Installation &a
mp; Configuration","Security","SQL Lab","Tutorial for Superset Administrators","Videos","Visualization Tools"],titleterms:{"new":[1,7,9],"public":5,about:1,access:[4,5],add:[1,9],adding:[7,8],admin:5,administr:7,aggregat:0,alpha:5,annotat:8,athena:4,availabl:6,aws:4,balanc:4,behind:4,big:1,blueprint:4,build:4,cach:4,can:1,column:1,configur:4,connect:7,content:3,cors:4,countri:9,creat:[1,7],creation:8,css:8,custom:[5,8],dashboard:[1,7,8],data:[1,5,7],databas:[4,7],deeper:4,defin:8,depend:4,develop:1,directori:1,document:3,doe:1,druid:[0,4],dynam:1,exist:1,explore:7,expression:8,extra:6,fabmanag:1,faq:1,featur:[3,6],filter:[1,8],freez:1,galleri:2,gamma:5,get:4,home:1,how:1,hung:1,indice:3,initi:4,instal:4,installat:4,integr:4,intro:8,jinja:6,join:1,lab:[4,6],list:9,load:4,macro:6,make:4,manag:5,map:[1,9],mapbox:1,metric:5,middleware:4,mount:1,multipl:1,need:9,nfs:1,out:1,overview:[3,6],own:[1,4],per:5,permiss:5,pip:4,post:0,postgr:4,provid:5,python:4,queri:1,quick:8,redshift:4,respond
:1,restrict:5,role:5,schema:4,secur:5,setup:4,slice:[7,8],some:5,sourc:[1,5],sql:[4,6,8],sql_lab:5,sqlalchemi:4,ssl:4,start:[1,4],subset:5,superset:[1,3,4,7],support:0,tabl:[1,3,7,8],templat:6,theme:8,time:1,tool:[4,9],tutori:7,type:1,upgrade:4,video:8,virtualenv:4,visibl:1,visual:[1,9],when:1,why:1,yet:0,you:9,your:[4,7]}})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/security.html
----------------------------------------------------------------------
diff --git a/security.html b/security.html
new file mode 100644
index 0000000..792349d
--- /dev/null
+++ b/security.html
@@ -0,0 +1,364 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <title>Security — Superset's documentation documentation</title>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+
+
+
+
+
+ <link rel="index" title="Index"
+ href="genindex.html"/>
+ <link rel="search" title="Search" href="search.html"/>
+ <link rel="top" title="Superset's documentation documentation" href="index.html"/>
+ <link rel="next" title="SQL Lab" href="sqllab.html"/>
+ <link rel="prev" title="Tutorial for Superset Administrators" href="tutorial.html"/>
+
+
+ <script src="_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+ <div class="wy-grid-for-nav">
+
+
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search">
+
+
+
+ <a href="index.html" class="icon icon-home"> Superset's documentation
+
+
+
+ </a>
+
+
+
+
+
+
+
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+
+
+ </div>
+
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+
+
+
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation & Configuration</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial for Superset Administrators</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Security</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#provided-roles">Provided Roles</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#admin">Admin</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#alpha">Alpha</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#gamma">Gamma</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#sql-lab">sql_lab</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#public">Public</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="#managing-gamma-per-data-source-access">Managing Gamma per data source access</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#customizing">Customizing</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#permissions">Permissions</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#restricting-access-to-a-subset-of-data-sources">Restricting access to a subset of data sources</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#restricting-the-access-to-some-metrics">Restricting the access to some metrics</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="sqllab.html">SQL Lab</a></li>
+<li class="toctree-l1"><a class="reference internal" href="visualization.html">Visualization Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="videos.html">Videos</a></li>
+<li class="toctree-l1"><a class="reference internal" href="gallery.html">Gallery</a></li>
+<li class="toctree-l1"><a class="reference internal" href="druid.html">Druid</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
+</ul>
+
+
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+
+ <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="index.html">Superset's documentation</a>
+ </nav>
+
+
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="index.html">Docs</a> »</li>
+
+ <li>Security</li>
+ <li class="wy-breadcrumbs-aside">
+
+
+
+ </li>
+ </ul>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <div class="section" id="security">
+<h1>Security<a class="headerlink" href="#security" title="Permalink to this headline">¶</a></h1>
+<p>Security in Superset is handled by Flask AppBuilder (FAB). FAB is a
+“Simple and rapid application development framework, built on top of Flask.”.
+FAB provides authentication, user management, permissions and roles.</p>
+<div class="section" id="provided-roles">
+<h2>Provided Roles<a class="headerlink" href="#provided-roles" title="Permalink to this headline">¶</a></h2>
+<p>Superset ships with a set of roles that are handled by Superset itself.
+You can assume that these roles will stay up-to-date as Superset evolves.
+Even though it’s possible for <code class="docutils literal"><span class="pre">Admin</span></code> usrs to do so, it is not recommended
+that you alter these roles in any way by removing
+or adding permissions to them as these roles will be re-synchronized to
+their original values as you run your next <code class="docutils literal"><span class="pre">superset</span> <span class="pre">init</span></code> command.</p>
+<p>Since it’s not recommended to alter the roles described here, it’s right
+to assume that your security strategy should be to compose user access based
+on these base roles and roles that you create. For instance you could
+create a role <code class="docutils literal"><span class="pre">Financial</span> <span class="pre">Analyst</span></code> that would be made of set of permissions
+to a set of data sources (tables) and/or databases. Users would then be
+granted <code class="docutils literal"><span class="pre">Gamma</span></code>, <code class="docutils literal"><span class="pre">Financial</span> <span class="pre">Analyst</span></code>, and perhaps <code class="docutils literal"><span class="pre">sql_lab</span></code>.</p>
+<div class="section" id="admin">
+<h3>Admin<a class="headerlink" href="#admin" title="Permalink to this headline">¶</a></h3>
+<p>Admins have all possible rights, including granting or revoking rights from
+other users and altering other people’s slices and dashboards.</p>
+</div>
+<div class="section" id="alpha">
+<h3>Alpha<a class="headerlink" href="#alpha" title="Permalink to this headline">¶</a></h3>
+<p>Alpha have access to all data sources, but they cannot grant or revoke access
+from other users. They are also limited to altering the objects that they
+own. Alpha users can add and alter data sources.</p>
+</div>
+<div class="section" id="gamma">
+<h3>Gamma<a class="headerlink" href="#gamma" title="Permalink to this headline">¶</a></h3>
+<p>Gamma have limited access. They can only consume data coming from data sources
+they have been giving access to through another complementary role.
+They only have access to view the slices and
+dashboards made from data sources that they have access to. Currently Gamma
+users are not able to alter or add data sources. We assume that they are
+mostly content consumers, though they can create slices and dashboards.</p>
+<p>Also note that when Gamma users look at the dashboards and slices list view,
+they will only see the objects that they have access to.</p>
+</div>
+<div class="section" id="sql-lab">
+<h3>sql_lab<a class="headerlink" href="#sql-lab" title="Permalink to this headline">¶</a></h3>
+<p>The <code class="docutils literal"><span class="pre">sql_lab</span></code> role grants access to SQL Lab. Note that while <code class="docutils literal"><span class="pre">Admin</span></code>
+users have access to all databases by default, both <code class="docutils literal"><span class="pre">Alpha</span></code> and <code class="docutils literal"><span class="pre">Gamma</span></code>
+users need to be given access on a per database basis.</p>
+</div>
+<div class="section" id="public">
+<h3>Public<a class="headerlink" href="#public" title="Permalink to this headline">¶</a></h3>
+<p>It’s possible to allow logged out users to access some Superset features.</p>
+<p>By setting <code class="docutils literal"><span class="pre">PUBLIC_ROLE_LIKE_GAMMA</span> <span class="pre">=</span> <span class="pre">True</span></code> in your <code class="docutils literal"><span class="pre">superset_config.py</span></code>,
+you grant public role the same set of permissions as for the GAMMA role.
+This is useful if one wants to enable anonymous users to view
+dashboards. Explicit grant on specific datasets is still required, meaning
+that you need to edit the <code class="docutils literal"><span class="pre">Public</span></code> role and add the Public data sources
+to the role manually.</p>
+</div>
+</div>
+<div class="section" id="managing-gamma-per-data-source-access">
+<h2>Managing Gamma per data source access<a class="headerlink" href="#managing-gamma-per-data-source-access" title="Permalink to this headline">¶</a></h2>
+<p>Here’s how to provide users access to only specific datasets. First make
+sure the users with limited access have [only] the Gamma role assigned to
+them. Second, create a new role (<code class="docutils literal"><span class="pre">Menu</span> <span class="pre">-></span> <span class="pre">Security</span> <span class="pre">-></span> <span class="pre">List</span> <span class="pre">Roles</span></code>) and
+click the <code class="docutils literal"><span class="pre">+</span></code> sign.</p>
+<a class="reference internal image-reference" href="_images/create_role.png"><img alt="_images/create_role.png" src="_images/create_role.png" style="width: 591.5px; height: 309.5px;" /></a>
+<p>This new window allows you to give this new role a name, attribute it to users
+and select the tables in the <code class="docutils literal"><span class="pre">Permissions</span></code> dropdown. To select the data
+sources you want to associate with this role, simply click in the dropdown
+and use the typeahead to search for your table names.</p>
+<p>You can then confirm with your Gamma users that they see the objects
+(dashboards and slices) associated with the tables related to their roles.</p>
+</div>
+<div class="section" id="customizing">
+<h2>Customizing<a class="headerlink" href="#customizing" title="Permalink to this headline">¶</a></h2>
+<p>The permissions exposed by FAB are very granular and allow for a great level
+of customization. FAB creates many permissions automagically for each model
+that is create (can_add, can_delete, can_show, can_edit, ...) as well as for
+each view. On top of that, Superset can expose more granular permissions like
+<code class="docutils literal"><span class="pre">all_datasource_access</span></code>.</p>
+<p>We do not recommend altering the 3 base roles as there
+are a set of assumptions that Superset build upon. It is possible though for
+you to create your own roles, and union them to existing ones.</p>
+<div class="section" id="permissions">
+<h3>Permissions<a class="headerlink" href="#permissions" title="Permalink to this headline">¶</a></h3>
+<p>Roles are composed of a set of permissions, and Superset has many categories
+of permissions. Here are the different categories of permissions:</p>
+<ul class="simple">
+<li><strong>Model & action</strong>: models are entities like <code class="docutils literal"><span class="pre">Dashboard</span></code>,
+<code class="docutils literal"><span class="pre">Slice</span></code>, or <code class="docutils literal"><span class="pre">User</span></code>. Each model has a fixed set of permissions, like
+<code class="docutils literal"><span class="pre">can_edit</span></code>, <code class="docutils literal"><span class="pre">can_show</span></code>, <code class="docutils literal"><span class="pre">can_delete</span></code>, <code class="docutils literal"><span class="pre">can_list</span></code>, <code class="docutils literal"><span class="pre">can_add</span></code>, and
+so on. By adding <code class="docutils literal"><span class="pre">can_delete</span> <span class="pre">on</span> <span class="pre">Dashboard</span></code> to a role, and granting that
+role to a user, this user will be able to delete dashboards.</li>
+<li><strong>Views</strong>: views are individual web pages, like the <code class="docutils literal"><span class="pre">explore</span></code> view or the
+<code class="docutils literal"><span class="pre">SQL</span> <span class="pre">Lab</span></code> view. When granted to a user, he/she will see that view in
+the its menu items, and be able to load that page.</li>
+<li><strong>Data source</strong>: For each data source, a permission is created. If the user
+does not have the <code class="docutils literal"><span class="pre">all_datasource_access</span></code> permission granted, the user
+will only be able to see Slices or explore the data sources that are granted
+to them</li>
+<li><strong>Database</strong>: Granting access to a database allows for the user to access
+all data sources within that database, and will enable the user to query
+that database in SQL Lab, provided that the SQL Lab specific permission
+have been granted to the user</li>
+</ul>
+</div>
+<div class="section" id="restricting-access-to-a-subset-of-data-sources">
+<h3>Restricting access to a subset of data sources<a class="headerlink" href="#restricting-access-to-a-subset-of-data-sources" title="Permalink to this headline">¶</a></h3>
+<p>The best way to go is probably to give user <code class="docutils literal"><span class="pre">Gamma</span></code> plus one or many other
+roles that would add access to specific data sources. We recommend that you
+create individual roles for each access profile. Say people in your finance
+department might have access to a set of databases and data sources, and
+these permissions can be consolidated in a single role. Users with this
+profile then need to be attributed <code class="docutils literal"><span class="pre">Gamma</span></code> as a foundation to the models
+and views they can access, and that <code class="docutils literal"><span class="pre">Finance</span></code> role that is a collection
+of permissions to data objects.</p>
+<p>One user can have many roles, so a finance executive could be granted
+<code class="docutils literal"><span class="pre">Gamma</span></code>, <code class="docutils literal"><span class="pre">Finance</span></code>, and perhaps another <code class="docutils literal"><span class="pre">Executive</span></code> role that gather
+a set of data sources that power dashboards only made available to executives.
+When looking at its dashboard list, this user will only see the
+list of dashboards it has access to, based on the roles and
+permissions that were attributed.</p>
+</div>
+<div class="section" id="restricting-the-access-to-some-metrics">
+<h3>Restricting the access to some metrics<a class="headerlink" href="#restricting-the-access-to-some-metrics" title="Permalink to this headline">¶</a></h3>
+<p>Sometimes some metrics are relatively sensitive (e.g. revenue).
+We may want to restrict those metrics to only a few roles.
+For example, assumed there is a metric <code class="docutils literal"><span class="pre">[cluster1].[datasource1].[revenue]</span></code>
+and only Admin users are allowed to see it. Here’s how to restrict the access.</p>
+<ol class="arabic simple">
+<li>Edit the datasource (<code class="docutils literal"><span class="pre">Menu</span> <span class="pre">-></span> <span class="pre">Source</span> <span class="pre">-></span> <span class="pre">Druid</span> <span class="pre">datasources</span> <span class="pre">-></span> <span class="pre">edit</span> <span class="pre">the</span>
+<span class="pre">record</span> <span class="pre">"datasource1"</span></code>) and go to the tab <code class="docutils literal"><span class="pre">List</span> <span class="pre">Druid</span> <span class="pre">Metric</span></code>. Check
+the checkbox <code class="docutils literal"><span class="pre">Is</span> <span class="pre">Restricted</span></code> in the row of the metric <code class="docutils literal"><span class="pre">revenue</span></code>.</li>
+<li>Edit the role (<code class="docutils literal"><span class="pre">Menu</span> <span class="pre">-></span> <span class="pre">Security</span> <span class="pre">-></span> <span class="pre">List</span> <span class="pre">Roles</span> <span class="pre">-></span> <span class="pre">edit</span> <span class="pre">the</span> <span class="pre">record</span>
+<span class="pre">“Admin”</span></code>), in the permissions field, type-and-search the permission
+<code class="docutils literal"><span class="pre">metric</span> <span class="pre">access</span> <span class="pre">on</span> <span class="pre">[cluster1].[datasource1].[revenue]</span> <span class="pre">(id:</span> <span class="pre">1)</span></code>, then
+click the Save button on the bottom of the page.</li>
+</ol>
+<p>Any users without the permission will see the error message
+<em>Access to the metrics denied: revenue (Status: 500)</em> in the slices.
+It also happens when the user wants to access a post-aggregation metric that
+is dependent on revenue.</p>
+</div>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ <footer>
+
+ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+
+ <a href="sqllab.html" class="btn btn-neutral float-right" title="SQL Lab" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
+
+
+ <a href="tutorial.html" class="btn btn-neutral" title="Tutorial for Superset Administrators" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+
+ </div>
+
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>
+
+ </p>
+ </div>
+ Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
+
+ </div>
+ </div>
+
+ </section>
+
+ </div>
+
+
+
+
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT:'./',
+ VERSION:'',
+ COLLAPSE_INDEX:false,
+ FILE_SUFFIX:'.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+
+
+
+
+
+ <script type="text/javascript" src="_static/js/theme.js"></script>
+
+
+
+
+ <script type="text/javascript">
+ jQuery(function () {
+ SphinxRtdTheme.StickyNav.enable();
+ });
+ </script>
+
+
+</body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/sqllab.html
----------------------------------------------------------------------
diff --git a/sqllab.html b/sqllab.html
new file mode 100644
index 0000000..60c7531
--- /dev/null
+++ b/sqllab.html
@@ -0,0 +1,292 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <title>SQL Lab — Superset's documentation documentation</title>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+
+
+
+
+
+ <link rel="index" title="Index"
+ href="genindex.html"/>
+ <link rel="search" title="Search" href="search.html"/>
+ <link rel="top" title="Superset's documentation documentation" href="index.html"/>
+ <link rel="next" title="Visualization Tools" href="visualization.html"/>
+ <link rel="prev" title="Security" href="security.html"/>
+
+
+ <script src="_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+ <div class="wy-grid-for-nav">
+
+
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search">
+
+
+
+ <a href="index.html" class="icon icon-home"> Superset's documentation
+
+
+
+ </a>
+
+
+
+
+
+
+
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+
+
+ </div>
+
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+
+
+
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation & Configuration</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial for Superset Administrators</a></li>
+<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">SQL Lab</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#feature-overview">Feature Overview</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#extra-features">Extra features</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#templating-with-jinja">Templating with Jinja</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#available-macros">Available macros</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="visualization.html">Visualization Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="videos.html">Videos</a></li>
+<li class="toctree-l1"><a class="reference internal" href="gallery.html">Gallery</a></li>
+<li class="toctree-l1"><a class="reference internal" href="druid.html">Druid</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
+</ul>
+
+
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+
+ <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="index.html">Superset's documentation</a>
+ </nav>
+
+
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="index.html">Docs</a> »</li>
+
+ <li>SQL Lab</li>
+ <li class="wy-breadcrumbs-aside">
+
+
+
+ </li>
+ </ul>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <div class="section" id="sql-lab">
+<h1>SQL Lab<a class="headerlink" href="#sql-lab" title="Permalink to this headline">¶</a></h1>
+<p>SQL Lab is a modern, feature-rich SQL IDE written in
+<a class="reference external" href="https://facebook.github.io/react/">React</a>.</p>
+<div class="section" id="feature-overview">
+<h2>Feature Overview<a class="headerlink" href="#feature-overview" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Connects to just about any database backend</li>
+<li>A multi-tab environment to work on multiple queries at a time</li>
+<li>A smooth flow to visualize your query results using Superset’s rich
+visualization capabilities</li>
+<li>Browse database metadata: tables, columns, indexes, partitions</li>
+<li>Support for long-running queries<ul>
+<li>uses the <a class="reference external" href="http://www.python.org/">Celery distributed queue</a>
+to dispatch query handling to workers</li>
+<li>supports defining a “results backend” to persist query results</li>
+</ul>
+</li>
+<li>A search engine to find queries executed in the past</li>
+<li>Supports templating using the
+<a class="reference external" href="http://jinja.pocoo.org/docs/dev/">Jinja templating language</a>
+which allows for using macros in your SQL code</li>
+</ul>
+</div>
+<div class="section" id="extra-features">
+<h2>Extra features<a class="headerlink" href="#extra-features" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>Hit <code class="docutils literal"><span class="pre">alt</span> <span class="pre">+</span> <span class="pre">enter</span></code> as a keyboard shortcut to run your query</li>
+</ul>
+</div>
+<div class="section" id="templating-with-jinja">
+<h2>Templating with Jinja<a class="headerlink" href="#templating-with-jinja" title="Permalink to this headline">¶</a></h2>
+<div class="highlight-sql"><div class="highlight"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span>
+<span class="k">FROM</span> <span class="n">some_table</span>
+<span class="k">WHERE</span> <span class="n">partition_key</span> <span class="o">=</span> <span class="s1">'{{ presto.latest_partition('</span><span class="n">some_table</span><span class="s1">') }}'</span>
+</pre></div>
+</div>
+<p>Templating unleashes the power and capabilities of a
+programming language within your SQL code.</p>
+<p>Templates can also be used to write generic queries that are
+parameterized so they can be re-used easily.</p>
+<div class="section" id="available-macros">
+<h3>Available macros<a class="headerlink" href="#available-macros" title="Permalink to this headline">¶</a></h3>
+<p>We expose certain modules from Python’s standard library in
+Superset’s Jinja context:
+- <code class="docutils literal"><span class="pre">time</span></code>: <code class="docutils literal"><span class="pre">time</span></code>
+- <code class="docutils literal"><span class="pre">datetime</span></code>: <code class="docutils literal"><span class="pre">datetime.datetime</span></code>
+- <code class="docutils literal"><span class="pre">uuid</span></code>: <code class="docutils literal"><span class="pre">uuid</span></code>
+- <code class="docutils literal"><span class="pre">random</span></code>: <code class="docutils literal"><span class="pre">random</span></code>
+- <code class="docutils literal"><span class="pre">relativedelta</span></code>: <code class="docutils literal"><span class="pre">dateutil.relativedelta.relativedelta</span></code>
+- more to come!</p>
+<p><a class="reference external" href="http://jinja.pocoo.org/docs/dev/templates/">Jinja’s builtin filters</a> can be also be applied where needed.</p>
+<dl class="class">
+<dt id="superset.jinja_context.PrestoTemplateProcessor">
+<em class="property">class </em><code class="descclassname">superset.jinja_context.</code><code class="descname">PrestoTemplateProcessor</code><span class="sig-paren">(</span><em>database=None</em>, <em>query=None</em>, <em>table=None</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/superset/jinja_context.html#PrestoTemplateProcessor"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#superset.jinja_context.PrestoTemplateProcessor" title="Permalink to this definition">¶</a></dt>
+<dd><p>Presto Jinja context</p>
+<p>The methods described here are namespaced under <code class="docutils literal"><span class="pre">presto</span></code> in the
+jinja context as in <code class="docutils literal"><span class="pre">SELECT</span> <span class="pre">'{{</span> <span class="pre">presto.some_macro_call()</span> <span class="pre">}}'</span></code></p>
+</dd></dl>
+
+<dl class="function">
+<dt id="superset.jinja_context.url_param">
+<code class="descclassname">superset.jinja_context.</code><code class="descname">url_param</code><span class="sig-paren">(</span><em>param</em>, <em>default=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/superset/jinja_context.html#url_param"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#superset.jinja_context.url_param" title="Permalink to this definition">¶</a></dt>
+<dd><p>Get a url paramater</p>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
+<li><strong>param</strong> (<em>str</em>) – the url parameter to lookup</li>
+<li><strong>default</strong> (<em>str</em>) – the value to return in the absence of the parameter</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+</dd></dl>
+
+</div>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ <footer>
+
+ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+
+ <a href="visualization.html" class="btn btn-neutral float-right" title="Visualization Tools" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
+
+
+ <a href="security.html" class="btn btn-neutral" title="Security" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+
+ </div>
+
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>
+
+ </p>
+ </div>
+ Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
+
+ </div>
+ </div>
+
+ </section>
+
+ </div>
+
+
+
+
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT:'./',
+ VERSION:'',
+ COLLAPSE_INDEX:false,
+ FILE_SUFFIX:'.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+
+
+
+
+
+ <script type="text/javascript" src="_static/js/theme.js"></script>
+
+
+
+
+ <script type="text/javascript">
+ jQuery(function () {
+ SphinxRtdTheme.StickyNav.enable();
+ });
+ </script>
+
+
+</body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-superset-site/blob/886f04b0/tutorial.html
----------------------------------------------------------------------
diff --git a/tutorial.html b/tutorial.html
new file mode 100644
index 0000000..1d61d8d
--- /dev/null
+++ b/tutorial.html
@@ -0,0 +1,416 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+ <meta charset="utf-8">
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <title>Tutorial for Superset Administrators — Superset's documentation documentation</title>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+
+
+
+
+
+ <link rel="index" title="Index"
+ href="genindex.html"/>
+ <link rel="search" title="Search" href="search.html"/>
+ <link rel="top" title="Superset's documentation documentation" href="index.html"/>
+ <link rel="next" title="Security" href="security.html"/>
+ <link rel="prev" title="Installation & Configuration" href="installation.html"/>
+
+
+ <script src="_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav" role="document">
+
+ <div class="wy-grid-for-nav">
+
+
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search">
+
+
+
+ <a href="index.html" class="icon icon-home"> Superset's documentation
+
+
+
+ </a>
+
+
+
+
+
+
+
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+
+
+ </div>
+
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+
+
+
+ <ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation & Configuration</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Tutorial for Superset Administrators</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#connecting-to-a-new-database">Connecting to a new database</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#adding-a-new-table">Adding a new table</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#exploring-your-data">Exploring your data</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#creating-a-slice-and-dashboard">Creating a slice and dashboard</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="security.html">Security</a></li>
+<li class="toctree-l1"><a class="reference internal" href="sqllab.html">SQL Lab</a></li>
+<li class="toctree-l1"><a class="reference internal" href="visualization.html">Visualization Tools</a></li>
+<li class="toctree-l1"><a class="reference internal" href="videos.html">Videos</a></li>
+<li class="toctree-l1"><a class="reference internal" href="gallery.html">Gallery</a></li>
+<li class="toctree-l1"><a class="reference internal" href="druid.html">Druid</a></li>
+<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
+</ul>
+
+
+
+ </div>
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+
+ <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="index.html">Superset's documentation</a>
+ </nav>
+
+
+
+ <div class="wy-nav-content">
+ <div class="rst-content">
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+ <ul class="wy-breadcrumbs">
+ <li><a href="index.html">Docs</a> »</li>
+
+ <li>Tutorial for Superset Administrators</li>
+ <li class="wy-breadcrumbs-aside">
+
+
+
+ </li>
+ </ul>
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <div class="section" id="tutorial-for-superset-administrators">
+<h1>Tutorial for Superset Administrators<a class="headerlink" href="#tutorial-for-superset-administrators" title="Permalink to this headline">¶</a></h1>
+<p>This tutorial targets a Superset administrator: someone configuring Superset
+for an organization on behalf of users. We’ll show you how to connect Superset
+to a new database and configure a table in that database for analysis. You’ll
+also explore the data you’ve exposed and add a visualization to a dashboard
+so that you get a feel for the end-to-end user experience.</p>
+<div class="section" id="connecting-to-a-new-database">
+<h2>Connecting to a new database<a class="headerlink" href="#connecting-to-a-new-database" title="Permalink to this headline">¶</a></h2>
+<p>We assume you already have a database configured and can connect to it from the
+instance on which you’re running Superset. If you’re just testing Superset and
+want to explore sample data, you can load some
+<a class="reference external" href="https://wiki.postgresql.org/wiki/Sample_Databases">sample PostgreSQL datasets</a>
+into a fresh DB, or configure the
+<a class="reference external" href="https://github.com/dylburger/noaa-ghcn-weather-data">example weather data</a>
+we use here.</p>
+<p>Under the <strong>Sources</strong> menu, select the <em>Databases</em> option:</p>
+<a class="reference internal image-reference" href="_images/tutorial_01_sources_database.png"><img alt="_images/tutorial_01_sources_database.png" src="_images/tutorial_01_sources_database.png" style="width: 316.4px; height: 187.6px;" /></a>
+<p>On the resulting page, click on the green plus sign, near the top left:</p>
+<a class="reference internal image-reference" href="_images/tutorial_02_add_database.png"><img alt="_images/tutorial_02_add_database.png" src="_images/tutorial_02_add_database.png" style="width: 369.6px; height: 232.4px;" /></a>
+<p>You can configure a number of advanced options on this page, but for
+this walkthrough, you’ll only need to do <strong>two things</strong>:</p>
+<ol class="arabic simple">
+<li>Name your database connection:</li>
+</ol>
+<a class="reference internal image-reference" href="_images/tutorial_03_database_name.png"><img alt="_images/tutorial_03_database_name.png" src="_images/tutorial_03_database_name.png" style="width: 554.4px; height: 98.0px;" /></a>
+<ol class="arabic simple" start="2">
+<li>Provide the SQLAlchemy Connection URI and test the connection:</li>
+</ol>
+<a class="reference internal image-reference" href="_images/tutorial_04_sqlalchemy_connection_string.png"><img alt="_images/tutorial_04_sqlalchemy_connection_string.png" src="_images/tutorial_04_sqlalchemy_connection_string.png" style="width: 1071.0px; height: 196.0px;" /></a>
+<p>This example shows the connection string for our test weather database.
+As noted in the text below the URI, you should refer to the SQLAlchemy
+documentation on
+<a class="reference external" href="http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html#database-urls">creating new connection URIs</a>
+for your target database.</p>
+<p>Click the <strong>Test Connection</strong> button to confirm things work end to end.
+Once Superset can successfully connect and authenticate, you should see
+a popup like this:</p>
+<a class="reference internal image-reference" href="_images/tutorial_05_connection_popup.png"><img alt="_images/tutorial_05_connection_popup.png" src="_images/tutorial_05_connection_popup.png" style="width: 562.0px; height: 277.0px;" /></a>
+<p>Moreover, you should also see the list of tables Superset can read from
+the schema you’re connected to, at the bottom of the page:</p>
+<a class="reference internal image-reference" href="_images/tutorial_06_list_of_tables.png"><img alt="_images/tutorial_06_list_of_tables.png" src="_images/tutorial_06_list_of_tables.png" style="width: 963.2px; height: 127.4px;" /></a>
+<p>If the connection looks good, save the configuration by clicking the <strong>Save</strong>
+button at the bottom of the page:</p>
+<a class="reference internal image-reference" href="_images/tutorial_07_save_button.png"><img alt="_images/tutorial_07_save_button.png" src="_images/tutorial_07_save_button.png" style="width: 187.6px; height: 85.4px;" /></a>
+</div>
+<div class="section" id="adding-a-new-table">
+<h2>Adding a new table<a class="headerlink" href="#adding-a-new-table" title="Permalink to this headline">¶</a></h2>
+<p>Now that you’ve configured a database, you’ll need to add specific tables
+to Superset that you’d like to query.</p>
+<p>Under the <strong>Sources</strong> menu, select the <em>Tables</em> option:</p>
+<a class="reference internal image-reference" href="_images/tutorial_08_sources_tables.png"><img alt="_images/tutorial_08_sources_tables.png" src="_images/tutorial_08_sources_tables.png" style="width: 315.0px; height: 187.6px;" /></a>
+<p>On the resulting page, click on the green plus sign, near the top left:</p>
+<a class="reference internal image-reference" href="_images/tutorial_09_add_new_table.png"><img alt="_images/tutorial_09_add_new_table.png" src="_images/tutorial_09_add_new_table.png" style="width: 322.0px; height: 232.4px;" /></a>
+<p>You only need a few pieces of information to add a new table to Superset:</p>
+<ul class="simple">
+<li>The name of the table</li>
+</ul>
+<a class="reference internal image-reference" href="_images/tutorial_10_table_name.png"><img alt="_images/tutorial_10_table_name.png" src="_images/tutorial_10_table_name.png" style="width: 772.8px; height: 130.2px;" /></a>
+<ul class="simple">
+<li>The target database from the <strong>Database</strong> drop-down menu (i.e. the one
+you just added above)</li>
+</ul>
+<a class="reference internal image-reference" href="_images/tutorial_11_choose_db.png"><img alt="_images/tutorial_11_choose_db.png" src="_images/tutorial_11_choose_db.png" style="width: 387.8px; height: 229.6px;" /></a>
+<ul class="simple">
+<li>Optionally, the database schema. If the table exists in the “default” schema
+(e.g. the <em>public</em> schema in PostgreSQL or Redshift), you can leave the schema
+field blank.</li>
+</ul>
+<p>Click on the <strong>Save</strong> button to save the configuration:</p>
+<a class="reference internal image-reference" href="_images/tutorial_07_save_button.png"><img alt="_images/tutorial_07_save_button.png" src="_images/tutorial_07_save_button.png" style="width: 187.6px; height: 85.4px;" /></a>
+<p>When redirected back to the list of tables, you should see a message indicating
+that your table was created:</p>
+<a class="reference internal image-reference" href="_images/tutorial_12_table_creation_success_msg.png"><img alt="_images/tutorial_12_table_creation_success_msg.png" src="_images/tutorial_12_table_creation_success_msg.png" style="width: 1260.0px; height: 89.6px;" /></a>
+<p>This message also directs you to edit the table configuration. We’ll edit a limited
+portion of the configuration now - just to get you started - and leave the rest for
+a more advanced tutorial.</p>
+<p>Click on the edit button next to the table you’ve created:</p>
+<a class="reference internal image-reference" href="_images/tutorial_13_edit_table_config.png"><img alt="_images/tutorial_13_edit_table_config.png" src="_images/tutorial_13_edit_table_config.png" style="width: 509.6px; height: 180.6px;" /></a>
+<p>On the resulting page, click on the <strong>List Table Column</strong> tab. Here, you’ll define the
+way you can use specific columns of your table when exploring your data. We’ll run
+through these options to describe their purpose:</p>
+<ul class="simple">
+<li>If you want users to group metrics by a specific field, mark it as <strong>Groupable</strong>.</li>
+<li>If you need to filter on a specific field, mark it as <strong>Filterable</strong>.</li>
+<li>Is this field something you’d like to get the distinct count of? Check the <strong>Count
+Distinct</strong> box.</li>
+<li>Is this a metric you want to sum, or get basic summary statistics for? The <strong>Sum</strong>,
+<strong>Min</strong>, and <strong>Max</strong> columns will help.</li>
+<li>The <strong>is temporal</strong> field should be checked for any date or time fields. We’ll cover
+how this manifests itself in analyses in a moment.</li>
+</ul>
+<p>Here’s how we’ve configured fields for the weather data. Even for measures like the
+weather measurements (precipitation, snowfall, etc.), it’s ideal to group and filter
+by these values:</p>
+<img alt="_images/tutorial_14_field_config.png" src="_images/tutorial_14_field_config.png" />
+<p>As with the configurations above, click the <strong>Save</strong> button to save these settings.</p>
+</div>
+<div class="section" id="exploring-your-data">
+<h2>Exploring your data<a class="headerlink" href="#exploring-your-data" title="Permalink to this headline">¶</a></h2>
+<p>To start exploring your data, simply click on the table name you just created in
+the list of available tables:</p>
+<img alt="_images/tutorial_15_click_table_name.png" src="_images/tutorial_15_click_table_name.png" />
+<p>By default, you’ll be presented with a Table View:</p>
+<img alt="_images/tutorial_16_datasource_chart_type.png" src="_images/tutorial_16_datasource_chart_type.png" />
+<p>Let’s walk through a basic query to get the count of all records in our table.
+First, we’ll need to change the <strong>Since</strong> filter to capture the range of our data.
+You can use simple phrases to apply these filters, like “3 years ago”:</p>
+<img alt="_images/tutorial_17_choose_time_range.png" src="_images/tutorial_17_choose_time_range.png" />
+<p>The upper limit for time, the <strong>Until</strong> filter, defaults to “now”, which may or may
+not be what you want.</p>
+<p>Look for the Metrics section under the <strong>GROUP BY</strong> header, and start typing “Count”
+- you’ll see a list of metrics matching what you type:</p>
+<img alt="_images/tutorial_18_choose_metric.png" src="_images/tutorial_18_choose_metric.png" />
+<p>Select the <em>COUNT(*)</em> metric, then click the green <strong>Query</strong> button near the top
+of the explore:</p>
+<img alt="_images/tutorial_19_click_query.png" src="_images/tutorial_19_click_query.png" />
+<p>You’ll see your results in the table:</p>
+<img alt="_images/tutorial_20_count_star_result.png" src="_images/tutorial_20_count_star_result.png" />
+<p>Let’s group this by the <em>weather_description</em> field to get the count of records by
+the type of weather recorded by adding it to the <em>Group by</em> section:</p>
+<img alt="_images/tutorial_21_group_by.png" src="_images/tutorial_21_group_by.png" />
+<p>and run the query:</p>
+<img alt="_images/tutorial_22_group_by_result.png" src="_images/tutorial_22_group_by_result.png" />
+<p>Let’s find a more useful data point: the top 10 times and places that recorded the
+highest temperature in 2015.</p>
+<p>We replace <em>weather_description</em> with <em>latitude</em>, <em>longitude</em> and <em>measurement_date</em> in the
+<em>Group by</em> section:</p>
+<img alt="_images/tutorial_23_group_by_more_dimensions.png" src="_images/tutorial_23_group_by_more_dimensions.png" />
+<p>And replace <em>COUNT(*)</em> with <em>max__measurement_flag</em>:</p>
+<img alt="_images/tutorial_24_max_metric.png" src="_images/tutorial_24_max_metric.png" />
+<p>The <em>max__measurement_flag</em> metric was created when we checked the box under <strong>Max</strong> and
+next to the <em>measurement_flag</em> field, indicating that this field was numeric and that
+we wanted to find its maximum value when grouped by specific fields.</p>
+<p>In our case, <em>measurement_flag</em> is the value of the measurement taken, which clearly
+depends on the type of measurement (the researchers recorded different values for
+precipitation and temperature). Therefore, we must filter our query only on records
+where the <em>weather_description</em> is equal to “Maximum temperature”, which we do in
+the <strong>Filters</strong> section at the bottom of the explore:</p>
+<img alt="_images/tutorial_25_max_temp_filter.png" src="_images/tutorial_25_max_temp_filter.png" />
+<p>Finally, since we only care about the top 10 measurements, we limit our results to
+10 records using the <em>Row limit</em> option under the <strong>Options</strong> header:</p>
+<img alt="_images/tutorial_26_row_limit.png" src="_images/tutorial_26_row_limit.png" />
+<p>We click <strong>Query</strong> and get the following results:</p>
+<img alt="_images/tutorial_27_top_10_max_temps.png" src="_images/tutorial_27_top_10_max_temps.png" />
+<p>In this dataset, the maximum temperature is recorded in tenths of a degree Celsius.
+The top value of 1370, measured in the middle of Nevada, is equal to 137 C, or roughly
+278 degrees F. It’s unlikely this value was correctly recorded. We’ve already been able
+to investigate some outliers with Superset, but this just scratches the surface of what
+we can do.</p>
+<p>You may want to do a couple more things with this measure:</p>
+<ul class="simple">
+<li>The default formatting shows values like 1.37k, which may be difficult for some
+users to read. It’s likely you may want to see the full, comma-separated value.
+You can change the formatting of any measure by editing its config (<em>Edit Table
+Config > List Sql Metric > Edit Metric > D3Format</em>)</li>
+<li>Moreover, you may want to see the temperature measurements in plain degrees C,
+not tenths of a degree. Or you may want to convert the temperature to degrees
+Fahrenheit. You can change the SQL that gets executed agains the database, baking
+the logic into the measure itself (<em>Edit Table Config > List Sql Metric > Edit
+Metric > SQL Expression</em>)</li>
+</ul>
+<p>For now, though, let’s create a better visualization of these data and add it to
+a dashboard.</p>
+<p>We change the Chart Type to “Distribution - Bar Chart”:</p>
+<img alt="_images/tutorial_28_bar_chart.png" src="_images/tutorial_28_bar_chart.png" />
+<p>Our filter on Maximum temperature measurements was retained, but the query and
+formatting options are dependent on the chart type, so you’ll have to set the
+values again:</p>
+<img alt="_images/tutorial_29_bar_chart_series_metrics.png" src="_images/tutorial_29_bar_chart_series_metrics.png" />
+<p>You should note the extensive formatting options for this chart: the ability to
+set axis labels, margins, ticks, etc. To make the data presentable to a broad
+audience, you’ll want to apply many of these to slices that end up in dashboards.
+For now, though, we run our query and get the following chart:</p>
+<a class="reference internal image-reference" href="_images/tutorial_30_bar_chart_results.png"><img alt="_images/tutorial_30_bar_chart_results.png" src="_images/tutorial_30_bar_chart_results.png" style="width: 956.9px; height: 435.4px;" /></a>
+</div>
+<div class="section" id="creating-a-slice-and-dashboard">
+<h2>Creating a slice and dashboard<a class="headerlink" href="#creating-a-slice-and-dashboard" title="Permalink to this headline">¶</a></h2>
+<p>This view might be interesting to researchers, so let’s save it. In Superset,
+a saved query is called a <strong>Slice</strong>.</p>
+<p>To create a slice, click the <strong>Save as</strong> button near the top-left of the
+explore:</p>
+<img alt="_images/tutorial_19_click_query.png" src="_images/tutorial_19_click_query.png" />
+<p>A popup should appear, asking you to name the slice, and optionally add it to a
+dashboard. Since we haven’t yet created any dashboards, we can create one and
+immediately add our slice to it. Let’s do it:</p>
+<a class="reference internal image-reference" href="_images/tutorial_31_save_slice_to_dashboard.png"><img alt="_images/tutorial_31_save_slice_to_dashboard.png" src="_images/tutorial_31_save_slice_to_dashboard.png" style="width: 432.6px; height: 268.8px;" /></a>
+<p>Click Save, which will direct you back to your original query. We see that
+our slice and dashboard were successfully created:</p>
+<a class="reference internal image-reference" href="_images/tutorial_32_save_slice_confirmation.png"><img alt="_images/tutorial_32_save_slice_confirmation.png" src="_images/tutorial_32_save_slice_confirmation.png" style="width: 611.8px; height: 105.7px;" /></a>
+<p>Let’s check out our new dashboard. We click on the <strong>Dashboards</strong> menu:</p>
+<img alt="_images/tutorial_33_dashboard.png" src="_images/tutorial_33_dashboard.png" />
+<p>and find the dashboard we just created:</p>
+<img alt="_images/tutorial_34_weather_dashboard.png" src="_images/tutorial_34_weather_dashboard.png" />
+<p>Things seemed to have worked - our slice is here!</p>
+<a class="reference internal image-reference" href="_images/tutorial_35_slice_on_dashboard.png"><img alt="_images/tutorial_35_slice_on_dashboard.png" src="_images/tutorial_35_slice_on_dashboard.png" style="width: 464.8px; height: 397.6px;" /></a>
+<p>But it’s a bit smaller than we might like. Luckily, you can adjust the size
+of slices in a dashboard by clicking, holding and dragging the bottom-right
+corner to your desired dimensions:</p>
+<a class="reference internal image-reference" href="_images/tutorial_36_adjust_dimensions.gif"><img alt="_images/tutorial_36_adjust_dimensions.gif" src="_images/tutorial_36_adjust_dimensions.gif" style="width: 576.0px; height: 297.6px;" /></a>
+<p>After adjusting the size, you’ll be asked to click on the icon near the
+top-right of the dashboard to save the new configuration.</p>
+<p>Congrats! You’ve successfully linked, analyzed, and visualized data in Superset.
+There are a wealth of other table configuration and visualization options, so
+please start exploring and creating slices and dashboards of your own.</p>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ <footer>
+
+ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+
+ <a href="security.html" class="btn btn-neutral float-right" title="Security" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
+
+
+ <a href="installation.html" class="btn btn-neutral" title="Installation & Configuration" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+
+ </div>
+
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>
+
+ </p>
+ </div>
+ Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
+
+ </div>
+ </div>
+
+ </section>
+
+ </div>
+
+
+
+
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT:'./',
+ VERSION:'',
+ COLLAPSE_INDEX:false,
+ FILE_SUFFIX:'.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+
+
+
+
+
+ <script type="text/javascript" src="_static/js/theme.js"></script>
+
+
+
+
+ <script type="text/javascript">
+ jQuery(function () {
+ SphinxRtdTheme.StickyNav.enable();
+ });
+ </script>
+
+
+</body>
+</html>
\ No newline at end of file