Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

react-map-gl-draw

Package Overview
Dependencies
Maintainers
1
Versions
69
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-map-gl-draw - npm Package Compare versions

Comparing version 0.18.2 to 0.18.3

19

dist-es6/mode-handler.js

@@ -231,3 +231,3 @@ "use strict";

case _constants.EDIT_TYPE.ADD_FEATURE:
_this.props.onSelect({
_this._onSelect({
selectedFeature: null,

@@ -331,2 +331,8 @@ selectedFeatureIndex: null,

_defineProperty(_assertThisInitialized(_this), "_onDblclick", function (event) {
if ((0, _utils.isNumeric)(_this._getSelectedFeatureIndex())) {
event.sourceEvent.stopImmediatePropagation();
}
});
_defineProperty(_assertThisInitialized(_this), "_onPointerMove", function (event) {

@@ -375,4 +381,6 @@ // hovering

_defineProperty(_assertThisInitialized(_this), "_onPointerDown", function (event) {
var isDragging = event.picks && event.picks[0];
var startDraggingEvent = _objectSpread({}, event, {
isDragging: true,
isDragging: isDragging,
pointerDownScreenCoords: event.screenCoords,

@@ -383,3 +391,3 @@ pointerDownMapCoords: event.mapCoords

var newState = {
isDragging: true,
isDragging: isDragging,
pointerDownPicks: event.picks,

@@ -471,2 +479,5 @@ pointerDownScreenCoords: event.screenCoords,

},
dblclick: function dblclick(evt) {
return _this._onEvent(_this._onDblclick, evt, false);
},
click: function click(evt) {

@@ -587,2 +598,2 @@ return evt.stopImmediatePropagation();

_defineProperty(ModeHandler, "defaultProps", defaultProps);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tb2RlLWhhbmRsZXIudHN4Il0sIm5hbWVzIjpbImRlZmF1bHRQcm9wcyIsInNlbGVjdGFibGUiLCJtb2RlIiwiZmVhdHVyZXMiLCJvblNlbGVjdCIsIm9uVXBkYXRlIiwib25VcGRhdGVDdXJzb3IiLCJkZWZhdWx0U3RhdGUiLCJmZWF0dXJlQ29sbGVjdGlvbiIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwidHlwZSIsInNlbGVjdGVkRmVhdHVyZUluZGV4IiwiaG92ZXJlZCIsImlzRHJhZ2dpbmciLCJkaWREcmFnIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJwb2ludGVyRG93blBpY2tzIiwicG9pbnRlckRvd25TY3JlZW5Db29yZHMiLCJwb2ludGVyRG93bk1hcENvb3JkcyIsIk1vZGVIYW5kbGVyIiwicHJvcHMiLCJfZ2V0RmVhdHVyZUNvbGxlY3Rpb24iLCJnZXRPYmplY3QiLCJBcnJheSIsImlzQXJyYXkiLCJhZGRGZWF0dXJlcyIsInNldFN0YXRlIiwiZmVhdHVyZUluZGV4ZXMiLCJfZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXgiLCJkZWxldGVGZWF0dXJlcyIsIm5ld1N0YXRlIiwiZmluZEluZGV4IiwiaW5kZXgiLCJwcm9wc0ZlYXR1cmVzIiwic3RhdGVGZWF0dXJlcyIsIl9nZXRNZW1vcml6ZWRGZWF0dXJlQ29sbGVjdGlvbiIsInN0YXRlIiwiX21vZGVIYW5kbGVyIiwiX2RlZ3JlZ2lzdGVyRXZlbnRzIiwiX3JlZ2lzdGVyRXZlbnRzIiwic2VsZWN0ZWQiLCJlZGl0QWN0aW9uIiwiZWRpdFR5cGUiLCJ1cGRhdGVkRGF0YSIsImVkaXRDb250ZXh0IiwiRURJVF9UWVBFIiwiQUREX0ZFQVRVUkUiLCJzZWxlY3RlZEZlYXR1cmUiLCJzZWxlY3RlZEVkaXRIYW5kbGVJbmRleCIsInNjcmVlbkNvb3JkcyIsIm1hcENvb3JkcyIsImRhdGEiLCJldmVudE1hbmFnZXIiLCJfY29udGV4dCIsIl9ldmVudHMiLCJfZXZlbnRzUmVnaXN0ZXJlZCIsIm9mZiIsInJlZiIsIl9jb250YWluZXJSZWYiLCJvbiIsImhhbmRsZXIiLCJldnQiLCJzdG9wUHJvcGFnYXRpb24iLCJldmVudCIsIl9nZXRFdmVudCIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsIm1vZGVQcm9wcyIsImdldE1vZGVQcm9wcyIsIkVkaXRpbmdNb2RlIiwicGlja2VkT2JqZWN0IiwicGlja3MiLCJmZWF0dXJlSW5kZXgiLCJfb25TZWxlY3QiLCJvYmplY3QiLCJFTEVNRU5UX1RZUEUiLCJFRElUX0hBTkRMRSIsImhhbmRsZUNsaWNrIiwiX2dldEhvdmVyU3RhdGUiLCJkeCIsImR5IiwicG9pbnRlck1vdmVFdmVudCIsImhhbmRsZVBvaW50ZXJNb3ZlIiwic3RhcnREcmFnZ2luZ0V2ZW50IiwiaGFuZGxlU3RhcnREcmFnZ2luZyIsInN0b3BEcmFnZ2luZ0V2ZW50IiwiaGFuZGxlU3RvcERyYWdnaW5nIiwic291cmNlRXZlbnQiLCJoYW5kbGVQYW4iLCJwdCIsInZpZXdwb3J0IiwicHJvamVjdCIsInVucHJvamVjdCIsImFueWNsaWNrIiwiX29uRXZlbnQiLCJfb25DbGljayIsImNsaWNrIiwicG9pbnRlcm1vdmUiLCJfb25Qb2ludGVyTW92ZSIsInBvaW50ZXJkb3duIiwiX29uUG9pbnRlckRvd24iLCJwb2ludGVydXAiLCJfb25Qb2ludGVyVXAiLCJwYW5tb3ZlIiwiX29uUGFuIiwicGFuc3RhcnQiLCJwYW5lbmQiLCJfc2V0dXBNb2RlSGFuZGxlciIsInByZXZQcm9wcyIsIl9jbGVhckVkaXRpbmdTdGF0ZSIsInNlbGVjdGVkSW5kZXhlcyIsImZlYXR1cmVzRHJhZ2dhYmxlIiwib25FZGl0IiwiX29uRWRpdCIsImdldEZlYXR1cmVzIiwiZ3VpZGVzIiwiZ2V0R3VpZGVzIiwicGlja2VkIiwiY29udGV4dCIsImhlaWdodCIsIndpZHRoIiwiX3JlbmRlciIsIlB1cmVDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFXQTs7QUFD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OztFQXBhc0NDLG9COzs7O2dCQUFwQnRHLFcsaUJBQ0UsYTs7Z0JBREZBLFcsa0JBRUduQixZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX01hcENvbnRleHQgYXMgTWFwQ29udGV4dCwgTWFwQ29udGV4dFByb3BzIH0gZnJvbSAncmVhY3QtbWFwLWdsJztcbmltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24sXG4gIEZlYXR1cmUsXG4gIFBvc2l0aW9uLFxuICBFZGl0QWN0aW9uLFxuICBfbWVtb2l6ZSBhcyBtZW1vaXplLFxufSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuXG5pbXBvcnQgeyBNam9sbmlyRXZlbnQgfSBmcm9tICdtam9sbmlyLmpzJztcbmltcG9ydCB7IEJhc2VFdmVudCwgRWRpdG9yUHJvcHMsIEVkaXRvclN0YXRlLCBTZWxlY3RBY3Rpb24gfSBmcm9tICcuL3R5cGVzJztcblxuaW1wb3J0IEVkaXRpbmdNb2RlIGZyb20gJy4vZWRpdC1tb2Rlcy9lZGl0aW5nLW1vZGUnO1xuaW1wb3J0IHsgZ2V0U2NyZWVuQ29vcmRzLCBwYXJzZUV2ZW50RWxlbWVudCwgaXNOdW1lcmljIH0gZnJvbSAnLi9lZGl0LW1vZGVzL3V0aWxzJztcbmltcG9ydCB7IEVESVRfVFlQRSwgRUxFTUVOVF9UWVBFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIHNlbGVjdGFibGU6IHRydWUsXG4gIG1vZGU6IG51bGwsXG4gIGZlYXR1cmVzOiBudWxsLFxuICBvblNlbGVjdDogbnVsbCxcbiAgb25VcGRhdGU6IG51bGwsXG4gIG9uVXBkYXRlQ3Vyc29yOiAoKSA9PiB7fSxcbn07XG5cbmNvbnN0IGRlZmF1bHRTdGF0ZSA9IHtcbiAgZmVhdHVyZUNvbGxlY3Rpb246IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbih7XG4gICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICBmZWF0dXJlczogW10sXG4gIH0pLFxuXG4gIHNlbGVjdGVkRmVhdHVyZUluZGV4OiBudWxsLFxuXG4gIC8vIGluZGV4LCBpc0d1aWRlLCBtYXBDb29yZHMsIHNjcmVlbkNvb3Jkc1xuICBob3ZlcmVkOiBudWxsLFxuXG4gIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICBkaWREcmFnOiBmYWxzZSxcblxuICBsYXN0UG9pbnRlck1vdmVFdmVudDogbnVsbCxcblxuICBwb2ludGVyRG93blBpY2tzOiBudWxsLFxuICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogbnVsbCxcbiAgcG9pbnRlckRvd25NYXBDb29yZHM6IG51bGwsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNb2RlSGFuZGxlciBleHRlbmRzIFB1cmVDb21wb25lbnQ8RWRpdG9yUHJvcHMsIEVkaXRvclN0YXRlPiB7XG4gIHN0YXRpYyBkaXNwbGF5TmFtZSA9ICdNb2RlSGFuZGxlcic7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IEVkaXRvclByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSBkZWZhdWx0U3RhdGU7XG4gICAgdGhpcy5fZXZlbnRzUmVnaXN0ZXJlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5fZXZlbnRzID0ge1xuICAgICAgYW55Y2xpY2s6IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25DbGljaywgZXZ0LCB0cnVlKSxcbiAgICAgIGNsaWNrOiAoZXZ0KSA9PiBldnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksXG4gICAgICBwb2ludGVybW92ZTogKGV2dCkgPT4gdGhpcy5fb25FdmVudCh0aGlzLl9vblBvaW50ZXJNb3ZlLCBldnQsIHRydWUpLFxuICAgICAgcG9pbnRlcmRvd246IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25Qb2ludGVyRG93biwgZXZ0LCB0cnVlKSxcbiAgICAgIHBvaW50ZXJ1cDogKGV2dCkgPT4gdGhpcy5fb25FdmVudCh0aGlzLl9vblBvaW50ZXJVcCwgZXZ0LCB0cnVlKSxcbiAgICAgIHBhbm1vdmU6IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25QYW4sIGV2dCwgZmFsc2UpLFxuICAgICAgcGFuc3RhcnQ6IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25QYW4sIGV2dCwgZmFsc2UpLFxuICAgICAgcGFuZW5kOiAoZXZ0KSA9PiB0aGlzLl9vbkV2ZW50KHRoaXMuX29uUGFuLCBldnQsIGZhbHNlKSxcbiAgICB9O1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5fc2V0dXBNb2RlSGFuZGxlcigpO1xuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wczogRWRpdG9yUHJvcHMpIHtcbiAgICBpZiAocHJldlByb3BzLm1vZGUgIT09IHRoaXMucHJvcHMubW9kZSkge1xuICAgICAgdGhpcy5fY2xlYXJFZGl0aW5nU3RhdGUoKTtcbiAgICAgIHRoaXMuX3NldHVwTW9kZUhhbmRsZXIoKTtcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLl9kZWdyZWdpc3RlckV2ZW50cygpO1xuICB9XG5cbiAgX2V2ZW50czogYW55O1xuICBfZXZlbnRzUmVnaXN0ZXJlZDogYm9vbGVhbjtcbiAgX21vZGVIYW5kbGVyOiBhbnk7XG4gIF9jb250ZXh0OiBNYXBDb250ZXh0UHJvcHMgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBfY29udGFpbmVyUmVmOiBIVE1MRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgZ2V0RmVhdHVyZXMgPSAoKSA9PiB7XG4gICAgbGV0IGZlYXR1cmVDb2xsZWN0aW9uID0gdGhpcy5fZ2V0RmVhdHVyZUNvbGxlY3Rpb24oKTtcbiAgICBmZWF0dXJlQ29sbGVjdGlvbiA9IGZlYXR1cmVDb2xsZWN0aW9uICYmIGZlYXR1cmVDb2xsZWN0aW9uLmdldE9iamVjdCgpO1xuICAgIHJldHVybiBmZWF0dXJlQ29sbGVjdGlvbiAmJiBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcztcbiAgfTtcblxuICBhZGRGZWF0dXJlcyA9IChmZWF0dXJlczogRmVhdHVyZSB8IEZlYXR1cmVbXSkgPT4ge1xuICAgIGxldCBmZWF0dXJlQ29sbGVjdGlvbiA9IHRoaXMuX2dldEZlYXR1cmVDb2xsZWN0aW9uKCk7XG4gICAgaWYgKGZlYXR1cmVDb2xsZWN0aW9uKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmVhdHVyZXMpKSB7XG4gICAgICAgIGZlYXR1cmVzID0gW2ZlYXR1cmVzXTtcbiAgICAgIH1cblxuICAgICAgZmVhdHVyZUNvbGxlY3Rpb24gPSBmZWF0dXJlQ29sbGVjdGlvbi5hZGRGZWF0dXJlcyhmZWF0dXJlcyk7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgZmVhdHVyZUNvbGxlY3Rpb24gfSk7XG4gICAgfVxuICB9O1xuXG4gIGRlbGV0ZUZlYXR1cmVzID0gKGZlYXR1cmVJbmRleGVzOiBudW1iZXIgfCBudW1iZXJbXSkgPT4ge1xuICAgIGxldCBmZWF0dXJlQ29sbGVjdGlvbiA9IHRoaXMuX2dldEZlYXR1cmVDb2xsZWN0aW9uKCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlSW5kZXggPSB0aGlzLl9nZXRTZWxlY3RlZEZlYXR1cmVJbmRleCgpO1xuICAgIGlmIChmZWF0dXJlQ29sbGVjdGlvbikge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZlYXR1cmVJbmRleGVzKSkge1xuICAgICAgICBmZWF0dXJlSW5kZXhlcyA9IFtmZWF0dXJlSW5kZXhlc107XG4gICAgICB9XG4gICAgICBmZWF0dXJlQ29sbGVjdGlvbiA9IGZlYXR1cmVDb2xsZWN0aW9uLmRlbGV0ZUZlYXR1cmVzKGZlYXR1cmVJbmRleGVzKTtcbiAgICAgIGNvbnN0IG5ld1N0YXRlOiBhbnkgPSB7IGZlYXR1cmVDb2xsZWN0aW9uIH07XG4gICAgICBpZiAoZmVhdHVyZUluZGV4ZXMuZmluZEluZGV4KChpbmRleCkgPT4gc2VsZWN0ZWRGZWF0dXJlSW5kZXggPT09IGluZGV4KSA+PSAwKSB7XG4gICAgICAgIG5ld1N0YXRlLnNlbGVjdGVkRmVhdHVyZUluZGV4ID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0U3RhdGUobmV3U3RhdGUpO1xuICAgIH1cbiAgfTtcblxuICBnZXRNb2RlUHJvcHMoKSB7XG4gICAgY29uc3QgZmVhdHVyZUNvbGxlY3Rpb24gPSB0aGlzLl9nZXRGZWF0dXJlQ29sbGVjdGlvbigpO1xuXG4gICAgY29uc3QgeyBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleCA9IHRoaXMuX2dldFNlbGVjdGVkRmVhdHVyZUluZGV4KCk7XG4gICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLl9jb250ZXh0ICYmIHRoaXMuX2NvbnRleHQudmlld3BvcnQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogZmVhdHVyZUNvbGxlY3Rpb24gJiYgZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZUNvbGxlY3Rpb24sXG4gICAgICBzZWxlY3RlZEluZGV4ZXM6IGlzTnVtZXJpYyhzZWxlY3RlZEZlYXR1cmVJbmRleCkgPyBbc2VsZWN0ZWRGZWF0dXJlSW5kZXhdIDogW10sXG4gICAgICBsYXN0UG9pbnRlck1vdmVFdmVudCxcbiAgICAgIHZpZXdwb3J0LFxuICAgICAgZmVhdHVyZXNEcmFnZ2FibGU6IHRoaXMucHJvcHMuZmVhdHVyZXNEcmFnZ2FibGUsXG4gICAgICBvbkVkaXQ6IHRoaXMuX29uRWRpdCxcbiAgICAgIG9uVXBkYXRlQ3Vyc29yOiB0aGlzLnByb3BzLm9uVXBkYXRlQ3Vyc29yLFxuICAgIH07XG4gIH1cblxuICAvKiBNRU1PUklaRVJTICovXG4gIF9nZXRNZW1vcml6ZWRGZWF0dXJlQ29sbGVjdGlvbiA9IG1lbW9pemUoKHsgcHJvcHNGZWF0dXJlcywgc3RhdGVGZWF0dXJlcyB9OiBhbnkpID0+IHtcbiAgICBjb25zdCBmZWF0dXJlcyA9IHByb3BzRmVhdHVyZXMgfHwgc3RhdGVGZWF0dXJlcztcbiAgICAvLyBBbnkgY2hhbmdlcyBpbiBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB3aWxsIGNyZWF0ZSBhIG5ldyBvYmplY3RcbiAgICBpZiAoZmVhdHVyZXMgaW5zdGFuY2VvZiBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbikge1xuICAgICAgcmV0dXJuIGZlYXR1cmVzO1xuICAgIH1cblxuICAgIGlmIChmZWF0dXJlcyAmJiBmZWF0dXJlcy50eXBlID09PSAnRmVhdHVyZUNvbGxlY3Rpb24nKSB7XG4gICAgICByZXR1cm4gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgICAgZmVhdHVyZXM6IGZlYXR1cmVzLmZlYXR1cmVzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbih7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IGZlYXR1cmVzIHx8IFtdLFxuICAgIH0pO1xuICB9KTtcblxuICBfZ2V0RmVhdHVyZUNvbGxlY3Rpb24gPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuX2dldE1lbW9yaXplZEZlYXR1cmVDb2xsZWN0aW9uKHtcbiAgICAgIHByb3BzRmVhdHVyZXM6IHRoaXMucHJvcHMuZmVhdHVyZXMsXG4gICAgICBzdGF0ZUZlYXR1cmVzOiB0aGlzLnN0YXRlLmZlYXR1cmVDb2xsZWN0aW9uLFxuICAgIH0pO1xuICB9O1xuXG4gIF9zZXR1cE1vZGVIYW5kbGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IG1vZGUgPSB0aGlzLnByb3BzLm1vZGU7XG4gICAgdGhpcy5fbW9kZUhhbmRsZXIgPSBtb2RlO1xuXG4gICAgaWYgKCFtb2RlKSB7XG4gICAgICB0aGlzLl9kZWdyZWdpc3RlckV2ZW50cygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3JlZ2lzdGVyRXZlbnRzKCk7XG4gIH07XG5cbiAgLyogRURJVElORyBPUEVSQVRJT05TICovXG4gIF9jbGVhckVkaXRpbmdTdGF0ZSA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkRmVhdHVyZUluZGV4OiBudWxsLFxuXG4gICAgICBob3ZlcmVkOiBudWxsLFxuXG4gICAgICBwb2ludGVyRG93blBpY2tzOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IG51bGwsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkczogbnVsbCxcblxuICAgICAgaXNEcmFnZ2luZzogZmFsc2UsXG4gICAgICBkaWREcmFnOiBmYWxzZSxcbiAgICB9KTtcbiAgfTtcblxuICBfZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXggPSAoKSA9PiB7XG4gICAgaWYgKCdzZWxlY3RlZEZlYXR1cmVJbmRleCcgaW4gdGhpcy5wcm9wcykge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuc2VsZWN0ZWRGZWF0dXJlSW5kZXg7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkRmVhdHVyZUluZGV4O1xuICB9O1xuXG4gIF9vblNlbGVjdCA9IChzZWxlY3RlZDogU2VsZWN0QWN0aW9uKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHNlbGVjdGVkRmVhdHVyZUluZGV4OiBzZWxlY3RlZCAmJiBzZWxlY3RlZC5zZWxlY3RlZEZlYXR1cmVJbmRleCB9KTtcbiAgICBpZiAodGhpcy5wcm9wcy5vblNlbGVjdCkge1xuICAgICAgdGhpcy5wcm9wcy5vblNlbGVjdChzZWxlY3RlZCk7XG4gICAgfVxuICB9O1xuXG4gIF9vbkVkaXQgPSAoZWRpdEFjdGlvbjogRWRpdEFjdGlvbjxhbnk+KSA9PiB7XG4gICAgY29uc3QgeyBlZGl0VHlwZSwgdXBkYXRlZERhdGEsIGVkaXRDb250ZXh0IH0gPSBlZGl0QWN0aW9uO1xuICAgIHRoaXMuc2V0U3RhdGUoeyBmZWF0dXJlQ29sbGVjdGlvbjogbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHVwZGF0ZWREYXRhKSB9KTtcblxuICAgIHN3aXRjaCAoZWRpdFR5cGUpIHtcbiAgICAgIGNhc2UgRURJVF9UWVBFLkFERF9GRUFUVVJFOlxuICAgICAgICB0aGlzLnByb3BzLm9uU2VsZWN0KHtcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmU6IG51bGwsXG4gICAgICAgICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXg6IG51bGwsXG4gICAgICAgICAgc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXg6IG51bGwsXG4gICAgICAgICAgc2NyZWVuQ29vcmRzOiBlZGl0Q29udGV4dCAmJiBlZGl0Q29udGV4dC5zY3JlZW5Db29yZHMsXG4gICAgICAgICAgbWFwQ29vcmRzOiBlZGl0Q29udGV4dCAmJiBlZGl0Q29udGV4dC5tYXBDb29yZHMsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMub25VcGRhdGUpIHtcbiAgICAgIHRoaXMucHJvcHMub25VcGRhdGUoe1xuICAgICAgICBkYXRhOiB1cGRhdGVkRGF0YSAmJiB1cGRhdGVkRGF0YS5mZWF0dXJlcyxcbiAgICAgICAgZWRpdFR5cGUsXG4gICAgICAgIGVkaXRDb250ZXh0LFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIC8qIEVWRU5UUyAqL1xuICBfZGVncmVnaXN0ZXJFdmVudHMgPSAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnRNYW5hZ2VyID0gdGhpcy5fY29udGV4dCAmJiB0aGlzLl9jb250ZXh0LmV2ZW50TWFuYWdlcjtcbiAgICBpZiAoIXRoaXMuX2V2ZW50cyB8fCAhZXZlbnRNYW5hZ2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2V2ZW50c1JlZ2lzdGVyZWQpIHtcbiAgICAgIGV2ZW50TWFuYWdlci5vZmYodGhpcy5fZXZlbnRzKTtcbiAgICAgIHRoaXMuX2V2ZW50c1JlZ2lzdGVyZWQgPSBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgX3JlZ2lzdGVyRXZlbnRzID0gKCkgPT4ge1xuICAgIGNvbnN0IHJlZiA9IHRoaXMuX2NvbnRhaW5lclJlZjtcbiAgICBjb25zdCBldmVudE1hbmFnZXIgPSB0aGlzLl9jb250ZXh0ICYmIHRoaXMuX2NvbnRleHQuZXZlbnRNYW5hZ2VyO1xuICAgIGlmICghdGhpcy5fZXZlbnRzIHx8ICFyZWYgfHwgIWV2ZW50TWFuYWdlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9ldmVudHNSZWdpc3RlcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXZlbnRNYW5hZ2VyLm9uKHRoaXMuX2V2ZW50cywgcmVmKTtcbiAgICB0aGlzLl9ldmVudHNSZWdpc3RlcmVkID0gdHJ1ZTtcbiAgfTtcblxuICBfb25FdmVudCA9IChoYW5kbGVyOiBGdW5jdGlvbiwgZXZ0OiBNam9sbmlyRXZlbnQsIHN0b3BQcm9wYWdhdGlvbjogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5fZ2V0RXZlbnQoZXZ0KTtcbiAgICBoYW5kbGVyKGV2ZW50KTtcblxuICAgIGlmIChzdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgIGV2dC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH07XG5cbiAgX29uQ2xpY2sgPSAoZXZlbnQ6IEJhc2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IG1vZGVQcm9wcyA9IHRoaXMuZ2V0TW9kZVByb3BzKCk7XG4gICAgLy8gVE9ETyByZWZhY3RvciBFZGl0aW5nTW9kZVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAodGhpcy5fbW9kZUhhbmRsZXIgaW5zdGFuY2VvZiBFZGl0aW5nTW9kZSB8fCB0aGlzLnByb3BzLnNlbGVjdGFibGUpIHtcbiAgICAgIGNvbnN0IHsgbWFwQ29vcmRzLCBzY3JlZW5Db29yZHMgfSA9IGV2ZW50O1xuICAgICAgY29uc3QgcGlja2VkT2JqZWN0ID0gZXZlbnQucGlja3MgJiYgZXZlbnQucGlja3NbMF07XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAocGlja2VkT2JqZWN0ICYmIGlzTnVtZXJpYyhwaWNrZWRPYmplY3QuZmVhdHVyZUluZGV4KSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ID0gcGlja2VkT2JqZWN0LmZlYXR1cmVJbmRleDtcbiAgICAgICAgdGhpcy5fb25TZWxlY3Qoe1xuICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZTogcGlja2VkT2JqZWN0Lm9iamVjdCxcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleCxcbiAgICAgICAgICBzZWxlY3RlZEVkaXRIYW5kbGVJbmRleDpcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHBpY2tlZE9iamVjdC50eXBlID09PSBFTEVNRU5UX1RZUEUuRURJVF9IQU5ETEUgPyBwaWNrZWRPYmplY3QuaW5kZXggOiBudWxsLFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBtYXBDb29yZHMsXG4gICAgICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX29uU2VsZWN0KHtcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmU6IG51bGwsXG4gICAgICAgICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXg6IG51bGwsXG4gICAgICAgICAgc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXg6IG51bGwsXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG1hcENvb3JkcyxcbiAgICAgICAgICBzY3JlZW5Db29yZHMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX21vZGVIYW5kbGVyLmhhbmRsZUNsaWNrKGV2ZW50LCBtb2RlUHJvcHMpO1xuICB9O1xuXG4gIF9vblBvaW50ZXJNb3ZlID0gKGV2ZW50OiBCYXNlRXZlbnQpID0+IHtcbiAgICAvLyBob3ZlcmluZ1xuICAgIGNvbnN0IGhvdmVyZWQgPSB0aGlzLl9nZXRIb3ZlclN0YXRlKGV2ZW50KTtcbiAgICBjb25zdCB7XG4gICAgICBpc0RyYWdnaW5nLFxuICAgICAgZGlkRHJhZyxcbiAgICAgIHBvaW50ZXJEb3duUGlja3MsXG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkcyxcbiAgICAgIHBvaW50ZXJEb3duTWFwQ29vcmRzLFxuICAgIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgaWYgKGlzRHJhZ2dpbmcgJiYgIWRpZERyYWcgJiYgcG9pbnRlckRvd25TY3JlZW5Db29yZHMpIHtcbiAgICAgIGNvbnN0IGR4ID0gZXZlbnQuc2NyZWVuQ29vcmRzWzBdIC0gcG9pbnRlckRvd25TY3JlZW5Db29yZHNbMF07XG4gICAgICBjb25zdCBkeSA9IGV2ZW50LnNjcmVlbkNvb3Jkc1sxXSAtIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzWzFdO1xuICAgICAgaWYgKGR4ICogZHggKyBkeSAqIGR5ID4gNSkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGlkRHJhZzogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBwb2ludGVyTW92ZUV2ZW50ID0ge1xuICAgICAgLi4uZXZlbnQsXG4gICAgICBpc0RyYWdnaW5nLFxuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnN0YXRlLmRpZERyYWcpIHtcbiAgICAgIGNvbnN0IG1vZGVQcm9wcyA9IHRoaXMuZ2V0TW9kZVByb3BzKCk7XG4gICAgICB0aGlzLl9tb2RlSGFuZGxlci5oYW5kbGVQb2ludGVyTW92ZShwb2ludGVyTW92ZUV2ZW50LCBtb2RlUHJvcHMpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgaG92ZXJlZCxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGxhc3RQb2ludGVyTW92ZUV2ZW50OiBwb2ludGVyTW92ZUV2ZW50LFxuICAgIH0pO1xuICB9O1xuXG4gIF9vblBvaW50ZXJEb3duID0gKGV2ZW50OiBCYXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBzdGFydERyYWdnaW5nRXZlbnQgPSB7XG4gICAgICAuLi5ldmVudCxcbiAgICAgIGlzRHJhZ2dpbmc6IHRydWUsXG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogZXZlbnQuc2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IGV2ZW50Lm1hcENvb3JkcyxcbiAgICB9O1xuXG4gICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICBpc0RyYWdnaW5nOiB0cnVlLFxuICAgICAgcG9pbnRlckRvd25QaWNrczogZXZlbnQucGlja3MsXG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogZXZlbnQuc2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IGV2ZW50Lm1hcENvb3JkcyxcbiAgICB9O1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKTtcblxuICAgIGNvbnN0IG1vZGVQcm9wcyA9IHRoaXMuZ2V0TW9kZVByb3BzKCk7XG4gICAgdGhpcy5fbW9kZUhhbmRsZXIuaGFuZGxlU3RhcnREcmFnZ2luZyhzdGFydERyYWdnaW5nRXZlbnQsIG1vZGVQcm9wcyk7XG4gIH07XG5cbiAgX29uUG9pbnRlclVwID0gKGV2ZW50OiBNam9sbmlyRXZlbnQpID0+IHtcbiAgICBjb25zdCB7IGRpZERyYWcsIHBvaW50ZXJEb3duUGlja3MsIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLCBwb2ludGVyRG93bk1hcENvb3JkcyB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBzdG9wRHJhZ2dpbmdFdmVudCA9IHtcbiAgICAgIC4uLmV2ZW50LFxuICAgICAgaXNEcmFnZ2luZzogZmFsc2UsXG4gICAgICBwb2ludGVyRG93blBpY2tzOiBkaWREcmFnID8gcG9pbnRlckRvd25QaWNrcyA6IG51bGwsXG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogZGlkRHJhZyA/IHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzIDogbnVsbCxcbiAgICAgIHBvaW50ZXJEb3duTWFwQ29vcmRzOiBkaWREcmFnID8gcG9pbnRlckRvd25NYXBDb29yZHMgOiBudWxsLFxuICAgIH07XG5cbiAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICAgICAgZGlkRHJhZzogZmFsc2UsXG4gICAgICBwb2ludGVyRG93blBpY2tzOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IG51bGwsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkczogbnVsbCxcbiAgICB9O1xuXG4gICAgdGhpcy5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgY29uc3QgbW9kZVByb3BzID0gdGhpcy5nZXRNb2RlUHJvcHMoKTtcblxuICAgIGlmIChkaWREcmFnKSB7XG4gICAgICB0aGlzLl9tb2RlSGFuZGxlci5oYW5kbGVTdG9wRHJhZ2dpbmcoc3RvcERyYWdnaW5nRXZlbnQsIG1vZGVQcm9wcyk7XG4gICAgfVxuICB9O1xuXG4gIF9vblBhbiA9IChldmVudDogQmFzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyBpc0RyYWdnaW5nIH0gPSB0aGlzLnN0YXRlO1xuICAgIGlmIChpc0RyYWdnaW5nKSB7XG4gICAgICBldmVudC5zb3VyY2VFdmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX21vZGVIYW5kbGVyLmhhbmRsZVBhbikge1xuICAgICAgdGhpcy5fbW9kZUhhbmRsZXIuaGFuZGxlUGFuKGV2ZW50LCB0aGlzLmdldE1vZGVQcm9wcygpKTtcbiAgICB9XG4gIH07XG5cbiAgLyogSEVMUEVSUyAqL1xuICBwcm9qZWN0ID0gKHB0OiBQb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5fY29udGV4dCAmJiB0aGlzLl9jb250ZXh0LnZpZXdwb3J0O1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gdmlld3BvcnQgJiYgdmlld3BvcnQucHJvamVjdChwdCk7XG4gIH07XG5cbiAgdW5wcm9qZWN0ID0gKHB0OiBQb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5fY29udGV4dCAmJiB0aGlzLl9jb250ZXh0LnZpZXdwb3J0O1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gdmlld3BvcnQgJiYgdmlld3BvcnQudW5wcm9qZWN0KHB0KTtcbiAgfTtcblxuICBfZ2V0RXZlbnQoZXZ0OiBNam9sbmlyRXZlbnQpIHtcbiAgICBjb25zdCBmZWF0dXJlcyA9IHRoaXMuZ2V0RmVhdHVyZXMoKTtcbiAgICBjb25zdCBndWlkZXMgPSB0aGlzLl9tb2RlSGFuZGxlci5nZXRHdWlkZXModGhpcy5nZXRNb2RlUHJvcHMoKSk7XG4gICAgY29uc3QgcGlja2VkID0gcGFyc2VFdmVudEVsZW1lbnQoZXZ0LCBmZWF0dXJlcywgZ3VpZGVzICYmIGd1aWRlcy5mZWF0dXJlcyk7XG4gICAgY29uc3Qgc2NyZWVuQ29vcmRzID0gZ2V0U2NyZWVuQ29vcmRzKGV2dCk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IG1hcENvb3JkcyA9IHRoaXMudW5wcm9qZWN0KHNjcmVlbkNvb3Jkcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcGlja3M6IHBpY2tlZCA/IFtwaWNrZWRdIDogbnVsbCxcbiAgICAgIHNjcmVlbkNvb3JkcyxcbiAgICAgIG1hcENvb3JkcyxcbiAgICAgIHNvdXJjZUV2ZW50OiBldnQsXG4gICAgfTtcbiAgfVxuXG4gIF9nZXRIb3ZlclN0YXRlID0gKGV2ZW50OiBCYXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBvYmplY3QgPSBldmVudC5waWNrcyAmJiBldmVudC5waWNrc1swXTtcbiAgICBpZiAoIW9iamVjdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcmVlbkNvb3JkczogZXZlbnQuc2NyZWVuQ29vcmRzLFxuICAgICAgbWFwQ29vcmRzOiBldmVudC5tYXBDb29yZHMsXG4gICAgICAuLi5vYmplY3QsXG4gICAgfTtcbiAgfTtcblxuICBfcmVuZGVyKCkge1xuICAgIHJldHVybiA8ZGl2IC8+O1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8TWFwQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgeyhjb250ZXh0KSA9PiB7XG4gICAgICAgICAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgICAgY29uc3Qgdmlld3BvcnQgPSBjb250ZXh0ICYmIGNvbnRleHQudmlld3BvcnQ7XG5cbiAgICAgICAgICBpZiAoIXZpZXdwb3J0IHx8IHZpZXdwb3J0LmhlaWdodCA8PSAwIHx8IHZpZXdwb3J0LndpZHRoIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0aGlzLl9yZW5kZXIoKTtcbiAgICAgICAgfX1cbiAgICAgIDwvTWFwQ29udGV4dC5Db25zdW1lcj5cbiAgICApO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tb2RlLWhhbmRsZXIudHN4Il0sIm5hbWVzIjpbImRlZmF1bHRQcm9wcyIsInNlbGVjdGFibGUiLCJtb2RlIiwiZmVhdHVyZXMiLCJvblNlbGVjdCIsIm9uVXBkYXRlIiwib25VcGRhdGVDdXJzb3IiLCJkZWZhdWx0U3RhdGUiLCJmZWF0dXJlQ29sbGVjdGlvbiIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwidHlwZSIsInNlbGVjdGVkRmVhdHVyZUluZGV4IiwiaG92ZXJlZCIsImlzRHJhZ2dpbmciLCJkaWREcmFnIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJwb2ludGVyRG93blBpY2tzIiwicG9pbnRlckRvd25TY3JlZW5Db29yZHMiLCJwb2ludGVyRG93bk1hcENvb3JkcyIsIk1vZGVIYW5kbGVyIiwicHJvcHMiLCJfZ2V0RmVhdHVyZUNvbGxlY3Rpb24iLCJnZXRPYmplY3QiLCJBcnJheSIsImlzQXJyYXkiLCJhZGRGZWF0dXJlcyIsInNldFN0YXRlIiwiZmVhdHVyZUluZGV4ZXMiLCJfZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXgiLCJkZWxldGVGZWF0dXJlcyIsIm5ld1N0YXRlIiwiZmluZEluZGV4IiwiaW5kZXgiLCJwcm9wc0ZlYXR1cmVzIiwic3RhdGVGZWF0dXJlcyIsIl9nZXRNZW1vcml6ZWRGZWF0dXJlQ29sbGVjdGlvbiIsInN0YXRlIiwiX21vZGVIYW5kbGVyIiwiX2RlZ3JlZ2lzdGVyRXZlbnRzIiwiX3JlZ2lzdGVyRXZlbnRzIiwic2VsZWN0ZWQiLCJlZGl0QWN0aW9uIiwiZWRpdFR5cGUiLCJ1cGRhdGVkRGF0YSIsImVkaXRDb250ZXh0IiwiRURJVF9UWVBFIiwiQUREX0ZFQVRVUkUiLCJfb25TZWxlY3QiLCJzZWxlY3RlZEZlYXR1cmUiLCJzZWxlY3RlZEVkaXRIYW5kbGVJbmRleCIsInNjcmVlbkNvb3JkcyIsIm1hcENvb3JkcyIsImRhdGEiLCJldmVudE1hbmFnZXIiLCJfY29udGV4dCIsIl9ldmVudHMiLCJfZXZlbnRzUmVnaXN0ZXJlZCIsIm9mZiIsInJlZiIsIl9jb250YWluZXJSZWYiLCJvbiIsImhhbmRsZXIiLCJldnQiLCJzdG9wUHJvcGFnYXRpb24iLCJldmVudCIsIl9nZXRFdmVudCIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsIm1vZGVQcm9wcyIsImdldE1vZGVQcm9wcyIsIkVkaXRpbmdNb2RlIiwicGlja2VkT2JqZWN0IiwicGlja3MiLCJmZWF0dXJlSW5kZXgiLCJvYmplY3QiLCJFTEVNRU5UX1RZUEUiLCJFRElUX0hBTkRMRSIsImhhbmRsZUNsaWNrIiwic291cmNlRXZlbnQiLCJfZ2V0SG92ZXJTdGF0ZSIsImR4IiwiZHkiLCJwb2ludGVyTW92ZUV2ZW50IiwiaGFuZGxlUG9pbnRlck1vdmUiLCJzdGFydERyYWdnaW5nRXZlbnQiLCJoYW5kbGVTdGFydERyYWdnaW5nIiwic3RvcERyYWdnaW5nRXZlbnQiLCJoYW5kbGVTdG9wRHJhZ2dpbmciLCJoYW5kbGVQYW4iLCJwdCIsInZpZXdwb3J0IiwicHJvamVjdCIsInVucHJvamVjdCIsImFueWNsaWNrIiwiX29uRXZlbnQiLCJfb25DbGljayIsImRibGNsaWNrIiwiX29uRGJsY2xpY2siLCJjbGljayIsInBvaW50ZXJtb3ZlIiwiX29uUG9pbnRlck1vdmUiLCJwb2ludGVyZG93biIsIl9vblBvaW50ZXJEb3duIiwicG9pbnRlcnVwIiwiX29uUG9pbnRlclVwIiwicGFubW92ZSIsIl9vblBhbiIsInBhbnN0YXJ0IiwicGFuZW5kIiwiX3NldHVwTW9kZUhhbmRsZXIiLCJwcmV2UHJvcHMiLCJfY2xlYXJFZGl0aW5nU3RhdGUiLCJzZWxlY3RlZEluZGV4ZXMiLCJmZWF0dXJlc0RyYWdnYWJsZSIsIm9uRWRpdCIsIl9vbkVkaXQiLCJnZXRGZWF0dXJlcyIsImd1aWRlcyIsImdldEd1aWRlcyIsInBpY2tlZCIsImNvbnRleHQiLCJoZWlnaHQiLCJ3aWR0aCIsIl9yZW5kZXIiLCJQdXJlQ29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FB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QkFFUTtBQUFBOztBQUNQLDBCQUNFLGdDQUFDLHVCQUFELENBQVksUUFBWixRQUNHLFVBQUN5RCxPQUFELEVBQWE7QUFDWixRQUFBLE1BQUksQ0FBQ2pFLFFBQUwsR0FBZ0JpRSxPQUFoQjtBQUNBLFlBQU05QixRQUFRLEdBQUc4QixPQUFPLElBQUlBLE9BQU8sQ0FBQzlCLFFBQXBDOztBQUVBLFlBQUksQ0FBQ0EsUUFBRCxJQUFhQSxRQUFRLENBQUMrQixNQUFULElBQW1CLENBQWhDLElBQXFDL0IsUUFBUSxDQUFDZ0MsS0FBVCxJQUFrQixDQUEzRCxFQUE4RDtBQUM1RCxpQkFBTyxJQUFQO0FBQ0Q7O0FBRUQsZUFBTyxNQUFJLENBQUNDLE9BQUwsRUFBUDtBQUNELE9BVkgsQ0FERjtBQWNEOzs7O0VBNWFzQ0Msb0I7Ozs7Z0JBQXBCeEcsVyxpQkFDRSxhOztnQkFERkEsVyxrQkFFR25CLFkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfTWFwQ29udGV4dCBhcyBNYXBDb250ZXh0LCBNYXBDb250ZXh0UHJvcHMgfSBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgRmVhdHVyZSxcbiAgUG9zaXRpb24sXG4gIEVkaXRBY3Rpb24sXG4gIF9tZW1vaXplIGFzIG1lbW9pemUsXG59IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5cbmltcG9ydCB7IE1qb2xuaXJFdmVudCB9IGZyb20gJ21qb2xuaXIuanMnO1xuaW1wb3J0IHsgQmFzZUV2ZW50LCBFZGl0b3JQcm9wcywgRWRpdG9yU3RhdGUsIFNlbGVjdEFjdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuXG5pbXBvcnQgRWRpdGluZ01vZGUgZnJvbSAnLi9lZGl0LW1vZGVzL2VkaXRpbmctbW9kZSc7XG5pbXBvcnQgeyBnZXRTY3JlZW5Db29yZHMsIHBhcnNlRXZlbnRFbGVtZW50LCBpc051bWVyaWMgfSBmcm9tICcuL2VkaXQtbW9kZXMvdXRpbHMnO1xuaW1wb3J0IHsgRURJVF9UWVBFLCBFTEVNRU5UX1RZUEUgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgc2VsZWN0YWJsZTogdHJ1ZSxcbiAgbW9kZTogbnVsbCxcbiAgZmVhdHVyZXM6IG51bGwsXG4gIG9uU2VsZWN0OiBudWxsLFxuICBvblVwZGF0ZTogbnVsbCxcbiAgb25VcGRhdGVDdXJzb3I6ICgpID0+IHt9LFxufTtcblxuY29uc3QgZGVmYXVsdFN0YXRlID0ge1xuICBmZWF0dXJlQ29sbGVjdGlvbjogbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHtcbiAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgIGZlYXR1cmVzOiBbXSxcbiAgfSksXG5cbiAgc2VsZWN0ZWRGZWF0dXJlSW5kZXg6IG51bGwsXG5cbiAgLy8gaW5kZXgsIGlzR3VpZGUsIG1hcENvb3Jkcywgc2NyZWVuQ29vcmRzXG4gIGhvdmVyZWQ6IG51bGwsXG5cbiAgaXNEcmFnZ2luZzogZmFsc2UsXG4gIGRpZERyYWc6IGZhbHNlLFxuXG4gIGxhc3RQb2ludGVyTW92ZUV2ZW50OiBudWxsLFxuXG4gIHBvaW50ZXJEb3duUGlja3M6IG51bGwsXG4gIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBudWxsLFxuICBwb2ludGVyRG93bk1hcENvb3JkczogbnVsbCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vZGVIYW5kbGVyIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxFZGl0b3JQcm9wcywgRWRpdG9yU3RhdGU+IHtcbiAgc3RhdGljIGRpc3BsYXlOYW1lID0gJ01vZGVIYW5kbGVyJztcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogRWRpdG9yUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IGRlZmF1bHRTdGF0ZTtcbiAgICB0aGlzLl9ldmVudHNSZWdpc3RlcmVkID0gZmFsc2U7XG5cbiAgICB0aGlzLl9ldmVudHMgPSB7XG4gICAgICBhbnljbGljazogKGV2dCkgPT4gdGhpcy5fb25FdmVudCh0aGlzLl9vbkNsaWNrLCBldnQsIHRydWUpLFxuICAgICAgZGJsY2xpY2s6IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25EYmxjbGljaywgZXZ0LCBmYWxzZSksXG4gICAgICBjbGljazogKGV2dCkgPT4gZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLFxuICAgICAgcG9pbnRlcm1vdmU6IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25Qb2ludGVyTW92ZSwgZXZ0LCB0cnVlKSxcbiAgICAgIHBvaW50ZXJkb3duOiAoZXZ0KSA9PiB0aGlzLl9vbkV2ZW50KHRoaXMuX29uUG9pbnRlckRvd24sIGV2dCwgdHJ1ZSksXG4gICAgICBwb2ludGVydXA6IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25Qb2ludGVyVXAsIGV2dCwgdHJ1ZSksXG4gICAgICBwYW5tb3ZlOiAoZXZ0KSA9PiB0aGlzLl9vbkV2ZW50KHRoaXMuX29uUGFuLCBldnQsIGZhbHNlKSxcbiAgICAgIHBhbnN0YXJ0OiAoZXZ0KSA9PiB0aGlzLl9vbkV2ZW50KHRoaXMuX29uUGFuLCBldnQsIGZhbHNlKSxcbiAgICAgIHBhbmVuZDogKGV2dCkgPT4gdGhpcy5fb25FdmVudCh0aGlzLl9vblBhbiwgZXZ0LCBmYWxzZSksXG4gICAgfTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMuX3NldHVwTW9kZUhhbmRsZXIoKTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHM6IEVkaXRvclByb3BzKSB7XG4gICAgaWYgKHByZXZQcm9wcy5tb2RlICE9PSB0aGlzLnByb3BzLm1vZGUpIHtcbiAgICAgIHRoaXMuX2NsZWFyRWRpdGluZ1N0YXRlKCk7XG4gICAgICB0aGlzLl9zZXR1cE1vZGVIYW5kbGVyKCk7XG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5fZGVncmVnaXN0ZXJFdmVudHMoKTtcbiAgfVxuXG4gIF9ldmVudHM6IGFueTtcbiAgX2V2ZW50c1JlZ2lzdGVyZWQ6IGJvb2xlYW47XG4gIF9tb2RlSGFuZGxlcjogYW55O1xuICBfY29udGV4dDogTWFwQ29udGV4dFByb3BzIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX2NvbnRhaW5lclJlZjogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gIGdldEZlYXR1cmVzID0gKCkgPT4ge1xuICAgIGxldCBmZWF0dXJlQ29sbGVjdGlvbiA9IHRoaXMuX2dldEZlYXR1cmVDb2xsZWN0aW9uKCk7XG4gICAgZmVhdHVyZUNvbGxlY3Rpb24gPSBmZWF0dXJlQ29sbGVjdGlvbiAmJiBmZWF0dXJlQ29sbGVjdGlvbi5nZXRPYmplY3QoKTtcbiAgICByZXR1cm4gZmVhdHVyZUNvbGxlY3Rpb24gJiYgZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXM7XG4gIH07XG5cbiAgYWRkRmVhdHVyZXMgPSAoZmVhdHVyZXM6IEZlYXR1cmUgfCBGZWF0dXJlW10pID0+IHtcbiAgICBsZXQgZmVhdHVyZUNvbGxlY3Rpb24gPSB0aGlzLl9nZXRGZWF0dXJlQ29sbGVjdGlvbigpO1xuICAgIGlmIChmZWF0dXJlQ29sbGVjdGlvbikge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZlYXR1cmVzKSkge1xuICAgICAgICBmZWF0dXJlcyA9IFtmZWF0dXJlc107XG4gICAgICB9XG5cbiAgICAgIGZlYXR1cmVDb2xsZWN0aW9uID0gZmVhdHVyZUNvbGxlY3Rpb24uYWRkRmVhdHVyZXMoZmVhdHVyZXMpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGZlYXR1cmVDb2xsZWN0aW9uIH0pO1xuICAgIH1cbiAgfTtcblxuICBkZWxldGVGZWF0dXJlcyA9IChmZWF0dXJlSW5kZXhlczogbnVtYmVyIHwgbnVtYmVyW10pID0+IHtcbiAgICBsZXQgZmVhdHVyZUNvbGxlY3Rpb24gPSB0aGlzLl9nZXRGZWF0dXJlQ29sbGVjdGlvbigpO1xuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ID0gdGhpcy5fZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXgoKTtcbiAgICBpZiAoZmVhdHVyZUNvbGxlY3Rpb24pIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShmZWF0dXJlSW5kZXhlcykpIHtcbiAgICAgICAgZmVhdHVyZUluZGV4ZXMgPSBbZmVhdHVyZUluZGV4ZXNdO1xuICAgICAgfVxuICAgICAgZmVhdHVyZUNvbGxlY3Rpb24gPSBmZWF0dXJlQ29sbGVjdGlvbi5kZWxldGVGZWF0dXJlcyhmZWF0dXJlSW5kZXhlcyk7XG4gICAgICBjb25zdCBuZXdTdGF0ZTogYW55ID0geyBmZWF0dXJlQ29sbGVjdGlvbiB9O1xuICAgICAgaWYgKGZlYXR1cmVJbmRleGVzLmZpbmRJbmRleCgoaW5kZXgpID0+IHNlbGVjdGVkRmVhdHVyZUluZGV4ID09PSBpbmRleCkgPj0gMCkge1xuICAgICAgICBuZXdTdGF0ZS5zZWxlY3RlZEZlYXR1cmVJbmRleCA9IG51bGw7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICB9XG4gIH07XG5cbiAgZ2V0TW9kZVByb3BzKCkge1xuICAgIGNvbnN0IGZlYXR1cmVDb2xsZWN0aW9uID0gdGhpcy5fZ2V0RmVhdHVyZUNvbGxlY3Rpb24oKTtcblxuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlSW5kZXggPSB0aGlzLl9nZXRTZWxlY3RlZEZlYXR1cmVJbmRleCgpO1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5fY29udGV4dCAmJiB0aGlzLl9jb250ZXh0LnZpZXdwb3J0O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IGZlYXR1cmVDb2xsZWN0aW9uICYmIGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVDb2xsZWN0aW9uLFxuICAgICAgc2VsZWN0ZWRJbmRleGVzOiBpc051bWVyaWMoc2VsZWN0ZWRGZWF0dXJlSW5kZXgpID8gW3NlbGVjdGVkRmVhdHVyZUluZGV4XSA6IFtdLFxuICAgICAgbGFzdFBvaW50ZXJNb3ZlRXZlbnQsXG4gICAgICB2aWV3cG9ydCxcbiAgICAgIGZlYXR1cmVzRHJhZ2dhYmxlOiB0aGlzLnByb3BzLmZlYXR1cmVzRHJhZ2dhYmxlLFxuICAgICAgb25FZGl0OiB0aGlzLl9vbkVkaXQsXG4gICAgICBvblVwZGF0ZUN1cnNvcjogdGhpcy5wcm9wcy5vblVwZGF0ZUN1cnNvcixcbiAgICB9O1xuICB9XG5cbiAgLyogTUVNT1JJWkVSUyAqL1xuICBfZ2V0TWVtb3JpemVkRmVhdHVyZUNvbGxlY3Rpb24gPSBtZW1vaXplKCh7IHByb3BzRmVhdHVyZXMsIHN0YXRlRmVhdHVyZXMgfTogYW55KSA9PiB7XG4gICAgY29uc3QgZmVhdHVyZXMgPSBwcm9wc0ZlYXR1cmVzIHx8IHN0YXRlRmVhdHVyZXM7XG4gICAgLy8gQW55IGNoYW5nZXMgaW4gSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gd2lsbCBjcmVhdGUgYSBuZXcgb2JqZWN0XG4gICAgaWYgKGZlYXR1cmVzIGluc3RhbmNlb2YgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBmZWF0dXJlcztcbiAgICB9XG5cbiAgICBpZiAoZmVhdHVyZXMgJiYgZmVhdHVyZXMudHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJykge1xuICAgICAgcmV0dXJuIG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbih7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICAgIGZlYXR1cmVzOiBmZWF0dXJlcy5mZWF0dXJlcyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oe1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBmZWF0dXJlcyB8fCBbXSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgX2dldEZlYXR1cmVDb2xsZWN0aW9uID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLl9nZXRNZW1vcml6ZWRGZWF0dXJlQ29sbGVjdGlvbih7XG4gICAgICBwcm9wc0ZlYXR1cmVzOiB0aGlzLnByb3BzLmZlYXR1cmVzLFxuICAgICAgc3RhdGVGZWF0dXJlczogdGhpcy5zdGF0ZS5mZWF0dXJlQ29sbGVjdGlvbixcbiAgICB9KTtcbiAgfTtcblxuICBfc2V0dXBNb2RlSGFuZGxlciA9ICgpID0+IHtcbiAgICBjb25zdCBtb2RlID0gdGhpcy5wcm9wcy5tb2RlO1xuICAgIHRoaXMuX21vZGVIYW5kbGVyID0gbW9kZTtcblxuICAgIGlmICghbW9kZSkge1xuICAgICAgdGhpcy5fZGVncmVnaXN0ZXJFdmVudHMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWdpc3RlckV2ZW50cygpO1xuICB9O1xuXG4gIC8qIEVESVRJTkcgT1BFUkFUSU9OUyAqL1xuICBfY2xlYXJFZGl0aW5nU3RhdGUgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleDogbnVsbCxcblxuICAgICAgaG92ZXJlZDogbnVsbCxcblxuICAgICAgcG9pbnRlckRvd25QaWNrczogbnVsbCxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IG51bGwsXG5cbiAgICAgIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICAgICAgZGlkRHJhZzogZmFsc2UsXG4gICAgfSk7XG4gIH07XG5cbiAgX2dldFNlbGVjdGVkRmVhdHVyZUluZGV4ID0gKCkgPT4ge1xuICAgIGlmICgnc2VsZWN0ZWRGZWF0dXJlSW5kZXgnIGluIHRoaXMucHJvcHMpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZEZlYXR1cmVJbmRleDtcbiAgfTtcblxuICBfb25TZWxlY3QgPSAoc2VsZWN0ZWQ6IFNlbGVjdEFjdGlvbikgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoeyBzZWxlY3RlZEZlYXR1cmVJbmRleDogc2VsZWN0ZWQgJiYgc2VsZWN0ZWQuc2VsZWN0ZWRGZWF0dXJlSW5kZXggfSk7XG4gICAgaWYgKHRoaXMucHJvcHMub25TZWxlY3QpIHtcbiAgICAgIHRoaXMucHJvcHMub25TZWxlY3Qoc2VsZWN0ZWQpO1xuICAgIH1cbiAgfTtcblxuICBfb25FZGl0ID0gKGVkaXRBY3Rpb246IEVkaXRBY3Rpb248YW55PikgPT4ge1xuICAgIGNvbnN0IHsgZWRpdFR5cGUsIHVwZGF0ZWREYXRhLCBlZGl0Q29udGV4dCB9ID0gZWRpdEFjdGlvbjtcbiAgICB0aGlzLnNldFN0YXRlKHsgZmVhdHVyZUNvbGxlY3Rpb246IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbih1cGRhdGVkRGF0YSkgfSk7XG5cbiAgICBzd2l0Y2ggKGVkaXRUeXBlKSB7XG4gICAgICBjYXNlIEVESVRfVFlQRS5BRERfRkVBVFVSRTpcbiAgICAgICAgdGhpcy5fb25TZWxlY3Qoe1xuICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZTogbnVsbCxcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleDogbnVsbCxcbiAgICAgICAgICBzZWxlY3RlZEVkaXRIYW5kbGVJbmRleDogbnVsbCxcbiAgICAgICAgICBzY3JlZW5Db29yZHM6IGVkaXRDb250ZXh0ICYmIGVkaXRDb250ZXh0LnNjcmVlbkNvb3JkcyxcbiAgICAgICAgICBtYXBDb29yZHM6IGVkaXRDb250ZXh0ICYmIGVkaXRDb250ZXh0Lm1hcENvb3JkcyxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5vblVwZGF0ZSkge1xuICAgICAgdGhpcy5wcm9wcy5vblVwZGF0ZSh7XG4gICAgICAgIGRhdGE6IHVwZGF0ZWREYXRhICYmIHVwZGF0ZWREYXRhLmZlYXR1cmVzLFxuICAgICAgICBlZGl0VHlwZSxcbiAgICAgICAgZWRpdENvbnRleHQsXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgLyogRVZFTlRTICovXG4gIF9kZWdyZWdpc3RlckV2ZW50cyA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudE1hbmFnZXIgPSB0aGlzLl9jb250ZXh0ICYmIHRoaXMuX2NvbnRleHQuZXZlbnRNYW5hZ2VyO1xuICAgIGlmICghdGhpcy5fZXZlbnRzIHx8ICFldmVudE1hbmFnZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZXZlbnRzUmVnaXN0ZXJlZCkge1xuICAgICAgZXZlbnRNYW5hZ2VyLm9mZih0aGlzLl9ldmVudHMpO1xuICAgICAgdGhpcy5fZXZlbnRzUmVnaXN0ZXJlZCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBfcmVnaXN0ZXJFdmVudHMgPSAoKSA9PiB7XG4gICAgY29uc3QgcmVmID0gdGhpcy5fY29udGFpbmVyUmVmO1xuICAgIGNvbnN0IGV2ZW50TWFuYWdlciA9IHRoaXMuX2NvbnRleHQgJiYgdGhpcy5fY29udGV4dC5ldmVudE1hbmFnZXI7XG4gICAgaWYgKCF0aGlzLl9ldmVudHMgfHwgIXJlZiB8fCAhZXZlbnRNYW5hZ2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2V2ZW50c1JlZ2lzdGVyZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBldmVudE1hbmFnZXIub24odGhpcy5fZXZlbnRzLCByZWYpO1xuICAgIHRoaXMuX2V2ZW50c1JlZ2lzdGVyZWQgPSB0cnVlO1xuICB9O1xuXG4gIF9vbkV2ZW50ID0gKGhhbmRsZXI6IEZ1bmN0aW9uLCBldnQ6IE1qb2xuaXJFdmVudCwgc3RvcFByb3BhZ2F0aW9uOiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgZXZlbnQgPSB0aGlzLl9nZXRFdmVudChldnQpO1xuICAgIGhhbmRsZXIoZXZlbnQpO1xuXG4gICAgaWYgKHN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfTtcblxuICBfb25DbGljayA9IChldmVudDogQmFzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgbW9kZVByb3BzID0gdGhpcy5nZXRNb2RlUHJvcHMoKTtcbiAgICAvLyBUT0RPIHJlZmFjdG9yIEVkaXRpbmdNb2RlXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh0aGlzLl9tb2RlSGFuZGxlciBpbnN0YW5jZW9mIEVkaXRpbmdNb2RlIHx8IHRoaXMucHJvcHMuc2VsZWN0YWJsZSkge1xuICAgICAgY29uc3QgeyBtYXBDb29yZHMsIHNjcmVlbkNvb3JkcyB9ID0gZXZlbnQ7XG4gICAgICBjb25zdCBwaWNrZWRPYmplY3QgPSBldmVudC5waWNrcyAmJiBldmVudC5waWNrc1swXTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmIChwaWNrZWRPYmplY3QgJiYgaXNOdW1lcmljKHBpY2tlZE9iamVjdC5mZWF0dXJlSW5kZXgpKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlSW5kZXggPSBwaWNrZWRPYmplY3QuZmVhdHVyZUluZGV4O1xuICAgICAgICB0aGlzLl9vblNlbGVjdCh7XG4gICAgICAgICAgc2VsZWN0ZWRGZWF0dXJlOiBwaWNrZWRPYmplY3Qub2JqZWN0LFxuICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZUluZGV4LFxuICAgICAgICAgIHNlbGVjdGVkRWRpdEhhbmRsZUluZGV4OlxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcGlja2VkT2JqZWN0LnR5cGUgPT09IEVMRU1FTlRfVFlQRS5FRElUX0hBTkRMRSA/IHBpY2tlZE9iamVjdC5pbmRleCA6IG51bGwsXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG1hcENvb3JkcyxcbiAgICAgICAgICBzY3JlZW5Db29yZHMsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fb25TZWxlY3Qoe1xuICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZTogbnVsbCxcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleDogbnVsbCxcbiAgICAgICAgICBzZWxlY3RlZEVkaXRIYW5kbGVJbmRleDogbnVsbCxcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgbWFwQ29vcmRzLFxuICAgICAgICAgIHNjcmVlbkNvb3JkcyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fbW9kZUhhbmRsZXIuaGFuZGxlQ2xpY2soZXZlbnQsIG1vZGVQcm9wcyk7XG4gIH07XG5cbiAgX29uRGJsY2xpY2sgPSAoZXZlbnQ6IEJhc2VFdmVudCkgPT4ge1xuICAgIGlmIChpc051bWVyaWModGhpcy5fZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXgoKSkpIHtcbiAgICAgIGV2ZW50LnNvdXJjZUV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfTtcblxuICBfb25Qb2ludGVyTW92ZSA9IChldmVudDogQmFzZUV2ZW50KSA9PiB7XG4gICAgLy8gaG92ZXJpbmdcbiAgICBjb25zdCBob3ZlcmVkID0gdGhpcy5fZ2V0SG92ZXJTdGF0ZShldmVudCk7XG4gICAgY29uc3Qge1xuICAgICAgaXNEcmFnZ2luZyxcbiAgICAgIGRpZERyYWcsXG4gICAgICBwb2ludGVyRG93blBpY2tzLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkcyxcbiAgICB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGlmIChpc0RyYWdnaW5nICYmICFkaWREcmFnICYmIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzKSB7XG4gICAgICBjb25zdCBkeCA9IGV2ZW50LnNjcmVlbkNvb3Jkc1swXSAtIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzWzBdO1xuICAgICAgY29uc3QgZHkgPSBldmVudC5zY3JlZW5Db29yZHNbMV0gLSBwb2ludGVyRG93blNjcmVlbkNvb3Jkc1sxXTtcbiAgICAgIGlmIChkeCAqIGR4ICsgZHkgKiBkeSA+IDUpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGRpZERyYWc6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcG9pbnRlck1vdmVFdmVudCA9IHtcbiAgICAgIC4uLmV2ZW50LFxuICAgICAgaXNEcmFnZ2luZyxcbiAgICAgIHBvaW50ZXJEb3duUGlja3MsXG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkcyxcbiAgICAgIHBvaW50ZXJEb3duTWFwQ29vcmRzLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5zdGF0ZS5kaWREcmFnKSB7XG4gICAgICBjb25zdCBtb2RlUHJvcHMgPSB0aGlzLmdldE1vZGVQcm9wcygpO1xuICAgICAgdGhpcy5fbW9kZUhhbmRsZXIuaGFuZGxlUG9pbnRlck1vdmUocG9pbnRlck1vdmVFdmVudCwgbW9kZVByb3BzKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGhvdmVyZWQsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBsYXN0UG9pbnRlck1vdmVFdmVudDogcG9pbnRlck1vdmVFdmVudCxcbiAgICB9KTtcbiAgfTtcblxuICBfb25Qb2ludGVyRG93biA9IChldmVudDogQmFzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgaXNEcmFnZ2luZyA9IGV2ZW50LnBpY2tzICYmIGV2ZW50LnBpY2tzWzBdO1xuICAgIGNvbnN0IHN0YXJ0RHJhZ2dpbmdFdmVudCA9IHtcbiAgICAgIC4uLmV2ZW50LFxuICAgICAgaXNEcmFnZ2luZyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBldmVudC5zY3JlZW5Db29yZHMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkczogZXZlbnQubWFwQ29vcmRzLFxuICAgIH07XG5cbiAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgIGlzRHJhZ2dpbmcsXG4gICAgICBwb2ludGVyRG93blBpY2tzOiBldmVudC5waWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBldmVudC5zY3JlZW5Db29yZHMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkczogZXZlbnQubWFwQ29vcmRzLFxuICAgIH07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMuc2V0U3RhdGUobmV3U3RhdGUpO1xuXG4gICAgY29uc3QgbW9kZVByb3BzID0gdGhpcy5nZXRNb2RlUHJvcHMoKTtcbiAgICB0aGlzLl9tb2RlSGFuZGxlci5oYW5kbGVTdGFydERyYWdnaW5nKHN0YXJ0RHJhZ2dpbmdFdmVudCwgbW9kZVByb3BzKTtcbiAgfTtcblxuICBfb25Qb2ludGVyVXAgPSAoZXZlbnQ6IE1qb2xuaXJFdmVudCkgPT4ge1xuICAgIGNvbnN0IHsgZGlkRHJhZywgcG9pbnRlckRvd25QaWNrcywgcG9pbnRlckRvd25TY3JlZW5Db29yZHMsIHBvaW50ZXJEb3duTWFwQ29vcmRzIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHN0b3BEcmFnZ2luZ0V2ZW50ID0ge1xuICAgICAgLi4uZXZlbnQsXG4gICAgICBpc0RyYWdnaW5nOiBmYWxzZSxcbiAgICAgIHBvaW50ZXJEb3duUGlja3M6IGRpZERyYWcgPyBwb2ludGVyRG93blBpY2tzIDogbnVsbCxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBkaWREcmFnID8gcG9pbnRlckRvd25TY3JlZW5Db29yZHMgOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IGRpZERyYWcgPyBwb2ludGVyRG93bk1hcENvb3JkcyA6IG51bGwsXG4gICAgfTtcblxuICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgaXNEcmFnZ2luZzogZmFsc2UsXG4gICAgICBkaWREcmFnOiBmYWxzZSxcbiAgICAgIHBvaW50ZXJEb3duUGlja3M6IG51bGwsXG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogbnVsbCxcbiAgICAgIHBvaW50ZXJEb3duTWFwQ29vcmRzOiBudWxsLFxuICAgIH07XG5cbiAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICBjb25zdCBtb2RlUHJvcHMgPSB0aGlzLmdldE1vZGVQcm9wcygpO1xuXG4gICAgaWYgKGRpZERyYWcpIHtcbiAgICAgIHRoaXMuX21vZGVIYW5kbGVyLmhhbmRsZVN0b3BEcmFnZ2luZyhzdG9wRHJhZ2dpbmdFdmVudCwgbW9kZVByb3BzKTtcbiAgICB9XG4gIH07XG5cbiAgX29uUGFuID0gKGV2ZW50OiBCYXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCB7IGlzRHJhZ2dpbmcgfSA9IHRoaXMuc3RhdGU7XG4gICAgaWYgKGlzRHJhZ2dpbmcpIHtcbiAgICAgIGV2ZW50LnNvdXJjZUV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbW9kZUhhbmRsZXIuaGFuZGxlUGFuKSB7XG4gICAgICB0aGlzLl9tb2RlSGFuZGxlci5oYW5kbGVQYW4oZXZlbnQsIHRoaXMuZ2V0TW9kZVByb3BzKCkpO1xuICAgIH1cbiAgfTtcblxuICAvKiBIRUxQRVJTICovXG4gIHByb2plY3QgPSAocHQ6IFBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLl9jb250ZXh0ICYmIHRoaXMuX2NvbnRleHQudmlld3BvcnQ7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiB2aWV3cG9ydCAmJiB2aWV3cG9ydC5wcm9qZWN0KHB0KTtcbiAgfTtcblxuICB1bnByb2plY3QgPSAocHQ6IFBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLl9jb250ZXh0ICYmIHRoaXMuX2NvbnRleHQudmlld3BvcnQ7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiB2aWV3cG9ydCAmJiB2aWV3cG9ydC51bnByb2plY3QocHQpO1xuICB9O1xuXG4gIF9nZXRFdmVudChldnQ6IE1qb2xuaXJFdmVudCkge1xuICAgIGNvbnN0IGZlYXR1cmVzID0gdGhpcy5nZXRGZWF0dXJlcygpO1xuICAgIGNvbnN0IGd1aWRlcyA9IHRoaXMuX21vZGVIYW5kbGVyLmdldEd1aWRlcyh0aGlzLmdldE1vZGVQcm9wcygpKTtcbiAgICBjb25zdCBwaWNrZWQgPSBwYXJzZUV2ZW50RWxlbWVudChldnQsIGZlYXR1cmVzLCBndWlkZXMgJiYgZ3VpZGVzLmZlYXR1cmVzKTtcbiAgICBjb25zdCBzY3JlZW5Db29yZHMgPSBnZXRTY3JlZW5Db29yZHMoZXZ0KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgbWFwQ29vcmRzID0gdGhpcy51bnByb2plY3Qoc2NyZWVuQ29vcmRzKTtcblxuICAgIHJldHVybiB7XG4gICAgICBwaWNrczogcGlja2VkID8gW3BpY2tlZF0gOiBudWxsLFxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgc291cmNlRXZlbnQ6IGV2dCxcbiAgICB9O1xuICB9XG5cbiAgX2dldEhvdmVyU3RhdGUgPSAoZXZlbnQ6IEJhc2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IG9iamVjdCA9IGV2ZW50LnBpY2tzICYmIGV2ZW50LnBpY2tzWzBdO1xuICAgIGlmICghb2JqZWN0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2NyZWVuQ29vcmRzOiBldmVudC5zY3JlZW5Db29yZHMsXG4gICAgICBtYXBDb29yZHM6IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgIC4uLm9iamVjdCxcbiAgICB9O1xuICB9O1xuXG4gIF9yZW5kZXIoKSB7XG4gICAgcmV0dXJuIDxkaXYgLz47XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxNYXBDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7KGNvbnRleHQpID0+IHtcbiAgICAgICAgICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgICAgICAgICBjb25zdCB2aWV3cG9ydCA9IGNvbnRleHQgJiYgY29udGV4dC52aWV3cG9ydDtcblxuICAgICAgICAgIGlmICghdmlld3BvcnQgfHwgdmlld3BvcnQuaGVpZ2h0IDw9IDAgfHwgdmlld3BvcnQud2lkdGggPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlcigpO1xuICAgICAgICB9fVxuICAgICAgPC9NYXBDb250ZXh0LkNvbnN1bWVyPlxuICAgICk7XG4gIH1cbn1cbiJdfQ==

@@ -48,2 +48,3 @@ import { MapContextProps } from 'react-map-gl';

_onClick: (event: import("@nebula.gl/edit-modes/dist-types/types").BasePointerEvent) => void;
_onDblclick: (event: import("@nebula.gl/edit-modes/dist-types/types").BasePointerEvent) => void;
_onPointerMove: (event: import("@nebula.gl/edit-modes/dist-types/types").BasePointerEvent) => void;

@@ -50,0 +51,0 @@ _onPointerDown: (event: import("@nebula.gl/edit-modes/dist-types/types").BasePointerEvent) => void;

@@ -231,3 +231,3 @@ "use strict";

case _constants.EDIT_TYPE.ADD_FEATURE:
_this.props.onSelect({
_this._onSelect({
selectedFeature: null,

@@ -331,2 +331,8 @@ selectedFeatureIndex: null,

_defineProperty(_assertThisInitialized(_this), "_onDblclick", function (event) {
if ((0, _utils.isNumeric)(_this._getSelectedFeatureIndex())) {
event.sourceEvent.stopImmediatePropagation();
}
});
_defineProperty(_assertThisInitialized(_this), "_onPointerMove", function (event) {

@@ -375,4 +381,6 @@ // hovering

_defineProperty(_assertThisInitialized(_this), "_onPointerDown", function (event) {
var isDragging = event.picks && event.picks[0];
var startDraggingEvent = _objectSpread({}, event, {
isDragging: true,
isDragging: isDragging,
pointerDownScreenCoords: event.screenCoords,

@@ -383,3 +391,3 @@ pointerDownMapCoords: event.mapCoords

var newState = {
isDragging: true,
isDragging: isDragging,
pointerDownPicks: event.picks,

@@ -471,2 +479,5 @@ pointerDownScreenCoords: event.screenCoords,

},
dblclick: function dblclick(evt) {
return _this._onEvent(_this._onDblclick, evt, false);
},
click: function click(evt) {

@@ -587,2 +598,2 @@ return evt.stopImmediatePropagation();

_defineProperty(ModeHandler, "defaultProps", defaultProps);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tb2RlLWhhbmRsZXIudHN4Il0sIm5hbWVzIjpbImRlZmF1bHRQcm9wcyIsInNlbGVjdGFibGUiLCJtb2RlIiwiZmVhdHVyZXMiLCJvblNlbGVjdCIsIm9uVXBkYXRlIiwib25VcGRhdGVDdXJzb3IiLCJkZWZhdWx0U3RhdGUiLCJmZWF0dXJlQ29sbGVjdGlvbiIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwidHlwZSIsInNlbGVjdGVkRmVhdHVyZUluZGV4IiwiaG92ZXJlZCIsImlzRHJhZ2dpbmciLCJkaWREcmFnIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJwb2ludGVyRG93blBpY2tzIiwicG9pbnRlckRvd25TY3JlZW5Db29yZHMiLCJwb2ludGVyRG93bk1hcENvb3JkcyIsIk1vZGVIYW5kbGVyIiwicHJvcHMiLCJfZ2V0RmVhdHVyZUNvbGxlY3Rpb24iLCJnZXRPYmplY3QiLCJBcnJheSIsImlzQXJyYXkiLCJhZGRGZWF0dXJlcyIsInNldFN0YXRlIiwiZmVhdHVyZUluZGV4ZXMiLCJfZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXgiLCJkZWxldGVGZWF0dXJlcyIsIm5ld1N0YXRlIiwiZmluZEluZGV4IiwiaW5kZXgiLCJwcm9wc0ZlYXR1cmVzIiwic3RhdGVGZWF0dXJlcyIsIl9nZXRNZW1vcml6ZWRGZWF0dXJlQ29sbGVjdGlvbiIsInN0YXRlIiwiX21vZGVIYW5kbGVyIiwiX2RlZ3JlZ2lzdGVyRXZlbnRzIiwiX3JlZ2lzdGVyRXZlbnRzIiwic2VsZWN0ZWQiLCJlZGl0QWN0aW9uIiwiZWRpdFR5cGUiLCJ1cGRhdGVkRGF0YSIsImVkaXRDb250ZXh0IiwiRURJVF9UWVBFIiwiQUREX0ZFQVRVUkUiLCJzZWxlY3RlZEZlYXR1cmUiLCJzZWxlY3RlZEVkaXRIYW5kbGVJbmRleCIsInNjcmVlbkNvb3JkcyIsIm1hcENvb3JkcyIsImRhdGEiLCJldmVudE1hbmFnZXIiLCJfY29udGV4dCIsIl9ldmVudHMiLCJfZXZlbnRzUmVnaXN0ZXJlZCIsIm9mZiIsInJlZiIsIl9jb250YWluZXJSZWYiLCJvbiIsImhhbmRsZXIiLCJldnQiLCJzdG9wUHJvcGFnYXRpb24iLCJldmVudCIsIl9nZXRFdmVudCIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsIm1vZGVQcm9wcyIsImdldE1vZGVQcm9wcyIsIkVkaXRpbmdNb2RlIiwicGlja2VkT2JqZWN0IiwicGlja3MiLCJmZWF0dXJlSW5kZXgiLCJfb25TZWxlY3QiLCJvYmplY3QiLCJFTEVNRU5UX1RZUEUiLCJFRElUX0hBTkRMRSIsImhhbmRsZUNsaWNrIiwiX2dldEhvdmVyU3RhdGUiLCJkeCIsImR5IiwicG9pbnRlck1vdmVFdmVudCIsImhhbmRsZVBvaW50ZXJNb3ZlIiwic3RhcnREcmFnZ2luZ0V2ZW50IiwiaGFuZGxlU3RhcnREcmFnZ2luZyIsInN0b3BEcmFnZ2luZ0V2ZW50IiwiaGFuZGxlU3RvcERyYWdnaW5nIiwic291cmNlRXZlbnQiLCJoYW5kbGVQYW4iLCJwdCIsInZpZXdwb3J0IiwicHJvamVjdCIsInVucHJvamVjdCIsImFueWNsaWNrIiwiX29uRXZlbnQiLCJfb25DbGljayIsImNsaWNrIiwicG9pbnRlcm1vdmUiLCJfb25Qb2ludGVyTW92ZSIsInBvaW50ZXJkb3duIiwiX29uUG9pbnRlckRvd24iLCJwb2ludGVydXAiLCJfb25Qb2ludGVyVXAiLCJwYW5tb3ZlIiwiX29uUGFuIiwicGFuc3RhcnQiLCJwYW5lbmQiLCJfc2V0dXBNb2RlSGFuZGxlciIsInByZXZQcm9wcyIsIl9jbGVhckVkaXRpbmdTdGF0ZSIsInNlbGVjdGVkSW5kZXhlcyIsImZlYXR1cmVzRHJhZ2dhYmxlIiwib25FZGl0IiwiX29uRWRpdCIsImdldEZlYXR1cmVzIiwiZ3VpZGVzIiwiZ2V0R3VpZGVzIiwicGlja2VkIiwiY29udGV4dCIsImhlaWdodCIsIndpZHRoIiwiX3JlbmRlciIsIlB1cmVDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFXQTs7QUFD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OztFQXBhc0NDLG9COzs7O2dCQUFwQnRHLFcsaUJBQ0UsYTs7Z0JBREZBLFcsa0JBRUduQixZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX01hcENvbnRleHQgYXMgTWFwQ29udGV4dCwgTWFwQ29udGV4dFByb3BzIH0gZnJvbSAncmVhY3QtbWFwLWdsJztcbmltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24sXG4gIEZlYXR1cmUsXG4gIFBvc2l0aW9uLFxuICBFZGl0QWN0aW9uLFxuICBfbWVtb2l6ZSBhcyBtZW1vaXplLFxufSBmcm9tICdAbmVidWxhLmdsL2VkaXQtbW9kZXMnO1xuXG5pbXBvcnQgeyBNam9sbmlyRXZlbnQgfSBmcm9tICdtam9sbmlyLmpzJztcbmltcG9ydCB7IEJhc2VFdmVudCwgRWRpdG9yUHJvcHMsIEVkaXRvclN0YXRlLCBTZWxlY3RBY3Rpb24gfSBmcm9tICcuL3R5cGVzJztcblxuaW1wb3J0IEVkaXRpbmdNb2RlIGZyb20gJy4vZWRpdC1tb2Rlcy9lZGl0aW5nLW1vZGUnO1xuaW1wb3J0IHsgZ2V0U2NyZWVuQ29vcmRzLCBwYXJzZUV2ZW50RWxlbWVudCwgaXNOdW1lcmljIH0gZnJvbSAnLi9lZGl0LW1vZGVzL3V0aWxzJztcbmltcG9ydCB7IEVESVRfVFlQRSwgRUxFTUVOVF9UWVBFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIHNlbGVjdGFibGU6IHRydWUsXG4gIG1vZGU6IG51bGwsXG4gIGZlYXR1cmVzOiBudWxsLFxuICBvblNlbGVjdDogbnVsbCxcbiAgb25VcGRhdGU6IG51bGwsXG4gIG9uVXBkYXRlQ3Vyc29yOiAoKSA9PiB7fSxcbn07XG5cbmNvbnN0IGRlZmF1bHRTdGF0ZSA9IHtcbiAgZmVhdHVyZUNvbGxlY3Rpb246IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbih7XG4gICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICBmZWF0dXJlczogW10sXG4gIH0pLFxuXG4gIHNlbGVjdGVkRmVhdHVyZUluZGV4OiBudWxsLFxuXG4gIC8vIGluZGV4LCBpc0d1aWRlLCBtYXBDb29yZHMsIHNjcmVlbkNvb3Jkc1xuICBob3ZlcmVkOiBudWxsLFxuXG4gIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICBkaWREcmFnOiBmYWxzZSxcblxuICBsYXN0UG9pbnRlck1vdmVFdmVudDogbnVsbCxcblxuICBwb2ludGVyRG93blBpY2tzOiBudWxsLFxuICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogbnVsbCxcbiAgcG9pbnRlckRvd25NYXBDb29yZHM6IG51bGwsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNb2RlSGFuZGxlciBleHRlbmRzIFB1cmVDb21wb25lbnQ8RWRpdG9yUHJvcHMsIEVkaXRvclN0YXRlPiB7XG4gIHN0YXRpYyBkaXNwbGF5TmFtZSA9ICdNb2RlSGFuZGxlcic7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IEVkaXRvclByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSBkZWZhdWx0U3RhdGU7XG4gICAgdGhpcy5fZXZlbnRzUmVnaXN0ZXJlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5fZXZlbnRzID0ge1xuICAgICAgYW55Y2xpY2s6IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25DbGljaywgZXZ0LCB0cnVlKSxcbiAgICAgIGNsaWNrOiAoZXZ0KSA9PiBldnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksXG4gICAgICBwb2ludGVybW92ZTogKGV2dCkgPT4gdGhpcy5fb25FdmVudCh0aGlzLl9vblBvaW50ZXJNb3ZlLCBldnQsIHRydWUpLFxuICAgICAgcG9pbnRlcmRvd246IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25Qb2ludGVyRG93biwgZXZ0LCB0cnVlKSxcbiAgICAgIHBvaW50ZXJ1cDogKGV2dCkgPT4gdGhpcy5fb25FdmVudCh0aGlzLl9vblBvaW50ZXJVcCwgZXZ0LCB0cnVlKSxcbiAgICAgIHBhbm1vdmU6IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25QYW4sIGV2dCwgZmFsc2UpLFxuICAgICAgcGFuc3RhcnQ6IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25QYW4sIGV2dCwgZmFsc2UpLFxuICAgICAgcGFuZW5kOiAoZXZ0KSA9PiB0aGlzLl9vbkV2ZW50KHRoaXMuX29uUGFuLCBldnQsIGZhbHNlKSxcbiAgICB9O1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5fc2V0dXBNb2RlSGFuZGxlcigpO1xuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wczogRWRpdG9yUHJvcHMpIHtcbiAgICBpZiAocHJldlByb3BzLm1vZGUgIT09IHRoaXMucHJvcHMubW9kZSkge1xuICAgICAgdGhpcy5fY2xlYXJFZGl0aW5nU3RhdGUoKTtcbiAgICAgIHRoaXMuX3NldHVwTW9kZUhhbmRsZXIoKTtcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLl9kZWdyZWdpc3RlckV2ZW50cygpO1xuICB9XG5cbiAgX2V2ZW50czogYW55O1xuICBfZXZlbnRzUmVnaXN0ZXJlZDogYm9vbGVhbjtcbiAgX21vZGVIYW5kbGVyOiBhbnk7XG4gIF9jb250ZXh0OiBNYXBDb250ZXh0UHJvcHMgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBfY29udGFpbmVyUmVmOiBIVE1MRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgZ2V0RmVhdHVyZXMgPSAoKSA9PiB7XG4gICAgbGV0IGZlYXR1cmVDb2xsZWN0aW9uID0gdGhpcy5fZ2V0RmVhdHVyZUNvbGxlY3Rpb24oKTtcbiAgICBmZWF0dXJlQ29sbGVjdGlvbiA9IGZlYXR1cmVDb2xsZWN0aW9uICYmIGZlYXR1cmVDb2xsZWN0aW9uLmdldE9iamVjdCgpO1xuICAgIHJldHVybiBmZWF0dXJlQ29sbGVjdGlvbiAmJiBmZWF0dXJlQ29sbGVjdGlvbi5mZWF0dXJlcztcbiAgfTtcblxuICBhZGRGZWF0dXJlcyA9IChmZWF0dXJlczogRmVhdHVyZSB8IEZlYXR1cmVbXSkgPT4ge1xuICAgIGxldCBmZWF0dXJlQ29sbGVjdGlvbiA9IHRoaXMuX2dldEZlYXR1cmVDb2xsZWN0aW9uKCk7XG4gICAgaWYgKGZlYXR1cmVDb2xsZWN0aW9uKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmVhdHVyZXMpKSB7XG4gICAgICAgIGZlYXR1cmVzID0gW2ZlYXR1cmVzXTtcbiAgICAgIH1cblxuICAgICAgZmVhdHVyZUNvbGxlY3Rpb24gPSBmZWF0dXJlQ29sbGVjdGlvbi5hZGRGZWF0dXJlcyhmZWF0dXJlcyk7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgZmVhdHVyZUNvbGxlY3Rpb24gfSk7XG4gICAgfVxuICB9O1xuXG4gIGRlbGV0ZUZlYXR1cmVzID0gKGZlYXR1cmVJbmRleGVzOiBudW1iZXIgfCBudW1iZXJbXSkgPT4ge1xuICAgIGxldCBmZWF0dXJlQ29sbGVjdGlvbiA9IHRoaXMuX2dldEZlYXR1cmVDb2xsZWN0aW9uKCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlSW5kZXggPSB0aGlzLl9nZXRTZWxlY3RlZEZlYXR1cmVJbmRleCgpO1xuICAgIGlmIChmZWF0dXJlQ29sbGVjdGlvbikge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZlYXR1cmVJbmRleGVzKSkge1xuICAgICAgICBmZWF0dXJlSW5kZXhlcyA9IFtmZWF0dXJlSW5kZXhlc107XG4gICAgICB9XG4gICAgICBmZWF0dXJlQ29sbGVjdGlvbiA9IGZlYXR1cmVDb2xsZWN0aW9uLmRlbGV0ZUZlYXR1cmVzKGZlYXR1cmVJbmRleGVzKTtcbiAgICAgIGNvbnN0IG5ld1N0YXRlOiBhbnkgPSB7IGZlYXR1cmVDb2xsZWN0aW9uIH07XG4gICAgICBpZiAoZmVhdHVyZUluZGV4ZXMuZmluZEluZGV4KChpbmRleCkgPT4gc2VsZWN0ZWRGZWF0dXJlSW5kZXggPT09IGluZGV4KSA+PSAwKSB7XG4gICAgICAgIG5ld1N0YXRlLnNlbGVjdGVkRmVhdHVyZUluZGV4ID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0U3RhdGUobmV3U3RhdGUpO1xuICAgIH1cbiAgfTtcblxuICBnZXRNb2RlUHJvcHMoKSB7XG4gICAgY29uc3QgZmVhdHVyZUNvbGxlY3Rpb24gPSB0aGlzLl9nZXRGZWF0dXJlQ29sbGVjdGlvbigpO1xuXG4gICAgY29uc3QgeyBsYXN0UG9pbnRlck1vdmVFdmVudCB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmVJbmRleCA9IHRoaXMuX2dldFNlbGVjdGVkRmVhdHVyZUluZGV4KCk7XG4gICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLl9jb250ZXh0ICYmIHRoaXMuX2NvbnRleHQudmlld3BvcnQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogZmVhdHVyZUNvbGxlY3Rpb24gJiYgZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZUNvbGxlY3Rpb24sXG4gICAgICBzZWxlY3RlZEluZGV4ZXM6IGlzTnVtZXJpYyhzZWxlY3RlZEZlYXR1cmVJbmRleCkgPyBbc2VsZWN0ZWRGZWF0dXJlSW5kZXhdIDogW10sXG4gICAgICBsYXN0UG9pbnRlck1vdmVFdmVudCxcbiAgICAgIHZpZXdwb3J0LFxuICAgICAgZmVhdHVyZXNEcmFnZ2FibGU6IHRoaXMucHJvcHMuZmVhdHVyZXNEcmFnZ2FibGUsXG4gICAgICBvbkVkaXQ6IHRoaXMuX29uRWRpdCxcbiAgICAgIG9uVXBkYXRlQ3Vyc29yOiB0aGlzLnByb3BzLm9uVXBkYXRlQ3Vyc29yLFxuICAgIH07XG4gIH1cblxuICAvKiBNRU1PUklaRVJTICovXG4gIF9nZXRNZW1vcml6ZWRGZWF0dXJlQ29sbGVjdGlvbiA9IG1lbW9pemUoKHsgcHJvcHNGZWF0dXJlcywgc3RhdGVGZWF0dXJlcyB9OiBhbnkpID0+IHtcbiAgICBjb25zdCBmZWF0dXJlcyA9IHByb3BzRmVhdHVyZXMgfHwgc3RhdGVGZWF0dXJlcztcbiAgICAvLyBBbnkgY2hhbmdlcyBpbiBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbiB3aWxsIGNyZWF0ZSBhIG5ldyBvYmplY3RcbiAgICBpZiAoZmVhdHVyZXMgaW5zdGFuY2VvZiBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbikge1xuICAgICAgcmV0dXJuIGZlYXR1cmVzO1xuICAgIH1cblxuICAgIGlmIChmZWF0dXJlcyAmJiBmZWF0dXJlcy50eXBlID09PSAnRmVhdHVyZUNvbGxlY3Rpb24nKSB7XG4gICAgICByZXR1cm4gbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgICAgZmVhdHVyZXM6IGZlYXR1cmVzLmZlYXR1cmVzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbih7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IGZlYXR1cmVzIHx8IFtdLFxuICAgIH0pO1xuICB9KTtcblxuICBfZ2V0RmVhdHVyZUNvbGxlY3Rpb24gPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuX2dldE1lbW9yaXplZEZlYXR1cmVDb2xsZWN0aW9uKHtcbiAgICAgIHByb3BzRmVhdHVyZXM6IHRoaXMucHJvcHMuZmVhdHVyZXMsXG4gICAgICBzdGF0ZUZlYXR1cmVzOiB0aGlzLnN0YXRlLmZlYXR1cmVDb2xsZWN0aW9uLFxuICAgIH0pO1xuICB9O1xuXG4gIF9zZXR1cE1vZGVIYW5kbGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IG1vZGUgPSB0aGlzLnByb3BzLm1vZGU7XG4gICAgdGhpcy5fbW9kZUhhbmRsZXIgPSBtb2RlO1xuXG4gICAgaWYgKCFtb2RlKSB7XG4gICAgICB0aGlzLl9kZWdyZWdpc3RlckV2ZW50cygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3JlZ2lzdGVyRXZlbnRzKCk7XG4gIH07XG5cbiAgLyogRURJVElORyBPUEVSQVRJT05TICovXG4gIF9jbGVhckVkaXRpbmdTdGF0ZSA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkRmVhdHVyZUluZGV4OiBudWxsLFxuXG4gICAgICBob3ZlcmVkOiBudWxsLFxuXG4gICAgICBwb2ludGVyRG93blBpY2tzOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IG51bGwsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkczogbnVsbCxcblxuICAgICAgaXNEcmFnZ2luZzogZmFsc2UsXG4gICAgICBkaWREcmFnOiBmYWxzZSxcbiAgICB9KTtcbiAgfTtcblxuICBfZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXggPSAoKSA9PiB7XG4gICAgaWYgKCdzZWxlY3RlZEZlYXR1cmVJbmRleCcgaW4gdGhpcy5wcm9wcykge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuc2VsZWN0ZWRGZWF0dXJlSW5kZXg7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkRmVhdHVyZUluZGV4O1xuICB9O1xuXG4gIF9vblNlbGVjdCA9IChzZWxlY3RlZDogU2VsZWN0QWN0aW9uKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHNlbGVjdGVkRmVhdHVyZUluZGV4OiBzZWxlY3RlZCAmJiBzZWxlY3RlZC5zZWxlY3RlZEZlYXR1cmVJbmRleCB9KTtcbiAgICBpZiAodGhpcy5wcm9wcy5vblNlbGVjdCkge1xuICAgICAgdGhpcy5wcm9wcy5vblNlbGVjdChzZWxlY3RlZCk7XG4gICAgfVxuICB9O1xuXG4gIF9vbkVkaXQgPSAoZWRpdEFjdGlvbjogRWRpdEFjdGlvbjxhbnk+KSA9PiB7XG4gICAgY29uc3QgeyBlZGl0VHlwZSwgdXBkYXRlZERhdGEsIGVkaXRDb250ZXh0IH0gPSBlZGl0QWN0aW9uO1xuICAgIHRoaXMuc2V0U3RhdGUoeyBmZWF0dXJlQ29sbGVjdGlvbjogbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHVwZGF0ZWREYXRhKSB9KTtcblxuICAgIHN3aXRjaCAoZWRpdFR5cGUpIHtcbiAgICAgIGNhc2UgRURJVF9UWVBFLkFERF9GRUFUVVJFOlxuICAgICAgICB0aGlzLnByb3BzLm9uU2VsZWN0KHtcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmU6IG51bGwsXG4gICAgICAgICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXg6IG51bGwsXG4gICAgICAgICAgc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXg6IG51bGwsXG4gICAgICAgICAgc2NyZWVuQ29vcmRzOiBlZGl0Q29udGV4dCAmJiBlZGl0Q29udGV4dC5zY3JlZW5Db29yZHMsXG4gICAgICAgICAgbWFwQ29vcmRzOiBlZGl0Q29udGV4dCAmJiBlZGl0Q29udGV4dC5tYXBDb29yZHMsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMub25VcGRhdGUpIHtcbiAgICAgIHRoaXMucHJvcHMub25VcGRhdGUoe1xuICAgICAgICBkYXRhOiB1cGRhdGVkRGF0YSAmJiB1cGRhdGVkRGF0YS5mZWF0dXJlcyxcbiAgICAgICAgZWRpdFR5cGUsXG4gICAgICAgIGVkaXRDb250ZXh0LFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIC8qIEVWRU5UUyAqL1xuICBfZGVncmVnaXN0ZXJFdmVudHMgPSAoKSA9PiB7XG4gICAgY29uc3QgZXZlbnRNYW5hZ2VyID0gdGhpcy5fY29udGV4dCAmJiB0aGlzLl9jb250ZXh0LmV2ZW50TWFuYWdlcjtcbiAgICBpZiAoIXRoaXMuX2V2ZW50cyB8fCAhZXZlbnRNYW5hZ2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2V2ZW50c1JlZ2lzdGVyZWQpIHtcbiAgICAgIGV2ZW50TWFuYWdlci5vZmYodGhpcy5fZXZlbnRzKTtcbiAgICAgIHRoaXMuX2V2ZW50c1JlZ2lzdGVyZWQgPSBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgX3JlZ2lzdGVyRXZlbnRzID0gKCkgPT4ge1xuICAgIGNvbnN0IHJlZiA9IHRoaXMuX2NvbnRhaW5lclJlZjtcbiAgICBjb25zdCBldmVudE1hbmFnZXIgPSB0aGlzLl9jb250ZXh0ICYmIHRoaXMuX2NvbnRleHQuZXZlbnRNYW5hZ2VyO1xuICAgIGlmICghdGhpcy5fZXZlbnRzIHx8ICFyZWYgfHwgIWV2ZW50TWFuYWdlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9ldmVudHNSZWdpc3RlcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXZlbnRNYW5hZ2VyLm9uKHRoaXMuX2V2ZW50cywgcmVmKTtcbiAgICB0aGlzLl9ldmVudHNSZWdpc3RlcmVkID0gdHJ1ZTtcbiAgfTtcblxuICBfb25FdmVudCA9IChoYW5kbGVyOiBGdW5jdGlvbiwgZXZ0OiBNam9sbmlyRXZlbnQsIHN0b3BQcm9wYWdhdGlvbjogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5fZ2V0RXZlbnQoZXZ0KTtcbiAgICBoYW5kbGVyKGV2ZW50KTtcblxuICAgIGlmIChzdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgIGV2dC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH07XG5cbiAgX29uQ2xpY2sgPSAoZXZlbnQ6IEJhc2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IG1vZGVQcm9wcyA9IHRoaXMuZ2V0TW9kZVByb3BzKCk7XG4gICAgLy8gVE9ETyByZWZhY3RvciBFZGl0aW5nTW9kZVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAodGhpcy5fbW9kZUhhbmRsZXIgaW5zdGFuY2VvZiBFZGl0aW5nTW9kZSB8fCB0aGlzLnByb3BzLnNlbGVjdGFibGUpIHtcbiAgICAgIGNvbnN0IHsgbWFwQ29vcmRzLCBzY3JlZW5Db29yZHMgfSA9IGV2ZW50O1xuICAgICAgY29uc3QgcGlja2VkT2JqZWN0ID0gZXZlbnQucGlja3MgJiYgZXZlbnQucGlja3NbMF07XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAocGlja2VkT2JqZWN0ICYmIGlzTnVtZXJpYyhwaWNrZWRPYmplY3QuZmVhdHVyZUluZGV4KSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ID0gcGlja2VkT2JqZWN0LmZlYXR1cmVJbmRleDtcbiAgICAgICAgdGhpcy5fb25TZWxlY3Qoe1xuICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZTogcGlja2VkT2JqZWN0Lm9iamVjdCxcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleCxcbiAgICAgICAgICBzZWxlY3RlZEVkaXRIYW5kbGVJbmRleDpcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHBpY2tlZE9iamVjdC50eXBlID09PSBFTEVNRU5UX1RZUEUuRURJVF9IQU5ETEUgPyBwaWNrZWRPYmplY3QuaW5kZXggOiBudWxsLFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBtYXBDb29yZHMsXG4gICAgICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX29uU2VsZWN0KHtcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmU6IG51bGwsXG4gICAgICAgICAgc2VsZWN0ZWRGZWF0dXJlSW5kZXg6IG51bGwsXG4gICAgICAgICAgc2VsZWN0ZWRFZGl0SGFuZGxlSW5kZXg6IG51bGwsXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG1hcENvb3JkcyxcbiAgICAgICAgICBzY3JlZW5Db29yZHMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX21vZGVIYW5kbGVyLmhhbmRsZUNsaWNrKGV2ZW50LCBtb2RlUHJvcHMpO1xuICB9O1xuXG4gIF9vblBvaW50ZXJNb3ZlID0gKGV2ZW50OiBCYXNlRXZlbnQpID0+IHtcbiAgICAvLyBob3ZlcmluZ1xuICAgIGNvbnN0IGhvdmVyZWQgPSB0aGlzLl9nZXRIb3ZlclN0YXRlKGV2ZW50KTtcbiAgICBjb25zdCB7XG4gICAgICBpc0RyYWdnaW5nLFxuICAgICAgZGlkRHJhZyxcbiAgICAgIHBvaW50ZXJEb3duUGlja3MsXG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkcyxcbiAgICAgIHBvaW50ZXJEb3duTWFwQ29vcmRzLFxuICAgIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgaWYgKGlzRHJhZ2dpbmcgJiYgIWRpZERyYWcgJiYgcG9pbnRlckRvd25TY3JlZW5Db29yZHMpIHtcbiAgICAgIGNvbnN0IGR4ID0gZXZlbnQuc2NyZWVuQ29vcmRzWzBdIC0gcG9pbnRlckRvd25TY3JlZW5Db29yZHNbMF07XG4gICAgICBjb25zdCBkeSA9IGV2ZW50LnNjcmVlbkNvb3Jkc1sxXSAtIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzWzFdO1xuICAgICAgaWYgKGR4ICogZHggKyBkeSAqIGR5ID4gNSkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGlkRHJhZzogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBwb2ludGVyTW92ZUV2ZW50ID0ge1xuICAgICAgLi4uZXZlbnQsXG4gICAgICBpc0RyYWdnaW5nLFxuICAgICAgcG9pbnRlckRvd25QaWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHMsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLnN0YXRlLmRpZERyYWcpIHtcbiAgICAgIGNvbnN0IG1vZGVQcm9wcyA9IHRoaXMuZ2V0TW9kZVByb3BzKCk7XG4gICAgICB0aGlzLl9tb2RlSGFuZGxlci5oYW5kbGVQb2ludGVyTW92ZShwb2ludGVyTW92ZUV2ZW50LCBtb2RlUHJvcHMpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgaG92ZXJlZCxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGxhc3RQb2ludGVyTW92ZUV2ZW50OiBwb2ludGVyTW92ZUV2ZW50LFxuICAgIH0pO1xuICB9O1xuXG4gIF9vblBvaW50ZXJEb3duID0gKGV2ZW50OiBCYXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBzdGFydERyYWdnaW5nRXZlbnQgPSB7XG4gICAgICAuLi5ldmVudCxcbiAgICAgIGlzRHJhZ2dpbmc6IHRydWUsXG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogZXZlbnQuc2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IGV2ZW50Lm1hcENvb3JkcyxcbiAgICB9O1xuXG4gICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICBpc0RyYWdnaW5nOiB0cnVlLFxuICAgICAgcG9pbnRlckRvd25QaWNrczogZXZlbnQucGlja3MsXG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogZXZlbnQuc2NyZWVuQ29vcmRzLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IGV2ZW50Lm1hcENvb3JkcyxcbiAgICB9O1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKTtcblxuICAgIGNvbnN0IG1vZGVQcm9wcyA9IHRoaXMuZ2V0TW9kZVByb3BzKCk7XG4gICAgdGhpcy5fbW9kZUhhbmRsZXIuaGFuZGxlU3RhcnREcmFnZ2luZyhzdGFydERyYWdnaW5nRXZlbnQsIG1vZGVQcm9wcyk7XG4gIH07XG5cbiAgX29uUG9pbnRlclVwID0gKGV2ZW50OiBNam9sbmlyRXZlbnQpID0+IHtcbiAgICBjb25zdCB7IGRpZERyYWcsIHBvaW50ZXJEb3duUGlja3MsIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzLCBwb2ludGVyRG93bk1hcENvb3JkcyB9ID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCBzdG9wRHJhZ2dpbmdFdmVudCA9IHtcbiAgICAgIC4uLmV2ZW50LFxuICAgICAgaXNEcmFnZ2luZzogZmFsc2UsXG4gICAgICBwb2ludGVyRG93blBpY2tzOiBkaWREcmFnID8gcG9pbnRlckRvd25QaWNrcyA6IG51bGwsXG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogZGlkRHJhZyA/IHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzIDogbnVsbCxcbiAgICAgIHBvaW50ZXJEb3duTWFwQ29vcmRzOiBkaWREcmFnID8gcG9pbnRlckRvd25NYXBDb29yZHMgOiBudWxsLFxuICAgIH07XG5cbiAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICAgICAgZGlkRHJhZzogZmFsc2UsXG4gICAgICBwb2ludGVyRG93blBpY2tzOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHM6IG51bGwsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkczogbnVsbCxcbiAgICB9O1xuXG4gICAgdGhpcy5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgY29uc3QgbW9kZVByb3BzID0gdGhpcy5nZXRNb2RlUHJvcHMoKTtcblxuICAgIGlmIChkaWREcmFnKSB7XG4gICAgICB0aGlzLl9tb2RlSGFuZGxlci5oYW5kbGVTdG9wRHJhZ2dpbmcoc3RvcERyYWdnaW5nRXZlbnQsIG1vZGVQcm9wcyk7XG4gICAgfVxuICB9O1xuXG4gIF9vblBhbiA9IChldmVudDogQmFzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyBpc0RyYWdnaW5nIH0gPSB0aGlzLnN0YXRlO1xuICAgIGlmIChpc0RyYWdnaW5nKSB7XG4gICAgICBldmVudC5zb3VyY2VFdmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX21vZGVIYW5kbGVyLmhhbmRsZVBhbikge1xuICAgICAgdGhpcy5fbW9kZUhhbmRsZXIuaGFuZGxlUGFuKGV2ZW50LCB0aGlzLmdldE1vZGVQcm9wcygpKTtcbiAgICB9XG4gIH07XG5cbiAgLyogSEVMUEVSUyAqL1xuICBwcm9qZWN0ID0gKHB0OiBQb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5fY29udGV4dCAmJiB0aGlzLl9jb250ZXh0LnZpZXdwb3J0O1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gdmlld3BvcnQgJiYgdmlld3BvcnQucHJvamVjdChwdCk7XG4gIH07XG5cbiAgdW5wcm9qZWN0ID0gKHB0OiBQb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5fY29udGV4dCAmJiB0aGlzLl9jb250ZXh0LnZpZXdwb3J0O1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gdmlld3BvcnQgJiYgdmlld3BvcnQudW5wcm9qZWN0KHB0KTtcbiAgfTtcblxuICBfZ2V0RXZlbnQoZXZ0OiBNam9sbmlyRXZlbnQpIHtcbiAgICBjb25zdCBmZWF0dXJlcyA9IHRoaXMuZ2V0RmVhdHVyZXMoKTtcbiAgICBjb25zdCBndWlkZXMgPSB0aGlzLl9tb2RlSGFuZGxlci5nZXRHdWlkZXModGhpcy5nZXRNb2RlUHJvcHMoKSk7XG4gICAgY29uc3QgcGlja2VkID0gcGFyc2VFdmVudEVsZW1lbnQoZXZ0LCBmZWF0dXJlcywgZ3VpZGVzICYmIGd1aWRlcy5mZWF0dXJlcyk7XG4gICAgY29uc3Qgc2NyZWVuQ29vcmRzID0gZ2V0U2NyZWVuQ29vcmRzKGV2dCk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IG1hcENvb3JkcyA9IHRoaXMudW5wcm9qZWN0KHNjcmVlbkNvb3Jkcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcGlja3M6IHBpY2tlZCA/IFtwaWNrZWRdIDogbnVsbCxcbiAgICAgIHNjcmVlbkNvb3JkcyxcbiAgICAgIG1hcENvb3JkcyxcbiAgICAgIHNvdXJjZUV2ZW50OiBldnQsXG4gICAgfTtcbiAgfVxuXG4gIF9nZXRIb3ZlclN0YXRlID0gKGV2ZW50OiBCYXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBvYmplY3QgPSBldmVudC5waWNrcyAmJiBldmVudC5waWNrc1swXTtcbiAgICBpZiAoIW9iamVjdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcmVlbkNvb3JkczogZXZlbnQuc2NyZWVuQ29vcmRzLFxuICAgICAgbWFwQ29vcmRzOiBldmVudC5tYXBDb29yZHMsXG4gICAgICAuLi5vYmplY3QsXG4gICAgfTtcbiAgfTtcblxuICBfcmVuZGVyKCkge1xuICAgIHJldHVybiA8ZGl2IC8+O1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8TWFwQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgeyhjb250ZXh0KSA9PiB7XG4gICAgICAgICAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgICAgY29uc3Qgdmlld3BvcnQgPSBjb250ZXh0ICYmIGNvbnRleHQudmlld3BvcnQ7XG5cbiAgICAgICAgICBpZiAoIXZpZXdwb3J0IHx8IHZpZXdwb3J0LmhlaWdodCA8PSAwIHx8IHZpZXdwb3J0LndpZHRoIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0aGlzLl9yZW5kZXIoKTtcbiAgICAgICAgfX1cbiAgICAgIDwvTWFwQ29udGV4dC5Db25zdW1lcj5cbiAgICApO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tb2RlLWhhbmRsZXIudHN4Il0sIm5hbWVzIjpbImRlZmF1bHRQcm9wcyIsInNlbGVjdGFibGUiLCJtb2RlIiwiZmVhdHVyZXMiLCJvblNlbGVjdCIsIm9uVXBkYXRlIiwib25VcGRhdGVDdXJzb3IiLCJkZWZhdWx0U3RhdGUiLCJmZWF0dXJlQ29sbGVjdGlvbiIsIkltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uIiwidHlwZSIsInNlbGVjdGVkRmVhdHVyZUluZGV4IiwiaG92ZXJlZCIsImlzRHJhZ2dpbmciLCJkaWREcmFnIiwibGFzdFBvaW50ZXJNb3ZlRXZlbnQiLCJwb2ludGVyRG93blBpY2tzIiwicG9pbnRlckRvd25TY3JlZW5Db29yZHMiLCJwb2ludGVyRG93bk1hcENvb3JkcyIsIk1vZGVIYW5kbGVyIiwicHJvcHMiLCJfZ2V0RmVhdHVyZUNvbGxlY3Rpb24iLCJnZXRPYmplY3QiLCJBcnJheSIsImlzQXJyYXkiLCJhZGRGZWF0dXJlcyIsInNldFN0YXRlIiwiZmVhdHVyZUluZGV4ZXMiLCJfZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXgiLCJkZWxldGVGZWF0dXJlcyIsIm5ld1N0YXRlIiwiZmluZEluZGV4IiwiaW5kZXgiLCJwcm9wc0ZlYXR1cmVzIiwic3RhdGVGZWF0dXJlcyIsIl9nZXRNZW1vcml6ZWRGZWF0dXJlQ29sbGVjdGlvbiIsInN0YXRlIiwiX21vZGVIYW5kbGVyIiwiX2RlZ3JlZ2lzdGVyRXZlbnRzIiwiX3JlZ2lzdGVyRXZlbnRzIiwic2VsZWN0ZWQiLCJlZGl0QWN0aW9uIiwiZWRpdFR5cGUiLCJ1cGRhdGVkRGF0YSIsImVkaXRDb250ZXh0IiwiRURJVF9UWVBFIiwiQUREX0ZFQVRVUkUiLCJfb25TZWxlY3QiLCJzZWxlY3RlZEZlYXR1cmUiLCJzZWxlY3RlZEVkaXRIYW5kbGVJbmRleCIsInNjcmVlbkNvb3JkcyIsIm1hcENvb3JkcyIsImRhdGEiLCJldmVudE1hbmFnZXIiLCJfY29udGV4dCIsIl9ldmVudHMiLCJfZXZlbnRzUmVnaXN0ZXJlZCIsIm9mZiIsInJlZiIsIl9jb250YWluZXJSZWYiLCJvbiIsImhhbmRsZXIiLCJldnQiLCJzdG9wUHJvcGFnYXRpb24iLCJldmVudCIsIl9nZXRFdmVudCIsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsIm1vZGVQcm9wcyIsImdldE1vZGVQcm9wcyIsIkVkaXRpbmdNb2RlIiwicGlja2VkT2JqZWN0IiwicGlja3MiLCJmZWF0dXJlSW5kZXgiLCJvYmplY3QiLCJFTEVNRU5UX1RZUEUiLCJFRElUX0hBTkRMRSIsImhhbmRsZUNsaWNrIiwic291cmNlRXZlbnQiLCJfZ2V0SG92ZXJTdGF0ZSIsImR4IiwiZHkiLCJwb2ludGVyTW92ZUV2ZW50IiwiaGFuZGxlUG9pbnRlck1vdmUiLCJzdGFydERyYWdnaW5nRXZlbnQiLCJoYW5kbGVTdGFydERyYWdnaW5nIiwic3RvcERyYWdnaW5nRXZlbnQiLCJoYW5kbGVTdG9wRHJhZ2dpbmciLCJoYW5kbGVQYW4iLCJwdCIsInZpZXdwb3J0IiwicHJvamVjdCIsInVucHJvamVjdCIsImFueWNsaWNrIiwiX29uRXZlbnQiLCJfb25DbGljayIsImRibGNsaWNrIiwiX29uRGJsY2xpY2siLCJjbGljayIsInBvaW50ZXJtb3ZlIiwiX29uUG9pbnRlck1vdmUiLCJwb2ludGVyZG93biIsIl9vblBvaW50ZXJEb3duIiwicG9pbnRlcnVwIiwiX29uUG9pbnRlclVwIiwicGFubW92ZSIsIl9vblBhbiIsInBhbnN0YXJ0IiwicGFuZW5kIiwiX3NldHVwTW9kZUhhbmRsZXIiLCJwcmV2UHJvcHMiLCJfY2xlYXJFZGl0aW5nU3RhdGUiLCJzZWxlY3RlZEluZGV4ZXMiLCJmZWF0dXJlc0RyYWdnYWJsZSIsIm9uRWRpdCIsIl9vbkVkaXQiLCJnZXRGZWF0dXJlcyIsImd1aWRlcyIsImdldEd1aWRlcyIsInBpY2tlZCIsImNvbnRleHQiLCJoZWlnaHQiLCJ3aWR0aCIsIl9yZW5kZXIiLCJQdXJlQ29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FB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QkFFUTtBQUFBOztBQUNQLDBCQUNFLGdDQUFDLHVCQUFELENBQVksUUFBWixRQUNHLFVBQUN5RCxPQUFELEVBQWE7QUFDWixRQUFBLE1BQUksQ0FBQ2pFLFFBQUwsR0FBZ0JpRSxPQUFoQjtBQUNBLFlBQU05QixRQUFRLEdBQUc4QixPQUFPLElBQUlBLE9BQU8sQ0FBQzlCLFFBQXBDOztBQUVBLFlBQUksQ0FBQ0EsUUFBRCxJQUFhQSxRQUFRLENBQUMrQixNQUFULElBQW1CLENBQWhDLElBQXFDL0IsUUFBUSxDQUFDZ0MsS0FBVCxJQUFrQixDQUEzRCxFQUE4RDtBQUM1RCxpQkFBTyxJQUFQO0FBQ0Q7O0FBRUQsZUFBTyxNQUFJLENBQUNDLE9BQUwsRUFBUDtBQUNELE9BVkgsQ0FERjtBQWNEOzs7O0VBNWFzQ0Msb0I7Ozs7Z0JBQXBCeEcsVyxpQkFDRSxhOztnQkFERkEsVyxrQkFFR25CLFkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfTWFwQ29udGV4dCBhcyBNYXBDb250ZXh0LCBNYXBDb250ZXh0UHJvcHMgfSBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbixcbiAgRmVhdHVyZSxcbiAgUG9zaXRpb24sXG4gIEVkaXRBY3Rpb24sXG4gIF9tZW1vaXplIGFzIG1lbW9pemUsXG59IGZyb20gJ0BuZWJ1bGEuZ2wvZWRpdC1tb2Rlcyc7XG5cbmltcG9ydCB7IE1qb2xuaXJFdmVudCB9IGZyb20gJ21qb2xuaXIuanMnO1xuaW1wb3J0IHsgQmFzZUV2ZW50LCBFZGl0b3JQcm9wcywgRWRpdG9yU3RhdGUsIFNlbGVjdEFjdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuXG5pbXBvcnQgRWRpdGluZ01vZGUgZnJvbSAnLi9lZGl0LW1vZGVzL2VkaXRpbmctbW9kZSc7XG5pbXBvcnQgeyBnZXRTY3JlZW5Db29yZHMsIHBhcnNlRXZlbnRFbGVtZW50LCBpc051bWVyaWMgfSBmcm9tICcuL2VkaXQtbW9kZXMvdXRpbHMnO1xuaW1wb3J0IHsgRURJVF9UWVBFLCBFTEVNRU5UX1RZUEUgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgc2VsZWN0YWJsZTogdHJ1ZSxcbiAgbW9kZTogbnVsbCxcbiAgZmVhdHVyZXM6IG51bGwsXG4gIG9uU2VsZWN0OiBudWxsLFxuICBvblVwZGF0ZTogbnVsbCxcbiAgb25VcGRhdGVDdXJzb3I6ICgpID0+IHt9LFxufTtcblxuY29uc3QgZGVmYXVsdFN0YXRlID0ge1xuICBmZWF0dXJlQ29sbGVjdGlvbjogbmV3IEltbXV0YWJsZUZlYXR1cmVDb2xsZWN0aW9uKHtcbiAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgIGZlYXR1cmVzOiBbXSxcbiAgfSksXG5cbiAgc2VsZWN0ZWRGZWF0dXJlSW5kZXg6IG51bGwsXG5cbiAgLy8gaW5kZXgsIGlzR3VpZGUsIG1hcENvb3Jkcywgc2NyZWVuQ29vcmRzXG4gIGhvdmVyZWQ6IG51bGwsXG5cbiAgaXNEcmFnZ2luZzogZmFsc2UsXG4gIGRpZERyYWc6IGZhbHNlLFxuXG4gIGxhc3RQb2ludGVyTW92ZUV2ZW50OiBudWxsLFxuXG4gIHBvaW50ZXJEb3duUGlja3M6IG51bGwsXG4gIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBudWxsLFxuICBwb2ludGVyRG93bk1hcENvb3JkczogbnVsbCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vZGVIYW5kbGVyIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxFZGl0b3JQcm9wcywgRWRpdG9yU3RhdGU+IHtcbiAgc3RhdGljIGRpc3BsYXlOYW1lID0gJ01vZGVIYW5kbGVyJztcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogRWRpdG9yUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IGRlZmF1bHRTdGF0ZTtcbiAgICB0aGlzLl9ldmVudHNSZWdpc3RlcmVkID0gZmFsc2U7XG5cbiAgICB0aGlzLl9ldmVudHMgPSB7XG4gICAgICBhbnljbGljazogKGV2dCkgPT4gdGhpcy5fb25FdmVudCh0aGlzLl9vbkNsaWNrLCBldnQsIHRydWUpLFxuICAgICAgZGJsY2xpY2s6IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25EYmxjbGljaywgZXZ0LCBmYWxzZSksXG4gICAgICBjbGljazogKGV2dCkgPT4gZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLFxuICAgICAgcG9pbnRlcm1vdmU6IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25Qb2ludGVyTW92ZSwgZXZ0LCB0cnVlKSxcbiAgICAgIHBvaW50ZXJkb3duOiAoZXZ0KSA9PiB0aGlzLl9vbkV2ZW50KHRoaXMuX29uUG9pbnRlckRvd24sIGV2dCwgdHJ1ZSksXG4gICAgICBwb2ludGVydXA6IChldnQpID0+IHRoaXMuX29uRXZlbnQodGhpcy5fb25Qb2ludGVyVXAsIGV2dCwgdHJ1ZSksXG4gICAgICBwYW5tb3ZlOiAoZXZ0KSA9PiB0aGlzLl9vbkV2ZW50KHRoaXMuX29uUGFuLCBldnQsIGZhbHNlKSxcbiAgICAgIHBhbnN0YXJ0OiAoZXZ0KSA9PiB0aGlzLl9vbkV2ZW50KHRoaXMuX29uUGFuLCBldnQsIGZhbHNlKSxcbiAgICAgIHBhbmVuZDogKGV2dCkgPT4gdGhpcy5fb25FdmVudCh0aGlzLl9vblBhbiwgZXZ0LCBmYWxzZSksXG4gICAgfTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRoaXMuX3NldHVwTW9kZUhhbmRsZXIoKTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHM6IEVkaXRvclByb3BzKSB7XG4gICAgaWYgKHByZXZQcm9wcy5tb2RlICE9PSB0aGlzLnByb3BzLm1vZGUpIHtcbiAgICAgIHRoaXMuX2NsZWFyRWRpdGluZ1N0YXRlKCk7XG4gICAgICB0aGlzLl9zZXR1cE1vZGVIYW5kbGVyKCk7XG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5fZGVncmVnaXN0ZXJFdmVudHMoKTtcbiAgfVxuXG4gIF9ldmVudHM6IGFueTtcbiAgX2V2ZW50c1JlZ2lzdGVyZWQ6IGJvb2xlYW47XG4gIF9tb2RlSGFuZGxlcjogYW55O1xuICBfY29udGV4dDogTWFwQ29udGV4dFByb3BzIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgX2NvbnRhaW5lclJlZjogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gIGdldEZlYXR1cmVzID0gKCkgPT4ge1xuICAgIGxldCBmZWF0dXJlQ29sbGVjdGlvbiA9IHRoaXMuX2dldEZlYXR1cmVDb2xsZWN0aW9uKCk7XG4gICAgZmVhdHVyZUNvbGxlY3Rpb24gPSBmZWF0dXJlQ29sbGVjdGlvbiAmJiBmZWF0dXJlQ29sbGVjdGlvbi5nZXRPYmplY3QoKTtcbiAgICByZXR1cm4gZmVhdHVyZUNvbGxlY3Rpb24gJiYgZmVhdHVyZUNvbGxlY3Rpb24uZmVhdHVyZXM7XG4gIH07XG5cbiAgYWRkRmVhdHVyZXMgPSAoZmVhdHVyZXM6IEZlYXR1cmUgfCBGZWF0dXJlW10pID0+IHtcbiAgICBsZXQgZmVhdHVyZUNvbGxlY3Rpb24gPSB0aGlzLl9nZXRGZWF0dXJlQ29sbGVjdGlvbigpO1xuICAgIGlmIChmZWF0dXJlQ29sbGVjdGlvbikge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZlYXR1cmVzKSkge1xuICAgICAgICBmZWF0dXJlcyA9IFtmZWF0dXJlc107XG4gICAgICB9XG5cbiAgICAgIGZlYXR1cmVDb2xsZWN0aW9uID0gZmVhdHVyZUNvbGxlY3Rpb24uYWRkRmVhdHVyZXMoZmVhdHVyZXMpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGZlYXR1cmVDb2xsZWN0aW9uIH0pO1xuICAgIH1cbiAgfTtcblxuICBkZWxldGVGZWF0dXJlcyA9IChmZWF0dXJlSW5kZXhlczogbnVtYmVyIHwgbnVtYmVyW10pID0+IHtcbiAgICBsZXQgZmVhdHVyZUNvbGxlY3Rpb24gPSB0aGlzLl9nZXRGZWF0dXJlQ29sbGVjdGlvbigpO1xuICAgIGNvbnN0IHNlbGVjdGVkRmVhdHVyZUluZGV4ID0gdGhpcy5fZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXgoKTtcbiAgICBpZiAoZmVhdHVyZUNvbGxlY3Rpb24pIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShmZWF0dXJlSW5kZXhlcykpIHtcbiAgICAgICAgZmVhdHVyZUluZGV4ZXMgPSBbZmVhdHVyZUluZGV4ZXNdO1xuICAgICAgfVxuICAgICAgZmVhdHVyZUNvbGxlY3Rpb24gPSBmZWF0dXJlQ29sbGVjdGlvbi5kZWxldGVGZWF0dXJlcyhmZWF0dXJlSW5kZXhlcyk7XG4gICAgICBjb25zdCBuZXdTdGF0ZTogYW55ID0geyBmZWF0dXJlQ29sbGVjdGlvbiB9O1xuICAgICAgaWYgKGZlYXR1cmVJbmRleGVzLmZpbmRJbmRleCgoaW5kZXgpID0+IHNlbGVjdGVkRmVhdHVyZUluZGV4ID09PSBpbmRleCkgPj0gMCkge1xuICAgICAgICBuZXdTdGF0ZS5zZWxlY3RlZEZlYXR1cmVJbmRleCA9IG51bGw7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICB9XG4gIH07XG5cbiAgZ2V0TW9kZVByb3BzKCkge1xuICAgIGNvbnN0IGZlYXR1cmVDb2xsZWN0aW9uID0gdGhpcy5fZ2V0RmVhdHVyZUNvbGxlY3Rpb24oKTtcblxuICAgIGNvbnN0IHsgbGFzdFBvaW50ZXJNb3ZlRXZlbnQgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlSW5kZXggPSB0aGlzLl9nZXRTZWxlY3RlZEZlYXR1cmVJbmRleCgpO1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5fY29udGV4dCAmJiB0aGlzLl9jb250ZXh0LnZpZXdwb3J0O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IGZlYXR1cmVDb2xsZWN0aW9uICYmIGZlYXR1cmVDb2xsZWN0aW9uLmZlYXR1cmVDb2xsZWN0aW9uLFxuICAgICAgc2VsZWN0ZWRJbmRleGVzOiBpc051bWVyaWMoc2VsZWN0ZWRGZWF0dXJlSW5kZXgpID8gW3NlbGVjdGVkRmVhdHVyZUluZGV4XSA6IFtdLFxuICAgICAgbGFzdFBvaW50ZXJNb3ZlRXZlbnQsXG4gICAgICB2aWV3cG9ydCxcbiAgICAgIGZlYXR1cmVzRHJhZ2dhYmxlOiB0aGlzLnByb3BzLmZlYXR1cmVzRHJhZ2dhYmxlLFxuICAgICAgb25FZGl0OiB0aGlzLl9vbkVkaXQsXG4gICAgICBvblVwZGF0ZUN1cnNvcjogdGhpcy5wcm9wcy5vblVwZGF0ZUN1cnNvcixcbiAgICB9O1xuICB9XG5cbiAgLyogTUVNT1JJWkVSUyAqL1xuICBfZ2V0TWVtb3JpemVkRmVhdHVyZUNvbGxlY3Rpb24gPSBtZW1vaXplKCh7IHByb3BzRmVhdHVyZXMsIHN0YXRlRmVhdHVyZXMgfTogYW55KSA9PiB7XG4gICAgY29uc3QgZmVhdHVyZXMgPSBwcm9wc0ZlYXR1cmVzIHx8IHN0YXRlRmVhdHVyZXM7XG4gICAgLy8gQW55IGNoYW5nZXMgaW4gSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24gd2lsbCBjcmVhdGUgYSBuZXcgb2JqZWN0XG4gICAgaWYgKGZlYXR1cmVzIGluc3RhbmNlb2YgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBmZWF0dXJlcztcbiAgICB9XG5cbiAgICBpZiAoZmVhdHVyZXMgJiYgZmVhdHVyZXMudHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJykge1xuICAgICAgcmV0dXJuIG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbih7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICAgIGZlYXR1cmVzOiBmZWF0dXJlcy5mZWF0dXJlcyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1tdXRhYmxlRmVhdHVyZUNvbGxlY3Rpb24oe1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBmZWF0dXJlcyB8fCBbXSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgX2dldEZlYXR1cmVDb2xsZWN0aW9uID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLl9nZXRNZW1vcml6ZWRGZWF0dXJlQ29sbGVjdGlvbih7XG4gICAgICBwcm9wc0ZlYXR1cmVzOiB0aGlzLnByb3BzLmZlYXR1cmVzLFxuICAgICAgc3RhdGVGZWF0dXJlczogdGhpcy5zdGF0ZS5mZWF0dXJlQ29sbGVjdGlvbixcbiAgICB9KTtcbiAgfTtcblxuICBfc2V0dXBNb2RlSGFuZGxlciA9ICgpID0+IHtcbiAgICBjb25zdCBtb2RlID0gdGhpcy5wcm9wcy5tb2RlO1xuICAgIHRoaXMuX21vZGVIYW5kbGVyID0gbW9kZTtcblxuICAgIGlmICghbW9kZSkge1xuICAgICAgdGhpcy5fZGVncmVnaXN0ZXJFdmVudHMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWdpc3RlckV2ZW50cygpO1xuICB9O1xuXG4gIC8qIEVESVRJTkcgT1BFUkFUSU9OUyAqL1xuICBfY2xlYXJFZGl0aW5nU3RhdGUgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleDogbnVsbCxcblxuICAgICAgaG92ZXJlZDogbnVsbCxcblxuICAgICAgcG9pbnRlckRvd25QaWNrczogbnVsbCxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IG51bGwsXG5cbiAgICAgIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICAgICAgZGlkRHJhZzogZmFsc2UsXG4gICAgfSk7XG4gIH07XG5cbiAgX2dldFNlbGVjdGVkRmVhdHVyZUluZGV4ID0gKCkgPT4ge1xuICAgIGlmICgnc2VsZWN0ZWRGZWF0dXJlSW5kZXgnIGluIHRoaXMucHJvcHMpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLnNlbGVjdGVkRmVhdHVyZUluZGV4O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3RlZEZlYXR1cmVJbmRleDtcbiAgfTtcblxuICBfb25TZWxlY3QgPSAoc2VsZWN0ZWQ6IFNlbGVjdEFjdGlvbikgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoeyBzZWxlY3RlZEZlYXR1cmVJbmRleDogc2VsZWN0ZWQgJiYgc2VsZWN0ZWQuc2VsZWN0ZWRGZWF0dXJlSW5kZXggfSk7XG4gICAgaWYgKHRoaXMucHJvcHMub25TZWxlY3QpIHtcbiAgICAgIHRoaXMucHJvcHMub25TZWxlY3Qoc2VsZWN0ZWQpO1xuICAgIH1cbiAgfTtcblxuICBfb25FZGl0ID0gKGVkaXRBY3Rpb246IEVkaXRBY3Rpb248YW55PikgPT4ge1xuICAgIGNvbnN0IHsgZWRpdFR5cGUsIHVwZGF0ZWREYXRhLCBlZGl0Q29udGV4dCB9ID0gZWRpdEFjdGlvbjtcbiAgICB0aGlzLnNldFN0YXRlKHsgZmVhdHVyZUNvbGxlY3Rpb246IG5ldyBJbW11dGFibGVGZWF0dXJlQ29sbGVjdGlvbih1cGRhdGVkRGF0YSkgfSk7XG5cbiAgICBzd2l0Y2ggKGVkaXRUeXBlKSB7XG4gICAgICBjYXNlIEVESVRfVFlQRS5BRERfRkVBVFVSRTpcbiAgICAgICAgdGhpcy5fb25TZWxlY3Qoe1xuICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZTogbnVsbCxcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleDogbnVsbCxcbiAgICAgICAgICBzZWxlY3RlZEVkaXRIYW5kbGVJbmRleDogbnVsbCxcbiAgICAgICAgICBzY3JlZW5Db29yZHM6IGVkaXRDb250ZXh0ICYmIGVkaXRDb250ZXh0LnNjcmVlbkNvb3JkcyxcbiAgICAgICAgICBtYXBDb29yZHM6IGVkaXRDb250ZXh0ICYmIGVkaXRDb250ZXh0Lm1hcENvb3JkcyxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5vblVwZGF0ZSkge1xuICAgICAgdGhpcy5wcm9wcy5vblVwZGF0ZSh7XG4gICAgICAgIGRhdGE6IHVwZGF0ZWREYXRhICYmIHVwZGF0ZWREYXRhLmZlYXR1cmVzLFxuICAgICAgICBlZGl0VHlwZSxcbiAgICAgICAgZWRpdENvbnRleHQsXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgLyogRVZFTlRTICovXG4gIF9kZWdyZWdpc3RlckV2ZW50cyA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudE1hbmFnZXIgPSB0aGlzLl9jb250ZXh0ICYmIHRoaXMuX2NvbnRleHQuZXZlbnRNYW5hZ2VyO1xuICAgIGlmICghdGhpcy5fZXZlbnRzIHx8ICFldmVudE1hbmFnZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZXZlbnRzUmVnaXN0ZXJlZCkge1xuICAgICAgZXZlbnRNYW5hZ2VyLm9mZih0aGlzLl9ldmVudHMpO1xuICAgICAgdGhpcy5fZXZlbnRzUmVnaXN0ZXJlZCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBfcmVnaXN0ZXJFdmVudHMgPSAoKSA9PiB7XG4gICAgY29uc3QgcmVmID0gdGhpcy5fY29udGFpbmVyUmVmO1xuICAgIGNvbnN0IGV2ZW50TWFuYWdlciA9IHRoaXMuX2NvbnRleHQgJiYgdGhpcy5fY29udGV4dC5ldmVudE1hbmFnZXI7XG4gICAgaWYgKCF0aGlzLl9ldmVudHMgfHwgIXJlZiB8fCAhZXZlbnRNYW5hZ2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2V2ZW50c1JlZ2lzdGVyZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBldmVudE1hbmFnZXIub24odGhpcy5fZXZlbnRzLCByZWYpO1xuICAgIHRoaXMuX2V2ZW50c1JlZ2lzdGVyZWQgPSB0cnVlO1xuICB9O1xuXG4gIF9vbkV2ZW50ID0gKGhhbmRsZXI6IEZ1bmN0aW9uLCBldnQ6IE1qb2xuaXJFdmVudCwgc3RvcFByb3BhZ2F0aW9uOiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgZXZlbnQgPSB0aGlzLl9nZXRFdmVudChldnQpO1xuICAgIGhhbmRsZXIoZXZlbnQpO1xuXG4gICAgaWYgKHN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfTtcblxuICBfb25DbGljayA9IChldmVudDogQmFzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgbW9kZVByb3BzID0gdGhpcy5nZXRNb2RlUHJvcHMoKTtcbiAgICAvLyBUT0RPIHJlZmFjdG9yIEVkaXRpbmdNb2RlXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmICh0aGlzLl9tb2RlSGFuZGxlciBpbnN0YW5jZW9mIEVkaXRpbmdNb2RlIHx8IHRoaXMucHJvcHMuc2VsZWN0YWJsZSkge1xuICAgICAgY29uc3QgeyBtYXBDb29yZHMsIHNjcmVlbkNvb3JkcyB9ID0gZXZlbnQ7XG4gICAgICBjb25zdCBwaWNrZWRPYmplY3QgPSBldmVudC5waWNrcyAmJiBldmVudC5waWNrc1swXTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmIChwaWNrZWRPYmplY3QgJiYgaXNOdW1lcmljKHBpY2tlZE9iamVjdC5mZWF0dXJlSW5kZXgpKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlSW5kZXggPSBwaWNrZWRPYmplY3QuZmVhdHVyZUluZGV4O1xuICAgICAgICB0aGlzLl9vblNlbGVjdCh7XG4gICAgICAgICAgc2VsZWN0ZWRGZWF0dXJlOiBwaWNrZWRPYmplY3Qub2JqZWN0LFxuICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZUluZGV4LFxuICAgICAgICAgIHNlbGVjdGVkRWRpdEhhbmRsZUluZGV4OlxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcGlja2VkT2JqZWN0LnR5cGUgPT09IEVMRU1FTlRfVFlQRS5FRElUX0hBTkRMRSA/IHBpY2tlZE9iamVjdC5pbmRleCA6IG51bGwsXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG1hcENvb3JkcyxcbiAgICAgICAgICBzY3JlZW5Db29yZHMsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fb25TZWxlY3Qoe1xuICAgICAgICAgIHNlbGVjdGVkRmVhdHVyZTogbnVsbCxcbiAgICAgICAgICBzZWxlY3RlZEZlYXR1cmVJbmRleDogbnVsbCxcbiAgICAgICAgICBzZWxlY3RlZEVkaXRIYW5kbGVJbmRleDogbnVsbCxcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgbWFwQ29vcmRzLFxuICAgICAgICAgIHNjcmVlbkNvb3JkcyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fbW9kZUhhbmRsZXIuaGFuZGxlQ2xpY2soZXZlbnQsIG1vZGVQcm9wcyk7XG4gIH07XG5cbiAgX29uRGJsY2xpY2sgPSAoZXZlbnQ6IEJhc2VFdmVudCkgPT4ge1xuICAgIGlmIChpc051bWVyaWModGhpcy5fZ2V0U2VsZWN0ZWRGZWF0dXJlSW5kZXgoKSkpIHtcbiAgICAgIGV2ZW50LnNvdXJjZUV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfTtcblxuICBfb25Qb2ludGVyTW92ZSA9IChldmVudDogQmFzZUV2ZW50KSA9PiB7XG4gICAgLy8gaG92ZXJpbmdcbiAgICBjb25zdCBob3ZlcmVkID0gdGhpcy5fZ2V0SG92ZXJTdGF0ZShldmVudCk7XG4gICAgY29uc3Qge1xuICAgICAgaXNEcmFnZ2luZyxcbiAgICAgIGRpZERyYWcsXG4gICAgICBwb2ludGVyRG93blBpY2tzLFxuICAgICAgcG9pbnRlckRvd25TY3JlZW5Db29yZHMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkcyxcbiAgICB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGlmIChpc0RyYWdnaW5nICYmICFkaWREcmFnICYmIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzKSB7XG4gICAgICBjb25zdCBkeCA9IGV2ZW50LnNjcmVlbkNvb3Jkc1swXSAtIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzWzBdO1xuICAgICAgY29uc3QgZHkgPSBldmVudC5zY3JlZW5Db29yZHNbMV0gLSBwb2ludGVyRG93blNjcmVlbkNvb3Jkc1sxXTtcbiAgICAgIGlmIChkeCAqIGR4ICsgZHkgKiBkeSA+IDUpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGRpZERyYWc6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcG9pbnRlck1vdmVFdmVudCA9IHtcbiAgICAgIC4uLmV2ZW50LFxuICAgICAgaXNEcmFnZ2luZyxcbiAgICAgIHBvaW50ZXJEb3duUGlja3MsXG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkcyxcbiAgICAgIHBvaW50ZXJEb3duTWFwQ29vcmRzLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5zdGF0ZS5kaWREcmFnKSB7XG4gICAgICBjb25zdCBtb2RlUHJvcHMgPSB0aGlzLmdldE1vZGVQcm9wcygpO1xuICAgICAgdGhpcy5fbW9kZUhhbmRsZXIuaGFuZGxlUG9pbnRlck1vdmUocG9pbnRlck1vdmVFdmVudCwgbW9kZVByb3BzKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGhvdmVyZWQsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBsYXN0UG9pbnRlck1vdmVFdmVudDogcG9pbnRlck1vdmVFdmVudCxcbiAgICB9KTtcbiAgfTtcblxuICBfb25Qb2ludGVyRG93biA9IChldmVudDogQmFzZUV2ZW50KSA9PiB7XG4gICAgY29uc3QgaXNEcmFnZ2luZyA9IGV2ZW50LnBpY2tzICYmIGV2ZW50LnBpY2tzWzBdO1xuICAgIGNvbnN0IHN0YXJ0RHJhZ2dpbmdFdmVudCA9IHtcbiAgICAgIC4uLmV2ZW50LFxuICAgICAgaXNEcmFnZ2luZyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBldmVudC5zY3JlZW5Db29yZHMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkczogZXZlbnQubWFwQ29vcmRzLFxuICAgIH07XG5cbiAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgIGlzRHJhZ2dpbmcsXG4gICAgICBwb2ludGVyRG93blBpY2tzOiBldmVudC5waWNrcyxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBldmVudC5zY3JlZW5Db29yZHMsXG4gICAgICBwb2ludGVyRG93bk1hcENvb3JkczogZXZlbnQubWFwQ29vcmRzLFxuICAgIH07XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMuc2V0U3RhdGUobmV3U3RhdGUpO1xuXG4gICAgY29uc3QgbW9kZVByb3BzID0gdGhpcy5nZXRNb2RlUHJvcHMoKTtcbiAgICB0aGlzLl9tb2RlSGFuZGxlci5oYW5kbGVTdGFydERyYWdnaW5nKHN0YXJ0RHJhZ2dpbmdFdmVudCwgbW9kZVByb3BzKTtcbiAgfTtcblxuICBfb25Qb2ludGVyVXAgPSAoZXZlbnQ6IE1qb2xuaXJFdmVudCkgPT4ge1xuICAgIGNvbnN0IHsgZGlkRHJhZywgcG9pbnRlckRvd25QaWNrcywgcG9pbnRlckRvd25TY3JlZW5Db29yZHMsIHBvaW50ZXJEb3duTWFwQ29vcmRzIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHN0b3BEcmFnZ2luZ0V2ZW50ID0ge1xuICAgICAgLi4uZXZlbnQsXG4gICAgICBpc0RyYWdnaW5nOiBmYWxzZSxcbiAgICAgIHBvaW50ZXJEb3duUGlja3M6IGRpZERyYWcgPyBwb2ludGVyRG93blBpY2tzIDogbnVsbCxcbiAgICAgIHBvaW50ZXJEb3duU2NyZWVuQ29vcmRzOiBkaWREcmFnID8gcG9pbnRlckRvd25TY3JlZW5Db29yZHMgOiBudWxsLFxuICAgICAgcG9pbnRlckRvd25NYXBDb29yZHM6IGRpZERyYWcgPyBwb2ludGVyRG93bk1hcENvb3JkcyA6IG51bGwsXG4gICAgfTtcblxuICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgaXNEcmFnZ2luZzogZmFsc2UsXG4gICAgICBkaWREcmFnOiBmYWxzZSxcbiAgICAgIHBvaW50ZXJEb3duUGlja3M6IG51bGwsXG4gICAgICBwb2ludGVyRG93blNjcmVlbkNvb3JkczogbnVsbCxcbiAgICAgIHBvaW50ZXJEb3duTWFwQ29vcmRzOiBudWxsLFxuICAgIH07XG5cbiAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICBjb25zdCBtb2RlUHJvcHMgPSB0aGlzLmdldE1vZGVQcm9wcygpO1xuXG4gICAgaWYgKGRpZERyYWcpIHtcbiAgICAgIHRoaXMuX21vZGVIYW5kbGVyLmhhbmRsZVN0b3BEcmFnZ2luZyhzdG9wRHJhZ2dpbmdFdmVudCwgbW9kZVByb3BzKTtcbiAgICB9XG4gIH07XG5cbiAgX29uUGFuID0gKGV2ZW50OiBCYXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCB7IGlzRHJhZ2dpbmcgfSA9IHRoaXMuc3RhdGU7XG4gICAgaWYgKGlzRHJhZ2dpbmcpIHtcbiAgICAgIGV2ZW50LnNvdXJjZUV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbW9kZUhhbmRsZXIuaGFuZGxlUGFuKSB7XG4gICAgICB0aGlzLl9tb2RlSGFuZGxlci5oYW5kbGVQYW4oZXZlbnQsIHRoaXMuZ2V0TW9kZVByb3BzKCkpO1xuICAgIH1cbiAgfTtcblxuICAvKiBIRUxQRVJTICovXG4gIHByb2plY3QgPSAocHQ6IFBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLl9jb250ZXh0ICYmIHRoaXMuX2NvbnRleHQudmlld3BvcnQ7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiB2aWV3cG9ydCAmJiB2aWV3cG9ydC5wcm9qZWN0KHB0KTtcbiAgfTtcblxuICB1bnByb2plY3QgPSAocHQ6IFBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLl9jb250ZXh0ICYmIHRoaXMuX2NvbnRleHQudmlld3BvcnQ7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiB2aWV3cG9ydCAmJiB2aWV3cG9ydC51bnByb2plY3QocHQpO1xuICB9O1xuXG4gIF9nZXRFdmVudChldnQ6IE1qb2xuaXJFdmVudCkge1xuICAgIGNvbnN0IGZlYXR1cmVzID0gdGhpcy5nZXRGZWF0dXJlcygpO1xuICAgIGNvbnN0IGd1aWRlcyA9IHRoaXMuX21vZGVIYW5kbGVyLmdldEd1aWRlcyh0aGlzLmdldE1vZGVQcm9wcygpKTtcbiAgICBjb25zdCBwaWNrZWQgPSBwYXJzZUV2ZW50RWxlbWVudChldnQsIGZlYXR1cmVzLCBndWlkZXMgJiYgZ3VpZGVzLmZlYXR1cmVzKTtcbiAgICBjb25zdCBzY3JlZW5Db29yZHMgPSBnZXRTY3JlZW5Db29yZHMoZXZ0KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgbWFwQ29vcmRzID0gdGhpcy51bnByb2plY3Qoc2NyZWVuQ29vcmRzKTtcblxuICAgIHJldHVybiB7XG4gICAgICBwaWNrczogcGlja2VkID8gW3BpY2tlZF0gOiBudWxsLFxuICAgICAgc2NyZWVuQ29vcmRzLFxuICAgICAgbWFwQ29vcmRzLFxuICAgICAgc291cmNlRXZlbnQ6IGV2dCxcbiAgICB9O1xuICB9XG5cbiAgX2dldEhvdmVyU3RhdGUgPSAoZXZlbnQ6IEJhc2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IG9iamVjdCA9IGV2ZW50LnBpY2tzICYmIGV2ZW50LnBpY2tzWzBdO1xuICAgIGlmICghb2JqZWN0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2NyZWVuQ29vcmRzOiBldmVudC5zY3JlZW5Db29yZHMsXG4gICAgICBtYXBDb29yZHM6IGV2ZW50Lm1hcENvb3JkcyxcbiAgICAgIC4uLm9iamVjdCxcbiAgICB9O1xuICB9O1xuXG4gIF9yZW5kZXIoKSB7XG4gICAgcmV0dXJuIDxkaXYgLz47XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxNYXBDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICB7KGNvbnRleHQpID0+IHtcbiAgICAgICAgICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgICAgICAgICBjb25zdCB2aWV3cG9ydCA9IGNvbnRleHQgJiYgY29udGV4dC52aWV3cG9ydDtcblxuICAgICAgICAgIGlmICghdmlld3BvcnQgfHwgdmlld3BvcnQuaGVpZ2h0IDw9IDAgfHwgdmlld3BvcnQud2lkdGggPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3JlbmRlcigpO1xuICAgICAgICB9fVxuICAgICAgPC9NYXBDb250ZXh0LkNvbnN1bWVyPlxuICAgICk7XG4gIH1cbn1cbiJdfQ==

@@ -5,3 +5,3 @@ {

"license": "MIT",
"version": "0.18.2",
"version": "0.18.3",
"author": "Xintong Xia <xintong@uber.com>",

@@ -60,3 +60,3 @@ "repository": {

},
"gitHead": "731c73359e7b072575e3a7f6ec9db1deabdc155f"
"gitHead": "de129e5d4b1f225e6a3249cb682466413a1a318c"
}

@@ -31,3 +31,3 @@ # React Map GL Draw

- `onUpdate` (Function, Optional) - callback when any feature is updated. Receives an object containing the following parameters
- `features` (Feature[]) - the updated list of GeoJSON features.
- `data` (Feature[]) - the updated list of GeoJSON features.
- `editType` (String) - `addFeature`, `addPosition`, `finishMovePosition`

@@ -132,3 +132,3 @@ - `editContext` (Array) - list of edit objects, depend on `editType`, each object may contain `featureIndexes`, `editHandleIndexes`, `screenCoords`, `mapCoords`.

export default class App extends Component {
class App extends Component {
constructor(props) {

@@ -170,5 +170,6 @@ super(props);

[codesandbox](https://codesandbox.io/s/react-map-gl-draw-example-5n97w?file=/src/app.js)
```js
import React, { Component } from 'react';
import { render } from 'react-dom';
import MapGL from 'react-map-gl';

@@ -196,3 +197,3 @@ import {

export default class App extends Component {
class App extends Component {
constructor(props) {

@@ -199,0 +200,0 @@ super(props);

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc