@carto/kepler.gl 0.0.41 → 0.0.42

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.
@@ -35,8 +35,6 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
35
35
 
36
36
  var _colorUtils = require("../../../utils/color-utils");
37
37
 
38
- var _singleColorPalette = _interopRequireDefault(require("./single-color-palette"));
39
-
40
38
  var _colorRangeSelector = _interopRequireDefault(require("./color-range-selector"));
41
39
 
42
40
  var _colorPalette = _interopRequireDefault(require("./color-palette"));
@@ -45,6 +43,8 @@ var _styledComponents2 = require("../../common/styled-components");
45
43
 
46
44
  var _reactOnclickoutside = _interopRequireDefault(require("react-onclickoutside"));
47
45
 
46
+ var _singleColorPalette = _interopRequireDefault(require("./single-color-palette"));
47
+
48
48
  var _templateObject, _templateObject2, _templateObject3;
49
49
 
50
50
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
@@ -70,154 +70,157 @@ exports.ColorSelectorInput = ColorSelectorInput;
70
70
  var InputBoxContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n\n .color-select__input-group {\n flex-grow: 1;\n }\n .color-select__input-group:nth-child(2) {\n margin-left: 12px;\n }\n"])));
71
71
 
72
72
  exports.InputBoxContainer = InputBoxContainer;
73
+ ColorSelectorFactory.deps = [_singleColorPalette["default"]];
73
74
 
74
- var ColorSelector = /*#__PURE__*/function (_Component) {
75
- (0, _inherits2["default"])(ColorSelector, _Component);
75
+ function ColorSelectorFactory(SingleColorPalette) {
76
+ var ColorSelector = /*#__PURE__*/function (_Component) {
77
+ (0, _inherits2["default"])(ColorSelector, _Component);
76
78
 
77
- var _super = _createSuper(ColorSelector);
79
+ var _super = _createSuper(ColorSelector);
78
80
 
79
- function ColorSelector() {
80
- var _this;
81
+ function ColorSelector() {
82
+ var _this;
81
83
 
82
- (0, _classCallCheck2["default"])(this, ColorSelector);
84
+ (0, _classCallCheck2["default"])(this, ColorSelector);
83
85
 
84
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
85
- args[_key] = arguments[_key];
86
- }
87
-
88
- _this = _super.call.apply(_super, [this].concat(args));
89
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
90
- showDropdown: false
91
- });
92
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "node", /*#__PURE__*/(0, _react.createRef)());
93
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleClickOutside", function (e) {
94
- if (_this.props.colorUI && Number.isInteger(_this.props.colorUI.showSketcher)) {
95
- // if sketcher is open, let sketch to close itself first
96
- return;
97
- }
98
-
99
- _this._closePanelDropdown();
100
- });
101
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_getEditing", function () {
102
- return _this.props.colorUI ? _this.props.colorUI.showDropdown : _this.state.showDropdown;
103
- });
104
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_closePanelDropdown", function () {
105
- if (_this._getEditing() === false) {
106
- return;
86
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
87
+ args[_key] = arguments[_key];
107
88
  }
108
89
 
109
- if (_this.props.setColorUI) {
110
- _this.props.setColorUI({
111
- showDropdown: false,
112
- showSketcher: false
113
- });
114
- } else {
115
- _this.setState({
116
- showDropdown: false
117
- });
118
- }
119
- });
120
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onSelectColor", function (color, e) {
121
- e.stopPropagation();
90
+ _this = _super.call.apply(_super, [this].concat(args));
91
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
92
+ showDropdown: false
93
+ });
94
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "node", /*#__PURE__*/(0, _react.createRef)());
95
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleClickOutside", function (e) {
96
+ if (_this.props.colorUI && Number.isInteger(_this.props.colorUI.showSketcher)) {
97
+ // if sketcher is open, let sketch to close itself first
98
+ return;
99
+ }
100
+
101
+ _this._closePanelDropdown();
102
+ });
103
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_getEditing", function () {
104
+ return _this.props.colorUI ? _this.props.colorUI.showDropdown : _this.state.showDropdown;
105
+ });
106
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_closePanelDropdown", function () {
107
+ if (_this._getEditing() === false) {
108
+ return;
109
+ }
110
+
111
+ if (_this.props.setColorUI) {
112
+ _this.props.setColorUI({
113
+ showDropdown: false,
114
+ showSketcher: false
115
+ });
116
+ } else {
117
+ _this.setState({
118
+ showDropdown: false
119
+ });
120
+ }
121
+ });
122
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_onSelectColor", function (color, e) {
123
+ e === null || e === void 0 ? void 0 : e.stopPropagation();
124
+
125
+ var editing = _this._getEditing();
126
+
127
+ if (_this.props.colorSets[editing]) {
128
+ _this.props.colorSets[editing].setColor(color);
129
+ }
130
+ });
131
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_showDropdown", function (e, i) {
132
+ e.stopPropagation();
133
+ e.preventDefault();
134
+
135
+ if (_this.props.setColorUI) {
136
+ _this.props.setColorUI({
137
+ showDropdown: i
138
+ });
139
+ } else {
140
+ _this.setState({
141
+ showDropdown: i
142
+ });
143
+ }
144
+ });
145
+ return _this;
146
+ }
122
147
 
123
- var editing = _this._getEditing();
148
+ (0, _createClass2["default"])(ColorSelector, [{
149
+ key: "render",
150
+ value: function render() {
151
+ var _this2 = this;
124
152
 
125
- if (_this.props.colorSets[editing]) {
126
- _this.props.colorSets[editing].setColor(color);
127
- }
128
- });
129
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_showDropdown", function (e, i) {
130
- e.stopPropagation();
131
- e.preventDefault();
132
-
133
- if (_this.props.setColorUI) {
134
- _this.props.setColorUI({
135
- showDropdown: i
136
- });
137
- } else {
138
- _this.setState({
139
- showDropdown: i
140
- });
141
- }
142
- });
143
- return _this;
144
- }
145
-
146
- (0, _createClass2["default"])(ColorSelector, [{
147
- key: "render",
148
- value: function render() {
149
- var _this2 = this;
150
-
151
- var _this$props = this.props,
152
- colorSets = _this$props.colorSets,
153
- disabled = _this$props.disabled,
154
- inputTheme = _this$props.inputTheme,
155
- colorUI = _this$props.colorUI;
156
-
157
- var editing = this._getEditing();
158
-
159
- var currentEditing = colorSets[editing] && (0, _typeof2["default"])(colorSets[editing]) === 'object';
160
- return /*#__PURE__*/_react["default"].createElement("div", {
161
- className: "color-selector",
162
- ref: this.node
163
- }, /*#__PURE__*/_react["default"].createElement(InputBoxContainer, null, colorSets.map(function (cSet, i) {
164
- return /*#__PURE__*/_react["default"].createElement("div", {
165
- className: "color-select__input-group",
166
- key: i
167
- }, /*#__PURE__*/_react["default"].createElement(ColorSelectorInput, {
168
- className: "color-selector__selector",
169
- active: editing === i,
170
- disabled: disabled,
171
- inputTheme: inputTheme,
172
- onMouseDown: function onMouseDown(e) {
173
- return _this2._showDropdown(e, i);
174
- }
175
- }, cSet.isRange ? /*#__PURE__*/_react["default"].createElement(_colorPalette["default"], {
176
- colors: cSet.selectedColor.colors
177
- }) : /*#__PURE__*/_react["default"].createElement(ColorBlock, {
178
- className: "color-selector__selector__block",
179
- color: cSet.selectedColor
180
- }), cSet.label ? /*#__PURE__*/_react["default"].createElement("div", {
181
- className: "color-selector__selector__label"
182
- }, cSet.label) : null));
183
- })), currentEditing ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.StyledPanelDropdown, {
184
- className: "color-selector__dropdown"
185
- }, colorSets[editing].isRange ? /*#__PURE__*/_react["default"].createElement(_colorRangeSelector["default"], {
186
- selectedColorRange: colorSets[editing].selectedColor,
187
- onSelectColorRange: this._onSelectColor,
188
- setColorPaletteUI: this.props.setColorUI,
189
- colorPaletteUI: colorUI
190
- }) : /*#__PURE__*/_react["default"].createElement(_singleColorPalette["default"], {
191
- selectedColor: (0, _colorUtils.rgbToHex)(colorSets[editing].selectedColor),
192
- onSelectColor: this._onSelectColor
193
- })) : null);
194
- }
195
- }]);
196
- return ColorSelector;
197
- }(_react.Component);
198
-
199
- (0, _defineProperty2["default"])(ColorSelector, "propTypes", {
200
- colorSets: _propTypes["default"].arrayOf(_propTypes["default"].shape({
201
- selectedColor: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].any), _propTypes["default"].object]),
202
- setColor: _propTypes["default"].func.isRequired,
203
- isRange: _propTypes["default"].bool,
204
- label: _propTypes["default"].string
205
- })),
206
- colorUI: _propTypes["default"].shape({
207
- customPalette: _propTypes["default"].object,
208
- showSketcher: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].number]),
209
- showDropdown: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].number]),
210
- colorRangeConfig: _propTypes["default"].object
211
- }),
212
- inputTheme: _propTypes["default"].string,
213
- disabled: _propTypes["default"].bool,
214
- setColorUI: _propTypes["default"].func
215
- });
216
- (0, _defineProperty2["default"])(ColorSelector, "defaultProps", {
217
- colorSets: []
218
- });
153
+ var _this$props = this.props,
154
+ colorSets = _this$props.colorSets,
155
+ disabled = _this$props.disabled,
156
+ inputTheme = _this$props.inputTheme,
157
+ colorUI = _this$props.colorUI;
219
158
 
220
- var _default = (0, _reactOnclickoutside["default"])(ColorSelector);
159
+ var editing = this._getEditing();
221
160
 
161
+ var currentEditing = colorSets[editing] && (0, _typeof2["default"])(colorSets[editing]) === 'object';
162
+ return /*#__PURE__*/_react["default"].createElement("div", {
163
+ className: "color-selector",
164
+ ref: this.node
165
+ }, /*#__PURE__*/_react["default"].createElement(InputBoxContainer, null, colorSets.map(function (cSet, i) {
166
+ return /*#__PURE__*/_react["default"].createElement("div", {
167
+ className: "color-select__input-group",
168
+ key: i
169
+ }, /*#__PURE__*/_react["default"].createElement(ColorSelectorInput, {
170
+ className: "color-selector__selector",
171
+ active: editing === i,
172
+ disabled: disabled,
173
+ inputTheme: inputTheme,
174
+ onMouseDown: function onMouseDown(e) {
175
+ return _this2._showDropdown(e, i);
176
+ }
177
+ }, cSet.isRange ? /*#__PURE__*/_react["default"].createElement(_colorPalette["default"], {
178
+ colors: cSet.selectedColor.colors
179
+ }) : /*#__PURE__*/_react["default"].createElement(ColorBlock, {
180
+ className: "color-selector__selector__block",
181
+ color: cSet.selectedColor
182
+ }), cSet.label ? /*#__PURE__*/_react["default"].createElement("div", {
183
+ className: "color-selector__selector__label"
184
+ }, cSet.label) : null));
185
+ })), currentEditing ? /*#__PURE__*/_react["default"].createElement(_styledComponents2.StyledPanelDropdown, {
186
+ className: "color-selector__dropdown"
187
+ }, colorSets[editing].isRange ? /*#__PURE__*/_react["default"].createElement(_colorRangeSelector["default"], {
188
+ selectedColorRange: colorSets[editing].selectedColor,
189
+ onSelectColorRange: this._onSelectColor,
190
+ setColorPaletteUI: this.props.setColorUI,
191
+ colorPaletteUI: colorUI
192
+ }) : /*#__PURE__*/_react["default"].createElement(SingleColorPalette, {
193
+ selectedColor: (0, _colorUtils.rgbToHex)(colorSets[editing].selectedColor),
194
+ onSelectColor: this._onSelectColor
195
+ })) : null);
196
+ }
197
+ }]);
198
+ return ColorSelector;
199
+ }(_react.Component);
200
+
201
+ (0, _defineProperty2["default"])(ColorSelector, "propTypes", {
202
+ colorSets: _propTypes["default"].arrayOf(_propTypes["default"].shape({
203
+ selectedColor: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].any), _propTypes["default"].object]),
204
+ setColor: _propTypes["default"].func.isRequired,
205
+ isRange: _propTypes["default"].bool,
206
+ label: _propTypes["default"].string
207
+ })),
208
+ colorUI: _propTypes["default"].shape({
209
+ customPalette: _propTypes["default"].object,
210
+ showSketcher: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].number]),
211
+ showDropdown: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].number]),
212
+ colorRangeConfig: _propTypes["default"].object
213
+ }),
214
+ inputTheme: _propTypes["default"].string,
215
+ disabled: _propTypes["default"].bool,
216
+ setColorUI: _propTypes["default"].func
217
+ });
218
+ (0, _defineProperty2["default"])(ColorSelector, "defaultProps", {
219
+ colorSets: []
220
+ });
221
+ return (0, _reactOnclickoutside["default"])(ColorSelector);
222
+ }
223
+
224
+ var _default = ColorSelectorFactory;
222
225
  exports["default"] = _default;
223
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY29sb3Itc2VsZWN0b3IuanMiXSwibmFtZXMiOlsiQ29sb3JCbG9jayIsInN0eWxlZCIsImRpdiIsInByb3BzIiwiY29sb3IiLCJzbGljZSIsImpvaW4iLCJDb2xvclNlbGVjdG9ySW5wdXQiLCJpbnB1dFRoZW1lIiwidGhlbWUiLCJzZWNvbmRhcnlJbnB1dCIsImlucHV0IiwiaW5wdXRCb3hIZWlnaHQiLCJpbnB1dFBsYWNlaG9sZGVyQ29sb3IiLCJJbnB1dEJveENvbnRhaW5lciIsIkNvbG9yU2VsZWN0b3IiLCJzaG93RHJvcGRvd24iLCJlIiwiY29sb3JVSSIsIk51bWJlciIsImlzSW50ZWdlciIsInNob3dTa2V0Y2hlciIsIl9jbG9zZVBhbmVsRHJvcGRvd24iLCJzdGF0ZSIsIl9nZXRFZGl0aW5nIiwic2V0Q29sb3JVSSIsInNldFN0YXRlIiwic3RvcFByb3BhZ2F0aW9uIiwiZWRpdGluZyIsImNvbG9yU2V0cyIsInNldENvbG9yIiwiaSIsInByZXZlbnREZWZhdWx0IiwiZGlzYWJsZWQiLCJjdXJyZW50RWRpdGluZyIsIm5vZGUiLCJtYXAiLCJjU2V0IiwiX3Nob3dEcm9wZG93biIsImlzUmFuZ2UiLCJzZWxlY3RlZENvbG9yIiwiY29sb3JzIiwibGFiZWwiLCJfb25TZWxlY3RDb2xvciIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsImFycmF5T2YiLCJzaGFwZSIsIm9uZU9mVHlwZSIsImFueSIsIm9iamVjdCIsImZ1bmMiLCJpc1JlcXVpcmVkIiwiYm9vbCIsInN0cmluZyIsImN1c3RvbVBhbGV0dGUiLCJudW1iZXIiLCJjb2xvclJhbmdlQ29uZmlnIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFTyxJQUFNQSxVQUFVLEdBQUdDLDZCQUFPQyxHQUFWLDRLQUlELFVBQUFDLEtBQUs7QUFBQSx1QkFBV0EsS0FBSyxDQUFDQyxLQUFOLENBQVlDLEtBQVosQ0FBa0IsQ0FBbEIsRUFBcUIsQ0FBckIsRUFBd0JDLElBQXhCLENBQTZCLEdBQTdCLENBQVg7QUFBQSxDQUpKLENBQWhCOzs7O0FBT0EsSUFBTUMsa0JBQWtCLEdBQUdOLDZCQUFPQyxHQUFWLG9RQUMzQixVQUFBQyxLQUFLO0FBQUEsU0FBS0EsS0FBSyxDQUFDSyxVQUFOLEtBQXFCLFdBQXJCLEdBQW1DTCxLQUFLLENBQUNNLEtBQU4sQ0FBWUMsY0FBL0MsR0FBZ0VQLEtBQUssQ0FBQ00sS0FBTixDQUFZRSxLQUFqRjtBQUFBLENBRHNCLEVBRW5CLFVBQUFSLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNNLEtBQU4sQ0FBWUcsY0FBaEI7QUFBQSxDQUZjLEVBUWxCLFVBQUFULEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNNLEtBQU4sQ0FBWUkscUJBQWhCO0FBQUEsQ0FSYSxDQUF4Qjs7OztBQVlBLElBQU1DLGlCQUFpQixHQUFHYiw2QkFBT0MsR0FBVixtUkFBdkI7Ozs7SUFZRGEsYTs7Ozs7Ozs7Ozs7Ozs7OzhGQXlCSTtBQUNOQyxNQUFBQSxZQUFZLEVBQUU7QUFEUixLOzBHQUlELHVCOzJHQUVjLFVBQUFDLENBQUMsRUFBSTtBQUN4QixVQUFJLE1BQUtkLEtBQUwsQ0FBV2UsT0FBWCxJQUFzQkMsTUFBTSxDQUFDQyxTQUFQLENBQWlCLE1BQUtqQixLQUFMLENBQVdlLE9BQVgsQ0FBbUJHLFlBQXBDLENBQTFCLEVBQTZFO0FBQzNFO0FBQ0E7QUFDRDs7QUFDRCxZQUFLQyxtQkFBTDtBQUNELEs7b0dBRWEsWUFBTTtBQUNsQixhQUFPLE1BQUtuQixLQUFMLENBQVdlLE9BQVgsR0FBcUIsTUFBS2YsS0FBTCxDQUFXZSxPQUFYLENBQW1CRixZQUF4QyxHQUF1RCxNQUFLTyxLQUFMLENBQVdQLFlBQXpFO0FBQ0QsSzs0R0FFcUIsWUFBTTtBQUMxQixVQUFJLE1BQUtRLFdBQUwsT0FBdUIsS0FBM0IsRUFBa0M7QUFDaEM7QUFDRDs7QUFDRCxVQUFJLE1BQUtyQixLQUFMLENBQVdzQixVQUFmLEVBQTJCO0FBQ3pCLGNBQUt0QixLQUFMLENBQVdzQixVQUFYLENBQXNCO0FBQUNULFVBQUFBLFlBQVksRUFBRSxLQUFmO0FBQXNCSyxVQUFBQSxZQUFZLEVBQUU7QUFBcEMsU0FBdEI7QUFDRCxPQUZELE1BRU87QUFDTCxjQUFLSyxRQUFMLENBQWM7QUFBQ1YsVUFBQUEsWUFBWSxFQUFFO0FBQWYsU0FBZDtBQUNEO0FBQ0YsSzt1R0FFZ0IsVUFBQ1osS0FBRCxFQUFRYSxDQUFSLEVBQWM7QUFDN0JBLE1BQUFBLENBQUMsQ0FBQ1UsZUFBRjs7QUFDQSxVQUFNQyxPQUFPLEdBQUcsTUFBS0osV0FBTCxFQUFoQjs7QUFDQSxVQUFJLE1BQUtyQixLQUFMLENBQVcwQixTQUFYLENBQXFCRCxPQUFyQixDQUFKLEVBQW1DO0FBQ2pDLGNBQUt6QixLQUFMLENBQVcwQixTQUFYLENBQXFCRCxPQUFyQixFQUE4QkUsUUFBOUIsQ0FBdUMxQixLQUF2QztBQUNEO0FBQ0YsSztzR0FFZSxVQUFDYSxDQUFELEVBQUljLENBQUosRUFBVTtBQUN4QmQsTUFBQUEsQ0FBQyxDQUFDVSxlQUFGO0FBQ0FWLE1BQUFBLENBQUMsQ0FBQ2UsY0FBRjs7QUFDQSxVQUFJLE1BQUs3QixLQUFMLENBQVdzQixVQUFmLEVBQTJCO0FBQ3pCLGNBQUt0QixLQUFMLENBQVdzQixVQUFYLENBQXNCO0FBQUNULFVBQUFBLFlBQVksRUFBRWU7QUFBZixTQUF0QjtBQUNELE9BRkQsTUFFTztBQUNMLGNBQUtMLFFBQUwsQ0FBYztBQUFDVixVQUFBQSxZQUFZLEVBQUVlO0FBQWYsU0FBZDtBQUNEO0FBQ0YsSzs7Ozs7O1dBRUQsa0JBQVM7QUFBQTs7QUFBQSx3QkFDNEMsS0FBSzVCLEtBRGpEO0FBQUEsVUFDQTBCLFNBREEsZUFDQUEsU0FEQTtBQUFBLFVBQ1dJLFFBRFgsZUFDV0EsUUFEWDtBQUFBLFVBQ3FCekIsVUFEckIsZUFDcUJBLFVBRHJCO0FBQUEsVUFDaUNVLE9BRGpDLGVBQ2lDQSxPQURqQzs7QUFHUCxVQUFNVSxPQUFPLEdBQUcsS0FBS0osV0FBTCxFQUFoQjs7QUFDQSxVQUFNVSxjQUFjLEdBQUdMLFNBQVMsQ0FBQ0QsT0FBRCxDQUFULElBQXNCLHlCQUFPQyxTQUFTLENBQUNELE9BQUQsQ0FBaEIsTUFBOEIsUUFBM0U7QUFFQSwwQkFDRTtBQUFLLFFBQUEsU0FBUyxFQUFDLGdCQUFmO0FBQWdDLFFBQUEsR0FBRyxFQUFFLEtBQUtPO0FBQTFDLHNCQUNFLGdDQUFDLGlCQUFELFFBQ0dOLFNBQVMsQ0FBQ08sR0FBVixDQUFjLFVBQUNDLElBQUQsRUFBT04sQ0FBUDtBQUFBLDRCQUNiO0FBQUssVUFBQSxTQUFTLEVBQUMsMkJBQWY7QUFBMkMsVUFBQSxHQUFHLEVBQUVBO0FBQWhELHdCQUNFLGdDQUFDLGtCQUFEO0FBQ0UsVUFBQSxTQUFTLEVBQUMsMEJBRFo7QUFFRSxVQUFBLE1BQU0sRUFBRUgsT0FBTyxLQUFLRyxDQUZ0QjtBQUdFLFVBQUEsUUFBUSxFQUFFRSxRQUhaO0FBSUUsVUFBQSxVQUFVLEVBQUV6QixVQUpkO0FBS0UsVUFBQSxXQUFXLEVBQUUscUJBQUFTLENBQUM7QUFBQSxtQkFBSSxNQUFJLENBQUNxQixhQUFMLENBQW1CckIsQ0FBbkIsRUFBc0JjLENBQXRCLENBQUo7QUFBQTtBQUxoQixXQU9HTSxJQUFJLENBQUNFLE9BQUwsZ0JBQ0MsZ0NBQUMsd0JBQUQ7QUFBYyxVQUFBLE1BQU0sRUFBRUYsSUFBSSxDQUFDRyxhQUFMLENBQW1CQztBQUF6QyxVQURELGdCQUdDLGdDQUFDLFVBQUQ7QUFDRSxVQUFBLFNBQVMsRUFBQyxpQ0FEWjtBQUVFLFVBQUEsS0FBSyxFQUFFSixJQUFJLENBQUNHO0FBRmQsVUFWSixFQWVHSCxJQUFJLENBQUNLLEtBQUwsZ0JBQ0M7QUFBSyxVQUFBLFNBQVMsRUFBQztBQUFmLFdBQWtETCxJQUFJLENBQUNLLEtBQXZELENBREQsR0FFRyxJQWpCTixDQURGLENBRGE7QUFBQSxPQUFkLENBREgsQ0FERixFQTBCR1IsY0FBYyxnQkFDYixnQ0FBQyxzQ0FBRDtBQUFxQixRQUFBLFNBQVMsRUFBQztBQUEvQixTQUNHTCxTQUFTLENBQUNELE9BQUQsQ0FBVCxDQUFtQlcsT0FBbkIsZ0JBQ0MsZ0NBQUMsOEJBQUQ7QUFDRSxRQUFBLGtCQUFrQixFQUFFVixTQUFTLENBQUNELE9BQUQsQ0FBVCxDQUFtQlksYUFEekM7QUFFRSxRQUFBLGtCQUFrQixFQUFFLEtBQUtHLGNBRjNCO0FBR0UsUUFBQSxpQkFBaUIsRUFBRSxLQUFLeEMsS0FBTCxDQUFXc0IsVUFIaEM7QUFJRSxRQUFBLGNBQWMsRUFBRVA7QUFKbEIsUUFERCxnQkFRQyxnQ0FBQyw4QkFBRDtBQUNFLFFBQUEsYUFBYSxFQUFFLDBCQUFTVyxTQUFTLENBQUNELE9BQUQsQ0FBVCxDQUFtQlksYUFBNUIsQ0FEakI7QUFFRSxRQUFBLGFBQWEsRUFBRSxLQUFLRztBQUZ0QixRQVRKLENBRGEsR0FnQlgsSUExQ04sQ0FERjtBQThDRDs7O0VBNUh5QkMsZ0I7O2lDQUF0QjdCLGEsZUFDZTtBQUNqQmMsRUFBQUEsU0FBUyxFQUFFZ0Isc0JBQVVDLE9BQVYsQ0FDVEQsc0JBQVVFLEtBQVYsQ0FBZ0I7QUFDZFAsSUFBQUEsYUFBYSxFQUFFSyxzQkFBVUcsU0FBVixDQUFvQixDQUFDSCxzQkFBVUMsT0FBVixDQUFrQkQsc0JBQVVJLEdBQTVCLENBQUQsRUFBbUNKLHNCQUFVSyxNQUE3QyxDQUFwQixDQUREO0FBRWRwQixJQUFBQSxRQUFRLEVBQUVlLHNCQUFVTSxJQUFWLENBQWVDLFVBRlg7QUFHZGIsSUFBQUEsT0FBTyxFQUFFTSxzQkFBVVEsSUFITDtBQUlkWCxJQUFBQSxLQUFLLEVBQUVHLHNCQUFVUztBQUpILEdBQWhCLENBRFMsQ0FETTtBQVNqQnBDLEVBQUFBLE9BQU8sRUFBRTJCLHNCQUFVRSxLQUFWLENBQWdCO0FBQ3ZCUSxJQUFBQSxhQUFhLEVBQUVWLHNCQUFVSyxNQURGO0FBRXZCN0IsSUFBQUEsWUFBWSxFQUFFd0Isc0JBQVVHLFNBQVYsQ0FBb0IsQ0FBQ0gsc0JBQVVRLElBQVgsRUFBaUJSLHNCQUFVVyxNQUEzQixDQUFwQixDQUZTO0FBR3ZCeEMsSUFBQUEsWUFBWSxFQUFFNkIsc0JBQVVHLFNBQVYsQ0FBb0IsQ0FBQ0gsc0JBQVVRLElBQVgsRUFBaUJSLHNCQUFVVyxNQUEzQixDQUFwQixDQUhTO0FBSXZCQyxJQUFBQSxnQkFBZ0IsRUFBRVosc0JBQVVLO0FBSkwsR0FBaEIsQ0FUUTtBQWVqQjFDLEVBQUFBLFVBQVUsRUFBRXFDLHNCQUFVUyxNQWZMO0FBZ0JqQnJCLEVBQUFBLFFBQVEsRUFBRVksc0JBQVVRLElBaEJIO0FBaUJqQjVCLEVBQUFBLFVBQVUsRUFBRW9CLHNCQUFVTTtBQWpCTCxDO2lDQURmcEMsYSxrQkFxQmtCO0FBQ3BCYyxFQUFBQSxTQUFTLEVBQUU7QUFEUyxDOztlQTBHVCxxQ0FBZWQsYUFBZixDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7cmdiVG9IZXh9IGZyb20gJ3V0aWxzL2NvbG9yLXV0aWxzJztcbmltcG9ydCBTaW5nbGVDb2xvclBhbGV0dGUgZnJvbSAnY29tcG9uZW50cy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL3NpbmdsZS1jb2xvci1wYWxldHRlJztcbmltcG9ydCBDb2xvclJhbmdlU2VsZWN0b3IgZnJvbSAnY29tcG9uZW50cy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL2NvbG9yLXJhbmdlLXNlbGVjdG9yJztcbmltcG9ydCBDb2xvclBhbGV0dGUgZnJvbSAnY29tcG9uZW50cy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL2NvbG9yLXBhbGV0dGUnO1xuaW1wb3J0IHtTdHlsZWRQYW5lbERyb3Bkb3dufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgb25DbGlja091dHNpZGUgZnJvbSAncmVhY3Qtb25jbGlja291dHNpZGUnO1xuXG5leHBvcnQgY29uc3QgQ29sb3JCbG9jayA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAzMnB4O1xuICBoZWlnaHQ6IDE4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDFweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBgcmdiKCR7cHJvcHMuY29sb3Iuc2xpY2UoMCwgMykuam9pbignLCcpfSlgfTtcbmA7XG5cbmV4cG9ydCBjb25zdCBDb2xvclNlbGVjdG9ySW5wdXQgPSBzdHlsZWQuZGl2YFxuICAke3Byb3BzID0+IChwcm9wcy5pbnB1dFRoZW1lID09PSAnc2Vjb25kYXJ5JyA/IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0IDogcHJvcHMudGhlbWUuaW5wdXQpfTtcbiAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0Qm94SGVpZ2h0fTtcblxuICAuY29sb3Itc2VsZWN0b3JfX3NlbGVjdG9yX19sYWJlbCB7XG4gICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dFBsYWNlaG9sZGVyQ29sb3J9O1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgSW5wdXRCb3hDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgLmNvbG9yLXNlbGVjdF9faW5wdXQtZ3JvdXAge1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgfVxuICAuY29sb3Itc2VsZWN0X19pbnB1dC1ncm91cDpudGgtY2hpbGQoMikge1xuICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICB9XG5gO1xuXG5jbGFzcyBDb2xvclNlbGVjdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjb2xvclNldHM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgICAgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgICAgc2VsZWN0ZWRDb2xvcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgICAgICAgc2V0Q29sb3I6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICAgIGlzUmFuZ2U6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgICAgfSlcbiAgICApLFxuICAgIGNvbG9yVUk6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBjdXN0b21QYWxldHRlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgc2hvd1NrZXRjaGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYm9vbCwgUHJvcFR5cGVzLm51bWJlcl0pLFxuICAgICAgc2hvd0Ryb3Bkb3duOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYm9vbCwgUHJvcFR5cGVzLm51bWJlcl0pLFxuICAgICAgY29sb3JSYW5nZUNvbmZpZzogUHJvcFR5cGVzLm9iamVjdFxuICAgIH0pLFxuICAgIGlucHV0VGhlbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIHNldENvbG9yVUk6IFByb3BUeXBlcy5mdW5jXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjb2xvclNldHM6IFtdXG4gIH07XG5cbiAgc3RhdGUgPSB7XG4gICAgc2hvd0Ryb3Bkb3duOiBmYWxzZVxuICB9O1xuXG4gIG5vZGUgPSBjcmVhdGVSZWYoKTtcblxuICBoYW5kbGVDbGlja091dHNpZGUgPSBlID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5jb2xvclVJICYmIE51bWJlci5pc0ludGVnZXIodGhpcy5wcm9wcy5jb2xvclVJLnNob3dTa2V0Y2hlcikpIHtcbiAgICAgIC8vIGlmIHNrZXRjaGVyIGlzIG9wZW4sIGxldCBza2V0Y2ggdG8gY2xvc2UgaXRzZWxmIGZpcnN0XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2Nsb3NlUGFuZWxEcm9wZG93bigpO1xuICB9O1xuXG4gIF9nZXRFZGl0aW5nID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmNvbG9yVUkgPyB0aGlzLnByb3BzLmNvbG9yVUkuc2hvd0Ryb3Bkb3duIDogdGhpcy5zdGF0ZS5zaG93RHJvcGRvd247XG4gIH07XG5cbiAgX2Nsb3NlUGFuZWxEcm9wZG93biA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5fZ2V0RWRpdGluZygpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5wcm9wcy5zZXRDb2xvclVJKSB7XG4gICAgICB0aGlzLnByb3BzLnNldENvbG9yVUkoe3Nob3dEcm9wZG93bjogZmFsc2UsIHNob3dTa2V0Y2hlcjogZmFsc2V9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7c2hvd0Ryb3Bkb3duOiBmYWxzZX0pO1xuICAgIH1cbiAgfTtcblxuICBfb25TZWxlY3RDb2xvciA9IChjb2xvciwgZSkgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgZWRpdGluZyA9IHRoaXMuX2dldEVkaXRpbmcoKTtcbiAgICBpZiAodGhpcy5wcm9wcy5jb2xvclNldHNbZWRpdGluZ10pIHtcbiAgICAgIHRoaXMucHJvcHMuY29sb3JTZXRzW2VkaXRpbmddLnNldENvbG9yKGNvbG9yKTtcbiAgICB9XG4gIH07XG5cbiAgX3Nob3dEcm9wZG93biA9IChlLCBpKSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHRoaXMucHJvcHMuc2V0Q29sb3JVSSkge1xuICAgICAgdGhpcy5wcm9wcy5zZXRDb2xvclVJKHtzaG93RHJvcGRvd246IGl9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7c2hvd0Ryb3Bkb3duOiBpfSk7XG4gICAgfVxuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7Y29sb3JTZXRzLCBkaXNhYmxlZCwgaW5wdXRUaGVtZSwgY29sb3JVSX0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgZWRpdGluZyA9IHRoaXMuX2dldEVkaXRpbmcoKTtcbiAgICBjb25zdCBjdXJyZW50RWRpdGluZyA9IGNvbG9yU2V0c1tlZGl0aW5nXSAmJiB0eXBlb2YgY29sb3JTZXRzW2VkaXRpbmddID09PSAnb2JqZWN0JztcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbG9yLXNlbGVjdG9yXCIgcmVmPXt0aGlzLm5vZGV9PlxuICAgICAgICA8SW5wdXRCb3hDb250YWluZXI+XG4gICAgICAgICAge2NvbG9yU2V0cy5tYXAoKGNTZXQsIGkpID0+IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sb3Itc2VsZWN0X19pbnB1dC1ncm91cFwiIGtleT17aX0+XG4gICAgICAgICAgICAgIDxDb2xvclNlbGVjdG9ySW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJjb2xvci1zZWxlY3Rvcl9fc2VsZWN0b3JcIlxuICAgICAgICAgICAgICAgIGFjdGl2ZT17ZWRpdGluZyA9PT0gaX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgaW5wdXRUaGVtZT17aW5wdXRUaGVtZX1cbiAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17ZSA9PiB0aGlzLl9zaG93RHJvcGRvd24oZSwgaSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Y1NldC5pc1JhbmdlID8gKFxuICAgICAgICAgICAgICAgICAgPENvbG9yUGFsZXR0ZSBjb2xvcnM9e2NTZXQuc2VsZWN0ZWRDb2xvci5jb2xvcnN9IC8+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgIDxDb2xvckJsb2NrXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNvbG9yLXNlbGVjdG9yX19zZWxlY3Rvcl9fYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj17Y1NldC5zZWxlY3RlZENvbG9yfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtjU2V0LmxhYmVsID8gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2xvci1zZWxlY3Rvcl9fc2VsZWN0b3JfX2xhYmVsXCI+e2NTZXQubGFiZWx9PC9kaXY+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDwvQ29sb3JTZWxlY3RvcklucHV0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvSW5wdXRCb3hDb250YWluZXI+XG4gICAgICAgIHtjdXJyZW50RWRpdGluZyA/IChcbiAgICAgICAgICA8U3R5bGVkUGFuZWxEcm9wZG93biBjbGFzc05hbWU9XCJjb2xvci1zZWxlY3Rvcl9fZHJvcGRvd25cIj5cbiAgICAgICAgICAgIHtjb2xvclNldHNbZWRpdGluZ10uaXNSYW5nZSA/IChcbiAgICAgICAgICAgICAgPENvbG9yUmFuZ2VTZWxlY3RvclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3JSYW5nZT17Y29sb3JTZXRzW2VkaXRpbmddLnNlbGVjdGVkQ29sb3J9XG4gICAgICAgICAgICAgICAgb25TZWxlY3RDb2xvclJhbmdlPXt0aGlzLl9vblNlbGVjdENvbG9yfVxuICAgICAgICAgICAgICAgIHNldENvbG9yUGFsZXR0ZVVJPXt0aGlzLnByb3BzLnNldENvbG9yVUl9XG4gICAgICAgICAgICAgICAgY29sb3JQYWxldHRlVUk9e2NvbG9yVUl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8U2luZ2xlQ29sb3JQYWxldHRlXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb2xvcj17cmdiVG9IZXgoY29sb3JTZXRzW2VkaXRpbmddLnNlbGVjdGVkQ29sb3IpfVxuICAgICAgICAgICAgICAgIG9uU2VsZWN0Q29sb3I9e3RoaXMuX29uU2VsZWN0Q29sb3J9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvU3R5bGVkUGFuZWxEcm9wZG93bj5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG9uQ2xpY2tPdXRzaWRlKENvbG9yU2VsZWN0b3IpO1xuIl19
226
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY29sb3Itc2VsZWN0b3IuanMiXSwibmFtZXMiOlsiQ29sb3JCbG9jayIsInN0eWxlZCIsImRpdiIsInByb3BzIiwiY29sb3IiLCJzbGljZSIsImpvaW4iLCJDb2xvclNlbGVjdG9ySW5wdXQiLCJpbnB1dFRoZW1lIiwidGhlbWUiLCJzZWNvbmRhcnlJbnB1dCIsImlucHV0IiwiaW5wdXRCb3hIZWlnaHQiLCJpbnB1dFBsYWNlaG9sZGVyQ29sb3IiLCJJbnB1dEJveENvbnRhaW5lciIsIkNvbG9yU2VsZWN0b3JGYWN0b3J5IiwiZGVwcyIsIlNpbmdsZUNvbG9yUGFsZXR0ZUZhY3RvcnkiLCJTaW5nbGVDb2xvclBhbGV0dGUiLCJDb2xvclNlbGVjdG9yIiwic2hvd0Ryb3Bkb3duIiwiZSIsImNvbG9yVUkiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJzaG93U2tldGNoZXIiLCJfY2xvc2VQYW5lbERyb3Bkb3duIiwic3RhdGUiLCJfZ2V0RWRpdGluZyIsInNldENvbG9yVUkiLCJzZXRTdGF0ZSIsInN0b3BQcm9wYWdhdGlvbiIsImVkaXRpbmciLCJjb2xvclNldHMiLCJzZXRDb2xvciIsImkiLCJwcmV2ZW50RGVmYXVsdCIsImRpc2FibGVkIiwiY3VycmVudEVkaXRpbmciLCJub2RlIiwibWFwIiwiY1NldCIsIl9zaG93RHJvcGRvd24iLCJpc1JhbmdlIiwic2VsZWN0ZWRDb2xvciIsImNvbG9ycyIsImxhYmVsIiwiX29uU2VsZWN0Q29sb3IiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJhcnJheU9mIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJhbnkiLCJvYmplY3QiLCJmdW5jIiwiaXNSZXF1aXJlZCIsImJvb2wiLCJzdHJpbmciLCJjdXN0b21QYWxldHRlIiwibnVtYmVyIiwiY29sb3JSYW5nZUNvbmZpZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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LyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtyZ2JUb0hleH0gZnJvbSAndXRpbHMvY29sb3ItdXRpbHMnO1xuaW1wb3J0IENvbG9yUmFuZ2VTZWxlY3RvciBmcm9tICdjb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY29sb3ItcmFuZ2Utc2VsZWN0b3InO1xuaW1wb3J0IENvbG9yUGFsZXR0ZSBmcm9tICdjb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvY29sb3ItcGFsZXR0ZSc7XG5pbXBvcnQge1N0eWxlZFBhbmVsRHJvcGRvd259IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBvbkNsaWNrT3V0c2lkZSBmcm9tICdyZWFjdC1vbmNsaWNrb3V0c2lkZSc7XG5pbXBvcnQgU2luZ2xlQ29sb3JQYWxldHRlRmFjdG9yeSBmcm9tICdjb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvc2luZ2xlLWNvbG9yLXBhbGV0dGUnO1xuXG5leHBvcnQgY29uc3QgQ29sb3JCbG9jayA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAzMnB4O1xuICBoZWlnaHQ6IDE4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDFweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBgcmdiKCR7cHJvcHMuY29sb3Iuc2xpY2UoMCwgMykuam9pbignLCcpfSlgfTtcbmA7XG5cbmV4cG9ydCBjb25zdCBDb2xvclNlbGVjdG9ySW5wdXQgPSBzdHlsZWQuZGl2YFxuICAke3Byb3BzID0+IChwcm9wcy5pbnB1dFRoZW1lID09PSAnc2Vjb25kYXJ5JyA/IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0IDogcHJvcHMudGhlbWUuaW5wdXQpfTtcbiAgaGVpZ2h0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0Qm94SGVpZ2h0fTtcblxuICAuY29sb3Itc2VsZWN0b3JfX3NlbGVjdG9yX19sYWJlbCB7XG4gICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dFBsYWNlaG9sZGVyQ29sb3J9O1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgSW5wdXRCb3hDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgLmNvbG9yLXNlbGVjdF9faW5wdXQtZ3JvdXAge1xuICAgIGZsZXgtZ3JvdzogMTtcbiAgfVxuICAuY29sb3Itc2VsZWN0X19pbnB1dC1ncm91cDpudGgtY2hpbGQoMikge1xuICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICB9XG5gO1xuXG5Db2xvclNlbGVjdG9yRmFjdG9yeS5kZXBzID0gW1NpbmdsZUNvbG9yUGFsZXR0ZUZhY3RvcnldO1xuXG5mdW5jdGlvbiBDb2xvclNlbGVjdG9yRmFjdG9yeShTaW5nbGVDb2xvclBhbGV0dGUpIHtcbiAgY2xhc3MgQ29sb3JTZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgIGNvbG9yU2V0czogUHJvcFR5cGVzLmFycmF5T2YoXG4gICAgICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAgICAgc2VsZWN0ZWRDb2xvcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgICAgICAgICBzZXRDb2xvcjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgICAgICBpc1JhbmdlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIGNvbG9yVUk6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAgIGN1c3RvbVBhbGV0dGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICAgIHNob3dTa2V0Y2hlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmJvb2wsIFByb3BUeXBlcy5udW1iZXJdKSxcbiAgICAgICAgc2hvd0Ryb3Bkb3duOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYm9vbCwgUHJvcFR5cGVzLm51bWJlcl0pLFxuICAgICAgICBjb2xvclJhbmdlQ29uZmlnOiBQcm9wVHlwZXMub2JqZWN0XG4gICAgICB9KSxcbiAgICAgIGlucHV0VGhlbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICBzZXRDb2xvclVJOiBQcm9wVHlwZXMuZnVuY1xuICAgIH07XG5cbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgY29sb3JTZXRzOiBbXVxuICAgIH07XG5cbiAgICBzdGF0ZSA9IHtcbiAgICAgIHNob3dEcm9wZG93bjogZmFsc2VcbiAgICB9O1xuXG4gICAgbm9kZSA9IGNyZWF0ZVJlZigpO1xuXG4gICAgaGFuZGxlQ2xpY2tPdXRzaWRlID0gZSA9PiB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2xvclVJICYmIE51bWJlci5pc0ludGVnZXIodGhpcy5wcm9wcy5jb2xvclVJLnNob3dTa2V0Y2hlcikpIHtcbiAgICAgICAgLy8gaWYgc2tldGNoZXIgaXMgb3BlbiwgbGV0IHNrZXRjaCB0byBjbG9zZSBpdHNlbGYgZmlyc3RcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5fY2xvc2VQYW5lbERyb3Bkb3duKCk7XG4gICAgfTtcblxuICAgIF9nZXRFZGl0aW5nID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY29sb3JVSSA/IHRoaXMucHJvcHMuY29sb3JVSS5zaG93RHJvcGRvd24gOiB0aGlzLnN0YXRlLnNob3dEcm9wZG93bjtcbiAgICB9O1xuXG4gICAgX2Nsb3NlUGFuZWxEcm9wZG93biA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9nZXRFZGl0aW5nKCkgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnByb3BzLnNldENvbG9yVUkpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5zZXRDb2xvclVJKHtzaG93RHJvcGRvd246IGZhbHNlLCBzaG93U2tldGNoZXI6IGZhbHNlfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtzaG93RHJvcGRvd246IGZhbHNlfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9vblNlbGVjdENvbG9yID0gKGNvbG9yLCBlKSA9PiB7XG4gICAgICBlPy5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGNvbnN0IGVkaXRpbmcgPSB0aGlzLl9nZXRFZGl0aW5nKCk7XG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2xvclNldHNbZWRpdGluZ10pIHtcbiAgICAgICAgdGhpcy5wcm9wcy5jb2xvclNldHNbZWRpdGluZ10uc2V0Q29sb3IoY29sb3IpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfc2hvd0Ryb3Bkb3duID0gKGUsIGkpID0+IHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBpZiAodGhpcy5wcm9wcy5zZXRDb2xvclVJKSB7XG4gICAgICAgIHRoaXMucHJvcHMuc2V0Q29sb3JVSSh7c2hvd0Ryb3Bkb3duOiBpfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtzaG93RHJvcGRvd246IGl9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge2NvbG9yU2V0cywgZGlzYWJsZWQsIGlucHV0VGhlbWUsIGNvbG9yVUl9ID0gdGhpcy5wcm9wcztcblxuICAgICAgY29uc3QgZWRpdGluZyA9IHRoaXMuX2dldEVkaXRpbmcoKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRFZGl0aW5nID0gY29sb3JTZXRzW2VkaXRpbmddICYmIHR5cGVvZiBjb2xvclNldHNbZWRpdGluZ10gPT09ICdvYmplY3QnO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbG9yLXNlbGVjdG9yXCIgcmVmPXt0aGlzLm5vZGV9PlxuICAgICAgICAgIDxJbnB1dEJveENvbnRhaW5lcj5cbiAgICAgICAgICAgIHtjb2xvclNldHMubWFwKChjU2V0LCBpKSA9PiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sb3Itc2VsZWN0X19pbnB1dC1ncm91cFwiIGtleT17aX0+XG4gICAgICAgICAgICAgICAgPENvbG9yU2VsZWN0b3JJbnB1dFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiY29sb3Itc2VsZWN0b3JfX3NlbGVjdG9yXCJcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZT17ZWRpdGluZyA9PT0gaX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIGlucHV0VGhlbWU9e2lucHV0VGhlbWV9XG4gICAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17ZSA9PiB0aGlzLl9zaG93RHJvcGRvd24oZSwgaSl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge2NTZXQuaXNSYW5nZSA/IChcbiAgICAgICAgICAgICAgICAgICAgPENvbG9yUGFsZXR0ZSBjb2xvcnM9e2NTZXQuc2VsZWN0ZWRDb2xvci5jb2xvcnN9IC8+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8Q29sb3JCbG9ja1xuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNvbG9yLXNlbGVjdG9yX19zZWxlY3Rvcl9fYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtjU2V0LnNlbGVjdGVkQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAge2NTZXQubGFiZWwgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sb3Itc2VsZWN0b3JfX3NlbGVjdG9yX19sYWJlbFwiPntjU2V0LmxhYmVsfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9Db2xvclNlbGVjdG9ySW5wdXQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9JbnB1dEJveENvbnRhaW5lcj5cbiAgICAgICAgICB7Y3VycmVudEVkaXRpbmcgPyAoXG4gICAgICAgICAgICA8U3R5bGVkUGFuZWxEcm9wZG93biBjbGFzc05hbWU9XCJjb2xvci1zZWxlY3Rvcl9fZHJvcGRvd25cIj5cbiAgICAgICAgICAgICAge2NvbG9yU2V0c1tlZGl0aW5nXS5pc1JhbmdlID8gKFxuICAgICAgICAgICAgICAgIDxDb2xvclJhbmdlU2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3JSYW5nZT17Y29sb3JTZXRzW2VkaXRpbmddLnNlbGVjdGVkQ29sb3J9XG4gICAgICAgICAgICAgICAgICBvblNlbGVjdENvbG9yUmFuZ2U9e3RoaXMuX29uU2VsZWN0Q29sb3J9XG4gICAgICAgICAgICAgICAgICBzZXRDb2xvclBhbGV0dGVVST17dGhpcy5wcm9wcy5zZXRDb2xvclVJfVxuICAgICAgICAgICAgICAgICAgY29sb3JQYWxldHRlVUk9e2NvbG9yVUl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8U2luZ2xlQ29sb3JQYWxldHRlXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZENvbG9yPXtyZ2JUb0hleChjb2xvclNldHNbZWRpdGluZ10uc2VsZWN0ZWRDb2xvcil9XG4gICAgICAgICAgICAgICAgICBvblNlbGVjdENvbG9yPXt0aGlzLl9vblNlbGVjdENvbG9yfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1N0eWxlZFBhbmVsRHJvcGRvd24+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9uQ2xpY2tPdXRzaWRlKENvbG9yU2VsZWN0b3IpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBDb2xvclNlbGVjdG9yRmFjdG9yeTtcbiJdfQ==