/* Copyright (c) Jupyter Development Team.
 * Distributed under the terms of the Modified BSD License.
 */

/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/

/*
This file is copied from the JupyterLab project to define default styling for
when the widget styling is compiled down to eliminate CSS variables. We make one
change - we comment out the font import below.
*/

/**
 * The material design colors are adapted from google-material-color v1.2.6
 * https://github.com/danlevan/google-material-color
 * https://github.com/danlevan/google-material-color/blob/f67ca5f4028b2f1b34862f64b0ca67323f91b088/dist/palette.var.css
 *
 * The license for the material design color CSS variables is as follows (see
 * https://github.com/danlevan/google-material-color/blob/f67ca5f4028b2f1b34862f64b0ca67323f91b088/LICENSE)
 *
 * The MIT License (MIT)
 *
 * Copyright (c) 2014 Dan Le Van
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

:root {
  --md-red-50: #FFEBEE;
  --md-red-100: #FFCDD2;
  --md-red-200: #EF9A9A;
  --md-red-300: #E57373;
  --md-red-400: #EF5350;
  --md-red-500: #F44336;
  --md-red-600: #E53935;
  --md-red-700: #D32F2F;
  --md-red-800: #C62828;
  --md-red-900: #B71C1C;
  --md-red-A100: #FF8A80;
  --md-red-A200: #FF5252;
  --md-red-A400: #FF1744;
  --md-red-A700: #D50000;

  --md-pink-50: #FCE4EC;
  --md-pink-100: #F8BBD0;
  --md-pink-200: #F48FB1;
  --md-pink-300: #F06292;
  --md-pink-400: #EC407A;
  --md-pink-500: #E91E63;
  --md-pink-600: #D81B60;
  --md-pink-700: #C2185B;
  --md-pink-800: #AD1457;
  --md-pink-900: #880E4F;
  --md-pink-A100: #FF80AB;
  --md-pink-A200: #FF4081;
  --md-pink-A400: #F50057;
  --md-pink-A700: #C51162;

  --md-purple-50: #F3E5F5;
  --md-purple-100: #E1BEE7;
  --md-purple-200: #CE93D8;
  --md-purple-300: #BA68C8;
  --md-purple-400: #AB47BC;
  --md-purple-500: #9C27B0;
  --md-purple-600: #8E24AA;
  --md-purple-700: #7B1FA2;
  --md-purple-800: #6A1B9A;
  --md-purple-900: #4A148C;
  --md-purple-A100: #EA80FC;
  --md-purple-A200: #E040FB;
  --md-purple-A400: #D500F9;
  --md-purple-A700: #AA00FF;

  --md-deep-purple-50: #EDE7F6;
  --md-deep-purple-100: #D1C4E9;
  --md-deep-purple-200: #B39DDB;
  --md-deep-purple-300: #9575CD;
  --md-deep-purple-400: #7E57C2;
  --md-deep-purple-500: #673AB7;
  --md-deep-purple-600: #5E35B1;
  --md-deep-purple-700: #512DA8;
  --md-deep-purple-800: #4527A0;
  --md-deep-purple-900: #311B92;
  --md-deep-purple-A100: #B388FF;
  --md-deep-purple-A200: #7C4DFF;
  --md-deep-purple-A400: #651FFF;
  --md-deep-purple-A700: #6200EA;

  --md-indigo-50: #E8EAF6;
  --md-indigo-100: #C5CAE9;
  --md-indigo-200: #9FA8DA;
  --md-indigo-300: #7986CB;
  --md-indigo-400: #5C6BC0;
  --md-indigo-500: #3F51B5;
  --md-indigo-600: #3949AB;
  --md-indigo-700: #303F9F;
  --md-indigo-800: #283593;
  --md-indigo-900: #1A237E;
  --md-indigo-A100: #8C9EFF;
  --md-indigo-A200: #536DFE;
  --md-indigo-A400: #3D5AFE;
  --md-indigo-A700: #304FFE;

  --md-blue-50: #E3F2FD;
  --md-blue-100: #BBDEFB;
  --md-blue-200: #90CAF9;
  --md-blue-300: #64B5F6;
  --md-blue-400: #42A5F5;
  --md-blue-500: #2196F3;
  --md-blue-600: #1E88E5;
  --md-blue-700: #1976D2;
  --md-blue-800: #1565C0;
  --md-blue-900: #0D47A1;
  --md-blue-A100: #82B1FF;
  --md-blue-A200: #448AFF;
  --md-blue-A400: #2979FF;
  --md-blue-A700: #2962FF;

  --md-light-blue-50: #E1F5FE;
  --md-light-blue-100: #B3E5FC;
  --md-light-blue-200: #81D4FA;
  --md-light-blue-300: #4FC3F7;
  --md-light-blue-400: #29B6F6;
  --md-light-blue-500: #03A9F4;
  --md-light-blue-600: #039BE5;
  --md-light-blue-700: #0288D1;
  --md-light-blue-800: #0277BD;
  --md-light-blue-900: #01579B;
  --md-light-blue-A100: #80D8FF;
  --md-light-blue-A200: #40C4FF;
  --md-light-blue-A400: #00B0FF;
  --md-light-blue-A700: #0091EA;

  --md-cyan-50: #E0F7FA;
  --md-cyan-100: #B2EBF2;
  --md-cyan-200: #80DEEA;
  --md-cyan-300: #4DD0E1;
  --md-cyan-400: #26C6DA;
  --md-cyan-500: #00BCD4;
  --md-cyan-600: #00ACC1;
  --md-cyan-700: #0097A7;
  --md-cyan-800: #00838F;
  --md-cyan-900: #006064;
  --md-cyan-A100: #84FFFF;
  --md-cyan-A200: #18FFFF;
  --md-cyan-A400: #00E5FF;
  --md-cyan-A700: #00B8D4;

  --md-teal-50: #E0F2F1;
  --md-teal-100: #B2DFDB;
  --md-teal-200: #80CBC4;
  --md-teal-300: #4DB6AC;
  --md-teal-400: #26A69A;
  --md-teal-500: #009688;
  --md-teal-600: #00897B;
  --md-teal-700: #00796B;
  --md-teal-800: #00695C;
  --md-teal-900: #004D40;
  --md-teal-A100: #A7FFEB;
  --md-teal-A200: #64FFDA;
  --md-teal-A400: #1DE9B6;
  --md-teal-A700: #00BFA5;

  --md-green-50: #E8F5E9;
  --md-green-100: #C8E6C9;
  --md-green-200: #A5D6A7;
  --md-green-300: #81C784;
  --md-green-400: #66BB6A;
  --md-green-500: #4CAF50;
  --md-green-600: #43A047;
  --md-green-700: #388E3C;
  --md-green-800: #2E7D32;
  --md-green-900: #1B5E20;
  --md-green-A100: #B9F6CA;
  --md-green-A200: #69F0AE;
  --md-green-A400: #00E676;
  --md-green-A700: #00C853;

  --md-light-green-50: #F1F8E9;
  --md-light-green-100: #DCEDC8;
  --md-light-green-200: #C5E1A5;
  --md-light-green-300: #AED581;
  --md-light-green-400: #9CCC65;
  --md-light-green-500: #8BC34A;
  --md-light-green-600: #7CB342;
  --md-light-green-700: #689F38;
  --md-light-green-800: #558B2F;
  --md-light-green-900: #33691E;
  --md-light-green-A100: #CCFF90;
  --md-light-green-A200: #B2FF59;
  --md-light-green-A400: #76FF03;
  --md-light-green-A700: #64DD17;

  --md-lime-50: #F9FBE7;
  --md-lime-100: #F0F4C3;
  --md-lime-200: #E6EE9C;
  --md-lime-300: #DCE775;
  --md-lime-400: #D4E157;
  --md-lime-500: #CDDC39;
  --md-lime-600: #C0CA33;
  --md-lime-700: #AFB42B;
  --md-lime-800: #9E9D24;
  --md-lime-900: #827717;
  --md-lime-A100: #F4FF81;
  --md-lime-A200: #EEFF41;
  --md-lime-A400: #C6FF00;
  --md-lime-A700: #AEEA00;

  --md-yellow-50: #FFFDE7;
  --md-yellow-100: #FFF9C4;
  --md-yellow-200: #FFF59D;
  --md-yellow-300: #FFF176;
  --md-yellow-400: #FFEE58;
  --md-yellow-500: #FFEB3B;
  --md-yellow-600: #FDD835;
  --md-yellow-700: #FBC02D;
  --md-yellow-800: #F9A825;
  --md-yellow-900: #F57F17;
  --md-yellow-A100: #FFFF8D;
  --md-yellow-A200: #FFFF00;
  --md-yellow-A400: #FFEA00;
  --md-yellow-A700: #FFD600;

  --md-amber-50: #FFF8E1;
  --md-amber-100: #FFECB3;
  --md-amber-200: #FFE082;
  --md-amber-300: #FFD54F;
  --md-amber-400: #FFCA28;
  --md-amber-500: #FFC107;
  --md-amber-600: #FFB300;
  --md-amber-700: #FFA000;
  --md-amber-800: #FF8F00;
  --md-amber-900: #FF6F00;
  --md-amber-A100: #FFE57F;
  --md-amber-A200: #FFD740;
  --md-amber-A400: #FFC400;
  --md-amber-A700: #FFAB00;

  --md-orange-50: #FFF3E0;
  --md-orange-100: #FFE0B2;
  --md-orange-200: #FFCC80;
  --md-orange-300: #FFB74D;
  --md-orange-400: #FFA726;
  --md-orange-500: #FF9800;
  --md-orange-600: #FB8C00;
  --md-orange-700: #F57C00;
  --md-orange-800: #EF6C00;
  --md-orange-900: #E65100;
  --md-orange-A100: #FFD180;
  --md-orange-A200: #FFAB40;
  --md-orange-A400: #FF9100;
  --md-orange-A700: #FF6D00;

  --md-deep-orange-50: #FBE9E7;
  --md-deep-orange-100: #FFCCBC;
  --md-deep-orange-200: #FFAB91;
  --md-deep-orange-300: #FF8A65;
  --md-deep-orange-400: #FF7043;
  --md-deep-orange-500: #FF5722;
  --md-deep-orange-600: #F4511E;
  --md-deep-orange-700: #E64A19;
  --md-deep-orange-800: #D84315;
  --md-deep-orange-900: #BF360C;
  --md-deep-orange-A100: #FF9E80;
  --md-deep-orange-A200: #FF6E40;
  --md-deep-orange-A400: #FF3D00;
  --md-deep-orange-A700: #DD2C00;

  --md-brown-50: #EFEBE9;
  --md-brown-100: #D7CCC8;
  --md-brown-200: #BCAAA4;
  --md-brown-300: #A1887F;
  --md-brown-400: #8D6E63;
  --md-brown-500: #795548;
  --md-brown-600: #6D4C41;
  --md-brown-700: #5D4037;
  --md-brown-800: #4E342E;
  --md-brown-900: #3E2723;

  --md-grey-50: #FAFAFA;
  --md-grey-100: #F5F5F5;
  --md-grey-200: #EEEEEE;
  --md-grey-300: #E0E0E0;
  --md-grey-400: #BDBDBD;
  --md-grey-500: #9E9E9E;
  --md-grey-600: #757575;
  --md-grey-700: #616161;
  --md-grey-800: #424242;
  --md-grey-900: #212121;

  --md-blue-grey-50: #ECEFF1;
  --md-blue-grey-100: #CFD8DC;
  --md-blue-grey-200: #B0BEC5;
  --md-blue-grey-300: #90A4AE;
  --md-blue-grey-400: #78909C;
  --md-blue-grey-500: #607D8B;
  --md-blue-grey-600: #546E7A;
  --md-blue-grey-700: #455A64;
  --md-blue-grey-800: #37474F;
  --md-blue-grey-900: #263238;
}

/*
The following CSS variables define the main, public API for styling JupyterLab.
These variables should be used by all plugins wherever possible. In other
words, plugins should not define custom colors, sizes, etc unless absolutely
necessary. This enables users to change the visual theme of JupyterLab
by changing these variables.

Many variables appear in an ordered sequence (0,1,2,3). These sequences
are designed to work well together, so for example, `--jp-border-color1` should
be used with `--jp-layout-color1`. The numbers have the following meanings:

* 0: super-primary, reserved for special emphasis
* 1: primary, most important under normal situations
* 2: secondary, next most important under normal situations
* 3: tertiary, next most important under normal situations

Throughout JupyterLab, we are mostly following principles from Google's
Material Design when selecting colors. We are not, however, following
all of MD as it is not optimized for dense, information rich UIs.
*/

/*
 * Optional monospace font for input/output prompt.
 */

/* Commented out in ipywidgets since we don't need it. */

/* @import url('https://fonts.googleapis.com/css?family=Roboto+Mono'); */

/*
 * Added for compabitility with output area
 */

:root {
  --jp-icon-search: none;
  --jp-ui-select-caret: none;
}

:root {

  /* Borders

  The following variables, specify the visual styling of borders in JupyterLab.
   */

  --jp-border-width: 1px;
  --jp-border-color0: var(--md-grey-700);
  --jp-border-color1: var(--md-grey-500);
  --jp-border-color2: var(--md-grey-300);
  --jp-border-color3: var(--md-grey-100);

  /* UI Fonts

  The UI font CSS variables are used for the typography all of the JupyterLab
  user interface elements that are not directly user generated content.
  */

  --jp-ui-font-scale-factor: 1.2;
  --jp-ui-font-size0: calc(var(--jp-ui-font-size1)/var(--jp-ui-font-scale-factor));
  --jp-ui-font-size1: 13px; /* Base font size */
  --jp-ui-font-size2: calc(var(--jp-ui-font-size1)*var(--jp-ui-font-scale-factor));
  --jp-ui-font-size3: calc(var(--jp-ui-font-size2)*var(--jp-ui-font-scale-factor));
  --jp-ui-icon-font-size: 14px; /* Ensures px perfect FontAwesome icons */
  --jp-ui-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;

  /* Use these font colors against the corresponding main layout colors.
     In a light theme, these go from dark to light.
  */

  --jp-ui-font-color0: rgba(0,0,0,1.0);
  --jp-ui-font-color1: rgba(0,0,0,0.8);
  --jp-ui-font-color2: rgba(0,0,0,0.5);
  --jp-ui-font-color3: rgba(0,0,0,0.3);

  /* Use these against the brand/accent/warn/error colors.
     These will typically go from light to darker, in both a dark and light theme
   */

  --jp-ui-inverse-font-color0: rgba(255, 255, 255, 1);
  --jp-ui-inverse-font-color1: rgba(255, 255, 255, 1);
  --jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7);
  --jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5);

  /* For backwards compatibility, we still define these below until ipywidgets 8.0.
  See https://github.com/jupyter-widgets/ipywidgets/pull/2801 */
  --jp-inverse-ui-font-color0: rgba(255,255,255,1);
  --jp-inverse-ui-font-color1: rgba(255,255,255,1.0);
  --jp-inverse-ui-font-color2: rgba(255,255,255,0.7);
  --jp-inverse-ui-font-color3: rgba(255,255,255,0.5);

  /* Content Fonts

  Content font variables are used for typography of user generated content.
  */

  --jp-content-font-size: 13px;
  --jp-content-line-height: 1.5;
  --jp-content-font-color0: black;
  --jp-content-font-color1: black;
  --jp-content-font-color2: var(--md-grey-700);
  --jp-content-font-color3: var(--md-grey-500);

  --jp-ui-font-scale-factor: 1.2;
  --jp-ui-font-size0: calc(var(--jp-ui-font-size1)/var(--jp-ui-font-scale-factor));
  --jp-ui-font-size1: 13px; /* Base font size */
  --jp-ui-font-size2: calc(var(--jp-ui-font-size1)*var(--jp-ui-font-scale-factor));
  --jp-ui-font-size3: calc(var(--jp-ui-font-size2)*var(--jp-ui-font-scale-factor));

  --jp-code-font-size: 13px;
  --jp-code-line-height: 1.307;
  --jp-code-padding: 5px;
  --jp-code-font-family: monospace;


  /* Layout

  The following are the main layout colors use in JupyterLab. In a light
  theme these would go from light to dark.
  */

  --jp-layout-color0: white;
  --jp-layout-color1: white;
  --jp-layout-color2: var(--md-grey-200);
  --jp-layout-color3: var(--md-grey-400);

  /* Brand/accent */

  --jp-brand-color0: var(--md-blue-700);
  --jp-brand-color1: var(--md-blue-500);
  --jp-brand-color2: var(--md-blue-300);
  --jp-brand-color3: var(--md-blue-100);

  --jp-accent-color0: var(--md-green-700);
  --jp-accent-color1: var(--md-green-500);
  --jp-accent-color2: var(--md-green-300);
  --jp-accent-color3: var(--md-green-100);

  /* State colors (warn, error, success, info) */

  --jp-warn-color0: var(--md-orange-700);
  --jp-warn-color1: var(--md-orange-500);
  --jp-warn-color2: var(--md-orange-300);
  --jp-warn-color3: var(--md-orange-100);

  --jp-error-color0: var(--md-red-700);
  --jp-error-color1: var(--md-red-500);
  --jp-error-color2: var(--md-red-300);
  --jp-error-color3: var(--md-red-100);

  --jp-success-color0: var(--md-green-700);
  --jp-success-color1: var(--md-green-500);
  --jp-success-color2: var(--md-green-300);
  --jp-success-color3: var(--md-green-100);

  --jp-info-color0: var(--md-cyan-700);
  --jp-info-color1: var(--md-cyan-500);
  --jp-info-color2: var(--md-cyan-300);
  --jp-info-color3: var(--md-cyan-100);

  /* Cell specific styles */

  --jp-cell-padding: 5px;
  --jp-cell-editor-background: #f7f7f7;
  --jp-cell-editor-border-color: #cfcfcf;
  --jp-cell-editor-background-edit: var(--jp-ui-layout-color1);
  --jp-cell-editor-border-color-edit: var(--jp-brand-color1);
  --jp-cell-prompt-width: 100px;
  --jp-cell-prompt-font-family: 'Roboto Mono', monospace;
  --jp-cell-prompt-letter-spacing: 0px;
  --jp-cell-prompt-opacity: 1.0;
  --jp-cell-prompt-opacity-not-active: 0.4;
  --jp-cell-prompt-font-color-not-active: var(--md-grey-700);
  /* A custom blend of MD grey and blue 600
   * See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */
  --jp-cell-inprompt-font-color: #307FC1;
  /* A custom blend of MD grey and orange 600
   * https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */
  --jp-cell-outprompt-font-color: #BF5B3D;

  /* Notebook specific styles */

  --jp-notebook-padding: 10px;
  --jp-notebook-scroll-padding: 100px;

  /* Console specific styles */

  --jp-console-background: var(--md-grey-100);

  /* Toolbar specific styles */

  --jp-toolbar-border-color: var(--md-grey-400);
  --jp-toolbar-micro-height: 8px;
  --jp-toolbar-background: var(--jp-layout-color0);
  --jp-toolbar-box-shadow: 0px 0px 2px 0px rgba(0,0,0,0.24);
  --jp-toolbar-header-margin: 4px 4px 0px 4px;
  --jp-toolbar-active-background: var(--md-grey-300);
}

/* Copyright (c) Jupyter Development Team.
 * Distributed under the terms of the Modified BSD License.
 */

/*
 * We assume that the CSS variables in
 * https://github.com/jupyterlab/jupyterlab/blob/master/src/default-theme/variables.css
 * have been defined.
 */

/* This file has code derived from PhosphorJS CSS files, as noted below. The license for this PhosphorJS code is:

Copyright (c) 2014-2017, PhosphorJS Contributors
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
  list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice,
  this list of conditions and the following disclaimer in the documentation
  and/or other materials provided with the distribution.

* Neither the name of the copyright holder nor the names of its
  contributors may be used to endorse or promote products derived from
  this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*/

/*
 * The following section is derived from https://github.com/phosphorjs/phosphor/blob/23b9d075ebc5b73ab148b6ebfc20af97f85714c4/packages/widgets/style/tabbar.css 
 * We've scoped the rules so that they are consistent with exactly our code.
 */

.jupyter-widgets.widget-tab > .p-TabBar {
  display: flex;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

.jupyter-widgets.widget-tab > .p-TabBar[data-orientation='horizontal'] {
  flex-direction: row;
}

.jupyter-widgets.widget-tab > .p-TabBar[data-orientation='vertical'] {
  flex-direction: column;
}

.jupyter-widgets.widget-tab > .p-TabBar > .p-TabBar-content {
  margin: 0;
  padding: 0;
  display: flex;
  flex: 1 1 auto;
  list-style-type: none;
}

.jupyter-widgets.widget-tab > .p-TabBar[data-orientation='horizontal'] > .p-TabBar-content {
  flex-direction: row;
}

.jupyter-widgets.widget-tab > .p-TabBar[data-orientation='vertical'] > .p-TabBar-content {
  flex-direction: column;
}

.jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tab {
  display: flex;
  flex-direction: row;
  box-sizing: border-box;
  overflow: hidden;
}

.jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tabIcon,
.jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tabCloseIcon {
  flex: 0 0 auto;
}

.jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tabLabel {
  flex: 1 1 auto;
  overflow: hidden;
  white-space: nowrap;
}

.jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tab.p-mod-hidden {
  display: none !important;
}

.jupyter-widgets.widget-tab > .p-TabBar.p-mod-dragging .p-TabBar-tab {
  position: relative;
}

.jupyter-widgets.widget-tab > .p-TabBar.p-mod-dragging[data-orientation='horizontal'] .p-TabBar-tab {
  left: 0;
  transition: left 150ms ease;
}

.jupyter-widgets.widget-tab > .p-TabBar.p-mod-dragging[data-orientation='vertical'] .p-TabBar-tab {
  top: 0;
  transition: top 150ms ease;
}

.jupyter-widgets.widget-tab > .p-TabBar.p-mod-dragging .p-TabBar-tab.p-mod-dragging {
  transition: none;
}

/* End tabbar.css */

:root {
    --jp-widgets-color: var(--jp-content-font-color1);
    --jp-widgets-label-color: var(--jp-widgets-color);
    --jp-widgets-readout-color: var(--jp-widgets-color);
    --jp-widgets-font-size: var(--jp-ui-font-size1);
    --jp-widgets-margin: 2px;
    --jp-widgets-inline-height: 28px;
    --jp-widgets-inline-width: 300px;
    --jp-widgets-inline-width-short: calc(var(--jp-widgets-inline-width) / 2 - var(--jp-widgets-margin));
    --jp-widgets-inline-width-tiny: calc(var(--jp-widgets-inline-width-short) / 2 - var(--jp-widgets-margin));
    --jp-widgets-inline-margin: 4px; /* margin between inline elements */
    --jp-widgets-inline-label-width: 80px;
    --jp-widgets-border-width: var(--jp-border-width);
    --jp-widgets-vertical-height: 200px;
    --jp-widgets-horizontal-tab-height: 24px;
    --jp-widgets-horizontal-tab-width: 144px;
    --jp-widgets-horizontal-tab-top-border: 2px;
    --jp-widgets-progress-thickness: 20px;
    --jp-widgets-container-padding: 15px;
    --jp-widgets-input-padding: 4px;
    --jp-widgets-radio-item-height-adjustment: 8px;
    --jp-widgets-radio-item-height: calc(var(--jp-widgets-inline-height) - var(--jp-widgets-radio-item-height-adjustment));
    --jp-widgets-slider-track-thickness: 4px;
    --jp-widgets-slider-border-width: var(--jp-widgets-border-width);
    --jp-widgets-slider-handle-size: 16px;
    --jp-widgets-slider-handle-border-color: var(--jp-border-color1);
    --jp-widgets-slider-handle-background-color: var(--jp-layout-color1);
    --jp-widgets-slider-active-handle-color: var(--jp-brand-color1);
    --jp-widgets-menu-item-height: 24px;
    --jp-widgets-dropdown-arrow: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjIuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxOCAxOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTggMTg7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDpub25lO30KPC9zdHlsZT4KPHBhdGggZD0iTTUuMiw1LjlMOSw5LjdsMy44LTMuOGwxLjIsMS4ybC00LjksNWwtNC45LTVMNS4yLDUuOXoiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTAtMC42aDE4djE4SDBWLTAuNnoiLz4KPC9zdmc+Cg");
    --jp-widgets-input-color: var(--jp-ui-font-color1);
    --jp-widgets-input-background-color: var(--jp-layout-color1);
    --jp-widgets-input-border-color: var(--jp-border-color1);
    --jp-widgets-input-focus-border-color: var(--jp-brand-color2);
    --jp-widgets-input-border-width: var(--jp-widgets-border-width);
    --jp-widgets-disabled-opacity: 0.6;

    /* From Material Design Lite */
    --md-shadow-key-umbra-opacity: 0.2;
    --md-shadow-key-penumbra-opacity: 0.14;
    --md-shadow-ambient-shadow-opacity: 0.12;
}

.jupyter-widgets {
    margin: var(--jp-widgets-margin);
    box-sizing: border-box;
    color: var(--jp-widgets-color);
    overflow: visible;
}

.jupyter-widgets.jupyter-widgets-disconnected::before {
    line-height: var(--jp-widgets-inline-height);
    height: var(--jp-widgets-inline-height);
}

.jp-Output-result > .jupyter-widgets {
    margin-left: 0;
    margin-right: 0;
}

/* vbox and hbox */

.widget-inline-hbox {
    /* Horizontal widgets */
    box-sizing: border-box;
    display: flex;
    flex-direction: row;
    align-items: baseline;
}

.widget-inline-vbox {
    /* Vertical Widgets */
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.widget-box {
    box-sizing: border-box;
    display: flex;
    margin: 0;
    overflow: auto;
}

.widget-gridbox {
    box-sizing: border-box;
    display: grid;
    margin: 0;
    overflow: auto;
}

.widget-hbox {
    flex-direction: row;
}

.widget-vbox {
    flex-direction: column;
}

/* General Button Styling */

.jupyter-button {
    padding-left: 10px;
    padding-right: 10px;
    padding-top: 0px;
    padding-bottom: 0px;
    display: inline-block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    text-align: center;
    font-size: var(--jp-widgets-font-size);
    cursor: pointer;

    height: var(--jp-widgets-inline-height);
    border: 0px solid;
    line-height: var(--jp-widgets-inline-height);
    box-shadow: none;

    color: var(--jp-ui-font-color1);
    background-color: var(--jp-layout-color2);
    border-color: var(--jp-border-color2);
    border: none;
    user-select: none;
}

.jupyter-button i.fa {
    margin-right: var(--jp-widgets-inline-margin);
    pointer-events: none;
}

.jupyter-button:empty:before {
    content: "\200b"; /* zero-width space */
}

.jupyter-widgets.jupyter-button:disabled {
    opacity: var(--jp-widgets-disabled-opacity);
}

.jupyter-button i.fa.center {
    margin-right: 0;
}

.jupyter-button:hover:enabled, .jupyter-button:focus:enabled {
    /* MD Lite 2dp shadow */
    box-shadow: 0 2px 2px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),
                0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),
                0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));
}

.jupyter-button:active, .jupyter-button.mod-active {
    /* MD Lite 4dp shadow */
    box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),
                0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),
                0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));
    color: var(--jp-ui-font-color1);
    background-color: var(--jp-layout-color3);
}

.jupyter-button:focus:enabled {
    outline: 1px solid var(--jp-widgets-input-focus-border-color);
}

/* Button "Primary" Styling */

.jupyter-button.mod-primary {
    color: var(--jp-ui-inverse-font-color1, var(--jp-inverse-ui-font-color1));
    background-color: var(--jp-brand-color1);
}

.jupyter-button.mod-primary.mod-active {
    color: var(--jp-ui-inverse-font-color0, var(--jp-inverse-ui-font-color0));
    background-color: var(--jp-brand-color0);
}

.jupyter-button.mod-primary:active {
    color: var(--jp-ui-inverse-font-color0, var(--jp-inverse-ui-font-color0));
    background-color: var(--jp-brand-color0);
}

/* Button "Success" Styling */

.jupyter-button.mod-success {
    color: var(--jp-ui-inverse-font-color1, var(--jp-inverse-ui-font-color1));
    background-color: var(--jp-success-color1);
}

.jupyter-button.mod-success.mod-active {
    color: var(--jp-ui-inverse-font-color0, var(--jp-inverse-ui-font-color0));
    background-color: var(--jp-success-color0);
}

.jupyter-button.mod-success:active {
    color: var(--jp-ui-inverse-font-color0, var(--jp-inverse-ui-font-color0));
    background-color: var(--jp-success-color0);
}

/* Button "Info" Styling */

.jupyter-button.mod-info {
    color: var(--jp-ui-inverse-font-color1, var(--jp-inverse-ui-font-color1));
    background-color: var(--jp-info-color1);
}

.jupyter-button.mod-info.mod-active {
    color: var(--jp-ui-inverse-font-color0, var(--jp-inverse-ui-font-color0));
    background-color: var(--jp-info-color0);
}

.jupyter-button.mod-info:active {
    color: var(--jp-ui-inverse-font-color0, var(--jp-inverse-ui-font-color0));
    background-color: var(--jp-info-color0);
}

/* Button "Warning" Styling */

.jupyter-button.mod-warning {
    color: var(--jp-ui-inverse-font-color1, var(--jp-inverse-ui-font-color1));
    background-color: var(--jp-warn-color1);
}

.jupyter-button.mod-warning.mod-active {
    color: var(--jp-ui-inverse-font-color0, var(--jp-inverse-ui-font-color0));
    background-color: var(--jp-warn-color0);
}

.jupyter-button.mod-warning:active {
    color: var(--jp-ui-inverse-font-color0, var(--jp-inverse-ui-font-color0));
    background-color: var(--jp-warn-color0);
}

/* Button "Danger" Styling */

.jupyter-button.mod-danger {
    color: var(--jp-ui-inverse-font-color1, var(--jp-inverse-ui-font-color1));
    background-color: var(--jp-error-color1);
}

.jupyter-button.mod-danger.mod-active {
    color: var(--jp-ui-inverse-font-color0, var(--jp-inverse-ui-font-color0));
    background-color: var(--jp-error-color0);
}

.jupyter-button.mod-danger:active {
    color: var(--jp-ui-inverse-font-color0, var(--jp-inverse-ui-font-color0));
    background-color: var(--jp-error-color0);
}

/* Widget Button, Widget Toggle Button, Widget Upload */

.widget-button, .widget-toggle-button, .widget-upload {
    width: var(--jp-widgets-inline-width-short);
}

/* Widget Label Styling */

/* Override Bootstrap label css */

.jupyter-widgets label {
    margin-bottom: initial;
}

.widget-label-basic {
    /* Basic Label */
    color: var(--jp-widgets-label-color);
    font-size: var(--jp-widgets-font-size);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    line-height: var(--jp-widgets-inline-height);
}

.widget-label {
    /* Label */
    color: var(--jp-widgets-label-color);
    font-size: var(--jp-widgets-font-size);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    line-height: var(--jp-widgets-inline-height);
}

.widget-inline-hbox .widget-label {
    /* Horizontal Widget Label */
    color: var(--jp-widgets-label-color);
    text-align: right;
    margin-right: calc( var(--jp-widgets-inline-margin) * 2 );
    width: var(--jp-widgets-inline-label-width);
    flex-shrink: 0;
}

.widget-inline-vbox .widget-label {
    /* Vertical Widget Label */
    color: var(--jp-widgets-label-color);
    text-align: center;
    line-height: var(--jp-widgets-inline-height);
}

/* Widget Readout Styling */

.widget-readout {
    color: var(--jp-widgets-readout-color);
    font-size: var(--jp-widgets-font-size);
    height: var(--jp-widgets-inline-height);
    line-height: var(--jp-widgets-inline-height);
    overflow: hidden;
    white-space: nowrap;
    text-align: center;
}

.widget-readout.overflow {
    /* Overflowing Readout */

    /* From Material Design Lite
        shadow-key-umbra-opacity: 0.2;
        shadow-key-penumbra-opacity: 0.14;
        shadow-ambient-shadow-opacity: 0.12;
     */
    -webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2),
                        0 3px 1px -2px rgba(0, 0, 0, 0.14),
                        0 1px 5px 0 rgba(0, 0, 0, 0.12);

    -moz-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2),
                     0 3px 1px -2px rgba(0, 0, 0, 0.14),
                     0 1px 5px 0 rgba(0, 0, 0, 0.12);

    box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.2),
                0 3px 1px -2px rgba(0, 0, 0, 0.14),
                0 1px 5px 0 rgba(0, 0, 0, 0.12);
}

.widget-inline-hbox .widget-readout {
    /* Horizontal Readout */
    text-align: center;
    max-width: var(--jp-widgets-inline-width-short);
    min-width: var(--jp-widgets-inline-width-tiny);
    margin-left: var(--jp-widgets-inline-margin);
}

.widget-inline-vbox .widget-readout {
    /* Vertical Readout */
    margin-top: var(--jp-widgets-inline-margin);
    /* as wide as the widget */
    width: inherit;
}

/* Widget Checkbox Styling */

.widget-checkbox {
    width: var(--jp-widgets-inline-width);
    height: var(--jp-widgets-inline-height);
    line-height: var(--jp-widgets-inline-height);
}

.widget-checkbox input[type="checkbox"] {
    margin: 0px calc( var(--jp-widgets-inline-margin) * 2 ) 0px 0px;
    line-height: var(--jp-widgets-inline-height);
    font-size: large;
    flex-grow: 1;
    flex-shrink: 0;
    align-self: center;
}

/* Widget Valid Styling */

.widget-valid {
    height: var(--jp-widgets-inline-height);
    line-height: var(--jp-widgets-inline-height);
    width: var(--jp-widgets-inline-width-short);
    font-size: var(--jp-widgets-font-size);
}

.widget-valid i:before {
    line-height: var(--jp-widgets-inline-height);
    margin-right: var(--jp-widgets-inline-margin);
    margin-left: var(--jp-widgets-inline-margin);
}

.widget-valid.mod-valid i:before {
    color: green;
}

.widget-valid.mod-invalid i:before {
    color: red;
}

.widget-valid.mod-valid .widget-valid-readout {
    display: none;
}

/* Widget Text and TextArea Stying */

.widget-textarea, .widget-text {
    width: var(--jp-widgets-inline-width);
}

.widget-text input[type="text"], .widget-text input[type="number"], .widget-text input[type="password"] {
    height: var(--jp-widgets-inline-height);
    line-height: var(--jp-widgets-inline-height);
}

.widget-text input[type="text"]:disabled, .widget-text input[type="number"]:disabled, .widget-text input[type="password"]:disabled, .widget-textarea textarea:disabled {
    opacity: var(--jp-widgets-disabled-opacity);
}

.widget-text input[type="text"], .widget-text input[type="number"], .widget-text input[type="password"], .widget-textarea textarea {
    box-sizing: border-box;
    border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);
    background-color: var(--jp-widgets-input-background-color);
    color: var(--jp-widgets-input-color);
    font-size: var(--jp-widgets-font-size);
    flex-grow: 1;
    min-width: 0; /* This makes it possible for the flexbox to shrink this input */
    flex-shrink: 1;
    outline: none !important;
}

.widget-text input[type="text"], .widget-text input[type="password"], .widget-textarea textarea {
    padding: var(--jp-widgets-input-padding) calc( var(--jp-widgets-input-padding) *  2);
}

.widget-text input[type="number"] {
    padding: var(--jp-widgets-input-padding) 0 var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) *  2);
}

.widget-textarea textarea {
    height: inherit;
    width: inherit;
}

.widget-text input:focus, .widget-textarea textarea:focus {
    border-color: var(--jp-widgets-input-focus-border-color);
}

/* Widget Slider */

.widget-slider .ui-slider {
    /* Slider Track */
    border: var(--jp-widgets-slider-border-width) solid var(--jp-layout-color3);
    background: var(--jp-layout-color3);
    box-sizing: border-box;
    position: relative;
    border-radius: 0px;
}

.widget-slider .ui-slider .ui-slider-handle {
    /* Slider Handle */
    outline: none !important; /* focused slider handles are colored - see below */
    position: absolute;
    background-color: var(--jp-widgets-slider-handle-background-color);
    border: var(--jp-widgets-slider-border-width) solid var(--jp-widgets-slider-handle-border-color);
    box-sizing: border-box;
    z-index: 1;
    background-image: none; /* Override jquery-ui */
}

/* Override jquery-ui */

.widget-slider .ui-slider .ui-slider-handle:hover, .widget-slider .ui-slider .ui-slider-handle:focus {
    background-color: var(--jp-widgets-slider-active-handle-color);
    border: var(--jp-widgets-slider-border-width) solid var(--jp-widgets-slider-active-handle-color);
}

.widget-slider .ui-slider .ui-slider-handle:active {
    background-color: var(--jp-widgets-slider-active-handle-color);
    border-color: var(--jp-widgets-slider-active-handle-color);
    z-index: 2;
    transform: scale(1.2);
}

.widget-slider  .ui-slider .ui-slider-range {
    /* Interval between the two specified value of a double slider */
    position: absolute;
    background: var(--jp-widgets-slider-active-handle-color);
    z-index: 0;
}

/* Shapes of Slider Handles */

.widget-hslider .ui-slider .ui-slider-handle {
    width: var(--jp-widgets-slider-handle-size);
    height: var(--jp-widgets-slider-handle-size);
    margin-top: calc((var(--jp-widgets-slider-track-thickness) - var(--jp-widgets-slider-handle-size)) / 2 - var(--jp-widgets-slider-border-width));
    margin-left: calc(var(--jp-widgets-slider-handle-size) / -2 + var(--jp-widgets-slider-border-width));
    border-radius: 50%;
    top: 0;
}

.widget-vslider .ui-slider .ui-slider-handle {
    width: var(--jp-widgets-slider-handle-size);
    height: var(--jp-widgets-slider-handle-size);
    margin-bottom: calc(var(--jp-widgets-slider-handle-size) / -2 + var(--jp-widgets-slider-border-width));
    margin-left: calc((var(--jp-widgets-slider-track-thickness) - var(--jp-widgets-slider-handle-size)) / 2 - var(--jp-widgets-slider-border-width));
    border-radius: 50%;
    left: 0;
}

.widget-hslider .ui-slider .ui-slider-range {
    height: calc( var(--jp-widgets-slider-track-thickness) * 2 );
    margin-top: calc((var(--jp-widgets-slider-track-thickness) - var(--jp-widgets-slider-track-thickness) * 2 ) / 2 - var(--jp-widgets-slider-border-width));
}

.widget-vslider .ui-slider .ui-slider-range {
    width: calc( var(--jp-widgets-slider-track-thickness) * 2 );
    margin-left: calc((var(--jp-widgets-slider-track-thickness) - var(--jp-widgets-slider-track-thickness) * 2 ) / 2 - var(--jp-widgets-slider-border-width));
}

/* Horizontal Slider */

.widget-hslider {
    width: var(--jp-widgets-inline-width);
    height: var(--jp-widgets-inline-height);
    line-height: var(--jp-widgets-inline-height);

    /* Override the align-items baseline. This way, the description and readout
    still seem to align their baseline properly, and we don't have to have
    align-self: stretch in the .slider-container. */
    align-items: center;
}

.widgets-slider .slider-container {
    overflow: visible;
}

.widget-hslider .slider-container {
    height: var(--jp-widgets-inline-height);
    margin-left: calc(var(--jp-widgets-slider-handle-size) / 2 - 2 * var(--jp-widgets-slider-border-width));
    margin-right: calc(var(--jp-widgets-slider-handle-size) / 2 - 2 * var(--jp-widgets-slider-border-width));
    flex: 1 1 var(--jp-widgets-inline-width-short);
}

.widget-hslider .ui-slider {
    /* Inner, invisible slide div */
    height: var(--jp-widgets-slider-track-thickness);
    margin-top: calc((var(--jp-widgets-inline-height) - var(--jp-widgets-slider-track-thickness)) / 2);
    width: 100%;
}

/* Vertical Slider */

.widget-vbox .widget-label {
    height: var(--jp-widgets-inline-height);
    line-height: var(--jp-widgets-inline-height);
}

.widget-vslider {
    /* Vertical Slider */
    height: var(--jp-widgets-vertical-height);
    width: var(--jp-widgets-inline-width-tiny);
}

.widget-vslider .slider-container {
    flex: 1 1 var(--jp-widgets-inline-width-short);
    margin-left: auto;
    margin-right: auto;
    margin-bottom: calc(var(--jp-widgets-slider-handle-size) / 2 - 2 * var(--jp-widgets-slider-border-width));
    margin-top: calc(var(--jp-widgets-slider-handle-size) / 2 - 2 * var(--jp-widgets-slider-border-width));
    display: flex;
    flex-direction: column;
}

.widget-vslider .ui-slider-vertical {
    /* Inner, invisible slide div */
    width: var(--jp-widgets-slider-track-thickness);
    flex-grow: 1;
    margin-left: auto;
    margin-right: auto;
}

/* Widget Progress Styling */

.progress-bar {
    -webkit-transition: none;
    -moz-transition: none;
    -ms-transition: none;
    -o-transition: none;
    transition: none;
}

.progress-bar {
    height: var(--jp-widgets-inline-height);
}

.progress-bar {
    background-color: var(--jp-brand-color1);
}

.progress-bar-success {
    background-color: var(--jp-success-color1);
}

.progress-bar-info {
    background-color: var(--jp-info-color1);
}

.progress-bar-warning {
    background-color: var(--jp-warn-color1);
}

.progress-bar-danger {
    background-color: var(--jp-error-color1);
}

.progress {
    background-color: var(--jp-layout-color2);
    border: none;
    box-shadow: none;
}

/* Horisontal Progress */

.widget-hprogress {
    /* Progress Bar */
    height: var(--jp-widgets-inline-height);
    line-height: var(--jp-widgets-inline-height);
    width: var(--jp-widgets-inline-width);
    align-items: center;

}

.widget-hprogress .progress {
    flex-grow: 1;
    margin-top: var(--jp-widgets-input-padding);
    margin-bottom: var(--jp-widgets-input-padding);
    align-self: stretch;
    /* Override bootstrap style */
    height: initial;
}

/* Vertical Progress */

.widget-vprogress {
    height: var(--jp-widgets-vertical-height);
    width: var(--jp-widgets-inline-width-tiny);
}

.widget-vprogress .progress {
    flex-grow: 1;
    width: var(--jp-widgets-progress-thickness);
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 0;
}

/* Select Widget Styling */

.widget-dropdown {
    height: var(--jp-widgets-inline-height);
    width: var(--jp-widgets-inline-width);
    line-height: var(--jp-widgets-inline-height);
}

.widget-dropdown > select {
    padding-right: 20px;
    border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);
    border-radius: 0;
    height: inherit;
    flex: 1 1 var(--jp-widgets-inline-width-short);
    min-width: 0; /* This makes it possible for the flexbox to shrink this input */
    box-sizing: border-box;
    outline: none !important;
    box-shadow: none;
    background-color: var(--jp-widgets-input-background-color);
    color: var(--jp-widgets-input-color);
    font-size: var(--jp-widgets-font-size);
    vertical-align: top;
    padding-left: calc( var(--jp-widgets-input-padding) * 2);
	appearance: none;
	-webkit-appearance: none;
	-moz-appearance: none;
    background-repeat: no-repeat;
	background-size: 20px;
	background-position: right center;
    background-image: var(--jp-widgets-dropdown-arrow);
}

.widget-dropdown > select:focus {
    border-color: var(--jp-widgets-input-focus-border-color);
}

.widget-dropdown > select:disabled {
    opacity: var(--jp-widgets-disabled-opacity);
}

/* To disable the dotted border in Firefox around select controls.
   See http://stackoverflow.com/a/18853002 */

.widget-dropdown > select:-moz-focusring {
    color: transparent;
    text-shadow: 0 0 0 #000;
}

/* Select and SelectMultiple */

.widget-select {
    width: var(--jp-widgets-inline-width);
    line-height: var(--jp-widgets-inline-height);

    /* Because Firefox defines the baseline of a select as the bottom of the
    control, we align the entire control to the top and add padding to the
    select to get an approximate first line baseline alignment. */
    align-items: flex-start;
}

.widget-select > select {
    border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);
    background-color: var(--jp-widgets-input-background-color);
    color: var(--jp-widgets-input-color);
    font-size: var(--jp-widgets-font-size);
    flex: 1 1 var(--jp-widgets-inline-width-short);
    outline: none !important;
    overflow: auto;
    height: inherit;

    /* Because Firefox defines the baseline of a select as the bottom of the
    control, we align the entire control to the top and add padding to the
    select to get an approximate first line baseline alignment. */
    padding-top: 5px;
}

.widget-select > select:focus {
    border-color: var(--jp-widgets-input-focus-border-color);
}

.wiget-select > select > option {
    padding-left: var(--jp-widgets-input-padding);
    line-height: var(--jp-widgets-inline-height);
    /* line-height doesn't work on some browsers for select options */
    padding-top: calc(var(--jp-widgets-inline-height)-var(--jp-widgets-font-size)/2);
    padding-bottom: calc(var(--jp-widgets-inline-height)-var(--jp-widgets-font-size)/2);
}

/* Toggle Buttons Styling */

.widget-toggle-buttons {
    line-height: var(--jp-widgets-inline-height);
}

.widget-toggle-buttons .widget-toggle-button {
    margin-left: var(--jp-widgets-margin);
    margin-right: var(--jp-widgets-margin);
}

.widget-toggle-buttons .jupyter-button:disabled {
    opacity: var(--jp-widgets-disabled-opacity);
}

/* Radio Buttons Styling */

.widget-radio {
    width: var(--jp-widgets-inline-width);
    line-height: var(--jp-widgets-inline-height);
}

.widget-radio-box {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    box-sizing: border-box;
    flex-grow: 1;
    margin-bottom: var(--jp-widgets-radio-item-height-adjustment);
}

.widget-radio-box label {
    height: var(--jp-widgets-radio-item-height);
    line-height: var(--jp-widgets-radio-item-height);
    font-size: var(--jp-widgets-font-size);
}

.widget-radio-box input {
    height: var(--jp-widgets-radio-item-height);
    line-height: var(--jp-widgets-radio-item-height);
    margin: 0 calc( var(--jp-widgets-input-padding) * 2 ) 0 1px;
    float: left;
}

/* Color Picker Styling */

.widget-colorpicker {
    width: var(--jp-widgets-inline-width);
    height: var(--jp-widgets-inline-height);
    line-height: var(--jp-widgets-inline-height);
}

.widget-colorpicker > .widget-colorpicker-input {
    flex-grow: 1;
    flex-shrink: 1;
    min-width: var(--jp-widgets-inline-width-tiny);
}

.widget-colorpicker input[type="color"] {
    width: var(--jp-widgets-inline-height);
    height: var(--jp-widgets-inline-height);
    padding: 0 2px; /* make the color square actually square on Chrome on OS X */
    background: var(--jp-widgets-input-background-color);
    color: var(--jp-widgets-input-color);
    border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);
    border-left: none;
    flex-grow: 0;
    flex-shrink: 0;
    box-sizing: border-box;
    align-self: stretch;
    outline: none !important;
}

.widget-colorpicker.concise input[type="color"] {
    border-left: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);
}

.widget-colorpicker input[type="color"]:focus, .widget-colorpicker input[type="text"]:focus {
    border-color: var(--jp-widgets-input-focus-border-color);
}

.widget-colorpicker input[type="text"] {
    flex-grow: 1;
    outline: none !important;
    height: var(--jp-widgets-inline-height);
    line-height: var(--jp-widgets-inline-height);
    background: var(--jp-widgets-input-background-color);
    color: var(--jp-widgets-input-color);
    border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);
    font-size: var(--jp-widgets-font-size);
    padding: var(--jp-widgets-input-padding) calc( var(--jp-widgets-input-padding) *  2 );
    min-width: 0; /* This makes it possible for the flexbox to shrink this input */
    flex-shrink: 1;
    box-sizing: border-box;
}

.widget-colorpicker input[type="text"]:disabled {
    opacity: var(--jp-widgets-disabled-opacity);
}

/* Date Picker Styling */

.widget-datepicker {
    width: var(--jp-widgets-inline-width);
    height: var(--jp-widgets-inline-height);
    line-height: var(--jp-widgets-inline-height);
}

.widget-datepicker input[type="date"] {
    flex-grow: 1;
    flex-shrink: 1;
    min-width: 0; /* This makes it possible for the flexbox to shrink this input */
    outline: none !important;
    height: var(--jp-widgets-inline-height);
    border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);
    background-color: var(--jp-widgets-input-background-color);
    color: var(--jp-widgets-input-color);
    font-size: var(--jp-widgets-font-size);
    padding: var(--jp-widgets-input-padding) calc( var(--jp-widgets-input-padding) *  2 );
    box-sizing: border-box;
}

.widget-datepicker input[type="date"]:focus {
    border-color: var(--jp-widgets-input-focus-border-color);
}

.widget-datepicker input[type="date"]:invalid {
    border-color: var(--jp-warn-color1);
}

.widget-datepicker input[type="date"]:disabled {
    opacity: var(--jp-widgets-disabled-opacity);
}

/* Play Widget */

.widget-play {
    width: var(--jp-widgets-inline-width-short);
    display: flex;
    align-items: stretch;
}

.widget-play .jupyter-button {
    flex-grow: 1;
    height: auto;
}

.widget-play .jupyter-button:disabled {
    opacity: var(--jp-widgets-disabled-opacity);
}

/* Tab Widget */

.jupyter-widgets.widget-tab {
    display: flex;
    flex-direction: column;
}

.jupyter-widgets.widget-tab > .p-TabBar {
    /* Necessary so that a tab can be shifted down to overlay the border of the box below. */
    overflow-x: visible;
    overflow-y: visible;
}

.jupyter-widgets.widget-tab > .p-TabBar > .p-TabBar-content {
    /* Make sure that the tab grows from bottom up */
    align-items: flex-end;
    min-width: 0;
    min-height: 0;
}

.jupyter-widgets.widget-tab > .widget-tab-contents {
    width: 100%;
    box-sizing: border-box;
    margin: 0;
    background: var(--jp-layout-color1);
    color: var(--jp-ui-font-color1);
    border: var(--jp-border-width) solid var(--jp-border-color1);
    padding: var(--jp-widgets-container-padding);
    flex-grow: 1;
    overflow: auto;
}

.jupyter-widgets.widget-tab > .p-TabBar {
    font: var(--jp-widgets-font-size) Helvetica, Arial, sans-serif;
    min-height: calc(var(--jp-widgets-horizontal-tab-height) + var(--jp-border-width));
}

.jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tab {
    flex: 0 1 var(--jp-widgets-horizontal-tab-width);
    min-width: 35px;
    min-height: calc(var(--jp-widgets-horizontal-tab-height) + var(--jp-border-width));
    line-height: var(--jp-widgets-horizontal-tab-height);
    margin-left: calc(-1 * var(--jp-border-width));
    padding: 0px 10px;
    background: var(--jp-layout-color2);
    color: var(--jp-ui-font-color2);
    border: var(--jp-border-width) solid var(--jp-border-color1);
    border-bottom: none;
    position: relative;
}

.jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tab.p-mod-current {
    color: var(--jp-ui-font-color0);
    /* We want the background to match the tab content background */
    background: var(--jp-layout-color1);
    min-height: calc(var(--jp-widgets-horizontal-tab-height) + 2 * var(--jp-border-width));
    transform: translateY(var(--jp-border-width));
    overflow: visible;
}

.jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tab.p-mod-current:before {
    position: absolute;
    top: calc(-1 * var(--jp-border-width));
    left: calc(-1 * var(--jp-border-width));
    content: '';
    height: var(--jp-widgets-horizontal-tab-top-border);
    width: calc(100% + 2 * var(--jp-border-width));
    background: var(--jp-brand-color1);
}

.jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tab:first-child {
    margin-left: 0;
}

.jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tab:hover:not(.p-mod-current) {
    background: var(--jp-layout-color1);
    color: var(--jp-ui-font-color1);
}

.jupyter-widgets.widget-tab > .p-TabBar .p-mod-closable > .p-TabBar-tabCloseIcon {
    margin-left: 4px;
}

/* This font-awesome strategy may not work across FA4 and FA5, but we don't
actually support closable tabs, so it really doesn't matter */

.jupyter-widgets.widget-tab > .p-TabBar .p-mod-closable > .p-TabBar-tabCloseIcon:before {
    font-family: FontAwesome;
    content: '\f00d'; /* close */
}

.jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tabIcon,
.jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tabLabel,
.jupyter-widgets.widget-tab > .p-TabBar .p-TabBar-tabCloseIcon {
    line-height: var(--jp-widgets-horizontal-tab-height);
}

/* Accordion Widget */

.p-Collapse {
    display: flex;
    flex-direction: column;
    align-items: stretch;
}

.p-Collapse-header {
    padding: var(--jp-widgets-input-padding);
    cursor: pointer;
    color: var(--jp-ui-font-color2);
    background-color: var(--jp-layout-color2);
    border: var(--jp-widgets-border-width) solid var(--jp-border-color1);
    padding: calc(var(--jp-widgets-container-padding) * 2 / 3) var(--jp-widgets-container-padding);
    font-weight: bold;
}

.p-Collapse-header:hover {
    background-color: var(--jp-layout-color1);
    color: var(--jp-ui-font-color1);
}

.p-Collapse-open > .p-Collapse-header {
    background-color: var(--jp-layout-color1);
    color: var(--jp-ui-font-color0);
    cursor: default;
    border-bottom: none;
}

.p-Collapse-contents {
    padding: var(--jp-widgets-container-padding);
    background-color: var(--jp-layout-color1);
    color: var(--jp-ui-font-color1);
    border-left: var(--jp-widgets-border-width) solid var(--jp-border-color1);
    border-right: var(--jp-widgets-border-width) solid var(--jp-border-color1);
    border-bottom: var(--jp-widgets-border-width) solid var(--jp-border-color1);
    overflow: auto;
}

.p-Accordion {
    display: flex;
    flex-direction: column;
    align-items: stretch;
}

.p-Accordion .p-Collapse {
    margin-bottom: 0;
}

.p-Accordion .p-Collapse + .p-Collapse {
    margin-top: 4px;
}

/* HTML widget */

.widget-html, .widget-htmlmath {
    font-size: var(--jp-widgets-font-size);
}

.widget-html > .widget-html-content, .widget-htmlmath > .widget-html-content {
    /* Fill out the area in the HTML widget */
    align-self: stretch;
    flex-grow: 1;
    flex-shrink: 1;
    /* Makes sure the baseline is still aligned with other elements */
    line-height: var(--jp-widgets-inline-height);
    /* Make it possible to have absolutely-positioned elements in the html */
    position: relative;
}

/* Image widget  */

.widget-image {
    max-width: 100%;
    height: auto;
}

:root {
  --jp-layout-color1: var(--colab-primary-surface-color);
  --jp-layout-color2: var(--colab-secondary-surface-color);
  --jp-ui-font-color1: var(--colab-primary-text-color);
  --jp-widgets-color: var(--colab-primary-text-color);
  --jp-widgets-input-background-color: var(--colab-secondary-surface-color);
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9AanVweXRlci13aWRnZXRzL2NvbnRyb2xzL2Nzcy93aWRnZXRzLmNzcyIsIi4uL25vZGVfbW9kdWxlcy9AanVweXRlci13aWRnZXRzL2NvbnRyb2xzL2Nzcy9sYWJ2YXJpYWJsZXMuY3NzIiwiLi4vbm9kZV9tb2R1bGVzL0BqdXB5dGVyLXdpZGdldHMvY29udHJvbHMvY3NzL21hdGVyaWFsY29sb3JzLmNzcyIsIi4uL25vZGVfbW9kdWxlcy9AanVweXRlci13aWRnZXRzL2NvbnRyb2xzL2Nzcy93aWRnZXRzLWJhc2UuY3NzIiwiLi4vbm9kZV9tb2R1bGVzL0BqdXB5dGVyLXdpZGdldHMvY29udHJvbHMvY3NzL3Bob3NwaG9yLmNzcyIsIi4uL3NyYy9pbmRleC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0VBRUU7O0FDRkY7Ozs4RUFHOEU7O0FBRTlFOzs7O0NBSUM7O0FDVEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNkJFOztBQUNGO0VBQ0Usb0JBQW9CO0VBQ3BCLHFCQUFxQjtFQUNyQixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHNCQUFzQjs7RUFFdEIscUJBQXFCO0VBQ3JCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHVCQUF1QjtFQUN2Qix1QkFBdUI7RUFDdkIsdUJBQXVCO0VBQ3ZCLHVCQUF1Qjs7RUFFdkIsdUJBQXVCO0VBQ3ZCLHdCQUF3QjtFQUN4Qix3QkFBd0I7RUFDeEIsd0JBQXdCO0VBQ3hCLHdCQUF3QjtFQUN4Qix3QkFBd0I7RUFDeEIsd0JBQXdCO0VBQ3hCLHdCQUF3QjtFQUN4Qix3QkFBd0I7RUFDeEIsd0JBQXdCO0VBQ3hCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5Qjs7RUFFekIsNEJBQTRCO0VBQzVCLDZCQUE2QjtFQUM3Qiw2QkFBNkI7RUFDN0IsNkJBQTZCO0VBQzdCLDZCQUE2QjtFQUM3Qiw2QkFBNkI7RUFDN0IsNkJBQTZCO0VBQzdCLDZCQUE2QjtFQUM3Qiw2QkFBNkI7RUFDN0IsNkJBQTZCO0VBQzdCLDhCQUE4QjtFQUM5Qiw4QkFBOEI7RUFDOUIsOEJBQThCO0VBQzlCLDhCQUE4Qjs7RUFFOUIsdUJBQXVCO0VBQ3ZCLHdCQUF3QjtFQUN4Qix3QkFBd0I7RUFDeEIsd0JBQXdCO0VBQ3hCLHdCQUF3QjtFQUN4Qix3QkFBd0I7RUFDeEIsd0JBQXdCO0VBQ3hCLHdCQUF3QjtFQUN4Qix3QkFBd0I7RUFDeEIsd0JBQXdCO0VBQ3hCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5Qjs7RUFFekIscUJBQXFCO0VBQ3JCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHVCQUF1QjtFQUN2Qix1QkFBdUI7RUFDdkIsdUJBQXVCO0VBQ3ZCLHVCQUF1Qjs7RUFFdkIsMkJBQTJCO0VBQzNCLDRCQUE0QjtFQUM1Qiw0QkFBNEI7RUFDNUIsNEJBQTRCO0VBQzVCLDRCQUE0QjtFQUM1Qiw0QkFBNEI7RUFDNUIsNEJBQTRCO0VBQzVCLDRCQUE0QjtFQUM1Qiw0QkFBNEI7RUFDNUIsNEJBQTRCO0VBQzVCLDZCQUE2QjtFQUM3Qiw2QkFBNkI7RUFDN0IsNkJBQTZCO0VBQzdCLDZCQUE2Qjs7RUFFN0IscUJBQXFCO0VBQ3JCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHVCQUF1QjtFQUN2Qix1QkFBdUI7RUFDdkIsdUJBQXVCO0VBQ3ZCLHVCQUF1Qjs7RUFFdkIscUJBQXFCO0VBQ3JCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHVCQUF1QjtFQUN2Qix1QkFBdUI7RUFDdkIsdUJBQXVCO0VBQ3ZCLHVCQUF1Qjs7RUFFdkIsc0JBQXNCO0VBQ3RCLHVCQUF1QjtFQUN2Qix1QkFBdUI7RUFDdkIsdUJBQXVCO0VBQ3ZCLHVCQUF1QjtFQUN2Qix1QkFBdUI7RUFDdkIsdUJBQXVCO0VBQ3ZCLHVCQUF1QjtFQUN2Qix1QkFBdUI7RUFDdkIsdUJBQXVCO0VBQ3ZCLHdCQUF3QjtFQUN4Qix3QkFBd0I7RUFDeEIsd0JBQXdCO0VBQ3hCLHdCQUF3Qjs7RUFFeEIsNEJBQTRCO0VBQzVCLDZCQUE2QjtFQUM3Qiw2QkFBNkI7RUFDN0IsNkJBQTZCO0VBQzdCLDZCQUE2QjtFQUM3Qiw2QkFBNkI7RUFDN0IsNkJBQTZCO0VBQzdCLDZCQUE2QjtFQUM3Qiw2QkFBNkI7RUFDN0IsNkJBQTZCO0VBQzdCLDhCQUE4QjtFQUM5Qiw4QkFBOEI7RUFDOUIsOEJBQThCO0VBQzlCLDhCQUE4Qjs7RUFFOUIscUJBQXFCO0VBQ3JCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHVCQUF1QjtFQUN2Qix1QkFBdUI7RUFDdkIsdUJBQXVCO0VBQ3ZCLHVCQUF1Qjs7RUFFdkIsdUJBQXVCO0VBQ3ZCLHdCQUF3QjtFQUN4Qix3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O0FBQ3ZCOztBQUVBO0lBQ0ksNENBQTRDO0lBQzVDLHlDQUF5QztJQUN6QywrQkFBK0I7SUFDL0IseUVBQXlFO0lBQ3pFLDBFQUEwRTtJQUMxRSwyRUFBMkU7SUFDM0UsY0FBYztBQUNsQjs7QUFFQTtJQUNJLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsb0JBQW9CO0FBQ3hCOztBQUVBO0lBQ0ksZ0JBQWdCO0FBQ3BCOztBQUVBO0lBQ0ksZUFBZTtBQUNuQjs7QUFJQSxnQkFBZ0I7O0FBRWhCO0lBQ0ksc0NBQXNDO0FBQzFDOztBQUVBO0lBQ0kseUNBQXlDO0lBQ3pDLG1CQUFtQjtJQUNuQixZQUFZO0lBQ1osY0FBYztJQUNkLGlFQUFpRTtJQUNqRSw0Q0FBNEM7SUFDNUMsd0VBQXdFO0lBQ3hFLGtCQUFrQjtBQUN0Qjs7QUFHQSxrQkFBa0I7O0FBRWxCO0lBQ0ksZUFBZTtJQUNmLFlBQVk7QUFDaEI7O0FFM2lDQTtFQUNFLHNEQUFzRDtFQUN0RCx3REFBd0Q7RUFDeEQsb0RBQW9EO0VBQ3BELG1EQUFtRDtFQUNuRCx5RUFBeUU7QUFDM0UiLCJmaWxlIjoiY29udHJvbHMuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyogQ29weXJpZ2h0IChjKSBKdXB5dGVyIERldmVsb3BtZW50IFRlYW0uXG4gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1vZGlmaWVkIEJTRCBMaWNlbnNlLlxuICovXG5cbkBpbXBvcnQgXCIuL2xhYnZhcmlhYmxlcy5jc3NcIjtcbkBpbXBvcnQgXCIuL3dpZGdldHMtYmFzZS5jc3NcIjtcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnwgQ29weXJpZ2h0IChjKSBKdXB5dGVyIERldmVsb3BtZW50IFRlYW0uXG58IERpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTW9kaWZpZWQgQlNEIExpY2Vuc2UuXG58LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qXG5UaGlzIGZpbGUgaXMgY29waWVkIGZyb20gdGhlIEp1cHl0ZXJMYWIgcHJvamVjdCB0byBkZWZpbmUgZGVmYXVsdCBzdHlsaW5nIGZvclxud2hlbiB0aGUgd2lkZ2V0IHN0eWxpbmcgaXMgY29tcGlsZWQgZG93biB0byBlbGltaW5hdGUgQ1NTIHZhcmlhYmxlcy4gV2UgbWFrZSBvbmVcbmNoYW5nZSAtIHdlIGNvbW1lbnQgb3V0IHRoZSBmb250IGltcG9ydCBiZWxvdy5cbiovXG5cbkBpbXBvcnQgXCIuL21hdGVyaWFsY29sb3JzLmNzc1wiO1xuXG4vKlxuVGhlIGZvbGxvd2luZyBDU1MgdmFyaWFibGVzIGRlZmluZSB0aGUgbWFpbiwgcHVibGljIEFQSSBmb3Igc3R5bGluZyBKdXB5dGVyTGFiLlxuVGhlc2UgdmFyaWFibGVzIHNob3VsZCBiZSB1c2VkIGJ5IGFsbCBwbHVnaW5zIHdoZXJldmVyIHBvc3NpYmxlLiBJbiBvdGhlclxud29yZHMsIHBsdWdpbnMgc2hvdWxkIG5vdCBkZWZpbmUgY3VzdG9tIGNvbG9ycywgc2l6ZXMsIGV0YyB1bmxlc3MgYWJzb2x1dGVseVxubmVjZXNzYXJ5LiBUaGlzIGVuYWJsZXMgdXNlcnMgdG8gY2hhbmdlIHRoZSB2aXN1YWwgdGhlbWUgb2YgSnVweXRlckxhYlxuYnkgY2hhbmdpbmcgdGhlc2UgdmFyaWFibGVzLlxuXG5NYW55IHZhcmlhYmxlcyBhcHBlYXIgaW4gYW4gb3JkZXJlZCBzZXF1ZW5jZSAoMCwxLDIsMykuIFRoZXNlIHNlcXVlbmNlc1xuYXJlIGRlc2lnbmVkIHRvIHdvcmsgd2VsbCB0b2dldGhlciwgc28gZm9yIGV4YW1wbGUsIGAtLWpwLWJvcmRlci1jb2xvcjFgIHNob3VsZFxuYmUgdXNlZCB3aXRoIGAtLWpwLWxheW91dC1jb2xvcjFgLiBUaGUgbnVtYmVycyBoYXZlIHRoZSBmb2xsb3dpbmcgbWVhbmluZ3M6XG5cbiogMDogc3VwZXItcHJpbWFyeSwgcmVzZXJ2ZWQgZm9yIHNwZWNpYWwgZW1waGFzaXNcbiogMTogcHJpbWFyeSwgbW9zdCBpbXBvcnRhbnQgdW5kZXIgbm9ybWFsIHNpdHVhdGlvbnNcbiogMjogc2Vjb25kYXJ5LCBuZXh0IG1vc3QgaW1wb3J0YW50IHVuZGVyIG5vcm1hbCBzaXR1YXRpb25zXG4qIDM6IHRlcnRpYXJ5LCBuZXh0IG1vc3QgaW1wb3J0YW50IHVuZGVyIG5vcm1hbCBzaXR1YXRpb25zXG5cblRocm91Z2hvdXQgSnVweXRlckxhYiwgd2UgYXJlIG1vc3RseSBmb2xsb3dpbmcgcHJpbmNpcGxlcyBmcm9tIEdvb2dsZSdzXG5NYXRlcmlhbCBEZXNpZ24gd2hlbiBzZWxlY3RpbmcgY29sb3JzLiBXZSBhcmUgbm90LCBob3dldmVyLCBmb2xsb3dpbmdcbmFsbCBvZiBNRCBhcyBpdCBpcyBub3Qgb3B0aW1pemVkIGZvciBkZW5zZSwgaW5mb3JtYXRpb24gcmljaCBVSXMuXG4qL1xuXG5cbi8qXG4gKiBPcHRpb25hbCBtb25vc3BhY2UgZm9udCBmb3IgaW5wdXQvb3V0cHV0IHByb21wdC5cbiAqL1xuIC8qIENvbW1lbnRlZCBvdXQgaW4gaXB5d2lkZ2V0cyBzaW5jZSB3ZSBkb24ndCBuZWVkIGl0LiAqL1xuLyogQGltcG9ydCB1cmwoJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Sb2JvdG8rTW9ubycpOyAqL1xuXG4vKlxuICogQWRkZWQgZm9yIGNvbXBhYml0aWxpdHkgd2l0aCBvdXRwdXQgYXJlYVxuICovXG46cm9vdCB7XG4gIC0tanAtaWNvbi1zZWFyY2g6IG5vbmU7XG4gIC0tanAtdWktc2VsZWN0LWNhcmV0OiBub25lO1xufVxuXG5cbjpyb290IHtcblxuICAvKiBCb3JkZXJzXG5cbiAgVGhlIGZvbGxvd2luZyB2YXJpYWJsZXMsIHNwZWNpZnkgdGhlIHZpc3VhbCBzdHlsaW5nIG9mIGJvcmRlcnMgaW4gSnVweXRlckxhYi5cbiAgICovXG5cbiAgLS1qcC1ib3JkZXItd2lkdGg6IDFweDtcbiAgLS1qcC1ib3JkZXItY29sb3IwOiB2YXIoLS1tZC1ncmV5LTcwMCk7XG4gIC0tanAtYm9yZGVyLWNvbG9yMTogdmFyKC0tbWQtZ3JleS01MDApO1xuICAtLWpwLWJvcmRlci1jb2xvcjI6IHZhcigtLW1kLWdyZXktMzAwKTtcbiAgLS1qcC1ib3JkZXItY29sb3IzOiB2YXIoLS1tZC1ncmV5LTEwMCk7XG5cbiAgLyogVUkgRm9udHNcblxuICBUaGUgVUkgZm9udCBDU1MgdmFyaWFibGVzIGFyZSB1c2VkIGZvciB0aGUgdHlwb2dyYXBoeSBhbGwgb2YgdGhlIEp1cHl0ZXJMYWJcbiAgdXNlciBpbnRlcmZhY2UgZWxlbWVudHMgdGhhdCBhcmUgbm90IGRpcmVjdGx5IHVzZXIgZ2VuZXJhdGVkIGNvbnRlbnQuXG4gICovXG5cbiAgLS1qcC11aS1mb250LXNjYWxlLWZhY3RvcjogMS4yO1xuICAtLWpwLXVpLWZvbnQtc2l6ZTA6IGNhbGModmFyKC0tanAtdWktZm9udC1zaXplMSkvdmFyKC0tanAtdWktZm9udC1zY2FsZS1mYWN0b3IpKTtcbiAgLS1qcC11aS1mb250LXNpemUxOiAxM3B4OyAvKiBCYXNlIGZvbnQgc2l6ZSAqL1xuICAtLWpwLXVpLWZvbnQtc2l6ZTI6IGNhbGModmFyKC0tanAtdWktZm9udC1zaXplMSkqdmFyKC0tanAtdWktZm9udC1zY2FsZS1mYWN0b3IpKTtcbiAgLS1qcC11aS1mb250LXNpemUzOiBjYWxjKHZhcigtLWpwLXVpLWZvbnQtc2l6ZTIpKnZhcigtLWpwLXVpLWZvbnQtc2NhbGUtZmFjdG9yKSk7XG4gIC0tanAtdWktaWNvbi1mb250LXNpemU6IDE0cHg7IC8qIEVuc3VyZXMgcHggcGVyZmVjdCBGb250QXdlc29tZSBpY29ucyAqL1xuICAtLWpwLXVpLWZvbnQtZmFtaWx5OiBcIkhlbHZldGljYSBOZXVlXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG5cbiAgLyogVXNlIHRoZXNlIGZvbnQgY29sb3JzIGFnYWluc3QgdGhlIGNvcnJlc3BvbmRpbmcgbWFpbiBsYXlvdXQgY29sb3JzLlxuICAgICBJbiBhIGxpZ2h0IHRoZW1lLCB0aGVzZSBnbyBmcm9tIGRhcmsgdG8gbGlnaHQuXG4gICovXG5cbiAgLS1qcC11aS1mb250LWNvbG9yMDogcmdiYSgwLDAsMCwxLjApO1xuICAtLWpwLXVpLWZvbnQtY29sb3IxOiByZ2JhKDAsMCwwLDAuOCk7XG4gIC0tanAtdWktZm9udC1jb2xvcjI6IHJnYmEoMCwwLDAsMC41KTtcbiAgLS1qcC11aS1mb250LWNvbG9yMzogcmdiYSgwLDAsMCwwLjMpO1xuXG4gIC8qIFVzZSB0aGVzZSBhZ2FpbnN0IHRoZSBicmFuZC9hY2NlbnQvd2Fybi9lcnJvciBjb2xvcnMuXG4gICAgIFRoZXNlIHdpbGwgdHlwaWNhbGx5IGdvIGZyb20gbGlnaHQgdG8gZGFya2VyLCBpbiBib3RoIGEgZGFyayBhbmQgbGlnaHQgdGhlbWVcbiAgICovXG5cbiAgLS1qcC11aS1pbnZlcnNlLWZvbnQtY29sb3IwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpO1xuICAtLWpwLXVpLWludmVyc2UtZm9udC1jb2xvcjE6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMSk7XG4gIC0tanAtdWktaW52ZXJzZS1mb250LWNvbG9yMjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xuICAtLWpwLXVpLWludmVyc2UtZm9udC1jb2xvcjM6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcblxuICAvKiBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHdlIHN0aWxsIGRlZmluZSB0aGVzZSBiZWxvdyB1bnRpbCBpcHl3aWRnZXRzIDguMC5cbiAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qdXB5dGVyLXdpZGdldHMvaXB5d2lkZ2V0cy9wdWxsLzI4MDEgKi9cbiAgLS1qcC1pbnZlcnNlLXVpLWZvbnQtY29sb3IwOiByZ2JhKDI1NSwyNTUsMjU1LDEpO1xuICAtLWpwLWludmVyc2UtdWktZm9udC1jb2xvcjE6IHJnYmEoMjU1LDI1NSwyNTUsMS4wKTtcbiAgLS1qcC1pbnZlcnNlLXVpLWZvbnQtY29sb3IyOiByZ2JhKDI1NSwyNTUsMjU1LDAuNyk7XG4gIC0tanAtaW52ZXJzZS11aS1mb250LWNvbG9yMzogcmdiYSgyNTUsMjU1LDI1NSwwLjUpO1xuXG4gIC8qIENvbnRlbnQgRm9udHNcblxuICBDb250ZW50IGZvbnQgdmFyaWFibGVzIGFyZSB1c2VkIGZvciB0eXBvZ3JhcGh5IG9mIHVzZXIgZ2VuZXJhdGVkIGNvbnRlbnQuXG4gICovXG5cbiAgLS1qcC1jb250ZW50LWZvbnQtc2l6ZTogMTNweDtcbiAgLS1qcC1jb250ZW50LWxpbmUtaGVpZ2h0OiAxLjU7XG4gIC0tanAtY29udGVudC1mb250LWNvbG9yMDogYmxhY2s7XG4gIC0tanAtY29udGVudC1mb250LWNvbG9yMTogYmxhY2s7XG4gIC0tanAtY29udGVudC1mb250LWNvbG9yMjogdmFyKC0tbWQtZ3JleS03MDApO1xuICAtLWpwLWNvbnRlbnQtZm9udC1jb2xvcjM6IHZhcigtLW1kLWdyZXktNTAwKTtcblxuICAtLWpwLXVpLWZvbnQtc2NhbGUtZmFjdG9yOiAxLjI7XG4gIC0tanAtdWktZm9udC1zaXplMDogY2FsYyh2YXIoLS1qcC11aS1mb250LXNpemUxKS92YXIoLS1qcC11aS1mb250LXNjYWxlLWZhY3RvcikpO1xuICAtLWpwLXVpLWZvbnQtc2l6ZTE6IDEzcHg7IC8qIEJhc2UgZm9udCBzaXplICovXG4gIC0tanAtdWktZm9udC1zaXplMjogY2FsYyh2YXIoLS1qcC11aS1mb250LXNpemUxKSp2YXIoLS1qcC11aS1mb250LXNjYWxlLWZhY3RvcikpO1xuICAtLWpwLXVpLWZvbnQtc2l6ZTM6IGNhbGModmFyKC0tanAtdWktZm9udC1zaXplMikqdmFyKC0tanAtdWktZm9udC1zY2FsZS1mYWN0b3IpKTtcblxuICAtLWpwLWNvZGUtZm9udC1zaXplOiAxM3B4O1xuICAtLWpwLWNvZGUtbGluZS1oZWlnaHQ6IDEuMzA3O1xuICAtLWpwLWNvZGUtcGFkZGluZzogNXB4O1xuICAtLWpwLWNvZGUtZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcblxuXG4gIC8qIExheW91dFxuXG4gIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBtYWluIGxheW91dCBjb2xvcnMgdXNlIGluIEp1cHl0ZXJMYWIuIEluIGEgbGlnaHRcbiAgdGhlbWUgdGhlc2Ugd291bGQgZ28gZnJvbSBsaWdodCB0byBkYXJrLlxuICAqL1xuXG4gIC0tanAtbGF5b3V0LWNvbG9yMDogd2hpdGU7XG4gIC0tanAtbGF5b3V0LWNvbG9yMTogd2hpdGU7XG4gIC0tanAtbGF5b3V0LWNvbG9yMjogdmFyKC0tbWQtZ3JleS0yMDApO1xuICAtLWpwLWxheW91dC1jb2xvcjM6IHZhcigtLW1kLWdyZXktNDAwKTtcblxuICAvKiBCcmFuZC9hY2NlbnQgKi9cblxuICAtLWpwLWJyYW5kLWNvbG9yMDogdmFyKC0tbWQtYmx1ZS03MDApO1xuICAtLWpwLWJyYW5kLWNvbG9yMTogdmFyKC0tbWQtYmx1ZS01MDApO1xuICAtLWpwLWJyYW5kLWNvbG9yMjogdmFyKC0tbWQtYmx1ZS0zMDApO1xuICAtLWpwLWJyYW5kLWNvbG9yMzogdmFyKC0tbWQtYmx1ZS0xMDApO1xuXG4gIC0tanAtYWNjZW50LWNvbG9yMDogdmFyKC0tbWQtZ3JlZW4tNzAwKTtcbiAgLS1qcC1hY2NlbnQtY29sb3IxOiB2YXIoLS1tZC1ncmVlbi01MDApO1xuICAtLWpwLWFjY2VudC1jb2xvcjI6IHZhcigtLW1kLWdyZWVuLTMwMCk7XG4gIC0tanAtYWNjZW50LWNvbG9yMzogdmFyKC0tbWQtZ3JlZW4tMTAwKTtcblxuICAvKiBTdGF0ZSBjb2xvcnMgKHdhcm4sIGVycm9yLCBzdWNjZXNzLCBpbmZvKSAqL1xuXG4gIC0tanAtd2Fybi1jb2xvcjA6IHZhcigtLW1kLW9yYW5nZS03MDApO1xuICAtLWpwLXdhcm4tY29sb3IxOiB2YXIoLS1tZC1vcmFuZ2UtNTAwKTtcbiAgLS1qcC13YXJuLWNvbG9yMjogdmFyKC0tbWQtb3JhbmdlLTMwMCk7XG4gIC0tanAtd2Fybi1jb2xvcjM6IHZhcigtLW1kLW9yYW5nZS0xMDApO1xuXG4gIC0tanAtZXJyb3ItY29sb3IwOiB2YXIoLS1tZC1yZWQtNzAwKTtcbiAgLS1qcC1lcnJvci1jb2xvcjE6IHZhcigtLW1kLXJlZC01MDApO1xuICAtLWpwLWVycm9yLWNvbG9yMjogdmFyKC0tbWQtcmVkLTMwMCk7XG4gIC0tanAtZXJyb3ItY29sb3IzOiB2YXIoLS1tZC1yZWQtMTAwKTtcblxuICAtLWpwLXN1Y2Nlc3MtY29sb3IwOiB2YXIoLS1tZC1ncmVlbi03MDApO1xuICAtLWpwLXN1Y2Nlc3MtY29sb3IxOiB2YXIoLS1tZC1ncmVlbi01MDApO1xuICAtLWpwLXN1Y2Nlc3MtY29sb3IyOiB2YXIoLS1tZC1ncmVlbi0zMDApO1xuICAtLWpwLXN1Y2Nlc3MtY29sb3IzOiB2YXIoLS1tZC1ncmVlbi0xMDApO1xuXG4gIC0tanAtaW5mby1jb2xvcjA6IHZhcigtLW1kLWN5YW4tNzAwKTtcbiAgLS1qcC1pbmZvLWNvbG9yMTogdmFyKC0tbWQtY3lhbi01MDApO1xuICAtLWpwLWluZm8tY29sb3IyOiB2YXIoLS1tZC1jeWFuLTMwMCk7XG4gIC0tanAtaW5mby1jb2xvcjM6IHZhcigtLW1kLWN5YW4tMTAwKTtcblxuICAvKiBDZWxsIHNwZWNpZmljIHN0eWxlcyAqL1xuXG4gIC0tanAtY2VsbC1wYWRkaW5nOiA1cHg7XG4gIC0tanAtY2VsbC1lZGl0b3ItYmFja2dyb3VuZDogI2Y3ZjdmNztcbiAgLS1qcC1jZWxsLWVkaXRvci1ib3JkZXItY29sb3I6ICNjZmNmY2Y7XG4gIC0tanAtY2VsbC1lZGl0b3ItYmFja2dyb3VuZC1lZGl0OiB2YXIoLS1qcC11aS1sYXlvdXQtY29sb3IxKTtcbiAgLS1qcC1jZWxsLWVkaXRvci1ib3JkZXItY29sb3ItZWRpdDogdmFyKC0tanAtYnJhbmQtY29sb3IxKTtcbiAgLS1qcC1jZWxsLXByb21wdC13aWR0aDogMTAwcHg7XG4gIC0tanAtY2VsbC1wcm9tcHQtZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgLS1qcC1jZWxsLXByb21wdC1sZXR0ZXItc3BhY2luZzogMHB4O1xuICAtLWpwLWNlbGwtcHJvbXB0LW9wYWNpdHk6IDEuMDtcbiAgLS1qcC1jZWxsLXByb21wdC1vcGFjaXR5LW5vdC1hY3RpdmU6IDAuNDtcbiAgLS1qcC1jZWxsLXByb21wdC1mb250LWNvbG9yLW5vdC1hY3RpdmU6IHZhcigtLW1kLWdyZXktNzAwKTtcbiAgLyogQSBjdXN0b20gYmxlbmQgb2YgTUQgZ3JleSBhbmQgYmx1ZSA2MDBcbiAgICogU2VlIGh0dHBzOi8vbWV5ZXJ3ZWIuY29tL2VyaWMvdG9vbHMvY29sb3ItYmxlbmQvIzU0NkU3QToxRTg4RTU6NTpoZXggKi9cbiAgLS1qcC1jZWxsLWlucHJvbXB0LWZvbnQtY29sb3I6ICMzMDdGQzE7XG4gIC8qIEEgY3VzdG9tIGJsZW5kIG9mIE1EIGdyZXkgYW5kIG9yYW5nZSA2MDBcbiAgICogaHR0cHM6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jb2xvci1ibGVuZC8jNTQ2RTdBOkY0NTExRTo1OmhleCAqL1xuICAtLWpwLWNlbGwtb3V0cHJvbXB0LWZvbnQtY29sb3I6ICNCRjVCM0Q7XG5cbiAgLyogTm90ZWJvb2sgc3BlY2lmaWMgc3R5bGVzICovXG5cbiAgLS1qcC1ub3RlYm9vay1wYWRkaW5nOiAxMHB4O1xuICAtLWpwLW5vdGVib29rLXNjcm9sbC1wYWRkaW5nOiAxMDBweDtcblxuICAvKiBDb25zb2xlIHNwZWNpZmljIHN0eWxlcyAqL1xuXG4gIC0tanAtY29uc29sZS1iYWNrZ3JvdW5kOiB2YXIoLS1tZC1ncmV5LTEwMCk7XG5cbiAgLyogVG9vbGJhciBzcGVjaWZpYyBzdHlsZXMgKi9cblxuICAtLWpwLXRvb2xiYXItYm9yZGVyLWNvbG9yOiB2YXIoLS1tZC1ncmV5LTQwMCk7XG4gIC0tanAtdG9vbGJhci1taWNyby1oZWlnaHQ6IDhweDtcbiAgLS1qcC10b29sYmFyLWJhY2tncm91bmQ6IHZhcigtLWpwLWxheW91dC1jb2xvcjApO1xuICAtLWpwLXRvb2xiYXItYm94LXNoYWRvdzogMHB4IDBweCAycHggMHB4IHJnYmEoMCwwLDAsMC4yNCk7XG4gIC0tanAtdG9vbGJhci1oZWFkZXItbWFyZ2luOiA0cHggNHB4IDBweCA0cHg7XG4gIC0tanAtdG9vbGJhci1hY3RpdmUtYmFja2dyb3VuZDogdmFyKC0tbWQtZ3JleS0zMDApO1xufVxuIiwiLyoqXG4gKiBUaGUgbWF0ZXJpYWwgZGVzaWduIGNvbG9ycyBhcmUgYWRhcHRlZCBmcm9tIGdvb2dsZS1tYXRlcmlhbC1jb2xvciB2MS4yLjZcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5sZXZhbi9nb29nbGUtbWF0ZXJpYWwtY29sb3JcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5sZXZhbi9nb29nbGUtbWF0ZXJpYWwtY29sb3IvYmxvYi9mNjdjYTVmNDAyOGIyZjFiMzQ4NjJmNjRiMGNhNjczMjNmOTFiMDg4L2Rpc3QvcGFsZXR0ZS52YXIuY3NzXG4gKlxuICogVGhlIGxpY2Vuc2UgZm9yIHRoZSBtYXRlcmlhbCBkZXNpZ24gY29sb3IgQ1NTIHZhcmlhYmxlcyBpcyBhcyBmb2xsb3dzIChzZWVcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5sZXZhbi9nb29nbGUtbWF0ZXJpYWwtY29sb3IvYmxvYi9mNjdjYTVmNDAyOGIyZjFiMzQ4NjJmNjRiMGNhNjczMjNmOTFiMDg4L0xJQ0VOU0UpXG4gKlxuICogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE0IERhbiBMZSBWYW5cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG46cm9vdCB7XG4gIC0tbWQtcmVkLTUwOiAjRkZFQkVFO1xuICAtLW1kLXJlZC0xMDA6ICNGRkNERDI7XG4gIC0tbWQtcmVkLTIwMDogI0VGOUE5QTtcbiAgLS1tZC1yZWQtMzAwOiAjRTU3MzczO1xuICAtLW1kLXJlZC00MDA6ICNFRjUzNTA7XG4gIC0tbWQtcmVkLTUwMDogI0Y0NDMzNjtcbiAgLS1tZC1yZWQtNjAwOiAjRTUzOTM1O1xuICAtLW1kLXJlZC03MDA6ICNEMzJGMkY7XG4gIC0tbWQtcmVkLTgwMDogI0M2MjgyODtcbiAgLS1tZC1yZWQtOTAwOiAjQjcxQzFDO1xuICAtLW1kLXJlZC1BMTAwOiAjRkY4QTgwO1xuICAtLW1kLXJlZC1BMjAwOiAjRkY1MjUyO1xuICAtLW1kLXJlZC1BNDAwOiAjRkYxNzQ0O1xuICAtLW1kLXJlZC1BNzAwOiAjRDUwMDAwO1xuXG4gIC0tbWQtcGluay01MDogI0ZDRTRFQztcbiAgLS1tZC1waW5rLTEwMDogI0Y4QkJEMDtcbiAgLS1tZC1waW5rLTIwMDogI0Y0OEZCMTtcbiAgLS1tZC1waW5rLTMwMDogI0YwNjI5MjtcbiAgLS1tZC1waW5rLTQwMDogI0VDNDA3QTtcbiAgLS1tZC1waW5rLTUwMDogI0U5MUU2MztcbiAgLS1tZC1waW5rLTYwMDogI0Q4MUI2MDtcbiAgLS1tZC1waW5rLTcwMDogI0MyMTg1QjtcbiAgLS1tZC1waW5rLTgwMDogI0FEMTQ1NztcbiAgLS1tZC1waW5rLTkwMDogIzg4MEU0RjtcbiAgLS1tZC1waW5rLUExMDA6ICNGRjgwQUI7XG4gIC0tbWQtcGluay1BMjAwOiAjRkY0MDgxO1xuICAtLW1kLXBpbmstQTQwMDogI0Y1MDA1NztcbiAgLS1tZC1waW5rLUE3MDA6ICNDNTExNjI7XG5cbiAgLS1tZC1wdXJwbGUtNTA6ICNGM0U1RjU7XG4gIC0tbWQtcHVycGxlLTEwMDogI0UxQkVFNztcbiAgLS1tZC1wdXJwbGUtMjAwOiAjQ0U5M0Q4O1xuICAtLW1kLXB1cnBsZS0zMDA6ICNCQTY4Qzg7XG4gIC0tbWQtcHVycGxlLTQwMDogI0FCNDdCQztcbiAgLS1tZC1wdXJwbGUtNTAwOiAjOUMyN0IwO1xuICAtLW1kLXB1cnBsZS02MDA6ICM4RTI0QUE7XG4gIC0tbWQtcHVycGxlLTcwMDogIzdCMUZBMjtcbiAgLS1tZC1wdXJwbGUtODAwOiAjNkExQjlBO1xuICAtLW1kLXB1cnBsZS05MDA6ICM0QTE0OEM7XG4gIC0tbWQtcHVycGxlLUExMDA6ICNFQTgwRkM7XG4gIC0tbWQtcHVycGxlLUEyMDA6ICNFMDQwRkI7XG4gIC0tbWQtcHVycGxlLUE0MDA6ICNENTAwRjk7XG4gIC0tbWQtcHVycGxlLUE3MDA6ICNBQTAwRkY7XG5cbiAgLS1tZC1kZWVwLXB1cnBsZS01MDogI0VERTdGNjtcbiAgLS1tZC1kZWVwLXB1cnBsZS0xMDA6ICNEMUM0RTk7XG4gIC0tbWQtZGVlcC1wdXJwbGUtMjAwOiAjQjM5RERCO1xuICAtLW1kLWRlZXAtcHVycGxlLTMwMDogIzk1NzVDRDtcbiAgLS1tZC1kZWVwLXB1cnBsZS00MDA6ICM3RTU3QzI7XG4gIC0tbWQtZGVlcC1wdXJwbGUtNTAwOiAjNjczQUI3O1xuICAtLW1kLWRlZXAtcHVycGxlLTYwMDogIzVFMzVCMTtcbiAgLS1tZC1kZWVwLXB1cnBsZS03MDA6ICM1MTJEQTg7XG4gIC0tbWQtZGVlcC1wdXJwbGUtODAwOiAjNDUyN0EwO1xuICAtLW1kLWRlZXAtcHVycGxlLTkwMDogIzMxMUI5MjtcbiAgLS1tZC1kZWVwLXB1cnBsZS1BMTAwOiAjQjM4OEZGO1xuICAtLW1kLWRlZXAtcHVycGxlLUEyMDA6ICM3QzRERkY7XG4gIC0tbWQtZGVlcC1wdXJwbGUtQTQwMDogIzY1MUZGRjtcbiAgLS1tZC1kZWVwLXB1cnBsZS1BNzAwOiAjNjIwMEVBO1xuXG4gIC0tbWQtaW5kaWdvLTUwOiAjRThFQUY2O1xuICAtLW1kLWluZGlnby0xMDA6ICNDNUNBRTk7XG4gIC0tbWQtaW5kaWdvLTIwMDogIzlGQThEQTtcbiAgLS1tZC1pbmRpZ28tMzAwOiAjNzk4NkNCO1xuICAtLW1kLWluZGlnby00MDA6ICM1QzZCQzA7XG4gIC0tbWQtaW5kaWdvLTUwMDogIzNGNTFCNTtcbiAgLS1tZC1pbmRpZ28tNjAwOiAjMzk0OUFCO1xuICAtLW1kLWluZGlnby03MDA6ICMzMDNGOUY7XG4gIC0tbWQtaW5kaWdvLTgwMDogIzI4MzU5MztcbiAgLS1tZC1pbmRpZ28tOTAwOiAjMUEyMzdFO1xuICAtLW1kLWluZGlnby1BMTAwOiAjOEM5RUZGO1xuICAtLW1kLWluZGlnby1BMjAwOiAjNTM2REZFO1xuICAtLW1kLWluZGlnby1BNDAwOiAjM0Q1QUZFO1xuICAtLW1kLWluZGlnby1BNzAwOiAjMzA0RkZFO1xuXG4gIC0tbWQtYmx1ZS01MDogI0UzRjJGRDtcbiAgLS1tZC1ibHVlLTEwMDogI0JCREVGQjtcbiAgLS1tZC1ibHVlLTIwMDogIzkwQ0FGOTtcbiAgLS1tZC1ibHVlLTMwMDogIzY0QjVGNjtcbiAgLS1tZC1ibHVlLTQwMDogIzQyQTVGNTtcbiAgLS1tZC1ibHVlLTUwMDogIzIxOTZGMztcbiAgLS1tZC1ibHVlLTYwMDogIzFFODhFNTtcbiAgLS1tZC1ibHVlLTcwMDogIzE5NzZEMjtcbiAgLS1tZC1ibHVlLTgwMDogIzE1NjVDMDtcbiAgLS1tZC1ibHVlLTkwMDogIzBENDdBMTtcbiAgLS1tZC1ibHVlLUExMDA6ICM4MkIxRkY7XG4gIC0tbWQtYmx1ZS1BMjAwOiAjNDQ4QUZGO1xuICAtLW1kLWJsdWUtQTQwMDogIzI5NzlGRjtcbiAgLS1tZC1ibHVlLUE3MDA6ICMyOTYyRkY7XG5cbiAgLS1tZC1saWdodC1ibHVlLTUwOiAjRTFGNUZFO1xuICAtLW1kLWxpZ2h0LWJsdWUtMTAwOiAjQjNFNUZDO1xuICAtLW1kLWxpZ2h0LWJsdWUtMjAwOiAjODFENEZBO1xuICAtLW1kLWxpZ2h0LWJsdWUtMzAwOiAjNEZDM0Y3O1xuICAtLW1kLWxpZ2h0LWJsdWUtNDAwOiAjMjlCNkY2O1xuICAtLW1kLWxpZ2h0LWJsdWUtNTAwOiAjMDNBOUY0O1xuICAtLW1kLWxpZ2h0LWJsdWUtNjAwOiAjMDM5QkU1O1xuICAtLW1kLWxpZ2h0LWJsdWUtNzAwOiAjMDI4OEQxO1xuICAtLW1kLWxpZ2h0LWJsdWUtODAwOiAjMDI3N0JEO1xuICAtLW1kLWxpZ2h0LWJsdWUtOTAwOiAjMDE1NzlCO1xuICAtLW1kLWxpZ2h0LWJsdWUtQTEwMDogIzgwRDhGRjtcbiAgLS1tZC1saWdodC1ibHVlLUEyMDA6ICM0MEM0RkY7XG4gIC0tbWQtbGlnaHQtYmx1ZS1BNDAwOiAjMDBCMEZGO1xuICAtLW1kLWxpZ2h0LWJsdWUtQTcwMDogIzAwOTFFQTtcblxuICAtLW1kLWN5YW4tNTA6ICNFMEY3RkE7XG4gIC0tbWQtY3lhbi0xMDA6ICNCMkVCRjI7XG4gIC0tbWQtY3lhbi0yMDA6ICM4MERFRUE7XG4gIC0tbWQtY3lhbi0zMDA6ICM0REQwRTE7XG4gIC0tbWQtY3lhbi00MDA6ICMyNkM2REE7XG4gIC0tbWQtY3lhbi01MDA6ICMwMEJDRDQ7XG4gIC0tbWQtY3lhbi02MDA6ICMwMEFDQzE7XG4gIC0tbWQtY3lhbi03MDA6ICMwMDk3QTc7XG4gIC0tbWQtY3lhbi04MDA6ICMwMDgzOEY7XG4gIC0tbWQtY3lhbi05MDA6ICMwMDYwNjQ7XG4gIC0tbWQtY3lhbi1BMTAwOiAjODRGRkZGO1xuICAtLW1kLWN5YW4tQTIwMDogIzE4RkZGRjtcbiAgLS1tZC1jeWFuLUE0MDA6ICMwMEU1RkY7XG4gIC0tbWQtY3lhbi1BNzAwOiAjMDBCOEQ0O1xuXG4gIC0tbWQtdGVhbC01MDogI0UwRjJGMTtcbiAgLS1tZC10ZWFsLTEwMDogI0IyREZEQjtcbiAgLS1tZC10ZWFsLTIwMDogIzgwQ0JDNDtcbiAgLS1tZC10ZWFsLTMwMDogIzREQjZBQztcbiAgLS1tZC10ZWFsLTQwMDogIzI2QTY5QTtcbiAgLS1tZC10ZWFsLTUwMDogIzAwOTY4ODtcbiAgLS1tZC10ZWFsLTYwMDogIzAwODk3QjtcbiAgLS1tZC10ZWFsLTcwMDogIzAwNzk2QjtcbiAgLS1tZC10ZWFsLTgwMDogIzAwNjk1QztcbiAgLS1tZC10ZWFsLTkwMDogIzAwNEQ0MDtcbiAgLS1tZC10ZWFsLUExMDA6ICNBN0ZGRUI7XG4gIC0tbWQtdGVhbC1BMjAwOiAjNjRGRkRBO1xuICAtLW1kLXRlYWwtQTQwMDogIzFERTlCNjtcbiAgLS1tZC10ZWFsLUE3MDA6ICMwMEJGQTU7XG5cbiAgLS1tZC1ncmVlbi01MDogI0U4RjVFOTtcbiAgLS1tZC1ncmVlbi0xMDA6ICNDOEU2Qzk7XG4gIC0tbWQtZ3JlZW4tMjAwOiAjQTVENkE3O1xuICAtLW1kLWdyZWVuLTMwMDogIzgxQzc4NDtcbiAgLS1tZC1ncmVlbi00MDA6ICM2NkJCNkE7XG4gIC0tbWQtZ3JlZW4tNTAwOiAjNENBRjUwO1xuICAtLW1kLWdyZWVuLTYwMDogIzQzQTA0NztcbiAgLS1tZC1ncmVlbi03MDA6ICMzODhFM0M7XG4gIC0tbWQtZ3JlZW4tODAwOiAjMkU3RDMyO1xuICAtLW1kLWdyZWVuLTkwMDogIzFCNUUyMDtcbiAgLS1tZC1ncmVlbi1BMTAwOiAjQjlGNkNBO1xuICAtLW1kLWdyZWVuLUEyMDA6ICM2OUYwQUU7XG4gIC0tbWQtZ3JlZW4tQTQwMDogIzAwRTY3NjtcbiAgLS1tZC1ncmVlbi1BNzAwOiAjMDBDODUzO1xuXG4gIC0tbWQtbGlnaHQtZ3JlZW4tNTA6ICNGMUY4RTk7XG4gIC0tbWQtbGlnaHQtZ3JlZW4tMTAwOiAjRENFREM4O1xuICAtLW1kLWxpZ2h0LWdyZWVuLTIwMDogI0M1RTFBNTtcbiAgLS1tZC1saWdodC1ncmVlbi0zMDA6ICNBRUQ1ODE7XG4gIC0tbWQtbGlnaHQtZ3JlZW4tNDAwOiAjOUNDQzY1O1xuICAtLW1kLWxpZ2h0LWdyZWVuLTUwMDogIzhCQzM0QTtcbiAgLS1tZC1saWdodC1ncmVlbi02MDA6ICM3Q0IzNDI7XG4gIC0tbWQtbGlnaHQtZ3JlZW4tNzAwOiAjNjg5RjM4O1xuICAtLW1kLWxpZ2h0LWdyZWVuLTgwMDogIzU1OEIyRjtcbiAgLS1tZC1saWdodC1ncmVlbi05MDA6ICMzMzY5MUU7XG4gIC0tbWQtbGlnaHQtZ3JlZW4tQTEwMDogI0NDRkY5MDtcbiAgLS1tZC1saWdodC1ncmVlbi1BMjAwOiAjQjJGRjU5O1xuICAtLW1kLWxpZ2h0LWdyZWVuLUE0MDA6ICM3NkZGMDM7XG4gIC0tbWQtbGlnaHQtZ3JlZW4tQTcwMDogIzY0REQxNztcblxuICAtLW1kLWxpbWUtNTA6ICNGOUZCRTc7XG4gIC0tbWQtbGltZS0xMDA6ICNGMEY0QzM7XG4gIC0tbWQtbGltZS0yMDA6ICNFNkVFOUM7XG4gIC0tbWQtbGltZS0zMDA6ICNEQ0U3NzU7XG4gIC0tbWQtbGltZS00MDA6ICNENEUxNTc7XG4gIC0tbWQtbGltZS01MDA6ICNDRERDMzk7XG4gIC0tbWQtbGltZS02MDA6ICNDMENBMzM7XG4gIC0tbWQtbGltZS03MDA6ICNBRkI0MkI7XG4gIC0tbWQtbGltZS04MDA6ICM5RTlEMjQ7XG4gIC0tbWQtbGltZS05MDA6ICM4Mjc3MTc7XG4gIC0tbWQtbGltZS1BMTAwOiAjRjRGRjgxO1xuICAtLW1kLWxpbWUtQTIwMDogI0VFRkY0MTtcbiAgLS1tZC1saW1lLUE0MDA6ICNDNkZGMDA7XG4gIC0tbWQtbGltZS1BNzAwOiAjQUVFQTAwO1xuXG4gIC0tbWQteWVsbG93LTUwOiAjRkZGREU3O1xuICAtLW1kLXllbGxvdy0xMDA6ICNGRkY5QzQ7XG4gIC0tbWQteWVsbG93LTIwMDogI0ZGRjU5RDtcbiAgLS1tZC15ZWxsb3ctMzAwOiAjRkZGMTc2O1xuICAtLW1kLXllbGxvdy00MDA6ICNGRkVFNTg7XG4gIC0tbWQteWVsbG93LTUwMDogI0ZGRUIzQjtcbiAgLS1tZC15ZWxsb3ctNjAwOiAjRkREODM1O1xuICAtLW1kLXllbGxvdy03MDA6ICNGQkMwMkQ7XG4gIC0tbWQteWVsbG93LTgwMDogI0Y5QTgyNTtcbiAgLS1tZC15ZWxsb3ctOTAwOiAjRjU3RjE3O1xuICAtLW1kLXllbGxvdy1BMTAwOiAjRkZGRjhEO1xuICAtLW1kLXllbGxvdy1BMjAwOiAjRkZGRjAwO1xuICAtLW1kLXllbGxvdy1BNDAwOiAjRkZFQTAwO1xuICAtLW1kLXllbGxvdy1BNzAwOiAjRkZENjAwO1xuXG4gIC0tbWQtYW1iZXItNTA6ICNGRkY4RTE7XG4gIC0tbWQtYW1iZXItMTAwOiAjRkZFQ0IzO1xuICAtLW1kLWFtYmVyLTIwMDogI0ZGRTA4MjtcbiAgLS1tZC1hbWJlci0zMDA6ICNGRkQ1NEY7XG4gIC0tbWQtYW1iZXItNDAwOiAjRkZDQTI4O1xuICAtLW1kLWFtYmVyLTUwMDogI0ZGQzEwNztcbiAgLS1tZC1hbWJlci02MDA6ICNGRkIzMDA7XG4gIC0tbWQtYW1iZXItNzAwOiAjRkZBMDAwO1xuICAtLW1kLWFtYmVyLTgwMDogI0ZGOEYwMDtcbiAgLS1tZC1hbWJlci05MDA6ICNGRjZGMDA7XG4gIC0tbWQtYW1iZXItQTEwMDogI0ZGRTU3RjtcbiAgLS1tZC1hbWJlci1BMjAwOiAjRkZENzQwO1xuICAtLW1kLWFtYmVyLUE0MDA6ICNGRkM0MDA7XG4gIC0tbWQtYW1iZXItQTcwMDogI0ZGQUIwMDtcblxuICAtLW1kLW9yYW5nZS01MDogI0ZGRjNFMDtcbiAgLS1tZC1vcmFuZ2UtMTAwOiAjRkZFMEIyO1xuICAtLW1kLW9yYW5nZS0yMDA6ICNGRkNDODA7XG4gIC0tbWQtb3JhbmdlLTMwMDogI0ZGQjc0RDtcbiAgLS1tZC1vcmFuZ2UtNDAwOiAjRkZBNzI2O1xuICAtLW1kLW9yYW5nZS01MDA6ICNGRjk4MDA7XG4gIC0tbWQtb3JhbmdlLTYwMDogI0ZCOEMwMDtcbiAgLS1tZC1vcmFuZ2UtNzAwOiAjRjU3QzAwO1xuICAtLW1kLW9yYW5nZS04MDA6ICNFRjZDMDA7XG4gIC0tbWQtb3JhbmdlLTkwMDogI0U2NTEwMDtcbiAgLS1tZC1vcmFuZ2UtQTEwMDogI0ZGRDE4MDtcbiAgLS1tZC1vcmFuZ2UtQTIwMDogI0ZGQUI0MDtcbiAgLS1tZC1vcmFuZ2UtQTQwMDogI0ZGOTEwMDtcbiAgLS1tZC1vcmFuZ2UtQTcwMDogI0ZGNkQwMDtcblxuICAtLW1kLWRlZXAtb3JhbmdlLTUwOiAjRkJFOUU3O1xuICAtLW1kLWRlZXAtb3JhbmdlLTEwMDogI0ZGQ0NCQztcbiAgLS1tZC1kZWVwLW9yYW5nZS0yMDA6ICNGRkFCOTE7XG4gIC0tbWQtZGVlcC1vcmFuZ2UtMzAwOiAjRkY4QTY1O1xuICAtLW1kLWRlZXAtb3JhbmdlLTQwMDogI0ZGNzA0MztcbiAgLS1tZC1kZWVwLW9yYW5nZS01MDA6ICNGRjU3MjI7XG4gIC0tbWQtZGVlcC1vcmFuZ2UtNjAwOiAjRjQ1MTFFO1xuICAtLW1kLWRlZXAtb3JhbmdlLTcwMDogI0U2NEExOTtcbiAgLS1tZC1kZWVwLW9yYW5nZS04MDA6ICNEODQzMTU7XG4gIC0tbWQtZGVlcC1vcmFuZ2UtOTAwOiAjQkYzNjBDO1xuICAtLW1kLWRlZXAtb3JhbmdlLUExMDA6ICNGRjlFODA7XG4gIC0tbWQtZGVlcC1vcmFuZ2UtQTIwMDogI0ZGNkU0MDtcbiAgLS1tZC1kZWVwLW9yYW5nZS1BNDAwOiAjRkYzRDAwO1xuICAtLW1kLWRlZXAtb3JhbmdlLUE3MDA6ICNERDJDMDA7XG5cbiAgLS1tZC1icm93bi01MDogI0VGRUJFOTtcbiAgLS1tZC1icm93bi0xMDA6ICNEN0NDQzg7XG4gIC0tbWQtYnJvd24tMjAwOiAjQkNBQUE0O1xuICAtLW1kLWJyb3duLTMwMDogI0ExODg3RjtcbiAgLS1tZC1icm93bi00MDA6ICM4RDZFNjM7XG4gIC0tbWQtYnJvd24tNTAwOiAjNzk1NTQ4O1xuICAtLW1kLWJyb3duLTYwMDogIzZENEM0MTtcbiAgLS1tZC1icm93bi03MDA6ICM1RDQwMzc7XG4gIC0tbWQtYnJvd24tODAwOiAjNEUzNDJFO1xuICAtLW1kLWJyb3duLTkwMDogIzNFMjcyMztcblxuICAtLW1kLWdyZXktNTA6ICNGQUZBRkE7XG4gIC0tbWQtZ3JleS0xMDA6ICNGNUY1RjU7XG4gIC0tbWQtZ3JleS0yMDA6ICNFRUVFRUU7XG4gIC0tbWQtZ3JleS0zMDA6ICNFMEUwRTA7XG4gIC0tbWQtZ3JleS00MDA6ICNCREJEQkQ7XG4gIC0tbWQtZ3JleS01MDA6ICM5RTlFOUU7XG4gIC0tbWQtZ3JleS02MDA6ICM3NTc1NzU7XG4gIC0tbWQtZ3JleS03MDA6ICM2MTYxNjE7XG4gIC0tbWQtZ3JleS04MDA6ICM0MjQyNDI7XG4gIC0tbWQtZ3JleS05MDA6ICMyMTIxMjE7XG5cbiAgLS1tZC1ibHVlLWdyZXktNTA6ICNFQ0VGRjE7XG4gIC0tbWQtYmx1ZS1ncmV5LTEwMDogI0NGRDhEQztcbiAgLS1tZC1ibHVlLWdyZXktMjAwOiAjQjBCRUM1O1xuICAtLW1kLWJsdWUtZ3JleS0zMDA6ICM5MEE0QUU7XG4gIC0tbWQtYmx1ZS1ncmV5LTQwMDogIzc4OTA5QztcbiAgLS1tZC1ibHVlLWdyZXktNTAwOiAjNjA3RDhCO1xuICAtLW1kLWJsdWUtZ3JleS02MDA6ICM1NDZFN0E7XG4gIC0tbWQtYmx1ZS1ncmV5LTcwMDogIzQ1NUE2NDtcbiAgLS1tZC1ibHVlLWdyZXktODAwOiAjMzc0NzRGO1xuICAtLW1kLWJsdWUtZ3JleS05MDA6ICMyNjMyMzg7XG59IiwiLyogQ29weXJpZ2h0IChjKSBKdXB5dGVyIERldmVsb3BtZW50IFRlYW0uXG4gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1vZGlmaWVkIEJTRCBMaWNlbnNlLlxuICovXG5cbi8qXG4gKiBXZSBhc3N1bWUgdGhhdCB0aGUgQ1NTIHZhcmlhYmxlcyBpblxuICogaHR0cHM6Ly9naXRodWIuY29tL2p1cHl0ZXJsYWIvanVweXRlcmxhYi9ibG9iL21hc3Rlci9zcmMvZGVmYXVsdC10aGVtZS92YXJpYWJsZXMuY3NzXG4gKiBoYXZlIGJlZW4gZGVmaW5lZC5cbiAqL1xuXG5AaW1wb3J0IFwiLi9waG9zcGhvci5jc3NcIjtcblxuOnJvb3Qge1xuICAgIC0tanAtd2lkZ2V0cy1jb2xvcjogdmFyKC0tanAtY29udGVudC1mb250LWNvbG9yMSk7XG4gICAgLS1qcC13aWRnZXRzLWxhYmVsLWNvbG9yOiB2YXIoLS1qcC13aWRnZXRzLWNvbG9yKTtcbiAgICAtLWpwLXdpZGdldHMtcmVhZG91dC1jb2xvcjogdmFyKC0tanAtd2lkZ2V0cy1jb2xvcik7XG4gICAgLS1qcC13aWRnZXRzLWZvbnQtc2l6ZTogdmFyKC0tanAtdWktZm9udC1zaXplMSk7XG4gICAgLS1qcC13aWRnZXRzLW1hcmdpbjogMnB4O1xuICAgIC0tanAtd2lkZ2V0cy1pbmxpbmUtaGVpZ2h0OiAyOHB4O1xuICAgIC0tanAtd2lkZ2V0cy1pbmxpbmUtd2lkdGg6IDMwMHB4O1xuICAgIC0tanAtd2lkZ2V0cy1pbmxpbmUtd2lkdGgtc2hvcnQ6IGNhbGModmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtd2lkdGgpIC8gMiAtIHZhcigtLWpwLXdpZGdldHMtbWFyZ2luKSk7XG4gICAgLS1qcC13aWRnZXRzLWlubGluZS13aWR0aC10aW55OiBjYWxjKHZhcigtLWpwLXdpZGdldHMtaW5saW5lLXdpZHRoLXNob3J0KSAvIDIgLSB2YXIoLS1qcC13aWRnZXRzLW1hcmdpbikpO1xuICAgIC0tanAtd2lkZ2V0cy1pbmxpbmUtbWFyZ2luOiA0cHg7IC8qIG1hcmdpbiBiZXR3ZWVuIGlubGluZSBlbGVtZW50cyAqL1xuICAgIC0tanAtd2lkZ2V0cy1pbmxpbmUtbGFiZWwtd2lkdGg6IDgwcHg7XG4gICAgLS1qcC13aWRnZXRzLWJvcmRlci13aWR0aDogdmFyKC0tanAtYm9yZGVyLXdpZHRoKTtcbiAgICAtLWpwLXdpZGdldHMtdmVydGljYWwtaGVpZ2h0OiAyMDBweDtcbiAgICAtLWpwLXdpZGdldHMtaG9yaXpvbnRhbC10YWItaGVpZ2h0OiAyNHB4O1xuICAgIC0tanAtd2lkZ2V0cy1ob3Jpem9udGFsLXRhYi13aWR0aDogMTQ0cHg7XG4gICAgLS1qcC13aWRnZXRzLWhvcml6b250YWwtdGFiLXRvcC1ib3JkZXI6IDJweDtcbiAgICAtLWpwLXdpZGdldHMtcHJvZ3Jlc3MtdGhpY2tuZXNzOiAyMHB4O1xuICAgIC0tanAtd2lkZ2V0cy1jb250YWluZXItcGFkZGluZzogMTVweDtcbiAgICAtLWpwLXdpZGdldHMtaW5wdXQtcGFkZGluZzogNHB4O1xuICAgIC0tanAtd2lkZ2V0cy1yYWRpby1pdGVtLWhlaWdodC1hZGp1c3RtZW50OiA4cHg7XG4gICAgLS1qcC13aWRnZXRzLXJhZGlvLWl0ZW0taGVpZ2h0OiBjYWxjKHZhcigtLWpwLXdpZGdldHMtaW5saW5lLWhlaWdodCkgLSB2YXIoLS1qcC13aWRnZXRzLXJhZGlvLWl0ZW0taGVpZ2h0LWFkanVzdG1lbnQpKTtcbiAgICAtLWpwLXdpZGdldHMtc2xpZGVyLXRyYWNrLXRoaWNrbmVzczogNHB4O1xuICAgIC0tanAtd2lkZ2V0cy1zbGlkZXItYm9yZGVyLXdpZHRoOiB2YXIoLS1qcC13aWRnZXRzLWJvcmRlci13aWR0aCk7XG4gICAgLS1qcC13aWRnZXRzLXNsaWRlci1oYW5kbGUtc2l6ZTogMTZweDtcbiAgICAtLWpwLXdpZGdldHMtc2xpZGVyLWhhbmRsZS1ib3JkZXItY29sb3I6IHZhcigtLWpwLWJvcmRlci1jb2xvcjEpO1xuICAgIC0tanAtd2lkZ2V0cy1zbGlkZXItaGFuZGxlLWJhY2tncm91bmQtY29sb3I6IHZhcigtLWpwLWxheW91dC1jb2xvcjEpO1xuICAgIC0tanAtd2lkZ2V0cy1zbGlkZXItYWN0aXZlLWhhbmRsZS1jb2xvcjogdmFyKC0tanAtYnJhbmQtY29sb3IxKTtcbiAgICAtLWpwLXdpZGdldHMtbWVudS1pdGVtLWhlaWdodDogMjRweDtcbiAgICAtLWpwLXdpZGdldHMtZHJvcGRvd24tYXJyb3c6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaWRYUm1MVGdpUHo0S1BDRXRMU0JIWlc1bGNtRjBiM0k2SUVGa2IySmxJRWxzYkhWemRISmhkRzl5SURFNUxqSXVNU3dnVTFaSElFVjRjRzl5ZENCUWJIVm5MVWx1SUM0Z1UxWkhJRlpsY25OcGIyNDZJRFl1TURBZ1FuVnBiR1FnTUNrZ0lDMHRQZ284YzNabklIWmxjbk5wYjI0OUlqRXVNU0lnYVdROUlreGhlV1Z5WHpFaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02ZUd4cGJtczlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1RrdmVHeHBibXNpSUhnOUlqQndlQ0lnZVQwaU1IQjRJZ29KSUhacFpYZENiM2c5SWpBZ01DQXhPQ0F4T0NJZ2MzUjViR1U5SW1WdVlXSnNaUzFpWVdOclozSnZkVzVrT201bGR5QXdJREFnTVRnZ01UZzdJaUI0Yld3NmMzQmhZMlU5SW5CeVpYTmxjblpsSWo0S1BITjBlV3hsSUhSNWNHVTlJblJsZUhRdlkzTnpJajRLQ1M1emREQjdabWxzYkRwdWIyNWxPMzBLUEM5emRIbHNaVDRLUEhCaGRHZ2daRDBpVFRVdU1pdzFMamxNT1N3NUxqZHNNeTQ0TFRNdU9Hd3hMaklzTVM0eWJDMDBMamtzTld3dE5DNDVMVFZNTlM0eUxEVXVPWG9pTHo0S1BIQmhkR2dnWTJ4aGMzTTlJbk4wTUNJZ1pEMGlUVEF0TUM0MmFERTRkakU0U0RCV0xUQXVObm9pTHo0S1BDOXpkbWMrQ2dcIik7XG4gICAgLS1qcC13aWRnZXRzLWlucHV0LWNvbG9yOiB2YXIoLS1qcC11aS1mb250LWNvbG9yMSk7XG4gICAgLS1qcC13aWRnZXRzLWlucHV0LWJhY2tncm91bmQtY29sb3I6IHZhcigtLWpwLWxheW91dC1jb2xvcjEpO1xuICAgIC0tanAtd2lkZ2V0cy1pbnB1dC1ib3JkZXItY29sb3I6IHZhcigtLWpwLWJvcmRlci1jb2xvcjEpO1xuICAgIC0tanAtd2lkZ2V0cy1pbnB1dC1mb2N1cy1ib3JkZXItY29sb3I6IHZhcigtLWpwLWJyYW5kLWNvbG9yMik7XG4gICAgLS1qcC13aWRnZXRzLWlucHV0LWJvcmRlci13aWR0aDogdmFyKC0tanAtd2lkZ2V0cy1ib3JkZXItd2lkdGgpO1xuICAgIC0tanAtd2lkZ2V0cy1kaXNhYmxlZC1vcGFjaXR5OiAwLjY7XG5cbiAgICAvKiBGcm9tIE1hdGVyaWFsIERlc2lnbiBMaXRlICovXG4gICAgLS1tZC1zaGFkb3cta2V5LXVtYnJhLW9wYWNpdHk6IDAuMjtcbiAgICAtLW1kLXNoYWRvdy1rZXktcGVudW1icmEtb3BhY2l0eTogMC4xNDtcbiAgICAtLW1kLXNoYWRvdy1hbWJpZW50LXNoYWRvdy1vcGFjaXR5OiAwLjEyO1xufVxuXG4uanVweXRlci13aWRnZXRzIHtcbiAgICBtYXJnaW46IHZhcigtLWpwLXdpZGdldHMtbWFyZ2luKTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGNvbG9yOiB2YXIoLS1qcC13aWRnZXRzLWNvbG9yKTtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLmp1cHl0ZXItd2lkZ2V0cy5qdXB5dGVyLXdpZGdldHMtZGlzY29ubmVjdGVkOjpiZWZvcmUge1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xuICAgIGhlaWdodDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtaGVpZ2h0KTtcbn1cblxuLmpwLU91dHB1dC1yZXN1bHQgPiAuanVweXRlci13aWRnZXRzIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG59XG5cbi8qIHZib3ggYW5kIGhib3ggKi9cblxuLndpZGdldC1pbmxpbmUtaGJveCB7XG4gICAgLyogSG9yaXpvbnRhbCB3aWRnZXRzICovXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xufVxuXG4ud2lkZ2V0LWlubGluZS12Ym94IHtcbiAgICAvKiBWZXJ0aWNhbCBXaWRnZXRzICovXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLndpZGdldC1ib3gge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtYXJnaW46IDA7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi53aWRnZXQtZ3JpZGJveCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIG1hcmdpbjogMDtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cblxuLndpZGdldC1oYm94IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xufVxuXG4ud2lkZ2V0LXZib3gge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi8qIEdlbmVyYWwgQnV0dG9uIFN0eWxpbmcgKi9cblxuLmp1cHl0ZXItYnV0dG9uIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gICAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgICBwYWRkaW5nLXRvcDogMHB4O1xuICAgIHBhZGRpbmctYm90dG9tOiAwcHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiB2YXIoLS1qcC13aWRnZXRzLWZvbnQtc2l6ZSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xuICAgIGJvcmRlcjogMHB4IHNvbGlkO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG5cbiAgICBjb2xvcjogdmFyKC0tanAtdWktZm9udC1jb2xvcjEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWpwLWxheW91dC1jb2xvcjIpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tanAtYm9yZGVyLWNvbG9yMik7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4uanVweXRlci1idXR0b24gaS5mYSB7XG4gICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1tYXJnaW4pO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uanVweXRlci1idXR0b246ZW1wdHk6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcMjAwYlwiOyAvKiB6ZXJvLXdpZHRoIHNwYWNlICovXG59XG5cbi5qdXB5dGVyLXdpZGdldHMuanVweXRlci1idXR0b246ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLWpwLXdpZGdldHMtZGlzYWJsZWQtb3BhY2l0eSk7XG59XG5cbi5qdXB5dGVyLWJ1dHRvbiBpLmZhLmNlbnRlciB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xufVxuXG4uanVweXRlci1idXR0b246aG92ZXI6ZW5hYmxlZCwgLmp1cHl0ZXItYnV0dG9uOmZvY3VzOmVuYWJsZWQge1xuICAgIC8qIE1EIExpdGUgMmRwIHNoYWRvdyAqL1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgdmFyKC0tbWQtc2hhZG93LWtleS1wZW51bWJyYS1vcGFjaXR5KSksXG4gICAgICAgICAgICAgICAgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCB2YXIoLS1tZC1zaGFkb3cta2V5LXVtYnJhLW9wYWNpdHkpKSxcbiAgICAgICAgICAgICAgICAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIHZhcigtLW1kLXNoYWRvdy1hbWJpZW50LXNoYWRvdy1vcGFjaXR5KSk7XG59XG5cbi5qdXB5dGVyLWJ1dHRvbjphY3RpdmUsIC5qdXB5dGVyLWJ1dHRvbi5tb2QtYWN0aXZlIHtcbiAgICAvKiBNRCBMaXRlIDRkcCBzaGFkb3cgKi9cbiAgICBib3gtc2hhZG93OiAwIDRweCA1cHggMCByZ2JhKDAsIDAsIDAsIHZhcigtLW1kLXNoYWRvdy1rZXktcGVudW1icmEtb3BhY2l0eSkpLFxuICAgICAgICAgICAgICAgIDAgMXB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIHZhcigtLW1kLXNoYWRvdy1hbWJpZW50LXNoYWRvdy1vcGFjaXR5KSksXG4gICAgICAgICAgICAgICAgMCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCB2YXIoLS1tZC1zaGFkb3cta2V5LXVtYnJhLW9wYWNpdHkpKTtcbiAgICBjb2xvcjogdmFyKC0tanAtdWktZm9udC1jb2xvcjEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWpwLWxheW91dC1jb2xvcjMpO1xufVxuXG4uanVweXRlci1idXR0b246Zm9jdXM6ZW5hYmxlZCB7XG4gICAgb3V0bGluZTogMXB4IHNvbGlkIHZhcigtLWpwLXdpZGdldHMtaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yKTtcbn1cblxuLyogQnV0dG9uIFwiUHJpbWFyeVwiIFN0eWxpbmcgKi9cblxuLmp1cHl0ZXItYnV0dG9uLm1vZC1wcmltYXJ5IHtcbiAgICBjb2xvcjogdmFyKC0tanAtdWktaW52ZXJzZS1mb250LWNvbG9yMSwgdmFyKC0tanAtaW52ZXJzZS11aS1mb250LWNvbG9yMSkpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWpwLWJyYW5kLWNvbG9yMSk7XG59XG5cbi5qdXB5dGVyLWJ1dHRvbi5tb2QtcHJpbWFyeS5tb2QtYWN0aXZlIHtcbiAgICBjb2xvcjogdmFyKC0tanAtdWktaW52ZXJzZS1mb250LWNvbG9yMCwgdmFyKC0tanAtaW52ZXJzZS11aS1mb250LWNvbG9yMCkpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWpwLWJyYW5kLWNvbG9yMCk7XG59XG5cbi5qdXB5dGVyLWJ1dHRvbi5tb2QtcHJpbWFyeTphY3RpdmUge1xuICAgIGNvbG9yOiB2YXIoLS1qcC11aS1pbnZlcnNlLWZvbnQtY29sb3IwLCB2YXIoLS1qcC1pbnZlcnNlLXVpLWZvbnQtY29sb3IwKSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tanAtYnJhbmQtY29sb3IwKTtcbn1cblxuLyogQnV0dG9uIFwiU3VjY2Vzc1wiIFN0eWxpbmcgKi9cblxuLmp1cHl0ZXItYnV0dG9uLm1vZC1zdWNjZXNzIHtcbiAgICBjb2xvcjogdmFyKC0tanAtdWktaW52ZXJzZS1mb250LWNvbG9yMSwgdmFyKC0tanAtaW52ZXJzZS11aS1mb250LWNvbG9yMSkpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWpwLXN1Y2Nlc3MtY29sb3IxKTtcbn1cblxuLmp1cHl0ZXItYnV0dG9uLm1vZC1zdWNjZXNzLm1vZC1hY3RpdmUge1xuICAgIGNvbG9yOiB2YXIoLS1qcC11aS1pbnZlcnNlLWZvbnQtY29sb3IwLCB2YXIoLS1qcC1pbnZlcnNlLXVpLWZvbnQtY29sb3IwKSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tanAtc3VjY2Vzcy1jb2xvcjApO1xufVxuXG4uanVweXRlci1idXR0b24ubW9kLXN1Y2Nlc3M6YWN0aXZlIHtcbiAgICBjb2xvcjogdmFyKC0tanAtdWktaW52ZXJzZS1mb250LWNvbG9yMCwgdmFyKC0tanAtaW52ZXJzZS11aS1mb250LWNvbG9yMCkpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWpwLXN1Y2Nlc3MtY29sb3IwKTtcbn1cblxuIC8qIEJ1dHRvbiBcIkluZm9cIiBTdHlsaW5nICovXG5cbi5qdXB5dGVyLWJ1dHRvbi5tb2QtaW5mbyB7XG4gICAgY29sb3I6IHZhcigtLWpwLXVpLWludmVyc2UtZm9udC1jb2xvcjEsIHZhcigtLWpwLWludmVyc2UtdWktZm9udC1jb2xvcjEpKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1qcC1pbmZvLWNvbG9yMSk7XG59XG5cbi5qdXB5dGVyLWJ1dHRvbi5tb2QtaW5mby5tb2QtYWN0aXZlIHtcbiAgICBjb2xvcjogdmFyKC0tanAtdWktaW52ZXJzZS1mb250LWNvbG9yMCwgdmFyKC0tanAtaW52ZXJzZS11aS1mb250LWNvbG9yMCkpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWpwLWluZm8tY29sb3IwKTtcbn1cblxuLmp1cHl0ZXItYnV0dG9uLm1vZC1pbmZvOmFjdGl2ZSB7XG4gICAgY29sb3I6IHZhcigtLWpwLXVpLWludmVyc2UtZm9udC1jb2xvcjAsIHZhcigtLWpwLWludmVyc2UtdWktZm9udC1jb2xvcjApKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1qcC1pbmZvLWNvbG9yMCk7XG59XG5cbi8qIEJ1dHRvbiBcIldhcm5pbmdcIiBTdHlsaW5nICovXG5cbi5qdXB5dGVyLWJ1dHRvbi5tb2Qtd2FybmluZyB7XG4gICAgY29sb3I6IHZhcigtLWpwLXVpLWludmVyc2UtZm9udC1jb2xvcjEsIHZhcigtLWpwLWludmVyc2UtdWktZm9udC1jb2xvcjEpKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1qcC13YXJuLWNvbG9yMSk7XG59XG5cbi5qdXB5dGVyLWJ1dHRvbi5tb2Qtd2FybmluZy5tb2QtYWN0aXZlIHtcbiAgICBjb2xvcjogdmFyKC0tanAtdWktaW52ZXJzZS1mb250LWNvbG9yMCwgdmFyKC0tanAtaW52ZXJzZS11aS1mb250LWNvbG9yMCkpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWpwLXdhcm4tY29sb3IwKTtcbn1cblxuLmp1cHl0ZXItYnV0dG9uLm1vZC13YXJuaW5nOmFjdGl2ZSB7XG4gICAgY29sb3I6IHZhcigtLWpwLXVpLWludmVyc2UtZm9udC1jb2xvcjAsIHZhcigtLWpwLWludmVyc2UtdWktZm9udC1jb2xvcjApKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1qcC13YXJuLWNvbG9yMCk7XG59XG5cbi8qIEJ1dHRvbiBcIkRhbmdlclwiIFN0eWxpbmcgKi9cblxuLmp1cHl0ZXItYnV0dG9uLm1vZC1kYW5nZXIge1xuICAgIGNvbG9yOiB2YXIoLS1qcC11aS1pbnZlcnNlLWZvbnQtY29sb3IxLCB2YXIoLS1qcC1pbnZlcnNlLXVpLWZvbnQtY29sb3IxKSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tanAtZXJyb3ItY29sb3IxKTtcbn1cblxuLmp1cHl0ZXItYnV0dG9uLm1vZC1kYW5nZXIubW9kLWFjdGl2ZSB7XG4gICAgY29sb3I6IHZhcigtLWpwLXVpLWludmVyc2UtZm9udC1jb2xvcjAsIHZhcigtLWpwLWludmVyc2UtdWktZm9udC1jb2xvcjApKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1qcC1lcnJvci1jb2xvcjApO1xufVxuXG4uanVweXRlci1idXR0b24ubW9kLWRhbmdlcjphY3RpdmUge1xuICAgIGNvbG9yOiB2YXIoLS1qcC11aS1pbnZlcnNlLWZvbnQtY29sb3IwLCB2YXIoLS1qcC1pbnZlcnNlLXVpLWZvbnQtY29sb3IwKSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tanAtZXJyb3ItY29sb3IwKTtcbn1cblxuLyogV2lkZ2V0IEJ1dHRvbiwgV2lkZ2V0IFRvZ2dsZSBCdXR0b24sIFdpZGdldCBVcGxvYWQgKi9cblxuLndpZGdldC1idXR0b24sIC53aWRnZXQtdG9nZ2xlLWJ1dHRvbiwgLndpZGdldC11cGxvYWQge1xuICAgIHdpZHRoOiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS13aWR0aC1zaG9ydCk7XG59XG5cbi8qIFdpZGdldCBMYWJlbCBTdHlsaW5nICovXG5cbi8qIE92ZXJyaWRlIEJvb3RzdHJhcCBsYWJlbCBjc3MgKi9cbi5qdXB5dGVyLXdpZGdldHMgbGFiZWwge1xuICAgIG1hcmdpbi1ib3R0b206IGluaXRpYWw7XG59XG5cbi53aWRnZXQtbGFiZWwtYmFzaWMge1xuICAgIC8qIEJhc2ljIExhYmVsICovXG4gICAgY29sb3I6IHZhcigtLWpwLXdpZGdldHMtbGFiZWwtY29sb3IpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tanAtd2lkZ2V0cy1mb250LXNpemUpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtaGVpZ2h0KTtcbn1cblxuLndpZGdldC1sYWJlbCB7XG4gICAgLyogTGFiZWwgKi9cbiAgICBjb2xvcjogdmFyKC0tanAtd2lkZ2V0cy1sYWJlbC1jb2xvcik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1qcC13aWRnZXRzLWZvbnQtc2l6ZSk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xufVxuXG4ud2lkZ2V0LWlubGluZS1oYm94IC53aWRnZXQtbGFiZWwge1xuICAgIC8qIEhvcml6b250YWwgV2lkZ2V0IExhYmVsICovXG4gICAgY29sb3I6IHZhcigtLWpwLXdpZGdldHMtbGFiZWwtY29sb3IpO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIG1hcmdpbi1yaWdodDogY2FsYyggdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtbWFyZ2luKSAqIDIgKTtcbiAgICB3aWR0aDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtbGFiZWwtd2lkdGgpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ud2lkZ2V0LWlubGluZS12Ym94IC53aWRnZXQtbGFiZWwge1xuICAgIC8qIFZlcnRpY2FsIFdpZGdldCBMYWJlbCAqL1xuICAgIGNvbG9yOiB2YXIoLS1qcC13aWRnZXRzLWxhYmVsLWNvbG9yKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWpwLXdpZGdldHMtaW5saW5lLWhlaWdodCk7XG59XG5cbi8qIFdpZGdldCBSZWFkb3V0IFN0eWxpbmcgKi9cblxuLndpZGdldC1yZWFkb3V0IHtcbiAgICBjb2xvcjogdmFyKC0tanAtd2lkZ2V0cy1yZWFkb3V0LWNvbG9yKTtcbiAgICBmb250LXNpemU6IHZhcigtLWpwLXdpZGdldHMtZm9udC1zaXplKTtcbiAgICBoZWlnaHQ6IHZhcigtLWpwLXdpZGdldHMtaW5saW5lLWhlaWdodCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWpwLXdpZGdldHMtaW5saW5lLWhlaWdodCk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLndpZGdldC1yZWFkb3V0Lm92ZXJmbG93IHtcbiAgICAvKiBPdmVyZmxvd2luZyBSZWFkb3V0ICovXG5cbiAgICAvKiBGcm9tIE1hdGVyaWFsIERlc2lnbiBMaXRlXG4gICAgICAgIHNoYWRvdy1rZXktdW1icmEtb3BhY2l0eTogMC4yO1xuICAgICAgICBzaGFkb3cta2V5LXBlbnVtYnJhLW9wYWNpdHk6IDAuMTQ7XG4gICAgICAgIHNoYWRvdy1hbWJpZW50LXNoYWRvdy1vcGFjaXR5OiAwLjEyO1xuICAgICAqL1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjE0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7XG5cbiAgICAtbW96LWJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSxcbiAgICAgICAgICAgICAgICAgICAgIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksXG4gICAgICAgICAgICAgICAgICAgICAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuXG4gICAgYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpLFxuICAgICAgICAgICAgICAgIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksXG4gICAgICAgICAgICAgICAgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLndpZGdldC1pbmxpbmUtaGJveCAud2lkZ2V0LXJlYWRvdXQge1xuICAgIC8qIEhvcml6b250YWwgUmVhZG91dCAqL1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXgtd2lkdGg6IHZhcigtLWpwLXdpZGdldHMtaW5saW5lLXdpZHRoLXNob3J0KTtcbiAgICBtaW4td2lkdGg6IHZhcigtLWpwLXdpZGdldHMtaW5saW5lLXdpZHRoLXRpbnkpO1xuICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1tYXJnaW4pO1xufVxuXG4ud2lkZ2V0LWlubGluZS12Ym94IC53aWRnZXQtcmVhZG91dCB7XG4gICAgLyogVmVydGljYWwgUmVhZG91dCAqL1xuICAgIG1hcmdpbi10b3A6IHZhcigtLWpwLXdpZGdldHMtaW5saW5lLW1hcmdpbik7XG4gICAgLyogYXMgd2lkZSBhcyB0aGUgd2lkZ2V0ICovXG4gICAgd2lkdGg6IGluaGVyaXQ7XG59XG5cbi8qIFdpZGdldCBDaGVja2JveCBTdHlsaW5nICovXG5cbi53aWRnZXQtY2hlY2tib3gge1xuICAgIHdpZHRoOiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS13aWR0aCk7XG4gICAgaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xufVxuXG4ud2lkZ2V0LWNoZWNrYm94IGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgbWFyZ2luOiAwcHggY2FsYyggdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtbWFyZ2luKSAqIDIgKSAwcHggMHB4O1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xuICAgIGZvbnQtc2l6ZTogbGFyZ2U7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbn1cblxuLyogV2lkZ2V0IFZhbGlkIFN0eWxpbmcgKi9cblxuLndpZGdldC12YWxpZCB7XG4gICAgaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xuICAgIHdpZHRoOiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS13aWR0aC1zaG9ydCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1qcC13aWRnZXRzLWZvbnQtc2l6ZSk7XG59XG5cbi53aWRnZXQtdmFsaWQgaTpiZWZvcmUge1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xuICAgIG1hcmdpbi1yaWdodDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtbWFyZ2luKTtcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtbWFyZ2luKTtcbn1cblxuLndpZGdldC12YWxpZC5tb2QtdmFsaWQgaTpiZWZvcmUge1xuICAgIGNvbG9yOiBncmVlbjtcbn1cblxuLndpZGdldC12YWxpZC5tb2QtaW52YWxpZCBpOmJlZm9yZSB7XG4gICAgY29sb3I6IHJlZDtcbn1cblxuLndpZGdldC12YWxpZC5tb2QtdmFsaWQgLndpZGdldC12YWxpZC1yZWFkb3V0IHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiBXaWRnZXQgVGV4dCBhbmQgVGV4dEFyZWEgU3R5aW5nICovXG5cbi53aWRnZXQtdGV4dGFyZWEsIC53aWRnZXQtdGV4dCB7XG4gICAgd2lkdGg6IHZhcigtLWpwLXdpZGdldHMtaW5saW5lLXdpZHRoKTtcbn1cblxuLndpZGdldC10ZXh0IGlucHV0W3R5cGU9XCJ0ZXh0XCJdLCAud2lkZ2V0LXRleHQgaW5wdXRbdHlwZT1cIm51bWJlclwiXSwgLndpZGdldC10ZXh0IGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSB7XG4gICAgaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xufVxuXG4ud2lkZ2V0LXRleHQgaW5wdXRbdHlwZT1cInRleHRcIl06ZGlzYWJsZWQsIC53aWRnZXQtdGV4dCBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmRpc2FibGVkLCAud2lkZ2V0LXRleHQgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOmRpc2FibGVkLCAud2lkZ2V0LXRleHRhcmVhIHRleHRhcmVhOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS1qcC13aWRnZXRzLWRpc2FibGVkLW9wYWNpdHkpO1xufVxuXG4ud2lkZ2V0LXRleHQgaW5wdXRbdHlwZT1cInRleHRcIl0sIC53aWRnZXQtdGV4dCBpbnB1dFt0eXBlPVwibnVtYmVyXCJdLCAud2lkZ2V0LXRleHQgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdLCAud2lkZ2V0LXRleHRhcmVhIHRleHRhcmVhIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJvcmRlcjogdmFyKC0tanAtd2lkZ2V0cy1pbnB1dC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWpwLXdpZGdldHMtaW5wdXQtYm9yZGVyLWNvbG9yKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1qcC13aWRnZXRzLWlucHV0LWJhY2tncm91bmQtY29sb3IpO1xuICAgIGNvbG9yOiB2YXIoLS1qcC13aWRnZXRzLWlucHV0LWNvbG9yKTtcbiAgICBmb250LXNpemU6IHZhcigtLWpwLXdpZGdldHMtZm9udC1zaXplKTtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgbWluLXdpZHRoOiAwOyAvKiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIGZvciB0aGUgZmxleGJveCB0byBzaHJpbmsgdGhpcyBpbnB1dCAqL1xuICAgIGZsZXgtc2hyaW5rOiAxO1xuICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbn1cbiAgICBcbi53aWRnZXQtdGV4dCBpbnB1dFt0eXBlPVwidGV4dFwiXSwgLndpZGdldC10ZXh0IGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSwgLndpZGdldC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgcGFkZGluZzogdmFyKC0tanAtd2lkZ2V0cy1pbnB1dC1wYWRkaW5nKSBjYWxjKCB2YXIoLS1qcC13aWRnZXRzLWlucHV0LXBhZGRpbmcpICogIDIpO1xufVxuXG4ud2lkZ2V0LXRleHQgaW5wdXRbdHlwZT1cIm51bWJlclwiXSB7XG4gICAgcGFkZGluZzogdmFyKC0tanAtd2lkZ2V0cy1pbnB1dC1wYWRkaW5nKSAwIHZhcigtLWpwLXdpZGdldHMtaW5wdXQtcGFkZGluZykgY2FsYyh2YXIoLS1qcC13aWRnZXRzLWlucHV0LXBhZGRpbmcpICogIDIpO1xufVxuXG4ud2lkZ2V0LXRleHRhcmVhIHRleHRhcmVhIHtcbiAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgd2lkdGg6IGluaGVyaXQ7XG59XG5cbi53aWRnZXQtdGV4dCBpbnB1dDpmb2N1cywgLndpZGdldC10ZXh0YXJlYSB0ZXh0YXJlYTpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1qcC13aWRnZXRzLWlucHV0LWZvY3VzLWJvcmRlci1jb2xvcik7XG59XG5cbi8qIFdpZGdldCBTbGlkZXIgKi9cblxuLndpZGdldC1zbGlkZXIgLnVpLXNsaWRlciB7XG4gICAgLyogU2xpZGVyIFRyYWNrICovXG4gICAgYm9yZGVyOiB2YXIoLS1qcC13aWRnZXRzLXNsaWRlci1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWpwLWxheW91dC1jb2xvcjMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWpwLWxheW91dC1jb2xvcjMpO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJvcmRlci1yYWRpdXM6IDBweDtcbn1cblxuLndpZGdldC1zbGlkZXIgLnVpLXNsaWRlciAudWktc2xpZGVyLWhhbmRsZSB7XG4gICAgLyogU2xpZGVyIEhhbmRsZSAqL1xuICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsgLyogZm9jdXNlZCBzbGlkZXIgaGFuZGxlcyBhcmUgY29sb3JlZCAtIHNlZSBiZWxvdyAqL1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1qcC13aWRnZXRzLXNsaWRlci1oYW5kbGUtYmFja2dyb3VuZC1jb2xvcik7XG4gICAgYm9yZGVyOiB2YXIoLS1qcC13aWRnZXRzLXNsaWRlci1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWpwLXdpZGdldHMtc2xpZGVyLWhhbmRsZS1ib3JkZXItY29sb3IpO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgei1pbmRleDogMTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOyAvKiBPdmVycmlkZSBqcXVlcnktdWkgKi9cbn1cblxuLyogT3ZlcnJpZGUganF1ZXJ5LXVpICovXG4ud2lkZ2V0LXNsaWRlciAudWktc2xpZGVyIC51aS1zbGlkZXItaGFuZGxlOmhvdmVyLCAud2lkZ2V0LXNsaWRlciAudWktc2xpZGVyIC51aS1zbGlkZXItaGFuZGxlOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1qcC13aWRnZXRzLXNsaWRlci1hY3RpdmUtaGFuZGxlLWNvbG9yKTtcbiAgICBib3JkZXI6IHZhcigtLWpwLXdpZGdldHMtc2xpZGVyLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tanAtd2lkZ2V0cy1zbGlkZXItYWN0aXZlLWhhbmRsZS1jb2xvcik7XG59XG5cbi53aWRnZXQtc2xpZGVyIC51aS1zbGlkZXIgLnVpLXNsaWRlci1oYW5kbGU6YWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1qcC13aWRnZXRzLXNsaWRlci1hY3RpdmUtaGFuZGxlLWNvbG9yKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWpwLXdpZGdldHMtc2xpZGVyLWFjdGl2ZS1oYW5kbGUtY29sb3IpO1xuICAgIHotaW5kZXg6IDI7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIpO1xufVxuXG4ud2lkZ2V0LXNsaWRlciAgLnVpLXNsaWRlciAudWktc2xpZGVyLXJhbmdlIHtcbiAgICAvKiBJbnRlcnZhbCBiZXR3ZWVuIHRoZSB0d28gc3BlY2lmaWVkIHZhbHVlIG9mIGEgZG91YmxlIHNsaWRlciAqL1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1qcC13aWRnZXRzLXNsaWRlci1hY3RpdmUtaGFuZGxlLWNvbG9yKTtcbiAgICB6LWluZGV4OiAwO1xufVxuXG4vKiBTaGFwZXMgb2YgU2xpZGVyIEhhbmRsZXMgKi9cblxuLndpZGdldC1oc2xpZGVyIC51aS1zbGlkZXIgLnVpLXNsaWRlci1oYW5kbGUge1xuICAgIHdpZHRoOiB2YXIoLS1qcC13aWRnZXRzLXNsaWRlci1oYW5kbGUtc2l6ZSk7XG4gICAgaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLXNsaWRlci1oYW5kbGUtc2l6ZSk7XG4gICAgbWFyZ2luLXRvcDogY2FsYygodmFyKC0tanAtd2lkZ2V0cy1zbGlkZXItdHJhY2stdGhpY2tuZXNzKSAtIHZhcigtLWpwLXdpZGdldHMtc2xpZGVyLWhhbmRsZS1zaXplKSkgLyAyIC0gdmFyKC0tanAtd2lkZ2V0cy1zbGlkZXItYm9yZGVyLXdpZHRoKSk7XG4gICAgbWFyZ2luLWxlZnQ6IGNhbGModmFyKC0tanAtd2lkZ2V0cy1zbGlkZXItaGFuZGxlLXNpemUpIC8gLTIgKyB2YXIoLS1qcC13aWRnZXRzLXNsaWRlci1ib3JkZXItd2lkdGgpKTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgdG9wOiAwO1xufVxuXG4ud2lkZ2V0LXZzbGlkZXIgLnVpLXNsaWRlciAudWktc2xpZGVyLWhhbmRsZSB7XG4gICAgd2lkdGg6IHZhcigtLWpwLXdpZGdldHMtc2xpZGVyLWhhbmRsZS1zaXplKTtcbiAgICBoZWlnaHQ6IHZhcigtLWpwLXdpZGdldHMtc2xpZGVyLWhhbmRsZS1zaXplKTtcbiAgICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLWpwLXdpZGdldHMtc2xpZGVyLWhhbmRsZS1zaXplKSAvIC0yICsgdmFyKC0tanAtd2lkZ2V0cy1zbGlkZXItYm9yZGVyLXdpZHRoKSk7XG4gICAgbWFyZ2luLWxlZnQ6IGNhbGMoKHZhcigtLWpwLXdpZGdldHMtc2xpZGVyLXRyYWNrLXRoaWNrbmVzcykgLSB2YXIoLS1qcC13aWRnZXRzLXNsaWRlci1oYW5kbGUtc2l6ZSkpIC8gMiAtIHZhcigtLWpwLXdpZGdldHMtc2xpZGVyLWJvcmRlci13aWR0aCkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBsZWZ0OiAwO1xufVxuXG4ud2lkZ2V0LWhzbGlkZXIgLnVpLXNsaWRlciAudWktc2xpZGVyLXJhbmdlIHtcbiAgICBoZWlnaHQ6IGNhbGMoIHZhcigtLWpwLXdpZGdldHMtc2xpZGVyLXRyYWNrLXRoaWNrbmVzcykgKiAyICk7XG4gICAgbWFyZ2luLXRvcDogY2FsYygodmFyKC0tanAtd2lkZ2V0cy1zbGlkZXItdHJhY2stdGhpY2tuZXNzKSAtIHZhcigtLWpwLXdpZGdldHMtc2xpZGVyLXRyYWNrLXRoaWNrbmVzcykgKiAyICkgLyAyIC0gdmFyKC0tanAtd2lkZ2V0cy1zbGlkZXItYm9yZGVyLXdpZHRoKSk7XG59XG5cbi53aWRnZXQtdnNsaWRlciAudWktc2xpZGVyIC51aS1zbGlkZXItcmFuZ2Uge1xuICAgIHdpZHRoOiBjYWxjKCB2YXIoLS1qcC13aWRnZXRzLXNsaWRlci10cmFjay10aGlja25lc3MpICogMiApO1xuICAgIG1hcmdpbi1sZWZ0OiBjYWxjKCh2YXIoLS1qcC13aWRnZXRzLXNsaWRlci10cmFjay10aGlja25lc3MpIC0gdmFyKC0tanAtd2lkZ2V0cy1zbGlkZXItdHJhY2stdGhpY2tuZXNzKSAqIDIgKSAvIDIgLSB2YXIoLS1qcC13aWRnZXRzLXNsaWRlci1ib3JkZXItd2lkdGgpKTtcbn1cblxuLyogSG9yaXpvbnRhbCBTbGlkZXIgKi9cblxuLndpZGdldC1oc2xpZGVyIHtcbiAgICB3aWR0aDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtd2lkdGgpO1xuICAgIGhlaWdodDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtaGVpZ2h0KTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtaGVpZ2h0KTtcblxuICAgIC8qIE92ZXJyaWRlIHRoZSBhbGlnbi1pdGVtcyBiYXNlbGluZS4gVGhpcyB3YXksIHRoZSBkZXNjcmlwdGlvbiBhbmQgcmVhZG91dFxuICAgIHN0aWxsIHNlZW0gdG8gYWxpZ24gdGhlaXIgYmFzZWxpbmUgcHJvcGVybHksIGFuZCB3ZSBkb24ndCBoYXZlIHRvIGhhdmVcbiAgICBhbGlnbi1zZWxmOiBzdHJldGNoIGluIHRoZSAuc2xpZGVyLWNvbnRhaW5lci4gKi9cbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ud2lkZ2V0cy1zbGlkZXIgLnNsaWRlci1jb250YWluZXIge1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4ud2lkZ2V0LWhzbGlkZXIgLnNsaWRlci1jb250YWluZXIge1xuICAgIGhlaWdodDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtaGVpZ2h0KTtcbiAgICBtYXJnaW4tbGVmdDogY2FsYyh2YXIoLS1qcC13aWRnZXRzLXNsaWRlci1oYW5kbGUtc2l6ZSkgLyAyIC0gMiAqIHZhcigtLWpwLXdpZGdldHMtc2xpZGVyLWJvcmRlci13aWR0aCkpO1xuICAgIG1hcmdpbi1yaWdodDogY2FsYyh2YXIoLS1qcC13aWRnZXRzLXNsaWRlci1oYW5kbGUtc2l6ZSkgLyAyIC0gMiAqIHZhcigtLWpwLXdpZGdldHMtc2xpZGVyLWJvcmRlci13aWR0aCkpO1xuICAgIGZsZXg6IDEgMSB2YXIoLS1qcC13aWRnZXRzLWlubGluZS13aWR0aC1zaG9ydCk7XG59XG5cbi53aWRnZXQtaHNsaWRlciAudWktc2xpZGVyIHtcbiAgICAvKiBJbm5lciwgaW52aXNpYmxlIHNsaWRlIGRpdiAqL1xuICAgIGhlaWdodDogdmFyKC0tanAtd2lkZ2V0cy1zbGlkZXItdHJhY2stdGhpY2tuZXNzKTtcbiAgICBtYXJnaW4tdG9wOiBjYWxjKCh2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpIC0gdmFyKC0tanAtd2lkZ2V0cy1zbGlkZXItdHJhY2stdGhpY2tuZXNzKSkgLyAyKTtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLyogVmVydGljYWwgU2xpZGVyICovXG5cbi53aWRnZXQtdmJveCAud2lkZ2V0LWxhYmVsIHtcbiAgICBoZWlnaHQ6IHZhcigtLWpwLXdpZGdldHMtaW5saW5lLWhlaWdodCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWpwLXdpZGdldHMtaW5saW5lLWhlaWdodCk7XG59XG5cbi53aWRnZXQtdnNsaWRlciB7XG4gICAgLyogVmVydGljYWwgU2xpZGVyICovXG4gICAgaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLXZlcnRpY2FsLWhlaWdodCk7XG4gICAgd2lkdGg6IHZhcigtLWpwLXdpZGdldHMtaW5saW5lLXdpZHRoLXRpbnkpO1xufVxuXG4ud2lkZ2V0LXZzbGlkZXIgLnNsaWRlci1jb250YWluZXIge1xuICAgIGZsZXg6IDEgMSB2YXIoLS1qcC13aWRnZXRzLWlubGluZS13aWR0aC1zaG9ydCk7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi1ib3R0b206IGNhbGModmFyKC0tanAtd2lkZ2V0cy1zbGlkZXItaGFuZGxlLXNpemUpIC8gMiAtIDIgKiB2YXIoLS1qcC13aWRnZXRzLXNsaWRlci1ib3JkZXItd2lkdGgpKTtcbiAgICBtYXJnaW4tdG9wOiBjYWxjKHZhcigtLWpwLXdpZGdldHMtc2xpZGVyLWhhbmRsZS1zaXplKSAvIDIgLSAyICogdmFyKC0tanAtd2lkZ2V0cy1zbGlkZXItYm9yZGVyLXdpZHRoKSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4ud2lkZ2V0LXZzbGlkZXIgLnVpLXNsaWRlci12ZXJ0aWNhbCB7XG4gICAgLyogSW5uZXIsIGludmlzaWJsZSBzbGlkZSBkaXYgKi9cbiAgICB3aWR0aDogdmFyKC0tanAtd2lkZ2V0cy1zbGlkZXItdHJhY2stdGhpY2tuZXNzKTtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4vKiBXaWRnZXQgUHJvZ3Jlc3MgU3R5bGluZyAqL1xuXG4ucHJvZ3Jlc3MtYmFyIHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7XG4gICAgLW1vei10cmFuc2l0aW9uOiBub25lO1xuICAgIC1tcy10cmFuc2l0aW9uOiBub25lO1xuICAgIC1vLXRyYW5zaXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbn1cblxuLnByb2dyZXNzLWJhciB7XG4gICAgaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xufVxuXG4ucHJvZ3Jlc3MtYmFyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1qcC1icmFuZC1jb2xvcjEpO1xufVxuXG4ucHJvZ3Jlc3MtYmFyLXN1Y2Nlc3Mge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWpwLXN1Y2Nlc3MtY29sb3IxKTtcbn1cblxuLnByb2dyZXNzLWJhci1pbmZvIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1qcC1pbmZvLWNvbG9yMSk7XG59XG5cbi5wcm9ncmVzcy1iYXItd2FybmluZyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tanAtd2Fybi1jb2xvcjEpO1xufVxuXG4ucHJvZ3Jlc3MtYmFyLWRhbmdlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tanAtZXJyb3ItY29sb3IxKTtcbn1cblxuLnByb2dyZXNzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1qcC1sYXlvdXQtY29sb3IyKTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbn1cblxuLyogSG9yaXNvbnRhbCBQcm9ncmVzcyAqL1xuXG4ud2lkZ2V0LWhwcm9ncmVzcyB7XG4gICAgLyogUHJvZ3Jlc3MgQmFyICovXG4gICAgaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xuICAgIHdpZHRoOiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS13aWR0aCk7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxufVxuXG4ud2lkZ2V0LWhwcm9ncmVzcyAucHJvZ3Jlc3Mge1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1qcC13aWRnZXRzLWlucHV0LXBhZGRpbmcpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWpwLXdpZGdldHMtaW5wdXQtcGFkZGluZyk7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICAvKiBPdmVycmlkZSBib290c3RyYXAgc3R5bGUgKi9cbiAgICBoZWlnaHQ6IGluaXRpYWw7XG59XG5cbi8qIFZlcnRpY2FsIFByb2dyZXNzICovXG5cbi53aWRnZXQtdnByb2dyZXNzIHtcbiAgICBoZWlnaHQ6IHZhcigtLWpwLXdpZGdldHMtdmVydGljYWwtaGVpZ2h0KTtcbiAgICB3aWR0aDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtd2lkdGgtdGlueSk7XG59XG5cbi53aWRnZXQtdnByb2dyZXNzIC5wcm9ncmVzcyB7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIHdpZHRoOiB2YXIoLS1qcC13aWRnZXRzLXByb2dyZXNzLXRoaWNrbmVzcyk7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi8qIFNlbGVjdCBXaWRnZXQgU3R5bGluZyAqL1xuXG4ud2lkZ2V0LWRyb3Bkb3duIHtcbiAgICBoZWlnaHQ6IHZhcigtLWpwLXdpZGdldHMtaW5saW5lLWhlaWdodCk7XG4gICAgd2lkdGg6IHZhcigtLWpwLXdpZGdldHMtaW5saW5lLXdpZHRoKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtaGVpZ2h0KTtcbn1cblxuLndpZGdldC1kcm9wZG93biA+IHNlbGVjdCB7XG4gICAgcGFkZGluZy1yaWdodDogMjBweDtcbiAgICBib3JkZXI6IHZhcigtLWpwLXdpZGdldHMtaW5wdXQtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1qcC13aWRnZXRzLWlucHV0LWJvcmRlci1jb2xvcik7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgZmxleDogMSAxIHZhcigtLWpwLXdpZGdldHMtaW5saW5lLXdpZHRoLXNob3J0KTtcbiAgICBtaW4td2lkdGg6IDA7IC8qIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgZm9yIHRoZSBmbGV4Ym94IHRvIHNocmluayB0aGlzIGlucHV0ICovXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1qcC13aWRnZXRzLWlucHV0LWJhY2tncm91bmQtY29sb3IpO1xuICAgIGNvbG9yOiB2YXIoLS1qcC13aWRnZXRzLWlucHV0LWNvbG9yKTtcbiAgICBmb250LXNpemU6IHZhcigtLWpwLXdpZGdldHMtZm9udC1zaXplKTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgIHBhZGRpbmctbGVmdDogY2FsYyggdmFyKC0tanAtd2lkZ2V0cy1pbnB1dC1wYWRkaW5nKSAqIDIpO1xuXHRhcHBlYXJhbmNlOiBub25lO1xuXHQtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG5cdC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRiYWNrZ3JvdW5kLXNpemU6IDIwcHg7XG5cdGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1qcC13aWRnZXRzLWRyb3Bkb3duLWFycm93KTtcbn1cbi53aWRnZXQtZHJvcGRvd24gPiBzZWxlY3Q6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tanAtd2lkZ2V0cy1pbnB1dC1mb2N1cy1ib3JkZXItY29sb3IpO1xufVxuXG4ud2lkZ2V0LWRyb3Bkb3duID4gc2VsZWN0OmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS1qcC13aWRnZXRzLWRpc2FibGVkLW9wYWNpdHkpO1xufVxuXG4vKiBUbyBkaXNhYmxlIHRoZSBkb3R0ZWQgYm9yZGVyIGluIEZpcmVmb3ggYXJvdW5kIHNlbGVjdCBjb250cm9scy5cbiAgIFNlZSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xODg1MzAwMiAqL1xuLndpZGdldC1kcm9wZG93biA+IHNlbGVjdDotbW96LWZvY3VzcmluZyB7XG4gICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRleHQtc2hhZG93OiAwIDAgMCAjMDAwO1xufVxuXG4vKiBTZWxlY3QgYW5kIFNlbGVjdE11bHRpcGxlICovXG5cbi53aWRnZXQtc2VsZWN0IHtcbiAgICB3aWR0aDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtd2lkdGgpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xuXG4gICAgLyogQmVjYXVzZSBGaXJlZm94IGRlZmluZXMgdGhlIGJhc2VsaW5lIG9mIGEgc2VsZWN0IGFzIHRoZSBib3R0b20gb2YgdGhlXG4gICAgY29udHJvbCwgd2UgYWxpZ24gdGhlIGVudGlyZSBjb250cm9sIHRvIHRoZSB0b3AgYW5kIGFkZCBwYWRkaW5nIHRvIHRoZVxuICAgIHNlbGVjdCB0byBnZXQgYW4gYXBwcm94aW1hdGUgZmlyc3QgbGluZSBiYXNlbGluZSBhbGlnbm1lbnQuICovXG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG59XG5cbi53aWRnZXQtc2VsZWN0ID4gc2VsZWN0IHtcbiAgICBib3JkZXI6IHZhcigtLWpwLXdpZGdldHMtaW5wdXQtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1qcC13aWRnZXRzLWlucHV0LWJvcmRlci1jb2xvcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tanAtd2lkZ2V0cy1pbnB1dC1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tanAtd2lkZ2V0cy1pbnB1dC1jb2xvcik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1qcC13aWRnZXRzLWZvbnQtc2l6ZSk7XG4gICAgZmxleDogMSAxIHZhcigtLWpwLXdpZGdldHMtaW5saW5lLXdpZHRoLXNob3J0KTtcbiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgaGVpZ2h0OiBpbmhlcml0O1xuXG4gICAgLyogQmVjYXVzZSBGaXJlZm94IGRlZmluZXMgdGhlIGJhc2VsaW5lIG9mIGEgc2VsZWN0IGFzIHRoZSBib3R0b20gb2YgdGhlXG4gICAgY29udHJvbCwgd2UgYWxpZ24gdGhlIGVudGlyZSBjb250cm9sIHRvIHRoZSB0b3AgYW5kIGFkZCBwYWRkaW5nIHRvIHRoZVxuICAgIHNlbGVjdCB0byBnZXQgYW4gYXBwcm94aW1hdGUgZmlyc3QgbGluZSBiYXNlbGluZSBhbGlnbm1lbnQuICovXG4gICAgcGFkZGluZy10b3A6IDVweDtcbn1cblxuLndpZGdldC1zZWxlY3QgPiBzZWxlY3Q6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tanAtd2lkZ2V0cy1pbnB1dC1mb2N1cy1ib3JkZXItY29sb3IpO1xufVxuXG4ud2lnZXQtc2VsZWN0ID4gc2VsZWN0ID4gb3B0aW9uIHtcbiAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLWpwLXdpZGdldHMtaW5wdXQtcGFkZGluZyk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWpwLXdpZGdldHMtaW5saW5lLWhlaWdodCk7XG4gICAgLyogbGluZS1oZWlnaHQgZG9lc24ndCB3b3JrIG9uIHNvbWUgYnJvd3NlcnMgZm9yIHNlbGVjdCBvcHRpb25zICovXG4gICAgcGFkZGluZy10b3A6IGNhbGModmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtaGVpZ2h0KS12YXIoLS1qcC13aWRnZXRzLWZvbnQtc2l6ZSkvMik7XG4gICAgcGFkZGluZy1ib3R0b206IGNhbGModmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtaGVpZ2h0KS12YXIoLS1qcC13aWRnZXRzLWZvbnQtc2l6ZSkvMik7XG59XG5cblxuXG4vKiBUb2dnbGUgQnV0dG9ucyBTdHlsaW5nICovXG5cbi53aWRnZXQtdG9nZ2xlLWJ1dHRvbnMge1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xufVxuXG4ud2lkZ2V0LXRvZ2dsZS1idXR0b25zIC53aWRnZXQtdG9nZ2xlLWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IHZhcigtLWpwLXdpZGdldHMtbWFyZ2luKTtcbiAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLWpwLXdpZGdldHMtbWFyZ2luKTtcbn1cblxuLndpZGdldC10b2dnbGUtYnV0dG9ucyAuanVweXRlci1idXR0b246ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLWpwLXdpZGdldHMtZGlzYWJsZWQtb3BhY2l0eSk7XG59XG5cbi8qIFJhZGlvIEJ1dHRvbnMgU3R5bGluZyAqL1xuXG4ud2lkZ2V0LXJhZGlvIHtcbiAgICB3aWR0aDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtd2lkdGgpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xufVxuXG4ud2lkZ2V0LXJhZGlvLWJveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWpwLXdpZGdldHMtcmFkaW8taXRlbS1oZWlnaHQtYWRqdXN0bWVudCk7XG59XG5cbi53aWRnZXQtcmFkaW8tYm94IGxhYmVsIHtcbiAgICBoZWlnaHQ6IHZhcigtLWpwLXdpZGdldHMtcmFkaW8taXRlbS1oZWlnaHQpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLXJhZGlvLWl0ZW0taGVpZ2h0KTtcbiAgICBmb250LXNpemU6IHZhcigtLWpwLXdpZGdldHMtZm9udC1zaXplKTtcbn1cblxuLndpZGdldC1yYWRpby1ib3ggaW5wdXQge1xuICAgIGhlaWdodDogdmFyKC0tanAtd2lkZ2V0cy1yYWRpby1pdGVtLWhlaWdodCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWpwLXdpZGdldHMtcmFkaW8taXRlbS1oZWlnaHQpO1xuICAgIG1hcmdpbjogMCBjYWxjKCB2YXIoLS1qcC13aWRnZXRzLWlucHV0LXBhZGRpbmcpICogMiApIDAgMXB4O1xuICAgIGZsb2F0OiBsZWZ0O1xufVxuXG4vKiBDb2xvciBQaWNrZXIgU3R5bGluZyAqL1xuXG4ud2lkZ2V0LWNvbG9ycGlja2VyIHtcbiAgICB3aWR0aDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtd2lkdGgpO1xuICAgIGhlaWdodDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtaGVpZ2h0KTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtaGVpZ2h0KTtcbn1cblxuLndpZGdldC1jb2xvcnBpY2tlciA+IC53aWRnZXQtY29sb3JwaWNrZXItaW5wdXQge1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBmbGV4LXNocmluazogMTtcbiAgICBtaW4td2lkdGg6IHZhcigtLWpwLXdpZGdldHMtaW5saW5lLXdpZHRoLXRpbnkpO1xufVxuXG4ud2lkZ2V0LWNvbG9ycGlja2VyIGlucHV0W3R5cGU9XCJjb2xvclwiXSB7XG4gICAgd2lkdGg6IHZhcigtLWpwLXdpZGdldHMtaW5saW5lLWhlaWdodCk7XG4gICAgaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xuICAgIHBhZGRpbmc6IDAgMnB4OyAvKiBtYWtlIHRoZSBjb2xvciBzcXVhcmUgYWN0dWFsbHkgc3F1YXJlIG9uIENocm9tZSBvbiBPUyBYICovXG4gICAgYmFja2dyb3VuZDogdmFyKC0tanAtd2lkZ2V0cy1pbnB1dC1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tanAtd2lkZ2V0cy1pbnB1dC1jb2xvcik7XG4gICAgYm9yZGVyOiB2YXIoLS1qcC13aWRnZXRzLWlucHV0LWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tanAtd2lkZ2V0cy1pbnB1dC1ib3JkZXItY29sb3IpO1xuICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgIGZsZXgtZ3JvdzogMDtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4ud2lkZ2V0LWNvbG9ycGlja2VyLmNvbmNpc2UgaW5wdXRbdHlwZT1cImNvbG9yXCJdIHtcbiAgICBib3JkZXItbGVmdDogdmFyKC0tanAtd2lkZ2V0cy1pbnB1dC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWpwLXdpZGdldHMtaW5wdXQtYm9yZGVyLWNvbG9yKTtcbn1cblxuLndpZGdldC1jb2xvcnBpY2tlciBpbnB1dFt0eXBlPVwiY29sb3JcIl06Zm9jdXMsIC53aWRnZXQtY29sb3JwaWNrZXIgaW5wdXRbdHlwZT1cInRleHRcIl06Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tanAtd2lkZ2V0cy1pbnB1dC1mb2N1cy1ib3JkZXItY29sb3IpO1xufVxuXG4ud2lkZ2V0LWNvbG9ycGlja2VyIGlucHV0W3R5cGU9XCJ0ZXh0XCJdIHtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtaGVpZ2h0KTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtaGVpZ2h0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1qcC13aWRnZXRzLWlucHV0LWJhY2tncm91bmQtY29sb3IpO1xuICAgIGNvbG9yOiB2YXIoLS1qcC13aWRnZXRzLWlucHV0LWNvbG9yKTtcbiAgICBib3JkZXI6IHZhcigtLWpwLXdpZGdldHMtaW5wdXQtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1qcC13aWRnZXRzLWlucHV0LWJvcmRlci1jb2xvcik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1qcC13aWRnZXRzLWZvbnQtc2l6ZSk7XG4gICAgcGFkZGluZzogdmFyKC0tanAtd2lkZ2V0cy1pbnB1dC1wYWRkaW5nKSBjYWxjKCB2YXIoLS1qcC13aWRnZXRzLWlucHV0LXBhZGRpbmcpICogIDIgKTtcbiAgICBtaW4td2lkdGg6IDA7IC8qIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgZm9yIHRoZSBmbGV4Ym94IHRvIHNocmluayB0aGlzIGlucHV0ICovXG4gICAgZmxleC1zaHJpbms6IDE7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLndpZGdldC1jb2xvcnBpY2tlciBpbnB1dFt0eXBlPVwidGV4dFwiXTpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tanAtd2lkZ2V0cy1kaXNhYmxlZC1vcGFjaXR5KTtcbn1cblxuLyogRGF0ZSBQaWNrZXIgU3R5bGluZyAqL1xuXG4ud2lkZ2V0LWRhdGVwaWNrZXIge1xuICAgIHdpZHRoOiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS13aWR0aCk7XG4gICAgaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWlubGluZS1oZWlnaHQpO1xufVxuXG4ud2lkZ2V0LWRhdGVwaWNrZXIgaW5wdXRbdHlwZT1cImRhdGVcIl0ge1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBmbGV4LXNocmluazogMTtcbiAgICBtaW4td2lkdGg6IDA7IC8qIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgZm9yIHRoZSBmbGV4Ym94IHRvIHNocmluayB0aGlzIGlucHV0ICovXG4gICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtaGVpZ2h0KTtcbiAgICBib3JkZXI6IHZhcigtLWpwLXdpZGdldHMtaW5wdXQtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1qcC13aWRnZXRzLWlucHV0LWJvcmRlci1jb2xvcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tanAtd2lkZ2V0cy1pbnB1dC1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tanAtd2lkZ2V0cy1pbnB1dC1jb2xvcik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1qcC13aWRnZXRzLWZvbnQtc2l6ZSk7XG4gICAgcGFkZGluZzogdmFyKC0tanAtd2lkZ2V0cy1pbnB1dC1wYWRkaW5nKSBjYWxjKCB2YXIoLS1qcC13aWRnZXRzLWlucHV0LXBhZGRpbmcpICogIDIgKTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4ud2lkZ2V0LWRhdGVwaWNrZXIgaW5wdXRbdHlwZT1cImRhdGVcIl06Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tanAtd2lkZ2V0cy1pbnB1dC1mb2N1cy1ib3JkZXItY29sb3IpO1xufVxuXG4ud2lkZ2V0LWRhdGVwaWNrZXIgaW5wdXRbdHlwZT1cImRhdGVcIl06aW52YWxpZCB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1qcC13YXJuLWNvbG9yMSk7XG59XG5cbi53aWRnZXQtZGF0ZXBpY2tlciBpbnB1dFt0eXBlPVwiZGF0ZVwiXTpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tanAtd2lkZ2V0cy1kaXNhYmxlZC1vcGFjaXR5KTtcbn1cblxuLyogUGxheSBXaWRnZXQgKi9cblxuLndpZGdldC1wbGF5IHtcbiAgICB3aWR0aDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtd2lkdGgtc2hvcnQpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG59XG5cbi53aWRnZXQtcGxheSAuanVweXRlci1idXR0b24ge1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBoZWlnaHQ6IGF1dG87XG59XG5cbi53aWRnZXQtcGxheSAuanVweXRlci1idXR0b246ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLWpwLXdpZGdldHMtZGlzYWJsZWQtb3BhY2l0eSk7XG59XG5cbi8qIFRhYiBXaWRnZXQgKi9cblxuLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciB7XG4gICAgLyogTmVjZXNzYXJ5IHNvIHRoYXQgYSB0YWIgY2FuIGJlIHNoaWZ0ZWQgZG93biB0byBvdmVybGF5IHRoZSBib3JkZXIgb2YgdGhlIGJveCBiZWxvdy4gKi9cbiAgICBvdmVyZmxvdy14OiB2aXNpYmxlO1xuICAgIG92ZXJmbG93LXk6IHZpc2libGU7XG59XG5cbi5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciA+IC5wLVRhYkJhci1jb250ZW50IHtcbiAgICAvKiBNYWtlIHN1cmUgdGhhdCB0aGUgdGFiIGdyb3dzIGZyb20gYm90dG9tIHVwICovXG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIG1pbi13aWR0aDogMDtcbiAgICBtaW4taGVpZ2h0OiAwO1xufVxuXG4uanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAud2lkZ2V0LXRhYi1jb250ZW50cyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBtYXJnaW46IDA7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tanAtbGF5b3V0LWNvbG9yMSk7XG4gICAgY29sb3I6IHZhcigtLWpwLXVpLWZvbnQtY29sb3IxKTtcbiAgICBib3JkZXI6IHZhcigtLWpwLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tanAtYm9yZGVyLWNvbG9yMSk7XG4gICAgcGFkZGluZzogdmFyKC0tanAtd2lkZ2V0cy1jb250YWluZXItcGFkZGluZyk7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIG92ZXJmbG93OiBhdXRvO1xufVxuXG4uanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIge1xuICAgIGZvbnQ6IHZhcigtLWpwLXdpZGdldHMtZm9udC1zaXplKSBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgIG1pbi1oZWlnaHQ6IGNhbGModmFyKC0tanAtd2lkZ2V0cy1ob3Jpem9udGFsLXRhYi1oZWlnaHQpICsgdmFyKC0tanAtYm9yZGVyLXdpZHRoKSk7XG59XG5cbi5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciAucC1UYWJCYXItdGFiIHtcbiAgICBmbGV4OiAwIDEgdmFyKC0tanAtd2lkZ2V0cy1ob3Jpem9udGFsLXRhYi13aWR0aCk7XG4gICAgbWluLXdpZHRoOiAzNXB4O1xuICAgIG1pbi1oZWlnaHQ6IGNhbGModmFyKC0tanAtd2lkZ2V0cy1ob3Jpem9udGFsLXRhYi1oZWlnaHQpICsgdmFyKC0tanAtYm9yZGVyLXdpZHRoKSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWpwLXdpZGdldHMtaG9yaXpvbnRhbC10YWItaGVpZ2h0KTtcbiAgICBtYXJnaW4tbGVmdDogY2FsYygtMSAqIHZhcigtLWpwLWJvcmRlci13aWR0aCkpO1xuICAgIHBhZGRpbmc6IDBweCAxMHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWpwLWxheW91dC1jb2xvcjIpO1xuICAgIGNvbG9yOiB2YXIoLS1qcC11aS1mb250LWNvbG9yMik7XG4gICAgYm9yZGVyOiB2YXIoLS1qcC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWpwLWJvcmRlci1jb2xvcjEpO1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgLnAtVGFiQmFyLXRhYi5wLW1vZC1jdXJyZW50IHtcbiAgICBjb2xvcjogdmFyKC0tanAtdWktZm9udC1jb2xvcjApO1xuICAgIC8qIFdlIHdhbnQgdGhlIGJhY2tncm91bmQgdG8gbWF0Y2ggdGhlIHRhYiBjb250ZW50IGJhY2tncm91bmQgKi9cbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1qcC1sYXlvdXQtY29sb3IxKTtcbiAgICBtaW4taGVpZ2h0OiBjYWxjKHZhcigtLWpwLXdpZGdldHMtaG9yaXpvbnRhbC10YWItaGVpZ2h0KSArIDIgKiB2YXIoLS1qcC1ib3JkZXItd2lkdGgpKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkodmFyKC0tanAtYm9yZGVyLXdpZHRoKSk7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciAucC1UYWJCYXItdGFiLnAtbW9kLWN1cnJlbnQ6YmVmb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiBjYWxjKC0xICogdmFyKC0tanAtYm9yZGVyLXdpZHRoKSk7XG4gICAgbGVmdDogY2FsYygtMSAqIHZhcigtLWpwLWJvcmRlci13aWR0aCkpO1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGhlaWdodDogdmFyKC0tanAtd2lkZ2V0cy1ob3Jpem9udGFsLXRhYi10b3AtYm9yZGVyKTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgMiAqIHZhcigtLWpwLWJvcmRlci13aWR0aCkpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWpwLWJyYW5kLWNvbG9yMSk7XG59XG5cbi5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciAucC1UYWJCYXItdGFiOmZpcnN0LWNoaWxkIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLVRhYkJhci10YWI6aG92ZXI6bm90KC5wLW1vZC1jdXJyZW50KSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tanAtbGF5b3V0LWNvbG9yMSk7XG4gICAgY29sb3I6IHZhcigtLWpwLXVpLWZvbnQtY29sb3IxKTtcbn1cblxuLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLW1vZC1jbG9zYWJsZSA+IC5wLVRhYkJhci10YWJDbG9zZUljb24ge1xuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG59XG5cbi8qIFRoaXMgZm9udC1hd2Vzb21lIHN0cmF0ZWd5IG1heSBub3Qgd29yayBhY3Jvc3MgRkE0IGFuZCBGQTUsIGJ1dCB3ZSBkb24ndFxuYWN0dWFsbHkgc3VwcG9ydCBjbG9zYWJsZSB0YWJzLCBzbyBpdCByZWFsbHkgZG9lc24ndCBtYXR0ZXIgKi9cbi5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciAucC1tb2QtY2xvc2FibGUgPiAucC1UYWJCYXItdGFiQ2xvc2VJY29uOmJlZm9yZSB7XG4gICAgZm9udC1mYW1pbHk6IEZvbnRBd2Vzb21lO1xuICAgIGNvbnRlbnQ6ICdcXGYwMGQnOyAvKiBjbG9zZSAqL1xufVxuXG4uanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgLnAtVGFiQmFyLXRhYkljb24sXG4uanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgLnAtVGFiQmFyLXRhYkxhYmVsLFxuLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLVRhYkJhci10YWJDbG9zZUljb24ge1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1qcC13aWRnZXRzLWhvcml6b250YWwtdGFiLWhlaWdodCk7XG59XG5cbi8qIEFjY29yZGlvbiBXaWRnZXQgKi9cblxuLnAtQ29sbGFwc2Uge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbn1cblxuLnAtQ29sbGFwc2UtaGVhZGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1qcC13aWRnZXRzLWlucHV0LXBhZGRpbmcpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogdmFyKC0tanAtdWktZm9udC1jb2xvcjIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWpwLWxheW91dC1jb2xvcjIpO1xuICAgIGJvcmRlcjogdmFyKC0tanAtd2lkZ2V0cy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWpwLWJvcmRlci1jb2xvcjEpO1xuICAgIHBhZGRpbmc6IGNhbGModmFyKC0tanAtd2lkZ2V0cy1jb250YWluZXItcGFkZGluZykgKiAyIC8gMykgdmFyKC0tanAtd2lkZ2V0cy1jb250YWluZXItcGFkZGluZyk7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5wLUNvbGxhcHNlLWhlYWRlcjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tanAtbGF5b3V0LWNvbG9yMSk7XG4gICAgY29sb3I6IHZhcigtLWpwLXVpLWZvbnQtY29sb3IxKTtcbn1cblxuLnAtQ29sbGFwc2Utb3BlbiA+IC5wLUNvbGxhcHNlLWhlYWRlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tanAtbGF5b3V0LWNvbG9yMSk7XG4gICAgY29sb3I6IHZhcigtLWpwLXVpLWZvbnQtY29sb3IwKTtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cblxuLnAtQ29sbGFwc2UtY29udGVudHMge1xuICAgIHBhZGRpbmc6IHZhcigtLWpwLXdpZGdldHMtY29udGFpbmVyLXBhZGRpbmcpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWpwLWxheW91dC1jb2xvcjEpO1xuICAgIGNvbG9yOiB2YXIoLS1qcC11aS1mb250LWNvbG9yMSk7XG4gICAgYm9yZGVyLWxlZnQ6IHZhcigtLWpwLXdpZGdldHMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1qcC1ib3JkZXItY29sb3IxKTtcbiAgICBib3JkZXItcmlnaHQ6IHZhcigtLWpwLXdpZGdldHMtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1qcC1ib3JkZXItY29sb3IxKTtcbiAgICBib3JkZXItYm90dG9tOiB2YXIoLS1qcC13aWRnZXRzLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tanAtYm9yZGVyLWNvbG9yMSk7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi5wLUFjY29yZGlvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xufVxuXG4ucC1BY2NvcmRpb24gLnAtQ29sbGFwc2Uge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5wLUFjY29yZGlvbiAucC1Db2xsYXBzZSArIC5wLUNvbGxhcHNlIHtcbiAgICBtYXJnaW4tdG9wOiA0cHg7XG59XG5cblxuXG4vKiBIVE1MIHdpZGdldCAqL1xuXG4ud2lkZ2V0LWh0bWwsIC53aWRnZXQtaHRtbG1hdGgge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tanAtd2lkZ2V0cy1mb250LXNpemUpO1xufVxuXG4ud2lkZ2V0LWh0bWwgPiAud2lkZ2V0LWh0bWwtY29udGVudCwgLndpZGdldC1odG1sbWF0aCA+IC53aWRnZXQtaHRtbC1jb250ZW50IHtcbiAgICAvKiBGaWxsIG91dCB0aGUgYXJlYSBpbiB0aGUgSFRNTCB3aWRnZXQgKi9cbiAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgICBmbGV4LXNocmluazogMTtcbiAgICAvKiBNYWtlcyBzdXJlIHRoZSBiYXNlbGluZSBpcyBzdGlsbCBhbGlnbmVkIHdpdGggb3RoZXIgZWxlbWVudHMgKi9cbiAgICBsaW5lLWhlaWdodDogdmFyKC0tanAtd2lkZ2V0cy1pbmxpbmUtaGVpZ2h0KTtcbiAgICAvKiBNYWtlIGl0IHBvc3NpYmxlIHRvIGhhdmUgYWJzb2x1dGVseS1wb3NpdGlvbmVkIGVsZW1lbnRzIGluIHRoZSBodG1sICovXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG5cbi8qIEltYWdlIHdpZGdldCAgKi9cblxuLndpZGdldC1pbWFnZSB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbn1cbiIsIi8qIFRoaXMgZmlsZSBoYXMgY29kZSBkZXJpdmVkIGZyb20gUGhvc3Bob3JKUyBDU1MgZmlsZXMsIGFzIG5vdGVkIGJlbG93LiBUaGUgbGljZW5zZSBmb3IgdGhpcyBQaG9zcGhvckpTIGNvZGUgaXM6XG5cbkNvcHlyaWdodCAoYykgMjAxNC0yMDE3LCBQaG9zcGhvckpTIENvbnRyaWJ1dG9yc1xuQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG5tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcblxuKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXNcbiAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLFxuICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG4gIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4qIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHNcbiAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb21cbiAgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cblxuVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCJcbkFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEVcbklNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRVxuRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUxcbkRBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SXG5TRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUlxuQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSxcbk9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFXG5PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuXG4qL1xuXG4vKlxuICogVGhlIGZvbGxvd2luZyBzZWN0aW9uIGlzIGRlcml2ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vcGhvc3Bob3Jqcy9waG9zcGhvci9ibG9iLzIzYjlkMDc1ZWJjNWI3M2FiMTQ4YjZlYmZjMjBhZjk3Zjg1NzE0YzQvcGFja2FnZXMvd2lkZ2V0cy9zdHlsZS90YWJiYXIuY3NzIFxuICogV2UndmUgc2NvcGVkIHRoZSBydWxlcyBzbyB0aGF0IHRoZXkgYXJlIGNvbnNpc3RlbnQgd2l0aCBleGFjdGx5IG91ciBjb2RlLlxuICovXG5cbi5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cblxuLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyW2RhdGEtb3JpZW50YXRpb249J2hvcml6b250YWwnXSB7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG59XG5cblxuLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyW2RhdGEtb3JpZW50YXRpb249J3ZlcnRpY2FsJ10ge1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG5cbi5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciA+IC5wLVRhYkJhci1jb250ZW50IHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4OiAxIDEgYXV0bztcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xufVxuXG5cbi5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhcltkYXRhLW9yaWVudGF0aW9uPSdob3Jpem9udGFsJ10gPiAucC1UYWJCYXItY29udGVudCB7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG59XG5cblxuLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyW2RhdGEtb3JpZW50YXRpb249J3ZlcnRpY2FsJ10gPiAucC1UYWJCYXItY29udGVudCB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cblxuLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLVRhYkJhci10YWIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5cbi5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciAucC1UYWJCYXItdGFiSWNvbixcbi5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciAucC1UYWJCYXItdGFiQ2xvc2VJY29uIHtcbiAgZmxleDogMCAwIGF1dG87XG59XG5cblxuLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLVRhYkJhci10YWJMYWJlbCB7XG4gIGZsZXg6IDEgMSBhdXRvO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG5cbi5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciAucC1UYWJCYXItdGFiLnAtbW9kLWhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuXG4uanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIucC1tb2QtZHJhZ2dpbmcgLnAtVGFiQmFyLXRhYiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuXG4uanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIucC1tb2QtZHJhZ2dpbmdbZGF0YS1vcmllbnRhdGlvbj0naG9yaXpvbnRhbCddIC5wLVRhYkJhci10YWIge1xuICBsZWZ0OiAwO1xuICB0cmFuc2l0aW9uOiBsZWZ0IDE1MG1zIGVhc2U7XG59XG5cblxuLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyLnAtbW9kLWRyYWdnaW5nW2RhdGEtb3JpZW50YXRpb249J3ZlcnRpY2FsJ10gLnAtVGFiQmFyLXRhYiB7XG4gIHRvcDogMDtcbiAgdHJhbnNpdGlvbjogdG9wIDE1MG1zIGVhc2U7XG59XG5cblxuLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyLnAtbW9kLWRyYWdnaW5nIC5wLVRhYkJhci10YWIucC1tb2QtZHJhZ2dpbmcge1xuICB0cmFuc2l0aW9uOiBub25lO1xufVxuXG4vKiBFbmQgdGFiYmFyLmNzcyAqL1xuIiwiQGltcG9ydCAnQGp1cHl0ZXItd2lkZ2V0cy9jb250cm9scy9jc3Mvd2lkZ2V0cy5jc3MnO1xuXG46cm9vdCB7XG4gIC0tanAtbGF5b3V0LWNvbG9yMTogdmFyKC0tY29sYWItcHJpbWFyeS1zdXJmYWNlLWNvbG9yKTtcbiAgLS1qcC1sYXlvdXQtY29sb3IyOiB2YXIoLS1jb2xhYi1zZWNvbmRhcnktc3VyZmFjZS1jb2xvcik7XG4gIC0tanAtdWktZm9udC1jb2xvcjE6IHZhcigtLWNvbGFiLXByaW1hcnktdGV4dC1jb2xvcik7XG4gIC0tanAtd2lkZ2V0cy1jb2xvcjogdmFyKC0tY29sYWItcHJpbWFyeS10ZXh0LWNvbG9yKTtcbiAgLS1qcC13aWRnZXRzLWlucHV0LWJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbGFiLXNlY29uZGFyeS1zdXJmYWNlLWNvbG9yKTtcbn0iXX0= */