kepler.gl 3.1.0 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -132
- package/dist/src/common-utils/src/data-type.d.ts +9 -1
- package/dist/src/components/src/common/data-table/header-cell.d.ts +1 -0
- package/dist/src/components/src/common/data-table/index.d.ts +1 -0
- package/dist/src/components/src/common/file-uploader/file-drop.d.ts +1 -32
- package/dist/src/components/src/common/item-selector/dropdown-list.d.ts +2 -2
- package/dist/src/components/src/common/item-selector/item-selector.d.ts +1 -1
- package/dist/src/components/src/common/item-selector/typeahead.d.ts +1 -1
- package/dist/src/components/src/geocoder/geocoder.d.ts +7 -0
- package/dist/src/components/src/geocoder-panel.d.ts +2 -2
- package/dist/src/components/src/hooks/use-fetch-vector-tile-metadata.d.ts +4 -3
- package/dist/src/constants/src/default-settings.d.ts +14 -1
- package/dist/src/deckgl-arrow-layers/src/constants.d.ts +0 -12
- package/dist/src/deckgl-arrow-layers/src/index.d.ts +0 -1
- package/dist/src/deckgl-arrow-layers/src/utils/utils.d.ts +12 -1
- package/dist/src/duckdb/src/components/preview-data-panel.d.ts +7 -2
- package/dist/src/duckdb/src/components/schema-panel.d.ts +12 -3
- package/dist/src/duckdb/src/processors/data-processor.d.ts +1 -0
- package/dist/src/duckdb/src/table/duckdb-table-utils.d.ts +106 -0
- package/dist/src/duckdb/src/table/duckdb-table.d.ts +5 -3
- package/dist/src/processors/src/data-processor.d.ts +15 -1
- package/dist/src/reducers/src/provider-state-updaters.d.ts +1 -0
- package/dist/src/reducers/src/vis-state-updaters.d.ts +1 -1
- package/dist/src/table/src/dataset-utils.d.ts +1 -1
- package/dist/src/table/src/tileset/vector-tile-utils.d.ts +17 -1
- package/dist/src/utils/src/application-config.d.ts +4 -3
- package/dist/src/utils/src/data-utils.d.ts +9 -3
- package/dist/src/utils/src/indexed-data-container.d.ts +2 -2
- package/dist/src/utils/src/map-style-utils/mapbox-utils.d.ts +1 -1
- package/dist/src/utils/src/map-utils.d.ts +1 -1
- package/dist/src/utils/src/plot.d.ts +2 -2
- package/package.json +5 -5
- package/src/actions/package.json +8 -8
- package/src/ai-assistant/dist/components/ai-assistant-component.js +2 -1
- package/src/ai-assistant/package.json +7 -7
- package/src/ai-assistant/src/components/ai-assistant-component.tsx +1 -0
- package/src/cloud-providers/package.json +2 -2
- package/src/common-utils/dist/data-type.d.ts +9 -1
- package/src/common-utils/dist/data-type.js +50 -1
- package/src/common-utils/package.json +3 -3
- package/src/common-utils/src/data-type.ts +49 -1
- package/src/components/dist/common/data-table/header-cell.d.ts +1 -0
- package/src/components/dist/common/data-table/header-cell.js +2 -2
- package/src/components/dist/common/data-table/index.d.ts +1 -0
- package/src/components/dist/common/data-table/index.js +5 -1
- package/src/components/dist/common/file-uploader/file-drop.d.ts +1 -32
- package/src/components/dist/common/file-uploader/file-drop.js +152 -167
- package/src/components/dist/common/item-selector/dropdown-list.d.ts +2 -2
- package/src/components/dist/common/item-selector/dropdown-list.js +2 -3
- package/src/components/dist/common/item-selector/item-selector.d.ts +1 -1
- package/src/components/dist/common/item-selector/typeahead.d.ts +1 -1
- package/src/components/dist/common/range-brush.js +3 -3
- package/src/components/dist/geocoder/geocoder.d.ts +7 -0
- package/src/components/dist/geocoder/geocoder.js +19 -11
- package/src/components/dist/geocoder-panel.d.ts +2 -2
- package/src/components/dist/geocoder-panel.js +64 -91
- package/src/components/dist/hooks/use-fetch-vector-tile-metadata.d.ts +4 -3
- package/src/components/dist/hooks/use-fetch-vector-tile-metadata.js +35 -26
- package/src/components/dist/hooks/use-legend-position.js +8 -4
- package/src/components/dist/map/map-legend-panel.js +2 -3
- package/src/components/dist/modal-container.js +8 -8
- package/src/components/dist/modals/tilesets-modals/tileset-vector-form.js +31 -12
- package/src/components/dist/side-panel/layer-panel/color-palette-preset.js +2 -2
- package/src/components/dist/side-panel/layer-panel/color-range-selector.js +10 -11
- package/src/components/dist/side-panel/layer-panel/color-selector.js +3 -3
- package/src/components/dist/side-panel/layer-panel/custom-palette.js +1 -2
- package/src/components/dist/side-panel/layer-panel/layer-configurator.js +6 -8
- package/src/components/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +1 -2
- package/src/components/package.json +16 -16
- package/src/components/src/common/data-table/header-cell.tsx +2 -1
- package/src/components/src/common/data-table/index.tsx +4 -0
- package/src/components/src/common/file-uploader/file-drop.tsx +186 -161
- package/src/components/src/common/item-selector/dropdown-list.tsx +1 -6
- package/src/components/src/common/range-brush.tsx +2 -2
- package/src/components/src/geocoder/geocoder.tsx +16 -8
- package/src/components/src/geocoder-panel.tsx +95 -85
- package/src/components/src/hooks/use-fetch-vector-tile-metadata.ts +27 -25
- package/src/components/src/hooks/use-legend-position.ts +5 -2
- package/src/components/src/map/map-legend-panel.tsx +1 -2
- package/src/components/src/modal-container.tsx +7 -7
- package/src/components/src/modals/tilesets-modals/tileset-vector-form.tsx +12 -3
- package/src/components/src/side-panel/layer-panel/color-palette-preset.tsx +1 -1
- package/src/components/src/side-panel/layer-panel/color-range-selector.tsx +6 -11
- package/src/components/src/side-panel/layer-panel/color-selector.tsx +2 -2
- package/src/components/src/side-panel/layer-panel/custom-palette.tsx +0 -1
- package/src/components/src/side-panel/layer-panel/layer-configurator.tsx +23 -33
- package/src/components/src/side-panel/layer-panel/vector-tile-layer-configurator.tsx +0 -1
- package/src/constants/dist/default-settings.d.ts +14 -1
- package/src/constants/dist/default-settings.js +20 -5
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/91/4f/6c65f3a1eba584ffd2d892cabc25ab5804d4a9ef53694c98707372a83e56343a274bec04f15927a6fe7602615f0f23f73ccf599f524ef97ad6c77c8832ea +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/a6/b2/5424aa4477192fb44cc90fd80892efdc96731f2ff0f48e8f28abf64243cc +2 -0
- package/src/constants/package.json +2 -2
- package/src/constants/src/default-settings.ts +16 -1
- package/src/constants/umd/keplergl.min.js +2 -2
- package/src/deckgl-arrow-layers/dist/constants.d.ts +0 -12
- package/src/deckgl-arrow-layers/dist/constants.js +4 -15
- package/src/deckgl-arrow-layers/dist/index.d.ts +0 -1
- package/src/deckgl-arrow-layers/dist/index.js +1 -8
- package/src/deckgl-arrow-layers/dist/layers/geo-arrow-scatterplot-layer.js +4 -4
- package/src/deckgl-arrow-layers/dist/layers/geo-arrow-text-layer.js +5 -5
- package/src/deckgl-arrow-layers/dist/utils/utils.d.ts +12 -1
- package/src/deckgl-arrow-layers/dist/utils/utils.js +7 -5
- package/src/deckgl-arrow-layers/package.json +2 -1
- package/src/deckgl-arrow-layers/src/constants.ts +0 -13
- package/src/deckgl-arrow-layers/src/index.ts +0 -2
- package/src/deckgl-arrow-layers/src/layers/geo-arrow-scatterplot-layer.ts +5 -3
- package/src/deckgl-arrow-layers/src/layers/geo-arrow-text-layer.ts +8 -4
- package/src/deckgl-arrow-layers/src/utils/utils.ts +7 -5
- package/src/deckgl-layers/dist/deckgl-extensions/filter-arrow-layer.d.ts +1 -1
- package/src/deckgl-layers/dist/deckgl-extensions/filter-shader-module.d.ts +1 -1
- package/src/deckgl-layers/dist/deckgl-extensions/filter-shader-module.js +3 -3
- package/src/deckgl-layers/package.json +5 -5
- package/src/deckgl-layers/src/deckgl-extensions/filter-shader-module.ts +4 -3
- package/src/duckdb/dist/components/monaco-editor.js +4 -5
- package/src/duckdb/dist/components/preview-data-panel.d.ts +7 -2
- package/src/duckdb/dist/components/preview-data-panel.js +7 -8
- package/src/duckdb/dist/components/schema-panel.d.ts +12 -3
- package/src/duckdb/dist/components/schema-panel.js +41 -24
- package/src/duckdb/dist/components/sql-panel.js +245 -56
- package/src/duckdb/dist/init.js +20 -14
- package/src/duckdb/dist/processors/data-processor.d.ts +1 -0
- package/src/duckdb/dist/processors/data-processor.js +4 -4
- package/src/duckdb/dist/table/duckdb-table-utils.d.ts +106 -0
- package/src/duckdb/dist/table/duckdb-table-utils.js +493 -2
- package/src/duckdb/dist/table/duckdb-table.d.ts +5 -3
- package/src/duckdb/dist/table/duckdb-table.js +153 -261
- package/src/duckdb/package.json +6 -6
- package/src/duckdb/src/components/monaco-editor.tsx +3 -3
- package/src/duckdb/src/components/preview-data-panel.tsx +15 -8
- package/src/duckdb/src/components/schema-panel.tsx +92 -21
- package/src/duckdb/src/components/sql-panel.tsx +160 -22
- package/src/duckdb/src/init.ts +4 -1
- package/src/duckdb/src/processors/data-processor.ts +2 -2
- package/src/duckdb/src/table/duckdb-table-utils.ts +407 -1
- package/src/duckdb/src/table/duckdb-table.ts +61 -92
- package/src/effects/package.json +5 -5
- package/src/layers/dist/arc-layer/arc-layer.d.ts +1 -1
- package/src/layers/dist/arc-layer/arc-layer.js +2 -3
- package/src/layers/dist/base-layer.d.ts +7 -6
- package/src/layers/dist/base-layer.js +36 -19
- package/src/layers/dist/geojson-layer/geojson-layer.js +4 -2
- package/src/layers/dist/geojson-layer/geojson-utils.js +10 -3
- package/src/layers/dist/heatmap-layer/heatmap-layer.d.ts +2 -0
- package/src/layers/dist/heatmap-layer/heatmap-layer.js +16 -9
- package/src/layers/dist/icon-layer/icon-layer.d.ts +6 -3
- package/src/layers/dist/icon-layer/icon-layer.js +19 -11
- package/src/layers/dist/index.d.ts +1 -1
- package/src/layers/dist/index.js +1 -1
- package/src/layers/dist/layer-text-label.d.ts +9 -0
- package/src/layers/dist/layer-text-label.js +51 -6
- package/src/layers/dist/layer-utils.d.ts +39 -30
- package/src/layers/dist/layer-utils.js +69 -9
- package/src/layers/dist/line-layer/line-layer.d.ts +1 -1
- package/src/layers/dist/line-layer/line-layer.js +2 -3
- package/src/layers/dist/point-layer/point-layer.d.ts +10 -7
- package/src/layers/dist/point-layer/point-layer.js +16 -8
- package/src/layers/dist/trip-layer/trip-layer.d.ts +2 -2
- package/src/layers/dist/trip-layer/trip-layer.js +4 -2
- package/src/layers/dist/vector-tile/abstract-tile-layer.d.ts +3 -7
- package/src/layers/dist/vector-tile/abstract-tile-layer.js +7 -6
- package/src/layers/dist/vector-tile/vector-tile-layer.d.ts +5 -7
- package/src/layers/dist/vector-tile/vector-tile-layer.js +23 -2
- package/src/layers/package.json +11 -10
- package/src/layers/src/arc-layer/arc-layer.ts +1 -1
- package/src/layers/src/base-layer.ts +50 -9
- package/src/layers/src/geojson-layer/geojson-layer.ts +3 -1
- package/src/layers/src/geojson-layer/geojson-utils.ts +4 -1
- package/src/layers/src/heatmap-layer/heatmap-layer.ts +17 -12
- package/src/layers/src/icon-layer/icon-layer.ts +7 -3
- package/src/layers/src/index.ts +1 -2
- package/src/layers/src/layer-text-label.ts +53 -4
- package/src/layers/src/layer-utils.ts +88 -9
- package/src/layers/src/line-layer/line-layer.ts +1 -1
- package/src/layers/src/point-layer/point-layer.ts +15 -11
- package/src/layers/src/trip-layer/trip-layer.ts +4 -2
- package/src/layers/src/vector-tile/abstract-tile-layer.ts +11 -5
- package/src/layers/src/vector-tile/vector-tile-layer.ts +33 -4
- package/src/localization/package.json +1 -1
- package/src/processors/dist/data-processor.d.ts +15 -1
- package/src/processors/dist/data-processor.js +104 -11
- package/src/processors/package.json +8 -7
- package/src/processors/src/data-processor.ts +116 -13
- package/src/reducers/dist/export-utils.js +2 -2
- package/src/reducers/dist/layer-utils.js +1 -1
- package/src/reducers/dist/provider-state-updaters.d.ts +1 -0
- package/src/reducers/dist/provider-state-updaters.js +5 -2
- package/src/reducers/dist/vis-state-updaters.d.ts +1 -1
- package/src/reducers/dist/vis-state-updaters.js +23 -12
- package/src/reducers/package.json +16 -16
- package/src/reducers/src/export-utils.ts +1 -1
- package/src/reducers/src/layer-utils.ts +2 -1
- package/src/reducers/src/provider-state-updaters.ts +4 -1
- package/src/reducers/src/vis-state-updaters.ts +45 -10
- package/src/schemas/dist/dataset-schema.js +35 -6
- package/src/schemas/package.json +7 -7
- package/src/schemas/src/dataset-schema.ts +36 -8
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/a3/a9/7f26bbc52905b0e21e9366a30ef0ba98f4ccf9aa8dd8326d90ba90191ba2e305323f505bf134c825356156c793bf9386ed2cef2aeb48eb327c26d106f69a +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/7e/51/b8756555a0e2e696d944445ac23f7febf769006013fbc8419f39a701649d +2 -0
- package/src/styles/package.json +2 -2
- package/src/styles/umd/keplergl.min.js +2 -2
- package/src/table/dist/dataset-utils.js +23 -14
- package/src/table/dist/src/table/src/dataset-utils.d.ts +1 -1
- package/src/table/dist/src/table/src/tileset/vector-tile-utils.d.ts +17 -1
- package/src/table/dist/tileset/vector-tile-utils.js +122 -2
- package/src/table/package.json +5 -5
- package/src/table/src/dataset-utils.ts +16 -6
- package/src/table/src/tileset/vector-tile-utils.ts +131 -8
- package/src/tasks/package.json +2 -2
- package/src/types/actions.d.ts +1 -0
- package/src/types/layers.d.ts +1 -0
- package/src/types/package.json +1 -1
- package/src/types/types.d.ts +17 -0
- package/src/utils/dist/application-config.d.ts +4 -3
- package/src/utils/dist/application-config.js +3 -2
- package/src/utils/dist/data-scale-utils.js +4 -4
- package/src/utils/dist/data-utils.d.ts +9 -3
- package/src/utils/dist/data-utils.js +40 -7
- package/src/utils/dist/dataset-utils.js +23 -8
- package/src/utils/dist/indexed-data-container.d.ts +2 -2
- package/src/utils/dist/indexed-data-container.js +1 -1
- package/src/utils/dist/map-style-utils/mapbox-utils.d.ts +1 -1
- package/src/utils/dist/map-style-utils/mapbox-utils.js +3 -3
- package/src/utils/dist/plot.d.ts +2 -2
- package/src/utils/dist/plot.js +6 -6
- package/src/utils/map-utils.spec.js +1 -2
- package/src/utils/package.json +5 -4
- package/src/utils/src/application-config.ts +11 -8
- package/src/utils/src/data-scale-utils.ts +3 -3
- package/src/utils/src/data-utils.ts +36 -7
- package/src/utils/src/dataset-utils.ts +41 -9
- package/src/utils/src/indexed-data-container.ts +1 -1
- package/src/utils/src/map-style-utils/mapbox-utils.ts +2 -2
- package/src/utils/src/plot.ts +5 -5
- package/umd/keplergl.min.js +1279 -1295
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.SqlPanel = void 0;
|
|
9
9
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
11
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
13
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
@@ -14,20 +15,24 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
14
15
|
var _reactRedux = require("react-redux");
|
|
15
16
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
16
17
|
var _reactResizablePanels = require("react-resizable-panels");
|
|
18
|
+
var _actions = require("@kepler.gl/actions");
|
|
19
|
+
var _commonUtils = require("@kepler.gl/common-utils");
|
|
20
|
+
var _components = require("@kepler.gl/components");
|
|
21
|
+
var _processors = require("@kepler.gl/processors");
|
|
22
|
+
var _styles = require("@kepler.gl/styles");
|
|
23
|
+
var _utils = require("@kepler.gl/utils");
|
|
17
24
|
var _monacoEditor = _interopRequireDefault(require("./monaco-editor"));
|
|
18
25
|
var _schemaPanel = require("./schema-panel");
|
|
19
26
|
var _previewDataPanel = require("./preview-data-panel");
|
|
20
27
|
var _init = require("../init");
|
|
21
|
-
var
|
|
22
|
-
var
|
|
23
|
-
var _actions = require("@kepler.gl/actions");
|
|
24
|
-
var _styles = require("@kepler.gl/styles");
|
|
25
|
-
var _utils = require("@kepler.gl/utils");
|
|
26
|
-
var _processors = require("@kepler.gl/processors");
|
|
27
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11; // SPDX-License-Identifier: MIT
|
|
28
|
+
var _duckdbTableUtils = require("../table/duckdb-table-utils");
|
|
29
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12; // SPDX-License-Identifier: MIT
|
|
28
30
|
// Copyright contributors to the kepler.gl project
|
|
29
31
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
30
32
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
33
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
34
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
35
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
31
36
|
var StyledSqlPanel = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n height: 100%;\n background-color: ", ";\n border-left: 1px solid #333;\n"])), _styles.sidePanelBg);
|
|
32
37
|
var StyledSqlActions = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n flex: 0 0 50px;\n display: flex;\n padding-top: 12px;\n align-items: center;\n flex-direction: column;\n justify-content: flex-start;\n border-bottom: 1px solid #333;\n"])));
|
|
33
38
|
var StyledSqlEditor = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n flex: 1;\n min-width: 0; // Prevents flex child from overflowing\n height: 100%;\n"])));
|
|
@@ -41,6 +46,11 @@ var StyledResizeHandle = (0, _styledComponents["default"])(_reactResizablePanels
|
|
|
41
46
|
var StyledVerticalResizeHandle = (0, _styledComponents["default"])(_reactResizablePanels.PanelResizeHandle)(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n height: 4px;\n cursor: row-resize;\n\n &:hover {\n background-color: #555;\n }\n"])), _styles.panelBorderColor);
|
|
42
47
|
var StyledLoadingContainer = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n"])));
|
|
43
48
|
var StyledErrorContainer = _styledComponents["default"].pre(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 12px;\n color: red;\n font-size: 12px;\n background-color: ", ";\n height: 100%;\n overflow: auto;\n"])), _styles.sidePanelBg);
|
|
49
|
+
var StyledFileDropArea = (0, _styledComponents["default"])(_components.FileDrop)(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n height: 100%;\n border-width: 1px;\n border: 1px ", "\n ", ";\n .file-drop-target {\n height: 100%;\n }\n"])), function (props) {
|
|
50
|
+
return props.dragOver ? 'solid' : 'dashed';
|
|
51
|
+
}, function (props) {
|
|
52
|
+
return props.dragOver ? props.theme.subtextColorLT : 'transparent';
|
|
53
|
+
});
|
|
44
54
|
var SCHEMA_PANEL_STYLE = {
|
|
45
55
|
overflow: 'auto'
|
|
46
56
|
};
|
|
@@ -56,30 +66,43 @@ var SqlPanel = exports.SqlPanel = function SqlPanel(_ref) {
|
|
|
56
66
|
setSql = _useState2[1];
|
|
57
67
|
var _useState3 = (0, _react.useState)(null),
|
|
58
68
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
var _useState5 = (0, _react.useState)(
|
|
69
|
+
droppedFile = _useState4[0],
|
|
70
|
+
setDroppedFile = _useState4[1];
|
|
71
|
+
var _useState5 = (0, _react.useState)(false),
|
|
62
72
|
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
var _useState7 = (0, _react.useState)(
|
|
73
|
+
dragState = _useState6[0],
|
|
74
|
+
setDragState = _useState6[1];
|
|
75
|
+
var _useState7 = (0, _react.useState)(null),
|
|
66
76
|
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
var _useState9 = (0, _react.useState)(
|
|
77
|
+
result = _useState8[0],
|
|
78
|
+
setResult = _useState8[1];
|
|
79
|
+
var _useState9 = (0, _react.useState)(0),
|
|
70
80
|
_useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
var _useState11 = (0, _react.useState)(
|
|
81
|
+
schemaUpdateTrigger = _useState10[0],
|
|
82
|
+
setSchemaUpdateTrigger = _useState10[1];
|
|
83
|
+
var _useState11 = (0, _react.useState)(null),
|
|
74
84
|
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
var _useState13 = (0, _react.useState)(
|
|
85
|
+
error = _useState12[0],
|
|
86
|
+
setError = _useState12[1];
|
|
87
|
+
var _useState13 = (0, _react.useState)(0),
|
|
88
|
+
_useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
|
|
89
|
+
counter = _useState14[0],
|
|
90
|
+
setCounter = _useState14[1];
|
|
91
|
+
var _useState15 = (0, _react.useState)([]),
|
|
92
|
+
_useState16 = (0, _slicedToArray2["default"])(_useState15, 2),
|
|
93
|
+
tableSchema = _useState16[0],
|
|
94
|
+
setTableSchema = _useState16[1];
|
|
95
|
+
var _useState17 = (0, _react.useState)(false),
|
|
96
|
+
_useState18 = (0, _slicedToArray2["default"])(_useState17, 2),
|
|
97
|
+
isRunning = _useState18[0],
|
|
98
|
+
setIsRunning = _useState18[1];
|
|
99
|
+
var _useState19 = (0, _react.useState)(function () {
|
|
78
100
|
return (0, _utils.isAppleDevice)();
|
|
79
101
|
}),
|
|
80
|
-
|
|
81
|
-
isMac =
|
|
102
|
+
_useState20 = (0, _slicedToArray2["default"])(_useState19, 1),
|
|
103
|
+
isMac = _useState20[0];
|
|
82
104
|
var dispatch = (0, _reactRedux.useDispatch)();
|
|
105
|
+
var droppedFileAreaRef = (0, _react.useRef)(null);
|
|
83
106
|
(0, _react.useEffect)(function () {
|
|
84
107
|
var currentUrl = new URL(window.location.href);
|
|
85
108
|
if (sql) {
|
|
@@ -90,61 +113,139 @@ var SqlPanel = exports.SqlPanel = function SqlPanel(_ref) {
|
|
|
90
113
|
window.history.replaceState({}, '', currentUrl.toString());
|
|
91
114
|
}, [sql]);
|
|
92
115
|
var runQuery = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
93
|
-
var db, connection, arrowResult;
|
|
116
|
+
var adjustedQuery, db, connection, tempTableName, sqlStatements, arrowResult, tableDuckDBTypes, _iterator, _step, statement, isLastQuery, duckDbColumns, columnsToConvertToWKB, _adjustedQuery;
|
|
94
117
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
95
118
|
while (1) switch (_context.prev = _context.next) {
|
|
96
119
|
case 0:
|
|
97
120
|
setIsRunning(true);
|
|
98
121
|
_context.prev = 1;
|
|
99
|
-
|
|
100
|
-
|
|
122
|
+
adjustedQuery = sql ? (0, _duckdbTableUtils.removeSQLComments)(sql) : null;
|
|
123
|
+
if (adjustedQuery) {
|
|
124
|
+
_context.next = 6;
|
|
101
125
|
break;
|
|
102
126
|
}
|
|
103
127
|
setError(new Error('Query is empty'));
|
|
104
128
|
return _context.abrupt("return");
|
|
105
|
-
case
|
|
106
|
-
_context.next =
|
|
129
|
+
case 6:
|
|
130
|
+
_context.next = 8;
|
|
107
131
|
return (0, _init.getDuckDB)();
|
|
108
|
-
case
|
|
132
|
+
case 8:
|
|
109
133
|
db = _context.sent;
|
|
110
|
-
_context.next =
|
|
134
|
+
_context.next = 11;
|
|
111
135
|
return db.connect();
|
|
112
|
-
case
|
|
136
|
+
case 11:
|
|
113
137
|
connection = _context.sent;
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
138
|
+
// TODO find a cheap way to get DuckDb types with a single query to a remote resource - temp table? cte?
|
|
139
|
+
tempTableName = 'temp_keplergl_table'; // remove comments
|
|
140
|
+
sqlStatements = (0, _duckdbTableUtils.splitSqlStatements)(adjustedQuery);
|
|
141
|
+
arrowResult = null;
|
|
142
|
+
tableDuckDBTypes = {};
|
|
143
|
+
_iterator = _createForOfIteratorHelper(sqlStatements);
|
|
144
|
+
_context.prev = 17;
|
|
145
|
+
_iterator.s();
|
|
146
|
+
case 19:
|
|
147
|
+
if ((_step = _iterator.n()).done) {
|
|
148
|
+
_context.next = 48;
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
statement = _step.value;
|
|
152
|
+
isLastQuery = statement === sqlStatements[sqlStatements.length - 1];
|
|
153
|
+
_context.t0 = isLastQuery;
|
|
154
|
+
if (!_context.t0) {
|
|
155
|
+
_context.next = 27;
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
_context.next = 26;
|
|
159
|
+
return (0, _duckdbTableUtils.checkIsSelectQuery)(connection, statement);
|
|
160
|
+
case 26:
|
|
161
|
+
_context.t0 = _context.sent;
|
|
162
|
+
case 27:
|
|
163
|
+
if (!_context.t0) {
|
|
164
|
+
_context.next = 44;
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
_context.next = 30;
|
|
168
|
+
return connection.query("CREATE OR REPLACE TABLE '".concat(tempTableName, "' AS ").concat(statement));
|
|
169
|
+
case 30:
|
|
170
|
+
_context.next = 32;
|
|
171
|
+
return (0, _duckdbTableUtils.getDuckDBColumnTypes)(connection, tempTableName);
|
|
172
|
+
case 32:
|
|
173
|
+
duckDbColumns = _context.sent;
|
|
174
|
+
tableDuckDBTypes = (0, _duckdbTableUtils.getDuckDBColumnTypesMap)(duckDbColumns);
|
|
175
|
+
columnsToConvertToWKB = (0, _duckdbTableUtils.getGeometryColumns)(duckDbColumns); // 3) query GEOMETRY columns as WKB.
|
|
176
|
+
_adjustedQuery = (0, _duckdbTableUtils.constructST_asWKBQuery)(tempTableName, columnsToConvertToWKB);
|
|
177
|
+
_context.next = 38;
|
|
178
|
+
return connection.query(_adjustedQuery);
|
|
179
|
+
case 38:
|
|
117
180
|
arrowResult = _context.sent;
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
181
|
+
// 4) set geoarrow extension for the arrow table as DuckDB doesn't support the geoarrow extension.
|
|
182
|
+
(0, _duckdbTableUtils.setGeoArrowWKBExtension)(arrowResult, duckDbColumns);
|
|
183
|
+
|
|
184
|
+
// 5) remove temp table
|
|
185
|
+
_context.next = 42;
|
|
186
|
+
return connection.query("DROP TABLE ".concat(tempTableName, ";"));
|
|
187
|
+
case 42:
|
|
188
|
+
_context.next = 46;
|
|
122
189
|
break;
|
|
123
|
-
case
|
|
124
|
-
_context.
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
190
|
+
case 44:
|
|
191
|
+
_context.next = 46;
|
|
192
|
+
return connection.query(statement);
|
|
193
|
+
case 46:
|
|
194
|
+
_context.next = 19;
|
|
195
|
+
break;
|
|
196
|
+
case 48:
|
|
197
|
+
_context.next = 53;
|
|
198
|
+
break;
|
|
199
|
+
case 50:
|
|
200
|
+
_context.prev = 50;
|
|
201
|
+
_context.t1 = _context["catch"](17);
|
|
202
|
+
_iterator.e(_context.t1);
|
|
203
|
+
case 53:
|
|
204
|
+
_context.prev = 53;
|
|
205
|
+
_iterator.f();
|
|
206
|
+
return _context.finish(53);
|
|
207
|
+
case 56:
|
|
208
|
+
// Show preview only for the result of the last query
|
|
209
|
+
if (arrowResult) {
|
|
210
|
+
setResult({
|
|
211
|
+
table: arrowResult,
|
|
212
|
+
tableDuckDBTypes: tableDuckDBTypes
|
|
213
|
+
});
|
|
214
|
+
setError(null);
|
|
215
|
+
}
|
|
216
|
+
_context.next = 59;
|
|
217
|
+
return connection.close();
|
|
218
|
+
case 59:
|
|
219
|
+
_context.next = 64;
|
|
220
|
+
break;
|
|
221
|
+
case 61:
|
|
222
|
+
_context.prev = 61;
|
|
223
|
+
_context.t2 = _context["catch"](1);
|
|
224
|
+
setError(_context.t2);
|
|
225
|
+
case 64:
|
|
226
|
+
_context.prev = 64;
|
|
129
227
|
setIsRunning(false);
|
|
130
|
-
return _context.finish(
|
|
131
|
-
case
|
|
228
|
+
return _context.finish(64);
|
|
229
|
+
case 67:
|
|
230
|
+
// Indicate that there may be a possible change in DuckDB.
|
|
231
|
+
setSchemaUpdateTrigger(Date.now());
|
|
232
|
+
case 68:
|
|
132
233
|
case "end":
|
|
133
234
|
return _context.stop();
|
|
134
235
|
}
|
|
135
|
-
}, _callee, null, [[1,
|
|
236
|
+
}, _callee, null, [[1, 61, 64, 67], [17, 50, 53, 56]]);
|
|
136
237
|
})), [sql]);
|
|
137
238
|
var onChange = (0, _react.useCallback)(function (value) {
|
|
138
239
|
setSql(value);
|
|
139
240
|
}, [setSql]);
|
|
140
241
|
var onAddResultToMap = (0, _react.useCallback)(function () {
|
|
141
242
|
if (!result) return;
|
|
142
|
-
var keplerFields = (0, _processors.arrowSchemaToFields)(result.
|
|
243
|
+
var keplerFields = (0, _processors.arrowSchemaToFields)(result.table, result.tableDuckDBTypes);
|
|
143
244
|
var datasetToAdd = {
|
|
144
245
|
data: {
|
|
145
246
|
fields: keplerFields,
|
|
146
247
|
// TODO type AddDataToMapPayload -> rows -> + arrow.Table
|
|
147
|
-
rows: result
|
|
248
|
+
rows: result.table
|
|
148
249
|
},
|
|
149
250
|
info: {
|
|
150
251
|
id: (0, _commonUtils.generateHashId)(),
|
|
@@ -157,15 +258,101 @@ var SqlPanel = exports.SqlPanel = function SqlPanel(_ref) {
|
|
|
157
258
|
}));
|
|
158
259
|
setCounter(counter + 1);
|
|
159
260
|
}, [result, counter, dispatch]);
|
|
261
|
+
var isValidFileType = (0, _react.useCallback)(function (filename) {
|
|
262
|
+
var fileExt = _duckdbTableUtils.SUPPORTED_DUCKDB_DROP_EXTENSIONS.find(function (ext) {
|
|
263
|
+
return filename.endsWith(ext);
|
|
264
|
+
});
|
|
265
|
+
return Boolean(fileExt);
|
|
266
|
+
}, []);
|
|
267
|
+
var createTableFromDroppedFile = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
268
|
+
var _ref3 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(droppedFile) {
|
|
269
|
+
var _error;
|
|
270
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
271
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
272
|
+
case 0:
|
|
273
|
+
if (!droppedFile) {
|
|
274
|
+
_context2.next = 5;
|
|
275
|
+
break;
|
|
276
|
+
}
|
|
277
|
+
_context2.next = 3;
|
|
278
|
+
return (0, _duckdbTableUtils.tableFromFile)(droppedFile);
|
|
279
|
+
case 3:
|
|
280
|
+
_error = _context2.sent;
|
|
281
|
+
if (_error) {
|
|
282
|
+
setError(_error);
|
|
283
|
+
} else {
|
|
284
|
+
setError(null);
|
|
285
|
+
}
|
|
286
|
+
case 5:
|
|
287
|
+
setDroppedFile(null);
|
|
288
|
+
setDragState(false);
|
|
289
|
+
case 7:
|
|
290
|
+
case "end":
|
|
291
|
+
return _context2.stop();
|
|
292
|
+
}
|
|
293
|
+
}, _callee2);
|
|
294
|
+
}));
|
|
295
|
+
return function (_x) {
|
|
296
|
+
return _ref3.apply(this, arguments);
|
|
297
|
+
};
|
|
298
|
+
}(), []);
|
|
299
|
+
(0, _react.useEffect)(function () {
|
|
300
|
+
createTableFromDroppedFile(droppedFile);
|
|
301
|
+
}, [droppedFile, createTableFromDroppedFile]);
|
|
302
|
+
var handleFileInput = (0, _react.useCallback)(function (fileList, event) {
|
|
303
|
+
if (event) {
|
|
304
|
+
event.preventDefault();
|
|
305
|
+
event.stopPropagation();
|
|
306
|
+
}
|
|
307
|
+
var files = (0, _toConsumableArray2["default"])(fileList).filter(Boolean);
|
|
308
|
+
var disableExtensionFilter = false;
|
|
309
|
+
var filesToLoad = [];
|
|
310
|
+
var errorFiles = [];
|
|
311
|
+
var _iterator2 = _createForOfIteratorHelper(files),
|
|
312
|
+
_step2;
|
|
313
|
+
try {
|
|
314
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
315
|
+
var file = _step2.value;
|
|
316
|
+
if (disableExtensionFilter || isValidFileType(file.name)) {
|
|
317
|
+
filesToLoad.push(file);
|
|
318
|
+
} else {
|
|
319
|
+
errorFiles.push(file.name);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
} catch (err) {
|
|
323
|
+
_iterator2.e(err);
|
|
324
|
+
} finally {
|
|
325
|
+
_iterator2.f();
|
|
326
|
+
}
|
|
327
|
+
if (filesToLoad.length > 0) {
|
|
328
|
+
setDroppedFile(filesToLoad[0]);
|
|
329
|
+
} else if (errorFiles.length > 0) {
|
|
330
|
+
setError(new Error("Unsupported file formats: ".concat(errorFiles.join(', '))));
|
|
331
|
+
}
|
|
332
|
+
}, [isValidFileType]);
|
|
160
333
|
return /*#__PURE__*/_react["default"].createElement(StyledSqlPanel, null, /*#__PURE__*/_react["default"].createElement(_reactResizablePanels.PanelGroup, {
|
|
161
334
|
direction: "horizontal"
|
|
162
335
|
}, /*#__PURE__*/_react["default"].createElement(_reactResizablePanels.Panel, {
|
|
163
336
|
defaultSize: 20,
|
|
164
337
|
minSize: 15,
|
|
165
|
-
style: SCHEMA_PANEL_STYLE
|
|
338
|
+
style: SCHEMA_PANEL_STYLE,
|
|
339
|
+
className: "schema-panel"
|
|
340
|
+
}, /*#__PURE__*/_react["default"].createElement(StyledFileDropArea, {
|
|
341
|
+
dragOver: dragState,
|
|
342
|
+
onDragOver: function onDragOver() {
|
|
343
|
+
return setDragState(true);
|
|
344
|
+
},
|
|
345
|
+
onDragLeave: function onDragLeave() {
|
|
346
|
+
return setDragState(false);
|
|
347
|
+
},
|
|
348
|
+
frame: droppedFileAreaRef.current || document,
|
|
349
|
+
onDrop: handleFileInput,
|
|
350
|
+
className: "file-uploader__file-drop"
|
|
166
351
|
}, /*#__PURE__*/_react["default"].createElement(_schemaPanel.SchemaPanel, {
|
|
167
|
-
setTableSchema: setTableSchema
|
|
168
|
-
|
|
352
|
+
setTableSchema: setTableSchema,
|
|
353
|
+
droppedFile: droppedFile,
|
|
354
|
+
schemaUpdateTrigger: schemaUpdateTrigger
|
|
355
|
+
}))), /*#__PURE__*/_react["default"].createElement(StyledResizeHandle, null), /*#__PURE__*/_react["default"].createElement(_reactResizablePanels.Panel, {
|
|
169
356
|
minSize: 40
|
|
170
357
|
}, /*#__PURE__*/_react["default"].createElement(StyledSqlEditor, null, /*#__PURE__*/_react["default"].createElement(_reactResizablePanels.PanelGroup, {
|
|
171
358
|
direction: "vertical"
|
|
@@ -191,13 +378,15 @@ var SqlPanel = exports.SqlPanel = function SqlPanel(_ref) {
|
|
|
191
378
|
onChange: onChange,
|
|
192
379
|
tableSchema: tableSchema,
|
|
193
380
|
code: sql
|
|
194
|
-
})))), /*#__PURE__*/_react["default"].createElement(StyledVerticalResizeHandle, null), /*#__PURE__*/_react["default"].createElement(_reactResizablePanels.Panel,
|
|
381
|
+
})))), /*#__PURE__*/_react["default"].createElement(StyledVerticalResizeHandle, null), /*#__PURE__*/_react["default"].createElement(_reactResizablePanels.Panel, {
|
|
382
|
+
className: "preview-panel"
|
|
383
|
+
}, isRunning ? /*#__PURE__*/_react["default"].createElement(StyledLoadingContainer, null, /*#__PURE__*/_react["default"].createElement(_components.LoadingSpinner, null)) : error ? /*#__PURE__*/_react["default"].createElement(StyledErrorContainer, null, /*#__PURE__*/_react["default"].createElement("div", null, error.message)) : result ? /*#__PURE__*/_react["default"].createElement(StyledDataPanel, null, /*#__PURE__*/_react["default"].createElement(StyledResultActions, null, /*#__PURE__*/_react["default"].createElement(_components.Button, {
|
|
195
384
|
secondary: true,
|
|
196
385
|
onClick: onAddResultToMap
|
|
197
|
-
}, "Add to Map"), /*#__PURE__*/_react["default"].createElement("div", null, result.numRows, " rows")), /*#__PURE__*/_react["default"].createElement(_previewDataPanel.PreviewDataPanel, {
|
|
386
|
+
}, "Add to Map"), /*#__PURE__*/_react["default"].createElement("div", null, result.table.numRows, " rows")), /*#__PURE__*/_react["default"].createElement(_previewDataPanel.PreviewDataPanel, {
|
|
198
387
|
result: result,
|
|
199
388
|
dataTableStyle: {},
|
|
200
389
|
onAddResultToMap: onAddResultToMap
|
|
201
390
|
})) : null))))));
|
|
202
391
|
};
|
|
203
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdFJlc2l6YWJsZVBhbmVscyIsIl9tb25hY29FZGl0b3IiLCJfc2NoZW1hUGFuZWwiLCJfcHJldmlld0RhdGFQYW5lbCIsIl9pbml0IiwiX2NvbXBvbmVudHMiLCJfY29tbW9uVXRpbHMiLCJfYWN0aW9ucyIsIl9zdHlsZXMiLCJfdXRpbHMiLCJfcHJvY2Vzc29ycyIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiX3RlbXBsYXRlT2JqZWN0NCIsIl90ZW1wbGF0ZU9iamVjdDUiLCJfdGVtcGxhdGVPYmplY3Q2IiwiX3RlbXBsYXRlT2JqZWN0NyIsIl90ZW1wbGF0ZU9iamVjdDgiLCJfdGVtcGxhdGVPYmplY3Q5IiwiX3RlbXBsYXRlT2JqZWN0MTAiLCJfdGVtcGxhdGVPYmplY3QxMSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIlN0eWxlZFNxbFBhbmVsIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJzaWRlUGFuZWxCZyIsIlN0eWxlZFNxbEFjdGlvbnMiLCJTdHlsZWRTcWxFZGl0b3IiLCJTdHlsZWRFZGl0b3JQYW5lbCIsIlN0eWxlZERhdGFQYW5lbCIsIlN0eWxlZEVkaXRvciIsInByb3BzIiwiaXNSdW5uaW5nIiwiU3R5bGVkUmVzdWx0QWN0aW9ucyIsIlN0eWxlZFJlc2l6ZUhhbmRsZSIsIlBhbmVsUmVzaXplSGFuZGxlIiwicGFuZWxCb3JkZXJDb2xvciIsIlN0eWxlZFZlcnRpY2FsUmVzaXplSGFuZGxlIiwiU3R5bGVkTG9hZGluZ0NvbnRhaW5lciIsIlN0eWxlZEVycm9yQ29udGFpbmVyIiwicHJlIiwiU0NIRU1BX1BBTkVMX1NUWUxFIiwib3ZlcmZsb3ciLCJTcWxQYW5lbCIsImV4cG9ydHMiLCJfcmVmIiwiX3JlZiRpbml0aWFsU3FsIiwiaW5pdGlhbFNxbCIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwicGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwic3FsIiwic2V0U3FsIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJyZXN1bHQiLCJzZXRSZXN1bHQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImVycm9yIiwic2V0RXJyb3IiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImNvdW50ZXIiLCJzZXRDb3VudGVyIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTEwIiwidGFibGVTY2hlbWEiLCJzZXRUYWJsZVNjaGVtYSIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJzZXRJc1J1bm5pbmciLCJfdXNlU3RhdGUxMyIsImlzQXBwbGVEZXZpY2UiLCJfdXNlU3RhdGUxNCIsImlzTWFjIiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsInVzZUVmZmVjdCIsImN1cnJlbnRVcmwiLCJVUkwiLCJocmVmIiwic2VhcmNoUGFyYW1zIiwiaGlzdG9yeSIsInJlcGxhY2VTdGF0ZSIsInRvU3RyaW5nIiwicnVuUXVlcnkiLCJ1c2VDYWxsYmFjayIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiZGIiLCJjb25uZWN0aW9uIiwiYXJyb3dSZXN1bHQiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwidHJpbSIsIkVycm9yIiwiYWJydXB0IiwiZ2V0RHVja0RCIiwic2VudCIsImNvbm5lY3QiLCJxdWVyeSIsImNsb3NlIiwidDAiLCJmaW5pc2giLCJzdG9wIiwib25DaGFuZ2UiLCJ2YWx1ZSIsIm9uQWRkUmVzdWx0VG9NYXAiLCJrZXBsZXJGaWVsZHMiLCJhcnJvd1NjaGVtYVRvRmllbGRzIiwic2NoZW1hIiwiZGF0YXNldFRvQWRkIiwiZGF0YSIsImZpZWxkcyIsInJvd3MiLCJpbmZvIiwiaWQiLCJnZW5lcmF0ZUhhc2hJZCIsImxhYmVsIiwiY29uY2F0IiwiZm9ybWF0IiwiYWRkRGF0YVRvTWFwIiwiZGF0YXNldHMiLCJjcmVhdGVFbGVtZW50IiwiUGFuZWxHcm91cCIsImRpcmVjdGlvbiIsIlBhbmVsIiwiZGVmYXVsdFNpemUiLCJtaW5TaXplIiwic3R5bGUiLCJTY2hlbWFQYW5lbCIsImNsYXNzTmFtZSIsIkljb25CdXR0b24iLCJvbkNsaWNrIiwiZGlzYWJsZWQiLCJJY29ucyIsIlBsYXkiLCJoZWlnaHQiLCJUb29sdGlwIiwicGxhY2UiLCJlZmZlY3QiLCJpc1JlYWRPbmx5Iiwib25SdW5RdWVyeSIsImNvZGUiLCJMb2FkaW5nU3Bpbm5lciIsIm1lc3NhZ2UiLCJCdXR0b24iLCJzZWNvbmRhcnkiLCJudW1Sb3dzIiwiUHJldmlld0RhdGFQYW5lbCIsImRhdGFUYWJsZVN0eWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvc3FsLXBhbmVsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgKiBhcyBhcnJvdyBmcm9tICdhcGFjaGUtYXJyb3cnO1xuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZVN0YXRlLCB1c2VFZmZlY3R9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7dXNlRGlzcGF0Y2h9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtQYW5lbCwgUGFuZWxHcm91cCwgUGFuZWxSZXNpemVIYW5kbGV9IGZyb20gJ3JlYWN0LXJlc2l6YWJsZS1wYW5lbHMnO1xuaW1wb3J0IE1vbmFjb0VkaXRvciBmcm9tICcuL21vbmFjby1lZGl0b3InO1xuaW1wb3J0IHtTY2hlbWFQYW5lbH0gZnJvbSAnLi9zY2hlbWEtcGFuZWwnO1xuaW1wb3J0IHtQcmV2aWV3RGF0YVBhbmVsfSBmcm9tICcuL3ByZXZpZXctZGF0YS1wYW5lbCc7XG5pbXBvcnQge2dldER1Y2tEQn0gZnJvbSAnLi4vaW5pdCc7XG5pbXBvcnQge0J1dHRvbiwgSWNvbkJ1dHRvbiwgVG9vbHRpcH0gZnJvbSAnQGtlcGxlci5nbC9jb21wb25lbnRzJztcbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7YWRkRGF0YVRvTWFwfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtJY29ucywgTG9hZGluZ1NwaW5uZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvY29tcG9uZW50cyc7XG5pbXBvcnQge3NpZGVQYW5lbEJnLCBwYW5lbEJvcmRlckNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3N0eWxlcyc7XG5pbXBvcnQge2lzQXBwbGVEZXZpY2V9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHthcnJvd1NjaGVtYVRvRmllbGRzfSBmcm9tICdAa2VwbGVyLmdsL3Byb2Nlc3NvcnMnO1xuXG5jb25zdCBTdHlsZWRTcWxQYW5lbCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtzaWRlUGFuZWxCZ307XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzMzMztcbmA7XG5cbmNvbnN0IFN0eWxlZFNxbEFjdGlvbnMgPSBzdHlsZWQuZGl2YFxuICBmbGV4OiAwIDAgNTBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZy10b3A6IDEycHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMzMzM7XG5gO1xuXG5jb25zdCBTdHlsZWRTcWxFZGl0b3IgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBmbGV4OiAxO1xuICBtaW4td2lkdGg6IDA7IC8vIFByZXZlbnRzIGZsZXggY2hpbGQgZnJvbSBvdmVyZmxvd2luZ1xuICBoZWlnaHQ6IDEwMCU7XG5gO1xuXG5jb25zdCBTdHlsZWRFZGl0b3JQYW5lbCA9IHN0eWxlZC5kaXZgXG4gIGJhY2tncm91bmQtY29sb3I6ICR7c2lkZVBhbmVsQmd9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGdhcDogNXB4O1xuICBmbGV4LWdyb3c6IDE7XG5gO1xuXG5jb25zdCBTdHlsZWREYXRhUGFuZWwgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuYDtcblxuY29uc3QgU3R5bGVkRWRpdG9yID0gc3R5bGVkLmRpdjx7aXNSdW5uaW5nOiBib29sZWFufT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDEycHggMTJweCAxMnB4IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigzMCwgMzAsIDMwKTtcbiAgb3BhY2l0eTogJHtwcm9wcyA9PiAocHJvcHMuaXNSdW5uaW5nID8gMC41IDogMSl9O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtaW4taGVpZ2h0OiAwOyAvLyBQcmV2ZW50cyBmbGV4IGNoaWxkIGZyb20gb3ZlcmZsb3dpbmdcbmA7XG5cbmNvbnN0IFN0eWxlZFJlc3VsdEFjdGlvbnMgPSBzdHlsZWQuZGl2YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgcGFkZGluZzogMnB4IDEycHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxMnB4O1xuYDtcblxuY29uc3QgU3R5bGVkUmVzaXplSGFuZGxlID0gc3R5bGVkKFBhbmVsUmVzaXplSGFuZGxlKWBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwYW5lbEJvcmRlckNvbG9yfTtcbiAgd2lkdGg6IDRweDtcbiAgY3Vyc29yOiBjb2wtcmVzaXplO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTU7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZFZlcnRpY2FsUmVzaXplSGFuZGxlID0gc3R5bGVkKFBhbmVsUmVzaXplSGFuZGxlKWBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwYW5lbEJvcmRlckNvbG9yfTtcbiAgaGVpZ2h0OiA0cHg7XG4gIGN1cnNvcjogcm93LXJlc2l6ZTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU1O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRMb2FkaW5nQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGhlaWdodDogMTAwJTtcbmA7XG5cbmNvbnN0IFN0eWxlZEVycm9yQ29udGFpbmVyID0gc3R5bGVkLnByZWBcbiAgcGFkZGluZzogMTJweDtcbiAgY29sb3I6IHJlZDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3NpZGVQYW5lbEJnfTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogYXV0bztcbmA7XG5cbnR5cGUgU3FsUGFuZWxQcm9wcyA9IHtcbiAgaW5pdGlhbFNxbD86IHN0cmluZztcbn07XG5cbmNvbnN0IFNDSEVNQV9QQU5FTF9TVFlMRSA9IHtvdmVyZmxvdzogJ2F1dG8nfTtcblxuZXhwb3J0IGNvbnN0IFNxbFBhbmVsOiBSZWFjdC5GQzxTcWxQYW5lbFByb3BzPiA9ICh7aW5pdGlhbFNxbCA9ICcnfSkgPT4ge1xuICBjb25zdCBbc3FsLCBzZXRTcWxdID0gdXNlU3RhdGUoKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgcmV0dXJuIHBhcmFtcy5nZXQoJ3NxbCcpIHx8IGluaXRpYWxTcWw7XG4gIH0pO1xuICBjb25zdCBbcmVzdWx0LCBzZXRSZXN1bHRdID0gdXNlU3RhdGU8bnVsbCB8IGFycm93LlRhYmxlPihudWxsKTtcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxFcnJvciB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbY291bnRlciwgc2V0Q291bnRlcl0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgW3RhYmxlU2NoZW1hLCBzZXRUYWJsZVNjaGVtYV0gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFtpc1J1bm5pbmcsIHNldElzUnVubmluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtpc01hY10gPSB1c2VTdGF0ZSgoKSA9PiBpc0FwcGxlRGV2aWNlKCkpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50VXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgaWYgKHNxbCkge1xuICAgICAgY3VycmVudFVybC5zZWFyY2hQYXJhbXMuc2V0KCdzcWwnLCBzcWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50VXJsLnNlYXJjaFBhcmFtcy5kZWxldGUoJ3NxbCcpO1xuICAgIH1cbiAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sICcnLCBjdXJyZW50VXJsLnRvU3RyaW5nKCkpO1xuICB9LCBbc3FsXSk7XG5cbiAgY29uc3QgcnVuUXVlcnkgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0SXNSdW5uaW5nKHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBpZiAoIXNxbD8udHJpbSgpKSB7XG4gICAgICAgIHNldEVycm9yKG5ldyBFcnJvcignUXVlcnkgaXMgZW1wdHknKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGIgPSBhd2FpdCBnZXREdWNrREIoKTtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBhd2FpdCBkYi5jb25uZWN0KCk7XG5cbiAgICAgIGNvbnN0IGFycm93UmVzdWx0ID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShzcWwpO1xuICAgICAgc2V0UmVzdWx0KGFycm93UmVzdWx0KTtcbiAgICAgIHNldEVycm9yKG51bGwpO1xuXG4gICAgICBjb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgc2V0RXJyb3IoZSBhcyBFcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldElzUnVubmluZyhmYWxzZSk7XG4gICAgfVxuICB9LCBbc3FsXSk7XG5cbiAgY29uc3Qgb25DaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICB2YWx1ZSA9PiB7XG4gICAgICBzZXRTcWwodmFsdWUpO1xuICAgIH0sXG4gICAgW3NldFNxbF1cbiAgKTtcblxuICBjb25zdCBvbkFkZFJlc3VsdFRvTWFwID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghcmVzdWx0KSByZXR1cm47XG5cbiAgICBjb25zdCBrZXBsZXJGaWVsZHMgPSBhcnJvd1NjaGVtYVRvRmllbGRzKHJlc3VsdC5zY2hlbWEpO1xuXG4gICAgY29uc3QgZGF0YXNldFRvQWRkID0ge1xuICAgICAgZGF0YToge1xuICAgICAgICBmaWVsZHM6IGtlcGxlckZpZWxkcyxcbiAgICAgICAgLy8gVE9ETyB0eXBlIEFkZERhdGFUb01hcFBheWxvYWQgLT4gcm93cyAtPiArIGFycm93LlRhYmxlXG4gICAgICAgIHJvd3M6IHJlc3VsdCBhcyBhbnlcbiAgICAgIH0sXG4gICAgICBpbmZvOiB7XG4gICAgICAgIGlkOiBnZW5lcmF0ZUhhc2hJZCgpLFxuICAgICAgICBsYWJlbDogYHF1ZXJ5X3Jlc3VsdCR7Y291bnRlciA+IDAgPyBgXyR7Y291bnRlcn1gIDogJyd9YCxcbiAgICAgICAgZm9ybWF0OiAnYXJyb3cnXG4gICAgICB9XG4gICAgfTtcblxuICAgIGRpc3BhdGNoKGFkZERhdGFUb01hcCh7ZGF0YXNldHM6IFtkYXRhc2V0VG9BZGRdfSkpO1xuICAgIHNldENvdW50ZXIoY291bnRlciArIDEpO1xuICB9LCBbcmVzdWx0LCBjb3VudGVyLCBkaXNwYXRjaF0pO1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFNxbFBhbmVsPlxuICAgICAgPFBhbmVsR3JvdXAgZGlyZWN0aW9uPVwiaG9yaXpvbnRhbFwiPlxuICAgICAgICA8UGFuZWwgZGVmYXVsdFNpemU9ezIwfSBtaW5TaXplPXsxNX0gc3R5bGU9e1NDSEVNQV9QQU5FTF9TVFlMRX0+XG4gICAgICAgICAgPFNjaGVtYVBhbmVsIHNldFRhYmxlU2NoZW1hPXtzZXRUYWJsZVNjaGVtYX0gLz5cbiAgICAgICAgPC9QYW5lbD5cblxuICAgICAgICA8U3R5bGVkUmVzaXplSGFuZGxlIC8+XG5cbiAgICAgICAgPFBhbmVsIG1pblNpemU9ezQwfT5cbiAgICAgICAgICA8U3R5bGVkU3FsRWRpdG9yPlxuICAgICAgICAgICAgPFBhbmVsR3JvdXAgZGlyZWN0aW9uPVwidmVydGljYWxcIj5cbiAgICAgICAgICAgICAgPFBhbmVsIGRlZmF1bHRTaXplPXszMH0gY2xhc3NOYW1lPVwiZWRpdG9yLXBhbmVsXCI+XG4gICAgICAgICAgICAgICAgPFN0eWxlZEVkaXRvclBhbmVsPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZFNxbEFjdGlvbnM+XG4gICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10aXBcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZvcj1cInJ1bi1xdWVyeS10b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtydW5RdWVyeX1cbiAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNSdW5uaW5nIHx8ICFzcWx9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8SWNvbnMuUGxheSBoZWlnaHQ9XCIxOHB4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCBpZD1cInJ1bi1xdWVyeS10b29sdGlwXCIgcGxhY2U9XCJ0b3BcIiBlZmZlY3Q9XCJzb2xpZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgUnVuIFF1ZXJ5ICh7aXNNYWMgPyAn4oyYRW50ZXInIDogJ0N0cmwrRW50ZXInfSBvciBTaGlmdCtFbnRlcilcbiAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvU3R5bGVkU3FsQWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRFZGl0b3IgaXNSdW5uaW5nPXtpc1J1bm5pbmd9PlxuICAgICAgICAgICAgICAgICAgICA8TW9uYWNvRWRpdG9yXG4gICAgICAgICAgICAgICAgICAgICAgaXNSZWFkT25seT17aXNSdW5uaW5nfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUnVuUXVlcnk9e3J1blF1ZXJ5fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJsZVNjaGVtYT17dGFibGVTY2hlbWF9XG4gICAgICAgICAgICAgICAgICAgICAgY29kZT17c3FsfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRFZGl0b3I+XG4gICAgICAgICAgICAgICAgPC9TdHlsZWRFZGl0b3JQYW5lbD5cbiAgICAgICAgICAgICAgPC9QYW5lbD5cblxuICAgICAgICAgICAgICA8U3R5bGVkVmVydGljYWxSZXNpemVIYW5kbGUgLz5cbiAgICAgICAgICAgICAgPFBhbmVsPlxuICAgICAgICAgICAgICAgIHtpc1J1bm5pbmcgPyAoXG4gICAgICAgICAgICAgICAgICA8U3R5bGVkTG9hZGluZ0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZExvYWRpbmdDb250YWluZXI+XG4gICAgICAgICAgICAgICAgKSA6IGVycm9yID8gKFxuICAgICAgICAgICAgICAgICAgPFN0eWxlZEVycm9yQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PntlcnJvci5tZXNzYWdlfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRFcnJvckNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICApIDogcmVzdWx0ID8gKFxuICAgICAgICAgICAgICAgICAgPFN0eWxlZERhdGFQYW5lbD5cbiAgICAgICAgICAgICAgICAgICAgPFN0eWxlZFJlc3VsdEFjdGlvbnM+XG4gICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBzZWNvbmRhcnkgb25DbGljaz17b25BZGRSZXN1bHRUb01hcH0+XG4gICAgICAgICAgICAgICAgICAgICAgICBBZGQgdG8gTWFwXG4gICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj57cmVzdWx0Lm51bVJvd3N9IHJvd3M8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRSZXN1bHRBY3Rpb25zPlxuICAgICAgICAgICAgICAgICAgICA8UHJldmlld0RhdGFQYW5lbFxuICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD17cmVzdWx0fVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFUYWJsZVN0eWxlPXt7fX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkFkZFJlc3VsdFRvTWFwPXtvbkFkZFJlc3VsdFRvTWFwfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWREYXRhUGFuZWw+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDwvUGFuZWw+XG4gICAgICAgICAgICA8L1BhbmVsR3JvdXA+XG4gICAgICAgICAgPC9TdHlsZWRTcWxFZGl0b3I+XG4gICAgICAgIDwvUGFuZWw+XG4gICAgICA8L1BhbmVsR3JvdXA+XG4gICAgPC9TdHlsZWRTcWxQYW5lbD5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUlBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxxQkFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBRixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQU0sWUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8saUJBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLEtBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLFdBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLFlBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLFFBQUEsR0FBQVgsT0FBQTtBQUVBLElBQUFZLE9BQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLE1BQUEsR0FBQWIsT0FBQTtBQUNBLElBQUFj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
|
|
392
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdFJlc2l6YWJsZVBhbmVscyIsIl9hY3Rpb25zIiwiX2NvbW1vblV0aWxzIiwiX2NvbXBvbmVudHMiLCJfcHJvY2Vzc29ycyIsIl9zdHlsZXMiLCJfdXRpbHMiLCJfbW9uYWNvRWRpdG9yIiwiX3NjaGVtYVBhbmVsIiwiX3ByZXZpZXdEYXRhUGFuZWwiLCJfaW5pdCIsIl9kdWNrZGJUYWJsZVV0aWxzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX3RlbXBsYXRlT2JqZWN0NSIsIl90ZW1wbGF0ZU9iamVjdDYiLCJfdGVtcGxhdGVPYmplY3Q3IiwiX3RlbXBsYXRlT2JqZWN0OCIsIl90ZW1wbGF0ZU9iamVjdDkiLCJfdGVtcGxhdGVPYmplY3QxMCIsIl90ZW1wbGF0ZU9iamVjdDExIiwiX3RlbXBsYXRlT2JqZWN0MTIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsImRvbmUiLCJ2YWx1ZSIsImYiLCJUeXBlRXJyb3IiLCJvIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0IiwiU3R5bGVkU3FsUGFuZWwiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInNpZGVQYW5lbEJnIiwiU3R5bGVkU3FsQWN0aW9ucyIsIlN0eWxlZFNxbEVkaXRvciIsIlN0eWxlZEVkaXRvclBhbmVsIiwiU3R5bGVkRGF0YVBhbmVsIiwiU3R5bGVkRWRpdG9yIiwicHJvcHMiLCJpc1J1bm5pbmciLCJTdHlsZWRSZXN1bHRBY3Rpb25zIiwiU3R5bGVkUmVzaXplSGFuZGxlIiwiUGFuZWxSZXNpemVIYW5kbGUiLCJwYW5lbEJvcmRlckNvbG9yIiwiU3R5bGVkVmVydGljYWxSZXNpemVIYW5kbGUiLCJTdHlsZWRMb2FkaW5nQ29udGFpbmVyIiwiU3R5bGVkRXJyb3JDb250YWluZXIiLCJwcmUiLCJTdHlsZWRGaWxlRHJvcEFyZWEiLCJGaWxlRHJvcCIsImRyYWdPdmVyIiwidGhlbWUiLCJzdWJ0ZXh0Q29sb3JMVCIsIlNDSEVNQV9QQU5FTF9TVFlMRSIsIm92ZXJmbG93IiwiU3FsUGFuZWwiLCJleHBvcnRzIiwiX3JlZiIsIl9yZWYkaW5pdGlhbFNxbCIsImluaXRpYWxTcWwiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsInBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsIndpbmRvdyIsImxvY2F0aW9uIiwic2VhcmNoIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInNxbCIsInNldFNxbCIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZHJvcHBlZEZpbGUiLCJzZXREcm9wcGVkRmlsZSIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiZHJhZ1N0YXRlIiwic2V0RHJhZ1N0YXRlIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJyZXN1bHQiLCJzZXRSZXN1bHQiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMTAiLCJzY2hlbWFVcGRhdGVUcmlnZ2VyIiwic2V0U2NoZW1hVXBkYXRlVHJpZ2dlciIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJlcnJvciIsInNldEVycm9yIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImNvdW50ZXIiLCJzZXRDb3VudGVyIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsInRhYmxlU2NoZW1hIiwic2V0VGFibGVTY2hlbWEiLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4Iiwic2V0SXNSdW5uaW5nIiwiX3VzZVN0YXRlMTkiLCJpc0FwcGxlRGV2aWNlIiwiX3VzZVN0YXRlMjAiLCJpc01hYyIsImRpc3BhdGNoIiwidXNlRGlzcGF0Y2giLCJkcm9wcGVkRmlsZUFyZWFSZWYiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJjdXJyZW50VXJsIiwiVVJMIiwiaHJlZiIsInNlYXJjaFBhcmFtcyIsImhpc3RvcnkiLCJyZXBsYWNlU3RhdGUiLCJydW5RdWVyeSIsInVzZUNhbGxiYWNrIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJhZGp1c3RlZFF1ZXJ5IiwiZGIiLCJjb25uZWN0aW9uIiwidGVtcFRhYmxlTmFtZSIsInNxbFN0YXRlbWVudHMiLCJhcnJvd1Jlc3VsdCIsInRhYmxlRHVja0RCVHlwZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsInN0YXRlbWVudCIsImlzTGFzdFF1ZXJ5IiwiZHVja0RiQ29sdW1ucyIsImNvbHVtbnNUb0NvbnZlcnRUb1dLQiIsIl9hZGp1c3RlZFF1ZXJ5Iiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwicmVtb3ZlU1FMQ29tbWVudHMiLCJFcnJvciIsImFicnVwdCIsImdldER1Y2tEQiIsInNlbnQiLCJjb25uZWN0Iiwic3BsaXRTcWxTdGF0ZW1lbnRzIiwidDAiLCJjaGVja0lzU2VsZWN0UXVlcnkiLCJxdWVyeSIsImNvbmNhdCIsImdldER1Y2tEQkNvbHVtblR5cGVzIiwiZ2V0RHVja0RCQ29sdW1uVHlwZXNNYXAiLCJnZXRHZW9tZXRyeUNvbHVtbnMiLCJjb25zdHJ1Y3RTVF9hc1dLQlF1ZXJ5Iiwic2V0R2VvQXJyb3dXS0JFeHRlbnNpb24iLCJ0MSIsImZpbmlzaCIsInRhYmxlIiwiY2xvc2UiLCJ0MiIsIkRhdGUiLCJub3ciLCJzdG9wIiwib25DaGFuZ2UiLCJvbkFkZFJlc3VsdFRvTWFwIiwia2VwbGVyRmllbGRzIiwiYXJyb3dTY2hlbWFUb0ZpZWxkcyIsImRhdGFzZXRUb0FkZCIsImRhdGEiLCJmaWVsZHMiLCJyb3dzIiwiaW5mbyIsImlkIiwiZ2VuZXJhdGVIYXNoSWQiLCJsYWJlbCIsImZvcm1hdCIsImFkZERhdGFUb01hcCIsImRhdGFzZXRzIiwiaXNWYWxpZEZpbGVUeXBlIiwiZmlsZW5hbWUiLCJmaWxlRXh0IiwiU1VQUE9SVEVEX0RVQ0tEQl9EUk9QX0VYVEVOU0lPTlMiLCJmaW5kIiwiZXh0IiwiZW5kc1dpdGgiLCJCb29sZWFuIiwiY3JlYXRlVGFibGVGcm9tRHJvcHBlZEZpbGUiLCJfcmVmMyIsIl9jYWxsZWUyIiwiX2Vycm9yIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwidGFibGVGcm9tRmlsZSIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVGaWxlSW5wdXQiLCJmaWxlTGlzdCIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJmaWxlcyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJmaWx0ZXIiLCJkaXNhYmxlRXh0ZW5zaW9uRmlsdGVyIiwiZmlsZXNUb0xvYWQiLCJlcnJvckZpbGVzIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImZpbGUiLCJwdXNoIiwiZXJyIiwiam9pbiIsImNyZWF0ZUVsZW1lbnQiLCJQYW5lbEdyb3VwIiwiZGlyZWN0aW9uIiwiUGFuZWwiLCJkZWZhdWx0U2l6ZSIsIm1pblNpemUiLCJzdHlsZSIsImNsYXNzTmFtZSIsIm9uRHJhZ092ZXIiLCJvbkRyYWdMZWF2ZSIsImZyYW1lIiwiY3VycmVudCIsImRvY3VtZW50Iiwib25Ecm9wIiwiU2NoZW1hUGFuZWwiLCJJY29uQnV0dG9uIiwib25DbGljayIsImRpc2FibGVkIiwiSWNvbnMiLCJQbGF5IiwiaGVpZ2h0IiwiVG9vbHRpcCIsInBsYWNlIiwiZWZmZWN0IiwiaXNSZWFkT25seSIsIm9uUnVuUXVlcnkiLCJjb2RlIiwiTG9hZGluZ1NwaW5uZXIiLCJtZXNzYWdlIiwiQnV0dG9uIiwic2Vjb25kYXJ5IiwibnVtUm93cyIsIlByZXZpZXdEYXRhUGFuZWwiLCJkYXRhVGFibGVTdHlsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3NxbC1wYW5lbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7dXNlRGlzcGF0Y2h9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtQYW5lbCwgUGFuZWxHcm91cCwgUGFuZWxSZXNpemVIYW5kbGV9IGZyb20gJ3JlYWN0LXJlc2l6YWJsZS1wYW5lbHMnO1xuXG5pbXBvcnQge2FkZERhdGFUb01hcH0gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7QnV0dG9uLCBGaWxlRHJvcCwgSWNvbkJ1dHRvbiwgSWNvbnMsIExvYWRpbmdTcGlubmVyLCBUb29sdGlwfSBmcm9tICdAa2VwbGVyLmdsL2NvbXBvbmVudHMnO1xuaW1wb3J0IHthcnJvd1NjaGVtYVRvRmllbGRzfSBmcm9tICdAa2VwbGVyLmdsL3Byb2Nlc3NvcnMnO1xuaW1wb3J0IHtzaWRlUGFuZWxCZywgcGFuZWxCb3JkZXJDb2xvcn0gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuaW1wb3J0IHtpc0FwcGxlRGV2aWNlfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuaW1wb3J0IE1vbmFjb0VkaXRvciBmcm9tICcuL21vbmFjby1lZGl0b3InO1xuaW1wb3J0IHtTY2hlbWFQYW5lbCwgU2NoZW1hU3VnZ2VzdGlvbn0gZnJvbSAnLi9zY2hlbWEtcGFuZWwnO1xuaW1wb3J0IHtQcmV2aWV3RGF0YVBhbmVsLCBRdWVyeVJlc3VsdH0gZnJvbSAnLi9wcmV2aWV3LWRhdGEtcGFuZWwnO1xuaW1wb3J0IHtnZXREdWNrREJ9IGZyb20gJy4uL2luaXQnO1xuaW1wb3J0IHtcbiAgY29uc3RydWN0U1RfYXNXS0JRdWVyeSxcbiAgZ2V0RHVja0RCQ29sdW1uVHlwZXMsXG4gIGdldER1Y2tEQkNvbHVtblR5cGVzTWFwLFxuICBnZXRHZW9tZXRyeUNvbHVtbnMsXG4gIHNldEdlb0Fycm93V0tCRXh0ZW5zaW9uLFxuICBzcGxpdFNxbFN0YXRlbWVudHMsXG4gIGNoZWNrSXNTZWxlY3RRdWVyeSxcbiAgcmVtb3ZlU1FMQ29tbWVudHMsXG4gIHRhYmxlRnJvbUZpbGUsXG4gIFNVUFBPUlRFRF9EVUNLREJfRFJPUF9FWFRFTlNJT05TXG59IGZyb20gJy4uL3RhYmxlL2R1Y2tkYi10YWJsZS11dGlscyc7XG5cbmNvbnN0IFN0eWxlZFNxbFBhbmVsID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3NpZGVQYW5lbEJnfTtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjMzMzO1xuYDtcblxuY29uc3QgU3R5bGVkU3FsQWN0aW9ucyA9IHN0eWxlZC5kaXZgXG4gIGZsZXg6IDAgMCA1MHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nLXRvcDogMTJweDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzMzMztcbmA7XG5cbmNvbnN0IFN0eWxlZFNxbEVkaXRvciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGZsZXg6IDE7XG4gIG1pbi13aWR0aDogMDsgLy8gUHJldmVudHMgZmxleCBjaGlsZCBmcm9tIG92ZXJmbG93aW5nXG4gIGhlaWdodDogMTAwJTtcbmA7XG5cbmNvbnN0IFN0eWxlZEVkaXRvclBhbmVsID0gc3R5bGVkLmRpdmBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtzaWRlUGFuZWxCZ307XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGhlaWdodDogMTAwJTtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgZ2FwOiA1cHg7XG4gIGZsZXgtZ3JvdzogMTtcbmA7XG5cbmNvbnN0IFN0eWxlZERhdGFQYW5lbCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG5gO1xuXG5jb25zdCBTdHlsZWRFZGl0b3IgPSBzdHlsZWQuZGl2PHtpc1J1bm5pbmc6IGJvb2xlYW59PmBcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZzogMTJweCAxMnB4IDEycHggMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDMwLCAzMCwgMzApO1xuICBvcGFjaXR5OiAke3Byb3BzID0+IChwcm9wcy5pc1J1bm5pbmcgPyAwLjUgOiAxKX07XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDA7IC8vIFByZXZlbnRzIGZsZXggY2hpbGQgZnJvbSBvdmVyZmxvd2luZ1xuYDtcblxuY29uc3QgU3R5bGVkUmVzdWx0QWN0aW9ucyA9IHN0eWxlZC5kaXZgXG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBwYWRkaW5nOiAycHggMTJweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmb250LXNpemU6IDEycHg7XG5gO1xuXG5jb25zdCBTdHlsZWRSZXNpemVIYW5kbGUgPSBzdHlsZWQoUGFuZWxSZXNpemVIYW5kbGUpYFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3BhbmVsQm9yZGVyQ29sb3J9O1xuICB3aWR0aDogNHB4O1xuICBjdXJzb3I6IGNvbC1yZXNpemU7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NTtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkVmVydGljYWxSZXNpemVIYW5kbGUgPSBzdHlsZWQoUGFuZWxSZXNpemVIYW5kbGUpYFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3BhbmVsQm9yZGVyQ29sb3J9O1xuICBoZWlnaHQ6IDRweDtcbiAgY3Vyc29yOiByb3ctcmVzaXplO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTU7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZExvYWRpbmdDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgaGVpZ2h0OiAxMDAlO1xuYDtcblxuY29uc3QgU3R5bGVkRXJyb3JDb250YWluZXIgPSBzdHlsZWQucHJlYFxuICBwYWRkaW5nOiAxMnB4O1xuICBjb2xvcjogcmVkO1xuICBmb250LXNpemU6IDEycHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7c2lkZVBhbmVsQmd9O1xuICBoZWlnaHQ6IDEwMCU7XG4gIG92ZXJmbG93OiBhdXRvO1xuYDtcblxuaW50ZXJmYWNlIFN0eWxlZERyYWdQYW5lbFByb3BzIHtcbiAgZHJhZ092ZXI/OiBib29sZWFuO1xufVxuXG5jb25zdCBTdHlsZWRGaWxlRHJvcEFyZWEgPSBzdHlsZWQoRmlsZURyb3ApPFN0eWxlZERyYWdQYW5lbFByb3BzPmBcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3JkZXItd2lkdGg6IDFweDtcbiAgYm9yZGVyOiAxcHggJHtwcm9wcyA9PiAocHJvcHMuZHJhZ092ZXIgPyAnc29saWQnIDogJ2Rhc2hlZCcpfVxuICAgICR7cHJvcHMgPT4gKHByb3BzLmRyYWdPdmVyID8gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yTFQgOiAndHJhbnNwYXJlbnQnKX07XG4gIC5maWxlLWRyb3AtdGFyZ2V0IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbmA7XG5cbnR5cGUgU3FsUGFuZWxQcm9wcyA9IHtcbiAgaW5pdGlhbFNxbD86IHN0cmluZztcbn07XG5cbmNvbnN0IFNDSEVNQV9QQU5FTF9TVFlMRSA9IHtvdmVyZmxvdzogJ2F1dG8nfTtcblxuZXhwb3J0IGNvbnN0IFNxbFBhbmVsOiBSZWFjdC5GQzxTcWxQYW5lbFByb3BzPiA9ICh7aW5pdGlhbFNxbCA9ICcnfSkgPT4ge1xuICBjb25zdCBbc3FsLCBzZXRTcWxdID0gdXNlU3RhdGUoKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgcmV0dXJuIHBhcmFtcy5nZXQoJ3NxbCcpIHx8IGluaXRpYWxTcWw7XG4gIH0pO1xuICBjb25zdCBbZHJvcHBlZEZpbGUsIHNldERyb3BwZWRGaWxlXSA9IHVzZVN0YXRlPEZpbGUgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2RyYWdTdGF0ZSwgc2V0RHJhZ1N0YXRlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Jlc3VsdCwgc2V0UmVzdWx0XSA9IHVzZVN0YXRlPG51bGwgfCBRdWVyeVJlc3VsdD4obnVsbCk7XG4gIGNvbnN0IFtzY2hlbWFVcGRhdGVUcmlnZ2VyLCBzZXRTY2hlbWFVcGRhdGVUcmlnZ2VyXSA9IHVzZVN0YXRlPG51bWJlcj4oMCk7XG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGU8RXJyb3IgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2NvdW50ZXIsIHNldENvdW50ZXJdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IFt0YWJsZVNjaGVtYSwgc2V0VGFibGVTY2hlbWFdID0gdXNlU3RhdGU8U2NoZW1hU3VnZ2VzdGlvbltdPihbXSk7XG4gIGNvbnN0IFtpc1J1bm5pbmcsIHNldElzUnVubmluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtpc01hY10gPSB1c2VTdGF0ZSgoKSA9PiBpc0FwcGxlRGV2aWNlKCkpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgY29uc3QgZHJvcHBlZEZpbGVBcmVhUmVmID0gdXNlUmVmKG51bGwpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudFVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgIGlmIChzcWwpIHtcbiAgICAgIGN1cnJlbnRVcmwuc2VhcmNoUGFyYW1zLnNldCgnc3FsJywgc3FsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudFVybC5zZWFyY2hQYXJhbXMuZGVsZXRlKCdzcWwnKTtcbiAgICB9XG4gICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCAnJywgY3VycmVudFVybC50b1N0cmluZygpKTtcbiAgfSwgW3NxbF0pO1xuXG4gIGNvbnN0IHJ1blF1ZXJ5ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldElzUnVubmluZyh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYWRqdXN0ZWRRdWVyeSA9IHNxbCA/IHJlbW92ZVNRTENvbW1lbnRzKHNxbCkgOiBudWxsO1xuICAgICAgaWYgKCFhZGp1c3RlZFF1ZXJ5KSB7XG4gICAgICAgIHNldEVycm9yKG5ldyBFcnJvcignUXVlcnkgaXMgZW1wdHknKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGIgPSBhd2FpdCBnZXREdWNrREIoKTtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBhd2FpdCBkYi5jb25uZWN0KCk7XG5cbiAgICAgIC8vIFRPRE8gZmluZCBhIGNoZWFwIHdheSB0byBnZXQgRHVja0RiIHR5cGVzIHdpdGggYSBzaW5nbGUgcXVlcnkgdG8gYSByZW1vdGUgcmVzb3VyY2UgLSB0ZW1wIHRhYmxlPyBjdGU/XG4gICAgICBjb25zdCB0ZW1wVGFibGVOYW1lID0gJ3RlbXBfa2VwbGVyZ2xfdGFibGUnO1xuXG4gICAgICAvLyByZW1vdmUgY29tbWVudHNcbiAgICAgIGNvbnN0IHNxbFN0YXRlbWVudHMgPSBzcGxpdFNxbFN0YXRlbWVudHMoYWRqdXN0ZWRRdWVyeSk7XG5cbiAgICAgIGxldCBhcnJvd1Jlc3VsdDogYXJyb3cuVGFibGUgfCBudWxsID0gbnVsbDtcbiAgICAgIGxldCB0YWJsZUR1Y2tEQlR5cGVzID0ge307XG5cbiAgICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIHNxbFN0YXRlbWVudHMpIHtcbiAgICAgICAgY29uc3QgaXNMYXN0UXVlcnkgPSBzdGF0ZW1lbnQgPT09IHNxbFN0YXRlbWVudHNbc3FsU3RhdGVtZW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKGlzTGFzdFF1ZXJ5ICYmIChhd2FpdCBjaGVja0lzU2VsZWN0UXVlcnkoY29ubmVjdGlvbiwgc3RhdGVtZW50KSkpIHtcbiAgICAgICAgICAvLyAxKSBjcmVhdGUgdGVtcCB0YWJsZSBmcm9tIHRoZSBvcmlnaW5hbCBxdWVyeS5cbiAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KGBDUkVBVEUgT1IgUkVQTEFDRSBUQUJMRSAnJHt0ZW1wVGFibGVOYW1lfScgQVMgJHtzdGF0ZW1lbnR9YCk7XG5cbiAgICAgICAgICAvLyAyKSBxdWVyeSBkdWNrZGIgdHlwZXMgYW5kIGRldGVjdCBjYW5kaWRhdGUgY29sdW1ucyBmb3IgU1RfYXNXS0IgdHJhbnNmb3JtLlxuICAgICAgICAgIGNvbnN0IGR1Y2tEYkNvbHVtbnMgPSBhd2FpdCBnZXREdWNrREJDb2x1bW5UeXBlcyhjb25uZWN0aW9uLCB0ZW1wVGFibGVOYW1lKTtcbiAgICAgICAgICB0YWJsZUR1Y2tEQlR5cGVzID0gZ2V0RHVja0RCQ29sdW1uVHlwZXNNYXAoZHVja0RiQ29sdW1ucyk7XG4gICAgICAgICAgY29uc3QgY29sdW1uc1RvQ29udmVydFRvV0tCID0gZ2V0R2VvbWV0cnlDb2x1bW5zKGR1Y2tEYkNvbHVtbnMpO1xuXG4gICAgICAgICAgLy8gMykgcXVlcnkgR0VPTUVUUlkgY29sdW1ucyBhcyBXS0IuXG4gICAgICAgICAgY29uc3QgYWRqdXN0ZWRRdWVyeSA9IGNvbnN0cnVjdFNUX2FzV0tCUXVlcnkodGVtcFRhYmxlTmFtZSwgY29sdW1uc1RvQ29udmVydFRvV0tCKTtcbiAgICAgICAgICBhcnJvd1Jlc3VsdCA9IGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoYWRqdXN0ZWRRdWVyeSk7XG5cbiAgICAgICAgICAvLyA0KSBzZXQgZ2VvYXJyb3cgZXh0ZW5zaW9uIGZvciB0aGUgYXJyb3cgdGFibGUgYXMgRHVja0RCIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgZ2VvYXJyb3cgZXh0ZW5zaW9uLlxuICAgICAgICAgIHNldEdlb0Fycm93V0tCRXh0ZW5zaW9uKGFycm93UmVzdWx0LCBkdWNrRGJDb2x1bW5zKTtcblxuICAgICAgICAgIC8vIDUpIHJlbW92ZSB0ZW1wIHRhYmxlXG4gICAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5xdWVyeShgRFJPUCBUQUJMRSAke3RlbXBUYWJsZU5hbWV9O2ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoc3RhdGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBTaG93IHByZXZpZXcgb25seSBmb3IgdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBxdWVyeVxuICAgICAgaWYgKGFycm93UmVzdWx0KSB7XG4gICAgICAgIHNldFJlc3VsdCh7dGFibGU6IGFycm93UmVzdWx0LCB0YWJsZUR1Y2tEQlR5cGVzfSk7XG4gICAgICAgIHNldEVycm9yKG51bGwpO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgc2V0RXJyb3IoZSBhcyBFcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldElzUnVubmluZyhmYWxzZSk7XG4gICAgfVxuXG4gICAgLy8gSW5kaWNhdGUgdGhhdCB0aGVyZSBtYXkgYmUgYSBwb3NzaWJsZSBjaGFuZ2UgaW4gRHVja0RCLlxuICAgIHNldFNjaGVtYVVwZGF0ZVRyaWdnZXIoRGF0ZS5ub3coKSk7XG4gIH0sIFtzcWxdKTtcblxuICBjb25zdCBvbkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIHZhbHVlID0+IHtcbiAgICAgIHNldFNxbCh2YWx1ZSk7XG4gICAgfSxcbiAgICBbc2V0U3FsXVxuICApO1xuXG4gIGNvbnN0IG9uQWRkUmVzdWx0VG9NYXAgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFyZXN1bHQpIHJldHVybjtcblxuICAgIGNvbnN0IGtlcGxlckZpZWxkcyA9IGFycm93U2NoZW1hVG9GaWVsZHMocmVzdWx0LnRhYmxlLCByZXN1bHQudGFibGVEdWNrREJUeXBlcyk7XG5cbiAgICBjb25zdCBkYXRhc2V0VG9BZGQgPSB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGZpZWxkczoga2VwbGVyRmllbGRzLFxuICAgICAgICAvLyBUT0RPIHR5cGUgQWRkRGF0YVRvTWFwUGF5bG9hZCAtPiByb3dzIC0+ICsgYXJyb3cuVGFibGVcbiAgICAgICAgcm93czogcmVzdWx0LnRhYmxlIGFzIGFueVxuICAgICAgfSxcbiAgICAgIGluZm86IHtcbiAgICAgICAgaWQ6IGdlbmVyYXRlSGFzaElkKCksXG4gICAgICAgIGxhYmVsOiBgcXVlcnlfcmVzdWx0JHtjb3VudGVyID4gMCA/IGBfJHtjb3VudGVyfWAgOiAnJ31gLFxuICAgICAgICBmb3JtYXQ6ICdhcnJvdydcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZGlzcGF0Y2goYWRkRGF0YVRvTWFwKHtkYXRhc2V0czogW2RhdGFzZXRUb0FkZF19KSk7XG4gICAgc2V0Q291bnRlcihjb3VudGVyICsgMSk7XG4gIH0sIFtyZXN1bHQsIGNvdW50ZXIsIGRpc3BhdGNoXSk7XG5cbiAgY29uc3QgaXNWYWxpZEZpbGVUeXBlID0gdXNlQ2FsbGJhY2soZmlsZW5hbWUgPT4ge1xuICAgIGNvbnN0IGZpbGVFeHQgPSBTVVBQT1JURURfRFVDS0RCX0RST1BfRVhURU5TSU9OUy5maW5kKGV4dCA9PiBmaWxlbmFtZS5lbmRzV2l0aChleHQpKTtcbiAgICByZXR1cm4gQm9vbGVhbihmaWxlRXh0KTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGNyZWF0ZVRhYmxlRnJvbURyb3BwZWRGaWxlID0gdXNlQ2FsbGJhY2soYXN5bmMgKGRyb3BwZWRGaWxlOiBGaWxlIHwgbnVsbCkgPT4ge1xuICAgIGlmIChkcm9wcGVkRmlsZSkge1xuICAgICAgY29uc3QgZXJyb3IgPSBhd2FpdCB0YWJsZUZyb21GaWxlKGRyb3BwZWRGaWxlKTtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICBzZXRFcnJvcihlcnJvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFcnJvcihudWxsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZXREcm9wcGVkRmlsZShudWxsKTtcbiAgICBzZXREcmFnU3RhdGUoZmFsc2UpO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjcmVhdGVUYWJsZUZyb21Ecm9wcGVkRmlsZShkcm9wcGVkRmlsZSk7XG4gIH0sIFtkcm9wcGVkRmlsZSwgY3JlYXRlVGFibGVGcm9tRHJvcHBlZEZpbGVdKTtcblxuICBjb25zdCBoYW5kbGVGaWxlSW5wdXQgPSB1c2VDYWxsYmFjayhcbiAgICAoZmlsZUxpc3Q6IEZpbGVMaXN0LCBldmVudDogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbGVzID0gWy4uLmZpbGVMaXN0XS5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICAgIGNvbnN0IGRpc2FibGVFeHRlbnNpb25GaWx0ZXIgPSBmYWxzZTtcblxuICAgICAgY29uc3QgZmlsZXNUb0xvYWQ6IEZpbGVbXSA9IFtdO1xuICAgICAgY29uc3QgZXJyb3JGaWxlczogc3RyaW5nW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBpZiAoZGlzYWJsZUV4dGVuc2lvbkZpbHRlciB8fCBpc1ZhbGlkRmlsZVR5cGUoZmlsZS5uYW1lKSkge1xuICAgICAgICAgIGZpbGVzVG9Mb2FkLnB1c2goZmlsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXJyb3JGaWxlcy5wdXNoKGZpbGUubmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpbGVzVG9Mb2FkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgc2V0RHJvcHBlZEZpbGUoZmlsZXNUb0xvYWRbMF0pO1xuICAgICAgfSBlbHNlIGlmIChlcnJvckZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgc2V0RXJyb3IobmV3IEVycm9yKGBVbnN1cHBvcnRlZCBmaWxlIGZvcm1hdHM6ICR7ZXJyb3JGaWxlcy5qb2luKCcsICcpfWApKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtpc1ZhbGlkRmlsZVR5cGVdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkU3FsUGFuZWw+XG4gICAgICA8UGFuZWxHcm91cCBkaXJlY3Rpb249XCJob3Jpem9udGFsXCI+XG4gICAgICAgIDxQYW5lbCBkZWZhdWx0U2l6ZT17MjB9IG1pblNpemU9ezE1fSBzdHlsZT17U0NIRU1BX1BBTkVMX1NUWUxFfSBjbGFzc05hbWU9XCJzY2hlbWEtcGFuZWxcIj5cbiAgICAgICAgICA8U3R5bGVkRmlsZURyb3BBcmVhXG4gICAgICAgICAgICBkcmFnT3Zlcj17ZHJhZ1N0YXRlfVxuICAgICAgICAgICAgb25EcmFnT3Zlcj17KCkgPT4gc2V0RHJhZ1N0YXRlKHRydWUpfVxuICAgICAgICAgICAgb25EcmFnTGVhdmU9eygpID0+IHNldERyYWdTdGF0ZShmYWxzZSl9XG4gICAgICAgICAgICBmcmFtZT17ZHJvcHBlZEZpbGVBcmVhUmVmLmN1cnJlbnQgfHwgZG9jdW1lbnR9XG4gICAgICAgICAgICBvbkRyb3A9e2hhbmRsZUZpbGVJbnB1dH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZpbGUtdXBsb2FkZXJfX2ZpbGUtZHJvcFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFNjaGVtYVBhbmVsXG4gICAgICAgICAgICAgIHNldFRhYmxlU2NoZW1hPXtzZXRUYWJsZVNjaGVtYX1cbiAgICAgICAgICAgICAgZHJvcHBlZEZpbGU9e2Ryb3BwZWRGaWxlfVxuICAgICAgICAgICAgICBzY2hlbWFVcGRhdGVUcmlnZ2VyPXtzY2hlbWFVcGRhdGVUcmlnZ2VyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1N0eWxlZEZpbGVEcm9wQXJlYT5cbiAgICAgICAgPC9QYW5lbD5cblxuICAgICAgICA8U3R5bGVkUmVzaXplSGFuZGxlIC8+XG5cbiAgICAgICAgPFBhbmVsIG1pblNpemU9ezQwfT5cbiAgICAgICAgICA8U3R5bGVkU3FsRWRpdG9yPlxuICAgICAgICAgICAgPFBhbmVsR3JvdXAgZGlyZWN0aW9uPVwidmVydGljYWxcIj5cbiAgICAgICAgICAgICAgPFBhbmVsIGRlZmF1bHRTaXplPXszMH0gY2xhc3NOYW1lPVwiZWRpdG9yLXBhbmVsXCI+XG4gICAgICAgICAgICAgICAgPFN0eWxlZEVkaXRvclBhbmVsPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZFNxbEFjdGlvbnM+XG4gICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10aXBcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZvcj1cInJ1bi1xdWVyeS10b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtydW5RdWVyeX1cbiAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNSdW5uaW5nIHx8ICFzcWx9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8SWNvbnMuUGxheSBoZWlnaHQ9XCIxOHB4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCBpZD1cInJ1bi1xdWVyeS10b29sdGlwXCIgcGxhY2U9XCJ0b3BcIiBlZmZlY3Q9XCJzb2xpZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgUnVuIFF1ZXJ5ICh7aXNNYWMgPyAn4oyYRW50ZXInIDogJ0N0cmwrRW50ZXInfSBvciBTaGlmdCtFbnRlcilcbiAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvU3R5bGVkU3FsQWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRFZGl0b3IgaXNSdW5uaW5nPXtpc1J1bm5pbmd9PlxuICAgICAgICAgICAgICAgICAgICA8TW9uYWNvRWRpdG9yXG4gICAgICAgICAgICAgICAgICAgICAgaXNSZWFkT25seT17aXNSdW5uaW5nfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUnVuUXVlcnk9e3J1blF1ZXJ5fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJsZVNjaGVtYT17dGFibGVTY2hlbWF9XG4gICAgICAgICAgICAgICAgICAgICAgY29kZT17c3FsfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRFZGl0b3I+XG4gICAgICAgICAgICAgICAgPC9TdHlsZWRFZGl0b3JQYW5lbD5cbiAgICAgICAgICAgICAgPC9QYW5lbD5cblxuICAgICAgICAgICAgICA8U3R5bGVkVmVydGljYWxSZXNpemVIYW5kbGUgLz5cbiAgICAgICAgICAgICAgPFBhbmVsIGNsYXNzTmFtZT1cInByZXZpZXctcGFuZWxcIj5cbiAgICAgICAgICAgICAgICB7aXNSdW5uaW5nID8gKFxuICAgICAgICAgICAgICAgICAgPFN0eWxlZExvYWRpbmdDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciAvPlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRMb2FkaW5nQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICkgOiBlcnJvciA/IChcbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRFcnJvckNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj57ZXJyb3IubWVzc2FnZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvU3R5bGVkRXJyb3JDb250YWluZXI+XG4gICAgICAgICAgICAgICAgKSA6IHJlc3VsdCA/IChcbiAgICAgICAgICAgICAgICAgIDxTdHlsZWREYXRhUGFuZWw+XG4gICAgICAgICAgICAgICAgICAgIDxTdHlsZWRSZXN1bHRBY3Rpb25zPlxuICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gc2Vjb25kYXJ5IG9uQ2xpY2s9e29uQWRkUmVzdWx0VG9NYXB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgQWRkIHRvIE1hcFxuICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3Jlc3VsdC50YWJsZS5udW1Sb3dzfSByb3dzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkUmVzdWx0QWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgICAgPFByZXZpZXdEYXRhUGFuZWxcbiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9e3Jlc3VsdH1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRhVGFibGVTdHlsZT17e319XG4gICAgICAgICAgICAgICAgICAgICAgb25BZGRSZXN1bHRUb01hcD17b25BZGRSZXN1bHRUb01hcH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvU3R5bGVkRGF0YVBhbmVsPlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8L1BhbmVsPlxuICAgICAgICAgICAgPC9QYW5lbEdyb3VwPlxuICAgICAgICAgIDwvU3R5bGVkU3FsRWRpdG9yPlxuICAgICAgICA8L1BhbmVsPlxuICAgICAgPC9QYW5lbEdyb3VwPlxuICAgIDwvU3R5bGVkU3FsUGFuZWw+XG4gICk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBSUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLHFCQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxRQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxZQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxXQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxXQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxPQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxNQUFBLEdBQUFWLE9BQUE7QUFFQSxJQUFBVyxhQUFBLEdBQUFSLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBWSxZQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFBYSxpQkFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMsS0FB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QUFDLGFBQzlDLEVBQUNySSxLQUFLLEdBQUcsUUFBUSxHQUFHLFlBQVksRUFBQyxrQkFDckMsQ0FDQyxDQUNJLENBQUMsZUFDbkJ0SixNQUFBLFlBQUFvUSxhQUFBLENBQUNsTCxZQUFZO0lBQUNFLFNBQVMsRUFBRUE7RUFBVSxnQkFDakNwRixNQUFBLFlBQUFvUSxhQUFBLENBQUN2UCxhQUFBLFdBQVk7SUFDWCtRLFVBQVUsRUFBRXhNLFNBQVU7SUFDdEJ5TSxVQUFVLEVBQUUzSCxRQUFTO0lBQ3JCZ0QsUUFBUSxFQUFFQSxRQUFTO0lBQ25CcEUsV0FBVyxFQUFFQSxXQUFZO0lBQ3pCZ0osSUFBSSxFQUFFNUs7RUFBSSxDQUNYLENBQ1csQ0FDRyxDQUNkLENBQUMsZUFFUmxILE1BQUEsWUFBQW9RLGFBQUEsQ0FBQzNLLDBCQUEwQixNQUFFLENBQUMsZUFDOUJ6RixNQUFBLFlBQUFvUSxhQUFBLENBQUM5UCxxQkFBQSxDQUFBaVEsS0FBSztJQUFDSSxTQUFTLEVBQUM7RUFBZSxHQUM3QnZMLFNBQVMsZ0JBQ1JwRixNQUFBLFlBQUFvUSxhQUFBLENBQUMxSyxzQkFBc0IscUJBQ3JCMUYsTUFBQSxZQUFBb1EsYUFBQSxDQUFDM1AsV0FBQSxDQUFBc1IsY0FBYyxNQUFFLENBQ0ssQ0FBQyxHQUN2QnpKLEtBQUssZ0JBQ1B0SSxNQUFBLFlBQUFvUSxhQUFBLENBQUN6SyxvQkFBb0IscUJBQ25CM0YsTUFBQSxZQUFBb1EsYUFBQSxjQUFNOUgsS0FBSyxDQUFDMEosT0FBYSxDQUNMLENBQUMsR0FDckJsSyxNQUFNLGdCQUNSOUgsTUFBQSxZQUFBb1EsYUFBQSxDQUFDbkwsZUFBZSxxQkFDZGpGLE1BQUEsWUFBQW9RLGFBQUEsQ0FBQy9LLG1CQUFtQixxQkFDbEJyRixNQUFBLFlBQUFvUSxhQUFBLENBQUMzUCxXQUFBLENBQUF3UixNQUFNO0lBQUNDLFNBQVM7SUFBQ2QsT0FBTyxFQUFFakU7RUFBaUIsR0FBQyxZQUVyQyxDQUFDLGVBQ1RuTixNQUFBLFlBQUFvUSxhQUFBLGNBQU10SSxNQUFNLENBQUM4RSxLQUFLLENBQUN1RixPQUFPLEVBQUMsT0FBVSxDQUNsQixDQUFDLGVBQ3RCblMsTUFBQSxZQUFBb1EsYUFBQSxDQUFDclAsaUJBQUEsQ0FBQXFSLGdCQUFnQjtJQUNmdEssTUFBTSxFQUFFQSxNQUFPO0lBQ2Z1SyxjQUFjLEVBQUUsQ0FBQyxDQUFFO0lBQ25CbEYsZ0JBQWdCLEVBQUVBO0VBQWlCLENBQ3BDLENBQ2MsQ0FBQyxHQUNoQixJQUNDLENBQ0csQ0FDRyxDQUNaLENBQ0csQ0FDRSxDQUFDO0FBRXJCLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|