@kepler.gl/reducers 3.3.0-alpha.13 → 3.3.0-alpha.15
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/cjs/map-state-updaters.js +54 -4
- package/dist/cjs/map-state.js +2 -2
- package/dist/cjs/ui-state-updaters.js +73 -29
- package/dist/cjs/ui-state.js +2 -2
- package/dist/cjs/vis-state-merger.js +74 -3
- package/dist/cjs/vis-state-updaters.js +487 -195
- package/dist/cjs/vis-state.js +2 -2
- package/dist/esm/map-state-updaters.js +53 -3
- package/dist/esm/map-state.js +2 -2
- package/dist/esm/ui-state-updaters.js +73 -29
- package/dist/esm/ui-state.js +2 -2
- package/dist/esm/vis-state-merger.js +72 -3
- package/dist/esm/vis-state-updaters.js +480 -192
- package/dist/esm/vis-state.js +2 -2
- package/dist/map-state-updaters.d.ts +1 -0
- package/dist/ui-state-updaters.d.ts +15 -1
- package/dist/vis-state-merger.d.ts +6 -2
- package/dist/vis-state-updaters.d.ts +42 -1
- package/dist/vis-state.d.ts +12 -0
- package/package.json +16 -16
package/dist/esm/map-state.js
CHANGED
|
@@ -13,7 +13,7 @@ import * as mapStateUpdaters from './map-state-updaters';
|
|
|
13
13
|
* Important: Do not rename `actionHandler` or the assignment pattern of property value.
|
|
14
14
|
* It is used to generate documentation
|
|
15
15
|
*/
|
|
16
|
-
var actionHandler = (_actionHandler = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_actionHandler, ActionTypes.UPDATE_MAP, mapStateUpdaters.updateMapUpdater), ActionTypes.FIT_BOUNDS, mapStateUpdaters.fitBoundsUpdater), ActionTypes.TOGGLE_PERSPECTIVE, mapStateUpdaters.togglePerspectiveUpdater), ActionTypes.RECEIVE_MAP_CONFIG, mapStateUpdaters.receiveMapConfigUpdater), ActionTypes.RESET_MAP_CONFIG, mapStateUpdaters.resetMapConfigUpdater), ActionTypes.TOGGLE_SPLIT_MAP, mapStateUpdaters.toggleSplitMapUpdater), ActionTypes.TOGGLE_SPLIT_MAP_VIEWPORT, mapStateUpdaters.toggleSplitMapViewportUpdater), ActionTypes.SET_MAP_VIEW_MODE, mapStateUpdaters.setMapViewModeUpdater), ActionTypes.GLOBE_CONFIG_CHANGE, mapStateUpdaters.globeConfigChangeUpdater), ActionTypes.SET_MAP_SPLIT_MODE, mapStateUpdaters.setMapSplitModeUpdater),
|
|
16
|
+
var actionHandler = (_actionHandler = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_actionHandler, ActionTypes.UPDATE_MAP, mapStateUpdaters.updateMapUpdater), ActionTypes.APPLY_MAP_STATE, mapStateUpdaters.applyMapStateUpdater), ActionTypes.FIT_BOUNDS, mapStateUpdaters.fitBoundsUpdater), ActionTypes.TOGGLE_PERSPECTIVE, mapStateUpdaters.togglePerspectiveUpdater), ActionTypes.RECEIVE_MAP_CONFIG, mapStateUpdaters.receiveMapConfigUpdater), ActionTypes.RESET_MAP_CONFIG, mapStateUpdaters.resetMapConfigUpdater), ActionTypes.TOGGLE_SPLIT_MAP, mapStateUpdaters.toggleSplitMapUpdater), ActionTypes.TOGGLE_SPLIT_MAP_VIEWPORT, mapStateUpdaters.toggleSplitMapViewportUpdater), ActionTypes.SET_MAP_VIEW_MODE, mapStateUpdaters.setMapViewModeUpdater), ActionTypes.GLOBE_CONFIG_CHANGE, mapStateUpdaters.globeConfigChangeUpdater), _defineProperty(_defineProperty(_actionHandler, ActionTypes.SET_MAP_SPLIT_MODE, mapStateUpdaters.setMapSplitModeUpdater), ActionTypes.SET_SWIPE_COMPARE_PERCENTAGE, mapStateUpdaters.setSwipeComparePercentageUpdater));
|
|
17
17
|
|
|
18
18
|
/* Reducer */
|
|
19
19
|
export var mapStateReducerFactory = function mapStateReducerFactory() {
|
|
@@ -26,4 +26,4 @@ export var mapStateReducerFactory = function mapStateReducerFactory() {
|
|
|
26
26
|
);
|
|
27
27
|
};
|
|
28
28
|
export default mapStateReducerFactory();
|
|
29
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJoYW5kbGVBY3Rpb25zIiwiQWN0aW9uVHlwZXMiLCJtYXBTdGF0ZVVwZGF0ZXJzIiwiYWN0aW9uSGFuZGxlciIsIl9hY3Rpb25IYW5kbGVyIiwiX2RlZmluZVByb3BlcnR5IiwiVVBEQVRFX01BUCIsInVwZGF0ZU1hcFVwZGF0ZXIiLCJBUFBMWV9NQVBfU1RBVEUiLCJhcHBseU1hcFN0YXRlVXBkYXRlciIsIkZJVF9CT1VORFMiLCJmaXRCb3VuZHNVcGRhdGVyIiwiVE9HR0xFX1BFUlNQRUNUSVZFIiwidG9nZ2xlUGVyc3BlY3RpdmVVcGRhdGVyIiwiUkVDRUlWRV9NQVBfQ09ORklHIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJSRVNFVF9NQVBfQ09ORklHIiwicmVzZXRNYXBDb25maWdVcGRhdGVyIiwiVE9HR0xFX1NQTElUX01BUCIsInRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsIlRPR0dMRV9TUExJVF9NQVBfVklFV1BPUlQiLCJ0b2dnbGVTcGxpdE1hcFZpZXdwb3J0VXBkYXRlciIsIlNFVF9NQVBfVklFV19NT0RFIiwic2V0TWFwVmlld01vZGVVcGRhdGVyIiwiR0xPQkVfQ09ORklHX0NIQU5HRSIsImdsb2JlQ29uZmlnQ2hhbmdlVXBkYXRlciIsIlNFVF9NQVBfU1BMSVRfTU9ERSIsInNldE1hcFNwbGl0TW9kZVVwZGF0ZXIiLCJTRVRfU1dJUEVfQ09NUEFSRV9QRVJDRU5UQUdFIiwic2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZVVwZGF0ZXIiLCJtYXBTdGF0ZVJlZHVjZXJGYWN0b3J5IiwiaW5pdGlhbFN0YXRlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiX29iamVjdFNwcmVhZCIsIklOSVRJQUxfTUFQX1NUQVRFIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC1zdGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2hhbmRsZUFjdGlvbnN9IGZyb20gJ3JlZHV4LWFjdGlvbnMnO1xuaW1wb3J0IHtBY3Rpb25UeXBlc30gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCAqIGFzIG1hcFN0YXRlVXBkYXRlcnMgZnJvbSAnLi9tYXAtc3RhdGUtdXBkYXRlcnMnO1xuXG4vKipcbiAqIEltcG9ydGFudDogRG8gbm90IHJlbmFtZSBgYWN0aW9uSGFuZGxlcmAgb3IgdGhlIGFzc2lnbm1lbnQgcGF0dGVybiBvZiBwcm9wZXJ0eSB2YWx1ZS5cbiAqIEl0IGlzIHVzZWQgdG8gZ2VuZXJhdGUgZG9jdW1lbnRhdGlvblxuICovXG5jb25zdCBhY3Rpb25IYW5kbGVyID0ge1xuICBbQWN0aW9uVHlwZXMuVVBEQVRFX01BUF06IG1hcFN0YXRlVXBkYXRlcnMudXBkYXRlTWFwVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLkFQUExZX01BUF9TVEFURV06IG1hcFN0YXRlVXBkYXRlcnMuYXBwbHlNYXBTdGF0ZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5GSVRfQk9VTkRTXTogbWFwU3RhdGVVcGRhdGVycy5maXRCb3VuZHNVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX1BFUlNQRUNUSVZFXTogbWFwU3RhdGVVcGRhdGVycy50b2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5SRUNFSVZFX01BUF9DT05GSUddOiBtYXBTdGF0ZVVwZGF0ZXJzLnJlY2VpdmVNYXBDb25maWdVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuUkVTRVRfTUFQX0NPTkZJR106IG1hcFN0YXRlVXBkYXRlcnMucmVzZXRNYXBDb25maWdVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX1NQTElUX01BUF06IG1hcFN0YXRlVXBkYXRlcnMudG9nZ2xlU3BsaXRNYXBVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX1NQTElUX01BUF9WSUVXUE9SVF06IG1hcFN0YXRlVXBkYXRlcnMudG9nZ2xlU3BsaXRNYXBWaWV3cG9ydFVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5TRVRfTUFQX1ZJRVdfTU9ERV06IG1hcFN0YXRlVXBkYXRlcnMuc2V0TWFwVmlld01vZGVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuR0xPQkVfQ09ORklHX0NIQU5HRV06IG1hcFN0YXRlVXBkYXRlcnMuZ2xvYmVDb25maWdDaGFuZ2VVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuU0VUX01BUF9TUExJVF9NT0RFXTogbWFwU3RhdGVVcGRhdGVycy5zZXRNYXBTcGxpdE1vZGVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuU0VUX1NXSVBFX0NPTVBBUkVfUEVSQ0VOVEFHRV06IG1hcFN0YXRlVXBkYXRlcnMuc2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZVVwZGF0ZXJcbn07XG5cbi8qIFJlZHVjZXIgKi9cbmV4cG9ydCBjb25zdCBtYXBTdGF0ZVJlZHVjZXJGYWN0b3J5ID0gKGluaXRpYWxTdGF0ZSA9IHt9KSA9PlxuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGhhbmRsZUFjdGlvbnMoYWN0aW9uSGFuZGxlciwge1xuICAgIC4uLm1hcFN0YXRlVXBkYXRlcnMuSU5JVElBTF9NQVBfU1RBVEUsXG4gICAgLi4uaW5pdGlhbFN0YXRlLFxuICAgIGluaXRpYWxTdGF0ZVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgbWFwU3RhdGVSZWR1Y2VyRmFjdG9yeSgpO1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTs7QUFFQSxTQUFRQSxhQUFhLFFBQU8sZUFBZTtBQUMzQyxTQUFRQyxXQUFXLFFBQU8sb0JBQW9CO0FBQzlDLE9BQU8sS0FBS0MsZ0JBQWdCLE1BQU0sc0JBQXNCOztBQUV4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLGFBQWEsSUFBQUMsY0FBQSxPQUFBQyxlQUFBLENBQUFBLGVBQUEsQ0FBQUEsZUFBQSxDQUFBQSxlQUFBLENBQUFBLGVBQUEsQ0FBQUEsZUFBQSxDQUFBQSxlQUFBLENBQUFBLGVBQUEsQ0FBQUEsZUFBQSxDQUFBQSxlQUFBLENBQUFELGNBQUEsRUFDaEJILFdBQVcsQ0FBQ0ssVUFBVSxFQUFHSixnQkFBZ0IsQ0FBQ0ssZ0JBQWdCLEdBQzFETixXQUFXLENBQUNPLGVBQWUsRUFBR04sZ0JBQWdCLENBQUNPLG9CQUFvQixHQUNuRVIsV0FBVyxDQUFDUyxVQUFVLEVBQUdSLGdCQUFnQixDQUFDUyxnQkFBZ0IsR0FDMURWLFdBQVcsQ0FBQ1csa0JBQWtCLEVBQUdWLGdCQUFnQixDQUFDVyx3QkFBd0IsR0FDMUVaLFdBQVcsQ0FBQ2Esa0JBQWtCLEVBQUdaLGdCQUFnQixDQUFDYSx1QkFBdUIsR0FDekVkLFdBQVcsQ0FBQ2UsZ0JBQWdCLEVBQUdkLGdCQUFnQixDQUFDZSxxQkFBcUIsR0FDckVoQixXQUFXLENBQUNpQixnQkFBZ0IsRUFBR2hCLGdCQUFnQixDQUFDaUIscUJBQXFCLEdBQ3JFbEIsV0FBVyxDQUFDbUIseUJBQXlCLEVBQUdsQixnQkFBZ0IsQ0FBQ21CLDZCQUE2QixHQUN0RnBCLFdBQVcsQ0FBQ3FCLGlCQUFpQixFQUFHcEIsZ0JBQWdCLENBQUNxQixxQkFBcUIsR0FDdEV0QixXQUFXLENBQUN1QixtQkFBbUIsRUFBR3RCLGdCQUFnQixDQUFDdUIsd0JBQXdCLEdBQUFwQixlQUFBLENBQUFBLGVBQUEsQ0FBQUQsY0FBQSxFQUMzRUgsV0FBVyxDQUFDeUIsa0JBQWtCLEVBQUd4QixnQkFBZ0IsQ0FBQ3lCLHNCQUFzQixHQUN4RTFCLFdBQVcsQ0FBQzJCLDRCQUE0QixFQUFHMUIsZ0JBQWdCLENBQUMyQixnQ0FBZ0MsRUFDOUY7O0FBRUQ7QUFDQSxPQUFPLElBQU1DLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUE7RUFBQSxJQUFJQyxZQUFZLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLENBQUMsQ0FBQztFQUFBO0lBQ3REO0lBQ0FoQyxhQUFhLENBQUNHLGFBQWEsRUFBQWdDLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLEtBQ3RCakMsZ0JBQWdCLENBQUNrQyxpQkFBaUIsR0FDbENMLFlBQVk7TUFDZkEsWUFBWSxFQUFaQTtJQUFZLEVBQ2I7RUFBQztBQUFBO0FBRUosZUFBZUQsc0JBQXNCLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -7,7 +7,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
7
7
|
|
|
8
8
|
import { ADD_DATA_ID, DATA_TABLE_ID, DEFAULT_NOTIFICATION_TOPICS, DELETE_DATA_ID, EXPORT_DATA_TYPE, EXPORT_HTML_MAP_MODES, EXPORT_IMG_RATIOS, EXPORT_MAP_FORMATS, RESOLUTIONS, MAP_CONTROLS, THEME } from '@kepler.gl/constants';
|
|
9
9
|
import { LOCALE_CODES } from '@kepler.gl/localization';
|
|
10
|
-
import { createNotification, errorNotification, calculateExportImageSize, getApplicationConfig } from '@kepler.gl/utils';
|
|
10
|
+
import { createNotification, errorNotification, calculateExportImageSize, getApplicationConfig, getConfiguredThemes, getDefaultUiTheme } from '@kepler.gl/utils';
|
|
11
11
|
import { payload_, apply_, compose_ } from './composer-helpers';
|
|
12
12
|
export var DEFAULT_ACTIVE_SIDE_PANEL = 'layer';
|
|
13
13
|
export var DEFAULT_MODAL = ADD_DATA_ID;
|
|
@@ -74,6 +74,7 @@ var DEFAULT_MAP_LEGEND_CONTROL = _objectSpread(_objectSpread({}, DEFAULT_MAP_CON
|
|
|
74
74
|
* @property mapDraw Default: `{show: true, active: false}`
|
|
75
75
|
* @property mapLocale Default: `{show: true, active: false}`
|
|
76
76
|
* @property mapTheme Default: `{show: true, active: false}`
|
|
77
|
+
* @property viewportJson Default: `{show: true, active: false}`
|
|
77
78
|
* @public
|
|
78
79
|
*/
|
|
79
80
|
export var DEFAULT_MAP_CONTROLS = Object.keys(MAP_CONTROLS).reduce(function (_final, current) {
|
|
@@ -87,6 +88,7 @@ export var DEFAULT_MAP_CONTROLS = Object.keys(MAP_CONTROLS).reduce(function (_fi
|
|
|
87
88
|
* @property ratio Default: `'SCREEN'`,
|
|
88
89
|
* @property resolution Default: `'ONE_X'`,
|
|
89
90
|
* @property legend Default: `false`,
|
|
91
|
+
* @property charts Default: `false`,
|
|
90
92
|
* @property mapH Default: 0,
|
|
91
93
|
* @property mapW Default: 0,
|
|
92
94
|
* @property imageSize Default: {zoomOffset: 0, scale: 1, imageW: 0, imageH: 0},
|
|
@@ -94,6 +96,7 @@ export var DEFAULT_MAP_CONTROLS = Object.keys(MAP_CONTROLS).reduce(function (_fi
|
|
|
94
96
|
* @property exporting Default: `false`
|
|
95
97
|
* @property error Default: `false`
|
|
96
98
|
* @property escapeXhtmlForWebpack Default: from application config (auto-detected: `true` for webpack)
|
|
99
|
+
* @property fileName Default: `''`
|
|
97
100
|
* @public
|
|
98
101
|
*/
|
|
99
102
|
export var DEFAULT_EXPORT_IMAGE = {
|
|
@@ -101,6 +104,7 @@ export var DEFAULT_EXPORT_IMAGE = {
|
|
|
101
104
|
ratio: EXPORT_IMG_RATIOS.SCREEN,
|
|
102
105
|
resolution: RESOLUTIONS.ONE_X,
|
|
103
106
|
legend: false,
|
|
107
|
+
charts: false,
|
|
104
108
|
mapH: 0,
|
|
105
109
|
mapW: 0,
|
|
106
110
|
imageSize: {
|
|
@@ -119,7 +123,8 @@ export var DEFAULT_EXPORT_IMAGE = {
|
|
|
119
123
|
processing: false,
|
|
120
124
|
error: false,
|
|
121
125
|
// whether to apply fix for uglify error in dom-to-image (from application config, auto-detects build tool)
|
|
122
|
-
escapeXhtmlForWebpack: getApplicationConfig().escapeXhtmlForWebpack
|
|
126
|
+
escapeXhtmlForWebpack: getApplicationConfig().escapeXhtmlForWebpack,
|
|
127
|
+
fileName: ''
|
|
123
128
|
};
|
|
124
129
|
export var DEFAULT_LOAD_FILES = {
|
|
125
130
|
fileLoading: false
|
|
@@ -173,9 +178,10 @@ export var DEFAULT_EXPORT_JSON = {
|
|
|
173
178
|
* @property HTML - Default: 'DEFAULT_EXPORT_HTML',
|
|
174
179
|
* @property JSON - Default: 'DEFAULT_EXPORT_JSON',
|
|
175
180
|
* @property format - Default: 'HTML',
|
|
181
|
+
* @property fileName Default: `''`,
|
|
176
182
|
* @public
|
|
177
183
|
*/
|
|
178
|
-
export var DEFAULT_EXPORT_MAP = _defineProperty(_defineProperty(_defineProperty({}, EXPORT_MAP_FORMATS.HTML, DEFAULT_EXPORT_HTML), EXPORT_MAP_FORMATS.JSON, DEFAULT_EXPORT_JSON), "format", EXPORT_MAP_FORMATS.HTML);
|
|
184
|
+
export var DEFAULT_EXPORT_MAP = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, EXPORT_MAP_FORMATS.HTML, DEFAULT_EXPORT_HTML), EXPORT_MAP_FORMATS.JSON, DEFAULT_EXPORT_JSON), "format", EXPORT_MAP_FORMATS.HTML), "fileName", '');
|
|
179
185
|
|
|
180
186
|
/**
|
|
181
187
|
* Default initial `exportVideo` settings
|
|
@@ -243,7 +249,7 @@ export var INITIAL_UI_STATE = {
|
|
|
243
249
|
loadFiles: DEFAULT_LOAD_FILES,
|
|
244
250
|
// Locale of the UI
|
|
245
251
|
locale: LOCALE_CODES.en,
|
|
246
|
-
// Theme of the UI (
|
|
252
|
+
// Theme of the UI (`light` | `dark` | `space`). First of `themes` is the default when set.
|
|
247
253
|
theme: THEME.dark,
|
|
248
254
|
layerPanelListView: 'list',
|
|
249
255
|
filterPanelListView: 'list',
|
|
@@ -255,7 +261,14 @@ export var INITIAL_UI_STATE = {
|
|
|
255
261
|
* @memberof uiStateUpdaters
|
|
256
262
|
*/
|
|
257
263
|
export var initUiStateUpdater = function initUiStateUpdater(state, action) {
|
|
258
|
-
|
|
264
|
+
var _initialUiState$theme;
|
|
265
|
+
var initialUiState = (action.payload || {}).initialUiState || {};
|
|
266
|
+
var themes = getConfiguredThemes();
|
|
267
|
+
var requested = (_initialUiState$theme = initialUiState.theme) !== null && _initialUiState$theme !== void 0 ? _initialUiState$theme : state.theme;
|
|
268
|
+
var theme = themes.length === 0 ? requested : themes.includes(requested) ? requested : getDefaultUiTheme();
|
|
269
|
+
return _objectSpread(_objectSpread(_objectSpread({}, state), initialUiState), {}, {
|
|
270
|
+
theme: theme
|
|
271
|
+
});
|
|
259
272
|
};
|
|
260
273
|
|
|
261
274
|
/**
|
|
@@ -450,7 +463,7 @@ export var openDeleteModalUpdater = function openDeleteModalUpdater(state, _ref8
|
|
|
450
463
|
};
|
|
451
464
|
|
|
452
465
|
/**
|
|
453
|
-
* Set `exportImage
|
|
466
|
+
* Set `exportImage` options such as `legend` and `charts` to `true` or `false`
|
|
454
467
|
* @memberof uiStateUpdaters
|
|
455
468
|
* @param state `uiState`
|
|
456
469
|
* @returns nextState
|
|
@@ -656,6 +669,24 @@ export var setExportMapFormatUpdater = function setExportMapFormatUpdater(state,
|
|
|
656
669
|
});
|
|
657
670
|
};
|
|
658
671
|
|
|
672
|
+
/**
|
|
673
|
+
* Set the filename used when exporting an HTML or JSON map
|
|
674
|
+
* @memberof uiStateUpdaters
|
|
675
|
+
* @param state `uiState`
|
|
676
|
+
* @param action
|
|
677
|
+
* @param action.payload file name without extension
|
|
678
|
+
* @returns nextState
|
|
679
|
+
* @public
|
|
680
|
+
*/
|
|
681
|
+
export var setExportMapFileNameUpdater = function setExportMapFileNameUpdater(state, _ref17) {
|
|
682
|
+
var fileName = _ref17.payload;
|
|
683
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
684
|
+
exportMap: _objectSpread(_objectSpread({}, state.exportMap), {}, {
|
|
685
|
+
fileName: fileName
|
|
686
|
+
})
|
|
687
|
+
});
|
|
688
|
+
};
|
|
689
|
+
|
|
659
690
|
/**
|
|
660
691
|
* Set the export html map mode
|
|
661
692
|
* @param state - `uiState`
|
|
@@ -663,8 +694,8 @@ export var setExportMapFormatUpdater = function setExportMapFormatUpdater(state,
|
|
|
663
694
|
* @param action.payload to be set (available modes: EXPORT_HTML_MAP_MODES)
|
|
664
695
|
* @return nextState
|
|
665
696
|
*/
|
|
666
|
-
export var setExportMapHTMLModeUpdater = function setExportMapHTMLModeUpdater(state,
|
|
667
|
-
var mode =
|
|
697
|
+
export var setExportMapHTMLModeUpdater = function setExportMapHTMLModeUpdater(state, _ref18) {
|
|
698
|
+
var mode = _ref18.payload;
|
|
668
699
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
669
700
|
exportMap: _objectSpread(_objectSpread({}, state.exportMap), {}, _defineProperty({}, EXPORT_MAP_FORMATS.HTML, _objectSpread(_objectSpread({}, state.exportMap[EXPORT_MAP_FORMATS.HTML]), {}, {
|
|
670
701
|
mode: mode
|
|
@@ -682,8 +713,8 @@ export var setExportMapHTMLModeUpdater = function setExportMapHTMLModeUpdater(st
|
|
|
682
713
|
* @returns nextState
|
|
683
714
|
* @public
|
|
684
715
|
*/
|
|
685
|
-
export var addNotificationUpdater = function addNotificationUpdater(state,
|
|
686
|
-
var payload =
|
|
716
|
+
export var addNotificationUpdater = function addNotificationUpdater(state, _ref19) {
|
|
717
|
+
var payload = _ref19.payload;
|
|
687
718
|
var oldNotifications = state.notifications || [];
|
|
688
719
|
// @ts-expect-error
|
|
689
720
|
var payloadId = payload === null || payload === void 0 ? void 0 : payload.id;
|
|
@@ -714,8 +745,8 @@ export var addNotificationUpdater = function addNotificationUpdater(state, _ref1
|
|
|
714
745
|
* @returns nextState
|
|
715
746
|
* @public
|
|
716
747
|
*/
|
|
717
|
-
export var removeNotificationUpdater = function removeNotificationUpdater(state,
|
|
718
|
-
var id =
|
|
748
|
+
export var removeNotificationUpdater = function removeNotificationUpdater(state, _ref20) {
|
|
749
|
+
var id = _ref20.payload;
|
|
719
750
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
720
751
|
notifications: state.notifications.filter(function (n) {
|
|
721
752
|
return n.id !== id;
|
|
@@ -761,8 +792,8 @@ export var loadFilesSuccessUpdater = function loadFilesSuccessUpdater(state) {
|
|
|
761
792
|
* @returns nextState
|
|
762
793
|
* @public
|
|
763
794
|
*/
|
|
764
|
-
export var loadFilesErrUpdater = function loadFilesErrUpdater(state,
|
|
765
|
-
var error =
|
|
795
|
+
export var loadFilesErrUpdater = function loadFilesErrUpdater(state, _ref21) {
|
|
796
|
+
var error = _ref21.error;
|
|
766
797
|
return addNotificationUpdater(_objectSpread(_objectSpread({}, state), {}, {
|
|
767
798
|
loadFiles: _objectSpread(_objectSpread({}, state.loadFiles), {}, {
|
|
768
799
|
fileLoading: false
|
|
@@ -815,8 +846,8 @@ export var showDatasetTableUpdater = function showDatasetTableUpdater(state) {
|
|
|
815
846
|
* @returns nextState
|
|
816
847
|
* @public
|
|
817
848
|
*/
|
|
818
|
-
export var setLocaleUpdater = function setLocaleUpdater(state,
|
|
819
|
-
var locale =
|
|
849
|
+
export var setLocaleUpdater = function setLocaleUpdater(state, _ref22) {
|
|
850
|
+
var locale = _ref22.payload.locale;
|
|
820
851
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
821
852
|
locale: locale
|
|
822
853
|
});
|
|
@@ -832,8 +863,8 @@ export var setLocaleUpdater = function setLocaleUpdater(state, _ref21) {
|
|
|
832
863
|
* @returns nextState
|
|
833
864
|
* @public
|
|
834
865
|
*/
|
|
835
|
-
export var setThemeUpdater = function setThemeUpdater(state,
|
|
836
|
-
var theme =
|
|
866
|
+
export var setThemeUpdater = function setThemeUpdater(state, _ref23) {
|
|
867
|
+
var theme = _ref23.payload.theme;
|
|
837
868
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
838
869
|
theme: theme
|
|
839
870
|
});
|
|
@@ -848,10 +879,10 @@ export var setThemeUpdater = function setThemeUpdater(state, _ref22) {
|
|
|
848
879
|
* @returns nextState
|
|
849
880
|
* @public
|
|
850
881
|
*/
|
|
851
|
-
export var togglePanelListViewUpdater = function togglePanelListViewUpdater(state,
|
|
852
|
-
var
|
|
853
|
-
panelId =
|
|
854
|
-
listView =
|
|
882
|
+
export var togglePanelListViewUpdater = function togglePanelListViewUpdater(state, _ref24) {
|
|
883
|
+
var _ref24$payload = _ref24.payload,
|
|
884
|
+
panelId = _ref24$payload.panelId,
|
|
885
|
+
listView = _ref24$payload.listView;
|
|
855
886
|
var stateProp = panelId === 'layer' ? 'layerPanelListView' : panelId === 'filter' ? 'filterPanelListView' : null;
|
|
856
887
|
if (!stateProp || state[stateProp] === listView) {
|
|
857
888
|
return state;
|
|
@@ -868,11 +899,11 @@ export var togglePanelListViewUpdater = function togglePanelListViewUpdater(stat
|
|
|
868
899
|
* @returns nextState
|
|
869
900
|
* @public
|
|
870
901
|
*/
|
|
871
|
-
export var receiveMapConfigUpdater = function receiveMapConfigUpdater(state,
|
|
872
|
-
var _uiState$mapControls, _uiState$mapControls2;
|
|
873
|
-
var config =
|
|
874
|
-
var
|
|
875
|
-
uiState =
|
|
902
|
+
export var receiveMapConfigUpdater = function receiveMapConfigUpdater(state, _ref25) {
|
|
903
|
+
var _uiState$mapControls, _uiState$mapControls2, _uiState$mapControls3;
|
|
904
|
+
var config = _ref25.payload.config;
|
|
905
|
+
var _ref26 = config || {},
|
|
906
|
+
uiState = _ref26.uiState;
|
|
876
907
|
if (!uiState) {
|
|
877
908
|
return state;
|
|
878
909
|
}
|
|
@@ -890,7 +921,20 @@ export var receiveMapConfigUpdater = function receiveMapConfigUpdater(state, _re
|
|
|
890
921
|
})
|
|
891
922
|
});
|
|
892
923
|
}
|
|
893
|
-
if ((_uiState$mapControls2 = uiState.mapControls) !== null && _uiState$mapControls2 !== void 0 && (_uiState$mapControls2 = _uiState$mapControls2.
|
|
924
|
+
if ((_uiState$mapControls2 = uiState.mapControls) !== null && _uiState$mapControls2 !== void 0 && (_uiState$mapControls2 = _uiState$mapControls2.chart) !== null && _uiState$mapControls2 !== void 0 && _uiState$mapControls2.active) {
|
|
925
|
+
var currentChart = newState.mapControls.chart;
|
|
926
|
+
newState = _objectSpread(_objectSpread({}, newState), {}, {
|
|
927
|
+
mapControls: _objectSpread(_objectSpread({}, newState.mapControls), {}, {
|
|
928
|
+
chart: _objectSpread(_objectSpread({
|
|
929
|
+
show: true
|
|
930
|
+
}, currentChart), {}, {
|
|
931
|
+
active: true,
|
|
932
|
+
activeMapIndex: 0
|
|
933
|
+
})
|
|
934
|
+
})
|
|
935
|
+
});
|
|
936
|
+
}
|
|
937
|
+
if ((_uiState$mapControls3 = uiState.mapControls) !== null && _uiState$mapControls3 !== void 0 && (_uiState$mapControls3 = _uiState$mapControls3.mapLegend) !== null && _uiState$mapControls3 !== void 0 && _uiState$mapControls3.settings) {
|
|
894
938
|
newState = setMapControlSettingsUpdater(newState, {
|
|
895
939
|
payload: {
|
|
896
940
|
panelId: 'mapLegend',
|
|
@@ -914,4 +958,4 @@ export var receiveMapConfigUpdater = function receiveMapConfigUpdater(state, _re
|
|
|
914
958
|
}
|
|
915
959
|
return newState;
|
|
916
960
|
};
|
|
917
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBRERfREFUQV9JRCIsIkRBVEFfVEFCTEVfSUQiLCJERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MiLCJERUxFVEVfREFUQV9JRCIsIkVYUE9SVF9EQVRBX1RZUEUiLCJFWFBPUlRfSFRNTF9NQVBfTU9ERVMiLCJFWFBPUlRfSU1HX1JBVElPUyIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIlJFU09MVVRJT05TIiwiTUFQX0NPTlRST0xTIiwiVEhFTUUiLCJMT0NBTEVfQ09ERVMiLCJjcmVhdGVOb3RpZmljYXRpb24iLCJlcnJvck5vdGlmaWNhdGlvbiIsImNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwicGF5bG9hZF8iLCJhcHBseV8iLCJjb21wb3NlXyIsIkRFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwiLCJERUZBVUxUX01PREFMIiwidWlTdGF0ZVVwZGF0ZXJzIiwiREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVMiLCJzaG93IiwiYWN0aXZlIiwiZGlzYWJsZUNsb3NlIiwiYWN0aXZlTWFwSW5kZXgiLCJERUZBVUxUX01BUF9MRUdFTkRfQ09OVFJPTCIsIl9vYmplY3RTcHJlYWQiLCJkaXNhYmxlRWRpdCIsIkRFRkFVTFRfTUFQX0NPTlRST0xTIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImZpbmFsIiwiY3VycmVudCIsIl9kZWZpbmVQcm9wZXJ0eSIsIm1hcExlZ2VuZCIsIkRFRkFVTFRfRVhQT1JUX0lNQUdFIiwicmF0aW8iLCJTQ1JFRU4iLCJyZXNvbHV0aW9uIiwiT05FX1giLCJsZWdlbmQiLCJtYXBIIiwibWFwVyIsImltYWdlU2l6ZSIsInpvb21PZmZzZXQiLCJzY2FsZSIsImltYWdlVyIsImltYWdlSCIsImNlbnRlciIsImltYWdlRGF0YVVyaSIsImV4cG9ydGluZyIsInByb2Nlc3NpbmciLCJlcnJvciIsImVzY2FwZVhodG1sRm9yV2VicGFjayIsIkRFRkFVTFRfTE9BRF9GSUxFUyIsImZpbGVMb2FkaW5nIiwiREVGQVVMVF9FWFBPUlRfREFUQSIsInNlbGVjdGVkRGF0YXNldCIsImRhdGFUeXBlIiwiQ1NWIiwiZmlsdGVyZWQiLCJERUZBVUxUX05PVElGSUNBVElPTlMiLCJERUZBVUxUX0VYUE9SVF9IVE1MIiwiZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4iLCJ1c2VyTWFwYm94VG9rZW4iLCJtb2RlIiwiUkVBRCIsIkRFRkFVTFRfRVhQT1JUX0pTT04iLCJoYXNEYXRhIiwiREVGQVVMVF9FWFBPUlRfTUFQIiwiSFRNTCIsIkpTT04iLCJERUZBVUxUX0VYUE9SVF9WSURFTyIsIm1lZGlhVHlwZSIsImNhbWVyYVByZXNldCIsImZpbGVOYW1lIiwiZHVyYXRpb25NcyIsInN3aXBlU3RhcnRQY3QiLCJzd2lwZUVuZFBjdCIsInN3aXBlRWFzaW5nIiwiSU5JVElBTF9VSV9TVEFURSIsInJlYWRPbmx5IiwiYWN0aXZlU2lkZVBhbmVsIiwiY3VycmVudE1vZGFsIiwiZGF0YXNldEtleVRvUmVtb3ZlIiwidmlzaWJsZURyb3Bkb3duIiwiZXhwb3J0SW1hZ2UiLCJleHBvcnREYXRhIiwiZXhwb3J0TWFwIiwiZXhwb3J0VmlkZW8iLCJtYXBDb250cm9scyIsIm5vdGlmaWNhdGlvbnMiLCJsb2FkRmlsZXMiLCJsb2NhbGUiLCJlbiIsInRoZW1lIiwiZGFyayIsImxheWVyUGFuZWxMaXN0VmlldyIsImZpbHRlclBhbmVsTGlzdFZpZXciLCJpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZSIsImluaXRVaVN0YXRlVXBkYXRlciIsInN0YXRlIiwiYWN0aW9uIiwicGF5bG9hZCIsImluaXRpYWxVaVN0YXRlIiwidG9nZ2xlU2lkZVBhbmVsVXBkYXRlciIsIl9yZWYiLCJpZCIsInRvZ2dsZU1vZGFsVXBkYXRlciIsIl9yZWYyIiwic2hvd0V4cG9ydERyb3Bkb3duVXBkYXRlciIsIl9yZWYzIiwiaGlkZUV4cG9ydERyb3Bkb3duVXBkYXRlciIsInRvZ2dsZVNpZGVQYW5lbENsb3NlQnV0dG9uVXBkYXRlciIsIl9yZWY0IiwiTVVUVUFMTFlfRVhDTFVTSVZFX01BUF9DT05UUk9MUyIsInNwbGl0TWFwIiwidG9nZ2xlM2QiLCJtYXBEcmF3IiwibWFwTG9jYWxlIiwidG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIiLCJfcmVmNSIsIl91cGRhdGVkU3RhdGUkbWFwQ29udCIsIl91cGRhdGVkU3RhdGUkbWFwQ29udDIiLCJfcmVmNSRwYXlsb2FkIiwicGFuZWxJZCIsIl9yZWY1JHBheWxvYWQkaW5kZXgiLCJpbmRleCIsInVwZGF0ZWRTdGF0ZSIsImlzT3BlbmluZyIsImluY2x1ZGVzIiwibmV4dE1hcENvbnRyb2xzIiwiZGlkRGVhY3RpdmF0ZSIsImZvckVhY2giLCJjb250cm9sSWQiLCJfbmV4dE1hcENvbnRyb2xzJGNvbnQiLCJzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXIiLCJfcmVmNiIsIl9zdGF0ZSRtYXBDb250cm9scyIsIl9yZWY2JHBheWxvYWQiLCJCb29sZWFuIiwic2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlciIsIl9yZWY3IiwiX3N0YXRlJG1hcENvbnRyb2xzMiIsIl9yZWY3JHBheWxvYWQiLCJzZXR0aW5ncyIsIm1hcENvbnRyb2wiLCJvcGVuRGVsZXRlTW9kYWxVcGRhdGVyIiwiX3JlZjgiLCJzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyIiwiX3JlZjkiLCJuZXdTZXR0aW5nIiwidXBkYXRlZCIsInNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXIiLCJfcmVmMCIsImRhdGFVcmkiLCJzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciIsIl9yZWYxIiwiY2xlYW51cEV4cG9ydEltYWdlVXBkYXRlciIsInNldEV4cG9ydFZpZGVvU2V0dGluZ1VwZGF0ZXIiLCJfcmVmMTAiLCJzdGFydEV4cG9ydGluZ0ltYWdlVXBkYXRlciIsIl9yZWYxMSIsIl9yZWYxMSRwYXlsb2FkIiwib3B0aW9ucyIsImltYWdlU2V0dGluZ3MiLCJzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyIiwiX3JlZjEyIiwiZGF0YXNldCIsInNldEV4cG9ydERhdGFUeXBlVXBkYXRlciIsIl9yZWYxMyIsInNldEV4cG9ydEZpbHRlcmVkVXBkYXRlciIsIl9yZWYxNCIsInNldEV4cG9ydERhdGFVcGRhdGVyIiwic2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlciIsIl9yZWYxNSIsInNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXIiLCJfcmVmMTYiLCJmb3JtYXQiLCJzZXRFeHBvcnRNYXBIVE1MTW9kZVVwZGF0ZXIiLCJfcmVmMTciLCJhZGROb3RpZmljYXRpb25VcGRhdGVyIiwiX3JlZjE4Iiwib2xkTm90aWZpY2F0aW9ucyIsInBheWxvYWRJZCIsIm5vdGlmaWNhdGlvblRvVXBkYXRlIiwiZmluZCIsIm4iLCJtYXAiLCJjb3VudCIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsInJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXIiLCJfcmVmMTkiLCJmaWx0ZXIiLCJsb2FkRmlsZXNVcGRhdGVyIiwibG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIiLCJsb2FkRmlsZXNFcnJVcGRhdGVyIiwiX3JlZjIwIiwibWVzc2FnZSIsInRvcGljIiwiZ2xvYmFsIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwiZW50cmllcyIsImFjYyIsImVudHJ5Iiwic2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXIiLCJzZXRMb2NhbGVVcGRhdGVyIiwiX3JlZjIxIiwic2V0VGhlbWVVcGRhdGVyIiwiX3JlZjIyIiwidG9nZ2xlUGFuZWxMaXN0Vmlld1VwZGF0ZXIiLCJfcmVmMjMiLCJfcmVmMjMkcGF5bG9hZCIsImxpc3RWaWV3Iiwic3RhdGVQcm9wIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJfcmVmMjQiLCJfdWlTdGF0ZSRtYXBDb250cm9scyIsIl91aVN0YXRlJG1hcENvbnRyb2xzMiIsImNvbmZpZyIsIl9yZWYyNSIsInVpU3RhdGUiLCJuZXdTdGF0ZSIsImN1cnJlbnRMZWdlbmQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdWktc3RhdGUtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtcbiAgQUREX0RBVEFfSUQsXG4gIERBVEFfVEFCTEVfSUQsXG4gIERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUyxcbiAgREVMRVRFX0RBVEFfSUQsXG4gIEVYUE9SVF9EQVRBX1RZUEUsXG4gIEVYUE9SVF9IVE1MX01BUF9NT0RFUyxcbiAgRVhQT1JUX0lNR19SQVRJT1MsXG4gIEVYUE9SVF9NQVBfRk9STUFUUyxcbiAgUkVTT0xVVElPTlMsXG4gIE1BUF9DT05UUk9MUyxcbiAgVEhFTUVcbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtMT0NBTEVfQ09ERVN9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7XG4gIGNyZWF0ZU5vdGlmaWNhdGlvbixcbiAgZXJyb3JOb3RpZmljYXRpb24sXG4gIGNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSxcbiAgZ2V0QXBwbGljYXRpb25Db25maWdcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge3BheWxvYWRfLCBhcHBseV8sIGNvbXBvc2VffSBmcm9tICcuL2NvbXBvc2VyLWhlbHBlcnMnO1xuXG5pbXBvcnQge1xuICBBY3Rpb25UeXBlcyxcbiAgS2VwbGVyR2xJbml0UGF5bG9hZCxcbiAgTG9hZEZpbGVzRXJyVXBkYXRlckFjdGlvbixcbiAgUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQsXG4gIFVJU3RhdGVBY3Rpb25zXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge1xuICBFeHBvcnREYXRhLFxuICBFeHBvcnRIdG1sLFxuICBFeHBvcnRKc29uLFxuICBFeHBvcnRNYXAsXG4gIEV4cG9ydEltYWdlLFxuICBFeHBvcnRWaWRlbyxcbiAgTWFwQ29udHJvbEl0ZW0sXG4gIE1hcENvbnRyb2xNYXBMZWdlbmQsXG4gIE1hcENvbnRyb2xzLFxuICBVaVN0YXRlXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BQ1RJVkVfU0lERV9QQU5FTCA9ICdsYXllcic7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NT0RBTCA9IEFERF9EQVRBX0lEO1xuXG4vKipcbiAqIFVwZGF0ZXJzIGZvciBgdWlTdGF0ZWAgcmVkdWNlci4gQ2FuIGJlIHVzZWQgaW4geW91ciByb290IHJlZHVjZXIgdG8gZGlyZWN0bHkgbW9kaWZ5IGtlcGxlci5nbCdzIHN0YXRlLlxuICogUmVhZCBtb3JlIGFib3V0IFtVc2luZyB1cGRhdGVyc10oLi4vYWR2YW5jZWQtdXNhZ2UvdXNpbmctdXBkYXRlcnMubWQpXG4gKlxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7dWlTdGF0ZVVwZGF0ZXJzfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbiAqIC8vIFJvb3QgUmVkdWNlclxuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogIGtlcGxlckdsOiBrZXBsZXJHbFJlZHVjZXIsXG4gKiAgYXBwOiBhcHBSZWR1Y2VyXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBjb21wb3NlZFJlZHVjZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICogIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAqICAgIC8vIGNsaWNrIGJ1dHRvbiB0byBjbG9zZSBzaWRlIHBhbmVsXG4gKiAgICBjYXNlICdDTElDS19CVVRUT04nOlxuICogICAgICByZXR1cm4ge1xuICogICAgICAgIC4uLnN0YXRlLFxuICogICAgICAgIGtlcGxlckdsOiB7XG4gKiAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbCxcbiAqICAgICAgICAgIGZvbzoge1xuICogICAgICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wuZm9vLFxuICogICAgICAgICAgICAgdWlTdGF0ZTogdWlTdGF0ZVVwZGF0ZXJzLnRvZ2dsZVNpZGVQYW5lbFVwZGF0ZXIoXG4gKiAgICAgICAgICAgICAgIHVpU3RhdGUsIHtwYXlsb2FkOiBudWxsfVxuICogICAgICAgICAgICAgKVxuICogICAgICAgICAgfVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgdWlTdGF0ZVVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5cbmNvbnN0IERFRkFVTFRfTUFQX0NPTlRST0xTX0ZFQVRVUkVTOiBNYXBDb250cm9sSXRlbSA9IHtcbiAgc2hvdzogdHJ1ZSxcbiAgYWN0aXZlOiBmYWxzZSxcbiAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgLy8gZGVmaW5lcyB3aGljaCBtYXAgaW5kZXggdXNlcnMgYXJlIGludGVyYWN0aW5nIHdpdGggKHRocm91Z2ggbWFwIGNvbnRyb2xzKVxuICBhY3RpdmVNYXBJbmRleDogMFxufTtcblxuY29uc3QgREVGQVVMVF9NQVBfTEVHRU5EX0NPTlRST0wgPSB7XG4gIC4uLkRFRkFVTFRfTUFQX0NPTlRST0xTX0ZFQVRVUkVTLFxuICBkaXNhYmxlRWRpdDogZmFsc2Vcbn07XG4vKipcbiAqIEEgbGlzdCBvZiBtYXAgY29udHJvbCB2aXNpYmlsaXR5IGFuZCB3aGV0aGVyIGlzIGl0IGFjdGl2ZS5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IHZpc2libGVMYXllcnMgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSBtYXBMZWdlbmQgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSB0b2dnbGUzZCBEZWZhdWx0OiBge3Nob3c6IHRydWV9YFxuICogQHByb3BlcnR5IHNwbGl0TWFwIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZX1gXG4gKiBAcHJvcGVydHkgbWFwRHJhdyBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IG1hcExvY2FsZSBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IG1hcFRoZW1lIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9DT05UUk9MUzogTWFwQ29udHJvbHMgPSAoXG4gIE9iamVjdC5rZXlzKE1BUF9DT05UUk9MUykgYXMgQXJyYXk8a2V5b2YgdHlwZW9mIE1BUF9DT05UUk9MUz5cbikucmVkdWNlKFxuICAoZmluYWwsIGN1cnJlbnQpID0+ICh7XG4gICAgLi4uZmluYWwsXG4gICAgW2N1cnJlbnRdOlxuICAgICAgY3VycmVudCA9PT0gTUFQX0NPTlRST0xTLm1hcExlZ2VuZFxuICAgICAgICA/IERFRkFVTFRfTUFQX0xFR0VORF9DT05UUk9MXG4gICAgICAgIDogREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVNcbiAgfSksXG4gIHt9IGFzIE1hcENvbnRyb2xzXG4pO1xuXG4vKipcbiAqIERlZmF1bHQgaW1hZ2UgZXhwb3J0IGNvbmZpZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmF0aW8gRGVmYXVsdDogYCdTQ1JFRU4nYCxcbiAqIEBwcm9wZXJ0eSByZXNvbHV0aW9uIERlZmF1bHQ6IGAnT05FX1gnYCxcbiAqIEBwcm9wZXJ0eSBsZWdlbmQgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBtYXBIIERlZmF1bHQ6IDAsXG4gKiBAcHJvcGVydHkgbWFwVyBEZWZhdWx0OiAwLFxuICogQHByb3BlcnR5IGltYWdlU2l6ZSBEZWZhdWx0OiB7em9vbU9mZnNldDogMCwgc2NhbGU6IDEsIGltYWdlVzogMCwgaW1hZ2VIOiAwfSxcbiAqIEBwcm9wZXJ0eSBpbWFnZURhdGFVcmkgRGVmYXVsdDogYCcnYCxcbiAqIEBwcm9wZXJ0eSBleHBvcnRpbmcgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGVycm9yIERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSBlc2NhcGVYaHRtbEZvcldlYnBhY2sgRGVmYXVsdDogZnJvbSBhcHBsaWNhdGlvbiBjb25maWcgKGF1dG8tZGV0ZWN0ZWQ6IGB0cnVlYCBmb3Igd2VicGFjaylcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX0lNQUdFOiBFeHBvcnRJbWFnZSA9IHtcbiAgLy8gdXNlciBvcHRpb25zXG4gIHJhdGlvOiBFWFBPUlRfSU1HX1JBVElPUy5TQ1JFRU4sXG4gIHJlc29sdXRpb246IFJFU09MVVRJT05TLk9ORV9YLFxuICBsZWdlbmQ6IGZhbHNlLFxuICBtYXBIOiAwLFxuICBtYXBXOiAwLFxuICBpbWFnZVNpemU6IHtcbiAgICB6b29tT2Zmc2V0OiAwLFxuICAgIHNjYWxlOiAxLFxuICAgIGltYWdlVzogMCxcbiAgICBpbWFnZUg6IDBcbiAgfSxcbiAgLy8gd2hlbiB0aGlzIGlzIHNldCB0byB0cnVlLCB0aGUgbW9jayBtYXAgdmlld3BvcnQgd2lsbCBtb3ZlIHRvIHRoZSBjZW50ZXIgb2YgZGF0YVxuICBjZW50ZXI6IGZhbHNlLFxuICAvLyBleHBvcnRpbmcgc3RhdGVcbiAgaW1hZ2VEYXRhVXJpOiAnJyxcbiAgLy8gZXhwb3J0aW5nOiB1c2VkIHRvIGF0dGFjaCBwbG90LWNvbnRhaW5lciB0byBkb21cbiAgZXhwb3J0aW5nOiBmYWxzZSxcbiAgLy8gcHJvY2Vzc2luZzogdXNlZCBhcyBsb2FkaW5nIGluZGljYXRvciB3aGVuIGV4cG9ydCBpbWFnZSBpcyBiZWluZyBwcm9kdWNlZFxuICBwcm9jZXNzaW5nOiBmYWxzZSxcbiAgZXJyb3I6IGZhbHNlLFxuICAvLyB3aGV0aGVyIHRvIGFwcGx5IGZpeCBmb3IgdWdsaWZ5IGVycm9yIGluIGRvbS10by1pbWFnZSAoZnJvbSBhcHBsaWNhdGlvbiBjb25maWcsIGF1dG8tZGV0ZWN0cyBidWlsZCB0b29sKVxuICBlc2NhcGVYaHRtbEZvcldlYnBhY2s6IGdldEFwcGxpY2F0aW9uQ29uZmlnKCkuZXNjYXBlWGh0bWxGb3JXZWJwYWNrXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MT0FEX0ZJTEVTID0ge1xuICBmaWxlTG9hZGluZzogZmFsc2Vcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBleHBvcnREYXRhYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgc2VsZWN0ZWREYXRhc2V0IERlZmF1bHQ6IGAnJ2AsXG4gKiBAcHJvcGVydHkgZGF0YVR5cGUgRGVmYXVsdDogYCdjc3YnYCxcbiAqIEBwcm9wZXJ0eSBmaWx0ZXJlZCBEZWZhdWx0OiBgdHJ1ZWAsXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9EQVRBOiBFeHBvcnREYXRhID0ge1xuICBzZWxlY3RlZERhdGFzZXQ6ICcnLFxuICBkYXRhVHlwZTogRVhQT1JUX0RBVEFfVFlQRS5DU1YsXG4gIGZpbHRlcmVkOiB0cnVlXG59O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05TID0gW107XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4gLSBEZWZhdWx0OiBudWxsLCB0aGlzIGlzIHVzZWQgd2hlbiB3ZSBwcm92aWRlIGEgZGVmYXVsdCBtYXBib3ggdG9rZW4gZm9yIHVzZXJzIHRvIHRha2UgYWR2YW50YWdlIG9mXG4gKiBAcHJvcGVydHkgdXNlck1hcGJveFRva2VuIC0gRGVmYXVsdDogJycsIG1hcGJveCB0b2tlbiBwcm92aWRlZCBieSB1c2VyIHRocm91Z2ggaW5wdXQgZmllbGRcbiAqIEBwcm9wZXJ0eSBtb2RlIC0gRGVmYXVsdDogJ1JFQUQnLCByZWFkIG9ubHkgb3IgZWRpdGFibGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX0hUTUw6IEV4cG9ydEh0bWwgPSB7XG4gIGV4cG9ydE1hcGJveEFjY2Vzc1Rva2VuOiBudWxsLFxuICB1c2VyTWFwYm94VG9rZW46ICcnLFxuICBtb2RlOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMuUkVBRFxufTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBoYXNEYXRhIC0gRGVmYXVsdDogJ3RydWUnLFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfSlNPTjogRXhwb3J0SnNvbiA9IHtcbiAgaGFzRGF0YTogdHJ1ZVxufTtcblxuLyoqXG4gKiBFeHBvcnQgTWFwIENvbmZpZ1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgSFRNTCAtIERlZmF1bHQ6ICdERUZBVUxUX0VYUE9SVF9IVE1MJyxcbiAqIEBwcm9wZXJ0eSBKU09OIC0gRGVmYXVsdDogJ0RFRkFVTFRfRVhQT1JUX0pTT04nLFxuICogQHByb3BlcnR5IGZvcm1hdCAtIERlZmF1bHQ6ICdIVE1MJyxcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX01BUDogRXhwb3J0TWFwID0ge1xuICBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdOiBERUZBVUxUX0VYUE9SVF9IVE1MLFxuICBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dOiBERUZBVUxUX0VYUE9SVF9KU09OLFxuICBmb3JtYXQ6IEVYUE9SVF9NQVBfRk9STUFUUy5IVE1MXG59O1xuXG4vKipcbiAqIERlZmF1bHQgaW5pdGlhbCBgZXhwb3J0VmlkZW9gIHNldHRpbmdzXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBtZWRpYVR5cGUgRGVmYXVsdDogYCd3ZWJtJ2BcbiAqIEBwcm9wZXJ0eSBjYW1lcmFQcmVzZXQgRGVmYXVsdDogYCdOb25lJ2BcbiAqIEBwcm9wZXJ0eSBmaWxlTmFtZSBEZWZhdWx0OiBgJ2tlcGxlci5nbCdgXG4gKiBAcHJvcGVydHkgcmVzb2x1dGlvbiBEZWZhdWx0OiBgJzEyODB4NzIwJ2BcbiAqIEBwcm9wZXJ0eSBkdXJhdGlvbk1zIERlZmF1bHQ6IGAxMDAwYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfVklERU86IEV4cG9ydFZpZGVvID0ge1xuICBtZWRpYVR5cGU6ICd3ZWJtJywgLy8gdXNlIHdlYm0gYXMgZGVmYXVsdCBhcyBnaWYgZXhwb3J0IHRlbmRzIHRvIGZyZWV6ZSBvbiBsYXJnZXIgcmVjb3JkaW5nc1xuICBjYW1lcmFQcmVzZXQ6ICdOb25lJyxcbiAgZmlsZU5hbWU6ICdrZXBsZXIuZ2wnLFxuICByZXNvbHV0aW9uOiAnMTI4MHg3MjAnLFxuICBkdXJhdGlvbk1zOiAxMDAwLFxuICBzd2lwZVN0YXJ0UGN0OiAwLFxuICBzd2lwZUVuZFBjdDogMTAwLFxuICBzd2lwZUVhc2luZzogJ2Vhc2UtaW4tb3V0J1xufTtcblxuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYHVpU3RhdGVgXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSByZWFkT25seSBEZWZhdWx0OiBgZmFsc2VgXG4gKiBAcHJvcGVydHkgYWN0aXZlU2lkZVBhbmVsIERlZmF1bHQ6IGAnbGF5ZXInYFxuICogQHByb3BlcnR5IGN1cnJlbnRNb2RhbCBEZWZhdWx0OiBgJ2FkZERhdGEnYFxuICogQHByb3BlcnR5IGRhdGFzZXRLZXlUb1JlbW92ZSBEZWZhdWx0OiBgbnVsbGBcbiAqIEBwcm9wZXJ0eSB2aXNpYmxlRHJvcGRvd24gRGVmYXVsdDogYG51bGxgXG4gKiBAcHJvcGVydHkgZXhwb3J0SW1hZ2UgRGVmYXVsdDogW2BERUZBVUxUX0VYUE9SVF9JTUFHRWBdKCNkZWZhdWx0X2V4cG9ydF9pbWFnZSlcbiAqIEBwcm9wZXJ0eSBleHBvcnREYXRhIERlZmF1bHQ6IFtgREVGQVVMVF9FWFBPUlRfREFUQWBdKCNkZWZhdWx0X2V4cG9ydF9kYXRhKVxuICogQHByb3BlcnR5IGV4cG9ydE1hcCBEZWZhdWx0OiBbYERFRkFVTFRfRVhQT1JUX01BUGBdKCNkZWZhdWx0X2V4cG9ydF9tYXApXG4gKiBAcHJvcGVydHkgbWFwQ29udHJvbHMgRGVmYXVsdDogW2BERUZBVUxUX01BUF9DT05UUk9MU2BdKCNkZWZhdWx0X21hcF9jb250cm9scylcbiAqIEBwcm9wZXJ0eSBub3RpZmljYXRpb25zIERlZmF1bHQ6IGBbXWBcbiAqIEBwcm9wZXJ0eSBub3RpZmljYXRpb25zIERlZmF1bHQ6IGBbXWBcbiAqIEBwcm9wZXJ0eSBsb2FkRmlsZXNcbiAqIEBwcm9wZXJ0eSBsb2NhbGUgRGVmYXVsdDogYCdlbidgXG4gKiBAcHJvcGVydHkgdGhlbWUgRGVmYXVsdDogYCdkYXJrJ2BcbiAqIEBwcm9wZXJ0eSBpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZSBEZWZhdWx0OiBgdHJ1ZWBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfVUlfU1RBVEU6IFVpU3RhdGUgPSB7XG4gIHJlYWRPbmx5OiBmYWxzZSxcbiAgYWN0aXZlU2lkZVBhbmVsOiBERUZBVUxUX0FDVElWRV9TSURFX1BBTkVMLFxuICBjdXJyZW50TW9kYWw6IERFRkFVTFRfTU9EQUwsXG4gIGRhdGFzZXRLZXlUb1JlbW92ZTogbnVsbCxcbiAgdmlzaWJsZURyb3Bkb3duOiBudWxsLFxuICAvLyBleHBvcnQgaW1hZ2UgbW9kYWwgdWlcbiAgZXhwb3J0SW1hZ2U6IERFRkFVTFRfRVhQT1JUX0lNQUdFLFxuICAvLyBleHBvcnQgZGF0YSBtb2RhbCB1aVxuICBleHBvcnREYXRhOiBERUZBVUxUX0VYUE9SVF9EQVRBLFxuICAvLyBodG1sIGV4cG9ydFxuICBleHBvcnRNYXA6IERFRkFVTFRfRVhQT1JUX01BUCxcbiAgLy8gZXhwb3J0IHZpZGVvIG1vZGFsIHVpXG4gIGV4cG9ydFZpZGVvOiBERUZBVUxUX0VYUE9SVF9WSURFTyxcbiAgLy8gbWFwIGNvbnRyb2wgcGFuZWxzXG4gIG1hcENvbnRyb2xzOiBERUZBVUxUX01BUF9DT05UUk9MUyxcbiAgLy8gdWkgbm90aWZpY2F0aW9uc1xuICBub3RpZmljYXRpb25zOiBERUZBVUxUX05PVElGSUNBVElPTlMsXG4gIC8vIGxvYWQgZmlsZXNcbiAgbG9hZEZpbGVzOiBERUZBVUxUX0xPQURfRklMRVMsXG4gIC8vIExvY2FsZSBvZiB0aGUgVUlcbiAgbG9jYWxlOiBMT0NBTEVfQ09ERVMuZW4sXG4gIC8vIFRoZW1lIG9mIHRoZSBVSSAodXNlZCB3aGVuIGVuYWJsZVRoZW1lVG9nZ2xlIGlzIG9uKVxuICB0aGVtZTogVEhFTUUuZGFyayxcbiAgbGF5ZXJQYW5lbExpc3RWaWV3OiAnbGlzdCcsXG4gIGZpbHRlclBhbmVsTGlzdFZpZXc6ICdsaXN0JyxcbiAgaXNTaWRlUGFuZWxDbG9zZUJ1dHRvblZpc2libGU6IHRydWVcbn07XG5cbi8qIFVwZGF0ZXJzICovXG4vKipcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGluaXRVaVN0YXRlVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIGFjdGlvbjoge1xuICAgIHR5cGU/OiAodHlwZW9mIEFjdGlvblR5cGVzKVsnSU5JVCddO1xuICAgIHBheWxvYWQ6IEtlcGxlckdsSW5pdFBheWxvYWQ7XG4gIH1cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIC4uLihhY3Rpb24ucGF5bG9hZCB8fCB7fSkuaW5pdGlhbFVpU3RhdGVcbn0pO1xuXG4vKipcbiAqIFRvZ2dsZSBhY3RpdmUgc2lkZSBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGlkIG9mIHNpZGUgcGFuZWwgdG8gYmUgc2hvd24sIG9uZSBvZiBgbGF5ZXJgLCBgZmlsdGVyYCwgYGludGVyYWN0aW9uYCwgYG1hcGAuIGNsb3NlIHNpZGUgcGFuZWwgaWYgYG51bGxgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNpZGVQYW5lbFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVTaWRlUGFuZWxVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgcmV0dXJuIGlkID09PSBzdGF0ZS5hY3RpdmVTaWRlUGFuZWxcbiAgICA/IHN0YXRlXG4gICAgOiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBhY3RpdmVTaWRlUGFuZWw6IGlkXG4gICAgICB9O1xufTtcblxuLyoqXG4gKiBTaG93IGFuZCBoaWRlIG1vZGFsIGRpYWxvZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtYWN0aW9uLnBheWxvYWQgaWQgb2YgbW9kYWwgdG8gYmUgc2hvd24sIG51bGwgdG8gaGlkZSBtb2RhbHMuIE9uZSBvZjpcbiAqICAtIFtgREFUQV9UQUJMRV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2RhdGFfdGFibGVfaWQpXG4gKiAgLSBbYERFTEVURV9EQVRBX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZGVsZXRlX2RhdGFfaWQpXG4gKiAgLSBbYEFERF9EQVRBX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjYWRkX2RhdGFfaWQpXG4gKiAgLSBbYEVYUE9SVF9JTUFHRV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2V4cG9ydF9pbWFnZV9pZClcbiAqICAtIFtgRVhQT1JUX0RBVEFfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNleHBvcnRfZGF0YV9pZClcbiAqICAtIFtgQUREX01BUF9TVFlMRV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2FkZF9tYXBfc3R5bGVfaWQpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZU1vZGFsVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBpZH06IFVJU3RhdGVBY3Rpb25zLlRvZ2dsZU1vZGFsVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgY3VycmVudE1vZGFsOiBpZFxufSk7XG5cbi8qKlxuICogSGlkZSBhbmQgc2hvdyBzaWRlIHBhbmVsIGhlYWRlciBkcm9wZG93biwgYWN0aXZhdGVkIGJ5IGNsaWNraW5nIHRoZSBzaGFyZSBsaW5rIG9uIHRvcCBvZiB0aGUgc2lkZSBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2hvd0V4cG9ydERyb3Bkb3duVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBpZH06IFVJU3RhdGVBY3Rpb25zLlNob3dFeHBvcnREcm9wZG93blVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIHZpc2libGVEcm9wZG93bjogaWRcbn0pO1xuXG4vKipcbiAqIEhpZGUgc2lkZSBwYW5lbCBoZWFkZXIgZHJvcGRvd24sIGFjdGl2YXRlZCBieSBjbGlja2luZyB0aGUgc2hhcmUgbGluayBvbiB0b3Agb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGhpZGVFeHBvcnREcm9wZG93blVwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICB2aXNpYmxlRHJvcGRvd246IG51bGxcbn0pO1xuXG4vKipcbiAqIFRvZ2dsZSBzaWRlIHBhbmVsIGNsb3NlIGJ1dHRvbiBvbiB0b3AgbGVmdCBvZiB0aGUgc2lkZSBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU2lkZVBhbmVsQ2xvc2VCdXR0b25VcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHtzaG93fX06IFVJU3RhdGVBY3Rpb25zLlRvZ2dsZVNpZGVQYW5lbENsb3NlQnV0dG9uVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgaXNTaWRlUGFuZWxDbG9zZUJ1dHRvblZpc2libGU6IHNob3dcbn0pO1xuXG4vLyBNYXAgY29udHJvbCBkcm9wZG93bnMvbWVudXMgdGhhdCBvdmVybGFwIGVhY2ggb3RoZXIgdmlzdWFsbHkgYW5kIHRoZXJlZm9yZVxuLy8gc2hvdWxkIGJlIG11dHVhbGx5IGV4Y2x1c2l2ZTogb3BlbmluZyBvbmUgY2xvc2VzIGFsbCB0aGUgb3RoZXJzLlxuLy8gKHNwbGl0L3ZpZXctbW9kZSBtZW51LCB0b3AvM2QvZ2xvYmUgbWVudSwgcG9seWdvbiBkcmF3IHRvb2wsIGxhbmd1YWdlIG1lbnUpXG5leHBvcnQgY29uc3QgTVVUVUFMTFlfRVhDTFVTSVZFX01BUF9DT05UUk9MUzogc3RyaW5nW10gPSBbXG4gIE1BUF9DT05UUk9MUy5zcGxpdE1hcCxcbiAgTUFQX0NPTlRST0xTLnRvZ2dsZTNkLFxuICBNQVBfQ09OVFJPTFMubWFwRHJhdyxcbiAgTUFQX0NPTlRST0xTLm1hcExvY2FsZVxuXTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIG1hcCBjb250cm9sIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG1hcCBjb250cm9sIHBhbmVsIGlkLCBvbmUgb2YgdGhlIGtleXMgb2Y6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHtwYW5lbElkLCBpbmRleCA9IDB9fTogVUlTdGF0ZUFjdGlvbnMuVG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBsZXQgdXBkYXRlZFN0YXRlID0gc3RhdGU7XG5cbiAgLy8gVGhlIG92ZXJsYXBwaW5nIG1hcCBjb250cm9sIG1lbnVzIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmU6IHdoZW4gb25lIG9mXG4gIC8vIHRoZW0gaXMgYmVpbmcgb3BlbmVkLCBkZWFjdGl2YXRlIGV2ZXJ5IG90aGVyIG9uZSB0aGF0IGlzIGN1cnJlbnRseSBhY3RpdmVcbiAgLy8gc28gdGhlaXIgZHJvcGRvd25zIG5ldmVyIG92ZXJsYXAgb24gc2NyZWVuLlxuICBjb25zdCBpc09wZW5pbmcgPSAhdXBkYXRlZFN0YXRlLm1hcENvbnRyb2xzW3BhbmVsSWRdPy5hY3RpdmU7XG4gIGlmIChpc09wZW5pbmcgJiYgTVVUVUFMTFlfRVhDTFVTSVZFX01BUF9DT05UUk9MUy5pbmNsdWRlcyhwYW5lbElkKSkge1xuICAgIGNvbnN0IG5leHRNYXBDb250cm9scyA9IHsuLi51cGRhdGVkU3RhdGUubWFwQ29udHJvbHN9O1xuICAgIGxldCBkaWREZWFjdGl2YXRlID0gZmFsc2U7XG4gICAgTVVUVUFMTFlfRVhDTFVTSVZFX01BUF9DT05UUk9MUy5mb3JFYWNoKGNvbnRyb2xJZCA9PiB7XG4gICAgICBpZiAoY29udHJvbElkICE9PSBwYW5lbElkICYmIG5leHRNYXBDb250cm9sc1tjb250cm9sSWRdPy5hY3RpdmUpIHtcbiAgICAgICAgbmV4dE1hcENvbnRyb2xzW2NvbnRyb2xJZF0gPSB7Li4ubmV4dE1hcENvbnRyb2xzW2NvbnRyb2xJZF0sIGFjdGl2ZTogZmFsc2V9O1xuICAgICAgICBkaWREZWFjdGl2YXRlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoZGlkRGVhY3RpdmF0ZSkge1xuICAgICAgdXBkYXRlZFN0YXRlID0gey4uLnVwZGF0ZWRTdGF0ZSwgbWFwQ29udHJvbHM6IG5leHRNYXBDb250cm9sc307XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi51cGRhdGVkU3RhdGUsXG4gICAgbWFwQ29udHJvbHM6IHtcbiAgICAgIC4uLnVwZGF0ZWRTdGF0ZS5tYXBDb250cm9scyxcbiAgICAgIFtwYW5lbElkXToge1xuICAgICAgICAuLi4odXBkYXRlZFN0YXRlLm1hcENvbnRyb2xzW3BhbmVsSWRdIGFzIE1hcENvbnRyb2xJdGVtKSxcbiAgICAgICAgYWN0aXZlOiAhdXBkYXRlZFN0YXRlLm1hcENvbnRyb2xzW3BhbmVsSWRdPy5hY3RpdmUsXG4gICAgICAgIGFjdGl2ZU1hcEluZGV4OiBpbmRleFxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogVG9nZ2xlIG1hcCBjb250cm9sIHZpc2liaWxpdHlcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb24gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgbWFwIGNvbnRyb2wgcGFuZWwgaWQsIG9uZSBvZiB0aGUga2V5cyBvZjogW2BERUZBVUxUX01BUF9DT05UUk9MU2BdKCNkZWZhdWx0X21hcF9jb250cm9scylcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHtwYW5lbElkLCBzaG93fX06IFVJU3RhdGVBY3Rpb25zLnNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIGlmICghc3RhdGUubWFwQ29udHJvbHM/LltwYW5lbElkXSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbWFwQ29udHJvbHM6IHtcbiAgICAgIC4uLnN0YXRlLm1hcENvbnRyb2xzLFxuICAgICAgW3BhbmVsSWRdOiB7XG4gICAgICAgIC4uLnN0YXRlLm1hcENvbnRyb2xzW3BhbmVsSWRdLFxuICAgICAgICBzaG93OiBCb29sZWFuKHNob3cpXG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgbWFwIGNvbnRyb2wgc2V0dGluZ3NcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb24gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgbWFwIGNvbnRyb2wgcGFuZWwgaWQsIG9uZSBvZiB0aGUga2V5cyBvZjogW2BERUZBVUxUX01BUF9DT05UUk9MU2BdKCNkZWZhdWx0X21hcF9jb250cm9scylcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgc2V0dGluZ3N9fTogVUlTdGF0ZUFjdGlvbnMuc2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IG1hcENvbnRyb2wgPSBzdGF0ZS5tYXBDb250cm9scz8uW3BhbmVsSWRdIGFzIE1hcENvbnRyb2xNYXBMZWdlbmQgfCB1bmRlZmluZWQ7XG4gIGlmICghbWFwQ29udHJvbCkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbWFwQ29udHJvbHM6IHtcbiAgICAgIC4uLnN0YXRlLm1hcENvbnRyb2xzLFxuICAgICAgW3BhbmVsSWRdOiB7XG4gICAgICAgIC4uLm1hcENvbnRyb2wsXG4gICAgICAgIHNldHRpbmdzOiB7Li4ubWFwQ29udHJvbC5zZXR0aW5ncywgLi4uc2V0dGluZ3N9XG4gICAgICB9IGFzIE1hcENvbnRyb2xNYXBMZWdlbmRcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBhY3RpdmUgbWFwIGNvbnRyb2wgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBkYXRhc2V0IGlkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IG9wZW5EZWxldGVNb2RhbFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogZGF0YXNldEtleVRvUmVtb3ZlfTogVUlTdGF0ZUFjdGlvbnMuT3BlbkRlbGV0ZU1vZGFsVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgY3VycmVudE1vZGFsOiBERUxFVEVfREFUQV9JRCxcbiAgZGF0YXNldEtleVRvUmVtb3ZlXG59KTtcblxuLyoqXG4gKiBTZXQgYGV4cG9ydEltYWdlLmxlZ2VuZGAgdG8gYHRydWVgIG9yIGBmYWxzZWBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBuZXdTZXR0aW5nfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IHVwZGF0ZWQgPSB7Li4uc3RhdGUuZXhwb3J0SW1hZ2UsIC4uLm5ld1NldHRpbmd9O1xuICBjb25zdCBpbWFnZVNpemUgPSBjYWxjdWxhdGVFeHBvcnRJbWFnZVNpemUodXBkYXRlZCkgfHwgc3RhdGUuZXhwb3J0SW1hZ2UuaW1hZ2VTaXplO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgZXhwb3J0SW1hZ2U6IHtcbiAgICAgIC4uLnVwZGF0ZWQsXG4gICAgICBpbWFnZVNpemVcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFNldCBgZXhwb3J0SW1hZ2Uuc2V0RXhwb3J0SW1hZ2VEYXRhVXJpYCB0byBhIGltYWdlIGRhdGFVcmlcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBleHBvcnQgaW1hZ2UgZGF0YSB1cmlcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBkYXRhVXJpfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIGlmIChkYXRhVXJpID09PSBzdGF0ZS5leHBvcnRJbWFnZS5pbWFnZURhdGFVcmkpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBleHBvcnRJbWFnZToge1xuICAgICAgLi4uc3RhdGUuZXhwb3J0SW1hZ2UsXG4gICAgICBwcm9jZXNzaW5nOiBmYWxzZSxcbiAgICAgIGltYWdlRGF0YVVyaTogZGF0YVVyaVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SW1hZ2VFcnJvclVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogZXJyb3J9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0SW1hZ2U6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICBwcm9jZXNzaW5nOiBmYWxzZSxcbiAgICBlcnJvclxuICB9XG59KTtcblxuLyoqXG4gKiBEZWxldGUgY2FjaGVkIGV4cG9ydCBpbWFnZVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgY2xlYW51cEV4cG9ydEltYWdlVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydEltYWdlOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0SW1hZ2UsXG4gICAgZXhwb3J0aW5nOiBmYWxzZSxcbiAgICBpbWFnZURhdGFVcmk6ICcnLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBwcm9jZXNzaW5nOiBmYWxzZSxcbiAgICBjZW50ZXI6IGZhbHNlXG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCBgZXhwb3J0VmlkZW9gIHNldHRpbmdzOiBtZWRpYVR5cGUsIGNhbWVyYVByZXNldCwgZmlsZU5hbWUsIHJlc29sdXRpb24sIGR1cmF0aW9uTXNcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBuZXcgdmlkZW8gZXhwb3J0IHNldHRpbmdzXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydFZpZGVvU2V0dGluZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogbmV3U2V0dGluZ306IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydFZpZGVvU2V0dGluZ1VwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydFZpZGVvOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0VmlkZW8sXG4gICAgLi4ubmV3U2V0dGluZ1xuICB9XG59KTtcblxuLyoqXG4gKiBTdGFydCBpbWFnZSBleHBvcnRpbmcgZmxvd1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQHJldHVybnMge1VpU3RhdGV9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzdGFydEV4cG9ydGluZ0ltYWdlVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBvcHRpb25zID0ge319OiB7cGF5bG9hZDogUGFydGlhbDxFeHBvcnRJbWFnZT59XG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3QgaW1hZ2VTZXR0aW5ncyA9IHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGV4cG9ydGluZzogdHJ1ZVxuICB9O1xuXG4gIHJldHVybiBjb21wb3NlXyhbXG4gICAgY2xlYW51cEV4cG9ydEltYWdlVXBkYXRlcixcbiAgICBhcHBseV8oc2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlciwgcGF5bG9hZF8oaW1hZ2VTZXR0aW5ncykpXG4gIF0pKHN0YXRlKTtcbn07XG5cbi8qKlxuICogU2V0IHNlbGVjdGVkIGRhdGFzZXQgZm9yIGV4cG9ydFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGRhdGFzZXQgaWRcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0U2VsZWN0ZWREYXRhc2V0VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBkYXRhc2V0fTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0U2VsZWN0ZWREYXRhc2V0VXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0RGF0YToge1xuICAgIC4uLnN0YXRlLmV4cG9ydERhdGEsXG4gICAgc2VsZWN0ZWREYXRhc2V0OiBkYXRhc2V0XG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCBkYXRhIGZvcm1hdCBmb3IgZXhwb3J0aW5nIGRhdGFcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBvbmUgb2YgYCd0ZXh0L2NzdidgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydERhdGFUeXBlVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBkYXRhVHlwZX06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydERhdGFUeXBlVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0RGF0YToge1xuICAgIC4uLnN0YXRlLmV4cG9ydERhdGEsXG4gICAgZGF0YVR5cGVcbiAgfVxufSk7XG5cbi8qKlxuICogV2hldGhlciB0byBleHBvcnQgZmlsdGVyZWQgZGF0YSwgYHRydWVgIG9yIGBmYWxzZWBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogZmlsdGVyZWR9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydERhdGE6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnREYXRhLFxuICAgIGZpbHRlcmVkXG4gIH1cbn0pO1xuXG4vKipcbiAqIFdoZXRoZXIgdG8gaW5jbHVkaW5nIGRhdGEgaW4gbWFwIGNvbmZpZywgdG9nZ2xlIGJldHdlZW4gYHRydWVgIG9yIGBmYWxzZWBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVVwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRNYXA6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRNYXAsXG4gICAgW0VYUE9SVF9NQVBfRk9STUFUUy5KU09OXToge1xuICAgICAgLi4uc3RhdGUuZXhwb3J0TWFwW0VYUE9SVF9NQVBfRk9STUFUUy5KU09OXSxcbiAgICAgIGhhc0RhdGE6ICFzdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dLmhhc0RhdGFcbiAgICB9XG4gIH1cbn0pO1xuXG4vKipcbiAqIHdoZXRoZXIgdG8gZXhwb3J0IGEgbWFwYm94IGFjY2VzcyB0byBIVE1MIHNpbmdsZSBwYWdlXG4gKiBAcGFyYW0gc3RhdGUgLSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRVc2VyTWFwYm94QWNjZXNzVG9rZW5VcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHVzZXJNYXBib3hUb2tlbn06IFVJU3RhdGVBY3Rpb25zLlNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdLFxuICAgICAgdXNlck1hcGJveFRva2VuXG4gICAgfVxuICB9XG59KTtcblxuLyoqXG4gKiBTZXRzIHRoZSBleHBvcnQgbWFwIGZvcm1hdFxuICogQHBhcmFtIHN0YXRlIC0gYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZm9ybWF0IHRvIHVzZSB0byBleHBvcnQgdGhlIG1hcCBpbnRvXG4gKiBAcmV0dXJuIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwRm9ybWF0VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBmb3JtYXR9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRNYXA6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRNYXAsXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIGZvcm1hdFxuICB9XG59KTtcblxuLyoqXG4gKiBTZXQgdGhlIGV4cG9ydCBodG1sIG1hcCBtb2RlXG4gKiBAcGFyYW0gc3RhdGUgLSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCB0byBiZSBzZXQgKGF2YWlsYWJsZSBtb2RlczogRVhQT1JUX0hUTUxfTUFQX01PREVTKVxuICogQHJldHVybiBuZXh0U3RhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydE1hcEhUTUxNb2RlVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBtb2RlfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0SFRNTE1hcE1vZGVVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRNYXA6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRNYXAsXG4gICAgW0VYUE9SVF9NQVBfRk9STUFUUy5IVE1MXToge1xuICAgICAgLi4uc3RhdGUuZXhwb3J0TWFwW0VYUE9SVF9NQVBfRk9STUFUUy5IVE1MXSxcbiAgICAgIG1vZGVcbiAgICB9XG4gIH1cbn0pO1xuXG4vKipcbiAqIEFkZHMgYSBuZXcgbm90aWZpY2F0aW9uLlxuICogVXBkYXRlcyBhIG5vdGlmaWNhdGlvbiBpbiBjYXNlIG9mIG1hdGNoaW5nIGlkcy5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBQYXJhbXMgb2YgYSBub3RpZmljYXRpb25cbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgYWRkTm90aWZpY2F0aW9uVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkfTogVUlTdGF0ZUFjdGlvbnMuQWRkTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IG9sZE5vdGlmaWNhdGlvbnMgPSBzdGF0ZS5ub3RpZmljYXRpb25zIHx8IFtdO1xuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGNvbnN0IHBheWxvYWRJZCA9IHBheWxvYWQ/LmlkO1xuICBjb25zdCBub3RpZmljYXRpb25Ub1VwZGF0ZSA9IHBheWxvYWRJZCA/IG9sZE5vdGlmaWNhdGlvbnMuZmluZChuID0+IG4uaWQgPT09IHBheWxvYWRJZCkgOiBudWxsO1xuXG4gIGxldCBub3RpZmljYXRpb25zO1xuICBpZiAobm90aWZpY2F0aW9uVG9VcGRhdGUpIHtcbiAgICBub3RpZmljYXRpb25zID0gb2xkTm90aWZpY2F0aW9ucy5tYXAobiA9PlxuICAgICAgbi5pZCA9PT0gcGF5bG9hZElkID8gY3JlYXRlTm90aWZpY2F0aW9uKHsuLi5wYXlsb2FkLCBjb3VudDogbi5jb3VudCArIDF9KSA6IG5cbiAgICApO1xuICB9IGVsc2Uge1xuICAgIG5vdGlmaWNhdGlvbnMgPSBbLi4ub2xkTm90aWZpY2F0aW9ucywgY3JlYXRlTm90aWZpY2F0aW9uKHBheWxvYWQpXTtcbiAgfVxuXG4gIHJldHVybiB7Li4uc3RhdGUsIG5vdGlmaWNhdGlvbnN9O1xufTtcblxuLyoqXG4gKiBSZW1vdmUgYSBub3RpZmljYXRpb25cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBpZCBvZiB0aGUgbm90aWZpY2F0aW9uIHRvIGJlIHJlbW92ZWRcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVtb3ZlTm90aWZpY2F0aW9uVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBpZH06IFVJU3RhdGVBY3Rpb25zLlJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIG5vdGlmaWNhdGlvbnM6IHN0YXRlLm5vdGlmaWNhdGlvbnMuZmlsdGVyKG4gPT4gbi5pZCAhPT0gaWQpXG59KTtcblxuLyoqXG4gKiBGaXJlZCB3aGVuIGZpbGUgbG9hZGluZyBiZWdpblxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkRmlsZXNVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbG9hZEZpbGVzOiB7XG4gICAgLi4uc3RhdGUubG9hZEZpbGVzLFxuICAgIGZpbGVMb2FkaW5nOiB0cnVlXG4gIH1cbn0pO1xuXG4vKipcbiAqIEhhbmRsZXMgbG9hZGluZyBmaWxlIHN1Y2Nlc3MgYW5kIHNldCBmaWxlTG9hZGluZyBwcm9wZXJ0eSB0byBmYWxzZVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkRmlsZXNTdWNjZXNzVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGxvYWRGaWxlczoge1xuICAgIC4uLnN0YXRlLmxvYWRGaWxlcyxcbiAgICBmaWxlTG9hZGluZzogZmFsc2VcbiAgfVxufSk7XG5cbi8qKlxuICogSGFuZGxlcyBsb2FkIGZpbGUgZXJyb3IgYW5kIHNldCBmaWxlTG9hZGluZyBwcm9wZXJ0eSB0byBmYWxzZVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLmVycm9yXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRGaWxlc0VyclVwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUsIHtlcnJvcn06IExvYWRGaWxlc0VyclVwZGF0ZXJBY3Rpb24pOiBVaVN0YXRlID0+XG4gIGFkZE5vdGlmaWNhdGlvblVwZGF0ZXIoXG4gICAge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBsb2FkRmlsZXM6IHtcbiAgICAgICAgLi4uc3RhdGUubG9hZEZpbGVzLFxuICAgICAgICBmaWxlTG9hZGluZzogZmFsc2VcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHBheWxvYWQ6IGVycm9yTm90aWZpY2F0aW9uKHtcbiAgICAgICAgbWVzc2FnZTogKGVycm9yIHx8IHt9KS5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gdXBsb2FkIGZpbGVzJyxcbiAgICAgICAgdG9waWM6IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUy5nbG9iYWxcbiAgICAgIH0pXG4gICAgfVxuICApO1xuXG4vKipcbiAqIEhhbmRsZXMgdG9nZ2xlIG1hcCBzcGxpdCBhbmQgcmVzZXQgYWxsIG1hcCBjb250cm9sIGluZGV4IHRvIDBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTcGxpdE1hcFVwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBtYXBDb250cm9sczogT2JqZWN0LmVudHJpZXMoc3RhdGUubWFwQ29udHJvbHMpLnJlZHVjZShcbiAgICAoYWNjLCBlbnRyeSkgPT4gKHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIFtlbnRyeVswXV06IHtcbiAgICAgICAgLi4uKGVudHJ5WzFdIGFzIE1hcENvbnRyb2xJdGVtKSxcbiAgICAgICAgYWN0aXZlTWFwSW5kZXg6IDBcbiAgICAgIH1cbiAgICB9KSxcbiAgICB7fSBhcyBNYXBDb250cm9sc1xuICApXG59KTtcblxuLyoqXG4gKiBUb2dnbGUgbW9kYWwgZGF0YVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNob3dEYXRhc2V0VGFibGVVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PlxuICB0b2dnbGVNb2RhbFVwZGF0ZXIoc3RhdGUsIHtwYXlsb2FkOiBEQVRBX1RBQkxFX0lEfSk7XG5cbi8qKlxuICogU2V0IHRoZSBsb2NhbGUgb2YgdGhlIFVJXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWRcbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZC5sb2NhbGUgbG9jYWxlXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldExvY2FsZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge2xvY2FsZX19OiBVSVN0YXRlQWN0aW9ucy5TZXRMb2NhbGVVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBsb2NhbGVcbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgdGhlbWUgb2YgdGhlIFVJXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWRcbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZC50aGVtZSB0aGVtZVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRUaGVtZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3RoZW1lfX06IFVJU3RhdGVBY3Rpb25zLlNldFRoZW1lVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgdGhlbWVcbn0pO1xuXG4vKipcbiAqIFRvZ2dsZSBsYXllciBwYW5lbCBsaXN0IHZpZXdcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBsYXllciBwYW5lbCBsaXN0VmlldyB2YWx1ZS4gQ2FuIGJlICdsaXN0JyBvciAnc29ydEJ5RGF0YXNldCdcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlUGFuZWxMaXN0Vmlld1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3BhbmVsSWQsIGxpc3RWaWV3fX06IFVJU3RhdGVBY3Rpb25zLlRvZ2dsZVBhbmVsTGlzdFZpZXdBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBzdGF0ZVByb3AgPVxuICAgIHBhbmVsSWQgPT09ICdsYXllcidcbiAgICAgID8gJ2xheWVyUGFuZWxMaXN0VmlldydcbiAgICAgIDogcGFuZWxJZCA9PT0gJ2ZpbHRlcidcbiAgICAgID8gJ2ZpbHRlclBhbmVsTGlzdFZpZXcnXG4gICAgICA6IG51bGw7XG4gIGlmICghc3RhdGVQcm9wIHx8IHN0YXRlW3N0YXRlUHJvcF0gPT09IGxpc3RWaWV3KSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgW3N0YXRlUHJvcF06IGxpc3RWaWV3XG4gIH07XG59O1xuXG4vKipcbiAqIE1lcmdlIHJlY2VpdmVkIHVpIHN0YXRlIGNvbmZpZyB3aGVuIGxvYWRpbmcgYSBzYXZlZCBtYXBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBzYXZlZCBtYXAgY29uZmlnIGB7bWFwU3R5bGUsIHZpc1N0YXRlLCBtYXBTdGF0ZSwgdWlTdGF0ZX1gXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlY2VpdmVNYXBDb25maWdVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge1xuICAgIHBheWxvYWQ6IHtjb25maWd9XG4gIH06IHtcbiAgICB0eXBlPzogKHR5cGVvZiBBY3Rpb25UeXBlcylbJ1JFQ0VJVkVfTUFQX0NPTkZJRyddO1xuICAgIHBheWxvYWQ6IFJlY2VpdmVNYXBDb25maWdQYXlsb2FkO1xuICB9XG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3Qge3VpU3RhdGV9ID0gY29uZmlnIHx8IHt9O1xuICBpZiAoIXVpU3RhdGUpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBsZXQgbmV3U3RhdGUgPSBzdGF0ZTtcblxuICBpZiAodWlTdGF0ZS5tYXBDb250cm9scz8ubWFwTGVnZW5kPy5hY3RpdmUpIHtcbiAgICBjb25zdCBjdXJyZW50TGVnZW5kID0gbmV3U3RhdGUubWFwQ29udHJvbHMubWFwTGVnZW5kO1xuICAgIG5ld1N0YXRlID0ge1xuICAgICAgLi4ubmV3U3RhdGUsXG4gICAgICBtYXBDb250cm9sczoge1xuICAgICAgICAuLi5uZXdTdGF0ZS5tYXBDb250cm9scyxcbiAgICAgICAgbWFwTGVnZW5kOiB7XG4gICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICAuLi5jdXJyZW50TGVnZW5kLFxuICAgICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICBhY3RpdmVNYXBJbmRleDogMFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmICh1aVN0YXRlLm1hcENvbnRyb2xzPy5tYXBMZWdlbmQ/LnNldHRpbmdzKSB7XG4gICAgbmV3U3RhdGUgPSBzZXRNYXBDb250cm9sU2V0dGluZ3NVcGRhdGVyKG5ld1N0YXRlLCB7XG4gICAgICBwYXlsb2FkOiB7cGFuZWxJZDogJ21hcExlZ2VuZCcsIHNldHRpbmdzOiB1aVN0YXRlLm1hcENvbnRyb2xzLm1hcExlZ2VuZC5zZXR0aW5nc31cbiAgICB9IGFzIFVJU3RhdGVBY3Rpb25zLnNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXJBY3Rpb24pO1xuICB9XG5cbiAgaWYgKHVpU3RhdGUubG9jYWxlKSB7XG4gICAgbmV3U3RhdGUgPSBzZXRMb2NhbGVVcGRhdGVyKG5ld1N0YXRlLCB7XG4gICAgICBwYXlsb2FkOiB7bG9jYWxlOiB1aVN0YXRlLmxvY2FsZX1cbiAgICB9IGFzIFVJU3RhdGVBY3Rpb25zLlNldExvY2FsZVVwZGF0ZXJBY3Rpb24pO1xuICB9XG5cbiAgaWYgKHVpU3RhdGUudGhlbWUpIHtcbiAgICBuZXdTdGF0ZSA9IHNldFRoZW1lVXBkYXRlcihuZXdTdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge3RoZW1lOiB1aVN0YXRlLnRoZW1lfVxuICAgIH0gYXMgVUlTdGF0ZUFjdGlvbnMuU2V0VGhlbWVVcGRhdGVyQWN0aW9uKTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBOztBQUVBLFNBQ0VBLFdBQVcsRUFDWEMsYUFBYSxFQUNiQywyQkFBMkIsRUFDM0JDLGNBQWMsRUFDZEMsZ0JBQWdCLEVBQ2hCQyxxQkFBcUIsRUFDckJDLGlCQUFpQixFQUNqQkMsa0JBQWtCLEVB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
|
|
961
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBRERfREFUQV9JRCIsIkRBVEFfVEFCTEVfSUQiLCJERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MiLCJERUxFVEVfREFUQV9JRCIsIkVYUE9SVF9EQVRBX1RZUEUiLCJFWFBPUlRfSFRNTF9NQVBfTU9ERVMiLCJFWFBPUlRfSU1HX1JBVElPUyIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIlJFU09MVVRJT05TIiwiTUFQX0NPTlRST0xTIiwiVEhFTUUiLCJMT0NBTEVfQ09ERVMiLCJjcmVhdGVOb3RpZmljYXRpb24iLCJlcnJvck5vdGlmaWNhdGlvbiIsImNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZ2V0Q29uZmlndXJlZFRoZW1lcyIsImdldERlZmF1bHRVaVRoZW1lIiwicGF5bG9hZF8iLCJhcHBseV8iLCJjb21wb3NlXyIsIkRFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwiLCJERUZBVUxUX01PREFMIiwidWlTdGF0ZVVwZGF0ZXJzIiwiREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVMiLCJzaG93IiwiYWN0aXZlIiwiZGlzYWJsZUNsb3NlIiwiYWN0aXZlTWFwSW5kZXgiLCJERUZBVUxUX01BUF9MRUdFTkRfQ09OVFJPTCIsIl9vYmplY3RTcHJlYWQiLCJkaXNhYmxlRWRpdCIsIkRFRkFVTFRfTUFQX0NPTlRST0xTIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImZpbmFsIiwiY3VycmVudCIsIl9kZWZpbmVQcm9wZXJ0eSIsIm1hcExlZ2VuZCIsIkRFRkFVTFRfRVhQT1JUX0lNQUdFIiwicmF0aW8iLCJTQ1JFRU4iLCJyZXNvbHV0aW9uIiwiT05FX1giLCJsZWdlbmQiLCJjaGFydHMiLCJtYXBIIiwibWFwVyIsImltYWdlU2l6ZSIsInpvb21PZmZzZXQiLCJzY2FsZSIsImltYWdlVyIsImltYWdlSCIsImNlbnRlciIsImltYWdlRGF0YVVyaSIsImV4cG9ydGluZyIsInByb2Nlc3NpbmciLCJlcnJvciIsImVzY2FwZVhodG1sRm9yV2VicGFjayIsImZpbGVOYW1lIiwiREVGQVVMVF9MT0FEX0ZJTEVTIiwiZmlsZUxvYWRpbmciLCJERUZBVUxUX0VYUE9SVF9EQVRBIiwic2VsZWN0ZWREYXRhc2V0IiwiZGF0YVR5cGUiLCJDU1YiLCJmaWx0ZXJlZCIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OUyIsIkRFRkFVTFRfRVhQT1JUX0hUTUwiLCJleHBvcnRNYXBib3hBY2Nlc3NUb2tlbiIsInVzZXJNYXBib3hUb2tlbiIsIm1vZGUiLCJSRUFEIiwiREVGQVVMVF9FWFBPUlRfSlNPTiIsImhhc0RhdGEiLCJERUZBVUxUX0VYUE9SVF9NQVAiLCJIVE1MIiwiSlNPTiIsIkRFRkFVTFRfRVhQT1JUX1ZJREVPIiwibWVkaWFUeXBlIiwiY2FtZXJhUHJlc2V0IiwiZHVyYXRpb25NcyIsInN3aXBlU3RhcnRQY3QiLCJzd2lwZUVuZFBjdCIsInN3aXBlRWFzaW5nIiwiSU5JVElBTF9VSV9TVEFURSIsInJlYWRPbmx5IiwiYWN0aXZlU2lkZVBhbmVsIiwiY3VycmVudE1vZGFsIiwiZGF0YXNldEtleVRvUmVtb3ZlIiwidmlzaWJsZURyb3Bkb3duIiwiZXhwb3J0SW1hZ2UiLCJleHBvcnREYXRhIiwiZXhwb3J0TWFwIiwiZXhwb3J0VmlkZW8iLCJtYXBDb250cm9scyIsIm5vdGlmaWNhdGlvbnMiLCJsb2FkRmlsZXMiLCJsb2NhbGUiLCJlbiIsInRoZW1lIiwiZGFyayIsImxheWVyUGFuZWxMaXN0VmlldyIsImZpbHRlclBhbmVsTGlzdFZpZXciLCJpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZSIsImluaXRVaVN0YXRlVXBkYXRlciIsInN0YXRlIiwiYWN0aW9uIiwiX2luaXRpYWxVaVN0YXRlJHRoZW1lIiwiaW5pdGlhbFVpU3RhdGUiLCJwYXlsb2FkIiwidGhlbWVzIiwicmVxdWVzdGVkIiwibGVuZ3RoIiwiaW5jbHVkZXMiLCJ0b2dnbGVTaWRlUGFuZWxVcGRhdGVyIiwiX3JlZiIsImlkIiwidG9nZ2xlTW9kYWxVcGRhdGVyIiwiX3JlZjIiLCJzaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyIiwiX3JlZjMiLCJoaWRlRXhwb3J0RHJvcGRvd25VcGRhdGVyIiwidG9nZ2xlU2lkZVBhbmVsQ2xvc2VCdXR0b25VcGRhdGVyIiwiX3JlZjQiLCJNVVRVQUxMWV9FWENMVVNJVkVfTUFQX0NPTlRST0xTIiwic3BsaXRNYXAiLCJ0b2dnbGUzZCIsIm1hcERyYXciLCJtYXBMb2NhbGUiLCJ0b2dnbGVNYXBDb250cm9sVXBkYXRlciIsIl9yZWY1IiwiX3VwZGF0ZWRTdGF0ZSRtYXBDb250IiwiX3VwZGF0ZWRTdGF0ZSRtYXBDb250MiIsIl9yZWY1JHBheWxvYWQiLCJwYW5lbElkIiwiX3JlZjUkcGF5bG9hZCRpbmRleCIsImluZGV4IiwidXBkYXRlZFN0YXRlIiwiaXNPcGVuaW5nIiwibmV4dE1hcENvbnRyb2xzIiwiZGlkRGVhY3RpdmF0ZSIsImZvckVhY2giLCJjb250cm9sSWQiLCJfbmV4dE1hcENvbnRyb2xzJGNvbnQiLCJzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXIiLCJfcmVmNiIsIl9zdGF0ZSRtYXBDb250cm9scyIsIl9yZWY2JHBheWxvYWQiLCJCb29sZWFuIiwic2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlciIsIl9yZWY3IiwiX3N0YXRlJG1hcENvbnRyb2xzMiIsIl9yZWY3JHBheWxvYWQiLCJzZXR0aW5ncyIsIm1hcENvbnRyb2wiLCJvcGVuRGVsZXRlTW9kYWxVcGRhdGVyIiwiX3JlZjgiLCJzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyIiwiX3JlZjkiLCJuZXdTZXR0aW5nIiwidXBkYXRlZCIsInNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXIiLCJfcmVmMCIsImRhdGFVcmkiLCJzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciIsIl9yZWYxIiwiY2xlYW51cEV4cG9ydEltYWdlVXBkYXRlciIsInNldEV4cG9ydFZpZGVvU2V0dGluZ1VwZGF0ZXIiLCJfcmVmMTAiLCJzdGFydEV4cG9ydGluZ0ltYWdlVXBkYXRlciIsIl9yZWYxMSIsIl9yZWYxMSRwYXlsb2FkIiwib3B0aW9ucyIsImltYWdlU2V0dGluZ3MiLCJzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyIiwiX3JlZjEyIiwiZGF0YXNldCIsInNldEV4cG9ydERhdGFUeXBlVXBkYXRlciIsIl9yZWYxMyIsInNldEV4cG9ydEZpbHRlcmVkVXBkYXRlciIsIl9yZWYxNCIsInNldEV4cG9ydERhdGFVcGRhdGVyIiwic2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlciIsIl9yZWYxNSIsInNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXIiLCJfcmVmMTYiLCJmb3JtYXQiLCJzZXRFeHBvcnRNYXBGaWxlTmFtZVVwZGF0ZXIiLCJfcmVmMTciLCJzZXRFeHBvcnRNYXBIVE1MTW9kZVVwZGF0ZXIiLCJfcmVmMTgiLCJhZGROb3RpZmljYXRpb25VcGRhdGVyIiwiX3JlZjE5Iiwib2xkTm90aWZpY2F0aW9ucyIsInBheWxvYWRJZCIsIm5vdGlmaWNhdGlvblRvVXBkYXRlIiwiZmluZCIsIm4iLCJtYXAiLCJjb3VudCIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsInJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXIiLCJfcmVmMjAiLCJmaWx0ZXIiLCJsb2FkRmlsZXNVcGRhdGVyIiwibG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIiLCJsb2FkRmlsZXNFcnJVcGRhdGVyIiwiX3JlZjIxIiwibWVzc2FnZSIsInRvcGljIiwiZ2xvYmFsIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwiZW50cmllcyIsImFjYyIsImVudHJ5Iiwic2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXIiLCJzZXRMb2NhbGVVcGRhdGVyIiwiX3JlZjIyIiwic2V0VGhlbWVVcGRhdGVyIiwiX3JlZjIzIiwidG9nZ2xlUGFuZWxMaXN0Vmlld1VwZGF0ZXIiLCJfcmVmMjQiLCJfcmVmMjQkcGF5bG9hZCIsImxpc3RWaWV3Iiwic3RhdGVQcm9wIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJfcmVmMjUiLCJfdWlTdGF0ZSRtYXBDb250cm9scyIsIl91aVN0YXRlJG1hcENvbnRyb2xzMiIsIl91aVN0YXRlJG1hcENvbnRyb2xzMyIsImNvbmZpZyIsIl9yZWYyNiIsInVpU3RhdGUiLCJuZXdTdGF0ZSIsImN1cnJlbnRMZWdlbmQiLCJjaGFydCIsImN1cnJlbnRDaGFydCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91aS1zdGF0ZS11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1xuICBBRERfREFUQV9JRCxcbiAgREFUQV9UQUJMRV9JRCxcbiAgREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTLFxuICBERUxFVEVfREFUQV9JRCxcbiAgRVhQT1JUX0RBVEFfVFlQRSxcbiAgRVhQT1JUX0hUTUxfTUFQX01PREVTLFxuICBFWFBPUlRfSU1HX1JBVElPUyxcbiAgRVhQT1JUX01BUF9GT1JNQVRTLFxuICBSRVNPTFVUSU9OUyxcbiAgTUFQX0NPTlRST0xTLFxuICBUSEVNRVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0xPQ0FMRV9DT0RFU30gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHtcbiAgY3JlYXRlTm90aWZpY2F0aW9uLFxuICBlcnJvck5vdGlmaWNhdGlvbixcbiAgY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplLFxuICBnZXRBcHBsaWNhdGlvbkNvbmZpZyxcbiAgZ2V0Q29uZmlndXJlZFRoZW1lcyxcbiAgZ2V0RGVmYXVsdFVpVGhlbWVcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge3BheWxvYWRfLCBhcHBseV8sIGNvbXBvc2VffSBmcm9tICcuL2NvbXBvc2VyLWhlbHBlcnMnO1xuXG5pbXBvcnQge1xuICBBY3Rpb25UeXBlcyxcbiAgS2VwbGVyR2xJbml0UGF5bG9hZCxcbiAgTG9hZEZpbGVzRXJyVXBkYXRlckFjdGlvbixcbiAgUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQsXG4gIFVJU3RhdGVBY3Rpb25zXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge1xuICBFeHBvcnREYXRhLFxuICBFeHBvcnRIdG1sLFxuICBFeHBvcnRKc29uLFxuICBFeHBvcnRNYXAsXG4gIEV4cG9ydEltYWdlLFxuICBFeHBvcnRWaWRlbyxcbiAgTWFwQ29udHJvbEl0ZW0sXG4gIE1hcENvbnRyb2xNYXBMZWdlbmQsXG4gIE1hcENvbnRyb2xzLFxuICBVaVN0YXRlXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BQ1RJVkVfU0lERV9QQU5FTCA9ICdsYXllcic7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NT0RBTCA9IEFERF9EQVRBX0lEO1xuXG4vKipcbiAqIFVwZGF0ZXJzIGZvciBgdWlTdGF0ZWAgcmVkdWNlci4gQ2FuIGJlIHVzZWQgaW4geW91ciByb290IHJlZHVjZXIgdG8gZGlyZWN0bHkgbW9kaWZ5IGtlcGxlci5nbCdzIHN0YXRlLlxuICogUmVhZCBtb3JlIGFib3V0IFtVc2luZyB1cGRhdGVyc10oLi4vYWR2YW5jZWQtdXNhZ2UvdXNpbmctdXBkYXRlcnMubWQpXG4gKlxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7dWlTdGF0ZVVwZGF0ZXJzfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbiAqIC8vIFJvb3QgUmVkdWNlclxuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogIGtlcGxlckdsOiBrZXBsZXJHbFJlZHVjZXIsXG4gKiAgYXBwOiBhcHBSZWR1Y2VyXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBjb21wb3NlZFJlZHVjZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICogIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAqICAgIC8vIGNsaWNrIGJ1dHRvbiB0byBjbG9zZSBzaWRlIHBhbmVsXG4gKiAgICBjYXNlICdDTElDS19CVVRUT04nOlxuICogICAgICByZXR1cm4ge1xuICogICAgICAgIC4uLnN0YXRlLFxuICogICAgICAgIGtlcGxlckdsOiB7XG4gKiAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbCxcbiAqICAgICAgICAgIGZvbzoge1xuICogICAgICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wuZm9vLFxuICogICAgICAgICAgICAgdWlTdGF0ZTogdWlTdGF0ZVVwZGF0ZXJzLnRvZ2dsZVNpZGVQYW5lbFVwZGF0ZXIoXG4gKiAgICAgICAgICAgICAgIHVpU3RhdGUsIHtwYXlsb2FkOiBudWxsfVxuICogICAgICAgICAgICAgKVxuICogICAgICAgICAgfVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgdWlTdGF0ZVVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5cbmNvbnN0IERFRkFVTFRfTUFQX0NPTlRST0xTX0ZFQVRVUkVTOiBNYXBDb250cm9sSXRlbSA9IHtcbiAgc2hvdzogdHJ1ZSxcbiAgYWN0aXZlOiBmYWxzZSxcbiAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgLy8gZGVmaW5lcyB3aGljaCBtYXAgaW5kZXggdXNlcnMgYXJlIGludGVyYWN0aW5nIHdpdGggKHRocm91Z2ggbWFwIGNvbnRyb2xzKVxuICBhY3RpdmVNYXBJbmRleDogMFxufTtcblxuY29uc3QgREVGQVVMVF9NQVBfTEVHRU5EX0NPTlRST0wgPSB7XG4gIC4uLkRFRkFVTFRfTUFQX0NPTlRST0xTX0ZFQVRVUkVTLFxuICBkaXNhYmxlRWRpdDogZmFsc2Vcbn07XG4vKipcbiAqIEEgbGlzdCBvZiBtYXAgY29udHJvbCB2aXNpYmlsaXR5IGFuZCB3aGV0aGVyIGlzIGl0IGFjdGl2ZS5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IHZpc2libGVMYXllcnMgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSBtYXBMZWdlbmQgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSB0b2dnbGUzZCBEZWZhdWx0OiBge3Nob3c6IHRydWV9YFxuICogQHByb3BlcnR5IHNwbGl0TWFwIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZX1gXG4gKiBAcHJvcGVydHkgbWFwRHJhdyBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IG1hcExvY2FsZSBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IG1hcFRoZW1lIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHJvcGVydHkgdmlld3BvcnRKc29uIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9DT05UUk9MUzogTWFwQ29udHJvbHMgPSAoXG4gIE9iamVjdC5rZXlzKE1BUF9DT05UUk9MUykgYXMgQXJyYXk8a2V5b2YgdHlwZW9mIE1BUF9DT05UUk9MUz5cbikucmVkdWNlKFxuICAoZmluYWwsIGN1cnJlbnQpID0+ICh7XG4gICAgLi4uZmluYWwsXG4gICAgW2N1cnJlbnRdOlxuICAgICAgY3VycmVudCA9PT0gTUFQX0NPTlRST0xTLm1hcExlZ2VuZFxuICAgICAgICA/IERFRkFVTFRfTUFQX0xFR0VORF9DT05UUk9MXG4gICAgICAgIDogREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVNcbiAgfSksXG4gIHt9IGFzIE1hcENvbnRyb2xzXG4pO1xuXG4vKipcbiAqIERlZmF1bHQgaW1hZ2UgZXhwb3J0IGNvbmZpZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmF0aW8gRGVmYXVsdDogYCdTQ1JFRU4nYCxcbiAqIEBwcm9wZXJ0eSByZXNvbHV0aW9uIERlZmF1bHQ6IGAnT05FX1gnYCxcbiAqIEBwcm9wZXJ0eSBsZWdlbmQgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBjaGFydHMgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBtYXBIIERlZmF1bHQ6IDAsXG4gKiBAcHJvcGVydHkgbWFwVyBEZWZhdWx0OiAwLFxuICogQHByb3BlcnR5IGltYWdlU2l6ZSBEZWZhdWx0OiB7em9vbU9mZnNldDogMCwgc2NhbGU6IDEsIGltYWdlVzogMCwgaW1hZ2VIOiAwfSxcbiAqIEBwcm9wZXJ0eSBpbWFnZURhdGFVcmkgRGVmYXVsdDogYCcnYCxcbiAqIEBwcm9wZXJ0eSBleHBvcnRpbmcgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGVycm9yIERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSBlc2NhcGVYaHRtbEZvcldlYnBhY2sgRGVmYXVsdDogZnJvbSBhcHBsaWNhdGlvbiBjb25maWcgKGF1dG8tZGV0ZWN0ZWQ6IGB0cnVlYCBmb3Igd2VicGFjaylcbiAqIEBwcm9wZXJ0eSBmaWxlTmFtZSBEZWZhdWx0OiBgJydgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9JTUFHRTogRXhwb3J0SW1hZ2UgPSB7XG4gIC8vIHVzZXIgb3B0aW9uc1xuICByYXRpbzogRVhQT1JUX0lNR19SQVRJT1MuU0NSRUVOLFxuICByZXNvbHV0aW9uOiBSRVNPTFVUSU9OUy5PTkVfWCxcbiAgbGVnZW5kOiBmYWxzZSxcbiAgY2hhcnRzOiBmYWxzZSxcbiAgbWFwSDogMCxcbiAgbWFwVzogMCxcbiAgaW1hZ2VTaXplOiB7XG4gICAgem9vbU9mZnNldDogMCxcbiAgICBzY2FsZTogMSxcbiAgICBpbWFnZVc6IDAsXG4gICAgaW1hZ2VIOiAwXG4gIH0sXG4gIC8vIHdoZW4gdGhpcyBpcyBzZXQgdG8gdHJ1ZSwgdGhlIG1vY2sgbWFwIHZpZXdwb3J0IHdpbGwgbW92ZSB0byB0aGUgY2VudGVyIG9mIGRhdGFcbiAgY2VudGVyOiBmYWxzZSxcbiAgLy8gZXhwb3J0aW5nIHN0YXRlXG4gIGltYWdlRGF0YVVyaTogJycsXG4gIC8vIGV4cG9ydGluZzogdXNlZCB0byBhdHRhY2ggcGxvdC1jb250YWluZXIgdG8gZG9tXG4gIGV4cG9ydGluZzogZmFsc2UsXG4gIC8vIHByb2Nlc3Npbmc6IHVzZWQgYXMgbG9hZGluZyBpbmRpY2F0b3Igd2hlbiBleHBvcnQgaW1hZ2UgaXMgYmVpbmcgcHJvZHVjZWRcbiAgcHJvY2Vzc2luZzogZmFsc2UsXG4gIGVycm9yOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byBhcHBseSBmaXggZm9yIHVnbGlmeSBlcnJvciBpbiBkb20tdG8taW1hZ2UgKGZyb20gYXBwbGljYXRpb24gY29uZmlnLCBhdXRvLWRldGVjdHMgYnVpbGQgdG9vbClcbiAgZXNjYXBlWGh0bWxGb3JXZWJwYWNrOiBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmVzY2FwZVhodG1sRm9yV2VicGFjayxcbiAgZmlsZU5hbWU6ICcnXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MT0FEX0ZJTEVTID0ge1xuICBmaWxlTG9hZGluZzogZmFsc2Vcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBleHBvcnREYXRhYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgc2VsZWN0ZWREYXRhc2V0IERlZmF1bHQ6IGAnJ2AsXG4gKiBAcHJvcGVydHkgZGF0YVR5cGUgRGVmYXVsdDogYCdjc3YnYCxcbiAqIEBwcm9wZXJ0eSBmaWx0ZXJlZCBEZWZhdWx0OiBgdHJ1ZWAsXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9EQVRBOiBFeHBvcnREYXRhID0ge1xuICBzZWxlY3RlZERhdGFzZXQ6ICcnLFxuICBkYXRhVHlwZTogRVhQT1JUX0RBVEFfVFlQRS5DU1YsXG4gIGZpbHRlcmVkOiB0cnVlXG59O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05TID0gW107XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4gLSBEZWZhdWx0OiBudWxsLCB0aGlzIGlzIHVzZWQgd2hlbiB3ZSBwcm92aWRlIGEgZGVmYXVsdCBtYXBib3ggdG9rZW4gZm9yIHVzZXJzIHRvIHRha2UgYWR2YW50YWdlIG9mXG4gKiBAcHJvcGVydHkgdXNlck1hcGJveFRva2VuIC0gRGVmYXVsdDogJycsIG1hcGJveCB0b2tlbiBwcm92aWRlZCBieSB1c2VyIHRocm91Z2ggaW5wdXQgZmllbGRcbiAqIEBwcm9wZXJ0eSBtb2RlIC0gRGVmYXVsdDogJ1JFQUQnLCByZWFkIG9ubHkgb3IgZWRpdGFibGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX0hUTUw6IEV4cG9ydEh0bWwgPSB7XG4gIGV4cG9ydE1hcGJveEFjY2Vzc1Rva2VuOiBudWxsLFxuICB1c2VyTWFwYm94VG9rZW46ICcnLFxuICBtb2RlOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMuUkVBRFxufTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBoYXNEYXRhIC0gRGVmYXVsdDogJ3RydWUnLFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfSlNPTjogRXhwb3J0SnNvbiA9IHtcbiAgaGFzRGF0YTogdHJ1ZVxufTtcblxuLyoqXG4gKiBFeHBvcnQgTWFwIENvbmZpZ1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgSFRNTCAtIERlZmF1bHQ6ICdERUZBVUxUX0VYUE9SVF9IVE1MJyxcbiAqIEBwcm9wZXJ0eSBKU09OIC0gRGVmYXVsdDogJ0RFRkFVTFRfRVhQT1JUX0pTT04nLFxuICogQHByb3BlcnR5IGZvcm1hdCAtIERlZmF1bHQ6ICdIVE1MJyxcbiAqIEBwcm9wZXJ0eSBmaWxlTmFtZSBEZWZhdWx0OiBgJydgLFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfTUFQOiBFeHBvcnRNYXAgPSB7XG4gIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF06IERFRkFVTFRfRVhQT1JUX0hUTUwsXG4gIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSlNPTl06IERFRkFVTFRfRVhQT1JUX0pTT04sXG4gIGZvcm1hdDogRVhQT1JUX01BUF9GT1JNQVRTLkhUTUwsXG4gIGZpbGVOYW1lOiAnJ1xufTtcblxuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYGV4cG9ydFZpZGVvYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgbWVkaWFUeXBlIERlZmF1bHQ6IGAnd2VibSdgXG4gKiBAcHJvcGVydHkgY2FtZXJhUHJlc2V0IERlZmF1bHQ6IGAnTm9uZSdgXG4gKiBAcHJvcGVydHkgZmlsZU5hbWUgRGVmYXVsdDogYCdrZXBsZXIuZ2wnYFxuICogQHByb3BlcnR5IHJlc29sdXRpb24gRGVmYXVsdDogYCcxMjgweDcyMCdgXG4gKiBAcHJvcGVydHkgZHVyYXRpb25NcyBEZWZhdWx0OiBgMTAwMGBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX1ZJREVPOiBFeHBvcnRWaWRlbyA9IHtcbiAgbWVkaWFUeXBlOiAnd2VibScsIC8vIHVzZSB3ZWJtIGFzIGRlZmF1bHQgYXMgZ2lmIGV4cG9ydCB0ZW5kcyB0byBmcmVlemUgb24gbGFyZ2VyIHJlY29yZGluZ3NcbiAgY2FtZXJhUHJlc2V0OiAnTm9uZScsXG4gIGZpbGVOYW1lOiAna2VwbGVyLmdsJyxcbiAgcmVzb2x1dGlvbjogJzEyODB4NzIwJyxcbiAgZHVyYXRpb25NczogMTAwMCxcbiAgc3dpcGVTdGFydFBjdDogMCxcbiAgc3dpcGVFbmRQY3Q6IDEwMCxcbiAgc3dpcGVFYXNpbmc6ICdlYXNlLWluLW91dCdcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGB1aVN0YXRlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmVhZE9ubHkgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGFjdGl2ZVNpZGVQYW5lbCBEZWZhdWx0OiBgJ2xheWVyJ2BcbiAqIEBwcm9wZXJ0eSBjdXJyZW50TW9kYWwgRGVmYXVsdDogYCdhZGREYXRhJ2BcbiAqIEBwcm9wZXJ0eSBkYXRhc2V0S2V5VG9SZW1vdmUgRGVmYXVsdDogYG51bGxgXG4gKiBAcHJvcGVydHkgdmlzaWJsZURyb3Bkb3duIERlZmF1bHQ6IGBudWxsYFxuICogQHByb3BlcnR5IGV4cG9ydEltYWdlIERlZmF1bHQ6IFtgREVGQVVMVF9FWFBPUlRfSU1BR0VgXSgjZGVmYXVsdF9leHBvcnRfaW1hZ2UpXG4gKiBAcHJvcGVydHkgZXhwb3J0RGF0YSBEZWZhdWx0OiBbYERFRkFVTFRfRVhQT1JUX0RBVEFgXSgjZGVmYXVsdF9leHBvcnRfZGF0YSlcbiAqIEBwcm9wZXJ0eSBleHBvcnRNYXAgRGVmYXVsdDogW2BERUZBVUxUX0VYUE9SVF9NQVBgXSgjZGVmYXVsdF9leHBvcnRfbWFwKVxuICogQHByb3BlcnR5IG1hcENvbnRyb2xzIERlZmF1bHQ6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcHJvcGVydHkgbm90aWZpY2F0aW9ucyBEZWZhdWx0OiBgW11gXG4gKiBAcHJvcGVydHkgbm90aWZpY2F0aW9ucyBEZWZhdWx0OiBgW11gXG4gKiBAcHJvcGVydHkgbG9hZEZpbGVzXG4gKiBAcHJvcGVydHkgbG9jYWxlIERlZmF1bHQ6IGAnZW4nYFxuICogQHByb3BlcnR5IHRoZW1lIERlZmF1bHQ6IGAnZGFyaydgXG4gKiBAcHJvcGVydHkgaXNTaWRlUGFuZWxDbG9zZUJ1dHRvblZpc2libGUgRGVmYXVsdDogYHRydWVgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBJTklUSUFMX1VJX1NUQVRFOiBVaVN0YXRlID0ge1xuICByZWFkT25seTogZmFsc2UsXG4gIGFjdGl2ZVNpZGVQYW5lbDogREVGQVVMVF9BQ1RJVkVfU0lERV9QQU5FTCxcbiAgY3VycmVudE1vZGFsOiBERUZBVUxUX01PREFMLFxuICBkYXRhc2V0S2V5VG9SZW1vdmU6IG51bGwsXG4gIHZpc2libGVEcm9wZG93bjogbnVsbCxcbiAgLy8gZXhwb3J0IGltYWdlIG1vZGFsIHVpXG4gIGV4cG9ydEltYWdlOiBERUZBVUxUX0VYUE9SVF9JTUFHRSxcbiAgLy8gZXhwb3J0IGRhdGEgbW9kYWwgdWlcbiAgZXhwb3J0RGF0YTogREVGQVVMVF9FWFBPUlRfREFUQSxcbiAgLy8gaHRtbCBleHBvcnRcbiAgZXhwb3J0TWFwOiBERUZBVUxUX0VYUE9SVF9NQVAsXG4gIC8vIGV4cG9ydCB2aWRlbyBtb2RhbCB1aVxuICBleHBvcnRWaWRlbzogREVGQVVMVF9FWFBPUlRfVklERU8sXG4gIC8vIG1hcCBjb250cm9sIHBhbmVsc1xuICBtYXBDb250cm9sczogREVGQVVMVF9NQVBfQ09OVFJPTFMsXG4gIC8vIHVpIG5vdGlmaWNhdGlvbnNcbiAgbm90aWZpY2F0aW9uczogREVGQVVMVF9OT1RJRklDQVRJT05TLFxuICAvLyBsb2FkIGZpbGVzXG4gIGxvYWRGaWxlczogREVGQVVMVF9MT0FEX0ZJTEVTLFxuICAvLyBMb2NhbGUgb2YgdGhlIFVJXG4gIGxvY2FsZTogTE9DQUxFX0NPREVTLmVuLFxuICAvLyBUaGVtZSBvZiB0aGUgVUkgKGBsaWdodGAgfCBgZGFya2AgfCBgc3BhY2VgKS4gRmlyc3Qgb2YgYHRoZW1lc2AgaXMgdGhlIGRlZmF1bHQgd2hlbiBzZXQuXG4gIHRoZW1lOiBUSEVNRS5kYXJrLFxuICBsYXllclBhbmVsTGlzdFZpZXc6ICdsaXN0JyxcbiAgZmlsdGVyUGFuZWxMaXN0VmlldzogJ2xpc3QnLFxuICBpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZTogdHJ1ZVxufTtcblxuLyogVXBkYXRlcnMgKi9cbi8qKlxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICovXG5leHBvcnQgY29uc3QgaW5pdFVpU3RhdGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAgYWN0aW9uOiB7XG4gICAgdHlwZT86ICh0eXBlb2YgQWN0aW9uVHlwZXMpWydJTklUJ107XG4gICAgcGF5bG9hZDogS2VwbGVyR2xJbml0UGF5bG9hZDtcbiAgfVxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IGluaXRpYWxVaVN0YXRlID0gKGFjdGlvbi5wYXlsb2FkIHx8IHt9KS5pbml0aWFsVWlTdGF0ZSB8fCB7fTtcbiAgY29uc3QgdGhlbWVzID0gZ2V0Q29uZmlndXJlZFRoZW1lcygpO1xuICBjb25zdCByZXF1ZXN0ZWQgPSBpbml0aWFsVWlTdGF0ZS50aGVtZSA/PyBzdGF0ZS50aGVtZTtcbiAgY29uc3QgdGhlbWUgPVxuICAgIHRoZW1lcy5sZW5ndGggPT09IDAgPyByZXF1ZXN0ZWQgOiB0aGVtZXMuaW5jbHVkZXMocmVxdWVzdGVkKSA/IHJlcXVlc3RlZCA6IGdldERlZmF1bHRVaVRoZW1lKCk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi5pbml0aWFsVWlTdGF0ZSxcbiAgICB0aGVtZVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBpZCBvZiBzaWRlIHBhbmVsIHRvIGJlIHNob3duLCBvbmUgb2YgYGxheWVyYCwgYGZpbHRlcmAsIGBpbnRlcmFjdGlvbmAsIGBtYXBgLiBjbG9zZSBzaWRlIHBhbmVsIGlmIGBudWxsYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTaWRlUGFuZWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGlkfTogVUlTdGF0ZUFjdGlvbnMuVG9nZ2xlU2lkZVBhbmVsVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIHJldHVybiBpZCA9PT0gc3RhdGUuYWN0aXZlU2lkZVBhbmVsXG4gICAgPyBzdGF0ZVxuICAgIDoge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYWN0aXZlU2lkZVBhbmVsOiBpZFxuICAgICAgfTtcbn07XG5cbi8qKlxuICogU2hvdyBhbmQgaGlkZSBtb2RhbCBkaWFsb2dcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbWFjdGlvbi5wYXlsb2FkIGlkIG9mIG1vZGFsIHRvIGJlIHNob3duLCBudWxsIHRvIGhpZGUgbW9kYWxzLiBPbmUgb2Y6XG4gKiAgLSBbYERBVEFfVEFCTEVfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNkYXRhX3RhYmxlX2lkKVxuICogIC0gW2BERUxFVEVfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2RlbGV0ZV9kYXRhX2lkKVxuICogIC0gW2BBRERfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2FkZF9kYXRhX2lkKVxuICogIC0gW2BFWFBPUlRfSU1BR0VfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNleHBvcnRfaW1hZ2VfaWQpXG4gKiAgLSBbYEVYUE9SVF9EQVRBX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZXhwb3J0X2RhdGFfaWQpXG4gKiAgLSBbYEFERF9NQVBfU1RZTEVfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNhZGRfbWFwX3N0eWxlX2lkKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVNb2RhbFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogaWRcbn0pO1xuXG4vKipcbiAqIEhpZGUgYW5kIHNob3cgc2lkZSBwYW5lbCBoZWFkZXIgZHJvcGRvd24sIGFjdGl2YXRlZCBieSBjbGlja2luZyB0aGUgc2hhcmUgbGluayBvbiB0b3Agb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNob3dFeHBvcnREcm9wZG93blVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5TaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICB2aXNpYmxlRHJvcGRvd246IGlkXG59KTtcblxuLyoqXG4gKiBIaWRlIHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBoaWRlRXhwb3J0RHJvcGRvd25VcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgdmlzaWJsZURyb3Bkb3duOiBudWxsXG59KTtcblxuLyoqXG4gKiBUb2dnbGUgc2lkZSBwYW5lbCBjbG9zZSBidXR0b24gb24gdG9wIGxlZnQgb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNpZGVQYW5lbENsb3NlQnV0dG9uVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7c2hvd319OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVTaWRlUGFuZWxDbG9zZUJ1dHRvblVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGlzU2lkZVBhbmVsQ2xvc2VCdXR0b25WaXNpYmxlOiBzaG93XG59KTtcblxuLy8gTWFwIGNvbnRyb2wgZHJvcGRvd25zL21lbnVzIHRoYXQgb3ZlcmxhcCBlYWNoIG90aGVyIHZpc3VhbGx5IGFuZCB0aGVyZWZvcmVcbi8vIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmU6IG9wZW5pbmcgb25lIGNsb3NlcyBhbGwgdGhlIG90aGVycy5cbi8vIChzcGxpdC92aWV3LW1vZGUgbWVudSwgdG9wLzNkL2dsb2JlIG1lbnUsIHBvbHlnb24gZHJhdyB0b29sLCBsYW5ndWFnZSBtZW51KVxuZXhwb3J0IGNvbnN0IE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFM6IHN0cmluZ1tdID0gW1xuICBNQVBfQ09OVFJPTFMuc3BsaXRNYXAsXG4gIE1BUF9DT05UUk9MUy50b2dnbGUzZCxcbiAgTUFQX0NPTlRST0xTLm1hcERyYXcsXG4gIE1BUF9DT05UUk9MUy5tYXBMb2NhbGVcbl07XG5cbi8qKlxuICogVG9nZ2xlIGFjdGl2ZSBtYXAgY29udHJvbCBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvbiBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVNYXBDb250cm9sVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgaW5kZXggPSAwfX06IFVJU3RhdGVBY3Rpb25zLlRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgbGV0IHVwZGF0ZWRTdGF0ZSA9IHN0YXRlO1xuXG4gIC8vIFRoZSBvdmVybGFwcGluZyBtYXAgY29udHJvbCBtZW51cyBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlOiB3aGVuIG9uZSBvZlxuICAvLyB0aGVtIGlzIGJlaW5nIG9wZW5lZCwgZGVhY3RpdmF0ZSBldmVyeSBvdGhlciBvbmUgdGhhdCBpcyBjdXJyZW50bHkgYWN0aXZlXG4gIC8vIHNvIHRoZWlyIGRyb3Bkb3ducyBuZXZlciBvdmVybGFwIG9uIHNjcmVlbi5cbiAgY29uc3QgaXNPcGVuaW5nID0gIXVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXT8uYWN0aXZlO1xuICBpZiAoaXNPcGVuaW5nICYmIE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFMuaW5jbHVkZXMocGFuZWxJZCkpIHtcbiAgICBjb25zdCBuZXh0TWFwQ29udHJvbHMgPSB7Li4udXBkYXRlZFN0YXRlLm1hcENvbnRyb2xzfTtcbiAgICBsZXQgZGlkRGVhY3RpdmF0ZSA9IGZhbHNlO1xuICAgIE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFMuZm9yRWFjaChjb250cm9sSWQgPT4ge1xuICAgICAgaWYgKGNvbnRyb2xJZCAhPT0gcGFuZWxJZCAmJiBuZXh0TWFwQ29udHJvbHNbY29udHJvbElkXT8uYWN0aXZlKSB7XG4gICAgICAgIG5leHRNYXBDb250cm9sc1tjb250cm9sSWRdID0gey4uLm5leHRNYXBDb250cm9sc1tjb250cm9sSWRdLCBhY3RpdmU6IGZhbHNlfTtcbiAgICAgICAgZGlkRGVhY3RpdmF0ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGRpZERlYWN0aXZhdGUpIHtcbiAgICAgIHVwZGF0ZWRTdGF0ZSA9IHsuLi51cGRhdGVkU3RhdGUsIG1hcENvbnRyb2xzOiBuZXh0TWFwQ29udHJvbHN9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4udXBkYXRlZFN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi51cGRhdGVkU3RhdGUubWFwQ29udHJvbHMsXG4gICAgICBbcGFuZWxJZF06IHtcbiAgICAgICAgLi4uKHVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXSBhcyBNYXBDb250cm9sSXRlbSksXG4gICAgICAgIGFjdGl2ZTogIXVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXT8uYWN0aXZlLFxuICAgICAgICBhY3RpdmVNYXBJbmRleDogaW5kZXhcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBtYXAgY29udHJvbCB2aXNpYmlsaXR5XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG1hcCBjb250cm9sIHBhbmVsIGlkLCBvbmUgb2YgdGhlIGtleXMgb2Y6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgc2hvd319OiBVSVN0YXRlQWN0aW9ucy5zZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBpZiAoIXN0YXRlLm1hcENvbnRyb2xzPy5bcGFuZWxJZF0pIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi5zdGF0ZS5tYXBDb250cm9scyxcbiAgICAgIFtwYW5lbElkXToge1xuICAgICAgICAuLi5zdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXSxcbiAgICAgICAgc2hvdzogQm9vbGVhbihzaG93KVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogVG9nZ2xlIG1hcCBjb250cm9sIHNldHRpbmdzXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG1hcCBjb250cm9sIHBhbmVsIGlkLCBvbmUgb2YgdGhlIGtleXMgb2Y6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3BhbmVsSWQsIHNldHRpbmdzfX06IFVJU3RhdGVBY3Rpb25zLnNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBtYXBDb250cm9sID0gc3RhdGUubWFwQ29udHJvbHM/LltwYW5lbElkXSBhcyBNYXBDb250cm9sTWFwTGVnZW5kIHwgdW5kZWZpbmVkO1xuICBpZiAoIW1hcENvbnRyb2wpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi5zdGF0ZS5tYXBDb250cm9scyxcbiAgICAgIFtwYW5lbElkXToge1xuICAgICAgICAuLi5tYXBDb250cm9sLFxuICAgICAgICBzZXR0aW5nczogey4uLm1hcENvbnRyb2wuc2V0dGluZ3MsIC4uLnNldHRpbmdzfVxuICAgICAgfSBhcyBNYXBDb250cm9sTWFwTGVnZW5kXG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIG1hcCBjb250cm9sIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuRGVsZXRlTW9kYWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFzZXRLZXlUb1JlbW92ZX06IFVJU3RhdGVBY3Rpb25zLk9wZW5EZWxldGVNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogREVMRVRFX0RBVEFfSUQsXG4gIGRhdGFzZXRLZXlUb1JlbW92ZVxufSk7XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZWAgb3B0aW9ucyBzdWNoIGFzIGBsZWdlbmRgIGFuZCBgY2hhcnRzYCB0byBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG5ld1NldHRpbmd9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3QgdXBkYXRlZCA9IHsuLi5zdGF0ZS5leHBvcnRJbWFnZSwgLi4ubmV3U2V0dGluZ307XG4gIGNvbnN0IGltYWdlU2l6ZSA9IGNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSh1cGRhdGVkKSB8fCBzdGF0ZS5leHBvcnRJbWFnZS5pbWFnZVNpemU7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBleHBvcnRJbWFnZToge1xuICAgICAgLi4udXBkYXRlZCxcbiAgICAgIGltYWdlU2l6ZVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5zZXRFeHBvcnRJbWFnZURhdGFVcmlgIHRvIGEgaW1hZ2UgZGF0YVVyaVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGV4cG9ydCBpbWFnZSBkYXRhIHVyaVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFVcml9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgaWYgKGRhdGFVcmkgPT09IHN0YXRlLmV4cG9ydEltYWdlLmltYWdlRGF0YVVyaSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGV4cG9ydEltYWdlOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgICAgaW1hZ2VEYXRhVXJpOiBkYXRhVXJpXG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBlcnJvcn06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRJbWFnZToge1xuICAgIC4uLnN0YXRlLmV4cG9ydEltYWdlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGVycm9yXG4gIH1cbn0pO1xuXG4vKipcbiAqIERlbGV0ZSBjYWNoZWQgZXhwb3J0IGltYWdlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBjbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0SW1hZ2U6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICBleHBvcnRpbmc6IGZhbHNlLFxuICAgIGltYWdlRGF0YVVyaTogJycsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGNlbnRlcjogZmFsc2VcbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IGBleHBvcnRWaWRlb2Agc2V0dGluZ3M6IG1lZGlhVHlwZSwgY2FtZXJhUHJlc2V0LCBmaWxlTmFtZSwgcmVzb2x1dGlvbiwgZHVyYXRpb25Nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG5ldyB2aWRlbyBleHBvcnQgc2V0dGluZ3NcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0VmlkZW9TZXR0aW5nVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBuZXdTZXR0aW5nfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0VmlkZW9TZXR0aW5nVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0VmlkZW86IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRWaWRlbyxcbiAgICAuLi5uZXdTZXR0aW5nXG4gIH1cbn0pO1xuXG4vKipcbiAqIFN0YXJ0IGltYWdlIGV4cG9ydGluZyBmbG93XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyB7VWlTdGF0ZX1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0RXhwb3J0aW5nSW1hZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG9wdGlvbnMgPSB7fX06IHtwYXlsb2FkOiBQYXJ0aWFsPEV4cG9ydEltYWdlPn1cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBpbWFnZVNldHRpbmdzID0ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgZXhwb3J0aW5nOiB0cnVlXG4gIH07XG5cbiAgcmV0dXJuIGNvbXBvc2VfKFtcbiAgICBjbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyLFxuICAgIGFwcGx5XyhzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyLCBwYXlsb2FkXyhpbWFnZVNldHRpbmdzKSlcbiAgXSkoc3RhdGUpO1xufTtcblxuLyoqXG4gKiBTZXQgc2VsZWN0ZWQgZGF0YXNldCBmb3IgZXhwb3J0XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFzZXR9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBzZWxlY3RlZERhdGFzZXQ6IGRhdGFzZXRcbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IGRhdGEgZm9ybWF0IGZvciBleHBvcnRpbmcgZGF0YVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG9uZSBvZiBgJ3RleHQvY3N2J2BcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVR5cGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFUeXBlfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0RGF0YVR5cGVVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBkYXRhVHlwZVxuICB9XG59KTtcblxuLyoqXG4gKiBXaGV0aGVyIHRvIGV4cG9ydCBmaWx0ZXJlZCBkYXRhLCBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEZpbHRlcmVkVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBmaWx0ZXJlZH06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEZpbHRlcmVkVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0RGF0YToge1xuICAgIC4uLnN0YXRlLmV4cG9ydERhdGEsXG4gICAgZmlsdGVyZWRcbiAgfVxufSk7XG5cbi8qKlxuICogV2hldGhlciB0byBpbmNsdWRpbmcgZGF0YSBpbiBtYXAgY29uZmlnLCB0b2dnbGUgYmV0d2VlbiBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnREYXRhVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dLFxuICAgICAgaGFzRGF0YTogIXN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSlNPTl0uaGFzRGF0YVxuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogd2hldGhlciB0byBleHBvcnQgYSBtYXBib3ggYWNjZXNzIHRvIEhUTUwgc2luZ2xlIHBhZ2VcbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogdXNlck1hcGJveFRva2VufTogVUlTdGF0ZUFjdGlvbnMuU2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF06IHtcbiAgICAgIC4uLnN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF0sXG4gICAgICB1c2VyTWFwYm94VG9rZW5cbiAgICB9XG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldHMgdGhlIGV4cG9ydCBtYXAgZm9ybWF0XG4gKiBAcGFyYW0gc3RhdGUgLSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBmb3JtYXQgdG8gdXNlIHRvIGV4cG9ydCB0aGUgbWFwIGludG9cbiAqIEByZXR1cm4gbmV4dFN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGZvcm1hdH06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgZm9ybWF0XG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgZmlsZW5hbWUgdXNlZCB3aGVuIGV4cG9ydGluZyBhbiBIVE1MIG9yIEpTT04gbWFwXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZmlsZSBuYW1lIHdpdGhvdXQgZXh0ZW5zaW9uXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydE1hcEZpbGVOYW1lVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBmaWxlTmFtZX06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydE1hcEZpbGVOYW1lVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIGZpbGVOYW1lXG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgZXhwb3J0IGh0bWwgbWFwIG1vZGVcbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIHRvIGJlIHNldCAoYXZhaWxhYmxlIG1vZGVzOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMpXG4gKiBAcmV0dXJuIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwSFRNTE1vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG1vZGV9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRIVE1MTWFwTW9kZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdLFxuICAgICAgbW9kZVxuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogQWRkcyBhIG5ldyBub3RpZmljYXRpb24uXG4gKiBVcGRhdGVzIGEgbm90aWZpY2F0aW9uIGluIGNhc2Ugb2YgbWF0Y2hpbmcgaWRzLlxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIFBhcmFtcyBvZiBhIG5vdGlmaWNhdGlvblxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBhZGROb3RpZmljYXRpb25VcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWR9OiBVSVN0YXRlQWN0aW9ucy5BZGROb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3Qgb2xkTm90aWZpY2F0aW9ucyA9IHN0YXRlLm5vdGlmaWNhdGlvbnMgfHwgW107XG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgY29uc3QgcGF5bG9hZElkID0gcGF5bG9hZD8uaWQ7XG4gIGNvbnN0IG5vdGlmaWNhdGlvblRvVXBkYXRlID0gcGF5bG9hZElkID8gb2xkTm90aWZpY2F0aW9ucy5maW5kKG4gPT4gbi5pZCA9PT0gcGF5bG9hZElkKSA6IG51bGw7XG5cbiAgbGV0IG5vdGlmaWNhdGlvbnM7XG4gIGlmIChub3RpZmljYXRpb25Ub1VwZGF0ZSkge1xuICAgIG5vdGlmaWNhdGlvbnMgPSBvbGROb3RpZmljYXRpb25zLm1hcChuID0+XG4gICAgICBuLmlkID09PSBwYXlsb2FkSWQgPyBjcmVhdGVOb3RpZmljYXRpb24oey4uLnBheWxvYWQsIGNvdW50OiBuLmNvdW50ICsgMX0pIDogblxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgbm90aWZpY2F0aW9ucyA9IFsuLi5vbGROb3RpZmljYXRpb25zLCBjcmVhdGVOb3RpZmljYXRpb24ocGF5bG9hZCldO1xuICB9XG5cbiAgcmV0dXJuIHsuLi5zdGF0ZSwgbm90aWZpY2F0aW9uc307XG59O1xuXG4vKipcbiAqIFJlbW92ZSBhIG5vdGlmaWNhdGlvblxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGlkIG9mIHRoZSBub3RpZmljYXRpb24gdG8gYmUgcmVtb3ZlZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGlkfTogVUlTdGF0ZUFjdGlvbnMuUmVtb3ZlTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbm90aWZpY2F0aW9uczogc3RhdGUubm90aWZpY2F0aW9ucy5maWx0ZXIobiA9PiBuLmlkICE9PSBpZClcbn0pO1xuXG4vKipcbiAqIEZpcmVkIHdoZW4gZmlsZSBsb2FkaW5nIGJlZ2luXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRGaWxlc1VwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBsb2FkRmlsZXM6IHtcbiAgICAuLi5zdGF0ZS5sb2FkRmlsZXMsXG4gICAgZmlsZUxvYWRpbmc6IHRydWVcbiAgfVxufSk7XG5cbi8qKlxuICogSGFuZGxlcyBsb2FkaW5nIGZpbGUgc3VjY2VzcyBhbmQgc2V0IGZpbGVMb2FkaW5nIHByb3BlcnR5IHRvIGZhbHNlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbG9hZEZpbGVzOiB7XG4gICAgLi4uc3RhdGUubG9hZEZpbGVzLFxuICAgIGZpbGVMb2FkaW5nOiBmYWxzZVxuICB9XG59KTtcblxuLyoqXG4gKiBIYW5kbGVzIGxvYWQgZmlsZSBlcnJvciBhbmQgc2V0IGZpbGVMb2FkaW5nIHByb3BlcnR5IHRvIGZhbHNlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24uZXJyb3JcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzRXJyVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSwge2Vycm9yfTogTG9hZEZpbGVzRXJyVXBkYXRlckFjdGlvbik6IFVpU3RhdGUgPT5cbiAgYWRkTm90aWZpY2F0aW9uVXBkYXRlcihcbiAgICB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGxvYWRGaWxlczoge1xuICAgICAgICAuLi5zdGF0ZS5sb2FkRmlsZXMsXG4gICAgICAgIGZpbGVMb2FkaW5nOiBmYWxzZVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgcGF5bG9hZDogZXJyb3JOb3RpZmljYXRpb24oe1xuICAgICAgICBtZXNzYWdlOiAoZXJyb3IgfHwge30pLm1lc3NhZ2UgfHwgJ0ZhaWxlZCB0byB1cGxvYWQgZmlsZXMnLFxuICAgICAgICB0b3BpYzogREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTLmdsb2JhbFxuICAgICAgfSlcbiAgICB9XG4gICk7XG5cbi8qKlxuICogSGFuZGxlcyB0b2dnbGUgbWFwIHNwbGl0IGFuZCByZXNldCBhbGwgbWFwIGNvbnRyb2wgaW5kZXggdG8gMFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIG1hcENvbnRyb2xzOiBPYmplY3QuZW50cmllcyhzdGF0ZS5tYXBDb250cm9scykucmVkdWNlKFxuICAgIChhY2MsIGVudHJ5KSA9PiAoe1xuICAgICAgLi4uYWNjLFxuICAgICAgW2VudHJ5WzBdXToge1xuICAgICAgICAuLi4oZW50cnlbMV0gYXMgTWFwQ29udHJvbEl0ZW0pLFxuICAgICAgICBhY3RpdmVNYXBJbmRleDogMFxuICAgICAgfVxuICAgIH0pLFxuICAgIHt9IGFzIE1hcENvbnRyb2xzXG4gIClcbn0pO1xuXG4vKipcbiAqIFRvZ2dsZSBtb2RhbCBkYXRhXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+XG4gIHRvZ2dsZU1vZGFsVXBkYXRlcihzdGF0ZSwge3BheWxvYWQ6IERBVEFfVEFCTEVfSUR9KTtcblxuLyoqXG4gKiBTZXQgdGhlIGxvY2FsZSBvZiB0aGUgVUlcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZFxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkLmxvY2FsZSBsb2NhbGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0TG9jYWxlVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7bG9jYWxlfX06IFVJU3RhdGVBY3Rpb25zLlNldExvY2FsZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGxvY2FsZVxufSk7XG5cbi8qKlxuICogU2V0IHRoZSB0aGVtZSBvZiB0aGUgVUlcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZFxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkLnRoZW1lIHRoZW1lXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFRoZW1lVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7dGhlbWV9fTogVUlTdGF0ZUFjdGlvbnMuU2V0VGhlbWVVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICB0aGVtZVxufSk7XG5cbi8qKlxuICogVG9nZ2xlIGxheWVyIHBhbmVsIGxpc3Qgdmlld1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGxheWVyIHBhbmVsIGxpc3RWaWV3IHZhbHVlLiBDYW4gYmUgJ2xpc3QnIG9yICdzb3J0QnlEYXRhc2V0J1xuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVQYW5lbExpc3RWaWV3VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgbGlzdFZpZXd9fTogVUlTdGF0ZUFjdGlvbnMuVG9nZ2xlUGFuZWxMaXN0Vmlld0FjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IHN0YXRlUHJvcCA9XG4gICAgcGFuZWxJZCA9PT0gJ2xheWVyJ1xuICAgICAgPyAnbGF5ZXJQYW5lbExpc3RWaWV3J1xuICAgICAgOiBwYW5lbElkID09PSAnZmlsdGVyJ1xuICAgICAgPyAnZmlsdGVyUGFuZWxMaXN0VmlldydcbiAgICAgIDogbnVsbDtcbiAgaWYgKCFzdGF0ZVByb3AgfHwgc3RhdGVbc3RhdGVQcm9wXSA9PT0gbGlzdFZpZXcpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBbc3RhdGVQcm9wXTogbGlzdFZpZXdcbiAgfTtcbn07XG5cbi8qKlxuICogTWVyZ2UgcmVjZWl2ZWQgdWkgc3RhdGUgY29uZmlnIHdoZW4gbG9hZGluZyBhIHNhdmVkIG1hcFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIHNhdmVkIG1hcCBjb25maWcgYHttYXBTdHlsZSwgdmlzU3RhdGUsIG1hcFN0YXRlLCB1aVN0YXRlfWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7XG4gICAgcGF5bG9hZDoge2NvbmZpZ31cbiAgfToge1xuICAgIHR5cGU/OiAodHlwZW9mIEFjdGlvblR5cGVzKVsnUkVDRUlWRV9NQVBfQ09ORklHJ107XG4gICAgcGF5bG9hZDogUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQ7XG4gIH1cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCB7dWlTdGF0ZX0gPSBjb25maWcgfHwge307XG4gIGlmICghdWlTdGF0ZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGxldCBuZXdTdGF0ZSA9IHN0YXRlO1xuXG4gIGlmICh1aVN0YXRlLm1hcENvbnRyb2xzPy5tYXBMZWdlbmQ/LmFjdGl2ZSkge1xuICAgIGNvbnN0IGN1cnJlbnRMZWdlbmQgPSBuZXdTdGF0ZS5tYXBDb250cm9scy5tYXBMZWdlbmQ7XG4gICAgbmV3U3RhdGUgPSB7XG4gICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAgIC4uLm5ld1N0YXRlLm1hcENvbnRyb2xzLFxuICAgICAgICBtYXBMZWdlbmQ6IHtcbiAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgIC4uLmN1cnJlbnRMZWdlbmQsXG4gICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgIGFjdGl2ZU1hcEluZGV4OiAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgaWYgKHVpU3RhdGUubWFwQ29udHJvbHM/LmNoYXJ0Py5hY3RpdmUpIHtcbiAgICBjb25zdCBjdXJyZW50Q2hhcnQgPSBuZXdTdGF0ZS5tYXBDb250cm9scy5jaGFydDtcbiAgICBuZXdTdGF0ZSA9IHtcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgICAgbWFwQ29udHJvbHM6IHtcbiAgICAgICAgLi4ubmV3U3RhdGUubWFwQ29udHJvbHMsXG4gICAgICAgIGNoYXJ0OiB7XG4gICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICAuLi5jdXJyZW50Q2hhcnQsXG4gICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgIGFjdGl2ZU1hcEluZGV4OiAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgaWYgKHVpU3RhdGUubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uc2V0dGluZ3MpIHtcbiAgICBuZXdTdGF0ZSA9IHNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIobmV3U3RhdGUsIHtcbiAgICAgIHBheWxvYWQ6IHtwYW5lbElkOiAnbWFwTGVnZW5kJywgc2V0dGluZ3M6IHVpU3RhdGUubWFwQ29udHJvbHMubWFwTGVnZW5kLnNldHRpbmdzfVxuICAgIH0gYXMgVUlTdGF0ZUFjdGlvbnMuc2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlckFjdGlvbik7XG4gIH1cblxuICBpZiAodWlTdGF0ZS5sb2NhbGUpIHtcbiAgICBuZXdTdGF0ZSA9IHNldExvY2FsZVVwZGF0ZXIobmV3U3RhdGUsIHtcbiAgICAgIHBheWxvYWQ6IHtsb2NhbGU6IHVpU3RhdGUubG9jYWxlfVxuICAgIH0gYXMgVUlTdGF0ZUFjdGlvbnMuU2V0TG9jYWxlVXBkYXRlckFjdGlvbik7XG4gIH1cblxuICBpZiAodWlTdGF0ZS50aGVtZSkge1xuICAgIG5ld1N0YXRlID0gc2V0VGhlbWVVcGRhdGVyKG5ld1N0YXRlLCB7XG4gICAgICBwYXlsb2FkOiB7dGhlbWU6IHVpU3RhdGUudGhlbWV9XG4gICAgfSBhcyBVSVN0YXRlQWN0aW9ucy5TZXRUaGVtZVVwZGF0ZXJBY3Rpb24pO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUEsU0FDRUEsV0FBVyxFQUNYQyxhQUFhLEVBQ2JDLDJCQUEyQixFQUMzQkMsY0FBYyxFQUNkQyxnQkFBZ0IsRUFDaEJDLHFCQUFxQixFQUNyQkMsaUJBQWlCLEVBQ2pCQyxrQkFBa0IsRUFDbEJDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxLQUFLLFFBQ0Esc0JBQXNCO0FBQzdCLFNBQVFDLFlBQVksUUFBTyx5QkFBeUI7QUFDcEQsU0FDRUMsa0JBQWtCLEVBQ2xCQyxpQkFBaUIsRUFDakJDLHdCQUF3QixFQUN4QkMsb0JBQW9CLEVBQ3BCQyxt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VUFDWkUsY0FBYyxFQUFFO1FBQUM7TUFDbEI7SUFDRixFQUNGO0VBQ0g7RUFFQSxLQUFBMk0scUJBQUEsR0FBSUksT0FBTyxDQUFDM0ksV0FBVyxjQUFBdUkscUJBQUEsZ0JBQUFBLHFCQUFBLEdBQW5CQSxxQkFBQSxDQUFxQk8sS0FBSyxjQUFBUCxxQkFBQSxlQUExQkEscUJBQUEsQ0FBNEI3TSxNQUFNLEVBQUU7SUFDdEMsSUFBTXFOLFlBQVksR0FBR0gsUUFBUSxDQUFDNUksV0FBVyxDQUFDOEksS0FBSztJQUMvQ0YsUUFBUSxHQUFBOU0sYUFBQSxDQUFBQSxhQUFBLEtBQ0g4TSxRQUFRO01BQ1g1SSxXQUFXLEVBQUFsRSxhQUFBLENBQUFBLGFBQUEsS0FDTjhNLFFBQVEsQ0FBQzVJLFdBQVc7UUFDdkI4SSxLQUFLLEVBQUFoTixhQUFBLENBQUFBLGFBQUE7VUFDSEwsSUFBSSxFQUFFO1FBQUksR0FDUHNOLFlBQVk7VUFDZnJOLE1BQU0sRUFBRSxJQUFJO1VBQ1pFLGNBQWMsRUFBRTtRQUFDO01BQ2xCO0lBQ0YsRUFDRjtFQUNIO0VBRUEsS0FBQTRNLHFCQUFBLEdBQUlHLE9BQU8sQ0FBQzNJLFdBQVcsY0FBQXdJLHFCQUFBLGdCQUFBQSxxQkFBQSxHQUFuQkEscUJBQUEsQ0FBcUJqTSxTQUFTLGNBQUFpTSxxQkFBQSxlQUE5QkEscUJBQUEsQ0FBZ0M3RSxRQUFRLEVBQUU7SUFDNUNpRixRQUFRLEdBQUdyRiw0QkFBNEIsQ0FBQ3FGLFFBQVEsRUFBRTtNQUNoRDdILE9BQU8sRUFBRTtRQUFDeUIsT0FBTyxFQUFFLFdBQVc7UUFBRW1CLFFBQVEsRUFBRWdGLE9BQU8sQ0FBQzNJLFdBQVcsQ0FBQ3pELFNBQVMsQ0FBQ29IO01BQVE7SUFDbEYsQ0FBc0QsQ0FBQztFQUN6RDtFQUVBLElBQUlnRixPQUFPLENBQUN4SSxNQUFNLEVBQUU7SUFDbEJ5SSxRQUFRLEdBQUdqQixnQkFBZ0IsQ0FBQ2lCLFFBQVEsRUFBRTtNQUNwQzdILE9BQU8sRUFBRTtRQUFDWixNQUFNLEVBQUV3SSxPQUFPLENBQUN4STtNQUFNO0lBQ2xDLENBQTBDLENBQUM7RUFDN0M7RUFFQSxJQUFJd0ksT0FBTyxDQUFDdEksS0FBSyxFQUFFO0lBQ2pCdUksUUFBUSxHQUFHZixlQUFlLENBQUNlLFFBQVEsRUFBRTtNQUNuQzdILE9BQU8sRUFBRTtRQUFDVixLQUFLLEVBQUVzSSxPQUFPLENBQUN0STtNQUFLO0lBQ2hDLENBQXlDLENBQUM7RUFDNUM7RUFFQSxPQUFPdUksUUFBUTtBQUNqQixDQUFDIiwiaWdub3JlTGlzdCI6W119
|