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
|
@@ -47,11 +47,17 @@ function getNewDatasetColor(datasets) {
|
|
|
47
47
|
* Take datasets payload from addDataToMap, create datasets entry save to visState
|
|
48
48
|
*/
|
|
49
49
|
function createNewDataEntry(_ref) {
|
|
50
|
+
var _getApplicationConfig;
|
|
50
51
|
var info = _ref.info,
|
|
51
52
|
data = _ref.data,
|
|
52
53
|
opts = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
|
|
53
54
|
var datasets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
54
|
-
var
|
|
55
|
+
var TableClass = (_getApplicationConfig = (0, _utils.getApplicationConfig)().table) !== null && _getApplicationConfig !== void 0 ? _getApplicationConfig : _keplerTable["default"];
|
|
56
|
+
var dataValidator = _utils.validateInputData;
|
|
57
|
+
if (typeof TableClass.getInputDataValidator === 'function') {
|
|
58
|
+
dataValidator = TableClass.getInputDataValidator();
|
|
59
|
+
}
|
|
60
|
+
var validatedData = dataValidator(data);
|
|
55
61
|
if (!validatedData) {
|
|
56
62
|
return {};
|
|
57
63
|
}
|
|
@@ -103,7 +109,7 @@ function createTable(_x2) {
|
|
|
103
109
|
}
|
|
104
110
|
function _createTable() {
|
|
105
111
|
_createTable = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(datasetInfo) {
|
|
106
|
-
var
|
|
112
|
+
var _getApplicationConfig2;
|
|
107
113
|
var info, color, opts, data, refreshedMetadata, metadata, _metadata, TableClass, table;
|
|
108
114
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
109
115
|
while (1) switch (_context2.prev = _context2.next) {
|
|
@@ -118,7 +124,7 @@ function _createTable() {
|
|
|
118
124
|
metadata = _objectSpread(_objectSpread({}, opts.metadata), refreshedMetadata);
|
|
119
125
|
data.fields = (_metadata = metadata) === null || _metadata === void 0 ? void 0 : _metadata.fields;
|
|
120
126
|
}
|
|
121
|
-
TableClass = (
|
|
127
|
+
TableClass = (_getApplicationConfig2 = (0, _utils.getApplicationConfig)().table) !== null && _getApplicationConfig2 !== void 0 ? _getApplicationConfig2 : _keplerTable["default"];
|
|
122
128
|
table = new TableClass(_objectSpread(_objectSpread({
|
|
123
129
|
info: info,
|
|
124
130
|
color: color
|
|
@@ -209,4 +215,4 @@ function _refreshRemoteData() {
|
|
|
209
215
|
}));
|
|
210
216
|
return _refreshRemoteData.apply(this, arguments);
|
|
211
217
|
}
|
|
212
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfa2VwbGVyVGFibGUiLCJfdGFza3MiLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX3BtdGlsZXMiLCJfdGlsZXNldFV0aWxzIiwiX3ZlY3RvclRpbGVVdGlscyIsIl9leGNsdWRlZCIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiZGF0YXNldENvbG9ycyIsIm1hcCIsImhleFRvUmdiIiwiZ2V0TmV3RGF0YXNldENvbG9yIiwiZGF0YXNldHMiLCJwcmVzZXRDb2xvcnMiLCJTdHJpbmciLCJ1c2VkQ29sb3JzIiwidW5pcSIsInZhbHVlcyIsImQiLCJjb2xvciIsImMiLCJpbmNsdWRlcyIsImRhdGFzZXRDb2xvck1ha2VyIiwibmV4dCIsInZhbHVlIiwiY3JlYXRlTmV3RGF0YUVudHJ5IiwiX3JlZiIsImluZm8iLCJkYXRhIiwib3B0cyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllczIiLCJ1bmRlZmluZWQiLCJ2YWxpZGF0ZWREYXRhIiwidmFsaWRhdGVJbnB1dERhdGEiLCJpZCIsImtlcGxlclRhYmxlIiwiVVBEQVRFX1RBQkxFX1RBU0siLCJ0YWJsZSIsIkNSRUFURV9UQUJMRV9UQVNLIiwidXBkYXRlVGFibGUiLCJfeCIsIl91cGRhdGVUYWJsZSIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiX3JlZjIiLCJ1cGRhdGVkIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwidXBkYXRlIiwic2VudCIsImFicnVwdCIsInN0b3AiLCJjcmVhdGVUYWJsZSIsIl94MiIsIl9jcmVhdGVUYWJsZSIsIl9jYWxsZWUyIiwiZGF0YXNldEluZm8iLCJfZ2V0QXBwbGljYXRpb25Db25maWciLCJyZWZyZXNoZWRNZXRhZGF0YSIsIm1ldGFkYXRhIiwiX21ldGFkYXRhIiwiVGFibGVDbGFzcyIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInJlZnJlc2hSZW1vdGVEYXRhIiwiZmllbGRzIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJLZXBsZXJUYWJsZSIsImltcG9ydERhdGEiLCJUYXNrIiwiZnJvbVByb21pc2UiLCJfeDMiLCJfcmVmcmVzaFJlbW90ZURhdGEiLCJfY2FsbGVlMyIsIl9yZWYzIiwicmVtb3RlVGlsZUZvcm1hdCIsInRpbGVzZXRNZXRhZGF0YVVybCIsInJhd01ldGFkYXRhIiwidGlsZVNvdXJjZSIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsInR5cGUiLCJEYXRhc2V0VHlwZSIsIlZFQ1RPUl9USUxFIiwiUmVtb3RlVGlsZUZvcm1hdCIsIlBNVElMRVMiLCJNVlQiLCJnZXRNVlRNZXRhZGF0YSIsIlBNVGlsZXNTb3VyY2UiLCJjcmVhdGVEYXRhU291cmNlIiwicGFyc2VWZWN0b3JNZXRhZGF0YSIsInQwIl0sInNvdXJjZXMiOlsiLi4vc3JjL2RhdGFzZXQtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoLnVuaXEnO1xuaW1wb3J0IEtlcGxlclRhYmxlLCB7RGF0YXNldHN9IGZyb20gJy4va2VwbGVyLXRhYmxlJztcbmltcG9ydCB7UHJvdG9EYXRhc2V0LCBSR0JDb2xvcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQgVGFzayBmcm9tICdyZWFjdC1wYWxtL3Rhc2tzJztcblxuaW1wb3J0IHtEYXRhc2V0VHlwZSwgUmVtb3RlVGlsZUZvcm1hdCwgVmVjdG9yVGlsZURhdGFzZXRNZXRhZGF0YX0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgaGV4VG9SZ2IsXG4gIHZhbGlkYXRlSW5wdXREYXRhLFxuICBkYXRhc2V0Q29sb3JNYWtlcixcbiAgZ2V0QXBwbGljYXRpb25Db25maWdcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge1BNVGlsZXNTb3VyY2UsIFBNVGlsZXNNZXRhZGF0YX0gZnJvbSAnQGxvYWRlcnMuZ2wvcG10aWxlcyc7XG5pbXBvcnQgey8qIE1WVFNvdXJjZSwqLyBUaWxlSlNPTn0gZnJvbSAnQGxvYWRlcnMuZ2wvbXZ0JztcblxuaW1wb3J0IHtnZXRNVlRNZXRhZGF0YX0gZnJvbSAnLi90aWxlc2V0L3RpbGVzZXQtdXRpbHMnO1xuaW1wb3J0IHtwYXJzZVZlY3Rvck1ldGFkYXRhfSBmcm9tICcuL3RpbGVzZXQvdmVjdG9yLXRpbGUtdXRpbHMnO1xuXG4vLyBhcHBseSBhIGNvbG9yIGZvciBlYWNoIGRhdGFzZXRcbi8vIHRvIHVzZSBhcyBsYWJlbCBjb2xvcnNcbmNvbnN0IGRhdGFzZXRDb2xvcnMgPSBbXG4gICcjOEYyRkJGJyxcbiAgJyMwMDVDRkYnLFxuICAnI0MwNkM4NCcsXG4gICcjRjhCMTk1JyxcbiAgJyM1NDdBODInLFxuICAnIzNFQUNBOCcsXG4gICcjQTJENEFCJ1xuXS5tYXAoaGV4VG9SZ2IpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV3RGF0YXNldENvbG9yKGRhdGFzZXRzOiBEYXRhc2V0cyk6IFJHQkNvbG9yIHtcbiAgY29uc3QgcHJlc2V0Q29sb3JzID0gZGF0YXNldENvbG9ycy5tYXAoU3RyaW5nKTtcbiAgY29uc3QgdXNlZENvbG9ycyA9IHVuaXEoT2JqZWN0LnZhbHVlcyhkYXRhc2V0cykubWFwKGQgPT4gU3RyaW5nKGQuY29sb3IpKSkuZmlsdGVyKGMgPT5cbiAgICBwcmVzZXRDb2xvcnMuaW5jbHVkZXMoYylcbiAgKTtcblxuICBpZiAodXNlZENvbG9ycy5sZW5ndGggPT09IHByZXNldENvbG9ycy5sZW5ndGgpIHtcbiAgICAvLyBpZiB3ZSBhbHJlYWR5IGRlcGxldGVkIHRoZSBwb29sIG9mIGNvbG9yXG4gICAgcmV0dXJuIGRhdGFzZXRDb2xvck1ha2VyLm5leHQoKS52YWx1ZTtcbiAgfVxuXG4gIGxldCBjb2xvciA9IGRhdGFzZXRDb2xvck1ha2VyLm5leHQoKS52YWx1ZTtcbiAgd2hpbGUgKHVzZWRDb2xvcnMuaW5jbHVkZXMoU3RyaW5nKGNvbG9yKSkpIHtcbiAgICBjb2xvciA9IGRhdGFzZXRDb2xvck1ha2VyLm5leHQoKS52YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBjb2xvcjtcbn1cblxuLyoqXG4gKiBUYWtlIGRhdGFzZXRzIHBheWxvYWQgZnJvbSBhZGREYXRhVG9NYXAsIGNyZWF0ZSBkYXRhc2V0cyBlbnRyeSBzYXZlIHRvIHZpc1N0YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZXdEYXRhRW50cnkoXG4gIHtpbmZvLCBkYXRhLCAuLi5vcHRzfTogUHJvdG9EYXRhc2V0LFxuICBkYXRhc2V0czogRGF0YXNldHMgPSB7fVxuKTogRGF0YXNldHMge1xuICBjb25zdCB2YWxpZGF0ZWREYXRhID0gdmFsaWRhdGVJbnB1dERhdGEoZGF0YSk7XG4gIGlmICghdmFsaWRhdGVkRGF0YSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIC8vIGNoZWNrIGlmIGRhdGFzZXQgYWxyZWFkeSBleGlzdHMsIGFuZCB1cGRhdGUgaXQgd2hlbiBsb2FkaW5nIGRhdGEgYnkgYmF0Y2hlcyBpbmNyZW1lbnRhbGx5XG4gIGlmIChpbmZvICYmIGluZm8uaWQgJiYgZGF0YXNldHNbaW5mby5pZF0pIHtcbiAgICAvLyBnZXQga2VwbGVyVGFibGUgZnJvbSBkYXRhc2V0c1xuICAgIGNvbnN0IGtlcGxlclRhYmxlID0gZGF0YXNldHNbaW5mby5pZF07XG4gICAgLy8gdXBkYXRlIHRoZSBkYXRhIGluIGtlcGxlclRhYmxlXG4gICAgcmV0dXJuIFVQREFURV9UQUJMRV9UQVNLKHt0YWJsZToga2VwbGVyVGFibGUsIGRhdGE6IHZhbGlkYXRlZERhdGF9KTtcbiAgfVxuXG4gIGluZm8gPSBpbmZvIHx8IHt9O1xuICBjb25zdCBjb2xvciA9IGluZm8uY29sb3IgfHwgZ2V0TmV3RGF0YXNldENvbG9yKGRhdGFzZXRzKTtcblxuICByZXR1cm4gQ1JFQVRFX1RBQkxFX1RBU0soe1xuICAgIGluZm8sXG4gICAgY29sb3IsXG4gICAgb3B0cyxcbiAgICBkYXRhOiB2YWxpZGF0ZWREYXRhXG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVUYWJsZSh7dGFibGUsIGRhdGF9KSB7XG4gIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB0YWJsZS51cGRhdGUoZGF0YSk7IC8vIEFzc3VtaW5nIGB0YWJsZWAgaGFzIGFuIGB1cGRhdGVgIG1ldGhvZFxuICByZXR1cm4gdXBkYXRlZDtcbn1cblxudHlwZSBDcmVhdGVUYWJsZVByb3BzID0ge1xuICBpbmZvOiBhbnk7XG4gIGNvbG9yOiBSR0JDb2xvcjtcbiAgb3B0czoge1xuICAgIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH07XG4gIGRhdGE6IGFueTtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRhYmxlKGRhdGFzZXRJbmZvOiBDcmVhdGVUYWJsZVByb3BzKSB7XG4gIGNvbnN0IHtpbmZvLCBjb2xvciwgb3B0cywgZGF0YX0gPSBkYXRhc2V0SW5mbztcblxuICAvLyB1cGRhdGUgbWV0YWRhdGEgZm9yIHJlbW90ZSB0aWxlZCBkYXRhc2V0c1xuICBjb25zdCByZWZyZXNoZWRNZXRhZGF0YSA9IGF3YWl0IHJlZnJlc2hSZW1vdGVEYXRhKGRhdGFzZXRJbmZvKTtcbiAgbGV0IG1ldGFkYXRhID0gb3B0cy5tZXRhZGF0YTtcbiAgaWYgKHJlZnJlc2hlZE1ldGFkYXRhKSB7XG4gICAgbWV0YWRhdGEgPSB7Li4ub3B0cy5tZXRhZGF0YSwgLi4ucmVmcmVzaGVkTWV0YWRhdGF9O1xuICAgIGRhdGEuZmllbGRzID0gbWV0YWRhdGE/LmZpZWxkcztcbiAgfVxuXG4gIGNvbnN0IFRhYmxlQ2xhc3MgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLnRhYmxlID8/IEtlcGxlclRhYmxlO1xuICBjb25zdCB0YWJsZSA9IG5ldyBUYWJsZUNsYXNzKHtcbiAgICBpbmZvLFxuICAgIGNvbG9yLFxuICAgIC4uLm9wdHMsXG4gICAgbWV0YWRhdGFcbiAgfSk7XG4gIGF3YWl0IHRhYmxlLmltcG9ydERhdGEoe2RhdGF9KTtcblxuICByZXR1cm4gdGFibGU7XG59XG5jb25zdCBVUERBVEVfVEFCTEVfVEFTSyA9IFRhc2suZnJvbVByb21pc2UodXBkYXRlVGFibGUsICdVUERBVEVfVEFCTEVfVEFTSycpO1xuY29uc3QgQ1JFQVRFX1RBQkxFX1RBU0sgPSBUYXNrLmZyb21Qcm9taXNlKGNyZWF0ZVRhYmxlLCAnQ1JFQVRFX1RBQkxFX1RBU0snKTtcblxuLyoqXG4gKiBGZXRjaCBtZXRhZGF0YSBmb3IgdmVjdG9yIHRpbGUgbGF5ZXJzIHVzaW5nIHRpbGVzZXRNZXRhZGF0YVVybCBmcm9tIG1ldGFkYXRhXG4gKiBAcGFyYW0gZGF0YXNldEluZm9cbiAqIEByZXR1cm5zXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hSZW1vdGVEYXRhKGRhdGFzZXRJbmZvOiBDcmVhdGVUYWJsZVByb3BzKSB7XG4gIC8vIHNvIGZhciBvbmx5IHZlY3RvciB0aWxlIGxheWVycyBzaG91bGQgcmVmcmVzaCBtZXRhZGF0YVxuICBpZiAoZGF0YXNldEluZm8uaW5mby50eXBlICE9PSBEYXRhc2V0VHlwZS5WRUNUT1JfVElMRSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3Qge3JlbW90ZVRpbGVGb3JtYXQsIHRpbGVzZXRNZXRhZGF0YVVybH0gPVxuICAgIChkYXRhc2V0SW5mby5vcHRzLm1ldGFkYXRhIGFzIFZlY3RvclRpbGVEYXRhc2V0TWV0YWRhdGEpIHx8IHt9O1xuXG4gIGlmIChcbiAgICAhKHJlbW90ZVRpbGVGb3JtYXQgPT09IFJlbW90ZVRpbGVGb3JtYXQuUE1USUxFUyB8fCByZW1vdGVUaWxlRm9ybWF0ID09PSBSZW1vdGVUaWxlRm9ybWF0Lk1WVCkgfHxcbiAgICB0eXBlb2YgdGlsZXNldE1ldGFkYXRhVXJsICE9PSAnc3RyaW5nJ1xuICApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgbGV0IHJhd01ldGFkYXRhOiBQTVRpbGVzTWV0YWRhdGEgfCBUaWxlSlNPTiB8IG51bGwgPSBudWxsO1xuICAgIGlmIChyZW1vdGVUaWxlRm9ybWF0ID09PSBSZW1vdGVUaWxlRm9ybWF0Lk1WVCkge1xuICAgICAgcmF3TWV0YWRhdGEgPSBhd2FpdCBnZXRNVlRNZXRhZGF0YSh0aWxlc2V0TWV0YWRhdGFVcmwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0aWxlU291cmNlID0gUE1UaWxlc1NvdXJjZS5jcmVhdGVEYXRhU291cmNlKHRpbGVzZXRNZXRhZGF0YVVybCwge30pO1xuICAgICAgcmF3TWV0YWRhdGEgPSBhd2FpdCB0aWxlU291cmNlLm1ldGFkYXRhO1xuICAgIH1cblxuICAgIGlmIChyYXdNZXRhZGF0YSkge1xuICAgICAgcmV0dXJuIHBhcnNlVmVjdG9yTWV0YWRhdGEocmF3TWV0YWRhdGEpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gaWdub3JlIGZvciBub3csIGFuZCB1c2Ugb2xkIG1ldGFkYXRhP1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFlBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLE1BQUEsR0FBQUgsc0JBQUEsQ0FB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
|
|
218
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfa2VwbGVyVGFibGUiLCJfdGFza3MiLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiX3BtdGlsZXMiLCJfdGlsZXNldFV0aWxzIiwiX3ZlY3RvclRpbGVVdGlscyIsIl9leGNsdWRlZCIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiZGF0YXNldENvbG9ycyIsIm1hcCIsImhleFRvUmdiIiwiZ2V0TmV3RGF0YXNldENvbG9yIiwiZGF0YXNldHMiLCJwcmVzZXRDb2xvcnMiLCJTdHJpbmciLCJ1c2VkQ29sb3JzIiwidW5pcSIsInZhbHVlcyIsImQiLCJjb2xvciIsImMiLCJpbmNsdWRlcyIsImRhdGFzZXRDb2xvck1ha2VyIiwibmV4dCIsInZhbHVlIiwiY3JlYXRlTmV3RGF0YUVudHJ5IiwiX3JlZiIsIl9nZXRBcHBsaWNhdGlvbkNvbmZpZyIsImluZm8iLCJkYXRhIiwib3B0cyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllczIiLCJ1bmRlZmluZWQiLCJUYWJsZUNsYXNzIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJ0YWJsZSIsIktlcGxlclRhYmxlIiwiZGF0YVZhbGlkYXRvciIsInZhbGlkYXRlSW5wdXREYXRhIiwiZ2V0SW5wdXREYXRhVmFsaWRhdG9yIiwidmFsaWRhdGVkRGF0YSIsImlkIiwia2VwbGVyVGFibGUiLCJVUERBVEVfVEFCTEVfVEFTSyIsIkNSRUFURV9UQUJMRV9UQVNLIiwidXBkYXRlVGFibGUiLCJfeCIsIl91cGRhdGVUYWJsZSIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiX3JlZjIiLCJ1cGRhdGVkIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwidXBkYXRlIiwic2VudCIsImFicnVwdCIsInN0b3AiLCJjcmVhdGVUYWJsZSIsIl94MiIsIl9jcmVhdGVUYWJsZSIsIl9jYWxsZWUyIiwiZGF0YXNldEluZm8iLCJfZ2V0QXBwbGljYXRpb25Db25maWcyIiwicmVmcmVzaGVkTWV0YWRhdGEiLCJtZXRhZGF0YSIsIl9tZXRhZGF0YSIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInJlZnJlc2hSZW1vdGVEYXRhIiwiZmllbGRzIiwiaW1wb3J0RGF0YSIsIlRhc2siLCJmcm9tUHJvbWlzZSIsIl94MyIsIl9yZWZyZXNoUmVtb3RlRGF0YSIsIl9jYWxsZWUzIiwiX3JlZjMiLCJyZW1vdGVUaWxlRm9ybWF0IiwidGlsZXNldE1ldGFkYXRhVXJsIiwicmF3TWV0YWRhdGEiLCJ0aWxlU291cmNlIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwidHlwZSIsIkRhdGFzZXRUeXBlIiwiVkVDVE9SX1RJTEUiLCJSZW1vdGVUaWxlRm9ybWF0IiwiUE1USUxFUyIsIk1WVCIsImdldE1WVE1ldGFkYXRhIiwiUE1UaWxlc1NvdXJjZSIsImNyZWF0ZURhdGFTb3VyY2UiLCJwYXJzZVZlY3Rvck1ldGFkYXRhIiwidDAiXSwic291cmNlcyI6WyIuLi9zcmMvZGF0YXNldC11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gudW5pcSc7XG5pbXBvcnQgS2VwbGVyVGFibGUsIHtEYXRhc2V0c30gZnJvbSAnLi9rZXBsZXItdGFibGUnO1xuaW1wb3J0IHtQcm90b0RhdGFzZXQsIFJHQkNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCBUYXNrIGZyb20gJ3JlYWN0LXBhbG0vdGFza3MnO1xuXG5pbXBvcnQge0RhdGFzZXRUeXBlLCBSZW1vdGVUaWxlRm9ybWF0LCBWZWN0b3JUaWxlRGF0YXNldE1ldGFkYXRhfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBoZXhUb1JnYixcbiAgdmFsaWRhdGVJbnB1dERhdGEsXG4gIGRhdGFzZXRDb2xvck1ha2VyLFxuICBnZXRBcHBsaWNhdGlvbkNvbmZpZ1xufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7UE1UaWxlc1NvdXJjZSwgUE1UaWxlc01ldGFkYXRhfSBmcm9tICdAbG9hZGVycy5nbC9wbXRpbGVzJztcbmltcG9ydCB7LyogTVZUU291cmNlLCovIFRpbGVKU09OfSBmcm9tICdAbG9hZGVycy5nbC9tdnQnO1xuXG5pbXBvcnQge2dldE1WVE1ldGFkYXRhfSBmcm9tICcuL3RpbGVzZXQvdGlsZXNldC11dGlscyc7XG5pbXBvcnQge3BhcnNlVmVjdG9yTWV0YWRhdGF9IGZyb20gJy4vdGlsZXNldC92ZWN0b3ItdGlsZS11dGlscyc7XG5cbi8vIGFwcGx5IGEgY29sb3IgZm9yIGVhY2ggZGF0YXNldFxuLy8gdG8gdXNlIGFzIGxhYmVsIGNvbG9yc1xuY29uc3QgZGF0YXNldENvbG9ycyA9IFtcbiAgJyM4RjJGQkYnLFxuICAnIzAwNUNGRicsXG4gICcjQzA2Qzg0JyxcbiAgJyNGOEIxOTUnLFxuICAnIzU0N0E4MicsXG4gICcjM0VBQ0E4JyxcbiAgJyNBMkQ0QUInXG5dLm1hcChoZXhUb1JnYik7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXdEYXRhc2V0Q29sb3IoZGF0YXNldHM6IERhdGFzZXRzKTogUkdCQ29sb3Ige1xuICBjb25zdCBwcmVzZXRDb2xvcnMgPSBkYXRhc2V0Q29sb3JzLm1hcChTdHJpbmcpO1xuICBjb25zdCB1c2VkQ29sb3JzID0gdW5pcShPYmplY3QudmFsdWVzKGRhdGFzZXRzKS5tYXAoZCA9PiBTdHJpbmcoZC5jb2xvcikpKS5maWx0ZXIoYyA9PlxuICAgIHByZXNldENvbG9ycy5pbmNsdWRlcyhjKVxuICApO1xuXG4gIGlmICh1c2VkQ29sb3JzLmxlbmd0aCA9PT0gcHJlc2V0Q29sb3JzLmxlbmd0aCkge1xuICAgIC8vIGlmIHdlIGFscmVhZHkgZGVwbGV0ZWQgdGhlIHBvb2wgb2YgY29sb3JcbiAgICByZXR1cm4gZGF0YXNldENvbG9yTWFrZXIubmV4dCgpLnZhbHVlO1xuICB9XG5cbiAgbGV0IGNvbG9yID0gZGF0YXNldENvbG9yTWFrZXIubmV4dCgpLnZhbHVlO1xuICB3aGlsZSAodXNlZENvbG9ycy5pbmNsdWRlcyhTdHJpbmcoY29sb3IpKSkge1xuICAgIGNvbG9yID0gZGF0YXNldENvbG9yTWFrZXIubmV4dCgpLnZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIGNvbG9yO1xufVxuXG4vKipcbiAqIFRha2UgZGF0YXNldHMgcGF5bG9hZCBmcm9tIGFkZERhdGFUb01hcCwgY3JlYXRlIGRhdGFzZXRzIGVudHJ5IHNhdmUgdG8gdmlzU3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5ld0RhdGFFbnRyeShcbiAge2luZm8sIGRhdGEsIC4uLm9wdHN9OiBQcm90b0RhdGFzZXQsXG4gIGRhdGFzZXRzOiBEYXRhc2V0cyA9IHt9XG4pOiBEYXRhc2V0cyB7XG4gIGNvbnN0IFRhYmxlQ2xhc3MgPSBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLnRhYmxlID8/IEtlcGxlclRhYmxlO1xuICBsZXQgZGF0YVZhbGlkYXRvciA9IHZhbGlkYXRlSW5wdXREYXRhO1xuICBpZiAodHlwZW9mIFRhYmxlQ2xhc3MuZ2V0SW5wdXREYXRhVmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZGF0YVZhbGlkYXRvciA9IFRhYmxlQ2xhc3MuZ2V0SW5wdXREYXRhVmFsaWRhdG9yKCk7XG4gIH1cblxuICBjb25zdCB2YWxpZGF0ZWREYXRhID0gZGF0YVZhbGlkYXRvcihkYXRhKTtcbiAgaWYgKCF2YWxpZGF0ZWREYXRhKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLy8gY2hlY2sgaWYgZGF0YXNldCBhbHJlYWR5IGV4aXN0cywgYW5kIHVwZGF0ZSBpdCB3aGVuIGxvYWRpbmcgZGF0YSBieSBiYXRjaGVzIGluY3JlbWVudGFsbHlcbiAgaWYgKGluZm8gJiYgaW5mby5pZCAmJiBkYXRhc2V0c1tpbmZvLmlkXSkge1xuICAgIC8vIGdldCBrZXBsZXJUYWJsZSBmcm9tIGRhdGFzZXRzXG4gICAgY29uc3Qga2VwbGVyVGFibGUgPSBkYXRhc2V0c1tpbmZvLmlkXTtcbiAgICAvLyB1cGRhdGUgdGhlIGRhdGEgaW4ga2VwbGVyVGFibGVcbiAgICByZXR1cm4gVVBEQVRFX1RBQkxFX1RBU0soe3RhYmxlOiBrZXBsZXJUYWJsZSwgZGF0YTogdmFsaWRhdGVkRGF0YX0pO1xuICB9XG5cbiAgaW5mbyA9IGluZm8gfHwge307XG4gIGNvbnN0IGNvbG9yID0gaW5mby5jb2xvciB8fCBnZXROZXdEYXRhc2V0Q29sb3IoZGF0YXNldHMpO1xuXG4gIHJldHVybiBDUkVBVEVfVEFCTEVfVEFTSyh7XG4gICAgaW5mbyxcbiAgICBjb2xvcixcbiAgICBvcHRzLFxuICAgIGRhdGE6IHZhbGlkYXRlZERhdGFcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVRhYmxlKHt0YWJsZSwgZGF0YX0pIHtcbiAgY29uc3QgdXBkYXRlZCA9IGF3YWl0IHRhYmxlLnVwZGF0ZShkYXRhKTsgLy8gQXNzdW1pbmcgYHRhYmxlYCBoYXMgYW4gYHVwZGF0ZWAgbWV0aG9kXG4gIHJldHVybiB1cGRhdGVkO1xufVxuXG50eXBlIENyZWF0ZVRhYmxlUHJvcHMgPSB7XG4gIGluZm86IGFueTtcbiAgY29sb3I6IFJHQkNvbG9yO1xuICBvcHRzOiB7XG4gICAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfTtcbiAgZGF0YTogYW55O1xufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlVGFibGUoZGF0YXNldEluZm86IENyZWF0ZVRhYmxlUHJvcHMpIHtcbiAgY29uc3Qge2luZm8sIGNvbG9yLCBvcHRzLCBkYXRhfSA9IGRhdGFzZXRJbmZvO1xuXG4gIC8vIHVwZGF0ZSBtZXRhZGF0YSBmb3IgcmVtb3RlIHRpbGVkIGRhdGFzZXRzXG4gIGNvbnN0IHJlZnJlc2hlZE1ldGFkYXRhID0gYXdhaXQgcmVmcmVzaFJlbW90ZURhdGEoZGF0YXNldEluZm8pO1xuICBsZXQgbWV0YWRhdGEgPSBvcHRzLm1ldGFkYXRhO1xuICBpZiAocmVmcmVzaGVkTWV0YWRhdGEpIHtcbiAgICBtZXRhZGF0YSA9IHsuLi5vcHRzLm1ldGFkYXRhLCAuLi5yZWZyZXNoZWRNZXRhZGF0YX07XG4gICAgZGF0YS5maWVsZHMgPSBtZXRhZGF0YT8uZmllbGRzO1xuICB9XG5cbiAgY29uc3QgVGFibGVDbGFzcyA9IGdldEFwcGxpY2F0aW9uQ29uZmlnKCkudGFibGUgPz8gS2VwbGVyVGFibGU7XG4gIGNvbnN0IHRhYmxlID0gbmV3IFRhYmxlQ2xhc3Moe1xuICAgIGluZm8sXG4gICAgY29sb3IsXG4gICAgLi4ub3B0cyxcbiAgICBtZXRhZGF0YVxuICB9KTtcbiAgYXdhaXQgdGFibGUuaW1wb3J0RGF0YSh7ZGF0YX0pO1xuXG4gIHJldHVybiB0YWJsZTtcbn1cbmNvbnN0IFVQREFURV9UQUJMRV9UQVNLID0gVGFzay5mcm9tUHJvbWlzZSh1cGRhdGVUYWJsZSwgJ1VQREFURV9UQUJMRV9UQVNLJyk7XG5jb25zdCBDUkVBVEVfVEFCTEVfVEFTSyA9IFRhc2suZnJvbVByb21pc2UoY3JlYXRlVGFibGUsICdDUkVBVEVfVEFCTEVfVEFTSycpO1xuXG4vKipcbiAqIEZldGNoIG1ldGFkYXRhIGZvciB2ZWN0b3IgdGlsZSBsYXllcnMgdXNpbmcgdGlsZXNldE1ldGFkYXRhVXJsIGZyb20gbWV0YWRhdGFcbiAqIEBwYXJhbSBkYXRhc2V0SW5mb1xuICogQHJldHVybnNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVmcmVzaFJlbW90ZURhdGEoZGF0YXNldEluZm86IENyZWF0ZVRhYmxlUHJvcHMpIHtcbiAgLy8gc28gZmFyIG9ubHkgdmVjdG9yIHRpbGUgbGF5ZXJzIHNob3VsZCByZWZyZXNoIG1ldGFkYXRhXG4gIGlmIChkYXRhc2V0SW5mby5pbmZvLnR5cGUgIT09IERhdGFzZXRUeXBlLlZFQ1RPUl9USUxFKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCB7cmVtb3RlVGlsZUZvcm1hdCwgdGlsZXNldE1ldGFkYXRhVXJsfSA9XG4gICAgKGRhdGFzZXRJbmZvLm9wdHMubWV0YWRhdGEgYXMgVmVjdG9yVGlsZURhdGFzZXRNZXRhZGF0YSkgfHwge307XG5cbiAgaWYgKFxuICAgICEocmVtb3RlVGlsZUZvcm1hdCA9PT0gUmVtb3RlVGlsZUZvcm1hdC5QTVRJTEVTIHx8IHJlbW90ZVRpbGVGb3JtYXQgPT09IFJlbW90ZVRpbGVGb3JtYXQuTVZUKSB8fFxuICAgIHR5cGVvZiB0aWxlc2V0TWV0YWRhdGFVcmwgIT09ICdzdHJpbmcnXG4gICkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBsZXQgcmF3TWV0YWRhdGE6IFBNVGlsZXNNZXRhZGF0YSB8IFRpbGVKU09OIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKHJlbW90ZVRpbGVGb3JtYXQgPT09IFJlbW90ZVRpbGVGb3JtYXQuTVZUKSB7XG4gICAgICByYXdNZXRhZGF0YSA9IGF3YWl0IGdldE1WVE1ldGFkYXRhKHRpbGVzZXRNZXRhZGF0YVVybCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRpbGVTb3VyY2UgPSBQTVRpbGVzU291cmNlLmNyZWF0ZURhdGFTb3VyY2UodGlsZXNldE1ldGFkYXRhVXJsLCB7fSk7XG4gICAgICByYXdNZXRhZGF0YSA9IGF3YWl0IHRpbGVTb3VyY2UubWV0YWRhdGE7XG4gICAgfVxuXG4gICAgaWYgKHJhd01ldGFkYXRhKSB7XG4gICAgICByZXR1cm4gcGFyc2VWZWN0b3JNZXRhZGF0YShyYXdNZXRhZGF0YSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBpZ25vcmUgZm9yIG5vdywgYW5kIHVzZSBvbGQgbWV0YWRhdGE/XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsWUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsTUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUcsVUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBTUEsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBR0EsSUFBQU0sYUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sZ0JBQUEsR0FBQVAsT0FBQTtBQUFnRSxJQUFBUSxTQUFBLHFCQW5CaEU7QUFDQTtBQUFBLFNBQUFDLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBWixDQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdBQUFXLFNBQUEsQ0FBQVos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
|
package/src/table/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kepler.gl/table",
|
|
3
3
|
"author": "Shan He <shan@uber.com>",
|
|
4
|
-
"version": "3.1.0
|
|
4
|
+
"version": "3.1.0",
|
|
5
5
|
"description": "kepler.gl constants used by kepler.gl components, actions and reducers",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -30,10 +30,10 @@
|
|
|
30
30
|
"umd"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@kepler.gl/common-utils": "3.1.0
|
|
34
|
-
"@kepler.gl/constants": "3.1.0
|
|
35
|
-
"@kepler.gl/types": "3.1.0
|
|
36
|
-
"@kepler.gl/utils": "3.1.0
|
|
33
|
+
"@kepler.gl/common-utils": "3.1.0",
|
|
34
|
+
"@kepler.gl/constants": "3.1.0",
|
|
35
|
+
"@kepler.gl/types": "3.1.0",
|
|
36
|
+
"@kepler.gl/utils": "3.1.0",
|
|
37
37
|
"@loaders.gl/mvt": "^4.3.2",
|
|
38
38
|
"@loaders.gl/pmtiles": "^4.3.2",
|
|
39
39
|
"@types/d3-array": "^2.8.0",
|
|
@@ -57,7 +57,13 @@ export function createNewDataEntry(
|
|
|
57
57
|
{info, data, ...opts}: ProtoDataset,
|
|
58
58
|
datasets: Datasets = {}
|
|
59
59
|
): Datasets {
|
|
60
|
-
const
|
|
60
|
+
const TableClass = getApplicationConfig().table ?? KeplerTable;
|
|
61
|
+
let dataValidator = validateInputData;
|
|
62
|
+
if (typeof TableClass.getInputDataValidator === 'function') {
|
|
63
|
+
dataValidator = TableClass.getInputDataValidator();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const validatedData = dataValidator(data);
|
|
61
67
|
if (!validatedData) {
|
|
62
68
|
return {};
|
|
63
69
|
}
|
package/src/tasks/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kepler.gl/tasks",
|
|
3
3
|
"author": "Shan He <shan@uber.com>",
|
|
4
|
-
"version": "3.1.0
|
|
4
|
+
"version": "3.1.0",
|
|
5
5
|
"description": "kepler.gl constants used by kepler.gl components, actions and reducers",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"umd"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@kepler.gl/processors": "3.1.0
|
|
33
|
+
"@kepler.gl/processors": "3.1.0",
|
|
34
34
|
"react-palm": "^3.3.8"
|
|
35
35
|
},
|
|
36
36
|
"nyc": {
|
package/src/types/package.json
CHANGED
package/src/types/reducers.d.ts
CHANGED
|
@@ -472,6 +472,8 @@ export type UiState = {
|
|
|
472
472
|
filterPanelListView: PanelListView;
|
|
473
473
|
// side panel close button visibility
|
|
474
474
|
isSidePanelCloseButtonVisible: boolean | null;
|
|
475
|
+
// positive value indicates that something is loading
|
|
476
|
+
loadingIndicatorValue?: number;
|
|
475
477
|
};
|
|
476
478
|
|
|
477
479
|
/** Width of viewport */
|
|
@@ -25,6 +25,8 @@ export declare type KeplerApplicationConfig<Map> = {
|
|
|
25
25
|
baseMapLibraryConfig?: Record<BaseMapLibraryType, BaseMapLibraryConfig>;
|
|
26
26
|
plugins?: any[];
|
|
27
27
|
table?: any;
|
|
28
|
+
useArrowProgressiveLoading?: boolean;
|
|
29
|
+
showReleaseBanner?: boolean;
|
|
28
30
|
};
|
|
29
31
|
export declare const getApplicationConfig: () => Required<KeplerApplicationConfig<mapboxgl.Map>>;
|
|
30
32
|
export declare function initApplicationConfig<M>(appConfig?: KeplerApplicationConfig<M>): void;
|
|
@@ -52,7 +52,9 @@ var DEFAULT_APPLICATION_CONFIG = {
|
|
|
52
52
|
plugins: [],
|
|
53
53
|
// The default table class is KeplerTable.
|
|
54
54
|
// TODO include KeplerTable here when the circular dependency with @kepler.gl/table and @kepler.gl/utils are resolved.
|
|
55
|
-
table: null
|
|
55
|
+
table: null,
|
|
56
|
+
useArrowProgressiveLoading: true,
|
|
57
|
+
showReleaseBanner: true
|
|
56
58
|
};
|
|
57
59
|
var applicationConfig = DEFAULT_APPLICATION_CONFIG;
|
|
58
60
|
var getApplicationConfig = exports.getApplicationConfig = function getApplicationConfig() {
|
|
@@ -62,4 +64,4 @@ function initApplicationConfig() {
|
|
|
62
64
|
var appConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
63
65
|
Object.assign(applicationConfig, appConfig);
|
|
64
66
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX0FQUExJQ0FUSU9OX0NPTkZJRyIsImRlZmF1bHRIdG1sTmFtZSIsImRlZmF1bHRJbWFnZU5hbWUiLCJkZWZhdWx0SnNvbk5hbWUiLCJkZWZhdWx0RGF0YU5hbWUiLCJkZWZhdWx0RXhwb3J0SnNvblNldHRpbmdzIiwiaGFzRGF0YSIsImJhc2VNYXBMaWJyYXJ5Q29uZmlnIiwibWFwbGlicmUiLCJnZXRNYXBMaWIiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJtYXBMaWJDc3NDbGFzcyIsIm1hcExpYkF0dHJpYnV0aW9uQ3NzQ2xhc3MiLCJtYXBMaWJOYW1lIiwibWFwTGliVXJsIiwibWFwYm94IiwicGx1Z2lucyIsInRhYmxlIiwidXNlQXJyb3dQcm9ncmVzc2l2ZUxvYWRpbmciLCJzaG93UmVsZWFzZUJhbm5lciIsImFwcGxpY2F0aW9uQ29uZmlnIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJleHBvcnRzIiwiaW5pdEFwcGxpY2F0aW9uQ29uZmlnIiwiYXBwQ29uZmlnIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZXMiOlsiLi4vc3JjL2FwcGxpY2F0aW9uLWNvbmZpZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge01hcExpYiwgTWFwUmVmfSBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuXG5pbXBvcnQgdHlwZSB7QmFzZU1hcExpYnJhcnlUeXBlfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmV4cG9ydCB0eXBlIE1hcExpYkluc3RhbmNlID0gTWFwTGliPGFueT47XG5leHBvcnQgdHlwZSBHZXRNYXBSZWYgPSBSZXR1cm5UeXBlPE1hcFJlZlsnZ2V0TWFwJ10+O1xuXG5leHBvcnQgdHlwZSBCYXNlTWFwTGlicmFyeUNvbmZpZyA9IHtcbiAgZ2V0TWFwTGliOiAoKSA9PiBQcm9taXNlPE1hcExpYkluc3RhbmNlPjtcbiAgbWFwTGliQXR0cmlidXRpb25Dc3NDbGFzczogc3RyaW5nO1xuICBtYXBMaWJDc3NDbGFzczogc3RyaW5nO1xuICBtYXBMaWJOYW1lOiBzdHJpbmc7XG4gIG1hcExpYlVybDogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBBIG1lY2hhbmlzbSB0byBvdmVycmlkZSBkZWZhdWx0IEtlcGxlciB2YWx1ZXMvc2V0dGluZ3Mgc28gdGhhdCB3ZVxuICogd2l0aG91dCBoYXZpbmcgdG8gbWFrZSBhcHBsaWNhdGlvbi1zcGVjaWZpYyBjaGFuZ2VzIHRvIHRoZSBrZXBsZXIgcmVwby5cbiAqL1xuZXhwb3J0IHR5cGUgS2VwbGVyQXBwbGljYXRpb25Db25maWc8TWFwPiA9IHtcbiAgLyoqIERlZmF1bHQgbmFtZSBvZiBleHBvcnQgSFRNTCBmaWxlLCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB1c2VyICovXG4gIGRlZmF1bHRIdG1sTmFtZT86IHN0cmluZztcbiAgZGVmYXVsdEltYWdlTmFtZT86IHN0cmluZztcbiAgZGVmYXVsdEpzb25OYW1lPzogc3RyaW5nO1xuICBkZWZhdWx0RGF0YU5hbWU/OiBzdHJpbmc7XG4gIGRlZmF1bHRFeHBvcnRKc29uU2V0dGluZ3M/OiB7XG4gICAgaGFzRGF0YT86IGJvb2xlYW47XG4gIH07XG4gIGJhc2VNYXBMaWJyYXJ5Q29uZmlnPzogUmVjb3JkPEJhc2VNYXBMaWJyYXJ5VHlwZSwgQmFzZU1hcExpYnJhcnlDb25maWc+O1xuICBwbHVnaW5zPzogYW55W107XG4gIC8vIEtlcGxlclRhYmxlIGFsdGVybmF0aXZlXG4gIC8vIFRPRE8gaW1wcm92ZSB0eXBpbmcgYnkgZXhwb3J0aW5nIEtlcGxlclRhYmxlIGludGVyZmFjZSB0byBAa2VwbGVyLmdsL3R5cGVzXG4gIHRhYmxlPzogYW55O1xuXG4gIC8vIERpc2FibGUgcHJvZ3Jlc3NpdmUgbG9hZGluZyBmb3IgYXJyb3cgZmlsZXNcbiAgdXNlQXJyb3dQcm9ncmVzc2l2ZUxvYWRpbmc/OiBib29sZWFuO1xuICAvLyBTaG93IGJ1aWx0LWluIGJhbm5lciBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBLZXBsZXIuZ2xcbiAgc2hvd1JlbGVhc2VCYW5uZXI/OiBib29sZWFuO1xufTtcblxuY29uc3QgREVGQVVMVF9BUFBMSUNBVElPTl9DT05GSUc6IFJlcXVpcmVkPEtlcGxlckFwcGxpY2F0aW9uQ29uZmlnPG1hcGJveGdsLk1hcD4+ID0ge1xuICBkZWZhdWx0SHRtbE5hbWU6ICdrZXBsZXIuZ2wuaHRtbCcsXG4gIGRlZmF1bHRJbWFnZU5hbWU6ICdrZXBsZXIuZ2wucG5nJyxcbiAgZGVmYXVsdEpzb25OYW1lOiAna2VwbGVyLmdsLmpzb24nLFxuICBkZWZhdWx0RGF0YU5hbWU6ICdrZXBsZXIuZ2wnLFxuICBkZWZhdWx0RXhwb3J0SnNvblNldHRpbmdzOiB7XG4gICAgaGFzRGF0YTogdHJ1ZVxuICB9LFxuXG4gIGJhc2VNYXBMaWJyYXJ5Q29uZmlnOiB7XG4gICAgbWFwbGlicmU6IHtcbiAgICAgIGdldE1hcExpYjogKCkgPT4gaW1wb3J0KCdtYXBsaWJyZS1nbCcpLFxuICAgICAgbWFwTGliQ3NzQ2xhc3M6ICdtYXBsaWJyZWdsJyxcbiAgICAgIG1hcExpYkF0dHJpYnV0aW9uQ3NzQ2xhc3M6ICdtYXBsaWJyZS1hdHRyaWJ1dGlvbi1jb250YWluZXInLFxuICAgICAgbWFwTGliTmFtZTogJ01hcExpYnJlJyxcbiAgICAgIG1hcExpYlVybDogJ2h0dHBzOi8vd3d3Lm1hcGxpYnJlLm9yZy8nXG4gICAgfSxcbiAgICBtYXBib3g6IHtcbiAgICAgIGdldE1hcExpYjogKCkgPT4gaW1wb3J0KCdtYXBib3gtZ2wnKSxcbiAgICAgIG1hcExpYkNzc0NsYXNzOiAnbWFwYm94Z2wnLFxuICAgICAgbWFwTGliQXR0cmlidXRpb25Dc3NDbGFzczogJ21hcGJveC1hdHRyaWJ1dGlvbi1jb250YWluZXInLFxuICAgICAgbWFwTGliTmFtZTogJ01hcGJveCcsXG4gICAgICBtYXBMaWJVcmw6ICdodHRwczovL3d3dy5tYXBib3guY29tLydcbiAgICB9XG4gIH0sXG5cbiAgcGx1Z2luczogW10sXG4gIC8vIFRoZSBkZWZhdWx0IHRhYmxlIGNsYXNzIGlzIEtlcGxlclRhYmxlLlxuICAvLyBUT0RPIGluY2x1ZGUgS2VwbGVyVGFibGUgaGVyZSB3aGVuIHRoZSBjaXJjdWxhciBkZXBlbmRlbmN5IHdpdGggQGtlcGxlci5nbC90YWJsZSBhbmQgQGtlcGxlci5nbC91dGlscyBhcmUgcmVzb2x2ZWQuXG4gIHRhYmxlOiBudWxsLFxuXG4gIHVzZUFycm93UHJvZ3Jlc3NpdmVMb2FkaW5nOiB0cnVlLFxuICBzaG93UmVsZWFzZUJhbm5lcjogdHJ1ZVxufTtcblxuY29uc3QgYXBwbGljYXRpb25Db25maWc6IFJlcXVpcmVkPEtlcGxlckFwcGxpY2F0aW9uQ29uZmlnPG1hcGJveGdsLk1hcD4+ID1cbiAgREVGQVVMVF9BUFBMSUNBVElPTl9DT05GSUc7XG5cbmV4cG9ydCBjb25zdCBnZXRBcHBsaWNhdGlvbkNvbmZpZyA9ICgpOiBSZXF1aXJlZDxLZXBsZXJBcHBsaWNhdGlvbkNvbmZpZzxtYXBib3hnbC5NYXA+PiA9PlxuICBhcHBsaWNhdGlvbkNvbmZpZztcblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRBcHBsaWNhdGlvbkNvbmZpZzxNPihhcHBDb25maWc6IEtlcGxlckFwcGxpY2F0aW9uQ29uZmlnPE0+ID0ge30pIHtcbiAgT2JqZWN0LmFzc2lnbihhcHBsaWNhdGlvbkNvbmZpZywgYXBwQ29uZmlnKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOztBQWlCQTtBQUNBO0FBQ0E7QUFDQTs7QUFzQkEsSUFBTUEsMEJBQTJFLEdBQUc7RUFDbEZDLGVBQWUsRUFBRSxnQkFBZ0I7RUFDakNDLGdCQUFnQixFQUFFLGVBQWU7RUFDakNDLGVBQWUsRUFBRSxnQkFBZ0I7RUFDakNDLGVBQWUsRUFBRSxXQUFXO0VBQzVCQyx5QkFBeUIsRUFBRTtJQUN6QkMsT0FBTyxFQUFFO0VBQ1gsQ0FBQztFQUVEQyxvQkFBb0IsRUFBRTtJQUNwQkMsUUFBUSxFQUFFO01BQ1JDLFNBQVMsRUFBRSxTQUFYQSxTQUFTQSxDQUFBO1FBQUEsT0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBQUFDLElBQUE7VUFBQSxPQUFBQyx1QkFBQSxDQUFBQyxPQUFBLENBQWUsYUFBYTtRQUFBO01BQUEsQ0FBQztNQUN0Q0MsY0FBYyxFQUFFLFlBQVk7TUFDNUJDLHlCQUF5QixFQUFFLGdDQUFnQztNQUMzREMsVUFBVSxFQUFFLFVBQVU7TUFDdEJDLFNBQVMsRUFBRTtJQUNiLENBQUM7SUFDREMsTUFBTSxFQUFFO01BQ05WLFNBQVMsRUFBRSxTQUFYQSxTQUFTQSxDQUFBO1FBQUEsT0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBQUFDLElBQUE7VUFBQSxPQUFBQyx1QkFBQSxDQUFBQyxPQUFBLENBQWUsV0FBVztRQUFBO01BQUEsQ0FBQztNQUNwQ0MsY0FBYyxFQUFFLFVBQVU7TUFDMUJDLHlCQUF5QixFQUFFLDhCQUE4QjtNQUN6REMsVUFBVSxFQUFFLFFBQVE7TUFDcEJDLFNBQVMsRUFBRTtJQUNiO0VBQ0YsQ0FBQztFQUVERSxPQUFPLEVBQUUsRUFBRTtFQUNYO0VBQ0E7RUFDQUMsS0FBSyxFQUFFLElBQUk7RUFFWEMsMEJBQTBCLEVBQUUsSUFBSTtFQUNoQ0MsaUJBQWlCLEVBQUU7QUFDckIsQ0FBQztBQUVELElBQU1DLGlCQUFrRSxHQUN0RXhCLDBCQUEwQjtBQUVyQixJQUFNeUIsb0JBQW9CLEdBQUFDLE9BQUEsQ0FBQUQsb0JBQUEsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFBO0VBQUEsT0FDL0JELGlCQUFpQjtBQUFBO0FBRVosU0FBU0cscUJBQXFCQSxDQUFBLEVBQWdEO0VBQUEsSUFBNUNDLFNBQXFDLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLENBQUMsQ0FBQztFQUNqRkcsTUFBTSxDQUFDQyxNQUFNLENBQUNULGlCQUFpQixFQUFFSSxTQUFTLENBQUM7QUFDN0MiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -292,7 +292,13 @@ var FIELD_DISPLAY_FORMAT = exports.FIELD_DISPLAY_FORMAT = (_FIELD_DISPLAY_FORMAT
|
|
|
292
292
|
return typeof d === 'string' ? d : (0, _utils.isPlainObject)(d) ? JSON.stringify(d) : Array.isArray(d) ? "[".concat(String(d), "]") : '';
|
|
293
293
|
}), _constants.ALL_FIELD_TYPES.geoarrow, function (d) {
|
|
294
294
|
return d;
|
|
295
|
-
}), _constants.ALL_FIELD_TYPES.object,
|
|
295
|
+
}), _constants.ALL_FIELD_TYPES.object, function (value) {
|
|
296
|
+
try {
|
|
297
|
+
return JSON.stringify(value);
|
|
298
|
+
} catch (e) {
|
|
299
|
+
return String(value);
|
|
300
|
+
}
|
|
301
|
+
}), _constants.ALL_FIELD_TYPES.array, JSON.stringify), (0, _defineProperty2["default"])(_FIELD_DISPLAY_FORMAT, _constants.ALL_FIELD_TYPES.h3, defaultFormatter));
|
|
296
302
|
|
|
297
303
|
/**
|
|
298
304
|
* Parse field value and type and return a string representation
|
|
@@ -301,6 +307,12 @@ var parseFieldValue = exports.parseFieldValue = function parseFieldValue(value,
|
|
|
301
307
|
if (!(0, _commonUtils.notNullorUndefined)(value)) {
|
|
302
308
|
return '';
|
|
303
309
|
}
|
|
310
|
+
// BigInt values cannot be serialized with JSON.stringify() directly
|
|
311
|
+
// We need to explicitly convert them to strings using .toString()
|
|
312
|
+
// See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt#use_within_json
|
|
313
|
+
if (typeof value === 'bigint') {
|
|
314
|
+
return value.toString();
|
|
315
|
+
}
|
|
304
316
|
return FIELD_DISPLAY_FORMAT[type] ? FIELD_DISPLAY_FORMAT[type](value) : String(value);
|
|
305
317
|
};
|
|
306
318
|
|
|
@@ -486,4 +498,4 @@ function datetimeFormatter(timezone) {
|
|
|
486
498
|
};
|
|
487
499
|
};
|
|
488
500
|
}
|
|
489
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZDNGb3JtYXQiLCJfbW9tZW50VGltZXpvbmUiLCJfY29uc3RhbnRzIiwiX2NvbW1vblV0aWxzIiwiX3Bsb3QiLCJfdXRpbHMiLCJfRklFTERfRElTUExBWV9GT1JNQVQiLCJNQVhfTEFUSVRVREUiLCJleHBvcnRzIiwiTUlOX0xBVElUVURFIiwiTUFYX0xPTkdJVFVERSIsIk1JTl9MT05HSVRVREUiLCJ2YWxpZGF0ZUxhdGl0dWRlIiwibGF0aXR1ZGUiLCJ2YWxpZGF0ZUNvb3JkaW5hdGUiLCJ2YWxpZGF0ZUxvbmdpdHVkZSIsImxvbmdpdHVkZSIsInZhbHVlIiwibWluVmFsdWUiLCJtYXhWYWx1ZSIsInVuaXF1ZSIsInZhbHVlcyIsInJlc3VsdHMiLCJ1bmlxdWVTZXQiLCJTZXQiLCJmb3JFYWNoIiwidiIsIm5vdE51bGxvclVuZGVmaW5lZCIsInB1c2giLCJnZXRMYXRMbmdCb3VuZHMiLCJwb2ludHMiLCJpZHgiLCJsaW1pdCIsImxhdHMiLCJtYXAiLCJkIiwiTnVtYmVyIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsdGVyIiwiaXNGaW5pdGUiLCJzb3J0IiwibnVtYmVyU29ydCIsImxlbmd0aCIsIk1hdGgiLCJtYXgiLCJtaW4iLCJjbGFtcCIsIl9yZWYiLCJfcmVmMiIsIl9zbGljZWRUb0FycmF5MiIsInZhbCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImdldFNhbXBsZURhdGEiLCJkYXRhIiwic2FtcGxlU2l6ZSIsImdldFZhbHVlIiwic2FtcGxlU3RlcCIsImZsb29yIiwib3V0cHV0IiwiaSIsInRpbWVUb1VuaXhNaWxsaSIsImZvcm1hdCIsIm1vbWVudCIsInV0YyIsInZhbHVlT2YiLCJEYXRlIiwiaXNOdW1iZXIiLCJoYXNPd25Qcm9wZXJ0eSIsIm9iaiIsInByb3AiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJjYWxsIiwiYSIsImIiLCJnZXRTb3J0aW5nRnVuY3Rpb24iLCJmaWVsZFR5cGUiLCJBTExfRklFTERfVFlQRVMiLCJyZWFsIiwiaW50ZWdlciIsInRpbWVzdGFtcCIsInByZWNpc2VSb3VuZCIsIm51bSIsImRlY2ltYWxzIiwidCIsInBvdyIsInJvdW5kIiwic2lnbiIsInRvRml4ZWQiLCJyb3VuZFRvRm91ciIsImNvbmNhdCIsImdldFJvdW5kaW5nRGVjaW1hbEZyb21TdGVwIiwic3RlcCIsImlzTmFOIiwiYXNzZXJ0Iiwic3RlcFN0ciIsInRvU3RyaW5nIiwic3BsaXRFeHBvbmVudGlhbCIsInNwbGl0IiwiY29lZmZaZXJvIiwiY29lZmZEZWNpbWFsIiwicGFyc2VJbnQiLCJzcGxpdFplcm8iLCJub3JtYWxpemVTbGlkZXJWYWx1ZSIsIm1hcmtzIiwic25hcFRvTWFya3MiLCJyb3VuZFZhbFRvU3RlcCIsImRlY2ltYWwiLCJzdGVwcyIsInJlbWFpbiIsImNsb3Nlc3QiLCJyb3VuZGVkIiwiZGVmYXVsdEZvcm1hdHRlciIsIlN0cmluZyIsImZsb2F0Rm9ybWF0dGVyIiwiRklFTERfRElTUExBWV9GT1JNQVQiLCJfZGVmaW5lUHJvcGVydHkyIiwic3RyaW5nIiwiZGF0ZSIsImdlb2pzb24iLCJpc1BsYWluT2JqZWN0IiwiSlNPTiIsInN0cmluZ2lmeSIsImdlb2Fycm93Iiwib2JqZWN0IiwiYXJyYXkiLCJoMyIsInBhcnNlRmllbGRWYWx1ZSIsInR5cGUiLCJnZXRGb3JtYXR0ZXIiLCJmaWVsZCIsInRvb2x0aXBGb3JtYXQiLCJUT09MVElQX0ZPUk1BVFMiLCJmaW5kIiwiZiIsIlRPT0xUSVBfS0VZIiwiYXBwbHlEZWZhdWx0Rm9ybWF0IiwiYXBwbHlDdXN0b21Gb3JtYXQiLCJnZXRDb2x1bW5Gb3JtYXR0ZXIiLCJkaXNwbGF5Rm9ybWF0IiwiX3R5cGVvZjIiLCJhcHBseVZhbHVlTWFwIiwiVE9PTFRJUF9GT1JNQVRfVFlQRVMiLCJERUNJTUFMIiwiZDNGb3JtYXQiLCJEQVRFIiwiREFURV9USU1FIiwiZGF0ZXRpbWVGb3JtYXR0ZXIiLCJQRVJDRU5UQUdFIiwiREVDSU1BTF9ERUNJTUFMX0ZJWEVEXzIiLCJCT09MRUFOIiwiZ2V0Qm9vbGVhbkZvcm1hdHRlciIsImZvcm1hdExhcmdlTnVtYmVyIiwibiIsImZvcm1hdE51bWJlciIsInRyYW5zZm9ybWF0aW9uIiwiWSIsIloiLCJFIiwiUCIsIlQiLCJHIiwiTSIsImsiLCJoIiwiZGEiLCJjIiwibSIsIs68IiwicCIsInoiLCJ5IiwicmV2ZXJzZUZvcm1hdE51bWJlciIsInN0ciIsInJldHVyblZhbHVlIiwic3RyTnVtIiwidHJpbSIsInJlcGxhY2UiLCJlbnRyaWVzIiwiaW5jbHVkZXMiLCJwYXJzZUZsb2F0IiwidGltZXpvbmUiLCJ0cyIsInR6Il0sInNvdXJjZXMiOlsiLi4vc3JjL2RhdGEtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHtmb3JtYXQgYXMgZDNGb3JtYXR9IGZyb20gJ2QzLWZvcm1hdCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5cbmltcG9ydCB7XG4gIEFMTF9GSUVMRF9UWVBFUyxcbiAgVE9PTFRJUF9GT1JNQVRTLFxuICBUT09MVElQX0ZPUk1BVF9UWVBFUyxcbiAgVE9PTFRJUF9LRVksXG4gIFRvb2x0aXBGb3JtYXRcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7RmllbGQsIE1pbGxpc2Vjb25kfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtzbmFwVG9NYXJrc30gZnJvbSAnLi9wbG90JztcbmltcG9ydCB7aXNQbGFpbk9iamVjdH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCB0eXBlIEZpZWxkRm9ybWF0dGVyID0gKHZhbHVlOiBhbnkpID0+IHN0cmluZztcblxuLy8gV2UgbmVlZCB0aHJlYXQgbGF0aXR1ZGUgZGlmZmVyZW50bHkgb3RoZXJ3aXNlIG1hcmNhdG9yIHByb2plY3QgdmlldyB0aHJvd3Ncbi8vIGEgcHJvamVjdGlvbiBtYXRyaXggZXJyb3Jcbi8vIFVuY2F1Z2h0IEVycm9yOiBQaXhlbCBwcm9qZWN0IG1hdHJpeCBub3QgaW52ZXJ0aWJsZVxuLy8gYXQgV2ViTWVyY2F0b3JWaWV3cG9ydDE2LlZpZXdwb3J0NiAodmlld3BvcnQuanM6ODE6MTMpXG5leHBvcnQgY29uc3QgTUFYX0xBVElUVURFID0gODkuOTtcbmV4cG9ydCBjb25zdCBNSU5fTEFUSVRVREUgPSAtODkuOTtcbmV4cG9ydCBjb25zdCBNQVhfTE9OR0lUVURFID0gMTgwO1xuZXhwb3J0IGNvbnN0IE1JTl9MT05HSVRVREUgPSAtMTgwO1xuXG4vKipcbiAqIFZhbGlkYXRlcyBhIGxhdGl0dWRlIHZhbHVlLlxuICogRW5zdXJlcyB0aGF0IHRoZSBsYXRpdHVkZSBpcyB3aXRoaW4gdGhlIGRlZmluZWQgbWluaW11bSBhbmQgbWF4aW11bSBsYXRpdHVkZSBib3VuZHMuXG4gKiBJZiB0aGUgdmFsdWUgaXMgb3V0IG9mIGJvdW5kcywgaXQgcmV0dXJucyB0aGUgbmVhcmVzdCBib3VuZCB2YWx1ZS5cbiAqIEBwYXJhbSBsYXRpdHVkZSAtIFRoZSBsYXRpdHVkZSB2YWx1ZSB0byB2YWxpZGF0ZS5cbiAqIEByZXR1cm5zIFRoZSB2YWxpZGF0ZWQgbGF0aXR1ZGUgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxhdGl0dWRlKGxhdGl0dWRlOiBudW1iZXIgfCB1bmRlZmluZWQpOiBudW1iZXIge1xuICByZXR1cm4gdmFsaWRhdGVDb29yZGluYXRlKGxhdGl0dWRlID8/IDAsIE1JTl9MQVRJVFVERSwgTUFYX0xBVElUVURFKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBsb25naXR1ZGUgdmFsdWUuXG4gKiBFbnN1cmVzIHRoYXQgdGhlIGxvbmdpdHVkZSBpcyB3aXRoaW4gdGhlIGRlZmluZWQgbWluaW11bSBhbmQgbWF4aW11bSBsb25naXR1ZGUgYm91bmRzLlxuICogSWYgdGhlIHZhbHVlIGlzIG91dCBvZiBib3VuZHMsIGl0IHJldHVybnMgdGhlIG5lYXJlc3QgYm91bmQgdmFsdWUuXG4gKiBAcGFyYW0gbG9uZ2l0dWRlIC0gVGhlIGxvbmdpdHVkZSB2YWx1ZSB0byB2YWxpZGF0ZS5cbiAqIEByZXR1cm5zIFRoZSB2YWxpZGF0ZWQgbG9uZ2l0dWRlIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMb25naXR1ZGUobG9uZ2l0dWRlOiBudW1iZXIgfCB1bmRlZmluZWQpOiBudW1iZXIge1xuICByZXR1cm4gdmFsaWRhdGVDb29yZGluYXRlKGxvbmdpdHVkZSA/PyAwLCBNSU5fTE9OR0lUVURFLCBNQVhfTE9OR0lUVURFKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBjb29yZGluYXRlIHZhbHVlLlxuICogRW5zdXJlcyB0aGF0IHRoZSB2YWx1ZSBpcyB3aXRoaW4gdGhlIHNwZWNpZmllZCBtaW5pbXVtIGFuZCBtYXhpbXVtIGJvdW5kcy5cbiAqIElmIHRoZSB2YWx1ZSBpcyBvdXQgb2YgYm91bmRzLCBpdCByZXR1cm5zIHRoZSBuZWFyZXN0IGJvdW5kIHZhbHVlLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIGNvb3JkaW5hdGUgdmFsdWUgdG8gdmFsaWRhdGUuXG4gKiBAcGFyYW0gbWluVmFsdWUgLSBUaGUgbWluaW11bSBib3VuZCBmb3IgdGhlIHZhbHVlLlxuICogQHBhcmFtIG1heFZhbHVlIC0gVGhlIG1heGltdW0gYm91bmQgZm9yIHRoZSB2YWx1ZS5cbiAqIEByZXR1cm5zIFRoZSB2YWxpZGF0ZWQgY29vcmRpbmF0ZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQ29vcmRpbmF0ZSh2YWx1ZTogbnVtYmVyLCBtaW5WYWx1ZTogbnVtYmVyLCBtYXhWYWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKHZhbHVlIDw9IG1pblZhbHVlKSB7XG4gICAgcmV0dXJuIG1pblZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSA+PSBtYXhWYWx1ZSkge1xuICAgIHJldHVybiBtYXhWYWx1ZTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBzaW1wbGUgZ2V0dGluZyB1bmlxdWUgdmFsdWVzIG9mIGFuIGFycmF5XG4gKlxuICogQHBhcmFtIHZhbHVlc1xuICogQHJldHVybnMgdW5pcXVlIHZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pcXVlPFQ+KHZhbHVlczogVFtdKSB7XG4gIGNvbnN0IHJlc3VsdHM6IFRbXSA9IFtdO1xuICBjb25zdCB1bmlxdWVTZXQgPSBuZXcgU2V0KHZhbHVlcyk7XG4gIHVuaXF1ZVNldC5mb3JFYWNoKHYgPT4ge1xuICAgIGlmIChub3ROdWxsb3JVbmRlZmluZWQodikpIHtcbiAgICAgIHJlc3VsdHMucHVzaCh2KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExhdExuZ0JvdW5kcyhcbiAgcG9pbnRzOiBudW1iZXJbXVtdLFxuICBpZHg6IG51bWJlcixcbiAgbGltaXQ6IFtudW1iZXIsIG51bWJlcl1cbik6IFtudW1iZXIsIG51bWJlcl0gfCBudWxsIHtcbiAgY29uc3QgbGF0cyA9IHBvaW50c1xuICAgIC5tYXAoZCA9PiBOdW1iZXIoQXJyYXkuaXNBcnJheShkKSkgJiYgZFtpZHhdKVxuICAgIC5maWx0ZXIoTnVtYmVyLmlzRmluaXRlKVxuICAgIC5zb3J0KG51bWJlclNvcnQpO1xuXG4gIGlmICghbGF0cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIGNsYW1wIHRvIGxpbWl0XG4gIHJldHVybiBbTWF0aC5tYXgobGF0c1swXSwgbGltaXRbMF0pLCBNYXRoLm1pbihsYXRzW2xhdHMubGVuZ3RoIC0gMV0sIGxpbWl0WzFdKV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGFtcChbbWluLCBtYXhdOiBbbnVtYmVyLCBudW1iZXJdLCB2YWwgPSAwKTogbnVtYmVyIHtcbiAgcmV0dXJuIHZhbCA8PSBtaW4gPyBtaW4gOiB2YWwgPj0gbWF4ID8gbWF4IDogdmFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2FtcGxlRGF0YShkYXRhLCBzYW1wbGVTaXplID0gNTAwLCBnZXRWYWx1ZSA9IGQgPT4gZCkge1xuICBjb25zdCBzYW1wbGVTdGVwID0gTWF0aC5tYXgoTWF0aC5mbG9vcihkYXRhLmxlbmd0aCAvIHNhbXBsZVNpemUpLCAxKTtcbiAgY29uc3Qgb3V0cHV0OiBhbnlbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpICs9IHNhbXBsZVN0ZXApIHtcbiAgICBvdXRwdXQucHVzaChnZXRWYWx1ZShkYXRhW2ldKSk7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufVxuXG4vKipcbiAqIENvbnZlcnQgZGlmZmVyZW50IHRpbWUgZm9ybWF0IHRvIHVuaXggbWlsbGlzZWNvbmRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aW1lVG9Vbml4TWlsbGkodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IERhdGUsIGZvcm1hdDogc3RyaW5nKTogTWlsbGlzZWNvbmQgfCBudWxsIHtcbiAgaWYgKG5vdE51bGxvclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG1vbWVudC51dGModmFsdWUsIGZvcm1hdCkudmFsdWVPZigpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGZvcm1hdCA9PT0gJ3gnID8gdmFsdWUgKiAxMDAwIDogdmFsdWU7XG4gICAgfVxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHJldHVybiB2YWx1ZS52YWx1ZU9mKCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgZCBpcyBhIG51bWJlciwgdGhpcyBmaWx0ZXJlZCBvdXQgTmFOIGFzIHdlbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyKGQ6IHVua25vd24pOiBkIGlzIG51bWJlciB7XG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUoZCk7XG59XG5cbi8qKlxuICogd2hldGhlciBvYmplY3QgaGFzIHByb3BlcnR5XG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcFxuICogQHJldHVybnMge2Jvb2xlYW59IC0geWVzIG9yIG5vXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eTxYIGV4dGVuZHMgb2JqZWN0LCBZIGV4dGVuZHMgUHJvcGVydHlLZXk+KFxuICBvYmo6IFgsXG4gIHByb3A6IFlcbik6IG9iaiBpcyBYICYgUmVjb3JkPFksIHVua25vd24+IHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbnVtYmVyU29ydChhOiBudW1iZXIsIGI6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBhIC0gYjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNvcnRpbmdGdW5jdGlvbihmaWVsZFR5cGU6IHN0cmluZyk6IHR5cGVvZiBudW1iZXJTb3J0IHwgdW5kZWZpbmVkIHtcbiAgc3dpdGNoIChmaWVsZFR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5yZWFsOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXI6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wOlxuICAgICAgcmV0dXJuIG51bWJlclNvcnQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiByb3VuZCBudW1iZXIgd2l0aCBleGFjdCBudW1iZXIgb2YgZGVjaW1hbHNcbiAqIHJldHVybiBhcyBhIHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlY2lzZVJvdW5kKG51bTogbnVtYmVyLCBkZWNpbWFsczogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgdCA9IE1hdGgucG93KDEwLCBkZWNpbWFscyk7XG4gIHJldHVybiAoXG4gICAgTWF0aC5yb3VuZChcbiAgICAgIG51bSAqIHQgKyAoZGVjaW1hbHMgPiAwID8gMSA6IDApICogKE1hdGguc2lnbihudW0pICogKDEwIC8gTWF0aC5wb3coMTAwLCBkZWNpbWFscykpKVxuICAgICkgLyB0XG4gICkudG9GaXhlZChkZWNpbWFscyk7XG59XG5cbi8qKlxuICogcm91bmQgYSBnaXZpbmcgbnVtYmVyIGF0IG1vc3QgNCBkZWNpbWFsIHBsYWNlc1xuICogZS5nLiAxMCAtPiAxMCwgMS4xMjM0NSAtPiAxLjIzNDUsIDIuMCAtPiAyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb3VuZFRvRm91cihudW06IG51bWJlcik6IG51bWJlciB7XG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgcmV0dXJuIE51bWJlcihgJHtNYXRoLnJvdW5kKGAke251bX1lKzRgKX1lLTRgKTtcbn1cbi8qKlxuICogZ2V0IG51bWJlciBvZiBkZWNpbWFscyB0byByb3VuZCB0byBmb3Igc2xpZGVyIGZyb20gc3RlcFxuICogQHBhcmFtIHN0ZXBcbiAqIEByZXR1cm5zLSBudW1iZXIgb2YgZGVjaW1hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um91bmRpbmdEZWNpbWFsRnJvbVN0ZXAoc3RlcDogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKGlzTmFOKHN0ZXApKSB7XG4gICAgYXNzZXJ0KCdzdGVwIGlzIG5vdCBhIG51bWJlcicpO1xuICAgIGFzc2VydChzdGVwKTtcbiAgfVxuXG4gIGNvbnN0IHN0ZXBTdHIgPSBzdGVwLnRvU3RyaW5nKCk7XG5cbiAgLy8gaW4gY2FzZSB0aGUgc3RlcCBpcyBhIHZlcnkgc21hbGwgbnVtYmVyIGUuZy4gMWUtNywgcmV0dXJuIGRlY2ltYWwgZS5nLiA3IGRpcmVjdGx5XG4gIGNvbnN0IHNwbGl0RXhwb25lbnRpYWwgPSBzdGVwU3RyLnNwbGl0KCdlLScpO1xuICBpZiAoc3BsaXRFeHBvbmVudGlhbC5sZW5ndGggPT09IDIpIHtcbiAgICBjb25zdCBjb2VmZlplcm8gPSBzcGxpdEV4cG9uZW50aWFsWzBdLnNwbGl0KCcuJyk7XG4gICAgY29uc3QgY29lZmZEZWNpbWFsID0gY29lZmZaZXJvLmxlbmd0aCA9PT0gMSA/IDAgOiBjb2VmZlplcm9bMV0ubGVuZ3RoO1xuICAgIHJldHVybiBwYXJzZUludChzcGxpdEV4cG9uZW50aWFsWzFdLCAxMCkgKyBjb2VmZkRlY2ltYWw7XG4gIH1cblxuICBjb25zdCBzcGxpdFplcm8gPSBzdGVwU3RyLnNwbGl0KCcuJyk7XG4gIGlmIChzcGxpdFplcm8ubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcmV0dXJuIHNwbGl0WmVyb1sxXS5sZW5ndGg7XG59XG5cbi8qKlxuICogSWYgbWFya3MgaXMgcHJvdmlkZWQsIHNuYXAgdG8gbWFya3MsIGlmIG5vdCBub3JtYWxpemUgdG8gc3RlcFxuICogQHBhcmFtIHZhbFxuICogQHBhcmFtIG1pblZhbHVlXG4gKiBAcGFyYW0gc3RlcFxuICogQHBhcmFtIG1hcmtzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTbGlkZXJWYWx1ZShcbiAgdmFsOiBudW1iZXIsXG4gIG1pblZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIHN0ZXA6IG51bWJlcixcbiAgbWFya3M/OiBudW1iZXJbXSB8IG51bGxcbik6IG51bWJlciB7XG4gIGlmIChtYXJrcyAmJiBtYXJrcy5sZW5ndGgpIHtcbiAgICAvLyBVc2UgaW4gc2xpZGVyLCBnaXZlbiBhIG51bWJlciBhbmQgYW4gYXJyYXkgb2YgbnVtYmVycywgcmV0dXJuIHRoZSBuZWFycyBudW1iZXIgZnJvbSB0aGUgYXJyYXlcbiAgICByZXR1cm4gc25hcFRvTWFya3ModmFsLCBtYXJrcyk7XG4gIH1cblxuICByZXR1cm4gcm91bmRWYWxUb1N0ZXAobWluVmFsdWUsIHN0ZXAsIHZhbCk7XG59XG5cbi8qKlxuICogcm91bmQgdGhlIHZhbHVlIHRvIHN0ZXAgZm9yIHRoZSBzbGlkZXJcbiAqIEBwYXJhbSBtaW5WYWx1ZVxuICogQHBhcmFtIHN0ZXBcbiAqIEBwYXJhbSB2YWxcbiAqIEByZXR1cm5zIC0gcm91bmRlZCBudW1iZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvdW5kVmFsVG9TdGVwKG1pblZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQsIHN0ZXA6IG51bWJlciwgdmFsOiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAoIWlzTnVtYmVyKHN0ZXApIHx8ICFpc051bWJlcihtaW5WYWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgY29uc3QgZGVjaW1hbCA9IGdldFJvdW5kaW5nRGVjaW1hbEZyb21TdGVwKHN0ZXApO1xuICBjb25zdCBzdGVwcyA9IE1hdGguZmxvb3IoKHZhbCAtIG1pblZhbHVlKSAvIHN0ZXApO1xuICBsZXQgcmVtYWluID0gdmFsIC0gKHN0ZXBzICogc3RlcCArIG1pblZhbHVlKTtcblxuICAvLyBoYXMgdG8gcm91bmQgYmVjYXVzZSBqYXZhc2NyaXB0IHR1cm5zIDAuMSBpbnRvIDAuOTk5OTk5OTk5OTk5OTk4N1xuICByZW1haW4gPSBOdW1iZXIocHJlY2lzZVJvdW5kKHJlbWFpbiwgOCkpO1xuXG4gIGxldCBjbG9zZXN0OiBudW1iZXI7XG4gIGlmIChyZW1haW4gPT09IDApIHtcbiAgICBjbG9zZXN0ID0gdmFsO1xuICB9IGVsc2UgaWYgKHJlbWFpbiA8IHN0ZXAgLyAyKSB7XG4gICAgY2xvc2VzdCA9IHN0ZXBzICogc3RlcCArIG1pblZhbHVlO1xuICB9IGVsc2Uge1xuICAgIGNsb3Nlc3QgPSAoc3RlcHMgKyAxKSAqIHN0ZXAgKyBtaW5WYWx1ZTtcbiAgfVxuXG4gIC8vIHByZWNpc2Ugcm91bmQgcmV0dXJuIGEgc3RyaW5nIHJvdW5kZWQgdG8gdGhlIGRlZmluZWQgZGVjaW1hbFxuICBjb25zdCByb3VuZGVkID0gcHJlY2lzZVJvdW5kKGNsb3Nlc3QsIGRlY2ltYWwpO1xuXG4gIHJldHVybiBOdW1iZXIocm91bmRlZCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSB2YWx1ZSBmb3JtYXQgYmFzZWQgb24gZmllbGQgYW5kIGZvcm1hdCBvcHRpb25zXG4gKiBVc2VkIGluIHJlbmRlciB0b29sdGlwIHZhbHVlXG4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0Rm9ybWF0dGVyOiBGaWVsZEZvcm1hdHRlciA9IHYgPT4gKG5vdE51bGxvclVuZGVmaW5lZCh2KSA/IFN0cmluZyh2KSA6ICcnKTtcblxuZXhwb3J0IGNvbnN0IGZsb2F0Rm9ybWF0dGVyID0gdiA9PiAoaXNOdW1iZXIodikgPyBTdHJpbmcocm91bmRUb0ZvdXIodikpIDogJycpO1xuXG5leHBvcnQgY29uc3QgRklFTERfRElTUExBWV9GT1JNQVQ6IHtcbiAgW2tleTogc3RyaW5nXTogRmllbGRGb3JtYXR0ZXI7XG59ID0ge1xuICBbQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ106IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMudGltZXN0YW1wXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5kYXRlXTogZGVmYXVsdEZvcm1hdHRlcixcbiAgW0FMTF9GSUVMRF9UWVBFUy5nZW9qc29uXTogZCA9PlxuICAgIHR5cGVvZiBkID09PSAnc3RyaW5nJ1xuICAgICAgPyBkXG4gICAgICA6IGlzUGxhaW5PYmplY3QoZClcbiAgICAgID8gSlNPTi5zdHJpbmdpZnkoZClcbiAgICAgIDogQXJyYXkuaXNBcnJheShkKVxuICAgICAgPyBgWyR7U3RyaW5nKGQpfV1gXG4gICAgICA6ICcnLFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2Fycm93XTogZCA9PiBkLFxuICBbQUxMX0ZJRUxEX1RZUEVTLm9iamVjdF06IEpTT04uc3RyaW5naWZ5LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmFycmF5XTogSlNPTi5zdHJpbmdpZnksXG4gIFtBTExfRklFTERfVFlQRVMuaDNdOiBkZWZhdWx0Rm9ybWF0dGVyXG59O1xuXG4vKipcbiAqIFBhcnNlIGZpZWxkIHZhbHVlIGFuZCB0eXBlIGFuZCByZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlRmllbGRWYWx1ZSA9ICh2YWx1ZTogYW55LCB0eXBlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBpZiAoIW5vdE51bGxvclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcmV0dXJuIEZJRUxEX0RJU1BMQVlfRk9STUFUW3R5cGVdID8gRklFTERfRElTUExBWV9GT1JNQVRbdHlwZV0odmFsdWUpIDogU3RyaW5nKHZhbHVlKTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSB2YWx1ZSBmb3JtYXQgYmFzZWQgb24gZmllbGQgYW5kIGZvcm1hdCBvcHRpb25zXG4gKiBVc2VkIGluIHJlbmRlciB0b29sdGlwIHZhbHVlXG4gKiBAcGFyYW0gZm9ybWF0XG4gKiBAcGFyYW0gZmllbGRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1hdHRlcihcbiAgZm9ybWF0Pzogc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IG51bGwsXG4gIGZpZWxkPzogRmllbGRcbik6IEZpZWxkRm9ybWF0dGVyIHtcbiAgaWYgKCFmb3JtYXQpIHtcbiAgICByZXR1cm4gZGVmYXVsdEZvcm1hdHRlcjtcbiAgfVxuICBjb25zdCB0b29sdGlwRm9ybWF0ID0gT2JqZWN0LnZhbHVlcyhUT09MVElQX0ZPUk1BVFMpLmZpbmQoZiA9PiBmW1RPT0xUSVBfS0VZXSA9PT0gZm9ybWF0KTtcblxuICBpZiAodG9vbHRpcEZvcm1hdCkge1xuICAgIHJldHVybiBhcHBseURlZmF1bHRGb3JtYXQodG9vbHRpcEZvcm1hdCBhcyBUb29sdGlwRm9ybWF0KTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZm9ybWF0ID09PSAnc3RyaW5nJyAmJiBmaWVsZCkge1xuICAgIHJldHVybiBhcHBseUN1c3RvbUZvcm1hdChmb3JtYXQsIGZpZWxkKTtcbiAgfVxuXG4gIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sdW1uRm9ybWF0dGVyKFxuICBmaWVsZDogUGljazxGaWVsZCwgJ3R5cGUnPiAmIFBhcnRpYWw8UGljazxGaWVsZCwgJ2Zvcm1hdCcgfCAnZGlzcGxheUZvcm1hdCc+PlxuKTogRmllbGRGb3JtYXR0ZXIge1xuICBjb25zdCB7Zm9ybWF0LCBkaXNwbGF5Rm9ybWF0fSA9IGZpZWxkO1xuXG4gIGlmICghZm9ybWF0ICYmICFkaXNwbGF5Rm9ybWF0KSB7XG4gICAgcmV0dXJuIEZJRUxEX0RJU1BMQVlfRk9STUFUW2ZpZWxkLnR5cGVdO1xuICB9XG4gIGNvbnN0IHRvb2x0aXBGb3JtYXQgPSBPYmplY3QudmFsdWVzKFRPT0xUSVBfRk9STUFUUykuZmluZChmID0+IGZbVE9PTFRJUF9LRVldID09PSBkaXNwbGF5Rm9ybWF0KTtcblxuICBpZiAodG9vbHRpcEZvcm1hdCkge1xuICAgIHJldHVybiBhcHBseURlZmF1bHRGb3JtYXQodG9vbHRpcEZvcm1hdCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGRpc3BsYXlGb3JtYXQgPT09ICdzdHJpbmcnICYmIGZpZWxkKSB7XG4gICAgcmV0dXJuIGFwcGx5Q3VzdG9tRm9ybWF0KGRpc3BsYXlGb3JtYXQsIGZpZWxkKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGlzcGxheUZvcm1hdCA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gYXBwbHlWYWx1ZU1hcChkaXNwbGF5Rm9ybWF0KTtcbiAgfVxuXG4gIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlWYWx1ZU1hcChmb3JtYXQpIHtcbiAgcmV0dXJuIHYgPT4gZm9ybWF0W3ZdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlEZWZhdWx0Rm9ybWF0KHRvb2x0aXBGb3JtYXQ6IFRvb2x0aXBGb3JtYXQpOiAodjogYW55KSA9PiBzdHJpbmcge1xuICBpZiAoIXRvb2x0aXBGb3JtYXQgfHwgIXRvb2x0aXBGb3JtYXQuZm9ybWF0KSB7XG4gICAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG4gIH1cblxuICBzd2l0Y2ggKHRvb2x0aXBGb3JtYXQudHlwZSkge1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREVDSU1BTDpcbiAgICAgIHJldHVybiBkM0Zvcm1hdCh0b29sdGlwRm9ybWF0LmZvcm1hdCk7XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFOlxuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREFURV9USU1FOlxuICAgICAgcmV0dXJuIGRhdGV0aW1lRm9ybWF0dGVyKG51bGwpKHRvb2x0aXBGb3JtYXQuZm9ybWF0KTtcbiAgICBjYXNlIFRPT0xUSVBfRk9STUFUX1RZUEVTLlBFUkNFTlRBR0U6XG4gICAgICByZXR1cm4gdiA9PiBgJHtkM0Zvcm1hdChUT09MVElQX0ZPUk1BVFMuREVDSU1BTF9ERUNJTUFMX0ZJWEVEXzIuZm9ybWF0KSh2KX0lYDtcbiAgICBjYXNlIFRPT0xUSVBfRk9STUFUX1RZUEVTLkJPT0xFQU46XG4gICAgICByZXR1cm4gZ2V0Qm9vbGVhbkZvcm1hdHRlcih0b29sdGlwRm9ybWF0LmZvcm1hdCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCb29sZWFuRm9ybWF0dGVyKGZvcm1hdDogc3RyaW5nKTogRmllbGRGb3JtYXR0ZXIge1xuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgJzAxJzpcbiAgICAgIHJldHVybiAodjogYm9vbGVhbikgPT4gKHYgPyAnMScgOiAnMCcpO1xuICAgIGNhc2UgJ3luJzpcbiAgICAgIHJldHVybiAodjogYm9vbGVhbikgPT4gKHYgPyAneWVzJyA6ICdubycpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZGVmYXVsdEZvcm1hdHRlcjtcbiAgfVxufVxuLy8gQWxsb3cgdXNlciB0byBzcGVjaWZ5IGN1c3RvbSB0b29sdGlwIGZvcm1hdCB2aWEgY29uZmlnXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlDdXN0b21Gb3JtYXQoZm9ybWF0LCBmaWVsZDoge3R5cGU/OiBzdHJpbmd9KTogRmllbGRGb3JtYXR0ZXIge1xuICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5yZWFsOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmludGVnZXI6XG4gICAgICByZXR1cm4gZDNGb3JtYXQoZm9ybWF0KTtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5kYXRlOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDpcbiAgICAgIHJldHVybiBkYXRldGltZUZvcm1hdHRlcihudWxsKShmb3JtYXQpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdiA9PiB2O1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdExhcmdlTnVtYmVyKG4pIHtcbiAgLy8gU0ktcHJlZml4IHdpdGggNCBzaWduaWZpY2FudCBkaWdpdHNcbiAgcmV0dXJuIGQzRm9ybWF0KCcuNH5zJykobik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXROdW1iZXIobjogbnVtYmVyLCB0eXBlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICAgIGlmIChuIDwgMCkge1xuICAgICAgICByZXR1cm4gYC0ke2Zvcm1hdE51bWJlcigtbiwgJ2ludGVnZXInKX1gO1xuICAgICAgfVxuICAgICAgaWYgKG4gPCAxMDAwKSB7XG4gICAgICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKG4pfWA7XG4gICAgICB9XG4gICAgICBpZiAobiA8IDEwICogMTAwMCkge1xuICAgICAgICByZXR1cm4gZDNGb3JtYXQoJywnKShNYXRoLnJvdW5kKG4pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3JtYXRMYXJnZU51bWJlcihuKTtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5yZWFsOlxuICAgICAgaWYgKG4gPCAwKSB7XG4gICAgICAgIHJldHVybiBgLSR7Zm9ybWF0TnVtYmVyKC1uLCAnbnVtYmVyJyl9YDtcbiAgICAgIH1cbiAgICAgIGlmIChuIDwgMTAwMCkge1xuICAgICAgICByZXR1cm4gZDNGb3JtYXQoJy40fnInKShuKTtcbiAgICAgIH1cbiAgICAgIGlmIChuIDwgMTAgKiAxMDAwKSB7XG4gICAgICAgIHJldHVybiBkM0Zvcm1hdCgnLC4yfmYnKShuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmb3JtYXRMYXJnZU51bWJlcihuKTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZm9ybWF0TnVtYmVyKG4sICdyZWFsJyk7XG4gIH1cbn1cblxuY29uc3QgdHJhbnNmb3JtYXRpb24gPSB7XG4gIFk6IE1hdGgucG93KDEwLCAyNCksXG4gIFo6IE1hdGgucG93KDEwLCAyMSksXG4gIEU6IE1hdGgucG93KDEwLCAxOCksXG4gIFA6IE1hdGgucG93KDEwLCAxNSksXG4gIFQ6IE1hdGgucG93KDEwLCAxMiksXG4gIEc6IE1hdGgucG93KDEwLCA5KSxcbiAgTTogTWF0aC5wb3coMTAsIDYpLFxuICBrOiBNYXRoLnBvdygxMCwgMyksXG4gIGg6IE1hdGgucG93KDEwLCAyKSxcbiAgZGE6IE1hdGgucG93KDEwLCAxKSxcbiAgZDogTWF0aC5wb3coMTAsIC0xKSxcbiAgYzogTWF0aC5wb3coMTAsIC0yKSxcbiAgbTogTWF0aC5wb3coMTAsIC0zKSxcbiAgzrw6IE1hdGgucG93KDEwLCAtNiksXG4gIG46IE1hdGgucG93KDEwLCAtOSksXG4gIHA6IE1hdGgucG93KDEwLCAtMTIpLFxuICBmOiBNYXRoLnBvdygxMCwgLTE1KSxcbiAgYTogTWF0aC5wb3coMTAsIC0xOCksXG4gIHo6IE1hdGgucG93KDEwLCAtMjEpLFxuICB5OiBNYXRoLnBvdygxMCwgLTI0KVxufTtcblxuLyoqXG4gKiBDb252ZXJ0IGEgZm9ybWF0dGVkIG51bWJlciBmcm9tIHN0cmluZyBiYWNrIHRvIG51bWJlclxuICovXG5leHBvcnQgZnVuY3Rpb24gcmV2ZXJzZUZvcm1hdE51bWJlcihzdHI6IHN0cmluZyk6IG51bWJlciB7XG4gIGxldCByZXR1cm5WYWx1ZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGNvbnN0IHN0ck51bSA9IHN0ci50cmltKCkucmVwbGFjZSgvLC9nLCAnJyk7XG4gIE9iamVjdC5lbnRyaWVzKHRyYW5zZm9ybWF0aW9uKS5mb3JFYWNoKGQgPT4ge1xuICAgIGlmIChzdHJOdW0uaW5jbHVkZXMoZFswXSkpIHtcbiAgICAgIHJldHVyblZhbHVlID0gcGFyc2VGbG9hdChzdHJOdW0pICogZFsxXTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pO1xuXG4gIC8vIGlmIG5vIHRyYW5zZm9ybWVyIGZvdW5kLCBjb252ZXJ0IHRvIG51YmVyIHJlZ2FyZGxlc3NcbiAgcmV0dXJuIHJldHVyblZhbHVlID09PSBudWxsID8gTnVtYmVyKHN0ck51bSkgOiByZXR1cm5WYWx1ZTtcbn1cblxuLyoqXG4gKiBGb3JtYXQgZXBvY2ggbWlsbGlzZWNvbmRzIHdpdGggYSBmb3JtYXQgc3RyaW5nXG4gKiBAdHlwZSB0aW1lem9uZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZXRpbWVGb3JtYXR0ZXIoXG4gIHRpbWV6b25lPzogc3RyaW5nIHwgbnVsbFxuKTogKGZvcm1hdD86IHN0cmluZykgPT4gKHRzOiBudW1iZXIpID0+IHN0cmluZyB7XG4gIHJldHVybiB0aW1lem9uZVxuICAgID8gZm9ybWF0ID0+IHRzID0+IG1vbWVudC51dGModHMpLnR6KHRpbWV6b25lKS5mb3JtYXQoZm9ybWF0KVxuICAgIDogLy8gcmV0dXJuIGVtcHR5IHN0cmluZyBpbnN0ZWFkIG9mICdJbnZhbGlkIGRhdGUnIGlmIHRzIGlzIHVuZGVmaW5lZC9udWxsXG4gICAgICBmb3JtYXQgPT4gdHMgPT4gdHMgPyBtb21lbnQudXRjKHRzKS5mb3JtYXQoZm9ybWF0KSA6ICcnO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFNBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGVBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQU9BLElBQUFJLFlBQUEsR0FBQUosT0FBQTtBQUdBLElBQUFLLEtBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQUFzQyxJQUFBTyxxQkFBQSxFQWxCdEM7QUFDQTtBQXFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1DLFlBQVksR0FBQUMsT0FBQSxDQUFBRCxZQUFBLEdBQUcsSUFBSTtBQUN6QixJQUFNRSxZQUFZLEdBQUFELE9BQUEsQ0FBQUMsWUFBQSxHQUFHLENBQUMsSUFBSTtBQUMxQixJQUFNQyxhQUFhLEdBQUFGLE9BQUEsQ0FBQUUsYUFBQSxHQUFHLEdBQUc7QUFDekIsSUFBTUMsYUFBYSxHQUFBSCxPQUFBLENBQUFHLGFBQUEsR0FBRyxDQUFDLEdBQUc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0MsZ0JBQWdCQSxDQUFDQyxRQUE0QixFQUFVO0VBQ3JFLE9BQU9DLGtC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MkMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztFQUNwQnFGLENBQUMsRUFBRWhJLElBQUksQ0FBQzJDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7RUFDcEJzRixDQUFDLEVBQUVqSSxJQUFJLENBQUMyQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUNyQixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNPLFNBQVN1RixtQkFBbUJBLENBQUNDLEdBQVcsRUFBVTtFQUN2RCxJQUFJQyxXQUEwQixHQUFHLElBQUk7RUFDckMsSUFBTUMsTUFBTSxHQUFHRixHQUFHLENBQUNHLElBQUksQ0FBQyxDQUFDLENBQUNDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO0VBQzNDM0csTUFBTSxDQUFDNEcsT0FBTyxDQUFDdkIsY0FBYyxDQUFDLENBQUNwSSxPQUFPLENBQUMsVUFBQVUsQ0FBQyxFQUFJO0lBQzFDLElBQUk4SSxNQUFNLENBQUNJLFFBQVEsQ0FBQ2xKLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO01BQ3pCNkksV0FBVyxHQUFHTSxVQUFVLENBQUNMLE1BQU0sQ0FBQyxHQUFHOUksQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUN2QyxPQUFPLElBQUk7SUFDYjtJQUNBLE9BQU8sS0FBSztFQUNkLENBQUMsQ0FBQzs7RUFFRjtFQUNBLE9BQU82SSxXQUFXLEtBQUssSUFBSSxHQUFHNUksTUFBTSxDQUFDNkksTUFBTSxDQUFDLEdBQUdELFdBQVc7QUFDNUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTM0IsaUJBQWlCQSxDQUMvQmtDLFFBQXdCLEVBQ3FCO0VBQzdDLE9BQU9BLFFBQVEsR0FDWCxVQUFBeEgsTUFBTTtJQUFBLE9BQUksVUFBQXlILEVBQUU7TUFBQSxPQUFJeEgsMEJBQU0sQ0FBQ0MsR0FBRyxDQUFDdUgsRUFBRSxDQUFDLENBQUNDLEVBQUUsQ0FBQ0YsUUFBUSxDQUFDLENBQUN4SCxNQUFNLENBQUNBLE1BQU0sQ0FBQztJQUFBO0VBQUE7RUFDMUQ7RUFDQSxVQUFBQSxNQUFNO0lBQUEsT0FBSSxVQUFBeUgsRUFBRTtNQUFBLE9BQUlBLEVBQUUsR0FBR3hILDBCQUFNLENBQUNDLEdBQUcsQ0FBQ3VILEVBQUUsQ0FBQyxDQUFDekgsTUFBTSxDQUFDQSxNQUFNLENBQUMsR0FBRyxFQUFFO0lBQUE7RUFBQTtBQUM3RCIsImlnbm9yZUxpc3QiOltdfQ==
|
|
501
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZDNGb3JtYXQiLCJfbW9tZW50VGltZXpvbmUiLCJfY29uc3RhbnRzIiwiX2NvbW1vblV0aWxzIiwiX3Bsb3QiLCJfdXRpbHMiLCJfRklFTERfRElTUExBWV9GT1JNQVQiLCJNQVhfTEFUSVRVREUiLCJleHBvcnRzIiwiTUlOX0xBVElUVURFIiwiTUFYX0xPTkdJVFVERSIsIk1JTl9MT05HSVRVREUiLCJ2YWxpZGF0ZUxhdGl0dWRlIiwibGF0aXR1ZGUiLCJ2YWxpZGF0ZUNvb3JkaW5hdGUiLCJ2YWxpZGF0ZUxvbmdpdHVkZSIsImxvbmdpdHVkZSIsInZhbHVlIiwibWluVmFsdWUiLCJtYXhWYWx1ZSIsInVuaXF1ZSIsInZhbHVlcyIsInJlc3VsdHMiLCJ1bmlxdWVTZXQiLCJTZXQiLCJmb3JFYWNoIiwidiIsIm5vdE51bGxvclVuZGVmaW5lZCIsInB1c2giLCJnZXRMYXRMbmdCb3VuZHMiLCJwb2ludHMiLCJpZHgiLCJsaW1pdCIsImxhdHMiLCJtYXAiLCJkIiwiTnVtYmVyIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsdGVyIiwiaXNGaW5pdGUiLCJzb3J0IiwibnVtYmVyU29ydCIsImxlbmd0aCIsIk1hdGgiLCJtYXgiLCJtaW4iLCJjbGFtcCIsIl9yZWYiLCJfcmVmMiIsIl9zbGljZWRUb0FycmF5MiIsInZhbCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImdldFNhbXBsZURhdGEiLCJkYXRhIiwic2FtcGxlU2l6ZSIsImdldFZhbHVlIiwic2FtcGxlU3RlcCIsImZsb29yIiwib3V0cHV0IiwiaSIsInRpbWVUb1VuaXhNaWxsaSIsImZvcm1hdCIsIm1vbWVudCIsInV0YyIsInZhbHVlT2YiLCJEYXRlIiwiaXNOdW1iZXIiLCJoYXNPd25Qcm9wZXJ0eSIsIm9iaiIsInByb3AiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJjYWxsIiwiYSIsImIiLCJnZXRTb3J0aW5nRnVuY3Rpb24iLCJmaWVsZFR5cGUiLCJBTExfRklFTERfVFlQRVMiLCJyZWFsIiwiaW50ZWdlciIsInRpbWVzdGFtcCIsInByZWNpc2VSb3VuZCIsIm51bSIsImRlY2ltYWxzIiwidCIsInBvdyIsInJvdW5kIiwic2lnbiIsInRvRml4ZWQiLCJyb3VuZFRvRm91ciIsImNvbmNhdCIsImdldFJvdW5kaW5nRGVjaW1hbEZyb21TdGVwIiwic3RlcCIsImlzTmFOIiwiYXNzZXJ0Iiwic3RlcFN0ciIsInRvU3RyaW5nIiwic3BsaXRFeHBvbmVudGlhbCIsInNwbGl0IiwiY29lZmZaZXJvIiwiY29lZmZEZWNpbWFsIiwicGFyc2VJbnQiLCJzcGxpdFplcm8iLCJub3JtYWxpemVTbGlkZXJWYWx1ZSIsIm1hcmtzIiwic25hcFRvTWFya3MiLCJyb3VuZFZhbFRvU3RlcCIsImRlY2ltYWwiLCJzdGVwcyIsInJlbWFpbiIsImNsb3Nlc3QiLCJyb3VuZGVkIiwiZGVmYXVsdEZvcm1hdHRlciIsIlN0cmluZyIsImZsb2F0Rm9ybWF0dGVyIiwiRklFTERfRElTUExBWV9GT1JNQVQiLCJfZGVmaW5lUHJvcGVydHkyIiwic3RyaW5nIiwiZGF0ZSIsImdlb2pzb24iLCJpc1BsYWluT2JqZWN0IiwiSlNPTiIsInN0cmluZ2lmeSIsImdlb2Fycm93Iiwib2JqZWN0IiwiZSIsImFycmF5IiwiaDMiLCJwYXJzZUZpZWxkVmFsdWUiLCJ0eXBlIiwiZ2V0Rm9ybWF0dGVyIiwiZmllbGQiLCJ0b29sdGlwRm9ybWF0IiwiVE9PTFRJUF9GT1JNQVRTIiwiZmluZCIsImYiLCJUT09MVElQX0tFWSIsImFwcGx5RGVmYXVsdEZvcm1hdCIsImFwcGx5Q3VzdG9tRm9ybWF0IiwiZ2V0Q29sdW1uRm9ybWF0dGVyIiwiZGlzcGxheUZvcm1hdCIsIl90eXBlb2YyIiwiYXBwbHlWYWx1ZU1hcCIsIlRPT0xUSVBfRk9STUFUX1RZUEVTIiwiREVDSU1BTCIsImQzRm9ybWF0IiwiREFURSIsIkRBVEVfVElNRSIsImRhdGV0aW1lRm9ybWF0dGVyIiwiUEVSQ0VOVEFHRSIsIkRFQ0lNQUxfREVDSU1BTF9GSVhFRF8yIiwiQk9PTEVBTiIsImdldEJvb2xlYW5Gb3JtYXR0ZXIiLCJmb3JtYXRMYXJnZU51bWJlciIsIm4iLCJmb3JtYXROdW1iZXIiLCJ0cmFuc2Zvcm1hdGlvbiIsIlkiLCJaIiwiRSIsIlAiLCJUIiwiRyIsIk0iLCJrIiwiaCIsImRhIiwiYyIsIm0iLCLOvCIsInAiLCJ6IiwieSIsInJldmVyc2VGb3JtYXROdW1iZXIiLCJzdHIiLCJyZXR1cm5WYWx1ZSIsInN0ck51bSIsInRyaW0iLCJyZXBsYWNlIiwiZW50cmllcyIsImluY2x1ZGVzIiwicGFyc2VGbG9hdCIsInRpbWV6b25lIiwidHMiLCJ0eiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7Zm9ybWF0IGFzIGQzRm9ybWF0fSBmcm9tICdkMy1mb3JtYXQnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuXG5pbXBvcnQge1xuICBBTExfRklFTERfVFlQRVMsXG4gIFRPT0xUSVBfRk9STUFUUyxcbiAgVE9PTFRJUF9GT1JNQVRfVFlQRVMsXG4gIFRPT0xUSVBfS0VZLFxuICBUb29sdGlwRm9ybWF0XG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7bm90TnVsbG9yVW5kZWZpbmVkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge0ZpZWxkLCBNaWxsaXNlY29uZH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7c25hcFRvTWFya3N9IGZyb20gJy4vcGxvdCc7XG5pbXBvcnQge2lzUGxhaW5PYmplY3R9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBGaWVsZEZvcm1hdHRlciA9ICh2YWx1ZTogYW55KSA9PiBzdHJpbmc7XG5cbi8vIFdlIG5lZWQgdGhyZWF0IGxhdGl0dWRlIGRpZmZlcmVudGx5IG90aGVyd2lzZSBtYXJjYXRvciBwcm9qZWN0IHZpZXcgdGhyb3dzXG4vLyBhIHByb2plY3Rpb24gbWF0cml4IGVycm9yXG4vLyBVbmNhdWdodCBFcnJvcjogUGl4ZWwgcHJvamVjdCBtYXRyaXggbm90IGludmVydGlibGVcbi8vIGF0IFdlYk1lcmNhdG9yVmlld3BvcnQxNi5WaWV3cG9ydDYgKHZpZXdwb3J0LmpzOjgxOjEzKVxuZXhwb3J0IGNvbnN0IE1BWF9MQVRJVFVERSA9IDg5Ljk7XG5leHBvcnQgY29uc3QgTUlOX0xBVElUVURFID0gLTg5Ljk7XG5leHBvcnQgY29uc3QgTUFYX0xPTkdJVFVERSA9IDE4MDtcbmV4cG9ydCBjb25zdCBNSU5fTE9OR0lUVURFID0gLTE4MDtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBsYXRpdHVkZSB2YWx1ZS5cbiAqIEVuc3VyZXMgdGhhdCB0aGUgbGF0aXR1ZGUgaXMgd2l0aGluIHRoZSBkZWZpbmVkIG1pbmltdW0gYW5kIG1heGltdW0gbGF0aXR1ZGUgYm91bmRzLlxuICogSWYgdGhlIHZhbHVlIGlzIG91dCBvZiBib3VuZHMsIGl0IHJldHVybnMgdGhlIG5lYXJlc3QgYm91bmQgdmFsdWUuXG4gKiBAcGFyYW0gbGF0aXR1ZGUgLSBUaGUgbGF0aXR1ZGUgdmFsdWUgdG8gdmFsaWRhdGUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGxhdGl0dWRlIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMYXRpdHVkZShsYXRpdHVkZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgcmV0dXJuIHZhbGlkYXRlQ29vcmRpbmF0ZShsYXRpdHVkZSA/PyAwLCBNSU5fTEFUSVRVREUsIE1BWF9MQVRJVFVERSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgbG9uZ2l0dWRlIHZhbHVlLlxuICogRW5zdXJlcyB0aGF0IHRoZSBsb25naXR1ZGUgaXMgd2l0aGluIHRoZSBkZWZpbmVkIG1pbmltdW0gYW5kIG1heGltdW0gbG9uZ2l0dWRlIGJvdW5kcy5cbiAqIElmIHRoZSB2YWx1ZSBpcyBvdXQgb2YgYm91bmRzLCBpdCByZXR1cm5zIHRoZSBuZWFyZXN0IGJvdW5kIHZhbHVlLlxuICogQHBhcmFtIGxvbmdpdHVkZSAtIFRoZSBsb25naXR1ZGUgdmFsdWUgdG8gdmFsaWRhdGUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGxvbmdpdHVkZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTG9uZ2l0dWRlKGxvbmdpdHVkZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgcmV0dXJuIHZhbGlkYXRlQ29vcmRpbmF0ZShsb25naXR1ZGUgPz8gMCwgTUlOX0xPTkdJVFVERSwgTUFYX0xPTkdJVFVERSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgY29vcmRpbmF0ZSB2YWx1ZS5cbiAqIEVuc3VyZXMgdGhhdCB0aGUgdmFsdWUgaXMgd2l0aGluIHRoZSBzcGVjaWZpZWQgbWluaW11bSBhbmQgbWF4aW11bSBib3VuZHMuXG4gKiBJZiB0aGUgdmFsdWUgaXMgb3V0IG9mIGJvdW5kcywgaXQgcmV0dXJucyB0aGUgbmVhcmVzdCBib3VuZCB2YWx1ZS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBjb29yZGluYXRlIHZhbHVlIHRvIHZhbGlkYXRlLlxuICogQHBhcmFtIG1pblZhbHVlIC0gVGhlIG1pbmltdW0gYm91bmQgZm9yIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSBtYXhWYWx1ZSAtIFRoZSBtYXhpbXVtIGJvdW5kIGZvciB0aGUgdmFsdWUuXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdGVkIGNvb3JkaW5hdGUgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNvb3JkaW5hdGUodmFsdWU6IG51bWJlciwgbWluVmFsdWU6IG51bWJlciwgbWF4VmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gIGlmICh2YWx1ZSA8PSBtaW5WYWx1ZSkge1xuICAgIHJldHVybiBtaW5WYWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgPj0gbWF4VmFsdWUpIHtcbiAgICByZXR1cm4gbWF4VmFsdWU7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogc2ltcGxlIGdldHRpbmcgdW5pcXVlIHZhbHVlcyBvZiBhbiBhcnJheVxuICpcbiAqIEBwYXJhbSB2YWx1ZXNcbiAqIEByZXR1cm5zIHVuaXF1ZSB2YWx1ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaXF1ZTxUPih2YWx1ZXM6IFRbXSkge1xuICBjb25zdCByZXN1bHRzOiBUW10gPSBbXTtcbiAgY29uc3QgdW5pcXVlU2V0ID0gbmV3IFNldCh2YWx1ZXMpO1xuICB1bmlxdWVTZXQuZm9yRWFjaCh2ID0+IHtcbiAgICBpZiAobm90TnVsbG9yVW5kZWZpbmVkKHYpKSB7XG4gICAgICByZXN1bHRzLnB1c2godik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXRMbmdCb3VuZHMoXG4gIHBvaW50czogbnVtYmVyW11bXSxcbiAgaWR4OiBudW1iZXIsXG4gIGxpbWl0OiBbbnVtYmVyLCBudW1iZXJdXG4pOiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbCB7XG4gIGNvbnN0IGxhdHMgPSBwb2ludHNcbiAgICAubWFwKGQgPT4gTnVtYmVyKEFycmF5LmlzQXJyYXkoZCkpICYmIGRbaWR4XSlcbiAgICAuZmlsdGVyKE51bWJlci5pc0Zpbml0ZSlcbiAgICAuc29ydChudW1iZXJTb3J0KTtcblxuICBpZiAoIWxhdHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBjbGFtcCB0byBsaW1pdFxuICByZXR1cm4gW01hdGgubWF4KGxhdHNbMF0sIGxpbWl0WzBdKSwgTWF0aC5taW4obGF0c1tsYXRzLmxlbmd0aCAtIDFdLCBsaW1pdFsxXSldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xhbXAoW21pbiwgbWF4XTogW251bWJlciwgbnVtYmVyXSwgdmFsID0gMCk6IG51bWJlciB7XG4gIHJldHVybiB2YWwgPD0gbWluID8gbWluIDogdmFsID49IG1heCA/IG1heCA6IHZhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNhbXBsZURhdGEoZGF0YSwgc2FtcGxlU2l6ZSA9IDUwMCwgZ2V0VmFsdWUgPSBkID0+IGQpIHtcbiAgY29uc3Qgc2FtcGxlU3RlcCA9IE1hdGgubWF4KE1hdGguZmxvb3IoZGF0YS5sZW5ndGggLyBzYW1wbGVTaXplKSwgMSk7XG4gIGNvbnN0IG91dHB1dDogYW55W10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSArPSBzYW1wbGVTdGVwKSB7XG4gICAgb3V0cHV0LnB1c2goZ2V0VmFsdWUoZGF0YVtpXSkpO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGRpZmZlcmVudCB0aW1lIGZvcm1hdCB0byB1bml4IG1pbGxpc2Vjb25kc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdGltZVRvVW5peE1pbGxpKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlLCBmb3JtYXQ6IHN0cmluZyk6IE1pbGxpc2Vjb25kIHwgbnVsbCB7XG4gIGlmIChub3ROdWxsb3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBtb21lbnQudXRjKHZhbHVlLCBmb3JtYXQpLnZhbHVlT2YoKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBmb3JtYXQgPT09ICd4JyA/IHZhbHVlICogMTAwMCA6IHZhbHVlO1xuICAgIH1cbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXR1cm4gdmFsdWUudmFsdWVPZigpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGQgaXMgYSBudW1iZXIsIHRoaXMgZmlsdGVyZWQgb3V0IE5hTiBhcyB3ZWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlcihkOiB1bmtub3duKTogZCBpcyBudW1iZXIge1xuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKGQpO1xufVxuXG4vKipcbiAqIHdoZXRoZXIgb2JqZWN0IGhhcyBwcm9wZXJ0eVxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIHllcyBvciBub1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzT3duUHJvcGVydHk8WCBleHRlbmRzIG9iamVjdCwgWSBleHRlbmRzIFByb3BlcnR5S2V5PihcbiAgb2JqOiBYLFxuICBwcm9wOiBZXG4pOiBvYmogaXMgWCAmIFJlY29yZDxZLCB1bmtub3duPiB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG51bWJlclNvcnQoYTogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYSAtIGI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb3J0aW5nRnVuY3Rpb24oZmllbGRUeXBlOiBzdHJpbmcpOiB0eXBlb2YgbnVtYmVyU29ydCB8IHVuZGVmaW5lZCB7XG4gIHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMucmVhbDpcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcDpcbiAgICAgIHJldHVybiBudW1iZXJTb3J0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogcm91bmQgbnVtYmVyIHdpdGggZXhhY3QgbnVtYmVyIG9mIGRlY2ltYWxzXG4gKiByZXR1cm4gYXMgYSBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWNpc2VSb3VuZChudW06IG51bWJlciwgZGVjaW1hbHM6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IHQgPSBNYXRoLnBvdygxMCwgZGVjaW1hbHMpO1xuICByZXR1cm4gKFxuICAgIE1hdGgucm91bmQoXG4gICAgICBudW0gKiB0ICsgKGRlY2ltYWxzID4gMCA/IDEgOiAwKSAqIChNYXRoLnNpZ24obnVtKSAqICgxMCAvIE1hdGgucG93KDEwMCwgZGVjaW1hbHMpKSlcbiAgICApIC8gdFxuICApLnRvRml4ZWQoZGVjaW1hbHMpO1xufVxuXG4vKipcbiAqIHJvdW5kIGEgZ2l2aW5nIG51bWJlciBhdCBtb3N0IDQgZGVjaW1hbCBwbGFjZXNcbiAqIGUuZy4gMTAgLT4gMTAsIDEuMTIzNDUgLT4gMS4yMzQ1LCAyLjAgLT4gMlxuICovXG5leHBvcnQgZnVuY3Rpb24gcm91bmRUb0ZvdXIobnVtOiBudW1iZXIpOiBudW1iZXIge1xuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIHJldHVybiBOdW1iZXIoYCR7TWF0aC5yb3VuZChgJHtudW19ZSs0YCl9ZS00YCk7XG59XG4vKipcbiAqIGdldCBudW1iZXIgb2YgZGVjaW1hbHMgdG8gcm91bmQgdG8gZm9yIHNsaWRlciBmcm9tIHN0ZXBcbiAqIEBwYXJhbSBzdGVwXG4gKiBAcmV0dXJucy0gbnVtYmVyIG9mIGRlY2ltYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdW5kaW5nRGVjaW1hbEZyb21TdGVwKHN0ZXA6IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChpc05hTihzdGVwKSkge1xuICAgIGFzc2VydCgnc3RlcCBpcyBub3QgYSBudW1iZXInKTtcbiAgICBhc3NlcnQoc3RlcCk7XG4gIH1cblxuICBjb25zdCBzdGVwU3RyID0gc3RlcC50b1N0cmluZygpO1xuXG4gIC8vIGluIGNhc2UgdGhlIHN0ZXAgaXMgYSB2ZXJ5IHNtYWxsIG51bWJlciBlLmcuIDFlLTcsIHJldHVybiBkZWNpbWFsIGUuZy4gNyBkaXJlY3RseVxuICBjb25zdCBzcGxpdEV4cG9uZW50aWFsID0gc3RlcFN0ci5zcGxpdCgnZS0nKTtcbiAgaWYgKHNwbGl0RXhwb25lbnRpYWwubGVuZ3RoID09PSAyKSB7XG4gICAgY29uc3QgY29lZmZaZXJvID0gc3BsaXRFeHBvbmVudGlhbFswXS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGNvZWZmRGVjaW1hbCA9IGNvZWZmWmVyby5sZW5ndGggPT09IDEgPyAwIDogY29lZmZaZXJvWzFdLmxlbmd0aDtcbiAgICByZXR1cm4gcGFyc2VJbnQoc3BsaXRFeHBvbmVudGlhbFsxXSwgMTApICsgY29lZmZEZWNpbWFsO1xuICB9XG5cbiAgY29uc3Qgc3BsaXRaZXJvID0gc3RlcFN0ci5zcGxpdCgnLicpO1xuICBpZiAoc3BsaXRaZXJvLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHJldHVybiBzcGxpdFplcm9bMV0ubGVuZ3RoO1xufVxuXG4vKipcbiAqIElmIG1hcmtzIGlzIHByb3ZpZGVkLCBzbmFwIHRvIG1hcmtzLCBpZiBub3Qgbm9ybWFsaXplIHRvIHN0ZXBcbiAqIEBwYXJhbSB2YWxcbiAqIEBwYXJhbSBtaW5WYWx1ZVxuICogQHBhcmFtIHN0ZXBcbiAqIEBwYXJhbSBtYXJrc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU2xpZGVyVmFsdWUoXG4gIHZhbDogbnVtYmVyLFxuICBtaW5WYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBzdGVwOiBudW1iZXIsXG4gIG1hcmtzPzogbnVtYmVyW10gfCBudWxsXG4pOiBudW1iZXIge1xuICBpZiAobWFya3MgJiYgbWFya3MubGVuZ3RoKSB7XG4gICAgLy8gVXNlIGluIHNsaWRlciwgZ2l2ZW4gYSBudW1iZXIgYW5kIGFuIGFycmF5IG9mIG51bWJlcnMsIHJldHVybiB0aGUgbmVhcnMgbnVtYmVyIGZyb20gdGhlIGFycmF5XG4gICAgcmV0dXJuIHNuYXBUb01hcmtzKHZhbCwgbWFya3MpO1xuICB9XG5cbiAgcmV0dXJuIHJvdW5kVmFsVG9TdGVwKG1pblZhbHVlLCBzdGVwLCB2YWwpO1xufVxuXG4vKipcbiAqIHJvdW5kIHRoZSB2YWx1ZSB0byBzdGVwIGZvciB0aGUgc2xpZGVyXG4gKiBAcGFyYW0gbWluVmFsdWVcbiAqIEBwYXJhbSBzdGVwXG4gKiBAcGFyYW0gdmFsXG4gKiBAcmV0dXJucyAtIHJvdW5kZWQgbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb3VuZFZhbFRvU3RlcChtaW5WYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkLCBzdGVwOiBudW1iZXIsIHZhbDogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKCFpc051bWJlcihzdGVwKSB8fCAhaXNOdW1iZXIobWluVmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIGNvbnN0IGRlY2ltYWwgPSBnZXRSb3VuZGluZ0RlY2ltYWxGcm9tU3RlcChzdGVwKTtcbiAgY29uc3Qgc3RlcHMgPSBNYXRoLmZsb29yKCh2YWwgLSBtaW5WYWx1ZSkgLyBzdGVwKTtcbiAgbGV0IHJlbWFpbiA9IHZhbCAtIChzdGVwcyAqIHN0ZXAgKyBtaW5WYWx1ZSk7XG5cbiAgLy8gaGFzIHRvIHJvdW5kIGJlY2F1c2UgamF2YXNjcmlwdCB0dXJucyAwLjEgaW50byAwLjk5OTk5OTk5OTk5OTk5ODdcbiAgcmVtYWluID0gTnVtYmVyKHByZWNpc2VSb3VuZChyZW1haW4sIDgpKTtcblxuICBsZXQgY2xvc2VzdDogbnVtYmVyO1xuICBpZiAocmVtYWluID09PSAwKSB7XG4gICAgY2xvc2VzdCA9IHZhbDtcbiAgfSBlbHNlIGlmIChyZW1haW4gPCBzdGVwIC8gMikge1xuICAgIGNsb3Nlc3QgPSBzdGVwcyAqIHN0ZXAgKyBtaW5WYWx1ZTtcbiAgfSBlbHNlIHtcbiAgICBjbG9zZXN0ID0gKHN0ZXBzICsgMSkgKiBzdGVwICsgbWluVmFsdWU7XG4gIH1cblxuICAvLyBwcmVjaXNlIHJvdW5kIHJldHVybiBhIHN0cmluZyByb3VuZGVkIHRvIHRoZSBkZWZpbmVkIGRlY2ltYWxcbiAgY29uc3Qgcm91bmRlZCA9IHByZWNpc2VSb3VuZChjbG9zZXN0LCBkZWNpbWFsKTtcblxuICByZXR1cm4gTnVtYmVyKHJvdW5kZWQpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgdmFsdWUgZm9ybWF0IGJhc2VkIG9uIGZpZWxkIGFuZCBmb3JtYXQgb3B0aW9uc1xuICogVXNlZCBpbiByZW5kZXIgdG9vbHRpcCB2YWx1ZVxuICovXG5leHBvcnQgY29uc3QgZGVmYXVsdEZvcm1hdHRlcjogRmllbGRGb3JtYXR0ZXIgPSB2ID0+IChub3ROdWxsb3JVbmRlZmluZWQodikgPyBTdHJpbmcodikgOiAnJyk7XG5cbmV4cG9ydCBjb25zdCBmbG9hdEZvcm1hdHRlciA9IHYgPT4gKGlzTnVtYmVyKHYpID8gU3RyaW5nKHJvdW5kVG9Gb3VyKHYpKSA6ICcnKTtcblxuZXhwb3J0IGNvbnN0IEZJRUxEX0RJU1BMQVlfRk9STUFUOiB7XG4gIFtrZXk6IHN0cmluZ106IEZpZWxkRm9ybWF0dGVyO1xufSA9IHtcbiAgW0FMTF9GSUVMRF9UWVBFUy5zdHJpbmddOiBkZWZhdWx0Rm9ybWF0dGVyLFxuICBbQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcF06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMuaW50ZWdlcl06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMucmVhbF06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMuYm9vbGVhbl06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMuZGF0ZV06IGRlZmF1bHRGb3JtYXR0ZXIsXG4gIFtBTExfRklFTERfVFlQRVMuZ2VvanNvbl06IGQgPT5cbiAgICB0eXBlb2YgZCA9PT0gJ3N0cmluZydcbiAgICAgID8gZFxuICAgICAgOiBpc1BsYWluT2JqZWN0KGQpXG4gICAgICA/IEpTT04uc3RyaW5naWZ5KGQpXG4gICAgICA6IEFycmF5LmlzQXJyYXkoZClcbiAgICAgID8gYFske1N0cmluZyhkKX1dYFxuICAgICAgOiAnJyxcbiAgW0FMTF9GSUVMRF9UWVBFUy5nZW9hcnJvd106IGQgPT4gZCxcbiAgW0FMTF9GSUVMRF9UWVBFUy5vYmplY3RdOiAodmFsdWU6IGFueSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5hcnJheV06IEpTT04uc3RyaW5naWZ5LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmgzXTogZGVmYXVsdEZvcm1hdHRlclxufTtcblxuLyoqXG4gKiBQYXJzZSBmaWVsZCB2YWx1ZSBhbmQgdHlwZSBhbmQgcmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZUZpZWxkVmFsdWUgPSAodmFsdWU6IGFueSwgdHlwZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCFub3ROdWxsb3JVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIC8vIEJpZ0ludCB2YWx1ZXMgY2Fubm90IGJlIHNlcmlhbGl6ZWQgd2l0aCBKU09OLnN0cmluZ2lmeSgpIGRpcmVjdGx5XG4gIC8vIFdlIG5lZWQgdG8gZXhwbGljaXRseSBjb252ZXJ0IHRoZW0gdG8gc3RyaW5ncyB1c2luZyAudG9TdHJpbmcoKVxuICAvLyBTZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0JpZ0ludCN1c2Vfd2l0aGluX2pzb25cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2JpZ2ludCcpIHtcbiAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgfVxuICByZXR1cm4gRklFTERfRElTUExBWV9GT1JNQVRbdHlwZV0gPyBGSUVMRF9ESVNQTEFZX0ZPUk1BVFt0eXBlXSh2YWx1ZSkgOiBTdHJpbmcodmFsdWUpO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHZhbHVlIGZvcm1hdCBiYXNlZCBvbiBmaWVsZCBhbmQgZm9ybWF0IG9wdGlvbnNcbiAqIFVzZWQgaW4gcmVuZGVyIHRvb2x0aXAgdmFsdWVcbiAqIEBwYXJhbSBmb3JtYXRcbiAqIEBwYXJhbSBmaWVsZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0dGVyKFxuICBmb3JtYXQ/OiBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCxcbiAgZmllbGQ/OiBGaWVsZFxuKTogRmllbGRGb3JtYXR0ZXIge1xuICBpZiAoIWZvcm1hdCkge1xuICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG4gIGNvbnN0IHRvb2x0aXBGb3JtYXQgPSBPYmplY3QudmFsdWVzKFRPT0xUSVBfRk9STUFUUykuZmluZChmID0+IGZbVE9PTFRJUF9LRVldID09PSBmb3JtYXQpO1xuXG4gIGlmICh0b29sdGlwRm9ybWF0KSB7XG4gICAgcmV0dXJuIGFwcGx5RGVmYXVsdEZvcm1hdCh0b29sdGlwRm9ybWF0IGFzIFRvb2x0aXBGb3JtYXQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBmb3JtYXQgPT09ICdzdHJpbmcnICYmIGZpZWxkKSB7XG4gICAgcmV0dXJuIGFwcGx5Q3VzdG9tRm9ybWF0KGZvcm1hdCwgZmllbGQpO1xuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2x1bW5Gb3JtYXR0ZXIoXG4gIGZpZWxkOiBQaWNrPEZpZWxkLCAndHlwZSc+ICYgUGFydGlhbDxQaWNrPEZpZWxkLCAnZm9ybWF0JyB8ICdkaXNwbGF5Rm9ybWF0Jz4+XG4pOiBGaWVsZEZvcm1hdHRlciB7XG4gIGNvbnN0IHtmb3JtYXQsIGRpc3BsYXlGb3JtYXR9ID0gZmllbGQ7XG5cbiAgaWYgKCFmb3JtYXQgJiYgIWRpc3BsYXlGb3JtYXQpIHtcbiAgICByZXR1cm4gRklFTERfRElTUExBWV9GT1JNQVRbZmllbGQudHlwZV07XG4gIH1cbiAgY29uc3QgdG9vbHRpcEZvcm1hdCA9IE9iamVjdC52YWx1ZXMoVE9PTFRJUF9GT1JNQVRTKS5maW5kKGYgPT4gZltUT09MVElQX0tFWV0gPT09IGRpc3BsYXlGb3JtYXQpO1xuXG4gIGlmICh0b29sdGlwRm9ybWF0KSB7XG4gICAgcmV0dXJuIGFwcGx5RGVmYXVsdEZvcm1hdCh0b29sdGlwRm9ybWF0KTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGlzcGxheUZvcm1hdCA9PT0gJ3N0cmluZycgJiYgZmllbGQpIHtcbiAgICByZXR1cm4gYXBwbHlDdXN0b21Gb3JtYXQoZGlzcGxheUZvcm1hdCwgZmllbGQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBkaXNwbGF5Rm9ybWF0ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBhcHBseVZhbHVlTWFwKGRpc3BsYXlGb3JtYXQpO1xuICB9XG5cbiAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVZhbHVlTWFwKGZvcm1hdCkge1xuICByZXR1cm4gdiA9PiBmb3JtYXRbdl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseURlZmF1bHRGb3JtYXQodG9vbHRpcEZvcm1hdDogVG9vbHRpcEZvcm1hdCk6ICh2OiBhbnkpID0+IHN0cmluZyB7XG4gIGlmICghdG9vbHRpcEZvcm1hdCB8fCAhdG9vbHRpcEZvcm1hdC5mb3JtYXQpIHtcbiAgICByZXR1cm4gZGVmYXVsdEZvcm1hdHRlcjtcbiAgfVxuXG4gIHN3aXRjaCAodG9vbHRpcEZvcm1hdC50eXBlKSB7XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMOlxuICAgICAgcmV0dXJuIGQzRm9ybWF0KHRvb2x0aXBGb3JtYXQuZm9ybWF0KTtcbiAgICBjYXNlIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEU6XG4gICAgY2FzZSBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFX1RJTUU6XG4gICAgICByZXR1cm4gZGF0ZXRpbWVGb3JtYXR0ZXIobnVsbCkodG9vbHRpcEZvcm1hdC5mb3JtYXQpO1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuUEVSQ0VOVEFHRTpcbiAgICAgIHJldHVybiB2ID0+IGAke2QzRm9ybWF0KFRPT0xUSVBfRk9STUFUUy5ERUNJTUFMX0RFQ0lNQUxfRklYRURfMi5mb3JtYXQpKHYpfSVgO1xuICAgIGNhc2UgVE9PTFRJUF9GT1JNQVRfVFlQRVMuQk9PTEVBTjpcbiAgICAgIHJldHVybiBnZXRCb29sZWFuRm9ybWF0dGVyKHRvb2x0aXBGb3JtYXQuZm9ybWF0KTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRlZmF1bHRGb3JtYXR0ZXI7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJvb2xlYW5Gb3JtYXR0ZXIoZm9ybWF0OiBzdHJpbmcpOiBGaWVsZEZvcm1hdHRlciB7XG4gIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgY2FzZSAnMDEnOlxuICAgICAgcmV0dXJuICh2OiBib29sZWFuKSA9PiAodiA/ICcxJyA6ICcwJyk7XG4gICAgY2FzZSAneW4nOlxuICAgICAgcmV0dXJuICh2OiBib29sZWFuKSA9PiAodiA/ICd5ZXMnIDogJ25vJyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkZWZhdWx0Rm9ybWF0dGVyO1xuICB9XG59XG4vLyBBbGxvdyB1c2VyIHRvIHNwZWNpZnkgY3VzdG9tIHRvb2x0aXAgZm9ybWF0IHZpYSBjb25maWdcbmV4cG9ydCBmdW5jdGlvbiBhcHBseUN1c3RvbUZvcm1hdChmb3JtYXQsIGZpZWxkOiB7dHlwZT86IHN0cmluZ30pOiBGaWVsZEZvcm1hdHRlciB7XG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMuaW50ZWdlcjpcbiAgICAgIHJldHVybiBkM0Zvcm1hdChmb3JtYXQpO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLmRhdGU6XG4gICAgY2FzZSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wOlxuICAgICAgcmV0dXJuIGRhdGV0aW1lRm9ybWF0dGVyKG51bGwpKGZvcm1hdCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB2ID0+IHY7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9ybWF0TGFyZ2VOdW1iZXIobikge1xuICAvLyBTSS1wcmVmaXggd2l0aCA0IHNpZ25pZmljYW50IGRpZ2l0c1xuICByZXR1cm4gZDNGb3JtYXQoJy40fnMnKShuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE51bWJlcihuOiBudW1iZXIsIHR5cGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyOlxuICAgICAgaWYgKG4gPCAwKSB7XG4gICAgICAgIHJldHVybiBgLSR7Zm9ybWF0TnVtYmVyKC1uLCAnaW50ZWdlcicpfWA7XG4gICAgICB9XG4gICAgICBpZiAobiA8IDEwMDApIHtcbiAgICAgICAgcmV0dXJuIGAke01hdGgucm91bmQobil9YDtcbiAgICAgIH1cbiAgICAgIGlmIChuIDwgMTAgKiAxMDAwKSB7XG4gICAgICAgIHJldHVybiBkM0Zvcm1hdCgnLCcpKE1hdGgucm91bmQobikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdExhcmdlTnVtYmVyKG4pO1xuICAgIGNhc2UgQUxMX0ZJRUxEX1RZUEVTLnJlYWw6XG4gICAgICBpZiAobiA8IDApIHtcbiAgICAgICAgcmV0dXJuIGAtJHtmb3JtYXROdW1iZXIoLW4sICdudW1iZXInKX1gO1xuICAgICAgfVxuICAgICAgaWYgKG4gPCAxMDAwKSB7XG4gICAgICAgIHJldHVybiBkM0Zvcm1hdCgnLjR+cicpKG4pO1xuICAgICAgfVxuICAgICAgaWYgKG4gPCAxMCAqIDEwMDApIHtcbiAgICAgICAgcmV0dXJuIGQzRm9ybWF0KCcsLjJ+ZicpKG4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm1hdExhcmdlTnVtYmVyKG4pO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmb3JtYXROdW1iZXIobiwgJ3JlYWwnKTtcbiAgfVxufVxuXG5jb25zdCB0cmFuc2Zvcm1hdGlvbiA9IHtcbiAgWTogTWF0aC5wb3coMTAsIDI0KSxcbiAgWjogTWF0aC5wb3coMTAsIDIxKSxcbiAgRTogTWF0aC5wb3coMTAsIDE4KSxcbiAgUDogTWF0aC5wb3coMTAsIDE1KSxcbiAgVDogTWF0aC5wb3coMTAsIDEyKSxcbiAgRzogTWF0aC5wb3coMTAsIDkpLFxuICBNOiBNYXRoLnBvdygxMCwgNiksXG4gIGs6IE1hdGgucG93KDEwLCAzKSxcbiAgaDogTWF0aC5wb3coMTAsIDIpLFxuICBkYTogTWF0aC5wb3coMTAsIDEpLFxuICBkOiBNYXRoLnBvdygxMCwgLTEpLFxuICBjOiBNYXRoLnBvdygxMCwgLTIpLFxuICBtOiBNYXRoLnBvdygxMCwgLTMpLFxuICDOvDogTWF0aC5wb3coMTAsIC02KSxcbiAgbjogTWF0aC5wb3coMTAsIC05KSxcbiAgcDogTWF0aC5wb3coMTAsIC0xMiksXG4gIGY6IE1hdGgucG93KDEwLCAtMTUpLFxuICBhOiBNYXRoLnBvdygxMCwgLTE4KSxcbiAgejogTWF0aC5wb3coMTAsIC0yMSksXG4gIHk6IE1hdGgucG93KDEwLCAtMjQpXG59O1xuXG4vKipcbiAqIENvbnZlcnQgYSBmb3JtYXR0ZWQgbnVtYmVyIGZyb20gc3RyaW5nIGJhY2sgdG8gbnVtYmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXZlcnNlRm9ybWF0TnVtYmVyKHN0cjogc3RyaW5nKTogbnVtYmVyIHtcbiAgbGV0IHJldHVyblZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgY29uc3Qgc3RyTnVtID0gc3RyLnRyaW0oKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgT2JqZWN0LmVudHJpZXModHJhbnNmb3JtYXRpb24pLmZvckVhY2goZCA9PiB7XG4gICAgaWYgKHN0ck51bS5pbmNsdWRlcyhkWzBdKSkge1xuICAgICAgcmV0dXJuVmFsdWUgPSBwYXJzZUZsb2F0KHN0ck51bSkgKiBkWzFdO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG5cbiAgLy8gaWYgbm8gdHJhbnNmb3JtZXIgZm91bmQsIGNvbnZlcnQgdG8gbnViZXIgcmVnYXJkbGVzc1xuICByZXR1cm4gcmV0dXJuVmFsdWUgPT09IG51bGwgPyBOdW1iZXIoc3RyTnVtKSA6IHJldHVyblZhbHVlO1xufVxuXG4vKipcbiAqIEZvcm1hdCBlcG9jaCBtaWxsaXNlY29uZHMgd2l0aCBhIGZvcm1hdCBzdHJpbmdcbiAqIEB0eXBlIHRpbWV6b25lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRldGltZUZvcm1hdHRlcihcbiAgdGltZXpvbmU/OiBzdHJpbmcgfCBudWxsXG4pOiAoZm9ybWF0Pzogc3RyaW5nKSA9PiAodHM6IG51bWJlcikgPT4gc3RyaW5nIHtcbiAgcmV0dXJuIHRpbWV6b25lXG4gICAgPyBmb3JtYXQgPT4gdHMgPT4gbW9tZW50LnV0Yyh0cykudHoodGltZXpvbmUpLmZvcm1hdChmb3JtYXQpXG4gICAgOiAvLyByZXR1cm4gZW1wdHkgc3RyaW5nIGluc3RlYWQgb2YgJ0ludmFsaWQgZGF0ZScgaWYgdHMgaXMgdW5kZWZpbmVkL251bGxcbiAgICAgIGZvcm1hdCA9PiB0cyA9PiB0cyA/IG1vbWVudC51dGModHMpLmZvcm1hdChmb3JtYXQpIDogJyc7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsZUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFB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
|