@kepler.gl/reducers 3.3.0-alpha.16 → 3.3.0-alpha.17
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/column-edit-reconcile.js +100 -0
- package/dist/cjs/column-edit-updaters.spec.js +840 -0
- package/dist/cjs/dataset-ops-updaters.js +101 -15
- package/dist/cjs/dataset-ops-updaters.spec.js +129 -4
- package/dist/cjs/export-utils.js +118 -46
- package/dist/cjs/interaction-utils.js +11 -3
- package/dist/cjs/layer-utils.js +3 -2
- package/dist/cjs/ui-state-updaters.js +70 -26
- package/dist/cjs/ui-state.js +2 -2
- package/dist/cjs/vis-state-merger-text-label.spec.js +75 -0
- package/dist/cjs/vis-state-merger.js +65 -22
- package/dist/cjs/vis-state-updaters.js +581 -177
- package/dist/cjs/vis-state.js +2 -2
- package/dist/column-edit-reconcile.d.ts +4 -0
- package/dist/column-edit-updaters.spec.d.ts +1 -0
- package/dist/dataset-ops-updaters.d.ts +3 -0
- package/dist/esm/column-edit-reconcile.js +95 -0
- package/dist/esm/column-edit-updaters.spec.js +839 -0
- package/dist/esm/dataset-ops-updaters.js +99 -16
- package/dist/esm/dataset-ops-updaters.spec.js +129 -4
- package/dist/esm/export-utils.js +117 -45
- package/dist/esm/interaction-utils.js +10 -3
- package/dist/esm/layer-utils.js +3 -2
- package/dist/esm/ui-state-updaters.js +69 -25
- package/dist/esm/ui-state.js +2 -2
- package/dist/esm/vis-state-merger-text-label.spec.js +74 -0
- package/dist/esm/vis-state-merger.js +66 -24
- package/dist/esm/vis-state-updaters.js +571 -185
- package/dist/esm/vis-state.js +2 -2
- package/dist/export-utils.d.ts +2 -2
- package/dist/interaction-utils.d.ts +4 -1
- package/dist/layer-utils.d.ts +1 -0
- package/dist/ui-state-updaters.d.ts +10 -0
- package/dist/vis-state-merger-text-label.spec.d.ts +1 -0
- package/dist/vis-state-merger.d.ts +10 -2
- package/dist/vis-state-updaters.d.ts +31 -4
- package/dist/vis-state.d.ts +4 -0
- package/package.json +17 -17
|
@@ -6,7 +6,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
6
6
|
// Copyright contributors to the kepler.gl project
|
|
7
7
|
|
|
8
8
|
import { generateHashId } from '@kepler.gl/common-utils';
|
|
9
|
-
import { defaultAggregationsForFields, groupByDataset, isTabularDatasetForOps, joinDatasets, spatialJoinDatasets, suggestSpatialGeo } from '@kepler.gl/table';
|
|
9
|
+
import { defaultAggregationsForFields, defaultSuitabilityWeights, groupByDataset, isTabularDatasetForOps, joinDatasets, spatialJoinDatasets, suggestSpatialGeo, suitabilityDataset, DEFAULT_SUITABILITY_SCORE_FIELD } from '@kepler.gl/table';
|
|
10
10
|
function deactivateOps(ops) {
|
|
11
11
|
return ops.map(function (op) {
|
|
12
12
|
return _objectSpread(_objectSpread({}, op), {}, {
|
|
@@ -26,6 +26,9 @@ function defaultJoinLabel() {
|
|
|
26
26
|
function defaultSpatialJoinLabel(resultId) {
|
|
27
27
|
return "spatial-join-".concat(resultId);
|
|
28
28
|
}
|
|
29
|
+
function defaultSuitabilityLabel() {
|
|
30
|
+
return "suitability-".concat(randomTwoDigitSuffix());
|
|
31
|
+
}
|
|
29
32
|
export function addGroupByUpdater(state, action) {
|
|
30
33
|
var dataset = state.datasets[action.dataId];
|
|
31
34
|
if (!isTabularDatasetForOps(dataset)) {
|
|
@@ -45,7 +48,8 @@ export function addGroupByUpdater(state, action) {
|
|
|
45
48
|
};
|
|
46
49
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
47
50
|
groupBys: [].concat(_toConsumableArray(deactivateOps(state.groupBys)), [op]),
|
|
48
|
-
joins: deactivateOps(state.joins)
|
|
51
|
+
joins: deactivateOps(state.joins),
|
|
52
|
+
suitabilities: deactivateOps(state.suitabilities)
|
|
49
53
|
});
|
|
50
54
|
}
|
|
51
55
|
export function setGroupByConfigUpdater(state, action) {
|
|
@@ -83,11 +87,8 @@ export function executeGroupBy(state, action) {
|
|
|
83
87
|
});
|
|
84
88
|
return {
|
|
85
89
|
state: _objectSpread(_objectSpread({}, state), {}, {
|
|
86
|
-
groupBys: state.groupBys.
|
|
87
|
-
return item.id
|
|
88
|
-
isConfigActive: false,
|
|
89
|
-
error: null
|
|
90
|
-
}) : item;
|
|
90
|
+
groupBys: state.groupBys.filter(function (item) {
|
|
91
|
+
return item.id !== op.id;
|
|
91
92
|
})
|
|
92
93
|
}),
|
|
93
94
|
proto: proto
|
|
@@ -130,7 +131,8 @@ export function addJoinUpdater(state, action) {
|
|
|
130
131
|
};
|
|
131
132
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
132
133
|
joins: [].concat(_toConsumableArray(deactivateOps(state.joins)), [op]),
|
|
133
|
-
groupBys: deactivateOps(state.groupBys)
|
|
134
|
+
groupBys: deactivateOps(state.groupBys),
|
|
135
|
+
suitabilities: deactivateOps(state.suitabilities)
|
|
134
136
|
});
|
|
135
137
|
}
|
|
136
138
|
export function setJoinConfigUpdater(state, action) {
|
|
@@ -172,11 +174,8 @@ export function executeJoin(state, action) {
|
|
|
172
174
|
});
|
|
173
175
|
return {
|
|
174
176
|
state: _objectSpread(_objectSpread({}, state), {}, {
|
|
175
|
-
joins: state.joins.
|
|
176
|
-
return item.id
|
|
177
|
-
isConfigActive: false,
|
|
178
|
-
error: null
|
|
179
|
-
}) : item;
|
|
177
|
+
joins: state.joins.filter(function (item) {
|
|
178
|
+
return item.id !== op.id;
|
|
180
179
|
})
|
|
181
180
|
}),
|
|
182
181
|
proto: proto
|
|
@@ -230,7 +229,85 @@ export function executeSpatialJoin(state, action) {
|
|
|
230
229
|
});
|
|
231
230
|
return {
|
|
232
231
|
state: _objectSpread(_objectSpread({}, state), {}, {
|
|
233
|
-
joins: state.joins.
|
|
232
|
+
joins: state.joins.filter(function (item) {
|
|
233
|
+
return item.id !== op.id;
|
|
234
|
+
})
|
|
235
|
+
}),
|
|
236
|
+
proto: proto
|
|
237
|
+
};
|
|
238
|
+
} catch (error) {
|
|
239
|
+
return {
|
|
240
|
+
state: setJoinConfigUpdater(state, {
|
|
241
|
+
id: action.id,
|
|
242
|
+
config: {
|
|
243
|
+
error: error instanceof Error ? error.message : String(error)
|
|
244
|
+
}
|
|
245
|
+
})
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
export function addSuitabilityUpdater(state, action) {
|
|
250
|
+
var dataset = state.datasets[action.dataId];
|
|
251
|
+
if (!isTabularDatasetForOps(dataset)) {
|
|
252
|
+
return state;
|
|
253
|
+
}
|
|
254
|
+
var op = {
|
|
255
|
+
id: generateHashId(6),
|
|
256
|
+
dataId: action.dataId,
|
|
257
|
+
weights: defaultSuitabilityWeights(dataset.fields),
|
|
258
|
+
weightStandardization: 'normalize',
|
|
259
|
+
dataStandardization: 'range',
|
|
260
|
+
outputFieldName: DEFAULT_SUITABILITY_SCORE_FIELD,
|
|
261
|
+
resultId: generateHashId(6),
|
|
262
|
+
resultLabel: defaultSuitabilityLabel(),
|
|
263
|
+
isConfigActive: true,
|
|
264
|
+
error: null
|
|
265
|
+
};
|
|
266
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
267
|
+
suitabilities: [].concat(_toConsumableArray(deactivateOps(state.suitabilities)), [op]),
|
|
268
|
+
groupBys: deactivateOps(state.groupBys),
|
|
269
|
+
joins: deactivateOps(state.joins)
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
export function setSuitabilityConfigUpdater(state, action) {
|
|
273
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
274
|
+
suitabilities: state.suitabilities.map(function (op) {
|
|
275
|
+
var _action$config$error3;
|
|
276
|
+
return op.id === action.id ? _objectSpread(_objectSpread(_objectSpread({}, op), action.config), {}, {
|
|
277
|
+
error: (_action$config$error3 = action.config.error) !== null && _action$config$error3 !== void 0 ? _action$config$error3 : null
|
|
278
|
+
}) : op;
|
|
279
|
+
})
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
export function executeSuitability(state, action) {
|
|
283
|
+
var op = state.suitabilities.find(function (item) {
|
|
284
|
+
return item.id === action.id;
|
|
285
|
+
});
|
|
286
|
+
var dataset = op ? state.datasets[op.dataId] : undefined;
|
|
287
|
+
if (!op || !dataset || !Object.keys(op.weights).length) {
|
|
288
|
+
return {
|
|
289
|
+
state: setSuitabilityConfigUpdater(state, {
|
|
290
|
+
id: action.id,
|
|
291
|
+
config: {
|
|
292
|
+
error: 'Select at least one field to score'
|
|
293
|
+
}
|
|
294
|
+
})
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
try {
|
|
298
|
+
var proto = suitabilityDataset(dataset, {
|
|
299
|
+
weights: op.weights,
|
|
300
|
+
weightStandardization: op.weightStandardization,
|
|
301
|
+
dataStandardization: op.dataStandardization,
|
|
302
|
+
outputFieldName: op.outputFieldName,
|
|
303
|
+
columns: op.columns,
|
|
304
|
+
label: op.resultLabel,
|
|
305
|
+
resultId: op.resultId,
|
|
306
|
+
operationId: op.id
|
|
307
|
+
});
|
|
308
|
+
return {
|
|
309
|
+
state: _objectSpread(_objectSpread({}, state), {}, {
|
|
310
|
+
suitabilities: state.suitabilities.map(function (item) {
|
|
234
311
|
return item.id === op.id ? _objectSpread(_objectSpread({}, item), {}, {
|
|
235
312
|
isConfigActive: false,
|
|
236
313
|
error: null
|
|
@@ -241,7 +318,7 @@ export function executeSpatialJoin(state, action) {
|
|
|
241
318
|
};
|
|
242
319
|
} catch (error) {
|
|
243
320
|
return {
|
|
244
|
-
state:
|
|
321
|
+
state: setSuitabilityConfigUpdater(state, {
|
|
245
322
|
id: action.id,
|
|
246
323
|
config: {
|
|
247
324
|
error: error instanceof Error ? error.message : String(error)
|
|
@@ -257,6 +334,9 @@ export function removeDatasetOpUpdater(state, action) {
|
|
|
257
334
|
}),
|
|
258
335
|
joins: state.joins.filter(function (op) {
|
|
259
336
|
return op.id !== action.id;
|
|
337
|
+
}),
|
|
338
|
+
suitabilities: state.suitabilities.filter(function (op) {
|
|
339
|
+
return op.id !== action.id;
|
|
260
340
|
})
|
|
261
341
|
});
|
|
262
342
|
}
|
|
@@ -268,7 +348,10 @@ export function removeOpsForDatasets(state, dataIds) {
|
|
|
268
348
|
}),
|
|
269
349
|
joins: state.joins.filter(function (op) {
|
|
270
350
|
return !ids.has(op.leftDataId) && !(op.rightDataId && ids.has(op.rightDataId)) && !ids.has(op.resultId);
|
|
351
|
+
}),
|
|
352
|
+
suitabilities: state.suitabilities.filter(function (op) {
|
|
353
|
+
return !ids.has(op.dataId) && !ids.has(op.resultId);
|
|
271
354
|
})
|
|
272
355
|
});
|
|
273
356
|
}
|
|
274
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZW5lcmF0ZUhhc2hJZCIsImRlZmF1bHRBZ2dyZWdhdGlvbnNGb3JGaWVsZHMiLCJncm91cEJ5RGF0YXNldCIsImlzVGFidWxhckRhdGFzZXRGb3JPcHMiLCJqb2luRGF0YXNldHMiLCJzcGF0aWFsSm9pbkRhdGFzZXRzIiwic3VnZ2VzdFNwYXRpYWxHZW8iLCJkZWFjdGl2YXRlT3BzIiwib3BzIiwibWFwIiwib3AiLCJfb2JqZWN0U3ByZWFkIiwiaXNDb25maWdBY3RpdmUiLCJyYW5kb21Ud29EaWdpdFN1ZmZpeCIsIlN0cmluZyIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsInBhZFN0YXJ0IiwiZGVmYXVsdEdyb3VwQnlMYWJlbCIsImNvbmNhdCIsImRlZmF1bHRKb2luTGFiZWwiLCJkZWZhdWx0U3BhdGlhbEpvaW5MYWJlbCIsInJlc3VsdElkIiwiYWRkR3JvdXBCeVVwZGF0ZXIiLCJzdGF0ZSIsImFjdGlvbiIsImRhdGFzZXQiLCJkYXRhc2V0cyIsImRhdGFJZCIsImlkIiwiZmllbGROYW1lIiwiYWdncmVnYXRpb25zIiwiZmllbGRzIiwicmVzdWx0TGFiZWwiLCJlcnJvciIsImdyb3VwQnlzIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwiam9pbnMiLCJzZXRHcm91cEJ5Q29uZmlnVXBkYXRlciIsIl9hY3Rpb24kY29uZmlnJGVycm9yIiwiY29uZmlnIiwiZXhlY3V0ZUdyb3VwQnkiLCJmaW5kIiwiaXRlbSIsInVuZGVmaW5lZCIsInByb3RvIiwibGFiZWwiLCJvcGVyYXRpb25JZCIsIkVycm9yIiwibWVzc2FnZSIsImFkZEpvaW5VcGRhdGVyIiwiaW1wbGVtZW50YXRpb24iLCJsZWZ0RGF0YUlkIiwicmlnaHREYXRhSWQiLCJsZWZ0RmllbGQiLCJyaWdodEZpZWxkIiwidHlwZSIsImxlZnRHZW8iLCJyaWdodEdlbyIsInByZWRpY2F0ZSIsInNldEpvaW5Db25maWdVcGRhdGVyIiwiX2FjdGlvbiRjb25maWckZXJyb3IyIiwiZXhlY3V0ZUpvaW4iLCJsZWZ0IiwicmlnaHQiLCJsZWZ0Q29sdW1ucyIsInJpZ2h0Q29sdW1ucyIsImFkZFNwYXRpYWxKb2luVXBkYXRlciIsInNldFNwYXRpYWxKb2luQ29uZmlnVXBkYXRlciIsImV4ZWN1dGVTcGF0aWFsSm9pbiIsInJlbW92ZURhdGFzZXRPcFVwZGF0ZXIiLCJmaWx0ZXIiLCJyZW1vdmVPcHNGb3JEYXRhc2V0cyIsImRhdGFJZHMiLCJpZHMiLCJTZXQiLCJoYXMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YXNldC1vcHMtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtcbiAgZGVmYXVsdEFnZ3JlZ2F0aW9uc0ZvckZpZWxkcyxcbiAgZ3JvdXBCeURhdGFzZXQsXG4gIGlzVGFidWxhckRhdGFzZXRGb3JPcHMsXG4gIGpvaW5EYXRhc2V0cyxcbiAgc3BhdGlhbEpvaW5EYXRhc2V0cyxcbiAgc3VnZ2VzdFNwYXRpYWxHZW8sXG4gIEdyb3VwQnlPcCxcbiAgSm9pbk9wXG59IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtQcm90b0RhdGFzZXR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtWaXNTdGF0ZUFjdGlvbnN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge1Zpc1N0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3NjaGVtYXMnO1xuXG5leHBvcnQgdHlwZSBEZXJpdmVkRGF0YXNldE9wUmVzdWx0ID0ge1xuICBzdGF0ZTogVmlzU3RhdGU7XG4gIHByb3RvPzogUHJvdG9EYXRhc2V0O1xufTtcblxuZnVuY3Rpb24gZGVhY3RpdmF0ZU9wczxUIGV4dGVuZHMge2lzQ29uZmlnQWN0aXZlPzogYm9vbGVhbn0+KG9wczogVFtdKTogVFtdIHtcbiAgcmV0dXJuIG9wcy5tYXAob3AgPT4gKHsuLi5vcCwgaXNDb25maWdBY3RpdmU6IGZhbHNlfSkpO1xufVxuXG5mdW5jdGlvbiByYW5kb21Ud29EaWdpdFN1ZmZpeCgpOiBzdHJpbmcge1xuICByZXR1cm4gU3RyaW5nKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMCkpLnBhZFN0YXJ0KDIsICcwJyk7XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRHcm91cEJ5TGFiZWwoKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBncm91cC1ieS0ke3JhbmRvbVR3b0RpZ2l0U3VmZml4KCl9YDtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdEpvaW5MYWJlbCgpOiBzdHJpbmcge1xuICByZXR1cm4gYGpvaW4tZGF0YXNldC0ke3JhbmRvbVR3b0RpZ2l0U3VmZml4KCl9YDtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFNwYXRpYWxKb2luTGFiZWwocmVzdWx0SWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgc3BhdGlhbC1qb2luLSR7cmVzdWx0SWR9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEdyb3VwQnlVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLkFkZEdyb3VwQnlVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIGNvbnN0IGRhdGFzZXQgPSBzdGF0ZS5kYXRhc2V0c1thY3Rpb24uZGF0YUlkXTtcbiAgaWYgKCFpc1RhYnVsYXJEYXRhc2V0Rm9yT3BzKGRhdGFzZXQpKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGNvbnN0IGlkID0gZ2VuZXJhdGVIYXNoSWQoNik7XG4gIGNvbnN0IHJlc3VsdElkID0gZ2VuZXJhdGVIYXNoSWQoNik7XG4gIGNvbnN0IG9wOiBHcm91cEJ5T3AgPSB7XG4gICAgaWQsXG4gICAgZGF0YUlkOiBhY3Rpb24uZGF0YUlkLFxuICAgIGZpZWxkTmFtZTogbnVsbCxcbiAgICBhZ2dyZWdhdGlvbnM6IGRlZmF1bHRBZ2dyZWdhdGlvbnNGb3JGaWVsZHMoZGF0YXNldC5maWVsZHMpLFxuICAgIHJlc3VsdElkLFxuICAgIHJlc3VsdExhYmVsOiBkZWZhdWx0R3JvdXBCeUxhYmVsKCksXG4gICAgaXNDb25maWdBY3RpdmU6IHRydWUsXG4gICAgZXJyb3I6IG51bGxcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBncm91cEJ5czogWy4uLmRlYWN0aXZhdGVPcHMoc3RhdGUuZ3JvdXBCeXMpLCBvcF0sXG4gICAgam9pbnM6IGRlYWN0aXZhdGVPcHMoc3RhdGUuam9pbnMpXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRHcm91cEJ5Q29uZmlnVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5TZXRHcm91cEJ5Q29uZmlnVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGdyb3VwQnlzOiBzdGF0ZS5ncm91cEJ5cy5tYXAob3AgPT5cbiAgICAgIG9wLmlkID09PSBhY3Rpb24uaWQgPyB7Li4ub3AsIC4uLmFjdGlvbi5jb25maWcsIGVycm9yOiBhY3Rpb24uY29uZmlnLmVycm9yID8/IG51bGx9IDogb3BcbiAgICApXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGVjdXRlR3JvdXBCeShcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5SdW5Hcm91cEJ5VXBkYXRlckFjdGlvblxuKTogRGVyaXZlZERhdGFzZXRPcFJlc3VsdCB7XG4gIGNvbnN0IG9wID0gc3RhdGUuZ3JvdXBCeXMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGFjdGlvbi5pZCk7XG4gIGNvbnN0IGRhdGFzZXQgPSBvcCA/IHN0YXRlLmRhdGFzZXRzW29wLmRhdGFJZF0gOiB1bmRlZmluZWQ7XG4gIGlmICghb3AgfHwgIWRhdGFzZXQgfHwgIW9wLmZpZWxkTmFtZSkge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZTogc2V0R3JvdXBCeUNvbmZpZ1VwZGF0ZXIoc3RhdGUsIHtcbiAgICAgICAgaWQ6IGFjdGlvbi5pZCxcbiAgICAgICAgY29uZmlnOiB7ZXJyb3I6ICdTZWxlY3QgYSBncm91cGluZyBmaWVsZCd9XG4gICAgICB9KVxuICAgIH07XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHByb3RvID0gZ3JvdXBCeURhdGFzZXQoZGF0YXNldCwge1xuICAgICAgZmllbGROYW1lOiBvcC5maWVsZE5hbWUsXG4gICAgICBhZ2dyZWdhdGlvbnM6IG9wLmFnZ3JlZ2F0aW9ucyxcbiAgICAgIGxhYmVsOiBvcC5yZXN1bHRMYWJlbCxcbiAgICAgIHJlc3VsdElkOiBvcC5yZXN1bHRJZCxcbiAgICAgIG9wZXJhdGlvbklkOiBvcC5pZFxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZToge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZ3JvdXBCeXM6IHN0YXRlLmdyb3VwQnlzLm1hcChpdGVtID0+XG4gICAgICAgICAgaXRlbS5pZCA9PT0gb3AuaWQgPyB7Li4uaXRlbSwgaXNDb25maWdBY3RpdmU6IGZhbHNlLCBlcnJvcjogbnVsbH0gOiBpdGVtXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBwcm90b1xuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlOiBzZXRHcm91cEJ5Q29uZmlnVXBkYXRlcihzdGF0ZSwge1xuICAgICAgICBpZDogYWN0aW9uLmlkLFxuICAgICAgICBjb25maWc6IHtlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfVxuICAgICAgfSlcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRKb2luVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5BZGRKb2luVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCBkYXRhc2V0ID0gc3RhdGUuZGF0YXNldHNbYWN0aW9uLmRhdGFJZF07XG4gIGlmICghaXNUYWJ1bGFyRGF0YXNldEZvck9wcyhkYXRhc2V0KSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBjb25zdCBpbXBsZW1lbnRhdGlvbiA9IGFjdGlvbi5pbXBsZW1lbnRhdGlvbiB8fCAnc2ltcGxlJztcbiAgY29uc3QgaWQgPSBnZW5lcmF0ZUhhc2hJZCg2KTtcbiAgY29uc3QgcmVzdWx0SWQgPSBnZW5lcmF0ZUhhc2hJZCg2KTtcbiAgY29uc3Qgb3A6IEpvaW5PcCA9IHtcbiAgICBpZCxcbiAgICBpbXBsZW1lbnRhdGlvbixcbiAgICBsZWZ0RGF0YUlkOiBhY3Rpb24uZGF0YUlkLFxuICAgIHJpZ2h0RGF0YUlkOiBudWxsLFxuICAgIGxlZnRGaWVsZDogbnVsbCxcbiAgICByaWdodEZpZWxkOiBudWxsLFxuICAgIHR5cGU6ICdMRUZUJyxcbiAgICBhZ2dyZWdhdGlvbnM6IHt9LFxuICAgIGxlZnRHZW86IGltcGxlbWVudGF0aW9uID09PSAnc3BhdGlhbCcgPyBzdWdnZXN0U3BhdGlhbEdlbyhkYXRhc2V0LmZpZWxkcykgOiBudWxsLFxuICAgIHJpZ2h0R2VvOiBudWxsLFxuICAgIHByZWRpY2F0ZTogaW1wbGVtZW50YXRpb24gPT09ICdzcGF0aWFsJyA/ICdpbnRlcnNlY3RzJyA6IHVuZGVmaW5lZCxcbiAgICByZXN1bHRJZCxcbiAgICByZXN1bHRMYWJlbDpcbiAgICAgIGltcGxlbWVudGF0aW9uID09PSAnc3BhdGlhbCcgPyBkZWZhdWx0U3BhdGlhbEpvaW5MYWJlbChyZXN1bHRJZCkgOiBkZWZhdWx0Sm9pbkxhYmVsKCksXG4gICAgaXNDb25maWdBY3RpdmU6IHRydWUsXG4gICAgZXJyb3I6IG51bGxcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBqb2luczogWy4uLmRlYWN0aXZhdGVPcHMoc3RhdGUuam9pbnMpLCBvcF0sXG4gICAgZ3JvdXBCeXM6IGRlYWN0aXZhdGVPcHMoc3RhdGUuZ3JvdXBCeXMpXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRKb2luQ29uZmlnVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5TZXRKb2luQ29uZmlnVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGpvaW5zOiBzdGF0ZS5qb2lucy5tYXAob3AgPT5cbiAgICAgIG9wLmlkID09PSBhY3Rpb24uaWQgPyB7Li4ub3AsIC4uLmFjdGlvbi5jb25maWcsIGVycm9yOiBhY3Rpb24uY29uZmlnLmVycm9yID8/IG51bGx9IDogb3BcbiAgICApXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGVjdXRlSm9pbihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5SdW5Kb2luVXBkYXRlckFjdGlvblxuKTogRGVyaXZlZERhdGFzZXRPcFJlc3VsdCB7XG4gIGNvbnN0IG9wID0gc3RhdGUuam9pbnMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGFjdGlvbi5pZCAmJiBpdGVtLmltcGxlbWVudGF0aW9uICE9PSAnc3BhdGlhbCcpO1xuICBjb25zdCBsZWZ0ID0gb3AgPyBzdGF0ZS5kYXRhc2V0c1tvcC5sZWZ0RGF0YUlkXSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgcmlnaHQgPSBvcD8ucmlnaHREYXRhSWQgPyBzdGF0ZS5kYXRhc2V0c1tvcC5yaWdodERhdGFJZF0gOiB1bmRlZmluZWQ7XG4gIGlmICghb3AgfHwgIWxlZnQgfHwgIXJpZ2h0IHx8ICFvcC5sZWZ0RmllbGQgfHwgIW9wLnJpZ2h0RmllbGQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHNldEpvaW5Db25maWdVcGRhdGVyKHN0YXRlLCB7XG4gICAgICAgIGlkOiBhY3Rpb24uaWQsXG4gICAgICAgIGNvbmZpZzoge2Vycm9yOiAnU2VsZWN0IGRhdGFzZXRzIGFuZCBqb2luIGtleXMnfVxuICAgICAgfSlcbiAgICB9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBwcm90byA9IGpvaW5EYXRhc2V0cyhsZWZ0LCByaWdodCwge1xuICAgICAgbGVmdEZpZWxkOiBvcC5sZWZ0RmllbGQsXG4gICAgICByaWdodEZpZWxkOiBvcC5yaWdodEZpZWxkLFxuICAgICAgdHlwZTogb3AudHlwZSxcbiAgICAgIGxlZnRDb2x1bW5zOiBvcC5sZWZ0Q29sdW1ucyxcbiAgICAgIHJpZ2h0Q29sdW1uczogb3AucmlnaHRDb2x1bW5zLFxuICAgICAgbGFiZWw6IG9wLnJlc3VsdExhYmVsLFxuICAgICAgcmVzdWx0SWQ6IG9wLnJlc3VsdElkLFxuICAgICAgb3BlcmF0aW9uSWQ6IG9wLmlkXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlOiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBqb2luczogc3RhdGUuam9pbnMubWFwKGl0ZW0gPT5cbiAgICAgICAgICBpdGVtLmlkID09PSBvcC5pZCA/IHsuLi5pdGVtLCBpc0NvbmZpZ0FjdGl2ZTogZmFsc2UsIGVycm9yOiBudWxsfSA6IGl0ZW1cbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHByb3RvXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHNldEpvaW5Db25maWdVcGRhdGVyKHN0YXRlLCB7XG4gICAgICAgIGlkOiBhY3Rpb24uaWQsXG4gICAgICAgIGNvbmZpZzoge2Vycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9XG4gICAgICB9KVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFNwYXRpYWxKb2luVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5BZGRTcGF0aWFsSm9pblVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgcmV0dXJuIGFkZEpvaW5VcGRhdGVyKHN0YXRlLCB7ZGF0YUlkOiBhY3Rpb24uZGF0YUlkLCBpbXBsZW1lbnRhdGlvbjogJ3NwYXRpYWwnfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRTcGF0aWFsSm9pbkNvbmZpZ1VwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuU2V0U3BhdGlhbEpvaW5Db25maWdVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIHJldHVybiBzZXRKb2luQ29uZmlnVXBkYXRlcihzdGF0ZSwgYWN0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4ZWN1dGVTcGF0aWFsSm9pbihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5SdW5TcGF0aWFsSm9pblVwZGF0ZXJBY3Rpb25cbik6IERlcml2ZWREYXRhc2V0T3BSZXN1bHQge1xuICBjb25zdCBvcCA9IHN0YXRlLmpvaW5zLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBhY3Rpb24uaWQgJiYgaXRlbS5pbXBsZW1lbnRhdGlvbiA9PT0gJ3NwYXRpYWwnKTtcbiAgY29uc3QgbGVmdCA9IG9wID8gc3RhdGUuZGF0YXNldHNbb3AubGVmdERhdGFJZF0gOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHJpZ2h0ID0gb3A/LnJpZ2h0RGF0YUlkID8gc3RhdGUuZGF0YXNldHNbb3AucmlnaHREYXRhSWRdIDogdW5kZWZpbmVkO1xuICBpZiAoIW9wIHx8ICFsZWZ0IHx8ICFyaWdodCB8fCAhb3AubGVmdEdlbyB8fCAhb3AucmlnaHRHZW8pIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHNldEpvaW5Db25maWdVcGRhdGVyKHN0YXRlLCB7XG4gICAgICAgIGlkOiBhY3Rpb24uaWQsXG4gICAgICAgIGNvbmZpZzoge2Vycm9yOiAnU2VsZWN0IGRhdGFzZXRzIGFuZCBnZW9tZXRyeSBmaWVsZHMnfVxuICAgICAgfSlcbiAgICB9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBwcm90byA9IHNwYXRpYWxKb2luRGF0YXNldHMobGVmdCwgcmlnaHQsIHtcbiAgICAgIGxlZnRHZW86IG9wLmxlZnRHZW8sXG4gICAgICByaWdodEdlbzogb3AucmlnaHRHZW8sXG4gICAgICBhZ2dyZWdhdGlvbnM6IG9wLmFnZ3JlZ2F0aW9ucyxcbiAgICAgIGxlZnRDb2x1bW5zOiBvcC5sZWZ0Q29sdW1ucyxcbiAgICAgIHByZWRpY2F0ZTogb3AucHJlZGljYXRlIHx8ICdpbnRlcnNlY3RzJyxcbiAgICAgIGxhYmVsOiBvcC5yZXN1bHRMYWJlbCxcbiAgICAgIHJlc3VsdElkOiBvcC5yZXN1bHRJZCxcbiAgICAgIG9wZXJhdGlvbklkOiBvcC5pZFxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZToge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgam9pbnM6IHN0YXRlLmpvaW5zLm1hcChpdGVtID0+XG4gICAgICAgICAgaXRlbS5pZCA9PT0gb3AuaWQgPyB7Li4uaXRlbSwgaXNDb25maWdBY3RpdmU6IGZhbHNlLCBlcnJvcjogbnVsbH0gOiBpdGVtXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBwcm90b1xuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlOiBzZXRKb2luQ29uZmlnVXBkYXRlcihzdGF0ZSwge1xuICAgICAgICBpZDogYWN0aW9uLmlkLFxuICAgICAgICBjb25maWc6IHtlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfVxuICAgICAgfSlcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEYXRhc2V0T3BVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLlJlbW92ZURhdGFzZXRPcFVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBncm91cEJ5czogc3RhdGUuZ3JvdXBCeXMuZmlsdGVyKG9wID0+IG9wLmlkICE9PSBhY3Rpb24uaWQpLFxuICAgIGpvaW5zOiBzdGF0ZS5qb2lucy5maWx0ZXIob3AgPT4gb3AuaWQgIT09IGFjdGlvbi5pZClcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU9wc0ZvckRhdGFzZXRzKHN0YXRlOiBWaXNTdGF0ZSwgZGF0YUlkczogc3RyaW5nW10pOiBWaXNTdGF0ZSB7XG4gIGNvbnN0IGlkcyA9IG5ldyBTZXQoZGF0YUlkcyk7XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgZ3JvdXBCeXM6IHN0YXRlLmdyb3VwQnlzLmZpbHRlcihvcCA9PiAhaWRzLmhhcyhvcC5kYXRhSWQpICYmICFpZHMuaGFzKG9wLnJlc3VsdElkKSksXG4gICAgam9pbnM6IHN0YXRlLmpvaW5zLmZpbHRlcihcbiAgICAgIG9wID0+XG4gICAgICAgICFpZHMuaGFzKG9wLmxlZnREYXRhSWQpICYmXG4gICAgICAgICEob3AucmlnaHREYXRhSWQgJiYgaWRzLmhhcyhvcC5yaWdodERhdGFJZCkpICYmXG4gICAgICAgICFpZHMuaGFzKG9wLnJlc3VsdElkKVxuICAgIClcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUEsU0FBUUEsY0FBYyxRQUFPLHlCQUF5QjtBQUN0RCxTQUNFQyw0QkFBNEIsRUFDNUJDLGNBQWMsRUFDZEMsc0JBQXNCLEVBQ3RCQyxZQUFZLEVBQ1pDLG1CQUFtQixFQUNuQkMsaUJBQWlCLFFBR1osa0JBQWtCO0FBVXpCLFNBQVNDLGFBQWFBLENBQXVDQyxHQUFRLEVBQU87RUFDMUUsT0FBT0EsR0FBRyxDQUFDQyxHQUFHLENBQUMsVUFBQUMsRUFBRTtJQUFBLE9BQUFD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
|
|
357
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZW5lcmF0ZUhhc2hJZCIsImRlZmF1bHRBZ2dyZWdhdGlvbnNGb3JGaWVsZHMiLCJkZWZhdWx0U3VpdGFiaWxpdHlXZWlnaHRzIiwiZ3JvdXBCeURhdGFzZXQiLCJpc1RhYnVsYXJEYXRhc2V0Rm9yT3BzIiwiam9pbkRhdGFzZXRzIiwic3BhdGlhbEpvaW5EYXRhc2V0cyIsInN1Z2dlc3RTcGF0aWFsR2VvIiwic3VpdGFiaWxpdHlEYXRhc2V0IiwiREVGQVVMVF9TVUlUQUJJTElUWV9TQ09SRV9GSUVMRCIsImRlYWN0aXZhdGVPcHMiLCJvcHMiLCJtYXAiLCJvcCIsIl9vYmplY3RTcHJlYWQiLCJpc0NvbmZpZ0FjdGl2ZSIsInJhbmRvbVR3b0RpZ2l0U3VmZml4IiwiU3RyaW5nIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwicGFkU3RhcnQiLCJkZWZhdWx0R3JvdXBCeUxhYmVsIiwiY29uY2F0IiwiZGVmYXVsdEpvaW5MYWJlbCIsImRlZmF1bHRTcGF0aWFsSm9pbkxhYmVsIiwicmVzdWx0SWQiLCJkZWZhdWx0U3VpdGFiaWxpdHlMYWJlbCIsImFkZEdyb3VwQnlVcGRhdGVyIiwic3RhdGUiLCJhY3Rpb24iLCJkYXRhc2V0IiwiZGF0YXNldHMiLCJkYXRhSWQiLCJpZCIsImZpZWxkTmFtZSIsImFnZ3JlZ2F0aW9ucyIsImZpZWxkcyIsInJlc3VsdExhYmVsIiwiZXJyb3IiLCJncm91cEJ5cyIsIl90b0NvbnN1bWFibGVBcnJheSIsImpvaW5zIiwic3VpdGFiaWxpdGllcyIsInNldEdyb3VwQnlDb25maWdVcGRhdGVyIiwiX2FjdGlvbiRjb25maWckZXJyb3IiLCJjb25maWciLCJleGVjdXRlR3JvdXBCeSIsImZpbmQiLCJpdGVtIiwidW5kZWZpbmVkIiwicHJvdG8iLCJsYWJlbCIsIm9wZXJhdGlvbklkIiwiZmlsdGVyIiwiRXJyb3IiLCJtZXNzYWdlIiwiYWRkSm9pblVwZGF0ZXIiLCJpbXBsZW1lbnRhdGlvbiIsImxlZnREYXRhSWQiLCJyaWdodERhdGFJZCIsImxlZnRGaWVsZCIsInJpZ2h0RmllbGQiLCJ0eXBlIiwibGVmdEdlbyIsInJpZ2h0R2VvIiwicHJlZGljYXRlIiwic2V0Sm9pbkNvbmZpZ1VwZGF0ZXIiLCJfYWN0aW9uJGNvbmZpZyRlcnJvcjIiLCJleGVjdXRlSm9pbiIsImxlZnQiLCJyaWdodCIsImxlZnRDb2x1bW5zIiwicmlnaHRDb2x1bW5zIiwiYWRkU3BhdGlhbEpvaW5VcGRhdGVyIiwic2V0U3BhdGlhbEpvaW5Db25maWdVcGRhdGVyIiwiZXhlY3V0ZVNwYXRpYWxKb2luIiwiYWRkU3VpdGFiaWxpdHlVcGRhdGVyIiwid2VpZ2h0cyIsIndlaWdodFN0YW5kYXJkaXphdGlvbiIsImRhdGFTdGFuZGFyZGl6YXRpb24iLCJvdXRwdXRGaWVsZE5hbWUiLCJzZXRTdWl0YWJpbGl0eUNvbmZpZ1VwZGF0ZXIiLCJfYWN0aW9uJGNvbmZpZyRlcnJvcjMiLCJleGVjdXRlU3VpdGFiaWxpdHkiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiY29sdW1ucyIsInJlbW92ZURhdGFzZXRPcFVwZGF0ZXIiLCJyZW1vdmVPcHNGb3JEYXRhc2V0cyIsImRhdGFJZHMiLCJpZHMiLCJTZXQiLCJoYXMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YXNldC1vcHMtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtcbiAgZGVmYXVsdEFnZ3JlZ2F0aW9uc0ZvckZpZWxkcyxcbiAgZGVmYXVsdFN1aXRhYmlsaXR5V2VpZ2h0cyxcbiAgZ3JvdXBCeURhdGFzZXQsXG4gIGlzVGFidWxhckRhdGFzZXRGb3JPcHMsXG4gIGpvaW5EYXRhc2V0cyxcbiAgc3BhdGlhbEpvaW5EYXRhc2V0cyxcbiAgc3VnZ2VzdFNwYXRpYWxHZW8sXG4gIHN1aXRhYmlsaXR5RGF0YXNldCxcbiAgREVGQVVMVF9TVUlUQUJJTElUWV9TQ09SRV9GSUVMRCxcbiAgR3JvdXBCeU9wLFxuICBKb2luT3AsXG4gIFN1aXRhYmlsaXR5T3Bcbn0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQge1Byb3RvRGF0YXNldH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1Zpc1N0YXRlQWN0aW9uc30gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5cbmV4cG9ydCB0eXBlIERlcml2ZWREYXRhc2V0T3BSZXN1bHQgPSB7XG4gIHN0YXRlOiBWaXNTdGF0ZTtcbiAgcHJvdG8/OiBQcm90b0RhdGFzZXQ7XG59O1xuXG5mdW5jdGlvbiBkZWFjdGl2YXRlT3BzPFQgZXh0ZW5kcyB7aXNDb25maWdBY3RpdmU/OiBib29sZWFufT4ob3BzOiBUW10pOiBUW10ge1xuICByZXR1cm4gb3BzLm1hcChvcCA9PiAoey4uLm9wLCBpc0NvbmZpZ0FjdGl2ZTogZmFsc2V9KSk7XG59XG5cbmZ1bmN0aW9uIHJhbmRvbVR3b0RpZ2l0U3VmZml4KCk6IHN0cmluZyB7XG4gIHJldHVybiBTdHJpbmcoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwKSkucGFkU3RhcnQoMiwgJzAnKTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdEdyb3VwQnlMYWJlbCgpOiBzdHJpbmcge1xuICByZXR1cm4gYGdyb3VwLWJ5LSR7cmFuZG9tVHdvRGlnaXRTdWZmaXgoKX1gO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0Sm9pbkxhYmVsKCk6IHN0cmluZyB7XG4gIHJldHVybiBgam9pbi1kYXRhc2V0LSR7cmFuZG9tVHdvRGlnaXRTdWZmaXgoKX1gO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0U3BhdGlhbEpvaW5MYWJlbChyZXN1bHRJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBzcGF0aWFsLWpvaW4tJHtyZXN1bHRJZH1gO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0U3VpdGFiaWxpdHlMYWJlbCgpOiBzdHJpbmcge1xuICByZXR1cm4gYHN1aXRhYmlsaXR5LSR7cmFuZG9tVHdvRGlnaXRTdWZmaXgoKX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkR3JvdXBCeVVwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuQWRkR3JvdXBCeVVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgY29uc3QgZGF0YXNldCA9IHN0YXRlLmRhdGFzZXRzW2FjdGlvbi5kYXRhSWRdO1xuICBpZiAoIWlzVGFidWxhckRhdGFzZXRGb3JPcHMoZGF0YXNldCkpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgY29uc3QgaWQgPSBnZW5lcmF0ZUhhc2hJZCg2KTtcbiAgY29uc3QgcmVzdWx0SWQgPSBnZW5lcmF0ZUhhc2hJZCg2KTtcbiAgY29uc3Qgb3A6IEdyb3VwQnlPcCA9IHtcbiAgICBpZCxcbiAgICBkYXRhSWQ6IGFjdGlvbi5kYXRhSWQsXG4gICAgZmllbGROYW1lOiBudWxsLFxuICAgIGFnZ3JlZ2F0aW9uczogZGVmYXVsdEFnZ3JlZ2F0aW9uc0ZvckZpZWxkcyhkYXRhc2V0LmZpZWxkcyksXG4gICAgcmVzdWx0SWQsXG4gICAgcmVzdWx0TGFiZWw6IGRlZmF1bHRHcm91cEJ5TGFiZWwoKSxcbiAgICBpc0NvbmZpZ0FjdGl2ZTogdHJ1ZSxcbiAgICBlcnJvcjogbnVsbFxuICB9O1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGdyb3VwQnlzOiBbLi4uZGVhY3RpdmF0ZU9wcyhzdGF0ZS5ncm91cEJ5cyksIG9wXSxcbiAgICBqb2luczogZGVhY3RpdmF0ZU9wcyhzdGF0ZS5qb2lucyksXG4gICAgc3VpdGFiaWxpdGllczogZGVhY3RpdmF0ZU9wcyhzdGF0ZS5zdWl0YWJpbGl0aWVzKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0R3JvdXBCeUNvbmZpZ1VwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuU2V0R3JvdXBCeUNvbmZpZ1VwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBncm91cEJ5czogc3RhdGUuZ3JvdXBCeXMubWFwKG9wID0+XG4gICAgICBvcC5pZCA9PT0gYWN0aW9uLmlkID8gey4uLm9wLCAuLi5hY3Rpb24uY29uZmlnLCBlcnJvcjogYWN0aW9uLmNvbmZpZy5lcnJvciA/PyBudWxsfSA6IG9wXG4gICAgKVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhlY3V0ZUdyb3VwQnkoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuUnVuR3JvdXBCeVVwZGF0ZXJBY3Rpb25cbik6IERlcml2ZWREYXRhc2V0T3BSZXN1bHQge1xuICBjb25zdCBvcCA9IHN0YXRlLmdyb3VwQnlzLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBhY3Rpb24uaWQpO1xuICBjb25zdCBkYXRhc2V0ID0gb3AgPyBzdGF0ZS5kYXRhc2V0c1tvcC5kYXRhSWRdIDogdW5kZWZpbmVkO1xuICBpZiAoIW9wIHx8ICFkYXRhc2V0IHx8ICFvcC5maWVsZE5hbWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHNldEdyb3VwQnlDb25maWdVcGRhdGVyKHN0YXRlLCB7XG4gICAgICAgIGlkOiBhY3Rpb24uaWQsXG4gICAgICAgIGNvbmZpZzoge2Vycm9yOiAnU2VsZWN0IGEgZ3JvdXBpbmcgZmllbGQnfVxuICAgICAgfSlcbiAgICB9O1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBwcm90byA9IGdyb3VwQnlEYXRhc2V0KGRhdGFzZXQsIHtcbiAgICAgIGZpZWxkTmFtZTogb3AuZmllbGROYW1lLFxuICAgICAgYWdncmVnYXRpb25zOiBvcC5hZ2dyZWdhdGlvbnMsXG4gICAgICBsYWJlbDogb3AucmVzdWx0TGFiZWwsXG4gICAgICByZXN1bHRJZDogb3AucmVzdWx0SWQsXG4gICAgICBvcGVyYXRpb25JZDogb3AuaWRcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGdyb3VwQnlzOiBzdGF0ZS5ncm91cEJ5cy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlkICE9PSBvcC5pZClcbiAgICAgIH0sXG4gICAgICBwcm90b1xuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlOiBzZXRHcm91cEJ5Q29uZmlnVXBkYXRlcihzdGF0ZSwge1xuICAgICAgICBpZDogYWN0aW9uLmlkLFxuICAgICAgICBjb25maWc6IHtlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfVxuICAgICAgfSlcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRKb2luVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5BZGRKb2luVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICBjb25zdCBkYXRhc2V0ID0gc3RhdGUuZGF0YXNldHNbYWN0aW9uLmRhdGFJZF07XG4gIGlmICghaXNUYWJ1bGFyRGF0YXNldEZvck9wcyhkYXRhc2V0KSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBjb25zdCBpbXBsZW1lbnRhdGlvbiA9IGFjdGlvbi5pbXBsZW1lbnRhdGlvbiB8fCAnc2ltcGxlJztcbiAgY29uc3QgaWQgPSBnZW5lcmF0ZUhhc2hJZCg2KTtcbiAgY29uc3QgcmVzdWx0SWQgPSBnZW5lcmF0ZUhhc2hJZCg2KTtcbiAgY29uc3Qgb3A6IEpvaW5PcCA9IHtcbiAgICBpZCxcbiAgICBpbXBsZW1lbnRhdGlvbixcbiAgICBsZWZ0RGF0YUlkOiBhY3Rpb24uZGF0YUlkLFxuICAgIHJpZ2h0RGF0YUlkOiBudWxsLFxuICAgIGxlZnRGaWVsZDogbnVsbCxcbiAgICByaWdodEZpZWxkOiBudWxsLFxuICAgIHR5cGU6ICdMRUZUJyxcbiAgICBhZ2dyZWdhdGlvbnM6IHt9LFxuICAgIGxlZnRHZW86IGltcGxlbWVudGF0aW9uID09PSAnc3BhdGlhbCcgPyBzdWdnZXN0U3BhdGlhbEdlbyhkYXRhc2V0LmZpZWxkcykgOiBudWxsLFxuICAgIHJpZ2h0R2VvOiBudWxsLFxuICAgIHByZWRpY2F0ZTogaW1wbGVtZW50YXRpb24gPT09ICdzcGF0aWFsJyA/ICdpbnRlcnNlY3RzJyA6IHVuZGVmaW5lZCxcbiAgICByZXN1bHRJZCxcbiAgICByZXN1bHRMYWJlbDpcbiAgICAgIGltcGxlbWVudGF0aW9uID09PSAnc3BhdGlhbCcgPyBkZWZhdWx0U3BhdGlhbEpvaW5MYWJlbChyZXN1bHRJZCkgOiBkZWZhdWx0Sm9pbkxhYmVsKCksXG4gICAgaXNDb25maWdBY3RpdmU6IHRydWUsXG4gICAgZXJyb3I6IG51bGxcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBqb2luczogWy4uLmRlYWN0aXZhdGVPcHMoc3RhdGUuam9pbnMpLCBvcF0sXG4gICAgZ3JvdXBCeXM6IGRlYWN0aXZhdGVPcHMoc3RhdGUuZ3JvdXBCeXMpLFxuICAgIHN1aXRhYmlsaXRpZXM6IGRlYWN0aXZhdGVPcHMoc3RhdGUuc3VpdGFiaWxpdGllcylcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEpvaW5Db25maWdVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLlNldEpvaW5Db25maWdVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgam9pbnM6IHN0YXRlLmpvaW5zLm1hcChvcCA9PlxuICAgICAgb3AuaWQgPT09IGFjdGlvbi5pZCA/IHsuLi5vcCwgLi4uYWN0aW9uLmNvbmZpZywgZXJyb3I6IGFjdGlvbi5jb25maWcuZXJyb3IgPz8gbnVsbH0gOiBvcFxuICAgIClcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4ZWN1dGVKb2luKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLlJ1bkpvaW5VcGRhdGVyQWN0aW9uXG4pOiBEZXJpdmVkRGF0YXNldE9wUmVzdWx0IHtcbiAgY29uc3Qgb3AgPSBzdGF0ZS5qb2lucy5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gYWN0aW9uLmlkICYmIGl0ZW0uaW1wbGVtZW50YXRpb24gIT09ICdzcGF0aWFsJyk7XG4gIGNvbnN0IGxlZnQgPSBvcCA/IHN0YXRlLmRhdGFzZXRzW29wLmxlZnREYXRhSWRdIDogdW5kZWZpbmVkO1xuICBjb25zdCByaWdodCA9IG9wPy5yaWdodERhdGFJZCA/IHN0YXRlLmRhdGFzZXRzW29wLnJpZ2h0RGF0YUlkXSA6IHVuZGVmaW5lZDtcbiAgaWYgKCFvcCB8fCAhbGVmdCB8fCAhcmlnaHQgfHwgIW9wLmxlZnRGaWVsZCB8fCAhb3AucmlnaHRGaWVsZCkge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZTogc2V0Sm9pbkNvbmZpZ1VwZGF0ZXIoc3RhdGUsIHtcbiAgICAgICAgaWQ6IGFjdGlvbi5pZCxcbiAgICAgICAgY29uZmlnOiB7ZXJyb3I6ICdTZWxlY3QgZGF0YXNldHMgYW5kIGpvaW4ga2V5cyd9XG4gICAgICB9KVxuICAgIH07XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHByb3RvID0gam9pbkRhdGFzZXRzKGxlZnQsIHJpZ2h0LCB7XG4gICAgICBsZWZ0RmllbGQ6IG9wLmxlZnRGaWVsZCxcbiAgICAgIHJpZ2h0RmllbGQ6IG9wLnJpZ2h0RmllbGQsXG4gICAgICB0eXBlOiBvcC50eXBlLFxuICAgICAgbGVmdENvbHVtbnM6IG9wLmxlZnRDb2x1bW5zLFxuICAgICAgcmlnaHRDb2x1bW5zOiBvcC5yaWdodENvbHVtbnMsXG4gICAgICBsYWJlbDogb3AucmVzdWx0TGFiZWwsXG4gICAgICByZXN1bHRJZDogb3AucmVzdWx0SWQsXG4gICAgICBvcGVyYXRpb25JZDogb3AuaWRcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGpvaW5zOiBzdGF0ZS5qb2lucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlkICE9PSBvcC5pZClcbiAgICAgIH0sXG4gICAgICBwcm90b1xuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlOiBzZXRKb2luQ29uZmlnVXBkYXRlcihzdGF0ZSwge1xuICAgICAgICBpZDogYWN0aW9uLmlkLFxuICAgICAgICBjb25maWc6IHtlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfVxuICAgICAgfSlcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRTcGF0aWFsSm9pblVwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuQWRkU3BhdGlhbEpvaW5VcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIHJldHVybiBhZGRKb2luVXBkYXRlcihzdGF0ZSwge2RhdGFJZDogYWN0aW9uLmRhdGFJZCwgaW1wbGVtZW50YXRpb246ICdzcGF0aWFsJ30pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0U3BhdGlhbEpvaW5Db25maWdVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLlNldFNwYXRpYWxKb2luQ29uZmlnVXBkYXRlckFjdGlvblxuKTogVmlzU3RhdGUge1xuICByZXR1cm4gc2V0Sm9pbkNvbmZpZ1VwZGF0ZXIoc3RhdGUsIGFjdGlvbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGVjdXRlU3BhdGlhbEpvaW4oXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuUnVuU3BhdGlhbEpvaW5VcGRhdGVyQWN0aW9uXG4pOiBEZXJpdmVkRGF0YXNldE9wUmVzdWx0IHtcbiAgY29uc3Qgb3AgPSBzdGF0ZS5qb2lucy5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gYWN0aW9uLmlkICYmIGl0ZW0uaW1wbGVtZW50YXRpb24gPT09ICdzcGF0aWFsJyk7XG4gIGNvbnN0IGxlZnQgPSBvcCA/IHN0YXRlLmRhdGFzZXRzW29wLmxlZnREYXRhSWRdIDogdW5kZWZpbmVkO1xuICBjb25zdCByaWdodCA9IG9wPy5yaWdodERhdGFJZCA/IHN0YXRlLmRhdGFzZXRzW29wLnJpZ2h0RGF0YUlkXSA6IHVuZGVmaW5lZDtcbiAgaWYgKCFvcCB8fCAhbGVmdCB8fCAhcmlnaHQgfHwgIW9wLmxlZnRHZW8gfHwgIW9wLnJpZ2h0R2VvKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlOiBzZXRKb2luQ29uZmlnVXBkYXRlcihzdGF0ZSwge1xuICAgICAgICBpZDogYWN0aW9uLmlkLFxuICAgICAgICBjb25maWc6IHtlcnJvcjogJ1NlbGVjdCBkYXRhc2V0cyBhbmQgZ2VvbWV0cnkgZmllbGRzJ31cbiAgICAgIH0pXG4gICAgfTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcHJvdG8gPSBzcGF0aWFsSm9pbkRhdGFzZXRzKGxlZnQsIHJpZ2h0LCB7XG4gICAgICBsZWZ0R2VvOiBvcC5sZWZ0R2VvLFxuICAgICAgcmlnaHRHZW86IG9wLnJpZ2h0R2VvLFxuICAgICAgYWdncmVnYXRpb25zOiBvcC5hZ2dyZWdhdGlvbnMsXG4gICAgICBsZWZ0Q29sdW1uczogb3AubGVmdENvbHVtbnMsXG4gICAgICBwcmVkaWNhdGU6IG9wLnByZWRpY2F0ZSB8fCAnaW50ZXJzZWN0cycsXG4gICAgICBsYWJlbDogb3AucmVzdWx0TGFiZWwsXG4gICAgICByZXN1bHRJZDogb3AucmVzdWx0SWQsXG4gICAgICBvcGVyYXRpb25JZDogb3AuaWRcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGpvaW5zOiBzdGF0ZS5qb2lucy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlkICE9PSBvcC5pZClcbiAgICAgIH0sXG4gICAgICBwcm90b1xuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlOiBzZXRKb2luQ29uZmlnVXBkYXRlcihzdGF0ZSwge1xuICAgICAgICBpZDogYWN0aW9uLmlkLFxuICAgICAgICBjb25maWc6IHtlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfVxuICAgICAgfSlcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRTdWl0YWJpbGl0eVVwZGF0ZXIoXG4gIHN0YXRlOiBWaXNTdGF0ZSxcbiAgYWN0aW9uOiBWaXNTdGF0ZUFjdGlvbnMuQWRkU3VpdGFiaWxpdHlVcGRhdGVyQWN0aW9uXG4pOiBWaXNTdGF0ZSB7XG4gIGNvbnN0IGRhdGFzZXQgPSBzdGF0ZS5kYXRhc2V0c1thY3Rpb24uZGF0YUlkXTtcbiAgaWYgKCFpc1RhYnVsYXJEYXRhc2V0Rm9yT3BzKGRhdGFzZXQpKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIGNvbnN0IG9wOiBTdWl0YWJpbGl0eU9wID0ge1xuICAgIGlkOiBnZW5lcmF0ZUhhc2hJZCg2KSxcbiAgICBkYXRhSWQ6IGFjdGlvbi5kYXRhSWQsXG4gICAgd2VpZ2h0czogZGVmYXVsdFN1aXRhYmlsaXR5V2VpZ2h0cyhkYXRhc2V0LmZpZWxkcyksXG4gICAgd2VpZ2h0U3RhbmRhcmRpemF0aW9uOiAnbm9ybWFsaXplJyxcbiAgICBkYXRhU3RhbmRhcmRpemF0aW9uOiAncmFuZ2UnLFxuICAgIG91dHB1dEZpZWxkTmFtZTogREVGQVVMVF9TVUlUQUJJTElUWV9TQ09SRV9GSUVMRCxcbiAgICByZXN1bHRJZDogZ2VuZXJhdGVIYXNoSWQoNiksXG4gICAgcmVzdWx0TGFiZWw6IGRlZmF1bHRTdWl0YWJpbGl0eUxhYmVsKCksXG4gICAgaXNDb25maWdBY3RpdmU6IHRydWUsXG4gICAgZXJyb3I6IG51bGxcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBzdWl0YWJpbGl0aWVzOiBbLi4uZGVhY3RpdmF0ZU9wcyhzdGF0ZS5zdWl0YWJpbGl0aWVzKSwgb3BdLFxuICAgIGdyb3VwQnlzOiBkZWFjdGl2YXRlT3BzKHN0YXRlLmdyb3VwQnlzKSxcbiAgICBqb2luczogZGVhY3RpdmF0ZU9wcyhzdGF0ZS5qb2lucylcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFN1aXRhYmlsaXR5Q29uZmlnVXBkYXRlcihcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5TZXRTdWl0YWJpbGl0eUNvbmZpZ1VwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBzdWl0YWJpbGl0aWVzOiBzdGF0ZS5zdWl0YWJpbGl0aWVzLm1hcChvcCA9PlxuICAgICAgb3AuaWQgPT09IGFjdGlvbi5pZCA/IHsuLi5vcCwgLi4uYWN0aW9uLmNvbmZpZywgZXJyb3I6IGFjdGlvbi5jb25maWcuZXJyb3IgPz8gbnVsbH0gOiBvcFxuICAgIClcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4ZWN1dGVTdWl0YWJpbGl0eShcbiAgc3RhdGU6IFZpc1N0YXRlLFxuICBhY3Rpb246IFZpc1N0YXRlQWN0aW9ucy5SdW5TdWl0YWJpbGl0eVVwZGF0ZXJBY3Rpb25cbik6IERlcml2ZWREYXRhc2V0T3BSZXN1bHQge1xuICBjb25zdCBvcCA9IHN0YXRlLnN1aXRhYmlsaXRpZXMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGFjdGlvbi5pZCk7XG4gIGNvbnN0IGRhdGFzZXQgPSBvcCA/IHN0YXRlLmRhdGFzZXRzW29wLmRhdGFJZF0gOiB1bmRlZmluZWQ7XG4gIGlmICghb3AgfHwgIWRhdGFzZXQgfHwgIU9iamVjdC5rZXlzKG9wLndlaWdodHMpLmxlbmd0aCkge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZTogc2V0U3VpdGFiaWxpdHlDb25maWdVcGRhdGVyKHN0YXRlLCB7XG4gICAgICAgIGlkOiBhY3Rpb24uaWQsXG4gICAgICAgIGNvbmZpZzoge2Vycm9yOiAnU2VsZWN0IGF0IGxlYXN0IG9uZSBmaWVsZCB0byBzY29yZSd9XG4gICAgICB9KVxuICAgIH07XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHByb3RvID0gc3VpdGFiaWxpdHlEYXRhc2V0KGRhdGFzZXQsIHtcbiAgICAgIHdlaWdodHM6IG9wLndlaWdodHMsXG4gICAgICB3ZWlnaHRTdGFuZGFyZGl6YXRpb246IG9wLndlaWdodFN0YW5kYXJkaXphdGlvbixcbiAgICAgIGRhdGFTdGFuZGFyZGl6YXRpb246IG9wLmRhdGFTdGFuZGFyZGl6YXRpb24sXG4gICAgICBvdXRwdXRGaWVsZE5hbWU6IG9wLm91dHB1dEZpZWxkTmFtZSxcbiAgICAgIGNvbHVtbnM6IG9wLmNvbHVtbnMsXG4gICAgICBsYWJlbDogb3AucmVzdWx0TGFiZWwsXG4gICAgICByZXN1bHRJZDogb3AucmVzdWx0SWQsXG4gICAgICBvcGVyYXRpb25JZDogb3AuaWRcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHN1aXRhYmlsaXRpZXM6IHN0YXRlLnN1aXRhYmlsaXRpZXMubWFwKGl0ZW0gPT5cbiAgICAgICAgICBpdGVtLmlkID09PSBvcC5pZCA/IHsuLi5pdGVtLCBpc0NvbmZpZ0FjdGl2ZTogZmFsc2UsIGVycm9yOiBudWxsfSA6IGl0ZW1cbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHByb3RvXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHNldFN1aXRhYmlsaXR5Q29uZmlnVXBkYXRlcihzdGF0ZSwge1xuICAgICAgICBpZDogYWN0aW9uLmlkLFxuICAgICAgICBjb25maWc6IHtlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfVxuICAgICAgfSlcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEYXRhc2V0T3BVcGRhdGVyKFxuICBzdGF0ZTogVmlzU3RhdGUsXG4gIGFjdGlvbjogVmlzU3RhdGVBY3Rpb25zLlJlbW92ZURhdGFzZXRPcFVwZGF0ZXJBY3Rpb25cbik6IFZpc1N0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBncm91cEJ5czogc3RhdGUuZ3JvdXBCeXMuZmlsdGVyKG9wID0+IG9wLmlkICE9PSBhY3Rpb24uaWQpLFxuICAgIGpvaW5zOiBzdGF0ZS5qb2lucy5maWx0ZXIob3AgPT4gb3AuaWQgIT09IGFjdGlvbi5pZCksXG4gICAgc3VpdGFiaWxpdGllczogc3RhdGUuc3VpdGFiaWxpdGllcy5maWx0ZXIob3AgPT4gb3AuaWQgIT09IGFjdGlvbi5pZClcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU9wc0ZvckRhdGFzZXRzKHN0YXRlOiBWaXNTdGF0ZSwgZGF0YUlkczogc3RyaW5nW10pOiBWaXNTdGF0ZSB7XG4gIGNvbnN0IGlkcyA9IG5ldyBTZXQoZGF0YUlkcyk7XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgZ3JvdXBCeXM6IHN0YXRlLmdyb3VwQnlzLmZpbHRlcihvcCA9PiAhaWRzLmhhcyhvcC5kYXRhSWQpICYmICFpZHMuaGFzKG9wLnJlc3VsdElkKSksXG4gICAgam9pbnM6IHN0YXRlLmpvaW5zLmZpbHRlcihcbiAgICAgIG9wID0+XG4gICAgICAgICFpZHMuaGFzKG9wLmxlZnREYXRhSWQpICYmXG4gICAgICAgICEob3AucmlnaHREYXRhSWQgJiYgaWRzLmhhcyhvcC5yaWdodERhdGFJZCkpICYmXG4gICAgICAgICFpZHMuaGFzKG9wLnJlc3VsdElkKVxuICAgICksXG4gICAgc3VpdGFiaWxpdGllczogc3RhdGUuc3VpdGFiaWxpdGllcy5maWx0ZXIob3AgPT4gIWlkcy5oYXMob3AuZGF0YUlkKSAmJiAhaWRzLmhhcyhvcC5yZXN1bHRJZCkpXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBOztBQUVBLFNBQVFBLGNBQWMsUUFBTyx5QkFBeUI7QUFDdEQsU0FDRUMsNEJBQTRCLEVBQzVCQyx5QkFBeUIsRUFDekJDLGNBQWMsRUFDZEMsc0JBQXNCLEVBQ3RCQyxZQUFZLEVBQ1pDLG1CQUFtQixFQUNuQkMsaUJBQWlCLEVBQ2pCQyxrQkFBa0IsRUFDbEJDLCtCQUErQixRQUkxQixrQkFBa0I7QUFVekIsU0FBU0MsYUFBYUEsQ0FBdUNDLEdBQVEsRUFBTztFQUMxRSxPQUFPQSxHQUFHLENBQUNDLEdBQUcsQ0FBQyxVQUFBQyxFQUFFO0lBQUEsT0FBQUMsYUFBQSxDQUFBQSxhQUFBLEtBQVNELEVBQUU7TUFBRUUsY0FBYyxFQUFFO0lBQUs7RUFBQSxDQUFFLENBQUM7QUFDeEQ7QUFFQSxTQUFTQyxvQkFBb0JBLENBQUEsRUFBVztFQUN0QyxPQUFPQyxNQUFNLENBQUNDLElBQUksQ0FBQ0MsS0FBSyxDQUFDRCxJQUFJLENBQUNFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUM7QUFDakU7QUFFQSxTQUFTQyxtQkFBbUJBLENBQUEsRUFBVztFQUNyQyxtQkFBQUMsTUFBQSxDQUFtQlAsb0JBQW9CLENBQUMsQ0FBQztBQUMzQztBQUVBLFNBQVNRLGdCQUFnQkEsQ0FBQSxFQUFXO0VBQ2xDLHVCQUFBRCxNQUFBLENBQXVCUCxvQkFBb0IsQ0FBQyxDQUFDO0FBQy9DO0FBRUEsU0FBU1MsdUJBQXVCQSxDQUFDQyxRQUFnQixFQUFVO0VBQ3pELHVCQUFBSCxNQUFBLENBQXVCRyxRQUFR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
|
|
@@ -76,9 +76,10 @@ describe('dataset ops vis-state', function () {
|
|
|
76
76
|
pop: 'sum'
|
|
77
77
|
}
|
|
78
78
|
}));
|
|
79
|
+
var resultId = state.groupBys[0].resultId;
|
|
79
80
|
state = reduceVisState(state, VisStateActions.runGroupBy(opId));
|
|
80
81
|
state = flushCreateTableTasks(state);
|
|
81
|
-
|
|
82
|
+
expect(state.groupBys).toHaveLength(0);
|
|
82
83
|
expect(state.datasets[resultId]).toBeTruthy();
|
|
83
84
|
expect(state.datasets[resultId].metadata.derivedDataset).toEqual({
|
|
84
85
|
type: 'groupBy',
|
|
@@ -110,6 +111,7 @@ describe('dataset ops vis-state', function () {
|
|
|
110
111
|
}));
|
|
111
112
|
state = reduceVisState(state, VisStateActions.runGroupBy(op.id));
|
|
112
113
|
state = flushCreateTableTasks(state);
|
|
114
|
+
expect(state.groupBys).toHaveLength(0);
|
|
113
115
|
expect(Object.keys(state.datasets)).toHaveLength(2);
|
|
114
116
|
state = reduceVisState(state, VisStateActions.removeDataset('cities'));
|
|
115
117
|
expect(state.datasets.cities).toBeUndefined();
|
|
@@ -208,6 +210,7 @@ describe('dataset ops vis-state', function () {
|
|
|
208
210
|
}));
|
|
209
211
|
state = reduceVisState(state, VisStateActions.runSpatialJoin(op.id));
|
|
210
212
|
state = flushCreateTableTasks(state);
|
|
213
|
+
expect(state.joins).toHaveLength(0);
|
|
211
214
|
expect(state.datasets[op.resultId]).toBeTruthy();
|
|
212
215
|
state = reduceVisState(state, VisStateActions.removeDataset('pts'));
|
|
213
216
|
expect(state.datasets.pts).toBeUndefined();
|
|
@@ -215,7 +218,7 @@ describe('dataset ops vis-state', function () {
|
|
|
215
218
|
expect(state.datasets[op.resultId]).toBeTruthy();
|
|
216
219
|
expect(state.joins).toHaveLength(0);
|
|
217
220
|
});
|
|
218
|
-
test('save/load roundtrip keeps
|
|
221
|
+
test('save/load roundtrip keeps the derived dataset and drops the finished group by', function () {
|
|
219
222
|
var _derivedMeta$derivedD, _saved$config$config$;
|
|
220
223
|
var cities = makeTable('cities', [{
|
|
221
224
|
name: 'region',
|
|
@@ -250,7 +253,129 @@ describe('dataset ops vis-state', function () {
|
|
|
250
253
|
});
|
|
251
254
|
var derivedMeta = derived === null || derived === void 0 ? void 0 : derived.data.metadata;
|
|
252
255
|
expect(derivedMeta === null || derivedMeta === void 0 || (_derivedMeta$derivedD = derivedMeta.derivedDataset) === null || _derivedMeta$derivedD === void 0 ? void 0 : _derivedMeta$derivedD.type).toBe('groupBy');
|
|
253
|
-
expect((_saved$config$config$ = saved.config.config.visState.groupBys)
|
|
256
|
+
expect((_saved$config$config$ = saved.config.config.visState.groupBys) !== null && _saved$config$config$ !== void 0 ? _saved$config$config$ : []).toHaveLength(0);
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
describe('suitability vis-state', function () {
|
|
260
|
+
beforeEach(function () {
|
|
261
|
+
drainTasksForTesting();
|
|
262
|
+
});
|
|
263
|
+
function siteState() {
|
|
264
|
+
var sites = makeTable('sites', [{
|
|
265
|
+
name: 'name',
|
|
266
|
+
type: ALL_FIELD_TYPES.string
|
|
267
|
+
}, {
|
|
268
|
+
name: 'lat',
|
|
269
|
+
type: ALL_FIELD_TYPES.real
|
|
270
|
+
}, {
|
|
271
|
+
name: 'lng',
|
|
272
|
+
type: ALL_FIELD_TYPES.real
|
|
273
|
+
}, {
|
|
274
|
+
name: 'access',
|
|
275
|
+
type: ALL_FIELD_TYPES.integer
|
|
276
|
+
}, {
|
|
277
|
+
name: 'cost',
|
|
278
|
+
type: ALL_FIELD_TYPES.integer
|
|
279
|
+
}], [['a', 0, 0, 0, 100], ['b', 1, 1, 5, 200], ['c', 2, 2, 10, 300]]);
|
|
280
|
+
return _objectSpread(_objectSpread({}, INITIAL_VIS_STATE), {}, {
|
|
281
|
+
datasets: {
|
|
282
|
+
sites: sites
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
test('addSuitability seeds numeric weights and a short random result name', function () {
|
|
287
|
+
var state = reduceVisState(siteState(), VisStateActions.addSuitability('sites'));
|
|
288
|
+
expect(state.suitabilities).toHaveLength(1);
|
|
289
|
+
var op = state.suitabilities[0];
|
|
290
|
+
expect(op.weights).toEqual({
|
|
291
|
+
lat: 1,
|
|
292
|
+
lng: 1,
|
|
293
|
+
access: 1,
|
|
294
|
+
cost: 1
|
|
295
|
+
});
|
|
296
|
+
expect(op.weightStandardization).toBe('normalize');
|
|
297
|
+
expect(op.dataStandardization).toBe('range');
|
|
298
|
+
expect(op.outputFieldName).toBe('score');
|
|
299
|
+
expect(op.resultLabel).toMatch(/^suitability-\d{2}$/);
|
|
300
|
+
});
|
|
301
|
+
test('opening a suitability op closes an open group by', function () {
|
|
302
|
+
var state = reduceVisState(siteState(), VisStateActions.addGroupBy('sites'));
|
|
303
|
+
expect(state.groupBys[0].isConfigActive).toBe(true);
|
|
304
|
+
state = reduceVisState(state, VisStateActions.addSuitability('sites'));
|
|
305
|
+
expect(state.groupBys[0].isConfigActive).toBe(false);
|
|
306
|
+
expect(state.suitabilities[0].isConfigActive).toBe(true);
|
|
307
|
+
state = reduceVisState(state, VisStateActions.addGroupBy('sites'));
|
|
308
|
+
expect(state.suitabilities[0].isConfigActive).toBe(false);
|
|
309
|
+
});
|
|
310
|
+
test('runSuitability adds a scored dataset and a default layer', function () {
|
|
311
|
+
var _layer$config$colorFi;
|
|
312
|
+
var state = reduceVisState(siteState(), VisStateActions.addSuitability('sites'));
|
|
313
|
+
var op = state.suitabilities[0];
|
|
314
|
+
state = reduceVisState(state, VisStateActions.setSuitabilityConfig(op.id, {
|
|
315
|
+
weights: {
|
|
316
|
+
access: 1,
|
|
317
|
+
cost: 1
|
|
318
|
+
}
|
|
319
|
+
}));
|
|
320
|
+
state = reduceVisState(state, VisStateActions.runSuitability(op.id));
|
|
321
|
+
state = flushCreateTableTasks(state);
|
|
322
|
+
var result = state.datasets[op.resultId];
|
|
323
|
+
expect(result).toBeTruthy();
|
|
324
|
+
expect(result.metadata.derivedDataset).toEqual({
|
|
325
|
+
type: 'suitability',
|
|
326
|
+
sourceDataIds: ['sites'],
|
|
327
|
+
operationId: op.id
|
|
328
|
+
});
|
|
329
|
+
expect(result.fields.map(function (field) {
|
|
330
|
+
return field.name;
|
|
331
|
+
})).toContain('score');
|
|
332
|
+
expect(state.suitabilities[0].isConfigActive).toBe(false);
|
|
333
|
+
var layer = state.layers.find(function (item) {
|
|
334
|
+
return item.config.dataId === op.resultId;
|
|
335
|
+
});
|
|
336
|
+
expect(layer).toBeTruthy();
|
|
337
|
+
expect(layer === null || layer === void 0 || (_layer$config$colorFi = layer.config.colorField) === null || _layer$config$colorFi === void 0 ? void 0 : _layer$config$colorFi.name).toBe('score');
|
|
338
|
+
});
|
|
339
|
+
test('running without a weighted field surfaces an error instead of a dataset', function () {
|
|
340
|
+
var state = reduceVisState(siteState(), VisStateActions.addSuitability('sites'));
|
|
341
|
+
var op = state.suitabilities[0];
|
|
342
|
+
state = reduceVisState(state, VisStateActions.setSuitabilityConfig(op.id, {
|
|
343
|
+
weights: {}
|
|
344
|
+
}));
|
|
345
|
+
state = reduceVisState(state, VisStateActions.runSuitability(op.id));
|
|
346
|
+
expect(state.suitabilities[0].error).toBe('Select at least one field to score');
|
|
347
|
+
expect(state.suitabilities[0].isConfigActive).toBe(true);
|
|
348
|
+
expect(state.datasets[op.resultId]).toBeUndefined();
|
|
349
|
+
});
|
|
350
|
+
test('deleting the source dataset drops the op but keeps the scored snapshot', function () {
|
|
351
|
+
var state = reduceVisState(siteState(), VisStateActions.addSuitability('sites'));
|
|
352
|
+
var op = state.suitabilities[0];
|
|
353
|
+
state = reduceVisState(state, VisStateActions.runSuitability(op.id));
|
|
354
|
+
state = flushCreateTableTasks(state);
|
|
355
|
+
expect(state.datasets[op.resultId]).toBeTruthy();
|
|
356
|
+
state = reduceVisState(state, VisStateActions.removeDataset('sites'));
|
|
357
|
+
expect(state.datasets.sites).toBeUndefined();
|
|
358
|
+
expect(state.datasets[op.resultId]).toBeTruthy();
|
|
359
|
+
expect(state.suitabilities).toHaveLength(0);
|
|
360
|
+
});
|
|
361
|
+
test('the op config stays out of saved maps while the derived dataset persists', function () {
|
|
362
|
+
var _derivedMeta$derivedD2;
|
|
363
|
+
var state = reduceVisState(siteState(), VisStateActions.addSuitability('sites'));
|
|
364
|
+
var op = state.suitabilities[0];
|
|
365
|
+
state = reduceVisState(state, VisStateActions.runSuitability(op.id));
|
|
366
|
+
state = flushCreateTableTasks(state);
|
|
367
|
+
var saved = SchemaManager.save({
|
|
368
|
+
visState: state,
|
|
369
|
+
mapState: {},
|
|
370
|
+
mapStyle: {},
|
|
371
|
+
uiState: {}
|
|
372
|
+
});
|
|
373
|
+
expect(saved.config.config.visState).not.toHaveProperty('suitabilities');
|
|
374
|
+
var derived = saved.datasets.find(function (dataset) {
|
|
375
|
+
return dataset.data.id === op.resultId;
|
|
376
|
+
});
|
|
377
|
+
var derivedMeta = derived === null || derived === void 0 ? void 0 : derived.data.metadata;
|
|
378
|
+
expect(derivedMeta === null || derivedMeta === void 0 || (_derivedMeta$derivedD2 = derivedMeta.derivedDataset) === null || _derivedMeta$derivedD2 === void 0 ? void 0 : _derivedMeta$derivedD2.type).toBe('suitability');
|
|
254
379
|
});
|
|
255
380
|
});
|
|
256
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBTExfRklFTERfVFlQRVMiLCJWaXNTdGF0ZUFjdGlvbnMiLCJLZXBsZXJUYWJsZSIsIlNjaGVtYU1hbmFnZXIiLCJkcmFpblRhc2tzRm9yVGVzdGluZyIsInN1Y2NlZWRUYXNrV2l0aFZhbHVlcyIsInZpc1N0YXRlUmVkdWNlciIsIklOSVRJQUxfVklTX1NUQVRFIiwicmVkdWNlVmlzU3RhdGUiLCJtYWtlVGFibGUiLCJpZCIsImZpZWxkcyIsInJvd3MiLCJ0YWJsZSIsImluZm8iLCJsYWJlbCIsInR5cGUiLCJjb2xvciIsInVwZGF0ZVNjaGVtYSIsIm1hcCIsImZpZWxkIiwibmFtZSIsImFuYWx5emVyVHlwZSIsImZsdXNoQ3JlYXRlVGFibGVUYXNrcyIsInN0YXRlIiwidGFza3MiLCJyZWR1Y2UiLCJuZXh0U3RhdGUiLCJ0YXNrIiwiU3RyaW5nIiwiaW5jbHVkZXMiLCJ0YWJsZXMiLCJBcnJheSIsImlzQXJyYXkiLCJwYXlsb2FkIiwiX29iamVjdFNwcmVhZCIsIm9wdHMiLCJkYXRhIiwiZGVzY3JpYmUiLCJiZWZvcmVFYWNoIiwidGVzdCIsImNpdGllcyIsInN0cmluZyIsImludGVnZXIiLCJkYXRhc2V0cyIsImFkZEdyb3VwQnkiLCJleHBlY3QiLCJncm91cEJ5cyIsInRvSGF2ZUxlbmd0aCIsIm9wSWQiLCJzZXRHcm91cEJ5Q29uZmlnIiwiZmllbGROYW1lIiwiYWdncmVnYXRpb25zIiwicG9wIiwicnVuR3JvdXBCeSIsInJlc3VsdElkIiwidG9CZVRydXRoeSIsIm1ldGFkYXRhIiwiZGVyaXZlZERhdGFzZXQiLCJ0b0VxdWFsIiwic291cmNlRGF0YUlkcyIsIm9wZXJhdGlvbklkIiwiZGF0YUNvbnRhaW5lciIsIm51bVJvd3MiLCJ0b0JlIiwib3AiLCJPYmplY3QiLCJrZXlzIiwicmVtb3ZlRGF0YXNldCIsInRvQmVVbmRlZmluZWQiLCJyZXN1bHRMYWJlbCIsInRvTWF0Y2giLCJhZGRKb2luIiwiam9pbnMiLCJwb2x5cyIsImdlb2pzb24iLCJhZGRTcGF0aWFsSm9pbiIsInByZWRpY2F0ZSIsImNvbmNhdCIsInNldFNwYXRpYWxKb2luQ29uZmlnIiwicG9seWdvbiIsImNvb3JkaW5hdGVzIiwicHRzIiwicmVhbCIsInJpZ2h0RGF0YUlkIiwibGVmdEdlbyIsImtpbmQiLCJyaWdodEdlbyIsImxhdEZpZWxkIiwibG5nRmllbGQiLCJ2YWx1ZSIsInJ1blNwYXRpYWxKb2luIiwiX2Rlcml2ZWRNZXRhJGRlcml2ZWREIiwiX3NhdmVkJGNvbmZpZyRjb25maWckIiwic2F2ZWQiLCJzYXZlIiwidmlzU3RhdGUiLCJtYXBTdGF0ZSIsIm1hcFN0eWxlIiwidWlTdGF0ZSIsImRlcml2ZWQiLCJmaW5kIiwiZGF0YXNldCIsImRlcml2ZWRNZXRhIiwiY29uZmlnIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGFzZXQtb3BzLXVwZGF0ZXJzLnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtBTExfRklFTERfVFlQRVN9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7VmlzU3RhdGVBY3Rpb25zfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtLZXBsZXJUYWJsZX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQgU2NoZW1hTWFuYWdlciwge1Zpc1N0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3NjaGVtYXMnO1xuaW1wb3J0IHtkcmFpblRhc2tzRm9yVGVzdGluZywgc3VjY2VlZFRhc2tXaXRoVmFsdWVzfSBmcm9tICdAa2VwbGVyLmdsL3Rhc2tzJztcblxuaW1wb3J0IHZpc1N0YXRlUmVkdWNlciBmcm9tICcuL3Zpcy1zdGF0ZSc7XG5pbXBvcnQge0lOSVRJQUxfVklTX1NUQVRFfSBmcm9tICcuL3Zpcy1zdGF0ZS11cGRhdGVycyc7XG5cbmNvbnN0IHJlZHVjZVZpc1N0YXRlID0gdmlzU3RhdGVSZWR1Y2VyIGFzIChzdGF0ZTogVmlzU3RhdGUsIGFjdGlvbjogdW5rbm93bikgPT4gVmlzU3RhdGU7XG5cbmZ1bmN0aW9uIG1ha2VUYWJsZShpZDogc3RyaW5nLCBmaWVsZHM6IHtuYW1lOiBzdHJpbmc7IHR5cGU6IHN0cmluZ31bXSwgcm93czogYW55W11bXSkge1xuICBjb25zdCB0YWJsZSA9IG5ldyBLZXBsZXJUYWJsZSh7XG4gICAgaW5mbzoge2lkLCBsYWJlbDogaWQsIHR5cGU6ICdsb2NhbCd9LFxuICAgIGNvbG9yOiBbMCwgMCwgMF1cbiAgfSk7XG4gIHRhYmxlLnVwZGF0ZVNjaGVtYSh7XG4gICAgZmllbGRzOiBmaWVsZHMubWFwKGZpZWxkID0+ICh7XG4gICAgICBuYW1lOiBmaWVsZC5uYW1lLFxuICAgICAgdHlwZTogZmllbGQudHlwZSxcbiAgICAgIGFuYWx5emVyVHlwZTogZmllbGQudHlwZVxuICAgIH0pKSxcbiAgICByb3dzXG4gIH0pO1xuICByZXR1cm4gdGFibGU7XG59XG5cbmZ1bmN0aW9uIGZsdXNoQ3JlYXRlVGFibGVUYXNrcyhzdGF0ZTogVmlzU3RhdGUpIHtcbiAgY29uc3QgdGFza3MgPSBkcmFpblRhc2tzRm9yVGVzdGluZygpO1xuICByZXR1cm4gdGFza3MucmVkdWNlKChuZXh0U3RhdGUsIHRhc2spID0+IHtcbiAgICBpZiAoIVN0cmluZyh0YXNrLmxhYmVsIHx8ICcnKS5pbmNsdWRlcygnQ1JFQVRFX1RBQkxFX1RBU0snKSkge1xuICAgICAgcmV0dXJuIG5leHRTdGF0ZTtcbiAgICB9XG4gICAgY29uc3QgdGFibGVzID0gKEFycmF5LmlzQXJyYXkodGFzay5wYXlsb2FkKSA/IHRhc2sucGF5bG9hZCA6IFt0YXNrLnBheWxvYWRdKS5tYXAocGF5bG9hZCA9PiB7XG4gICAgICBjb25zdCB0YWJsZSA9IG5ldyBLZXBsZXJUYWJsZSh7aW5mbzogcGF5bG9hZC5pbmZvLCBjb2xvcjogcGF5bG9hZC5jb2xvciwgLi4ucGF5bG9hZC5vcHRzfSk7XG4gICAgICB0YWJsZS51cGRhdGVTY2hlbWEocGF5bG9hZC5kYXRhKTtcbiAgICAgIHJldHVybiB0YWJsZTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVkdWNlVmlzU3RhdGUobmV4dFN0YXRlLCBzdWNjZWVkVGFza1dpdGhWYWx1ZXModGFzaywgdGFibGVzKSk7XG4gIH0sIHN0YXRlKTtcbn1cblxuZGVzY3JpYmUoJ2RhdGFzZXQgb3BzIHZpcy1zdGF0ZScsICgpID0+IHtcbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgZHJhaW5UYXNrc0ZvclRlc3RpbmcoKTtcbiAgfSk7XG5cbiAgdGVzdCgncnVuR3JvdXBCeSBhZGRzIGEgZGVyaXZlZCBkYXRhc2V0JywgKCkgPT4ge1xuICAgIGNvbnN0IGNpdGllcyA9IG1ha2VUYWJsZShcbiAgICAgICdjaXRpZXMnLFxuICAgICAgW1xuICAgICAgICB7bmFtZTogJ3JlZ2lvbicsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmd9LFxuICAgICAgICB7bmFtZTogJ3BvcCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfVxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgWyd3ZXN0JywgMTBdLFxuICAgICAgICBbJ3dlc3QnLCAyMF0sXG4gICAgICAgIFsnZWFzdCcsIDQwXVxuICAgICAgXVxuICAgICk7XG4gICAgbGV0IHN0YXRlOiBWaXNTdGF0ZSA9IHtcbiAgICAgIC4uLklOSVRJQUxfVklTX1NUQVRFLFxuICAgICAgZGF0YXNldHM6IHtjaXRpZXN9XG4gICAgfTtcblxuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5hZGRHcm91cEJ5KCdjaXRpZXMnKSk7XG4gICAgZXhwZWN0KHN0YXRlLmdyb3VwQnlzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgY29uc3Qgb3BJZCA9IHN0YXRlLmdyb3VwQnlzWzBdLmlkO1xuXG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnNldEdyb3VwQnlDb25maWcob3BJZCwge1xuICAgICAgICBmaWVsZE5hbWU6ICdyZWdpb24nLFxuICAgICAgICBhZ2dyZWdhdGlvbnM6IHtwb3A6ICdzdW0nfVxuICAgICAgfSlcbiAgICApO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5ydW5Hcm91cEJ5KG9wSWQpKTtcbiAgICBzdGF0ZSA9IGZsdXNoQ3JlYXRlVGFibGVUYXNrcyhzdGF0ZSk7XG5cbiAgICBjb25zdCByZXN1bHRJZCA9IHN0YXRlLmdyb3VwQnlzWzBdLnJlc3VsdElkO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0c1tyZXN1bHRJZF0pLnRvQmVUcnV0aHkoKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHNbcmVzdWx0SWRdLm1ldGFkYXRhLmRlcml2ZWREYXRhc2V0KS50b0VxdWFsKHtcbiAgICAgIHR5cGU6ICdncm91cEJ5JyxcbiAgICAgIHNvdXJjZURhdGFJZHM6IFsnY2l0aWVzJ10sXG4gICAgICBvcGVyYXRpb25JZDogb3BJZFxuICAgIH0pO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0c1tyZXN1bHRJZF0uZGF0YUNvbnRhaW5lci5udW1Sb3dzKCkpLnRvQmUoMik7XG4gIH0pO1xuXG4gIHRlc3QoJ2RlbGV0ZSBwYXJlbnQga2VlcHMgZGVyaXZlZCBjaGlsZCBzbmFwc2hvdCcsICgpID0+IHtcbiAgICBjb25zdCBjaXRpZXMgPSBtYWtlVGFibGUoXG4gICAgICAnY2l0aWVzJyxcbiAgICAgIFtcbiAgICAgICAge25hbWU6ICdyZWdpb24nLCB0eXBlOiBBTExfRklFTERfVFlQRVMuc3RyaW5nfSxcbiAgICAgICAge25hbWU6ICdwb3AnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIF0sXG4gICAgICBbWyd3ZXN0JywgMTBdXVxuICAgICk7XG4gICAgbGV0IHN0YXRlOiBWaXNTdGF0ZSA9IHtcbiAgICAgIC4uLklOSVRJQUxfVklTX1NUQVRFLFxuICAgICAgZGF0YXNldHM6IHtjaXRpZXN9XG4gICAgfTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuYWRkR3JvdXBCeSgnY2l0aWVzJykpO1xuICAgIGNvbnN0IG9wID0gc3RhdGUuZ3JvdXBCeXNbMF07XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnNldEdyb3VwQnlDb25maWcob3AuaWQsIHtcbiAgICAgICAgZmllbGROYW1lOiAncmVnaW9uJyxcbiAgICAgICAgYWdncmVnYXRpb25zOiB7cG9wOiAnc3VtJ31cbiAgICAgIH0pXG4gICAgKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMucnVuR3JvdXBCeShvcC5pZCkpO1xuICAgIHN0YXRlID0gZmx1c2hDcmVhdGVUYWJsZVRhc2tzKHN0YXRlKTtcblxuICAgIGV4cGVjdChPYmplY3Qua2V5cyhzdGF0ZS5kYXRhc2V0cykpLnRvSGF2ZUxlbmd0aCgyKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMucmVtb3ZlRGF0YXNldCgnY2l0aWVzJykpO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5jaXRpZXMpLnRvQmVVbmRlZmluZWQoKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHNbb3AucmVzdWx0SWRdKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KHN0YXRlLmdyb3VwQnlzKS50b0hhdmVMZW5ndGgoMCk7XG4gIH0pO1xuXG4gIHRlc3QoJ2FkZEdyb3VwQnkgdXNlcyBhIHNob3J0IHJhbmRvbSByZXN1bHQgbmFtZScsICgpID0+IHtcbiAgICBjb25zdCBjaXRpZXMgPSBtYWtlVGFibGUoXG4gICAgICAnY2l0aWVzJyxcbiAgICAgIFt7bmFtZTogJ3JlZ2lvbicsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmd9XSxcbiAgICAgIFtbJ3dlc3QnXV1cbiAgICApO1xuICAgIGxldCBzdGF0ZTogVmlzU3RhdGUgPSB7XG4gICAgICAuLi5JTklUSUFMX1ZJU19TVEFURSxcbiAgICAgIGRhdGFzZXRzOiB7Y2l0aWVzfVxuICAgIH07XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmFkZEdyb3VwQnkoJ2NpdGllcycpKTtcbiAgICBleHBlY3Qoc3RhdGUuZ3JvdXBCeXNbMF0ucmVzdWx0TGFiZWwpLnRvTWF0Y2goL15ncm91cC1ieS1cXGR7Mn0kLyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2FkZEpvaW4gdXNlcyBhIHNob3J0IHJhbmRvbSByZXN1bHQgbmFtZScsICgpID0+IHtcbiAgICBjb25zdCBjaXRpZXMgPSBtYWtlVGFibGUoJ2NpdGllcycsIFt7bmFtZTogJ2lkJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ31dLCBbWycxJ11dKTtcbiAgICBsZXQgc3RhdGU6IFZpc1N0YXRlID0ge1xuICAgICAgLi4uSU5JVElBTF9WSVNfU1RBVEUsXG4gICAgICBkYXRhc2V0czoge2NpdGllc31cbiAgICB9O1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5hZGRKb2luKCdjaXRpZXMnKSk7XG4gICAgZXhwZWN0KHN0YXRlLmpvaW5zWzBdLnJlc3VsdExhYmVsKS50b01hdGNoKC9eam9pbi1kYXRhc2V0LVxcZHsyfSQvKTtcbiAgfSk7XG5cbiAgdGVzdCgnc2V0U3BhdGlhbEpvaW5Db25maWcgdXBkYXRlcyB0aGUgcHJlZGljYXRlJywgKCkgPT4ge1xuICAgIGNvbnN0IHBvbHlzID0gbWFrZVRhYmxlKCdwb2x5cycsIFt7bmFtZTogJ2dlb20nLCB0eXBlOiBBTExfRklFTERfVFlQRVMuZ2VvanNvbn1dLCBbXSk7XG4gICAgbGV0IHN0YXRlOiBWaXNTdGF0ZSA9IHtcbiAgICAgIC4uLklOSVRJQUxfVklTX1NUQVRFLFxuICAgICAgZGF0YXNldHM6IHtwb2x5c31cbiAgICB9O1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5hZGRTcGF0aWFsSm9pbigncG9seXMnKSk7XG4gICAgY29uc3Qgb3AgPSBzdGF0ZS5qb2luc1swXTtcbiAgICBleHBlY3Qoc3RhdGUuam9pbnNbMF0ucHJlZGljYXRlKS50b0JlKCdpbnRlcnNlY3RzJyk7XG4gICAgZXhwZWN0KHN0YXRlLmpvaW5zWzBdLnJlc3VsdExhYmVsKS50b0JlKGBzcGF0aWFsLWpvaW4tJHtzdGF0ZS5qb2luc1swXS5yZXN1bHRJZH1gKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMuc2V0U3BhdGlhbEpvaW5Db25maWcob3AuaWQsIHtwcmVkaWNhdGU6ICd3aXRoaW4nfSlcbiAgICApO1xuICAgIGV4cGVjdChzdGF0ZS5qb2luc1swXS5wcmVkaWNhdGUpLnRvQmUoJ3dpdGhpbicpO1xuICB9KTtcblxuICB0ZXN0KCdkZWxldGUgc3BhdGlhbCBqb2luIHNvdXJjZSBrZWVwcyByZXN1bHQgc25hcHNob3QnLCAoKSA9PiB7XG4gICAgY29uc3QgcG9seWdvbiA9IHtcbiAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgIGNvb3JkaW5hdGVzOiBbXG4gICAgICAgIFtcbiAgICAgICAgICBbLTEwLCAtMTBdLFxuICAgICAgICAgIFsxMCwgLTEwXSxcbiAgICAgICAgICBbMTAsIDEwXSxcbiAgICAgICAgICBbLTEwLCAxMF0sXG4gICAgICAgICAgWy0xMCwgLTEwXVxuICAgICAgICBdXG4gICAgICBdXG4gICAgfTtcbiAgICBjb25zdCBwb2x5cyA9IG1ha2VUYWJsZShcbiAgICAgICdwb2x5cycsXG4gICAgICBbXG4gICAgICAgIHtuYW1lOiAnbmFtZScsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmd9LFxuICAgICAgICB7bmFtZTogJ2dlb20nLCB0eXBlOiBBTExfRklFTERfVFlQRVMuZ2VvanNvbn1cbiAgICAgIF0sXG4gICAgICBbWyd3ZXN0JywgcG9seWdvbl1dXG4gICAgKTtcbiAgICBjb25zdCBwdHMgPSBtYWtlVGFibGUoXG4gICAgICAncHRzJyxcbiAgICAgIFtcbiAgICAgICAge25hbWU6ICdsYXQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMucmVhbH0sXG4gICAgICAgIHtuYW1lOiAnbG5nJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnJlYWx9LFxuICAgICAgICB7bmFtZTogJ3ZhbHVlJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJ9XG4gICAgICBdLFxuICAgICAgW1swLCAwLCAxMF1dXG4gICAgKTtcbiAgICBsZXQgc3RhdGU6IFZpc1N0YXRlID0ge1xuICAgICAgLi4uSU5JVElBTF9WSVNfU1RBVEUsXG4gICAgICBkYXRhc2V0czoge3BvbHlzLCBwdHN9XG4gICAgfTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuYWRkU3BhdGlhbEpvaW4oJ3BvbHlzJykpO1xuICAgIGNvbnN0IG9wID0gc3RhdGUuam9pbnNbMF07XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnNldFNwYXRpYWxKb2luQ29uZmlnKG9wLmlkLCB7XG4gICAgICAgIHJpZ2h0RGF0YUlkOiAncHRzJyxcbiAgICAgICAgbGVmdEdlbzoge2tpbmQ6ICdnZW9qc29uJywgZmllbGROYW1lOiAnZ2VvbSd9LFxuICAgICAgICByaWdodEdlbzoge2tpbmQ6ICdsYXRsbmcnLCBsYXRGaWVsZDogJ2xhdCcsIGxuZ0ZpZWxkOiAnbG5nJ30sXG4gICAgICAgIGFnZ3JlZ2F0aW9uczoge3ZhbHVlOiAnc3VtJ31cbiAgICAgIH0pXG4gICAgKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMucnVuU3BhdGlhbEpvaW4ob3AuaWQpKTtcbiAgICBzdGF0ZSA9IGZsdXNoQ3JlYXRlVGFibGVUYXNrcyhzdGF0ZSk7XG5cbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHNbb3AucmVzdWx0SWRdKS50b0JlVHJ1dGh5KCk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLnJlbW92ZURhdGFzZXQoJ3B0cycpKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMucHRzKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLnBvbHlzKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzW29wLnJlc3VsdElkXSkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChzdGF0ZS5qb2lucykudG9IYXZlTGVuZ3RoKDApO1xuICB9KTtcblxuICB0ZXN0KCdzYXZlL2xvYWQgcm91bmR0cmlwIGtlZXBzIGRlcml2ZWREYXRhc2V0IG1ldGFkYXRhIGFuZCBkcmFmdHMnLCAoKSA9PiB7XG4gICAgY29uc3QgY2l0aWVzID0gbWFrZVRhYmxlKFxuICAgICAgJ2NpdGllcycsXG4gICAgICBbXG4gICAgICAgIHtuYW1lOiAncmVnaW9uJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ30sXG4gICAgICAgIHtuYW1lOiAncG9wJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJ9XG4gICAgICBdLFxuICAgICAgW1snd2VzdCcsIDEwXV1cbiAgICApO1xuICAgIGxldCBzdGF0ZTogVmlzU3RhdGUgPSB7XG4gICAgICAuLi5JTklUSUFMX1ZJU19TVEFURSxcbiAgICAgIGRhdGFzZXRzOiB7Y2l0aWVzfVxuICAgIH07XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmFkZEdyb3VwQnkoJ2NpdGllcycpKTtcbiAgICBjb25zdCBvcCA9IHN0YXRlLmdyb3VwQnlzWzBdO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoXG4gICAgICBzdGF0ZSxcbiAgICAgIFZpc1N0YXRlQWN0aW9ucy5zZXRHcm91cEJ5Q29uZmlnKG9wLmlkLCB7XG4gICAgICAgIGZpZWxkTmFtZTogJ3JlZ2lvbicsXG4gICAgICAgIGFnZ3JlZ2F0aW9uczoge3BvcDogJ3N1bSd9XG4gICAgICB9KVxuICAgICk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLnJ1bkdyb3VwQnkob3AuaWQpKTtcbiAgICBzdGF0ZSA9IGZsdXNoQ3JlYXRlVGFibGVUYXNrcyhzdGF0ZSk7XG5cbiAgICBjb25zdCBzYXZlZCA9IFNjaGVtYU1hbmFnZXIuc2F2ZSh7XG4gICAgICB2aXNTdGF0ZTogc3RhdGUsXG4gICAgICBtYXBTdGF0ZToge30sXG4gICAgICBtYXBTdHlsZToge30sXG4gICAgICB1aVN0YXRlOiB7fVxuICAgIH0pO1xuICAgIGNvbnN0IGRlcml2ZWQgPSBzYXZlZC5kYXRhc2V0cy5maW5kKGRhdGFzZXQgPT4gZGF0YXNldC5kYXRhLmlkID09PSBvcC5yZXN1bHRJZCk7XG4gICAgY29uc3QgZGVyaXZlZE1ldGEgPSBkZXJpdmVkPy5kYXRhLm1ldGFkYXRhIGFzXG4gICAgICB8IHtkZXJpdmVkRGF0YXNldD86IHt0eXBlPzogc3RyaW5nfSB8IG51bGx9XG4gICAgICB8IHVuZGVmaW5lZDtcbiAgICBleHBlY3QoZGVyaXZlZE1ldGE/LmRlcml2ZWREYXRhc2V0Py50eXBlKS50b0JlKCdncm91cEJ5Jyk7XG4gICAgZXhwZWN0KHNhdmVkLmNvbmZpZy5jb25maWcudmlzU3RhdGUuZ3JvdXBCeXM/LlswXS5maWVsZE5hbWUpLnRvQmUoJ3JlZ2lvbicpO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQTtBQUNBOztBQUVBLFNBQVFBLGVBQWUsUUFBTyxzQkFBc0I7QUFDcEQsU0FBUUMsZUFBZSxRQUFPLG9CQUFvQjtBQUNsRCxTQUFRQyxXQUFXLFFBQU8sa0JBQWtCO0FBQzVD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
|
|
381
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBTExfRklFTERfVFlQRVMiLCJWaXNTdGF0ZUFjdGlvbnMiLCJLZXBsZXJUYWJsZSIsIlNjaGVtYU1hbmFnZXIiLCJkcmFpblRhc2tzRm9yVGVzdGluZyIsInN1Y2NlZWRUYXNrV2l0aFZhbHVlcyIsInZpc1N0YXRlUmVkdWNlciIsIklOSVRJQUxfVklTX1NUQVRFIiwicmVkdWNlVmlzU3RhdGUiLCJtYWtlVGFibGUiLCJpZCIsImZpZWxkcyIsInJvd3MiLCJ0YWJsZSIsImluZm8iLCJsYWJlbCIsInR5cGUiLCJjb2xvciIsInVwZGF0ZVNjaGVtYSIsIm1hcCIsImZpZWxkIiwibmFtZSIsImFuYWx5emVyVHlwZSIsImZsdXNoQ3JlYXRlVGFibGVUYXNrcyIsInN0YXRlIiwidGFza3MiLCJyZWR1Y2UiLCJuZXh0U3RhdGUiLCJ0YXNrIiwiU3RyaW5nIiwiaW5jbHVkZXMiLCJ0YWJsZXMiLCJBcnJheSIsImlzQXJyYXkiLCJwYXlsb2FkIiwiX29iamVjdFNwcmVhZCIsIm9wdHMiLCJkYXRhIiwiZGVzY3JpYmUiLCJiZWZvcmVFYWNoIiwidGVzdCIsImNpdGllcyIsInN0cmluZyIsImludGVnZXIiLCJkYXRhc2V0cyIsImFkZEdyb3VwQnkiLCJleHBlY3QiLCJncm91cEJ5cyIsInRvSGF2ZUxlbmd0aCIsIm9wSWQiLCJzZXRHcm91cEJ5Q29uZmlnIiwiZmllbGROYW1lIiwiYWdncmVnYXRpb25zIiwicG9wIiwicmVzdWx0SWQiLCJydW5Hcm91cEJ5IiwidG9CZVRydXRoeSIsIm1ldGFkYXRhIiwiZGVyaXZlZERhdGFzZXQiLCJ0b0VxdWFsIiwic291cmNlRGF0YUlkcyIsIm9wZXJhdGlvbklkIiwiZGF0YUNvbnRhaW5lciIsIm51bVJvd3MiLCJ0b0JlIiwib3AiLCJPYmplY3QiLCJrZXlzIiwicmVtb3ZlRGF0YXNldCIsInRvQmVVbmRlZmluZWQiLCJyZXN1bHRMYWJlbCIsInRvTWF0Y2giLCJhZGRKb2luIiwiam9pbnMiLCJwb2x5cyIsImdlb2pzb24iLCJhZGRTcGF0aWFsSm9pbiIsInByZWRpY2F0ZSIsImNvbmNhdCIsInNldFNwYXRpYWxKb2luQ29uZmlnIiwicG9seWdvbiIsImNvb3JkaW5hdGVzIiwicHRzIiwicmVhbCIsInJpZ2h0RGF0YUlkIiwibGVmdEdlbyIsImtpbmQiLCJyaWdodEdlbyIsImxhdEZpZWxkIiwibG5nRmllbGQiLCJ2YWx1ZSIsInJ1blNwYXRpYWxKb2luIiwiX2Rlcml2ZWRNZXRhJGRlcml2ZWREIiwiX3NhdmVkJGNvbmZpZyRjb25maWckIiwic2F2ZWQiLCJzYXZlIiwidmlzU3RhdGUiLCJtYXBTdGF0ZSIsIm1hcFN0eWxlIiwidWlTdGF0ZSIsImRlcml2ZWQiLCJmaW5kIiwiZGF0YXNldCIsImRlcml2ZWRNZXRhIiwiY29uZmlnIiwic2l0ZVN0YXRlIiwic2l0ZXMiLCJhZGRTdWl0YWJpbGl0eSIsInN1aXRhYmlsaXRpZXMiLCJ3ZWlnaHRzIiwibGF0IiwibG5nIiwiYWNjZXNzIiwiY29zdCIsIndlaWdodFN0YW5kYXJkaXphdGlvbiIsImRhdGFTdGFuZGFyZGl6YXRpb24iLCJvdXRwdXRGaWVsZE5hbWUiLCJpc0NvbmZpZ0FjdGl2ZSIsIl9sYXllciRjb25maWckY29sb3JGaSIsInNldFN1aXRhYmlsaXR5Q29uZmlnIiwicnVuU3VpdGFiaWxpdHkiLCJyZXN1bHQiLCJ0b0NvbnRhaW4iLCJsYXllciIsImxheWVycyIsIml0ZW0iLCJkYXRhSWQiLCJjb2xvckZpZWxkIiwiZXJyb3IiLCJfZGVyaXZlZE1ldGEkZGVyaXZlZEQyIiwibm90IiwidG9IYXZlUHJvcGVydHkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YXNldC1vcHMtdXBkYXRlcnMuc3BlYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0FMTF9GSUVMRF9UWVBFU30gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtWaXNTdGF0ZUFjdGlvbnN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge0tlcGxlclRhYmxlfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCBTY2hlbWFNYW5hZ2VyLCB7VmlzU3RhdGV9IGZyb20gJ0BrZXBsZXIuZ2wvc2NoZW1hcyc7XG5pbXBvcnQge2RyYWluVGFza3NGb3JUZXN0aW5nLCBzdWNjZWVkVGFza1dpdGhWYWx1ZXN9IGZyb20gJ0BrZXBsZXIuZ2wvdGFza3MnO1xuXG5pbXBvcnQgdmlzU3RhdGVSZWR1Y2VyIGZyb20gJy4vdmlzLXN0YXRlJztcbmltcG9ydCB7SU5JVElBTF9WSVNfU1RBVEV9IGZyb20gJy4vdmlzLXN0YXRlLXVwZGF0ZXJzJztcblxuY29uc3QgcmVkdWNlVmlzU3RhdGUgPSB2aXNTdGF0ZVJlZHVjZXIgYXMgKHN0YXRlOiBWaXNTdGF0ZSwgYWN0aW9uOiB1bmtub3duKSA9PiBWaXNTdGF0ZTtcblxuZnVuY3Rpb24gbWFrZVRhYmxlKGlkOiBzdHJpbmcsIGZpZWxkczoge25hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nfVtdLCByb3dzOiBhbnlbXVtdKSB7XG4gIGNvbnN0IHRhYmxlID0gbmV3IEtlcGxlclRhYmxlKHtcbiAgICBpbmZvOiB7aWQsIGxhYmVsOiBpZCwgdHlwZTogJ2xvY2FsJ30sXG4gICAgY29sb3I6IFswLCAwLCAwXVxuICB9KTtcbiAgdGFibGUudXBkYXRlU2NoZW1hKHtcbiAgICBmaWVsZHM6IGZpZWxkcy5tYXAoZmllbGQgPT4gKHtcbiAgICAgIG5hbWU6IGZpZWxkLm5hbWUsXG4gICAgICB0eXBlOiBmaWVsZC50eXBlLFxuICAgICAgYW5hbHl6ZXJUeXBlOiBmaWVsZC50eXBlXG4gICAgfSkpLFxuICAgIHJvd3NcbiAgfSk7XG4gIHJldHVybiB0YWJsZTtcbn1cblxuZnVuY3Rpb24gZmx1c2hDcmVhdGVUYWJsZVRhc2tzKHN0YXRlOiBWaXNTdGF0ZSkge1xuICBjb25zdCB0YXNrcyA9IGRyYWluVGFza3NGb3JUZXN0aW5nKCk7XG4gIHJldHVybiB0YXNrcy5yZWR1Y2UoKG5leHRTdGF0ZSwgdGFzaykgPT4ge1xuICAgIGlmICghU3RyaW5nKHRhc2subGFiZWwgfHwgJycpLmluY2x1ZGVzKCdDUkVBVEVfVEFCTEVfVEFTSycpKSB7XG4gICAgICByZXR1cm4gbmV4dFN0YXRlO1xuICAgIH1cbiAgICBjb25zdCB0YWJsZXMgPSAoQXJyYXkuaXNBcnJheSh0YXNrLnBheWxvYWQpID8gdGFzay5wYXlsb2FkIDogW3Rhc2sucGF5bG9hZF0pLm1hcChwYXlsb2FkID0+IHtcbiAgICAgIGNvbnN0IHRhYmxlID0gbmV3IEtlcGxlclRhYmxlKHtpbmZvOiBwYXlsb2FkLmluZm8sIGNvbG9yOiBwYXlsb2FkLmNvbG9yLCAuLi5wYXlsb2FkLm9wdHN9KTtcbiAgICAgIHRhYmxlLnVwZGF0ZVNjaGVtYShwYXlsb2FkLmRhdGEpO1xuICAgICAgcmV0dXJuIHRhYmxlO1xuICAgIH0pO1xuICAgIHJldHVybiByZWR1Y2VWaXNTdGF0ZShuZXh0U3RhdGUsIHN1Y2NlZWRUYXNrV2l0aFZhbHVlcyh0YXNrLCB0YWJsZXMpKTtcbiAgfSwgc3RhdGUpO1xufVxuXG5kZXNjcmliZSgnZGF0YXNldCBvcHMgdmlzLXN0YXRlJywgKCkgPT4ge1xuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBkcmFpblRhc2tzRm9yVGVzdGluZygpO1xuICB9KTtcblxuICB0ZXN0KCdydW5Hcm91cEJ5IGFkZHMgYSBkZXJpdmVkIGRhdGFzZXQnLCAoKSA9PiB7XG4gICAgY29uc3QgY2l0aWVzID0gbWFrZVRhYmxlKFxuICAgICAgJ2NpdGllcycsXG4gICAgICBbXG4gICAgICAgIHtuYW1lOiAncmVnaW9uJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ30sXG4gICAgICAgIHtuYW1lOiAncG9wJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJ9XG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICBbJ3dlc3QnLCAxMF0sXG4gICAgICAgIFsnd2VzdCcsIDIwXSxcbiAgICAgICAgWydlYXN0JywgNDBdXG4gICAgICBdXG4gICAgKTtcbiAgICBsZXQgc3RhdGU6IFZpc1N0YXRlID0ge1xuICAgICAgLi4uSU5JVElBTF9WSVNfU1RBVEUsXG4gICAgICBkYXRhc2V0czoge2NpdGllc31cbiAgICB9O1xuXG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmFkZEdyb3VwQnkoJ2NpdGllcycpKTtcbiAgICBleHBlY3Qoc3RhdGUuZ3JvdXBCeXMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICBjb25zdCBvcElkID0gc3RhdGUuZ3JvdXBCeXNbMF0uaWQ7XG5cbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMuc2V0R3JvdXBCeUNvbmZpZyhvcElkLCB7XG4gICAgICAgIGZpZWxkTmFtZTogJ3JlZ2lvbicsXG4gICAgICAgIGFnZ3JlZ2F0aW9uczoge3BvcDogJ3N1bSd9XG4gICAgICB9KVxuICAgICk7XG4gICAgY29uc3QgcmVzdWx0SWQgPSBzdGF0ZS5ncm91cEJ5c1swXS5yZXN1bHRJZDtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMucnVuR3JvdXBCeShvcElkKSk7XG4gICAgc3RhdGUgPSBmbHVzaENyZWF0ZVRhYmxlVGFza3Moc3RhdGUpO1xuXG4gICAgZXhwZWN0KHN0YXRlLmdyb3VwQnlzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzW3Jlc3VsdElkXSkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0c1tyZXN1bHRJZF0ubWV0YWRhdGEuZGVyaXZlZERhdGFzZXQpLnRvRXF1YWwoe1xuICAgICAgdHlwZTogJ2dyb3VwQnknLFxuICAgICAgc291cmNlRGF0YUlkczogWydjaXRpZXMnXSxcbiAgICAgIG9wZXJhdGlvbklkOiBvcElkXG4gICAgfSk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzW3Jlc3VsdElkXS5kYXRhQ29udGFpbmVyLm51bVJvd3MoKSkudG9CZSgyKTtcbiAgfSk7XG5cbiAgdGVzdCgnZGVsZXRlIHBhcmVudCBrZWVwcyBkZXJpdmVkIGNoaWxkIHNuYXBzaG90JywgKCkgPT4ge1xuICAgIGNvbnN0IGNpdGllcyA9IG1ha2VUYWJsZShcbiAgICAgICdjaXRpZXMnLFxuICAgICAgW1xuICAgICAgICB7bmFtZTogJ3JlZ2lvbicsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmd9LFxuICAgICAgICB7bmFtZTogJ3BvcCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfVxuICAgICAgXSxcbiAgICAgIFtbJ3dlc3QnLCAxMF1dXG4gICAgKTtcbiAgICBsZXQgc3RhdGU6IFZpc1N0YXRlID0ge1xuICAgICAgLi4uSU5JVElBTF9WSVNfU1RBVEUsXG4gICAgICBkYXRhc2V0czoge2NpdGllc31cbiAgICB9O1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5hZGRHcm91cEJ5KCdjaXRpZXMnKSk7XG4gICAgY29uc3Qgb3AgPSBzdGF0ZS5ncm91cEJ5c1swXTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMuc2V0R3JvdXBCeUNvbmZpZyhvcC5pZCwge1xuICAgICAgICBmaWVsZE5hbWU6ICdyZWdpb24nLFxuICAgICAgICBhZ2dyZWdhdGlvbnM6IHtwb3A6ICdzdW0nfVxuICAgICAgfSlcbiAgICApO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5ydW5Hcm91cEJ5KG9wLmlkKSk7XG4gICAgc3RhdGUgPSBmbHVzaENyZWF0ZVRhYmxlVGFza3Moc3RhdGUpO1xuXG4gICAgZXhwZWN0KHN0YXRlLmdyb3VwQnlzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgZXhwZWN0KE9iamVjdC5rZXlzKHN0YXRlLmRhdGFzZXRzKSkudG9IYXZlTGVuZ3RoKDIpO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5yZW1vdmVEYXRhc2V0KCdjaXRpZXMnKSk7XG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzLmNpdGllcykudG9CZVVuZGVmaW5lZCgpO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0c1tvcC5yZXN1bHRJZF0pLnRvQmVUcnV0aHkoKTtcbiAgICBleHBlY3Qoc3RhdGUuZ3JvdXBCeXMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgfSk7XG5cbiAgdGVzdCgnYWRkR3JvdXBCeSB1c2VzIGEgc2hvcnQgcmFuZG9tIHJlc3VsdCBuYW1lJywgKCkgPT4ge1xuICAgIGNvbnN0IGNpdGllcyA9IG1ha2VUYWJsZShcbiAgICAgICdjaXRpZXMnLFxuICAgICAgW3tuYW1lOiAncmVnaW9uJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ31dLFxuICAgICAgW1snd2VzdCddXVxuICAgICk7XG4gICAgbGV0IHN0YXRlOiBWaXNTdGF0ZSA9IHtcbiAgICAgIC4uLklOSVRJQUxfVklTX1NUQVRFLFxuICAgICAgZGF0YXNldHM6IHtjaXRpZXN9XG4gICAgfTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMuYWRkR3JvdXBCeSgnY2l0aWVzJykpO1xuICAgIGV4cGVjdChzdGF0ZS5ncm91cEJ5c1swXS5yZXN1bHRMYWJlbCkudG9NYXRjaCgvXmdyb3VwLWJ5LVxcZHsyfSQvKTtcbiAgfSk7XG5cbiAgdGVzdCgnYWRkSm9pbiB1c2VzIGEgc2hvcnQgcmFuZG9tIHJlc3VsdCBuYW1lJywgKCkgPT4ge1xuICAgIGNvbnN0IGNpdGllcyA9IG1ha2VUYWJsZSgnY2l0aWVzJywgW3tuYW1lOiAnaWQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuc3RyaW5nfV0sIFtbJzEnXV0pO1xuICAgIGxldCBzdGF0ZTogVmlzU3RhdGUgPSB7XG4gICAgICAuLi5JTklUSUFMX1ZJU19TVEFURSxcbiAgICAgIGRhdGFzZXRzOiB7Y2l0aWVzfVxuICAgIH07XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmFkZEpvaW4oJ2NpdGllcycpKTtcbiAgICBleHBlY3Qoc3RhdGUuam9pbnNbMF0ucmVzdWx0TGFiZWwpLnRvTWF0Y2goL15qb2luLWRhdGFzZXQtXFxkezJ9JC8pO1xuICB9KTtcblxuICB0ZXN0KCdzZXRTcGF0aWFsSm9pbkNvbmZpZyB1cGRhdGVzIHRoZSBwcmVkaWNhdGUnLCAoKSA9PiB7XG4gICAgY29uc3QgcG9seXMgPSBtYWtlVGFibGUoJ3BvbHlzJywgW3tuYW1lOiAnZ2VvbScsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5nZW9qc29ufV0sIFtdKTtcbiAgICBsZXQgc3RhdGU6IFZpc1N0YXRlID0ge1xuICAgICAgLi4uSU5JVElBTF9WSVNfU1RBVEUsXG4gICAgICBkYXRhc2V0czoge3BvbHlzfVxuICAgIH07XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmFkZFNwYXRpYWxKb2luKCdwb2x5cycpKTtcbiAgICBjb25zdCBvcCA9IHN0YXRlLmpvaW5zWzBdO1xuICAgIGV4cGVjdChzdGF0ZS5qb2luc1swXS5wcmVkaWNhdGUpLnRvQmUoJ2ludGVyc2VjdHMnKTtcbiAgICBleHBlY3Qoc3RhdGUuam9pbnNbMF0ucmVzdWx0TGFiZWwpLnRvQmUoYHNwYXRpYWwtam9pbi0ke3N0YXRlLmpvaW5zWzBdLnJlc3VsdElkfWApO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoXG4gICAgICBzdGF0ZSxcbiAgICAgIFZpc1N0YXRlQWN0aW9ucy5zZXRTcGF0aWFsSm9pbkNvbmZpZyhvcC5pZCwge3ByZWRpY2F0ZTogJ3dpdGhpbid9KVxuICAgICk7XG4gICAgZXhwZWN0KHN0YXRlLmpvaW5zWzBdLnByZWRpY2F0ZSkudG9CZSgnd2l0aGluJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ2RlbGV0ZSBzcGF0aWFsIGpvaW4gc291cmNlIGtlZXBzIHJlc3VsdCBzbmFwc2hvdCcsICgpID0+IHtcbiAgICBjb25zdCBwb2x5Z29uID0ge1xuICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgY29vcmRpbmF0ZXM6IFtcbiAgICAgICAgW1xuICAgICAgICAgIFstMTAsIC0xMF0sXG4gICAgICAgICAgWzEwLCAtMTBdLFxuICAgICAgICAgIFsxMCwgMTBdLFxuICAgICAgICAgIFstMTAsIDEwXSxcbiAgICAgICAgICBbLTEwLCAtMTBdXG4gICAgICAgIF1cbiAgICAgIF1cbiAgICB9O1xuICAgIGNvbnN0IHBvbHlzID0gbWFrZVRhYmxlKFxuICAgICAgJ3BvbHlzJyxcbiAgICAgIFtcbiAgICAgICAge25hbWU6ICduYW1lJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnN0cmluZ30sXG4gICAgICAgIHtuYW1lOiAnZ2VvbScsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5nZW9qc29ufVxuICAgICAgXSxcbiAgICAgIFtbJ3dlc3QnLCBwb2x5Z29uXV1cbiAgICApO1xuICAgIGNvbnN0IHB0cyA9IG1ha2VUYWJsZShcbiAgICAgICdwdHMnLFxuICAgICAgW1xuICAgICAgICB7bmFtZTogJ2xhdCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5yZWFsfSxcbiAgICAgICAge25hbWU6ICdsbmcnLCB0eXBlOiBBTExfRklFTERfVFlQRVMucmVhbH0sXG4gICAgICAgIHtuYW1lOiAndmFsdWUnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuaW50ZWdlcn1cbiAgICAgIF0sXG4gICAgICBbWzAsIDAsIDEwXV1cbiAgICApO1xuICAgIGxldCBzdGF0ZTogVmlzU3RhdGUgPSB7XG4gICAgICAuLi5JTklUSUFMX1ZJU19TVEFURSxcbiAgICAgIGRhdGFzZXRzOiB7cG9seXMsIHB0c31cbiAgICB9O1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5hZGRTcGF0aWFsSm9pbigncG9seXMnKSk7XG4gICAgY29uc3Qgb3AgPSBzdGF0ZS5qb2luc1swXTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMuc2V0U3BhdGlhbEpvaW5Db25maWcob3AuaWQsIHtcbiAgICAgICAgcmlnaHREYXRhSWQ6ICdwdHMnLFxuICAgICAgICBsZWZ0R2VvOiB7a2luZDogJ2dlb2pzb24nLCBmaWVsZE5hbWU6ICdnZW9tJ30sXG4gICAgICAgIHJpZ2h0R2VvOiB7a2luZDogJ2xhdGxuZycsIGxhdEZpZWxkOiAnbGF0JywgbG5nRmllbGQ6ICdsbmcnfSxcbiAgICAgICAgYWdncmVnYXRpb25zOiB7dmFsdWU6ICdzdW0nfVxuICAgICAgfSlcbiAgICApO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5ydW5TcGF0aWFsSm9pbihvcC5pZCkpO1xuICAgIHN0YXRlID0gZmx1c2hDcmVhdGVUYWJsZVRhc2tzKHN0YXRlKTtcblxuICAgIGV4cGVjdChzdGF0ZS5qb2lucykudG9IYXZlTGVuZ3RoKDApO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0c1tvcC5yZXN1bHRJZF0pLnRvQmVUcnV0aHkoKTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMucmVtb3ZlRGF0YXNldCgncHRzJykpO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0cy5wdHMpLnRvQmVVbmRlZmluZWQoKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMucG9seXMpLnRvQmVUcnV0aHkoKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHNbb3AucmVzdWx0SWRdKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KHN0YXRlLmpvaW5zKS50b0hhdmVMZW5ndGgoMCk7XG4gIH0pO1xuXG4gIHRlc3QoJ3NhdmUvbG9hZCByb3VuZHRyaXAga2VlcHMgdGhlIGRlcml2ZWQgZGF0YXNldCBhbmQgZHJvcHMgdGhlIGZpbmlzaGVkIGdyb3VwIGJ5JywgKCkgPT4ge1xuICAgIGNvbnN0IGNpdGllcyA9IG1ha2VUYWJsZShcbiAgICAgICdjaXRpZXMnLFxuICAgICAgW1xuICAgICAgICB7bmFtZTogJ3JlZ2lvbicsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmd9LFxuICAgICAgICB7bmFtZTogJ3BvcCcsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfVxuICAgICAgXSxcbiAgICAgIFtbJ3dlc3QnLCAxMF1dXG4gICAgKTtcbiAgICBsZXQgc3RhdGU6IFZpc1N0YXRlID0ge1xuICAgICAgLi4uSU5JVElBTF9WSVNfU1RBVEUsXG4gICAgICBkYXRhc2V0czoge2NpdGllc31cbiAgICB9O1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5hZGRHcm91cEJ5KCdjaXRpZXMnKSk7XG4gICAgY29uc3Qgb3AgPSBzdGF0ZS5ncm91cEJ5c1swXTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKFxuICAgICAgc3RhdGUsXG4gICAgICBWaXNTdGF0ZUFjdGlvbnMuc2V0R3JvdXBCeUNvbmZpZyhvcC5pZCwge1xuICAgICAgICBmaWVsZE5hbWU6ICdyZWdpb24nLFxuICAgICAgICBhZ2dyZWdhdGlvbnM6IHtwb3A6ICdzdW0nfVxuICAgICAgfSlcbiAgICApO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5ydW5Hcm91cEJ5KG9wLmlkKSk7XG4gICAgc3RhdGUgPSBmbHVzaENyZWF0ZVRhYmxlVGFza3Moc3RhdGUpO1xuXG4gICAgY29uc3Qgc2F2ZWQgPSBTY2hlbWFNYW5hZ2VyLnNhdmUoe1xuICAgICAgdmlzU3RhdGU6IHN0YXRlLFxuICAgICAgbWFwU3RhdGU6IHt9LFxuICAgICAgbWFwU3R5bGU6IHt9LFxuICAgICAgdWlTdGF0ZToge31cbiAgICB9KTtcbiAgICBjb25zdCBkZXJpdmVkID0gc2F2ZWQuZGF0YXNldHMuZmluZChkYXRhc2V0ID0+IGRhdGFzZXQuZGF0YS5pZCA9PT0gb3AucmVzdWx0SWQpO1xuICAgIGNvbnN0IGRlcml2ZWRNZXRhID0gZGVyaXZlZD8uZGF0YS5tZXRhZGF0YSBhc1xuICAgICAgfCB7ZGVyaXZlZERhdGFzZXQ/OiB7dHlwZT86IHN0cmluZ30gfCBudWxsfVxuICAgICAgfCB1bmRlZmluZWQ7XG4gICAgZXhwZWN0KGRlcml2ZWRNZXRhPy5kZXJpdmVkRGF0YXNldD8udHlwZSkudG9CZSgnZ3JvdXBCeScpO1xuICAgIGV4cGVjdChzYXZlZC5jb25maWcuY29uZmlnLnZpc1N0YXRlLmdyb3VwQnlzID8/IFtdKS50b0hhdmVMZW5ndGgoMCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdzdWl0YWJpbGl0eSB2aXMtc3RhdGUnLCAoKSA9PiB7XG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGRyYWluVGFza3NGb3JUZXN0aW5nKCk7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHNpdGVTdGF0ZSgpOiBWaXNTdGF0ZSB7XG4gICAgY29uc3Qgc2l0ZXMgPSBtYWtlVGFibGUoXG4gICAgICAnc2l0ZXMnLFxuICAgICAgW1xuICAgICAgICB7bmFtZTogJ25hbWUnLCB0eXBlOiBBTExfRklFTERfVFlQRVMuc3RyaW5nfSxcbiAgICAgICAge25hbWU6ICdsYXQnLCB0eXBlOiBBTExfRklFTERfVFlQRVMucmVhbH0sXG4gICAgICAgIHtuYW1lOiAnbG5nJywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLnJlYWx9LFxuICAgICAgICB7bmFtZTogJ2FjY2VzcycsIHR5cGU6IEFMTF9GSUVMRF9UWVBFUy5pbnRlZ2VyfSxcbiAgICAgICAge25hbWU6ICdjb3N0JywgdHlwZTogQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJ9XG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICBbJ2EnLCAwLCAwLCAwLCAxMDBdLFxuICAgICAgICBbJ2InLCAxLCAxLCA1LCAyMDBdLFxuICAgICAgICBbJ2MnLCAyLCAyLCAxMCwgMzAwXVxuICAgICAgXVxuICAgICk7XG4gICAgcmV0dXJuIHsuLi5JTklUSUFMX1ZJU19TVEFURSwgZGF0YXNldHM6IHtzaXRlc319O1xuICB9XG5cbiAgdGVzdCgnYWRkU3VpdGFiaWxpdHkgc2VlZHMgbnVtZXJpYyB3ZWlnaHRzIGFuZCBhIHNob3J0IHJhbmRvbSByZXN1bHQgbmFtZScsICgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHNpdGVTdGF0ZSgpLCBWaXNTdGF0ZUFjdGlvbnMuYWRkU3VpdGFiaWxpdHkoJ3NpdGVzJykpO1xuXG4gICAgZXhwZWN0KHN0YXRlLnN1aXRhYmlsaXRpZXMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICBjb25zdCBvcCA9IHN0YXRlLnN1aXRhYmlsaXRpZXNbMF07XG4gICAgZXhwZWN0KG9wLndlaWdodHMpLnRvRXF1YWwoe2xhdDogMSwgbG5nOiAxLCBhY2Nlc3M6IDEsIGNvc3Q6IDF9KTtcbiAgICBleHBlY3Qob3Aud2VpZ2h0U3RhbmRhcmRpemF0aW9uKS50b0JlKCdub3JtYWxpemUnKTtcbiAgICBleHBlY3Qob3AuZGF0YVN0YW5kYXJkaXphdGlvbikudG9CZSgncmFuZ2UnKTtcbiAgICBleHBlY3Qob3Aub3V0cHV0RmllbGROYW1lKS50b0JlKCdzY29yZScpO1xuICAgIGV4cGVjdChvcC5yZXN1bHRMYWJlbCkudG9NYXRjaCgvXnN1aXRhYmlsaXR5LVxcZHsyfSQvKTtcbiAgfSk7XG5cbiAgdGVzdCgnb3BlbmluZyBhIHN1aXRhYmlsaXR5IG9wIGNsb3NlcyBhbiBvcGVuIGdyb3VwIGJ5JywgKCkgPT4ge1xuICAgIGxldCBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHNpdGVTdGF0ZSgpLCBWaXNTdGF0ZUFjdGlvbnMuYWRkR3JvdXBCeSgnc2l0ZXMnKSk7XG4gICAgZXhwZWN0KHN0YXRlLmdyb3VwQnlzWzBdLmlzQ29uZmlnQWN0aXZlKS50b0JlKHRydWUpO1xuXG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmFkZFN1aXRhYmlsaXR5KCdzaXRlcycpKTtcbiAgICBleHBlY3Qoc3RhdGUuZ3JvdXBCeXNbMF0uaXNDb25maWdBY3RpdmUpLnRvQmUoZmFsc2UpO1xuICAgIGV4cGVjdChzdGF0ZS5zdWl0YWJpbGl0aWVzWzBdLmlzQ29uZmlnQWN0aXZlKS50b0JlKHRydWUpO1xuXG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLmFkZEdyb3VwQnkoJ3NpdGVzJykpO1xuICAgIGV4cGVjdChzdGF0ZS5zdWl0YWJpbGl0aWVzWzBdLmlzQ29uZmlnQWN0aXZlKS50b0JlKGZhbHNlKTtcbiAgfSk7XG5cbiAgdGVzdCgncnVuU3VpdGFiaWxpdHkgYWRkcyBhIHNjb3JlZCBkYXRhc2V0IGFuZCBhIGRlZmF1bHQgbGF5ZXInLCAoKSA9PiB7XG4gICAgbGV0IHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc2l0ZVN0YXRlKCksIFZpc1N0YXRlQWN0aW9ucy5hZGRTdWl0YWJpbGl0eSgnc2l0ZXMnKSk7XG4gICAgY29uc3Qgb3AgPSBzdGF0ZS5zdWl0YWJpbGl0aWVzWzBdO1xuXG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShcbiAgICAgIHN0YXRlLFxuICAgICAgVmlzU3RhdGVBY3Rpb25zLnNldFN1aXRhYmlsaXR5Q29uZmlnKG9wLmlkLCB7d2VpZ2h0czoge2FjY2VzczogMSwgY29zdDogMX19KVxuICAgICk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLnJ1blN1aXRhYmlsaXR5KG9wLmlkKSk7XG4gICAgc3RhdGUgPSBmbHVzaENyZWF0ZVRhYmxlVGFza3Moc3RhdGUpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gc3RhdGUuZGF0YXNldHNbb3AucmVzdWx0SWRdO1xuICAgIGV4cGVjdChyZXN1bHQpLnRvQmVUcnV0aHkoKTtcbiAgICBleHBlY3QocmVzdWx0Lm1ldGFkYXRhLmRlcml2ZWREYXRhc2V0KS50b0VxdWFsKHtcbiAgICAgIHR5cGU6ICdzdWl0YWJpbGl0eScsXG4gICAgICBzb3VyY2VEYXRhSWRzOiBbJ3NpdGVzJ10sXG4gICAgICBvcGVyYXRpb25JZDogb3AuaWRcbiAgICB9KTtcbiAgICBleHBlY3QocmVzdWx0LmZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQubmFtZSkpLnRvQ29udGFpbignc2NvcmUnKTtcbiAgICBleHBlY3Qoc3RhdGUuc3VpdGFiaWxpdGllc1swXS5pc0NvbmZpZ0FjdGl2ZSkudG9CZShmYWxzZSk7XG5cbiAgICBjb25zdCBsYXllciA9IHN0YXRlLmxheWVycy5maW5kKGl0ZW0gPT4gaXRlbS5jb25maWcuZGF0YUlkID09PSBvcC5yZXN1bHRJZCk7XG4gICAgZXhwZWN0KGxheWVyKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KGxheWVyPy5jb25maWcuY29sb3JGaWVsZD8ubmFtZSkudG9CZSgnc2NvcmUnKTtcbiAgfSk7XG5cbiAgdGVzdCgncnVubmluZyB3aXRob3V0IGEgd2VpZ2h0ZWQgZmllbGQgc3VyZmFjZXMgYW4gZXJyb3IgaW5zdGVhZCBvZiBhIGRhdGFzZXQnLCAoKSA9PiB7XG4gICAgbGV0IHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc2l0ZVN0YXRlKCksIFZpc1N0YXRlQWN0aW9ucy5hZGRTdWl0YWJpbGl0eSgnc2l0ZXMnKSk7XG4gICAgY29uc3Qgb3AgPSBzdGF0ZS5zdWl0YWJpbGl0aWVzWzBdO1xuXG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLnNldFN1aXRhYmlsaXR5Q29uZmlnKG9wLmlkLCB7d2VpZ2h0czoge319KSk7XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLnJ1blN1aXRhYmlsaXR5KG9wLmlkKSk7XG5cbiAgICBleHBlY3Qoc3RhdGUuc3VpdGFiaWxpdGllc1swXS5lcnJvcikudG9CZSgnU2VsZWN0IGF0IGxlYXN0IG9uZSBmaWVsZCB0byBzY29yZScpO1xuICAgIGV4cGVjdChzdGF0ZS5zdWl0YWJpbGl0aWVzWzBdLmlzQ29uZmlnQWN0aXZlKS50b0JlKHRydWUpO1xuICAgIGV4cGVjdChzdGF0ZS5kYXRhc2V0c1tvcC5yZXN1bHRJZF0pLnRvQmVVbmRlZmluZWQoKTtcbiAgfSk7XG5cbiAgdGVzdCgnZGVsZXRpbmcgdGhlIHNvdXJjZSBkYXRhc2V0IGRyb3BzIHRoZSBvcCBidXQga2VlcHMgdGhlIHNjb3JlZCBzbmFwc2hvdCcsICgpID0+IHtcbiAgICBsZXQgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzaXRlU3RhdGUoKSwgVmlzU3RhdGVBY3Rpb25zLmFkZFN1aXRhYmlsaXR5KCdzaXRlcycpKTtcbiAgICBjb25zdCBvcCA9IHN0YXRlLnN1aXRhYmlsaXRpZXNbMF07XG4gICAgc3RhdGUgPSByZWR1Y2VWaXNTdGF0ZShzdGF0ZSwgVmlzU3RhdGVBY3Rpb25zLnJ1blN1aXRhYmlsaXR5KG9wLmlkKSk7XG4gICAgc3RhdGUgPSBmbHVzaENyZWF0ZVRhYmxlVGFza3Moc3RhdGUpO1xuXG4gICAgZXhwZWN0KHN0YXRlLmRhdGFzZXRzW29wLnJlc3VsdElkXSkudG9CZVRydXRoeSgpO1xuICAgIHN0YXRlID0gcmVkdWNlVmlzU3RhdGUoc3RhdGUsIFZpc1N0YXRlQWN0aW9ucy5yZW1vdmVEYXRhc2V0KCdzaXRlcycpKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHMuc2l0ZXMpLnRvQmVVbmRlZmluZWQoKTtcbiAgICBleHBlY3Qoc3RhdGUuZGF0YXNldHNbb3AucmVzdWx0SWRdKS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KHN0YXRlLnN1aXRhYmlsaXRpZXMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgfSk7XG5cbiAgdGVzdCgndGhlIG9wIGNvbmZpZyBzdGF5cyBvdXQgb2Ygc2F2ZWQgbWFwcyB3aGlsZSB0aGUgZGVyaXZlZCBkYXRhc2V0IHBlcnNpc3RzJywgKCkgPT4ge1xuICAgIGxldCBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHNpdGVTdGF0ZSgpLCBWaXNTdGF0ZUFjdGlvbnMuYWRkU3VpdGFiaWxpdHkoJ3NpdGVzJykpO1xuICAgIGNvbnN0IG9wID0gc3RhdGUuc3VpdGFiaWxpdGllc1swXTtcbiAgICBzdGF0ZSA9IHJlZHVjZVZpc1N0YXRlKHN0YXRlLCBWaXNTdGF0ZUFjdGlvbnMucnVuU3VpdGFiaWxpdHkob3AuaWQpKTtcbiAgICBzdGF0ZSA9IGZsdXNoQ3JlYXRlVGFibGVUYXNrcyhzdGF0ZSk7XG5cbiAgICBjb25zdCBzYXZlZCA9IFNjaGVtYU1hbmFnZXIuc2F2ZSh7XG4gICAgICB2aXNTdGF0ZTogc3RhdGUsXG4gICAgICBtYXBTdGF0ZToge30sXG4gICAgICBtYXBTdHlsZToge30sXG4gICAgICB1aVN0YXRlOiB7fVxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHNhdmVkLmNvbmZpZy5jb25maWcudmlzU3RhdGUpLm5vdC50b0hhdmVQcm9wZXJ0eSgnc3VpdGFiaWxpdGllcycpO1xuICAgIGNvbnN0IGRlcml2ZWQgPSBzYXZlZC5kYXRhc2V0cy5maW5kKGRhdGFzZXQgPT4gZGF0YXNldC5kYXRhLmlkID09PSBvcC5yZXN1bHRJZCk7XG4gICAgY29uc3QgZGVyaXZlZE1ldGEgPSBkZXJpdmVkPy5kYXRhLm1ldGFkYXRhIGFzXG4gICAgICB8IHtkZXJpdmVkRGF0YXNldD86IHt0eXBlPzogc3RyaW5nfSB8IG51bGx9XG4gICAgICB8IHVuZGVmaW5lZDtcbiAgICBleHBlY3QoZGVyaXZlZE1ldGE/LmRlcml2ZWREYXRhc2V0Py50eXBlKS50b0JlKCdzdWl0YWJpbGl0eScpO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQTtBQUNBOztBQUVBLFNBQVFBLGVBQWUsUUFBTyxzQkFBc0I7QUFDcEQsU0FBUUMsZUFBZSxRQUFPLG9CQUFvQjtBQUNsRCxTQUFRQyxXQUFXLFFBQU8sa0JBQWtCO0FBQzVDLE9BQU9DLGFBQWEsTUFBa0Isb0JBQW9C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
|