kepler.gl 3.1.0-alpha.6 → 3.1.0
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/dist/src/actions/src/action-types.d.ts +2 -0
- package/dist/src/actions/src/ui-state-actions.d.ts +16 -0
- package/dist/src/ai-assistant/src/actions.d.ts +1 -1
- package/dist/src/ai-assistant/src/components/ai-assistant-component.d.ts +2 -1
- package/dist/src/ai-assistant/src/constants.d.ts +3 -3
- package/dist/src/ai-assistant/src/reducers/index.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/basemap-functions.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/filter-function.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/layer-creation-function.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/layer-style-function.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/loadurl-function.d.ts +1 -1
- package/dist/src/ai-assistant/src/tools/utils.d.ts +73 -0
- package/dist/src/components/src/common/data-table/index.d.ts +1 -1
- package/dist/src/components/src/common/data-table/option-dropdown.d.ts +3 -3
- package/dist/src/components/src/common/file-uploader/file-drop.d.ts +2 -2
- package/dist/src/components/src/kepler-gl.d.ts +5 -0
- package/dist/src/components/src/loading-indicator.d.ts +13 -0
- package/dist/src/components/src/map-container.d.ts +3 -0
- package/dist/src/constants/src/default-settings.d.ts +1 -0
- package/dist/src/duckdb/src/plugin.d.ts +1 -0
- package/dist/src/duckdb/src/table/duckdb-table-utils.d.ts +13 -0
- package/dist/src/duckdb/src/table/duckdb-table.d.ts +7 -2
- package/dist/src/reducers/src/ui-state-updaters.d.ts +10 -0
- package/dist/src/reducers/src/vis-state-updaters.d.ts +1 -0
- package/dist/src/reducers/src/vis-state.d.ts +4 -0
- package/dist/src/utils/src/application-config.d.ts +2 -0
- package/dist/src/utils/src/observe-dimensions.d.ts +2 -1
- package/package.json +5 -3
- package/src/actions/dist/action-types.d.ts +2 -0
- package/src/actions/dist/action-types.js +2 -1
- package/src/actions/dist/ui-state-actions.d.ts +16 -0
- package/src/actions/dist/ui-state-actions.js +17 -2
- package/src/actions/package.json +8 -8
- package/src/actions/src/action-types.ts +1 -0
- package/src/actions/src/ui-state-actions.ts +22 -0
- package/src/ai-assistant/README.md +76 -0
- package/src/ai-assistant/dist/actions.d.ts +1 -1
- package/src/ai-assistant/dist/actions.js +2 -2
- package/src/ai-assistant/dist/components/ai-assistant-component.d.ts +2 -1
- package/src/ai-assistant/dist/components/ai-assistant-component.js +64 -23
- package/src/ai-assistant/dist/components/ai-assistant-config.js +67 -54
- package/src/ai-assistant/dist/constants.d.ts +3 -3
- package/src/ai-assistant/dist/constants.js +4 -4
- package/src/ai-assistant/dist/reducers/index.d.ts +1 -1
- package/src/ai-assistant/dist/reducers/index.js +2 -2
- package/src/ai-assistant/dist/tools/basemap-functions.d.ts +1 -1
- package/src/ai-assistant/dist/tools/basemap-functions.js +1 -1
- package/src/ai-assistant/dist/tools/filter-function.d.ts +1 -1
- package/src/ai-assistant/dist/tools/filter-function.js +9 -6
- package/src/ai-assistant/dist/tools/layer-creation-function.d.ts +1 -1
- package/src/ai-assistant/dist/tools/layer-creation-function.js +1 -1
- package/src/ai-assistant/dist/tools/layer-style-function.d.ts +1 -1
- package/src/ai-assistant/dist/tools/layer-style-function.js +1 -1
- package/src/ai-assistant/dist/tools/loadurl-function.d.ts +1 -1
- package/src/ai-assistant/dist/tools/loadurl-function.js +1 -1
- package/src/ai-assistant/dist/tools/utils.d.ts +73 -0
- package/src/ai-assistant/dist/tools/utils.js +211 -3
- package/src/ai-assistant/package.json +13 -9
- package/src/ai-assistant/src/actions.ts +2 -2
- package/src/ai-assistant/src/components/ai-assistant-component.tsx +56 -23
- package/src/ai-assistant/src/components/ai-assistant-config.tsx +63 -46
- package/src/ai-assistant/src/config/models.json +32 -0
- package/src/ai-assistant/src/constants.ts +7 -2
- package/src/ai-assistant/src/reducers/index.ts +2 -2
- package/src/ai-assistant/src/tools/basemap-functions.tsx +1 -1
- package/src/ai-assistant/src/tools/filter-function.tsx +11 -7
- package/src/ai-assistant/src/tools/layer-creation-function.tsx +1 -1
- package/src/ai-assistant/src/tools/layer-style-function.tsx +1 -1
- package/src/ai-assistant/src/tools/loadurl-function.tsx +1 -1
- package/src/ai-assistant/src/tools/utils.ts +212 -2
- package/src/cloud-providers/package.json +2 -2
- package/src/common-utils/package.json +3 -3
- package/src/components/dist/common/data-table/header-cell.js +10 -10
- package/src/components/dist/common/data-table/index.d.ts +1 -1
- package/src/components/dist/common/data-table/index.js +1 -1
- package/src/components/dist/common/data-table/option-dropdown.d.ts +3 -3
- package/src/components/dist/common/data-table/option-dropdown.js +5 -5
- package/src/components/dist/common/file-uploader/file-drop.d.ts +2 -2
- package/src/components/dist/common/file-uploader/file-drop.js +1 -1
- package/src/components/dist/common/portaled.js +1 -1
- package/src/components/dist/editor/editor.js +1 -1
- package/src/components/dist/kepler-gl.d.ts +5 -0
- package/src/components/dist/kepler-gl.js +7 -2
- package/src/components/dist/loading-indicator.d.ts +13 -0
- package/src/components/dist/loading-indicator.js +40 -0
- package/src/components/dist/map-container.d.ts +3 -0
- package/src/components/dist/map-container.js +11 -3
- package/src/components/dist/modals/save-map-modal.js +4 -3
- package/src/components/package.json +15 -15
- package/src/components/src/common/data-table/header-cell.tsx +5 -3
- package/src/components/src/common/data-table/index.tsx +1 -1
- package/src/components/src/common/data-table/option-dropdown.tsx +7 -7
- package/src/components/src/common/file-uploader/file-drop.tsx +11 -11
- package/src/components/src/common/portaled.tsx +12 -12
- package/src/components/src/editor/editor.tsx +3 -3
- package/src/components/src/kepler-gl.tsx +7 -2
- package/src/components/src/loading-indicator.tsx +49 -0
- package/src/components/src/map-container.tsx +19 -1
- package/src/components/src/modals/save-map-modal.tsx +6 -2
- package/src/constants/dist/default-settings.d.ts +1 -0
- package/src/constants/dist/default-settings.js +13 -9
- package/src/constants/dist/keyevent.js +1 -1
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/72/80/7a7c561d7985e92aab7b9683e7baf5a0286b353a8f2609c4c71099f668d012be027929e4bbac937f9aa0c9a61be3bd4405136f582895f05aa0313c8efa42 +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/8f/f6/b66955867599392dc69ff1db64419e83c087a82c2e3d4b6418d49ac6bc80e3200dd6c86cdfd4a2cf98ce573f71a5281b86ba3df8a7210e02544f63054191 +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/bd/ba/47ea8fcb11ecd5cd47ad867052e58b1f7e0c8dc5f8918a36fe90eaf45981 +2 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/f0/6e/aadf3c48345aa72e7b2fb92e8c9788d04986b55caf83daa3fbd749c37c44 +2 -0
- package/src/constants/package.json +2 -2
- package/src/constants/src/default-settings.ts +11 -5
- package/src/constants/src/keyevent.ts +2 -2
- package/src/constants/umd/keplergl.min.js +1 -1
- package/src/deckgl-arrow-layers/package.json +1 -1
- package/src/deckgl-layers/package.json +4 -4
- package/src/duckdb/dist/components/preview-data-panel.js +2 -11
- package/src/duckdb/dist/components/sql-panel.js +7 -3
- package/src/duckdb/dist/components/tree.js +5 -4
- package/src/duckdb/dist/plugin.d.ts +1 -0
- package/src/duckdb/dist/plugin.js +9 -2
- package/src/duckdb/dist/processors/data-processor.js +4 -5
- package/src/duckdb/dist/table/duckdb-table-utils.d.ts +13 -0
- package/src/duckdb/dist/table/duckdb-table-utils.js +110 -0
- package/src/duckdb/dist/table/duckdb-table.d.ts +7 -2
- package/src/duckdb/dist/table/duckdb-table.js +189 -44
- package/src/duckdb/package.json +6 -6
- package/src/duckdb/src/components/preview-data-panel.tsx +0 -5
- package/src/duckdb/src/components/sql-panel.tsx +4 -2
- package/src/duckdb/src/components/tree.tsx +5 -1
- package/src/duckdb/src/plugin.ts +8 -1
- package/src/duckdb/src/processors/data-processor.ts +3 -4
- package/src/duckdb/src/table/duckdb-table-utils.ts +106 -0
- package/src/duckdb/src/table/duckdb-table.ts +134 -33
- package/src/effects/package.json +5 -5
- package/src/layers/dist/icon-layer/icon-layer.js +1 -1
- package/src/layers/dist/index.d.ts +3 -0
- package/src/layers/dist/index.js +6 -7
- package/src/layers/dist/point-layer/point-layer.d.ts +1 -1
- package/src/layers/dist/point-layer/point-layer.js +8 -2
- package/src/layers/package.json +9 -9
- package/src/layers/src/icon-layer/icon-layer.ts +8 -10
- package/src/layers/src/index.ts +5 -5
- package/src/layers/src/point-layer/point-layer.ts +6 -1
- package/src/localization/package.json +1 -1
- package/src/processors/dist/data-processor.js +2 -4
- package/src/processors/package.json +7 -7
- package/src/processors/src/data-processor.ts +1 -3
- package/src/reducers/dist/ui-state-updaters.d.ts +10 -0
- package/src/reducers/dist/ui-state-updaters.js +22 -2
- package/src/reducers/dist/ui-state.js +2 -2
- package/src/reducers/dist/vis-state-updaters.d.ts +1 -0
- package/src/reducers/dist/vis-state-updaters.js +21 -5
- package/src/reducers/dist/vis-state.d.ts +4 -0
- package/src/reducers/package.json +16 -16
- package/src/reducers/src/ui-state-updaters.ts +24 -0
- package/src/reducers/src/ui-state.ts +3 -1
- package/src/reducers/src/vis-state-updaters.ts +24 -5
- package/src/schemas/dist/dataset-schema.js +38 -2
- package/src/schemas/package.json +8 -7
- package/src/schemas/src/dataset-schema.ts +43 -1
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/5f/aa/96c67b383dbcd2b95625113a5389c6078fd8a53e6fc73a054229709f2dac1e0a409e7117049485a569fbebf8434a319451842671398904bfe1a7f7b5991c +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/af/aa/228fbff58007b23eea5eb6cc7d2da1f0af1d8a7024129a416ea88b4df0ad7afc7aec93b09f3dd42a98f1d6a6f4dce6b53204818da85ef5becc42f928a64d +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/40/72/cac221d8459e6b743bc62ecdb370ed854b21ec30d3f7f4c06c7d1d7ffde2 +2 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/c1/39/f7cd1d5947ec6e5d82bfa07041271344eb02f9e67bf5823acf2f22c2d01f +2 -0
- package/src/styles/package.json +2 -2
- package/src/styles/umd/keplergl.min.js +1 -1
- package/src/table/dist/dataset-utils.js +10 -4
- package/src/table/package.json +5 -5
- package/src/table/src/dataset-utils.ts +7 -1
- package/src/tasks/package.json +2 -2
- package/src/types/package.json +1 -1
- package/src/types/reducers.d.ts +2 -0
- package/src/utils/dist/application-config.d.ts +2 -0
- package/src/utils/dist/application-config.js +4 -2
- package/src/utils/dist/data-utils.js +14 -2
- package/src/utils/dist/dataset-utils.js +5 -3
- package/src/utils/dist/dom-to-image.js +1 -1
- package/src/utils/dist/dom-utils.js +1 -1
- package/src/utils/dist/map-style-utils/mapbox-gl-style-editor.js +7 -1
- package/src/utils/dist/observe-dimensions.d.ts +2 -1
- package/src/utils/dist/observe-dimensions.js +10 -4
- package/src/utils/dist/utils.js +1 -1
- package/src/utils/package.json +4 -4
- package/src/utils/src/application-config.ts +9 -1
- package/src/utils/src/data-utils.ts +13 -1
- package/src/utils/src/dataset-utils.ts +1 -1
- package/src/utils/src/dom-to-image.ts +5 -6
- package/src/utils/src/dom-utils.ts +15 -15
- package/src/utils/src/map-style-utils/mapbox-gl-style-editor.ts +6 -0
- package/src/utils/src/observe-dimensions.ts +9 -4
- package/src/utils/src/utils.ts +8 -8
- package/umd/keplergl.min.css +1 -1
- package/umd/keplergl.min.js +1499 -1428
|
@@ -12,13 +12,16 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|
|
12
12
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
13
|
var _react = _interopRequireWildcard(require("react"));
|
|
14
14
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
15
|
-
var
|
|
16
|
-
require("
|
|
15
|
+
var _core = require("@openassistant/core");
|
|
16
|
+
var _geoda = require("@openassistant/geoda");
|
|
17
|
+
var _echarts = require("@openassistant/echarts");
|
|
18
|
+
var _ui = require("@openassistant/ui");
|
|
19
|
+
require("@openassistant/echarts/dist/index.css");
|
|
20
|
+
require("@openassistant/ui/dist/index.css");
|
|
17
21
|
var _styles = require("@kepler.gl/styles");
|
|
18
22
|
var _basemapFunctions = require("../tools/basemap-functions");
|
|
19
23
|
var _loadurlFunction = require("../tools/loadurl-function");
|
|
20
24
|
var _constants = require("../constants");
|
|
21
|
-
var _filterFunction = require("../tools/filter-function");
|
|
22
25
|
var _layerCreationFunction = require("../tools/layer-creation-function");
|
|
23
26
|
var _layerStyleFunction = require("../tools/layer-style-function");
|
|
24
27
|
var _utils = require("../tools/utils");
|
|
@@ -38,6 +41,17 @@ function AiAssistantComponentFactory() {
|
|
|
38
41
|
keplerGlActions = _ref.keplerGlActions,
|
|
39
42
|
mapStyle = _ref.mapStyle,
|
|
40
43
|
visState = _ref.visState;
|
|
44
|
+
// get values from dataset, used by LLM functions
|
|
45
|
+
var getValuesCallback = function getValuesCallback(datasetName, variableName) {
|
|
46
|
+
return (0, _utils.getValuesFromDataset)(visState.datasets, datasetName, variableName);
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
// highlight rows, used by LLM functions and plots (scatterplot, histogram)
|
|
50
|
+
var highlightRowsCallback = function highlightRowsCallback(datasetName, selectedRowIndices) {
|
|
51
|
+
return (0, _utils.highlightRows)(visState.datasets, visState.layers, datasetName, selectedRowIndices, keplerGlActions.layerSetIsValid);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// define LLM functions
|
|
41
55
|
var functions = [(0, _basemapFunctions.basemapFunctionDefinition)({
|
|
42
56
|
mapStyleChange: keplerGlActions.mapStyleChange,
|
|
43
57
|
mapStyle: mapStyle
|
|
@@ -51,21 +65,44 @@ function AiAssistantComponentFactory() {
|
|
|
51
65
|
}), (0, _layerStyleFunction.updateLayerColorFunctionDefinition)({
|
|
52
66
|
layerVisualChannelConfigChange: keplerGlActions.layerVisualChannelConfigChange,
|
|
53
67
|
layers: visState.layers
|
|
54
|
-
}), (0,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
68
|
+
}), (0, _echarts.histogramFunctionDefinition)({
|
|
69
|
+
getValues: getValuesCallback,
|
|
70
|
+
onSelected: highlightRowsCallback
|
|
71
|
+
}), (0, _echarts.scatterplotFunctionDefinition)({
|
|
72
|
+
getValues: function () {
|
|
73
|
+
var _getValues = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(datasetName, xVar, yVar) {
|
|
74
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
75
|
+
while (1) switch (_context.prev = _context.next) {
|
|
76
|
+
case 0:
|
|
77
|
+
return _context.abrupt("return", (0, _utils.getScatterplotValuesFromDataset)(visState.datasets, datasetName, xVar, yVar));
|
|
78
|
+
case 1:
|
|
79
|
+
case "end":
|
|
80
|
+
return _context.stop();
|
|
81
|
+
}
|
|
82
|
+
}, _callee);
|
|
83
|
+
}));
|
|
84
|
+
function getValues(_x, _x2, _x3) {
|
|
85
|
+
return _getValues.apply(this, arguments);
|
|
86
|
+
}
|
|
87
|
+
return getValues;
|
|
88
|
+
}(),
|
|
89
|
+
onSelected: highlightRowsCallback
|
|
90
|
+
}), (0, _geoda.dataClassifyFunctionDefinition)({
|
|
91
|
+
getValues: getValuesCallback
|
|
92
|
+
}), (0, _geoda.spatialCountFunctionDefinition)({
|
|
93
|
+
getValues: getValuesCallback,
|
|
94
|
+
getGeometries: function getGeometries(datasetName) {
|
|
95
|
+
return (0, _utils.getGeometriesFromDataset)(visState.datasets, visState.layers, visState.layerData, datasetName);
|
|
63
96
|
},
|
|
64
|
-
|
|
65
|
-
return (0, _utils.
|
|
97
|
+
saveAsDataset: function saveAsDataset(datasetName, data) {
|
|
98
|
+
return (0, _utils.saveAsDataset)(visState.datasets, datasetName, data, keplerGlActions.addDataToMap);
|
|
66
99
|
}
|
|
67
100
|
})];
|
|
101
|
+
|
|
102
|
+
// enable voice and screen capture
|
|
68
103
|
var enableVoiceAndScreenCapture = aiAssistant.config.provider === 'openai' || aiAssistant.config.provider === 'google';
|
|
104
|
+
|
|
105
|
+
// define assistant props
|
|
69
106
|
var assistantProps = {
|
|
70
107
|
name: _constants.ASSISTANT_NAME,
|
|
71
108
|
description: _constants.ASSISTANT_DESCRIPTION,
|
|
@@ -76,16 +113,18 @@ function AiAssistantComponentFactory() {
|
|
|
76
113
|
instructions: _constants.INSTRUCTIONS,
|
|
77
114
|
functions: functions
|
|
78
115
|
};
|
|
79
|
-
var _useAssistant = (0,
|
|
116
|
+
var _useAssistant = (0, _core.useAssistant)(assistantProps),
|
|
80
117
|
initializeAssistant = _useAssistant.initializeAssistant,
|
|
81
118
|
addAdditionalContext = _useAssistant.addAdditionalContext;
|
|
119
|
+
|
|
120
|
+
// initialize assistant with context
|
|
82
121
|
var initializeAssistantWithContext = /*#__PURE__*/function () {
|
|
83
|
-
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
|
122
|
+
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
84
123
|
var context;
|
|
85
|
-
return _regenerator["default"].wrap(function
|
|
86
|
-
while (1) switch (
|
|
124
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
125
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
87
126
|
case 0:
|
|
88
|
-
|
|
127
|
+
_context2.next = 2;
|
|
89
128
|
return initializeAssistant();
|
|
90
129
|
case 2:
|
|
91
130
|
context = (0, _utils.getDatasetContext)(visState.datasets, visState.layers);
|
|
@@ -94,14 +133,16 @@ function AiAssistantComponentFactory() {
|
|
|
94
133
|
});
|
|
95
134
|
case 4:
|
|
96
135
|
case "end":
|
|
97
|
-
return
|
|
136
|
+
return _context2.stop();
|
|
98
137
|
}
|
|
99
|
-
},
|
|
138
|
+
}, _callee2);
|
|
100
139
|
}));
|
|
101
140
|
return function initializeAssistantWithContext() {
|
|
102
141
|
return _ref2.apply(this, arguments);
|
|
103
142
|
};
|
|
104
143
|
}();
|
|
144
|
+
|
|
145
|
+
// initialize assistant with context
|
|
105
146
|
(0, _react.useEffect)(function () {
|
|
106
147
|
initializeAssistantWithContext();
|
|
107
148
|
// re-initialize assistant when datasets, filters or layers change
|
|
@@ -123,7 +164,7 @@ function AiAssistantComponentFactory() {
|
|
|
123
164
|
};
|
|
124
165
|
return /*#__PURE__*/_react["default"].createElement(StyledAiAssistantComponent, {
|
|
125
166
|
className: "ai-assistant-component"
|
|
126
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
167
|
+
}, /*#__PURE__*/_react["default"].createElement(_ui.AiAssistant, (0, _extends2["default"])({}, assistantProps, {
|
|
127
168
|
theme: theme.textColor === _styles.textColorLT ? 'light' : 'dark',
|
|
128
169
|
welcomeMessage: _constants.WELCOME_MESSAGE,
|
|
129
170
|
temperature: aiAssistant.config.temperature,
|
|
@@ -145,4 +186,4 @@ function AiAssistantComponentFactory() {
|
|
|
145
186
|
return (0, _styledComponents.withTheme)(AiAssistantComponent);
|
|
146
187
|
}
|
|
147
188
|
var _default = exports["default"] = AiAssistantComponentFactory;
|
|
148
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZWFjdEFpQXNzaXN0IiwiX3N0eWxlcyIsIl9iYXNlbWFwRnVuY3Rpb25zIiwiX2xvYWR1cmxGdW5jdGlvbiIsIl9jb25zdGFudHMiLCJfZmlsdGVyRnVuY3Rpb24iLCJfbGF5ZXJDcmVhdGlvbkZ1bmN0aW9uIiwiX2xheWVyU3R5bGVGdW5jdGlvbiIsIl91dGlscyIsIl90ZW1wbGF0ZU9iamVjdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIlN0eWxlZEFpQXNzaXN0YW50Q29tcG9uZW50Iiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJBaUFzc2lzdGFudENvbXBvbmVudEZhY3RvcnkiLCJkZXBzIiwiQWlBc3Npc3RhbnRDb21wb25lbnQiLCJfcmVmIiwidGhlbWUiLCJhaUFzc2lzdGFudCIsInVwZGF0ZUFpQXNzaXN0YW50TWVzc2FnZXMiLCJzZXRTdGFydFNjcmVlbkNhcHR1cmUiLCJzZXRTY3JlZW5DYXB0dXJlZCIsImtlcGxlckdsQWN0aW9ucyIsIm1hcFN0eWxlIiwidmlzU3RhdGUiLCJmdW5jdGlvbnMiLCJiYXNlbWFwRnVuY3Rpb25EZWZpbml0aW9uIiwibWFwU3R5bGVDaGFuZ2UiLCJsb2FkVXJsRnVuY3Rpb25EZWZpbml0aW9uIiwiYWRkRGF0YVRvTWFwIiwibG9hZGVycyIsImxvYWRPcHRpb25zIiwiYWRkTGF5ZXJGdW5jdGlvbkRlZmluaXRpb24iLCJhZGRMYXllciIsImRhdGFzZXRzIiwidXBkYXRlTGF5ZXJDb2xvckZ1bmN0aW9uRGVmaW5pdGlvbiIsImxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZ0NoYW5nZSIsImxheWVycyIsImZpbHRlckZ1bmN0aW9uRGVmaW5pdGlvbiIsImZpbHRlcnMiLCJjcmVhdGVPclVwZGF0ZUZpbHRlciIsInNldEZpbHRlciIsInNldEZpbHRlclBsb3QiLCJoaXN0b2dyYW1GdW5jdGlvbkRlZmluaXRpb24iLCJnZXRWYWx1ZXMiLCJkYXRhc2V0TmFtZSIsInZhcmlhYmxlTmFtZSIsImdldFZhbHVlc0Zyb21EYXRhc2V0Iiwib25TZWxlY3RlZCIsInNlbGVjdGVkUm93SW5kaWNlcyIsImhpZ2hsaWdodFJvd3MiLCJsYXllclNldElzVmFsaWQiLCJlbmFibGVWb2ljZUFuZFNjcmVlbkNhcHR1cmUiLCJjb25maWciLCJwcm92aWRlciIsImFzc2lzdGFudFByb3BzIiwibmFtZSIsIkFTU0lTVEFOVF9OQU1FIiwiZGVzY3JpcHRpb24iLCJBU1NJU1RBTlRfREVTQ1JJUFRJT04iLCJ2ZXJzaW9uIiwiQVNTSVNUQU5UX1ZFUlNJT04iLCJtb2RlbFByb3ZpZGVyIiwibW9kZWwiLCJhcGlLZXkiLCJpbnN0cnVjdGlvbnMiLCJJTlNUUlVDVElPTlMiLCJfdXNlQXNzaXN0YW50IiwidXNlQXNzaXN0YW50IiwiaW5pdGlhbGl6ZUFzc2lzdGFudCIsImFkZEFkZGl0aW9uYWxDb250ZXh0IiwiaW5pdGlhbGl6ZUFzc2lzdGFudFdpdGhDb250ZXh0IiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsImNvbnRleHQiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiZ2V0RGF0YXNldENvbnRleHQiLCJzdG9wIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJ1c2VFZmZlY3QiLCJvblJlc3RhcnRBc3Npc3RhbnQiLCJvbk1lc3NhZ2VzVXBkYXRlZCIsIm1lc3NhZ2VzIiwib25TY3JlZW5zaG90Q2xpY2siLCJvblJlbW92ZVNjcmVlbnNob3QiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiQWlBc3Npc3RhbnQiLCJfZXh0ZW5kczIiLCJ0ZXh0Q29sb3IiLCJ0ZXh0Q29sb3JMVCIsIndlbGNvbWVNZXNzYWdlIiwiV0VMQ09NRV9NRVNTQUdFIiwidGVtcGVyYXR1cmUiLCJ0b3BQIiwiaGlzdG9yeU1lc3NhZ2VzIiwiZW5hYmxlVm9pY2UiLCJlbmFibGVTY3JlZW5DYXB0dXJlIiwic2NyZWVuQ2FwdHVyZWRCYXNlNjQiLCJzY3JlZW5zaG90VG9Bc2siLCJzY3JlZW5DYXB0dXJlZCIsIm9uUmVzdGFydENoYXQiLCJmb250U2l6ZSIsImJvdE1lc3NhZ2VDbGFzc05hbWUiLCJnaXRodWJJc3N1ZUxpbmsiLCJpZGVhcyIsIlBST01QVF9JREVBUyIsIndpdGhUaGVtZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL2FpLWFzc2lzdGFudC1jb21wb25lbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUVmZmVjdH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCwge3dpdGhUaGVtZX0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQWlBc3Npc3RhbnQsXG4gIE1lc3NhZ2VNb2RlbCxcbiAgdXNlQXNzaXN0YW50LFxuICBoaXN0b2dyYW1GdW5jdGlvbkRlZmluaXRpb25cbn0gZnJvbSAncmVhY3QtYWktYXNzaXN0JztcbmltcG9ydCAncmVhY3QtYWktYXNzaXN0L2Rpc3QvaW5kZXguY3NzJztcblxuaW1wb3J0IHt0ZXh0Q29sb3JMVH0gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuaW1wb3J0IHtBY3Rpb25IYW5kbGVyfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtNYXBTdHlsZX0gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG5pbXBvcnQge1Zpc1N0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3NjaGVtYXMnO1xuXG5pbXBvcnQge2Jhc2VtYXBGdW5jdGlvbkRlZmluaXRpb259IGZyb20gJy4uL3Rvb2xzL2Jhc2VtYXAtZnVuY3Rpb25zJztcbmltcG9ydCB7bG9hZFVybEZ1bmN0aW9uRGVmaW5pdGlvbn0gZnJvbSAnLi4vdG9vbHMvbG9hZHVybC1mdW5jdGlvbic7XG5cbmltcG9ydCB7QWlBc3Npc3RhbnRTdGF0ZX0gZnJvbSAnLi4vcmVkdWNlcnMnO1xuaW1wb3J0IHtzZXRTY3JlZW5DYXB0dXJlZCwgc2V0U3RhcnRTY3JlZW5DYXB0dXJlLCB1cGRhdGVBaUFzc2lzdGFudE1lc3NhZ2VzfSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7XG4gIEFTU0lTVEFOVF9ERVNDUklQVElPTixcbiAgQVNTSVNUQU5UX05BTUUsXG4gIEFTU0lTVEFOVF9WRVJTSU9OLFxuICBJTlNUUlVDVElPTlMsXG4gIFBST01QVF9JREVBUyxcbiAgV0VMQ09NRV9NRVNTQUdFXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge2ZpbHRlckZ1bmN0aW9uRGVmaW5pdGlvbn0gZnJvbSAnLi4vdG9vbHMvZmlsdGVyLWZ1bmN0aW9uJztcbmltcG9ydCB7YWRkTGF5ZXJGdW5jdGlvbkRlZmluaXRpb259IGZyb20gJy4uL3Rvb2xzL2xheWVyLWNyZWF0aW9uLWZ1bmN0aW9uJztcbmltcG9ydCB7dXBkYXRlTGF5ZXJDb2xvckZ1bmN0aW9uRGVmaW5pdGlvbn0gZnJvbSAnLi4vdG9vbHMvbGF5ZXItc3R5bGUtZnVuY3Rpb24nO1xuaW1wb3J0IHtTZWxlY3RlZEtlcGxlckdsQWN0aW9uc30gZnJvbSAnLi9haS1hc3Npc3RhbnQtbWFuYWdlcic7XG5pbXBvcnQge2dldERhdGFzZXRDb250ZXh0LCBnZXRWYWx1ZXNGcm9tRGF0YXNldCwgaGlnaGxpZ2h0Um93c30gZnJvbSAnLi4vdG9vbHMvdXRpbHMnO1xuXG50eXBlIFRoZW1lUHJvcHMgPSB7dGhlbWU6IGFueX07XG5cbmV4cG9ydCB0eXBlIEFpQXNzaXN0YW50Q29tcG9uZW50UHJvcHMgPSB7XG4gIGFpQXNzaXN0YW50OiBBaUFzc2lzdGFudFN0YXRlO1xuICB1cGRhdGVBaUFzc2lzdGFudE1lc3NhZ2VzOiBBY3Rpb25IYW5kbGVyPHR5cGVvZiB1cGRhdGVBaUFzc2lzdGFudE1lc3NhZ2VzPjtcbiAgc2V0U3RhcnRTY3JlZW5DYXB0dXJlOiBBY3Rpb25IYW5kbGVyPHR5cGVvZiBzZXRTdGFydFNjcmVlbkNhcHR1cmU+O1xuICBzZXRTY3JlZW5DYXB0dXJlZDogQWN0aW9uSGFuZGxlcjx0eXBlb2Ygc2V0U2NyZWVuQ2FwdHVyZWQ+O1xuICBrZXBsZXJHbEFjdGlvbnM6IFNlbGVjdGVkS2VwbGVyR2xBY3Rpb25zO1xuICBtYXBTdHlsZTogTWFwU3R5bGU7XG4gIHZpc1N0YXRlOiBWaXNTdGF0ZTtcbn07XG5cbmNvbnN0IFN0eWxlZEFpQXNzaXN0YW50Q29tcG9uZW50ID0gc3R5bGVkLmRpdmBcbiAgaGVpZ2h0OiAxMDAlO1xuICBwYWRkaW5nLWJvdHRvbTogNHB4O1xuXG4gICoge1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgfVxuYDtcblxuQWlBc3Npc3RhbnRDb21wb25lbnRGYWN0b3J5LmRlcHMgPSBbXTtcblxuZnVuY3Rpb24gQWlBc3Npc3RhbnRDb21wb25lbnRGYWN0b3J5KCkge1xuICBjb25zdCBBaUFzc2lzdGFudENvbXBvbmVudDogUmVhY3QuRkM8QWlBc3Npc3RhbnRDb21wb25lbnRQcm9wcyAmIFRoZW1lUHJvcHM+ID0gKHtcbiAgICB0aGVtZSxcbiAgICBhaUFzc2lzdGFudCxcbiAgICB1cGRhdGVBaUFzc2lzdGFudE1lc3NhZ2VzLFxuICAgIHNldFN0YXJ0U2NyZWVuQ2FwdHVyZSxcbiAgICBzZXRTY3JlZW5DYXB0dXJlZCxcbiAgICBrZXBsZXJHbEFjdGlvbnMsXG4gICAgbWFwU3R5bGUsXG4gICAgdmlzU3RhdGVcbiAgfTogQWlBc3Npc3RhbnRDb21wb25lbnRQcm9wcyAmIFRoZW1lUHJvcHMpID0+IHtcbiAgICBjb25zdCBmdW5jdGlvbnMgPSBbXG4gICAgICBiYXNlbWFwRnVuY3Rpb25EZWZpbml0aW9uKHttYXBTdHlsZUNoYW5nZToga2VwbGVyR2xBY3Rpb25zLm1hcFN0eWxlQ2hhbmdlLCBtYXBTdHlsZX0pLFxuICAgICAgbG9hZFVybEZ1bmN0aW9uRGVmaW5pdGlvbih7XG4gICAgICAgIGFkZERhdGFUb01hcDoga2VwbGVyR2xBY3Rpb25zLmFkZERhdGFUb01hcCxcbiAgICAgICAgbG9hZGVyczogdmlzU3RhdGUubG9hZGVycyxcbiAgICAgICAgbG9hZE9wdGlvbnM6IHZpc1N0YXRlLmxvYWRPcHRpb25zXG4gICAgICB9KSxcbiAgICAgIGFkZExheWVyRnVuY3Rpb25EZWZpbml0aW9uKHtcbiAgICAgICAgYWRkTGF5ZXI6IGtlcGxlckdsQWN0aW9ucy5hZGRMYXllcixcbiAgICAgICAgZGF0YXNldHM6IHZpc1N0YXRlLmRhdGFzZXRzXG4gICAgICB9KSxcbiAgICAgIHVwZGF0ZUxheWVyQ29sb3JGdW5jdGlvbkRlZmluaXRpb24oe1xuICAgICAgICBsYXllclZpc3VhbENoYW5uZWxDb25maWdDaGFuZ2U6IGtlcGxlckdsQWN0aW9ucy5sYXllclZpc3VhbENoYW5uZWxDb25maWdDaGFuZ2UsXG4gICAgICAgIGxheWVyczogdmlzU3RhdGUubGF5ZXJzXG4gICAgICB9KSxcbiAgICAgIGZpbHRlckZ1bmN0aW9uRGVmaW5pdGlvbih7XG4gICAgICAgIGRhdGFzZXRzOiB2aXNTdGF0ZS5kYXRhc2V0cyxcbiAgICAgICAgZmlsdGVyczogdmlzU3RhdGUuZmlsdGVycyxcbiAgICAgICAgY3JlYXRlT3JVcGRhdGVGaWx0ZXI6IGtlcGxlckdsQWN0aW9ucy5jcmVhdGVPclVwZGF0ZUZpbHRlcixcbiAgICAgICAgc2V0RmlsdGVyOiBrZXBsZXJHbEFjdGlvbnMuc2V0RmlsdGVyLFxuICAgICAgICBzZXRGaWx0ZXJQbG90OiBrZXBsZXJHbEFjdGlvbnMuc2V0RmlsdGVyUGxvdFxuICAgICAgfSksXG4gICAgICBoaXN0b2dyYW1GdW5jdGlvbkRlZmluaXRpb24oe1xuICAgICAgICBnZXRWYWx1ZXM6IChkYXRhc2V0TmFtZTogc3RyaW5nLCB2YXJpYWJsZU5hbWU6IHN0cmluZyk6IG51bWJlcltdID0+XG4gICAgICAgICAgZ2V0VmFsdWVzRnJvbURhdGFzZXQodmlzU3RhdGUuZGF0YXNldHMsIGRhdGFzZXROYW1lLCB2YXJpYWJsZU5hbWUpLFxuICAgICAgICBvblNlbGVjdGVkOiAoZGF0YXNldE5hbWU6IHN0cmluZywgc2VsZWN0ZWRSb3dJbmRpY2VzOiBudW1iZXJbXSkgPT5cbiAgICAgICAgICBoaWdobGlnaHRSb3dzKFxuICAgICAgICAgICAgdmlzU3RhdGUuZGF0YXNldHMsXG4gICAgICAgICAgICB2aXNTdGF0ZS5sYXllcnMsXG4gICAgICAgICAgICBkYXRhc2V0TmFtZSxcbiAgICAgICAgICAgIHNlbGVjdGVkUm93SW5kaWNlcyxcbiAgICAgICAgICAgIGtlcGxlckdsQWN0aW9ucy5sYXllclNldElzVmFsaWRcbiAgICAgICAgICApXG4gICAgICB9KVxuICAgIF07XG5cbiAgICBjb25zdCBlbmFibGVWb2ljZUFuZFNjcmVlbkNhcHR1cmUgPVxuICAgICAgYWlBc3Npc3RhbnQuY29uZmlnLnByb3ZpZGVyID09PSAnb3BlbmFpJyB8fCBhaUFzc2lzdGFudC5jb25maWcucHJvdmlkZXIgPT09ICdnb29nbGUnO1xuXG4gICAgY29uc3QgYXNzaXN0YW50UHJvcHMgPSB7XG4gICAgICBuYW1lOiBBU1NJU1RBTlRfTkFNRSxcbiAgICAgIGRlc2NyaXB0aW9uOiBBU1NJU1RBTlRfREVTQ1JJUFRJT04sXG4gICAgICB2ZXJzaW9uOiBBU1NJU1RBTlRfVkVSU0lPTixcbiAgICAgIG1vZGVsUHJvdmlkZXI6IGFpQXNzaXN0YW50LmNvbmZpZy5wcm92aWRlcixcbiAgICAgIG1vZGVsOiBhaUFzc2lzdGFudC5jb25maWcubW9kZWwsXG4gICAgICBhcGlLZXk6IGFpQXNzaXN0YW50LmNvbmZpZy5hcGlLZXksXG4gICAgICBpbnN0cnVjdGlvbnM6IElOU1RSVUNUSU9OUyxcbiAgICAgIGZ1bmN0aW9uc1xuICAgIH07XG5cbiAgICBjb25zdCB7aW5pdGlhbGl6ZUFzc2lzdGFudCwgYWRkQWRkaXRpb25hbENvbnRleHR9ID0gdXNlQXNzaXN0YW50KGFzc2lzdGFudFByb3BzKTtcblxuICAgIGNvbnN0IGluaXRpYWxpemVBc3Npc3RhbnRXaXRoQ29udGV4dCA9IGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGluaXRpYWxpemVBc3Npc3RhbnQoKTtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBnZXREYXRhc2V0Q29udGV4dCh2aXNTdGF0ZS5kYXRhc2V0cywgdmlzU3RhdGUubGF5ZXJzKTtcbiAgICAgIGFkZEFkZGl0aW9uYWxDb250ZXh0KHtjb250ZXh0fSk7XG4gICAgfTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpbml0aWFsaXplQXNzaXN0YW50V2l0aENvbnRleHQoKTtcbiAgICAgIC8vIHJlLWluaXRpYWxpemUgYXNzaXN0YW50IHdoZW4gZGF0YXNldHMsIGZpbHRlcnMgb3IgbGF5ZXJzIGNoYW5nZVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgIH0sIFt2aXNTdGF0ZS5kYXRhc2V0cywgdmlzU3RhdGUuZmlsdGVycywgdmlzU3RhdGUubGF5ZXJzXSk7XG5cbiAgICBjb25zdCBvblJlc3RhcnRBc3Npc3RhbnQgPSAoKSA9PiB7XG4gICAgICAvLyBjbGVhbiB1cCBhaUFzc2lzdGFudCBzdGF0ZVxuICAgICAgdXBkYXRlQWlBc3Npc3RhbnRNZXNzYWdlcyhbXSk7XG4gICAgICBpbml0aWFsaXplQXNzaXN0YW50V2l0aENvbnRleHQoKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25NZXNzYWdlc1VwZGF0ZWQgPSAobWVzc2FnZXM6IE1lc3NhZ2VNb2RlbFtdKSA9PiB7XG4gICAgICB1cGRhdGVBaUFzc2lzdGFudE1lc3NhZ2VzKG1lc3NhZ2VzKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25TY3JlZW5zaG90Q2xpY2sgPSAoKSA9PiB7XG4gICAgICBzZXRTdGFydFNjcmVlbkNhcHR1cmUodHJ1ZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uUmVtb3ZlU2NyZWVuc2hvdCA9ICgpID0+IHtcbiAgICAgIHNldFNjcmVlbkNhcHR1cmVkKCcnKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTdHlsZWRBaUFzc2lzdGFudENvbXBvbmVudCBjbGFzc05hbWU9XCJhaS1hc3Npc3RhbnQtY29tcG9uZW50XCI+XG4gICAgICAgIDxBaUFzc2lzdGFudFxuICAgICAgICAgIHsuLi5hc3Npc3RhbnRQcm9wc31cbiAgICAgICAgICB0aGVtZT17dGhlbWUudGV4dENvbG9yID09PSB0ZXh0Q29sb3JMVCA/ICdsaWdodCcgOiAnZGFyayd9XG4gICAgICAgICAgd2VsY29tZU1lc3NhZ2U9e1dFTENPTUVfTUVTU0FHRX1cbiAgICAgICAgICB0ZW1wZXJhdHVyZT17YWlBc3Npc3RhbnQuY29uZmlnLnRlbXBlcmF0dXJlfVxuICAgICAgICAgIHRvcFA9e2FpQXNzaXN0YW50LmNvbmZpZy50b3BQfVxuICAgICAgICAgIGhpc3RvcnlNZXNzYWdlcz17YWlBc3Npc3RhbnQubWVzc2FnZXN9XG4gICAgICAgICAgb25NZXNzYWdlc1VwZGF0ZWQ9e29uTWVzc2FnZXNVcGRhdGVkfVxuICAgICAgICAgIGVuYWJsZVZvaWNlPXtlbmFibGVWb2ljZUFuZFNjcmVlbkNhcHR1cmV9XG4gICAgICAgICAgZW5hYmxlU2NyZWVuQ2FwdHVyZT17ZW5hYmxlVm9pY2VBbmRTY3JlZW5DYXB0dXJlfVxuICAgICAgICAgIG9uU2NyZWVuc2hvdENsaWNrPXtvblNjcmVlbnNob3RDbGlja31cbiAgICAgICAgICBzY3JlZW5DYXB0dXJlZEJhc2U2ND17YWlBc3Npc3RhbnQuc2NyZWVuc2hvdFRvQXNrLnNjcmVlbkNhcHR1cmVkfVxuICAgICAgICAgIG9uUmVtb3ZlU2NyZWVuc2hvdD17b25SZW1vdmVTY3JlZW5zaG90fVxuICAgICAgICAgIG9uUmVzdGFydENoYXQ9e29uUmVzdGFydEFzc2lzdGFudH1cbiAgICAgICAgICBmb250U2l6ZT17J3RleHQtdGlueSd9XG4gICAgICAgICAgYm90TWVzc2FnZUNsYXNzTmFtZT17Jyd9XG4gICAgICAgICAgZ2l0aHViSXNzdWVMaW5rPXsnaHR0cHM6Ly9naXRodWIuY29tL2tlcGxlcmdsL2tlcGxlci5nbC9pc3N1ZXMnfVxuICAgICAgICAgIGlkZWFzPXtQUk9NUFRfSURFQVN9XG4gICAgICAgIC8+XG4gICAgICA8L1N0eWxlZEFpQXNzaXN0YW50Q29tcG9uZW50PlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIHdpdGhUaGVtZShBaUFzc2lzdGFudENvbXBvbmVudCkgYXMgUmVhY3QuRkM8QWlBc3Npc3RhbnRDb21wb25lbnRQcm9wcz47XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFpQXNzaXN0YW50Q29tcG9uZW50RmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUYsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLGNBQUEsR0FBQUYsT0FBQTtBQU1BQSxPQUFBO0FBRUEsSUFBQUcsT0FBQSxHQUFBSCxPQUFBO0FBS0EsSUFBQUksaUJBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGdCQUFBLEdBQUFMLE9BQUE7QUFJQSxJQUFBTSxVQUFBLEdBQUFOLE9BQUE7QUFRQSxJQUFBTyxlQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxzQkFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsbUJBQUEsR0FBQVQsT0FBQTtBQUVBLElBQUFVLE1BQUEsR0FBQVYsT0FBQTtBQUFzRixJQUFBVyxl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
|
|
189
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9jb3JlIiwiX2dlb2RhIiwiX2VjaGFydHMiLCJfdWkiLCJfc3R5bGVzIiwiX2Jhc2VtYXBGdW5jdGlvbnMiLCJfbG9hZHVybEZ1bmN0aW9uIiwiX2NvbnN0YW50cyIsIl9sYXllckNyZWF0aW9uRnVuY3Rpb24iLCJfbGF5ZXJTdHlsZUZ1bmN0aW9uIiwiX3V0aWxzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiU3R5bGVkQWlBc3Npc3RhbnRDb21wb25lbnQiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsIkFpQXNzaXN0YW50Q29tcG9uZW50RmFjdG9yeSIsImRlcHMiLCJBaUFzc2lzdGFudENvbXBvbmVudCIsIl9yZWYiLCJ0aGVtZSIsImFpQXNzaXN0YW50IiwidXBkYXRlQWlBc3Npc3RhbnRNZXNzYWdlcyIsInNldFN0YXJ0U2NyZWVuQ2FwdHVyZSIsInNldFNjcmVlbkNhcHR1cmVkIiwia2VwbGVyR2xBY3Rpb25zIiwibWFwU3R5bGUiLCJ2aXNTdGF0ZSIsImdldFZhbHVlc0NhbGxiYWNrIiwiZGF0YXNldE5hbWUiLCJ2YXJpYWJsZU5hbWUiLCJnZXRWYWx1ZXNGcm9tRGF0YXNldCIsImRhdGFzZXRzIiwiaGlnaGxpZ2h0Um93c0NhbGxiYWNrIiwic2VsZWN0ZWRSb3dJbmRpY2VzIiwiaGlnaGxpZ2h0Um93cyIsImxheWVycyIsImxheWVyU2V0SXNWYWxpZCIsImZ1bmN0aW9ucyIsImJhc2VtYXBGdW5jdGlvbkRlZmluaXRpb24iLCJtYXBTdHlsZUNoYW5nZSIsImxvYWRVcmxGdW5jdGlvbkRlZmluaXRpb24iLCJhZGREYXRhVG9NYXAiLCJsb2FkZXJzIiwibG9hZE9wdGlvbnMiLCJhZGRMYXllckZ1bmN0aW9uRGVmaW5pdGlvbiIsImFkZExheWVyIiwidXBkYXRlTGF5ZXJDb2xvckZ1bmN0aW9uRGVmaW5pdGlvbiIsImxheWVyVmlzdWFsQ2hhbm5lbENvbmZpZ0NoYW5nZSIsImhpc3RvZ3JhbUZ1bmN0aW9uRGVmaW5pdGlvbiIsImdldFZhbHVlcyIsIm9uU2VsZWN0ZWQiLCJzY2F0dGVycGxvdEZ1bmN0aW9uRGVmaW5pdGlvbiIsIl9nZXRWYWx1ZXMiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInhWYXIiLCJ5VmFyIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImFicnVwdCIsImdldFNjYXR0ZXJwbG90VmFsdWVzRnJvbURhdGFzZXQiLCJzdG9wIiwiX3giLCJfeDIiLCJfeDMiLCJhcHBseSIsImFyZ3VtZW50cyIsImRhdGFDbGFzc2lmeUZ1bmN0aW9uRGVmaW5pdGlvbiIsInNwYXRpYWxDb3VudEZ1bmN0aW9uRGVmaW5pdGlvbiIsImdldEdlb21ldHJpZXMiLCJnZXRHZW9tZXRyaWVzRnJvbURhdGFzZXQiLCJsYXllckRhdGEiLCJzYXZlQXNEYXRhc2V0IiwiZGF0YSIsImVuYWJsZVZvaWNlQW5kU2NyZWVuQ2FwdHVyZSIsImNvbmZpZyIsInByb3ZpZGVyIiwiYXNzaXN0YW50UHJvcHMiLCJuYW1lIiwiQVNTSVNUQU5UX05BTUUiLCJkZXNjcmlwdGlvbiIsIkFTU0lTVEFOVF9ERVNDUklQVElPTiIsInZlcnNpb24iLCJBU1NJU1RBTlRfVkVSU0lPTiIsIm1vZGVsUHJvdmlkZXIiLCJtb2RlbCIsImFwaUtleSIsImluc3RydWN0aW9ucyIsIklOU1RSVUNUSU9OUyIsIl91c2VBc3Npc3RhbnQiLCJ1c2VBc3Npc3RhbnQiLCJpbml0aWFsaXplQXNzaXN0YW50IiwiYWRkQWRkaXRpb25hbENvbnRleHQiLCJpbml0aWFsaXplQXNzaXN0YW50V2l0aENvbnRleHQiLCJfcmVmMiIsIl9jYWxsZWUyIiwiY29udGV4dCIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsImdldERhdGFzZXRDb250ZXh0IiwidXNlRWZmZWN0IiwiZmlsdGVycyIsIm9uUmVzdGFydEFzc2lzdGFudCIsIm9uTWVzc2FnZXNVcGRhdGVkIiwibWVzc2FnZXMiLCJvblNjcmVlbnNob3RDbGljayIsIm9uUmVtb3ZlU2NyZWVuc2hvdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJBaUFzc2lzdGFudCIsIl9leHRlbmRzMiIsInRleHRDb2xvciIsInRleHRDb2xvckxUIiwid2VsY29tZU1lc3NhZ2UiLCJXRUxDT01FX01FU1NBR0UiLCJ0ZW1wZXJhdHVyZSIsInRvcFAiLCJoaXN0b3J5TWVzc2FnZXMiLCJlbmFibGVWb2ljZSIsImVuYWJsZVNjcmVlbkNhcHR1cmUiLCJzY3JlZW5DYXB0dXJlZEJhc2U2NCIsInNjcmVlbnNob3RUb0FzayIsInNjcmVlbkNhcHR1cmVkIiwib25SZXN0YXJ0Q2hhdCIsImZvbnRTaXplIiwiYm90TWVzc2FnZUNsYXNzTmFtZSIsImdpdGh1Yklzc3VlTGluayIsImlkZWFzIiwiUFJPTVBUX0lERUFTIiwid2l0aFRoZW1lIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvYWktYXNzaXN0YW50LWNvbXBvbmVudC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkLCB7d2l0aFRoZW1lfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge01lc3NhZ2VNb2RlbCwgdXNlQXNzaXN0YW50fSBmcm9tICdAb3BlbmFzc2lzdGFudC9jb3JlJztcbmltcG9ydCB7XG4gIGRhdGFDbGFzc2lmeUZ1bmN0aW9uRGVmaW5pdGlvbixcbiAgc3BhdGlhbENvdW50RnVuY3Rpb25EZWZpbml0aW9uLFxuICBTcGF0aWFsSm9pbkdlb21ldHJpZXNcbn0gZnJvbSAnQG9wZW5hc3Npc3RhbnQvZ2VvZGEnO1xuaW1wb3J0IHtoaXN0b2dyYW1GdW5jdGlvbkRlZmluaXRpb24sIHNjYXR0ZXJwbG90RnVuY3Rpb25EZWZpbml0aW9ufSBmcm9tICdAb3BlbmFzc2lzdGFudC9lY2hhcnRzJztcbmltcG9ydCB7QWlBc3Npc3RhbnR9IGZyb20gJ0BvcGVuYXNzaXN0YW50L3VpJztcbmltcG9ydCAnQG9wZW5hc3Npc3RhbnQvZWNoYXJ0cy9kaXN0L2luZGV4LmNzcyc7XG5pbXBvcnQgJ0BvcGVuYXNzaXN0YW50L3VpL2Rpc3QvaW5kZXguY3NzJztcblxuaW1wb3J0IHt0ZXh0Q29sb3JMVH0gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuaW1wb3J0IHtBY3Rpb25IYW5kbGVyfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtNYXBTdHlsZX0gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG5pbXBvcnQge1Zpc1N0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3NjaGVtYXMnO1xuXG5pbXBvcnQge2Jhc2VtYXBGdW5jdGlvbkRlZmluaXRpb259IGZyb20gJy4uL3Rvb2xzL2Jhc2VtYXAtZnVuY3Rpb25zJztcbmltcG9ydCB7bG9hZFVybEZ1bmN0aW9uRGVmaW5pdGlvbn0gZnJvbSAnLi4vdG9vbHMvbG9hZHVybC1mdW5jdGlvbic7XG5cbmltcG9ydCB7QWlBc3Npc3RhbnRTdGF0ZX0gZnJvbSAnLi4vcmVkdWNlcnMnO1xuaW1wb3J0IHtzZXRTY3JlZW5DYXB0dXJlZCwgc2V0U3RhcnRTY3JlZW5DYXB0dXJlLCB1cGRhdGVBaUFzc2lzdGFudE1lc3NhZ2VzfSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7XG4gIEFTU0lTVEFOVF9ERVNDUklQVElPTixcbiAgQVNTSVNUQU5UX05BTUUsXG4gIEFTU0lTVEFOVF9WRVJTSU9OLFxuICBJTlNUUlVDVElPTlMsXG4gIFBST01QVF9JREVBUyxcbiAgV0VMQ09NRV9NRVNTQUdFXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge2FkZExheWVyRnVuY3Rpb25EZWZpbml0aW9ufSBmcm9tICcuLi90b29scy9sYXllci1jcmVhdGlvbi1mdW5jdGlvbic7XG5pbXBvcnQge3VwZGF0ZUxheWVyQ29sb3JGdW5jdGlvbkRlZmluaXRpb259IGZyb20gJy4uL3Rvb2xzL2xheWVyLXN0eWxlLWZ1bmN0aW9uJztcbmltcG9ydCB7U2VsZWN0ZWRLZXBsZXJHbEFjdGlvbnN9IGZyb20gJy4vYWktYXNzaXN0YW50LW1hbmFnZXInO1xuaW1wb3J0IHtcbiAgZ2V0RGF0YXNldENvbnRleHQsXG4gIGdldEdlb21ldHJpZXNGcm9tRGF0YXNldCxcbiAgZ2V0U2NhdHRlcnBsb3RWYWx1ZXNGcm9tRGF0YXNldCxcbiAgZ2V0VmFsdWVzRnJvbURhdGFzZXQsXG4gIGhpZ2hsaWdodFJvd3MsXG4gIHNhdmVBc0RhdGFzZXRcbn0gZnJvbSAnLi4vdG9vbHMvdXRpbHMnO1xuXG50eXBlIFRoZW1lUHJvcHMgPSB7dGhlbWU6IGFueX07XG5cbmV4cG9ydCB0eXBlIEFpQXNzaXN0YW50Q29tcG9uZW50UHJvcHMgPSB7XG4gIGFpQXNzaXN0YW50OiBBaUFzc2lzdGFudFN0YXRlO1xuICB1cGRhdGVBaUFzc2lzdGFudE1lc3NhZ2VzOiBBY3Rpb25IYW5kbGVyPHR5cGVvZiB1cGRhdGVBaUFzc2lzdGFudE1lc3NhZ2VzPjtcbiAgc2V0U3RhcnRTY3JlZW5DYXB0dXJlOiBBY3Rpb25IYW5kbGVyPHR5cGVvZiBzZXRTdGFydFNjcmVlbkNhcHR1cmU+O1xuICBzZXRTY3JlZW5DYXB0dXJlZDogQWN0aW9uSGFuZGxlcjx0eXBlb2Ygc2V0U2NyZWVuQ2FwdHVyZWQ+O1xuICBrZXBsZXJHbEFjdGlvbnM6IFNlbGVjdGVkS2VwbGVyR2xBY3Rpb25zO1xuICBtYXBTdHlsZTogTWFwU3R5bGU7XG4gIHZpc1N0YXRlOiBWaXNTdGF0ZTtcbn07XG5cbmNvbnN0IFN0eWxlZEFpQXNzaXN0YW50Q29tcG9uZW50ID0gc3R5bGVkLmRpdmBcbiAgaGVpZ2h0OiAxMDAlO1xuICBwYWRkaW5nLWJvdHRvbTogNHB4O1xuXG4gICoge1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgfVxuYDtcblxuQWlBc3Npc3RhbnRDb21wb25lbnRGYWN0b3J5LmRlcHMgPSBbXTtcblxuZnVuY3Rpb24gQWlBc3Npc3RhbnRDb21wb25lbnRGYWN0b3J5KCkge1xuICBjb25zdCBBaUFzc2lzdGFudENvbXBvbmVudDogUmVhY3QuRkM8QWlBc3Npc3RhbnRDb21wb25lbnRQcm9wcyAmIFRoZW1lUHJvcHM+ID0gKHtcbiAgICB0aGVtZSxcbiAgICBhaUFzc2lzdGFudCxcbiAgICB1cGRhdGVBaUFzc2lzdGFudE1lc3NhZ2VzLFxuICAgIHNldFN0YXJ0U2NyZWVuQ2FwdHVyZSxcbiAgICBzZXRTY3JlZW5DYXB0dXJlZCxcbiAgICBrZXBsZXJHbEFjdGlvbnMsXG4gICAgbWFwU3R5bGUsXG4gICAgdmlzU3RhdGVcbiAgfTogQWlBc3Npc3RhbnRDb21wb25lbnRQcm9wcyAmIFRoZW1lUHJvcHMpID0+IHtcbiAgICAvLyBnZXQgdmFsdWVzIGZyb20gZGF0YXNldCwgdXNlZCBieSBMTE0gZnVuY3Rpb25zXG4gICAgY29uc3QgZ2V0VmFsdWVzQ2FsbGJhY2sgPSAoZGF0YXNldE5hbWU6IHN0cmluZywgdmFyaWFibGVOYW1lOiBzdHJpbmcpOiBudW1iZXJbXSA9PlxuICAgICAgZ2V0VmFsdWVzRnJvbURhdGFzZXQodmlzU3RhdGUuZGF0YXNldHMsIGRhdGFzZXROYW1lLCB2YXJpYWJsZU5hbWUpO1xuXG4gICAgLy8gaGlnaGxpZ2h0IHJvd3MsIHVzZWQgYnkgTExNIGZ1bmN0aW9ucyBhbmQgcGxvdHMgKHNjYXR0ZXJwbG90LCBoaXN0b2dyYW0pXG4gICAgY29uc3QgaGlnaGxpZ2h0Um93c0NhbGxiYWNrID0gKGRhdGFzZXROYW1lOiBzdHJpbmcsIHNlbGVjdGVkUm93SW5kaWNlczogbnVtYmVyW10pID0+XG4gICAgICBoaWdobGlnaHRSb3dzKFxuICAgICAgICB2aXNTdGF0ZS5kYXRhc2V0cyxcbiAgICAgICAgdmlzU3RhdGUubGF5ZXJzLFxuICAgICAgICBkYXRhc2V0TmFtZSxcbiAgICAgICAgc2VsZWN0ZWRSb3dJbmRpY2VzLFxuICAgICAgICBrZXBsZXJHbEFjdGlvbnMubGF5ZXJTZXRJc1ZhbGlkXG4gICAgICApO1xuXG4gICAgLy8gZGVmaW5lIExMTSBmdW5jdGlvbnNcbiAgICBjb25zdCBmdW5jdGlvbnMgPSBbXG4gICAgICBiYXNlbWFwRnVuY3Rpb25EZWZpbml0aW9uKHttYXBTdHlsZUNoYW5nZToga2VwbGVyR2xBY3Rpb25zLm1hcFN0eWxlQ2hhbmdlLCBtYXBTdHlsZX0pLFxuICAgICAgbG9hZFVybEZ1bmN0aW9uRGVmaW5pdGlvbih7XG4gICAgICAgIGFkZERhdGFUb01hcDoga2VwbGVyR2xBY3Rpb25zLmFkZERhdGFUb01hcCxcbiAgICAgICAgbG9hZGVyczogdmlzU3RhdGUubG9hZGVycyxcbiAgICAgICAgbG9hZE9wdGlvbnM6IHZpc1N0YXRlLmxvYWRPcHRpb25zXG4gICAgICB9KSxcbiAgICAgIGFkZExheWVyRnVuY3Rpb25EZWZpbml0aW9uKHtcbiAgICAgICAgYWRkTGF5ZXI6IGtlcGxlckdsQWN0aW9ucy5hZGRMYXllcixcbiAgICAgICAgZGF0YXNldHM6IHZpc1N0YXRlLmRhdGFzZXRzXG4gICAgICB9KSxcbiAgICAgIHVwZGF0ZUxheWVyQ29sb3JGdW5jdGlvbkRlZmluaXRpb24oe1xuICAgICAgICBsYXllclZpc3VhbENoYW5uZWxDb25maWdDaGFuZ2U6IGtlcGxlckdsQWN0aW9ucy5sYXllclZpc3VhbENoYW5uZWxDb25maWdDaGFuZ2UsXG4gICAgICAgIGxheWVyczogdmlzU3RhdGUubGF5ZXJzXG4gICAgICB9KSxcbiAgICAgIGhpc3RvZ3JhbUZ1bmN0aW9uRGVmaW5pdGlvbih7XG4gICAgICAgIGdldFZhbHVlczogZ2V0VmFsdWVzQ2FsbGJhY2ssXG4gICAgICAgIG9uU2VsZWN0ZWQ6IGhpZ2hsaWdodFJvd3NDYWxsYmFja1xuICAgICAgfSksXG4gICAgICBzY2F0dGVycGxvdEZ1bmN0aW9uRGVmaW5pdGlvbih7XG4gICAgICAgIGdldFZhbHVlczogYXN5bmMgKGRhdGFzZXROYW1lOiBzdHJpbmcsIHhWYXI6IHN0cmluZywgeVZhcjogc3RyaW5nKSA9PlxuICAgICAgICAgIGdldFNjYXR0ZXJwbG90VmFsdWVzRnJvbURhdGFzZXQodmlzU3RhdGUuZGF0YXNldHMsIGRhdGFzZXROYW1lLCB4VmFyLCB5VmFyKSxcbiAgICAgICAgb25TZWxlY3RlZDogaGlnaGxpZ2h0Um93c0NhbGxiYWNrXG4gICAgICB9KSxcbiAgICAgIGRhdGFDbGFzc2lmeUZ1bmN0aW9uRGVmaW5pdGlvbih7XG4gICAgICAgIGdldFZhbHVlczogZ2V0VmFsdWVzQ2FsbGJhY2tcbiAgICAgIH0pLFxuICAgICAgc3BhdGlhbENvdW50RnVuY3Rpb25EZWZpbml0aW9uKHtcbiAgICAgICAgZ2V0VmFsdWVzOiBnZXRWYWx1ZXNDYWxsYmFjayxcbiAgICAgICAgZ2V0R2VvbWV0cmllczogKGRhdGFzZXROYW1lOiBzdHJpbmcpOiBTcGF0aWFsSm9pbkdlb21ldHJpZXMgPT5cbiAgICAgICAgICBnZXRHZW9tZXRyaWVzRnJvbURhdGFzZXQoXG4gICAgICAgICAgICB2aXNTdGF0ZS5kYXRhc2V0cyxcbiAgICAgICAgICAgIHZpc1N0YXRlLmxheWVycyxcbiAgICAgICAgICAgIHZpc1N0YXRlLmxheWVyRGF0YSxcbiAgICAgICAgICAgIGRhdGFzZXROYW1lXG4gICAgICAgICAgKSxcbiAgICAgICAgc2F2ZUFzRGF0YXNldDogKGRhdGFzZXROYW1lOiBzdHJpbmcsIGRhdGE6IFJlY29yZDxzdHJpbmcsIG51bWJlcltdPikgPT5cbiAgICAgICAgICBzYXZlQXNEYXRhc2V0KHZpc1N0YXRlLmRhdGFzZXRzLCBkYXRhc2V0TmFtZSwgZGF0YSwga2VwbGVyR2xBY3Rpb25zLmFkZERhdGFUb01hcClcbiAgICAgIH0pXG4gICAgXTtcblxuICAgIC8vIGVuYWJsZSB2b2ljZSBhbmQgc2NyZWVuIGNhcHR1cmVcbiAgICBjb25zdCBlbmFibGVWb2ljZUFuZFNjcmVlbkNhcHR1cmUgPVxuICAgICAgYWlBc3Npc3RhbnQuY29uZmlnLnByb3ZpZGVyID09PSAnb3BlbmFpJyB8fCBhaUFzc2lzdGFudC5jb25maWcucHJvdmlkZXIgPT09ICdnb29nbGUnO1xuXG4gICAgLy8gZGVmaW5lIGFzc2lzdGFudCBwcm9wc1xuICAgIGNvbnN0IGFzc2lzdGFudFByb3BzID0ge1xuICAgICAgbmFtZTogQVNTSVNUQU5UX05BTUUsXG4gICAgICBkZXNjcmlwdGlvbjogQVNTSVNUQU5UX0RFU0NSSVBUSU9OLFxuICAgICAgdmVyc2lvbjogQVNTSVNUQU5UX1ZFUlNJT04sXG4gICAgICBtb2RlbFByb3ZpZGVyOiBhaUFzc2lzdGFudC5jb25maWcucHJvdmlkZXIsXG4gICAgICBtb2RlbDogYWlBc3Npc3RhbnQuY29uZmlnLm1vZGVsLFxuICAgICAgYXBpS2V5OiBhaUFzc2lzdGFudC5jb25maWcuYXBpS2V5LFxuICAgICAgaW5zdHJ1Y3Rpb25zOiBJTlNUUlVDVElPTlMsXG4gICAgICBmdW5jdGlvbnNcbiAgICB9O1xuXG4gICAgY29uc3Qge2luaXRpYWxpemVBc3Npc3RhbnQsIGFkZEFkZGl0aW9uYWxDb250ZXh0fSA9IHVzZUFzc2lzdGFudChhc3Npc3RhbnRQcm9wcyk7XG5cbiAgICAvLyBpbml0aWFsaXplIGFzc2lzdGFudCB3aXRoIGNvbnRleHRcbiAgICBjb25zdCBpbml0aWFsaXplQXNzaXN0YW50V2l0aENvbnRleHQgPSBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBpbml0aWFsaXplQXNzaXN0YW50KCk7XG4gICAgICBjb25zdCBjb250ZXh0ID0gZ2V0RGF0YXNldENvbnRleHQodmlzU3RhdGUuZGF0YXNldHMsIHZpc1N0YXRlLmxheWVycyk7XG4gICAgICBhZGRBZGRpdGlvbmFsQ29udGV4dCh7Y29udGV4dH0pO1xuICAgIH07XG5cbiAgICAvLyBpbml0aWFsaXplIGFzc2lzdGFudCB3aXRoIGNvbnRleHRcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaW5pdGlhbGl6ZUFzc2lzdGFudFdpdGhDb250ZXh0KCk7XG4gICAgICAvLyByZS1pbml0aWFsaXplIGFzc2lzdGFudCB3aGVuIGRhdGFzZXRzLCBmaWx0ZXJzIG9yIGxheWVycyBjaGFuZ2VcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbdmlzU3RhdGUuZGF0YXNldHMsIHZpc1N0YXRlLmZpbHRlcnMsIHZpc1N0YXRlLmxheWVyc10pO1xuXG4gICAgY29uc3Qgb25SZXN0YXJ0QXNzaXN0YW50ID0gKCkgPT4ge1xuICAgICAgLy8gY2xlYW4gdXAgYWlBc3Npc3RhbnQgc3RhdGVcbiAgICAgIHVwZGF0ZUFpQXNzaXN0YW50TWVzc2FnZXMoW10pO1xuICAgICAgaW5pdGlhbGl6ZUFzc2lzdGFudFdpdGhDb250ZXh0KCk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTWVzc2FnZXNVcGRhdGVkID0gKG1lc3NhZ2VzOiBNZXNzYWdlTW9kZWxbXSkgPT4ge1xuICAgICAgdXBkYXRlQWlBc3Npc3RhbnRNZXNzYWdlcyhtZXNzYWdlcyk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uU2NyZWVuc2hvdENsaWNrID0gKCkgPT4ge1xuICAgICAgc2V0U3RhcnRTY3JlZW5DYXB0dXJlKHRydWUpO1xuICAgIH07XG5cbiAgICBjb25zdCBvblJlbW92ZVNjcmVlbnNob3QgPSAoKSA9PiB7XG4gICAgICBzZXRTY3JlZW5DYXB0dXJlZCgnJyk7XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkQWlBc3Npc3RhbnRDb21wb25lbnQgY2xhc3NOYW1lPVwiYWktYXNzaXN0YW50LWNvbXBvbmVudFwiPlxuICAgICAgICA8QWlBc3Npc3RhbnRcbiAgICAgICAgICB7Li4uYXNzaXN0YW50UHJvcHN9XG4gICAgICAgICAgdGhlbWU9e3RoZW1lLnRleHRDb2xvciA9PT0gdGV4dENvbG9yTFQgPyAnbGlnaHQnIDogJ2RhcmsnfVxuICAgICAgICAgIHdlbGNvbWVNZXNzYWdlPXtXRUxDT01FX01FU1NBR0V9XG4gICAgICAgICAgdGVtcGVyYXR1cmU9e2FpQXNzaXN0YW50LmNvbmZpZy50ZW1wZXJhdHVyZX1cbiAgICAgICAgICB0b3BQPXthaUFzc2lzdGFudC5jb25maWcudG9wUH1cbiAgICAgICAgICBoaXN0b3J5TWVzc2FnZXM9e2FpQXNzaXN0YW50Lm1lc3NhZ2VzfVxuICAgICAgICAgIG9uTWVzc2FnZXNVcGRhdGVkPXtvbk1lc3NhZ2VzVXBkYXRlZH1cbiAgICAgICAgICBlbmFibGVWb2ljZT17ZW5hYmxlVm9pY2VBbmRTY3JlZW5DYXB0dXJlfVxuICAgICAgICAgIGVuYWJsZVNjcmVlbkNhcHR1cmU9e2VuYWJsZVZvaWNlQW5kU2NyZWVuQ2FwdHVyZX1cbiAgICAgICAgICBvblNjcmVlbnNob3RDbGljaz17b25TY3JlZW5zaG90Q2xpY2t9XG4gICAgICAgICAgc2NyZWVuQ2FwdHVyZWRCYXNlNjQ9e2FpQXNzaXN0YW50LnNjcmVlbnNob3RUb0Fzay5zY3JlZW5DYXB0dXJlZH1cbiAgICAgICAgICBvblJlbW92ZVNjcmVlbnNob3Q9e29uUmVtb3ZlU2NyZWVuc2hvdH1cbiAgICAgICAgICBvblJlc3RhcnRDaGF0PXtvblJlc3RhcnRBc3Npc3RhbnR9XG4gICAgICAgICAgZm9udFNpemU9eyd0ZXh0LXRpbnknfVxuICAgICAgICAgIGJvdE1lc3NhZ2VDbGFzc05hbWU9eycnfVxuICAgICAgICAgIGdpdGh1Yklzc3VlTGluaz17J2h0dHBzOi8vZ2l0aHViLmNvbS9rZXBsZXJnbC9rZXBsZXIuZ2wvaXNzdWVzJ31cbiAgICAgICAgICBpZGVhcz17UFJPTVBUX0lERUFTfVxuICAgICAgICAvPlxuICAgICAgPC9TdHlsZWRBaUFzc2lzdGFudENvbXBvbmVudD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiB3aXRoVGhlbWUoQWlBc3Npc3RhbnRDb21wb25lbnQpIGFzIFJlYWN0LkZDPEFpQXNzaXN0YW50Q29tcG9uZW50UHJvcHM+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBBaUFzc2lzdGFudENvbXBvbmVudEZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFGLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFLQSxJQUFBSSxRQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxHQUFBLEdBQUFMLE9BQUE7QUFDQUEsT0FBQTtBQUNBQSxPQUFBO0FBRUEsSUFBQU0sT0FBQSxHQUFBTixPQUFBO0FBS0EsSUFBQU8saUJBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGdCQUFBLEdBQUFSLE9BQUE7QUFJQSxJQUFBUyxVQUFBLEdBQUFULE9BQUE7QUFRQSxJQUFBVSxzQkFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsbUJBQUEsR0FBQVgsT0FBQTtBQUVBLElBQUFZLE1BQUEsR0FBQVosT0FBQTtBQU93QixJQUFBYSxlQUFBLEVBNUN4QjtBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFoQix3QkFBQWdCLENBQUEs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QWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSUMsUUFBd0IsRUFBSztNQUN0RHhGLHlCQUF5QixDQUFDd0YsUUFBUSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFNQyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFBLEVBQVM7TUFDOUJ4RixxQkFBcUIsQ0FBQyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQU15RixrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFBLEVBQVM7TUFDL0J4RixpQkFBaUIsQ0FBQyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELG9CQUNFaEQsTUFBQSxZQUFBeUksYUFBQSxDQUFDckcsMEJBQTBCO01BQUNzRyxTQUFTLEVBQUM7SUFBd0IsZ0JBQzVEMUksTUFBQSxZQUFBeUksYUFBQSxDQUFDbEksR0FBQSxDQUFBb0ksV0FBVyxNQUFBQyxTQUFBLGlCQUNOakMsY0FBYztNQUNsQi9ELEtBQUssRUFBRUEsS0FBSyxDQUFDaUcsU0FBUyxLQUFLQyxtQkFBVyxHQUFHLE9BQU8sR0FBRyxNQUFPO01BQzFEQyxjQUFjLEVBQUVDLDBCQUFnQjtNQUNoQ0MsV0FBVyxFQUFFcEcsV0FBVyxDQUFDNEQsTUFBTSxDQUFDd0MsV0FBWTtNQUM1Q0MsSUFBSSxFQUFFckcsV0FBVyxDQUFDNEQsTUFBTSxDQUFDeUMsSUFBSztNQUM5QkMsZUFBZSxFQUFFdEcsV0FBVyxDQUFDeUYsUUFBUztNQUN0Q0QsaUJBQWlCLEVBQUVBLGlCQUFrQjtNQUNyQ2UsV0FBVyxFQUFFNUMsMkJBQTRCO01BQ3pDNkMsbUJBQW1CLEVBQUU3QywyQkFBNEI7TUFDakQrQixpQkFBaUIsRUFBRUEsaUJBQWtCO01BQ3JDZSxvQkFBb0IsRUFBRXpHLFdBQVcsQ0FBQzBHLGVBQWUsQ0FBQ0MsY0FBZTtNQUNqRWhCLGtCQUFrQixFQUFFQSxrQkFBbUI7TUFDdkNpQixhQUFhLEVBQUVyQixrQkFBbUI7TUFDbENzQixRQUFRLEVBQUUsV0FBWTtNQUN0QkMsbUJBQW1CLEVBQUUsRUFBRztNQUN4QkMsZUFBZSxFQUFFLDhDQUErQztNQUNoRUMsS0FBSyxFQUFFQztJQUFhLEVBQ3JCLENBQ3lCLENBQUM7RUFFakMsQ0FBQztFQUVELE9BQU8sSUFBQUMsMkJBQVMsRUFBQ3JILG9CQUFvQixDQUFDO0FBQ3hDO0FBQUMsSUFBQXNILFFBQUEsR0FBQUMsT0FBQSxjQUVjekgsMkJBQTJCIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -15,16 +15,13 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
|
15
15
|
var _reactIntl = require("react-intl");
|
|
16
16
|
var _components = require("@kepler.gl/components");
|
|
17
17
|
var _apiKey = _interopRequireDefault(require("../icons/api-key"));
|
|
18
|
-
var
|
|
18
|
+
var _core = require("@openassistant/core");
|
|
19
|
+
var _models = _interopRequireDefault(require("../config/models.json"));
|
|
20
|
+
var _usehooksTs = require("usehooks-ts");
|
|
19
21
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7; // SPDX-License-Identifier: MIT
|
|
20
22
|
// Copyright contributors to the kepler.gl project
|
|
21
23
|
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); }
|
|
22
24
|
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; }
|
|
23
|
-
var PROVIDER_MODELS = {
|
|
24
|
-
openai: ['gpt-4o', 'gpt-4o-mini', 'gpt-3.5-turbo-0125', 'gpt-3.5-turbo'],
|
|
25
|
-
google: ['gemini-1.5-flash', 'gemini-1.5-pro', 'gemini-1.0-pro'],
|
|
26
|
-
ollama: ['qwen2.5-coder', 'llama3.2', 'llama3.1', 'llama3.1:70b', 'qwen2', 'llava', 'mistral', 'gemma2', 'phi3.5']
|
|
27
|
-
};
|
|
28
25
|
var SectionTitle = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n font-size: ", ";\n color: ", ";\n text-transform: capitalize;\n"])), function (props) {
|
|
29
26
|
return props.theme.inputFontSize;
|
|
30
27
|
}, function (props) {
|
|
@@ -60,46 +57,46 @@ function AiAssistantConfigFactory(RangeSlider) {
|
|
|
60
57
|
var intl = _ref.intl,
|
|
61
58
|
aiAssistantConfig = _ref.aiAssistantConfig,
|
|
62
59
|
updateAiAssistantConfig = _ref.updateAiAssistantConfig;
|
|
63
|
-
var
|
|
60
|
+
var _useLocalStorage = (0, _usehooksTs.useLocalStorage)('ai-assistant-provider', aiAssistantConfig.provider || 'openai'),
|
|
61
|
+
_useLocalStorage2 = (0, _slicedToArray2["default"])(_useLocalStorage, 2),
|
|
62
|
+
provider = _useLocalStorage2[0],
|
|
63
|
+
setProvider = _useLocalStorage2[1];
|
|
64
|
+
var _useLocalStorage3 = (0, _usehooksTs.useLocalStorage)('ai-assistant-model', aiAssistantConfig.model || _models["default"][provider][0]),
|
|
65
|
+
_useLocalStorage4 = (0, _slicedToArray2["default"])(_useLocalStorage3, 2),
|
|
66
|
+
model = _useLocalStorage4[0],
|
|
67
|
+
setModel = _useLocalStorage4[1];
|
|
68
|
+
var _useLocalStorage5 = (0, _usehooksTs.useLocalStorage)('ai-assistant-api-key', aiAssistantConfig.apiKey || ''),
|
|
69
|
+
_useLocalStorage6 = (0, _slicedToArray2["default"])(_useLocalStorage5, 2),
|
|
70
|
+
apiKey = _useLocalStorage6[0],
|
|
71
|
+
setApiKey = _useLocalStorage6[1];
|
|
72
|
+
var _useLocalStorage7 = (0, _usehooksTs.useLocalStorage)('ai-assistant-temperature', aiAssistantConfig.temperature || 0.8),
|
|
73
|
+
_useLocalStorage8 = (0, _slicedToArray2["default"])(_useLocalStorage7, 2),
|
|
74
|
+
temperature = _useLocalStorage8[0],
|
|
75
|
+
setTemperature = _useLocalStorage8[1];
|
|
76
|
+
var _useLocalStorage9 = (0, _usehooksTs.useLocalStorage)('ai-assistant-top-p', aiAssistantConfig.topP || 0.8),
|
|
77
|
+
_useLocalStorage10 = (0, _slicedToArray2["default"])(_useLocalStorage9, 2),
|
|
78
|
+
topP = _useLocalStorage10[0],
|
|
79
|
+
setTopP = _useLocalStorage10[1];
|
|
80
|
+
var _useLocalStorage11 = (0, _usehooksTs.useLocalStorage)('ai-assistant-base-url', aiAssistantConfig.baseUrl || 'http://localhost:11434'),
|
|
81
|
+
_useLocalStorage12 = (0, _slicedToArray2["default"])(_useLocalStorage11, 2),
|
|
82
|
+
baseUrl = _useLocalStorage12[0],
|
|
83
|
+
setBaseUrl = _useLocalStorage12[1];
|
|
84
|
+
var _useState = (0, _react.useState)(false),
|
|
64
85
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
var _useState3 = (0, _react.useState)(
|
|
86
|
+
connectionError = _useState2[0],
|
|
87
|
+
setConnectionError = _useState2[1];
|
|
88
|
+
var _useState3 = (0, _react.useState)(''),
|
|
68
89
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
var _useState5 = (0, _react.useState)(
|
|
90
|
+
errorMessage = _useState4[0],
|
|
91
|
+
setErrorMessage = _useState4[1];
|
|
92
|
+
var _useState5 = (0, _react.useState)(false),
|
|
72
93
|
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
var _useState7 = (0, _react.useState)(aiAssistantConfig.temperature || 0.8),
|
|
76
|
-
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
77
|
-
temperature = _useState8[0],
|
|
78
|
-
setTemperature = _useState8[1];
|
|
79
|
-
var _useState9 = (0, _react.useState)(aiAssistantConfig.topP || 0.8),
|
|
80
|
-
_useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
81
|
-
topP = _useState10[0],
|
|
82
|
-
setTopP = _useState10[1];
|
|
83
|
-
var _useState11 = (0, _react.useState)(aiAssistantConfig.baseUrl || 'http://localhost:11434'),
|
|
84
|
-
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
85
|
-
baseUrl = _useState12[0],
|
|
86
|
-
setBaseUrl = _useState12[1];
|
|
87
|
-
var _useState13 = (0, _react.useState)(false),
|
|
88
|
-
_useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
|
|
89
|
-
connectionError = _useState14[0],
|
|
90
|
-
setConnectionError = _useState14[1];
|
|
91
|
-
var _useState15 = (0, _react.useState)(''),
|
|
92
|
-
_useState16 = (0, _slicedToArray2["default"])(_useState15, 2),
|
|
93
|
-
errorMessage = _useState16[0],
|
|
94
|
-
setErrorMessage = _useState16[1];
|
|
95
|
-
var _useState17 = (0, _react.useState)(false),
|
|
96
|
-
_useState18 = (0, _slicedToArray2["default"])(_useState17, 2),
|
|
97
|
-
isRunning = _useState18[0],
|
|
98
|
-
setIsRunning = _useState18[1];
|
|
94
|
+
isRunning = _useState6[0],
|
|
95
|
+
setIsRunning = _useState6[1];
|
|
99
96
|
var onAiProviderSelect = function onAiProviderSelect(value) {
|
|
100
97
|
if (typeof value === 'string') {
|
|
101
98
|
setProvider(value);
|
|
102
|
-
setModel(
|
|
99
|
+
setModel(_models["default"][value][0]);
|
|
103
100
|
setConnectionError(false);
|
|
104
101
|
setErrorMessage('');
|
|
105
102
|
}
|
|
@@ -128,25 +125,31 @@ function AiAssistantConfigFactory(RangeSlider) {
|
|
|
128
125
|
};
|
|
129
126
|
var onStartChat = /*#__PURE__*/function () {
|
|
130
127
|
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
131
|
-
var
|
|
128
|
+
var timeoutPromise, testPromise, result, success, service, _errorMessage;
|
|
132
129
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
133
130
|
while (1) switch (_context.prev = _context.next) {
|
|
134
131
|
case 0:
|
|
135
132
|
setIsRunning(true);
|
|
136
|
-
_context.
|
|
137
|
-
|
|
133
|
+
_context.prev = 1;
|
|
134
|
+
timeoutPromise = new Promise(function (_, reject) {
|
|
135
|
+
setTimeout(function () {
|
|
136
|
+
return reject(new Error('Connection timeout after 15 seconds'));
|
|
137
|
+
}, 15000);
|
|
138
|
+
});
|
|
139
|
+
testPromise = (0, _core.testApiKey)({
|
|
138
140
|
modelProvider: provider,
|
|
139
141
|
modelName: model,
|
|
140
142
|
apiKey: apiKey,
|
|
141
143
|
baseUrl: baseUrl
|
|
142
144
|
});
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
145
|
+
_context.next = 6;
|
|
146
|
+
return Promise.race([testPromise, timeoutPromise]);
|
|
147
|
+
case 6:
|
|
148
|
+
result = _context.sent;
|
|
149
|
+
success = result.success, service = result.service;
|
|
150
|
+
_errorMessage = !success ? service === 'ollama' ? 'Connection failed: maybe invalid Ollama Base URL' : 'Connection failed: maybe invalid API Key' : '';
|
|
148
151
|
setConnectionError(!success);
|
|
149
|
-
setErrorMessage(
|
|
152
|
+
setErrorMessage(_errorMessage);
|
|
150
153
|
updateAiAssistantConfig({
|
|
151
154
|
provider: provider,
|
|
152
155
|
model: model,
|
|
@@ -156,12 +159,22 @@ function AiAssistantConfigFactory(RangeSlider) {
|
|
|
156
159
|
temperature: temperature,
|
|
157
160
|
topP: topP
|
|
158
161
|
});
|
|
162
|
+
_context.next = 18;
|
|
163
|
+
break;
|
|
164
|
+
case 14:
|
|
165
|
+
_context.prev = 14;
|
|
166
|
+
_context.t0 = _context["catch"](1);
|
|
167
|
+
setConnectionError(true);
|
|
168
|
+
setErrorMessage(_context.t0 instanceof Error ? _context.t0.message : 'Connection failed');
|
|
169
|
+
case 18:
|
|
170
|
+
_context.prev = 18;
|
|
159
171
|
setIsRunning(false);
|
|
160
|
-
|
|
172
|
+
return _context.finish(18);
|
|
173
|
+
case 21:
|
|
161
174
|
case "end":
|
|
162
175
|
return _context.stop();
|
|
163
176
|
}
|
|
164
|
-
}, _callee);
|
|
177
|
+
}, _callee, null, [[1, 14, 18, 21]]);
|
|
165
178
|
}));
|
|
166
179
|
return function onStartChat() {
|
|
167
180
|
return _ref2.apply(this, arguments);
|
|
@@ -174,7 +187,7 @@ function AiAssistantConfigFactory(RangeSlider) {
|
|
|
174
187
|
defaultMessage: 'Select AI Provider'
|
|
175
188
|
}))), /*#__PURE__*/_react["default"].createElement(StyledWrapper, null, /*#__PURE__*/_react["default"].createElement(StyledItemSelector, {
|
|
176
189
|
selectedItems: provider,
|
|
177
|
-
options: Object.keys(
|
|
190
|
+
options: Object.keys(_models["default"]),
|
|
178
191
|
multiSelect: false,
|
|
179
192
|
disabled: false,
|
|
180
193
|
placeholder: "aiAssistantManager.aiProvider",
|
|
@@ -193,7 +206,7 @@ function AiAssistantConfigFactory(RangeSlider) {
|
|
|
193
206
|
defaultMessage: 'Select LLM Model'
|
|
194
207
|
}))), /*#__PURE__*/_react["default"].createElement(StyledWrapper, null, /*#__PURE__*/_react["default"].createElement(StyledItemSelector, {
|
|
195
208
|
selectedItems: model,
|
|
196
|
-
options:
|
|
209
|
+
options: _models["default"][provider],
|
|
197
210
|
multiSelect: false,
|
|
198
211
|
disabled: false,
|
|
199
212
|
placeholder: "aiAssistantManager.llmModel.placeholder",
|
|
@@ -278,4 +291,4 @@ function AiAssistantConfigFactory(RangeSlider) {
|
|
|
278
291
|
return (0, _styledComponents.withTheme)((0, _reactIntl.injectIntl)(AiAssistantConfig));
|
|
279
292
|
}
|
|
280
293
|
var _default = exports["default"] = AiAssistantConfigFactory;
|
|
281
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZWFjdEludGwiLCJfY29tcG9uZW50cyIsIl9hcGlLZXkiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0QWlBc3Npc3QiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl90ZW1wbGF0ZU9iamVjdDciLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJQUk9WSURFUl9NT0RFTFMiLCJvcGVuYWkiLCJnb29nbGUiLCJvbGxhbWEiLCJTZWN0aW9uVGl0bGUiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJpbnB1dEZvbnRTaXplIiwiZWZmZWN0UGFuZWxUZXh0U2Vjb25kYXJ5MSIsIlN0eWxlZEFpQXNzaXN0YW50Q29uZmlnIiwicHJpbWFyeUJ0bkZvbnRTaXplRGVmYXVsdCIsImJveFNoYWRvdyIsImdlb2NvZGVySW5wdXRIZWlnaHQiLCJzdWJ0ZXh0Q29sb3IiLCJTdHlsZWRXcmFwcGVyIiwiU3R5bGVkSXRlbVNlbGVjdG9yIiwiSXRlbVNlbGVjdG9yIiwiYWN0aXZlQ29sb3IiLCJTdHlsZVNsaWRlcldyYXBwZXIiLCJTdHlsZWRCdXR0b24iLCJTdHlsZUVycm9yTWVzc2FnZSIsImVycm9yQ29sb3IiLCJlcnJvclRleHRDb2xvciIsIkFpQXNzaXN0YW50Q29uZmlnRmFjdG9yeSIsImRlcHMiLCJSYW5nZVNsaWRlckZhY3RvcnkiLCJSYW5nZVNsaWRlciIsIkFpQXNzaXN0YW50Q29uZmlnIiwiX3JlZiIsImludGwiLCJhaUFzc2lzdGFudENvbmZpZyIsInVwZGF0ZUFpQXNzaXN0YW50Q29uZmlnIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJwcm92aWRlciIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzZXRQcm92aWRlciIsIl91c2VTdGF0ZTMiLCJtb2RlbCIsIl91c2VTdGF0ZTQiLCJzZXRNb2RlbCIsIl91c2VTdGF0ZTUiLCJhcGlLZXkiLCJfdXNlU3RhdGU2Iiwic2V0QXBpS2V5IiwiX3VzZVN0YXRlNyIsInRlbXBlcmF0dXJlIiwiX3VzZVN0YXRlOCIsInNldFRlbXBlcmF0dXJlIiwiX3VzZVN0YXRlOSIsInRvcFAiLCJfdXNlU3RhdGUxMCIsInNldFRvcFAiLCJfdXNlU3RhdGUxMSIsImJhc2VVcmwiLCJfdXNlU3RhdGUxMiIsInNldEJhc2VVcmwiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwiY29ubmVjdGlvbkVycm9yIiwic2V0Q29ubmVjdGlvbkVycm9yIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImVycm9yTWVzc2FnZSIsInNldEVycm9yTWVzc2FnZSIsIl91c2VTdGF0ZTE3IiwiX3VzZVN0YXRlMTgiLCJpc1J1bm5pbmciLCJzZXRJc1J1bm5pbmciLCJvbkFpUHJvdmlkZXJTZWxlY3QiLCJ2YWx1ZSIsIm9uTExNTW9kZWxTZWxlY3QiLCJvbkFwaUtleUNoYW5nZSIsInRhcmdldCIsIm9uVGVtcGVyYXR1cmVDaGFuZ2UiLCJvblRvcFBDaGFuZ2UiLCJvbkJhc2VVcmxDaGFuZ2UiLCJvblN0YXJ0Q2hhdCIsIl9yZWYyIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJfeWllbGQkdGVzdEFwaUtleSIsInN1Y2Nlc3MiLCJzZXJ2aWNlIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInRlc3RBcGlLZXkiLCJtb2RlbFByb3ZpZGVyIiwibW9kZWxOYW1lIiwic2VudCIsImlzUmVhZHkiLCJzdG9wIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiUGFuZWxMYWJlbFdyYXBwZXIiLCJmb3JtYXRNZXNzYWdlIiwiaWQiLCJkZWZhdWx0TWVzc2FnZSIsInNlbGVjdGVkSXRlbXMiLCJvcHRpb25zIiwia2V5cyIsIm11bHRpU2VsZWN0IiwiZGlzYWJsZWQiLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwiZmlsdGVyT3B0aW9uIiwiZ2V0T3B0aW9uVmFsdWUiLCJvcCIsImRpc3BsYXlPcHRpb24iLCJzZWFyY2hhYmxlIiwic2hvd0Fycm93IiwiRnJhZ21lbnQiLCJoZWlnaHQiLCJJbnB1dCIsInR5cGUiLCJzaG93SW5wdXQiLCJpc1JhbmdlZCIsInZhbHVlMCIsInZhbHVlMSIsInJhbmdlIiwic3RlcCIsIkJ1dHRvbiIsIm9uQ2xpY2siLCJ3aWR0aCIsIkxvYWRpbmdTcGlubmVyIiwic2l6ZSIsIndpdGhUaGVtZSIsImluamVjdEludGwiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9haS1hc3Npc3RhbnQtY29uZmlnLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCwge3dpdGhUaGVtZX0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtpbmplY3RJbnRsLCBXcmFwcGVkQ29tcG9uZW50UHJvcHN9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHtcbiAgSW5wdXQsXG4gIFBhbmVsTGFiZWxXcmFwcGVyLFxuICBJdGVtU2VsZWN0b3IsXG4gIFJhbmdlU2xpZGVyRmFjdG9yeSxcbiAgQnV0dG9uLFxuICBMb2FkaW5nU3Bpbm5lclxufSBmcm9tICdAa2VwbGVyLmdsL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtBaUFzc2lzdGFudENvbmZpZ30gZnJvbSAnLi4vaW5kZXgnO1xuaW1wb3J0IEFwaUtleSBmcm9tICcuLi9pY29ucy9hcGkta2V5JztcbmltcG9ydCB7dGVzdEFwaUtleX0gZnJvbSAncmVhY3QtYWktYXNzaXN0JztcblxuY29uc3QgUFJPVklERVJfTU9ERUxTID0ge1xuICBvcGVuYWk6IFsnZ3B0LTRvJywgJ2dwdC00by1taW5pJywgJ2dwdC0zLjUtdHVyYm8tMDEyNScsICdncHQtMy41LXR1cmJvJ10sXG4gIGdvb2dsZTogWydnZW1pbmktMS41LWZsYXNoJywgJ2dlbWluaS0xLjUtcHJvJywgJ2dlbWluaS0xLjAtcHJvJ10sXG4gIG9sbGFtYTogW1xuICAgICdxd2VuMi41LWNvZGVyJyxcbiAgICAnbGxhbWEzLjInLFxuICAgICdsbGFtYTMuMScsXG4gICAgJ2xsYW1hMy4xOjcwYicsXG4gICAgJ3F3ZW4yJyxcbiAgICAnbGxhdmEnLFxuICAgICdtaXN0cmFsJyxcbiAgICAnZ2VtbWEyJyxcbiAgICAncGhpMy41J1xuICBdXG59O1xuXG50eXBlIFRoZW1lUHJvcHMgPSB7dGhlbWU6IGFueX07XG5cbmV4cG9ydCB0eXBlIEFpQXNzaXN0YW50Q29uZmlnUHJvcHMgPSB7XG4gIGFpQXNzaXN0YW50Q29uZmlnOiBBaUFzc2lzdGFudENvbmZpZztcbiAgdXBkYXRlQWlBc3Npc3RhbnRDb25maWc6IChhaUFzc2lzdGFudENvbmZpZzogQWlBc3Npc3RhbnRDb25maWcpID0+IHZvaWQ7XG59O1xuXG5jb25zdCBTZWN0aW9uVGl0bGUgPSBzdHlsZWQuZGl2YFxuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRGb250U2l6ZX07XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmVmZmVjdFBhbmVsVGV4dFNlY29uZGFyeTF9O1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbmA7XG5cbmNvbnN0IFN0eWxlZEFpQXNzaXN0YW50Q29uZmlnID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZzogMTJweDtcbiAgZm9udC1zaXplOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnByaW1hcnlCdG5Gb250U2l6ZURlZmF1bHR9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDEycHg7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG5cbiAgLmFwaS1rZXktaW5wdXQge1xuICAgIGJveC1zaGFkb3c6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuYm94U2hhZG93fTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICAuYXBpLWtleS1pbnB1dF9faWNvbiB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBoZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZ2VvY29kZXJJbnB1dEhlaWdodH1weDtcbiAgICAgIHdpZHRoOiAzMHB4O1xuICAgICAgcGFkZGluZy1sZWZ0OiA2cHg7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yfTtcbiAgICB9XG5cbiAgICBpbnB1dCB7XG4gICAgICBwYWRkaW5nOiA0cHggMzZweDtcbiAgICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5nZW9jb2RlcklucHV0SGVpZ2h0fXB4O1xuICAgICAgY2FyZXQtY29sb3I6IHVuc2V0O1xuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IFN0eWxlZEl0ZW1TZWxlY3RvciA9IHN0eWxlZChJdGVtU2VsZWN0b3IpYFxuICAuaXRlbS1zZWxlY3Rvcl9fZHJvcGRvd24ge1xuICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIH1cbiAgLmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmFjdGl2ZUNvbG9yfTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHggNHB4IDBweCAwcHggIWltcG9ydGFudDtcbiAgfVxuICB3aWR0aDogMTAwJTtcbmA7XG5cbmNvbnN0IFN0eWxlU2xpZGVyV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICBoZWlnaHQ6IDMycHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIC5rZy1yYW5nZS1zbGlkZXJfX2lucHV0IHtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IDNweCA2cHg7XG4gIH1cbiAgLmtnLXNsaWRlciB7XG4gICAgcGFkZGluZy1sZWZ0OiA2cHg7XG4gIH1cbiAgLmtnLXJhbmdlLXNsaWRlciB7XG4gICAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZEJ1dHRvbiA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICBtYXJnaW4tdG9wOiAxMnB4O1xuXG4gIGJ1dHRvbiBkaXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDRweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDRweDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVFcnJvck1lc3NhZ2UgPSBzdHlsZWQuZGl2YFxuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucHJpbWFyeUJ0bkZvbnRTaXplRGVmYXVsdH07XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZXJyb3JDb2xvcn07XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgcGFkZGluZzogNHB4IDhweDtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZXJyb3JUZXh0Q29sb3J9O1xuYDtcblxuQWlBc3Npc3RhbnRDb25maWdGYWN0b3J5LmRlcHMgPSBbUmFuZ2VTbGlkZXJGYWN0b3J5XTtcblxuZnVuY3Rpb24gQWlBc3Npc3RhbnRDb25maWdGYWN0b3J5KFJhbmdlU2xpZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBSYW5nZVNsaWRlckZhY3Rvcnk+KSB7XG4gIGNvbnN0IEFpQXNzaXN0YW50Q29uZmlnOiBSZWFjdC5GQzxcbiAgICBBaUFzc2lzdGFudENvbmZpZ1Byb3BzICYgV3JhcHBlZENvbXBvbmVudFByb3BzICYgVGhlbWVQcm9wc1xuICA+ID0gKHtpbnRsLCBhaUFzc2lzdGFudENvbmZpZywgdXBkYXRlQWlBc3Npc3RhbnRDb25maWd9KSA9PiB7XG4gICAgY29uc3QgW3Byb3ZpZGVyLCBzZXRQcm92aWRlcl0gPSB1c2VTdGF0ZShhaUFzc2lzdGFudENvbmZpZy5wcm92aWRlciB8fCAnb3BlbmFpJyk7XG4gICAgY29uc3QgW21vZGVsLCBzZXRNb2RlbF0gPSB1c2VTdGF0ZShhaUFzc2lzdGFudENvbmZpZy5tb2RlbCB8fCBQUk9WSURFUl9NT0RFTFNbcHJvdmlkZXJdWzBdKTtcbiAgICBjb25zdCBbYXBpS2V5LCBzZXRBcGlLZXldID0gdXNlU3RhdGUoYWlBc3Npc3RhbnRDb25maWcuYXBpS2V5IHx8ICcnKTtcbiAgICBjb25zdCBbdGVtcGVyYXR1cmUsIHNldFRlbXBlcmF0dXJlXSA9IHVzZVN0YXRlKGFpQXNzaXN0YW50Q29uZmlnLnRlbXBlcmF0dXJlIHx8IDAuOCk7XG4gICAgY29uc3QgW3RvcFAsIHNldFRvcFBdID0gdXNlU3RhdGUoYWlBc3Npc3RhbnRDb25maWcudG9wUCB8fCAwLjgpO1xuICAgIGNvbnN0IFtiYXNlVXJsLCBzZXRCYXNlVXJsXSA9IHVzZVN0YXRlKGFpQXNzaXN0YW50Q29uZmlnLmJhc2VVcmwgfHwgJ2h0dHA6Ly9sb2NhbGhvc3Q6MTE0MzQnKTtcbiAgICBjb25zdCBbY29ubmVjdGlvbkVycm9yLCBzZXRDb25uZWN0aW9uRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtlcnJvck1lc3NhZ2UsIHNldEVycm9yTWVzc2FnZV0gPSB1c2VTdGF0ZSgnJyk7XG4gICAgY29uc3QgW2lzUnVubmluZywgc2V0SXNSdW5uaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICAgIGNvbnN0IG9uQWlQcm92aWRlclNlbGVjdCA9ICh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdCB8IG51bGwpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHNldFByb3ZpZGVyKHZhbHVlKTtcbiAgICAgICAgc2V0TW9kZWwoUFJPVklERVJfTU9ERUxTW3ZhbHVlXVswXSk7XG4gICAgICAgIHNldENvbm5lY3Rpb25FcnJvcihmYWxzZSk7XG4gICAgICAgIHNldEVycm9yTWVzc2FnZSgnJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uTExNTW9kZWxTZWxlY3QgPSAodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QgfCBudWxsKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBzZXRNb2RlbCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uQXBpS2V5Q2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBzZXRBcGlLZXkoZS50YXJnZXQudmFsdWUpO1xuICAgICAgLy8gcmVzZXQgcHJldmlvdXMga2V5IGVycm9yIGlmIGFueVxuICAgICAgc2V0Q29ubmVjdGlvbkVycm9yKGZhbHNlKTtcbiAgICAgIHNldEVycm9yTWVzc2FnZSgnJyk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uVGVtcGVyYXR1cmVDaGFuZ2UgPSAodmFsdWU6IG51bWJlcltdKSA9PiB7XG4gICAgICBzZXRUZW1wZXJhdHVyZSh2YWx1ZVsxXSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uVG9wUENoYW5nZSA9ICh2YWx1ZTogbnVtYmVyW10pID0+IHtcbiAgICAgIHNldFRvcFAodmFsdWVbMV0pO1xuICAgIH07XG5cbiAgICBjb25zdCBvbkJhc2VVcmxDaGFuZ2UgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgIHNldEJhc2VVcmwoZS50YXJnZXQudmFsdWUpO1xuICAgICAgc2V0Q29ubmVjdGlvbkVycm9yKGZhbHNlKTtcbiAgICAgIHNldEVycm9yTWVzc2FnZSgnJyk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uU3RhcnRDaGF0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgc2V0SXNSdW5uaW5nKHRydWUpO1xuICAgICAgY29uc3Qge3N1Y2Nlc3MsIHNlcnZpY2V9ID0gYXdhaXQgdGVzdEFwaUtleSh7XG4gICAgICAgIG1vZGVsUHJvdmlkZXI6IHByb3ZpZGVyLFxuICAgICAgICBtb2RlbE5hbWU6IG1vZGVsLFxuICAgICAgICBhcGlLZXk6IGFwaUtleSxcbiAgICAgICAgYmFzZVVybDogYmFzZVVybFxuICAgICAgfSk7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSAhc3VjY2Vzc1xuICAgICAgICA/IHNlcnZpY2UgPT09ICdvbGxhbWEnXG4gICAgICAgICAgPyAnQ29ubmVjdGlvbiBmYWlsZWQ6IG1heWJlIGludmFsaWQgT2xsYW1hIEJhc2UgVVJMJ1xuICAgICAgICAgIDogJ0Nvbm5lY3Rpb24gZmFpbGVkOiBtYXliZSBpbnZhbGlkIEFQSSBLZXknXG4gICAgICAgIDogJyc7XG4gICAgICBzZXRDb25uZWN0aW9uRXJyb3IoIXN1Y2Nlc3MpO1xuICAgICAgc2V0RXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSk7XG4gICAgICB1cGRhdGVBaUFzc2lzdGFudENvbmZpZyh7XG4gICAgICAgIHByb3ZpZGVyOiBwcm92aWRlcixcbiAgICAgICAgbW9kZWw6IG1vZGVsLFxuICAgICAgICBhcGlLZXk6IGFwaUtleSxcbiAgICAgICAgYmFzZVVybDogYmFzZVVybCxcbiAgICAgICAgaXNSZWFkeTogc3VjY2VzcyxcbiAgICAgICAgdGVtcGVyYXR1cmU6IHRlbXBlcmF0dXJlLFxuICAgICAgICB0b3BQOiB0b3BQXG4gICAgICB9KTtcbiAgICAgIHNldElzUnVubmluZyhmYWxzZSk7XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkQWlBc3Npc3RhbnRDb25maWcgY2xhc3NOYW1lPVwiYWktYXNzaXN0YW50LWNvbmZpZ19fdHlwZVwiPlxuICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgPFNlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgIHtpbnRsLmZvcm1hdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICBpZDogJ2FpQXNzaXN0YW50TWFuYWdlci5haVByb3ZpZGVyLnRpdGxlJyxcbiAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U6ICdTZWxlY3QgQUkgUHJvdmlkZXInXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L1NlY3Rpb25UaXRsZT5cbiAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZFdyYXBwZXI+XG4gICAgICAgICAgPFN0eWxlZEl0ZW1TZWxlY3RvclxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz17cHJvdmlkZXJ9XG4gICAgICAgICAgICBvcHRpb25zPXtPYmplY3Qua2V5cyhQUk9WSURFUl9NT0RFTFMpfVxuICAgICAgICAgICAgbXVsdGlTZWxlY3Q9e2ZhbHNlfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJhaUFzc2lzdGFudE1hbmFnZXIuYWlQcm92aWRlclwiXG4gICAgICAgICAgICBvbkNoYW5nZT17b25BaVByb3ZpZGVyU2VsZWN0fVxuICAgICAgICAgICAgZmlsdGVyT3B0aW9uPVwibmFtZVwiXG4gICAgICAgICAgICBnZXRPcHRpb25WYWx1ZT17b3AgPT4gb3B9XG4gICAgICAgICAgICBkaXNwbGF5T3B0aW9uPXtvcCA9PiBvcH1cbiAgICAgICAgICAgIHNlYXJjaGFibGU9e2ZhbHNlfVxuICAgICAgICAgICAgc2hvd0Fycm93PXt0cnVlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU3R5bGVkV3JhcHBlcj5cbiAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgIDxTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICB7aW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgaWQ6ICdhaUFzc2lzdGFudE1hbmFnZXIubGxtTW9kZWwudGl0bGUnLFxuICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogJ1NlbGVjdCBMTE0gTW9kZWwnXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L1NlY3Rpb25UaXRsZT5cbiAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZFdyYXBwZXI+XG4gICAgICAgICAgPFN0eWxlZEl0ZW1TZWxlY3RvclxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz17bW9kZWx9XG4gICAgICAgICAgICBvcHRpb25zPXtQUk9WSURFUl9NT0RFTFNbcHJvdmlkZXJdfVxuICAgICAgICAgICAgbXVsdGlTZWxlY3Q9e2ZhbHNlfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJhaUFzc2lzdGFudE1hbmFnZXIubGxtTW9kZWwucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgb25DaGFuZ2U9e29uTExNTW9kZWxTZWxlY3R9XG4gICAgICAgICAgICBmaWx0ZXJPcHRpb249XCJuYW1lXCJcbiAgICAgICAgICAgIGdldE9wdGlvblZhbHVlPXtvcCA9PiBvcH1cbiAgICAgICAgICAgIGRpc3BsYXlPcHRpb249e29wID0+IG9wfVxuICAgICAgICAgICAgc2VhcmNoYWJsZT17ZmFsc2V9XG4gICAgICAgICAgICBzaG93QXJyb3c9e3RydWV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TdHlsZWRXcmFwcGVyPlxuICAgICAgICB7cHJvdmlkZXIgIT09ICdvbGxhbWEnID8gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICAgIDxTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICAgICAge2ludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICBpZDogJ2FpQXNzaXN0YW50TWFuYWdlci5hcGlLZXkudGl0bGUnLFxuICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U6ICdFbnRlciBBUEkgS2V5J1xuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8L1NlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFwaS1rZXktaW5wdXRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhcGkta2V5LWlucHV0X19pY29uXCI+XG4gICAgICAgICAgICAgICAgPEFwaUtleSBoZWlnaHQ9XCIyMHB4XCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25BcGlLZXlDaGFuZ2V9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2ludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICBpZDogJ2FpQXNzaXN0YW50TWFuYWdlci5hcGlLZXkucGxhY2Vob2xkZXInLFxuICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U6ICdFbnRlciB5b3VyIEFQSSBLZXknXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2FwaUtleX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICAgIDxTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICAgICAge2ludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgICBpZDogJ2FpQXNzaXN0YW50TWFuYWdlci5iYXNlVXJsLnRpdGxlJyxcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiAnT2xsYW1hIEJhc2UgVVJMJ1xuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8L1NlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFwaS1rZXktaW5wdXRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhcGkta2V5LWlucHV0X19pY29uXCI+XG4gICAgICAgICAgICAgICAgPEFwaUtleSBoZWlnaHQ9XCIyMHB4XCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25CYXNlVXJsQ2hhbmdlfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtpbnRsLmZvcm1hdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgaWQ6ICdhaUFzc2lzdGFudE1hbmFnZXIuYmFzZVVybC5wbGFjZWhvbGRlcicsXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogJ0VudGVyIE9sbGFtYSBCYXNlIFVSTCdcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17YmFzZVVybH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgICB7Y29ubmVjdGlvbkVycm9yICYmIChcbiAgICAgICAgICA8U3R5bGVFcnJvck1lc3NhZ2UgY2xhc3NOYW1lPVwiZXJyb3ItbWVzc2FnZVwiPntlcnJvck1lc3NhZ2V9PC9TdHlsZUVycm9yTWVzc2FnZT5cbiAgICAgICAgKX1cbiAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgIDxTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICB7aW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgaWQ6ICdhaUFzc2lzdGFudE1hbmFnZXIudGVtcGVyYXR1cmUudGl0bGUnLFxuICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogJ1RlbXBlcmF0dXJlJ1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9TZWN0aW9uVGl0bGU+XG4gICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgIDxTdHlsZVNsaWRlcldyYXBwZXI+XG4gICAgICAgICAgPFJhbmdlU2xpZGVyXG4gICAgICAgICAgICBzaG93SW5wdXQ9e3RydWV9XG4gICAgICAgICAgICBpc1JhbmdlZD17ZmFsc2V9XG4gICAgICAgICAgICB2YWx1ZTA9ezB9XG4gICAgICAgICAgICB2YWx1ZTE9e3RlbXBlcmF0dXJlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e29uVGVtcGVyYXR1cmVDaGFuZ2V9XG4gICAgICAgICAgICByYW5nZT17WzAsIDJdfVxuICAgICAgICAgICAgc3RlcD17MC4xfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU3R5bGVTbGlkZXJXcmFwcGVyPlxuICAgICAgICA8UGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgICAgPFNlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgIHtpbnRsLmZvcm1hdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICBpZDogJ2FpQXNzaXN0YW50TWFuYWdlci50b3BQLnRpdGxlJyxcbiAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U6ICdUb3AgUCdcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU2VjdGlvblRpdGxlPlxuICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICA8U3R5bGVTbGlkZXJXcmFwcGVyPlxuICAgICAgICAgIDxSYW5nZVNsaWRlclxuICAgICAgICAgICAgc2hvd0lucHV0PXt0cnVlfVxuICAgICAgICAgICAgaXNSYW5nZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgdmFsdWUwPXswfVxuICAgICAgICAgICAgdmFsdWUxPXt0b3BQfVxuICAgICAgICAgICAgb25DaGFuZ2U9e29uVG9wUENoYW5nZX1cbiAgICAgICAgICAgIHJhbmdlPXtbMCwgMV19XG4gICAgICAgICAgICBzdGVwPXswLjF9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TdHlsZVNsaWRlcldyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRCdXR0b24+XG4gICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXtvblN0YXJ0Q2hhdH0gd2lkdGg9eycxMDAlJ30+XG4gICAgICAgICAgICB7aXNSdW5uaW5nICYmIDxMb2FkaW5nU3Bpbm5lciBzaXplPXsxMn0gLz59XG4gICAgICAgICAgICB7aW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgaWQ6ICdhaUFzc2lzdGFudE1hbmFnZXIuc3RhcnRDaGF0JyxcbiAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U6IFwiTGV0J3MgQ2hhdFwiXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9TdHlsZWRCdXR0b24+XG4gICAgICA8L1N0eWxlZEFpQXNzaXN0YW50Q29uZmlnPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIHdpdGhUaGVtZShpbmplY3RJbnRsKEFpQXNzaXN0YW50Q29uZmlnKSkgYXMgUmVhY3QuRkM8QWlBc3Npc3RhbnRDb25maWdQcm9wcz47XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFpQXNzaXN0YW50Q29uZmlnRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUYsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUgsT0FBQTtBQVNBLElBQUFJLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUwsT0FBQTtBQUNBLElBQUFNLGNBQUEsR0FBQU4sT0FBQTtBQUEyQyxJQUFBTyxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBaEIzQztBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFoQix3QkFBQWdCLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFB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
|
|
294
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9yZWFjdEludGwiLCJfY29tcG9uZW50cyIsIl9hcGlLZXkiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2NvcmUiLCJfbW9kZWxzIiwiX3VzZWhvb2tzVHMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl90ZW1wbGF0ZU9iamVjdDciLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJTZWN0aW9uVGl0bGUiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJpbnB1dEZvbnRTaXplIiwiZWZmZWN0UGFuZWxUZXh0U2Vjb25kYXJ5MSIsIlN0eWxlZEFpQXNzaXN0YW50Q29uZmlnIiwicHJpbWFyeUJ0bkZvbnRTaXplRGVmYXVsdCIsImJveFNoYWRvdyIsImdlb2NvZGVySW5wdXRIZWlnaHQiLCJzdWJ0ZXh0Q29sb3IiLCJTdHlsZWRXcmFwcGVyIiwiU3R5bGVkSXRlbVNlbGVjdG9yIiwiSXRlbVNlbGVjdG9yIiwiYWN0aXZlQ29sb3IiLCJTdHlsZVNsaWRlcldyYXBwZXIiLCJTdHlsZWRCdXR0b24iLCJTdHlsZUVycm9yTWVzc2FnZSIsImVycm9yQ29sb3IiLCJlcnJvclRleHRDb2xvciIsIkFpQXNzaXN0YW50Q29uZmlnRmFjdG9yeSIsImRlcHMiLCJSYW5nZVNsaWRlckZhY3RvcnkiLCJSYW5nZVNsaWRlciIsIkFpQXNzaXN0YW50Q29uZmlnIiwiX3JlZiIsImludGwiLCJhaUFzc2lzdGFudENvbmZpZyIsInVwZGF0ZUFpQXNzaXN0YW50Q29uZmlnIiwiX3VzZUxvY2FsU3RvcmFnZSIsInVzZUxvY2FsU3RvcmFnZSIsInByb3ZpZGVyIiwiX3VzZUxvY2FsU3RvcmFnZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzZXRQcm92aWRlciIsIl91c2VMb2NhbFN0b3JhZ2UzIiwibW9kZWwiLCJQUk9WSURFUl9NT0RFTFMiLCJfdXNlTG9jYWxTdG9yYWdlNCIsInNldE1vZGVsIiwiX3VzZUxvY2FsU3RvcmFnZTUiLCJhcGlLZXkiLCJfdXNlTG9jYWxTdG9yYWdlNiIsInNldEFwaUtleSIsIl91c2VMb2NhbFN0b3JhZ2U3IiwidGVtcGVyYXR1cmUiLCJfdXNlTG9jYWxTdG9yYWdlOCIsInNldFRlbXBlcmF0dXJlIiwiX3VzZUxvY2FsU3RvcmFnZTkiLCJ0b3BQIiwiX3VzZUxvY2FsU3RvcmFnZTEwIiwic2V0VG9wUCIsIl91c2VMb2NhbFN0b3JhZ2UxMSIsImJhc2VVcmwiLCJfdXNlTG9jYWxTdG9yYWdlMTIiLCJzZXRCYXNlVXJsIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiY29ubmVjdGlvbkVycm9yIiwic2V0Q29ubmVjdGlvbkVycm9yIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJlcnJvck1lc3NhZ2UiLCJzZXRFcnJvck1lc3NhZ2UiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzUnVubmluZyIsInNldElzUnVubmluZyIsIm9uQWlQcm92aWRlclNlbGVjdCIsInZhbHVlIiwib25MTE1Nb2RlbFNlbGVjdCIsIm9uQXBpS2V5Q2hhbmdlIiwidGFyZ2V0Iiwib25UZW1wZXJhdHVyZUNoYW5nZSIsIm9uVG9wUENoYW5nZSIsIm9uQmFzZVVybENoYW5nZSIsIm9uU3RhcnRDaGF0IiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInRpbWVvdXRQcm9taXNlIiwidGVzdFByb21pc2UiLCJyZXN1bHQiLCJzdWNjZXNzIiwic2VydmljZSIsIl9lcnJvck1lc3NhZ2UiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiUHJvbWlzZSIsIl8iLCJyZWplY3QiLCJzZXRUaW1lb3V0IiwiRXJyb3IiLCJ0ZXN0QXBpS2V5IiwibW9kZWxQcm92aWRlciIsIm1vZGVsTmFtZSIsInJhY2UiLCJzZW50IiwiaXNSZWFkeSIsInQwIiwibWVzc2FnZSIsImZpbmlzaCIsInN0b3AiLCJhcHBseSIsImFyZ3VtZW50cyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJQYW5lbExhYmVsV3JhcHBlciIsImZvcm1hdE1lc3NhZ2UiLCJpZCIsImRlZmF1bHRNZXNzYWdlIiwic2VsZWN0ZWRJdGVtcyIsIm9wdGlvbnMiLCJrZXlzIiwibXVsdGlTZWxlY3QiLCJkaXNhYmxlZCIsInBsYWNlaG9sZGVyIiwib25DaGFuZ2UiLCJmaWx0ZXJPcHRpb24iLCJnZXRPcHRpb25WYWx1ZSIsIm9wIiwiZGlzcGxheU9wdGlvbiIsInNlYXJjaGFibGUiLCJzaG93QXJyb3ciLCJGcmFnbWVudCIsImhlaWdodCIsIklucHV0IiwidHlwZSIsInNob3dJbnB1dCIsImlzUmFuZ2VkIiwidmFsdWUwIiwidmFsdWUxIiwicmFuZ2UiLCJzdGVwIiwiQnV0dG9uIiwib25DbGljayIsIndpZHRoIiwiTG9hZGluZ1NwaW5uZXIiLCJzaXplIiwid2l0aFRoZW1lIiwiaW5qZWN0SW50bCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL2FpLWFzc2lzdGFudC1jb25maWcudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkLCB7d2l0aFRoZW1lfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge2luamVjdEludGwsIFdyYXBwZWRDb21wb25lbnRQcm9wc30gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQge1xuICBJbnB1dCxcbiAgUGFuZWxMYWJlbFdyYXBwZXIsXG4gIEl0ZW1TZWxlY3RvcixcbiAgUmFuZ2VTbGlkZXJGYWN0b3J5LFxuICBCdXR0b24sXG4gIExvYWRpbmdTcGlubmVyXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29tcG9uZW50cyc7XG5pbXBvcnQge0FpQXNzaXN0YW50Q29uZmlnfSBmcm9tICcuLi9pbmRleCc7XG5pbXBvcnQgQXBpS2V5IGZyb20gJy4uL2ljb25zL2FwaS1rZXknO1xuaW1wb3J0IHt0ZXN0QXBpS2V5fSBmcm9tICdAb3BlbmFzc2lzdGFudC9jb3JlJztcbmltcG9ydCBQUk9WSURFUl9NT0RFTFMgZnJvbSAnLi4vY29uZmlnL21vZGVscy5qc29uJztcbmltcG9ydCB7dXNlTG9jYWxTdG9yYWdlfSBmcm9tICd1c2Vob29rcy10cyc7XG5cbnR5cGUgVGhlbWVQcm9wcyA9IHt0aGVtZTogYW55fTtcblxuZXhwb3J0IHR5cGUgQWlBc3Npc3RhbnRDb25maWdQcm9wcyA9IHtcbiAgYWlBc3Npc3RhbnRDb25maWc6IEFpQXNzaXN0YW50Q29uZmlnO1xuICB1cGRhdGVBaUFzc2lzdGFudENvbmZpZzogKGFpQXNzaXN0YW50Q29uZmlnOiBBaUFzc2lzdGFudENvbmZpZykgPT4gdm9pZDtcbn07XG5cbmNvbnN0IFNlY3Rpb25UaXRsZSA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dEZvbnRTaXplfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZWZmZWN0UGFuZWxUZXh0U2Vjb25kYXJ5MX07XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuYDtcblxuY29uc3QgU3R5bGVkQWlBc3Npc3RhbnRDb25maWcgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiAxMnB4O1xuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucHJpbWFyeUJ0bkZvbnRTaXplRGVmYXVsdH07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMTJweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcblxuICAuYXBpLWtleS1pbnB1dCB7XG4gICAgYm94LXNoYWRvdzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ib3hTaGFkb3d9O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC5hcGkta2V5LWlucHV0X19pY29uIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5nZW9jb2RlcklucHV0SGVpZ2h0fXB4O1xuICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDZweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3J9O1xuICAgIH1cblxuICAgIGlucHV0IHtcbiAgICAgIHBhZGRpbmc6IDRweCAzNnB4O1xuICAgICAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmdlb2NvZGVySW5wdXRIZWlnaHR9cHg7XG4gICAgICBjYXJldC1jb2xvcjogdW5zZXQ7XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuY29uc3QgU3R5bGVkSXRlbVNlbGVjdG9yID0gc3R5bGVkKEl0ZW1TZWxlY3RvcilgXG4gIC5pdGVtLXNlbGVjdG9yX19kcm9wZG93biB7XG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgfVxuICAuYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuYWN0aXZlQ29sb3J9O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMHB4IDBweCAhaW1wb3J0YW50O1xuICB9XG4gIHdpZHRoOiAxMDAlO1xuYDtcblxuY29uc3QgU3R5bGVTbGlkZXJXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDEwMCU7XG4gIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gIGhlaWdodDogMzJweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgLmtnLXJhbmdlLXNsaWRlcl9faW5wdXQge1xuICAgIGhlaWdodDogMzJweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogM3B4IDZweDtcbiAgfVxuICAua2ctc2xpZGVyIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDZweDtcbiAgfVxuICAua2ctcmFuZ2Utc2xpZGVyIHtcbiAgICBwYWRkaW5nOiAwcHggIWltcG9ydGFudDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkQnV0dG9uID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDEwMCU7XG4gIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gIG1hcmdpbi10b3A6IDEycHg7XG5cbiAgYnV0dG9uIGRpdiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNHB4O1xuICAgIG1hcmdpbi1yaWdodDogNHB4O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZUVycm9yTWVzc2FnZSA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wcmltYXJ5QnRuRm9udFNpemVEZWZhdWx0fTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lcnJvckNvbG9yfTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBwYWRkaW5nOiA0cHggOHB4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lcnJvclRleHRDb2xvcn07XG5gO1xuXG5BaUFzc2lzdGFudENvbmZpZ0ZhY3RvcnkuZGVwcyA9IFtSYW5nZVNsaWRlckZhY3RvcnldO1xuXG5mdW5jdGlvbiBBaUFzc2lzdGFudENvbmZpZ0ZhY3RvcnkoUmFuZ2VTbGlkZXI6IFJldHVyblR5cGU8dHlwZW9mIFJhbmdlU2xpZGVyRmFjdG9yeT4pIHtcbiAgY29uc3QgQWlBc3Npc3RhbnRDb25maWc6IFJlYWN0LkZDPFxuICAgIEFpQXNzaXN0YW50Q29uZmlnUHJvcHMgJiBXcmFwcGVkQ29tcG9uZW50UHJvcHMgJiBUaGVtZVByb3BzXG4gID4gPSAoe2ludGwsIGFpQXNzaXN0YW50Q29uZmlnLCB1cGRhdGVBaUFzc2lzdGFudENvbmZpZ30pID0+IHtcbiAgICBjb25zdCBbcHJvdmlkZXIsIHNldFByb3ZpZGVyXSA9IHVzZUxvY2FsU3RvcmFnZShcbiAgICAgICdhaS1hc3Npc3RhbnQtcHJvdmlkZXInLFxuICAgICAgYWlBc3Npc3RhbnRDb25maWcucHJvdmlkZXIgfHwgJ29wZW5haSdcbiAgICApO1xuICAgIGNvbnN0IFttb2RlbCwgc2V0TW9kZWxdID0gdXNlTG9jYWxTdG9yYWdlKFxuICAgICAgJ2FpLWFzc2lzdGFudC1tb2RlbCcsXG4gICAgICBhaUFzc2lzdGFudENvbmZpZy5tb2RlbCB8fCBQUk9WSURFUl9NT0RFTFNbcHJvdmlkZXJdWzBdXG4gICAgKTtcbiAgICBjb25zdCBbYXBpS2V5LCBzZXRBcGlLZXldID0gdXNlTG9jYWxTdG9yYWdlKFxuICAgICAgJ2FpLWFzc2lzdGFudC1hcGkta2V5JyxcbiAgICAgIGFpQXNzaXN0YW50Q29uZmlnLmFwaUtleSB8fCAnJ1xuICAgICk7XG4gICAgY29uc3QgW3RlbXBlcmF0dXJlLCBzZXRUZW1wZXJhdHVyZV0gPSB1c2VMb2NhbFN0b3JhZ2UoXG4gICAgICAnYWktYXNzaXN0YW50LXRlbXBlcmF0dXJlJyxcbiAgICAgIGFpQXNzaXN0YW50Q29uZmlnLnRlbXBlcmF0dXJlIHx8IDAuOFxuICAgICk7XG4gICAgY29uc3QgW3RvcFAsIHNldFRvcFBdID0gdXNlTG9jYWxTdG9yYWdlKCdhaS1hc3Npc3RhbnQtdG9wLXAnLCBhaUFzc2lzdGFudENvbmZpZy50b3BQIHx8IDAuOCk7XG4gICAgY29uc3QgW2Jhc2VVcmwsIHNldEJhc2VVcmxdID0gdXNlTG9jYWxTdG9yYWdlKFxuICAgICAgJ2FpLWFzc2lzdGFudC1iYXNlLXVybCcsXG4gICAgICBhaUFzc2lzdGFudENvbmZpZy5iYXNlVXJsIHx8ICdodHRwOi8vbG9jYWxob3N0OjExNDM0J1xuICAgICk7XG4gICAgY29uc3QgW2Nvbm5lY3Rpb25FcnJvciwgc2V0Q29ubmVjdGlvbkVycm9yXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbZXJyb3JNZXNzYWdlLCBzZXRFcnJvck1lc3NhZ2VdID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFtpc1J1bm5pbmcsIHNldElzUnVubmluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgICBjb25zdCBvbkFpUHJvdmlkZXJTZWxlY3QgPSAodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QgfCBudWxsKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBzZXRQcm92aWRlcih2YWx1ZSk7XG4gICAgICAgIHNldE1vZGVsKFBST1ZJREVSX01PREVMU1t2YWx1ZV1bMF0pO1xuICAgICAgICBzZXRDb25uZWN0aW9uRXJyb3IoZmFsc2UpO1xuICAgICAgICBzZXRFcnJvck1lc3NhZ2UoJycpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbkxMTU1vZGVsU2VsZWN0ID0gKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0IHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgc2V0TW9kZWwodmFsdWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbkFwaUtleUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgc2V0QXBpS2V5KGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgIC8vIHJlc2V0IHByZXZpb3VzIGtleSBlcnJvciBpZiBhbnlcbiAgICAgIHNldENvbm5lY3Rpb25FcnJvcihmYWxzZSk7XG4gICAgICBzZXRFcnJvck1lc3NhZ2UoJycpO1xuICAgIH07XG5cbiAgICBjb25zdCBvblRlbXBlcmF0dXJlQ2hhbmdlID0gKHZhbHVlOiBudW1iZXJbXSkgPT4ge1xuICAgICAgc2V0VGVtcGVyYXR1cmUodmFsdWVbMV0pO1xuICAgIH07XG5cbiAgICBjb25zdCBvblRvcFBDaGFuZ2UgPSAodmFsdWU6IG51bWJlcltdKSA9PiB7XG4gICAgICBzZXRUb3BQKHZhbHVlWzFdKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25CYXNlVXJsQ2hhbmdlID0gKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBzZXRCYXNlVXJsKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgIHNldENvbm5lY3Rpb25FcnJvcihmYWxzZSk7XG4gICAgICBzZXRFcnJvck1lc3NhZ2UoJycpO1xuICAgIH07XG5cbiAgICBjb25zdCBvblN0YXJ0Q2hhdCA9IGFzeW5jICgpID0+IHtcbiAgICAgIHNldElzUnVubmluZyh0cnVlKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRpbWVvdXRQcm9taXNlID0gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4ge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignQ29ubmVjdGlvbiB0aW1lb3V0IGFmdGVyIDE1IHNlY29uZHMnKSksIDE1MDAwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdGVzdFByb21pc2UgPSB0ZXN0QXBpS2V5KHtcbiAgICAgICAgICBtb2RlbFByb3ZpZGVyOiBwcm92aWRlcixcbiAgICAgICAgICBtb2RlbE5hbWU6IG1vZGVsLFxuICAgICAgICAgIGFwaUtleTogYXBpS2V5LFxuICAgICAgICAgIGJhc2VVcmw6IGJhc2VVcmxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gKGF3YWl0IFByb21pc2UucmFjZShbdGVzdFByb21pc2UsIHRpbWVvdXRQcm9taXNlXSkpIGFzIHtcbiAgICAgICAgICBzdWNjZXNzOiBib29sZWFuO1xuICAgICAgICAgIHNlcnZpY2U6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qge3N1Y2Nlc3MsIHNlcnZpY2V9ID0gcmVzdWx0O1xuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSAhc3VjY2Vzc1xuICAgICAgICAgID8gc2VydmljZSA9PT0gJ29sbGFtYSdcbiAgICAgICAgICAgID8gJ0Nvbm5lY3Rpb24gZmFpbGVkOiBtYXliZSBpbnZhbGlkIE9sbGFtYSBCYXNlIFVSTCdcbiAgICAgICAgICAgIDogJ0Nvbm5lY3Rpb24gZmFpbGVkOiBtYXliZSBpbnZhbGlkIEFQSSBLZXknXG4gICAgICAgICAgOiAnJztcbiAgICAgICAgc2V0Q29ubmVjdGlvbkVycm9yKCFzdWNjZXNzKTtcbiAgICAgICAgc2V0RXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSk7XG4gICAgICAgIHVwZGF0ZUFpQXNzaXN0YW50Q29uZmlnKHtcbiAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXIsXG4gICAgICAgICAgbW9kZWw6IG1vZGVsLFxuICAgICAgICAgIGFwaUtleTogYXBpS2V5LFxuICAgICAgICAgIGJhc2VVcmw6IGJhc2VVcmwsXG4gICAgICAgICAgaXNSZWFkeTogc3VjY2VzcyxcbiAgICAgICAgICB0ZW1wZXJhdHVyZTogdGVtcGVyYXR1cmUsXG4gICAgICAgICAgdG9wUDogdG9wUFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHNldENvbm5lY3Rpb25FcnJvcih0cnVlKTtcbiAgICAgICAgc2V0RXJyb3JNZXNzYWdlKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ0Nvbm5lY3Rpb24gZmFpbGVkJyk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRJc1J1bm5pbmcoZmFsc2UpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZEFpQXNzaXN0YW50Q29uZmlnIGNsYXNzTmFtZT1cImFpLWFzc2lzdGFudC1jb25maWdfX3R5cGVcIj5cbiAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgIDxTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICB7aW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgaWQ6ICdhaUFzc2lzdGFudE1hbmFnZXIuYWlQcm92aWRlci50aXRsZScsXG4gICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiAnU2VsZWN0IEFJIFByb3ZpZGVyJ1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9TZWN0aW9uVGl0bGU+XG4gICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRXcmFwcGVyPlxuICAgICAgICAgIDxTdHlsZWRJdGVtU2VsZWN0b3JcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e3Byb3ZpZGVyfVxuICAgICAgICAgICAgb3B0aW9ucz17T2JqZWN0LmtleXMoUFJPVklERVJfTU9ERUxTKX1cbiAgICAgICAgICAgIG11bHRpU2VsZWN0PXtmYWxzZX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiYWlBc3Npc3RhbnRNYW5hZ2VyLmFpUHJvdmlkZXJcIlxuICAgICAgICAgICAgb25DaGFuZ2U9e29uQWlQcm92aWRlclNlbGVjdH1cbiAgICAgICAgICAgIGZpbHRlck9wdGlvbj1cIm5hbWVcIlxuICAgICAgICAgICAgZ2V0T3B0aW9uVmFsdWU9e29wID0+IG9wfVxuICAgICAgICAgICAgZGlzcGxheU9wdGlvbj17b3AgPT4gb3B9XG4gICAgICAgICAgICBzZWFyY2hhYmxlPXtmYWxzZX1cbiAgICAgICAgICAgIHNob3dBcnJvdz17dHJ1ZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1N0eWxlZFdyYXBwZXI+XG4gICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICA8U2VjdGlvblRpdGxlPlxuICAgICAgICAgICAge2ludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgIGlkOiAnYWlBc3Npc3RhbnRNYW5hZ2VyLmxsbU1vZGVsLnRpdGxlJyxcbiAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U6ICdTZWxlY3QgTExNIE1vZGVsJ1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9TZWN0aW9uVGl0bGU+XG4gICAgICAgIDwvUGFuZWxMYWJlbFdyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRXcmFwcGVyPlxuICAgICAgICAgIDxTdHlsZWRJdGVtU2VsZWN0b3JcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e21vZGVsfVxuICAgICAgICAgICAgb3B0aW9ucz17UFJPVklERVJfTU9ERUxTW3Byb3ZpZGVyXX1cbiAgICAgICAgICAgIG11bHRpU2VsZWN0PXtmYWxzZX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiYWlBc3Npc3RhbnRNYW5hZ2VyLmxsbU1vZGVsLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkxMTU1vZGVsU2VsZWN0fVxuICAgICAgICAgICAgZmlsdGVyT3B0aW9uPVwibmFtZVwiXG4gICAgICAgICAgICBnZXRPcHRpb25WYWx1ZT17b3AgPT4gb3B9XG4gICAgICAgICAgICBkaXNwbGF5T3B0aW9uPXtvcCA9PiBvcH1cbiAgICAgICAgICAgIHNlYXJjaGFibGU9e2ZhbHNlfVxuICAgICAgICAgICAgc2hvd0Fycm93PXt0cnVlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU3R5bGVkV3JhcHBlcj5cbiAgICAgICAge3Byb3ZpZGVyICE9PSAnb2xsYW1hJyA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8U2VjdGlvblRpdGxlPlxuICAgICAgICAgICAgICAgIHtpbnRsLmZvcm1hdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgaWQ6ICdhaUFzc2lzdGFudE1hbmFnZXIuYXBpS2V5LnRpdGxlJyxcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiAnRW50ZXIgQVBJIEtleSdcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPC9TZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhcGkta2V5LWlucHV0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXBpLWtleS1pbnB1dF9faWNvblwiPlxuICAgICAgICAgICAgICAgIDxBcGlLZXkgaGVpZ2h0PVwiMjBweFwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQXBpS2V5Q2hhbmdlfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtpbnRsLmZvcm1hdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgaWQ6ICdhaUFzc2lzdGFudE1hbmFnZXIuYXBpS2V5LnBsYWNlaG9sZGVyJyxcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiAnRW50ZXIgeW91ciBBUEkgS2V5J1xuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIHZhbHVlPXthcGlLZXl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgICA8U2VjdGlvblRpdGxlPlxuICAgICAgICAgICAgICAgIHtpbnRsLmZvcm1hdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgaWQ6ICdhaUFzc2lzdGFudE1hbmFnZXIuYmFzZVVybC50aXRsZScsXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZTogJ09sbGFtYSBCYXNlIFVSTCdcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPC9TZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhcGkta2V5LWlucHV0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXBpLWtleS1pbnB1dF9faWNvblwiPlxuICAgICAgICAgICAgICAgIDxBcGlLZXkgaGVpZ2h0PVwiMjBweFwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQmFzZVVybENoYW5nZX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17aW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgIGlkOiAnYWlBc3Npc3RhbnRNYW5hZ2VyLmJhc2VVcmwucGxhY2Vob2xkZXInLFxuICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U6ICdFbnRlciBPbGxhbWEgQmFzZSBVUkwnXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2Jhc2VVcmx9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgICAge2Nvbm5lY3Rpb25FcnJvciAmJiAoXG4gICAgICAgICAgPFN0eWxlRXJyb3JNZXNzYWdlIGNsYXNzTmFtZT1cImVycm9yLW1lc3NhZ2VcIj57ZXJyb3JNZXNzYWdlfTwvU3R5bGVFcnJvck1lc3NhZ2U+XG4gICAgICAgICl9XG4gICAgICAgIDxQYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgICA8U2VjdGlvblRpdGxlPlxuICAgICAgICAgICAge2ludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgIGlkOiAnYWlBc3Npc3RhbnRNYW5hZ2VyLnRlbXBlcmF0dXJlLnRpdGxlJyxcbiAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U6ICdUZW1wZXJhdHVyZSdcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU2VjdGlvblRpdGxlPlxuICAgICAgICA8L1BhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICA8U3R5bGVTbGlkZXJXcmFwcGVyPlxuICAgICAgICAgIDxSYW5nZVNsaWRlclxuICAgICAgICAgICAgc2hvd0lucHV0PXt0cnVlfVxuICAgICAgICAgICAgaXNSYW5nZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgdmFsdWUwPXswfVxuICAgICAgICAgICAgdmFsdWUxPXt0ZW1wZXJhdHVyZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvblRlbXBlcmF0dXJlQ2hhbmdlfVxuICAgICAgICAgICAgcmFuZ2U9e1swLCAyXX1cbiAgICAgICAgICAgIHN0ZXA9ezAuMX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1N0eWxlU2xpZGVyV3JhcHBlcj5cbiAgICAgICAgPFBhbmVsTGFiZWxXcmFwcGVyPlxuICAgICAgICAgIDxTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICB7aW50bC5mb3JtYXRNZXNzYWdlKHtcbiAgICAgICAgICAgICAgaWQ6ICdhaUFzc2lzdGFudE1hbmFnZXIudG9wUC50aXRsZScsXG4gICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiAnVG9wIFAnXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L1NlY3Rpb25UaXRsZT5cbiAgICAgICAgPC9QYW5lbExhYmVsV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlU2xpZGVyV3JhcHBlcj5cbiAgICAgICAgICA8UmFuZ2VTbGlkZXJcbiAgICAgICAgICAgIHNob3dJbnB1dD17dHJ1ZX1cbiAgICAgICAgICAgIGlzUmFuZ2VkPXtmYWxzZX1cbiAgICAgICAgICAgIHZhbHVlMD17MH1cbiAgICAgICAgICAgIHZhbHVlMT17dG9wUH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvblRvcFBDaGFuZ2V9XG4gICAgICAgICAgICByYW5nZT17WzAsIDFdfVxuICAgICAgICAgICAgc3RlcD17MC4xfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU3R5bGVTbGlkZXJXcmFwcGVyPlxuICAgICAgICA8U3R5bGVkQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b24gb25DbGljaz17b25TdGFydENoYXR9IHdpZHRoPXsnMTAwJSd9PlxuICAgICAgICAgICAge2lzUnVubmluZyAmJiA8TG9hZGluZ1NwaW5uZXIgc2l6ZT17MTJ9IC8+fVxuICAgICAgICAgICAge2ludGwuZm9ybWF0TWVzc2FnZSh7XG4gICAgICAgICAgICAgIGlkOiAnYWlBc3Npc3RhbnRNYW5hZ2VyLnN0YXJ0Q2hhdCcsXG4gICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiBcIkxldCdzIENoYXRcIlxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvU3R5bGVkQnV0dG9uPlxuICAgICAgPC9TdHlsZWRBaUFzc2lzdGFudENvbmZpZz5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiB3aXRoVGhlbWUoaW5qZWN0SW50bChBaUFzc2lzdGFudENvbmZpZykpIGFzIFJlYWN0LkZDPEFpQXNzaXN0YW50Q29uZmlnUHJvcHM+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBBaUFzc2lzdGFudENvbmZpZ0ZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFGLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFILE9BQUE7QUFTQSxJQUFBSSxPQUFBLEdBQUFDLHNCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBTSxLQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxPQUFBLEdBQUFGLHNCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBUSxXQUFBLEdBQUFSLE9BQUE7QUFBNEMsSUFBQVMsZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQWxCNUM7QUFDQTtBQUFBLFNBQUFDLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBbEIsd0JBQUFrQixDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEs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
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export declare const TASK_LIST = "1. Show dataset/layer/variable info.\n2. Change the basemap style.\n3. Load data from url.\n4. Create a map layer using variable.\n5.
|
|
1
|
+
export declare const TASK_LIST = "1. Show dataset/layer/variable info.\n2. Change the basemap style.\n3. Load data from url.\n4. Create a map layer using variable.\n5. Create a histogram.\n6. Create a scatter plot with regression line.\n7. Classify the data of a variable.\n8. Spatial join two datasets.";
|
|
2
2
|
export declare const WELCOME_MESSAGE: string;
|
|
3
|
-
export declare const INSTRUCTIONS
|
|
3
|
+
export declare const INSTRUCTIONS: string;
|
|
4
4
|
export declare const PROMPT_IDEAS: {
|
|
5
5
|
title: string;
|
|
6
6
|
description: string;
|
|
7
7
|
}[];
|
|
8
8
|
export declare const ASSISTANT_NAME = "kepler-gl-ai-assistant";
|
|
9
9
|
export declare const ASSISTANT_DESCRIPTION = "A Kepler.gl AI Assistant";
|
|
10
|
-
export declare const ASSISTANT_VERSION = "0.0.
|
|
10
|
+
export declare const ASSISTANT_VERSION = "0.0.2";
|