@carto/kepler.gl 0.0.43 → 0.0.45-alpha.carto-colors-range.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/common/range-slider.js +6 -2
- package/dist/components/side-panel/layer-panel/color-range-selector.js +237 -188
- package/dist/components/side-panel/layer-panel/color-selector.js +6 -6
- package/dist/components/side-panel/layer-panel/layer-configurator.js +1 -1
- package/dist/components/side-panel/layer-panel/layer-panel.js +5 -2
- package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.js +3 -1
- package/dist/components/side-panel/map-manager.js +6 -6
- package/dist/constants/default-settings.js +2 -2
- package/dist/layers/base-layer.js +9 -3
- package/package.json +1 -1
- package/src/components/common/range-slider.js +5 -1
- package/src/components/side-panel/layer-panel/color-range-selector.js +204 -165
- package/src/components/side-panel/layer-panel/color-selector.js +3 -4
- package/src/components/side-panel/layer-panel/layer-configurator.js +2 -0
- package/src/components/side-panel/layer-panel/layer-panel.js +4 -1
- package/src/components/side-panel/layer-panel/layer-visibility-by-zoom.js +2 -0
- package/src/components/side-panel/map-manager.js +3 -3
- package/src/layers/base-layer.js +4 -2
- package/CHANGELOG.md +0 -711
- package/umd/keplergl.min.js +0 -508
|
@@ -196,6 +196,8 @@ function RangeSliderFactory(RangePlot) {
|
|
|
196
196
|
id: "slider-input-".concat(key),
|
|
197
197
|
key: key,
|
|
198
198
|
value: this.state[key],
|
|
199
|
+
min: this.props.min,
|
|
200
|
+
max: this.props.max,
|
|
199
201
|
onChange: onChange,
|
|
200
202
|
onKeyPress: function onKeyPress(e) {
|
|
201
203
|
if (e.key === 'Enter') {
|
|
@@ -325,7 +327,9 @@ function RangeSliderFactory(RangePlot) {
|
|
|
325
327
|
inputSize: _propTypes["default"].string,
|
|
326
328
|
step: _propTypes["default"].number,
|
|
327
329
|
sliderHandleWidth: _propTypes["default"].number,
|
|
328
|
-
xAxis: _propTypes["default"].elementType
|
|
330
|
+
xAxis: _propTypes["default"].elementType,
|
|
331
|
+
min: _propTypes["default"].number,
|
|
332
|
+
max: _propTypes["default"].number
|
|
329
333
|
});
|
|
330
334
|
(0, _defineProperty2["default"])(RangeSlider, "defaultProps", {
|
|
331
335
|
isEnlarged: false,
|
|
@@ -339,4 +343,4 @@ function RangeSliderFactory(RangePlot) {
|
|
|
339
343
|
(0, _reactLifecyclesCompat.polyfill)(RangeSlider);
|
|
340
344
|
return RangeSlider;
|
|
341
345
|
}
|
|
342
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9yYW5nZS1zbGlkZXIuanMiXSwibmFtZXMiOlsiU2xpZGVySW5wdXQiLCJJbnB1dCIsInByb3BzIiwidGhlbWUiLCJzbGlkZXJJbnB1dFdpZHRoIiwiZmx1c2giLCJzaXplIiwic2xpZGVySW5wdXRGb250U2l6ZSIsInNsaWRlcklucHV0UGFkZGluZyIsIlNsaWRlcldyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJpc1JhbmdlZCIsInNob3dJbnB1dCIsIlJhbmdlSW5wdXRXcmFwcGVyIiwiUmFuZ2VTbGlkZXJGYWN0b3J5IiwiZGVwcyIsIlJhbmdlUGxvdEZhY3RvcnkiLCJSYW5nZVBsb3QiLCJSYW5nZVNsaWRlciIsInZhbHVlMCIsInZhbHVlMSIsInByZXZWYWx1ZTAiLCJwcmV2VmFsdWUxIiwid2lkdGgiLCJlbGVtZW50Iiwic2xpZGVyQ29udGFpbmVyIiwiX3Jlc2l6ZSIsInZhbHVlMFNlbGVjdG9yIiwidmFsdWUxU2VsZWN0b3IiLCJ2YWwiLCJyYW5nZSIsInN0ZXAiLCJvbkNoYW5nZSIsInZhbDEiLCJOdW1iZXIiLCJfcm91bmRWYWxUb1N0ZXAiLCJ2YWwwIiwib2Zmc2V0V2lkdGgiLCJzdGF0ZSIsInNldFN0YXRlIiwia2V5IiwiZSIsInRhcmdldCIsInZhbHVlIiwiRWxlbWVudCIsInNldFJhbmdlIiwiX3NldFJhbmdlVmFsMCIsIl9zZXRSYW5nZVZhbDEiLCJyZWYiLCJpbnB1dFZhbHVlMCIsImlucHV0VmFsdWUxIiwidXBkYXRlIiwiX29uQ2hhbmdlSW5wdXQiLCJiaW5kIiwiY3VycmVudCIsImJsdXIiLCJpbnB1dFNpemUiLCJpbnB1dFRoZW1lIiwiaGlzdG9ncmFtIiwibGluZUNoYXJ0Iiwic2xpZGVySGFuZGxlV2lkdGgiLCJ0aW1lem9uZSIsInRpbWVGb3JtYXQiLCJwbGF5YmFja0NvbnRyb2xXaWR0aCIsInBsb3RXaWR0aCIsIk1hdGgiLCJtYXgiLCJyZW5kZXJQbG90IiwibGVuZ3RoIiwicGFkZGluZyIsInNldFNsaWRlckNvbnRhaW5lciIsIkFycmF5IiwiaXNBcnJheSIsImV2ZXJ5IiwiaXNGaW5pdGUiLCJwbG90VHlwZSIsImlzRW5sYXJnZWQiLCJtYXJrcyIsInBsb3RWYWx1ZSIsImZpbHRlclZhbHVlU2VsZWN0b3IiLCJ4QXhpcyIsImhlaWdodCIsIl9yZW5kZXJJbnB1dCIsImlzTmFOIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwiYXJyYXlPZiIsIm51bWJlciIsImlzUmVxdWlyZWQiLCJmdW5jIiwiYW55IiwiYm9vbCIsInN0cmluZyIsImVsZW1lbnRUeXBlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLFdBQVcsR0FBRyxrQ0FBT0Msd0JBQVAsQ0FBSCxtTkFDTixVQUFBQyxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlDLGdCQUFoQjtBQUFBLENBREMsRUFFQSxVQUFBRixLQUFLO0FBQUEsU0FBS0EsS0FBSyxDQUFDRyxLQUFOLEdBQWMsQ0FBZCxHQUFrQkgsS0FBSyxDQUFDSSxJQUFOLEtBQWUsTUFBZixHQUF3QixFQUF4QixHQUE2QixFQUFwRDtBQUFBLENBRkwsRUFHRixVQUFBSixLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlJLG1CQUFoQjtBQUFBLENBSEgsRUFJSixVQUFBTCxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlLLGtCQUFoQjtBQUFBLENBSkQsQ0FBakI7O0FBT0EsSUFBTUMsYUFBYSxHQUFHQyw2QkFBT0MsR0FBViwwSkFHRixVQUFBVCxLQUFLO0FBQUEsU0FBSyxDQUFDQSxLQUFLLENBQUNVLFFBQVAsSUFBbUJWLEtBQUssQ0FBQ1csU0FBekIsR0FBcUMsUUFBckMsR0FBZ0QsWUFBckQ7QUFBQSxDQUhILENBQW5COztB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QUFFeUIsc0JBQVVFLE1BWlo7QUFhakJQLElBQUFBLEtBQUssRUFBRUssc0JBQVVRO0FBYkEsR0FGK0I7QUFBQSxtQ0FDOUMzRSxXQUQ4QyxrQkFrQjVCO0FBQ3BCMEQsSUFBQUEsVUFBVSxFQUFFLEtBRFE7QUFFcEJqRSxJQUFBQSxRQUFRLEVBQUUsSUFGVTtBQUdwQkMsSUFBQUEsU0FBUyxFQUFFLElBSFM7QUFJcEJnRCxJQUFBQSxpQkFBaUIsRUFBRSxFQUpDO0FBS3BCSCxJQUFBQSxVQUFVLEVBQUUsRUFMUTtBQU1wQkQsSUFBQUEsU0FBUyxFQUFFLE9BTlM7QUFPcEJ4QixJQUFBQSxRQUFRLEVBQUUsb0JBQU0sQ0FBRTtBQVBFLEdBbEI0QjtBQThPcEQsdUNBQVNkLFdBQVQ7QUFFQSxTQUFPQSxXQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtwb2x5ZmlsbH0gZnJvbSAncmVhY3QtbGlmZWN5Y2xlcy1jb21wYXQnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IFJhbmdlUGxvdEZhY3RvcnkgZnJvbSAnLi9yYW5nZS1wbG90JztcbmltcG9ydCBTbGlkZXIgZnJvbSAnY29tcG9uZW50cy9jb21tb24vc2xpZGVyL3NsaWRlcic7XG5pbXBvcnQge0lucHV0fSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7cm91bmRWYWxUb1N0ZXAsIGNsYW1wfSBmcm9tICd1dGlscy9kYXRhLXV0aWxzJztcbmltcG9ydCB7b2JzZXJ2ZURpbWVuc2lvbnMsIHVub2JzZXJ2ZURpbWVuc2lvbnN9IGZyb20gJy4uLy4uL3V0aWxzL29ic2VydmUtZGltZW5zaW9ucyc7XG5cbmNvbnN0IFNsaWRlcklucHV0ID0gc3R5bGVkKElucHV0KWBcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2xpZGVySW5wdXRXaWR0aH1weDtcbiAgbWFyZ2luLWxlZnQ6ICR7cHJvcHMgPT4gKHByb3BzLmZsdXNoID8gMCA6IHByb3BzLnNpemUgPT09ICd0aW55JyA/IDEyIDogMTgpfXB4O1xuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2xpZGVySW5wdXRGb250U2l6ZX07IC8vIDEwcHggLy8gMTJweDtcbiAgcGFkZGluZzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zbGlkZXJJbnB1dFBhZGRpbmd9OyAvLyA0cHggNnB4OyAvLyA2cHggMTJweDtcbmA7XG5cbmNvbnN0IFNsaWRlcldyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGFsaWduLWl0ZW1zOiAke3Byb3BzID0+ICghcHJvcHMuaXNSYW5nZWQgJiYgcHJvcHMuc2hvd0lucHV0ID8gJ2NlbnRlcicgOiAnZmxleC1zdGFydCcpfTtcbmA7XG5cbmNvbnN0IFJhbmdlSW5wdXRXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLXRvcDogMTJweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuYDtcblxuUmFuZ2VTbGlkZXJGYWN0b3J5LmRlcHMgPSBbUmFuZ2VQbG90RmFjdG9yeV07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJhbmdlU2xpZGVyRmFjdG9yeShSYW5nZVBsb3QpIHtcbiAgY2xhc3MgUmFuZ2VTbGlkZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgICByYW5nZTogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm51bWJlciksXG4gICAgICB2YWx1ZTA6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICAgIHZhbHVlMTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAgICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICBoaXN0b2dyYW06IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLFxuICAgICAgaXNSYW5nZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgICAgaXNFbmxhcmdlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICBzaG93SW5wdXQ6IFByb3BUeXBlcy5ib29sLFxuICAgICAgaW5wdXRUaGVtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIGlucHV0U2l6ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIHN0ZXA6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBzbGlkZXJIYW5kbGVXaWR0aDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIHhBeGlzOiBQcm9wVHlwZXMuZWxlbWVudFR5cGVcbiAgICB9O1xuXG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIGlzRW5sYXJnZWQ6IGZhbHNlLFxuICAgICAgaXNSYW5nZWQ6IHRydWUsXG4gICAgICBzaG93SW5wdXQ6IHRydWUsXG4gICAgICBzbGlkZXJIYW5kbGVXaWR0aDogMTIsXG4gICAgICBpbnB1dFRoZW1lOiAnJyxcbiAgICAgIGlucHV0U2l6ZTogJ3NtYWxsJyxcbiAgICAgIG9uQ2hhbmdlOiAoKSA9PiB7fVxuICAgIH07XG5cbiAgICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKHByb3BzLCBzdGF0ZSkge1xuICAgICAgbGV0IHVwZGF0ZSA9IG51bGw7XG4gICAgICBjb25zdCB7dmFsdWUwLCB2YWx1ZTF9ID0gcHJvcHM7XG4gICAgICBpZiAocHJvcHMudmFsdWUwICE9PSBzdGF0ZS5wcmV2VmFsdWUwICYmICFpc05hTih2YWx1ZTApKSB7XG4gICAgICAgIHVwZGF0ZSA9IHsuLi4odXBkYXRlIHx8IHt9KSwgdmFsdWUwLCBwcmV2VmFsdWUwOiB2YWx1ZTB9O1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLnZhbHVlMSAhPT0gc3RhdGUucHJldlZhbHVlMSAmJiAhaXNOYU4odmFsdWUxKSkge1xuICAgICAgICB1cGRhdGUgPSB7Li4uKHVwZGF0ZSB8fCB7fSksIHZhbHVlMSwgcHJldlZhbHVlMTogdmFsdWUxfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1cGRhdGU7XG4gICAgfVxuXG4gICAgc3RhdGUgPSB7XG4gICAgICB2YWx1ZTA6IDAsXG4gICAgICB2YWx1ZTE6IDEsXG4gICAgICBwcmV2VmFsdWUwOiAwLFxuICAgICAgcHJldlZhbHVlMTogMSxcbiAgICAgIHdpZHRoOiAyODhcbiAgICB9O1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICBpZiAodGhpcy5zbGlkZXJDb250YWluZXIgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICAgIG9ic2VydmVEaW1lbnNpb25zKHRoaXMuc2xpZGVyQ29udGFpbmVyLCB0aGlzLl9yZXNpemUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICAgIHRoaXMuX3Jlc2l6ZSgpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgaWYgKHRoaXMuc2xpZGVyQ29udGFpbmVyIGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgICB1bm9ic2VydmVEaW1lbnNpb25zKHRoaXMuc2xpZGVyQ29udGFpbmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzbGlkZXJDb250YWluZXIgPSBudWxsO1xuICAgIHNldFNsaWRlckNvbnRhaW5lciA9IGVsZW1lbnQgPT4ge1xuICAgICAgdGhpcy5zbGlkZXJDb250YWluZXIgPSBlbGVtZW50O1xuICAgICAgdGhpcy5fcmVzaXplKCk7XG4gICAgfTtcbiAgICBpbnB1dFZhbHVlMCA9IGNyZWF0ZVJlZigpO1xuICAgIGlucHV0VmFsdWUxID0gY3JlYXRlUmVmKCk7XG4gICAgdmFsdWUwU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy52YWx1ZTA7XG4gICAgdmFsdWUxU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy52YWx1ZTE7XG4gICAgZmlsdGVyVmFsdWVTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy52YWx1ZTBTZWxlY3RvcixcbiAgICAgIHRoaXMudmFsdWUxU2VsZWN0b3IsXG4gICAgICAodmFsdWUwLCB2YWx1ZTEpID0+IFt2YWx1ZTAsIHZhbHVlMV1cbiAgICApO1xuXG4gICAgX3JvdW5kVmFsVG9TdGVwID0gdmFsID0+IHtcbiAgICAgIGNvbnN0IHtyYW5nZSwgc3RlcH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICByZXR1cm4gcm91bmRWYWxUb1N0ZXAocmFuZ2VbMF0sIHN0ZXAsIHZhbCk7XG4gICAgfTtcblxuICAgIF9zZXRSYW5nZVZhbDEgPSB2YWwgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlMCwgcmFuZ2UsIG9uQ2hhbmdlfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCB2YWwxID0gTnVtYmVyKHZhbCk7XG4gICAgICBvbkNoYW5nZShbdmFsdWUwLCBjbGFtcChbdmFsdWUwLCByYW5nZVsxXV0sIHRoaXMuX3JvdW5kVmFsVG9TdGVwKHZhbDEpKV0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcblxuICAgIF9zZXRSYW5nZVZhbDAgPSB2YWwgPT4ge1xuICAgICAgY29uc3Qge3ZhbHVlMSwgcmFuZ2UsIG9uQ2hhbmdlfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCB2YWwwID0gTnVtYmVyKHZhbCk7XG4gICAgICBvbkNoYW5nZShbY2xhbXAoW3JhbmdlWzBdLCB2YWx1ZTFdLCB0aGlzLl9yb3VuZFZhbFRvU3RlcCh2YWwwKSksIHZhbHVlMV0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcblxuICAgIF9yZXNpemUgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zbGlkZXJDb250YWluZXIpIHtcbiAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLnNsaWRlckNvbnRhaW5lci5vZmZzZXRXaWR0aDtcbiAgICAgICAgaWYgKHdpZHRoICE9PSB0aGlzLnN0YXRlLndpZHRoKSB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7d2lkdGh9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBfb25DaGFuZ2VJbnB1dCA9IChrZXksIGUpID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1trZXldOiBlLnRhcmdldC52YWx1ZX0pO1xuICAgIH07XG5cbiAgICBfcmVuZGVySW5wdXQoa2V5KSB7XG4gICAgICBjb25zdCBzZXRSYW5nZSA9IGtleSA9PT0gJ3ZhbHVlMCcgPyB0aGlzLl9zZXRSYW5nZVZhbDAgOiB0aGlzLl9zZXRSYW5nZVZhbDE7XG4gICAgICBjb25zdCByZWYgPSBrZXkgPT09ICd2YWx1ZTAnID8gdGhpcy5pbnB1dFZhbHVlMCA6IHRoaXMuaW5wdXRWYWx1ZTE7XG4gICAgICBjb25zdCB1cGRhdGUgPSBlID0+IHtcbiAgICAgICAgaWYgKCFzZXRSYW5nZShlLnRhcmdldC52YWx1ZSkpIHtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtba2V5XTogdGhpcy5zdGF0ZVtrZXldfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uQ2hhbmdlID0gdGhpcy5fb25DaGFuZ2VJbnB1dC5iaW5kKHRoaXMsIGtleSk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTbGlkZXJJbnB1dFxuICAgICAgICAgIGNsYXNzTmFtZT1cImtnLXJhbmdlLXNsaWRlcl9faW5wdXRcIlxuICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgIHJlZj17cmVmfVxuICAgICAgICAgIGlkPXtgc2xpZGVyLWlucHV0LSR7a2V5fWB9XG4gICAgICAgICAga2V5PXtrZXl9XG4gICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGVba2V5XX1cbiAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgICAgb25LZXlQcmVzcz17ZSA9PiB7XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgdXBkYXRlKGUpO1xuICAgICAgICAgICAgICByZWYuY3VycmVudC5ibHVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkJsdXI9e3VwZGF0ZX1cbiAgICAgICAgICBmbHVzaD17a2V5ID09PSAndmFsdWUwJ31cbiAgICAgICAgICBzaXplPXt0aGlzLnByb3BzLmlucHV0U2l6ZX1cbiAgICAgICAgICBzZWNvbmRhcnk9e3RoaXMucHJvcHMuaW5wdXRUaGVtZSA9PT0gJ3NlY29uZGFyeSd9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBpc1JhbmdlZCxcbiAgICAgICAgc2hvd0lucHV0LFxuICAgICAgICBoaXN0b2dyYW0sXG4gICAgICAgIGxpbmVDaGFydCxcbiAgICAgICAgcmFuZ2UsXG4gICAgICAgIG9uQ2hhbmdlLFxuICAgICAgICBzbGlkZXJIYW5kbGVXaWR0aCxcbiAgICAgICAgc3RlcCxcbiAgICAgICAgdGltZXpvbmUsXG4gICAgICAgIHRpbWVGb3JtYXQsXG4gICAgICAgIHBsYXliYWNrQ29udHJvbFdpZHRoXG4gICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgY29uc3Qge3dpZHRofSA9IHRoaXMuc3RhdGU7XG4gICAgICBjb25zdCBwbG90V2lkdGggPSBNYXRoLm1heCh3aWR0aCAtIHNsaWRlckhhbmRsZVdpZHRoLCAwKTtcbiAgICAgIGNvbnN0IHJlbmRlclBsb3QgPSAoaGlzdG9ncmFtICYmIGhpc3RvZ3JhbS5sZW5ndGgpIHx8IGxpbmVDaGFydDtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJrZy1yYW5nZS1zbGlkZXJcIlxuICAgICAgICAgIHN0eWxlPXt7d2lkdGg6ICcxMDAlJywgcGFkZGluZzogYDAgJHtzbGlkZXJIYW5kbGVXaWR0aCAvIDJ9cHhgfX1cbiAgICAgICAgICByZWY9e3RoaXMuc2V0U2xpZGVyQ29udGFpbmVyfVxuICAgICAgICA+XG4gICAgICAgICAge0FycmF5LmlzQXJyYXkocmFuZ2UpICYmIHJhbmdlLmV2ZXJ5KE51bWJlci5pc0Zpbml0ZSkgJiYgKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAge3JlbmRlclBsb3QgPyAoXG4gICAgICAgICAgICAgICAgPFJhbmdlUGxvdFxuICAgICAgICAgICAgICAgICAgaGlzdG9ncmFtPXtoaXN0b2dyYW19XG4gICAgICAgICAgICAgICAgICBsaW5lQ2hhcnQ9e3RoaXMucHJvcHMubGluZUNoYXJ0fVxuICAgICAgICAgICAgICAgICAgcGxvdFR5cGU9e3RoaXMucHJvcHMucGxvdFR5cGV9XG4gICAgICAgICAgICAgICAgICBpc0VubGFyZ2VkPXt0aGlzLnByb3BzLmlzRW5sYXJnZWR9XG4gICAgICAgICAgICAgICAgICBvbkJydXNoPXsodmFsMCwgdmFsMSkgPT4gb25DaGFuZ2UoW3ZhbDAsIHZhbDFdKX1cbiAgICAgICAgICAgICAgICAgIG1hcmtzPXt0aGlzLnByb3BzLm1hcmtzfVxuICAgICAgICAgICAgICAgICAgcmFuZ2U9e3JhbmdlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMucHJvcHMucGxvdFZhbHVlIHx8IHRoaXMuZmlsdGVyVmFsdWVTZWxlY3Rvcih0aGlzLnByb3BzKX1cbiAgICAgICAgICAgICAgICAgIHdpZHRoPXtwbG90V2lkdGh9XG4gICAgICAgICAgICAgICAgICBpc1JhbmdlZD17aXNSYW5nZWR9XG4gICAgICAgICAgICAgICAgICBzdGVwPXtzdGVwfVxuICAgICAgICAgICAgICAgICAgdGltZXpvbmU9e3RpbWV6b25lfVxuICAgICAgICAgICAgICAgICAgdGltZUZvcm1hdD17dGltZUZvcm1hdH1cbiAgICAgICAgICAgICAgICAgIHBsYXliYWNrQ29udHJvbFdpZHRoPXtwbGF5YmFja0NvbnRyb2xXaWR0aH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFNsaWRlcldyYXBwZXJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJrZy1yYW5nZS1zbGlkZXJfX3NsaWRlclwiXG4gICAgICAgICAgICAgICAgaXNSYW5nZWQ9e2lzUmFuZ2VkfVxuICAgICAgICAgICAgICAgIHNob3dJbnB1dD17c2hvd0lucHV0fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RoaXMucHJvcHMueEF4aXMgPyAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7aGVpZ2h0OiAnMzBweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgPHRoaXMucHJvcHMueEF4aXNcbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aD17cGxvdFdpZHRofVxuICAgICAgICAgICAgICAgICAgICAgIHRpbWV6b25lPXt0aW1lem9uZX1cbiAgICAgICAgICAgICAgICAgICAgICBkb21haW49e3JhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgIGlzRW5sYXJnZWQ9e3RoaXMucHJvcHMuaXNFbmxhcmdlZH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDxTbGlkZXJcbiAgICAgICAgICAgICAgICAgIG1hcmtzPXt0aGlzLnByb3BzLm1hcmtzfVxuICAgICAgICAgICAgICAgICAgc2hvd1ZhbHVlcz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBpc1JhbmdlZD17aXNSYW5nZWR9XG4gICAgICAgICAgICAgICAgICBtaW5WYWx1ZT17cmFuZ2VbMF19XG4gICAgICAgICAgICAgICAgICBtYXhWYWx1ZT17cmFuZ2VbMV19XG4gICAgICAgICAgICAgICAgICB2YWx1ZTA9e3RoaXMucHJvcHMudmFsdWUwfVxuICAgICAgICAgICAgICAgICAgdmFsdWUxPXt0aGlzLnByb3BzLnZhbHVlMX1cbiAgICAgICAgICAgICAgICAgIHN0ZXA9e3N0ZXB9XG4gICAgICAgICAgICAgICAgICBoYW5kbGVXaWR0aD17c2xpZGVySGFuZGxlV2lkdGh9XG4gICAgICAgICAgICAgICAgICBvblNsaWRlcjBDaGFuZ2U9e3RoaXMuX3NldFJhbmdlVmFsMH1cbiAgICAgICAgICAgICAgICAgIG9uU2xpZGVyMUNoYW5nZT17dGhpcy5fc2V0UmFuZ2VWYWwxfVxuICAgICAgICAgICAgICAgICAgb25TbGlkZXJCYXJDaGFuZ2U9eyh2YWwwLCB2YWwxKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlKFt2YWwwLCB2YWwxXSk7XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgZW5hYmxlQmFyRHJhZ1xuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgeyFpc1JhbmdlZCAmJiBzaG93SW5wdXQgPyB0aGlzLl9yZW5kZXJJbnB1dCgndmFsdWUxJykgOiBudWxsfVxuICAgICAgICAgICAgICA8L1NsaWRlcldyYXBwZXI+XG4gICAgICAgICAgICAgIHtpc1JhbmdlZCAmJiBzaG93SW5wdXQgPyAoXG4gICAgICAgICAgICAgICAgPFJhbmdlSW5wdXRXcmFwcGVyIGNsYXNzTmFtZT1cInJhbmdlLXNsaWRlcl9faW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgIHt0aGlzLl9yZW5kZXJJbnB1dCgndmFsdWUwJyl9XG4gICAgICAgICAgICAgICAgICB7dGhpcy5fcmVuZGVySW5wdXQoJ3ZhbHVlMScpfVxuICAgICAgICAgICAgICAgIDwvUmFuZ2VJbnB1dFdyYXBwZXI+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHBvbHlmaWxsKFJhbmdlU2xpZGVyKTtcblxuICByZXR1cm4gUmFuZ2VTbGlkZXI7XG59XG4iXX0=
|
|
346
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9yYW5nZS1zbGlkZXIuanMiXSwibmFtZXMiOlsiU2xpZGVySW5wdXQiLCJJbnB1dCIsInByb3BzIiwidGhlbWUiLCJzbGlkZXJJbnB1dFdpZHRoIiwiZmx1c2giLCJzaXplIiwic2xpZGVySW5wdXRGb250U2l6ZSIsInNsaWRlcklucHV0UGFkZGluZyIsIlNsaWRlcldyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJpc1JhbmdlZCIsInNob3dJbnB1dCIsIlJhbmdlSW5wdXRXcmFwcGVyIiwiUmFuZ2VTbGlkZXJGYWN0b3J5IiwiZGVwcyIsIlJhbmdlUGxvdEZhY3RvcnkiLCJSYW5nZVBsb3QiLCJSYW5nZVNsaWRlciIsInZhbHVlMCIsInZhbHVlMSIsInByZXZWYWx1ZTAiLCJwcmV2VmFsdWUxIiwid2lkdGgiLCJlbGVtZW50Iiwic2xpZGVyQ29udGFpbmVyIiwiX3Jlc2l6ZSIsInZhbHVlMFNlbGVjdG9yIiwidmFsdWUxU2VsZWN0b3IiLCJ2YWwiLCJyYW5nZSIsInN0ZXAiLCJvbkNoYW5nZSIsInZhbDEiLCJOdW1iZXIiLCJfcm91bmRWYWxUb1N0ZXAiLCJ2YWwwIiwib2Zmc2V0V2lkdGgiLCJzdGF0ZSIsInNldFN0YXRlIiwia2V5IiwiZSIsInRhcmdldCIsInZhbHVlIiwiRWxlbWVudCIsInNldFJhbmdlIiwiX3NldFJhbmdlVmFsMCIsIl9zZXRSYW5nZVZhbDEiLCJyZWYiLCJpbnB1dFZhbHVlMCIsImlucHV0VmFsdWUxIiwidXBkYXRlIiwiX29uQ2hhbmdlSW5wdXQiLCJiaW5kIiwibWluIiwibWF4IiwiY3VycmVudCIsImJsdXIiLCJpbnB1dFNpemUiLCJpbnB1dFRoZW1lIiwiaGlzdG9ncmFtIiwibGluZUNoYXJ0Iiwic2xpZGVySGFuZGxlV2lkdGgiLCJ0aW1lem9uZSIsInRpbWVGb3JtYXQiLCJwbGF5YmFja0NvbnRyb2xXaWR0aCIsInBsb3RXaWR0aCIsIk1hdGgiLCJyZW5kZXJQbG90IiwibGVuZ3RoIiwicGFkZGluZyIsInNldFNsaWRlckNvbnRhaW5lciIsIkFycmF5IiwiaXNBcnJheSIsImV2ZXJ5IiwiaXNGaW5pdGUiLCJwbG90VHlwZSIsImlzRW5sYXJnZWQiLCJtYXJrcyIsInBsb3RWYWx1ZSIsImZpbHRlclZhbHVlU2VsZWN0b3IiLCJ4QXhpcyIsImhlaWdodCIsIl9yZW5kZXJJbnB1dCIsImlzTmFOIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwiYXJyYXlPZiIsIm51bWJlciIsImlzUmVxdWlyZWQiLCJmdW5jIiwiYW55IiwiYm9vbCIsInN0cmluZyIsImVsZW1lbnRUeXBlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLFdBQVcsR0FBRyxrQ0FBT0Msd0JBQVAsQ0FBSCxtTkFDTixVQUFBQyxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlDLGdCQUFoQjtBQUFBLENBREMsRUFFQSxVQUFBRixLQUFLO0FBQUEsU0FBS0EsS0FBSyxDQUFDRyxLQUFOLEdBQWMsQ0FBZCxHQUFrQkgsS0FBSyxDQUFDSSxJQUFOLEtBQWUsTUFBZixHQUF3QixFQUF4QixHQUE2QixFQUFwRDtBQUFBLENBRkwsRUFHRixVQUFBSixLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlJLG1CQUFoQjtBQUFBLENBSEgsRUFJSixVQUFBTCxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlLLGtCQUFoQjtBQUFBLENBSkQsQ0FBakI7O0FBT0EsSUFBTUMsYUFBYSxHQUFHQyw2QkFBT0MsR0FBViwwSkFHRixVQUFBVCxLQUFLO0FBQUEsU0FBSyxDQUFDQSxLQUFLLENBQUNVLFFBQVAsSUFBbUJWLEtBQUssQ0FBQ1csU0FBekIsR0FBcUMsUUFBckMsR0FBZ0QsWUFBckQ7QUFBQSxDQUhILENB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QVRMO0FBVWpCbkMsSUFBQUEsU0FBUyxFQUFFNEIsc0JBQVVPLE1BVko7QUFXakI5RCxJQUFBQSxJQUFJLEVBQUV1RCxzQkFBVUUsTUFYQztBQVlqQjFCLElBQUFBLGlCQUFpQixFQUFFd0Isc0JBQVVFLE1BWlo7QUFhakJQLElBQUFBLEtBQUssRUFBRUssc0JBQVVRLFdBYkE7QUFjakJ4QyxJQUFBQSxHQUFHLEVBQUVnQyxzQkFBVUUsTUFkRTtBQWVqQmpDLElBQUFBLEdBQUcsRUFBRStCLHNCQUFVRTtBQWZFLEdBRitCO0FBQUEsbUNBQzlDdEUsV0FEOEMsa0JBb0I1QjtBQUNwQjJELElBQUFBLFVBQVUsRUFBRSxLQURRO0FBRXBCbEUsSUFBQUEsUUFBUSxFQUFFLElBRlU7QUFHcEJDLElBQUFBLFNBQVMsRUFBRSxJQUhTO0FBSXBCa0QsSUFBQUEsaUJBQWlCLEVBQUUsRUFKQztBQUtwQkgsSUFBQUEsVUFBVSxFQUFFLEVBTFE7QUFNcEJELElBQUFBLFNBQVMsRUFBRSxPQU5TO0FBT3BCMUIsSUFBQUEsUUFBUSxFQUFFLG9CQUFNLENBQUU7QUFQRSxHQXBCNEI7QUFrUHBELHVDQUFTZCxXQUFUO0FBRUEsU0FBT0EsV0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7cG9seWZpbGx9IGZyb20gJ3JlYWN0LWxpZmVjeWNsZXMtY29tcGF0JztcbmltcG9ydCB7Y3JlYXRlU2VsZWN0b3J9IGZyb20gJ3Jlc2VsZWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBSYW5nZVBsb3RGYWN0b3J5IGZyb20gJy4vcmFuZ2UtcGxvdCc7XG5pbXBvcnQgU2xpZGVyIGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3NsaWRlci9zbGlkZXInO1xuaW1wb3J0IHtJbnB1dH0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge3JvdW5kVmFsVG9TdGVwLCBjbGFtcH0gZnJvbSAndXRpbHMvZGF0YS11dGlscyc7XG5pbXBvcnQge29ic2VydmVEaW1lbnNpb25zLCB1bm9ic2VydmVEaW1lbnNpb25zfSBmcm9tICcuLi8uLi91dGlscy9vYnNlcnZlLWRpbWVuc2lvbnMnO1xuXG5jb25zdCBTbGlkZXJJbnB1dCA9IHN0eWxlZChJbnB1dClgXG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNsaWRlcklucHV0V2lkdGh9cHg7XG4gIG1hcmdpbi1sZWZ0OiAke3Byb3BzID0+IChwcm9wcy5mbHVzaCA/IDAgOiBwcm9wcy5zaXplID09PSAndGlueScgPyAxMiA6IDE4KX1weDtcbiAgZm9udC1zaXplOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNsaWRlcklucHV0Rm9udFNpemV9OyAvLyAxMHB4IC8vIDEycHg7XG4gIHBhZGRpbmc6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2xpZGVySW5wdXRQYWRkaW5nfTsgLy8gNHB4IDZweDsgLy8gNnB4IDEycHg7XG5gO1xuXG5jb25zdCBTbGlkZXJXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBhbGlnbi1pdGVtczogJHtwcm9wcyA9PiAoIXByb3BzLmlzUmFuZ2VkICYmIHByb3BzLnNob3dJbnB1dCA/ICdjZW50ZXInIDogJ2ZsZXgtc3RhcnQnKX07XG5gO1xuXG5jb25zdCBSYW5nZUlucHV0V3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi10b3A6IDEycHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbmA7XG5cblJhbmdlU2xpZGVyRmFjdG9yeS5kZXBzID0gW1JhbmdlUGxvdEZhY3RvcnldO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBSYW5nZVNsaWRlckZhY3RvcnkoUmFuZ2VQbG90KSB7XG4gIGNsYXNzIFJhbmdlU2xpZGVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgcmFuZ2U6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5udW1iZXIpLFxuICAgICAgdmFsdWUwOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgICB2YWx1ZTE6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICAgIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgaGlzdG9ncmFtOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KSxcbiAgICAgIGlzUmFuZ2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgIGlzRW5sYXJnZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgICAgc2hvd0lucHV0OiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgIGlucHV0VGhlbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBpbnB1dFNpemU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBzdGVwOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgc2xpZGVySGFuZGxlV2lkdGg6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICB4QXhpczogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgICAgbWluOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgbWF4OiBQcm9wVHlwZXMubnVtYmVyXG4gICAgfTtcblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICBpc0VubGFyZ2VkOiBmYWxzZSxcbiAgICAgIGlzUmFuZ2VkOiB0cnVlLFxuICAgICAgc2hvd0lucHV0OiB0cnVlLFxuICAgICAgc2xpZGVySGFuZGxlV2lkdGg6IDEyLFxuICAgICAgaW5wdXRUaGVtZTogJycsXG4gICAgICBpbnB1dFNpemU6ICdzbWFsbCcsXG4gICAgICBvbkNoYW5nZTogKCkgPT4ge31cbiAgICB9O1xuXG4gICAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgc3RhdGUpIHtcbiAgICAgIGxldCB1cGRhdGUgPSBudWxsO1xuICAgICAgY29uc3Qge3ZhbHVlMCwgdmFsdWUxfSA9IHByb3BzO1xuICAgICAgaWYgKHByb3BzLnZhbHVlMCAhPT0gc3RhdGUucHJldlZhbHVlMCAmJiAhaXNOYU4odmFsdWUwKSkge1xuICAgICAgICB1cGRhdGUgPSB7Li4uKHVwZGF0ZSB8fCB7fSksIHZhbHVlMCwgcHJldlZhbHVlMDogdmFsdWUwfTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy52YWx1ZTEgIT09IHN0YXRlLnByZXZWYWx1ZTEgJiYgIWlzTmFOKHZhbHVlMSkpIHtcbiAgICAgICAgdXBkYXRlID0gey4uLih1cGRhdGUgfHwge30pLCB2YWx1ZTEsIHByZXZWYWx1ZTE6IHZhbHVlMX07XG4gICAgICB9XG4gICAgICByZXR1cm4gdXBkYXRlO1xuICAgIH1cblxuICAgIHN0YXRlID0ge1xuICAgICAgdmFsdWUwOiAwLFxuICAgICAgdmFsdWUxOiAxLFxuICAgICAgcHJldlZhbHVlMDogMCxcbiAgICAgIHByZXZWYWx1ZTE6IDEsXG4gICAgICB3aWR0aDogMjg4XG4gICAgfTtcblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgaWYgKHRoaXMuc2xpZGVyQ29udGFpbmVyIGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgICBvYnNlcnZlRGltZW5zaW9ucyh0aGlzLnNsaWRlckNvbnRhaW5lciwgdGhpcy5fcmVzaXplKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICB0aGlzLl9yZXNpemUoKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLnNsaWRlckNvbnRhaW5lciBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgICAgdW5vYnNlcnZlRGltZW5zaW9ucyh0aGlzLnNsaWRlckNvbnRhaW5lcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2xpZGVyQ29udGFpbmVyID0gbnVsbDtcbiAgICBzZXRTbGlkZXJDb250YWluZXIgPSBlbGVtZW50ID0+IHtcbiAgICAgIHRoaXMuc2xpZGVyQ29udGFpbmVyID0gZWxlbWVudDtcbiAgICAgIHRoaXMuX3Jlc2l6ZSgpO1xuICAgIH07XG4gICAgaW5wdXRWYWx1ZTAgPSBjcmVhdGVSZWYoKTtcbiAgICBpbnB1dFZhbHVlMSA9IGNyZWF0ZVJlZigpO1xuICAgIHZhbHVlMFNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudmFsdWUwO1xuICAgIHZhbHVlMVNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMudmFsdWUxO1xuICAgIGZpbHRlclZhbHVlU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMudmFsdWUwU2VsZWN0b3IsXG4gICAgICB0aGlzLnZhbHVlMVNlbGVjdG9yLFxuICAgICAgKHZhbHVlMCwgdmFsdWUxKSA9PiBbdmFsdWUwLCB2YWx1ZTFdXG4gICAgKTtcblxuICAgIF9yb3VuZFZhbFRvU3RlcCA9IHZhbCA9PiB7XG4gICAgICBjb25zdCB7cmFuZ2UsIHN0ZXB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgcmV0dXJuIHJvdW5kVmFsVG9TdGVwKHJhbmdlWzBdLCBzdGVwLCB2YWwpO1xuICAgIH07XG5cbiAgICBfc2V0UmFuZ2VWYWwxID0gdmFsID0+IHtcbiAgICAgIGNvbnN0IHt2YWx1ZTAsIHJhbmdlLCBvbkNoYW5nZX0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgdmFsMSA9IE51bWJlcih2YWwpO1xuICAgICAgb25DaGFuZ2UoW3ZhbHVlMCwgY2xhbXAoW3ZhbHVlMCwgcmFuZ2VbMV1dLCB0aGlzLl9yb3VuZFZhbFRvU3RlcCh2YWwxKSldKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cbiAgICBfc2V0UmFuZ2VWYWwwID0gdmFsID0+IHtcbiAgICAgIGNvbnN0IHt2YWx1ZTEsIHJhbmdlLCBvbkNoYW5nZX0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgdmFsMCA9IE51bWJlcih2YWwpO1xuICAgICAgb25DaGFuZ2UoW2NsYW1wKFtyYW5nZVswXSwgdmFsdWUxXSwgdGhpcy5fcm91bmRWYWxUb1N0ZXAodmFsMCkpLCB2YWx1ZTFdKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cbiAgICBfcmVzaXplID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2xpZGVyQ29udGFpbmVyKSB7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5zbGlkZXJDb250YWluZXIub2Zmc2V0V2lkdGg7XG4gICAgICAgIGlmICh3aWR0aCAhPT0gdGhpcy5zdGF0ZS53aWR0aCkge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe3dpZHRofSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX29uQ2hhbmdlSW5wdXQgPSAoa2V5LCBlKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtba2V5XTogZS50YXJnZXQudmFsdWV9KTtcbiAgICB9O1xuXG4gICAgX3JlbmRlcklucHV0KGtleSkge1xuICAgICAgY29uc3Qgc2V0UmFuZ2UgPSBrZXkgPT09ICd2YWx1ZTAnID8gdGhpcy5fc2V0UmFuZ2VWYWwwIDogdGhpcy5fc2V0UmFuZ2VWYWwxO1xuICAgICAgY29uc3QgcmVmID0ga2V5ID09PSAndmFsdWUwJyA/IHRoaXMuaW5wdXRWYWx1ZTAgOiB0aGlzLmlucHV0VmFsdWUxO1xuICAgICAgY29uc3QgdXBkYXRlID0gZSA9PiB7XG4gICAgICAgIGlmICghc2V0UmFuZ2UoZS50YXJnZXQudmFsdWUpKSB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7W2tleV06IHRoaXMuc3RhdGVba2V5XX0pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvbkNoYW5nZSA9IHRoaXMuX29uQ2hhbmdlSW5wdXQuYmluZCh0aGlzLCBrZXkpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U2xpZGVySW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9XCJrZy1yYW5nZS1zbGlkZXJfX2lucHV0XCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgICBpZD17YHNsaWRlci1pbnB1dC0ke2tleX1gfVxuICAgICAgICAgIGtleT17a2V5fVxuICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlW2tleV19XG4gICAgICAgICAgbWluPXt0aGlzLnByb3BzLm1pbn1cbiAgICAgICAgICBtYXg9e3RoaXMucHJvcHMubWF4fVxuICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICBvbktleVByZXNzPXtlID0+IHtcbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgICB1cGRhdGUoZSk7XG4gICAgICAgICAgICAgIHJlZi5jdXJyZW50LmJsdXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQmx1cj17dXBkYXRlfVxuICAgICAgICAgIGZsdXNoPXtrZXkgPT09ICd2YWx1ZTAnfVxuICAgICAgICAgIHNpemU9e3RoaXMucHJvcHMuaW5wdXRTaXplfVxuICAgICAgICAgIHNlY29uZGFyeT17dGhpcy5wcm9wcy5pbnB1dFRoZW1lID09PSAnc2Vjb25kYXJ5J31cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGlzUmFuZ2VkLFxuICAgICAgICBzaG93SW5wdXQsXG4gICAgICAgIGhpc3RvZ3JhbSxcbiAgICAgICAgbGluZUNoYXJ0LFxuICAgICAgICByYW5nZSxcbiAgICAgICAgb25DaGFuZ2UsXG4gICAgICAgIHNsaWRlckhhbmRsZVdpZHRoLFxuICAgICAgICBzdGVwLFxuICAgICAgICB0aW1lem9uZSxcbiAgICAgICAgdGltZUZvcm1hdCxcbiAgICAgICAgcGxheWJhY2tDb250cm9sV2lkdGhcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICBjb25zdCB7d2lkdGh9ID0gdGhpcy5zdGF0ZTtcbiAgICAgIGNvbnN0IHBsb3RXaWR0aCA9IE1hdGgubWF4KHdpZHRoIC0gc2xpZGVySGFuZGxlV2lkdGgsIDApO1xuICAgICAgY29uc3QgcmVuZGVyUGxvdCA9IChoaXN0b2dyYW0gJiYgaGlzdG9ncmFtLmxlbmd0aCkgfHwgbGluZUNoYXJ0O1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cImtnLXJhbmdlLXNsaWRlclwiXG4gICAgICAgICAgc3R5bGU9e3t3aWR0aDogJzEwMCUnLCBwYWRkaW5nOiBgMCAke3NsaWRlckhhbmRsZVdpZHRoIC8gMn1weGB9fVxuICAgICAgICAgIHJlZj17dGhpcy5zZXRTbGlkZXJDb250YWluZXJ9XG4gICAgICAgID5cbiAgICAgICAgICB7QXJyYXkuaXNBcnJheShyYW5nZSkgJiYgcmFuZ2UuZXZlcnkoTnVtYmVyLmlzRmluaXRlKSAmJiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7cmVuZGVyUGxvdCA/IChcbiAgICAgICAgICAgICAgICA8UmFuZ2VQbG90XG4gICAgICAgICAgICAgICAgICBoaXN0b2dyYW09e2hpc3RvZ3JhbX1cbiAgICAgICAgICAgICAgICAgIGxpbmVDaGFydD17dGhpcy5wcm9wcy5saW5lQ2hhcnR9XG4gICAgICAgICAgICAgICAgICBwbG90VHlwZT17dGhpcy5wcm9wcy5wbG90VHlwZX1cbiAgICAgICAgICAgICAgICAgIGlzRW5sYXJnZWQ9e3RoaXMucHJvcHMuaXNFbmxhcmdlZH1cbiAgICAgICAgICAgICAgICAgIG9uQnJ1c2g9eyh2YWwwLCB2YWwxKSA9PiBvbkNoYW5nZShbdmFsMCwgdmFsMV0pfVxuICAgICAgICAgICAgICAgICAgbWFya3M9e3RoaXMucHJvcHMubWFya3N9XG4gICAgICAgICAgICAgICAgICByYW5nZT17cmFuZ2V9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17dGhpcy5wcm9wcy5wbG90VmFsdWUgfHwgdGhpcy5maWx0ZXJWYWx1ZVNlbGVjdG9yKHRoaXMucHJvcHMpfVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3Bsb3RXaWR0aH1cbiAgICAgICAgICAgICAgICAgIGlzUmFuZ2VkPXtpc1JhbmdlZH1cbiAgICAgICAgICAgICAgICAgIHN0ZXA9e3N0ZXB9XG4gICAgICAgICAgICAgICAgICB0aW1lem9uZT17dGltZXpvbmV9XG4gICAgICAgICAgICAgICAgICB0aW1lRm9ybWF0PXt0aW1lRm9ybWF0fVxuICAgICAgICAgICAgICAgICAgcGxheWJhY2tDb250cm9sV2lkdGg9e3BsYXliYWNrQ29udHJvbFdpZHRofVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8U2xpZGVyV3JhcHBlclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImtnLXJhbmdlLXNsaWRlcl9fc2xpZGVyXCJcbiAgICAgICAgICAgICAgICBpc1JhbmdlZD17aXNSYW5nZWR9XG4gICAgICAgICAgICAgICAgc2hvd0lucHV0PXtzaG93SW5wdXR9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy54QXhpcyA/IChcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3toZWlnaHQ6ICczMHB4J319PlxuICAgICAgICAgICAgICAgICAgICA8dGhpcy5wcm9wcy54QXhpc1xuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXtwbG90V2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgdGltZXpvbmU9e3RpbWV6b25lfVxuICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbj17cmFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgaXNFbmxhcmdlZD17dGhpcy5wcm9wcy5pc0VubGFyZ2VkfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPFNsaWRlclxuICAgICAgICAgICAgICAgICAgbWFya3M9e3RoaXMucHJvcHMubWFya3N9XG4gICAgICAgICAgICAgICAgICBzaG93VmFsdWVzPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIGlzUmFuZ2VkPXtpc1JhbmdlZH1cbiAgICAgICAgICAgICAgICAgIG1pblZhbHVlPXtyYW5nZVswXX1cbiAgICAgICAgICAgICAgICAgIG1heFZhbHVlPXtyYW5nZVsxXX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlMD17dGhpcy5wcm9wcy52YWx1ZTB9XG4gICAgICAgICAgICAgICAgICB2YWx1ZTE9e3RoaXMucHJvcHMudmFsdWUxfVxuICAgICAgICAgICAgICAgICAgc3RlcD17c3RlcH1cbiAgICAgICAgICAgICAgICAgIGhhbmRsZVdpZHRoPXtzbGlkZXJIYW5kbGVXaWR0aH1cbiAgICAgICAgICAgICAgICAgIG9uU2xpZGVyMENoYW5nZT17dGhpcy5fc2V0UmFuZ2VWYWwwfVxuICAgICAgICAgICAgICAgICAgb25TbGlkZXIxQ2hhbmdlPXt0aGlzLl9zZXRSYW5nZVZhbDF9XG4gICAgICAgICAgICAgICAgICBvblNsaWRlckJhckNoYW5nZT17KHZhbDAsIHZhbDEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2UoW3ZhbDAsIHZhbDFdKTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBlbmFibGVCYXJEcmFnXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB7IWlzUmFuZ2VkICYmIHNob3dJbnB1dCA/IHRoaXMuX3JlbmRlcklucHV0KCd2YWx1ZTEnKSA6IG51bGx9XG4gICAgICAgICAgICAgIDwvU2xpZGVyV3JhcHBlcj5cbiAgICAgICAgICAgICAge2lzUmFuZ2VkICYmIHNob3dJbnB1dCA/IChcbiAgICAgICAgICAgICAgICA8UmFuZ2VJbnB1dFdyYXBwZXIgY2xhc3NOYW1lPVwicmFuZ2Utc2xpZGVyX19pbnB1dC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAge3RoaXMuX3JlbmRlcklucHV0KCd2YWx1ZTAnKX1cbiAgICAgICAgICAgICAgICAgIHt0aGlzLl9yZW5kZXJJbnB1dCgndmFsdWUxJyl9XG4gICAgICAgICAgICAgICAgPC9SYW5nZUlucHV0V3JhcHBlcj5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcG9seWZpbGwoUmFuZ2VTbGlkZXIpO1xuXG4gIHJldHVybiBSYW5nZVNsaWRlcjtcbn1cbiJdfQ==
|