@kepler.gl/reducers 3.3.0-alpha.14 → 3.3.0-alpha.16
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/combined-updaters.js +166 -8
- package/dist/cjs/composers.js +4 -5
- package/dist/cjs/dataset-ops-updaters.js +289 -0
- package/dist/cjs/dataset-ops-updaters.spec.js +257 -0
- package/dist/cjs/interaction-utils.js +156 -4
- package/dist/cjs/layer-utils.js +133 -8
- package/dist/cjs/ui-state-updaters.js +115 -48
- package/dist/cjs/ui-state.js +2 -2
- package/dist/cjs/vis-state-merger.js +35 -4
- package/dist/cjs/vis-state-selectors.js +5 -4
- package/dist/cjs/vis-state-updaters.js +731 -232
- package/dist/cjs/vis-state.js +2 -2
- package/dist/combined-updaters.d.ts +21 -1
- package/dist/composers.d.ts +3 -0
- package/dist/dataset-ops-updaters.d.ts +18 -0
- package/dist/dataset-ops-updaters.spec.d.ts +1 -0
- package/dist/esm/combined-updaters.js +166 -8
- package/dist/esm/composers.js +3 -2
- package/dist/esm/dataset-ops-updaters.js +274 -0
- package/dist/esm/dataset-ops-updaters.spec.js +256 -0
- package/dist/esm/interaction-utils.js +150 -1
- package/dist/esm/layer-utils.js +131 -8
- package/dist/esm/ui-state-updaters.js +115 -48
- package/dist/esm/ui-state.js +2 -2
- package/dist/esm/vis-state-merger.js +35 -4
- package/dist/esm/vis-state-selectors.js +5 -4
- package/dist/esm/vis-state-updaters.js +687 -237
- package/dist/esm/vis-state.js +2 -2
- package/dist/interaction-utils.d.ts +21 -1
- package/dist/layer-utils.d.ts +16 -0
- package/dist/ui-state-updaters.d.ts +32 -0
- package/dist/vis-state-updaters.d.ts +38 -12
- package/dist/vis-state.d.ts +20 -0
- package/package.json +16 -16
|
@@ -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;
|
|
@@ -96,6 +96,7 @@ export var DEFAULT_MAP_CONTROLS = Object.keys(MAP_CONTROLS).reduce(function (_fi
|
|
|
96
96
|
* @property exporting Default: `false`
|
|
97
97
|
* @property error Default: `false`
|
|
98
98
|
* @property escapeXhtmlForWebpack Default: from application config (auto-detected: `true` for webpack)
|
|
99
|
+
* @property fileName Default: `''`
|
|
99
100
|
* @public
|
|
100
101
|
*/
|
|
101
102
|
export var DEFAULT_EXPORT_IMAGE = {
|
|
@@ -122,7 +123,8 @@ export var DEFAULT_EXPORT_IMAGE = {
|
|
|
122
123
|
processing: false,
|
|
123
124
|
error: false,
|
|
124
125
|
// whether to apply fix for uglify error in dom-to-image (from application config, auto-detects build tool)
|
|
125
|
-
escapeXhtmlForWebpack: getApplicationConfig().escapeXhtmlForWebpack
|
|
126
|
+
escapeXhtmlForWebpack: getApplicationConfig().escapeXhtmlForWebpack,
|
|
127
|
+
fileName: ''
|
|
126
128
|
};
|
|
127
129
|
export var DEFAULT_LOAD_FILES = {
|
|
128
130
|
fileLoading: false
|
|
@@ -176,9 +178,11 @@ export var DEFAULT_EXPORT_JSON = {
|
|
|
176
178
|
* @property HTML - Default: 'DEFAULT_EXPORT_HTML',
|
|
177
179
|
* @property JSON - Default: 'DEFAULT_EXPORT_JSON',
|
|
178
180
|
* @property format - Default: 'HTML',
|
|
181
|
+
* @property fileName Default: `''`,
|
|
182
|
+
* @property includeLayerApiKeys Default: `false`,
|
|
179
183
|
* @public
|
|
180
184
|
*/
|
|
181
|
-
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);
|
|
185
|
+
export var DEFAULT_EXPORT_MAP = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, EXPORT_MAP_FORMATS.HTML, DEFAULT_EXPORT_HTML), EXPORT_MAP_FORMATS.JSON, DEFAULT_EXPORT_JSON), "format", EXPORT_MAP_FORMATS.HTML), "fileName", ''), "includeLayerApiKeys", false);
|
|
182
186
|
|
|
183
187
|
/**
|
|
184
188
|
* Default initial `exportVideo` settings
|
|
@@ -211,6 +215,7 @@ export var DEFAULT_EXPORT_VIDEO = {
|
|
|
211
215
|
* @property activeSidePanel Default: `'layer'`
|
|
212
216
|
* @property currentModal Default: `'addData'`
|
|
213
217
|
* @property datasetKeyToRemove Default: `null`
|
|
218
|
+
* @property datasetToReplaceId Default: `null`
|
|
214
219
|
* @property visibleDropdown Default: `null`
|
|
215
220
|
* @property exportImage Default: [`DEFAULT_EXPORT_IMAGE`](#default_export_image)
|
|
216
221
|
* @property exportData Default: [`DEFAULT_EXPORT_DATA`](#default_export_data)
|
|
@@ -229,6 +234,7 @@ export var INITIAL_UI_STATE = {
|
|
|
229
234
|
activeSidePanel: DEFAULT_ACTIVE_SIDE_PANEL,
|
|
230
235
|
currentModal: DEFAULT_MODAL,
|
|
231
236
|
datasetKeyToRemove: null,
|
|
237
|
+
datasetToReplaceId: null,
|
|
232
238
|
visibleDropdown: null,
|
|
233
239
|
// export image modal ui
|
|
234
240
|
exportImage: DEFAULT_EXPORT_IMAGE,
|
|
@@ -246,7 +252,7 @@ export var INITIAL_UI_STATE = {
|
|
|
246
252
|
loadFiles: DEFAULT_LOAD_FILES,
|
|
247
253
|
// Locale of the UI
|
|
248
254
|
locale: LOCALE_CODES.en,
|
|
249
|
-
// Theme of the UI (
|
|
255
|
+
// Theme of the UI (`light` | `dark` | `space`). First of `themes` is the default when set.
|
|
250
256
|
theme: THEME.dark,
|
|
251
257
|
layerPanelListView: 'list',
|
|
252
258
|
filterPanelListView: 'list',
|
|
@@ -258,7 +264,14 @@ export var INITIAL_UI_STATE = {
|
|
|
258
264
|
* @memberof uiStateUpdaters
|
|
259
265
|
*/
|
|
260
266
|
export var initUiStateUpdater = function initUiStateUpdater(state, action) {
|
|
261
|
-
|
|
267
|
+
var _initialUiState$theme;
|
|
268
|
+
var initialUiState = (action.payload || {}).initialUiState || {};
|
|
269
|
+
var themes = getConfiguredThemes();
|
|
270
|
+
var requested = (_initialUiState$theme = initialUiState.theme) !== null && _initialUiState$theme !== void 0 ? _initialUiState$theme : state.theme;
|
|
271
|
+
var theme = themes.length === 0 ? requested : themes.includes(requested) ? requested : getDefaultUiTheme();
|
|
272
|
+
return _objectSpread(_objectSpread(_objectSpread({}, state), initialUiState), {}, {
|
|
273
|
+
theme: theme
|
|
274
|
+
});
|
|
262
275
|
};
|
|
263
276
|
|
|
264
277
|
/**
|
|
@@ -295,7 +308,10 @@ export var toggleSidePanelUpdater = function toggleSidePanelUpdater(state, _ref)
|
|
|
295
308
|
export var toggleModalUpdater = function toggleModalUpdater(state, _ref2) {
|
|
296
309
|
var id = _ref2.payload;
|
|
297
310
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
298
|
-
currentModal: id
|
|
311
|
+
currentModal: id,
|
|
312
|
+
// Add Data and every other modal open leave replace mode.
|
|
313
|
+
// Replace mode is entered only through openReplaceDatasetModal.
|
|
314
|
+
datasetToReplaceId: null
|
|
299
315
|
});
|
|
300
316
|
};
|
|
301
317
|
|
|
@@ -452,6 +468,23 @@ export var openDeleteModalUpdater = function openDeleteModalUpdater(state, _ref8
|
|
|
452
468
|
});
|
|
453
469
|
};
|
|
454
470
|
|
|
471
|
+
/**
|
|
472
|
+
* Open the add-data modal so the next confirmed upload replaces one dataset.
|
|
473
|
+
* @memberof uiStateUpdaters
|
|
474
|
+
* @param state `uiState`
|
|
475
|
+
* @param action
|
|
476
|
+
* @param action.payload dataset id
|
|
477
|
+
* @returns nextState
|
|
478
|
+
* @public
|
|
479
|
+
*/
|
|
480
|
+
export var openReplaceDatasetModalUpdater = function openReplaceDatasetModalUpdater(state, _ref9) {
|
|
481
|
+
var datasetToReplaceId = _ref9.payload;
|
|
482
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
483
|
+
currentModal: ADD_DATA_ID,
|
|
484
|
+
datasetToReplaceId: datasetToReplaceId
|
|
485
|
+
});
|
|
486
|
+
};
|
|
487
|
+
|
|
455
488
|
/**
|
|
456
489
|
* Set `exportImage` options such as `legend` and `charts` to `true` or `false`
|
|
457
490
|
* @memberof uiStateUpdaters
|
|
@@ -459,8 +492,8 @@ export var openDeleteModalUpdater = function openDeleteModalUpdater(state, _ref8
|
|
|
459
492
|
* @returns nextState
|
|
460
493
|
* @public
|
|
461
494
|
*/
|
|
462
|
-
export var setExportImageSettingUpdater = function setExportImageSettingUpdater(state,
|
|
463
|
-
var newSetting =
|
|
495
|
+
export var setExportImageSettingUpdater = function setExportImageSettingUpdater(state, _ref0) {
|
|
496
|
+
var newSetting = _ref0.payload;
|
|
464
497
|
var updated = _objectSpread(_objectSpread({}, state.exportImage), newSetting);
|
|
465
498
|
var imageSize = calculateExportImageSize(updated) || state.exportImage.imageSize;
|
|
466
499
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
@@ -479,8 +512,8 @@ export var setExportImageSettingUpdater = function setExportImageSettingUpdater(
|
|
|
479
512
|
* @returns nextState
|
|
480
513
|
* @public
|
|
481
514
|
*/
|
|
482
|
-
export var setExportImageDataUriUpdater = function setExportImageDataUriUpdater(state,
|
|
483
|
-
var dataUri =
|
|
515
|
+
export var setExportImageDataUriUpdater = function setExportImageDataUriUpdater(state, _ref1) {
|
|
516
|
+
var dataUri = _ref1.payload;
|
|
484
517
|
if (dataUri === state.exportImage.imageDataUri) {
|
|
485
518
|
return state;
|
|
486
519
|
}
|
|
@@ -496,8 +529,8 @@ export var setExportImageDataUriUpdater = function setExportImageDataUriUpdater(
|
|
|
496
529
|
* @memberof uiStateUpdaters
|
|
497
530
|
* @public
|
|
498
531
|
*/
|
|
499
|
-
export var setExportImageErrorUpdater = function setExportImageErrorUpdater(state,
|
|
500
|
-
var error =
|
|
532
|
+
export var setExportImageErrorUpdater = function setExportImageErrorUpdater(state, _ref10) {
|
|
533
|
+
var error = _ref10.payload;
|
|
501
534
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
502
535
|
exportImage: _objectSpread(_objectSpread({}, state.exportImage), {}, {
|
|
503
536
|
processing: false,
|
|
@@ -532,8 +565,8 @@ export var cleanupExportImageUpdater = function cleanupExportImageUpdater(state)
|
|
|
532
565
|
* @returns nextState
|
|
533
566
|
* @public
|
|
534
567
|
*/
|
|
535
|
-
export var setExportVideoSettingUpdater = function setExportVideoSettingUpdater(state,
|
|
536
|
-
var newSetting =
|
|
568
|
+
export var setExportVideoSettingUpdater = function setExportVideoSettingUpdater(state, _ref11) {
|
|
569
|
+
var newSetting = _ref11.payload;
|
|
537
570
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
538
571
|
exportVideo: _objectSpread(_objectSpread({}, state.exportVideo), newSetting)
|
|
539
572
|
});
|
|
@@ -547,9 +580,9 @@ export var setExportVideoSettingUpdater = function setExportVideoSettingUpdater(
|
|
|
547
580
|
* @returns {UiState}
|
|
548
581
|
* @public
|
|
549
582
|
*/
|
|
550
|
-
export var startExportingImageUpdater = function startExportingImageUpdater(state,
|
|
551
|
-
var
|
|
552
|
-
options =
|
|
583
|
+
export var startExportingImageUpdater = function startExportingImageUpdater(state, _ref12) {
|
|
584
|
+
var _ref12$payload = _ref12.payload,
|
|
585
|
+
options = _ref12$payload === void 0 ? {} : _ref12$payload;
|
|
553
586
|
var imageSettings = _objectSpread(_objectSpread({}, options), {}, {
|
|
554
587
|
exporting: true
|
|
555
588
|
});
|
|
@@ -565,8 +598,8 @@ export var startExportingImageUpdater = function startExportingImageUpdater(stat
|
|
|
565
598
|
* @returns nextState
|
|
566
599
|
* @public
|
|
567
600
|
*/
|
|
568
|
-
export var setExportSelectedDatasetUpdater = function setExportSelectedDatasetUpdater(state,
|
|
569
|
-
var dataset =
|
|
601
|
+
export var setExportSelectedDatasetUpdater = function setExportSelectedDatasetUpdater(state, _ref13) {
|
|
602
|
+
var dataset = _ref13.payload;
|
|
570
603
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
571
604
|
exportData: _objectSpread(_objectSpread({}, state.exportData), {}, {
|
|
572
605
|
selectedDataset: dataset
|
|
@@ -583,8 +616,8 @@ export var setExportSelectedDatasetUpdater = function setExportSelectedDatasetUp
|
|
|
583
616
|
* @returns nextState
|
|
584
617
|
* @public
|
|
585
618
|
*/
|
|
586
|
-
export var setExportDataTypeUpdater = function setExportDataTypeUpdater(state,
|
|
587
|
-
var dataType =
|
|
619
|
+
export var setExportDataTypeUpdater = function setExportDataTypeUpdater(state, _ref14) {
|
|
620
|
+
var dataType = _ref14.payload;
|
|
588
621
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
589
622
|
exportData: _objectSpread(_objectSpread({}, state.exportData), {}, {
|
|
590
623
|
dataType: dataType
|
|
@@ -601,8 +634,8 @@ export var setExportDataTypeUpdater = function setExportDataTypeUpdater(state, _
|
|
|
601
634
|
* @returns nextState
|
|
602
635
|
* @public
|
|
603
636
|
*/
|
|
604
|
-
export var setExportFilteredUpdater = function setExportFilteredUpdater(state,
|
|
605
|
-
var filtered =
|
|
637
|
+
export var setExportFilteredUpdater = function setExportFilteredUpdater(state, _ref15) {
|
|
638
|
+
var filtered = _ref15.payload;
|
|
606
639
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
607
640
|
exportData: _objectSpread(_objectSpread({}, state.exportData), {}, {
|
|
608
641
|
filtered: filtered
|
|
@@ -633,8 +666,8 @@ export var setExportDataUpdater = function setExportDataUpdater(state) {
|
|
|
633
666
|
* @returns nextState
|
|
634
667
|
* @public
|
|
635
668
|
*/
|
|
636
|
-
export var setUserMapboxAccessTokenUpdater = function setUserMapboxAccessTokenUpdater(state,
|
|
637
|
-
var userMapboxToken =
|
|
669
|
+
export var setUserMapboxAccessTokenUpdater = function setUserMapboxAccessTokenUpdater(state, _ref16) {
|
|
670
|
+
var userMapboxToken = _ref16.payload;
|
|
638
671
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
639
672
|
exportMap: _objectSpread(_objectSpread({}, state.exportMap), {}, _defineProperty({}, EXPORT_MAP_FORMATS.HTML, _objectSpread(_objectSpread({}, state.exportMap[EXPORT_MAP_FORMATS.HTML]), {}, {
|
|
640
673
|
userMapboxToken: userMapboxToken
|
|
@@ -649,8 +682,8 @@ export var setUserMapboxAccessTokenUpdater = function setUserMapboxAccessTokenUp
|
|
|
649
682
|
* @param action.payload format to use to export the map into
|
|
650
683
|
* @return nextState
|
|
651
684
|
*/
|
|
652
|
-
export var setExportMapFormatUpdater = function setExportMapFormatUpdater(state,
|
|
653
|
-
var format =
|
|
685
|
+
export var setExportMapFormatUpdater = function setExportMapFormatUpdater(state, _ref17) {
|
|
686
|
+
var format = _ref17.payload;
|
|
654
687
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
655
688
|
exportMap: _objectSpread(_objectSpread({}, state.exportMap), {}, {
|
|
656
689
|
// @ts-expect-error
|
|
@@ -659,6 +692,24 @@ export var setExportMapFormatUpdater = function setExportMapFormatUpdater(state,
|
|
|
659
692
|
});
|
|
660
693
|
};
|
|
661
694
|
|
|
695
|
+
/**
|
|
696
|
+
* Set the filename used when exporting an HTML or JSON map
|
|
697
|
+
* @memberof uiStateUpdaters
|
|
698
|
+
* @param state `uiState`
|
|
699
|
+
* @param action
|
|
700
|
+
* @param action.payload file name without extension
|
|
701
|
+
* @returns nextState
|
|
702
|
+
* @public
|
|
703
|
+
*/
|
|
704
|
+
export var setExportMapFileNameUpdater = function setExportMapFileNameUpdater(state, _ref18) {
|
|
705
|
+
var fileName = _ref18.payload;
|
|
706
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
707
|
+
exportMap: _objectSpread(_objectSpread({}, state.exportMap), {}, {
|
|
708
|
+
fileName: fileName
|
|
709
|
+
})
|
|
710
|
+
});
|
|
711
|
+
};
|
|
712
|
+
|
|
662
713
|
/**
|
|
663
714
|
* Set the export html map mode
|
|
664
715
|
* @param state - `uiState`
|
|
@@ -666,8 +717,8 @@ export var setExportMapFormatUpdater = function setExportMapFormatUpdater(state,
|
|
|
666
717
|
* @param action.payload to be set (available modes: EXPORT_HTML_MAP_MODES)
|
|
667
718
|
* @return nextState
|
|
668
719
|
*/
|
|
669
|
-
export var setExportMapHTMLModeUpdater = function setExportMapHTMLModeUpdater(state,
|
|
670
|
-
var mode =
|
|
720
|
+
export var setExportMapHTMLModeUpdater = function setExportMapHTMLModeUpdater(state, _ref19) {
|
|
721
|
+
var mode = _ref19.payload;
|
|
671
722
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
672
723
|
exportMap: _objectSpread(_objectSpread({}, state.exportMap), {}, _defineProperty({}, EXPORT_MAP_FORMATS.HTML, _objectSpread(_objectSpread({}, state.exportMap[EXPORT_MAP_FORMATS.HTML]), {}, {
|
|
673
724
|
mode: mode
|
|
@@ -675,6 +726,22 @@ export var setExportMapHTMLModeUpdater = function setExportMapHTMLModeUpdater(st
|
|
|
675
726
|
});
|
|
676
727
|
};
|
|
677
728
|
|
|
729
|
+
/**
|
|
730
|
+
* Whether to keep layer access tokens in exported HTML and JSON maps.
|
|
731
|
+
* @param state - `uiState`
|
|
732
|
+
* @param action
|
|
733
|
+
* @param action.payload - include layer API keys
|
|
734
|
+
* @return nextState
|
|
735
|
+
*/
|
|
736
|
+
export var setExportIncludeLayerApiKeysUpdater = function setExportIncludeLayerApiKeysUpdater(state, _ref20) {
|
|
737
|
+
var includeLayerApiKeys = _ref20.payload;
|
|
738
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
739
|
+
exportMap: _objectSpread(_objectSpread({}, state.exportMap), {}, {
|
|
740
|
+
includeLayerApiKeys: includeLayerApiKeys
|
|
741
|
+
})
|
|
742
|
+
});
|
|
743
|
+
};
|
|
744
|
+
|
|
678
745
|
/**
|
|
679
746
|
* Adds a new notification.
|
|
680
747
|
* Updates a notification in case of matching ids.
|
|
@@ -685,8 +752,8 @@ export var setExportMapHTMLModeUpdater = function setExportMapHTMLModeUpdater(st
|
|
|
685
752
|
* @returns nextState
|
|
686
753
|
* @public
|
|
687
754
|
*/
|
|
688
|
-
export var addNotificationUpdater = function addNotificationUpdater(state,
|
|
689
|
-
var payload =
|
|
755
|
+
export var addNotificationUpdater = function addNotificationUpdater(state, _ref21) {
|
|
756
|
+
var payload = _ref21.payload;
|
|
690
757
|
var oldNotifications = state.notifications || [];
|
|
691
758
|
// @ts-expect-error
|
|
692
759
|
var payloadId = payload === null || payload === void 0 ? void 0 : payload.id;
|
|
@@ -717,8 +784,8 @@ export var addNotificationUpdater = function addNotificationUpdater(state, _ref1
|
|
|
717
784
|
* @returns nextState
|
|
718
785
|
* @public
|
|
719
786
|
*/
|
|
720
|
-
export var removeNotificationUpdater = function removeNotificationUpdater(state,
|
|
721
|
-
var id =
|
|
787
|
+
export var removeNotificationUpdater = function removeNotificationUpdater(state, _ref22) {
|
|
788
|
+
var id = _ref22.payload;
|
|
722
789
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
723
790
|
notifications: state.notifications.filter(function (n) {
|
|
724
791
|
return n.id !== id;
|
|
@@ -764,8 +831,8 @@ export var loadFilesSuccessUpdater = function loadFilesSuccessUpdater(state) {
|
|
|
764
831
|
* @returns nextState
|
|
765
832
|
* @public
|
|
766
833
|
*/
|
|
767
|
-
export var loadFilesErrUpdater = function loadFilesErrUpdater(state,
|
|
768
|
-
var error =
|
|
834
|
+
export var loadFilesErrUpdater = function loadFilesErrUpdater(state, _ref23) {
|
|
835
|
+
var error = _ref23.error;
|
|
769
836
|
return addNotificationUpdater(_objectSpread(_objectSpread({}, state), {}, {
|
|
770
837
|
loadFiles: _objectSpread(_objectSpread({}, state.loadFiles), {}, {
|
|
771
838
|
fileLoading: false
|
|
@@ -818,8 +885,8 @@ export var showDatasetTableUpdater = function showDatasetTableUpdater(state) {
|
|
|
818
885
|
* @returns nextState
|
|
819
886
|
* @public
|
|
820
887
|
*/
|
|
821
|
-
export var setLocaleUpdater = function setLocaleUpdater(state,
|
|
822
|
-
var locale =
|
|
888
|
+
export var setLocaleUpdater = function setLocaleUpdater(state, _ref24) {
|
|
889
|
+
var locale = _ref24.payload.locale;
|
|
823
890
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
824
891
|
locale: locale
|
|
825
892
|
});
|
|
@@ -835,8 +902,8 @@ export var setLocaleUpdater = function setLocaleUpdater(state, _ref21) {
|
|
|
835
902
|
* @returns nextState
|
|
836
903
|
* @public
|
|
837
904
|
*/
|
|
838
|
-
export var setThemeUpdater = function setThemeUpdater(state,
|
|
839
|
-
var theme =
|
|
905
|
+
export var setThemeUpdater = function setThemeUpdater(state, _ref25) {
|
|
906
|
+
var theme = _ref25.payload.theme;
|
|
840
907
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
841
908
|
theme: theme
|
|
842
909
|
});
|
|
@@ -851,10 +918,10 @@ export var setThemeUpdater = function setThemeUpdater(state, _ref22) {
|
|
|
851
918
|
* @returns nextState
|
|
852
919
|
* @public
|
|
853
920
|
*/
|
|
854
|
-
export var togglePanelListViewUpdater = function togglePanelListViewUpdater(state,
|
|
855
|
-
var
|
|
856
|
-
panelId =
|
|
857
|
-
listView =
|
|
921
|
+
export var togglePanelListViewUpdater = function togglePanelListViewUpdater(state, _ref26) {
|
|
922
|
+
var _ref26$payload = _ref26.payload,
|
|
923
|
+
panelId = _ref26$payload.panelId,
|
|
924
|
+
listView = _ref26$payload.listView;
|
|
858
925
|
var stateProp = panelId === 'layer' ? 'layerPanelListView' : panelId === 'filter' ? 'filterPanelListView' : null;
|
|
859
926
|
if (!stateProp || state[stateProp] === listView) {
|
|
860
927
|
return state;
|
|
@@ -871,11 +938,11 @@ export var togglePanelListViewUpdater = function togglePanelListViewUpdater(stat
|
|
|
871
938
|
* @returns nextState
|
|
872
939
|
* @public
|
|
873
940
|
*/
|
|
874
|
-
export var receiveMapConfigUpdater = function receiveMapConfigUpdater(state,
|
|
941
|
+
export var receiveMapConfigUpdater = function receiveMapConfigUpdater(state, _ref27) {
|
|
875
942
|
var _uiState$mapControls, _uiState$mapControls2, _uiState$mapControls3;
|
|
876
|
-
var config =
|
|
877
|
-
var
|
|
878
|
-
uiState =
|
|
943
|
+
var config = _ref27.payload.config;
|
|
944
|
+
var _ref28 = config || {},
|
|
945
|
+
uiState = _ref28.uiState;
|
|
879
946
|
if (!uiState) {
|
|
880
947
|
return state;
|
|
881
948
|
}
|
|
@@ -930,4 +997,4 @@ export var receiveMapConfigUpdater = function receiveMapConfigUpdater(state, _re
|
|
|
930
997
|
}
|
|
931
998
|
return newState;
|
|
932
999
|
};
|
|
933
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBRERfREFUQV9JRCIsIkRBVEFfVEFCTEVfSUQiLCJERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MiLCJERUxFVEVfREFUQV9JRCIsIkVYUE9SVF9EQVRBX1RZUEUiLCJFWFBPUlRfSFRNTF9NQVBfTU9ERVMiLCJFWFBPUlRfSU1HX1JBVElPUyIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIlJFU09MVVRJT05TIiwiTUFQX0NPTlRST0xTIiwiVEhFTUUiLCJMT0NBTEVfQ09ERVMiLCJjcmVhdGVOb3RpZmljYXRpb24iLCJlcnJvck5vdGlmaWNhdGlvbiIsImNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwicGF5bG9hZF8iLCJhcHBseV8iLCJjb21wb3NlXyIsIkRFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwiLCJERUZBVUxUX01PREFMIiwidWlTdGF0ZVVwZGF0ZXJzIiwiREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVMiLCJzaG93IiwiYWN0aXZlIiwiZGlzYWJsZUNsb3NlIiwiYWN0aXZlTWFwSW5kZXgiLCJERUZBVUxUX01BUF9MRUdFTkRfQ09OVFJPTCIsIl9vYmplY3RTcHJlYWQiLCJkaXNhYmxlRWRpdCIsIkRFRkFVTFRfTUFQX0NPTlRST0xTIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImZpbmFsIiwiY3VycmVudCIsIl9kZWZpbmVQcm9wZXJ0eSIsIm1hcExlZ2VuZCIsIkRFRkFVTFRfRVhQT1JUX0lNQUdFIiwicmF0aW8iLCJTQ1JFRU4iLCJyZXNvbHV0aW9uIiwiT05FX1giLCJsZWdlbmQiLCJjaGFydHMiLCJtYXBIIiwibWFwVyIsImltYWdlU2l6ZSIsInpvb21PZmZzZXQiLCJzY2FsZSIsImltYWdlVyIsImltYWdlSCIsImNlbnRlciIsImltYWdlRGF0YVVyaSIsImV4cG9ydGluZyIsInByb2Nlc3NpbmciLCJlcnJvciIsImVzY2FwZVhodG1sRm9yV2VicGFjayIsIkRFRkFVTFRfTE9BRF9GSUxFUyIsImZpbGVMb2FkaW5nIiwiREVGQVVMVF9FWFBPUlRfREFUQSIsInNlbGVjdGVkRGF0YXNldCIsImRhdGFUeXBlIiwiQ1NWIiwiZmlsdGVyZWQiLCJERUZBVUxUX05PVElGSUNBVElPTlMiLCJERUZBVUxUX0VYUE9SVF9IVE1MIiwiZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4iLCJ1c2VyTWFwYm94VG9rZW4iLCJtb2RlIiwiUkVBRCIsIkRFRkFVTFRfRVhQT1JUX0pTT04iLCJoYXNEYXRhIiwiREVGQVVMVF9FWFBPUlRfTUFQIiwiSFRNTCIsIkpTT04iLCJERUZBVUxUX0VYUE9SVF9WSURFTyIsIm1lZGlhVHlwZSIsImNhbWVyYVByZXNldCIsImZpbGVOYW1lIiwiZHVyYXRpb25NcyIsInN3aXBlU3RhcnRQY3QiLCJzd2lwZUVuZFBjdCIsInN3aXBlRWFzaW5nIiwiSU5JVElBTF9VSV9TVEFURSIsInJlYWRPbmx5IiwiYWN0aXZlU2lkZVBhbmVsIiwiY3VycmVudE1vZGFsIiwiZGF0YXNldEtleVRvUmVtb3ZlIiwidmlzaWJsZURyb3Bkb3duIiwiZXhwb3J0SW1hZ2UiLCJleHBvcnREYXRhIiwiZXhwb3J0TWFwIiwiZXhwb3J0VmlkZW8iLCJtYXBDb250cm9scyIsIm5vdGlmaWNhdGlvbnMiLCJsb2FkRmlsZXMiLCJsb2NhbGUiLCJlbiIsInRoZW1lIiwiZGFyayIsImxheWVyUGFuZWxMaXN0VmlldyIsImZpbHRlclBhbmVsTGlzdFZpZXciLCJpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZSIsImluaXRVaVN0YXRlVXBkYXRlciIsInN0YXRlIiwiYWN0aW9uIiwicGF5bG9hZCIsImluaXRpYWxVaVN0YXRlIiwidG9nZ2xlU2lkZVBhbmVsVXBkYXRlciIsIl9yZWYiLCJpZCIsInRvZ2dsZU1vZGFsVXBkYXRlciIsIl9yZWYyIiwic2hvd0V4cG9ydERyb3Bkb3duVXBkYXRlciIsIl9yZWYzIiwiaGlkZUV4cG9ydERyb3Bkb3duVXBkYXRlciIsInRvZ2dsZVNpZGVQYW5lbENsb3NlQnV0dG9uVXBkYXRlciIsIl9yZWY0IiwiTVVUVUFMTFlfRVhDTFVTSVZFX01BUF9DT05UUk9MUyIsInNwbGl0TWFwIiwidG9nZ2xlM2QiLCJtYXBEcmF3IiwibWFwTG9jYWxlIiwidG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIiLCJfcmVmNSIsIl91cGRhdGVkU3RhdGUkbWFwQ29udCIsIl91cGRhdGVkU3RhdGUkbWFwQ29udDIiLCJfcmVmNSRwYXlsb2FkIiwicGFuZWxJZCIsIl9yZWY1JHBheWxvYWQkaW5kZXgiLCJpbmRleCIsInVwZGF0ZWRTdGF0ZSIsImlzT3BlbmluZyIsImluY2x1ZGVzIiwibmV4dE1hcENvbnRyb2xzIiwiZGlkRGVhY3RpdmF0ZSIsImZvckVhY2giLCJjb250cm9sSWQiLCJfbmV4dE1hcENvbnRyb2xzJGNvbnQiLCJzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXIiLCJfcmVmNiIsIl9zdGF0ZSRtYXBDb250cm9scyIsIl9yZWY2JHBheWxvYWQiLCJCb29sZWFuIiwic2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlciIsIl9yZWY3IiwiX3N0YXRlJG1hcENvbnRyb2xzMiIsIl9yZWY3JHBheWxvYWQiLCJzZXR0aW5ncyIsIm1hcENvbnRyb2wiLCJvcGVuRGVsZXRlTW9kYWxVcGRhdGVyIiwiX3JlZjgiLCJzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyIiwiX3JlZjkiLCJuZXdTZXR0aW5nIiwidXBkYXRlZCIsInNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXIiLCJfcmVmMCIsImRhdGFVcmkiLCJzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciIsIl9yZWYxIiwiY2xlYW51cEV4cG9ydEltYWdlVXBkYXRlciIsInNldEV4cG9ydFZpZGVvU2V0dGluZ1VwZGF0ZXIiLCJfcmVmMTAiLCJzdGFydEV4cG9ydGluZ0ltYWdlVXBkYXRlciIsIl9yZWYxMSIsIl9yZWYxMSRwYXlsb2FkIiwib3B0aW9ucyIsImltYWdlU2V0dGluZ3MiLCJzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyIiwiX3JlZjEyIiwiZGF0YXNldCIsInNldEV4cG9ydERhdGFUeXBlVXBkYXRlciIsIl9yZWYxMyIsInNldEV4cG9ydEZpbHRlcmVkVXBkYXRlciIsIl9yZWYxNCIsInNldEV4cG9ydERhdGFVcGRhdGVyIiwic2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlciIsIl9yZWYxNSIsInNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXIiLCJfcmVmMTYiLCJmb3JtYXQiLCJzZXRFeHBvcnRNYXBIVE1MTW9kZVVwZGF0ZXIiLCJfcmVmMTciLCJhZGROb3RpZmljYXRpb25VcGRhdGVyIiwiX3JlZjE4Iiwib2xkTm90aWZpY2F0aW9ucyIsInBheWxvYWRJZCIsIm5vdGlmaWNhdGlvblRvVXBkYXRlIiwiZmluZCIsIm4iLCJtYXAiLCJjb3VudCIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsInJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXIiLCJfcmVmMTkiLCJmaWx0ZXIiLCJsb2FkRmlsZXNVcGRhdGVyIiwibG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIiLCJsb2FkRmlsZXNFcnJVcGRhdGVyIiwiX3JlZjIwIiwibWVzc2FnZSIsInRvcGljIiwiZ2xvYmFsIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwiZW50cmllcyIsImFjYyIsImVudHJ5Iiwic2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXIiLCJzZXRMb2NhbGVVcGRhdGVyIiwiX3JlZjIxIiwic2V0VGhlbWVVcGRhdGVyIiwiX3JlZjIyIiwidG9nZ2xlUGFuZWxMaXN0Vmlld1VwZGF0ZXIiLCJfcmVmMjMiLCJfcmVmMjMkcGF5bG9hZCIsImxpc3RWaWV3Iiwic3RhdGVQcm9wIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJfcmVmMjQiLCJfdWlTdGF0ZSRtYXBDb250cm9scyIsIl91aVN0YXRlJG1hcENvbnRyb2xzMiIsIl91aVN0YXRlJG1hcENvbnRyb2xzMyIsImNvbmZpZyIsIl9yZWYyNSIsInVpU3RhdGUiLCJuZXdTdGF0ZSIsImN1cnJlbnRMZWdlbmQiLCJjaGFydCIsImN1cnJlbnRDaGFydCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91aS1zdGF0ZS11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1xuICBBRERfREFUQV9JRCxcbiAgREFUQV9UQUJMRV9JRCxcbiAgREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTLFxuICBERUxFVEVfREFUQV9JRCxcbiAgRVhQT1JUX0RBVEFfVFlQRSxcbiAgRVhQT1JUX0hUTUxfTUFQX01PREVTLFxuICBFWFBPUlRfSU1HX1JBVElPUyxcbiAgRVhQT1JUX01BUF9GT1JNQVRTLFxuICBSRVNPTFVUSU9OUyxcbiAgTUFQX0NPTlRST0xTLFxuICBUSEVNRVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0xPQ0FMRV9DT0RFU30gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHtcbiAgY3JlYXRlTm90aWZpY2F0aW9uLFxuICBlcnJvck5vdGlmaWNhdGlvbixcbiAgY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplLFxuICBnZXRBcHBsaWNhdGlvbkNvbmZpZ1xufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7cGF5bG9hZF8sIGFwcGx5XywgY29tcG9zZV99IGZyb20gJy4vY29tcG9zZXItaGVscGVycyc7XG5cbmltcG9ydCB7XG4gIEFjdGlvblR5cGVzLFxuICBLZXBsZXJHbEluaXRQYXlsb2FkLFxuICBMb2FkRmlsZXNFcnJVcGRhdGVyQWN0aW9uLFxuICBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZCxcbiAgVUlTdGF0ZUFjdGlvbnNcbn0gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7XG4gIEV4cG9ydERhdGEsXG4gIEV4cG9ydEh0bWwsXG4gIEV4cG9ydEpzb24sXG4gIEV4cG9ydE1hcCxcbiAgRXhwb3J0SW1hZ2UsXG4gIEV4cG9ydFZpZGVvLFxuICBNYXBDb250cm9sSXRlbSxcbiAgTWFwQ29udHJvbE1hcExlZ2VuZCxcbiAgTWFwQ29udHJvbHMsXG4gIFVpU3RhdGVcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FDVElWRV9TSURFX1BBTkVMID0gJ2xheWVyJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX01PREFMID0gQUREX0RBVEFfSUQ7XG5cbi8qKlxuICogVXBkYXRlcnMgZm9yIGB1aVN0YXRlYCByZWR1Y2VyLiBDYW4gYmUgdXNlZCBpbiB5b3VyIHJvb3QgcmVkdWNlciB0byBkaXJlY3RseSBtb2RpZnkga2VwbGVyLmdsJ3Mgc3RhdGUuXG4gKiBSZWFkIG1vcmUgYWJvdXQgW1VzaW5nIHVwZGF0ZXJzXSguLi9hZHZhbmNlZC11c2FnZS91c2luZy11cGRhdGVycy5tZClcbiAqXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICpcbiAqIGltcG9ydCBrZXBsZXJHbFJlZHVjZXIsIHt1aVN0YXRlVXBkYXRlcnN9IGZyb20gJ0BrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuICogLy8gUm9vdCBSZWR1Y2VyXG4gKiBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gKiAga2VwbGVyR2w6IGtlcGxlckdsUmVkdWNlcixcbiAqICBhcHA6IGFwcFJlZHVjZXJcbiAqIH0pO1xuICpcbiAqIGNvbnN0IGNvbXBvc2VkUmVkdWNlciA9IChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gKiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICogICAgLy8gY2xpY2sgYnV0dG9uIHRvIGNsb3NlIHNpZGUgcGFuZWxcbiAqICAgIGNhc2UgJ0NMSUNLX0JVVFRPTic6XG4gKiAgICAgIHJldHVybiB7XG4gKiAgICAgICAgLi4uc3RhdGUsXG4gKiAgICAgICAga2VwbGVyR2w6IHtcbiAqICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLFxuICogICAgICAgICAgZm9vOiB7XG4gKiAgICAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbC5mb28sXG4gKiAgICAgICAgICAgICB1aVN0YXRlOiB1aVN0YXRlVXBkYXRlcnMudG9nZ2xlU2lkZVBhbmVsVXBkYXRlcihcbiAqICAgICAgICAgICAgICAgdWlTdGF0ZSwge3BheWxvYWQ6IG51bGx9XG4gKiAgICAgICAgICAgICApXG4gKiAgICAgICAgICB9XG4gKiAgICAgICAgfVxuICogICAgICB9O1xuICogIH1cbiAqICByZXR1cm4gcmVkdWNlcnMoc3RhdGUsIGFjdGlvbik7XG4gKiB9O1xuICpcbiAqIGV4cG9ydCBkZWZhdWx0IGNvbXBvc2VkUmVkdWNlcjtcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCB1aVN0YXRlVXBkYXRlcnMgPSBudWxsO1xuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cblxuY29uc3QgREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVM6IE1hcENvbnRyb2xJdGVtID0ge1xuICBzaG93OiB0cnVlLFxuICBhY3RpdmU6IGZhbHNlLFxuICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxuICAvLyBkZWZpbmVzIHdoaWNoIG1hcCBpbmRleCB1c2VycyBhcmUgaW50ZXJhY3Rpbmcgd2l0aCAodGhyb3VnaCBtYXAgY29udHJvbHMpXG4gIGFjdGl2ZU1hcEluZGV4OiAwXG59O1xuXG5jb25zdCBERUZBVUxUX01BUF9MRUdFTkRfQ09OVFJPTCA9IHtcbiAgLi4uREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVMsXG4gIGRpc2FibGVFZGl0OiBmYWxzZVxufTtcbi8qKlxuICogQSBsaXN0IG9mIG1hcCBjb250cm9sIHZpc2liaWxpdHkgYW5kIHdoZXRoZXIgaXMgaXQgYWN0aXZlLlxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgdmlzaWJsZUxheWVycyBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IG1hcExlZ2VuZCBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IHRvZ2dsZTNkIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZX1gXG4gKiBAcHJvcGVydHkgc3BsaXRNYXAgRGVmYXVsdDogYHtzaG93OiB0cnVlfWBcbiAqIEBwcm9wZXJ0eSBtYXBEcmF3IERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHJvcGVydHkgbWFwTG9jYWxlIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHJvcGVydHkgbWFwVGhlbWUgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSB2aWV3cG9ydEpzb24gRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUFQX0NPTlRST0xTOiBNYXBDb250cm9scyA9IChcbiAgT2JqZWN0LmtleXMoTUFQX0NPTlRST0xTKSBhcyBBcnJheTxrZXlvZiB0eXBlb2YgTUFQX0NPTlRST0xTPlxuKS5yZWR1Y2UoXG4gIChmaW5hbCwgY3VycmVudCkgPT4gKHtcbiAgICAuLi5maW5hbCxcbiAgICBbY3VycmVudF06XG4gICAgICBjdXJyZW50ID09PSBNQVBfQ09OVFJPTFMubWFwTGVnZW5kXG4gICAgICAgID8gREVGQVVMVF9NQVBfTEVHRU5EX0NPTlRST0xcbiAgICAgICAgOiBERUZBVUxUX01BUF9DT05UUk9MU19GRUFUVVJFU1xuICB9KSxcbiAge30gYXMgTWFwQ29udHJvbHNcbik7XG5cbi8qKlxuICogRGVmYXVsdCBpbWFnZSBleHBvcnQgY29uZmlnXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSByYXRpbyBEZWZhdWx0OiBgJ1NDUkVFTidgLFxuICogQHByb3BlcnR5IHJlc29sdXRpb24gRGVmYXVsdDogYCdPTkVfWCdgLFxuICogQHByb3BlcnR5IGxlZ2VuZCBEZWZhdWx0OiBgZmFsc2VgLFxuICogQHByb3BlcnR5IGNoYXJ0cyBEZWZhdWx0OiBgZmFsc2VgLFxuICogQHByb3BlcnR5IG1hcEggRGVmYXVsdDogMCxcbiAqIEBwcm9wZXJ0eSBtYXBXIERlZmF1bHQ6IDAsXG4gKiBAcHJvcGVydHkgaW1hZ2VTaXplIERlZmF1bHQ6IHt6b29tT2Zmc2V0OiAwLCBzY2FsZTogMSwgaW1hZ2VXOiAwLCBpbWFnZUg6IDB9LFxuICogQHByb3BlcnR5IGltYWdlRGF0YVVyaSBEZWZhdWx0OiBgJydgLFxuICogQHByb3BlcnR5IGV4cG9ydGluZyBEZWZhdWx0OiBgZmFsc2VgXG4gKiBAcHJvcGVydHkgZXJyb3IgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGVzY2FwZVhodG1sRm9yV2VicGFjayBEZWZhdWx0OiBmcm9tIGFwcGxpY2F0aW9uIGNvbmZpZyAoYXV0by1kZXRlY3RlZDogYHRydWVgIGZvciB3ZWJwYWNrKVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfSU1BR0U6IEV4cG9ydEltYWdlID0ge1xuICAvLyB1c2VyIG9wdGlvbnNcbiAgcmF0aW86IEVYUE9SVF9JTUdfUkFUSU9TLlNDUkVFTixcbiAgcmVzb2x1dGlvbjogUkVTT0xVVElPTlMuT05FX1gsXG4gIGxlZ2VuZDogZmFsc2UsXG4gIGNoYXJ0czogZmFsc2UsXG4gIG1hcEg6IDAsXG4gIG1hcFc6IDAsXG4gIGltYWdlU2l6ZToge1xuICAgIHpvb21PZmZzZXQ6IDAsXG4gICAgc2NhbGU6IDEsXG4gICAgaW1hZ2VXOiAwLFxuICAgIGltYWdlSDogMFxuICB9LFxuICAvLyB3aGVuIHRoaXMgaXMgc2V0IHRvIHRydWUsIHRoZSBtb2NrIG1hcCB2aWV3cG9ydCB3aWxsIG1vdmUgdG8gdGhlIGNlbnRlciBvZiBkYXRhXG4gIGNlbnRlcjogZmFsc2UsXG4gIC8vIGV4cG9ydGluZyBzdGF0ZVxuICBpbWFnZURhdGFVcmk6ICcnLFxuICAvLyBleHBvcnRpbmc6IHVzZWQgdG8gYXR0YWNoIHBsb3QtY29udGFpbmVyIHRvIGRvbVxuICBleHBvcnRpbmc6IGZhbHNlLFxuICAvLyBwcm9jZXNzaW5nOiB1c2VkIGFzIGxvYWRpbmcgaW5kaWNhdG9yIHdoZW4gZXhwb3J0IGltYWdlIGlzIGJlaW5nIHByb2R1Y2VkXG4gIHByb2Nlc3Npbmc6IGZhbHNlLFxuICBlcnJvcjogZmFsc2UsXG4gIC8vIHdoZXRoZXIgdG8gYXBwbHkgZml4IGZvciB1Z2xpZnkgZXJyb3IgaW4gZG9tLXRvLWltYWdlIChmcm9tIGFwcGxpY2F0aW9uIGNvbmZpZywgYXV0by1kZXRlY3RzIGJ1aWxkIHRvb2wpXG4gIGVzY2FwZVhodG1sRm9yV2VicGFjazogZ2V0QXBwbGljYXRpb25Db25maWcoKS5lc2NhcGVYaHRtbEZvcldlYnBhY2tcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xPQURfRklMRVMgPSB7XG4gIGZpbGVMb2FkaW5nOiBmYWxzZVxufTtcblxuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYGV4cG9ydERhdGFgIHNldHRpbmdzXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBzZWxlY3RlZERhdGFzZXQgRGVmYXVsdDogYCcnYCxcbiAqIEBwcm9wZXJ0eSBkYXRhVHlwZSBEZWZhdWx0OiBgJ2NzdidgLFxuICogQHByb3BlcnR5IGZpbHRlcmVkIERlZmF1bHQ6IGB0cnVlYCxcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX0RBVEE6IEV4cG9ydERhdGEgPSB7XG4gIHNlbGVjdGVkRGF0YXNldDogJycsXG4gIGRhdGFUeXBlOiBFWFBPUlRfREFUQV9UWVBFLkNTVixcbiAgZmlsdGVyZWQ6IHRydWVcbn07XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX05PVElGSUNBVElPTlMgPSBbXTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBleHBvcnRNYXBib3hBY2Nlc3NUb2tlbiAtIERlZmF1bHQ6IG51bGwsIHRoaXMgaXMgdXNlZCB3aGVuIHdlIHByb3ZpZGUgYSBkZWZhdWx0IG1hcGJveCB0b2tlbiBmb3IgdXNlcnMgdG8gdGFrZSBhZHZhbnRhZ2Ugb2ZcbiAqIEBwcm9wZXJ0eSB1c2VyTWFwYm94VG9rZW4gLSBEZWZhdWx0OiAnJywgbWFwYm94IHRva2VuIHByb3ZpZGVkIGJ5IHVzZXIgdGhyb3VnaCBpbnB1dCBmaWVsZFxuICogQHByb3BlcnR5IG1vZGUgLSBEZWZhdWx0OiAnUkVBRCcsIHJlYWQgb25seSBvciBlZGl0YWJsZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfSFRNTDogRXhwb3J0SHRtbCA9IHtcbiAgZXhwb3J0TWFwYm94QWNjZXNzVG9rZW46IG51bGwsXG4gIHVzZXJNYXBib3hUb2tlbjogJycsXG4gIG1vZGU6IEVYUE9SVF9IVE1MX01BUF9NT0RFUy5SRUFEXG59O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IGhhc0RhdGEgLSBEZWZhdWx0OiAndHJ1ZScsXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9KU09OOiBFeHBvcnRKc29uID0ge1xuICBoYXNEYXRhOiB0cnVlXG59O1xuXG4vKipcbiAqIEV4cG9ydCBNYXAgQ29uZmlnXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBIVE1MIC0gRGVmYXVsdDogJ0RFRkFVTFRfRVhQT1JUX0hUTUwnLFxuICogQHByb3BlcnR5IEpTT04gLSBEZWZhdWx0OiAnREVGQVVMVF9FWFBPUlRfSlNPTicsXG4gKiBAcHJvcGVydHkgZm9ybWF0IC0gRGVmYXVsdDogJ0hUTUwnLFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfTUFQOiBFeHBvcnRNYXAgPSB7XG4gIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF06IERFRkFVTFRfRVhQT1JUX0hUTUwsXG4gIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSlNPTl06IERFRkFVTFRfRVhQT1JUX0pTT04sXG4gIGZvcm1hdDogRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBleHBvcnRWaWRlb2Agc2V0dGluZ3NcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IG1lZGlhVHlwZSBEZWZhdWx0OiBgJ3dlYm0nYFxuICogQHByb3BlcnR5IGNhbWVyYVByZXNldCBEZWZhdWx0OiBgJ05vbmUnYFxuICogQHByb3BlcnR5IGZpbGVOYW1lIERlZmF1bHQ6IGAna2VwbGVyLmdsJ2BcbiAqIEBwcm9wZXJ0eSByZXNvbHV0aW9uIERlZmF1bHQ6IGAnMTI4MHg3MjAnYFxuICogQHByb3BlcnR5IGR1cmF0aW9uTXMgRGVmYXVsdDogYDEwMDBgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9WSURFTzogRXhwb3J0VmlkZW8gPSB7XG4gIG1lZGlhVHlwZTogJ3dlYm0nLCAvLyB1c2Ugd2VibSBhcyBkZWZhdWx0IGFzIGdpZiBleHBvcnQgdGVuZHMgdG8gZnJlZXplIG9uIGxhcmdlciByZWNvcmRpbmdzXG4gIGNhbWVyYVByZXNldDogJ05vbmUnLFxuICBmaWxlTmFtZTogJ2tlcGxlci5nbCcsXG4gIHJlc29sdXRpb246ICcxMjgweDcyMCcsXG4gIGR1cmF0aW9uTXM6IDEwMDAsXG4gIHN3aXBlU3RhcnRQY3Q6IDAsXG4gIHN3aXBlRW5kUGN0OiAxMDAsXG4gIHN3aXBlRWFzaW5nOiAnZWFzZS1pbi1vdXQnXG59O1xuXG4vKipcbiAqIERlZmF1bHQgaW5pdGlhbCBgdWlTdGF0ZWBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IHJlYWRPbmx5IERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSBhY3RpdmVTaWRlUGFuZWwgRGVmYXVsdDogYCdsYXllcidgXG4gKiBAcHJvcGVydHkgY3VycmVudE1vZGFsIERlZmF1bHQ6IGAnYWRkRGF0YSdgXG4gKiBAcHJvcGVydHkgZGF0YXNldEtleVRvUmVtb3ZlIERlZmF1bHQ6IGBudWxsYFxuICogQHByb3BlcnR5IHZpc2libGVEcm9wZG93biBEZWZhdWx0OiBgbnVsbGBcbiAqIEBwcm9wZXJ0eSBleHBvcnRJbWFnZSBEZWZhdWx0OiBbYERFRkFVTFRfRVhQT1JUX0lNQUdFYF0oI2RlZmF1bHRfZXhwb3J0X2ltYWdlKVxuICogQHByb3BlcnR5IGV4cG9ydERhdGEgRGVmYXVsdDogW2BERUZBVUxUX0VYUE9SVF9EQVRBYF0oI2RlZmF1bHRfZXhwb3J0X2RhdGEpXG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwIERlZmF1bHQ6IFtgREVGQVVMVF9FWFBPUlRfTUFQYF0oI2RlZmF1bHRfZXhwb3J0X21hcClcbiAqIEBwcm9wZXJ0eSBtYXBDb250cm9scyBEZWZhdWx0OiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHByb3BlcnR5IG5vdGlmaWNhdGlvbnMgRGVmYXVsdDogYFtdYFxuICogQHByb3BlcnR5IG5vdGlmaWNhdGlvbnMgRGVmYXVsdDogYFtdYFxuICogQHByb3BlcnR5IGxvYWRGaWxlc1xuICogQHByb3BlcnR5IGxvY2FsZSBEZWZhdWx0OiBgJ2VuJ2BcbiAqIEBwcm9wZXJ0eSB0aGVtZSBEZWZhdWx0OiBgJ2RhcmsnYFxuICogQHByb3BlcnR5IGlzU2lkZVBhbmVsQ2xvc2VCdXR0b25WaXNpYmxlIERlZmF1bHQ6IGB0cnVlYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9VSV9TVEFURTogVWlTdGF0ZSA9IHtcbiAgcmVhZE9ubHk6IGZhbHNlLFxuICBhY3RpdmVTaWRlUGFuZWw6IERFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwsXG4gIGN1cnJlbnRNb2RhbDogREVGQVVMVF9NT0RBTCxcbiAgZGF0YXNldEtleVRvUmVtb3ZlOiBudWxsLFxuICB2aXNpYmxlRHJvcGRvd246IG51bGwsXG4gIC8vIGV4cG9ydCBpbWFnZSBtb2RhbCB1aVxuICBleHBvcnRJbWFnZTogREVGQVVMVF9FWFBPUlRfSU1BR0UsXG4gIC8vIGV4cG9ydCBkYXRhIG1vZGFsIHVpXG4gIGV4cG9ydERhdGE6IERFRkFVTFRfRVhQT1JUX0RBVEEsXG4gIC8vIGh0bWwgZXhwb3J0XG4gIGV4cG9ydE1hcDogREVGQVVMVF9FWFBPUlRfTUFQLFxuICAvLyBleHBvcnQgdmlkZW8gbW9kYWwgdWlcbiAgZXhwb3J0VmlkZW86IERFRkFVTFRfRVhQT1JUX1ZJREVPLFxuICAvLyBtYXAgY29udHJvbCBwYW5lbHNcbiAgbWFwQ29udHJvbHM6IERFRkFVTFRfTUFQX0NPTlRST0xTLFxuICAvLyB1aSBub3RpZmljYXRpb25zXG4gIG5vdGlmaWNhdGlvbnM6IERFRkFVTFRfTk9USUZJQ0FUSU9OUyxcbiAgLy8gbG9hZCBmaWxlc1xuICBsb2FkRmlsZXM6IERFRkFVTFRfTE9BRF9GSUxFUyxcbiAgLy8gTG9jYWxlIG9mIHRoZSBVSVxuICBsb2NhbGU6IExPQ0FMRV9DT0RFUy5lbixcbiAgLy8gVGhlbWUgb2YgdGhlIFVJICh1c2VkIHdoZW4gZW5hYmxlVGhlbWVUb2dnbGUgaXMgb24pXG4gIHRoZW1lOiBUSEVNRS5kYXJrLFxuICBsYXllclBhbmVsTGlzdFZpZXc6ICdsaXN0JyxcbiAgZmlsdGVyUGFuZWxMaXN0VmlldzogJ2xpc3QnLFxuICBpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZTogdHJ1ZVxufTtcblxuLyogVXBkYXRlcnMgKi9cbi8qKlxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICovXG5leHBvcnQgY29uc3QgaW5pdFVpU3RhdGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAgYWN0aW9uOiB7XG4gICAgdHlwZT86ICh0eXBlb2YgQWN0aW9uVHlwZXMpWydJTklUJ107XG4gICAgcGF5bG9hZDogS2VwbGVyR2xJbml0UGF5bG9hZDtcbiAgfVxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgLi4uKGFjdGlvbi5wYXlsb2FkIHx8IHt9KS5pbml0aWFsVWlTdGF0ZVxufSk7XG5cbi8qKlxuICogVG9nZ2xlIGFjdGl2ZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgaWQgb2Ygc2lkZSBwYW5lbCB0byBiZSBzaG93biwgb25lIG9mIGBsYXllcmAsIGBmaWx0ZXJgLCBgaW50ZXJhY3Rpb25gLCBgbWFwYC4gY2xvc2Ugc2lkZSBwYW5lbCBpZiBgbnVsbGBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU2lkZVBhbmVsVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBpZH06IFVJU3RhdGVBY3Rpb25zLlRvZ2dsZVNpZGVQYW5lbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICByZXR1cm4gaWQgPT09IHN0YXRlLmFjdGl2ZVNpZGVQYW5lbFxuICAgID8gc3RhdGVcbiAgICA6IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGFjdGl2ZVNpZGVQYW5lbDogaWRcbiAgICAgIH07XG59O1xuXG4vKipcbiAqIFNob3cgYW5kIGhpZGUgbW9kYWwgZGlhbG9nXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW1hY3Rpb24ucGF5bG9hZCBpZCBvZiBtb2RhbCB0byBiZSBzaG93biwgbnVsbCB0byBoaWRlIG1vZGFscy4gT25lIG9mOlxuICogIC0gW2BEQVRBX1RBQkxFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZGF0YV90YWJsZV9pZClcbiAqICAtIFtgREVMRVRFX0RBVEFfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNkZWxldGVfZGF0YV9pZClcbiAqICAtIFtgQUREX0RBVEFfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNhZGRfZGF0YV9pZClcbiAqICAtIFtgRVhQT1JUX0lNQUdFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZXhwb3J0X2ltYWdlX2lkKVxuICogIC0gW2BFWFBPUlRfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2V4cG9ydF9kYXRhX2lkKVxuICogIC0gW2BBRERfTUFQX1NUWUxFX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjYWRkX21hcF9zdHlsZV9pZClcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTW9kYWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGlkfTogVUlTdGF0ZUFjdGlvbnMuVG9nZ2xlTW9kYWxVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBjdXJyZW50TW9kYWw6IGlkXG59KTtcblxuLyoqXG4gKiBIaWRlIGFuZCBzaG93IHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGlkfTogVUlTdGF0ZUFjdGlvbnMuU2hvd0V4cG9ydERyb3Bkb3duVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgdmlzaWJsZURyb3Bkb3duOiBpZFxufSk7XG5cbi8qKlxuICogSGlkZSBzaWRlIHBhbmVsIGhlYWRlciBkcm9wZG93biwgYWN0aXZhdGVkIGJ5IGNsaWNraW5nIHRoZSBzaGFyZSBsaW5rIG9uIHRvcCBvZiB0aGUgc2lkZSBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgaGlkZUV4cG9ydERyb3Bkb3duVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIHZpc2libGVEcm9wZG93bjogbnVsbFxufSk7XG5cbi8qKlxuICogVG9nZ2xlIHNpZGUgcGFuZWwgY2xvc2UgYnV0dG9uIG9uIHRvcCBsZWZ0IG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTaWRlUGFuZWxDbG9zZUJ1dHRvblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3Nob3d9fTogVUlTdGF0ZUFjdGlvbnMuVG9nZ2xlU2lkZVBhbmVsQ2xvc2VCdXR0b25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZTogc2hvd1xufSk7XG5cbi8vIE1hcCBjb250cm9sIGRyb3Bkb3ducy9tZW51cyB0aGF0IG92ZXJsYXAgZWFjaCBvdGhlciB2aXN1YWxseSBhbmQgdGhlcmVmb3JlXG4vLyBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlOiBvcGVuaW5nIG9uZSBjbG9zZXMgYWxsIHRoZSBvdGhlcnMuXG4vLyAoc3BsaXQvdmlldy1tb2RlIG1lbnUsIHRvcC8zZC9nbG9iZSBtZW51LCBwb2x5Z29uIGRyYXcgdG9vbCwgbGFuZ3VhZ2UgbWVudSlcbmV4cG9ydCBjb25zdCBNVVRVQUxMWV9FWENMVVNJVkVfTUFQX0NPTlRST0xTOiBzdHJpbmdbXSA9IFtcbiAgTUFQX0NPTlRST0xTLnNwbGl0TWFwLFxuICBNQVBfQ09OVFJPTFMudG9nZ2xlM2QsXG4gIE1BUF9DT05UUk9MUy5tYXBEcmF3LFxuICBNQVBfQ09OVFJPTFMubWFwTG9jYWxlXG5dO1xuXG4vKipcbiAqIFRvZ2dsZSBhY3RpdmUgbWFwIGNvbnRyb2wgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb24gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgbWFwIGNvbnRyb2wgcGFuZWwgaWQsIG9uZSBvZiB0aGUga2V5cyBvZjogW2BERUZBVUxUX01BUF9DT05UUk9MU2BdKCNkZWZhdWx0X21hcF9jb250cm9scylcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3BhbmVsSWQsIGluZGV4ID0gMH19OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVNYXBDb250cm9sVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIGxldCB1cGRhdGVkU3RhdGUgPSBzdGF0ZTtcblxuICAvLyBUaGUgb3ZlcmxhcHBpbmcgbWFwIGNvbnRyb2wgbWVudXMgc2hvdWxkIGJlIG11dHVhbGx5IGV4Y2x1c2l2ZTogd2hlbiBvbmUgb2ZcbiAgLy8gdGhlbSBpcyBiZWluZyBvcGVuZWQsIGRlYWN0aXZhdGUgZXZlcnkgb3RoZXIgb25lIHRoYXQgaXMgY3VycmVudGx5IGFjdGl2ZVxuICAvLyBzbyB0aGVpciBkcm9wZG93bnMgbmV2ZXIgb3ZlcmxhcCBvbiBzY3JlZW4uXG4gIGNvbnN0IGlzT3BlbmluZyA9ICF1cGRhdGVkU3RhdGUubWFwQ29udHJvbHNbcGFuZWxJZF0/LmFjdGl2ZTtcbiAgaWYgKGlzT3BlbmluZyAmJiBNVVRVQUxMWV9FWENMVVNJVkVfTUFQX0NPTlRST0xTLmluY2x1ZGVzKHBhbmVsSWQpKSB7XG4gICAgY29uc3QgbmV4dE1hcENvbnRyb2xzID0gey4uLnVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc307XG4gICAgbGV0IGRpZERlYWN0aXZhdGUgPSBmYWxzZTtcbiAgICBNVVRVQUxMWV9FWENMVVNJVkVfTUFQX0NPTlRST0xTLmZvckVhY2goY29udHJvbElkID0+IHtcbiAgICAgIGlmIChjb250cm9sSWQgIT09IHBhbmVsSWQgJiYgbmV4dE1hcENvbnRyb2xzW2NvbnRyb2xJZF0/LmFjdGl2ZSkge1xuICAgICAgICBuZXh0TWFwQ29udHJvbHNbY29udHJvbElkXSA9IHsuLi5uZXh0TWFwQ29udHJvbHNbY29udHJvbElkXSwgYWN0aXZlOiBmYWxzZX07XG4gICAgICAgIGRpZERlYWN0aXZhdGUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChkaWREZWFjdGl2YXRlKSB7XG4gICAgICB1cGRhdGVkU3RhdGUgPSB7Li4udXBkYXRlZFN0YXRlLCBtYXBDb250cm9sczogbmV4dE1hcENvbnRyb2xzfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnVwZGF0ZWRTdGF0ZSxcbiAgICBtYXBDb250cm9sczoge1xuICAgICAgLi4udXBkYXRlZFN0YXRlLm1hcENvbnRyb2xzLFxuICAgICAgW3BhbmVsSWRdOiB7XG4gICAgICAgIC4uLih1cGRhdGVkU3RhdGUubWFwQ29udHJvbHNbcGFuZWxJZF0gYXMgTWFwQ29udHJvbEl0ZW0pLFxuICAgICAgICBhY3RpdmU6ICF1cGRhdGVkU3RhdGUubWFwQ29udHJvbHNbcGFuZWxJZF0/LmFjdGl2ZSxcbiAgICAgICAgYWN0aXZlTWFwSW5kZXg6IGluZGV4XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgbWFwIGNvbnRyb2wgdmlzaWJpbGl0eVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvbiBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3BhbmVsSWQsIHNob3d9fTogVUlTdGF0ZUFjdGlvbnMuc2V0TWFwQ29udHJvbFZpc2liaWxpdHlVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgaWYgKCFzdGF0ZS5tYXBDb250cm9scz8uW3BhbmVsSWRdKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtYXBDb250cm9sczoge1xuICAgICAgLi4uc3RhdGUubWFwQ29udHJvbHMsXG4gICAgICBbcGFuZWxJZF06IHtcbiAgICAgICAgLi4uc3RhdGUubWFwQ29udHJvbHNbcGFuZWxJZF0sXG4gICAgICAgIHNob3c6IEJvb2xlYW4oc2hvdylcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBtYXAgY29udHJvbCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvbiBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRNYXBDb250cm9sU2V0dGluZ3NVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHtwYW5lbElkLCBzZXR0aW5nc319OiBVSVN0YXRlQWN0aW9ucy5zZXRNYXBDb250cm9sU2V0dGluZ3NVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3QgbWFwQ29udHJvbCA9IHN0YXRlLm1hcENvbnRyb2xzPy5bcGFuZWxJZF0gYXMgTWFwQ29udHJvbE1hcExlZ2VuZCB8IHVuZGVmaW5lZDtcbiAgaWYgKCFtYXBDb250cm9sKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtYXBDb250cm9sczoge1xuICAgICAgLi4uc3RhdGUubWFwQ29udHJvbHMsXG4gICAgICBbcGFuZWxJZF06IHtcbiAgICAgICAgLi4ubWFwQ29udHJvbCxcbiAgICAgICAgc2V0dGluZ3M6IHsuLi5tYXBDb250cm9sLnNldHRpbmdzLCAuLi5zZXR0aW5nc31cbiAgICAgIH0gYXMgTWFwQ29udHJvbE1hcExlZ2VuZFxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogVG9nZ2xlIGFjdGl2ZSBtYXAgY29udHJvbCBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGRhdGFzZXQgaWRcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgb3BlbkRlbGV0ZU1vZGFsVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBkYXRhc2V0S2V5VG9SZW1vdmV9OiBVSVN0YXRlQWN0aW9ucy5PcGVuRGVsZXRlTW9kYWxVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBjdXJyZW50TW9kYWw6IERFTEVURV9EQVRBX0lELFxuICBkYXRhc2V0S2V5VG9SZW1vdmVcbn0pO1xuXG4vKipcbiAqIFNldCBgZXhwb3J0SW1hZ2VgIG9wdGlvbnMgc3VjaCBhcyBgbGVnZW5kYCBhbmQgYGNoYXJ0c2AgdG8gYHRydWVgIG9yIGBmYWxzZWBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBuZXdTZXR0aW5nfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IHVwZGF0ZWQgPSB7Li4uc3RhdGUuZXhwb3J0SW1hZ2UsIC4uLm5ld1NldHRpbmd9O1xuICBjb25zdCBpbWFnZVNpemUgPSBjYWxjdWxhdGVFeHBvcnRJbWFnZVNpemUodXBkYXRlZCkgfHwgc3RhdGUuZXhwb3J0SW1hZ2UuaW1hZ2VTaXplO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgZXhwb3J0SW1hZ2U6IHtcbiAgICAgIC4uLnVwZGF0ZWQsXG4gICAgICBpbWFnZVNpemVcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFNldCBgZXhwb3J0SW1hZ2Uuc2V0RXhwb3J0SW1hZ2VEYXRhVXJpYCB0byBhIGltYWdlIGRhdGFVcmlcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBleHBvcnQgaW1hZ2UgZGF0YSB1cmlcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBkYXRhVXJpfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIGlmIChkYXRhVXJpID09PSBzdGF0ZS5leHBvcnRJbWFnZS5pbWFnZURhdGFVcmkpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBleHBvcnRJbWFnZToge1xuICAgICAgLi4uc3RhdGUuZXhwb3J0SW1hZ2UsXG4gICAgICBwcm9jZXNzaW5nOiBmYWxzZSxcbiAgICAgIGltYWdlRGF0YVVyaTogZGF0YVVyaVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SW1hZ2VFcnJvclVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogZXJyb3J9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0SW1hZ2U6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICBwcm9jZXNzaW5nOiBmYWxzZSxcbiAgICBlcnJvclxuICB9XG59KTtcblxuLyoqXG4gKiBEZWxldGUgY2FjaGVkIGV4cG9ydCBpbWFnZVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgY2xlYW51cEV4cG9ydEltYWdlVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydEltYWdlOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0SW1hZ2UsXG4gICAgZXhwb3J0aW5nOiBmYWxzZSxcbiAgICBpbWFnZURhdGFVcmk6ICcnLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBwcm9jZXNzaW5nOiBmYWxzZSxcbiAgICBjZW50ZXI6IGZhbHNlXG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCBgZXhwb3J0VmlkZW9gIHNldHRpbmdzOiBtZWRpYVR5cGUsIGNhbWVyYVByZXNldCwgZmlsZU5hbWUsIHJlc29sdXRpb24sIGR1cmF0aW9uTXNcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBuZXcgdmlkZW8gZXhwb3J0IHNldHRpbmdzXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydFZpZGVvU2V0dGluZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogbmV3U2V0dGluZ306IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydFZpZGVvU2V0dGluZ1VwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydFZpZGVvOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0VmlkZW8sXG4gICAgLi4ubmV3U2V0dGluZ1xuICB9XG59KTtcblxuLyoqXG4gKiBTdGFydCBpbWFnZSBleHBvcnRpbmcgZmxvd1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQHJldHVybnMge1VpU3RhdGV9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzdGFydEV4cG9ydGluZ0ltYWdlVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBvcHRpb25zID0ge319OiB7cGF5bG9hZDogUGFydGlhbDxFeHBvcnRJbWFnZT59XG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3QgaW1hZ2VTZXR0aW5ncyA9IHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGV4cG9ydGluZzogdHJ1ZVxuICB9O1xuXG4gIHJldHVybiBjb21wb3NlXyhbXG4gICAgY2xlYW51cEV4cG9ydEltYWdlVXBkYXRlcixcbiAgICBhcHBseV8oc2V0RXhwb3J0SW1hZ2VTZXR0aW5nVXBkYXRlciwgcGF5bG9hZF8oaW1hZ2VTZXR0aW5ncykpXG4gIF0pKHN0YXRlKTtcbn07XG5cbi8qKlxuICogU2V0IHNlbGVjdGVkIGRhdGFzZXQgZm9yIGV4cG9ydFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGRhdGFzZXQgaWRcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0U2VsZWN0ZWREYXRhc2V0VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBkYXRhc2V0fTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0U2VsZWN0ZWREYXRhc2V0VXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0RGF0YToge1xuICAgIC4uLnN0YXRlLmV4cG9ydERhdGEsXG4gICAgc2VsZWN0ZWREYXRhc2V0OiBkYXRhc2V0XG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCBkYXRhIGZvcm1hdCBmb3IgZXhwb3J0aW5nIGRhdGFcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBvbmUgb2YgYCd0ZXh0L2NzdidgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydERhdGFUeXBlVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBkYXRhVHlwZX06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydERhdGFUeXBlVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0RGF0YToge1xuICAgIC4uLnN0YXRlLmV4cG9ydERhdGEsXG4gICAgZGF0YVR5cGVcbiAgfVxufSk7XG5cbi8qKlxuICogV2hldGhlciB0byBleHBvcnQgZmlsdGVyZWQgZGF0YSwgYHRydWVgIG9yIGBmYWxzZWBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogZmlsdGVyZWR9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRGaWx0ZXJlZFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydERhdGE6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnREYXRhLFxuICAgIGZpbHRlcmVkXG4gIH1cbn0pO1xuXG4vKipcbiAqIFdoZXRoZXIgdG8gaW5jbHVkaW5nIGRhdGEgaW4gbWFwIGNvbmZpZywgdG9nZ2xlIGJldHdlZW4gYHRydWVgIG9yIGBmYWxzZWBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVVwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRNYXA6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRNYXAsXG4gICAgW0VYUE9SVF9NQVBfRk9STUFUUy5KU09OXToge1xuICAgICAgLi4uc3RhdGUuZXhwb3J0TWFwW0VYUE9SVF9NQVBfRk9STUFUUy5KU09OXSxcbiAgICAgIGhhc0RhdGE6ICFzdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dLmhhc0RhdGFcbiAgICB9XG4gIH1cbn0pO1xuXG4vKipcbiAqIHdoZXRoZXIgdG8gZXhwb3J0IGEgbWFwYm94IGFjY2VzcyB0byBIVE1MIHNpbmdsZSBwYWdlXG4gKiBAcGFyYW0gc3RhdGUgLSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRVc2VyTWFwYm94QWNjZXNzVG9rZW5VcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHVzZXJNYXBib3hUb2tlbn06IFVJU3RhdGVBY3Rpb25zLlNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdLFxuICAgICAgdXNlck1hcGJveFRva2VuXG4gICAgfVxuICB9XG59KTtcblxuLyoqXG4gKiBTZXRzIHRoZSBleHBvcnQgbWFwIGZvcm1hdFxuICogQHBhcmFtIHN0YXRlIC0gYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZm9ybWF0IHRvIHVzZSB0byBleHBvcnQgdGhlIG1hcCBpbnRvXG4gKiBAcmV0dXJuIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwRm9ybWF0VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBmb3JtYXR9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRNYXA6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRNYXAsXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIGZvcm1hdFxuICB9XG59KTtcblxuLyoqXG4gKiBTZXQgdGhlIGV4cG9ydCBodG1sIG1hcCBtb2RlXG4gKiBAcGFyYW0gc3RhdGUgLSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCB0byBiZSBzZXQgKGF2YWlsYWJsZSBtb2RlczogRVhQT1JUX0hUTUxfTUFQX01PREVTKVxuICogQHJldHVybiBuZXh0U3RhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydE1hcEhUTUxNb2RlVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBtb2RlfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0SFRNTE1hcE1vZGVVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRNYXA6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRNYXAsXG4gICAgW0VYUE9SVF9NQVBfRk9STUFUUy5IVE1MXToge1xuICAgICAgLi4uc3RhdGUuZXhwb3J0TWFwW0VYUE9SVF9NQVBfRk9STUFUUy5IVE1MXSxcbiAgICAgIG1vZGVcbiAgICB9XG4gIH1cbn0pO1xuXG4vKipcbiAqIEFkZHMgYSBuZXcgbm90aWZpY2F0aW9uLlxuICogVXBkYXRlcyBhIG5vdGlmaWNhdGlvbiBpbiBjYXNlIG9mIG1hdGNoaW5nIGlkcy5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBQYXJhbXMgb2YgYSBub3RpZmljYXRpb25cbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgYWRkTm90aWZpY2F0aW9uVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkfTogVUlTdGF0ZUFjdGlvbnMuQWRkTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IG9sZE5vdGlmaWNhdGlvbnMgPSBzdGF0ZS5ub3RpZmljYXRpb25zIHx8IFtdO1xuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGNvbnN0IHBheWxvYWRJZCA9IHBheWxvYWQ/LmlkO1xuICBjb25zdCBub3RpZmljYXRpb25Ub1VwZGF0ZSA9IHBheWxvYWRJZCA/IG9sZE5vdGlmaWNhdGlvbnMuZmluZChuID0+IG4uaWQgPT09IHBheWxvYWRJZCkgOiBudWxsO1xuXG4gIGxldCBub3RpZmljYXRpb25zO1xuICBpZiAobm90aWZpY2F0aW9uVG9VcGRhdGUpIHtcbiAgICBub3RpZmljYXRpb25zID0gb2xkTm90aWZpY2F0aW9ucy5tYXAobiA9PlxuICAgICAgbi5pZCA9PT0gcGF5bG9hZElkID8gY3JlYXRlTm90aWZpY2F0aW9uKHsuLi5wYXlsb2FkLCBjb3VudDogbi5jb3VudCArIDF9KSA6IG5cbiAgICApO1xuICB9IGVsc2Uge1xuICAgIG5vdGlmaWNhdGlvbnMgPSBbLi4ub2xkTm90aWZpY2F0aW9ucywgY3JlYXRlTm90aWZpY2F0aW9uKHBheWxvYWQpXTtcbiAgfVxuXG4gIHJldHVybiB7Li4uc3RhdGUsIG5vdGlmaWNhdGlvbnN9O1xufTtcblxuLyoqXG4gKiBSZW1vdmUgYSBub3RpZmljYXRpb25cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBpZCBvZiB0aGUgbm90aWZpY2F0aW9uIHRvIGJlIHJlbW92ZWRcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVtb3ZlTm90aWZpY2F0aW9uVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBpZH06IFVJU3RhdGVBY3Rpb25zLlJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIG5vdGlmaWNhdGlvbnM6IHN0YXRlLm5vdGlmaWNhdGlvbnMuZmlsdGVyKG4gPT4gbi5pZCAhPT0gaWQpXG59KTtcblxuLyoqXG4gKiBGaXJlZCB3aGVuIGZpbGUgbG9hZGluZyBiZWdpblxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkRmlsZXNVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbG9hZEZpbGVzOiB7XG4gICAgLi4uc3RhdGUubG9hZEZpbGVzLFxuICAgIGZpbGVMb2FkaW5nOiB0cnVlXG4gIH1cbn0pO1xuXG4vKipcbiAqIEhhbmRsZXMgbG9hZGluZyBmaWxlIHN1Y2Nlc3MgYW5kIHNldCBmaWxlTG9hZGluZyBwcm9wZXJ0eSB0byBmYWxzZVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkRmlsZXNTdWNjZXNzVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGxvYWRGaWxlczoge1xuICAgIC4uLnN0YXRlLmxvYWRGaWxlcyxcbiAgICBmaWxlTG9hZGluZzogZmFsc2VcbiAgfVxufSk7XG5cbi8qKlxuICogSGFuZGxlcyBsb2FkIGZpbGUgZXJyb3IgYW5kIHNldCBmaWxlTG9hZGluZyBwcm9wZXJ0eSB0byBmYWxzZVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLmVycm9yXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRGaWxlc0VyclVwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUsIHtlcnJvcn06IExvYWRGaWxlc0VyclVwZGF0ZXJBY3Rpb24pOiBVaVN0YXRlID0+XG4gIGFkZE5vdGlmaWNhdGlvblVwZGF0ZXIoXG4gICAge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBsb2FkRmlsZXM6IHtcbiAgICAgICAgLi4uc3RhdGUubG9hZEZpbGVzLFxuICAgICAgICBmaWxlTG9hZGluZzogZmFsc2VcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHBheWxvYWQ6IGVycm9yTm90aWZpY2F0aW9uKHtcbiAgICAgICAgbWVzc2FnZTogKGVycm9yIHx8IHt9KS5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gdXBsb2FkIGZpbGVzJyxcbiAgICAgICAgdG9waWM6IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUy5nbG9iYWxcbiAgICAgIH0pXG4gICAgfVxuICApO1xuXG4vKipcbiAqIEhhbmRsZXMgdG9nZ2xlIG1hcCBzcGxpdCBhbmQgcmVzZXQgYWxsIG1hcCBjb250cm9sIGluZGV4IHRvIDBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTcGxpdE1hcFVwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBtYXBDb250cm9sczogT2JqZWN0LmVudHJpZXMoc3RhdGUubWFwQ29udHJvbHMpLnJlZHVjZShcbiAgICAoYWNjLCBlbnRyeSkgPT4gKHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIFtlbnRyeVswXV06IHtcbiAgICAgICAgLi4uKGVudHJ5WzFdIGFzIE1hcENvbnRyb2xJdGVtKSxcbiAgICAgICAgYWN0aXZlTWFwSW5kZXg6IDBcbiAgICAgIH1cbiAgICB9KSxcbiAgICB7fSBhcyBNYXBDb250cm9sc1xuICApXG59KTtcblxuLyoqXG4gKiBUb2dnbGUgbW9kYWwgZGF0YVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNob3dEYXRhc2V0VGFibGVVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PlxuICB0b2dnbGVNb2RhbFVwZGF0ZXIoc3RhdGUsIHtwYXlsb2FkOiBEQVRBX1RBQkxFX0lEfSk7XG5cbi8qKlxuICogU2V0IHRoZSBsb2NhbGUgb2YgdGhlIFVJXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWRcbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZC5sb2NhbGUgbG9jYWxlXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldExvY2FsZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge2xvY2FsZX19OiBVSVN0YXRlQWN0aW9ucy5TZXRMb2NhbGVVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBsb2NhbGVcbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgdGhlbWUgb2YgdGhlIFVJXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWRcbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZC50aGVtZSB0aGVtZVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRUaGVtZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3RoZW1lfX06IFVJU3RhdGVBY3Rpb25zLlNldFRoZW1lVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgdGhlbWVcbn0pO1xuXG4vKipcbiAqIFRvZ2dsZSBsYXllciBwYW5lbCBsaXN0IHZpZXdcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBsYXllciBwYW5lbCBsaXN0VmlldyB2YWx1ZS4gQ2FuIGJlICdsaXN0JyBvciAnc29ydEJ5RGF0YXNldCdcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlUGFuZWxMaXN0Vmlld1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3BhbmVsSWQsIGxpc3RWaWV3fX06IFVJU3RhdGVBY3Rpb25zLlRvZ2dsZVBhbmVsTGlzdFZpZXdBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBzdGF0ZVByb3AgPVxuICAgIHBhbmVsSWQgPT09ICdsYXllcidcbiAgICAgID8gJ2xheWVyUGFuZWxMaXN0VmlldydcbiAgICAgIDogcGFuZWxJZCA9PT0gJ2ZpbHRlcidcbiAgICAgID8gJ2ZpbHRlclBhbmVsTGlzdFZpZXcnXG4gICAgICA6IG51bGw7XG4gIGlmICghc3RhdGVQcm9wIHx8IHN0YXRlW3N0YXRlUHJvcF0gPT09IGxpc3RWaWV3KSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgW3N0YXRlUHJvcF06IGxpc3RWaWV3XG4gIH07XG59O1xuXG4vKipcbiAqIE1lcmdlIHJlY2VpdmVkIHVpIHN0YXRlIGNvbmZpZyB3aGVuIGxvYWRpbmcgYSBzYXZlZCBtYXBcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBzYXZlZCBtYXAgY29uZmlnIGB7bWFwU3R5bGUsIHZpc1N0YXRlLCBtYXBTdGF0ZSwgdWlTdGF0ZX1gXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlY2VpdmVNYXBDb25maWdVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge1xuICAgIHBheWxvYWQ6IHtjb25maWd9XG4gIH06IHtcbiAgICB0eXBlPzogKHR5cGVvZiBBY3Rpb25UeXBlcylbJ1JFQ0VJVkVfTUFQX0NPTkZJRyddO1xuICAgIHBheWxvYWQ6IFJlY2VpdmVNYXBDb25maWdQYXlsb2FkO1xuICB9XG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3Qge3VpU3RhdGV9ID0gY29uZmlnIHx8IHt9O1xuICBpZiAoIXVpU3RhdGUpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBsZXQgbmV3U3RhdGUgPSBzdGF0ZTtcblxuICBpZiAodWlTdGF0ZS5tYXBDb250cm9scz8ubWFwTGVnZW5kPy5hY3RpdmUpIHtcbiAgICBjb25zdCBjdXJyZW50TGVnZW5kID0gbmV3U3RhdGUubWFwQ29udHJvbHMubWFwTGVnZW5kO1xuICAgIG5ld1N0YXRlID0ge1xuICAgICAgLi4ubmV3U3RhdGUsXG4gICAgICBtYXBDb250cm9sczoge1xuICAgICAgICAuLi5uZXdTdGF0ZS5tYXBDb250cm9scyxcbiAgICAgICAgbWFwTGVnZW5kOiB7XG4gICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICAuLi5jdXJyZW50TGVnZW5kLFxuICAgICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICBhY3RpdmVNYXBJbmRleDogMFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmICh1aVN0YXRlLm1hcENvbnRyb2xzPy5jaGFydD8uYWN0aXZlKSB7XG4gICAgY29uc3QgY3VycmVudENoYXJ0ID0gbmV3U3RhdGUubWFwQ29udHJvbHMuY2hhcnQ7XG4gICAgbmV3U3RhdGUgPSB7XG4gICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAgIC4uLm5ld1N0YXRlLm1hcENvbnRyb2xzLFxuICAgICAgICBjaGFydDoge1xuICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgLi4uY3VycmVudENoYXJ0LFxuICAgICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICBhY3RpdmVNYXBJbmRleDogMFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmICh1aVN0YXRlLm1hcENvbnRyb2xzPy5tYXBMZWdlbmQ/LnNldHRpbmdzKSB7XG4gICAgbmV3U3RhdGUgPSBzZXRNYXBDb250cm9sU2V0dGluZ3NVcGRhdGVyKG5ld1N0YXRlLCB7XG4gICAgICBwYXlsb2FkOiB7cGFuZWxJZDogJ21hcExlZ2VuZCcsIHNldHRpbmdzOiB1aVN0YXRlLm1hcENvbnRyb2xzLm1hcExlZ2VuZC5zZXR0aW5nc31cbiAgICB9IGFzIFVJU3RhdGVBY3Rpb25zLnNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXJBY3Rpb24pO1xuICB9XG5cbiAgaWYgKHVpU3RhdGUubG9jYWxlKSB7XG4gICAgbmV3U3RhdGUgPSBzZXRMb2NhbGVVcGRhdGVyKG5ld1N0YXRlLCB7XG4gICAgICBwYXlsb2FkOiB7bG9jYWxlOiB1aVN0YXRlLmxvY2FsZX1cbiAgICB9IGFzIFVJU3RhdGVBY3Rpb25zLlNldExvY2FsZVVwZGF0ZXJBY3Rpb24pO1xuICB9XG5cbiAgaWYgKHVpU3RhdGUudGhlbWUpIHtcbiAgICBuZXdTdGF0ZSA9IHNldFRoZW1lVXBkYXRlcihuZXdTdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge3RoZW1lOiB1aVN0YXRlLnRoZW1lfVxuICAgIH0gYXMgVUlTdGF0ZUFjdGlvbnMuU2V0VGhlbWVVcGRhdGVyQWN0aW9uKTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBOztBQUVBLFNBQ0VBLFdBQVcsRUFDWEMsYUFBYSxFQUNiQywyQkFBMkIsRUFDM0JDLGNBQWMsRUFDZEMsZ0JBQWdCLEVBQ2hCQyxxQkFBcUIsRUFDckJDLGlCQUFpQixFQUNqQkMsa0JBQWtCLEVBQ2xCQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsS0FBSyxRQUNBLHNCQUFzQjtBQUM3QixTQUFRQyxZQUFZLFFBQU8seUJBQXlCO0FBQ3BELFNBQ0VDLGtCQUFrQixFQUNsQkMsaUJBQWlCLEVBQ2pCQyx3QkFBd0IsRUFDeEJDLG9CQUFvQixRQUNmLGtCQUFrQjtBQUN6QixTQUFRQyxRQUFRLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFPLG9CQUFvQjtBQXNCN0QsT0FBTyxJQUFNQyx5QkFBeUIsR0FBRyxPQUFPO0FBQ2hELE9BQU8sSUFBTUMsYUFBYSxHQUFHcEIsV0FBVzs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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LEtBQUFxTSxxQkFBQSxHQUFJSSxPQUFPLENBQUNySSxXQUFXLGNBQUFpSSxxQkFBQSxnQkFBQUEscUJBQUEsR0FBbkJBLHFCQUFBLENBQXFCTyxLQUFLLGNBQUFQLHFCQUFBLGVBQTFCQSxxQkFBQSxDQUE0QnZNLE1BQU0sRUFBRTtJQUN0QyxJQUFNK00sWUFBWSxHQUFHSCxRQUFRLENBQUN0SSxXQUFXLENBQUN3SSxLQUFLO0lBQy9DRixRQUFRLEdBQUF4TSxhQUFBLENBQUFBLGFBQUEsS0FDSHdNLFFBQVE7TUFDWHRJLFdBQVcsRUFBQWxFLGFBQUEsQ0FBQUEsYUFBQSxLQUNOd00sUUFBUSxDQUFDdEksV0FBVztRQUN2QndJLEtBQUssRUFBQTFNLGFBQUEsQ0FBQUEsYUFBQTtVQUNITCxJQUFJLEVBQUU7UUFBSSxHQUNQZ04sWUFBWTtVQUNmL00sTUFBTSxFQUFFLElBQUk7VUFDWkUsY0FBYyxFQUFFO1FBQUM7TUFDbEI7SUFDRixFQUNGO0VBQ0g7RUFFQSxLQUFBc00scUJBQUEsR0FBSUcsT0FBTyxDQUFDckksV0FBVyxjQUFBa0kscUJBQUEsZ0JBQUFBLHFCQUFBLEdBQW5CQSxxQkFBQSxDQUFxQjNMLFNBQVMsY0FBQTJMLHFCQUFBLGVBQTlCQSxxQkFBQSxDQUFnQzNFLFFBQVEsRUFBRTtJQUM1QytFLFFBQVEsR0FBR25GLDRCQUE0QixDQUFDbUYsUUFBUSxFQUFFO01BQ2hEekgsT0FBTyxFQUFFO1FBQUNzQixPQUFPLEVBQUUsV0FBVztRQUFFb0IsUUFBUSxFQUFFOEUsT0FBTyxDQUFDckksV0FBVyxDQUFDekQsU0FBUyxDQUFDZ0g7TUFBUTtJQUNsRixDQUFzRCxDQUFDO0VBQ3pEO0VBRUEsSUFBSThFLE9BQU8sQ0FBQ2xJLE1BQU0sRUFBRTtJQUNsQm1JLFFBQVEsR0FBR2pCLGdCQUFnQixDQUFDaUIsUUFBUSxFQUFFO01BQ3BDekgsT0FBTyxFQUFFO1FBQUNWLE1BQU0sRUFBRWtJLE9BQU8sQ0FBQ2xJO01BQU07SUFDbEMsQ0FBMEMsQ0FBQztFQUM3QztFQUVBLElBQUlrSSxPQUFPLENBQUNoSSxLQUFLLEVBQUU7SUFDakJpSSxRQUFRLEdBQUdmLGVBQWUsQ0FBQ2UsUUFBUSxFQUFFO01BQ25DekgsT0FBTyxFQUFFO1FBQUNSLEtBQUssRUFBRWdJLE9BQU8sQ0FBQ2hJO01BQUs7SUFDaEMsQ0FBeUMsQ0FBQztFQUM1QztFQUVBLE9BQU9pSSxRQUFRO0FBQ2pCLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
1000
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBRERfREFUQV9JRCIsIkRBVEFfVEFCTEVfSUQiLCJERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MiLCJERUxFVEVfREFUQV9JRCIsIkVYUE9SVF9EQVRBX1RZUEUiLCJFWFBPUlRfSFRNTF9NQVBfTU9ERVMiLCJFWFBPUlRfSU1HX1JBVElPUyIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIlJFU09MVVRJT05TIiwiTUFQX0NPTlRST0xTIiwiVEhFTUUiLCJMT0NBTEVfQ09ERVMiLCJjcmVhdGVOb3RpZmljYXRpb24iLCJlcnJvck5vdGlmaWNhdGlvbiIsImNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZ2V0Q29uZmlndXJlZFRoZW1lcyIsImdldERlZmF1bHRVaVRoZW1lIiwicGF5bG9hZF8iLCJhcHBseV8iLCJjb21wb3NlXyIsIkRFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwiLCJERUZBVUxUX01PREFMIiwidWlTdGF0ZVVwZGF0ZXJzIiwiREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVMiLCJzaG93IiwiYWN0aXZlIiwiZGlzYWJsZUNsb3NlIiwiYWN0aXZlTWFwSW5kZXgiLCJERUZBVUxUX01BUF9MRUdFTkRfQ09OVFJPTCIsIl9vYmplY3RTcHJlYWQiLCJkaXNhYmxlRWRpdCIsIkRFRkFVTFRfTUFQX0NPTlRST0xTIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImZpbmFsIiwiY3VycmVudCIsIl9kZWZpbmVQcm9wZXJ0eSIsIm1hcExlZ2VuZCIsIkRFRkFVTFRfRVhQT1JUX0lNQUdFIiwicmF0aW8iLCJTQ1JFRU4iLCJyZXNvbHV0aW9uIiwiT05FX1giLCJsZWdlbmQiLCJjaGFydHMiLCJtYXBIIiwibWFwVyIsImltYWdlU2l6ZSIsInpvb21PZmZzZXQiLCJzY2FsZSIsImltYWdlVyIsImltYWdlSCIsImNlbnRlciIsImltYWdlRGF0YVVyaSIsImV4cG9ydGluZyIsInByb2Nlc3NpbmciLCJlcnJvciIsImVzY2FwZVhodG1sRm9yV2VicGFjayIsImZpbGVOYW1lIiwiREVGQVVMVF9MT0FEX0ZJTEVTIiwiZmlsZUxvYWRpbmciLCJERUZBVUxUX0VYUE9SVF9EQVRBIiwic2VsZWN0ZWREYXRhc2V0IiwiZGF0YVR5cGUiLCJDU1YiLCJmaWx0ZXJlZCIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OUyIsIkRFRkFVTFRfRVhQT1JUX0hUTUwiLCJleHBvcnRNYXBib3hBY2Nlc3NUb2tlbiIsInVzZXJNYXBib3hUb2tlbiIsIm1vZGUiLCJSRUFEIiwiREVGQVVMVF9FWFBPUlRfSlNPTiIsImhhc0RhdGEiLCJERUZBVUxUX0VYUE9SVF9NQVAiLCJIVE1MIiwiSlNPTiIsIkRFRkFVTFRfRVhQT1JUX1ZJREVPIiwibWVkaWFUeXBlIiwiY2FtZXJhUHJlc2V0IiwiZHVyYXRpb25NcyIsInN3aXBlU3RhcnRQY3QiLCJzd2lwZUVuZFBjdCIsInN3aXBlRWFzaW5nIiwiSU5JVElBTF9VSV9TVEFURSIsInJlYWRPbmx5IiwiYWN0aXZlU2lkZVBhbmVsIiwiY3VycmVudE1vZGFsIiwiZGF0YXNldEtleVRvUmVtb3ZlIiwiZGF0YXNldFRvUmVwbGFjZUlkIiwidmlzaWJsZURyb3Bkb3duIiwiZXhwb3J0SW1hZ2UiLCJleHBvcnREYXRhIiwiZXhwb3J0TWFwIiwiZXhwb3J0VmlkZW8iLCJtYXBDb250cm9scyIsIm5vdGlmaWNhdGlvbnMiLCJsb2FkRmlsZXMiLCJsb2NhbGUiLCJlbiIsInRoZW1lIiwiZGFyayIsImxheWVyUGFuZWxMaXN0VmlldyIsImZpbHRlclBhbmVsTGlzdFZpZXciLCJpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZSIsImluaXRVaVN0YXRlVXBkYXRlciIsInN0YXRlIiwiYWN0aW9uIiwiX2luaXRpYWxVaVN0YXRlJHRoZW1lIiwiaW5pdGlhbFVpU3RhdGUiLCJwYXlsb2FkIiwidGhlbWVzIiwicmVxdWVzdGVkIiwibGVuZ3RoIiwiaW5jbHVkZXMiLCJ0b2dnbGVTaWRlUGFuZWxVcGRhdGVyIiwiX3JlZiIsImlkIiwidG9nZ2xlTW9kYWxVcGRhdGVyIiwiX3JlZjIiLCJzaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyIiwiX3JlZjMiLCJoaWRlRXhwb3J0RHJvcGRvd25VcGRhdGVyIiwidG9nZ2xlU2lkZVBhbmVsQ2xvc2VCdXR0b25VcGRhdGVyIiwiX3JlZjQiLCJNVVRVQUxMWV9FWENMVVNJVkVfTUFQX0NPTlRST0xTIiwic3BsaXRNYXAiLCJ0b2dnbGUzZCIsIm1hcERyYXciLCJtYXBMb2NhbGUiLCJ0b2dnbGVNYXBDb250cm9sVXBkYXRlciIsIl9yZWY1IiwiX3VwZGF0ZWRTdGF0ZSRtYXBDb250IiwiX3VwZGF0ZWRTdGF0ZSRtYXBDb250MiIsIl9yZWY1JHBheWxvYWQiLCJwYW5lbElkIiwiX3JlZjUkcGF5bG9hZCRpbmRleCIsImluZGV4IiwidXBkYXRlZFN0YXRlIiwiaXNPcGVuaW5nIiwibmV4dE1hcENvbnRyb2xzIiwiZGlkRGVhY3RpdmF0ZSIsImZvckVhY2giLCJjb250cm9sSWQiLCJfbmV4dE1hcENvbnRyb2xzJGNvbnQiLCJzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXIiLCJfcmVmNiIsIl9zdGF0ZSRtYXBDb250cm9scyIsIl9yZWY2JHBheWxvYWQiLCJCb29sZWFuIiwic2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlciIsIl9yZWY3IiwiX3N0YXRlJG1hcENvbnRyb2xzMiIsIl9yZWY3JHBheWxvYWQiLCJzZXR0aW5ncyIsIm1hcENvbnRyb2wiLCJvcGVuRGVsZXRlTW9kYWxVcGRhdGVyIiwiX3JlZjgiLCJvcGVuUmVwbGFjZURhdGFzZXRNb2RhbFVwZGF0ZXIiLCJfcmVmOSIsInNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXIiLCJfcmVmMCIsIm5ld1NldHRpbmciLCJ1cGRhdGVkIiwic2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlciIsIl9yZWYxIiwiZGF0YVVyaSIsInNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyIiwiX3JlZjEwIiwiY2xlYW51cEV4cG9ydEltYWdlVXBkYXRlciIsInNldEV4cG9ydFZpZGVvU2V0dGluZ1VwZGF0ZXIiLCJfcmVmMTEiLCJzdGFydEV4cG9ydGluZ0ltYWdlVXBkYXRlciIsIl9yZWYxMiIsIl9yZWYxMiRwYXlsb2FkIiwib3B0aW9ucyIsImltYWdlU2V0dGluZ3MiLCJzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyIiwiX3JlZjEzIiwiZGF0YXNldCIsInNldEV4cG9ydERhdGFUeXBlVXBkYXRlciIsIl9yZWYxNCIsInNldEV4cG9ydEZpbHRlcmVkVXBkYXRlciIsIl9yZWYxNSIsInNldEV4cG9ydERhdGFVcGRhdGVyIiwic2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlciIsIl9yZWYxNiIsInNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXIiLCJfcmVmMTciLCJmb3JtYXQiLCJzZXRFeHBvcnRNYXBGaWxlTmFtZVVwZGF0ZXIiLCJfcmVmMTgiLCJzZXRFeHBvcnRNYXBIVE1MTW9kZVVwZGF0ZXIiLCJfcmVmMTkiLCJzZXRFeHBvcnRJbmNsdWRlTGF5ZXJBcGlLZXlzVXBkYXRlciIsIl9yZWYyMCIsImluY2x1ZGVMYXllckFwaUtleXMiLCJhZGROb3RpZmljYXRpb25VcGRhdGVyIiwiX3JlZjIxIiwib2xkTm90aWZpY2F0aW9ucyIsInBheWxvYWRJZCIsIm5vdGlmaWNhdGlvblRvVXBkYXRlIiwiZmluZCIsIm4iLCJtYXAiLCJjb3VudCIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsInJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXIiLCJfcmVmMjIiLCJmaWx0ZXIiLCJsb2FkRmlsZXNVcGRhdGVyIiwibG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIiLCJsb2FkRmlsZXNFcnJVcGRhdGVyIiwiX3JlZjIzIiwibWVzc2FnZSIsInRvcGljIiwiZ2xvYmFsIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwiZW50cmllcyIsImFjYyIsImVudHJ5Iiwic2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXIiLCJzZXRMb2NhbGVVcGRhdGVyIiwiX3JlZjI0Iiwic2V0VGhlbWVVcGRhdGVyIiwiX3JlZjI1IiwidG9nZ2xlUGFuZWxMaXN0Vmlld1VwZGF0ZXIiLCJfcmVmMjYiLCJfcmVmMjYkcGF5bG9hZCIsImxpc3RWaWV3Iiwic3RhdGVQcm9wIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJfcmVmMjciLCJfdWlTdGF0ZSRtYXBDb250cm9scyIsIl91aVN0YXRlJG1hcENvbnRyb2xzMiIsIl91aVN0YXRlJG1hcENvbnRyb2xzMyIsImNvbmZpZyIsIl9yZWYyOCIsInVpU3RhdGUiLCJuZXdTdGF0ZSIsImN1cnJlbnRMZWdlbmQiLCJjaGFydCIsImN1cnJlbnRDaGFydCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91aS1zdGF0ZS11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1xuICBBRERfREFUQV9JRCxcbiAgREFUQV9UQUJMRV9JRCxcbiAgREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTLFxuICBERUxFVEVfREFUQV9JRCxcbiAgRVhQT1JUX0RBVEFfVFlQRSxcbiAgRVhQT1JUX0hUTUxfTUFQX01PREVTLFxuICBFWFBPUlRfSU1HX1JBVElPUyxcbiAgRVhQT1JUX01BUF9GT1JNQVRTLFxuICBSRVNPTFVUSU9OUyxcbiAgTUFQX0NPTlRST0xTLFxuICBUSEVNRVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0xPQ0FMRV9DT0RFU30gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHtcbiAgY3JlYXRlTm90aWZpY2F0aW9uLFxuICBlcnJvck5vdGlmaWNhdGlvbixcbiAgY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplLFxuICBnZXRBcHBsaWNhdGlvbkNvbmZpZyxcbiAgZ2V0Q29uZmlndXJlZFRoZW1lcyxcbiAgZ2V0RGVmYXVsdFVpVGhlbWVcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge3BheWxvYWRfLCBhcHBseV8sIGNvbXBvc2VffSBmcm9tICcuL2NvbXBvc2VyLWhlbHBlcnMnO1xuXG5pbXBvcnQge1xuICBBY3Rpb25UeXBlcyxcbiAgS2VwbGVyR2xJbml0UGF5bG9hZCxcbiAgTG9hZEZpbGVzRXJyVXBkYXRlckFjdGlvbixcbiAgUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQsXG4gIFVJU3RhdGVBY3Rpb25zXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge1xuICBFeHBvcnREYXRhLFxuICBFeHBvcnRIdG1sLFxuICBFeHBvcnRKc29uLFxuICBFeHBvcnRNYXAsXG4gIEV4cG9ydEltYWdlLFxuICBFeHBvcnRWaWRlbyxcbiAgTWFwQ29udHJvbEl0ZW0sXG4gIE1hcENvbnRyb2xNYXBMZWdlbmQsXG4gIE1hcENvbnRyb2xzLFxuICBVaVN0YXRlXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BQ1RJVkVfU0lERV9QQU5FTCA9ICdsYXllcic7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NT0RBTCA9IEFERF9EQVRBX0lEO1xuXG4vKipcbiAqIFVwZGF0ZXJzIGZvciBgdWlTdGF0ZWAgcmVkdWNlci4gQ2FuIGJlIHVzZWQgaW4geW91ciByb290IHJlZHVjZXIgdG8gZGlyZWN0bHkgbW9kaWZ5IGtlcGxlci5nbCdzIHN0YXRlLlxuICogUmVhZCBtb3JlIGFib3V0IFtVc2luZyB1cGRhdGVyc10oLi4vYWR2YW5jZWQtdXNhZ2UvdXNpbmctdXBkYXRlcnMubWQpXG4gKlxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7dWlTdGF0ZVVwZGF0ZXJzfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbiAqIC8vIFJvb3QgUmVkdWNlclxuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogIGtlcGxlckdsOiBrZXBsZXJHbFJlZHVjZXIsXG4gKiAgYXBwOiBhcHBSZWR1Y2VyXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBjb21wb3NlZFJlZHVjZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICogIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAqICAgIC8vIGNsaWNrIGJ1dHRvbiB0byBjbG9zZSBzaWRlIHBhbmVsXG4gKiAgICBjYXNlICdDTElDS19CVVRUT04nOlxuICogICAgICByZXR1cm4ge1xuICogICAgICAgIC4uLnN0YXRlLFxuICogICAgICAgIGtlcGxlckdsOiB7XG4gKiAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbCxcbiAqICAgICAgICAgIGZvbzoge1xuICogICAgICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wuZm9vLFxuICogICAgICAgICAgICAgdWlTdGF0ZTogdWlTdGF0ZVVwZGF0ZXJzLnRvZ2dsZVNpZGVQYW5lbFVwZGF0ZXIoXG4gKiAgICAgICAgICAgICAgIHVpU3RhdGUsIHtwYXlsb2FkOiBudWxsfVxuICogICAgICAgICAgICAgKVxuICogICAgICAgICAgfVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgdWlTdGF0ZVVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5cbmNvbnN0IERFRkFVTFRfTUFQX0NPTlRST0xTX0ZFQVRVUkVTOiBNYXBDb250cm9sSXRlbSA9IHtcbiAgc2hvdzogdHJ1ZSxcbiAgYWN0aXZlOiBmYWxzZSxcbiAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgLy8gZGVmaW5lcyB3aGljaCBtYXAgaW5kZXggdXNlcnMgYXJlIGludGVyYWN0aW5nIHdpdGggKHRocm91Z2ggbWFwIGNvbnRyb2xzKVxuICBhY3RpdmVNYXBJbmRleDogMFxufTtcblxuY29uc3QgREVGQVVMVF9NQVBfTEVHRU5EX0NPTlRST0wgPSB7XG4gIC4uLkRFRkFVTFRfTUFQX0NPTlRST0xTX0ZFQVRVUkVTLFxuICBkaXNhYmxlRWRpdDogZmFsc2Vcbn07XG4vKipcbiAqIEEgbGlzdCBvZiBtYXAgY29udHJvbCB2aXNpYmlsaXR5IGFuZCB3aGV0aGVyIGlzIGl0IGFjdGl2ZS5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IHZpc2libGVMYXllcnMgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSBtYXBMZWdlbmQgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSB0b2dnbGUzZCBEZWZhdWx0OiBge3Nob3c6IHRydWV9YFxuICogQHByb3BlcnR5IHNwbGl0TWFwIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZX1gXG4gKiBAcHJvcGVydHkgbWFwRHJhdyBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IG1hcExvY2FsZSBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IG1hcFRoZW1lIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHJvcGVydHkgdmlld3BvcnRKc29uIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9DT05UUk9MUzogTWFwQ29udHJvbHMgPSAoXG4gIE9iamVjdC5rZXlzKE1BUF9DT05UUk9MUykgYXMgQXJyYXk8a2V5b2YgdHlwZW9mIE1BUF9DT05UUk9MUz5cbikucmVkdWNlKFxuICAoZmluYWwsIGN1cnJlbnQpID0+ICh7XG4gICAgLi4uZmluYWwsXG4gICAgW2N1cnJlbnRdOlxuICAgICAgY3VycmVudCA9PT0gTUFQX0NPTlRST0xTLm1hcExlZ2VuZFxuICAgICAgICA/IERFRkFVTFRfTUFQX0xFR0VORF9DT05UUk9MXG4gICAgICAgIDogREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVNcbiAgfSksXG4gIHt9IGFzIE1hcENvbnRyb2xzXG4pO1xuXG4vKipcbiAqIERlZmF1bHQgaW1hZ2UgZXhwb3J0IGNvbmZpZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmF0aW8gRGVmYXVsdDogYCdTQ1JFRU4nYCxcbiAqIEBwcm9wZXJ0eSByZXNvbHV0aW9uIERlZmF1bHQ6IGAnT05FX1gnYCxcbiAqIEBwcm9wZXJ0eSBsZWdlbmQgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBjaGFydHMgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBtYXBIIERlZmF1bHQ6IDAsXG4gKiBAcHJvcGVydHkgbWFwVyBEZWZhdWx0OiAwLFxuICogQHByb3BlcnR5IGltYWdlU2l6ZSBEZWZhdWx0OiB7em9vbU9mZnNldDogMCwgc2NhbGU6IDEsIGltYWdlVzogMCwgaW1hZ2VIOiAwfSxcbiAqIEBwcm9wZXJ0eSBpbWFnZURhdGFVcmkgRGVmYXVsdDogYCcnYCxcbiAqIEBwcm9wZXJ0eSBleHBvcnRpbmcgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGVycm9yIERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSBlc2NhcGVYaHRtbEZvcldlYnBhY2sgRGVmYXVsdDogZnJvbSBhcHBsaWNhdGlvbiBjb25maWcgKGF1dG8tZGV0ZWN0ZWQ6IGB0cnVlYCBmb3Igd2VicGFjaylcbiAqIEBwcm9wZXJ0eSBmaWxlTmFtZSBEZWZhdWx0OiBgJydgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9JTUFHRTogRXhwb3J0SW1hZ2UgPSB7XG4gIC8vIHVzZXIgb3B0aW9uc1xuICByYXRpbzogRVhQT1JUX0lNR19SQVRJT1MuU0NSRUVOLFxuICByZXNvbHV0aW9uOiBSRVNPTFVUSU9OUy5PTkVfWCxcbiAgbGVnZW5kOiBmYWxzZSxcbiAgY2hhcnRzOiBmYWxzZSxcbiAgbWFwSDogMCxcbiAgbWFwVzogMCxcbiAgaW1hZ2VTaXplOiB7XG4gICAgem9vbU9mZnNldDogMCxcbiAgICBzY2FsZTogMSxcbiAgICBpbWFnZVc6IDAsXG4gICAgaW1hZ2VIOiAwXG4gIH0sXG4gIC8vIHdoZW4gdGhpcyBpcyBzZXQgdG8gdHJ1ZSwgdGhlIG1vY2sgbWFwIHZpZXdwb3J0IHdpbGwgbW92ZSB0byB0aGUgY2VudGVyIG9mIGRhdGFcbiAgY2VudGVyOiBmYWxzZSxcbiAgLy8gZXhwb3J0aW5nIHN0YXRlXG4gIGltYWdlRGF0YVVyaTogJycsXG4gIC8vIGV4cG9ydGluZzogdXNlZCB0byBhdHRhY2ggcGxvdC1jb250YWluZXIgdG8gZG9tXG4gIGV4cG9ydGluZzogZmFsc2UsXG4gIC8vIHByb2Nlc3Npbmc6IHVzZWQgYXMgbG9hZGluZyBpbmRpY2F0b3Igd2hlbiBleHBvcnQgaW1hZ2UgaXMgYmVpbmcgcHJvZHVjZWRcbiAgcHJvY2Vzc2luZzogZmFsc2UsXG4gIGVycm9yOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byBhcHBseSBmaXggZm9yIHVnbGlmeSBlcnJvciBpbiBkb20tdG8taW1hZ2UgKGZyb20gYXBwbGljYXRpb24gY29uZmlnLCBhdXRvLWRldGVjdHMgYnVpbGQgdG9vbClcbiAgZXNjYXBlWGh0bWxGb3JXZWJwYWNrOiBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmVzY2FwZVhodG1sRm9yV2VicGFjayxcbiAgZmlsZU5hbWU6ICcnXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MT0FEX0ZJTEVTID0ge1xuICBmaWxlTG9hZGluZzogZmFsc2Vcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBleHBvcnREYXRhYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgc2VsZWN0ZWREYXRhc2V0IERlZmF1bHQ6IGAnJ2AsXG4gKiBAcHJvcGVydHkgZGF0YVR5cGUgRGVmYXVsdDogYCdjc3YnYCxcbiAqIEBwcm9wZXJ0eSBmaWx0ZXJlZCBEZWZhdWx0OiBgdHJ1ZWAsXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9EQVRBOiBFeHBvcnREYXRhID0ge1xuICBzZWxlY3RlZERhdGFzZXQ6ICcnLFxuICBkYXRhVHlwZTogRVhQT1JUX0RBVEFfVFlQRS5DU1YsXG4gIGZpbHRlcmVkOiB0cnVlXG59O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05TID0gW107XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4gLSBEZWZhdWx0OiBudWxsLCB0aGlzIGlzIHVzZWQgd2hlbiB3ZSBwcm92aWRlIGEgZGVmYXVsdCBtYXBib3ggdG9rZW4gZm9yIHVzZXJzIHRvIHRha2UgYWR2YW50YWdlIG9mXG4gKiBAcHJvcGVydHkgdXNlck1hcGJveFRva2VuIC0gRGVmYXVsdDogJycsIG1hcGJveCB0b2tlbiBwcm92aWRlZCBieSB1c2VyIHRocm91Z2ggaW5wdXQgZmllbGRcbiAqIEBwcm9wZXJ0eSBtb2RlIC0gRGVmYXVsdDogJ1JFQUQnLCByZWFkIG9ubHkgb3IgZWRpdGFibGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX0hUTUw6IEV4cG9ydEh0bWwgPSB7XG4gIGV4cG9ydE1hcGJveEFjY2Vzc1Rva2VuOiBudWxsLFxuICB1c2VyTWFwYm94VG9rZW46ICcnLFxuICBtb2RlOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMuUkVBRFxufTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBoYXNEYXRhIC0gRGVmYXVsdDogJ3RydWUnLFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfSlNPTjogRXhwb3J0SnNvbiA9IHtcbiAgaGFzRGF0YTogdHJ1ZVxufTtcblxuLyoqXG4gKiBFeHBvcnQgTWFwIENvbmZpZ1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgSFRNTCAtIERlZmF1bHQ6ICdERUZBVUxUX0VYUE9SVF9IVE1MJyxcbiAqIEBwcm9wZXJ0eSBKU09OIC0gRGVmYXVsdDogJ0RFRkFVTFRfRVhQT1JUX0pTT04nLFxuICogQHByb3BlcnR5IGZvcm1hdCAtIERlZmF1bHQ6ICdIVE1MJyxcbiAqIEBwcm9wZXJ0eSBmaWxlTmFtZSBEZWZhdWx0OiBgJydgLFxuICogQHByb3BlcnR5IGluY2x1ZGVMYXllckFwaUtleXMgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX01BUDogRXhwb3J0TWFwID0ge1xuICBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdOiBERUZBVUxUX0VYUE9SVF9IVE1MLFxuICBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dOiBERUZBVUxUX0VYUE9SVF9KU09OLFxuICBmb3JtYXQ6IEVYUE9SVF9NQVBfRk9STUFUUy5IVE1MLFxuICBmaWxlTmFtZTogJycsXG4gIC8vIFByaXZhdGUgbGF5ZXIgdG9rZW5zIHN0YXkgb3V0IG9mIHRoZSBmaWxlIHVubGVzcyB0aGUgdXNlciBvcHRzIGluLlxuICBpbmNsdWRlTGF5ZXJBcGlLZXlzOiBmYWxzZVxufTtcblxuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYGV4cG9ydFZpZGVvYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgbWVkaWFUeXBlIERlZmF1bHQ6IGAnd2VibSdgXG4gKiBAcHJvcGVydHkgY2FtZXJhUHJlc2V0IERlZmF1bHQ6IGAnTm9uZSdgXG4gKiBAcHJvcGVydHkgZmlsZU5hbWUgRGVmYXVsdDogYCdrZXBsZXIuZ2wnYFxuICogQHByb3BlcnR5IHJlc29sdXRpb24gRGVmYXVsdDogYCcxMjgweDcyMCdgXG4gKiBAcHJvcGVydHkgZHVyYXRpb25NcyBEZWZhdWx0OiBgMTAwMGBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX1ZJREVPOiBFeHBvcnRWaWRlbyA9IHtcbiAgbWVkaWFUeXBlOiAnd2VibScsIC8vIHVzZSB3ZWJtIGFzIGRlZmF1bHQgYXMgZ2lmIGV4cG9ydCB0ZW5kcyB0byBmcmVlemUgb24gbGFyZ2VyIHJlY29yZGluZ3NcbiAgY2FtZXJhUHJlc2V0OiAnTm9uZScsXG4gIGZpbGVOYW1lOiAna2VwbGVyLmdsJyxcbiAgcmVzb2x1dGlvbjogJzEyODB4NzIwJyxcbiAgZHVyYXRpb25NczogMTAwMCxcbiAgc3dpcGVTdGFydFBjdDogMCxcbiAgc3dpcGVFbmRQY3Q6IDEwMCxcbiAgc3dpcGVFYXNpbmc6ICdlYXNlLWluLW91dCdcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGB1aVN0YXRlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmVhZE9ubHkgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGFjdGl2ZVNpZGVQYW5lbCBEZWZhdWx0OiBgJ2xheWVyJ2BcbiAqIEBwcm9wZXJ0eSBjdXJyZW50TW9kYWwgRGVmYXVsdDogYCdhZGREYXRhJ2BcbiAqIEBwcm9wZXJ0eSBkYXRhc2V0S2V5VG9SZW1vdmUgRGVmYXVsdDogYG51bGxgXG4gKiBAcHJvcGVydHkgZGF0YXNldFRvUmVwbGFjZUlkIERlZmF1bHQ6IGBudWxsYFxuICogQHByb3BlcnR5IHZpc2libGVEcm9wZG93biBEZWZhdWx0OiBgbnVsbGBcbiAqIEBwcm9wZXJ0eSBleHBvcnRJbWFnZSBEZWZhdWx0OiBbYERFRkFVTFRfRVhQT1JUX0lNQUdFYF0oI2RlZmF1bHRfZXhwb3J0X2ltYWdlKVxuICogQHByb3BlcnR5IGV4cG9ydERhdGEgRGVmYXVsdDogW2BERUZBVUxUX0VYUE9SVF9EQVRBYF0oI2RlZmF1bHRfZXhwb3J0X2RhdGEpXG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwIERlZmF1bHQ6IFtgREVGQVVMVF9FWFBPUlRfTUFQYF0oI2RlZmF1bHRfZXhwb3J0X21hcClcbiAqIEBwcm9wZXJ0eSBtYXBDb250cm9scyBEZWZhdWx0OiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHByb3BlcnR5IG5vdGlmaWNhdGlvbnMgRGVmYXVsdDogYFtdYFxuICogQHByb3BlcnR5IG5vdGlmaWNhdGlvbnMgRGVmYXVsdDogYFtdYFxuICogQHByb3BlcnR5IGxvYWRGaWxlc1xuICogQHByb3BlcnR5IGxvY2FsZSBEZWZhdWx0OiBgJ2VuJ2BcbiAqIEBwcm9wZXJ0eSB0aGVtZSBEZWZhdWx0OiBgJ2RhcmsnYFxuICogQHByb3BlcnR5IGlzU2lkZVBhbmVsQ2xvc2VCdXR0b25WaXNpYmxlIERlZmF1bHQ6IGB0cnVlYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9VSV9TVEFURTogVWlTdGF0ZSA9IHtcbiAgcmVhZE9ubHk6IGZhbHNlLFxuICBhY3RpdmVTaWRlUGFuZWw6IERFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwsXG4gIGN1cnJlbnRNb2RhbDogREVGQVVMVF9NT0RBTCxcbiAgZGF0YXNldEtleVRvUmVtb3ZlOiBudWxsLFxuICBkYXRhc2V0VG9SZXBsYWNlSWQ6IG51bGwsXG4gIHZpc2libGVEcm9wZG93bjogbnVsbCxcbiAgLy8gZXhwb3J0IGltYWdlIG1vZGFsIHVpXG4gIGV4cG9ydEltYWdlOiBERUZBVUxUX0VYUE9SVF9JTUFHRSxcbiAgLy8gZXhwb3J0IGRhdGEgbW9kYWwgdWlcbiAgZXhwb3J0RGF0YTogREVGQVVMVF9FWFBPUlRfREFUQSxcbiAgLy8gaHRtbCBleHBvcnRcbiAgZXhwb3J0TWFwOiBERUZBVUxUX0VYUE9SVF9NQVAsXG4gIC8vIGV4cG9ydCB2aWRlbyBtb2RhbCB1aVxuICBleHBvcnRWaWRlbzogREVGQVVMVF9FWFBPUlRfVklERU8sXG4gIC8vIG1hcCBjb250cm9sIHBhbmVsc1xuICBtYXBDb250cm9sczogREVGQVVMVF9NQVBfQ09OVFJPTFMsXG4gIC8vIHVpIG5vdGlmaWNhdGlvbnNcbiAgbm90aWZpY2F0aW9uczogREVGQVVMVF9OT1RJRklDQVRJT05TLFxuICAvLyBsb2FkIGZpbGVzXG4gIGxvYWRGaWxlczogREVGQVVMVF9MT0FEX0ZJTEVTLFxuICAvLyBMb2NhbGUgb2YgdGhlIFVJXG4gIGxvY2FsZTogTE9DQUxFX0NPREVTLmVuLFxuICAvLyBUaGVtZSBvZiB0aGUgVUkgKGBsaWdodGAgfCBgZGFya2AgfCBgc3BhY2VgKS4gRmlyc3Qgb2YgYHRoZW1lc2AgaXMgdGhlIGRlZmF1bHQgd2hlbiBzZXQuXG4gIHRoZW1lOiBUSEVNRS5kYXJrLFxuICBsYXllclBhbmVsTGlzdFZpZXc6ICdsaXN0JyxcbiAgZmlsdGVyUGFuZWxMaXN0VmlldzogJ2xpc3QnLFxuICBpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZTogdHJ1ZVxufTtcblxuLyogVXBkYXRlcnMgKi9cbi8qKlxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICovXG5leHBvcnQgY29uc3QgaW5pdFVpU3RhdGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAgYWN0aW9uOiB7XG4gICAgdHlwZT86ICh0eXBlb2YgQWN0aW9uVHlwZXMpWydJTklUJ107XG4gICAgcGF5bG9hZDogS2VwbGVyR2xJbml0UGF5bG9hZDtcbiAgfVxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IGluaXRpYWxVaVN0YXRlID0gKGFjdGlvbi5wYXlsb2FkIHx8IHt9KS5pbml0aWFsVWlTdGF0ZSB8fCB7fTtcbiAgY29uc3QgdGhlbWVzID0gZ2V0Q29uZmlndXJlZFRoZW1lcygpO1xuICBjb25zdCByZXF1ZXN0ZWQgPSBpbml0aWFsVWlTdGF0ZS50aGVtZSA/PyBzdGF0ZS50aGVtZTtcbiAgY29uc3QgdGhlbWUgPVxuICAgIHRoZW1lcy5sZW5ndGggPT09IDAgPyByZXF1ZXN0ZWQgOiB0aGVtZXMuaW5jbHVkZXMocmVxdWVzdGVkKSA/IHJlcXVlc3RlZCA6IGdldERlZmF1bHRVaVRoZW1lKCk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi5pbml0aWFsVWlTdGF0ZSxcbiAgICB0aGVtZVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBpZCBvZiBzaWRlIHBhbmVsIHRvIGJlIHNob3duLCBvbmUgb2YgYGxheWVyYCwgYGZpbHRlcmAsIGBpbnRlcmFjdGlvbmAsIGBtYXBgLiBjbG9zZSBzaWRlIHBhbmVsIGlmIGBudWxsYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTaWRlUGFuZWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGlkfTogVUlTdGF0ZUFjdGlvbnMuVG9nZ2xlU2lkZVBhbmVsVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIHJldHVybiBpZCA9PT0gc3RhdGUuYWN0aXZlU2lkZVBhbmVsXG4gICAgPyBzdGF0ZVxuICAgIDoge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYWN0aXZlU2lkZVBhbmVsOiBpZFxuICAgICAgfTtcbn07XG5cbi8qKlxuICogU2hvdyBhbmQgaGlkZSBtb2RhbCBkaWFsb2dcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbWFjdGlvbi5wYXlsb2FkIGlkIG9mIG1vZGFsIHRvIGJlIHNob3duLCBudWxsIHRvIGhpZGUgbW9kYWxzLiBPbmUgb2Y6XG4gKiAgLSBbYERBVEFfVEFCTEVfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNkYXRhX3RhYmxlX2lkKVxuICogIC0gW2BERUxFVEVfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2RlbGV0ZV9kYXRhX2lkKVxuICogIC0gW2BBRERfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2FkZF9kYXRhX2lkKVxuICogIC0gW2BFWFBPUlRfSU1BR0VfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNleHBvcnRfaW1hZ2VfaWQpXG4gKiAgLSBbYEVYUE9SVF9EQVRBX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZXhwb3J0X2RhdGFfaWQpXG4gKiAgLSBbYEFERF9NQVBfU1RZTEVfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNhZGRfbWFwX3N0eWxlX2lkKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVNb2RhbFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogaWQsXG4gIC8vIEFkZCBEYXRhIGFuZCBldmVyeSBvdGhlciBtb2RhbCBvcGVuIGxlYXZlIHJlcGxhY2UgbW9kZS5cbiAgLy8gUmVwbGFjZSBtb2RlIGlzIGVudGVyZWQgb25seSB0aHJvdWdoIG9wZW5SZXBsYWNlRGF0YXNldE1vZGFsLlxuICBkYXRhc2V0VG9SZXBsYWNlSWQ6IG51bGxcbn0pO1xuXG4vKipcbiAqIEhpZGUgYW5kIHNob3cgc2lkZSBwYW5lbCBoZWFkZXIgZHJvcGRvd24sIGFjdGl2YXRlZCBieSBjbGlja2luZyB0aGUgc2hhcmUgbGluayBvbiB0b3Agb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNob3dFeHBvcnREcm9wZG93blVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5TaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICB2aXNpYmxlRHJvcGRvd246IGlkXG59KTtcblxuLyoqXG4gKiBIaWRlIHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBoaWRlRXhwb3J0RHJvcGRvd25VcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgdmlzaWJsZURyb3Bkb3duOiBudWxsXG59KTtcblxuLyoqXG4gKiBUb2dnbGUgc2lkZSBwYW5lbCBjbG9zZSBidXR0b24gb24gdG9wIGxlZnQgb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNpZGVQYW5lbENsb3NlQnV0dG9uVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7c2hvd319OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVTaWRlUGFuZWxDbG9zZUJ1dHRvblVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGlzU2lkZVBhbmVsQ2xvc2VCdXR0b25WaXNpYmxlOiBzaG93XG59KTtcblxuLy8gTWFwIGNvbnRyb2wgZHJvcGRvd25zL21lbnVzIHRoYXQgb3ZlcmxhcCBlYWNoIG90aGVyIHZpc3VhbGx5IGFuZCB0aGVyZWZvcmVcbi8vIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmU6IG9wZW5pbmcgb25lIGNsb3NlcyBhbGwgdGhlIG90aGVycy5cbi8vIChzcGxpdC92aWV3LW1vZGUgbWVudSwgdG9wLzNkL2dsb2JlIG1lbnUsIHBvbHlnb24gZHJhdyB0b29sLCBsYW5ndWFnZSBtZW51KVxuZXhwb3J0IGNvbnN0IE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFM6IHN0cmluZ1tdID0gW1xuICBNQVBfQ09OVFJPTFMuc3BsaXRNYXAsXG4gIE1BUF9DT05UUk9MUy50b2dnbGUzZCxcbiAgTUFQX0NPTlRST0xTLm1hcERyYXcsXG4gIE1BUF9DT05UUk9MUy5tYXBMb2NhbGVcbl07XG5cbi8qKlxuICogVG9nZ2xlIGFjdGl2ZSBtYXAgY29udHJvbCBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvbiBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVNYXBDb250cm9sVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgaW5kZXggPSAwfX06IFVJU3RhdGVBY3Rpb25zLlRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgbGV0IHVwZGF0ZWRTdGF0ZSA9IHN0YXRlO1xuXG4gIC8vIFRoZSBvdmVybGFwcGluZyBtYXAgY29udHJvbCBtZW51cyBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlOiB3aGVuIG9uZSBvZlxuICAvLyB0aGVtIGlzIGJlaW5nIG9wZW5lZCwgZGVhY3RpdmF0ZSBldmVyeSBvdGhlciBvbmUgdGhhdCBpcyBjdXJyZW50bHkgYWN0aXZlXG4gIC8vIHNvIHRoZWlyIGRyb3Bkb3ducyBuZXZlciBvdmVybGFwIG9uIHNjcmVlbi5cbiAgY29uc3QgaXNPcGVuaW5nID0gIXVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXT8uYWN0aXZlO1xuICBpZiAoaXNPcGVuaW5nICYmIE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFMuaW5jbHVkZXMocGFuZWxJZCkpIHtcbiAgICBjb25zdCBuZXh0TWFwQ29udHJvbHMgPSB7Li4udXBkYXRlZFN0YXRlLm1hcENvbnRyb2xzfTtcbiAgICBsZXQgZGlkRGVhY3RpdmF0ZSA9IGZhbHNlO1xuICAgIE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFMuZm9yRWFjaChjb250cm9sSWQgPT4ge1xuICAgICAgaWYgKGNvbnRyb2xJZCAhPT0gcGFuZWxJZCAmJiBuZXh0TWFwQ29udHJvbHNbY29udHJvbElkXT8uYWN0aXZlKSB7XG4gICAgICAgIG5leHRNYXBDb250cm9sc1tjb250cm9sSWRdID0gey4uLm5leHRNYXBDb250cm9sc1tjb250cm9sSWRdLCBhY3RpdmU6IGZhbHNlfTtcbiAgICAgICAgZGlkRGVhY3RpdmF0ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGRpZERlYWN0aXZhdGUpIHtcbiAgICAgIHVwZGF0ZWRTdGF0ZSA9IHsuLi51cGRhdGVkU3RhdGUsIG1hcENvbnRyb2xzOiBuZXh0TWFwQ29udHJvbHN9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4udXBkYXRlZFN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi51cGRhdGVkU3RhdGUubWFwQ29udHJvbHMsXG4gICAgICBbcGFuZWxJZF06IHtcbiAgICAgICAgLi4uKHVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXSBhcyBNYXBDb250cm9sSXRlbSksXG4gICAgICAgIGFjdGl2ZTogIXVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXT8uYWN0aXZlLFxuICAgICAgICBhY3RpdmVNYXBJbmRleDogaW5kZXhcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBtYXAgY29udHJvbCB2aXNpYmlsaXR5XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG1hcCBjb250cm9sIHBhbmVsIGlkLCBvbmUgb2YgdGhlIGtleXMgb2Y6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgc2hvd319OiBVSVN0YXRlQWN0aW9ucy5zZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBpZiAoIXN0YXRlLm1hcENvbnRyb2xzPy5bcGFuZWxJZF0pIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi5zdGF0ZS5tYXBDb250cm9scyxcbiAgICAgIFtwYW5lbElkXToge1xuICAgICAgICAuLi5zdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXSxcbiAgICAgICAgc2hvdzogQm9vbGVhbihzaG93KVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogVG9nZ2xlIG1hcCBjb250cm9sIHNldHRpbmdzXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG1hcCBjb250cm9sIHBhbmVsIGlkLCBvbmUgb2YgdGhlIGtleXMgb2Y6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3BhbmVsSWQsIHNldHRpbmdzfX06IFVJU3RhdGVBY3Rpb25zLnNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBtYXBDb250cm9sID0gc3RhdGUubWFwQ29udHJvbHM/LltwYW5lbElkXSBhcyBNYXBDb250cm9sTWFwTGVnZW5kIHwgdW5kZWZpbmVkO1xuICBpZiAoIW1hcENvbnRyb2wpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi5zdGF0ZS5tYXBDb250cm9scyxcbiAgICAgIFtwYW5lbElkXToge1xuICAgICAgICAuLi5tYXBDb250cm9sLFxuICAgICAgICBzZXR0aW5nczogey4uLm1hcENvbnRyb2wuc2V0dGluZ3MsIC4uLnNldHRpbmdzfVxuICAgICAgfSBhcyBNYXBDb250cm9sTWFwTGVnZW5kXG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIG1hcCBjb250cm9sIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuRGVsZXRlTW9kYWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFzZXRLZXlUb1JlbW92ZX06IFVJU3RhdGVBY3Rpb25zLk9wZW5EZWxldGVNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogREVMRVRFX0RBVEFfSUQsXG4gIGRhdGFzZXRLZXlUb1JlbW92ZVxufSk7XG5cbi8qKlxuICogT3BlbiB0aGUgYWRkLWRhdGEgbW9kYWwgc28gdGhlIG5leHQgY29uZmlybWVkIHVwbG9hZCByZXBsYWNlcyBvbmUgZGF0YXNldC5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBkYXRhc2V0IGlkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IG9wZW5SZXBsYWNlRGF0YXNldE1vZGFsVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBkYXRhc2V0VG9SZXBsYWNlSWR9OiBVSVN0YXRlQWN0aW9ucy5PcGVuUmVwbGFjZURhdGFzZXRNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogQUREX0RBVEFfSUQsXG4gIGRhdGFzZXRUb1JlcGxhY2VJZFxufSk7XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZWAgb3B0aW9ucyBzdWNoIGFzIGBsZWdlbmRgIGFuZCBgY2hhcnRzYCB0byBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG5ld1NldHRpbmd9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3QgdXBkYXRlZCA9IHsuLi5zdGF0ZS5leHBvcnRJbWFnZSwgLi4ubmV3U2V0dGluZ307XG4gIGNvbnN0IGltYWdlU2l6ZSA9IGNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSh1cGRhdGVkKSB8fCBzdGF0ZS5leHBvcnRJbWFnZS5pbWFnZVNpemU7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBleHBvcnRJbWFnZToge1xuICAgICAgLi4udXBkYXRlZCxcbiAgICAgIGltYWdlU2l6ZVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5zZXRFeHBvcnRJbWFnZURhdGFVcmlgIHRvIGEgaW1hZ2UgZGF0YVVyaVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGV4cG9ydCBpbWFnZSBkYXRhIHVyaVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFVcml9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgaWYgKGRhdGFVcmkgPT09IHN0YXRlLmV4cG9ydEltYWdlLmltYWdlRGF0YVVyaSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGV4cG9ydEltYWdlOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgICAgaW1hZ2VEYXRhVXJpOiBkYXRhVXJpXG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBlcnJvcn06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRJbWFnZToge1xuICAgIC4uLnN0YXRlLmV4cG9ydEltYWdlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGVycm9yXG4gIH1cbn0pO1xuXG4vKipcbiAqIERlbGV0ZSBjYWNoZWQgZXhwb3J0IGltYWdlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBjbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0SW1hZ2U6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICBleHBvcnRpbmc6IGZhbHNlLFxuICAgIGltYWdlRGF0YVVyaTogJycsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGNlbnRlcjogZmFsc2VcbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IGBleHBvcnRWaWRlb2Agc2V0dGluZ3M6IG1lZGlhVHlwZSwgY2FtZXJhUHJlc2V0LCBmaWxlTmFtZSwgcmVzb2x1dGlvbiwgZHVyYXRpb25Nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG5ldyB2aWRlbyBleHBvcnQgc2V0dGluZ3NcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0VmlkZW9TZXR0aW5nVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBuZXdTZXR0aW5nfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0VmlkZW9TZXR0aW5nVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0VmlkZW86IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRWaWRlbyxcbiAgICAuLi5uZXdTZXR0aW5nXG4gIH1cbn0pO1xuXG4vKipcbiAqIFN0YXJ0IGltYWdlIGV4cG9ydGluZyBmbG93XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyB7VWlTdGF0ZX1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0RXhwb3J0aW5nSW1hZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG9wdGlvbnMgPSB7fX06IHtwYXlsb2FkOiBQYXJ0aWFsPEV4cG9ydEltYWdlPn1cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBpbWFnZVNldHRpbmdzID0ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgZXhwb3J0aW5nOiB0cnVlXG4gIH07XG5cbiAgcmV0dXJuIGNvbXBvc2VfKFtcbiAgICBjbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyLFxuICAgIGFwcGx5XyhzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyLCBwYXlsb2FkXyhpbWFnZVNldHRpbmdzKSlcbiAgXSkoc3RhdGUpO1xufTtcblxuLyoqXG4gKiBTZXQgc2VsZWN0ZWQgZGF0YXNldCBmb3IgZXhwb3J0XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFzZXR9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBzZWxlY3RlZERhdGFzZXQ6IGRhdGFzZXRcbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IGRhdGEgZm9ybWF0IGZvciBleHBvcnRpbmcgZGF0YVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG9uZSBvZiBgJ3RleHQvY3N2J2BcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVR5cGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFUeXBlfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0RGF0YVR5cGVVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBkYXRhVHlwZVxuICB9XG59KTtcblxuLyoqXG4gKiBXaGV0aGVyIHRvIGV4cG9ydCBmaWx0ZXJlZCBkYXRhLCBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEZpbHRlcmVkVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBmaWx0ZXJlZH06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEZpbHRlcmVkVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0RGF0YToge1xuICAgIC4uLnN0YXRlLmV4cG9ydERhdGEsXG4gICAgZmlsdGVyZWRcbiAgfVxufSk7XG5cbi8qKlxuICogV2hldGhlciB0byBpbmNsdWRpbmcgZGF0YSBpbiBtYXAgY29uZmlnLCB0b2dnbGUgYmV0d2VlbiBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnREYXRhVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dLFxuICAgICAgaGFzRGF0YTogIXN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSlNPTl0uaGFzRGF0YVxuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogd2hldGhlciB0byBleHBvcnQgYSBtYXBib3ggYWNjZXNzIHRvIEhUTUwgc2luZ2xlIHBhZ2VcbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogdXNlck1hcGJveFRva2VufTogVUlTdGF0ZUFjdGlvbnMuU2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF06IHtcbiAgICAgIC4uLnN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF0sXG4gICAgICB1c2VyTWFwYm94VG9rZW5cbiAgICB9XG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldHMgdGhlIGV4cG9ydCBtYXAgZm9ybWF0XG4gKiBAcGFyYW0gc3RhdGUgLSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBmb3JtYXQgdG8gdXNlIHRvIGV4cG9ydCB0aGUgbWFwIGludG9cbiAqIEByZXR1cm4gbmV4dFN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGZvcm1hdH06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgZm9ybWF0XG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgZmlsZW5hbWUgdXNlZCB3aGVuIGV4cG9ydGluZyBhbiBIVE1MIG9yIEpTT04gbWFwXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZmlsZSBuYW1lIHdpdGhvdXQgZXh0ZW5zaW9uXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydE1hcEZpbGVOYW1lVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBmaWxlTmFtZX06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydE1hcEZpbGVOYW1lVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIGZpbGVOYW1lXG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgZXhwb3J0IGh0bWwgbWFwIG1vZGVcbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIHRvIGJlIHNldCAoYXZhaWxhYmxlIG1vZGVzOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMpXG4gKiBAcmV0dXJuIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwSFRNTE1vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG1vZGV9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRIVE1MTWFwTW9kZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdLFxuICAgICAgbW9kZVxuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogV2hldGhlciB0byBrZWVwIGxheWVyIGFjY2VzcyB0b2tlbnMgaW4gZXhwb3J0ZWQgSFRNTCBhbmQgSlNPTiBtYXBzLlxuICogQHBhcmFtIHN0YXRlIC0gYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgLSBpbmNsdWRlIGxheWVyIEFQSSBrZXlzXG4gKiBAcmV0dXJuIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SW5jbHVkZUxheWVyQXBpS2V5c1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaW5jbHVkZUxheWVyQXBpS2V5c306IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEluY2x1ZGVMYXllckFwaUtleXNVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRNYXA6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRNYXAsXG4gICAgaW5jbHVkZUxheWVyQXBpS2V5c1xuICB9XG59KTtcblxuLyoqXG4gKiBBZGRzIGEgbmV3IG5vdGlmaWNhdGlvbi5cbiAqIFVwZGF0ZXMgYSBub3RpZmljYXRpb24gaW4gY2FzZSBvZiBtYXRjaGluZyBpZHMuXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgUGFyYW1zIG9mIGEgbm90aWZpY2F0aW9uXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZE5vdGlmaWNhdGlvblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZH06IFVJU3RhdGVBY3Rpb25zLkFkZE5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBvbGROb3RpZmljYXRpb25zID0gc3RhdGUubm90aWZpY2F0aW9ucyB8fCBbXTtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICBjb25zdCBwYXlsb2FkSWQgPSBwYXlsb2FkPy5pZDtcbiAgY29uc3Qgbm90aWZpY2F0aW9uVG9VcGRhdGUgPSBwYXlsb2FkSWQgPyBvbGROb3RpZmljYXRpb25zLmZpbmQobiA9PiBuLmlkID09PSBwYXlsb2FkSWQpIDogbnVsbDtcblxuICBsZXQgbm90aWZpY2F0aW9ucztcbiAgaWYgKG5vdGlmaWNhdGlvblRvVXBkYXRlKSB7XG4gICAgbm90aWZpY2F0aW9ucyA9IG9sZE5vdGlmaWNhdGlvbnMubWFwKG4gPT5cbiAgICAgIG4uaWQgPT09IHBheWxvYWRJZCA/IGNyZWF0ZU5vdGlmaWNhdGlvbih7Li4ucGF5bG9hZCwgY291bnQ6IG4uY291bnQgKyAxfSkgOiBuXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBub3RpZmljYXRpb25zID0gWy4uLm9sZE5vdGlmaWNhdGlvbnMsIGNyZWF0ZU5vdGlmaWNhdGlvbihwYXlsb2FkKV07XG4gIH1cblxuICByZXR1cm4gey4uLnN0YXRlLCBub3RpZmljYXRpb25zfTtcbn07XG5cbi8qKlxuICogUmVtb3ZlIGEgbm90aWZpY2F0aW9uXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgaWQgb2YgdGhlIG5vdGlmaWNhdGlvbiB0byBiZSByZW1vdmVkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5SZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBub3RpZmljYXRpb25zOiBzdGF0ZS5ub3RpZmljYXRpb25zLmZpbHRlcihuID0+IG4uaWQgIT09IGlkKVxufSk7XG5cbi8qKlxuICogRmlyZWQgd2hlbiBmaWxlIGxvYWRpbmcgYmVnaW5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGxvYWRGaWxlczoge1xuICAgIC4uLnN0YXRlLmxvYWRGaWxlcyxcbiAgICBmaWxlTG9hZGluZzogdHJ1ZVxuICB9XG59KTtcblxuLyoqXG4gKiBIYW5kbGVzIGxvYWRpbmcgZmlsZSBzdWNjZXNzIGFuZCBzZXQgZmlsZUxvYWRpbmcgcHJvcGVydHkgdG8gZmFsc2VcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBsb2FkRmlsZXM6IHtcbiAgICAuLi5zdGF0ZS5sb2FkRmlsZXMsXG4gICAgZmlsZUxvYWRpbmc6IGZhbHNlXG4gIH1cbn0pO1xuXG4vKipcbiAqIEhhbmRsZXMgbG9hZCBmaWxlIGVycm9yIGFuZCBzZXQgZmlsZUxvYWRpbmcgcHJvcGVydHkgdG8gZmFsc2VcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZVxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5lcnJvclxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkRmlsZXNFcnJVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlLCB7ZXJyb3J9OiBMb2FkRmlsZXNFcnJVcGRhdGVyQWN0aW9uKTogVWlTdGF0ZSA9PlxuICBhZGROb3RpZmljYXRpb25VcGRhdGVyKFxuICAgIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbG9hZEZpbGVzOiB7XG4gICAgICAgIC4uLnN0YXRlLmxvYWRGaWxlcyxcbiAgICAgICAgZmlsZUxvYWRpbmc6IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBwYXlsb2FkOiBlcnJvck5vdGlmaWNhdGlvbih7XG4gICAgICAgIG1lc3NhZ2U6IChlcnJvciB8fCB7fSkubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHVwbG9hZCBmaWxlcycsXG4gICAgICAgIHRvcGljOiBERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MuZ2xvYmFsXG4gICAgICB9KVxuICAgIH1cbiAgKTtcblxuLyoqXG4gKiBIYW5kbGVzIHRvZ2dsZSBtYXAgc3BsaXQgYW5kIHJlc2V0IGFsbCBtYXAgY29udHJvbCBpbmRleCB0byAwXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU3BsaXRNYXBVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbWFwQ29udHJvbHM6IE9iamVjdC5lbnRyaWVzKHN0YXRlLm1hcENvbnRyb2xzKS5yZWR1Y2UoXG4gICAgKGFjYywgZW50cnkpID0+ICh7XG4gICAgICAuLi5hY2MsXG4gICAgICBbZW50cnlbMF1dOiB7XG4gICAgICAgIC4uLihlbnRyeVsxXSBhcyBNYXBDb250cm9sSXRlbSksXG4gICAgICAgIGFjdGl2ZU1hcEluZGV4OiAwXG4gICAgICB9XG4gICAgfSksXG4gICAge30gYXMgTWFwQ29udHJvbHNcbiAgKVxufSk7XG5cbi8qKlxuICogVG9nZ2xlIG1vZGFsIGRhdGFcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzaG93RGF0YXNldFRhYmxlVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT5cbiAgdG9nZ2xlTW9kYWxVcGRhdGVyKHN0YXRlLCB7cGF5bG9hZDogREFUQV9UQUJMRV9JRH0pO1xuXG4vKipcbiAqIFNldCB0aGUgbG9jYWxlIG9mIHRoZSBVSVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQubG9jYWxlIGxvY2FsZVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRMb2NhbGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHtsb2NhbGV9fTogVUlTdGF0ZUFjdGlvbnMuU2V0TG9jYWxlVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbG9jYWxlXG59KTtcblxuLyoqXG4gKiBTZXQgdGhlIHRoZW1lIG9mIHRoZSBVSVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQudGhlbWUgdGhlbWVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0VGhlbWVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHt0aGVtZX19OiBVSVN0YXRlQWN0aW9ucy5TZXRUaGVtZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIHRoZW1lXG59KTtcblxuLyoqXG4gKiBUb2dnbGUgbGF5ZXIgcGFuZWwgbGlzdCB2aWV3XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgbGF5ZXIgcGFuZWwgbGlzdFZpZXcgdmFsdWUuIENhbiBiZSAnbGlzdCcgb3IgJ3NvcnRCeURhdGFzZXQnXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVBhbmVsTGlzdFZpZXdVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHtwYW5lbElkLCBsaXN0Vmlld319OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVQYW5lbExpc3RWaWV3QWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3Qgc3RhdGVQcm9wID1cbiAgICBwYW5lbElkID09PSAnbGF5ZXInXG4gICAgICA/ICdsYXllclBhbmVsTGlzdFZpZXcnXG4gICAgICA6IHBhbmVsSWQgPT09ICdmaWx0ZXInXG4gICAgICA/ICdmaWx0ZXJQYW5lbExpc3RWaWV3J1xuICAgICAgOiBudWxsO1xuICBpZiAoIXN0YXRlUHJvcCB8fCBzdGF0ZVtzdGF0ZVByb3BdID09PSBsaXN0Vmlldykge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIFtzdGF0ZVByb3BdOiBsaXN0Vmlld1xuICB9O1xufTtcblxuLyoqXG4gKiBNZXJnZSByZWNlaXZlZCB1aSBzdGF0ZSBjb25maWcgd2hlbiBsb2FkaW5nIGEgc2F2ZWQgbWFwXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgc2F2ZWQgbWFwIGNvbmZpZyBge21hcFN0eWxlLCB2aXNTdGF0ZSwgbWFwU3RhdGUsIHVpU3RhdGV9YFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtcbiAgICBwYXlsb2FkOiB7Y29uZmlnfVxuICB9OiB7XG4gICAgdHlwZT86ICh0eXBlb2YgQWN0aW9uVHlwZXMpWydSRUNFSVZFX01BUF9DT05GSUcnXTtcbiAgICBwYXlsb2FkOiBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZDtcbiAgfVxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IHt1aVN0YXRlfSA9IGNvbmZpZyB8fCB7fTtcbiAgaWYgKCF1aVN0YXRlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgbGV0IG5ld1N0YXRlID0gc3RhdGU7XG5cbiAgaWYgKHVpU3RhdGUubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uYWN0aXZlKSB7XG4gICAgY29uc3QgY3VycmVudExlZ2VuZCA9IG5ld1N0YXRlLm1hcENvbnRyb2xzLm1hcExlZ2VuZDtcbiAgICBuZXdTdGF0ZSA9IHtcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgICAgbWFwQ29udHJvbHM6IHtcbiAgICAgICAgLi4ubmV3U3RhdGUubWFwQ29udHJvbHMsXG4gICAgICAgIG1hcExlZ2VuZDoge1xuICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgLi4uY3VycmVudExlZ2VuZCxcbiAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgYWN0aXZlTWFwSW5kZXg6IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBpZiAodWlTdGF0ZS5tYXBDb250cm9scz8uY2hhcnQ/LmFjdGl2ZSkge1xuICAgIGNvbnN0IGN1cnJlbnRDaGFydCA9IG5ld1N0YXRlLm1hcENvbnRyb2xzLmNoYXJ0O1xuICAgIG5ld1N0YXRlID0ge1xuICAgICAgLi4ubmV3U3RhdGUsXG4gICAgICBtYXBDb250cm9sczoge1xuICAgICAgICAuLi5uZXdTdGF0ZS5tYXBDb250cm9scyxcbiAgICAgICAgY2hhcnQ6IHtcbiAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgIC4uLmN1cnJlbnRDaGFydCxcbiAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgYWN0aXZlTWFwSW5kZXg6IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBpZiAodWlTdGF0ZS5tYXBDb250cm9scz8ubWFwTGVnZW5kPy5zZXR0aW5ncykge1xuICAgIG5ld1N0YXRlID0gc2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlcihuZXdTdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge3BhbmVsSWQ6ICdtYXBMZWdlbmQnLCBzZXR0aW5nczogdWlTdGF0ZS5tYXBDb250cm9scy5tYXBMZWdlbmQuc2V0dGluZ3N9XG4gICAgfSBhcyBVSVN0YXRlQWN0aW9ucy5zZXRNYXBDb250cm9sU2V0dGluZ3NVcGRhdGVyQWN0aW9uKTtcbiAgfVxuXG4gIGlmICh1aVN0YXRlLmxvY2FsZSkge1xuICAgIG5ld1N0YXRlID0gc2V0TG9jYWxlVXBkYXRlcihuZXdTdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge2xvY2FsZTogdWlTdGF0ZS5sb2NhbGV9XG4gICAgfSBhcyBVSVN0YXRlQWN0aW9ucy5TZXRMb2NhbGVVcGRhdGVyQWN0aW9uKTtcbiAgfVxuXG4gIGlmICh1aVN0YXRlLnRoZW1lKSB7XG4gICAgbmV3U3RhdGUgPSBzZXRUaGVtZVVwZGF0ZXIobmV3U3RhdGUsIHtcbiAgICAgIHBheWxvYWQ6IHt0aGVtZTogdWlTdGF0ZS50aGVtZX1cbiAgICB9IGFzIFVJU3RhdGVBY3Rpb25zLlNldFRoZW1lVXBkYXRlckFjdGlvbik7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTs7QUFFQSxTQUNFQSxXQUFXLEVBQ1hDLGFBQWEsRUFDYkMsMkJBQTJCLEVBQzNCQyxjQUFjLEVBQ2RDLGdCQUFnQixFQUNoQkMscUJBQXFCLEVBQ3JCQyxpQkFBaUIsRUFDakJDLGtCQUFrQixFQUNsQkMsV0FBVyxFQUNYQyxZQUFZLEVBQ1pDLEtBQUssUUFDQSxzQkFBc0I7QUFDN0IsU0FBUUMsWUFBWSxRQUFPLHlCQUF5QjtBQUNwRCxTQUNFQyxrQkFBa0IsRUFDbEJDLGlCQUFpQixFQUNqQkMsd0JBQXdCLEVBQ3hCQyxvQkFBb0IsRUFDcEJDLG1CQUFtQixFQUNuQkMsaUJBQWlCLFFBQ1osa0JBQWtCO0FBQ3pCLFNBQVFDLFFBQVEsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQU8sb0JBQW9CO0FBc0I3RCxPQUFPLElBQU1DLHlCQUF5QixHQUFHLE9BQU87QUFDaEQsT0FBTyxJQUFNQyxhQUFhLEdBQUd0QixXQUFXOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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
|