kepler.gl 3.2.0 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/ai-assistant/src/config/models.d.ts +8 -0
- package/dist/src/components/src/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +3 -2
- package/dist/src/localization/src/translations/en.d.ts +1 -0
- package/package.json +2 -2
- package/src/actions/package.json +8 -8
- package/src/ai-assistant/dist/components/ai-assistant-config.js +40 -24
- package/src/ai-assistant/dist/config/models.d.ts +8 -0
- package/src/ai-assistant/dist/config/models.js +16 -8
- package/src/ai-assistant/dist/localization.js +7 -7
- package/src/ai-assistant/dist/reducers/index.js +3 -2
- package/src/ai-assistant/package.json +16 -16
- package/src/ai-assistant/src/components/ai-assistant-config.tsx +39 -28
- package/src/ai-assistant/src/config/models.ts +37 -25
- package/src/ai-assistant/src/localization.ts +6 -6
- package/src/ai-assistant/src/reducers/index.ts +2 -1
- package/src/cloud-providers/package.json +2 -2
- package/src/common-utils/package.json +3 -3
- package/src/components/dist/common/color-legend.js +8 -8
- package/src/components/dist/common/data-table/index.js +13 -9
- package/src/components/dist/map/map-legend-panel.js +10 -4
- package/src/components/dist/map/map-legend.js +2 -2
- package/src/components/dist/plot-container.js +4 -2
- package/src/components/dist/side-panel/interaction-panel/interaction-panel.js +2 -2
- package/src/components/dist/side-panel/layer-panel/color-breaks-panel.js +11 -2
- package/src/components/dist/side-panel/layer-panel/color-scale-selector.js +65 -12
- package/src/components/dist/side-panel/layer-panel/custom-palette.js +18 -7
- package/src/components/dist/side-panel/layer-panel/vector-tile-layer-configurator.d.ts +3 -2
- package/src/components/dist/side-panel/layer-panel/vector-tile-layer-configurator.js +18 -4
- package/src/components/package.json +15 -15
- package/src/components/src/common/color-legend.tsx +15 -2
- package/src/components/src/common/data-table/index.tsx +1 -1
- package/src/components/src/map/map-legend-panel.tsx +21 -2
- package/src/components/src/map/map-legend.tsx +1 -1
- package/src/components/src/plot-container.tsx +2 -1
- package/src/components/src/side-panel/interaction-panel/interaction-panel.tsx +1 -0
- package/src/components/src/side-panel/layer-panel/color-breaks-panel.tsx +14 -3
- package/src/components/src/side-panel/layer-panel/color-scale-selector.tsx +62 -8
- package/src/components/src/side-panel/layer-panel/custom-palette.tsx +11 -5
- package/src/components/src/side-panel/layer-panel/vector-tile-layer-configurator.tsx +19 -2
- package/src/constants/dist/default-settings.js +1 -1
- package/src/constants/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/b3/bd/e4f91c7af9e320b979e29ad3b9e3a4dfcd61e4a09d6e4579104c40dcace7651b443fdd6d7ff5d947ed6c9df2c0bbbcc76a2ea86d6398e4945257eeb80dd5 +1 -0
- package/src/constants/node_modules/.cache/terser-webpack-plugin/index-v5/b4/c5/a43653dff3b380f7b0793080a57c980a9a136764933e79454de0fe43a5ca +2 -0
- package/src/constants/package.json +2 -2
- package/src/constants/umd/keplergl.min.js +1 -1
- package/src/deckgl-arrow-layers/package.json +2 -2
- package/src/deckgl-layers/package.json +4 -4
- package/src/duckdb/dist/table/duckdb-table-utils.js +3 -2
- package/src/duckdb/package.json +6 -6
- package/src/duckdb/src/table/duckdb-table-utils.ts +5 -1
- package/src/effects/package.json +5 -5
- package/src/layers/dist/icon-layer/icon-layer.js +12 -2
- package/src/layers/dist/vector-tile/common-tile/tile-dataset.d.ts +4 -0
- package/src/layers/dist/vector-tile/common-tile/tile-dataset.js +10 -1
- package/src/layers/dist/vector-tile/vector-tile-layer.d.ts +11 -0
- package/src/layers/dist/vector-tile/vector-tile-layer.js +113 -7
- package/src/layers/package.json +9 -9
- package/src/layers/src/icon-layer/icon-layer.ts +49 -38
- package/src/layers/src/vector-tile/common-tile/tile-dataset.ts +7 -0
- package/src/layers/src/vector-tile/vector-tile-layer.ts +110 -6
- package/src/localization/dist/translations/en.d.ts +1 -0
- package/src/localization/dist/translations/en.js +2 -1
- package/src/localization/package.json +1 -1
- package/src/localization/src/translations/en.ts +1 -0
- package/src/processors/dist/data-processor.js +15 -5
- package/src/processors/package.json +7 -7
- package/src/processors/src/data-processor.ts +19 -4
- package/src/reducers/package.json +16 -16
- package/src/schemas/package.json +7 -7
- package/src/styles/node_modules/.cache/terser-webpack-plugin/content-v2/sha512/52/82/28cacf6fd462b779c22675964b655bf3a9f3ce9ec3c9b141a401a5bf90cb7d904ac65ab8e484570130b12771af0a0d5bab20e6976cfa773666763e046a6a +1 -0
- package/src/styles/node_modules/.cache/terser-webpack-plugin/index-v5/56/db/b5a812c56b0d1dcdcd33da37e464062a19c8752cb2296603dc72d2c54d31 +2 -0
- package/src/styles/package.json +2 -2
- package/src/styles/umd/keplergl.min.js +1 -1
- package/src/table/package.json +5 -5
- package/src/tasks/package.json +2 -2
- package/src/types/package.json +1 -1
- package/src/utils/package.json +4 -4
- package/umd/keplergl.min.js +1366 -1333
|
@@ -5,10 +5,11 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports["default"] = exports.MAX_CACHE_SIZE_MOBILE = exports.DEFAULT_STROKE_WIDTH = exports.DEFAULT_HIGHLIGHT_STROKE_COLOR = exports.DEFAULT_HIGHLIGHT_FILL_COLOR = void 0;
|
|
8
|
+
exports["default"] = exports.UUID_CANDIDATES = exports.MAX_CACHE_SIZE_MOBILE = exports.DEFAULT_STROKE_WIDTH = exports.DEFAULT_HIGHLIGHT_STROKE_COLOR = exports.DEFAULT_HIGHLIGHT_FILL_COLOR = void 0;
|
|
9
9
|
exports.tileLayerBoundsLayer = tileLayerBoundsLayer;
|
|
10
10
|
exports.vectorTileVisConfigs = void 0;
|
|
11
11
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
13
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
14
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
14
15
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
@@ -22,6 +23,7 @@ var _typed = require("@deck.gl/layers/typed");
|
|
|
22
23
|
var _mvt = require("@loaders.gl/mvt");
|
|
23
24
|
var _pmtiles = require("@loaders.gl/pmtiles");
|
|
24
25
|
var _constants = _interopRequireDefault(require("@luma.gl/constants"));
|
|
26
|
+
var _typed2 = require("@deck.gl/extensions/typed");
|
|
25
27
|
var _commonUtils = require("@kepler.gl/common-utils");
|
|
26
28
|
var _constants2 = require("@kepler.gl/constants");
|
|
27
29
|
var _table = require("@kepler.gl/table");
|
|
@@ -33,6 +35,9 @@ var _tileDataset = _interopRequireDefault(require("./common-tile/tile-dataset"))
|
|
|
33
35
|
var _tileUtils = require("./common-tile/tile-utils");
|
|
34
36
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
35
37
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
38
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
39
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
40
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
36
41
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
37
42
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
38
43
|
function _superPropGet(t, e, r, o) { var p = (0, _get2["default"])((0, _getPrototypeOf2["default"])(1 & o ? t.prototype : t), e, r); return 2 & o ? function (t) { return p.apply(r, t); } : p; }
|
|
@@ -43,7 +48,7 @@ var DEFAULT_HIGHLIGHT_FILL_COLOR = exports.DEFAULT_HIGHLIGHT_FILL_COLOR = [252,
|
|
|
43
48
|
var DEFAULT_HIGHLIGHT_STROKE_COLOR = exports.DEFAULT_HIGHLIGHT_STROKE_COLOR = [252, 242, 26, 255];
|
|
44
49
|
var MAX_CACHE_SIZE_MOBILE = exports.MAX_CACHE_SIZE_MOBILE = 1; // Minimize caching, visible tiles will always be loaded
|
|
45
50
|
var DEFAULT_STROKE_WIDTH = exports.DEFAULT_STROKE_WIDTH = 1;
|
|
46
|
-
|
|
51
|
+
var UUID_CANDIDATES = exports.UUID_CANDIDATES = ['ufid', 'UFID', 'id', 'ID', 'fid', 'FID', 'objectid', 'OBJECTID', 'gid', 'GID', 'feature_id', 'FEATURE_ID', '_id'];
|
|
47
52
|
/**
|
|
48
53
|
* Type for transformRequest returned parameters.
|
|
49
54
|
*/
|
|
@@ -218,7 +223,8 @@ var VectorTileLayer = exports["default"] = /*#__PURE__*/function (_AbstractTileL
|
|
|
218
223
|
}),
|
|
219
224
|
radiusField: null,
|
|
220
225
|
radiusDomain: [0, 1],
|
|
221
|
-
radiusScale: _constants2.SCALE_TYPES.linear
|
|
226
|
+
radiusScale: _constants2.SCALE_TYPES.linear,
|
|
227
|
+
uniqueIdField: null
|
|
222
228
|
});
|
|
223
229
|
}
|
|
224
230
|
}, {
|
|
@@ -438,6 +444,24 @@ var VectorTileLayer = exports["default"] = /*#__PURE__*/function (_AbstractTileL
|
|
|
438
444
|
if (data.tileSource) {
|
|
439
445
|
var _data$tileSource, _objectHovered$source;
|
|
440
446
|
var hoveredObject = this.hasHoveredObject(objectHovered);
|
|
447
|
+
|
|
448
|
+
// Resolve unique id property: use configured uniqueIdField if set, otherwise infer
|
|
449
|
+
var uniqueIdProperty;
|
|
450
|
+
var highlightedFeatureId;
|
|
451
|
+
if (hoveredObject && hoveredObject.properties) {
|
|
452
|
+
var _this$config$uniqueId;
|
|
453
|
+
uniqueIdProperty = (_this$config$uniqueId = this.config.uniqueIdField) !== null && _this$config$uniqueId !== void 0 ? _this$config$uniqueId : UUID_CANDIDATES.find(function (k) {
|
|
454
|
+
return hoveredObject.properties && k in hoveredObject.properties;
|
|
455
|
+
});
|
|
456
|
+
highlightedFeatureId = uniqueIdProperty ? hoveredObject.properties[uniqueIdProperty] : hoveredObject.id;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
// Build per-tile clipped overlay to draw only the outer stroke of highlighted feature per tile
|
|
460
|
+
var perTileOverlays = this._getPerTileOverlays(hoveredObject, {
|
|
461
|
+
defaultLayerProps: defaultLayerProps,
|
|
462
|
+
visConfig: visConfig,
|
|
463
|
+
uniqueIdProperty: uniqueIdProperty
|
|
464
|
+
});
|
|
441
465
|
var layers = [new _mvtLayer.MVTLayer(_objectSpread(_objectSpread(_objectSpread({}, defaultLayerProps), data), {}, {
|
|
442
466
|
onViewportLoad: this.onViewportLoad,
|
|
443
467
|
data: data.tilesetDataUrl,
|
|
@@ -451,7 +475,8 @@ var VectorTileLayer = exports["default"] = /*#__PURE__*/function (_AbstractTileL
|
|
|
451
475
|
extruded: visConfig.enable3d,
|
|
452
476
|
stroked: visConfig.stroked,
|
|
453
477
|
// TODO: this is hard coded, design a UI to allow user assigned unique property id
|
|
454
|
-
|
|
478
|
+
uniqueIdProperty: uniqueIdProperty,
|
|
479
|
+
highlightedFeatureId: highlightedFeatureId,
|
|
455
480
|
renderSubLayers: this.renderSubLayers,
|
|
456
481
|
// when radiusUnits is meter
|
|
457
482
|
getPointRadiusScaleByZoom: (0, _tileUtils.getPropertyByZoom)(visConfig.radiusByZoom, visConfig.radius),
|
|
@@ -529,7 +554,7 @@ var VectorTileLayer = exports["default"] = /*#__PURE__*/function (_AbstractTileL
|
|
|
529
554
|
loadOptions: {
|
|
530
555
|
mvt: (0, _constants2.getLoaderOptions)().mvt
|
|
531
556
|
}
|
|
532
|
-
}))].concat((0, _toConsumableArray2["default"])(hoveredObject ? [new _typed.GeoJsonLayer(_objectSpread(_objectSpread(_objectSpread({}, (_objectHovered$source = objectHovered.sourceLayer) === null || _objectHovered$source === void 0 ? void 0 : _objectHovered$source.props), this.getDefaultHoverLayerProps()), {}, {
|
|
557
|
+
}))].concat((0, _toConsumableArray2["default"])(hoveredObject && !uniqueIdProperty && !highlightedFeatureId ? [new _typed.GeoJsonLayer(_objectSpread(_objectSpread(_objectSpread({}, (_objectHovered$source = objectHovered.sourceLayer) === null || _objectHovered$source === void 0 ? void 0 : _objectHovered$source.props), this.getDefaultHoverLayerProps()), {}, {
|
|
533
558
|
visible: true,
|
|
534
559
|
wrapLongitude: false,
|
|
535
560
|
data: [hoveredObject],
|
|
@@ -539,11 +564,92 @@ var VectorTileLayer = exports["default"] = /*#__PURE__*/function (_AbstractTileL
|
|
|
539
564
|
lineWidthUnits: 'pixels',
|
|
540
565
|
stroked: true,
|
|
541
566
|
filled: true
|
|
542
|
-
}))] : []));
|
|
567
|
+
}))] : []), (0, _toConsumableArray2["default"])(perTileOverlays));
|
|
543
568
|
return layers;
|
|
544
569
|
}
|
|
545
570
|
return [];
|
|
546
571
|
}
|
|
572
|
+
|
|
573
|
+
/**
|
|
574
|
+
* Build per-tile clipped overlay to draw only the outer stroke of highlighted feature per tile
|
|
575
|
+
* @param hoveredObject
|
|
576
|
+
*/
|
|
577
|
+
}, {
|
|
578
|
+
key: "_getPerTileOverlays",
|
|
579
|
+
value: function _getPerTileOverlays(hoveredObject, options) {
|
|
580
|
+
var _this2 = this;
|
|
581
|
+
var perTileOverlays = [];
|
|
582
|
+
if (hoveredObject) {
|
|
583
|
+
try {
|
|
584
|
+
var _this$tileDataset, _this$tileDataset$get, _hoveredObject$proper;
|
|
585
|
+
var tiles = ((_this$tileDataset = this.tileDataset) === null || _this$tileDataset === void 0 || (_this$tileDataset$get = _this$tileDataset.getTiles) === null || _this$tileDataset$get === void 0 ? void 0 : _this$tileDataset$get.call(_this$tileDataset)) || [];
|
|
586
|
+
// Derive hovered id from hoveredObject
|
|
587
|
+
var hoveredId = options.uniqueIdProperty ? String(hoveredObject === null || hoveredObject === void 0 || (_hoveredObject$proper = hoveredObject.properties) === null || _hoveredObject$proper === void 0 ? void 0 : _hoveredObject$proper[options.uniqueIdProperty]) : String(hoveredObject === null || hoveredObject === void 0 ? void 0 : hoveredObject.id);
|
|
588
|
+
|
|
589
|
+
// Group matched fragments by tile id
|
|
590
|
+
var byTile = {};
|
|
591
|
+
var _iterator = _createForOfIteratorHelper(tiles),
|
|
592
|
+
_step;
|
|
593
|
+
try {
|
|
594
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
595
|
+
var tile = _step.value;
|
|
596
|
+
var content = tile === null || tile === void 0 ? void 0 : tile.content;
|
|
597
|
+
var features = (content === null || content === void 0 ? void 0 : content.shape) === 'geojson-table' ? content.features : content;
|
|
598
|
+
if (!Array.isArray(features)) continue;
|
|
599
|
+
var tileId = tile.id;
|
|
600
|
+
var _iterator2 = _createForOfIteratorHelper(features),
|
|
601
|
+
_step2;
|
|
602
|
+
try {
|
|
603
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
604
|
+
var _f$properties;
|
|
605
|
+
var f = _step2.value;
|
|
606
|
+
var fid = options.uniqueIdProperty ? (_f$properties = f.properties) === null || _f$properties === void 0 ? void 0 : _f$properties[options.uniqueIdProperty] : f.id;
|
|
607
|
+
if (fid !== undefined && String(fid) === hoveredId) {
|
|
608
|
+
(byTile[tileId] = byTile[tileId] || []).push(f);
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
} catch (err) {
|
|
612
|
+
_iterator2.e(err);
|
|
613
|
+
} finally {
|
|
614
|
+
_iterator2.f();
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
} catch (err) {
|
|
618
|
+
_iterator.e(err);
|
|
619
|
+
} finally {
|
|
620
|
+
_iterator.f();
|
|
621
|
+
}
|
|
622
|
+
perTileOverlays = Object.entries(byTile).map(function (_ref2) {
|
|
623
|
+
var _ref3 = (0, _slicedToArray2["default"])(_ref2, 2),
|
|
624
|
+
tileId = _ref3[0],
|
|
625
|
+
feats = _ref3[1];
|
|
626
|
+
var tile = tiles.find(function (t) {
|
|
627
|
+
return String(t.id) === String(tileId);
|
|
628
|
+
});
|
|
629
|
+
var bounds = tile !== null && tile !== void 0 && tile.boundingBox ? [].concat((0, _toConsumableArray2["default"])(tile.boundingBox[0]), (0, _toConsumableArray2["default"])(tile.boundingBox[1])) : undefined;
|
|
630
|
+
return new _typed.GeoJsonLayer(_objectSpread(_objectSpread({}, _this2.getDefaultHoverLayerProps()), {}, {
|
|
631
|
+
id: "".concat(options.defaultLayerProps.id, "-hover-outline-").concat(tileId),
|
|
632
|
+
visible: true,
|
|
633
|
+
wrapLongitude: false,
|
|
634
|
+
data: feats,
|
|
635
|
+
getLineColor: DEFAULT_HIGHLIGHT_STROKE_COLOR,
|
|
636
|
+
getFillColor: [0, 0, 0, 0],
|
|
637
|
+
getLineWidth: options.visConfig.strokeWidth + 1,
|
|
638
|
+
lineWidthUnits: 'pixels',
|
|
639
|
+
lineJointRounded: true,
|
|
640
|
+
lineCapRounded: true,
|
|
641
|
+
stroked: true,
|
|
642
|
+
filled: false,
|
|
643
|
+
clipBounds: bounds,
|
|
644
|
+
extensions: bounds ? [new _typed2.ClipExtension()] : []
|
|
645
|
+
}));
|
|
646
|
+
});
|
|
647
|
+
} catch (_unused) {
|
|
648
|
+
perTileOverlays = [];
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
return perTileOverlays;
|
|
652
|
+
}
|
|
547
653
|
}], [{
|
|
548
654
|
key: "findDefaultLayerProps",
|
|
549
655
|
value: function findDefaultLayerProps(dataset) {
|
|
@@ -556,4 +662,4 @@ var VectorTileLayer = exports["default"] = /*#__PURE__*/function (_AbstractTileL
|
|
|
556
662
|
}
|
|
557
663
|
}]);
|
|
558
664
|
}(_abstractTileLayer["default"]);
|
|
559
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwiX212dCIsIl9wbXRpbGVzIiwiX2NvbnN0YW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29tbW9uVXRpbHMiLCJfY29uc3RhbnRzMiIsIl90YWJsZSIsIl9tdnRMYXllciIsIl92ZWN0b3JUaWxlSWNvbiIsIl9iYXNlTGF5ZXIiLCJfYWJzdHJhY3RUaWxlTGF5ZXIiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl90aWxlRGF0YXNldCIsIl90aWxlVXRpbHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY2FsbFN1cGVyIiwibyIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIl9zdXBlclByb3BHZXQiLCJwIiwiX2dldDIiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJERUZBVUxUX0hJR0hMSUdIVF9GSUxMX0NPTE9SIiwiZXhwb3J0cyIsIkRFRkFVTFRfSElHSExJR0hUX1NUUk9LRV9DT0xPUiIsIk1BWF9DQUNIRV9TSVpFX01PQklMRSIsIkRFRkFVTFRfU1RST0tFX1dJRFRIIiwidmVjdG9yVGlsZVZpc0NvbmZpZ3MiLCJjb21tb25UaWxlVmlzQ29uZmlncyIsInN0cm9rZWQiLCJMQVlFUl9WSVNfQ09ORklHUyIsImRlZmF1bHRWYWx1ZSIsInN0cm9rZUNvbG9yU2NhbGUiLCJzdHJva2VDb2xvclJhbmdlIiwic2l6ZVJhbmdlIiwic3Ryb2tlV2lkdGgiLCJ0aGlja25lc3MiLCJwcm9wZXJ0eSIsImFsbG93Q3VzdG9tVmFsdWUiLCJyYWRpdXNTY2FsZSIsInJhZGl1c1JhbmdlIiwidHlwZSIsImlzUmFuZ2VkIiwicmFuZ2UiLCJzdGVwIiwidGlsZUxheWVyQm91bmRzTGF5ZXIiLCJpZCIsInByb3BzIiwiYm91bmRzIiwiZGF0YSIsInBhdGgiLCJsYXllciIsIlBhdGhMYXllciIsImNvbmNhdCIsImdldFBhdGgiLCJkIiwiZ2V0Q29sb3IiLCJnZXRXaWR0aCIsIndpZHRoVW5pdHMiLCJwaWNrYWJsZSIsIlZlY3RvclRpbGVMYXllciIsIl9BYnN0cmFjdFRpbGVMYXllciIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsInJlZ2lzdGVyVmlzQ29uZmlnIiwidGlsZURhdGFzZXQiLCJpbml0VGlsZURhdGFzZXQiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwiVGlsZURhdGFzZXQiLCJnZXRUaWxlSWQiLCJ0aWxlIiwiZ2V0SXRlcmFibGUiLCJjb250ZW50Iiwic2hhcGUiLCJmZWF0dXJlcyIsImdldFJvd0NvdW50IiwiZ2V0Um93VmFsdWUiLCJhY2Nlc3NSb3dWYWx1ZSIsIkxBWUVSX1RZUEVTIiwidmVjdG9yVGlsZSIsIlZlY3RvclRpbGVJY29uIiwiRGF0YXNldFR5cGUiLCJWRUNUT1JfVElMRSIsInZpc3VhbENoYW5uZWxzIiwic3Ryb2tlQ29sb3IiLCJmaWVsZCIsInNjYWxlIiwiZG9tYWluIiwiY2hhbm5lbFNjYWxlVHlwZSIsIkNIQU5ORUxfU0NBTEVTIiwiY29sb3IiLCJhY2Nlc3NvciIsImNvbmRpdGlvbiIsImNvbmZpZyIsInZpc0NvbmZpZyIsIm51bGxWYWx1ZSIsImdldEF0dHJpYnV0ZVZhbHVlIiwic2l6ZSIsInJhZGl1cyIsImdldERlZmF1bHRMYXllckNvbmZpZyIsImRlZmF1bHRMYXllckNvbmZpZyIsImNvbG9yU2NhbGUiLCJTQ0FMRV9UWVBFUyIsInF1YW50aXplIiwic3Ryb2tlQ29sb3JGaWVsZCIsInN0cm9rZUNvbG9yRG9tYWluIiwicXVhbnRpbGUiLCJjb2xvclVJIiwiREVGQVVMVF9DT0xPUl9VSSIsInJhZGl1c0ZpZWxkIiwicmFkaXVzRG9tYWluIiwibGluZWFyIiwiZ2V0SG92ZXJEYXRhIiwib2JqZWN0IiwiZGF0YUNvbnRhaW5lciIsImZpZWxkcyIsIm1hcCIsImYiLCJfb2JqZWN0JHByb3BlcnRpZXMkZiQiLCJfb2JqZWN0JHByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwibmFtZSIsImNhbGN1bGF0ZUxheWVyRG9tYWluIiwiZGF0YXNldCIsInZpc3VhbENoYW5uZWwiLCJfZmllbGQkZmlsdGVyUHJvcHMiLCJfZmllbGQkZmlsdGVyUHJvcHMyIiwiX2ZpZWxkJGZpbHRlclByb3BzMyIsImRlZmF1bHREb21haW4iLCJpc0RvbWFpblF1YW50aWxlcyIsImZpbHRlclByb3BzIiwiZG9tYWluUXVhbnRpbGVzIiwiaXNEb21haW5TdG9wcyIsImRvbWFpblN0b3BzIiwiQXJyYXkiLCJpc0FycmF5IiwiZ2V0U2NhbGVPcHRpb25zIiwiY2hhbm5lbEtleSIsIl9maWVsZCRmaWx0ZXJQcm9wczQiLCJvcHRpb25zIiwiS2VwbGVyTGF5ZXIiLCJjaGFubmVsIiwiZHluYW1pY0NvbG9yIiwiaW5kZXhLZXkiLCJpc0luZGV4ZWRGaWVsZCIsIl9maWVsZCRpbmRleEJ5IiwiZmllbGROYW1lIiwiaW5kZXhCeSIsIm1hcHBlZFZhbHVlIiwiZGF0dW0iLCJmaWVsZElkeCIsInVwZGF0ZUxheWVyTWV0YSIsImRhdGFzZXRzIiwiZGF0YXNldE1ldGEiLCJtZXRhZGF0YSIsInVwZGF0ZU1ldGEiLCJkYXRhc2V0SWQiLCJmb3JtYXRMYXllckRhdGEiLCJvbGRMYXllckRhdGEiLCJhbmltYXRpb25Db25maWciLCJkYXRhSWQiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJ0aWxlU291cmNlIiwidGlsZXNldERhdGFVcmwiLCJkYXRhc2V0TWV0YWRhdGEiLCJyZW1vdGVUaWxlRm9ybWF0IiwiUmVtb3RlVGlsZUZvcm1hdCIsIk1WVCIsIl9kYXRhc2V0TWV0YWRhdGEkdGlsZSIsInRyYW5zZm9ybUZldGNoIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiaW5wdXQiLCJpbml0IiwicmVxdWVzdERhdGEiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwidXJsIiwic2VhcmNoUGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwiYWJydXB0IiwiZmV0Y2giLCJzdG9wIiwiX3giLCJfeDIiLCJNVlRTb3VyY2UiLCJjcmVhdGVEYXRhU291cmNlIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwibXZ0IiwibWV0YWRhdGFVcmwiLCJ0aWxlc2V0TWV0YWRhdGFVcmwiLCJsb2FkT3B0aW9ucyIsIlBNVElMRVMiLCJQTVRpbGVzU291cmNlIiwiZ2V0VGlsZVVybCIsImhhc0hvdmVyZWRPYmplY3QiLCJvYmplY3RJbmZvIiwiX29iamVjdEluZm8kdGlsZSIsImluZGV4IiwicmVuZGVyU3ViTGF5ZXJzIiwiX2RhdGEiLCJfZGF0YTIiLCJ6b29tIiwieiIsIkdlb0pzb25MYXllciIsImdldEZpbGxDb2xvciIsImdldEZpbGxDb2xvckJ5Wm9vbSIsImdldEVsZXZhdGlvbiIsImdldEVsZXZhdGlvbkJ5Wm9vbSIsInBvaW50UmFkaXVzU2NhbGUiLCJwb2ludFJhZGl1c1VuaXRzIiwiZ2V0UG9pbnRSYWRpdXMiLCJhdXRvSGlnaGxpZ2h0Iiwid3JhcExvbmdpdHVkZSIsInJlbmRlckxheWVyIiwib3B0cyIsIm1hcFN0YXRlIiwiZ3B1RmlsdGVyIiwib2JqZWN0SG92ZXJlZCIsImxheWVyQ2FsbGJhY2tzIiwiX3RoaXMkY29uZmlnIiwiYW5pbWF0aW9uIiwic2V0TGF5ZXJEb21haW4iLCJvblNldExheWVyRG9tYWluIiwiZGVmYXVsdExheWVyUHJvcHMiLCJnZXREZWZhdWx0RGVja0xheWVyUHJvcHMiLCJlbGVab29tRmFjdG9yIiwiZ2V0RWxldmF0aW9uWm9vbUZhY3RvciIsInRyYW5zaXRpb25zIiwidHJhbnNpdGlvbiIsImR1cmF0aW9uIiwidW5kZWZpbmVkIiwiY29sb3JGaWVsZCIsImhlaWdodEZpZWxkIiwic2l6ZUZpZWxkIiwiX2RhdGEkdGlsZVNvdXJjZSIsIl9vYmplY3RIb3ZlcmVkJHNvdXJjZSIsImhvdmVyZWRPYmplY3QiLCJsYXllcnMiLCJDdXN0b21NVlRMYXllciIsIm9uVmlld3BvcnRMb2FkIiwiZ2V0VGlsZURhdGEiLCJnZXRGaWx0ZXJWYWx1ZSIsImdldEdwdUZpbHRlclZhbHVlQWNjZXNzb3IiLCJmaWx0ZXJSYW5nZSIsImxpbmVXaWR0aFVuaXRzIiwiYmluYXJ5IiwiZWxldmF0aW9uU2NhbGUiLCJleHRydWRlZCIsImVuYWJsZTNkIiwiZ2V0UG9pbnRSYWRpdXNTY2FsZUJ5Wm9vbSIsImdldFByb3BlcnR5Qnlab29tIiwicmFkaXVzQnlab29tIiwicmFkaXVzVW5pdHMiLCJwb2ludFJhZGl1c01pblBpeGVscyIsImhpZ2hsaWdodENvbG9yIiwidXBkYXRlVHJpZ2dlcnMiLCJmaWx0ZXJWYWx1ZVVwZGF0ZVRyaWdnZXJzIiwiY3VycmVudFRpbWUiLCJlbmFibGVkIiwiY29sb3JEb21haW4iLCJjb2xvclJhbmdlIiwiaGVpZ2h0U2NhbGVUeXBlIiwiaGVpZ2h0U2NhbGUiLCJoZWlnaHRSYW5nZSIsImdldExpbmVDb2xvciIsImdldExpbmVXaWR0aCIsInNpemVTY2FsZSIsInNpemVEb21haW4iLCJfc3ViTGF5ZXJQcm9wcyIsIm9wYWNpdHkiLCJzdHJva2VPcGFjaXR5IiwicGFyYW1ldGVycyIsImN1bGxGYWNlIiwiR0wiLCJCQUNLIiwiZ2V0TG9hZGVyT3B0aW9ucyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJzb3VyY2VMYXllciIsImdldERlZmF1bHRIb3ZlckxheWVyUHJvcHMiLCJ2aXNpYmxlIiwiZmlsbGVkIiwiZmluZERlZmF1bHRMYXllclByb3BzIiwiQWJzdHJhY3RUaWxlTGF5ZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdmVjdG9yLXRpbGUvdmVjdG9yLXRpbGUtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtGZWF0dXJlQ29sbGVjdGlvbiwgRmVhdHVyZX0gZnJvbSAnZ2VvanNvbic7XG5cbmltcG9ydCB7TGF5ZXIgYXMgRGVja0xheWVyfSBmcm9tICdAZGVjay5nbC9jb3JlL3R5cGVkJztcbmltcG9ydCB7X1RpbGUyREhlYWRlciBhcyBUaWxlMkRIZWFkZXJ9IGZyb20gJ0BkZWNrLmdsL2dlby1sYXllcnMvdHlwZWQnO1xuaW1wb3J0IHtHZW9Kc29uTGF5ZXIsIFBhdGhMYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzL3R5cGVkJztcbmltcG9ydCB7TVZUU291cmNlLCBNVlRUaWxlU291cmNlfSBmcm9tICdAbG9hZGVycy5nbC9tdnQnO1xuaW1wb3J0IHtQTVRpbGVzU291cmNlLCBQTVRpbGVzVGlsZVNvdXJjZX0gZnJvbSAnQGxvYWRlcnMuZ2wvcG10aWxlcyc7XG5pbXBvcnQgR0wgZnJvbSAnQGx1bWEuZ2wvY29uc3RhbnRzJztcblxuaW1wb3J0IHtub3ROdWxsb3JVbmRlZmluZWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7XG4gIGdldExvYWRlck9wdGlvbnMsXG4gIERhdGFzZXRUeXBlLFxuICBMQVlFUl9UWVBFUyxcbiAgUmVtb3RlVGlsZUZvcm1hdCxcbiAgVmVjdG9yVGlsZURhdGFzZXRNZXRhZGF0YSxcbiAgU0NBTEVfVFlQRVMsXG4gIENIQU5ORUxfU0NBTEVTLFxuICBERUZBVUxUX0NPTE9SX1VJLFxuICBMQVlFUl9WSVNfQ09ORklHU1xufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBnZXRUaWxlVXJsLFxuICBLZXBsZXJUYWJsZSBhcyBLZXBsZXJEYXRhc2V0LFxuICBEYXRhc2V0cyBhcyBLZXBsZXJEYXRhc2V0cyxcbiAgR3B1RmlsdGVyLFxuICBWZWN0b3JUaWxlTWV0YWRhdGFcbn0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5pbXBvcnQge1xuICBBbmltYXRpb25Db25maWcsXG4gIEZpZWxkIGFzIEtlcGxlckZpZWxkLFxuICBMYXllckNvbG9yQ29uZmlnLFxuICBMYXllckhlaWdodENvbmZpZyxcbiAgTWVyZ2UsXG4gIE1hcFN0YXRlLFxuICBCaW5kZWRMYXllckNhbGxiYWNrcyxcbiAgVmlzQ29uZmlnUmFuZ2UsXG4gIFZpc0NvbmZpZ051bWJlcixcbiAgRG9tYWluU3RvcHNcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge0RhdGFDb250YWluZXJJbnRlcmZhY2V9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG5pbXBvcnQge01WVExheWVyIGFzIEN1c3RvbU1WVExheWVyfSBmcm9tICcuL212dC1sYXllcic7XG5pbXBvcnQgVmVjdG9yVGlsZUljb24gZnJvbSAnLi92ZWN0b3ItdGlsZS1pY29uJztcbmltcG9ydCB7XG4gIGRlZmF1bHQgYXMgS2VwbGVyTGF5ZXIsXG4gIExheWVyQmFzZUNvbmZpZyxcbiAgTGF5ZXJCYXNlQ29uZmlnUGFydGlhbCxcbiAgVmlzdWFsQ2hhbm5lbCxcbiAgVmlzdWFsQ2hhbm5lbERvbWFpbixcbiAgVmlzdWFsQ2hhbm5lbEZpZWxkXG59IGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuaW1wb3J0IHtGaW5kRGVmYXVsdExheWVyUHJvcHNSZXR1cm5WYWx1ZX0gZnJvbSAnLi4vbGF5ZXItdXRpbHMnO1xuXG5pbXBvcnQgQWJzdHJhY3RUaWxlTGF5ZXIsIHtcbiAgTGF5ZXJEYXRhIGFzIENvbW1vbkxheWVyRGF0YSxcbiAgY29tbW9uVGlsZVZpc0NvbmZpZ3MsXG4gIEFic3RyYWN0VGlsZUxheWVyQ29uZmlnLFxuICBBYnN0cmFjdFRpbGVMYXllclZpc0NvbmZpZ1NldHRpbmdzXG59IGZyb20gJy4vYWJzdHJhY3QtdGlsZS1sYXllcic7XG5pbXBvcnQgVGlsZURhdGFzZXQgZnJvbSAnLi9jb21tb24tdGlsZS90aWxlLWRhdGFzZXQnO1xuaW1wb3J0IHtcbiAgaXNEb21haW5TdG9wcyxcbiAgaXNEb21haW5RdWFudGlsZXMsXG4gIGlzSW5kZXhlZEZpZWxkLFxuICBnZXRQcm9wZXJ0eUJ5Wm9vbVxufSBmcm9tICcuL2NvbW1vbi10aWxlL3RpbGUtdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9ISUdITElHSFRfRklMTF9DT0xPUiA9IFsyNTIsIDI0MiwgMjYsIDE1MF07XG5leHBvcnQgY29uc3QgREVGQVVMVF9ISUdITElHSFRfU1RST0tFX0NPTE9SID0gWzI1MiwgMjQyLCAyNiwgMjU1XTtcbmV4cG9ydCBjb25zdCBNQVhfQ0FDSEVfU0laRV9NT0JJTEUgPSAxOyAvLyBNaW5pbWl6ZSBjYWNoaW5nLCB2aXNpYmxlIHRpbGVzIHdpbGwgYWx3YXlzIGJlIGxvYWRlZFxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1RST0tFX1dJRFRIID0gMTtcblxuLyoqXG4gKiBUeXBlIGZvciB0cmFuc2Zvcm1SZXF1ZXN0IHJldHVybmVkIHBhcmFtZXRlcnMuXG4gKi9cbmV4cG9ydCB0eXBlIFJlcXVlc3RQYXJhbWV0ZXJzID0ge1xuICAvKiogVGhlIFVSTCB0byBiZSByZXF1ZXN0ZWQuICovXG4gIHVybDogc3RyaW5nO1xuICAvKiogU2VhcmNoIHBhcmFtZXRlcnMgdG8gYmUgYWRkZWQgb250byB0aGUgVVJMLiAqL1xuICBzZWFyY2hQYXJhbXM6IFVSTFNlYXJjaFBhcmFtcztcbiAgLyoqIE9wdGlvbnMgcGFzc2VkIHRvIGZldGNoLiAqL1xuICBvcHRpb25zOiBSZXF1ZXN0SW5pdDtcbn07XG5cbi8vIFRoaXMgdHlwZSAqc2VlbXMqIHRvIGJlIHdoYXQgbG9hZGVycy5nbCBjdXJyZW50bHkgcmV0dXJucyBmb3IgdGlsZSBjb250ZW50LlxuLy8gQXBwYXJlbnRseSB0aGlzIG1pZ2h0IGJlIGRpZmZlcmVudCBkZXBlbmRpbmcgb24gdGhlIGxvYWRlcnMgdmVyc2lvbiwgYW5kIGZvci4uLlxuLy8gcmVhc29ucyB3ZSB1c2UgdHdvIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBsb2FkZXJzIHJpZ2h0IG5vdy5cbi8vIFRPRE86IFRoZSBGZWF0dXJlc1tdIHZlcnNpb24gc2hvdWxkIG5vdCBiZSBuZWVkZWQgd2hlbiB3ZSB1cGRhdGUgdG8gYSBuZXdlclxuLy8gdmVyc2lvbiBvZiBEZWNrLmdsIGFuZCB1c2Ugb25seSBvbmUgdmVyc2lvbiBvZiBsb2FkZXJzXG50eXBlIFRpbGVDb250ZW50ID1cbiAgfCAoRmVhdHVyZUNvbGxlY3Rpb24gJiB7c2hhcGU6ICdnZW9qc29uLXRhYmxlJ30pXG4gIHwgKEZlYXR1cmVbXSAmIHtzaGFwZTogdW5kZWZpbmVkfSk7XG5cbnR5cGUgVmVjdG9yVGlsZSA9IFRpbGUyREhlYWRlcjxUaWxlQ29udGVudD47XG5cbnR5cGUgTGF5ZXJEYXRhID0gQ29tbW9uTGF5ZXJEYXRhICYge1xuICB0aWxlc2V0RGF0YVVybD86IHN0cmluZyB8IG51bGw7XG4gIHRpbGVTb3VyY2U6IE1WVFRpbGVTb3VyY2UgfCBQTVRpbGVzVGlsZVNvdXJjZSB8IG51bGw7XG59O1xuXG50eXBlIFZlY3RvclRpbGVMYXllclJlbmRlck9wdGlvbnMgPSBNZXJnZTxcbiAge1xuICAgIGlkeDogbnVtYmVyO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgbWFwU3RhdGU6IE1hcFN0YXRlO1xuICAgIGRhdGE6IGFueTtcbiAgICBhbmltYXRpb25Db25maWc6IEFuaW1hdGlvbkNvbmZpZztcbiAgICBncHVGaWx0ZXI6IEdwdUZpbHRlcjtcbiAgICBsYXllckNhbGxiYWNrczogQmluZGVkTGF5ZXJDYWxsYmFja3M7XG4gICAgb2JqZWN0SG92ZXJlZDoge1xuICAgICAgaW5kZXg6IG51bWJlcjtcbiAgICAgIHRpbGU6IFZlY3RvclRpbGU7XG4gICAgICBzb3VyY2VMYXllcjogdHlwZW9mIEdlb0pzb25MYXllcjtcbiAgICB9O1xuICB9LFxuICBMYXllckRhdGFcbj47XG5cbmV4cG9ydCBjb25zdCB2ZWN0b3JUaWxlVmlzQ29uZmlncyA9IHtcbiAgLi4uY29tbW9uVGlsZVZpc0NvbmZpZ3MsXG5cbiAgc3Ryb2tlZDoge1xuICAgIC4uLkxBWUVSX1ZJU19DT05GSUdTLnN0cm9rZWQsXG4gICAgZGVmYXVsdFZhbHVlOiBmYWxzZVxuICB9LFxuXG4gIC8vIFRPRE8gZmlndXJlIG91dCB3aHkgc3Ryb2tlQ29sb3JTY2FsZSBjYW4ndCBiZSBjb25zdFxuICBzdHJva2VDb2xvclNjYWxlOiAnc3Ryb2tlQ29sb3JTY2FsZScgYXMgYW55LFxuICBzdHJva2VDb2xvclJhbmdlOiAnc3Ryb2tlQ29sb3JSYW5nZScgYXMgY29uc3QsXG5cbiAgc2l6ZVJhbmdlOiAnc3Ryb2tlV2lkdGhSYW5nZScgYXMgY29uc3QsXG4gIHN0cm9rZVdpZHRoOiB7XG4gICAgLi4uTEFZRVJfVklTX0NPTkZJR1MudGhpY2tuZXNzLFxuICAgIHByb3BlcnR5OiAnc3Ryb2tlV2lkdGgnLFxuICAgIGRlZmF1bHRWYWx1ZTogMC41LFxuICAgIGFsbG93Q3VzdG9tVmFsdWU6IGZhbHNlXG4gIH0sXG5cbiAgcmFkaXVzU2NhbGU6ICdyYWRpdXNTY2FsZScgYXMgYW55LFxuICByYWRpdXNSYW5nZToge1xuICAgIC4uLkxBWUVSX1ZJU19DT05GSUdTLnJhZGl1c1JhbmdlLFxuICAgIHR5cGU6ICdudW1iZXInLFxuICAgIGRlZmF1bHRWYWx1ZTogWzAsIDFdLFxuICAgIGlzUmFuZ2VkOiB0cnVlLFxuICAgIHJhbmdlOiBbMCwgMV0sXG4gICAgc3RlcDogMC4wMVxuICB9IGFzIFZpc0NvbmZpZ1JhbmdlXG59O1xuXG5leHBvcnQgdHlwZSBWZWN0b3JUaWxlTGF5ZXJDb25maWcgPSBNZXJnZTxcbiAgQWJzdHJhY3RUaWxlTGF5ZXJDb25maWcsXG4gIHtcbiAgICBzaXplRmllbGQ/OiBWaXN1YWxDaGFubmVsRmllbGQ7XG4gICAgc2l6ZVNjYWxlPzogc3RyaW5nO1xuICAgIHNpemVEb21haW4/OiBWaXN1YWxDaGFubmVsRG9tYWluO1xuXG4gICAgc3Ryb2tlQ29sb3JGaWVsZDogVmlzdWFsQ2hhbm5lbEZpZWxkO1xuXG4gICAgcmFkaXVzRmllbGQ/OiBWaXN1YWxDaGFubmVsRmllbGQ7XG4gICAgcmFkaXVzU2NhbGU/OiBzdHJpbmc7XG4gICAgcmFkaXVzRG9tYWluPzogVmlzdWFsQ2hhbm5lbERvbWFpbjtcbiAgICByYWRpdXNSYW5nZT86IGFueTtcbiAgfVxuPjtcblxuZXhwb3J0IHR5cGUgVmVjdG9yVGlsZUxheWVyVmlzQ29uZmlnU2V0dGluZ3MgPSBNZXJnZTxcbiAgQWJzdHJhY3RUaWxlTGF5ZXJWaXNDb25maWdTZXR0aW5ncyxcbiAge1xuICAgIHNpemVSYW5nZTogVmlzQ29uZmlnUmFuZ2U7XG4gICAgc3Ryb2tlV2lkdGg6IFZpc0NvbmZpZ051bWJlcjtcbiAgfVxuPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRpbGVMYXllckJvdW5kc0xheWVyKGlkOiBzdHJpbmcsIHByb3BzOiB7Ym91bmRzPzogbnVtYmVyW119KTogRGVja0xheWVyW10ge1xuICBjb25zdCB7Ym91bmRzfSA9IHByb3BzO1xuICBpZiAoYm91bmRzPy5sZW5ndGggIT09IDQpIHJldHVybiBbXTtcblxuICBjb25zdCBkYXRhID0gW1xuICAgIHtcbiAgICAgIHBhdGg6IFtcbiAgICAgICAgW2JvdW5kc1swXSwgYm91bmRzWzFdXSxcbiAgICAgICAgW2JvdW5kc1syXSwgYm91bmRzWzFdXSxcbiAgICAgICAgW2JvdW5kc1syXSwgYm91bmRzWzNdXSxcbiAgICAgICAgW2JvdW5kc1swXSwgYm91bmRzWzNdXSxcbiAgICAgICAgW2JvdW5kc1swXSwgYm91bmRzWzFdXVxuICAgICAgXVxuICAgIH1cbiAgXTtcblxuICBjb25zdCBsYXllciA9IG5ldyBQYXRoTGF5ZXIoe1xuICAgIGlkOiBgJHtpZH0tdmVjdG9yLXRpbGUtYm91bmRzYCxcbiAgICBkYXRhLFxuICAgIGdldFBhdGg6IGQgPT4gZC5wYXRoLFxuICAgIGdldENvbG9yOiBbMTI4LCAxMjgsIDEyOCwgMjU1XSxcbiAgICBnZXRXaWR0aDogMSxcbiAgICB3aWR0aFVuaXRzOiAncGl4ZWxzJyxcbiAgICBwaWNrYWJsZTogZmFsc2VcbiAgfSk7XG5cbiAgcmV0dXJuIFtsYXllcl07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlY3RvclRpbGVMYXllciBleHRlbmRzIEFic3RyYWN0VGlsZUxheWVyPFZlY3RvclRpbGUsIEZlYXR1cmVbXT4ge1xuICBkZWNsYXJlIGNvbmZpZzogVmVjdG9yVGlsZUxheWVyQ29uZmlnO1xuICBkZWNsYXJlIHZpc0NvbmZpZ1NldHRpbmdzOiBWZWN0b3JUaWxlTGF5ZXJWaXNDb25maWdTZXR0aW5ncztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogQ29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBBYnN0cmFjdFRpbGVMYXllcj5bMF0pIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyh2ZWN0b3JUaWxlVmlzQ29uZmlncyk7XG4gICAgdGhpcy50aWxlRGF0YXNldCA9IHRoaXMuaW5pdFRpbGVEYXRhc2V0KCk7XG4gIH1cblxuICBtZXRhID0ge307XG5cbiAgc3RhdGljIGZpbmREZWZhdWx0TGF5ZXJQcm9wcyhkYXRhc2V0OiBLZXBsZXJEYXRhc2V0KTogRmluZERlZmF1bHRMYXllclByb3BzUmV0dXJuVmFsdWUge1xuICAgIGlmIChkYXRhc2V0LnR5cGUgIT09IERhdGFzZXRUeXBlLlZFQ1RPUl9USUxFKSB7XG4gICAgICByZXR1cm4ge3Byb3BzOiBbXX07XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5maW5kRGVmYXVsdExheWVyUHJvcHMoZGF0YXNldCk7XG4gIH1cblxuICBpbml0VGlsZURhdGFzZXQoKTogVGlsZURhdGFzZXQ8VmVjdG9yVGlsZSwgRmVhdHVyZVtdPiB7XG4gICAgcmV0dXJuIG5ldyBUaWxlRGF0YXNldCh7XG4gICAgICBnZXRUaWxlSWQ6ICh0aWxlOiBWZWN0b3JUaWxlKTogc3RyaW5nID0+IHRpbGUuaWQsXG4gICAgICBnZXRJdGVyYWJsZTogKHRpbGU6IFZlY3RvclRpbGUpOiBGZWF0dXJlW10gPT4ge1xuICAgICAgICBpZiAodGlsZS5jb250ZW50KSB7XG4gICAgICAgICAgcmV0dXJuIHRpbGUuY29udGVudC5zaGFwZSA9PT0gJ2dlb2pzb24tdGFibGUnID8gdGlsZS5jb250ZW50LmZlYXR1cmVzIDogdGlsZS5jb250ZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH0sXG4gICAgICBnZXRSb3dDb3VudDogKGZlYXR1cmVzOiBGZWF0dXJlW10pOiBudW1iZXIgPT4gZmVhdHVyZXMubGVuZ3RoLFxuICAgICAgZ2V0Um93VmFsdWU6IHRoaXMuYWNjZXNzUm93VmFsdWVcbiAgICB9KTtcbiAgfVxuXG4gIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIExBWUVSX1RZUEVTLnZlY3RvclRpbGU7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnVmVjdG9yIFRpbGUnO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpOiBLZXBsZXJMYXllclsnbGF5ZXJJY29uJ10ge1xuICAgIHJldHVybiBWZWN0b3JUaWxlSWNvbjtcbiAgfVxuXG4gIGdldCBzdXBwb3J0ZWREYXRhc2V0VHlwZXMoKTogRGF0YXNldFR5cGVbXSB7XG4gICAgcmV0dXJuIFtEYXRhc2V0VHlwZS5WRUNUT1JfVElMRV07XG4gIH1cblxuICBnZXQgdmlzdWFsQ2hhbm5lbHMoKTogUmVjb3JkPHN0cmluZywgVmlzdWFsQ2hhbm5lbD4ge1xuICAgIGNvbnN0IHZpc3VhbENoYW5uZWxzID0gc3VwZXIudmlzdWFsQ2hhbm5lbHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnZpc3VhbENoYW5uZWxzLFxuICAgICAgc3Ryb2tlQ29sb3I6IHtcbiAgICAgICAgcHJvcGVydHk6ICdzdHJva2VDb2xvcicsXG4gICAgICAgIGZpZWxkOiAnc3Ryb2tlQ29sb3JGaWVsZCcsXG4gICAgICAgIHNjYWxlOiAnc3Ryb2tlQ29sb3JTY2FsZScsXG4gICAgICAgIGRvbWFpbjogJ3N0cm9rZUNvbG9yRG9tYWluJyxcbiAgICAgICAgcmFuZ2U6ICdzdHJva2VDb2xvclJhbmdlJyxcbiAgICAgICAga2V5OiAnc3Ryb2tlQ29sb3InLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiBDSEFOTkVMX1NDQUxFUy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRMaW5lQ29sb3InLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLnN0cm9rZWQsXG4gICAgICAgIG51bGxWYWx1ZTogdmlzdWFsQ2hhbm5lbHMuY29sb3IubnVsbFZhbHVlLFxuICAgICAgICBnZXRBdHRyaWJ1dGVWYWx1ZTogY29uZmlnID0+IGNvbmZpZy52aXNDb25maWcuc3Ryb2tlQ29sb3IgfHwgY29uZmlnLmNvbG9yXG4gICAgICB9LFxuICAgICAgc2l6ZToge1xuICAgICAgICBwcm9wZXJ0eTogJ3N0cm9rZScsXG4gICAgICAgIGZpZWxkOiAnc2l6ZUZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdzaXplU2NhbGUnLFxuICAgICAgICBkb21haW46ICdzaXplRG9tYWluJyxcbiAgICAgICAgcmFuZ2U6ICdzaXplUmFuZ2UnLFxuICAgICAgICBrZXk6ICdzaXplJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogQ0hBTk5FTF9TQ0FMRVMuc2l6ZSxcbiAgICAgICAgbnVsbFZhbHVlOiAwLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldExpbmVXaWR0aCcsXG4gICAgICAgIGNvbmRpdGlvbjogY29uZmlnID0+IGNvbmZpZy52aXNDb25maWcuc3Ryb2tlZCxcbiAgICAgICAgZ2V0QXR0cmlidXRlVmFsdWU6IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLnN0cm9rZVdpZHRoIHx8IERFRkFVTFRfU1RST0tFX1dJRFRIXG4gICAgICB9LFxuICAgICAgcmFkaXVzOiB7XG4gICAgICAgIHByb3BlcnR5OiAncmFkaXVzJyxcbiAgICAgICAgZmllbGQ6ICdyYWRpdXNGaWVsZCcsXG4gICAgICAgIHNjYWxlOiAncmFkaXVzU2NhbGUnLFxuICAgICAgICBkb21haW46ICdyYWRpdXNEb21haW4nLFxuICAgICAgICByYW5nZTogJ3JhZGl1c1JhbmdlJyxcbiAgICAgICAga2V5OiAncmFkaXVzJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogQ0hBTk5FTF9TQ0FMRVMuc2l6ZSxcbiAgICAgICAgbnVsbFZhbHVlOiAwLFxuICAgICAgICBnZXRBdHRyaWJ1dGVWYWx1ZTogY29uZmlnID0+IHtcbiAgICAgICAgICByZXR1cm4gY29uZmlnLnZpc0NvbmZpZy5yYWRpdXMgfHwgY29uZmlnLnJhZGl1cztcbiAgICAgICAgfSxcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRQb2ludFJhZGl1cycsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy5yYWRpdXNcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVmYXVsdExheWVyQ29uZmlnKFxuICAgIHByb3BzOiBMYXllckJhc2VDb25maWdQYXJ0aWFsXG4gICk6IExheWVyQmFzZUNvbmZpZyAmIFBhcnRpYWw8TGF5ZXJDb2xvckNvbmZpZyAmIExheWVySGVpZ2h0Q29uZmlnPiB7XG4gICAgY29uc3QgZGVmYXVsdExheWVyQ29uZmlnID0gc3VwZXIuZ2V0RGVmYXVsdExheWVyQ29uZmlnKHByb3BzKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGVmYXVsdExheWVyQ29uZmlnLFxuICAgICAgY29sb3JTY2FsZTogU0NBTEVfVFlQRVMucXVhbnRpemUsXG5cbiAgICAgIHN0cm9rZUNvbG9yRmllbGQ6IG51bGwsXG4gICAgICBzdHJva2VDb2xvckRvbWFpbjogWzAsIDFdLFxuICAgICAgc3Ryb2tlQ29sb3JTY2FsZTogU0NBTEVfVFlQRVMucXVhbnRpbGUsXG4gICAgICBjb2xvclVJOiB7XG4gICAgICAgIC4uLmRlZmF1bHRMYXllckNvbmZpZy5jb2xvclVJLFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIExheWVyQ29uZmlnXG4gICAgICAgIHN0cm9rZUNvbG9yUmFuZ2U6IERFRkFVTFRfQ09MT1JfVUlcbiAgICAgIH0sXG5cbiAgICAgIHJhZGl1c0ZpZWxkOiBudWxsLFxuICAgICAgcmFkaXVzRG9tYWluOiBbMCwgMV0sXG4gICAgICByYWRpdXNTY2FsZTogU0NBTEVfVFlQRVMubGluZWFyXG4gICAgfTtcbiAgfVxuXG4gIGdldEhvdmVyRGF0YShcbiAgICBvYmplY3Q6IHtwcm9wZXJ0aWVzPzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+fSxcbiAgICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLFxuICAgIGZpZWxkczogS2VwbGVyRmllbGRbXVxuICApOiAoUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsKVtdIHtcbiAgICByZXR1cm4gZmllbGRzLm1hcChmID0+IG9iamVjdC5wcm9wZXJ0aWVzPy5bZi5uYW1lXSA/PyBudWxsKTtcbiAgfVxuXG4gIGNhbGN1bGF0ZUxheWVyRG9tYWluKFxuICAgIGRhdGFzZXQ6IEtlcGxlckRhdGFzZXQsXG4gICAgdmlzdWFsQ2hhbm5lbDogVmlzdWFsQ2hhbm5lbFxuICApOiBEb21haW5TdG9wcyB8IG51bWJlcltdIHtcbiAgICBjb25zdCBkZWZhdWx0RG9tYWluID0gWzAsIDFdO1xuXG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmNvbmZpZ1t2aXN1YWxDaGFubmVsLmZpZWxkXTtcbiAgICBjb25zdCBzY2FsZSA9IHRoaXMuY29uZmlnW3Zpc3VhbENoYW5uZWwuc2NhbGVdO1xuICAgIGlmICghZmllbGQpIHtcbiAgICAgIC8vIGlmIGNvbG9yRmllbGQgb3Igc2l6ZUZpZWxkIHdlcmUgc2V0IGJhY2sgdG8gbnVsbFxuICAgICAgcmV0dXJuIGRlZmF1bHREb21haW47XG4gICAgfVxuICAgIGlmIChzY2FsZSA9PT0gU0NBTEVfVFlQRVMucXVhbnRpbGUgJiYgaXNEb21haW5RdWFudGlsZXMoZmllbGQ/LmZpbHRlclByb3BzPy5kb21haW5RdWFudGlsZXMpKSB7XG4gICAgICByZXR1cm4gZmllbGQuZmlsdGVyUHJvcHMuZG9tYWluUXVhbnRpbGVzO1xuICAgIH1cbiAgICBpZiAoaXNEb21haW5TdG9wcyhmaWVsZD8uZmlsdGVyUHJvcHM/LmRvbWFpblN0b3BzKSkge1xuICAgICAgcmV0dXJuIGZpZWxkLmZpbHRlclByb3BzLmRvbWFpblN0b3BzO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShmaWVsZD8uZmlsdGVyUHJvcHM/LmRvbWFpbikpIHtcbiAgICAgIHJldHVybiBmaWVsZC5maWx0ZXJQcm9wcy5kb21haW47XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmF1bHREb21haW47XG4gIH1cblxuICBnZXRTY2FsZU9wdGlvbnMoY2hhbm5lbEtleTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGxldCBvcHRpb25zID0gS2VwbGVyTGF5ZXIucHJvdG90eXBlLmdldFNjYWxlT3B0aW9ucy5jYWxsKHRoaXMsIGNoYW5uZWxLZXkpO1xuXG4gICAgY29uc3QgY2hhbm5lbCA9IHRoaXMudmlzdWFsQ2hhbm5lbHMuc3Ryb2tlQ29sb3I7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmNvbmZpZ1tjaGFubmVsLmZpZWxkXTtcbiAgICBpZiAoXG4gICAgICAhKFxuICAgICAgICBpc0RvbWFpblF1YW50aWxlcyhmaWVsZD8uZmlsdGVyUHJvcHM/LmRvbWFpblF1YW50aWxlcykgfHxcbiAgICAgICAgdGhpcy5jb25maWcudmlzQ29uZmlnLmR5bmFtaWNDb2xvciB8fFxuICAgICAgICAvLyBJZiB3ZSd2ZSBzZXQgdGhlIHNjYWxlIHRvIHF1YW50aWxlLCB3ZSBuZWVkIHRvIGluY2x1ZGUgaXQgLSB0aGVyZSdzIGEgbG9hZGluZ1xuICAgICAgICAvLyBwZXJpb2QgaW4gd2hpY2ggdGhlIHZpc0NvbmZpZyBpc24ndCBzZXQgeWV0LCBidXQgaWYgd2UgZG9uJ3QgcmV0dXJuIHRoZSByaWdodFxuICAgICAgICAvLyBzY2FsZSB0eXBlIHdlIGxvc2UgaXRcbiAgICAgICAgdGhpcy5jb25maWcuY29sb3JTY2FsZSA9PT0gU0NBTEVfVFlQRVMucXVhbnRpbGVcbiAgICAgIClcbiAgICApIHtcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zLmZpbHRlcihzY2FsZSA9PiBzY2FsZSAhPT0gU0NBTEVfVFlQRVMucXVhbnRpbGUpO1xuICAgIH1cblxuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgYWNjZXNzUm93VmFsdWUoXG4gICAgZmllbGQ/OiBLZXBsZXJGaWVsZCxcbiAgICBpbmRleEtleT86IG51bWJlciB8IG51bGxcbiAgKTogKGZpZWxkOiBLZXBsZXJGaWVsZCwgZGF0dW06IEZlYXR1cmUpID0+IG51bWJlciB8IG51bGwge1xuICAgIC8vIGlmIGlzIGluZGV4ZWQgZmllbGRcbiAgICBpZiAoaXNJbmRleGVkRmllbGQoZmllbGQpICYmIGluZGV4S2V5ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBpbmRleEtleSAmJiBmaWVsZD8uaW5kZXhCeT8ubWFwcGVkVmFsdWVbaW5kZXhLZXldO1xuICAgICAgaWYgKGZpZWxkTmFtZSkge1xuICAgICAgICByZXR1cm4gKGYsIGRhdHVtKSA9PiB7XG4gICAgICAgICAgaWYgKGRhdHVtLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXR1bS5wcm9wZXJ0aWVzW2ZpZWxkTmFtZV07XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFRPRE8gZGVidWcgdGhpcyB3aXRoIGluZGV4ZWQgdGlsZWQgZGF0YXNldFxuICAgICAgICAgIHJldHVybiBkYXR1bVtmaWVsZE5hbWVdO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRlZmF1bHRcbiAgICByZXR1cm4gKGYsIGRhdHVtKSA9PiB7XG4gICAgICBpZiAoZiAmJiBkYXR1bS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgIHJldHVybiBkYXR1bS5wcm9wZXJ0aWVzW2YubmFtZV07XG4gICAgICB9XG4gICAgICAvLyBzdXBwb3J0IHBpY2tpbmcgJiBoaWdobGlnaHRpbmdcbiAgICAgIHJldHVybiBmID8gZGF0dW1bZi5maWVsZElkeF0gOiBudWxsO1xuICAgIH07XG4gIH1cblxuICB1cGRhdGVMYXllck1ldGEoZGF0YXNldDogS2VwbGVyRGF0YXNldCwgZGF0YXNldHM6IEtlcGxlckRhdGFzZXRzKTogdm9pZCB7XG4gICAgaWYgKGRhdGFzZXQudHlwZSAhPT0gRGF0YXNldFR5cGUuVkVDVE9SX1RJTEUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhc2V0TWV0YSA9IGRhdGFzZXQubWV0YWRhdGEgYXMgVmVjdG9yVGlsZU1ldGFkYXRhICYgVmVjdG9yVGlsZURhdGFzZXRNZXRhZGF0YTtcbiAgICB0aGlzLnVwZGF0ZU1ldGEoe1xuICAgICAgZGF0YXNldElkOiBkYXRhc2V0LmlkLFxuICAgICAgZGF0YXNldHMsXG4gICAgICBib3VuZHM6IGRhdGFzZXRNZXRhLmJvdW5kc1xuICAgIH0pO1xuICB9XG5cbiAgZm9ybWF0TGF5ZXJEYXRhKFxuICAgIGRhdGFzZXRzOiBLZXBsZXJEYXRhc2V0cyxcbiAgICBvbGRMYXllckRhdGE6IHVua25vd24sXG4gICAgYW5pbWF0aW9uQ29uZmlnOiBBbmltYXRpb25Db25maWdcbiAgKTogTGF5ZXJEYXRhIHtcbiAgICBjb25zdCB7ZGF0YUlkfSA9IHRoaXMuY29uZmlnO1xuICAgIGlmICghbm90TnVsbG9yVW5kZWZpbmVkKGRhdGFJZCkpIHtcbiAgICAgIHJldHVybiB7dGlsZVNvdXJjZTogbnVsbH07XG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhSWRdO1xuXG4gICAgbGV0IHRpbGVzZXREYXRhVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgbGV0IHRpbGVTb3VyY2U6IExheWVyRGF0YVsndGlsZVNvdXJjZSddID0gbnVsbDtcblxuICAgIGlmIChkYXRhc2V0Py50eXBlID09PSBEYXRhc2V0VHlwZS5WRUNUT1JfVElMRSkge1xuICAgICAgY29uc3QgZGF0YXNldE1ldGFkYXRhID0gZGF0YXNldC5tZXRhZGF0YSBhcyBWZWN0b3JUaWxlTWV0YWRhdGEgJiBWZWN0b3JUaWxlRGF0YXNldE1ldGFkYXRhO1xuICAgICAgY29uc3QgcmVtb3RlVGlsZUZvcm1hdCA9IGRhdGFzZXRNZXRhZGF0YT8ucmVtb3RlVGlsZUZvcm1hdDtcbiAgICAgIGlmIChyZW1vdGVUaWxlRm9ybWF0ID09PSBSZW1vdGVUaWxlRm9ybWF0Lk1WVCkge1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1GZXRjaCA9IGFzeW5jIChpbnB1dDogUmVxdWVzdEluZm8gfCBVUkwsIGluaXQ/OiBSZXF1ZXN0SW5pdCB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlcXVlc3REYXRhOiBSZXF1ZXN0UGFyYW1ldGVycyA9IHtcbiAgICAgICAgICAgIHVybDogaW5wdXQgYXMgc3RyaW5nLFxuICAgICAgICAgICAgc2VhcmNoUGFyYW1zOiBuZXcgVVJMU2VhcmNoUGFyYW1zKCksXG4gICAgICAgICAgICBvcHRpb25zOiBpbml0ID8/IHt9XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHJldHVybiBmZXRjaChyZXF1ZXN0RGF0YS51cmwsIHJlcXVlc3REYXRhLm9wdGlvbnMpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRpbGVzZXREYXRhVXJsID0gZGF0YXNldE1ldGFkYXRhPy50aWxlc2V0RGF0YVVybDtcbiAgICAgICAgdGlsZVNvdXJjZSA9IHRpbGVzZXREYXRhVXJsXG4gICAgICAgICAgPyBNVlRTb3VyY2UuY3JlYXRlRGF0YVNvdXJjZShkZWNvZGVVUklDb21wb25lbnQodGlsZXNldERhdGFVcmwpLCB7XG4gICAgICAgICAgICAgIG12dDoge1xuICAgICAgICAgICAgICAgIG1ldGFkYXRhVXJsOiBkYXRhc2V0TWV0YWRhdGE/LnRpbGVzZXRNZXRhZGF0YVVybCA/PyBudWxsLFxuICAgICAgICAgICAgICAgIGxvYWRPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBmZXRjaDogdHJhbnNmb3JtRmV0Y2hcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiBudWxsO1xuICAgICAgfSBlbHNlIGlmIChyZW1vdGVUaWxlRm9ybWF0ID09PSBSZW1vdGVUaWxlRm9ybWF0LlBNVElMRVMpIHtcbiAgICAgICAgLy8gVE9ETzogdG8gcmVuZGVyIGltYWdlIHBtdGlsZXMgbmVlZCB0byB1c2UgVGlsZUxheWVyIGFuZCBCaXRtYXBMYXllciAoaHR0cHM6Ly9naXRodWIuY29tL3Zpc2dsL2xvYWRlcnMuZ2wvYmxvYi9tYXN0ZXIvZXhhbXBsZXMvd2Vic2l0ZS90aWxlcy9jb21wb25lbnRzL3RpbGUtc291cmNlLWxheWVyLnRzKVxuICAgICAgICB0aWxlc2V0RGF0YVVybCA9IGRhdGFzZXRNZXRhZGF0YT8udGlsZXNldERhdGFVcmw7XG4gICAgICAgIHRpbGVTb3VyY2UgPSB0aWxlc2V0RGF0YVVybCA/IFBNVGlsZXNTb3VyY2UuY3JlYXRlRGF0YVNvdXJjZSh0aWxlc2V0RGF0YVVybCwge30pIDogbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuZm9ybWF0TGF5ZXJEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEsIGFuaW1hdGlvbkNvbmZpZyksXG4gICAgICB0aWxlc2V0RGF0YVVybDogdHlwZW9mIHRpbGVzZXREYXRhVXJsID09PSAnc3RyaW5nJyA/IGdldFRpbGVVcmwodGlsZXNldERhdGFVcmwpIDogbnVsbCxcbiAgICAgIHRpbGVTb3VyY2VcbiAgICB9O1xuICB9XG5cbiAgaGFzSG92ZXJlZE9iamVjdChvYmplY3RJbmZvKSB7XG4gICAgaWYgKHN1cGVyLmhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SW5mbykpIHtcbiAgICAgIGNvbnN0IGZlYXR1cmVzID0gb2JqZWN0SW5mbz8udGlsZT8uY29udGVudD8uZmVhdHVyZXM7XG4gICAgICByZXR1cm4gZmVhdHVyZXNbb2JqZWN0SW5mby5pbmRleF07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmVuZGVyU3ViTGF5ZXJzKHByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogRGVja0xheWVyIHwgRGVja0xheWVyW10ge1xuICAgIGxldCB7ZGF0YX0gPSBwcm9wcztcblxuICAgIGRhdGEgPSBkYXRhPy5zaGFwZSA9PT0gJ2dlb2pzb24tdGFibGUnID8gZGF0YS5mZWF0dXJlcyA6IGRhdGE7XG4gICAgaWYgKCFkYXRhPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCB0aWxlOiBUaWxlMkRIZWFkZXIgPSBwcm9wcy50aWxlO1xuICAgIGNvbnN0IHpvb20gPSB0aWxlLmluZGV4Lno7XG5cbiAgICByZXR1cm4gbmV3IEdlb0pzb25MYXllcih7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGRhdGEsXG4gICAgICBnZXRGaWxsQ29sb3I6IHByb3BzLmdldEZpbGxDb2xvckJ5Wm9vbSA/IHByb3BzLmdldEZpbGxDb2xvcih6b29tKSA6IHByb3BzLmdldEZpbGxDb2xvcixcbiAgICAgIGdldEVsZXZhdGlvbjogcHJvcHMuZ2V0RWxldmF0aW9uQnlab29tID8gcHJvcHMuZ2V0RWxldmF0aW9uKHpvb20pIDogcHJvcHMuZ2V0RWxldmF0aW9uLFxuICAgICAgLy8gcmFkaXVzIGZvciBwb2ludHNcbiAgICAgIHBvaW50UmFkaXVzU2NhbGU6IHByb3BzLnBvaW50UmFkaXVzU2NhbGUsIC8vIHByb3BzLmdldFBvaW50UmFkaXVzU2NhbGVCeVpvb20oem9vbSksXG4gICAgICBwb2ludFJhZGl1c1VuaXRzOiBwcm9wcy5wb2ludFJhZGl1c1VuaXRzLFxuICAgICAgZ2V0UG9pbnRSYWRpdXM6IHByb3BzLmdldFBvaW50UmFkaXVzLFxuICAgICAgLy8gRm9yIHNvbWUgcmVhc29uIHRpbGUgTGF5ZXIgcmVzZXQgYXV0b0hpZ2hsaWdodCB0byBmYWxzZVxuICAgICAgcGlja2FibGU6IHRydWUsXG4gICAgICBhdXRvSGlnaGxpZ2h0OiB0cnVlLFxuICAgICAgc3Ryb2tlZDogcHJvcHMuc3Ryb2tlZCxcbiAgICAgIC8vIHdyYXBMb25naXR1ZGU6IHRydWUgY2F1c2VzIG1pc3Npbmcgc2lkZSBwb2x5Z29uIHdoZW4gZXh0cnVkZSBpcyBlbmFibGVkXG4gICAgICB3cmFwTG9uZ2l0dWRlOiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gZ2VuZXJhdGUgYSBkZWNrIGxheWVyXG4gIHJlbmRlckxheWVyKG9wdHM6IFZlY3RvclRpbGVMYXllclJlbmRlck9wdGlvbnMpOiBEZWNrTGF5ZXJbXSB7XG4gICAgY29uc3Qge21hcFN0YXRlLCBkYXRhLCBhbmltYXRpb25Db25maWcsIGdwdUZpbHRlciwgb2JqZWN0SG92ZXJlZCwgbGF5ZXJDYWxsYmFja3N9ID0gb3B0cztcbiAgICBjb25zdCB7YW5pbWF0aW9uLCB2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG5cbiAgICB0aGlzLnNldExheWVyRG9tYWluID0gbGF5ZXJDYWxsYmFja3Mub25TZXRMYXllckRvbWFpbjtcblxuICAgIGNvbnN0IGRlZmF1bHRMYXllclByb3BzID0gdGhpcy5nZXREZWZhdWx0RGVja0xheWVyUHJvcHMob3B0cyk7XG4gICAgY29uc3QgZWxlWm9vbUZhY3RvciA9IHRoaXMuZ2V0RWxldmF0aW9uWm9vbUZhY3RvcihtYXBTdGF0ZSk7XG5cbiAgICBjb25zdCB0cmFuc2l0aW9ucyA9IHRoaXMuY29uZmlnLnZpc0NvbmZpZy50cmFuc2l0aW9uXG4gICAgICA/IHtcbiAgICAgICAgICBnZXRGaWxsQ29sb3I6IHtcbiAgICAgICAgICAgIGR1cmF0aW9uOiBhbmltYXRpb25Db25maWcuZHVyYXRpb25cbiAgICAgICAgICB9LFxuICAgICAgICAgIGdldEVsZXZhdGlvbjoge1xuICAgICAgICAgICAgZHVyYXRpb246IGFuaW1hdGlvbkNvbmZpZy5kdXJhdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBjb2xvckZpZWxkID0gdGhpcy5jb25maWcuY29sb3JGaWVsZCBhcyBLZXBsZXJGaWVsZDtcbiAgICBjb25zdCBoZWlnaHRGaWVsZCA9IHRoaXMuY29uZmlnLmhlaWdodEZpZWxkIGFzIEtlcGxlckZpZWxkO1xuICAgIGNvbnN0IHN0cm9rZUNvbG9yRmllbGQgPSB0aGlzLmNvbmZpZy5zdHJva2VDb2xvckZpZWxkIGFzIEtlcGxlckZpZWxkO1xuICAgIGNvbnN0IHNpemVGaWVsZCA9IHRoaXMuY29uZmlnLnNpemVGaWVsZCBhcyBLZXBsZXJGaWVsZDtcbiAgICBjb25zdCByYWRpdXNGaWVsZCA9IHRoaXMuY29uZmlnLnJhZGl1c0ZpZWxkIGFzIEtlcGxlckZpZWxkO1xuXG4gICAgaWYgKGRhdGEudGlsZVNvdXJjZSkge1xuICAgICAgY29uc3QgaG92ZXJlZE9iamVjdCA9IHRoaXMuaGFzSG92ZXJlZE9iamVjdChvYmplY3RIb3ZlcmVkKTtcblxuICAgICAgY29uc3QgbGF5ZXJzID0gW1xuICAgICAgICBuZXcgQ3VzdG9tTVZUTGF5ZXIoe1xuICAgICAgICAgIC4uLmRlZmF1bHRMYXllclByb3BzLFxuICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgb25WaWV3cG9ydExvYWQ6IHRoaXMub25WaWV3cG9ydExvYWQsXG4gICAgICAgICAgZGF0YTogZGF0YS50aWxlc2V0RGF0YVVybCxcbiAgICAgICAgICBnZXRUaWxlRGF0YTogZGF0YS50aWxlU291cmNlPy5nZXRUaWxlRGF0YSxcbiAgICAgICAgICB0aWxlU291cmNlOiBkYXRhLnRpbGVTb3VyY2UsXG4gICAgICAgICAgZ2V0RmlsdGVyVmFsdWU6IHRoaXMuZ2V0R3B1RmlsdGVyVmFsdWVBY2Nlc3NvcihvcHRzKSxcbiAgICAgICAgICBmaWx0ZXJSYW5nZTogZ3B1RmlsdGVyLmZpbHRlclJhbmdlLFxuICAgICAgICAgIGxpbmVXaWR0aFVuaXRzOiAncGl4ZWxzJyxcblxuICAgICAgICAgIGJpbmFyeTogZmFsc2UsXG4gICAgICAgICAgZWxldmF0aW9uU2NhbGU6IHZpc0NvbmZpZy5lbGV2YXRpb25TY2FsZSAqIGVsZVpvb21GYWN0b3IsXG4gICAgICAgICAgZXh0cnVkZWQ6IHZpc0NvbmZpZy5lbmFibGUzZCxcbiAgICAgICAgICBzdHJva2VkOiB2aXNDb25maWcuc3Ryb2tlZCxcblxuICAgICAgICAgIC8vIFRPRE86IHRoaXMgaXMgaGFyZCBjb2RlZCwgZGVzaWduIGEgVUkgdG8gYWxsb3cgdXNlciBhc3NpZ25lZCB1bmlxdWUgcHJvcGVydHkgaWRcbiAgICAgICAgICAvLyB1bmlxdWVJZFByb3BlcnR5OiAndWZpZCcsXG4gICAgICAgICAgcmVuZGVyU3ViTGF5ZXJzOiB0aGlzLnJlbmRlclN1YkxheWVycyxcbiAgICAgICAgICAvLyB3aGVuIHJhZGl1c1VuaXRzIGlzIG1ldGVyXG4gICAgICAgICAgZ2V0UG9pbnRSYWRpdXNTY2FsZUJ5Wm9vbTogZ2V0UHJvcGVydHlCeVpvb20odmlzQ29uZmlnLnJhZGl1c0J5Wm9vbSwgdmlzQ29uZmlnLnJhZGl1cyksXG4gICAgICAgICAgcG9pbnRSYWRpdXNVbml0czogdmlzQ29uZmlnLnJhZGl1c1VuaXRzID8gJ3BpeGVscycgOiAnbWV0ZXJzJyxcbiAgICAgICAgICBwb2ludFJhZGl1c1NjYWxlOiByYWRpdXNGaWVsZCA/IHZpc0NvbmZpZy5yYWRpdXMgOiAxLFxuXG4gICAgICAgICAgcG9pbnRSYWRpdXNNaW5QaXhlbHM6IDEsXG4gICAgICAgICAgYXV0b0hpZ2hsaWdodDogdHJ1ZSxcbiAgICAgICAgICBoaWdobGlnaHRDb2xvcjogREVGQVVMVF9ISUdITElHSFRfRklMTF9DT0xPUixcbiAgICAgICAgICBwaWNrYWJsZTogdHJ1ZSxcbiAgICAgICAgICB0cmFuc2l0aW9ucyxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgICAgZ2V0RmlsdGVyVmFsdWU6IHtcbiAgICAgICAgICAgICAgLi4uZ3B1RmlsdGVyLmZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMsXG4gICAgICAgICAgICAgIGN1cnJlbnRUaW1lOiBhbmltYXRpb24uZW5hYmxlZCA/IGFuaW1hdGlvbkNvbmZpZy5jdXJyZW50VGltZSA6IG51bGxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRGaWxsQ29sb3I6IHtcbiAgICAgICAgICAgICAgY29sb3I6IHRoaXMuY29uZmlnLmNvbG9yLFxuICAgICAgICAgICAgICBjb2xvckZpZWxkOiB0aGlzLmNvbmZpZy5jb2xvckZpZWxkLFxuICAgICAgICAgICAgICBjb2xvclNjYWxlOiB0aGlzLmNvbmZpZy5jb2xvclNjYWxlLFxuICAgICAgICAgICAgICBjb2xvckRvbWFpbjogdGhpcy5jb25maWcuY29sb3JEb21haW4sXG4gICAgICAgICAgICAgIGNvbG9yUmFuZ2U6IHZpc0NvbmZpZy5jb2xvclJhbmdlLFxuICAgICAgICAgICAgICBjdXJyZW50VGltZTogaXNJbmRleGVkRmllbGQoY29sb3JGaWVsZCkgPyBhbmltYXRpb25Db25maWcuY3VycmVudFRpbWUgOiBudWxsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0RWxldmF0aW9uOiB7XG4gICAgICAgICAgICAgIGhlaWdodEZpZWxkOiB0aGlzLmNvbmZpZy5oZWlnaHRGaWVsZCxcbiAgICAgICAgICAgICAgaGVpZ2h0U2NhbGVUeXBlOiB0aGlzLmNvbmZpZy5oZWlnaHRTY2FsZSxcbiAgICAgICAgICAgICAgaGVpZ2h0UmFuZ2U6IHZpc0NvbmZpZy5oZWlnaHRSYW5nZSxcbiAgICAgICAgICAgICAgY3VycmVudFRpbWU6IGlzSW5kZXhlZEZpZWxkKGhlaWdodEZpZWxkKSA/IGFuaW1hdGlvbkNvbmZpZy5jdXJyZW50VGltZSA6IG51bGxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRMaW5lQ29sb3I6IHtcbiAgICAgICAgICAgICAgc3Ryb2tlQ29sb3I6IHZpc0NvbmZpZy5zdHJva2VDb2xvcixcbiAgICAgICAgICAgICAgc3Ryb2tlQ29sb3JGaWVsZDogdGhpcy5jb25maWcuc3Ryb2tlQ29sb3JGaWVsZCxcbiAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBwcm9wIG5vdCBpbiBMYXllckNvbmZpZ1xuICAgICAgICAgICAgICBzdHJva2VDb2xvclNjYWxlOiB0aGlzLmNvbmZpZy5zdHJva2VDb2xvclNjYWxlLFxuICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHByb3Agbm90IGluIExheWVyQ29uZmlnXG4gICAgICAgICAgICAgIHN0cm9rZUNvbG9yRG9tYWluOiB0aGlzLmNvbmZpZy5zdHJva2VDb2xvckRvbWFpbixcbiAgICAgICAgICAgICAgLy8gRklYTUU6IFN0cmlwIG91dCBlbXB0eSBhcnJheXMgZnJvbSBpbmRpdmlkdWFsIGNvbG9yIG1hcCBzdGVwcywgYW5kIHJlcGxhY2Ugd2l0aCBgbnVsbGAsIG90aGVyd2lzZSB0aGUgbGF5ZXIgbWF5IHNob3cgdGhlIGluY29ycmVjdCBjb2xvci5cbiAgICAgICAgICAgICAgLy8gU28gZmFyIGl0IHNlZW1zIHRoYXQgaXQgdXNlcyB0aGUgcHJldmlvdXMgY29sb3IgY2hvc2VuIGluIHRoZSBwYWxldHRlIHJhdGhlciB0aGFuIHRoZSBjdXJyZW50bHkgY2hvc2VuIGNvbG9yIGZvciB0aGUgc3BlY2lmaWMgY3VzdG9tIG9yZGluYWwgdmFsdWUgd2hlbiB0aGVyZSBhcmUgXCJzcGFyc2VcIiBjb2xvciBtYXBzLlxuICAgICAgICAgICAgICAvLyBJbiBvdGhlciB3b3JkcywgYSBjb2xvciBtYXAgd2l0aCBcImhvbGVzXCIgb2YgY29sb3JzIHdpdGggdW5hc3NpZ25lZCBmaWVsZCB2YWx1ZXMsIHdoaWNoIG1heSBoYXZlIGJlZW4gYXNzaWduZWQgaW4gdGhlIHBhc3QuXG4gICAgICAgICAgICAgIC8vIEZvciBleGFtcGxlIFwiYWJjXCIgd2FzIGdyZWVuLCBzdG9yZWQgYXMgYFtcImFiY1wiXWAuIFRoZW4gXCJhYmNcIiB3YXMgcmVhc3NpZ25lZCB0byB0aGUgcmVkIGNvbG9yIG1hcCBzdGVwLCBzdG9yZWQgYXMgYFtcImFiY1wiXWAuIE5vdyB0aGUgZ3JlZW4gY29sb3IgbWFwIHN0ZXAncyBzdG9yZWQgdmFsdWUgaXMgYFtdYCwgYW5kIHRoZSBsYXllciB3aWxsIGluY29ycmVjdGx5IHN0aWxsIHJlbmRlciBcImFiY1wiIGluIGdyZWVuLlxuICAgICAgICAgICAgICAvLyBRdWljayBwYXRjaCBleGFtcGxlOlxuICAgICAgICAgICAgICAvLyBzdHJva2VDb2xvclJhbmdlOiB2aXNDb25maWc/LnN0cm9rZUNvbG9yUmFuZ2U/LmNvbG9yTWFwPy5tYXAoY20gPT5cbiAgICAgICAgICAgICAgLy8gICBjbVswXT8ubGVuZ3RoID09PSAwID8gW251bGwsIGNtWzFdXSA6IGNtXG4gICAgICAgICAgICAgIC8vICksXG4gICAgICAgICAgICAgIC8vIE5vdGU6IGZvciByZWd1bGFyIHNjYWxlcyB0aGUgY29sb3JNYXAgaW4gdGhlIGFib3ZlIHBhdGNoIGlzIHVuZGVmaW5lZCBhbmQgYnJlYWtzIHN0cm9rZUNvbG9yUmFuZ2UgdXBkYXRlIHRyaWdnZXIuXG4gICAgICAgICAgICAgIHN0cm9rZUNvbG9yUmFuZ2U6IHZpc0NvbmZpZy5zdHJva2VDb2xvclJhbmdlLFxuICAgICAgICAgICAgICBjdXJyZW50VGltZTogaXNJbmRleGVkRmllbGQoc3Ryb2tlQ29sb3JGaWVsZCkgPyBhbmltYXRpb25Db25maWcuY3VycmVudFRpbWUgOiBudWxsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0TGluZVdpZHRoOiB7XG4gICAgICAgICAgICAgIHNpemVSYW5nZTogdmlzQ29uZmlnLnNpemVSYW5nZSxcbiAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IHZpc0NvbmZpZy5zdHJva2VXaWR0aCxcbiAgICAgICAgICAgICAgc2l6ZUZpZWxkOiB0aGlzLmNvbmZpZy5zaXplRmllbGQsXG4gICAgICAgICAgICAgIHNpemVTY2FsZTogdGhpcy5jb25maWcuc2l6ZVNjYWxlLFxuICAgICAgICAgICAgICBzaXplRG9tYWluOiB0aGlzLmNvbmZpZy5zaXplRG9tYWluLFxuICAgICAgICAgICAgICBjdXJyZW50VGltZTogaXNJbmRleGVkRmllbGQoc2l6ZUZpZWxkKSA/IGFuaW1hdGlvbkNvbmZpZy5jdXJyZW50VGltZSA6IG51bGxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRQb2ludFJhZGl1czoge1xuICAgICAgICAgICAgICByYWRpdXM6IHZpc0NvbmZpZy5yYWRpdXMsXG4gICAgICAgICAgICAgIHJhZGl1c0ZpZWxkOiB0aGlzLmNvbmZpZy5yYWRpdXNGaWVsZCxcbiAgICAgICAgICAgICAgcmFkaXVzU2NhbGU6IHRoaXMuY29uZmlnLnJhZGl1c1NjYWxlLFxuICAgICAgICAgICAgICByYWRpdXNEb21haW46IHRoaXMuY29uZmlnLnJhZGl1c0RvbWFpbixcbiAgICAgICAgICAgICAgcmFkaXVzUmFuZ2U6IHRoaXMuY29uZmlnLnJhZGl1c1JhbmdlLFxuICAgICAgICAgICAgICBjdXJyZW50VGltZTogaXNJbmRleGVkRmllbGQocmFkaXVzRmllbGQpID8gYW5pbWF0aW9uQ29uZmlnLmN1cnJlbnRUaW1lIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgX3N1YkxheWVyUHJvcHM6IHtcbiAgICAgICAgICAgICdwb2x5Z29ucy1zdHJva2UnOiB7b3BhY2l0eTogdmlzQ29uZmlnLnN0cm9rZU9wYWNpdHl9LFxuICAgICAgICAgICAgJ3BvbHlnb25zLWZpbGwnOiB7XG4gICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICBjdWxsRmFjZTogR0wuQkFDS1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBsb2FkT3B0aW9uczoge1xuICAgICAgICAgICAgbXZ0OiBnZXRMb2FkZXJPcHRpb25zKCkubXZ0XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgLy8gaG92ZXIgbGF5ZXJcbiAgICAgICAgLi4uKGhvdmVyZWRPYmplY3RcbiAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgbmV3IEdlb0pzb25MYXllcih7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBwcm9wcyBub3QgdHlwZWQ/XG4gICAgICAgICAgICAgICAgLi4ub2JqZWN0SG92ZXJlZC5zb3VyY2VMYXllcj8ucHJvcHMsXG4gICAgICAgICAgICAgICAgLi4uKHRoaXMuZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcygpIGFzIGFueSksXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3cmFwTG9uZ2l0dWRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkYXRhOiBbaG92ZXJlZE9iamVjdF0sXG4gICAgICAgICAgICAgICAgZ2V0TGluZUNvbG9yOiBERUZBVUxUX0hJR0hMSUdIVF9TVFJPS0VfQ09MT1IsXG4gICAgICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiBERUZBVUxUX0hJR0hMSUdIVF9GSUxMX0NPTE9SLFxuICAgICAgICAgICAgICAgIGdldExpbmVXaWR0aDogdmlzQ29uZmlnLnN0cm9rZVdpZHRoICsgMSxcbiAgICAgICAgICAgICAgICBsaW5lV2lkdGhVbml0czogJ3BpeGVscycsXG4gICAgICAgICAgICAgICAgc3Ryb2tlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmaWxsZWQ6IHRydWVcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IFtdKVxuICAgICAgICAvLyAuLi50aWxlTGF5ZXJCb3VuZHNMYXllcihkZWZhdWx0TGF5ZXJQcm9wcy5pZCwgZGF0YSksXG4gICAgICBdO1xuXG4gICAgICByZXR1cm4gbGF5ZXJzO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxJQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxRQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFFQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxXQUFBLEdBQUFOLE9BQUE7QUFXQSxJQUFBTyxNQUFBLEdBQUFQLE9BQUE7QUFxQkEsSUFBQVEsU0FBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsZUFBQSxHQUFBTCxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQVUsVUFBQSxHQUFBTixzQkFBQSxDQUFBSixPQUFBO0FBVUEsSUFBQVcsa0JBQUEsR0FBQUMsdUJBQUEsQ0FBQVosT0FBQTtBQU1BLElBQUFhLFlBQUEsR0FBQVQsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFjLFVBQUEsR0FBQWQsT0FBQTtBQUtrQyxTQUFBZSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUosd0JBQUFJLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENB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
|
|
665
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZWQiLCJyZXF1aXJlIiwiX212dCIsIl9wbXRpbGVzIiwiX2NvbnN0YW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdHlwZWQyIiwiX2NvbW1vblV0aWxzIiwiX2NvbnN0YW50czIiLCJfdGFibGUiLCJfbXZ0TGF5ZXIiLCJfdmVjdG9yVGlsZUljb24iLCJfYmFzZUxheWVyIiwiX2Fic3RyYWN0VGlsZUxheWVyIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdGlsZURhdGFzZXQiLCJfdGlsZVV0aWxzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiX3N1cGVyUHJvcEdldCIsInAiLCJfZ2V0MiIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIkRFRkFVTFRfSElHSExJR0hUX0ZJTExfQ09MT1IiLCJleHBvcnRzIiwiREVGQVVMVF9ISUdITElHSFRfU1RST0tFX0NPTE9SIiwiTUFYX0NBQ0hFX1NJWkVfTU9CSUxFIiwiREVGQVVMVF9TVFJPS0VfV0lEVEgiLCJVVUlEX0NBTkRJREFURVMiLCJ2ZWN0b3JUaWxlVmlzQ29uZmlncyIsImNvbW1vblRpbGVWaXNDb25maWdzIiwic3Ryb2tlZCIsIkxBWUVSX1ZJU19DT05GSUdTIiwiZGVmYXVsdFZhbHVlIiwic3Ryb2tlQ29sb3JTY2FsZSIsInN0cm9rZUNvbG9yUmFuZ2UiLCJzaXplUmFuZ2UiLCJzdHJva2VXaWR0aCIsInRoaWNrbmVzcyIsInByb3BlcnR5IiwiYWxsb3dDdXN0b21WYWx1ZSIsInJhZGl1c1NjYWxlIiwicmFkaXVzUmFuZ2UiLCJ0eXBlIiwiaXNSYW5nZWQiLCJyYW5nZSIsInN0ZXAiLCJ0aWxlTGF5ZXJCb3VuZHNMYXllciIsImlkIiwicHJvcHMiLCJib3VuZHMiLCJkYXRhIiwicGF0aCIsImxheWVyIiwiUGF0aExheWVyIiwiY29uY2F0IiwiZ2V0UGF0aCIsImQiLCJnZXRDb2xvciIsImdldFdpZHRoIiwid2lkdGhVbml0cyIsInBpY2thYmxlIiwiVmVjdG9yVGlsZUxheWVyIiwiX0Fic3RyYWN0VGlsZUxheWVyIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwicmVnaXN0ZXJWaXNDb25maWciLCJ0aWxlRGF0YXNldCIsImluaXRUaWxlRGF0YXNldCIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwiVGlsZURhdGFzZXQiLCJnZXRUaWxlSWQiLCJ0aWxlIiwiZ2V0SXRlcmFibGUiLCJjb250ZW50Iiwic2hhcGUiLCJmZWF0dXJlcyIsImdldFJvd0NvdW50IiwiZ2V0Um93VmFsdWUiLCJhY2Nlc3NSb3dWYWx1ZSIsIkxBWUVSX1RZUEVTIiwidmVjdG9yVGlsZSIsIlZlY3RvclRpbGVJY29uIiwiRGF0YXNldFR5cGUiLCJWRUNUT1JfVElMRSIsInZpc3VhbENoYW5uZWxzIiwic3Ryb2tlQ29sb3IiLCJmaWVsZCIsInNjYWxlIiwiZG9tYWluIiwiY2hhbm5lbFNjYWxlVHlwZSIsIkNIQU5ORUxfU0NBTEVTIiwiY29sb3IiLCJhY2Nlc3NvciIsImNvbmRpdGlvbiIsImNvbmZpZyIsInZpc0NvbmZpZyIsIm51bGxWYWx1ZSIsImdldEF0dHJpYnV0ZVZhbHVlIiwic2l6ZSIsInJhZGl1cyIsImdldERlZmF1bHRMYXllckNvbmZpZyIsImRlZmF1bHRMYXllckNvbmZpZyIsImNvbG9yU2NhbGUiLCJTQ0FMRV9UWVBFUyIsInF1YW50aXplIiwic3Ryb2tlQ29sb3JGaWVsZCIsInN0cm9rZUNvbG9yRG9tYWluIiwicXVhbnRpbGUiLCJjb2xvclVJIiwiREVGQVVMVF9DT0xPUl9VSSIsInJhZGl1c0ZpZWxkIiwicmFkaXVzRG9tYWluIiwibGluZWFyIiwidW5pcXVlSWRGaWVsZCIsImdldEhvdmVyRGF0YSIsIm9iamVjdCIsImRhdGFDb250YWluZXIiLCJmaWVsZHMiLCJtYXAiLCJfb2JqZWN0JHByb3BlcnRpZXMkZiQiLCJfb2JqZWN0JHByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwiY2FsY3VsYXRlTGF5ZXJEb21haW4iLCJkYXRhc2V0IiwidmlzdWFsQ2hhbm5lbCIsIl9maWVsZCRmaWx0ZXJQcm9wcyIsIl9maWVsZCRmaWx0ZXJQcm9wczIiLCJfZmllbGQkZmlsdGVyUHJvcHMzIiwiZGVmYXVsdERvbWFpbiIsImlzRG9tYWluUXVhbnRpbGVzIiwiZmlsdGVyUHJvcHMiLCJkb21haW5RdWFudGlsZXMiLCJpc0RvbWFpblN0b3BzIiwiZG9tYWluU3RvcHMiLCJnZXRTY2FsZU9wdGlvbnMiLCJjaGFubmVsS2V5IiwiX2ZpZWxkJGZpbHRlclByb3BzNCIsIm9wdGlvbnMiLCJLZXBsZXJMYXllciIsImNoYW5uZWwiLCJkeW5hbWljQ29sb3IiLCJpbmRleEtleSIsImlzSW5kZXhlZEZpZWxkIiwiX2ZpZWxkJGluZGV4QnkiLCJmaWVsZE5hbWUiLCJpbmRleEJ5IiwibWFwcGVkVmFsdWUiLCJkYXR1bSIsImZpZWxkSWR4IiwidXBkYXRlTGF5ZXJNZXRhIiwiZGF0YXNldHMiLCJkYXRhc2V0TWV0YSIsIm1ldGFkYXRhIiwidXBkYXRlTWV0YSIsImRhdGFzZXRJZCIsImZvcm1hdExheWVyRGF0YSIsIm9sZExheWVyRGF0YSIsImFuaW1hdGlvbkNvbmZpZyIsImRhdGFJZCIsIm5vdE51bGxvclVuZGVmaW5lZCIsInRpbGVTb3VyY2UiLCJ0aWxlc2V0RGF0YVVybCIsImRhdGFzZXRNZXRhZGF0YSIsInJlbW90ZVRpbGVGb3JtYXQiLCJSZW1vdGVUaWxlRm9ybWF0IiwiTVZUIiwiX2RhdGFzZXRNZXRhZGF0YSR0aWxlIiwidHJhbnNmb3JtRmV0Y2giLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJpbnB1dCIsImluaXQiLCJyZXF1ZXN0RGF0YSIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsInVybCIsInNlYXJjaFBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsImFicnVwdCIsImZldGNoIiwic3RvcCIsIl94IiwiX3gyIiwiTVZUU291cmNlIiwiY3JlYXRlRGF0YVNvdXJjZSIsImRlY29kZVVSSUNvbXBvbmVudCIsIm12dCIsIm1ldGFkYXRhVXJsIiwidGlsZXNldE1ldGFkYXRhVXJsIiwibG9hZE9wdGlvbnMiLCJQTVRJTEVTIiwiUE1UaWxlc1NvdXJjZSIsImdldFRpbGVVcmwiLCJoYXNIb3ZlcmVkT2JqZWN0Iiwib2JqZWN0SW5mbyIsIl9vYmplY3RJbmZvJHRpbGUiLCJpbmRleCIsInJlbmRlclN1YkxheWVycyIsIl9kYXRhIiwiX2RhdGEyIiwiem9vbSIsInoiLCJHZW9Kc29uTGF5ZXIiLCJnZXRGaWxsQ29sb3IiLCJnZXRGaWxsQ29sb3JCeVpvb20iLCJnZXRFbGV2YXRpb24iLCJnZXRFbGV2YXRpb25CeVpvb20iLCJwb2ludFJhZGl1c1NjYWxlIiwicG9pbnRSYWRpdXNVbml0cyIsImdldFBvaW50UmFkaXVzIiwiYXV0b0hpZ2hsaWdodCIsIndyYXBMb25naXR1ZGUiLCJyZW5kZXJMYXllciIsIm9wdHMiLCJtYXBTdGF0ZSIsImdwdUZpbHRlciIsIm9iamVjdEhvdmVyZWQiLCJsYXllckNhbGxiYWNrcyIsIl90aGlzJGNvbmZpZyIsImFuaW1hdGlvbiIsInNldExheWVyRG9tYWluIiwib25TZXRMYXllckRvbWFpbiIsImRlZmF1bHRMYXllclByb3BzIiwiZ2V0RGVmYXVsdERlY2tMYXllclByb3BzIiwiZWxlWm9vbUZhY3RvciIsImdldEVsZXZhdGlvblpvb21GYWN0b3IiLCJ0cmFuc2l0aW9ucyIsInRyYW5zaXRpb24iLCJkdXJhdGlvbiIsInVuZGVmaW5lZCIsImNvbG9yRmllbGQiLCJoZWlnaHRGaWVsZCIsInNpemVGaWVsZCIsIl9kYXRhJHRpbGVTb3VyY2UiLCJfb2JqZWN0SG92ZXJlZCRzb3VyY2UiLCJob3ZlcmVkT2JqZWN0IiwidW5pcXVlSWRQcm9wZXJ0eSIsImhpZ2hsaWdodGVkRmVhdHVyZUlkIiwiX3RoaXMkY29uZmlnJHVuaXF1ZUlkIiwiZmluZCIsImsiLCJwZXJUaWxlT3ZlcmxheXMiLCJfZ2V0UGVyVGlsZU92ZXJsYXlzIiwibGF5ZXJzIiwiQ3VzdG9tTVZUTGF5ZXIiLCJvblZpZXdwb3J0TG9hZCIsImdldFRpbGVEYXRhIiwiZ2V0RmlsdGVyVmFsdWUiLCJnZXRHcHVGaWx0ZXJWYWx1ZUFjY2Vzc29yIiwiZmlsdGVyUmFuZ2UiLCJsaW5lV2lkdGhVbml0cyIsImJpbmFyeSIsImVsZXZhdGlvblNjYWxlIiwiZXh0cnVkZWQiLCJlbmFibGUzZCIsImdldFBvaW50UmFkaXVzU2NhbGVCeVpvb20iLCJnZXRQcm9wZXJ0eUJ5Wm9vbSIsInJhZGl1c0J5Wm9vbSIsInJhZGl1c1VuaXRzIiwicG9pbnRSYWRpdXNNaW5QaXhlbHMiLCJoaWdobGlnaHRDb2xvciIsInVwZGF0ZVRyaWdnZXJzIiwiZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycyIsImN1cnJlbnRUaW1lIiwiZW5hYmxlZCIsImNvbG9yRG9tYWluIiwiY29sb3JSYW5nZSIsImhlaWdodFNjYWxlVHlwZSIsImhlaWdodFNjYWxlIiwiaGVpZ2h0UmFuZ2UiLCJnZXRMaW5lQ29sb3IiLCJnZXRMaW5lV2lkdGgiLCJzaXplU2NhbGUiLCJzaXplRG9tYWluIiwiX3N1YkxheWVyUHJvcHMiLCJvcGFjaXR5Iiwic3Ryb2tlT3BhY2l0eSIsInBhcmFtZXRlcnMiLCJjdWxsRmFjZSIsIkdMIiwiQkFDSyIsImdldExvYWRlck9wdGlvbnMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwic291cmNlTGF5ZXIiLCJnZXREZWZhdWx0SG92ZXJMYXllclByb3BzIiwidmlzaWJsZSIsImZpbGxlZCIsIl90aGlzMiIsIl90aGlzJHRpbGVEYXRhc2V0IiwiX3RoaXMkdGlsZURhdGFzZXQkZ2V0IiwiX2hvdmVyZWRPYmplY3QkcHJvcGVyIiwidGlsZXMiLCJnZXRUaWxlcyIsImhvdmVyZWRJZCIsIlN0cmluZyIsImJ5VGlsZSIsIl9pdGVyYXRvciIsIl9zdGVwIiwidGlsZUlkIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl9mJHByb3BlcnRpZXMiLCJmaWQiLCJlcnIiLCJlbnRyaWVzIiwiX3JlZjIiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5MiIsImZlYXRzIiwiYm91bmRpbmdCb3giLCJsaW5lSm9pbnRSb3VuZGVkIiwibGluZUNhcFJvdW5kZWQiLCJjbGlwQm91bmRzIiwiZXh0ZW5zaW9ucyIsIkNsaXBFeHRlbnNpb24iLCJfdW51c2VkIiwiZmluZERlZmF1bHRMYXllclByb3BzIiwiQWJzdHJhY3RUaWxlTGF5ZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdmVjdG9yLXRpbGUvdmVjdG9yLXRpbGUtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtGZWF0dXJlQ29sbGVjdGlvbiwgRmVhdHVyZX0gZnJvbSAnZ2VvanNvbic7XG5cbmltcG9ydCB7TGF5ZXIgYXMgRGVja0xheWVyfSBmcm9tICdAZGVjay5nbC9jb3JlL3R5cGVkJztcbmltcG9ydCB7X1RpbGUyREhlYWRlciBhcyBUaWxlMkRIZWFkZXJ9IGZyb20gJ0BkZWNrLmdsL2dlby1sYXllcnMvdHlwZWQnO1xuaW1wb3J0IHtHZW9Kc29uTGF5ZXIsIFBhdGhMYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzL3R5cGVkJztcbmltcG9ydCB7TVZUU291cmNlLCBNVlRUaWxlU291cmNlfSBmcm9tICdAbG9hZGVycy5nbC9tdnQnO1xuaW1wb3J0IHtQTVRpbGVzU291cmNlLCBQTVRpbGVzVGlsZVNvdXJjZX0gZnJvbSAnQGxvYWRlcnMuZ2wvcG10aWxlcyc7XG5pbXBvcnQgR0wgZnJvbSAnQGx1bWEuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7Q2xpcEV4dGVuc2lvbn0gZnJvbSAnQGRlY2suZ2wvZXh0ZW5zaW9ucy90eXBlZCc7XG5cbmltcG9ydCB7bm90TnVsbG9yVW5kZWZpbmVkfSBmcm9tICdAa2VwbGVyLmdsL2NvbW1vbi11dGlscyc7XG5pbXBvcnQge1xuICBnZXRMb2FkZXJPcHRpb25zLFxuICBEYXRhc2V0VHlwZSxcbiAgTEFZRVJfVFlQRVMsXG4gIFJlbW90ZVRpbGVGb3JtYXQsXG4gIFZlY3RvclRpbGVEYXRhc2V0TWV0YWRhdGEsXG4gIFNDQUxFX1RZUEVTLFxuICBDSEFOTkVMX1NDQUxFUyxcbiAgREVGQVVMVF9DT0xPUl9VSSxcbiAgTEFZRVJfVklTX0NPTkZJR1Ncbn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgZ2V0VGlsZVVybCxcbiAgS2VwbGVyVGFibGUgYXMgS2VwbGVyRGF0YXNldCxcbiAgRGF0YXNldHMgYXMgS2VwbGVyRGF0YXNldHMsXG4gIEdwdUZpbHRlcixcbiAgVmVjdG9yVGlsZU1ldGFkYXRhXG59IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuaW1wb3J0IHtcbiAgQW5pbWF0aW9uQ29uZmlnLFxuICBGaWVsZCBhcyBLZXBsZXJGaWVsZCxcbiAgTGF5ZXJDb2xvckNvbmZpZyxcbiAgTGF5ZXJIZWlnaHRDb25maWcsXG4gIE1lcmdlLFxuICBNYXBTdGF0ZSxcbiAgQmluZGVkTGF5ZXJDYWxsYmFja3MsXG4gIFZpc0NvbmZpZ1JhbmdlLFxuICBWaXNDb25maWdOdW1iZXIsXG4gIERvbWFpblN0b3BzXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtEYXRhQ29udGFpbmVySW50ZXJmYWNlfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuaW1wb3J0IHtNVlRMYXllciBhcyBDdXN0b21NVlRMYXllcn0gZnJvbSAnLi9tdnQtbGF5ZXInO1xuaW1wb3J0IFZlY3RvclRpbGVJY29uIGZyb20gJy4vdmVjdG9yLXRpbGUtaWNvbic7XG5pbXBvcnQge1xuICBkZWZhdWx0IGFzIEtlcGxlckxheWVyLFxuICBMYXllckJhc2VDb25maWcsXG4gIExheWVyQmFzZUNvbmZpZ1BhcnRpYWwsXG4gIFZpc3VhbENoYW5uZWwsXG4gIFZpc3VhbENoYW5uZWxEb21haW4sXG4gIFZpc3VhbENoYW5uZWxGaWVsZFxufSBmcm9tICcuLi9iYXNlLWxheWVyJztcbmltcG9ydCB7RmluZERlZmF1bHRMYXllclByb3BzUmV0dXJuVmFsdWV9IGZyb20gJy4uL2xheWVyLXV0aWxzJztcblxuaW1wb3J0IEFic3RyYWN0VGlsZUxheWVyLCB7XG4gIExheWVyRGF0YSBhcyBDb21tb25MYXllckRhdGEsXG4gIGNvbW1vblRpbGVWaXNDb25maWdzLFxuICBBYnN0cmFjdFRpbGVMYXllckNvbmZpZyxcbiAgQWJzdHJhY3RUaWxlTGF5ZXJWaXNDb25maWdTZXR0aW5nc1xufSBmcm9tICcuL2Fic3RyYWN0LXRpbGUtbGF5ZXInO1xuaW1wb3J0IFRpbGVEYXRhc2V0IGZyb20gJy4vY29tbW9uLXRpbGUvdGlsZS1kYXRhc2V0JztcbmltcG9ydCB7XG4gIGlzRG9tYWluU3RvcHMsXG4gIGlzRG9tYWluUXVhbnRpbGVzLFxuICBpc0luZGV4ZWRGaWVsZCxcbiAgZ2V0UHJvcGVydHlCeVpvb21cbn0gZnJvbSAnLi9jb21tb24tdGlsZS90aWxlLXV0aWxzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSElHSExJR0hUX0ZJTExfQ09MT1IgPSBbMjUyLCAyNDIsIDI2LCAxNTBdO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSElHSExJR0hUX1NUUk9LRV9DT0xPUiA9IFsyNTIsIDI0MiwgMjYsIDI1NV07XG5leHBvcnQgY29uc3QgTUFYX0NBQ0hFX1NJWkVfTU9CSUxFID0gMTsgLy8gTWluaW1pemUgY2FjaGluZywgdmlzaWJsZSB0aWxlcyB3aWxsIGFsd2F5cyBiZSBsb2FkZWRcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NUUk9LRV9XSURUSCA9IDE7XG5leHBvcnQgY29uc3QgVVVJRF9DQU5ESURBVEVTID0gW1xuICAndWZpZCcsXG4gICdVRklEJyxcbiAgJ2lkJyxcbiAgJ0lEJyxcbiAgJ2ZpZCcsXG4gICdGSUQnLFxuICAnb2JqZWN0aWQnLFxuICAnT0JKRUNUSUQnLFxuICAnZ2lkJyxcbiAgJ0dJRCcsXG4gICdmZWF0dXJlX2lkJyxcbiAgJ0ZFQVRVUkVfSUQnLFxuICAnX2lkJ1xuXTtcbi8qKlxuICogVHlwZSBmb3IgdHJhbnNmb3JtUmVxdWVzdCByZXR1cm5lZCBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgdHlwZSBSZXF1ZXN0UGFyYW1ldGVycyA9IHtcbiAgLyoqIFRoZSBVUkwgdG8gYmUgcmVxdWVzdGVkLiAqL1xuICB1cmw6IHN0cmluZztcbiAgLyoqIFNlYXJjaCBwYXJhbWV0ZXJzIHRvIGJlIGFkZGVkIG9udG8gdGhlIFVSTC4gKi9cbiAgc2VhcmNoUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXM7XG4gIC8qKiBPcHRpb25zIHBhc3NlZCB0byBmZXRjaC4gKi9cbiAgb3B0aW9uczogUmVxdWVzdEluaXQ7XG59O1xuXG4vLyBUaGlzIHR5cGUgKnNlZW1zKiB0byBiZSB3aGF0IGxvYWRlcnMuZ2wgY3VycmVudGx5IHJldHVybnMgZm9yIHRpbGUgY29udGVudC5cbi8vIEFwcGFyZW50bHkgdGhpcyBtaWdodCBiZSBkaWZmZXJlbnQgZGVwZW5kaW5nIG9uIHRoZSBsb2FkZXJzIHZlcnNpb24sIGFuZCBmb3IuLi5cbi8vIHJlYXNvbnMgd2UgdXNlIHR3byBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgbG9hZGVycyByaWdodCBub3cuXG4vLyBUT0RPOiBUaGUgRmVhdHVyZXNbXSB2ZXJzaW9uIHNob3VsZCBub3QgYmUgbmVlZGVkIHdoZW4gd2UgdXBkYXRlIHRvIGEgbmV3ZXJcbi8vIHZlcnNpb24gb2YgRGVjay5nbCBhbmQgdXNlIG9ubHkgb25lIHZlcnNpb24gb2YgbG9hZGVyc1xudHlwZSBUaWxlQ29udGVudCA9XG4gIHwgKEZlYXR1cmVDb2xsZWN0aW9uICYge3NoYXBlOiAnZ2VvanNvbi10YWJsZSd9KVxuICB8IChGZWF0dXJlW10gJiB7c2hhcGU6IHVuZGVmaW5lZH0pO1xuXG50eXBlIFZlY3RvclRpbGUgPSBUaWxlMkRIZWFkZXI8VGlsZUNvbnRlbnQ+O1xuXG50eXBlIExheWVyRGF0YSA9IENvbW1vbkxheWVyRGF0YSAmIHtcbiAgdGlsZXNldERhdGFVcmw/OiBzdHJpbmcgfCBudWxsO1xuICB0aWxlU291cmNlOiBNVlRUaWxlU291cmNlIHwgUE1UaWxlc1RpbGVTb3VyY2UgfCBudWxsO1xufTtcblxudHlwZSBWZWN0b3JUaWxlTGF5ZXJSZW5kZXJPcHRpb25zID0gTWVyZ2U8XG4gIHtcbiAgICBpZHg6IG51bWJlcjtcbiAgICB2aXNpYmxlOiBib29sZWFuO1xuICAgIG1hcFN0YXRlOiBNYXBTdGF0ZTtcbiAgICBkYXRhOiBhbnk7XG4gICAgYW5pbWF0aW9uQ29uZmlnOiBBbmltYXRpb25Db25maWc7XG4gICAgZ3B1RmlsdGVyOiBHcHVGaWx0ZXI7XG4gICAgbGF5ZXJDYWxsYmFja3M6IEJpbmRlZExheWVyQ2FsbGJhY2tzO1xuICAgIG9iamVjdEhvdmVyZWQ6IHtcbiAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgICB0aWxlOiBWZWN0b3JUaWxlO1xuICAgICAgc291cmNlTGF5ZXI6IHR5cGVvZiBHZW9Kc29uTGF5ZXI7XG4gICAgfTtcbiAgfSxcbiAgTGF5ZXJEYXRhXG4+O1xuXG5leHBvcnQgY29uc3QgdmVjdG9yVGlsZVZpc0NvbmZpZ3MgPSB7XG4gIC4uLmNvbW1vblRpbGVWaXNDb25maWdzLFxuXG4gIHN0cm9rZWQ6IHtcbiAgICAuLi5MQVlFUl9WSVNfQ09ORklHUy5zdHJva2VkLFxuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2VcbiAgfSxcblxuICAvLyBUT0RPIGZpZ3VyZSBvdXQgd2h5IHN0cm9rZUNvbG9yU2NhbGUgY2FuJ3QgYmUgY29uc3RcbiAgc3Ryb2tlQ29sb3JTY2FsZTogJ3N0cm9rZUNvbG9yU2NhbGUnIGFzIGFueSxcbiAgc3Ryb2tlQ29sb3JSYW5nZTogJ3N0cm9rZUNvbG9yUmFuZ2UnIGFzIGNvbnN0LFxuXG4gIHNpemVSYW5nZTogJ3N0cm9rZVdpZHRoUmFuZ2UnIGFzIGNvbnN0LFxuICBzdHJva2VXaWR0aDoge1xuICAgIC4uLkxBWUVSX1ZJU19DT05GSUdTLnRoaWNrbmVzcyxcbiAgICBwcm9wZXJ0eTogJ3N0cm9rZVdpZHRoJyxcbiAgICBkZWZhdWx0VmFsdWU6IDAuNSxcbiAgICBhbGxvd0N1c3RvbVZhbHVlOiBmYWxzZVxuICB9LFxuXG4gIHJhZGl1c1NjYWxlOiAncmFkaXVzU2NhbGUnIGFzIGFueSxcbiAgcmFkaXVzUmFuZ2U6IHtcbiAgICAuLi5MQVlFUl9WSVNfQ09ORklHUy5yYWRpdXNSYW5nZSxcbiAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICBkZWZhdWx0VmFsdWU6IFswLCAxXSxcbiAgICBpc1JhbmdlZDogdHJ1ZSxcbiAgICByYW5nZTogWzAsIDFdLFxuICAgIHN0ZXA6IDAuMDFcbiAgfSBhcyBWaXNDb25maWdSYW5nZVxufTtcblxuZXhwb3J0IHR5cGUgVmVjdG9yVGlsZUxheWVyQ29uZmlnID0gTWVyZ2U8XG4gIEFic3RyYWN0VGlsZUxheWVyQ29uZmlnLFxuICB7XG4gICAgc2l6ZUZpZWxkPzogVmlzdWFsQ2hhbm5lbEZpZWxkO1xuICAgIHNpemVTY2FsZT86IHN0cmluZztcbiAgICBzaXplRG9tYWluPzogVmlzdWFsQ2hhbm5lbERvbWFpbjtcblxuICAgIHN0cm9rZUNvbG9yRmllbGQ6IFZpc3VhbENoYW5uZWxGaWVsZDtcblxuICAgIHJhZGl1c0ZpZWxkPzogVmlzdWFsQ2hhbm5lbEZpZWxkO1xuICAgIHJhZGl1c1NjYWxlPzogc3RyaW5nO1xuICAgIHJhZGl1c0RvbWFpbj86IFZpc3VhbENoYW5uZWxEb21haW47XG4gICAgcmFkaXVzUmFuZ2U/OiBhbnk7XG5cbiAgICB1bmlxdWVJZEZpZWxkPzogc3RyaW5nIHwgbnVsbDtcbiAgfVxuPjtcblxuZXhwb3J0IHR5cGUgVmVjdG9yVGlsZUxheWVyVmlzQ29uZmlnU2V0dGluZ3MgPSBNZXJnZTxcbiAgQWJzdHJhY3RUaWxlTGF5ZXJWaXNDb25maWdTZXR0aW5ncyxcbiAge1xuICAgIHNpemVSYW5nZTogVmlzQ29uZmlnUmFuZ2U7XG4gICAgc3Ryb2tlV2lkdGg6IFZpc0NvbmZpZ051bWJlcjtcbiAgfVxuPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRpbGVMYXllckJvdW5kc0xheWVyKGlkOiBzdHJpbmcsIHByb3BzOiB7Ym91bmRzPzogbnVtYmVyW119KTogRGVja0xheWVyW10ge1xuICBjb25zdCB7Ym91bmRzfSA9IHByb3BzO1xuICBpZiAoYm91bmRzPy5sZW5ndGggIT09IDQpIHJldHVybiBbXTtcblxuICBjb25zdCBkYXRhID0gW1xuICAgIHtcbiAgICAgIHBhdGg6IFtcbiAgICAgICAgW2JvdW5kc1swXSwgYm91bmRzWzFdXSxcbiAgICAgICAgW2JvdW5kc1syXSwgYm91bmRzWzFdXSxcbiAgICAgICAgW2JvdW5kc1syXSwgYm91bmRzWzNdXSxcbiAgICAgICAgW2JvdW5kc1swXSwgYm91bmRzWzNdXSxcbiAgICAgICAgW2JvdW5kc1swXSwgYm91bmRzWzFdXVxuICAgICAgXVxuICAgIH1cbiAgXTtcblxuICBjb25zdCBsYXllciA9IG5ldyBQYXRoTGF5ZXIoe1xuICAgIGlkOiBgJHtpZH0tdmVjdG9yLXRpbGUtYm91bmRzYCxcbiAgICBkYXRhLFxuICAgIGdldFBhdGg6IGQgPT4gZC5wYXRoLFxuICAgIGdldENvbG9yOiBbMTI4LCAxMjgsIDEyOCwgMjU1XSxcbiAgICBnZXRXaWR0aDogMSxcbiAgICB3aWR0aFVuaXRzOiAncGl4ZWxzJyxcbiAgICBwaWNrYWJsZTogZmFsc2VcbiAgfSk7XG5cbiAgcmV0dXJuIFtsYXllcl07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlY3RvclRpbGVMYXllciBleHRlbmRzIEFic3RyYWN0VGlsZUxheWVyPFZlY3RvclRpbGUsIEZlYXR1cmVbXT4ge1xuICBkZWNsYXJlIGNvbmZpZzogVmVjdG9yVGlsZUxheWVyQ29uZmlnO1xuICBkZWNsYXJlIHZpc0NvbmZpZ1NldHRpbmdzOiBWZWN0b3JUaWxlTGF5ZXJWaXNDb25maWdTZXR0aW5ncztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogQ29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBBYnN0cmFjdFRpbGVMYXllcj5bMF0pIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyh2ZWN0b3JUaWxlVmlzQ29uZmlncyk7XG4gICAgdGhpcy50aWxlRGF0YXNldCA9IHRoaXMuaW5pdFRpbGVEYXRhc2V0KCk7XG4gIH1cblxuICBtZXRhID0ge307XG5cbiAgc3RhdGljIGZpbmREZWZhdWx0TGF5ZXJQcm9wcyhkYXRhc2V0OiBLZXBsZXJEYXRhc2V0KTogRmluZERlZmF1bHRMYXllclByb3BzUmV0dXJuVmFsdWUge1xuICAgIGlmIChkYXRhc2V0LnR5cGUgIT09IERhdGFzZXRUeXBlLlZFQ1RPUl9USUxFKSB7XG4gICAgICByZXR1cm4ge3Byb3BzOiBbXX07XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5maW5kRGVmYXVsdExheWVyUHJvcHMoZGF0YXNldCk7XG4gIH1cblxuICBpbml0VGlsZURhdGFzZXQoKTogVGlsZURhdGFzZXQ8VmVjdG9yVGlsZSwgRmVhdHVyZVtdPiB7XG4gICAgcmV0dXJuIG5ldyBUaWxlRGF0YXNldCh7XG4gICAgICBnZXRUaWxlSWQ6ICh0aWxlOiBWZWN0b3JUaWxlKTogc3RyaW5nID0+IHRpbGUuaWQsXG4gICAgICBnZXRJdGVyYWJsZTogKHRpbGU6IFZlY3RvclRpbGUpOiBGZWF0dXJlW10gPT4ge1xuICAgICAgICBpZiAodGlsZS5jb250ZW50KSB7XG4gICAgICAgICAgcmV0dXJuIHRpbGUuY29udGVudC5zaGFwZSA9PT0gJ2dlb2pzb24tdGFibGUnID8gdGlsZS5jb250ZW50LmZlYXR1cmVzIDogdGlsZS5jb250ZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH0sXG4gICAgICBnZXRSb3dDb3VudDogKGZlYXR1cmVzOiBGZWF0dXJlW10pOiBudW1iZXIgPT4gZmVhdHVyZXMubGVuZ3RoLFxuICAgICAgZ2V0Um93VmFsdWU6IHRoaXMuYWNjZXNzUm93VmFsdWVcbiAgICB9KTtcbiAgfVxuXG4gIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIExBWUVSX1RZUEVTLnZlY3RvclRpbGU7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnVmVjdG9yIFRpbGUnO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpOiBLZXBsZXJMYXllclsnbGF5ZXJJY29uJ10ge1xuICAgIHJldHVybiBWZWN0b3JUaWxlSWNvbjtcbiAgfVxuXG4gIGdldCBzdXBwb3J0ZWREYXRhc2V0VHlwZXMoKTogRGF0YXNldFR5cGVbXSB7XG4gICAgcmV0dXJuIFtEYXRhc2V0VHlwZS5WRUNUT1JfVElMRV07XG4gIH1cblxuICBnZXQgdmlzdWFsQ2hhbm5lbHMoKTogUmVjb3JkPHN0cmluZywgVmlzdWFsQ2hhbm5lbD4ge1xuICAgIGNvbnN0IHZpc3VhbENoYW5uZWxzID0gc3VwZXIudmlzdWFsQ2hhbm5lbHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnZpc3VhbENoYW5uZWxzLFxuICAgICAgc3Ryb2tlQ29sb3I6IHtcbiAgICAgICAgcHJvcGVydHk6ICdzdHJva2VDb2xvcicsXG4gICAgICAgIGZpZWxkOiAnc3Ryb2tlQ29sb3JGaWVsZCcsXG4gICAgICAgIHNjYWxlOiAnc3Ryb2tlQ29sb3JTY2FsZScsXG4gICAgICAgIGRvbWFpbjogJ3N0cm9rZUNvbG9yRG9tYWluJyxcbiAgICAgICAgcmFuZ2U6ICdzdHJva2VDb2xvclJhbmdlJyxcbiAgICAgICAga2V5OiAnc3Ryb2tlQ29sb3InLFxuICAgICAgICBjaGFubmVsU2NhbGVUeXBlOiBDSEFOTkVMX1NDQUxFUy5jb2xvcixcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRMaW5lQ29sb3InLFxuICAgICAgICBjb25kaXRpb246IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLnN0cm9rZWQsXG4gICAgICAgIG51bGxWYWx1ZTogdmlzdWFsQ2hhbm5lbHMuY29sb3IubnVsbFZhbHVlLFxuICAgICAgICBnZXRBdHRyaWJ1dGVWYWx1ZTogY29uZmlnID0+IGNvbmZpZy52aXNDb25maWcuc3Ryb2tlQ29sb3IgfHwgY29uZmlnLmNvbG9yXG4gICAgICB9LFxuICAgICAgc2l6ZToge1xuICAgICAgICBwcm9wZXJ0eTogJ3N0cm9rZScsXG4gICAgICAgIGZpZWxkOiAnc2l6ZUZpZWxkJyxcbiAgICAgICAgc2NhbGU6ICdzaXplU2NhbGUnLFxuICAgICAgICBkb21haW46ICdzaXplRG9tYWluJyxcbiAgICAgICAgcmFuZ2U6ICdzaXplUmFuZ2UnLFxuICAgICAgICBrZXk6ICdzaXplJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogQ0hBTk5FTF9TQ0FMRVMuc2l6ZSxcbiAgICAgICAgbnVsbFZhbHVlOiAwLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldExpbmVXaWR0aCcsXG4gICAgICAgIGNvbmRpdGlvbjogY29uZmlnID0+IGNvbmZpZy52aXNDb25maWcuc3Ryb2tlZCxcbiAgICAgICAgZ2V0QXR0cmlidXRlVmFsdWU6IGNvbmZpZyA9PiBjb25maWcudmlzQ29uZmlnLnN0cm9rZVdpZHRoIHx8IERFRkFVTFRfU1RST0tFX1dJRFRIXG4gICAgICB9LFxuICAgICAgcmFkaXVzOiB7XG4gICAgICAgIHByb3BlcnR5OiAncmFkaXVzJyxcbiAgICAgICAgZmllbGQ6ICdyYWRpdXNGaWVsZCcsXG4gICAgICAgIHNjYWxlOiAncmFkaXVzU2NhbGUnLFxuICAgICAgICBkb21haW46ICdyYWRpdXNEb21haW4nLFxuICAgICAgICByYW5nZTogJ3JhZGl1c1JhbmdlJyxcbiAgICAgICAga2V5OiAncmFkaXVzJyxcbiAgICAgICAgY2hhbm5lbFNjYWxlVHlwZTogQ0hBTk5FTF9TQ0FMRVMuc2l6ZSxcbiAgICAgICAgbnVsbFZhbHVlOiAwLFxuICAgICAgICBnZXRBdHRyaWJ1dGVWYWx1ZTogY29uZmlnID0+IHtcbiAgICAgICAgICByZXR1cm4gY29uZmlnLnZpc0NvbmZpZy5yYWRpdXMgfHwgY29uZmlnLnJhZGl1cztcbiAgICAgICAgfSxcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRQb2ludFJhZGl1cycsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy5yYWRpdXNcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVmYXVsdExheWVyQ29uZmlnKFxuICAgIHByb3BzOiBMYXllckJhc2VDb25maWdQYXJ0aWFsXG4gICk6IExheWVyQmFzZUNvbmZpZyAmIFBhcnRpYWw8TGF5ZXJDb2xvckNvbmZpZyAmIExheWVySGVpZ2h0Q29uZmlnPiB7XG4gICAgY29uc3QgZGVmYXVsdExheWVyQ29uZmlnID0gc3VwZXIuZ2V0RGVmYXVsdExheWVyQ29uZmlnKHByb3BzKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGVmYXVsdExheWVyQ29uZmlnLFxuICAgICAgY29sb3JTY2FsZTogU0NBTEVfVFlQRVMucXVhbnRpemUsXG5cbiAgICAgIHN0cm9rZUNvbG9yRmllbGQ6IG51bGwsXG4gICAgICBzdHJva2VDb2xvckRvbWFpbjogWzAsIDFdLFxuICAgICAgc3Ryb2tlQ29sb3JTY2FsZTogU0NBTEVfVFlQRVMucXVhbnRpbGUsXG4gICAgICBjb2xvclVJOiB7XG4gICAgICAgIC4uLmRlZmF1bHRMYXllckNvbmZpZy5jb2xvclVJLFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIExheWVyQ29uZmlnXG4gICAgICAgIHN0cm9rZUNvbG9yUmFuZ2U6IERFRkFVTFRfQ09MT1JfVUlcbiAgICAgIH0sXG5cbiAgICAgIHJhZGl1c0ZpZWxkOiBudWxsLFxuICAgICAgcmFkaXVzRG9tYWluOiBbMCwgMV0sXG4gICAgICByYWRpdXNTY2FsZTogU0NBTEVfVFlQRVMubGluZWFyLFxuXG4gICAgICB1bmlxdWVJZEZpZWxkOiBudWxsXG4gICAgfTtcbiAgfVxuXG4gIGdldEhvdmVyRGF0YShcbiAgICBvYmplY3Q6IHtwcm9wZXJ0aWVzPzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+fSxcbiAgICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLFxuICAgIGZpZWxkczogS2VwbGVyRmllbGRbXVxuICApOiAoUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsKVtdIHtcbiAgICByZXR1cm4gZmllbGRzLm1hcChmID0+IG9iamVjdC5wcm9wZXJ0aWVzPy5bZi5uYW1lXSA/PyBudWxsKTtcbiAgfVxuXG4gIGNhbGN1bGF0ZUxheWVyRG9tYWluKFxuICAgIGRhdGFzZXQ6IEtlcGxlckRhdGFzZXQsXG4gICAgdmlzdWFsQ2hhbm5lbDogVmlzdWFsQ2hhbm5lbFxuICApOiBEb21haW5TdG9wcyB8IG51bWJlcltdIHtcbiAgICBjb25zdCBkZWZhdWx0RG9tYWluID0gWzAsIDFdO1xuXG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmNvbmZpZ1t2aXN1YWxDaGFubmVsLmZpZWxkXTtcbiAgICBjb25zdCBzY2FsZSA9IHRoaXMuY29uZmlnW3Zpc3VhbENoYW5uZWwuc2NhbGVdO1xuICAgIGlmICghZmllbGQpIHtcbiAgICAgIC8vIGlmIGNvbG9yRmllbGQgb3Igc2l6ZUZpZWxkIHdlcmUgc2V0IGJhY2sgdG8gbnVsbFxuICAgICAgcmV0dXJuIGRlZmF1bHREb21haW47XG4gICAgfVxuICAgIGlmIChzY2FsZSA9PT0gU0NBTEVfVFlQRVMucXVhbnRpbGUgJiYgaXNEb21haW5RdWFudGlsZXMoZmllbGQ/LmZpbHRlclByb3BzPy5kb21haW5RdWFudGlsZXMpKSB7XG4gICAgICByZXR1cm4gZmllbGQuZmlsdGVyUHJvcHMuZG9tYWluUXVhbnRpbGVzO1xuICAgIH1cbiAgICBpZiAoaXNEb21haW5TdG9wcyhmaWVsZD8uZmlsdGVyUHJvcHM/LmRvbWFpblN0b3BzKSkge1xuICAgICAgcmV0dXJuIGZpZWxkLmZpbHRlclByb3BzLmRvbWFpblN0b3BzO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShmaWVsZD8uZmlsdGVyUHJvcHM/LmRvbWFpbikpIHtcbiAgICAgIHJldHVybiBmaWVsZC5maWx0ZXJQcm9wcy5kb21haW47XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmF1bHREb21haW47XG4gIH1cblxuICBnZXRTY2FsZU9wdGlvbnMoY2hhbm5lbEtleTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGxldCBvcHRpb25zID0gS2VwbGVyTGF5ZXIucHJvdG90eXBlLmdldFNjYWxlT3B0aW9ucy5jYWxsKHRoaXMsIGNoYW5uZWxLZXkpO1xuXG4gICAgY29uc3QgY2hhbm5lbCA9IHRoaXMudmlzdWFsQ2hhbm5lbHMuc3Ryb2tlQ29sb3I7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmNvbmZpZ1tjaGFubmVsLmZpZWxkXTtcbiAgICBpZiAoXG4gICAgICAhKFxuICAgICAgICBpc0RvbWFpblF1YW50aWxlcyhmaWVsZD8uZmlsdGVyUHJvcHM/LmRvbWFpblF1YW50aWxlcykgfHxcbiAgICAgICAgdGhpcy5jb25maWcudmlzQ29uZmlnLmR5bmFtaWNDb2xvciB8fFxuICAgICAgICAvLyBJZiB3ZSd2ZSBzZXQgdGhlIHNjYWxlIHRvIHF1YW50aWxlLCB3ZSBuZWVkIHRvIGluY2x1ZGUgaXQgLSB0aGVyZSdzIGEgbG9hZGluZ1xuICAgICAgICAvLyBwZXJpb2QgaW4gd2hpY2ggdGhlIHZpc0NvbmZpZyBpc24ndCBzZXQgeWV0LCBidXQgaWYgd2UgZG9uJ3QgcmV0dXJuIHRoZSByaWdodFxuICAgICAgICAvLyBzY2FsZSB0eXBlIHdlIGxvc2UgaXRcbiAgICAgICAgdGhpcy5jb25maWcuY29sb3JTY2FsZSA9PT0gU0NBTEVfVFlQRVMucXVhbnRpbGVcbiAgICAgIClcbiAgICApIHtcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zLmZpbHRlcihzY2FsZSA9PiBzY2FsZSAhPT0gU0NBTEVfVFlQRVMucXVhbnRpbGUpO1xuICAgIH1cblxuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgYWNjZXNzUm93VmFsdWUoXG4gICAgZmllbGQ/OiBLZXBsZXJGaWVsZCxcbiAgICBpbmRleEtleT86IG51bWJlciB8IG51bGxcbiAgKTogKGZpZWxkOiBLZXBsZXJGaWVsZCwgZGF0dW06IEZlYXR1cmUpID0+IG51bWJlciB8IG51bGwge1xuICAgIC8vIGlmIGlzIGluZGV4ZWQgZmllbGRcbiAgICBpZiAoaXNJbmRleGVkRmllbGQoZmllbGQpICYmIGluZGV4S2V5ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBpbmRleEtleSAmJiBmaWVsZD8uaW5kZXhCeT8ubWFwcGVkVmFsdWVbaW5kZXhLZXldO1xuICAgICAgaWYgKGZpZWxkTmFtZSkge1xuICAgICAgICByZXR1cm4gKGYsIGRhdHVtKSA9PiB7XG4gICAgICAgICAgaWYgKGRhdHVtLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXR1bS5wcm9wZXJ0aWVzW2ZpZWxkTmFtZV07XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFRPRE8gZGVidWcgdGhpcyB3aXRoIGluZGV4ZWQgdGlsZWQgZGF0YXNldFxuICAgICAgICAgIHJldHVybiBkYXR1bVtmaWVsZE5hbWVdO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGRlZmF1bHRcbiAgICByZXR1cm4gKGYsIGRhdHVtKSA9PiB7XG4gICAgICBpZiAoZiAmJiBkYXR1bS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgIHJldHVybiBkYXR1bS5wcm9wZXJ0aWVzW2YubmFtZV07XG4gICAgICB9XG4gICAgICAvLyBzdXBwb3J0IHBpY2tpbmcgJiBoaWdobGlnaHRpbmdcbiAgICAgIHJldHVybiBmID8gZGF0dW1bZi5maWVsZElkeF0gOiBudWxsO1xuICAgIH07XG4gIH1cblxuICB1cGRhdGVMYXllck1ldGEoZGF0YXNldDogS2VwbGVyRGF0YXNldCwgZGF0YXNldHM6IEtlcGxlckRhdGFzZXRzKTogdm9pZCB7XG4gICAgaWYgKGRhdGFzZXQudHlwZSAhPT0gRGF0YXNldFR5cGUuVkVDVE9SX1RJTEUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhc2V0TWV0YSA9IGRhdGFzZXQubWV0YWRhdGEgYXMgVmVjdG9yVGlsZU1ldGFkYXRhICYgVmVjdG9yVGlsZURhdGFzZXRNZXRhZGF0YTtcbiAgICB0aGlzLnVwZGF0ZU1ldGEoe1xuICAgICAgZGF0YXNldElkOiBkYXRhc2V0LmlkLFxuICAgICAgZGF0YXNldHMsXG4gICAgICBib3VuZHM6IGRhdGFzZXRNZXRhLmJvdW5kc1xuICAgIH0pO1xuICB9XG5cbiAgZm9ybWF0TGF5ZXJEYXRhKFxuICAgIGRhdGFzZXRzOiBLZXBsZXJEYXRhc2V0cyxcbiAgICBvbGRMYXllckRhdGE6IHVua25vd24sXG4gICAgYW5pbWF0aW9uQ29uZmlnOiBBbmltYXRpb25Db25maWdcbiAgKTogTGF5ZXJEYXRhIHtcbiAgICBjb25zdCB7ZGF0YUlkfSA9IHRoaXMuY29uZmlnO1xuICAgIGlmICghbm90TnVsbG9yVW5kZWZpbmVkKGRhdGFJZCkpIHtcbiAgICAgIHJldHVybiB7dGlsZVNvdXJjZTogbnVsbH07XG4gICAgfVxuICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0c1tkYXRhSWRdO1xuXG4gICAgbGV0IHRpbGVzZXREYXRhVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgbGV0IHRpbGVTb3VyY2U6IExheWVyRGF0YVsndGlsZVNvdXJjZSddID0gbnVsbDtcblxuICAgIGlmIChkYXRhc2V0Py50eXBlID09PSBEYXRhc2V0VHlwZS5WRUNUT1JfVElMRSkge1xuICAgICAgY29uc3QgZGF0YXNldE1ldGFkYXRhID0gZGF0YXNldC5tZXRhZGF0YSBhcyBWZWN0b3JUaWxlTWV0YWRhdGEgJiBWZWN0b3JUaWxlRGF0YXNldE1ldGFkYXRhO1xuICAgICAgY29uc3QgcmVtb3RlVGlsZUZvcm1hdCA9IGRhdGFzZXRNZXRhZGF0YT8ucmVtb3RlVGlsZUZvcm1hdDtcbiAgICAgIGlmIChyZW1vdGVUaWxlRm9ybWF0ID09PSBSZW1vdGVUaWxlRm9ybWF0Lk1WVCkge1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1GZXRjaCA9IGFzeW5jIChpbnB1dDogUmVxdWVzdEluZm8gfCBVUkwsIGluaXQ/OiBSZXF1ZXN0SW5pdCB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlcXVlc3REYXRhOiBSZXF1ZXN0UGFyYW1ldGVycyA9IHtcbiAgICAgICAgICAgIHVybDogaW5wdXQgYXMgc3RyaW5nLFxuICAgICAgICAgICAgc2VhcmNoUGFyYW1zOiBuZXcgVVJMU2VhcmNoUGFyYW1zKCksXG4gICAgICAgICAgICBvcHRpb25zOiBpbml0ID8/IHt9XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHJldHVybiBmZXRjaChyZXF1ZXN0RGF0YS51cmwsIHJlcXVlc3REYXRhLm9wdGlvbnMpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRpbGVzZXREYXRhVXJsID0gZGF0YXNldE1ldGFkYXRhPy50aWxlc2V0RGF0YVVybDtcbiAgICAgICAgdGlsZVNvdXJjZSA9IHRpbGVzZXREYXRhVXJsXG4gICAgICAgICAgPyBNVlRTb3VyY2UuY3JlYXRlRGF0YVNvdXJjZShkZWNvZGVVUklDb21wb25lbnQodGlsZXNldERhdGFVcmwpLCB7XG4gICAgICAgICAgICAgIG12dDoge1xuICAgICAgICAgICAgICAgIG1ldGFkYXRhVXJsOiBkYXRhc2V0TWV0YWRhdGE/LnRpbGVzZXRNZXRhZGF0YVVybCA/PyBudWxsLFxuICAgICAgICAgICAgICAgIGxvYWRPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBmZXRjaDogdHJhbnNmb3JtRmV0Y2hcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiBudWxsO1xuICAgICAgfSBlbHNlIGlmIChyZW1vdGVUaWxlRm9ybWF0ID09PSBSZW1vdGVUaWxlRm9ybWF0LlBNVElMRVMpIHtcbiAgICAgICAgLy8gVE9ETzogdG8gcmVuZGVyIGltYWdlIHBtdGlsZXMgbmVlZCB0byB1c2UgVGlsZUxheWVyIGFuZCBCaXRtYXBMYXllciAoaHR0cHM6Ly9naXRodWIuY29tL3Zpc2dsL2xvYWRlcnMuZ2wvYmxvYi9tYXN0ZXIvZXhhbXBsZXMvd2Vic2l0ZS90aWxlcy9jb21wb25lbnRzL3RpbGUtc291cmNlLWxheWVyLnRzKVxuICAgICAgICB0aWxlc2V0RGF0YVVybCA9IGRhdGFzZXRNZXRhZGF0YT8udGlsZXNldERhdGFVcmw7XG4gICAgICAgIHRpbGVTb3VyY2UgPSB0aWxlc2V0RGF0YVVybCA/IFBNVGlsZXNTb3VyY2UuY3JlYXRlRGF0YVNvdXJjZSh0aWxlc2V0RGF0YVVybCwge30pIDogbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuZm9ybWF0TGF5ZXJEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEsIGFuaW1hdGlvbkNvbmZpZyksXG4gICAgICB0aWxlc2V0RGF0YVVybDogdHlwZW9mIHRpbGVzZXREYXRhVXJsID09PSAnc3RyaW5nJyA/IGdldFRpbGVVcmwodGlsZXNldERhdGFVcmwpIDogbnVsbCxcbiAgICAgIHRpbGVTb3VyY2VcbiAgICB9O1xuICB9XG5cbiAgaGFzSG92ZXJlZE9iamVjdChvYmplY3RJbmZvKSB7XG4gICAgaWYgKHN1cGVyLmhhc0hvdmVyZWRPYmplY3Qob2JqZWN0SW5mbykpIHtcbiAgICAgIGNvbnN0IGZlYXR1cmVzID0gb2JqZWN0SW5mbz8udGlsZT8uY29udGVudD8uZmVhdHVyZXM7XG4gICAgICByZXR1cm4gZmVhdHVyZXNbb2JqZWN0SW5mby5pbmRleF07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmVuZGVyU3ViTGF5ZXJzKHByb3BzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogRGVja0xheWVyIHwgRGVja0xheWVyW10ge1xuICAgIGxldCB7ZGF0YX0gPSBwcm9wcztcblxuICAgIGRhdGEgPSBkYXRhPy5zaGFwZSA9PT0gJ2dlb2pzb24tdGFibGUnID8gZGF0YS5mZWF0dXJlcyA6IGRhdGE7XG4gICAgaWYgKCFkYXRhPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCB0aWxlOiBUaWxlMkRIZWFkZXIgPSBwcm9wcy50aWxlO1xuICAgIGNvbnN0IHpvb20gPSB0aWxlLmluZGV4Lno7XG5cbiAgICByZXR1cm4gbmV3IEdlb0pzb25MYXllcih7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGRhdGEsXG4gICAgICBnZXRGaWxsQ29sb3I6IHByb3BzLmdldEZpbGxDb2xvckJ5Wm9vbSA/IHByb3BzLmdldEZpbGxDb2xvcih6b29tKSA6IHByb3BzLmdldEZpbGxDb2xvcixcbiAgICAgIGdldEVsZXZhdGlvbjogcHJvcHMuZ2V0RWxldmF0aW9uQnlab29tID8gcHJvcHMuZ2V0RWxldmF0aW9uKHpvb20pIDogcHJvcHMuZ2V0RWxldmF0aW9uLFxuICAgICAgLy8gcmFkaXVzIGZvciBwb2ludHNcbiAgICAgIHBvaW50UmFkaXVzU2NhbGU6IHByb3BzLnBvaW50UmFkaXVzU2NhbGUsIC8vIHByb3BzLmdldFBvaW50UmFkaXVzU2NhbGVCeVpvb20oem9vbSksXG4gICAgICBwb2ludFJhZGl1c1VuaXRzOiBwcm9wcy5wb2ludFJhZGl1c1VuaXRzLFxuICAgICAgZ2V0UG9pbnRSYWRpdXM6IHByb3BzLmdldFBvaW50UmFkaXVzLFxuICAgICAgLy8gRm9yIHNvbWUgcmVhc29uIHRpbGUgTGF5ZXIgcmVzZXQgYXV0b0hpZ2hsaWdodCB0byBmYWxzZVxuICAgICAgcGlja2FibGU6IHRydWUsXG4gICAgICBhdXRvSGlnaGxpZ2h0OiB0cnVlLFxuICAgICAgc3Ryb2tlZDogcHJvcHMuc3Ryb2tlZCxcbiAgICAgIC8vIHdyYXBMb25naXR1ZGU6IHRydWUgY2F1c2VzIG1pc3Npbmcgc2lkZSBwb2x5Z29uIHdoZW4gZXh0cnVkZSBpcyBlbmFibGVkXG4gICAgICB3cmFwTG9uZ2l0dWRlOiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gZ2VuZXJhdGUgYSBkZWNrIGxheWVyXG4gIHJlbmRlckxheWVyKG9wdHM6IFZlY3RvclRpbGVMYXllclJlbmRlck9wdGlvbnMpOiBEZWNrTGF5ZXJbXSB7XG4gICAgY29uc3Qge21hcFN0YXRlLCBkYXRhLCBhbmltYXRpb25Db25maWcsIGdwdUZpbHRlciwgb2JqZWN0SG92ZXJlZCwgbGF5ZXJDYWxsYmFja3N9ID0gb3B0cztcbiAgICBjb25zdCB7YW5pbWF0aW9uLCB2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG5cbiAgICB0aGlzLnNldExheWVyRG9tYWluID0gbGF5ZXJDYWxsYmFja3Mub25TZXRMYXllckRvbWFpbjtcblxuICAgIGNvbnN0IGRlZmF1bHRMYXllclByb3BzID0gdGhpcy5nZXREZWZhdWx0RGVja0xheWVyUHJvcHMob3B0cyk7XG4gICAgY29uc3QgZWxlWm9vbUZhY3RvciA9IHRoaXMuZ2V0RWxldmF0aW9uWm9vbUZhY3RvcihtYXBTdGF0ZSk7XG5cbiAgICBjb25zdCB0cmFuc2l0aW9ucyA9IHRoaXMuY29uZmlnLnZpc0NvbmZpZy50cmFuc2l0aW9uXG4gICAgICA/IHtcbiAgICAgICAgICBnZXRGaWxsQ29sb3I6IHtcbiAgICAgICAgICAgIGR1cmF0aW9uOiBhbmltYXRpb25Db25maWcuZHVyYXRpb25cbiAgICAgICAgICB9LFxuICAgICAgICAgIGdldEVsZXZhdGlvbjoge1xuICAgICAgICAgICAgZHVyYXRpb246IGFuaW1hdGlvbkNvbmZpZy5kdXJhdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBjb2xvckZpZWxkID0gdGhpcy5jb25maWcuY29sb3JGaWVsZCBhcyBLZXBsZXJGaWVsZDtcbiAgICBjb25zdCBoZWlnaHRGaWVsZCA9IHRoaXMuY29uZmlnLmhlaWdodEZpZWxkIGFzIEtlcGxlckZpZWxkO1xuICAgIGNvbnN0IHN0cm9rZUNvbG9yRmllbGQgPSB0aGlzLmNvbmZpZy5zdHJva2VDb2xvckZpZWxkIGFzIEtlcGxlckZpZWxkO1xuICAgIGNvbnN0IHNpemVGaWVsZCA9IHRoaXMuY29uZmlnLnNpemVGaWVsZCBhcyBLZXBsZXJGaWVsZDtcbiAgICBjb25zdCByYWRpdXNGaWVsZCA9IHRoaXMuY29uZmlnLnJhZGl1c0ZpZWxkIGFzIEtlcGxlckZpZWxkO1xuXG4gICAgaWYgKGRhdGEudGlsZVNvdXJjZSkge1xuICAgICAgY29uc3QgaG92ZXJlZE9iamVjdCA9IHRoaXMuaGFzSG92ZXJlZE9iamVjdChvYmplY3RIb3ZlcmVkKTtcblxuICAgICAgLy8gUmVzb2x2ZSB1bmlxdWUgaWQgcHJvcGVydHk6IHVzZSBjb25maWd1cmVkIHVuaXF1ZUlkRmllbGQgaWYgc2V0LCBvdGhlcndpc2UgaW5mZXJcbiAgICAgIGxldCB1bmlxdWVJZFByb3BlcnR5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgaGlnaGxpZ2h0ZWRGZWF0dXJlSWQ6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChob3ZlcmVkT2JqZWN0ICYmIGhvdmVyZWRPYmplY3QucHJvcGVydGllcykge1xuICAgICAgICB1bmlxdWVJZFByb3BlcnR5ID1cbiAgICAgICAgICB0aGlzLmNvbmZpZy51bmlxdWVJZEZpZWxkID8/XG4gICAgICAgICAgVVVJRF9DQU5ESURBVEVTLmZpbmQoayA9PiBob3ZlcmVkT2JqZWN0LnByb3BlcnRpZXMgJiYgayBpbiBob3ZlcmVkT2JqZWN0LnByb3BlcnRpZXMpO1xuICAgICAgICBoaWdobGlnaHRlZEZlYXR1cmVJZCA9IHVuaXF1ZUlkUHJvcGVydHlcbiAgICAgICAgICA/IGhvdmVyZWRPYmplY3QucHJvcGVydGllc1t1bmlxdWVJZFByb3BlcnR5XVxuICAgICAgICAgIDogKGhvdmVyZWRPYmplY3QgYXMgYW55KS5pZDtcbiAgICAgIH1cblxuICAgICAgLy8gQnVpbGQgcGVyLXRpbGUgY2xpcHBlZCBvdmVybGF5IHRvIGRyYXcgb25seSB0aGUgb3V0ZXIgc3Ryb2tlIG9mIGhpZ2hsaWdodGVkIGZlYXR1cmUgcGVyIHRpbGVcbiAgICAgIGNvbnN0IHBlclRpbGVPdmVybGF5cyA9IHRoaXMuX2dldFBlclRpbGVPdmVybGF5cyhob3ZlcmVkT2JqZWN0LCB7XG4gICAgICAgIGRlZmF1bHRMYXllclByb3BzLFxuICAgICAgICB2aXNDb25maWcsXG4gICAgICAgIHVuaXF1ZUlkUHJvcGVydHlcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBsYXllcnMgPSBbXG4gICAgICAgIG5ldyBDdXN0b21NVlRMYXllcih7XG4gICAgICAgICAgLi4uZGVmYXVsdExheWVyUHJvcHMsXG4gICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICBvblZpZXdwb3J0TG9hZDogdGhpcy5vblZpZXdwb3J0TG9hZCxcbiAgICAgICAgICBkYXRhOiBkYXRhLnRpbGVzZXREYXRhVXJsLFxuICAgICAgICAgIGdldFRpbGVEYXRhOiBkYXRhLnRpbGVTb3VyY2U/LmdldFRpbGVEYXRhLFxuICAgICAgICAgIHRpbGVTb3VyY2U6IGRhdGEudGlsZVNvdXJjZSxcbiAgICAgICAgICBnZXRGaWx0ZXJWYWx1ZTogdGhpcy5nZXRHcHVGaWx0ZXJWYWx1ZUFjY2Vzc29yKG9wdHMpLFxuICAgICAgICAgIGZpbHRlclJhbmdlOiBncHVGaWx0ZXIuZmlsdGVyUmFuZ2UsXG4gICAgICAgICAgbGluZVdpZHRoVW5pdHM6ICdwaXhlbHMnLFxuXG4gICAgICAgICAgYmluYXJ5OiBmYWxzZSxcbiAgICAgICAgICBlbGV2YXRpb25TY2FsZTogdmlzQ29uZmlnLmVsZXZhdGlvblNjYWxlICogZWxlWm9vbUZhY3RvcixcbiAgICAgICAgICBleHRydWRlZDogdmlzQ29uZmlnLmVuYWJsZTNkLFxuICAgICAgICAgIHN0cm9rZWQ6IHZpc0NvbmZpZy5zdHJva2VkLFxuXG4gICAgICAgICAgLy8gVE9ETzogdGhpcyBpcyBoYXJkIGNvZGVkLCBkZXNpZ24gYSBVSSB0byBhbGxvdyB1c2VyIGFzc2lnbmVkIHVuaXF1ZSBwcm9wZXJ0eSBpZFxuICAgICAgICAgIHVuaXF1ZUlkUHJvcGVydHksXG4gICAgICAgICAgaGlnaGxpZ2h0ZWRGZWF0dXJlSWQsXG4gICAgICAgICAgcmVuZGVyU3ViTGF5ZXJzOiB0aGlzLnJlbmRlclN1YkxheWVycyxcbiAgICAgICAgICAvLyB3aGVuIHJhZGl1c1VuaXRzIGlzIG1ldGVyXG4gICAgICAgICAgZ2V0UG9pbnRSYWRpdXNTY2FsZUJ5Wm9vbTogZ2V0UHJvcGVydHlCeVpvb20odmlzQ29uZmlnLnJhZGl1c0J5Wm9vbSwgdmlzQ29uZmlnLnJhZGl1cyksXG4gICAgICAgICAgcG9pbnRSYWRpdXNVbml0czogdmlzQ29uZmlnLnJhZGl1c1VuaXRzID8gJ3BpeGVscycgOiAnbWV0ZXJzJyxcbiAgICAgICAgICBwb2ludFJhZGl1c1NjYWxlOiByYWRpdXNGaWVsZCA/IHZpc0NvbmZpZy5yYWRpdXMgOiAxLFxuXG4gICAgICAgICAgcG9pbnRSYWRpdXNNaW5QaXhlbHM6IDEsXG4gICAgICAgICAgYXV0b0hpZ2hsaWdodDogdHJ1ZSxcbiAgICAgICAgICBoaWdobGlnaHRDb2xvcjogREVGQVVMVF9ISUdITElHSFRfRklMTF9DT0xPUixcbiAgICAgICAgICBwaWNrYWJsZTogdHJ1ZSxcbiAgICAgICAgICB0cmFuc2l0aW9ucyxcbiAgICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgICAgZ2V0RmlsdGVyVmFsdWU6IHtcbiAgICAgICAgICAgICAgLi4uZ3B1RmlsdGVyLmZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMsXG4gICAgICAgICAgICAgIGN1cnJlbnRUaW1lOiBhbmltYXRpb24uZW5hYmxlZCA/IGFuaW1hdGlvbkNvbmZpZy5jdXJyZW50VGltZSA6IG51bGxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRGaWxsQ29sb3I6IHtcbiAgICAgICAgICAgICAgY29sb3I6IHRoaXMuY29uZmlnLmNvbG9yLFxuICAgICAgICAgICAgICBjb2xvckZpZWxkOiB0aGlzLmNvbmZpZy5jb2xvckZpZWxkLFxuICAgICAgICAgICAgICBjb2xvclNjYWxlOiB0aGlzLmNvbmZpZy5jb2xvclNjYWxlLFxuICAgICAgICAgICAgICBjb2xvckRvbWFpbjogdGhpcy5jb25maWcuY29sb3JEb21haW4sXG4gICAgICAgICAgICAgIGNvbG9yUmFuZ2U6IHZpc0NvbmZpZy5jb2xvclJhbmdlLFxuICAgICAgICAgICAgICBjdXJyZW50VGltZTogaXNJbmRleGVkRmllbGQoY29sb3JGaWVsZCkgPyBhbmltYXRpb25Db25maWcuY3VycmVudFRpbWUgOiBudWxsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0RWxldmF0aW9uOiB7XG4gICAgICAgICAgICAgIGhlaWdodEZpZWxkOiB0aGlzLmNvbmZpZy5oZWlnaHRGaWVsZCxcbiAgICAgICAgICAgICAgaGVpZ2h0U2NhbGVUeXBlOiB0aGlzLmNvbmZpZy5oZWlnaHRTY2FsZSxcbiAgICAgICAgICAgICAgaGVpZ2h0UmFuZ2U6IHZpc0NvbmZpZy5oZWlnaHRSYW5nZSxcbiAgICAgICAgICAgICAgY3VycmVudFRpbWU6IGlzSW5kZXhlZEZpZWxkKGhlaWdodEZpZWxkKSA/IGFuaW1hdGlvbkNvbmZpZy5jdXJyZW50VGltZSA6IG51bGxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRMaW5lQ29sb3I6IHtcbiAgICAgICAgICAgICAgc3Ryb2tlQ29sb3I6IHZpc0NvbmZpZy5zdHJva2VDb2xvcixcbiAgICAgICAgICAgICAgc3Ryb2tlQ29sb3JGaWVsZDogdGhpcy5jb25maWcuc3Ryb2tlQ29sb3JGaWVsZCxcbiAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBwcm9wIG5vdCBpbiBMYXllckNvbmZpZ1xuICAgICAgICAgICAgICBzdHJva2VDb2xvclNjYWxlOiB0aGlzLmNvbmZpZy5zdHJva2VDb2xvclNjYWxlLFxuICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHByb3Agbm90IGluIExheWVyQ29uZmlnXG4gICAgICAgICAgICAgIHN0cm9rZUNvbG9yRG9tYWluOiB0aGlzLmNvbmZpZy5zdHJva2VDb2xvckRvbWFpbixcbiAgICAgICAgICAgICAgLy8gRklYTUU6IFN0cmlwIG91dCBlbXB0eSBhcnJheXMgZnJvbSBpbmRpdmlkdWFsIGNvbG9yIG1hcCBzdGVwcywgYW5kIHJlcGxhY2Ugd2l0aCBgbnVsbGAsIG90aGVyd2lzZSB0aGUgbGF5ZXIgbWF5IHNob3cgdGhlIGluY29ycmVjdCBjb2xvci5cbiAgICAgICAgICAgICAgLy8gU28gZmFyIGl0IHNlZW1zIHRoYXQgaXQgdXNlcyB0aGUgcHJldmlvdXMgY29sb3IgY2hvc2VuIGluIHRoZSBwYWxldHRlIHJhdGhlciB0aGFuIHRoZSBjdXJyZW50bHkgY2hvc2VuIGNvbG9yIGZvciB0aGUgc3BlY2lmaWMgY3VzdG9tIG9yZGluYWwgdmFsdWUgd2hlbiB0aGVyZSBhcmUgXCJzcGFyc2VcIiBjb2xvciBtYXBzLlxuICAgICAgICAgICAgICAvLyBJbiBvdGhlciB3b3JkcywgYSBjb2xvciBtYXAgd2l0aCBcImhvbGVzXCIgb2YgY29sb3JzIHdpdGggdW5hc3NpZ25lZCBmaWVsZCB2YWx1ZXMsIHdoaWNoIG1heSBoYXZlIGJlZW4gYXNzaWduZWQgaW4gdGhlIHBhc3QuXG4gICAgICAgICAgICAgIC8vIEZvciBleGFtcGxlIFwiYWJjXCIgd2FzIGdyZWVuLCBzdG9yZWQgYXMgYFtcImFiY1wiXWAuIFRoZW4gXCJhYmNcIiB3YXMgcmVhc3NpZ25lZCB0byB0aGUgcmVkIGNvbG9yIG1hcCBzdGVwLCBzdG9yZWQgYXMgYFtcImFiY1wiXWAuIE5vdyB0aGUgZ3JlZW4gY29sb3IgbWFwIHN0ZXAncyBzdG9yZWQgdmFsdWUgaXMgYFtdYCwgYW5kIHRoZSBsYXllciB3aWxsIGluY29ycmVjdGx5IHN0aWxsIHJlbmRlciBcImFiY1wiIGluIGdyZWVuLlxuICAgICAgICAgICAgICAvLyBRdWljayBwYXRjaCBleGFtcGxlOlxuICAgICAgICAgICAgICAvLyBzdHJva2VDb2xvclJhbmdlOiB2aXNDb25maWc/LnN0cm9rZUNvbG9yUmFuZ2U/LmNvbG9yTWFwPy5tYXAoY20gPT5cbiAgICAgICAgICAgICAgLy8gICBjbVswXT8ubGVuZ3RoID09PSAwID8gW251bGwsIGNtWzFdXSA6IGNtXG4gICAgICAgICAgICAgIC8vICksXG4gICAgICAgICAgICAgIC8vIE5vdGU6IGZvciByZWd1bGFyIHNjYWxlcyB0aGUgY29sb3JNYXAgaW4gdGhlIGFib3ZlIHBhdGNoIGlzIHVuZGVmaW5lZCBhbmQgYnJlYWtzIHN0cm9rZUNvbG9yUmFuZ2UgdXBkYXRlIHRyaWdnZXIuXG4gICAgICAgICAgICAgIHN0cm9rZUNvbG9yUmFuZ2U6IHZpc0NvbmZpZy5zdHJva2VDb2xvclJhbmdlLFxuICAgICAgICAgICAgICBjdXJyZW50VGltZTogaXNJbmRleGVkRmllbGQoc3Ryb2tlQ29sb3JGaWVsZCkgPyBhbmltYXRpb25Db25maWcuY3VycmVudFRpbWUgOiBudWxsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0TGluZVdpZHRoOiB7XG4gICAgICAgICAgICAgIHNpemVSYW5nZTogdmlzQ29uZmlnLnNpemVSYW5nZSxcbiAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IHZpc0NvbmZpZy5zdHJva2VXaWR0aCxcbiAgICAgICAgICAgICAgc2l6ZUZpZWxkOiB0aGlzLmNvbmZpZy5zaXplRmllbGQsXG4gICAgICAgICAgICAgIHNpemVTY2FsZTogdGhpcy5jb25maWcuc2l6ZVNjYWxlLFxuICAgICAgICAgICAgICBzaXplRG9tYWluOiB0aGlzLmNvbmZpZy5zaXplRG9tYWluLFxuICAgICAgICAgICAgICBjdXJyZW50VGltZTogaXNJbmRleGVkRmllbGQoc2l6ZUZpZWxkKSA/IGFuaW1hdGlvbkNvbmZpZy5jdXJyZW50VGltZSA6IG51bGxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRQb2ludFJhZGl1czoge1xuICAgICAgICAgICAgICByYWRpdXM6IHZpc0NvbmZpZy5yYWRpdXMsXG4gICAgICAgICAgICAgIHJhZGl1c0ZpZWxkOiB0aGlzLmNvbmZpZy5yYWRpdXNGaWVsZCxcbiAgICAgICAgICAgICAgcmFkaXVzU2NhbGU6IHRoaXMuY29uZmlnLnJhZGl1c1NjYWxlLFxuICAgICAgICAgICAgICByYWRpdXNEb21haW46IHRoaXMuY29uZmlnLnJhZGl1c0RvbWFpbixcbiAgICAgICAgICAgICAgcmFkaXVzUmFuZ2U6IHRoaXMuY29uZmlnLnJhZGl1c1JhbmdlLFxuICAgICAgICAgICAgICBjdXJyZW50VGltZTogaXNJbmRleGVkRmllbGQocmFkaXVzRmllbGQpID8gYW5pbWF0aW9uQ29uZmlnLmN1cnJlbnRUaW1lIDogbnVsbFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgX3N1YkxheWVyUHJvcHM6IHtcbiAgICAgICAgICAgICdwb2x5Z29ucy1zdHJva2UnOiB7b3BhY2l0eTogdmlzQ29uZmlnLnN0cm9rZU9wYWNpdHl9LFxuICAgICAgICAgICAgJ3BvbHlnb25zLWZpbGwnOiB7XG4gICAgICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgICAgICBjdWxsRmFjZTogR0wuQkFDS1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBsb2FkT3B0aW9uczoge1xuICAgICAgICAgICAgbXZ0OiBnZXRMb2FkZXJPcHRpb25zKCkubXZ0XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgLy8gcmVuZGVyIGhvdmVyIGxheWVyIGZvciBmZWF0dXJlcyB3aXRoIG5vIHVuaXF1ZSBpZCBwcm9wZXJ0eSBhbmQgbm8gaGlnaGxpZ2h0ZWQgZmVhdHVyZSBpZFxuICAgICAgICAuLi4oaG92ZXJlZE9iamVjdCAmJiAhdW5pcXVlSWRQcm9wZXJ0eSAmJiAhaGlnaGxpZ2h0ZWRGZWF0dXJlSWRcbiAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgbmV3IEdlb0pzb25MYXllcih7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBwcm9wcyBub3QgdHlwZWQ/XG4gICAgICAgICAgICAgICAgLi4ub2JqZWN0SG92ZXJlZC5zb3VyY2VMYXllcj8ucHJvcHMsXG4gICAgICAgICAgICAgICAgLi4uKHRoaXMuZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcygpIGFzIGFueSksXG4gICAgICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB3cmFwTG9uZ2l0dWRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkYXRhOiBbaG92ZXJlZE9iamVjdF0sXG4gICAgICAgICAgICAgICAgZ2V0TGluZUNvbG9yOiBERUZBVUxUX0hJR0hMSUdIVF9TVFJPS0VfQ09MT1IsXG4gICAgICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiBERUZBVUxUX0hJR0hMSUdIVF9GSUxMX0NPTE9SLFxuICAgICAgICAgICAgICAgIGdldExpbmVXaWR0aDogdmlzQ29uZmlnLnN0cm9rZVdpZHRoICsgMSxcbiAgICAgICAgICAgICAgICBsaW5lV2lkdGhVbml0czogJ3BpeGVscycsXG4gICAgICAgICAgICAgICAgc3Ryb2tlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmaWxsZWQ6IHRydWVcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IFtdKSxcbiAgICAgICAgLi4ucGVyVGlsZU92ZXJsYXlzXG4gICAgICAgIC8vIC4uLnRpbGVMYXllckJvdW5kc0xheWVyKGRlZmF1bHRMYXllclByb3BzLmlkLCBkYXRhKSxcbiAgICAgIF07XG5cbiAgICAgIHJldHVybiBsYXllcnM7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBwZXItdGlsZSBjbGlwcGVkIG92ZXJsYXkgdG8gZHJhdyBvbmx5IHRoZSBvdXRlciBzdHJva2Ugb2YgaGlnaGxpZ2h0ZWQgZmVhdHVyZSBwZXIgdGlsZVxuICAgKiBAcGFyYW0gaG92ZXJlZE9iamVjdFxuICAgKi9cbiAgX2dldFBlclRpbGVPdmVybGF5cyhcbiAgICBob3ZlcmVkT2JqZWN0OiBGZWF0dXJlLFxuICAgIG9wdGlvbnM6IHtkZWZhdWx0TGF5ZXJQcm9wczogYW55OyB2aXNDb25maWc6IGFueTsgdW5pcXVlSWRQcm9wZXJ0eT86IHN0cmluZ31cbiAgKTogRGVja0xheWVyW10ge1xuICAgIGxldCBwZXJUaWxlT3ZlcmxheXM6IERlY2tMYXllcltdID0gW107XG4gICAgaWYgKGhvdmVyZWRPYmplY3QpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRpbGVzID0gdGhpcy50aWxlRGF0YXNldD8uZ2V0VGlsZXM/LigpIHx8IFtdO1xuICAgICAgICAvLyBEZXJpdmUgaG92ZXJlZCBpZCBmcm9tIGhvdmVyZWRPYmplY3RcbiAgICAgICAgY29uc3QgaG92ZXJlZElkID0gb3B0aW9ucy51bmlxdWVJZFByb3BlcnR5XG4gICAgICAgICAgPyBTdHJpbmcoaG92ZXJlZE9iamVjdD8ucHJvcGVydGllcz8uW29wdGlvbnMudW5pcXVlSWRQcm9wZXJ0eV0pXG4gICAgICAgICAgOiBTdHJpbmcoKGhvdmVyZWRPYmplY3QgYXMgYW55KT8uaWQpO1xuXG4gICAgICAgIC8vIEdyb3VwIG1hdGNoZWQgZnJhZ21lbnRzIGJ5IHRpbGUgaWRcbiAgICAgICAgY29uc3QgYnlUaWxlOiBSZWNvcmQ8c3RyaW5nLCBGZWF0dXJlW10+ID0ge307XG4gICAgICAgIGZvciAoY29uc3QgdGlsZSBvZiB0aWxlcykge1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSAodGlsZSBhcyBhbnkpPy5jb250ZW50O1xuICAgICAgICAgIGNvbnN0IGZlYXR1cmVzID0gY29udGVudD8uc2hhcGUgPT09ICdnZW9qc29uLXRhYmxlJyA/IGNvbnRlbnQuZmVhdHVyZXMgOiBjb250ZW50O1xuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShmZWF0dXJlcykpIGNvbnRpbnVlO1xuICAgICAgICAgIGNvbnN0IHRpbGVJZCA9ICh0aWxlIGFzIGFueSkuaWQ7XG4gICAgICAgICAgZm9yIChjb25zdCBmIG9mIGZlYXR1cmVzKSB7XG4gICAgICAgICAgICBjb25zdCBmaWQgPSBvcHRpb25zLnVuaXF1ZUlkUHJvcGVydHlcbiAgICAgICAgICAgICAgPyBmLnByb3BlcnRpZXM/LltvcHRpb25zLnVuaXF1ZUlkUHJvcGVydHldXG4gICAgICAgICAgICAgIDogKGYgYXMgYW55KS5pZDtcbiAgICAgICAgICAgIGlmIChmaWQgIT09IHVuZGVmaW5lZCAmJiBTdHJpbmcoZmlkKSA9PT0gaG92ZXJlZElkKSB7XG4gICAgICAgICAgICAgIChieVRpbGVbdGlsZUlkXSA9IGJ5VGlsZVt0aWxlSWRdIHx8IFtdKS5wdXNoKGYgYXMgRmVhdHVyZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcGVyVGlsZU92ZXJsYXlzID0gT2JqZWN0LmVudHJpZXMoYnlUaWxlKS5tYXAoKFt0aWxlSWQsIGZlYXRzXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRpbGUgPSB0aWxlcy5maW5kKCh0OiBhbnkpID0+IFN0cmluZyh0LmlkKSA9PT0gU3RyaW5nKHRpbGVJZCkpO1xuICAgICAgICAgIGNvbnN0IGJvdW5kcyA9IHRpbGU/LmJvdW5kaW5nQm94XG4gICAgICAgICAgICA/IFsuLi50aWxlLmJvdW5kaW5nQm94WzBdLCAuLi50aWxlLmJvdW5kaW5nQm94WzFdXVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgcmV0dXJuIG5ldyBHZW9Kc29uTGF5ZXIoe1xuICAgICAgICAgICAgLi4uKHRoaXMuZ2V0RGVmYXVsdEhvdmVyTGF5ZXJQcm9wcygpIGFzIGFueSksXG4gICAgICAgICAgICBpZDogYCR7b3B0aW9ucy5kZWZhdWx0TGF5ZXJQcm9wcy5pZH0taG92ZXItb3V0bGluZS0ke3RpbGVJZH1gLFxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHdyYXBMb25naXR1ZGU6IGZhbHNlLFxuICAgICAgICAgICAgZGF0YTogZmVhdHMsXG4gICAgICAgICAgICBnZXRMaW5lQ29sb3I6IERFRkFVTFRfSElHSExJR0hUX1NUUk9LRV9DT0xPUixcbiAgICAgICAgICAgIGdldEZpbGxDb2xvcjogWzAsIDAsIDAsIDBdLFxuICAgICAgICAgICAgZ2V0TGluZVdpZHRoOiBvcHRpb25zLnZpc0NvbmZpZy5zdHJva2VXaWR0aCArIDEsXG4gICAgICAgICAgICBsaW5lV2lkdGhVbml0czogJ3BpeGVscycsXG4gICAgICAgICAgICBsaW5lSm9pbnRSb3VuZGVkOiB0cnVlLFxuICAgICAgICAgICAgbGluZUNhcFJvdW5kZWQ6IHRydWUsXG4gICAgICAgICAgICBzdHJva2VkOiB0cnVlLFxuICAgICAgICAgICAgZmlsbGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGNsaXBCb3VuZHM6IGJvdW5kcyxcbiAgICAgICAgICAgIGV4dGVuc2lvbnM6IGJvdW5kcyA/IFtuZXcgQ2xpcEV4dGVuc2lvbigpXSA6IFtdXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHBlclRpbGVPdmVybGF5cyA9IFtdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcGVyVGlsZU92ZXJsYXlzO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9BLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLElBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLE9BQUEsR0FBQUwsT0FBQTtBQUVBLElBQUFNLFlBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQVAsT0FBQTtBQVdBLElBQUFRLE1BQUEsR0FBQVIsT0FBQTtBQXFCQSxJQUFBUyxTQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxlQUFBLEdBQUFOLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBVyxVQUFBLEdBQUFQLHNCQUFBLENBQUFKLE9BQUE7QUFVQSxJQUFBWSxrQkFBQSxHQUFBQyx1QkFBQSxDQUFBYixPQUFBO0FBTUEsSUFBQWMsWUFBQSxHQUFBVixzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQWUsVUFBQSxHQUFBZixPQUFBO0FBS2tDLFNBQUFnQix5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUosd0JBQUFJLENBQUEsRUFBQUUsQ0FB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
|
package/src/layers/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kepler.gl/layers",
|
|
3
3
|
"author": "Shan He <shan@uber.com>",
|
|
4
|
-
"version": "3.2.
|
|
4
|
+
"version": "3.2.1",
|
|
5
5
|
"description": "kepler.gl constants used by kepler.gl components, actions and reducers",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -36,14 +36,14 @@
|
|
|
36
36
|
"@deck.gl/geo-layers": "^8.9.27",
|
|
37
37
|
"@deck.gl/layers": "^8.9.27",
|
|
38
38
|
"@deck.gl/mesh-layers": "^8.9.27",
|
|
39
|
-
"@kepler.gl/common-utils": "3.2.
|
|
40
|
-
"@kepler.gl/constants": "3.2.
|
|
41
|
-
"@kepler.gl/deckgl-arrow-layers": "3.2.
|
|
42
|
-
"@kepler.gl/deckgl-layers": "3.2.
|
|
43
|
-
"@kepler.gl/localization": "3.2.
|
|
44
|
-
"@kepler.gl/table": "3.2.
|
|
45
|
-
"@kepler.gl/types": "3.2.
|
|
46
|
-
"@kepler.gl/utils": "3.2.
|
|
39
|
+
"@kepler.gl/common-utils": "3.2.1",
|
|
40
|
+
"@kepler.gl/constants": "3.2.1",
|
|
41
|
+
"@kepler.gl/deckgl-arrow-layers": "3.2.1",
|
|
42
|
+
"@kepler.gl/deckgl-layers": "3.2.1",
|
|
43
|
+
"@kepler.gl/localization": "3.2.1",
|
|
44
|
+
"@kepler.gl/table": "3.2.1",
|
|
45
|
+
"@kepler.gl/types": "3.2.1",
|
|
46
|
+
"@kepler.gl/utils": "3.2.1",
|
|
47
47
|
"@loaders.gl/arrow": "^4.3.2",
|
|
48
48
|
"@loaders.gl/core": "^4.3.2",
|
|
49
49
|
"@loaders.gl/gis": "^4.3.2",
|