@carto/kepler.gl 0.0.83 → 0.0.84

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.
Files changed (80) hide show
  1. package/dist/actions/action-wrapper.d.ts +1 -6
  2. package/dist/actions/action-wrapper.js +3 -3
  3. package/dist/components/common/checkbox.js +4 -4
  4. package/dist/components/common/data-table/grid.js +3 -3
  5. package/dist/components/common/data-table/index.d.ts +1 -2
  6. package/dist/components/common/data-table/index.js +6 -6
  7. package/dist/components/common/item-selector/item-selector.js +3 -3
  8. package/dist/components/common/portaled.js +6 -6
  9. package/dist/components/common/time-range-slider.js +3 -3
  10. package/dist/components/container.js +4 -4
  11. package/dist/components/editor/editor.js +6 -6
  12. package/dist/components/editor/feature-styles.js +3 -3
  13. package/dist/components/editor/handle-style.js +3 -3
  14. package/dist/components/filters/filter-panels/polygon-filter-panel.js +4 -4
  15. package/dist/components/modal-container.js +3 -3
  16. package/dist/components/modals/image-modal-container.js +4 -4
  17. package/dist/components/modals/load-data-modal.js +3 -3
  18. package/dist/components/plot-container.js +3 -3
  19. package/dist/components/side-panel/filter-panel/filter-panel.js +3 -3
  20. package/dist/components/side-panel/layer-panel/color-range-selector.d.ts +1 -4
  21. package/dist/components/side-panel/layer-panel/color-range-selector.js +4 -4
  22. package/dist/components/side-panel.js +3 -3
  23. package/dist/constants/default-settings.js +2 -2
  24. package/dist/deckgl-layers/layer-utils/cluster-utils.js +3 -3
  25. package/dist/layers/aggregation-layer.js +4 -4
  26. package/dist/layers/geojson-layer/geojson-layer.js +3 -3
  27. package/dist/layers/heatmap-layer/heatmap-layer.js +3 -3
  28. package/dist/layers/layer-text-label.js +1 -1
  29. package/dist/layers/trip-layer/trip-layer.js +5 -5
  30. package/dist/reducers/map-style-updaters.d.ts +1 -10
  31. package/dist/reducers/map-style-updaters.js +3 -3
  32. package/dist/reducers/vis-state-merger.js +6 -6
  33. package/dist/reducers/vis-state-updaters.js +13 -13
  34. package/dist/schemas/dataset-schema.d.ts +1 -1
  35. package/dist/schemas/dataset-schema.js +4 -4
  36. package/dist/schemas/vis-state-schema.js +7 -7
  37. package/dist/utils/dataset-utils.js +3 -3
  38. package/dist/utils/export-utils.js +3 -3
  39. package/dist/utils/filter-utils.js +7 -7
  40. package/dist/utils/map-style-utils/mapbox-gl-style-editor.d.ts +3 -18
  41. package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +6 -6
  42. package/dist/utils/observe-dimensions.js +3 -3
  43. package/dist/utils/split-map-utils.js +3 -3
  44. package/package.json +3 -26
  45. package/src/actions/action-wrapper.ts +1 -1
  46. package/src/components/common/checkbox.tsx +1 -1
  47. package/src/components/common/data-table/grid.tsx +1 -1
  48. package/src/components/common/data-table/index.tsx +2 -2
  49. package/src/components/common/item-selector/item-selector.tsx +1 -1
  50. package/src/components/common/portaled.tsx +2 -2
  51. package/src/components/common/time-range-slider.tsx +1 -1
  52. package/src/components/container.tsx +1 -1
  53. package/src/components/editor/editor.tsx +1 -1
  54. package/src/components/editor/feature-styles.ts +1 -1
  55. package/src/components/editor/handle-style.ts +1 -1
  56. package/src/components/filters/filter-panels/polygon-filter-panel.tsx +1 -1
  57. package/src/components/modal-container.tsx +1 -1
  58. package/src/components/modals/image-modal-container.tsx +1 -1
  59. package/src/components/modals/load-data-modal.tsx +1 -1
  60. package/src/components/plot-container.tsx +1 -1
  61. package/src/components/side-panel/filter-panel/filter-panel.tsx +1 -1
  62. package/src/components/side-panel/layer-panel/color-range-selector.tsx +1 -1
  63. package/src/components/side-panel.tsx +1 -1
  64. package/src/deckgl-layers/layer-utils/cluster-utils.ts +1 -1
  65. package/src/layers/aggregation-layer.ts +1 -1
  66. package/src/layers/geojson-layer/geojson-layer.ts +1 -1
  67. package/src/layers/heatmap-layer/heatmap-layer.ts +1 -1
  68. package/src/layers/layer-text-label.ts +1 -1
  69. package/src/layers/trip-layer/trip-layer.ts +2 -2
  70. package/src/reducers/map-style-updaters.ts +1 -1
  71. package/src/reducers/vis-state-merger.ts +3 -3
  72. package/src/reducers/vis-state-updaters.ts +4 -4
  73. package/src/schemas/dataset-schema.ts +1 -1
  74. package/src/schemas/vis-state-schema.ts +2 -2
  75. package/src/utils/dataset-utils.ts +1 -1
  76. package/src/utils/export-utils.ts +1 -1
  77. package/src/utils/filter-utils.ts +2 -2
  78. package/src/utils/map-style-utils/mapbox-gl-style-editor.ts +2 -2
  79. package/src/utils/observe-dimensions.ts +1 -1
  80. package/src/utils/split-map-utils.ts +1 -1
@@ -13,8 +13,8 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
13
13
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
14
  var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
15
15
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
16
- var _lodash = _interopRequireDefault(require("lodash.memoize"));
17
- var _lodash2 = _interopRequireDefault(require("lodash.uniq"));
16
+ var _memoize = _interopRequireDefault(require("lodash/memoize"));
17
+ var _uniq = _interopRequireDefault(require("lodash/uniq"));
18
18
  var _baseLayer = _interopRequireDefault(require("../base-layer"));
19
19
  var _geoLayers = require("@deck.gl/geo-layers");
20
20
  var _defaultSettings = require("../../constants/default-settings");
@@ -85,7 +85,7 @@ var TripLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
85
85
  _this.dataToFeature = [];
86
86
  _this.dataToTimeStamp = [];
87
87
  _this.registerVisConfig(tripVisConfigs);
88
- _this.getFeature = (0, _lodash["default"])(featureAccessor, featureResolver);
88
+ _this.getFeature = (0, _memoize["default"])(featureAccessor, featureResolver);
89
89
  _this._layerInfoModal = (0, _tripInfoModal["default"])();
90
90
  return _this;
91
91
  }
@@ -337,7 +337,7 @@ var TripLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
337
337
  return f.name;
338
338
  });
339
339
  var defaultColumns = {
340
- geojson: (0, _lodash2["default"])([].concat((0, _toConsumableArray2["default"])(_defaultSettings.GEOJSON_FIELDS.geojson), (0, _toConsumableArray2["default"])(geojsonColumns)))
340
+ geojson: (0, _uniq["default"])([].concat((0, _toConsumableArray2["default"])(_defaultSettings.GEOJSON_FIELDS.geojson), (0, _toConsumableArray2["default"])(geojsonColumns)))
341
341
  };
342
342
  var geoJsonColumns = this.findDefaultColumnField(defaultColumns, fields);
343
343
  var tripColumns = (geoJsonColumns || []).filter(function (col) {
@@ -366,4 +366,4 @@ var TripLayer = exports["default"] = /*#__PURE__*/function (_Layer) {
366
366
  }
367
367
  }]);
368
368
  }(_baseLayer["default"]);
369
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoMiIsIl9iYXNlTGF5ZXIiLCJfZ2VvTGF5ZXJzIiwiX2RlZmF1bHRTZXR0aW5ncyIsIl90cmlwTGF5ZXJJY29uIiwiX2dlb2pzb25VdGlscyIsIl90cmlwVXRpbHMiLCJfdHJpcEluZm9Nb2RhbCIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJjYWxsIiwiX3N1cGVyUHJvcEdldCIsInAiLCJfZ2V0MiIsInpvb21GYWN0b3JWYWx1ZSIsImRlZmF1bHRUaGlja25lc3MiLCJleHBvcnRzIiwiZGVmYXVsdExpbmVXaWR0aCIsInRyaXBWaXNDb25maWdzIiwib3BhY2l0eSIsInRoaWNrbmVzcyIsInR5cGUiLCJkZWZhdWx0VmFsdWUiLCJsYWJlbCIsImlzUmFuZ2VkIiwicmFuZ2UiLCJzdGVwIiwiZ3JvdXAiLCJwcm9wZXJ0eSIsImNvbG9yUmFuZ2UiLCJ0cmFpbExlbmd0aCIsInNpemVSYW5nZSIsImdlb0pzb25SZXF1aXJlZENvbHVtbnMiLCJmZWF0dXJlQWNjZXNzb3IiLCJfcmVmIiwiZ2VvanNvbiIsImRjIiwiZCIsInZhbHVlQXQiLCJpbmRleCIsImZpZWxkSWR4IiwiZmVhdHVyZVJlc29sdmVyIiwiX3JlZjIiLCJUcmlwTGF5ZXIiLCJfTGF5ZXIiLCJwcm9wcyIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsImRhdGFUb0ZlYXR1cmUiLCJkYXRhVG9UaW1lU3RhbXAiLCJyZWdpc3RlclZpc0NvbmZpZyIsImdldEZlYXR1cmUiLCJtZW1vaXplIiwiX2xheWVySW5mb01vZGFsIiwiVHJpcEluZm9Nb2RhbEZhY3RvcnkiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsImdldCIsIlRyaXBMYXllckljb24iLCJ2aXN1YWxDaGFubmVscyIsImNvbG9yIiwiYWNjZXNzb3IiLCJudWxsVmFsdWUiLCJnZXRBdHRyaWJ1dGVWYWx1ZSIsImNvbmZpZyIsInByb3BlcnRpZXMiLCJsaW5lQ29sb3IiLCJzaXplIiwiY29uZGl0aW9uIiwidmlzQ29uZmlnIiwic3Ryb2tlZCIsImxpbmVXaWR0aCIsImFuaW1hdGlvbiIsImRvbWFpbiIsImlkIiwidGVtcGxhdGUiLCJtb2RhbFByb3BzIiwidGl0bGUiLCJ2YWx1ZSIsImdldFBvc2l0aW9uQWNjZXNzb3IiLCJkYXRhQ29udGFpbmVyIiwiY29sdW1ucyIsImdldERlZmF1bHRMYXllckNvbmZpZyIsImVuYWJsZWQiLCJnZXRIb3ZlckRhdGEiLCJvYmplY3QiLCJyb3ciLCJjYWxjdWxhdGVEYXRhQXR0cmlidXRlIiwiX3JlZjMiLCJnZXRQb3NpdGlvbiIsIl90aGlzMiIsImZpbHRlcmVkSW5kZXgiLCJtYXAiLCJpIiwiZ2VvbWV0cnkiLCJmb3JtYXRMYXllckRhdGEiLCJkYXRhc2V0cyIsIm9sZExheWVyRGF0YSIsIl90aGlzMyIsImRhdGFJZCIsIl9kYXRhc2V0cyR0aGlzJGNvbmZpZyIsImdwdUZpbHRlciIsIl90aGlzJHVwZGF0ZURhdGEiLCJ1cGRhdGVEYXRhIiwiZGF0YSIsImN1c3RvbUZpbHRlclZhbHVlQWNjZXNzb3IiLCJmIiwiZmllbGRJbmRleCIsImluZGV4QWNjZXNzb3IiLCJkYXRhQWNjZXNzb3IiLCJhY2Nlc3NvcnMiLCJnZXRBdHRyaWJ1dGVBY2Nlc3NvcnMiLCJnZXRGaWx0ZXJWYWx1ZSIsImZpbHRlclZhbHVlQWNjZXNzb3IiLCJnZXRQYXRoIiwiY29vcmRpbmF0ZXMiLCJnZXRUaW1lc3RhbXBzIiwidXBkYXRlQW5pbWF0aW9uRG9tYWluIiwidXBkYXRlTGF5ZXJDb25maWciLCJ1cGRhdGVMYXllck1ldGEiLCJtZXRhIiwiZ2V0R2VvanNvbkRhdGFNYXBzIiwiX3BhcnNlVHJpcEdlb0pzb25UaW1lIiwicGFyc2VUcmlwR2VvSnNvblRpbWVzdGFtcCIsImFuaW1hdGlvbkRvbWFpbiIsImJvdW5kcyIsImdldEdlb2pzb25Cb3VuZHMiLCJmZWF0dXJlVHlwZXMiLCJnZXRHZW9qc29uRmVhdHVyZVR5cGVzIiwidXBkYXRlTWV0YSIsInNldEluaXRpYWxMYXllckNvbmZpZyIsIl9yZWY0IiwicmVuZGVyTGF5ZXIiLCJvcHRzIiwiX2FuaW1hdGlvbkNvbmZpZyRkb21hIiwibWFwU3RhdGUiLCJhbmltYXRpb25Db25maWciLCJ6b29tRmFjdG9yIiwiZ2V0Wm9vbUZhY3RvciIsImlzVmFsaWRUaW1lIiwiQXJyYXkiLCJpc0FycmF5IiwiZXZlcnkiLCJOdW1iZXIiLCJpc0Zpbml0ZSIsImN1cnJlbnRUaW1lIiwiZG9tYWluMCIsInVwZGF0ZVRyaWdnZXJzIiwiZ2V0VmlzdWFsQ2hhbm5lbFVwZGF0ZVRyaWdnZXJzIiwiZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2VycyIsImRlZmF1bHRMYXllclByb3BzIiwiZ2V0RGVmYXVsdERlY2tMYXllclByb3BzIiwiRGVja0dMVHJpcHNMYXllciIsInRzIiwid2lkdGhTY2FsZSIsIndpZHRoVW5pdHMiLCJyb3VuZGVkIiwid3JhcExvbmdpdHVkZSIsInBhcmFtZXRlcnMiLCJkZXB0aFRlc3QiLCJkcmFnUm90YXRlIiwiZGVwdGhNYXNrIiwiZmluZERlZmF1bHRMYXllclByb3BzIiwiX3JlZjUiLCJmb3VuZExheWVycyIsIl90aGlzNCIsIl9yZWY1JGZpZWxkcyIsImZpZWxkcyIsImdlb2pzb25Db2x1bW5zIiwibmFtZSIsImRlZmF1bHRDb2x1bW5zIiwidW5pcSIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJHRU9KU09OX0ZJRUxEUyIsImdlb0pzb25Db2x1bW5zIiwiZmluZERlZmF1bHRDb2x1bW5GaWVsZCIsInRyaXBDb2x1bW5zIiwiY29sIiwiaXNUcmlwR2VvSnNvbkZpZWxkIiwicmVwbGFjZSIsImlzVmlzaWJsZSIsInByb3AiLCJmaW5kIiwiYyIsIkxheWVyIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xheWVycy90cmlwLWxheWVyL3RyaXAtbGF5ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IG1lbW9pemUgZnJvbSAnbG9kYXNoLm1lbW9pemUnO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoLnVuaXEnO1xuaW1wb3J0IExheWVyLCB7TGF5ZXJCYXNlQ29uZmlnLCBMYXllckNvbHVtbn0gZnJvbSAnLi4vYmFzZS1sYXllcic7XG5pbXBvcnQge1RyaXBzTGF5ZXIgYXMgRGVja0dMVHJpcHNMYXllcn0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycyc7XG5cbmltcG9ydCB7R0VPSlNPTl9GSUVMRFN9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCBUcmlwTGF5ZXJJY29uIGZyb20gJy4vdHJpcC1sYXllci1pY29uJztcblxuaW1wb3J0IHtcbiAgZ2V0R2VvanNvbkRhdGFNYXBzLFxuICBnZXRHZW9qc29uQm91bmRzLFxuICBnZXRHZW9qc29uRmVhdHVyZVR5cGVzLFxuICBHZW9qc29uRGF0YU1hcHNcbn0gZnJvbSAnbGF5ZXJzL2dlb2pzb24tbGF5ZXIvZ2VvanNvbi11dGlscyc7XG5cbmltcG9ydCB7aXNUcmlwR2VvSnNvbkZpZWxkLCBwYXJzZVRyaXBHZW9Kc29uVGltZXN0YW1wfSBmcm9tICcuL3RyaXAtdXRpbHMnO1xuaW1wb3J0IFRyaXBJbmZvTW9kYWxGYWN0b3J5IGZyb20gJy4vdHJpcC1pbmZvLW1vZGFsJztcbmltcG9ydCB7RGF0YUNvbnRhaW5lckludGVyZmFjZX0gZnJvbSAnLi4vLi4vdXRpbHMvdGFibGUtdXRpbHMvZGF0YS1jb250YWluZXItaW50ZXJmYWNlJztcbmltcG9ydCB7Q29sb3JSYW5nZX0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbG9yLXJhbmdlcyc7XG5pbXBvcnQge1Zpc0NvbmZpZ0NvbG9yUmFuZ2UsIFZpc0NvbmZpZ051bWJlciwgVmlzQ29uZmlnUmFuZ2V9IGZyb20gJy4uL2xheWVyLWZhY3RvcnknO1xuaW1wb3J0IHtNZXJnZX0gZnJvbSAnLi4vLi4vcmVkdWNlcnMnO1xuaW1wb3J0IHtLZXBsZXJUYWJsZX0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBUcmlwTGF5ZXJWaXNDb25maWdTZXR0aW5ncyA9IHtcbiAgb3BhY2l0eTogVmlzQ29uZmlnTnVtYmVyO1xuICB0aGlja25lc3M6IFZpc0NvbmZpZ051bWJlcjtcbiAgY29sb3JSYW5nZTogVmlzQ29uZmlnQ29sb3JSYW5nZTtcbiAgdHJhaWxMZW5ndGg6IFZpc0NvbmZpZ051bWJlcjtcbiAgc2l6ZVJhbmdlOiBWaXNDb25maWdSYW5nZTtcbn07XG5cbmV4cG9ydCB0eXBlIFRyaXBMYXllckNvbHVtbnNDb25maWcgPSB7XG4gIGdlb2pzb246IExheWVyQ29sdW1uO1xufTtcblxuZXhwb3J0IHR5cGUgVHJpcExheWVyVmlzQ29uZmlnID0ge1xuICBvcGFjaXR5OiBudW1iZXI7XG4gIHRoaWNrbmVzczogbnVtYmVyO1xuICBjb2xvclJhbmdlOiBDb2xvclJhbmdlO1xuICB0cmFpbExlbmd0aDogbnVtYmVyO1xuICBzaXplUmFuZ2U6IFtudW1iZXIsIG51bWJlcl07XG59O1xuXG5leHBvcnQgdHlwZSBUcmlwTGF5ZXJDb25maWcgPSBNZXJnZTxcbiAgTGF5ZXJCYXNlQ29uZmlnLFxuICB7Y29sdW1uczogVHJpcExheWVyQ29sdW1uc0NvbmZpZzsgdmlzQ29uZmlnOiBUcmlwTGF5ZXJWaXNDb25maWd9XG4+O1xuXG5leHBvcnQgdHlwZSBUcmlwTGF5ZXJNZXRhID0ge1xuICBnZXRGZWF0dXJlOiBhbnk7XG59O1xuXG5jb25zdCB6b29tRmFjdG9yVmFsdWUgPSA4O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRoaWNrbmVzcyA9IDAuNTtcbmV4cG9ydCBjb25zdCBkZWZhdWx0TGluZVdpZHRoID0gMTtcblxuZXhwb3J0IGNvbnN0IHRyaXBWaXNDb25maWdzOiB7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JztcbiAgdGhpY2tuZXNzOiBWaXNDb25maWdOdW1iZXI7XG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJztcbiAgdHJhaWxMZW5ndGg6ICd0cmFpbExlbmd0aCc7XG4gIHNpemVSYW5nZTogJ3N0cm9rZVdpZHRoUmFuZ2UnO1xufSA9IHtcbiAgb3BhY2l0eTogJ29wYWNpdHknLFxuICB0aGlja25lc3M6IHtcbiAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICBkZWZhdWx0VmFsdWU6IGRlZmF1bHRUaGlja25lc3MsXG4gICAgbGFiZWw6ICdTdHJva2UgV2lkdGgnLFxuICAgIGlzUmFuZ2VkOiBmYWxzZSxcbiAgICByYW5nZTogWzAsIDEwMF0sXG4gICAgc3RlcDogMC4xLFxuICAgIGdyb3VwOiAnc3Ryb2tlJyxcbiAgICBwcm9wZXJ0eTogJ3RoaWNrbmVzcydcbiAgfSxcbiAgY29sb3JSYW5nZTogJ2NvbG9yUmFuZ2UnLFxuICB0cmFpbExlbmd0aDogJ3RyYWlsTGVuZ3RoJyxcbiAgc2l6ZVJhbmdlOiAnc3Ryb2tlV2lkdGhSYW5nZSdcbn07XG5cbmV4cG9ydCBjb25zdCBnZW9Kc29uUmVxdWlyZWRDb2x1bW5zOiBbJ2dlb2pzb24nXSA9IFsnZ2VvanNvbiddO1xuZXhwb3J0IGNvbnN0IGZlYXR1cmVBY2Nlc3NvciA9ICh7Z2VvanNvbn06IFRyaXBMYXllckNvbHVtbnNDb25maWcpID0+IChcbiAgZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2VcbikgPT4gZCA9PiBkYy52YWx1ZUF0KGQuaW5kZXgsIGdlb2pzb24uZmllbGRJZHgpO1xuZXhwb3J0IGNvbnN0IGZlYXR1cmVSZXNvbHZlciA9ICh7Z2VvanNvbn06IFRyaXBMYXllckNvbHVtbnNDb25maWcpID0+IGdlb2pzb24uZmllbGRJZHg7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRyaXBMYXllciBleHRlbmRzIExheWVyIHtcbiAgZGVjbGFyZSB2aXNDb25maWdTZXR0aW5nczogVHJpcExheWVyVmlzQ29uZmlnU2V0dGluZ3M7XG4gIGRlY2xhcmUgY29uZmlnOiBUcmlwTGF5ZXJDb25maWc7XG4gIGRlY2xhcmUgbWV0YTogVHJpcExheWVyTWV0YTtcblxuICBkYXRhVG9GZWF0dXJlOiBHZW9qc29uRGF0YU1hcHM7XG4gIGRhdGFUb1RpbWVTdGFtcDoge31bXTtcbiAgZ2V0RmVhdHVyZTogKGNvbHVtbnM6IFRyaXBMYXllckNvbHVtbnNDb25maWcpID0+IChkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSA9PiBhbnk7XG4gIF9sYXllckluZm9Nb2RhbDogKCkgPT4gSlNYLkVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLmRhdGFUb0ZlYXR1cmUgPSBbXTtcbiAgICB0aGlzLmRhdGFUb1RpbWVTdGFtcCA9IFtdO1xuICAgIHRoaXMucmVnaXN0ZXJWaXNDb25maWcodHJpcFZpc0NvbmZpZ3MpO1xuICAgIHRoaXMuZ2V0RmVhdHVyZSA9IG1lbW9pemUoZmVhdHVyZUFjY2Vzc29yLCBmZWF0dXJlUmVzb2x2ZXIpO1xuICAgIHRoaXMuX2xheWVySW5mb01vZGFsID0gVHJpcEluZm9Nb2RhbEZhY3RvcnkoKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdHlwZSgpOiAndHJpcCcge1xuICAgIHJldHVybiAndHJpcCc7XG4gIH1cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIFRyaXBMYXllci50eXBlO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogJ1RyaXAnIHtcbiAgICByZXR1cm4gJ1RyaXAnO1xuICB9XG5cbiAgZ2V0IGxheWVySWNvbigpIHtcbiAgICByZXR1cm4gVHJpcExheWVySWNvbjtcbiAgfVxuXG4gIGdldCByZXF1aXJlZExheWVyQ29sdW1ucygpIHtcbiAgICByZXR1cm4gZ2VvSnNvblJlcXVpcmVkQ29sdW1ucztcbiAgfVxuXG4gIGdldCB2aXN1YWxDaGFubmVscygpIHtcbiAgICBjb25zdCB2aXN1YWxDaGFubmVscyA9IHN1cGVyLnZpc3VhbENoYW5uZWxzO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnZpc3VhbENoYW5uZWxzLFxuICAgICAgY29sb3I6IHtcbiAgICAgICAgLi4udmlzdWFsQ2hhbm5lbHMuY29sb3IsXG4gICAgICAgIGFjY2Vzc29yOiAnZ2V0Q29sb3InLFxuICAgICAgICBudWxsVmFsdWU6IHZpc3VhbENoYW5uZWxzLmNvbG9yLm51bGxWYWx1ZSxcbiAgICAgICAgZ2V0QXR0cmlidXRlVmFsdWU6IGNvbmZpZyA9PiBkID0+IGQucHJvcGVydGllcy5saW5lQ29sb3IgfHwgY29uZmlnLmNvbG9yLFxuICAgICAgICAvLyB1c2VkIHRoaXMgdG8gZ2V0IHVwZGF0ZVRyaWdnZXJzXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogY29uZmlnID0+IGNvbmZpZy5jb2xvclxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgLi4udmlzdWFsQ2hhbm5lbHMuc2l6ZSxcbiAgICAgICAgcHJvcGVydHk6ICdzdHJva2UnLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldFdpZHRoJyxcbiAgICAgICAgY29uZGl0aW9uOiBjb25maWcgPT4gY29uZmlnLnZpc0NvbmZpZy5zdHJva2VkLFxuICAgICAgICBudWxsVmFsdWU6IDAsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiAoKSA9PiBkID0+IGQucHJvcGVydGllcy5saW5lV2lkdGggfHwgZGVmYXVsdExpbmVXaWR0aFxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBnZXQgYW5pbWF0aW9uRG9tYWluKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5hbmltYXRpb24uZG9tYWluO1xuICB9XG5cbiAgZ2V0IGxheWVySW5mb01vZGFsKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogJ2ljb25JbmZvJyxcbiAgICAgIHRlbXBsYXRlOiB0aGlzLl9sYXllckluZm9Nb2RhbCxcbiAgICAgIG1vZGFsUHJvcHM6IHtcbiAgICAgICAgdGl0bGU6ICdtb2RhbC50cmlwSW5mby50aXRsZSdcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0UG9zaXRpb25BY2Nlc3NvcihkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmVhdHVyZSh0aGlzLmNvbmZpZy5jb2x1bW5zKShkYXRhQ29udGFpbmVyKTtcbiAgfVxuXG4gIHN0YXRpYyBmaW5kRGVmYXVsdExheWVyUHJvcHMoXG4gICAge2xhYmVsLCBmaWVsZHMgPSBbXSwgZGF0YUNvbnRhaW5lciwgaWR9OiBLZXBsZXJUYWJsZSxcbiAgICBmb3VuZExheWVyczogYW55W11cbiAgKSB7XG4gICAgY29uc3QgZ2VvanNvbkNvbHVtbnMgPSBmaWVsZHMuZmlsdGVyKGYgPT4gZi50eXBlID09PSAnZ2VvanNvbicpLm1hcChmID0+IGYubmFtZSk7XG5cbiAgICBjb25zdCBkZWZhdWx0Q29sdW1ucyA9IHtcbiAgICAgIGdlb2pzb246IHVuaXEoWy4uLkdFT0pTT05fRklFTERTLmdlb2pzb24sIC4uLmdlb2pzb25Db2x1bW5zXSlcbiAgICB9O1xuXG4gICAgY29uc3QgZ2VvSnNvbkNvbHVtbnMgPSB0aGlzLmZpbmREZWZhdWx0Q29sdW1uRmllbGQoZGVmYXVsdENvbHVtbnMsIGZpZWxkcyk7XG5cbiAgICBjb25zdCB0cmlwQ29sdW1ucyA9IChnZW9Kc29uQ29sdW1ucyB8fCBbXSkuZmlsdGVyKGNvbCA9PlxuICAgICAgaXNUcmlwR2VvSnNvbkZpZWxkKGRhdGFDb250YWluZXIsIGZpZWxkc1tjb2wuZ2VvanNvbi5maWVsZElkeF0pXG4gICAgKTtcblxuICAgIGlmICghdHJpcENvbHVtbnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4ge3Byb3BzOiBbXX07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3BzOiB0cmlwQ29sdW1ucy5tYXAoY29sdW1ucyA9PiAoe1xuICAgICAgICBsYWJlbDogKHR5cGVvZiBsYWJlbCA9PT0gJ3N0cmluZycgJiYgbGFiZWwucmVwbGFjZSgvXFwuW14vLl0rJC8sICcnKSkgfHwgdGhpcy50eXBlLFxuICAgICAgICBjb2x1bW5zLFxuICAgICAgICBpc1Zpc2libGU6IHRydWVcbiAgICAgIH0pKSxcblxuICAgICAgLy8gaWYgYSBnZW9qc29uIGxheWVyIGlzIGNyZWF0ZWQgZnJvbSB0aGlzIGNvbHVtbiwgZGVsZXRlIGl0XG4gICAgICBmb3VuZExheWVyczogZm91bmRMYXllcnMuZmlsdGVyKFxuICAgICAgICBwcm9wID0+XG4gICAgICAgICAgcHJvcC50eXBlICE9PSAnZ2VvanNvbicgfHxcbiAgICAgICAgICBwcm9wLmRhdGFJZCAhPT0gaWQgfHxcbiAgICAgICAgICAhdHJpcENvbHVtbnMuZmluZChjID0+IHByb3AuY29sdW1ucy5nZW9qc29uLm5hbWUgPT09IGMuZ2VvanNvbi5uYW1lKVxuICAgICAgKVxuICAgIH07XG4gIH1cblxuICBnZXREZWZhdWx0TGF5ZXJDb25maWcocHJvcHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuZ2V0RGVmYXVsdExheWVyQ29uZmlnKHByb3BzKSxcbiAgICAgIGFuaW1hdGlvbjoge1xuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICBkb21haW46IG51bGxcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0SG92ZXJEYXRhKG9iamVjdCwgZGF0YUNvbnRhaW5lcikge1xuICAgIC8vIGluZGV4IGZvciBkYXRhQ29udGFpbmVyIGlzIHNhdmVkIHRvIGZlYXR1cmUucHJvcGVydGllc1xuICAgIHJldHVybiBkYXRhQ29udGFpbmVyLnJvdyhvYmplY3QucHJvcGVydGllcy5pbmRleCk7XG4gIH1cblxuICBjYWxjdWxhdGVEYXRhQXR0cmlidXRlKHtkYXRhQ29udGFpbmVyLCBmaWx0ZXJlZEluZGV4fSwgZ2V0UG9zaXRpb24pIHtcbiAgICByZXR1cm4gZmlsdGVyZWRJbmRleFxuICAgICAgLm1hcChpID0+IHRoaXMuZGF0YVRvRmVhdHVyZVtpXSlcbiAgICAgIC5maWx0ZXIoZCA9PiBkICYmIGQuZ2VvbWV0cnkudHlwZSA9PT0gJ0xpbmVTdHJpbmcnKTtcbiAgfVxuXG4gIGZvcm1hdExheWVyRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmRhdGFJZCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICAvLyB0by1kbzogcGFyc2Ugc2VnbWVudCBmcm9tIGRhdGFDb250YWluZXJcbiAgICBjb25zdCB7ZGF0YUNvbnRhaW5lciwgZ3B1RmlsdGVyfSA9IGRhdGFzZXRzW3RoaXMuY29uZmlnLmRhdGFJZF07XG4gICAgY29uc3Qge2RhdGF9ID0gdGhpcy51cGRhdGVEYXRhKGRhdGFzZXRzLCBvbGRMYXllckRhdGEpO1xuXG4gICAgY29uc3QgY3VzdG9tRmlsdGVyVmFsdWVBY2Nlc3NvciA9IChkYywgZiwgZmllbGRJbmRleCkgPT4ge1xuICAgICAgcmV0dXJuIGRjLnZhbHVlQXQoZi5wcm9wZXJ0aWVzLmluZGV4LCBmaWVsZEluZGV4KTtcbiAgICB9O1xuICAgIGNvbnN0IGluZGV4QWNjZXNzb3IgPSBmID0+IGYucHJvcGVydGllcy5pbmRleDtcblxuICAgIGNvbnN0IGRhdGFBY2Nlc3NvciA9IGRjID0+IGQgPT4gKHtpbmRleDogZC5wcm9wZXJ0aWVzLmluZGV4fSk7XG4gICAgY29uc3QgYWNjZXNzb3JzID0gdGhpcy5nZXRBdHRyaWJ1dGVBY2Nlc3NvcnMoe2RhdGFBY2Nlc3NvciwgZGF0YUNvbnRhaW5lcn0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBnZXRGaWx0ZXJWYWx1ZTogZ3B1RmlsdGVyLmZpbHRlclZhbHVlQWNjZXNzb3IoZGF0YUNvbnRhaW5lcikoXG4gICAgICAgIGluZGV4QWNjZXNzb3IsXG4gICAgICAgIGN1c3RvbUZpbHRlclZhbHVlQWNjZXNzb3JcbiAgICAgICksXG4gICAgICBnZXRQYXRoOiBkID0+IGQuZ2VvbWV0cnkuY29vcmRpbmF0ZXMsXG4gICAgICBnZXRUaW1lc3RhbXBzOiBkID0+IHRoaXMuZGF0YVRvVGltZVN0YW1wW2QucHJvcGVydGllcy5pbmRleF0sXG4gICAgICAuLi5hY2Nlc3NvcnNcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlQW5pbWF0aW9uRG9tYWluKGRvbWFpbikge1xuICAgIHRoaXMudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgYW5pbWF0aW9uOiB7XG4gICAgICAgIC4uLnRoaXMuY29uZmlnLmFuaW1hdGlvbixcbiAgICAgICAgZG9tYWluXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVMYXllck1ldGEoZGF0YUNvbnRhaW5lcikge1xuICAgIGNvbnN0IGdldEZlYXR1cmUgPSB0aGlzLmdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcik7XG4gICAgaWYgKGdldEZlYXR1cmUgPT09IHRoaXMubWV0YS5nZXRGZWF0dXJlKSB7XG4gICAgICAvLyBUT0RPOiByZXZpc2l0IHRoaXMgYWZ0ZXIgZ3B1IGZpbHRlcmluZ1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZGF0YVRvRmVhdHVyZSA9IGdldEdlb2pzb25EYXRhTWFwcyhkYXRhQ29udGFpbmVyLCBnZXRGZWF0dXJlKTtcblxuICAgIGNvbnN0IHtkYXRhVG9UaW1lU3RhbXAsIGFuaW1hdGlvbkRvbWFpbn0gPSBwYXJzZVRyaXBHZW9Kc29uVGltZXN0YW1wKHRoaXMuZGF0YVRvRmVhdHVyZSk7XG5cbiAgICB0aGlzLmRhdGFUb1RpbWVTdGFtcCA9IGRhdGFUb1RpbWVTdGFtcDtcbiAgICB0aGlzLnVwZGF0ZUFuaW1hdGlvbkRvbWFpbihhbmltYXRpb25Eb21haW4pO1xuXG4gICAgLy8gZ2V0IGJvdW5kcyBmcm9tIGZlYXR1cmVzXG4gICAgY29uc3QgYm91bmRzID0gZ2V0R2VvanNvbkJvdW5kcyh0aGlzLmRhdGFUb0ZlYXR1cmUpO1xuXG4gICAgLy8ga2VlcCBhIHJlY29yZCBvZiB3aGF0IHR5cGUgb2YgZ2VvbWV0cnkgdGhlIGNvbGxlY3Rpb24gaGFzXG4gICAgY29uc3QgZmVhdHVyZVR5cGVzID0gZ2V0R2VvanNvbkZlYXR1cmVUeXBlcyh0aGlzLmRhdGFUb0ZlYXR1cmUpO1xuXG4gICAgdGhpcy51cGRhdGVNZXRhKHtib3VuZHMsIGZlYXR1cmVUeXBlcywgZ2V0RmVhdHVyZX0pO1xuICB9XG5cbiAgc2V0SW5pdGlhbExheWVyQ29uZmlnKHtkYXRhQ29udGFpbmVyfSkge1xuICAgIHRoaXMudXBkYXRlTGF5ZXJNZXRhKGRhdGFDb250YWluZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmVuZGVyTGF5ZXIob3B0cykge1xuICAgIGNvbnN0IHtkYXRhLCBncHVGaWx0ZXIsIG1hcFN0YXRlLCBhbmltYXRpb25Db25maWd9ID0gb3B0cztcbiAgICBjb25zdCB7dmlzQ29uZmlnfSA9IHRoaXMuY29uZmlnO1xuICAgIGNvbnN0IHpvb21GYWN0b3IgPSB0aGlzLmdldFpvb21GYWN0b3IobWFwU3RhdGUpO1xuICAgIGNvbnN0IGlzVmFsaWRUaW1lID1cbiAgICAgIGFuaW1hdGlvbkNvbmZpZyAmJlxuICAgICAgQXJyYXkuaXNBcnJheShhbmltYXRpb25Db25maWcuZG9tYWluKSAmJlxuICAgICAgYW5pbWF0aW9uQ29uZmlnLmRvbWFpbi5ldmVyeShOdW1iZXIuaXNGaW5pdGUpICYmXG4gICAgICBOdW1iZXIuaXNGaW5pdGUoYW5pbWF0aW9uQ29uZmlnLmN1cnJlbnRUaW1lKTtcblxuICAgIGlmICghaXNWYWxpZFRpbWUpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBkb21haW4wID0gYW5pbWF0aW9uQ29uZmlnLmRvbWFpbj8uWzBdO1xuXG4gICAgY29uc3QgdXBkYXRlVHJpZ2dlcnMgPSB7XG4gICAgICAuLi50aGlzLmdldFZpc3VhbENoYW5uZWxVcGRhdGVUcmlnZ2VycygpLFxuICAgICAgZ2V0VGltZXN0YW1wczoge1xuICAgICAgICBjb2x1bW5zOiB0aGlzLmNvbmZpZy5jb2x1bW5zLFxuICAgICAgICBkb21haW4wXG4gICAgICB9LFxuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGdwdUZpbHRlci5maWx0ZXJWYWx1ZVVwZGF0ZVRyaWdnZXJzXG4gICAgfTtcbiAgICBjb25zdCBkZWZhdWx0TGF5ZXJQcm9wcyA9IHRoaXMuZ2V0RGVmYXVsdERlY2tMYXllclByb3BzKG9wdHMpO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIG5ldyBEZWNrR0xUcmlwc0xheWVyKHtcbiAgICAgICAgLi4uZGVmYXVsdExheWVyUHJvcHMsXG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIGdldFRpbWVzdGFtcHM6IGQgPT4gZGF0YS5nZXRUaW1lc3RhbXBzKGQpLm1hcCh0cyA9PiB0cyAtIGRvbWFpbjApLFxuICAgICAgICB3aWR0aFNjYWxlOiB0aGlzLmNvbmZpZy52aXNDb25maWcudGhpY2tuZXNzLFxuICAgICAgICB3aWR0aFVuaXRzOiAncGl4ZWxzJyxcbiAgICAgICAgcm91bmRlZDogdHJ1ZSxcbiAgICAgICAgd3JhcExvbmdpdHVkZTogZmFsc2UsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBkZXB0aFRlc3Q6IG1hcFN0YXRlLmRyYWdSb3RhdGUsXG4gICAgICAgICAgZGVwdGhNYXNrOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICB0cmFpbExlbmd0aDogdmlzQ29uZmlnLnRyYWlsTGVuZ3RoICogMTAwMCxcbiAgICAgICAgY3VycmVudFRpbWU6IGFuaW1hdGlvbkNvbmZpZy5jdXJyZW50VGltZSAtIGRvbWFpbjAsXG4gICAgICAgIHVwZGF0ZVRyaWdnZXJzXG4gICAgICB9KVxuICAgIF07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFVBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLGdCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBTSxhQUFBLEdBQUFOLE9BQUE7QUFPQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxjQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFBcUQsU0FBQVMsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFB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
369
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWVtb2l6ZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3VuaXEiLCJfYmFzZUxheWVyIiwiX2dlb0xheWVycyIsIl9kZWZhdWx0U2V0dGluZ3MiLCJfdHJpcExheWVySWNvbiIsIl9nZW9qc29uVXRpbHMiLCJfdHJpcFV0aWxzIiwiX3RyaXBJbmZvTW9kYWwiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsIl9zdXBlclByb3BHZXQiLCJwIiwiX2dldDIiLCJ6b29tRmFjdG9yVmFsdWUiLCJkZWZhdWx0VGhpY2tuZXNzIiwiZXhwb3J0cyIsImRlZmF1bHRMaW5lV2lkdGgiLCJ0cmlwVmlzQ29uZmlncyIsIm9wYWNpdHkiLCJ0aGlja25lc3MiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwibGFiZWwiLCJpc1JhbmdlZCIsInJhbmdlIiwic3RlcCIsImdyb3VwIiwicHJvcGVydHkiLCJjb2xvclJhbmdlIiwidHJhaWxMZW5ndGgiLCJzaXplUmFuZ2UiLCJnZW9Kc29uUmVxdWlyZWRDb2x1bW5zIiwiZmVhdHVyZUFjY2Vzc29yIiwiX3JlZiIsImdlb2pzb24iLCJkYyIsImQiLCJ2YWx1ZUF0IiwiaW5kZXgiLCJmaWVsZElkeCIsImZlYXR1cmVSZXNvbHZlciIsIl9yZWYyIiwiVHJpcExheWVyIiwiX0xheWVyIiwicHJvcHMiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJkYXRhVG9GZWF0dXJlIiwiZGF0YVRvVGltZVN0YW1wIiwicmVnaXN0ZXJWaXNDb25maWciLCJnZXRGZWF0dXJlIiwibWVtb2l6ZSIsIl9sYXllckluZm9Nb2RhbCIsIlRyaXBJbmZvTW9kYWxGYWN0b3J5IiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJnZXQiLCJUcmlwTGF5ZXJJY29uIiwidmlzdWFsQ2hhbm5lbHMiLCJjb2xvciIsImFjY2Vzc29yIiwibnVsbFZhbHVlIiwiZ2V0QXR0cmlidXRlVmFsdWUiLCJjb25maWciLCJwcm9wZXJ0aWVzIiwibGluZUNvbG9yIiwic2l6ZSIsImNvbmRpdGlvbiIsInZpc0NvbmZpZyIsInN0cm9rZWQiLCJsaW5lV2lkdGgiLCJhbmltYXRpb24iLCJkb21haW4iLCJpZCIsInRlbXBsYXRlIiwibW9kYWxQcm9wcyIsInRpdGxlIiwidmFsdWUiLCJnZXRQb3NpdGlvbkFjY2Vzc29yIiwiZGF0YUNvbnRhaW5lciIsImNvbHVtbnMiLCJnZXREZWZhdWx0TGF5ZXJDb25maWciLCJlbmFibGVkIiwiZ2V0SG92ZXJEYXRhIiwib2JqZWN0Iiwicm93IiwiY2FsY3VsYXRlRGF0YUF0dHJpYnV0ZSIsIl9yZWYzIiwiZ2V0UG9zaXRpb24iLCJfdGhpczIiLCJmaWx0ZXJlZEluZGV4IiwibWFwIiwiaSIsImdlb21ldHJ5IiwiZm9ybWF0TGF5ZXJEYXRhIiwiZGF0YXNldHMiLCJvbGRMYXllckRhdGEiLCJfdGhpczMiLCJkYXRhSWQiLCJfZGF0YXNldHMkdGhpcyRjb25maWciLCJncHVGaWx0ZXIiLCJfdGhpcyR1cGRhdGVEYXRhIiwidXBkYXRlRGF0YSIsImRhdGEiLCJjdXN0b21GaWx0ZXJWYWx1ZUFjY2Vzc29yIiwiZiIsImZpZWxkSW5kZXgiLCJpbmRleEFjY2Vzc29yIiwiZGF0YUFjY2Vzc29yIiwiYWNjZXNzb3JzIiwiZ2V0QXR0cmlidXRlQWNjZXNzb3JzIiwiZ2V0RmlsdGVyVmFsdWUiLCJmaWx0ZXJWYWx1ZUFjY2Vzc29yIiwiZ2V0UGF0aCIsImNvb3JkaW5hdGVzIiwiZ2V0VGltZXN0YW1wcyIsInVwZGF0ZUFuaW1hdGlvbkRvbWFpbiIsInVwZGF0ZUxheWVyQ29uZmlnIiwidXBkYXRlTGF5ZXJNZXRhIiwibWV0YSIsImdldEdlb2pzb25EYXRhTWFwcyIsIl9wYXJzZVRyaXBHZW9Kc29uVGltZSIsInBhcnNlVHJpcEdlb0pzb25UaW1lc3RhbXAiLCJhbmltYXRpb25Eb21haW4iLCJib3VuZHMiLCJnZXRHZW9qc29uQm91bmRzIiwiZmVhdHVyZVR5cGVzIiwiZ2V0R2VvanNvbkZlYXR1cmVUeXBlcyIsInVwZGF0ZU1ldGEiLCJzZXRJbml0aWFsTGF5ZXJDb25maWciLCJfcmVmNCIsInJlbmRlckxheWVyIiwib3B0cyIsIl9hbmltYXRpb25Db25maWckZG9tYSIsIm1hcFN0YXRlIiwiYW5pbWF0aW9uQ29uZmlnIiwiem9vbUZhY3RvciIsImdldFpvb21GYWN0b3IiLCJpc1ZhbGlkVGltZSIsIkFycmF5IiwiaXNBcnJheSIsImV2ZXJ5IiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJjdXJyZW50VGltZSIsImRvbWFpbjAiLCJ1cGRhdGVUcmlnZ2VycyIsImdldFZpc3VhbENoYW5uZWxVcGRhdGVUcmlnZ2VycyIsImZpbHRlclZhbHVlVXBkYXRlVHJpZ2dlcnMiLCJkZWZhdWx0TGF5ZXJQcm9wcyIsImdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyIsIkRlY2tHTFRyaXBzTGF5ZXIiLCJ0cyIsIndpZHRoU2NhbGUiLCJ3aWR0aFVuaXRzIiwicm91bmRlZCIsIndyYXBMb25naXR1ZGUiLCJwYXJhbWV0ZXJzIiwiZGVwdGhUZXN0IiwiZHJhZ1JvdGF0ZSIsImRlcHRoTWFzayIsImZpbmREZWZhdWx0TGF5ZXJQcm9wcyIsIl9yZWY1IiwiZm91bmRMYXllcnMiLCJfdGhpczQiLCJfcmVmNSRmaWVsZHMiLCJmaWVsZHMiLCJnZW9qc29uQ29sdW1ucyIsIm5hbWUiLCJkZWZhdWx0Q29sdW1ucyIsInVuaXEiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiR0VPSlNPTl9GSUVMRFMiLCJnZW9Kc29uQ29sdW1ucyIsImZpbmREZWZhdWx0Q29sdW1uRmllbGQiLCJ0cmlwQ29sdW1ucyIsImNvbCIsImlzVHJpcEdlb0pzb25GaWVsZCIsInJlcGxhY2UiLCJpc1Zpc2libGUiLCJwcm9wIiwiZmluZCIsImMiLCJMYXllciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvdHJpcC1sYXllci90cmlwLWxheWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBtZW1vaXplIGZyb20gJ2xvZGFzaC9tZW1vaXplJztcbmltcG9ydCB1bmlxIGZyb20gJ2xvZGFzaC91bmlxJztcbmltcG9ydCBMYXllciwge0xheWVyQmFzZUNvbmZpZywgTGF5ZXJDb2x1bW59IGZyb20gJy4uL2Jhc2UtbGF5ZXInO1xuaW1wb3J0IHtUcmlwc0xheWVyIGFzIERlY2tHTFRyaXBzTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2dlby1sYXllcnMnO1xuXG5pbXBvcnQge0dFT0pTT05fRklFTERTfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5pbXBvcnQgVHJpcExheWVySWNvbiBmcm9tICcuL3RyaXAtbGF5ZXItaWNvbic7XG5cbmltcG9ydCB7XG4gIGdldEdlb2pzb25EYXRhTWFwcyxcbiAgZ2V0R2VvanNvbkJvdW5kcyxcbiAgZ2V0R2VvanNvbkZlYXR1cmVUeXBlcyxcbiAgR2VvanNvbkRhdGFNYXBzXG59IGZyb20gJ2xheWVycy9nZW9qc29uLWxheWVyL2dlb2pzb24tdXRpbHMnO1xuXG5pbXBvcnQge2lzVHJpcEdlb0pzb25GaWVsZCwgcGFyc2VUcmlwR2VvSnNvblRpbWVzdGFtcH0gZnJvbSAnLi90cmlwLXV0aWxzJztcbmltcG9ydCBUcmlwSW5mb01vZGFsRmFjdG9yeSBmcm9tICcuL3RyaXAtaW5mby1tb2RhbCc7XG5pbXBvcnQge0RhdGFDb250YWluZXJJbnRlcmZhY2V9IGZyb20gJy4uLy4uL3V0aWxzL3RhYmxlLXV0aWxzL2RhdGEtY29udGFpbmVyLWludGVyZmFjZSc7XG5pbXBvcnQge0NvbG9yUmFuZ2V9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb2xvci1yYW5nZXMnO1xuaW1wb3J0IHtWaXNDb25maWdDb2xvclJhbmdlLCBWaXNDb25maWdOdW1iZXIsIFZpc0NvbmZpZ1JhbmdlfSBmcm9tICcuLi9sYXllci1mYWN0b3J5JztcbmltcG9ydCB7TWVyZ2V9IGZyb20gJy4uLy4uL3JlZHVjZXJzJztcbmltcG9ydCB7S2VwbGVyVGFibGV9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuZXhwb3J0IHR5cGUgVHJpcExheWVyVmlzQ29uZmlnU2V0dGluZ3MgPSB7XG4gIG9wYWNpdHk6IFZpc0NvbmZpZ051bWJlcjtcbiAgdGhpY2tuZXNzOiBWaXNDb25maWdOdW1iZXI7XG4gIGNvbG9yUmFuZ2U6IFZpc0NvbmZpZ0NvbG9yUmFuZ2U7XG4gIHRyYWlsTGVuZ3RoOiBWaXNDb25maWdOdW1iZXI7XG4gIHNpemVSYW5nZTogVmlzQ29uZmlnUmFuZ2U7XG59O1xuXG5leHBvcnQgdHlwZSBUcmlwTGF5ZXJDb2x1bW5zQ29uZmlnID0ge1xuICBnZW9qc29uOiBMYXllckNvbHVtbjtcbn07XG5cbmV4cG9ydCB0eXBlIFRyaXBMYXllclZpc0NvbmZpZyA9IHtcbiAgb3BhY2l0eTogbnVtYmVyO1xuICB0aGlja25lc3M6IG51bWJlcjtcbiAgY29sb3JSYW5nZTogQ29sb3JSYW5nZTtcbiAgdHJhaWxMZW5ndGg6IG51bWJlcjtcbiAgc2l6ZVJhbmdlOiBbbnVtYmVyLCBudW1iZXJdO1xufTtcblxuZXhwb3J0IHR5cGUgVHJpcExheWVyQ29uZmlnID0gTWVyZ2U8XG4gIExheWVyQmFzZUNvbmZpZyxcbiAge2NvbHVtbnM6IFRyaXBMYXllckNvbHVtbnNDb25maWc7IHZpc0NvbmZpZzogVHJpcExheWVyVmlzQ29uZmlnfVxuPjtcblxuZXhwb3J0IHR5cGUgVHJpcExheWVyTWV0YSA9IHtcbiAgZ2V0RmVhdHVyZTogYW55O1xufTtcblxuY29uc3Qgem9vbUZhY3RvclZhbHVlID0gODtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRUaGlja25lc3MgPSAwLjU7XG5leHBvcnQgY29uc3QgZGVmYXVsdExpbmVXaWR0aCA9IDE7XG5cbmV4cG9ydCBjb25zdCB0cmlwVmlzQ29uZmlnczoge1xuICBvcGFjaXR5OiAnb3BhY2l0eSc7XG4gIHRoaWNrbmVzczogVmlzQ29uZmlnTnVtYmVyO1xuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZSc7XG4gIHRyYWlsTGVuZ3RoOiAndHJhaWxMZW5ndGgnO1xuICBzaXplUmFuZ2U6ICdzdHJva2VXaWR0aFJhbmdlJztcbn0gPSB7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JyxcbiAgdGhpY2tuZXNzOiB7XG4gICAgdHlwZTogJ251bWJlcicsXG4gICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VGhpY2tuZXNzLFxuICAgIGxhYmVsOiAnU3Ryb2tlIFdpZHRoJyxcbiAgICBpc1JhbmdlZDogZmFsc2UsXG4gICAgcmFuZ2U6IFswLCAxMDBdLFxuICAgIHN0ZXA6IDAuMSxcbiAgICBncm91cDogJ3N0cm9rZScsXG4gICAgcHJvcGVydHk6ICd0aGlja25lc3MnXG4gIH0sXG4gIGNvbG9yUmFuZ2U6ICdjb2xvclJhbmdlJyxcbiAgdHJhaWxMZW5ndGg6ICd0cmFpbExlbmd0aCcsXG4gIHNpemVSYW5nZTogJ3N0cm9rZVdpZHRoUmFuZ2UnXG59O1xuXG5leHBvcnQgY29uc3QgZ2VvSnNvblJlcXVpcmVkQ29sdW1uczogWydnZW9qc29uJ10gPSBbJ2dlb2pzb24nXTtcbmV4cG9ydCBjb25zdCBmZWF0dXJlQWNjZXNzb3IgPSAoe2dlb2pzb259OiBUcmlwTGF5ZXJDb2x1bW5zQ29uZmlnKSA9PiAoXG4gIGRjOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlXG4pID0+IGQgPT4gZGMudmFsdWVBdChkLmluZGV4LCBnZW9qc29uLmZpZWxkSWR4KTtcbmV4cG9ydCBjb25zdCBmZWF0dXJlUmVzb2x2ZXIgPSAoe2dlb2pzb259OiBUcmlwTGF5ZXJDb2x1bW5zQ29uZmlnKSA9PiBnZW9qc29uLmZpZWxkSWR4O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUcmlwTGF5ZXIgZXh0ZW5kcyBMYXllciB7XG4gIGRlY2xhcmUgdmlzQ29uZmlnU2V0dGluZ3M6IFRyaXBMYXllclZpc0NvbmZpZ1NldHRpbmdzO1xuICBkZWNsYXJlIGNvbmZpZzogVHJpcExheWVyQ29uZmlnO1xuICBkZWNsYXJlIG1ldGE6IFRyaXBMYXllck1ldGE7XG5cbiAgZGF0YVRvRmVhdHVyZTogR2VvanNvbkRhdGFNYXBzO1xuICBkYXRhVG9UaW1lU3RhbXA6IHt9W107XG4gIGdldEZlYXR1cmU6IChjb2x1bW5zOiBUcmlwTGF5ZXJDb2x1bW5zQ29uZmlnKSA9PiAoZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSkgPT4gYW55O1xuICBfbGF5ZXJJbmZvTW9kYWw6ICgpID0+IEpTWC5FbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5kYXRhVG9GZWF0dXJlID0gW107XG4gICAgdGhpcy5kYXRhVG9UaW1lU3RhbXAgPSBbXTtcbiAgICB0aGlzLnJlZ2lzdGVyVmlzQ29uZmlnKHRyaXBWaXNDb25maWdzKTtcbiAgICB0aGlzLmdldEZlYXR1cmUgPSBtZW1vaXplKGZlYXR1cmVBY2Nlc3NvciwgZmVhdHVyZVJlc29sdmVyKTtcbiAgICB0aGlzLl9sYXllckluZm9Nb2RhbCA9IFRyaXBJbmZvTW9kYWxGYWN0b3J5KCk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHR5cGUoKTogJ3RyaXAnIHtcbiAgICByZXR1cm4gJ3RyaXAnO1xuICB9XG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiBUcmlwTGF5ZXIudHlwZTtcbiAgfVxuXG4gIGdldCBuYW1lKCk6ICdUcmlwJyB7XG4gICAgcmV0dXJuICdUcmlwJztcbiAgfVxuXG4gIGdldCBsYXllckljb24oKSB7XG4gICAgcmV0dXJuIFRyaXBMYXllckljb247XG4gIH1cblxuICBnZXQgcmVxdWlyZWRMYXllckNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIGdlb0pzb25SZXF1aXJlZENvbHVtbnM7XG4gIH1cblxuICBnZXQgdmlzdWFsQ2hhbm5lbHMoKSB7XG4gICAgY29uc3QgdmlzdWFsQ2hhbm5lbHMgPSBzdXBlci52aXN1YWxDaGFubmVscztcblxuICAgIHJldHVybiB7XG4gICAgICAuLi52aXN1YWxDaGFubmVscyxcbiAgICAgIGNvbG9yOiB7XG4gICAgICAgIC4uLnZpc3VhbENoYW5uZWxzLmNvbG9yLFxuICAgICAgICBhY2Nlc3NvcjogJ2dldENvbG9yJyxcbiAgICAgICAgbnVsbFZhbHVlOiB2aXN1YWxDaGFubmVscy5jb2xvci5udWxsVmFsdWUsXG4gICAgICAgIGdldEF0dHJpYnV0ZVZhbHVlOiBjb25maWcgPT4gZCA9PiBkLnByb3BlcnRpZXMubGluZUNvbG9yIHx8IGNvbmZpZy5jb2xvcixcbiAgICAgICAgLy8gdXNlZCB0aGlzIHRvIGdldCB1cGRhdGVUcmlnZ2Vyc1xuICAgICAgICBkZWZhdWx0VmFsdWU6IGNvbmZpZyA9PiBjb25maWcuY29sb3JcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIC4uLnZpc3VhbENoYW5uZWxzLnNpemUsXG4gICAgICAgIHByb3BlcnR5OiAnc3Ryb2tlJyxcbiAgICAgICAgYWNjZXNzb3I6ICdnZXRXaWR0aCcsXG4gICAgICAgIGNvbmRpdGlvbjogY29uZmlnID0+IGNvbmZpZy52aXNDb25maWcuc3Ryb2tlZCxcbiAgICAgICAgbnVsbFZhbHVlOiAwLFxuICAgICAgICBnZXRBdHRyaWJ1dGVWYWx1ZTogKCkgPT4gZCA9PiBkLnByb3BlcnRpZXMubGluZVdpZHRoIHx8IGRlZmF1bHRMaW5lV2lkdGhcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZ2V0IGFuaW1hdGlvbkRvbWFpbigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuYW5pbWF0aW9uLmRvbWFpbjtcbiAgfVxuXG4gIGdldCBsYXllckluZm9Nb2RhbCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6ICdpY29uSW5mbycsXG4gICAgICB0ZW1wbGF0ZTogdGhpcy5fbGF5ZXJJbmZvTW9kYWwsXG4gICAgICBtb2RhbFByb3BzOiB7XG4gICAgICAgIHRpdGxlOiAnbW9kYWwudHJpcEluZm8udGl0bGUnXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGdldFBvc2l0aW9uQWNjZXNzb3IoZGF0YUNvbnRhaW5lcjogRGF0YUNvbnRhaW5lckludGVyZmFjZSkge1xuICAgIHJldHVybiB0aGlzLmdldEZlYXR1cmUodGhpcy5jb25maWcuY29sdW1ucykoZGF0YUNvbnRhaW5lcik7XG4gIH1cblxuICBzdGF0aWMgZmluZERlZmF1bHRMYXllclByb3BzKFxuICAgIHtsYWJlbCwgZmllbGRzID0gW10sIGRhdGFDb250YWluZXIsIGlkfTogS2VwbGVyVGFibGUsXG4gICAgZm91bmRMYXllcnM6IGFueVtdXG4gICkge1xuICAgIGNvbnN0IGdlb2pzb25Db2x1bW5zID0gZmllbGRzLmZpbHRlcihmID0+IGYudHlwZSA9PT0gJ2dlb2pzb24nKS5tYXAoZiA9PiBmLm5hbWUpO1xuXG4gICAgY29uc3QgZGVmYXVsdENvbHVtbnMgPSB7XG4gICAgICBnZW9qc29uOiB1bmlxKFsuLi5HRU9KU09OX0ZJRUxEUy5nZW9qc29uLCAuLi5nZW9qc29uQ29sdW1uc10pXG4gICAgfTtcblxuICAgIGNvbnN0IGdlb0pzb25Db2x1bW5zID0gdGhpcy5maW5kRGVmYXVsdENvbHVtbkZpZWxkKGRlZmF1bHRDb2x1bW5zLCBmaWVsZHMpO1xuXG4gICAgY29uc3QgdHJpcENvbHVtbnMgPSAoZ2VvSnNvbkNvbHVtbnMgfHwgW10pLmZpbHRlcihjb2wgPT5cbiAgICAgIGlzVHJpcEdlb0pzb25GaWVsZChkYXRhQ29udGFpbmVyLCBmaWVsZHNbY29sLmdlb2pzb24uZmllbGRJZHhdKVxuICAgICk7XG5cbiAgICBpZiAoIXRyaXBDb2x1bW5zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHtwcm9wczogW119O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwcm9wczogdHJpcENvbHVtbnMubWFwKGNvbHVtbnMgPT4gKHtcbiAgICAgICAgbGFiZWw6ICh0eXBlb2YgbGFiZWwgPT09ICdzdHJpbmcnICYmIGxhYmVsLnJlcGxhY2UoL1xcLlteLy5dKyQvLCAnJykpIHx8IHRoaXMudHlwZSxcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgaXNWaXNpYmxlOiB0cnVlXG4gICAgICB9KSksXG5cbiAgICAgIC8vIGlmIGEgZ2VvanNvbiBsYXllciBpcyBjcmVhdGVkIGZyb20gdGhpcyBjb2x1bW4sIGRlbGV0ZSBpdFxuICAgICAgZm91bmRMYXllcnM6IGZvdW5kTGF5ZXJzLmZpbHRlcihcbiAgICAgICAgcHJvcCA9PlxuICAgICAgICAgIHByb3AudHlwZSAhPT0gJ2dlb2pzb24nIHx8XG4gICAgICAgICAgcHJvcC5kYXRhSWQgIT09IGlkIHx8XG4gICAgICAgICAgIXRyaXBDb2x1bW5zLmZpbmQoYyA9PiBwcm9wLmNvbHVtbnMuZ2VvanNvbi5uYW1lID09PSBjLmdlb2pzb24ubmFtZSlcbiAgICAgIClcbiAgICB9O1xuICB9XG5cbiAgZ2V0RGVmYXVsdExheWVyQ29uZmlnKHByb3BzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLmdldERlZmF1bHRMYXllckNvbmZpZyhwcm9wcyksXG4gICAgICBhbmltYXRpb246IHtcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgZG9tYWluOiBudWxsXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGdldEhvdmVyRGF0YShvYmplY3QsIGRhdGFDb250YWluZXIpIHtcbiAgICAvLyBpbmRleCBmb3IgZGF0YUNvbnRhaW5lciBpcyBzYXZlZCB0byBmZWF0dXJlLnByb3BlcnRpZXNcbiAgICByZXR1cm4gZGF0YUNvbnRhaW5lci5yb3cob2JqZWN0LnByb3BlcnRpZXMuaW5kZXgpO1xuICB9XG5cbiAgY2FsY3VsYXRlRGF0YUF0dHJpYnV0ZSh7ZGF0YUNvbnRhaW5lciwgZmlsdGVyZWRJbmRleH0sIGdldFBvc2l0aW9uKSB7XG4gICAgcmV0dXJuIGZpbHRlcmVkSW5kZXhcbiAgICAgIC5tYXAoaSA9PiB0aGlzLmRhdGFUb0ZlYXR1cmVbaV0pXG4gICAgICAuZmlsdGVyKGQgPT4gZCAmJiBkLmdlb21ldHJ5LnR5cGUgPT09ICdMaW5lU3RyaW5nJyk7XG4gIH1cblxuICBmb3JtYXRMYXllckRhdGEoZGF0YXNldHMsIG9sZExheWVyRGF0YSkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5kYXRhSWQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgLy8gdG8tZG86IHBhcnNlIHNlZ21lbnQgZnJvbSBkYXRhQ29udGFpbmVyXG4gICAgY29uc3Qge2RhdGFDb250YWluZXIsIGdwdUZpbHRlcn0gPSBkYXRhc2V0c1t0aGlzLmNvbmZpZy5kYXRhSWRdO1xuICAgIGNvbnN0IHtkYXRhfSA9IHRoaXMudXBkYXRlRGF0YShkYXRhc2V0cywgb2xkTGF5ZXJEYXRhKTtcblxuICAgIGNvbnN0IGN1c3RvbUZpbHRlclZhbHVlQWNjZXNzb3IgPSAoZGMsIGYsIGZpZWxkSW5kZXgpID0+IHtcbiAgICAgIHJldHVybiBkYy52YWx1ZUF0KGYucHJvcGVydGllcy5pbmRleCwgZmllbGRJbmRleCk7XG4gICAgfTtcbiAgICBjb25zdCBpbmRleEFjY2Vzc29yID0gZiA9PiBmLnByb3BlcnRpZXMuaW5kZXg7XG5cbiAgICBjb25zdCBkYXRhQWNjZXNzb3IgPSBkYyA9PiBkID0+ICh7aW5kZXg6IGQucHJvcGVydGllcy5pbmRleH0pO1xuICAgIGNvbnN0IGFjY2Vzc29ycyA9IHRoaXMuZ2V0QXR0cmlidXRlQWNjZXNzb3JzKHtkYXRhQWNjZXNzb3IsIGRhdGFDb250YWluZXJ9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhLFxuICAgICAgZ2V0RmlsdGVyVmFsdWU6IGdwdUZpbHRlci5maWx0ZXJWYWx1ZUFjY2Vzc29yKGRhdGFDb250YWluZXIpKFxuICAgICAgICBpbmRleEFjY2Vzc29yLFxuICAgICAgICBjdXN0b21GaWx0ZXJWYWx1ZUFjY2Vzc29yXG4gICAgICApLFxuICAgICAgZ2V0UGF0aDogZCA9PiBkLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxuICAgICAgZ2V0VGltZXN0YW1wczogZCA9PiB0aGlzLmRhdGFUb1RpbWVTdGFtcFtkLnByb3BlcnRpZXMuaW5kZXhdLFxuICAgICAgLi4uYWNjZXNzb3JzXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZUFuaW1hdGlvbkRvbWFpbihkb21haW4pIHtcbiAgICB0aGlzLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgIGFuaW1hdGlvbjoge1xuICAgICAgICAuLi50aGlzLmNvbmZpZy5hbmltYXRpb24sXG4gICAgICAgIGRvbWFpblxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlTGF5ZXJNZXRhKGRhdGFDb250YWluZXIpIHtcbiAgICBjb25zdCBnZXRGZWF0dXJlID0gdGhpcy5nZXRQb3NpdGlvbkFjY2Vzc29yKGRhdGFDb250YWluZXIpO1xuICAgIGlmIChnZXRGZWF0dXJlID09PSB0aGlzLm1ldGEuZ2V0RmVhdHVyZSkge1xuICAgICAgLy8gVE9ETzogcmV2aXNpdCB0aGlzIGFmdGVyIGdwdSBmaWx0ZXJpbmdcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGFUb0ZlYXR1cmUgPSBnZXRHZW9qc29uRGF0YU1hcHMoZGF0YUNvbnRhaW5lciwgZ2V0RmVhdHVyZSk7XG5cbiAgICBjb25zdCB7ZGF0YVRvVGltZVN0YW1wLCBhbmltYXRpb25Eb21haW59ID0gcGFyc2VUcmlwR2VvSnNvblRpbWVzdGFtcCh0aGlzLmRhdGFUb0ZlYXR1cmUpO1xuXG4gICAgdGhpcy5kYXRhVG9UaW1lU3RhbXAgPSBkYXRhVG9UaW1lU3RhbXA7XG4gICAgdGhpcy51cGRhdGVBbmltYXRpb25Eb21haW4oYW5pbWF0aW9uRG9tYWluKTtcblxuICAgIC8vIGdldCBib3VuZHMgZnJvbSBmZWF0dXJlc1xuICAgIGNvbnN0IGJvdW5kcyA9IGdldEdlb2pzb25Cb3VuZHModGhpcy5kYXRhVG9GZWF0dXJlKTtcblxuICAgIC8vIGtlZXAgYSByZWNvcmQgb2Ygd2hhdCB0eXBlIG9mIGdlb21ldHJ5IHRoZSBjb2xsZWN0aW9uIGhhc1xuICAgIGNvbnN0IGZlYXR1cmVUeXBlcyA9IGdldEdlb2pzb25GZWF0dXJlVHlwZXModGhpcy5kYXRhVG9GZWF0dXJlKTtcblxuICAgIHRoaXMudXBkYXRlTWV0YSh7Ym91bmRzLCBmZWF0dXJlVHlwZXMsIGdldEZlYXR1cmV9KTtcbiAgfVxuXG4gIHNldEluaXRpYWxMYXllckNvbmZpZyh7ZGF0YUNvbnRhaW5lcn0pIHtcbiAgICB0aGlzLnVwZGF0ZUxheWVyTWV0YShkYXRhQ29udGFpbmVyKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlbmRlckxheWVyKG9wdHMpIHtcbiAgICBjb25zdCB7ZGF0YSwgZ3B1RmlsdGVyLCBtYXBTdGF0ZSwgYW5pbWF0aW9uQ29uZmlnfSA9IG9wdHM7XG4gICAgY29uc3Qge3Zpc0NvbmZpZ30gPSB0aGlzLmNvbmZpZztcbiAgICBjb25zdCB6b29tRmFjdG9yID0gdGhpcy5nZXRab29tRmFjdG9yKG1hcFN0YXRlKTtcbiAgICBjb25zdCBpc1ZhbGlkVGltZSA9XG4gICAgICBhbmltYXRpb25Db25maWcgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkoYW5pbWF0aW9uQ29uZmlnLmRvbWFpbikgJiZcbiAgICAgIGFuaW1hdGlvbkNvbmZpZy5kb21haW4uZXZlcnkoTnVtYmVyLmlzRmluaXRlKSAmJlxuICAgICAgTnVtYmVyLmlzRmluaXRlKGFuaW1hdGlvbkNvbmZpZy5jdXJyZW50VGltZSk7XG5cbiAgICBpZiAoIWlzVmFsaWRUaW1lKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgZG9tYWluMCA9IGFuaW1hdGlvbkNvbmZpZy5kb21haW4/LlswXTtcblxuICAgIGNvbnN0IHVwZGF0ZVRyaWdnZXJzID0ge1xuICAgICAgLi4udGhpcy5nZXRWaXN1YWxDaGFubmVsVXBkYXRlVHJpZ2dlcnMoKSxcbiAgICAgIGdldFRpbWVzdGFtcHM6IHtcbiAgICAgICAgY29sdW1uczogdGhpcy5jb25maWcuY29sdW1ucyxcbiAgICAgICAgZG9tYWluMFxuICAgICAgfSxcbiAgICAgIGdldEZpbHRlclZhbHVlOiBncHVGaWx0ZXIuZmlsdGVyVmFsdWVVcGRhdGVUcmlnZ2Vyc1xuICAgIH07XG4gICAgY29uc3QgZGVmYXVsdExheWVyUHJvcHMgPSB0aGlzLmdldERlZmF1bHREZWNrTGF5ZXJQcm9wcyhvcHRzKTtcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgRGVja0dMVHJpcHNMYXllcih7XG4gICAgICAgIC4uLmRlZmF1bHRMYXllclByb3BzLFxuICAgICAgICAuLi5kYXRhLFxuICAgICAgICBnZXRUaW1lc3RhbXBzOiBkID0+IGRhdGEuZ2V0VGltZXN0YW1wcyhkKS5tYXAodHMgPT4gdHMgLSBkb21haW4wKSxcbiAgICAgICAgd2lkdGhTY2FsZTogdGhpcy5jb25maWcudmlzQ29uZmlnLnRoaWNrbmVzcyxcbiAgICAgICAgd2lkdGhVbml0czogJ3BpeGVscycsXG4gICAgICAgIHJvdW5kZWQ6IHRydWUsXG4gICAgICAgIHdyYXBMb25naXR1ZGU6IGZhbHNlLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgZGVwdGhUZXN0OiBtYXBTdGF0ZS5kcmFnUm90YXRlLFxuICAgICAgICAgIGRlcHRoTWFzazogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgdHJhaWxMZW5ndGg6IHZpc0NvbmZpZy50cmFpbExlbmd0aCAqIDEwMDAsXG4gICAgICAgIGN1cnJlbnRUaW1lOiBhbmltYXRpb25Db25maWcuY3VycmVudFRpbWUgLSBkb21haW4wLFxuICAgICAgICB1cGRhdGVUcmlnZ2Vyc1xuICAgICAgfSlcbiAgICBdO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxnQkFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssY0FBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQU0sYUFBQSxHQUFBTixPQUFBO0FBT0EsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsY0FBQSxHQUFBVCxzQkFBQSxDQUFBQyxPQUFBO0FBQXFELFNBQUFTLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxF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
@@ -90,16 +90,7 @@ export declare function getMapStyles({ styleType, visibleLayerGroups, topLayerGr
90
90
  editable?: undefined;
91
91
  } | {
92
92
  bottomMapStyle: any;
93
- topMapStyle: {
94
- layers: any;
95
- constructor: Function;
96
- toString(): string;
97
- toLocaleString(): string;
98
- valueOf(): Object;
99
- hasOwnProperty(v: PropertyKey): boolean;
100
- isPrototypeOf(v: Object): boolean;
101
- propertyIsEnumerable(v: PropertyKey): boolean;
102
- };
93
+ topMapStyle: any;
103
94
  editable: number;
104
95
  };
105
96
  /**
@@ -11,7 +11,7 @@ exports.getMapStyles = getMapStyles;
11
11
  exports.set3dBuildingColorUpdater = exports.resetMapConfigMapStyleUpdater = exports.requestMapStylesUpdater = exports.receiveMapConfigUpdater = exports.mapStyleChangeUpdater = exports.mapConfigChangeUpdater = exports.loadMapStylesUpdater = exports.loadMapStyleErrUpdater = exports.loadCustomMapStyleUpdater = exports.inputMapStyleUpdater = exports.initMapStyleUpdater = void 0;
12
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
13
  var _index = _interopRequireWildcard(require("react-palm/tasks/index.js"));
14
- var _lodash = _interopRequireDefault(require("lodash.clonedeep"));
14
+ var _clonedeep = _interopRequireDefault(require("lodash/clonedeep"));
15
15
  var _mapboxGlStyleEditor = require("../utils/map-style-utils/mapbox-gl-style-editor");
16
16
  var _defaultSettings = require("../constants/default-settings");
17
17
  var _utils = require("../utils/utils");
@@ -384,7 +384,7 @@ var loadCustomMapStyleUpdater = exports.loadCustomMapStyleUpdater = function loa
384
384
  // @ts-expect-error
385
385
  id: style.id || (0, _utils.generateHashId)(),
386
386
  // make a copy of the style object
387
- style: (0, _lodash["default"])(style),
387
+ style: (0, _clonedeep["default"])(style),
388
388
  // @ts-expect-error
389
389
  label: style.name,
390
390
  // gathering layer group info from style json
@@ -470,4 +470,4 @@ function getInitialInputStyle() {
470
470
  custom: true
471
471
  };
472
472
  }
473
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW5kZXgiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9tYXBib3hHbFN0eWxlRWRpdG9yIiwiX2RlZmF1bHRTZXR0aW5ncyIsIl91dGlscyIsIl90YXNrcyIsIl9tYXBTdHlsZUFjdGlvbnMiLCJfZDNDb2xvciIsIl9jb2xvclV0aWxzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiREVGQVVMVF9CTERHX0NPTE9SIiwiZ2V0RGVmYXVsdFN0YXRlIiwidmlzaWJsZUxheWVyR3JvdXBzIiwic3R5bGVUeXBlIiwidG9wTGF5ZXJHcm91cHMiLCJtYXBTdHlsZXMiLCJERUZBVUxUX01BUF9TVFlMRVMiLCJyZWR1Y2UiLCJhY2N1IiwiY3VyciIsImlkIiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJERUZBVUxUX01BUEJPWF9BUElfVVJMIiwibWFwU3R5bGVzUmVwbGFjZURlZmF1bHQiLCJpbnB1dFN0eWxlIiwiZ2V0SW5pdGlhbElucHV0U3R5bGUiLCJ0aHJlZURCdWlsZGluZ0NvbG9yIiwiaGV4VG9SZ2IiLCJjdXN0b20zREJ1aWxkaW5nQ29sb3IiLCJtYXBTdHlsZVVwZGF0ZXJzIiwiSU5JVElBTF9NQVBfU1RZTEUiLCJleHBvcnRzIiwiZ2V0TWFwU3R5bGVzIiwiX3JlZiIsIm1hcFN0eWxlIiwic3R5bGUiLCJlZGl0YWJsZSIsImJvdHRvbU1hcFN0eWxlIiwiZWRpdEJvdHRvbU1hcFN0eWxlIiwiaGFzVG9wTGF5ZXIiLCJ2YWx1ZXMiLCJzb21lIiwidiIsInRvcExheWVycyIsImtleSIsInRvcE1hcFN0eWxlIiwiZWRpdFRvcE1hcFN0eWxlIiwiZmluZExheWVyRmlsbENvbG9yIiwibGF5ZXIiLCJwYWludCIsImdldDNEQnVpbGRpbmdDb2xvciIsImJhY2tncm91bmRMYXllciIsImxheWVycyIsImZpbmQiLCJfcmVmMiIsImJ1aWxkaW5nTGF5ZXIiLCJfcmVmMyIsIm1hdGNoIiwiYnVpbGRpbmdDb2xvciIsIm9wZXJhdGlvbiIsImFscGhhIiwicmdiT2JqIiwicmdiIiwiZyIsImIiLCJnZXRMYXllckdyb3Vwc0Zyb21TdHlsZSIsIkFycmF5IiwiaXNBcnJheSIsIkRFRkFVTFRfTEFZRVJfR1JPVVBTIiwibGciLCJpbml0TWFwU3R5bGVVcGRhdGVyIiwic3RhdGUiLCJfcmVmNCIsIl9yZWY0JHBheWxvYWQiLCJwYXlsb2FkIiwibWFwQ29uZmlnQ2hhbmdlVXBkYXRlciIsImFjdGlvbiIsIm1hcFN0eWxlQ2hhbmdlVXBkYXRlciIsIl9yZWY1IiwiZGVmYXVsdExHVmlzaWJpbGl0eSIsImdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eSIsIm1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHkiLCJsb2FkTWFwU3R5bGVzVXBkYXRlciIsIm5ld1N0eWxlcyIsImFkZExheWVyR3JvdXBzIiwibGF5ZXJHcm91cHMiLCJuZXdTdGF0ZSIsImxvYWRNYXBTdHlsZUVyclVwZGF0ZXIiLCJyZXF1ZXN0TWFwU3R5bGVzVXBkYXRlciIsIl9yZWY2IiwibG9hZE1hcFN0eWxlVGFza3MiLCJnZXRMb2FkTWFwU3R5bGVUYXNrcyIsIndpdGhUYXNrIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJfcmVmNyIsImNvbmZpZyIsIl9yZWY4IiwibWVyZ2VkIiwiQm9vbGVhbiIsIlRhc2siLCJhbGwiLCJtYXAiLCJfcmVmOSIsInVybCIsImFjY2Vzc1Rva2VuIiwiaXNWYWxpZFN0eWxlVXJsIiwiZ2V0U3R5bGVEb3dubG9hZFVybCIsIkxPQURfTUFQX1NUWUxFX1RBU0siLCJiaW1hcCIsInJlc3VsdHMiLCJsb2FkTWFwU3R5bGVzIiwiX3JlZjEwIiwibG9hZE1hcFN0eWxlRXJyIiwicmVzZXRNYXBDb25maWdNYXBTdHlsZVVwZGF0ZXIiLCJlbXB0eUNvbmZpZyIsImluaXRpYWxTdGF0ZSIsImxvYWRDdXN0b21NYXBTdHlsZVVwZGF0ZXIiLCJfcmVmMTEiLCJfcmVmMTEkcGF5bG9hZCIsImljb24iLCJlcnJvciIsImdlbmVyYXRlSGFzaElkIiwiY2xvbmVEZWVwIiwibGFiZWwiLCJuYW1lIiwidW5kZWZpbmVkIiwiaW5wdXRNYXBTdHlsZVVwZGF0ZXIiLCJfcmVmMTIiLCJfcmVmMTIkcGF5bG9hZCIsIm1hcFN0YXRlIiwidXBkYXRlZCIsImlzVmFsaWQiLCJnZXRTdHlsZUltYWdlSWNvbiIsInN0eWxlVXJsIiwiYWRkQ3VzdG9tTWFwU3R5bGVVcGRhdGVyIiwic3R5bGVJZCIsInNldDNkQnVpbGRpbmdDb2xvclVwZGF0ZXIiLCJfcmVmMTMiLCJjb2xvciIsImN1c3RvbSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWR1Y2Vycy9tYXAtc3R5bGUtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFRhc2ssIHt3aXRoVGFza30gZnJvbSAncmVhY3QtcGFsbS90YXNrcy9pbmRleC5qcyc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC5jbG9uZWRlZXAnO1xuXG4vLyBVdGlsc1xuaW1wb3J0IHtcbiAgZ2V0RGVmYXVsdExheWVyR3JvdXBWaXNpYmlsaXR5LFxuICBpc1ZhbGlkU3R5bGVVcmwsXG4gIGdldFN0eWxlRG93bmxvYWRVcmwsXG4gIG1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHksXG4gIGVkaXRUb3BNYXBTdHlsZSxcbiAgZWRpdEJvdHRvbU1hcFN0eWxlLFxuICBnZXRTdHlsZUltYWdlSWNvblxufSBmcm9tICd1dGlscy9tYXAtc3R5bGUtdXRpbHMvbWFwYm94LWdsLXN0eWxlLWVkaXRvcic7XG5pbXBvcnQge1xuICBERUZBVUxUX01BUF9TVFlMRVMsXG4gIERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICBERUZBVUxUX01BUEJPWF9BUElfVVJMXG59IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWR9IGZyb20gJ3V0aWxzL3V0aWxzJztcbmltcG9ydCB7TE9BRF9NQVBfU1RZTEVfVEFTS30gZnJvbSAndGFza3MvdGFza3MnO1xuaW1wb3J0IHtsb2FkTWFwU3R5bGVzLCBsb2FkTWFwU3R5bGVFcnJ9IGZyb20gJ2FjdGlvbnMvbWFwLXN0eWxlLWFjdGlvbnMnO1xuaW1wb3J0IHtyZ2J9IGZyb20gJ2QzLWNvbG9yJztcbmltcG9ydCB7aGV4VG9SZ2J9IGZyb20gJ3V0aWxzL2NvbG9yLXV0aWxzJztcblxuaW1wb3J0IHtSR0JDb2xvcn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgQWN0aW9uVHlwZXMgZnJvbSAnY29uc3RhbnRzL2FjdGlvbi10eXBlcyc7XG5pbXBvcnQge1JlY2VpdmVNYXBDb25maWdQYXlsb2FkLCBLZXBsZXJHbEluaXRQYXlsb2FkfSBmcm9tICcuLi9hY3Rpb25zL2FjdGlvbnMnO1xuaW1wb3J0ICogYXMgTWFwU3R5bGVBY3Rpb25zIGZyb20gJy4uL2FjdGlvbnMvbWFwLXN0eWxlLWFjdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBMYXllckdyb3VwID0ge1xuICBzbHVnOiBzdHJpbmc7XG4gIGZpbHRlcihsYXllcjoge2lkOiBzdHJpbmd9KTogYm9vbGVhbjtcbiAgZGVmYXVsdFZpc2liaWxpdHk6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBWaXNpYmxlTGF5ZXJHcm91cHMgPSB7XG4gIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBNYXBib3hTdHlsZVVybCA9IHN0cmluZztcblxuZXhwb3J0IHR5cGUgQmFzZU1hcFN0eWxlID0ge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICBzdHlsZT86IE9iamVjdDtcbiAgbGF5ZXJHcm91cHM6IExheWVyR3JvdXBbXTtcbn07XG5cbmV4cG9ydCB0eXBlIE1hcFN0eWxlcyA9IHtcbiAgW2tleTogc3RyaW5nXTogQmFzZU1hcFN0eWxlO1xufTtcblxuZXhwb3J0IHR5cGUgSW5wdXRTdHlsZSA9IHtcbiAgYWNjZXNzVG9rZW46IHN0cmluZyB8IG51bGw7XG4gIGVycm9yOiBib29sZWFuO1xuICBpc1ZhbGlkOiBib29sZWFuO1xuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgc3R5bGU6IGFueSB8IG51bGw7XG4gIHVybDogc3RyaW5nIHwgbnVsbDtcbiAgaWNvbjogc3RyaW5nIHwgbnVsbDtcbiAgY3VzdG9tOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgTWFwU3R5bGUgPSB7XG4gIHN0eWxlVHlwZTogc3RyaW5nO1xuICB2aXNpYmxlTGF5ZXJHcm91cHM6IFZpc2libGVMYXllckdyb3VwcztcbiAgdG9wTGF5ZXJHcm91cHM6IFZpc2libGVMYXllckdyb3VwcztcbiAgbWFwU3R5bGVzOiBNYXBTdHlsZXM7XG4gIC8vIHNhdmUgbWFwYm94IGFjY2VzcyB0b2tlblxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RyaW5nIHwgbnVsbDtcbiAgbWFwYm94QXBpVXJsOiBzdHJpbmc7XG4gIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBib29sZWFuO1xuICBpbnB1dFN0eWxlOiBJbnB1dFN0eWxlO1xuICB0aHJlZURCdWlsZGluZ0NvbG9yOiBSR0JDb2xvcjtcbiAgY3VzdG9tM0RCdWlsZGluZ0NvbG9yOiBib29sZWFuO1xuXG4gIGluaXRpYWxTdGF0ZT86IE1hcFN0eWxlO1xufTtcblxuY29uc3QgREVGQVVMVF9CTERHX0NPTE9SID0gJyNEMUNFQzcnO1xuXG5jb25zdCBnZXREZWZhdWx0U3RhdGUgPSAoKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCB2aXNpYmxlTGF5ZXJHcm91cHMgPSB7fTtcbiAgY29uc3Qgc3R5bGVUeXBlID0gJ2RhcmsnO1xuICBjb25zdCB0b3BMYXllckdyb3VwcyA9IHt9O1xuXG4gIHJldHVybiB7XG4gICAgc3R5bGVUeXBlLFxuICAgIHZpc2libGVMYXllckdyb3VwcyxcbiAgICB0b3BMYXllckdyb3VwcyxcbiAgICBtYXBTdHlsZXM6IERFRkFVTFRfTUFQX1NUWUxFUy5yZWR1Y2UoXG4gICAgICAoYWNjdSwgY3VycikgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgW2N1cnIuaWRdOiBjdXJyXG4gICAgICB9KSxcbiAgICAgIHt9XG4gICAgKSxcbiAgICAvLyBzYXZlIG1hcGJveCBhY2Nlc3MgdG9rZW5cbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogbnVsbCxcbiAgICBtYXBib3hBcGlVcmw6IERFRkFVTFRfTUFQQk9YX0FQSV9VUkwsXG4gICAgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQ6IGZhbHNlLFxuICAgIGlucHV0U3R5bGU6IGdldEluaXRpYWxJbnB1dFN0eWxlKCksXG4gICAgdGhyZWVEQnVpbGRpbmdDb2xvcjogaGV4VG9SZ2IoREVGQVVMVF9CTERHX0NPTE9SKSxcbiAgICBjdXN0b20zREJ1aWxkaW5nQ29sb3I6IGZhbHNlXG4gIH07XG59O1xuXG4vKipcbiAqIFVwZGF0ZXJzIGZvciBgbWFwU3R5bGVgLiBDYW4gYmUgdXNlZCBpbiB5b3VyIHJvb3QgcmVkdWNlciB0byBkaXJlY3RseSBtb2RpZnkga2VwbGVyLmdsJ3Mgc3RhdGUuXG4gKiBSZWFkIG1vcmUgYWJvdXQgW1VzaW5nIHVwZGF0ZXJzXSguLi9hZHZhbmNlZC11c2FnZS91c2luZy11cGRhdGVycy5tZClcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKlxuICogaW1wb3J0IGtlcGxlckdsUmVkdWNlciwge21hcFN0eWxlVXBkYXRlcnN9IGZyb20gJ2tlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBjbGljayBidXR0b24gdG8gaGlkZSBsYWJlbCBmcm9tIGJhY2tncm91bmQgbWFwXG4gKiAgICBjYXNlICdDTElDS19CVVRUT04nOlxuICogICAgICByZXR1cm4ge1xuICogICAgICAgIC4uLnN0YXRlLFxuICogICAgICAgIGtlcGxlckdsOiB7XG4gKiAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbCxcbiAqICAgICAgICAgIGZvbzoge1xuICogICAgICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wuZm9vLFxuICogICAgICAgICAgICAgbWFwU3R5bGU6IG1hcFN0eWxlVXBkYXRlcnMubWFwQ29uZmlnQ2hhbmdlVXBkYXRlcihcbiAqICAgICAgICAgICAgICAgbWFwU3R5bGUsXG4gKiAgICAgICAgICAgICAgIHtwYXlsb2FkOiB7dmlzaWJsZUxheWVyR3JvdXBzOiB7bGFiZWw6IGZhbHNlLCByb2FkOiB0cnVlLCBiYWNrZ3JvdW5kOiB0cnVlfX19XG4gKiAgICAgICAgICAgICApXG4gKiAgICAgICAgICB9XG4gKiAgICAgICAgfVxuICogICAgICB9O1xuICogIH1cbiAqICByZXR1cm4gcmVkdWNlcnMoc3RhdGUsIGFjdGlvbik7XG4gKiB9O1xuICpcbiAqIGV4cG9ydCBkZWZhdWx0IGNvbXBvc2VkUmVkdWNlcjtcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbmNvbnN0IG1hcFN0eWxlVXBkYXRlcnMgPSBudWxsO1xuLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtdmFycyAqL1xuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYG1hcFN0eWxlYFxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IHN0eWxlVHlwZSAtIERlZmF1bHQ6IGAnZGFyaydgXG4gKiBAcHJvcGVydHkgdmlzaWJsZUxheWVyR3JvdXBzIC0gRGVmYXVsdDogYHt9YFxuICogQHByb3BlcnR5IHRvcExheWVyR3JvdXBzIC0gRGVmYXVsdDogYHt9YFxuICogQHByb3BlcnR5IG1hcFN0eWxlcyAtIG1hcHBpbmcgZnJvbSBzdHlsZSBrZXkgdG8gc3R5bGUgb2JqZWN0XG4gKiBAcHJvcGVydHkgbWFwYm94QXBpQWNjZXNzVG9rZW4gLSBEZWZhdWx0OiBgbnVsbGBcbiAqIEBQcm9wZXJ0eSBtYXBib3hBcGlVcmwgLSBEZWZhdWx0IG51bGxcbiAqIEBQcm9wZXJ0eSBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCAtIERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSBpbnB1dFN0eWxlIC0gRGVmYXVsdDogYHt9YFxuICogQHByb3BlcnR5IHRocmVlREJ1aWxkaW5nQ29sb3IgLSBEZWZhdWx0OiBgW3IsIGcsIGJdYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9NQVBfU1RZTEU6IE1hcFN0eWxlID0gZ2V0RGVmYXVsdFN0YXRlKCk7XG5cbmludGVyZmFjZSBHZXRNYXBTdHlsZXNQYXJhbSB7XG4gIHN0eWxlVHlwZTogc3RyaW5nO1xuICB2aXNpYmxlTGF5ZXJHcm91cHM6IHtbaWQ6IHN0cmluZ106IExheWVyR3JvdXAgfCBib29sZWFufTtcbiAgdG9wTGF5ZXJHcm91cHM6IHtbaWQ6IHN0cmluZ106IExheWVyR3JvdXAgfCBib29sZWFufTtcbiAgbWFwU3R5bGVzOiB7W2lkOiBzdHJpbmddOiBhbnl9O1xufVxuXG4vKipcbiAqIENyZWF0ZSB0d28gbWFwIHN0eWxlcyBmcm9tIHByZXNldCBtYXAgc3R5bGUsIG9uZSBmb3IgdG9wIG1hcCBvbmUgZm9yIGJvdHRvbVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZVR5cGUgLSBjdXJyZW50IG1hcCBzdHlsZVxuICogQHBhcmFtIHtPYmplY3R9IHZpc2libGVMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIGJvdHRvbSBtYXBcbiAqIEBwYXJhbSB7T2JqZWN0fSB0b3BMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIHRvcCBtYXBcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXBTdHlsZXMgLSBhIGRpY3Rpb25hcnkgb2YgYWxsIG1hcCBzdHlsZXNcbiAqIEByZXR1cm5zIHtPYmplY3R9IGJvdHRvbU1hcFN0eWxlIHwgdG9wTWFwU3R5bGUgfCBpc1Jhc3RlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFwU3R5bGVzKHtcbiAgc3R5bGVUeXBlLFxuICB2aXNpYmxlTGF5ZXJHcm91cHMsXG4gIHRvcExheWVyR3JvdXBzLFxuICBtYXBTdHlsZXNcbn06IEdldE1hcFN0eWxlc1BhcmFtKSB7XG4gIGNvbnN0IG1hcFN0eWxlID0gbWFwU3R5bGVzW3N0eWxlVHlwZV07XG5cbiAgLy8gc3R5bGUgbWlnaHQgbm90IGJlIGxvYWRlZCB5ZXRcbiAgaWYgKCFtYXBTdHlsZSB8fCAhbWFwU3R5bGUuc3R5bGUpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBlZGl0YWJsZSA9IE9iamVjdC5rZXlzKHZpc2libGVMYXllckdyb3VwcykubGVuZ3RoO1xuXG4gIGNvbnN0IGJvdHRvbU1hcFN0eWxlID0gIWVkaXRhYmxlXG4gICAgPyBtYXBTdHlsZS5zdHlsZVxuICAgIDogZWRpdEJvdHRvbU1hcFN0eWxlKHtcbiAgICAgICAgaWQ6IHN0eWxlVHlwZSxcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIHZpc2libGVMYXllckdyb3Vwc1xuICAgICAgfSk7XG5cbiAgY29uc3QgaGFzVG9wTGF5ZXIgPSBlZGl0YWJsZSA+IDAgJiYgT2JqZWN0LnZhbHVlcyh0b3BMYXllckdyb3Vwcykuc29tZSh2ID0+IHYpO1xuXG4gIC8vIG11dGUgdG9wIGxheWVyIGlmIG5vdCB2aXNpYmxlIGluIGJvdHRvbSBsYXllclxuICBjb25zdCB0b3BMYXllcnMgPVxuICAgIGhhc1RvcExheWVyICYmXG4gICAgT2JqZWN0LmtleXModG9wTGF5ZXJHcm91cHMpLnJlZHVjZShcbiAgICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAgIC4uLmFjY3UsXG4gICAgICAgIFtrZXldOiB0b3BMYXllckdyb3Vwc1trZXldICYmIHZpc2libGVMYXllckdyb3Vwc1trZXldXG4gICAgICB9KSxcbiAgICAgIHt9IGFzIHtbaWQ6IHN0cmluZ106IExheWVyR3JvdXAgfCBib29sZWFufVxuICAgICk7XG5cbiAgY29uc3QgdG9wTWFwU3R5bGUgPSBoYXNUb3BMYXllclxuICAgID8gZWRpdFRvcE1hcFN0eWxlKHtcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIHZpc2libGVMYXllckdyb3VwczogdG9wTGF5ZXJzXG4gICAgICB9KVxuICAgIDogbnVsbDtcblxuICByZXR1cm4ge2JvdHRvbU1hcFN0eWxlLCB0b3BNYXBTdHlsZSwgZWRpdGFibGV9O1xufVxuXG5mdW5jdGlvbiBmaW5kTGF5ZXJGaWxsQ29sb3IobGF5ZXIpIHtcbiAgcmV0dXJuIGxheWVyICYmIGxheWVyLnBhaW50ICYmIGxheWVyLnBhaW50WydiYWNrZ3JvdW5kLWNvbG9yJ107XG59XG5cbmZ1bmN0aW9uIGdldDNEQnVpbGRpbmdDb2xvcihzdHlsZSk6IFJHQkNvbG9yIHtcbiAgLy8gc2V0IGJ1aWxkaW5nIGNvbG9yIHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxuICBpZiAoIXN0eWxlLnN0eWxlKSB7XG4gICAgcmV0dXJuIGhleFRvUmdiKERFRkFVTFRfQkxER19DT0xPUik7XG4gIH1cblxuICBjb25zdCBiYWNrZ3JvdW5kTGF5ZXIgPSAoc3R5bGUuc3R5bGUubGF5ZXJzIHx8IFtdKS5maW5kKCh7aWR9KSA9PiBpZCA9PT0gJ2JhY2tncm91bmQnKTtcblxuICBjb25zdCBidWlsZGluZ0xheWVyID0gKHN0eWxlLnN0eWxlLmxheWVycyB8fCBbXSkuZmluZCgoe2lkfSkgPT4gaWQubWF0Y2goL2J1aWxkaW5nLykpO1xuXG4gIGNvbnN0IGJ1aWxkaW5nQ29sb3IgPVxuICAgIGZpbmRMYXllckZpbGxDb2xvcihidWlsZGluZ0xheWVyKSB8fCBmaW5kTGF5ZXJGaWxsQ29sb3IoYmFja2dyb3VuZExheWVyKSB8fCBERUZBVUxUX0JMREdfQ09MT1I7XG5cbiAgLy8gYnJpZ2h0ZW4gb3IgZGFya2VuIGJ1aWxkaW5nIGJhc2VkIG9uIHN0eWxlXG4gIGNvbnN0IG9wZXJhdGlvbiA9IHN0eWxlLmlkLm1hdGNoKC8oPz0oZGFya3xuaWdodCkpLykgPyAnYnJpZ2h0ZXInIDogJ2Rhcmtlcic7XG5cbiAgY29uc3QgYWxwaGEgPSAwLjI7XG4gIGNvbnN0IHJnYk9iaiA9IHJnYihidWlsZGluZ0NvbG9yKVtvcGVyYXRpb25dKFthbHBoYV0gYXMgYW55KTtcbiAgcmV0dXJuIFtyZ2JPYmouciwgcmdiT2JqLmcsIHJnYk9iai5iXTtcbn1cblxuZnVuY3Rpb24gZ2V0TGF5ZXJHcm91cHNGcm9tU3R5bGUoc3R5bGUpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoc3R5bGUubGF5ZXJzKVxuICAgID8gREVGQVVMVF9MQVlFUl9HUk9VUFMuZmlsdGVyKGxnID0+IHN0eWxlLmxheWVycy5maWx0ZXIobGcuZmlsdGVyKS5sZW5ndGgpXG4gICAgOiBbXTtcbn1cblxuLy8gVXBkYXRlcnNcbi8qKlxuICogUHJvcGFnYXRlIGBtYXBTdHlsZWAgcmVkdWNlciB3aXRoIGBtYXBib3hBcGlBY2Nlc3NUb2tlbmAgYW5kIGBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdGAuXG4gKiBpZiBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCBpcyB0cnVlIG1hcFN0eWxlcyBpcyBlbXB0aWVkOyBsb2FkTWFwU3R5bGVzVXBkYXRlcigpIHdpbGxcbiAqIHBvcHVsYXRlIG1hcFN0eWxlcy5cbiAqXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgaW5pdE1hcFN0eWxlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICB7XG4gICAgcGF5bG9hZCA9IHt9XG4gIH06IHtcbiAgICB0eXBlPzogdHlwZW9mIEFjdGlvblR5cGVzLklOSVQ7XG4gICAgcGF5bG9hZDogS2VwbGVyR2xJbml0UGF5bG9hZDtcbiAgfVxuKTogTWFwU3R5bGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIC8vIHNhdmUgbWFwYm94IGFjY2VzcyB0b2tlbiB0byBtYXAgc3R5bGUgc3RhdGVcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHBheWxvYWQubWFwYm94QXBpQWNjZXNzVG9rZW4gfHwgc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcGJveEFwaVVybDogcGF5bG9hZC5tYXBib3hBcGlVcmwgfHwgc3RhdGUubWFwYm94QXBpVXJsLFxuICBtYXBTdHlsZXM6ICFwYXlsb2FkLm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0ID8gc3RhdGUubWFwU3R5bGVzIDoge30sXG4gIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBwYXlsb2FkLm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IHx8IGZhbHNlXG59KTtcbi8vIH0pO1xuXG4vKipcbiAqIFVwZGF0ZSBgdmlzaWJsZUxheWVyR3JvdXBzYHRvIGNoYW5nZSBsYXllciBncm91cCB2aXNpYmlsaXR5XG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbWFwQ29uZmlnQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICBhY3Rpb246IE1hcFN0eWxlQWN0aW9ucy5NYXBDb25maWdDaGFuZ2VVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgLi4uYWN0aW9uLnBheWxvYWQsXG4gIC4uLmdldE1hcFN0eWxlcyh7XG4gICAgLi4uc3RhdGUsXG4gICAgLi4uYWN0aW9uLnBheWxvYWRcbiAgfSlcbn0pO1xuXG4vKipcbiAqIENoYW5nZSB0byBhbm90aGVyIG1hcCBzdHlsZS4gVGhlIHNlbGVjdGVkIHN0eWxlIHNob3VsZCBhbHJlYWR5IGJlZW4gbG9hZGVkIGludG8gYG1hcFN0eWxlLm1hcFN0eWxlc2BcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge3BheWxvYWQ6IHN0eWxlVHlwZX06IE1hcFN0eWxlQWN0aW9ucy5NYXBTdHlsZUNoYW5nZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0eWxlID0+IHtcbiAgaWYgKCFzdGF0ZS5tYXBTdHlsZXNbc3R5bGVUeXBlXSkge1xuICAgIC8vIHdlIG1pZ2h0IG5vdCBoYXZlIHJlY2VpdmVkIHRoZSBzdHlsZSB5ZXRcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgY29uc3QgZGVmYXVsdExHVmlzaWJpbGl0eSA9IGdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eShzdGF0ZS5tYXBTdHlsZXNbc3R5bGVUeXBlXSk7XG5cbiAgY29uc3QgdmlzaWJsZUxheWVyR3JvdXBzID0gbWVyZ2VMYXllckdyb3VwVmlzaWJpbGl0eShcbiAgICBkZWZhdWx0TEdWaXNpYmlsaXR5LFxuICAgIHN0YXRlLnZpc2libGVMYXllckdyb3Vwc1xuICApO1xuXG4gIGNvbnN0IHRocmVlREJ1aWxkaW5nQ29sb3I6IFJHQkNvbG9yID0gc3RhdGUuY3VzdG9tM0RCdWlsZGluZ0NvbG9yXG4gICAgPyBzdGF0ZS50aHJlZURCdWlsZGluZ0NvbG9yXG4gICAgOiBnZXQzREJ1aWxkaW5nQ29sb3Ioc3RhdGUubWFwU3R5bGVzW3N0eWxlVHlwZV0pO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgc3R5bGVUeXBlLFxuICAgIHZpc2libGVMYXllckdyb3VwcyxcbiAgICB0aHJlZURCdWlsZGluZ0NvbG9yLFxuICAgIC4uLmdldE1hcFN0eWxlcyh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpc2libGVMYXllckdyb3VwcyxcbiAgICAgIHN0eWxlVHlwZVxuICAgIH0pXG4gIH07XG59O1xuXG4vKipcbiAqIENhbGxiYWNrIHdoZW4gbG9hZCBtYXAgc3R5bGUgc3VjY2Vzc1xuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRNYXBTdHlsZXNVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3R5bGUsXG4gIGFjdGlvbjogTWFwU3R5bGVBY3Rpb25zLkxvYWRNYXBTdHlsZXNVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiB7XG4gIGNvbnN0IG5ld1N0eWxlcyA9IGFjdGlvbi5wYXlsb2FkIHx8IHt9O1xuICBjb25zdCBhZGRMYXllckdyb3VwcyA9IE9iamVjdC5rZXlzKG5ld1N0eWxlcykucmVkdWNlKFxuICAgIChhY2N1LCBpZCkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbaWRdOiB7XG4gICAgICAgIC4uLm5ld1N0eWxlc1tpZF0sXG4gICAgICAgIGxheWVyR3JvdXBzOiBuZXdTdHlsZXNbaWRdLmxheWVyR3JvdXBzIHx8IGdldExheWVyR3JvdXBzRnJvbVN0eWxlKG5ld1N0eWxlc1tpZF0uc3R5bGUpXG4gICAgICB9XG4gICAgfSksXG4gICAge31cbiAgKTtcblxuICAvLyBhZGQgbmV3IHN0eWxlcyB0byBzdGF0ZVxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtYXBTdHlsZXM6IHtcbiAgICAgIC4uLnN0YXRlLm1hcFN0eWxlcyxcbiAgICAgIC4uLmFkZExheWVyR3JvdXBzXG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBuZXdTdHlsZXNbc3RhdGUuc3R5bGVUeXBlXVxuICAgID8gbWFwU3R5bGVDaGFuZ2VVcGRhdGVyKG5ld1N0YXRlLCB7cGF5bG9hZDogc3RhdGUuc3R5bGVUeXBlfSlcbiAgICA6IG5ld1N0YXRlO1xufTtcblxuLyoqXG4gKiBDYWxsYmFjayB3aGVuIGxvYWQgbWFwIHN0eWxlIGVycm9yXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG4vLyBkbyBub3RoaW5nIGZvciBub3csIGlmIGRpZG4ndCBsb2FkLCBza2lwIGl0XG5leHBvcnQgY29uc3QgbG9hZE1hcFN0eWxlRXJyVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICBhY3Rpb246IE1hcFN0eWxlQWN0aW9ucy5Mb2FkTWFwU3R5bGVFcnJVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiBzdGF0ZTtcblxuLyoqXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVxdWVzdE1hcFN0eWxlc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge3BheWxvYWQ6IG1hcFN0eWxlc306IE1hcFN0eWxlQWN0aW9ucy5SZXF1ZXN0TWFwU3R5bGVzVXBkYXRlckFjdGlvblxuKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCBsb2FkTWFwU3R5bGVUYXNrcyA9IGdldExvYWRNYXBTdHlsZVRhc2tzKFxuICAgIG1hcFN0eWxlcyxcbiAgICBzdGF0ZS5tYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICBzdGF0ZS5tYXBib3hBcGlVcmxcbiAgKTtcbiAgcmV0dXJuIHdpdGhUYXNrKHN0YXRlLCBsb2FkTWFwU3R5bGVUYXNrcyk7XG59O1xuXG4vKipcbiAqIExvYWQgbWFwIHN0eWxlIG9iamVjdCB3aGVuIHBhc3MgaW4gc2F2ZWQgbWFwIGNvbmZpZ1xuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgbWFwU3R5bGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgc2F2ZWQgbWFwIGNvbmZpZyBge21hcFN0eWxlLCB2aXNTdGF0ZSwgbWFwU3RhdGV9YFxuICogQHJldHVybnMgbmV4dFN0YXRlIG9yIGByZWFjdC1wYW1gIHRhc2tzIHRvIGxvYWQgbWFwIHN0eWxlIG9iamVjdFxuICovXG5leHBvcnQgY29uc3QgcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge1xuICAgIHBheWxvYWQ6IHtjb25maWd9XG4gIH06IHtcbiAgICB0eXBlPzogdHlwZW9mIEFjdGlvblR5cGVzLlJFQ0VJVkVfTUFQX0NPTkZJRztcbiAgICBwYXlsb2FkOiBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZDtcbiAgfVxuKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCB7bWFwU3R5bGV9ID0gY29uZmlnIHx8IHt9O1xuXG4gIGlmICghbWFwU3R5bGUpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICAvLyBpZiBzYXZlZCBjdXN0b20gbWFwU3R5bGVzIGxvYWQgdGhlIHN0eWxlIG9iamVjdFxuICBjb25zdCBsb2FkTWFwU3R5bGVUYXNrcyA9IG1hcFN0eWxlLm1hcFN0eWxlc1xuICAgID8gZ2V0TG9hZE1hcFN0eWxlVGFza3MobWFwU3R5bGUubWFwU3R5bGVzLCBzdGF0ZS5tYXBib3hBcGlBY2Nlc3NUb2tlbiwgc3RhdGUubWFwYm94QXBpVXJsKVxuICAgIDogbnVsbDtcblxuICAvLyBtZXJnZSBkZWZhdWx0IG1hcFN0eWxlc1xuICBjb25zdCBtZXJnZWQgPSBtYXBTdHlsZS5tYXBTdHlsZXNcbiAgICA/IHtcbiAgICAgICAgLi4ubWFwU3R5bGUsXG4gICAgICAgIG1hcFN0eWxlczoge1xuICAgICAgICAgIC4uLm1hcFN0eWxlLm1hcFN0eWxlcyxcbiAgICAgICAgICAuLi5zdGF0ZS5tYXBTdHlsZXNcbiAgICAgICAgfVxuICAgICAgfVxuICAgIDogbWFwU3R5bGU7XG5cbiAgLy8gc2V0IGN1c3RvbTNEQnVpbGRpbmdDb2xvcjogdHJ1ZSBpZiBtYXBTdHlsZSBjb250YWlucyB0aHJlZURCdWlsZGluZ0NvbG9yXG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgbWVyZ2VkLmN1c3RvbTNEQnVpbGRpbmdDb2xvciA9XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIEJvb2xlYW4obWFwU3R5bGUudGhyZWVEQnVpbGRpbmdDb2xvcikgfHwgbWVyZ2VkLmN1c3RvbTNEQnVpbGRpbmdDb2xvcjtcbiAgY29uc3QgbmV3U3RhdGUgPSBtYXBDb25maWdDaGFuZ2VVcGRhdGVyKHN0YXRlLCB7cGF5bG9hZDogbWVyZ2VkfSk7XG5cbiAgcmV0dXJuIGxvYWRNYXBTdHlsZVRhc2tzID8gd2l0aFRhc2sobmV3U3RhdGUsIGxvYWRNYXBTdHlsZVRhc2tzKSA6IG5ld1N0YXRlO1xufTtcblxuZnVuY3Rpb24gZ2V0TG9hZE1hcFN0eWxlVGFza3MobWFwU3R5bGVzLCBtYXBib3hBcGlBY2Nlc3NUb2tlbiwgbWFwYm94QXBpVXJsKSB7XG4gIHJldHVybiBbXG4gICAgVGFzay5hbGwoXG4gICAgICBPYmplY3QudmFsdWVzKG1hcFN0eWxlcylcbiAgICAgICAgLm1hcCgoe2lkLCB1cmwsIGFjY2Vzc1Rva2VufSkgPT4gKHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICB1cmw6IGlzVmFsaWRTdHlsZVVybCh1cmwpXG4gICAgICAgICAgICA/IGdldFN0eWxlRG93bmxvYWRVcmwodXJsLCBhY2Nlc3NUb2tlbiB8fCBtYXBib3hBcGlBY2Nlc3NUb2tlbiwgbWFwYm94QXBpVXJsKVxuICAgICAgICAgICAgOiB1cmxcbiAgICAgICAgfSkpXG4gICAgICAgIC5tYXAoTE9BRF9NQVBfU1RZTEVfVEFTSylcbiAgICApLmJpbWFwKFxuICAgICAgLy8gc3VjY2Vzc1xuICAgICAgcmVzdWx0cyA9PlxuICAgICAgICBsb2FkTWFwU3R5bGVzKFxuICAgICAgICAgIHJlc3VsdHMucmVkdWNlKFxuICAgICAgICAgICAgKGFjY3UsIHtpZCwgc3R5bGV9KSA9PiAoe1xuICAgICAgICAgICAgICAuLi5hY2N1LFxuICAgICAgICAgICAgICBbaWRdOiB7XG4gICAgICAgICAgICAgICAgLi4ubWFwU3R5bGVzW2lkXSxcbiAgICAgICAgICAgICAgICBzdHlsZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgLy8gZXJyb3JcbiAgICAgIGxvYWRNYXBTdHlsZUVyclxuICAgIClcbiAgXTtcbn1cbi8qKlxuICogUmVzZXQgbWFwIHN0eWxlIGNvbmZpZyB0byBpbml0aWFsIHN0YXRlXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGBtYXBTdHlsZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVzZXRNYXBDb25maWdNYXBTdHlsZVVwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0eWxlKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCBlbXB0eUNvbmZpZyA9IHtcbiAgICAuLi5JTklUSUFMX01BUF9TVFlMRSxcbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgbWFwYm94QXBpVXJsOiBzdGF0ZS5tYXBib3hBcGlVcmwsXG4gICAgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQ6IHN0YXRlLm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0LFxuICAgIC4uLnN0YXRlLmluaXRpYWxTdGF0ZSxcbiAgICBtYXBTdHlsZXM6IHN0YXRlLm1hcFN0eWxlcyxcbiAgICBpbml0aWFsU3RhdGU6IHN0YXRlLmluaXRpYWxTdGF0ZVxuICB9O1xuXG4gIHJldHVybiBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIoZW1wdHlDb25maWcsIHtwYXlsb2FkOiBlbXB0eUNvbmZpZy5zdHlsZVR5cGV9KTtcbn07XG5cbi8qKlxuICogQ2FsbGJhY2sgd2hlbiBhIGN1c3RvbSBtYXAgc3R5bGUgb2JqZWN0IGlzIHJlY2VpdmVkXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZEN1c3RvbU1hcFN0eWxlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICB7cGF5bG9hZDoge2ljb24sIHN0eWxlLCBlcnJvcn19OiBNYXBTdHlsZUFjdGlvbnMuTG9hZEN1c3RvbU1hcFN0eWxlVXBkYXRlckFjdGlvblxuKTogTWFwU3R5bGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgaW5wdXRTdHlsZToge1xuICAgIC4uLnN0YXRlLmlucHV0U3R5bGUsXG4gICAgLy8gc3R5bGUganNvbiBhbmQgaWNvbiB3aWxsIGxvYWQgYXN5bmNocm9ub3VzbHlcbiAgICAuLi4oc3R5bGVcbiAgICAgID8ge1xuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICBpZDogc3R5bGUuaWQgfHwgZ2VuZXJhdGVIYXNoSWQoKSxcbiAgICAgICAgICAvLyBtYWtlIGEgY29weSBvZiB0aGUgc3R5bGUgb2JqZWN0XG4gICAgICAgICAgc3R5bGU6IGNsb25lRGVlcChzdHlsZSksXG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAgIGxhYmVsOiBzdHlsZS5uYW1lLFxuICAgICAgICAgIC8vIGdhdGhlcmluZyBsYXllciBncm91cCBpbmZvIGZyb20gc3R5bGUganNvblxuICAgICAgICAgIGxheWVyR3JvdXBzOiBnZXRMYXllckdyb3Vwc0Zyb21TdHlsZShzdHlsZSlcbiAgICAgICAgfVxuICAgICAgOiB7fSksXG4gICAgLi4uKGljb24gPyB7aWNvbn0gOiB7fSksXG4gICAgLi4uKGVycm9yICE9PSB1bmRlZmluZWQgPyB7ZXJyb3J9IDoge30pXG4gIH1cbn0pO1xuXG4vKipcbiAqIElucHV0IGEgY3VzdG9tIG1hcCBzdHlsZSBvYmplY3RcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBpbnB1dE1hcFN0eWxlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICB7cGF5bG9hZDoge2lucHV0U3R5bGUsIG1hcFN0YXRlfX06IE1hcFN0eWxlQWN0aW9ucy5JbnB1dE1hcFN0eWxlVXBkYXRlckFjdGlvblxuKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCB1cGRhdGVkID0ge1xuICAgIC4uLnN0YXRlLmlucHV0U3R5bGUsXG4gICAgLi4uaW5wdXRTdHlsZVxuICB9O1xuXG4gIGNvbnN0IGlzVmFsaWQgPSBpc1ZhbGlkU3R5bGVVcmwodXBkYXRlZC51cmwpO1xuICBjb25zdCBpY29uID0gaXNWYWxpZFxuICAgID8gZ2V0U3R5bGVJbWFnZUljb24oe1xuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgc3R5bGVVcmw6IHVwZGF0ZWQudXJsIHx8ICcnLFxuICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogdXBkYXRlZC5hY2Nlc3NUb2tlbiB8fCBzdGF0ZS5tYXBib3hBcGlBY2Nlc3NUb2tlbiB8fCAnJyxcbiAgICAgICAgbWFwYm94QXBpVXJsOiBzdGF0ZS5tYXBib3hBcGlVcmwgfHwgREVGQVVMVF9NQVBCT1hfQVBJX1VSTFxuICAgICAgfSlcbiAgICA6IHN0YXRlLmlucHV0U3R5bGUuaWNvbjtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGlucHV0U3R5bGU6IHtcbiAgICAgIC4uLnVwZGF0ZWQsXG4gICAgICBpc1ZhbGlkLFxuICAgICAgaWNvblxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQWRkIG1hcCBzdHlsZSBmcm9tIHVzZXIgaW5wdXQgdG8gcmVkdWNlciBhbmQgc2V0IGl0IHRvIGN1cnJlbnQgc3R5bGVcbiAqIFRoaXMgYWN0aW9uIGlzIGNhbGxlZCB3aGVuIHVzZXIgY2xpY2sgY29uZmlybSBhZnRlciBwdXR0aW5nIGluIGEgdmFsaWQgc3R5bGUgdXJsIGluIHRoZSBjdXN0b20gbWFwIHN0eWxlIGRpYWxvZy5cbiAqIEl0IHNob3VsZCBub3QgYmUgY2FsbGVkIGZyb20gb3V0c2lkZSBrZXBsZXIuZ2wgd2l0aG91dCBhIHZhbGlkIGBpbnB1dFN0eWxlYCBpbiB0aGUgYG1hcFN0eWxlYCByZWR1Y2VyLlxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZEN1c3RvbU1hcFN0eWxlVXBkYXRlciA9IChzdGF0ZTogTWFwU3R5bGUpOiBNYXBTdHlsZSA9PiB7XG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgY29uc3Qgc3R5bGVJZCA9IHN0YXRlLmlucHV0U3R5bGUuaWQ7XG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcFN0eWxlczoge1xuICAgICAgLi4uc3RhdGUubWFwU3R5bGVzLFxuICAgICAgW3N0eWxlSWRdOiBzdGF0ZS5pbnB1dFN0eWxlXG4gICAgfSxcbiAgICAvLyBzZXQgdG8gZGVmYXVsdFxuICAgIGlucHV0U3R5bGU6IGdldEluaXRpYWxJbnB1dFN0eWxlKClcbiAgfTtcbiAgLy8gc2V0IG5ldyBzdHlsZVxuICByZXR1cm4gbWFwU3R5bGVDaGFuZ2VVcGRhdGVyKG5ld1N0YXRlLCB7cGF5bG9hZDogc3R5bGVJZH0pO1xufTtcblxuLyoqXG4gKiBVcGRhdGVzIDNkIGJ1aWxkaW5nIGNvbG9yXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICovXG5leHBvcnQgY29uc3Qgc2V0M2RCdWlsZGluZ0NvbG9yVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICB7cGF5bG9hZDogY29sb3J9OiBNYXBTdHlsZUFjdGlvbnMuU2V0M2RCdWlsZGluZ0NvbG9yVXBkYXRlckFjdGlvblxuKTogTWFwU3R5bGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIHRocmVlREJ1aWxkaW5nQ29sb3I6IGNvbG9yLFxuICBjdXN0b20zREJ1aWxkaW5nQ29sb3I6IHRydWVcbn0pO1xuXG4vKipcbiAqIFJldHVybiB0aGUgaW5pdGlhbCBpbnB1dCBzdHlsZVxuICogQHJldHVybiBPYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRpYWxJbnB1dFN0eWxlKCkge1xuICByZXR1cm4ge1xuICAgIGFjY2Vzc1Rva2VuOiBudWxsLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICBsYWJlbDogbnVsbCxcbiAgICBzdHlsZTogbnVsbCxcbiAgICB1cmw6IG51bGwsXG4gICAgaWNvbjogbnVsbCxcbiAgICBjdXN0b206IHRydWVcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBb0JBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUdBLElBQUFHLG9CQUFBLEdBQUFILE9BQUE7QUFTQSxJQUFBSSxnQkFBQSxHQUFBSixPQUFBO0FBS0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sZ0JBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFFBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLFdBQUEsR0FB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
473
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW5kZXgiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY2xvbmVkZWVwIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9tYXBib3hHbFN0eWxlRWRpdG9yIiwiX2RlZmF1bHRTZXR0aW5ncyIsIl91dGlscyIsIl90YXNrcyIsIl9tYXBTdHlsZUFjdGlvbnMiLCJfZDNDb2xvciIsIl9jb2xvclV0aWxzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiREVGQVVMVF9CTERHX0NPTE9SIiwiZ2V0RGVmYXVsdFN0YXRlIiwidmlzaWJsZUxheWVyR3JvdXBzIiwic3R5bGVUeXBlIiwidG9wTGF5ZXJHcm91cHMiLCJtYXBTdHlsZXMiLCJERUZBVUxUX01BUF9TVFlMRVMiLCJyZWR1Y2UiLCJhY2N1IiwiY3VyciIsImlkIiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJERUZBVUxUX01BUEJPWF9BUElfVVJMIiwibWFwU3R5bGVzUmVwbGFjZURlZmF1bHQiLCJpbnB1dFN0eWxlIiwiZ2V0SW5pdGlhbElucHV0U3R5bGUiLCJ0aHJlZURCdWlsZGluZ0NvbG9yIiwiaGV4VG9SZ2IiLCJjdXN0b20zREJ1aWxkaW5nQ29sb3IiLCJtYXBTdHlsZVVwZGF0ZXJzIiwiSU5JVElBTF9NQVBfU1RZTEUiLCJleHBvcnRzIiwiZ2V0TWFwU3R5bGVzIiwiX3JlZiIsIm1hcFN0eWxlIiwic3R5bGUiLCJlZGl0YWJsZSIsImJvdHRvbU1hcFN0eWxlIiwiZWRpdEJvdHRvbU1hcFN0eWxlIiwiaGFzVG9wTGF5ZXIiLCJ2YWx1ZXMiLCJzb21lIiwidiIsInRvcExheWVycyIsImtleSIsInRvcE1hcFN0eWxlIiwiZWRpdFRvcE1hcFN0eWxlIiwiZmluZExheWVyRmlsbENvbG9yIiwibGF5ZXIiLCJwYWludCIsImdldDNEQnVpbGRpbmdDb2xvciIsImJhY2tncm91bmRMYXllciIsImxheWVycyIsImZpbmQiLCJfcmVmMiIsImJ1aWxkaW5nTGF5ZXIiLCJfcmVmMyIsIm1hdGNoIiwiYnVpbGRpbmdDb2xvciIsIm9wZXJhdGlvbiIsImFscGhhIiwicmdiT2JqIiwicmdiIiwiZyIsImIiLCJnZXRMYXllckdyb3Vwc0Zyb21TdHlsZSIsIkFycmF5IiwiaXNBcnJheSIsIkRFRkFVTFRfTEFZRVJfR1JPVVBTIiwibGciLCJpbml0TWFwU3R5bGVVcGRhdGVyIiwic3RhdGUiLCJfcmVmNCIsIl9yZWY0JHBheWxvYWQiLCJwYXlsb2FkIiwibWFwQ29uZmlnQ2hhbmdlVXBkYXRlciIsImFjdGlvbiIsIm1hcFN0eWxlQ2hhbmdlVXBkYXRlciIsIl9yZWY1IiwiZGVmYXVsdExHVmlzaWJpbGl0eSIsImdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eSIsIm1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHkiLCJsb2FkTWFwU3R5bGVzVXBkYXRlciIsIm5ld1N0eWxlcyIsImFkZExheWVyR3JvdXBzIiwibGF5ZXJHcm91cHMiLCJuZXdTdGF0ZSIsImxvYWRNYXBTdHlsZUVyclVwZGF0ZXIiLCJyZXF1ZXN0TWFwU3R5bGVzVXBkYXRlciIsIl9yZWY2IiwibG9hZE1hcFN0eWxlVGFza3MiLCJnZXRMb2FkTWFwU3R5bGVUYXNrcyIsIndpdGhUYXNrIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJfcmVmNyIsImNvbmZpZyIsIl9yZWY4IiwibWVyZ2VkIiwiQm9vbGVhbiIsIlRhc2siLCJhbGwiLCJtYXAiLCJfcmVmOSIsInVybCIsImFjY2Vzc1Rva2VuIiwiaXNWYWxpZFN0eWxlVXJsIiwiZ2V0U3R5bGVEb3dubG9hZFVybCIsIkxPQURfTUFQX1NUWUxFX1RBU0siLCJiaW1hcCIsInJlc3VsdHMiLCJsb2FkTWFwU3R5bGVzIiwiX3JlZjEwIiwibG9hZE1hcFN0eWxlRXJyIiwicmVzZXRNYXBDb25maWdNYXBTdHlsZVVwZGF0ZXIiLCJlbXB0eUNvbmZpZyIsImluaXRpYWxTdGF0ZSIsImxvYWRDdXN0b21NYXBTdHlsZVVwZGF0ZXIiLCJfcmVmMTEiLCJfcmVmMTEkcGF5bG9hZCIsImljb24iLCJlcnJvciIsImdlbmVyYXRlSGFzaElkIiwiY2xvbmVEZWVwIiwibGFiZWwiLCJuYW1lIiwidW5kZWZpbmVkIiwiaW5wdXRNYXBTdHlsZVVwZGF0ZXIiLCJfcmVmMTIiLCJfcmVmMTIkcGF5bG9hZCIsIm1hcFN0YXRlIiwidXBkYXRlZCIsImlzVmFsaWQiLCJnZXRTdHlsZUltYWdlSWNvbiIsInN0eWxlVXJsIiwiYWRkQ3VzdG9tTWFwU3R5bGVVcGRhdGVyIiwic3R5bGVJZCIsInNldDNkQnVpbGRpbmdDb2xvclVwZGF0ZXIiLCJfcmVmMTMiLCJjb2xvciIsImN1c3RvbSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZWR1Y2Vycy9tYXAtc3R5bGUtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFRhc2ssIHt3aXRoVGFza30gZnJvbSAncmVhY3QtcGFsbS90YXNrcy9pbmRleC5qcyc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZWRlZXAnO1xuXG4vLyBVdGlsc1xuaW1wb3J0IHtcbiAgZ2V0RGVmYXVsdExheWVyR3JvdXBWaXNpYmlsaXR5LFxuICBpc1ZhbGlkU3R5bGVVcmwsXG4gIGdldFN0eWxlRG93bmxvYWRVcmwsXG4gIG1lcmdlTGF5ZXJHcm91cFZpc2liaWxpdHksXG4gIGVkaXRUb3BNYXBTdHlsZSxcbiAgZWRpdEJvdHRvbU1hcFN0eWxlLFxuICBnZXRTdHlsZUltYWdlSWNvblxufSBmcm9tICd1dGlscy9tYXAtc3R5bGUtdXRpbHMvbWFwYm94LWdsLXN0eWxlLWVkaXRvcic7XG5pbXBvcnQge1xuICBERUZBVUxUX01BUF9TVFlMRVMsXG4gIERFRkFVTFRfTEFZRVJfR1JPVVBTLFxuICBERUZBVUxUX01BUEJPWF9BUElfVVJMXG59IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWR9IGZyb20gJ3V0aWxzL3V0aWxzJztcbmltcG9ydCB7TE9BRF9NQVBfU1RZTEVfVEFTS30gZnJvbSAndGFza3MvdGFza3MnO1xuaW1wb3J0IHtsb2FkTWFwU3R5bGVzLCBsb2FkTWFwU3R5bGVFcnJ9IGZyb20gJ2FjdGlvbnMvbWFwLXN0eWxlLWFjdGlvbnMnO1xuaW1wb3J0IHtyZ2J9IGZyb20gJ2QzLWNvbG9yJztcbmltcG9ydCB7aGV4VG9SZ2J9IGZyb20gJ3V0aWxzL2NvbG9yLXV0aWxzJztcblxuaW1wb3J0IHtSR0JDb2xvcn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgQWN0aW9uVHlwZXMgZnJvbSAnY29uc3RhbnRzL2FjdGlvbi10eXBlcyc7XG5pbXBvcnQge1JlY2VpdmVNYXBDb25maWdQYXlsb2FkLCBLZXBsZXJHbEluaXRQYXlsb2FkfSBmcm9tICcuLi9hY3Rpb25zL2FjdGlvbnMnO1xuaW1wb3J0ICogYXMgTWFwU3R5bGVBY3Rpb25zIGZyb20gJy4uL2FjdGlvbnMvbWFwLXN0eWxlLWFjdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBMYXllckdyb3VwID0ge1xuICBzbHVnOiBzdHJpbmc7XG4gIGZpbHRlcihsYXllcjoge2lkOiBzdHJpbmd9KTogYm9vbGVhbjtcbiAgZGVmYXVsdFZpc2liaWxpdHk6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBWaXNpYmxlTGF5ZXJHcm91cHMgPSB7XG4gIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBNYXBib3hTdHlsZVVybCA9IHN0cmluZztcblxuZXhwb3J0IHR5cGUgQmFzZU1hcFN0eWxlID0ge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgaWNvbjogc3RyaW5nO1xuICBzdHlsZT86IE9iamVjdDtcbiAgbGF5ZXJHcm91cHM6IExheWVyR3JvdXBbXTtcbn07XG5cbmV4cG9ydCB0eXBlIE1hcFN0eWxlcyA9IHtcbiAgW2tleTogc3RyaW5nXTogQmFzZU1hcFN0eWxlO1xufTtcblxuZXhwb3J0IHR5cGUgSW5wdXRTdHlsZSA9IHtcbiAgYWNjZXNzVG9rZW46IHN0cmluZyB8IG51bGw7XG4gIGVycm9yOiBib29sZWFuO1xuICBpc1ZhbGlkOiBib29sZWFuO1xuICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgc3R5bGU6IGFueSB8IG51bGw7XG4gIHVybDogc3RyaW5nIHwgbnVsbDtcbiAgaWNvbjogc3RyaW5nIHwgbnVsbDtcbiAgY3VzdG9tOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgTWFwU3R5bGUgPSB7XG4gIHN0eWxlVHlwZTogc3RyaW5nO1xuICB2aXNpYmxlTGF5ZXJHcm91cHM6IFZpc2libGVMYXllckdyb3VwcztcbiAgdG9wTGF5ZXJHcm91cHM6IFZpc2libGVMYXllckdyb3VwcztcbiAgbWFwU3R5bGVzOiBNYXBTdHlsZXM7XG4gIC8vIHNhdmUgbWFwYm94IGFjY2VzcyB0b2tlblxuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RyaW5nIHwgbnVsbDtcbiAgbWFwYm94QXBpVXJsOiBzdHJpbmc7XG4gIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBib29sZWFuO1xuICBpbnB1dFN0eWxlOiBJbnB1dFN0eWxlO1xuICB0aHJlZURCdWlsZGluZ0NvbG9yOiBSR0JDb2xvcjtcbiAgY3VzdG9tM0RCdWlsZGluZ0NvbG9yOiBib29sZWFuO1xuXG4gIGluaXRpYWxTdGF0ZT86IE1hcFN0eWxlO1xufTtcblxuY29uc3QgREVGQVVMVF9CTERHX0NPTE9SID0gJyNEMUNFQzcnO1xuXG5jb25zdCBnZXREZWZhdWx0U3RhdGUgPSAoKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCB2aXNpYmxlTGF5ZXJHcm91cHMgPSB7fTtcbiAgY29uc3Qgc3R5bGVUeXBlID0gJ2RhcmsnO1xuICBjb25zdCB0b3BMYXllckdyb3VwcyA9IHt9O1xuXG4gIHJldHVybiB7XG4gICAgc3R5bGVUeXBlLFxuICAgIHZpc2libGVMYXllckdyb3VwcyxcbiAgICB0b3BMYXllckdyb3VwcyxcbiAgICBtYXBTdHlsZXM6IERFRkFVTFRfTUFQX1NUWUxFUy5yZWR1Y2UoXG4gICAgICAoYWNjdSwgY3VycikgPT4gKHtcbiAgICAgICAgLi4uYWNjdSxcbiAgICAgICAgW2N1cnIuaWRdOiBjdXJyXG4gICAgICB9KSxcbiAgICAgIHt9XG4gICAgKSxcbiAgICAvLyBzYXZlIG1hcGJveCBhY2Nlc3MgdG9rZW5cbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogbnVsbCxcbiAgICBtYXBib3hBcGlVcmw6IERFRkFVTFRfTUFQQk9YX0FQSV9VUkwsXG4gICAgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQ6IGZhbHNlLFxuICAgIGlucHV0U3R5bGU6IGdldEluaXRpYWxJbnB1dFN0eWxlKCksXG4gICAgdGhyZWVEQnVpbGRpbmdDb2xvcjogaGV4VG9SZ2IoREVGQVVMVF9CTERHX0NPTE9SKSxcbiAgICBjdXN0b20zREJ1aWxkaW5nQ29sb3I6IGZhbHNlXG4gIH07XG59O1xuXG4vKipcbiAqIFVwZGF0ZXJzIGZvciBgbWFwU3R5bGVgLiBDYW4gYmUgdXNlZCBpbiB5b3VyIHJvb3QgcmVkdWNlciB0byBkaXJlY3RseSBtb2RpZnkga2VwbGVyLmdsJ3Mgc3RhdGUuXG4gKiBSZWFkIG1vcmUgYWJvdXQgW1VzaW5nIHVwZGF0ZXJzXSguLi9hZHZhbmNlZC11c2FnZS91c2luZy11cGRhdGVycy5tZClcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKlxuICogaW1wb3J0IGtlcGxlckdsUmVkdWNlciwge21hcFN0eWxlVXBkYXRlcnN9IGZyb20gJ2tlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBjbGljayBidXR0b24gdG8gaGlkZSBsYWJlbCBmcm9tIGJhY2tncm91bmQgbWFwXG4gKiAgICBjYXNlICdDTElDS19CVVRUT04nOlxuICogICAgICByZXR1cm4ge1xuICogICAgICAgIC4uLnN0YXRlLFxuICogICAgICAgIGtlcGxlckdsOiB7XG4gKiAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbCxcbiAqICAgICAgICAgIGZvbzoge1xuICogICAgICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wuZm9vLFxuICogICAgICAgICAgICAgbWFwU3R5bGU6IG1hcFN0eWxlVXBkYXRlcnMubWFwQ29uZmlnQ2hhbmdlVXBkYXRlcihcbiAqICAgICAgICAgICAgICAgbWFwU3R5bGUsXG4gKiAgICAgICAgICAgICAgIHtwYXlsb2FkOiB7dmlzaWJsZUxheWVyR3JvdXBzOiB7bGFiZWw6IGZhbHNlLCByb2FkOiB0cnVlLCBiYWNrZ3JvdW5kOiB0cnVlfX19XG4gKiAgICAgICAgICAgICApXG4gKiAgICAgICAgICB9XG4gKiAgICAgICAgfVxuICogICAgICB9O1xuICogIH1cbiAqICByZXR1cm4gcmVkdWNlcnMoc3RhdGUsIGFjdGlvbik7XG4gKiB9O1xuICpcbiAqIGV4cG9ydCBkZWZhdWx0IGNvbXBvc2VkUmVkdWNlcjtcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbmNvbnN0IG1hcFN0eWxlVXBkYXRlcnMgPSBudWxsO1xuLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtdmFycyAqL1xuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYG1hcFN0eWxlYFxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IHN0eWxlVHlwZSAtIERlZmF1bHQ6IGAnZGFyaydgXG4gKiBAcHJvcGVydHkgdmlzaWJsZUxheWVyR3JvdXBzIC0gRGVmYXVsdDogYHt9YFxuICogQHByb3BlcnR5IHRvcExheWVyR3JvdXBzIC0gRGVmYXVsdDogYHt9YFxuICogQHByb3BlcnR5IG1hcFN0eWxlcyAtIG1hcHBpbmcgZnJvbSBzdHlsZSBrZXkgdG8gc3R5bGUgb2JqZWN0XG4gKiBAcHJvcGVydHkgbWFwYm94QXBpQWNjZXNzVG9rZW4gLSBEZWZhdWx0OiBgbnVsbGBcbiAqIEBQcm9wZXJ0eSBtYXBib3hBcGlVcmwgLSBEZWZhdWx0IG51bGxcbiAqIEBQcm9wZXJ0eSBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCAtIERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSBpbnB1dFN0eWxlIC0gRGVmYXVsdDogYHt9YFxuICogQHByb3BlcnR5IHRocmVlREJ1aWxkaW5nQ29sb3IgLSBEZWZhdWx0OiBgW3IsIGcsIGJdYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9NQVBfU1RZTEU6IE1hcFN0eWxlID0gZ2V0RGVmYXVsdFN0YXRlKCk7XG5cbmludGVyZmFjZSBHZXRNYXBTdHlsZXNQYXJhbSB7XG4gIHN0eWxlVHlwZTogc3RyaW5nO1xuICB2aXNpYmxlTGF5ZXJHcm91cHM6IHtbaWQ6IHN0cmluZ106IExheWVyR3JvdXAgfCBib29sZWFufTtcbiAgdG9wTGF5ZXJHcm91cHM6IHtbaWQ6IHN0cmluZ106IExheWVyR3JvdXAgfCBib29sZWFufTtcbiAgbWFwU3R5bGVzOiB7W2lkOiBzdHJpbmddOiBhbnl9O1xufVxuXG4vKipcbiAqIENyZWF0ZSB0d28gbWFwIHN0eWxlcyBmcm9tIHByZXNldCBtYXAgc3R5bGUsIG9uZSBmb3IgdG9wIG1hcCBvbmUgZm9yIGJvdHRvbVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZVR5cGUgLSBjdXJyZW50IG1hcCBzdHlsZVxuICogQHBhcmFtIHtPYmplY3R9IHZpc2libGVMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIGJvdHRvbSBtYXBcbiAqIEBwYXJhbSB7T2JqZWN0fSB0b3BMYXllckdyb3VwcyAtIHZpc2libGUgbGF5ZXJzIG9mIHRvcCBtYXBcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXBTdHlsZXMgLSBhIGRpY3Rpb25hcnkgb2YgYWxsIG1hcCBzdHlsZXNcbiAqIEByZXR1cm5zIHtPYmplY3R9IGJvdHRvbU1hcFN0eWxlIHwgdG9wTWFwU3R5bGUgfCBpc1Jhc3RlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFwU3R5bGVzKHtcbiAgc3R5bGVUeXBlLFxuICB2aXNpYmxlTGF5ZXJHcm91cHMsXG4gIHRvcExheWVyR3JvdXBzLFxuICBtYXBTdHlsZXNcbn06IEdldE1hcFN0eWxlc1BhcmFtKSB7XG4gIGNvbnN0IG1hcFN0eWxlID0gbWFwU3R5bGVzW3N0eWxlVHlwZV07XG5cbiAgLy8gc3R5bGUgbWlnaHQgbm90IGJlIGxvYWRlZCB5ZXRcbiAgaWYgKCFtYXBTdHlsZSB8fCAhbWFwU3R5bGUuc3R5bGUpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBlZGl0YWJsZSA9IE9iamVjdC5rZXlzKHZpc2libGVMYXllckdyb3VwcykubGVuZ3RoO1xuXG4gIGNvbnN0IGJvdHRvbU1hcFN0eWxlID0gIWVkaXRhYmxlXG4gICAgPyBtYXBTdHlsZS5zdHlsZVxuICAgIDogZWRpdEJvdHRvbU1hcFN0eWxlKHtcbiAgICAgICAgaWQ6IHN0eWxlVHlwZSxcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIHZpc2libGVMYXllckdyb3Vwc1xuICAgICAgfSk7XG5cbiAgY29uc3QgaGFzVG9wTGF5ZXIgPSBlZGl0YWJsZSA+IDAgJiYgT2JqZWN0LnZhbHVlcyh0b3BMYXllckdyb3Vwcykuc29tZSh2ID0+IHYpO1xuXG4gIC8vIG11dGUgdG9wIGxheWVyIGlmIG5vdCB2aXNpYmxlIGluIGJvdHRvbSBsYXllclxuICBjb25zdCB0b3BMYXllcnMgPVxuICAgIGhhc1RvcExheWVyICYmXG4gICAgT2JqZWN0LmtleXModG9wTGF5ZXJHcm91cHMpLnJlZHVjZShcbiAgICAgIChhY2N1LCBrZXkpID0+ICh7XG4gICAgICAgIC4uLmFjY3UsXG4gICAgICAgIFtrZXldOiB0b3BMYXllckdyb3Vwc1trZXldICYmIHZpc2libGVMYXllckdyb3Vwc1trZXldXG4gICAgICB9KSxcbiAgICAgIHt9IGFzIHtbaWQ6IHN0cmluZ106IExheWVyR3JvdXAgfCBib29sZWFufVxuICAgICk7XG5cbiAgY29uc3QgdG9wTWFwU3R5bGUgPSBoYXNUb3BMYXllclxuICAgID8gZWRpdFRvcE1hcFN0eWxlKHtcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIHZpc2libGVMYXllckdyb3VwczogdG9wTGF5ZXJzXG4gICAgICB9KVxuICAgIDogbnVsbDtcblxuICByZXR1cm4ge2JvdHRvbU1hcFN0eWxlLCB0b3BNYXBTdHlsZSwgZWRpdGFibGV9O1xufVxuXG5mdW5jdGlvbiBmaW5kTGF5ZXJGaWxsQ29sb3IobGF5ZXIpIHtcbiAgcmV0dXJuIGxheWVyICYmIGxheWVyLnBhaW50ICYmIGxheWVyLnBhaW50WydiYWNrZ3JvdW5kLWNvbG9yJ107XG59XG5cbmZ1bmN0aW9uIGdldDNEQnVpbGRpbmdDb2xvcihzdHlsZSk6IFJHQkNvbG9yIHtcbiAgLy8gc2V0IGJ1aWxkaW5nIGNvbG9yIHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLlxuICBpZiAoIXN0eWxlLnN0eWxlKSB7XG4gICAgcmV0dXJuIGhleFRvUmdiKERFRkFVTFRfQkxER19DT0xPUik7XG4gIH1cblxuICBjb25zdCBiYWNrZ3JvdW5kTGF5ZXIgPSAoc3R5bGUuc3R5bGUubGF5ZXJzIHx8IFtdKS5maW5kKCh7aWR9KSA9PiBpZCA9PT0gJ2JhY2tncm91bmQnKTtcblxuICBjb25zdCBidWlsZGluZ0xheWVyID0gKHN0eWxlLnN0eWxlLmxheWVycyB8fCBbXSkuZmluZCgoe2lkfSkgPT4gaWQubWF0Y2goL2J1aWxkaW5nLykpO1xuXG4gIGNvbnN0IGJ1aWxkaW5nQ29sb3IgPVxuICAgIGZpbmRMYXllckZpbGxDb2xvcihidWlsZGluZ0xheWVyKSB8fCBmaW5kTGF5ZXJGaWxsQ29sb3IoYmFja2dyb3VuZExheWVyKSB8fCBERUZBVUxUX0JMREdfQ09MT1I7XG5cbiAgLy8gYnJpZ2h0ZW4gb3IgZGFya2VuIGJ1aWxkaW5nIGJhc2VkIG9uIHN0eWxlXG4gIGNvbnN0IG9wZXJhdGlvbiA9IHN0eWxlLmlkLm1hdGNoKC8oPz0oZGFya3xuaWdodCkpLykgPyAnYnJpZ2h0ZXInIDogJ2Rhcmtlcic7XG5cbiAgY29uc3QgYWxwaGEgPSAwLjI7XG4gIGNvbnN0IHJnYk9iaiA9IHJnYihidWlsZGluZ0NvbG9yKVtvcGVyYXRpb25dKFthbHBoYV0gYXMgYW55KTtcbiAgcmV0dXJuIFtyZ2JPYmouciwgcmdiT2JqLmcsIHJnYk9iai5iXTtcbn1cblxuZnVuY3Rpb24gZ2V0TGF5ZXJHcm91cHNGcm9tU3R5bGUoc3R5bGUpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoc3R5bGUubGF5ZXJzKVxuICAgID8gREVGQVVMVF9MQVlFUl9HUk9VUFMuZmlsdGVyKGxnID0+IHN0eWxlLmxheWVycy5maWx0ZXIobGcuZmlsdGVyKS5sZW5ndGgpXG4gICAgOiBbXTtcbn1cblxuLy8gVXBkYXRlcnNcbi8qKlxuICogUHJvcGFnYXRlIGBtYXBTdHlsZWAgcmVkdWNlciB3aXRoIGBtYXBib3hBcGlBY2Nlc3NUb2tlbmAgYW5kIGBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdGAuXG4gKiBpZiBtYXBTdHlsZXNSZXBsYWNlRGVmYXVsdCBpcyB0cnVlIG1hcFN0eWxlcyBpcyBlbXB0aWVkOyBsb2FkTWFwU3R5bGVzVXBkYXRlcigpIHdpbGxcbiAqIHBvcHVsYXRlIG1hcFN0eWxlcy5cbiAqXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgaW5pdE1hcFN0eWxlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICB7XG4gICAgcGF5bG9hZCA9IHt9XG4gIH06IHtcbiAgICB0eXBlPzogdHlwZW9mIEFjdGlvblR5cGVzLklOSVQ7XG4gICAgcGF5bG9hZDogS2VwbGVyR2xJbml0UGF5bG9hZDtcbiAgfVxuKTogTWFwU3R5bGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIC8vIHNhdmUgbWFwYm94IGFjY2VzcyB0b2tlbiB0byBtYXAgc3R5bGUgc3RhdGVcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW46IHBheWxvYWQubWFwYm94QXBpQWNjZXNzVG9rZW4gfHwgc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gIG1hcGJveEFwaVVybDogcGF5bG9hZC5tYXBib3hBcGlVcmwgfHwgc3RhdGUubWFwYm94QXBpVXJsLFxuICBtYXBTdHlsZXM6ICFwYXlsb2FkLm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0ID8gc3RhdGUubWFwU3R5bGVzIDoge30sXG4gIG1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0OiBwYXlsb2FkLm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0IHx8IGZhbHNlXG59KTtcbi8vIH0pO1xuXG4vKipcbiAqIFVwZGF0ZSBgdmlzaWJsZUxheWVyR3JvdXBzYHRvIGNoYW5nZSBsYXllciBncm91cCB2aXNpYmlsaXR5XG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbWFwQ29uZmlnQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICBhY3Rpb246IE1hcFN0eWxlQWN0aW9ucy5NYXBDb25maWdDaGFuZ2VVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgLi4uYWN0aW9uLnBheWxvYWQsXG4gIC4uLmdldE1hcFN0eWxlcyh7XG4gICAgLi4uc3RhdGUsXG4gICAgLi4uYWN0aW9uLnBheWxvYWRcbiAgfSlcbn0pO1xuXG4vKipcbiAqIENoYW5nZSB0byBhbm90aGVyIG1hcCBzdHlsZS4gVGhlIHNlbGVjdGVkIHN0eWxlIHNob3VsZCBhbHJlYWR5IGJlZW4gbG9hZGVkIGludG8gYG1hcFN0eWxlLm1hcFN0eWxlc2BcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge3BheWxvYWQ6IHN0eWxlVHlwZX06IE1hcFN0eWxlQWN0aW9ucy5NYXBTdHlsZUNoYW5nZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0eWxlID0+IHtcbiAgaWYgKCFzdGF0ZS5tYXBTdHlsZXNbc3R5bGVUeXBlXSkge1xuICAgIC8vIHdlIG1pZ2h0IG5vdCBoYXZlIHJlY2VpdmVkIHRoZSBzdHlsZSB5ZXRcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgY29uc3QgZGVmYXVsdExHVmlzaWJpbGl0eSA9IGdldERlZmF1bHRMYXllckdyb3VwVmlzaWJpbGl0eShzdGF0ZS5tYXBTdHlsZXNbc3R5bGVUeXBlXSk7XG5cbiAgY29uc3QgdmlzaWJsZUxheWVyR3JvdXBzID0gbWVyZ2VMYXllckdyb3VwVmlzaWJpbGl0eShcbiAgICBkZWZhdWx0TEdWaXNpYmlsaXR5LFxuICAgIHN0YXRlLnZpc2libGVMYXllckdyb3Vwc1xuICApO1xuXG4gIGNvbnN0IHRocmVlREJ1aWxkaW5nQ29sb3I6IFJHQkNvbG9yID0gc3RhdGUuY3VzdG9tM0RCdWlsZGluZ0NvbG9yXG4gICAgPyBzdGF0ZS50aHJlZURCdWlsZGluZ0NvbG9yXG4gICAgOiBnZXQzREJ1aWxkaW5nQ29sb3Ioc3RhdGUubWFwU3R5bGVzW3N0eWxlVHlwZV0pO1xuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgc3R5bGVUeXBlLFxuICAgIHZpc2libGVMYXllckdyb3VwcyxcbiAgICB0aHJlZURCdWlsZGluZ0NvbG9yLFxuICAgIC4uLmdldE1hcFN0eWxlcyh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpc2libGVMYXllckdyb3VwcyxcbiAgICAgIHN0eWxlVHlwZVxuICAgIH0pXG4gIH07XG59O1xuXG4vKipcbiAqIENhbGxiYWNrIHdoZW4gbG9hZCBtYXAgc3R5bGUgc3VjY2Vzc1xuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRNYXBTdHlsZXNVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3R5bGUsXG4gIGFjdGlvbjogTWFwU3R5bGVBY3Rpb25zLkxvYWRNYXBTdHlsZXNVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiB7XG4gIGNvbnN0IG5ld1N0eWxlcyA9IGFjdGlvbi5wYXlsb2FkIHx8IHt9O1xuICBjb25zdCBhZGRMYXllckdyb3VwcyA9IE9iamVjdC5rZXlzKG5ld1N0eWxlcykucmVkdWNlKFxuICAgIChhY2N1LCBpZCkgPT4gKHtcbiAgICAgIC4uLmFjY3UsXG4gICAgICBbaWRdOiB7XG4gICAgICAgIC4uLm5ld1N0eWxlc1tpZF0sXG4gICAgICAgIGxheWVyR3JvdXBzOiBuZXdTdHlsZXNbaWRdLmxheWVyR3JvdXBzIHx8IGdldExheWVyR3JvdXBzRnJvbVN0eWxlKG5ld1N0eWxlc1tpZF0uc3R5bGUpXG4gICAgICB9XG4gICAgfSksXG4gICAge31cbiAgKTtcblxuICAvLyBhZGQgbmV3IHN0eWxlcyB0byBzdGF0ZVxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtYXBTdHlsZXM6IHtcbiAgICAgIC4uLnN0YXRlLm1hcFN0eWxlcyxcbiAgICAgIC4uLmFkZExheWVyR3JvdXBzXG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBuZXdTdHlsZXNbc3RhdGUuc3R5bGVUeXBlXVxuICAgID8gbWFwU3R5bGVDaGFuZ2VVcGRhdGVyKG5ld1N0YXRlLCB7cGF5bG9hZDogc3RhdGUuc3R5bGVUeXBlfSlcbiAgICA6IG5ld1N0YXRlO1xufTtcblxuLyoqXG4gKiBDYWxsYmFjayB3aGVuIGxvYWQgbWFwIHN0eWxlIGVycm9yXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG4vLyBkbyBub3RoaW5nIGZvciBub3csIGlmIGRpZG4ndCBsb2FkLCBza2lwIGl0XG5leHBvcnQgY29uc3QgbG9hZE1hcFN0eWxlRXJyVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICBhY3Rpb246IE1hcFN0eWxlQWN0aW9ucy5Mb2FkTWFwU3R5bGVFcnJVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdHlsZSA9PiBzdGF0ZTtcblxuLyoqXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVxdWVzdE1hcFN0eWxlc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge3BheWxvYWQ6IG1hcFN0eWxlc306IE1hcFN0eWxlQWN0aW9ucy5SZXF1ZXN0TWFwU3R5bGVzVXBkYXRlckFjdGlvblxuKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCBsb2FkTWFwU3R5bGVUYXNrcyA9IGdldExvYWRNYXBTdHlsZVRhc2tzKFxuICAgIG1hcFN0eWxlcyxcbiAgICBzdGF0ZS5tYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICBzdGF0ZS5tYXBib3hBcGlVcmxcbiAgKTtcbiAgcmV0dXJuIHdpdGhUYXNrKHN0YXRlLCBsb2FkTWFwU3R5bGVUYXNrcyk7XG59O1xuXG4vKipcbiAqIExvYWQgbWFwIHN0eWxlIG9iamVjdCB3aGVuIHBhc3MgaW4gc2F2ZWQgbWFwIGNvbmZpZ1xuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgbWFwU3R5bGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgc2F2ZWQgbWFwIGNvbmZpZyBge21hcFN0eWxlLCB2aXNTdGF0ZSwgbWFwU3RhdGV9YFxuICogQHJldHVybnMgbmV4dFN0YXRlIG9yIGByZWFjdC1wYW1gIHRhc2tzIHRvIGxvYWQgbWFwIHN0eWxlIG9iamVjdFxuICovXG5leHBvcnQgY29uc3QgcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdHlsZSxcbiAge1xuICAgIHBheWxvYWQ6IHtjb25maWd9XG4gIH06IHtcbiAgICB0eXBlPzogdHlwZW9mIEFjdGlvblR5cGVzLlJFQ0VJVkVfTUFQX0NPTkZJRztcbiAgICBwYXlsb2FkOiBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZDtcbiAgfVxuKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCB7bWFwU3R5bGV9ID0gY29uZmlnIHx8IHt9O1xuXG4gIGlmICghbWFwU3R5bGUpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICAvLyBpZiBzYXZlZCBjdXN0b20gbWFwU3R5bGVzIGxvYWQgdGhlIHN0eWxlIG9iamVjdFxuICBjb25zdCBsb2FkTWFwU3R5bGVUYXNrcyA9IG1hcFN0eWxlLm1hcFN0eWxlc1xuICAgID8gZ2V0TG9hZE1hcFN0eWxlVGFza3MobWFwU3R5bGUubWFwU3R5bGVzLCBzdGF0ZS5tYXBib3hBcGlBY2Nlc3NUb2tlbiwgc3RhdGUubWFwYm94QXBpVXJsKVxuICAgIDogbnVsbDtcblxuICAvLyBtZXJnZSBkZWZhdWx0IG1hcFN0eWxlc1xuICBjb25zdCBtZXJnZWQgPSBtYXBTdHlsZS5tYXBTdHlsZXNcbiAgICA/IHtcbiAgICAgICAgLi4ubWFwU3R5bGUsXG4gICAgICAgIG1hcFN0eWxlczoge1xuICAgICAgICAgIC4uLm1hcFN0eWxlLm1hcFN0eWxlcyxcbiAgICAgICAgICAuLi5zdGF0ZS5tYXBTdHlsZXNcbiAgICAgICAgfVxuICAgICAgfVxuICAgIDogbWFwU3R5bGU7XG5cbiAgLy8gc2V0IGN1c3RvbTNEQnVpbGRpbmdDb2xvcjogdHJ1ZSBpZiBtYXBTdHlsZSBjb250YWlucyB0aHJlZURCdWlsZGluZ0NvbG9yXG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgbWVyZ2VkLmN1c3RvbTNEQnVpbGRpbmdDb2xvciA9XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIEJvb2xlYW4obWFwU3R5bGUudGhyZWVEQnVpbGRpbmdDb2xvcikgfHwgbWVyZ2VkLmN1c3RvbTNEQnVpbGRpbmdDb2xvcjtcbiAgY29uc3QgbmV3U3RhdGUgPSBtYXBDb25maWdDaGFuZ2VVcGRhdGVyKHN0YXRlLCB7cGF5bG9hZDogbWVyZ2VkfSk7XG5cbiAgcmV0dXJuIGxvYWRNYXBTdHlsZVRhc2tzID8gd2l0aFRhc2sobmV3U3RhdGUsIGxvYWRNYXBTdHlsZVRhc2tzKSA6IG5ld1N0YXRlO1xufTtcblxuZnVuY3Rpb24gZ2V0TG9hZE1hcFN0eWxlVGFza3MobWFwU3R5bGVzLCBtYXBib3hBcGlBY2Nlc3NUb2tlbiwgbWFwYm94QXBpVXJsKSB7XG4gIHJldHVybiBbXG4gICAgVGFzay5hbGwoXG4gICAgICBPYmplY3QudmFsdWVzKG1hcFN0eWxlcylcbiAgICAgICAgLm1hcCgoe2lkLCB1cmwsIGFjY2Vzc1Rva2VufSkgPT4gKHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICB1cmw6IGlzVmFsaWRTdHlsZVVybCh1cmwpXG4gICAgICAgICAgICA/IGdldFN0eWxlRG93bmxvYWRVcmwodXJsLCBhY2Nlc3NUb2tlbiB8fCBtYXBib3hBcGlBY2Nlc3NUb2tlbiwgbWFwYm94QXBpVXJsKVxuICAgICAgICAgICAgOiB1cmxcbiAgICAgICAgfSkpXG4gICAgICAgIC5tYXAoTE9BRF9NQVBfU1RZTEVfVEFTSylcbiAgICApLmJpbWFwKFxuICAgICAgLy8gc3VjY2Vzc1xuICAgICAgcmVzdWx0cyA9PlxuICAgICAgICBsb2FkTWFwU3R5bGVzKFxuICAgICAgICAgIHJlc3VsdHMucmVkdWNlKFxuICAgICAgICAgICAgKGFjY3UsIHtpZCwgc3R5bGV9KSA9PiAoe1xuICAgICAgICAgICAgICAuLi5hY2N1LFxuICAgICAgICAgICAgICBbaWRdOiB7XG4gICAgICAgICAgICAgICAgLi4ubWFwU3R5bGVzW2lkXSxcbiAgICAgICAgICAgICAgICBzdHlsZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgLy8gZXJyb3JcbiAgICAgIGxvYWRNYXBTdHlsZUVyclxuICAgIClcbiAgXTtcbn1cbi8qKlxuICogUmVzZXQgbWFwIHN0eWxlIGNvbmZpZyB0byBpbml0aWFsIHN0YXRlXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGBtYXBTdHlsZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVzZXRNYXBDb25maWdNYXBTdHlsZVVwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0eWxlKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCBlbXB0eUNvbmZpZyA9IHtcbiAgICAuLi5JTklUSUFMX01BUF9TVFlMRSxcbiAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogc3RhdGUubWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgbWFwYm94QXBpVXJsOiBzdGF0ZS5tYXBib3hBcGlVcmwsXG4gICAgbWFwU3R5bGVzUmVwbGFjZURlZmF1bHQ6IHN0YXRlLm1hcFN0eWxlc1JlcGxhY2VEZWZhdWx0LFxuICAgIC4uLnN0YXRlLmluaXRpYWxTdGF0ZSxcbiAgICBtYXBTdHlsZXM6IHN0YXRlLm1hcFN0eWxlcyxcbiAgICBpbml0aWFsU3RhdGU6IHN0YXRlLmluaXRpYWxTdGF0ZVxuICB9O1xuXG4gIHJldHVybiBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIoZW1wdHlDb25maWcsIHtwYXlsb2FkOiBlbXB0eUNvbmZpZy5zdHlsZVR5cGV9KTtcbn07XG5cbi8qKlxuICogQ2FsbGJhY2sgd2hlbiBhIGN1c3RvbSBtYXAgc3R5bGUgb2JqZWN0IGlzIHJlY2VpdmVkXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZEN1c3RvbU1hcFN0eWxlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICB7cGF5bG9hZDoge2ljb24sIHN0eWxlLCBlcnJvcn19OiBNYXBTdHlsZUFjdGlvbnMuTG9hZEN1c3RvbU1hcFN0eWxlVXBkYXRlckFjdGlvblxuKTogTWFwU3R5bGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgaW5wdXRTdHlsZToge1xuICAgIC4uLnN0YXRlLmlucHV0U3R5bGUsXG4gICAgLy8gc3R5bGUganNvbiBhbmQgaWNvbiB3aWxsIGxvYWQgYXN5bmNocm9ub3VzbHlcbiAgICAuLi4oc3R5bGVcbiAgICAgID8ge1xuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICBpZDogc3R5bGUuaWQgfHwgZ2VuZXJhdGVIYXNoSWQoKSxcbiAgICAgICAgICAvLyBtYWtlIGEgY29weSBvZiB0aGUgc3R5bGUgb2JqZWN0XG4gICAgICAgICAgc3R5bGU6IGNsb25lRGVlcChzdHlsZSksXG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICAgIGxhYmVsOiBzdHlsZS5uYW1lLFxuICAgICAgICAgIC8vIGdhdGhlcmluZyBsYXllciBncm91cCBpbmZvIGZyb20gc3R5bGUganNvblxuICAgICAgICAgIGxheWVyR3JvdXBzOiBnZXRMYXllckdyb3Vwc0Zyb21TdHlsZShzdHlsZSlcbiAgICAgICAgfVxuICAgICAgOiB7fSksXG4gICAgLi4uKGljb24gPyB7aWNvbn0gOiB7fSksXG4gICAgLi4uKGVycm9yICE9PSB1bmRlZmluZWQgPyB7ZXJyb3J9IDoge30pXG4gIH1cbn0pO1xuXG4vKipcbiAqIElucHV0IGEgY3VzdG9tIG1hcCBzdHlsZSBvYmplY3RcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBpbnB1dE1hcFN0eWxlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICB7cGF5bG9hZDoge2lucHV0U3R5bGUsIG1hcFN0YXRlfX06IE1hcFN0eWxlQWN0aW9ucy5JbnB1dE1hcFN0eWxlVXBkYXRlckFjdGlvblxuKTogTWFwU3R5bGUgPT4ge1xuICBjb25zdCB1cGRhdGVkID0ge1xuICAgIC4uLnN0YXRlLmlucHV0U3R5bGUsXG4gICAgLi4uaW5wdXRTdHlsZVxuICB9O1xuXG4gIGNvbnN0IGlzVmFsaWQgPSBpc1ZhbGlkU3R5bGVVcmwodXBkYXRlZC51cmwpO1xuICBjb25zdCBpY29uID0gaXNWYWxpZFxuICAgID8gZ2V0U3R5bGVJbWFnZUljb24oe1xuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgc3R5bGVVcmw6IHVwZGF0ZWQudXJsIHx8ICcnLFxuICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogdXBkYXRlZC5hY2Nlc3NUb2tlbiB8fCBzdGF0ZS5tYXBib3hBcGlBY2Nlc3NUb2tlbiB8fCAnJyxcbiAgICAgICAgbWFwYm94QXBpVXJsOiBzdGF0ZS5tYXBib3hBcGlVcmwgfHwgREVGQVVMVF9NQVBCT1hfQVBJX1VSTFxuICAgICAgfSlcbiAgICA6IHN0YXRlLmlucHV0U3R5bGUuaWNvbjtcblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGlucHV0U3R5bGU6IHtcbiAgICAgIC4uLnVwZGF0ZWQsXG4gICAgICBpc1ZhbGlkLFxuICAgICAgaWNvblxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQWRkIG1hcCBzdHlsZSBmcm9tIHVzZXIgaW5wdXQgdG8gcmVkdWNlciBhbmQgc2V0IGl0IHRvIGN1cnJlbnQgc3R5bGVcbiAqIFRoaXMgYWN0aW9uIGlzIGNhbGxlZCB3aGVuIHVzZXIgY2xpY2sgY29uZmlybSBhZnRlciBwdXR0aW5nIGluIGEgdmFsaWQgc3R5bGUgdXJsIGluIHRoZSBjdXN0b20gbWFwIHN0eWxlIGRpYWxvZy5cbiAqIEl0IHNob3VsZCBub3QgYmUgY2FsbGVkIGZyb20gb3V0c2lkZSBrZXBsZXIuZ2wgd2l0aG91dCBhIHZhbGlkIGBpbnB1dFN0eWxlYCBpbiB0aGUgYG1hcFN0eWxlYCByZWR1Y2VyLlxuICogQG1lbWJlcm9mIG1hcFN0eWxlVXBkYXRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZEN1c3RvbU1hcFN0eWxlVXBkYXRlciA9IChzdGF0ZTogTWFwU3R5bGUpOiBNYXBTdHlsZSA9PiB7XG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgY29uc3Qgc3R5bGVJZCA9IHN0YXRlLmlucHV0U3R5bGUuaWQ7XG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcFN0eWxlczoge1xuICAgICAgLi4uc3RhdGUubWFwU3R5bGVzLFxuICAgICAgW3N0eWxlSWRdOiBzdGF0ZS5pbnB1dFN0eWxlXG4gICAgfSxcbiAgICAvLyBzZXQgdG8gZGVmYXVsdFxuICAgIGlucHV0U3R5bGU6IGdldEluaXRpYWxJbnB1dFN0eWxlKClcbiAgfTtcbiAgLy8gc2V0IG5ldyBzdHlsZVxuICByZXR1cm4gbWFwU3R5bGVDaGFuZ2VVcGRhdGVyKG5ld1N0YXRlLCB7cGF5bG9hZDogc3R5bGVJZH0pO1xufTtcblxuLyoqXG4gKiBVcGRhdGVzIDNkIGJ1aWxkaW5nIGNvbG9yXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVVcGRhdGVyc1xuICovXG5leHBvcnQgY29uc3Qgc2V0M2RCdWlsZGluZ0NvbG9yVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0eWxlLFxuICB7cGF5bG9hZDogY29sb3J9OiBNYXBTdHlsZUFjdGlvbnMuU2V0M2RCdWlsZGluZ0NvbG9yVXBkYXRlckFjdGlvblxuKTogTWFwU3R5bGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIHRocmVlREJ1aWxkaW5nQ29sb3I6IGNvbG9yLFxuICBjdXN0b20zREJ1aWxkaW5nQ29sb3I6IHRydWVcbn0pO1xuXG4vKipcbiAqIFJldHVybiB0aGUgaW5pdGlhbCBpbnB1dCBzdHlsZVxuICogQHJldHVybiBPYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRpYWxJbnB1dFN0eWxlKCkge1xuICByZXR1cm4ge1xuICAgIGFjY2Vzc1Rva2VuOiBudWxsLFxuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpc1ZhbGlkOiBmYWxzZSxcbiAgICBsYWJlbDogbnVsbCxcbiAgICBzdHlsZTogbnVsbCxcbiAgICB1cmw6IG51bGwsXG4gICAgaWNvbjogbnVsbCxcbiAgICBjdXN0b206IHRydWVcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBb0JBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUdBLElBQUFHLG9CQUFBLEdBQUFILE9BQUE7QUFTQSxJQUFBSSxnQkFBQSxHQUFBSixPQUFBO0FBS0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sZ0JBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFFBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLFdBQUEs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