diff --git a/client/source/scripts/components/modals/AddTorrents.js b/client/source/scripts/components/modals/AddTorrents.js index a431c416..13d50327 100644 --- a/client/source/scripts/components/modals/AddTorrents.js +++ b/client/source/scripts/components/modals/AddTorrents.js @@ -138,7 +138,7 @@ export default class AddTorrents extends React.Component { handleAddTorrents() { this.setState({isAddingTorrents: true}); - let torrentUrls = _.pluck(this.state.urlTextboxes, 'value'); + let torrentUrls = _.map(this.state.urlTextboxes, 'value'); TorrentActions.addTorrents(torrentUrls, this.state.destination); } diff --git a/client/source/scripts/components/torrent-details/TorrentHeading.js b/client/source/scripts/components/torrent-details/TorrentHeading.js index 5176f489..f458d6bb 100644 --- a/client/source/scripts/components/torrent-details/TorrentHeading.js +++ b/client/source/scripts/components/torrent-details/TorrentHeading.js @@ -103,7 +103,6 @@ export default class TorrentHeading extends React.Component { } handlePriorityChange(hash, level) { - console.log(hash, level); TorrentActions.setPriority(hash, level); } diff --git a/server/assets/app.js b/server/assets/app.js index c5ce816e..b662b9f4 100644 --- a/server/assets/app.js +++ b/server/assets/app.js @@ -1064,7 +1064,7 @@ /* 170 */ /***/ function(module, exports, __webpack_require__) { - eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _lodash = __webpack_require__(161);\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _classnames = __webpack_require__(171);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _constantsEventTypes = __webpack_require__(172);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _iconsLoadingIndicatorDots = __webpack_require__(173);\n\nvar _iconsLoadingIndicatorDots2 = _interopRequireDefault(_iconsLoadingIndicatorDots);\n\nvar _Modal = __webpack_require__(175);\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _formsTextboxRepeater = __webpack_require__(176);\n\nvar _formsTextboxRepeater2 = _interopRequireDefault(_formsTextboxRepeater);\n\nvar _actionsTorrentActions = __webpack_require__(179);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar _storesTorrentStore = __webpack_require__(199);\n\nvar _storesTorrentStore2 = _interopRequireDefault(_storesTorrentStore);\n\nvar _actionsUIActions = __webpack_require__(209);\n\nvar _actionsUIActions2 = _interopRequireDefault(_actionsUIActions);\n\nvar _storesUIStore = __webpack_require__(210);\n\nvar _storesUIStore2 = _interopRequireDefault(_storesUIStore);\n\nvar METHODS_TO_BIND = ['getContent', 'handleDestinationChange', 'handleUrlAdd', 'handleUrlChange', 'handleUrlRemove', 'handleAddTorrents', 'onAddTorrentSuccess', 'onLatestTorrentLocationChange'];\n\nvar AddTorrents = (function (_React$Component) {\n _inherits(AddTorrents, _React$Component);\n\n function AddTorrents() {\n var _this = this;\n\n _classCallCheck(this, AddTorrents);\n\n _get(Object.getPrototypeOf(AddTorrents.prototype), 'constructor', this).call(this);\n\n this.state = {\n addTorrentsError: null,\n destination: null,\n isExpanded: false,\n isAddingTorrents: false,\n urlTextboxes: [{ value: null }]\n };\n\n METHODS_TO_BIND.forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n }\n\n _createClass(AddTorrents, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.setState({ destination: _storesUIStore2['default'].getLatestTorrentLocation() });\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n _storesTorrentStore2['default'].listen(_constantsEventTypes2['default'].CLIENT_ADD_TORRENT_SUCCESS, this.onAddTorrentSuccess);\n _storesUIStore2['default'].listen(_constantsEventTypes2['default'].UI_LATEST_TORRENT_LOCATION_CHANGE, this.onLatestTorrentLocationChange);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _storesTorrentStore2['default'].unlisten(_constantsEventTypes2['default'].CLIENT_ADD_TORRENT_SUCCESS, this.onAddTorrentSuccess);\n _storesUIStore2['default'].unlisten(_constantsEventTypes2['default'].UI_LATEST_TORRENT_LOCATION_CHANGE, this.onLatestTorrentLocationChange);\n _storesUIStore2['default'].fetchLatestTorrentLocation();\n }\n }, {\n key: 'dismissModal',\n value: function dismissModal() {\n _actionsUIActions2['default'].dismissModal();\n }\n }, {\n key: 'onAddTorrentError',\n value: function onAddTorrentError() {\n this.setState({\n addTorrentsError: 'There was an error, but I have no idea what happened!',\n isAddingTorrents: false\n });\n }\n }, {\n key: 'onAddTorrentSuccess',\n value: function onAddTorrentSuccess() {\n this.dismissModal();\n }\n }, {\n key: 'onLatestTorrentLocationChange',\n value: function onLatestTorrentLocationChange() {\n this.setState({ destination: _storesUIStore2['default'].getLatestTorrentLocation() });\n }\n }, {\n key: 'getActions',\n value: function getActions() {\n var icon = null;\n var primaryButtonText = 'Add Torrent';\n\n if (this.state.isAddingTorrents) {\n icon = _react2['default'].createElement(_iconsLoadingIndicatorDots2['default'], { viewBox: '0 0 32 32' });\n primaryButtonText = 'Adding...';\n }\n\n return [{\n clickHandler: null,\n content: 'Cancel',\n triggerDismiss: true,\n type: 'secondary'\n }, {\n clickHandler: this.handleAddTorrents,\n content: _react2['default'].createElement(\n 'span',\n null,\n icon,\n primaryButtonText\n ),\n supplementalClassName: icon != null ? 'has-icon' : '',\n triggerDismiss: true,\n type: 'primary'\n }];\n }\n }, {\n key: 'getContent',\n value: function getContent() {\n var error = null;\n\n if (this.state.addTorrentsError) {\n error = _react2['default'].createElement(\n 'div',\n { className: 'form__row' },\n this.state.addTorrentsError\n );\n }\n\n return _react2['default'].createElement(\n 'div',\n { className: 'form' },\n error,\n _react2['default'].createElement(\n 'div',\n { className: 'form__row' },\n _react2['default'].createElement(_formsTextboxRepeater2['default'], { placeholder: 'Torrent URL',\n handleTextboxAdd: this.handleUrlAdd,\n handleTextboxChange: this.handleUrlChange,\n handleTextboxRemove: this.handleUrlRemove,\n textboxes: this.state.urlTextboxes })\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'form__row' },\n _react2['default'].createElement('input', { className: 'textbox',\n onChange: this.handleDestinationChange,\n placeholder: 'Destination',\n value: this.state.destination,\n type: 'text' })\n )\n );\n }\n }, {\n key: 'handleAddTorrents',\n value: function handleAddTorrents() {\n this.setState({ isAddingTorrents: true });\n var torrentUrls = _lodash2['default'].pluck(this.state.urlTextboxes, 'value');\n _actionsTorrentActions2['default'].addTorrents(torrentUrls, this.state.destination);\n }\n }, {\n key: 'handleDestinationChange',\n value: function handleDestinationChange(event) {\n this.setState({\n destination: event.target.value\n });\n }\n }, {\n key: 'handleMenuWrapperClick',\n value: function handleMenuWrapperClick(event) {\n event.stopPropagation();\n }\n }, {\n key: 'handleUrlRemove',\n value: function handleUrlRemove(index) {\n var urlTextboxes = Object.assign([], this.state.urlTextboxes);\n urlTextboxes.splice(index, 1);\n this.setState({\n urlTextboxes: urlTextboxes\n });\n }\n }, {\n key: 'handleUrlAdd',\n value: function handleUrlAdd(index) {\n var urlTextboxes = Object.assign([], this.state.urlTextboxes);\n urlTextboxes.splice(index + 1, 0, { value: null });\n this.setState({ urlTextboxes: urlTextboxes });\n }\n }, {\n key: 'handleUrlChange',\n value: function handleUrlChange(index, value) {\n var urlTextboxes = Object.assign([], this.state.urlTextboxes);\n urlTextboxes[index].value = value;\n this.setState({ urlTextboxes: urlTextboxes });\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2['default'].createElement(_Modal2['default'], { heading: 'Add Torrents',\n content: this.getContent(),\n actions: this.getActions(),\n dismiss: this.dismissModal });\n }\n }]);\n\n return AddTorrents;\n})(_react2['default'].Component);\n\nexports['default'] = AddTorrents;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy9tb2RhbHMvQWRkVG9ycmVudHMuanM/MGVlMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxpQ0FBaUMsMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUUsRUFBRSx5REFBeUQscUVBQXFFLDZEQUE2RCxvQkFBb0IsR0FBRyxFQUFFOztBQUVsakIsdUNBQXVDLG1CQUFtQiw0QkFBNEIsaURBQWlELGdCQUFnQixrREFBa0QsOERBQThELDBCQUEwQiw0Q0FBNEMsdUJBQXVCLGtCQUFrQixFQUFFLE9BQU8sYUFBYSxnQkFBZ0IsZ0JBQWdCLGVBQWUsMkJBQTJCLG9CQUFvQixFQUFFLEVBQUUsNEJBQTRCLG1CQUFtQixFQUFFLE9BQU8sdUJBQXVCLDRCQUE0QixrQkFBa0IsRUFBRSw4QkFBOEIsRUFBRSxFQUFFOztBQUUvb0Isc0NBQXNDLHVDQUF1QyxrQkFBa0I7O0FBRS9GLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDBDQUEwQywrREFBK0QscUdBQXFHLEVBQUUseUVBQXlFLGVBQWUseUVBQXlFLEVBQUUsRUFBRSx1SEFBdUg7O0FBRTVlOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLGNBQWM7QUFDcEM7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIscUVBQXFFO0FBQzFGO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHFCQUFxQixxRUFBcUU7QUFDMUY7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5RkFBeUYsdUJBQXVCO0FBQ2hIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyx5QkFBeUI7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTLG9CQUFvQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxXQUFXLHlCQUF5QjtBQUNwQywrRUFBK0U7QUFDL0U7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLFdBQVcseUJBQXlCO0FBQ3BDLHFEQUFxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUIseUJBQXlCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLGNBQWM7QUFDdkQscUJBQXFCLDZCQUE2QjtBQUNsRDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw2QkFBNkI7QUFDbEQ7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLG1FQUFtRTtBQUNuRTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7QUFDQSIsImZpbGUiOiIxNzAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChfeCwgX3gyLCBfeDMpIHsgdmFyIF9hZ2FpbiA9IHRydWU7IF9mdW5jdGlvbjogd2hpbGUgKF9hZ2FpbikgeyB2YXIgb2JqZWN0ID0gX3gsIHByb3BlcnR5ID0gX3gyLCByZWNlaXZlciA9IF94MzsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeCA9IHBhcmVudDsgX3gyID0gcHJvcGVydHk7IF94MyA9IHJlY2VpdmVyOyBfYWdhaW4gPSB0cnVlOyBkZXNjID0gcGFyZW50ID0gdW5kZWZpbmVkOyBjb250aW51ZSBfZnVuY3Rpb247IH0gfSBlbHNlIGlmICgndmFsdWUnIGluIGRlc2MpIHsgcmV0dXJuIGRlc2MudmFsdWU7IH0gZWxzZSB7IHZhciBnZXR0ZXIgPSBkZXNjLmdldDsgaWYgKGdldHRlciA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTsgfSB9IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBfbG9kYXNoID0gcmVxdWlyZSgnbG9kYXNoJyk7XG5cbnZhciBfbG9kYXNoMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2xvZGFzaCk7XG5cbnZhciBfY2xhc3NuYW1lcyA9IHJlcXVpcmUoJ2NsYXNzbmFtZXMnKTtcblxudmFyIF9jbGFzc25hbWVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzbmFtZXMpO1xuXG52YXIgX3JlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cbnZhciBfY29uc3RhbnRzRXZlbnRUeXBlcyA9IHJlcXVpcmUoJy4uLy4uL2NvbnN0YW50cy9FdmVudFR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzRXZlbnRUeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25zdGFudHNFdmVudFR5cGVzKTtcblxudmFyIF9pY29uc0xvYWRpbmdJbmRpY2F0b3JEb3RzID0gcmVxdWlyZSgnLi4vaWNvbnMvTG9hZGluZ0luZGljYXRvckRvdHMnKTtcblxudmFyIF9pY29uc0xvYWRpbmdJbmRpY2F0b3JEb3RzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ljb25zTG9hZGluZ0luZGljYXRvckRvdHMpO1xuXG52YXIgX01vZGFsID0gcmVxdWlyZSgnLi9Nb2RhbCcpO1xuXG52YXIgX01vZGFsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX01vZGFsKTtcblxudmFyIF9mb3Jtc1RleHRib3hSZXBlYXRlciA9IHJlcXVpcmUoJy4uL2Zvcm1zL1RleHRib3hSZXBlYXRlcicpO1xuXG52YXIgX2Zvcm1zVGV4dGJveFJlcGVhdGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Zvcm1zVGV4dGJveFJlcGVhdGVyKTtcblxudmFyIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMgPSByZXF1aXJlKCcuLi8uLi9hY3Rpb25zL1RvcnJlbnRBY3Rpb25zJyk7XG5cbnZhciBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2FjdGlvbnNUb3JyZW50QWN0aW9ucyk7XG5cbnZhciBfc3RvcmVzVG9ycmVudFN0b3JlID0gcmVxdWlyZSgnLi4vLi4vc3RvcmVzL1RvcnJlbnRTdG9yZScpO1xuXG52YXIgX3N0b3Jlc1RvcnJlbnRTdG9yZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdG9yZXNUb3JyZW50U3RvcmUpO1xuXG52YXIgX2FjdGlvbnNVSUFjdGlvbnMgPSByZXF1aXJlKCcuLi8uLi9hY3Rpb25zL1VJQWN0aW9ucycpO1xuXG52YXIgX2FjdGlvbnNVSUFjdGlvbnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYWN0aW9uc1VJQWN0aW9ucyk7XG5cbnZhciBfc3RvcmVzVUlTdG9yZSA9IHJlcXVpcmUoJy4uLy4uL3N0b3Jlcy9VSVN0b3JlJyk7XG5cbnZhciBfc3RvcmVzVUlTdG9yZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdG9yZXNVSVN0b3JlKTtcblxudmFyIE1FVEhPRFNfVE9fQklORCA9IFsnZ2V0Q29udGVudCcsICdoYW5kbGVEZXN0aW5hdGlvbkNoYW5nZScsICdoYW5kbGVVcmxBZGQnLCAnaGFuZGxlVXJsQ2hhbmdlJywgJ2hhbmRsZVVybFJlbW92ZScsICdoYW5kbGVBZGRUb3JyZW50cycsICdvbkFkZFRvcnJlbnRTdWNjZXNzJywgJ29uTGF0ZXN0VG9ycmVudExvY2F0aW9uQ2hhbmdlJ107XG5cbnZhciBBZGRUb3JyZW50cyA9IChmdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQWRkVG9ycmVudHMsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIEFkZFRvcnJlbnRzKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQWRkVG9ycmVudHMpO1xuXG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoQWRkVG9ycmVudHMucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuY2FsbCh0aGlzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBhZGRUb3JyZW50c0Vycm9yOiBudWxsLFxuICAgICAgZGVzdGluYXRpb246IG51bGwsXG4gICAgICBpc0V4cGFuZGVkOiBmYWxzZSxcbiAgICAgIGlzQWRkaW5nVG9ycmVudHM6IGZhbHNlLFxuICAgICAgdXJsVGV4dGJveGVzOiBbeyB2YWx1ZTogbnVsbCB9XVxuICAgIH07XG5cbiAgICBNRVRIT0RTX1RPX0JJTkQuZm9yRWFjaChmdW5jdGlvbiAobWV0aG9kKSB7XG4gICAgICBfdGhpc1ttZXRob2RdID0gX3RoaXNbbWV0aG9kXS5iaW5kKF90aGlzKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhBZGRUb3JyZW50cywgW3tcbiAgICBrZXk6ICdjb21wb25lbnRXaWxsTW91bnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsTW91bnQoKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgZGVzdGluYXRpb246IF9zdG9yZXNVSVN0b3JlMlsnZGVmYXVsdCddLmdldExhdGVzdFRvcnJlbnRMb2NhdGlvbigpIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2NvbXBvbmVudERpZE1vdW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICBfc3RvcmVzVG9ycmVudFN0b3JlMlsnZGVmYXVsdCddLmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfQUREX1RPUlJFTlRfU1VDQ0VTUywgdGhpcy5vbkFkZFRvcnJlbnRTdWNjZXNzKTtcbiAgICAgIF9zdG9yZXNVSVN0b3JlMlsnZGVmYXVsdCddLmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9MQVRFU1RfVE9SUkVOVF9MT0NBVElPTl9DSEFOR0UsIHRoaXMub25MYXRlc3RUb3JyZW50TG9jYXRpb25DaGFuZ2UpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2NvbXBvbmVudFdpbGxVbm1vdW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBfc3RvcmVzVG9ycmVudFN0b3JlMlsnZGVmYXVsdCddLnVubGlzdGVuKF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9BRERfVE9SUkVOVF9TVUNDRVNTLCB0aGlzLm9uQWRkVG9ycmVudFN1Y2Nlc3MpO1xuICAgICAgX3N0b3Jlc1VJU3RvcmUyWydkZWZhdWx0J10udW5saXN0ZW4oX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uVUlfTEFURVNUX1RPUlJFTlRfTE9DQVRJT05fQ0hBTkdFLCB0aGlzLm9uTGF0ZXN0VG9ycmVudExvY2F0aW9uQ2hhbmdlKTtcbiAgICAgIF9zdG9yZXNVSVN0b3JlMlsnZGVmYXVsdCddLmZldGNoTGF0ZXN0VG9ycmVudExvY2F0aW9uKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZGlzbWlzc01vZGFsJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGlzbWlzc01vZGFsKCkge1xuICAgICAgX2FjdGlvbnNVSUFjdGlvbnMyWydkZWZhdWx0J10uZGlzbWlzc01vZGFsKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnb25BZGRUb3JyZW50RXJyb3InLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkFkZFRvcnJlbnRFcnJvcigpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBhZGRUb3JyZW50c0Vycm9yOiAnVGhlcmUgd2FzIGFuIGVycm9yLCBidXQgSSBoYXZlIG5vIGlkZWEgd2hhdCBoYXBwZW5lZCEnLFxuICAgICAgICBpc0FkZGluZ1RvcnJlbnRzOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnb25BZGRUb3JyZW50U3VjY2VzcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uQWRkVG9ycmVudFN1Y2Nlc3MoKSB7XG4gICAgICB0aGlzLmRpc21pc3NNb2RhbCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ29uTGF0ZXN0VG9ycmVudExvY2F0aW9uQ2hhbmdlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25MYXRlc3RUb3JyZW50TG9jYXRpb25DaGFuZ2UoKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgZGVzdGluYXRpb246IF9zdG9yZXNVSVN0b3JlMlsnZGVmYXVsdCddLmdldExhdGVzdFRvcnJlbnRMb2NhdGlvbigpIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldEFjdGlvbnMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRBY3Rpb25zKCkge1xuICAgICAgdmFyIGljb24gPSBudWxsO1xuICAgICAgdmFyIHByaW1hcnlCdXR0b25UZXh0ID0gJ0FkZCBUb3JyZW50JztcblxuICAgICAgaWYgKHRoaXMuc3RhdGUuaXNBZGRpbmdUb3JyZW50cykge1xuICAgICAgICBpY29uID0gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2ljb25zTG9hZGluZ0luZGljYXRvckRvdHMyWydkZWZhdWx0J10sIHsgdmlld0JveDogJzAgMCAzMiAzMicgfSk7XG4gICAgICAgIHByaW1hcnlCdXR0b25UZXh0ID0gJ0FkZGluZy4uLic7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbe1xuICAgICAgICBjbGlja0hhbmRsZXI6IG51bGwsXG4gICAgICAgIGNvbnRlbnQ6ICdDYW5jZWwnLFxuICAgICAgICB0cmlnZ2VyRGlzbWlzczogdHJ1ZSxcbiAgICAgICAgdHlwZTogJ3NlY29uZGFyeSdcbiAgICAgIH0sIHtcbiAgICAgICAgY2xpY2tIYW5kbGVyOiB0aGlzLmhhbmRsZUFkZFRvcnJlbnRzLFxuICAgICAgICBjb250ZW50OiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAnc3BhbicsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBpY29uLFxuICAgICAgICAgIHByaW1hcnlCdXR0b25UZXh0XG4gICAgICAgICksXG4gICAgICAgIHN1cHBsZW1lbnRhbENsYXNzTmFtZTogaWNvbiAhPSBudWxsID8gJ2hhcy1pY29uJyA6ICcnLFxuICAgICAgICB0cmlnZ2VyRGlzbWlzczogdHJ1ZSxcbiAgICAgICAgdHlwZTogJ3ByaW1hcnknXG4gICAgICB9XTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRDb250ZW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29udGVudCgpIHtcbiAgICAgIHZhciBlcnJvciA9IG51bGw7XG5cbiAgICAgIGlmICh0aGlzLnN0YXRlLmFkZFRvcnJlbnRzRXJyb3IpIHtcbiAgICAgICAgZXJyb3IgPSBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ2Zvcm1fX3JvdycgfSxcbiAgICAgICAgICB0aGlzLnN0YXRlLmFkZFRvcnJlbnRzRXJyb3JcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAnZGl2JyxcbiAgICAgICAgeyBjbGFzc05hbWU6ICdmb3JtJyB9LFxuICAgICAgICBlcnJvcixcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgeyBjbGFzc05hbWU6ICdmb3JtX19yb3cnIH0sXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2Zvcm1zVGV4dGJveFJlcGVhdGVyMlsnZGVmYXVsdCddLCB7IHBsYWNlaG9sZGVyOiAnVG9ycmVudCBVUkwnLFxuICAgICAgICAgICAgaGFuZGxlVGV4dGJveEFkZDogdGhpcy5oYW5kbGVVcmxBZGQsXG4gICAgICAgICAgICBoYW5kbGVUZXh0Ym94Q2hhbmdlOiB0aGlzLmhhbmRsZVVybENoYW5nZSxcbiAgICAgICAgICAgIGhhbmRsZVRleHRib3hSZW1vdmU6IHRoaXMuaGFuZGxlVXJsUmVtb3ZlLFxuICAgICAgICAgICAgdGV4dGJveGVzOiB0aGlzLnN0YXRlLnVybFRleHRib3hlcyB9KVxuICAgICAgICApLFxuICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ2Zvcm1fX3JvdycgfSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudCgnaW5wdXQnLCB7IGNsYXNzTmFtZTogJ3RleHRib3gnLFxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMuaGFuZGxlRGVzdGluYXRpb25DaGFuZ2UsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0Rlc3RpbmF0aW9uJyxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnN0YXRlLmRlc3RpbmF0aW9uLFxuICAgICAgICAgICAgdHlwZTogJ3RleHQnIH0pXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlQWRkVG9ycmVudHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVBZGRUb3JyZW50cygpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBpc0FkZGluZ1RvcnJlbnRzOiB0cnVlIH0pO1xuICAgICAgdmFyIHRvcnJlbnRVcmxzID0gX2xvZGFzaDJbJ2RlZmF1bHQnXS5wbHVjayh0aGlzLnN0YXRlLnVybFRleHRib3hlcywgJ3ZhbHVlJyk7XG4gICAgICBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMlsnZGVmYXVsdCddLmFkZFRvcnJlbnRzKHRvcnJlbnRVcmxzLCB0aGlzLnN0YXRlLmRlc3RpbmF0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVEZXN0aW5hdGlvbkNoYW5nZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZURlc3RpbmF0aW9uQ2hhbmdlKGV2ZW50KSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZGVzdGluYXRpb246IGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlTWVudVdyYXBwZXJDbGljaycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZU1lbnVXcmFwcGVyQ2xpY2soZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZVVybFJlbW92ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVVybFJlbW92ZShpbmRleCkge1xuICAgICAgdmFyIHVybFRleHRib3hlcyA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMuc3RhdGUudXJsVGV4dGJveGVzKTtcbiAgICAgIHVybFRleHRib3hlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHVybFRleHRib3hlczogdXJsVGV4dGJveGVzXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVVcmxBZGQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVVcmxBZGQoaW5kZXgpIHtcbiAgICAgIHZhciB1cmxUZXh0Ym94ZXMgPSBPYmplY3QuYXNzaWduKFtdLCB0aGlzLnN0YXRlLnVybFRleHRib3hlcyk7XG4gICAgICB1cmxUZXh0Ym94ZXMuc3BsaWNlKGluZGV4ICsgMSwgMCwgeyB2YWx1ZTogbnVsbCB9KTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyB1cmxUZXh0Ym94ZXM6IHVybFRleHRib3hlcyB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVVcmxDaGFuZ2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVVcmxDaGFuZ2UoaW5kZXgsIHZhbHVlKSB7XG4gICAgICB2YXIgdXJsVGV4dGJveGVzID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5zdGF0ZS51cmxUZXh0Ym94ZXMpO1xuICAgICAgdXJsVGV4dGJveGVzW2luZGV4XS52YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IHVybFRleHRib3hlczogdXJsVGV4dGJveGVzIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3JlbmRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHJldHVybiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfTW9kYWwyWydkZWZhdWx0J10sIHsgaGVhZGluZzogJ0FkZCBUb3JyZW50cycsXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMuZ2V0Q29udGVudCgpLFxuICAgICAgICBhY3Rpb25zOiB0aGlzLmdldEFjdGlvbnMoKSxcbiAgICAgICAgZGlzbWlzczogdGhpcy5kaXNtaXNzTW9kYWwgfSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEFkZFRvcnJlbnRzO1xufSkoX3JlYWN0MlsnZGVmYXVsdCddLkNvbXBvbmVudCk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IEFkZFRvcnJlbnRzO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9jb21wb25lbnRzL21vZGFscy9BZGRUb3JyZW50cy5qc1xuICoqIG1vZHVsZSBpZCA9IDE3MFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); + eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _lodash = __webpack_require__(161);\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _classnames = __webpack_require__(171);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _constantsEventTypes = __webpack_require__(172);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _iconsLoadingIndicatorDots = __webpack_require__(173);\n\nvar _iconsLoadingIndicatorDots2 = _interopRequireDefault(_iconsLoadingIndicatorDots);\n\nvar _Modal = __webpack_require__(175);\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _formsTextboxRepeater = __webpack_require__(176);\n\nvar _formsTextboxRepeater2 = _interopRequireDefault(_formsTextboxRepeater);\n\nvar _actionsTorrentActions = __webpack_require__(179);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar _storesTorrentStore = __webpack_require__(199);\n\nvar _storesTorrentStore2 = _interopRequireDefault(_storesTorrentStore);\n\nvar _actionsUIActions = __webpack_require__(209);\n\nvar _actionsUIActions2 = _interopRequireDefault(_actionsUIActions);\n\nvar _storesUIStore = __webpack_require__(210);\n\nvar _storesUIStore2 = _interopRequireDefault(_storesUIStore);\n\nvar METHODS_TO_BIND = ['getContent', 'handleDestinationChange', 'handleUrlAdd', 'handleUrlChange', 'handleUrlRemove', 'handleAddTorrents', 'onAddTorrentSuccess', 'onLatestTorrentLocationChange'];\n\nvar AddTorrents = (function (_React$Component) {\n _inherits(AddTorrents, _React$Component);\n\n function AddTorrents() {\n var _this = this;\n\n _classCallCheck(this, AddTorrents);\n\n _get(Object.getPrototypeOf(AddTorrents.prototype), 'constructor', this).call(this);\n\n this.state = {\n addTorrentsError: null,\n destination: null,\n isExpanded: false,\n isAddingTorrents: false,\n urlTextboxes: [{ value: null }]\n };\n\n METHODS_TO_BIND.forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n }\n\n _createClass(AddTorrents, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.setState({ destination: _storesUIStore2['default'].getLatestTorrentLocation() });\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n _storesTorrentStore2['default'].listen(_constantsEventTypes2['default'].CLIENT_ADD_TORRENT_SUCCESS, this.onAddTorrentSuccess);\n _storesUIStore2['default'].listen(_constantsEventTypes2['default'].UI_LATEST_TORRENT_LOCATION_CHANGE, this.onLatestTorrentLocationChange);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _storesTorrentStore2['default'].unlisten(_constantsEventTypes2['default'].CLIENT_ADD_TORRENT_SUCCESS, this.onAddTorrentSuccess);\n _storesUIStore2['default'].unlisten(_constantsEventTypes2['default'].UI_LATEST_TORRENT_LOCATION_CHANGE, this.onLatestTorrentLocationChange);\n _storesUIStore2['default'].fetchLatestTorrentLocation();\n }\n }, {\n key: 'dismissModal',\n value: function dismissModal() {\n _actionsUIActions2['default'].dismissModal();\n }\n }, {\n key: 'onAddTorrentError',\n value: function onAddTorrentError() {\n this.setState({\n addTorrentsError: 'There was an error, but I have no idea what happened!',\n isAddingTorrents: false\n });\n }\n }, {\n key: 'onAddTorrentSuccess',\n value: function onAddTorrentSuccess() {\n this.dismissModal();\n }\n }, {\n key: 'onLatestTorrentLocationChange',\n value: function onLatestTorrentLocationChange() {\n this.setState({ destination: _storesUIStore2['default'].getLatestTorrentLocation() });\n }\n }, {\n key: 'getActions',\n value: function getActions() {\n var icon = null;\n var primaryButtonText = 'Add Torrent';\n\n if (this.state.isAddingTorrents) {\n icon = _react2['default'].createElement(_iconsLoadingIndicatorDots2['default'], { viewBox: '0 0 32 32' });\n primaryButtonText = 'Adding...';\n }\n\n return [{\n clickHandler: null,\n content: 'Cancel',\n triggerDismiss: true,\n type: 'secondary'\n }, {\n clickHandler: this.handleAddTorrents,\n content: _react2['default'].createElement(\n 'span',\n null,\n icon,\n primaryButtonText\n ),\n supplementalClassName: icon != null ? 'has-icon' : '',\n triggerDismiss: true,\n type: 'primary'\n }];\n }\n }, {\n key: 'getContent',\n value: function getContent() {\n var error = null;\n\n if (this.state.addTorrentsError) {\n error = _react2['default'].createElement(\n 'div',\n { className: 'form__row' },\n this.state.addTorrentsError\n );\n }\n\n return _react2['default'].createElement(\n 'div',\n { className: 'form' },\n error,\n _react2['default'].createElement(\n 'div',\n { className: 'form__row' },\n _react2['default'].createElement(_formsTextboxRepeater2['default'], { placeholder: 'Torrent URL',\n handleTextboxAdd: this.handleUrlAdd,\n handleTextboxChange: this.handleUrlChange,\n handleTextboxRemove: this.handleUrlRemove,\n textboxes: this.state.urlTextboxes })\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'form__row' },\n _react2['default'].createElement('input', { className: 'textbox',\n onChange: this.handleDestinationChange,\n placeholder: 'Destination',\n value: this.state.destination,\n type: 'text' })\n )\n );\n }\n }, {\n key: 'handleAddTorrents',\n value: function handleAddTorrents() {\n this.setState({ isAddingTorrents: true });\n var torrentUrls = _lodash2['default'].map(this.state.urlTextboxes, 'value');\n _actionsTorrentActions2['default'].addTorrents(torrentUrls, this.state.destination);\n }\n }, {\n key: 'handleDestinationChange',\n value: function handleDestinationChange(event) {\n this.setState({\n destination: event.target.value\n });\n }\n }, {\n key: 'handleMenuWrapperClick',\n value: function handleMenuWrapperClick(event) {\n event.stopPropagation();\n }\n }, {\n key: 'handleUrlRemove',\n value: function handleUrlRemove(index) {\n var urlTextboxes = Object.assign([], this.state.urlTextboxes);\n urlTextboxes.splice(index, 1);\n this.setState({\n urlTextboxes: urlTextboxes\n });\n }\n }, {\n key: 'handleUrlAdd',\n value: function handleUrlAdd(index) {\n var urlTextboxes = Object.assign([], this.state.urlTextboxes);\n urlTextboxes.splice(index + 1, 0, { value: null });\n this.setState({ urlTextboxes: urlTextboxes });\n }\n }, {\n key: 'handleUrlChange',\n value: function handleUrlChange(index, value) {\n var urlTextboxes = Object.assign([], this.state.urlTextboxes);\n urlTextboxes[index].value = value;\n this.setState({ urlTextboxes: urlTextboxes });\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2['default'].createElement(_Modal2['default'], { heading: 'Add Torrents',\n content: this.getContent(),\n actions: this.getActions(),\n dismiss: this.dismissModal });\n }\n }]);\n\n return AddTorrents;\n})(_react2['default'].Component);\n\nexports['default'] = AddTorrents;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy9tb2RhbHMvQWRkVG9ycmVudHMuanM/MGVlMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxpQ0FBaUMsMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUUsRUFBRSx5REFBeUQscUVBQXFFLDZEQUE2RCxvQkFBb0IsR0FBRyxFQUFFOztBQUVsakIsdUNBQXVDLG1CQUFtQiw0QkFBNEIsaURBQWlELGdCQUFnQixrREFBa0QsOERBQThELDBCQUEwQiw0Q0FBNEMsdUJBQXVCLGtCQUFrQixFQUFFLE9BQU8sYUFBYSxnQkFBZ0IsZ0JBQWdCLGVBQWUsMkJBQTJCLG9CQUFvQixFQUFFLEVBQUUsNEJBQTRCLG1CQUFtQixFQUFFLE9BQU8sdUJBQXVCLDRCQUE0QixrQkFBa0IsRUFBRSw4QkFBOEIsRUFBRSxFQUFFOztBQUUvb0Isc0NBQXNDLHVDQUF1QyxrQkFBa0I7O0FBRS9GLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDBDQUEwQywrREFBK0QscUdBQXFHLEVBQUUseUVBQXlFLGVBQWUseUVBQXlFLEVBQUUsRUFBRSx1SEFBdUg7O0FBRTVlOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLGNBQWM7QUFDcEM7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIscUVBQXFFO0FBQzFGO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHFCQUFxQixxRUFBcUU7QUFDMUY7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5RkFBeUYsdUJBQXVCO0FBQ2hIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyx5QkFBeUI7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTLG9CQUFvQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSxXQUFXLHlCQUF5QjtBQUNwQywrRUFBK0U7QUFDL0U7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLFdBQVcseUJBQXlCO0FBQ3BDLHFEQUFxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUIseUJBQXlCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLGNBQWM7QUFDdkQscUJBQXFCLDZCQUE2QjtBQUNsRDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw2QkFBNkI7QUFDbEQ7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLG1FQUFtRTtBQUNuRTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7QUFDQSIsImZpbGUiOiIxNzAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChfeCwgX3gyLCBfeDMpIHsgdmFyIF9hZ2FpbiA9IHRydWU7IF9mdW5jdGlvbjogd2hpbGUgKF9hZ2FpbikgeyB2YXIgb2JqZWN0ID0gX3gsIHByb3BlcnR5ID0gX3gyLCByZWNlaXZlciA9IF94MzsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeCA9IHBhcmVudDsgX3gyID0gcHJvcGVydHk7IF94MyA9IHJlY2VpdmVyOyBfYWdhaW4gPSB0cnVlOyBkZXNjID0gcGFyZW50ID0gdW5kZWZpbmVkOyBjb250aW51ZSBfZnVuY3Rpb247IH0gfSBlbHNlIGlmICgndmFsdWUnIGluIGRlc2MpIHsgcmV0dXJuIGRlc2MudmFsdWU7IH0gZWxzZSB7IHZhciBnZXR0ZXIgPSBkZXNjLmdldDsgaWYgKGdldHRlciA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTsgfSB9IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBfbG9kYXNoID0gcmVxdWlyZSgnbG9kYXNoJyk7XG5cbnZhciBfbG9kYXNoMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2xvZGFzaCk7XG5cbnZhciBfY2xhc3NuYW1lcyA9IHJlcXVpcmUoJ2NsYXNzbmFtZXMnKTtcblxudmFyIF9jbGFzc25hbWVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzbmFtZXMpO1xuXG52YXIgX3JlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cbnZhciBfY29uc3RhbnRzRXZlbnRUeXBlcyA9IHJlcXVpcmUoJy4uLy4uL2NvbnN0YW50cy9FdmVudFR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzRXZlbnRUeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25zdGFudHNFdmVudFR5cGVzKTtcblxudmFyIF9pY29uc0xvYWRpbmdJbmRpY2F0b3JEb3RzID0gcmVxdWlyZSgnLi4vaWNvbnMvTG9hZGluZ0luZGljYXRvckRvdHMnKTtcblxudmFyIF9pY29uc0xvYWRpbmdJbmRpY2F0b3JEb3RzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ljb25zTG9hZGluZ0luZGljYXRvckRvdHMpO1xuXG52YXIgX01vZGFsID0gcmVxdWlyZSgnLi9Nb2RhbCcpO1xuXG52YXIgX01vZGFsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX01vZGFsKTtcblxudmFyIF9mb3Jtc1RleHRib3hSZXBlYXRlciA9IHJlcXVpcmUoJy4uL2Zvcm1zL1RleHRib3hSZXBlYXRlcicpO1xuXG52YXIgX2Zvcm1zVGV4dGJveFJlcGVhdGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Zvcm1zVGV4dGJveFJlcGVhdGVyKTtcblxudmFyIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMgPSByZXF1aXJlKCcuLi8uLi9hY3Rpb25zL1RvcnJlbnRBY3Rpb25zJyk7XG5cbnZhciBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2FjdGlvbnNUb3JyZW50QWN0aW9ucyk7XG5cbnZhciBfc3RvcmVzVG9ycmVudFN0b3JlID0gcmVxdWlyZSgnLi4vLi4vc3RvcmVzL1RvcnJlbnRTdG9yZScpO1xuXG52YXIgX3N0b3Jlc1RvcnJlbnRTdG9yZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdG9yZXNUb3JyZW50U3RvcmUpO1xuXG52YXIgX2FjdGlvbnNVSUFjdGlvbnMgPSByZXF1aXJlKCcuLi8uLi9hY3Rpb25zL1VJQWN0aW9ucycpO1xuXG52YXIgX2FjdGlvbnNVSUFjdGlvbnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYWN0aW9uc1VJQWN0aW9ucyk7XG5cbnZhciBfc3RvcmVzVUlTdG9yZSA9IHJlcXVpcmUoJy4uLy4uL3N0b3Jlcy9VSVN0b3JlJyk7XG5cbnZhciBfc3RvcmVzVUlTdG9yZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdG9yZXNVSVN0b3JlKTtcblxudmFyIE1FVEhPRFNfVE9fQklORCA9IFsnZ2V0Q29udGVudCcsICdoYW5kbGVEZXN0aW5hdGlvbkNoYW5nZScsICdoYW5kbGVVcmxBZGQnLCAnaGFuZGxlVXJsQ2hhbmdlJywgJ2hhbmRsZVVybFJlbW92ZScsICdoYW5kbGVBZGRUb3JyZW50cycsICdvbkFkZFRvcnJlbnRTdWNjZXNzJywgJ29uTGF0ZXN0VG9ycmVudExvY2F0aW9uQ2hhbmdlJ107XG5cbnZhciBBZGRUb3JyZW50cyA9IChmdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQWRkVG9ycmVudHMsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIEFkZFRvcnJlbnRzKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQWRkVG9ycmVudHMpO1xuXG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoQWRkVG9ycmVudHMucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuY2FsbCh0aGlzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBhZGRUb3JyZW50c0Vycm9yOiBudWxsLFxuICAgICAgZGVzdGluYXRpb246IG51bGwsXG4gICAgICBpc0V4cGFuZGVkOiBmYWxzZSxcbiAgICAgIGlzQWRkaW5nVG9ycmVudHM6IGZhbHNlLFxuICAgICAgdXJsVGV4dGJveGVzOiBbeyB2YWx1ZTogbnVsbCB9XVxuICAgIH07XG5cbiAgICBNRVRIT0RTX1RPX0JJTkQuZm9yRWFjaChmdW5jdGlvbiAobWV0aG9kKSB7XG4gICAgICBfdGhpc1ttZXRob2RdID0gX3RoaXNbbWV0aG9kXS5iaW5kKF90aGlzKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhBZGRUb3JyZW50cywgW3tcbiAgICBrZXk6ICdjb21wb25lbnRXaWxsTW91bnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsTW91bnQoKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgZGVzdGluYXRpb246IF9zdG9yZXNVSVN0b3JlMlsnZGVmYXVsdCddLmdldExhdGVzdFRvcnJlbnRMb2NhdGlvbigpIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2NvbXBvbmVudERpZE1vdW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICBfc3RvcmVzVG9ycmVudFN0b3JlMlsnZGVmYXVsdCddLmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfQUREX1RPUlJFTlRfU1VDQ0VTUywgdGhpcy5vbkFkZFRvcnJlbnRTdWNjZXNzKTtcbiAgICAgIF9zdG9yZXNVSVN0b3JlMlsnZGVmYXVsdCddLmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9MQVRFU1RfVE9SUkVOVF9MT0NBVElPTl9DSEFOR0UsIHRoaXMub25MYXRlc3RUb3JyZW50TG9jYXRpb25DaGFuZ2UpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2NvbXBvbmVudFdpbGxVbm1vdW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBfc3RvcmVzVG9ycmVudFN0b3JlMlsnZGVmYXVsdCddLnVubGlzdGVuKF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9BRERfVE9SUkVOVF9TVUNDRVNTLCB0aGlzLm9uQWRkVG9ycmVudFN1Y2Nlc3MpO1xuICAgICAgX3N0b3Jlc1VJU3RvcmUyWydkZWZhdWx0J10udW5saXN0ZW4oX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uVUlfTEFURVNUX1RPUlJFTlRfTE9DQVRJT05fQ0hBTkdFLCB0aGlzLm9uTGF0ZXN0VG9ycmVudExvY2F0aW9uQ2hhbmdlKTtcbiAgICAgIF9zdG9yZXNVSVN0b3JlMlsnZGVmYXVsdCddLmZldGNoTGF0ZXN0VG9ycmVudExvY2F0aW9uKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZGlzbWlzc01vZGFsJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGlzbWlzc01vZGFsKCkge1xuICAgICAgX2FjdGlvbnNVSUFjdGlvbnMyWydkZWZhdWx0J10uZGlzbWlzc01vZGFsKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnb25BZGRUb3JyZW50RXJyb3InLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvbkFkZFRvcnJlbnRFcnJvcigpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBhZGRUb3JyZW50c0Vycm9yOiAnVGhlcmUgd2FzIGFuIGVycm9yLCBidXQgSSBoYXZlIG5vIGlkZWEgd2hhdCBoYXBwZW5lZCEnLFxuICAgICAgICBpc0FkZGluZ1RvcnJlbnRzOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnb25BZGRUb3JyZW50U3VjY2VzcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uQWRkVG9ycmVudFN1Y2Nlc3MoKSB7XG4gICAgICB0aGlzLmRpc21pc3NNb2RhbCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ29uTGF0ZXN0VG9ycmVudExvY2F0aW9uQ2hhbmdlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25MYXRlc3RUb3JyZW50TG9jYXRpb25DaGFuZ2UoKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgZGVzdGluYXRpb246IF9zdG9yZXNVSVN0b3JlMlsnZGVmYXVsdCddLmdldExhdGVzdFRvcnJlbnRMb2NhdGlvbigpIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldEFjdGlvbnMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRBY3Rpb25zKCkge1xuICAgICAgdmFyIGljb24gPSBudWxsO1xuICAgICAgdmFyIHByaW1hcnlCdXR0b25UZXh0ID0gJ0FkZCBUb3JyZW50JztcblxuICAgICAgaWYgKHRoaXMuc3RhdGUuaXNBZGRpbmdUb3JyZW50cykge1xuICAgICAgICBpY29uID0gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2ljb25zTG9hZGluZ0luZGljYXRvckRvdHMyWydkZWZhdWx0J10sIHsgdmlld0JveDogJzAgMCAzMiAzMicgfSk7XG4gICAgICAgIHByaW1hcnlCdXR0b25UZXh0ID0gJ0FkZGluZy4uLic7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbe1xuICAgICAgICBjbGlja0hhbmRsZXI6IG51bGwsXG4gICAgICAgIGNvbnRlbnQ6ICdDYW5jZWwnLFxuICAgICAgICB0cmlnZ2VyRGlzbWlzczogdHJ1ZSxcbiAgICAgICAgdHlwZTogJ3NlY29uZGFyeSdcbiAgICAgIH0sIHtcbiAgICAgICAgY2xpY2tIYW5kbGVyOiB0aGlzLmhhbmRsZUFkZFRvcnJlbnRzLFxuICAgICAgICBjb250ZW50OiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAnc3BhbicsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBpY29uLFxuICAgICAgICAgIHByaW1hcnlCdXR0b25UZXh0XG4gICAgICAgICksXG4gICAgICAgIHN1cHBsZW1lbnRhbENsYXNzTmFtZTogaWNvbiAhPSBudWxsID8gJ2hhcy1pY29uJyA6ICcnLFxuICAgICAgICB0cmlnZ2VyRGlzbWlzczogdHJ1ZSxcbiAgICAgICAgdHlwZTogJ3ByaW1hcnknXG4gICAgICB9XTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRDb250ZW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29udGVudCgpIHtcbiAgICAgIHZhciBlcnJvciA9IG51bGw7XG5cbiAgICAgIGlmICh0aGlzLnN0YXRlLmFkZFRvcnJlbnRzRXJyb3IpIHtcbiAgICAgICAgZXJyb3IgPSBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ2Zvcm1fX3JvdycgfSxcbiAgICAgICAgICB0aGlzLnN0YXRlLmFkZFRvcnJlbnRzRXJyb3JcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAnZGl2JyxcbiAgICAgICAgeyBjbGFzc05hbWU6ICdmb3JtJyB9LFxuICAgICAgICBlcnJvcixcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgeyBjbGFzc05hbWU6ICdmb3JtX19yb3cnIH0sXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2Zvcm1zVGV4dGJveFJlcGVhdGVyMlsnZGVmYXVsdCddLCB7IHBsYWNlaG9sZGVyOiAnVG9ycmVudCBVUkwnLFxuICAgICAgICAgICAgaGFuZGxlVGV4dGJveEFkZDogdGhpcy5oYW5kbGVVcmxBZGQsXG4gICAgICAgICAgICBoYW5kbGVUZXh0Ym94Q2hhbmdlOiB0aGlzLmhhbmRsZVVybENoYW5nZSxcbiAgICAgICAgICAgIGhhbmRsZVRleHRib3hSZW1vdmU6IHRoaXMuaGFuZGxlVXJsUmVtb3ZlLFxuICAgICAgICAgICAgdGV4dGJveGVzOiB0aGlzLnN0YXRlLnVybFRleHRib3hlcyB9KVxuICAgICAgICApLFxuICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ2Zvcm1fX3JvdycgfSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudCgnaW5wdXQnLCB7IGNsYXNzTmFtZTogJ3RleHRib3gnLFxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMuaGFuZGxlRGVzdGluYXRpb25DaGFuZ2UsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0Rlc3RpbmF0aW9uJyxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnN0YXRlLmRlc3RpbmF0aW9uLFxuICAgICAgICAgICAgdHlwZTogJ3RleHQnIH0pXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlQWRkVG9ycmVudHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVBZGRUb3JyZW50cygpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBpc0FkZGluZ1RvcnJlbnRzOiB0cnVlIH0pO1xuICAgICAgdmFyIHRvcnJlbnRVcmxzID0gX2xvZGFzaDJbJ2RlZmF1bHQnXS5tYXAodGhpcy5zdGF0ZS51cmxUZXh0Ym94ZXMsICd2YWx1ZScpO1xuICAgICAgX2FjdGlvbnNUb3JyZW50QWN0aW9uczJbJ2RlZmF1bHQnXS5hZGRUb3JyZW50cyh0b3JyZW50VXJscywgdGhpcy5zdGF0ZS5kZXN0aW5hdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlRGVzdGluYXRpb25DaGFuZ2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVEZXN0aW5hdGlvbkNoYW5nZShldmVudCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGRlc3RpbmF0aW9uOiBldmVudC50YXJnZXQudmFsdWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZU1lbnVXcmFwcGVyQ2xpY2snLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVNZW51V3JhcHBlckNsaWNrKGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVVcmxSZW1vdmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVVcmxSZW1vdmUoaW5kZXgpIHtcbiAgICAgIHZhciB1cmxUZXh0Ym94ZXMgPSBPYmplY3QuYXNzaWduKFtdLCB0aGlzLnN0YXRlLnVybFRleHRib3hlcyk7XG4gICAgICB1cmxUZXh0Ym94ZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICB1cmxUZXh0Ym94ZXM6IHVybFRleHRib3hlc1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlVXJsQWRkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlVXJsQWRkKGluZGV4KSB7XG4gICAgICB2YXIgdXJsVGV4dGJveGVzID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5zdGF0ZS51cmxUZXh0Ym94ZXMpO1xuICAgICAgdXJsVGV4dGJveGVzLnNwbGljZShpbmRleCArIDEsIDAsIHsgdmFsdWU6IG51bGwgfSk7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgdXJsVGV4dGJveGVzOiB1cmxUZXh0Ym94ZXMgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlVXJsQ2hhbmdlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlVXJsQ2hhbmdlKGluZGV4LCB2YWx1ZSkge1xuICAgICAgdmFyIHVybFRleHRib3hlcyA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMuc3RhdGUudXJsVGV4dGJveGVzKTtcbiAgICAgIHVybFRleHRib3hlc1tpbmRleF0udmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyB1cmxUZXh0Ym94ZXM6IHVybFRleHRib3hlcyB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdyZW5kZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX01vZGFsMlsnZGVmYXVsdCddLCB7IGhlYWRpbmc6ICdBZGQgVG9ycmVudHMnLFxuICAgICAgICBjb250ZW50OiB0aGlzLmdldENvbnRlbnQoKSxcbiAgICAgICAgYWN0aW9uczogdGhpcy5nZXRBY3Rpb25zKCksXG4gICAgICAgIGRpc21pc3M6IHRoaXMuZGlzbWlzc01vZGFsIH0pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBBZGRUb3JyZW50cztcbn0pKF9yZWFjdDJbJ2RlZmF1bHQnXS5Db21wb25lbnQpO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBBZGRUb3JyZW50cztcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy9tb2RhbHMvQWRkVG9ycmVudHMuanNcbiAqKiBtb2R1bGUgaWQgPSAxNzBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0="); /***/ }, /* 171 */ @@ -1646,7 +1646,7 @@ /* 267 */ /***/ function(module, exports, __webpack_require__) { - eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _classnames = __webpack_require__(171);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _iconsFolderOpenSolid = __webpack_require__(265);\n\nvar _iconsFolderOpenSolid2 = _interopRequireDefault(_iconsFolderOpenSolid);\n\nvar _filesystemDirectoryTree = __webpack_require__(259);\n\nvar _filesystemDirectoryTree2 = _interopRequireDefault(_filesystemDirectoryTree);\n\nvar _iconsDownload = __webpack_require__(213);\n\nvar _iconsDownload2 = _interopRequireDefault(_iconsDownload);\n\nvar _iconsETA = __webpack_require__(268);\n\nvar _iconsETA2 = _interopRequireDefault(_iconsETA);\n\nvar _constantsEventTypes = __webpack_require__(172);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _iconsFile = __webpack_require__(261);\n\nvar _iconsFile2 = _interopRequireDefault(_iconsFile);\n\nvar _utilFormatData = __webpack_require__(214);\n\nvar _utilFormatData2 = _interopRequireDefault(_utilFormatData);\n\nvar _componentsIconsPause = __webpack_require__(269);\n\nvar _componentsIconsPause2 = _interopRequireDefault(_componentsIconsPause);\n\nvar _filesystemPriorityMeter = __webpack_require__(262);\n\nvar _filesystemPriorityMeter2 = _interopRequireDefault(_filesystemPriorityMeter);\n\nvar _uiProgressBar = __webpack_require__(270);\n\nvar _uiProgressBar2 = _interopRequireDefault(_uiProgressBar);\n\nvar _sharedConstantsPropsMap = __webpack_require__(204);\n\nvar _sharedConstantsPropsMap2 = _interopRequireDefault(_sharedConstantsPropsMap);\n\nvar _componentsIconsRatio = __webpack_require__(271);\n\nvar _componentsIconsRatio2 = _interopRequireDefault(_componentsIconsRatio);\n\nvar _componentsIconsStart = __webpack_require__(272);\n\nvar _componentsIconsStart2 = _interopRequireDefault(_componentsIconsStart);\n\nvar _componentsIconsStop = __webpack_require__(273);\n\nvar _componentsIconsStop2 = _interopRequireDefault(_componentsIconsStop);\n\nvar _sharedUtilStringUtil = __webpack_require__(274);\n\nvar _sharedUtilStringUtil2 = _interopRequireDefault(_sharedUtilStringUtil);\n\nvar _actionsTorrentActions = __webpack_require__(179);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar _storesTorrentStore = __webpack_require__(199);\n\nvar _storesTorrentStore2 = _interopRequireDefault(_storesTorrentStore);\n\nvar _utilTorrentStatusClasses = __webpack_require__(275);\n\nvar _iconsUpload = __webpack_require__(220);\n\nvar _iconsUpload2 = _interopRequireDefault(_iconsUpload);\n\nvar METHODS_TO_BIND = ['getCurrentStatus', 'handlePause', 'handleStart', 'handleStop'];\n\nvar TorrentHeading = (function (_React$Component) {\n _inherits(TorrentHeading, _React$Component);\n\n function TorrentHeading() {\n var _this = this;\n\n _classCallCheck(this, TorrentHeading);\n\n _get(Object.getPrototypeOf(TorrentHeading.prototype), 'constructor', this).call(this);\n\n this.state = {\n optimisticData: { currentStatus: null }\n };\n\n METHODS_TO_BIND.forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n }\n\n _createClass(TorrentHeading, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (this.state.optimisticData.currentStatus) {\n this.setState({ optimisticData: { currentStatus: null } });\n }\n }\n }, {\n key: 'getCurrentStatus',\n value: function getCurrentStatus(torrentStatus) {\n if (torrentStatus.indexOf(_sharedConstantsPropsMap2['default'].clientStatus.paused) > -1) {\n return 'pause';\n } else if (torrentStatus.indexOf(_sharedConstantsPropsMap2['default'].clientStatus.stopped) > -1) {\n return 'stop';\n } else {\n return 'start';\n }\n }\n }, {\n key: 'getTorrentActions',\n value: function getTorrentActions(torrent) {\n var _this2 = this;\n\n var currentStatus = this.state.optimisticData.currentStatus || this.getCurrentStatus(torrent.status);\n var statusIcons = {\n 'pause': _react2['default'].createElement(_componentsIconsPause2['default'], null),\n 'start': _react2['default'].createElement(_componentsIconsStart2['default'], null),\n 'stop': _react2['default'].createElement(_componentsIconsStop2['default'], null)\n };\n var torrentActions = ['start', 'pause', 'stop'];\n var torrentActionElements = [];\n\n torrentActionElements.push(_react2['default'].createElement(\n 'li',\n { className: 'torrent-details__sub-heading__tertiary',\n key: torrentActions.length + 1 },\n _react2['default'].createElement(_filesystemPriorityMeter2['default'], { id: torrent.hash, key: torrent.hash,\n level: torrent.priority, maxLevel: 3,\n onChange: this.handlePriorityChange, showLabel: true })\n ));\n\n torrentActions.forEach(function (torrentAction, index) {\n var capitalizedAction = _sharedUtilStringUtil2['default'].capitalize(torrentAction);\n var classes = 'torrent-details__sub-heading__tertiary torrent-details__action';\n\n if (torrentAction === currentStatus) {\n classes += ' is-active';\n }\n\n torrentActionElements.push(_react2['default'].createElement(\n 'li',\n { className: classes, key: index,\n onClick: _this2['handle' + capitalizedAction] },\n statusIcons[torrentAction],\n capitalizedAction\n ));\n });\n\n return torrentActionElements;\n }\n }, {\n key: 'handlePause',\n value: function handlePause() {\n this.setState({ optimisticData: { currentStatus: 'pause' } });\n _actionsTorrentActions2['default'].pauseTorrents([this.props.torrent.hash]);\n }\n }, {\n key: 'handlePriorityChange',\n value: function handlePriorityChange(hash, level) {\n console.log(hash, level);\n _actionsTorrentActions2['default'].setPriority(hash, level);\n }\n }, {\n key: 'handleStart',\n value: function handleStart() {\n this.setState({ optimisticData: { currentStatus: 'start' } });\n _actionsTorrentActions2['default'].startTorrents([this.props.torrent.hash]);\n }\n }, {\n key: 'handleStop',\n value: function handleStop() {\n this.setState({ optimisticData: { currentStatus: 'stop' } });\n _actionsTorrentActions2['default'].stopTorrents([this.props.torrent.hash]);\n }\n }, {\n key: 'render',\n value: function render() {\n var torrent = this.props.torrent;\n var completed = _utilFormatData2['default'].data(torrent.bytesDone);\n var downloadRate = _utilFormatData2['default'].data(torrent.downloadRate, '/s');\n var downloadTotal = _utilFormatData2['default'].data(torrent.downloadTotal);\n var eta = _utilFormatData2['default'].eta(torrent.eta);\n var ratio = _utilFormatData2['default'].ratio(torrent.ratio);\n var uploadRate = _utilFormatData2['default'].data(torrent.uploadRate, '/s');\n var uploadTotal = _utilFormatData2['default'].data(torrent.uploadTotal);\n\n var torrentClasses = (0, _utilTorrentStatusClasses.torrentStatusClasses)(torrent, 'torrent-details__header');\n\n return _react2['default'].createElement(\n 'div',\n { className: torrentClasses },\n _react2['default'].createElement(\n 'h1',\n { className: 'torrent-details__heading torrent-details--name' },\n torrent.name\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'torrent-details__sub-heading' },\n _react2['default'].createElement(\n 'ul',\n { className: 'torrent-details__sub-heading__secondary' },\n _react2['default'].createElement(\n 'li',\n { className: 'torrent-details__sub-heading__tertiary torrent-details__sub-heading__tertiary--download' },\n _react2['default'].createElement(_iconsDownload2['default'], null),\n downloadRate.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n downloadRate.unit\n ),\n ' — ',\n completed.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n completed.unit\n )\n ),\n _react2['default'].createElement(\n 'li',\n { className: 'torrent-details__sub-heading__tertiary torrent-details__sub-heading__tertiary--upload' },\n _react2['default'].createElement(_iconsUpload2['default'], null),\n uploadRate.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n uploadRate.unit\n ),\n ' — ',\n uploadTotal.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n uploadTotal.unit\n )\n ),\n _react2['default'].createElement(\n 'li',\n { className: 'torrent-details__sub-heading__tertiary' },\n _react2['default'].createElement(_componentsIconsRatio2['default'], null),\n ratio\n ),\n _react2['default'].createElement(\n 'li',\n { className: 'torrent-details__sub-heading__tertiary' },\n _react2['default'].createElement(_iconsETA2['default'], null),\n eta\n )\n ),\n _react2['default'].createElement(\n 'ul',\n { className: 'torrent-details__sub-heading__secondary' },\n this.getTorrentActions(torrent)\n )\n ),\n _react2['default'].createElement(_uiProgressBar2['default'], { percent: torrent.percentComplete })\n );\n }\n }]);\n\n return TorrentHeading;\n})(_react2['default'].Component);\n\nexports['default'] = TorrentHeading;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy90b3JyZW50LWRldGFpbHMvVG9ycmVudEhlYWRpbmcuanM/NGY2MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxpQ0FBaUMsMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUUsRUFBRSx5REFBeUQscUVBQXFFLDZEQUE2RCxvQkFBb0IsR0FBRyxFQUFFOztBQUVsakIsdUNBQXVDLG1CQUFtQiw0QkFBNEIsaURBQWlELGdCQUFnQixrREFBa0QsOERBQThELDBCQUEwQiw0Q0FBNEMsdUJBQXVCLGtCQUFrQixFQUFFLE9BQU8sYUFBYSxnQkFBZ0IsZ0JBQWdCLGVBQWUsMkJBQTJCLG9CQUFvQixFQUFFLEVBQUUsNEJBQTRCLG1CQUFtQixFQUFFLE9BQU8sdUJBQXVCLDRCQUE0QixrQkFBa0IsRUFBRSw4QkFBOEIsRUFBRSxFQUFFOztBQUUvb0Isc0NBQXNDLHVDQUF1QyxrQkFBa0I7O0FBRS9GLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDBDQUEwQywrREFBK0QscUdBQXFHLEVBQUUseUVBQXlFLGVBQWUseUVBQXlFLEVBQUUsRUFBRSx1SEFBdUg7O0FBRTVlOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBLHVCQUF1QjtBQUN2Qjs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGtCQUFrQixzQkFBc0IsRUFBRTtBQUNqRTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNULDBDQUEwQztBQUMxQyxnRkFBZ0Y7QUFDaEY7QUFDQSxnRUFBZ0U7QUFDaEU7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVztBQUNYLDJEQUEyRDtBQUMzRDtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHFCQUFxQixrQkFBa0IseUJBQXlCLEVBQUU7QUFDbEU7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUIsa0JBQWtCLHlCQUF5QixFQUFFO0FBQ2xFO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHFCQUFxQixrQkFBa0Isd0JBQXdCLEVBQUU7QUFDakU7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUyw0QkFBNEI7QUFDckM7QUFDQTtBQUNBLFdBQVcsOERBQThEO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyw0Q0FBNEM7QUFDdkQ7QUFDQTtBQUNBLGFBQWEsdURBQXVEO0FBQ3BFO0FBQ0E7QUFDQSxlQUFlLHVHQUF1RztBQUN0SDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixvQkFBb0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG9CQUFvQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxxR0FBcUc7QUFDcEg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsb0JBQW9CO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixvQkFBb0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQXNEO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFzRDtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHVEQUF1RDtBQUNwRTtBQUNBO0FBQ0E7QUFDQSxzRUFBc0UsbUNBQW1DO0FBQ3pHO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6IjI2Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbnZhciBfZ2V0ID0gZnVuY3Rpb24gZ2V0KF94LCBfeDIsIF94MykgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeCwgcHJvcGVydHkgPSBfeDIsIHJlY2VpdmVyID0gX3gzOyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94ID0gcGFyZW50OyBfeDIgPSBwcm9wZXJ0eTsgX3gzID0gcmVjZWl2ZXI7IF9hZ2FpbiA9IHRydWU7IGRlc2MgPSBwYXJlbnQgPSB1bmRlZmluZWQ7IGNvbnRpbnVlIF9mdW5jdGlvbjsgfSB9IGVsc2UgaWYgKCd2YWx1ZScgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gJ2Z1bmN0aW9uJyAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ1N1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgJyArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIF9jbGFzc25hbWVzID0gcmVxdWlyZSgnY2xhc3NuYW1lcycpO1xuXG52YXIgX2NsYXNzbmFtZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NuYW1lcyk7XG5cbnZhciBfcmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xuXG52YXIgX3JlYWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlYWN0KTtcblxudmFyIF9pY29uc0ZvbGRlck9wZW5Tb2xpZCA9IHJlcXVpcmUoJy4uL2ljb25zL0ZvbGRlck9wZW5Tb2xpZCcpO1xuXG52YXIgX2ljb25zRm9sZGVyT3BlblNvbGlkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ljb25zRm9sZGVyT3BlblNvbGlkKTtcblxudmFyIF9maWxlc3lzdGVtRGlyZWN0b3J5VHJlZSA9IHJlcXVpcmUoJy4uL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5VHJlZScpO1xuXG52YXIgX2ZpbGVzeXN0ZW1EaXJlY3RvcnlUcmVlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ZpbGVzeXN0ZW1EaXJlY3RvcnlUcmVlKTtcblxudmFyIF9pY29uc0Rvd25sb2FkID0gcmVxdWlyZSgnLi4vaWNvbnMvRG93bmxvYWQnKTtcblxudmFyIF9pY29uc0Rvd25sb2FkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ljb25zRG93bmxvYWQpO1xuXG52YXIgX2ljb25zRVRBID0gcmVxdWlyZSgnLi4vaWNvbnMvRVRBJyk7XG5cbnZhciBfaWNvbnNFVEEyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaWNvbnNFVEEpO1xuXG52YXIgX2NvbnN0YW50c0V2ZW50VHlwZXMgPSByZXF1aXJlKCcuLi8uLi9jb25zdGFudHMvRXZlbnRUeXBlcycpO1xuXG52YXIgX2NvbnN0YW50c0V2ZW50VHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzRXZlbnRUeXBlcyk7XG5cbnZhciBfaWNvbnNGaWxlID0gcmVxdWlyZSgnLi4vaWNvbnMvRmlsZScpO1xuXG52YXIgX2ljb25zRmlsZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pY29uc0ZpbGUpO1xuXG52YXIgX3V0aWxGb3JtYXREYXRhID0gcmVxdWlyZSgnLi4vLi4vdXRpbC9mb3JtYXREYXRhJyk7XG5cbnZhciBfdXRpbEZvcm1hdERhdGEyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdXRpbEZvcm1hdERhdGEpO1xuXG52YXIgX2NvbXBvbmVudHNJY29uc1BhdXNlID0gcmVxdWlyZSgnLi4vLi4vY29tcG9uZW50cy9pY29ucy9QYXVzZScpO1xuXG52YXIgX2NvbXBvbmVudHNJY29uc1BhdXNlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbXBvbmVudHNJY29uc1BhdXNlKTtcblxudmFyIF9maWxlc3lzdGVtUHJpb3JpdHlNZXRlciA9IHJlcXVpcmUoJy4uL2ZpbGVzeXN0ZW0vUHJpb3JpdHlNZXRlcicpO1xuXG52YXIgX2ZpbGVzeXN0ZW1Qcmlvcml0eU1ldGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ZpbGVzeXN0ZW1Qcmlvcml0eU1ldGVyKTtcblxudmFyIF91aVByb2dyZXNzQmFyID0gcmVxdWlyZSgnLi4vdWkvUHJvZ3Jlc3NCYXInKTtcblxudmFyIF91aVByb2dyZXNzQmFyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3VpUHJvZ3Jlc3NCYXIpO1xuXG52YXIgX3NoYXJlZENvbnN0YW50c1Byb3BzTWFwID0gcmVxdWlyZSgnLi4vLi4vLi4vLi4vLi4vc2hhcmVkL2NvbnN0YW50cy9wcm9wc01hcCcpO1xuXG52YXIgX3NoYXJlZENvbnN0YW50c1Byb3BzTWFwMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3NoYXJlZENvbnN0YW50c1Byb3BzTWFwKTtcblxudmFyIF9jb21wb25lbnRzSWNvbnNSYXRpbyA9IHJlcXVpcmUoJy4uLy4uL2NvbXBvbmVudHMvaWNvbnMvUmF0aW8nKTtcblxudmFyIF9jb21wb25lbnRzSWNvbnNSYXRpbzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21wb25lbnRzSWNvbnNSYXRpbyk7XG5cbnZhciBfY29tcG9uZW50c0ljb25zU3RhcnQgPSByZXF1aXJlKCcuLi8uLi9jb21wb25lbnRzL2ljb25zL1N0YXJ0Jyk7XG5cbnZhciBfY29tcG9uZW50c0ljb25zU3RhcnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29tcG9uZW50c0ljb25zU3RhcnQpO1xuXG52YXIgX2NvbXBvbmVudHNJY29uc1N0b3AgPSByZXF1aXJlKCcuLi8uLi9jb21wb25lbnRzL2ljb25zL1N0b3AnKTtcblxudmFyIF9jb21wb25lbnRzSWNvbnNTdG9wMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbXBvbmVudHNJY29uc1N0b3ApO1xuXG52YXIgX3NoYXJlZFV0aWxTdHJpbmdVdGlsID0gcmVxdWlyZSgnLi4vLi4vLi4vLi4vLi4vc2hhcmVkL3V0aWwvc3RyaW5nVXRpbCcpO1xuXG52YXIgX3NoYXJlZFV0aWxTdHJpbmdVdGlsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3NoYXJlZFV0aWxTdHJpbmdVdGlsKTtcblxudmFyIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMgPSByZXF1aXJlKCcuLi8uLi9hY3Rpb25zL1RvcnJlbnRBY3Rpb25zJyk7XG5cbnZhciBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2FjdGlvbnNUb3JyZW50QWN0aW9ucyk7XG5cbnZhciBfc3RvcmVzVG9ycmVudFN0b3JlID0gcmVxdWlyZSgnLi4vLi4vc3RvcmVzL1RvcnJlbnRTdG9yZScpO1xuXG52YXIgX3N0b3Jlc1RvcnJlbnRTdG9yZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdG9yZXNUb3JyZW50U3RvcmUpO1xuXG52YXIgX3V0aWxUb3JyZW50U3RhdHVzQ2xhc3NlcyA9IHJlcXVpcmUoJy4uLy4uL3V0aWwvdG9ycmVudFN0YXR1c0NsYXNzZXMnKTtcblxudmFyIF9pY29uc1VwbG9hZCA9IHJlcXVpcmUoJy4uL2ljb25zL1VwbG9hZCcpO1xuXG52YXIgX2ljb25zVXBsb2FkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ljb25zVXBsb2FkKTtcblxudmFyIE1FVEhPRFNfVE9fQklORCA9IFsnZ2V0Q3VycmVudFN0YXR1cycsICdoYW5kbGVQYXVzZScsICdoYW5kbGVTdGFydCcsICdoYW5kbGVTdG9wJ107XG5cbnZhciBUb3JyZW50SGVhZGluZyA9IChmdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoVG9ycmVudEhlYWRpbmcsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIFRvcnJlbnRIZWFkaW5nKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVG9ycmVudEhlYWRpbmcpO1xuXG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoVG9ycmVudEhlYWRpbmcucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuY2FsbCh0aGlzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBvcHRpbWlzdGljRGF0YTogeyBjdXJyZW50U3RhdHVzOiBudWxsIH1cbiAgICB9O1xuXG4gICAgTUVUSE9EU19UT19CSU5ELmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgICAgX3RoaXNbbWV0aG9kXSA9IF90aGlzW21ldGhvZF0uYmluZChfdGhpcyk7XG4gICAgfSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVG9ycmVudEhlYWRpbmcsIFt7XG4gICAga2V5OiAnY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5vcHRpbWlzdGljRGF0YS5jdXJyZW50U3RhdHVzKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBvcHRpbWlzdGljRGF0YTogeyBjdXJyZW50U3RhdHVzOiBudWxsIH0gfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0Q3VycmVudFN0YXR1cycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEN1cnJlbnRTdGF0dXModG9ycmVudFN0YXR1cykge1xuICAgICAgaWYgKHRvcnJlbnRTdGF0dXMuaW5kZXhPZihfc2hhcmVkQ29uc3RhbnRzUHJvcHNNYXAyWydkZWZhdWx0J10uY2xpZW50U3RhdHVzLnBhdXNlZCkgPiAtMSkge1xuICAgICAgICByZXR1cm4gJ3BhdXNlJztcbiAgICAgIH0gZWxzZSBpZiAodG9ycmVudFN0YXR1cy5pbmRleE9mKF9zaGFyZWRDb25zdGFudHNQcm9wc01hcDJbJ2RlZmF1bHQnXS5jbGllbnRTdGF0dXMuc3RvcHBlZCkgPiAtMSkge1xuICAgICAgICByZXR1cm4gJ3N0b3AnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICdzdGFydCc7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0VG9ycmVudEFjdGlvbnMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUb3JyZW50QWN0aW9ucyh0b3JyZW50KSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIGN1cnJlbnRTdGF0dXMgPSB0aGlzLnN0YXRlLm9wdGltaXN0aWNEYXRhLmN1cnJlbnRTdGF0dXMgfHwgdGhpcy5nZXRDdXJyZW50U3RhdHVzKHRvcnJlbnQuc3RhdHVzKTtcbiAgICAgIHZhciBzdGF0dXNJY29ucyA9IHtcbiAgICAgICAgJ3BhdXNlJzogX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2NvbXBvbmVudHNJY29uc1BhdXNlMlsnZGVmYXVsdCddLCBudWxsKSxcbiAgICAgICAgJ3N0YXJ0JzogX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2NvbXBvbmVudHNJY29uc1N0YXJ0MlsnZGVmYXVsdCddLCBudWxsKSxcbiAgICAgICAgJ3N0b3AnOiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfY29tcG9uZW50c0ljb25zU3RvcDJbJ2RlZmF1bHQnXSwgbnVsbClcbiAgICAgIH07XG4gICAgICB2YXIgdG9ycmVudEFjdGlvbnMgPSBbJ3N0YXJ0JywgJ3BhdXNlJywgJ3N0b3AnXTtcbiAgICAgIHZhciB0b3JyZW50QWN0aW9uRWxlbWVudHMgPSBbXTtcblxuICAgICAgdG9ycmVudEFjdGlvbkVsZW1lbnRzLnB1c2goX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICdsaScsXG4gICAgICAgIHsgY2xhc3NOYW1lOiAndG9ycmVudC1kZXRhaWxzX19zdWItaGVhZGluZ19fdGVydGlhcnknLFxuICAgICAgICAgIGtleTogdG9ycmVudEFjdGlvbnMubGVuZ3RoICsgMSB9LFxuICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfZmlsZXN5c3RlbVByaW9yaXR5TWV0ZXIyWydkZWZhdWx0J10sIHsgaWQ6IHRvcnJlbnQuaGFzaCwga2V5OiB0b3JyZW50Lmhhc2gsXG4gICAgICAgICAgbGV2ZWw6IHRvcnJlbnQucHJpb3JpdHksIG1heExldmVsOiAzLFxuICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLmhhbmRsZVByaW9yaXR5Q2hhbmdlLCBzaG93TGFiZWw6IHRydWUgfSlcbiAgICAgICkpO1xuXG4gICAgICB0b3JyZW50QWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uICh0b3JyZW50QWN0aW9uLCBpbmRleCkge1xuICAgICAgICB2YXIgY2FwaXRhbGl6ZWRBY3Rpb24gPSBfc2hhcmVkVXRpbFN0cmluZ1V0aWwyWydkZWZhdWx0J10uY2FwaXRhbGl6ZSh0b3JyZW50QWN0aW9uKTtcbiAgICAgICAgdmFyIGNsYXNzZXMgPSAndG9ycmVudC1kZXRhaWxzX19zdWItaGVhZGluZ19fdGVydGlhcnkgdG9ycmVudC1kZXRhaWxzX19hY3Rpb24nO1xuXG4gICAgICAgIGlmICh0b3JyZW50QWN0aW9uID09PSBjdXJyZW50U3RhdHVzKSB7XG4gICAgICAgICAgY2xhc3NlcyArPSAnIGlzLWFjdGl2ZSc7XG4gICAgICAgIH1cblxuICAgICAgICB0b3JyZW50QWN0aW9uRWxlbWVudHMucHVzaChfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAnbGknLFxuICAgICAgICAgIHsgY2xhc3NOYW1lOiBjbGFzc2VzLCBrZXk6IGluZGV4LFxuICAgICAgICAgICAgb25DbGljazogX3RoaXMyWydoYW5kbGUnICsgY2FwaXRhbGl6ZWRBY3Rpb25dIH0sXG4gICAgICAgICAgc3RhdHVzSWNvbnNbdG9ycmVudEFjdGlvbl0sXG4gICAgICAgICAgY2FwaXRhbGl6ZWRBY3Rpb25cbiAgICAgICAgKSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRvcnJlbnRBY3Rpb25FbGVtZW50cztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVQYXVzZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVBhdXNlKCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IG9wdGltaXN0aWNEYXRhOiB7IGN1cnJlbnRTdGF0dXM6ICdwYXVzZScgfSB9KTtcbiAgICAgIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMyWydkZWZhdWx0J10ucGF1c2VUb3JyZW50cyhbdGhpcy5wcm9wcy50b3JyZW50Lmhhc2hdKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVQcmlvcml0eUNoYW5nZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVByaW9yaXR5Q2hhbmdlKGhhc2gsIGxldmVsKSB7XG4gICAgICBjb25zb2xlLmxvZyhoYXNoLCBsZXZlbCk7XG4gICAgICBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMlsnZGVmYXVsdCddLnNldFByaW9yaXR5KGhhc2gsIGxldmVsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVTdGFydCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVN0YXJ0KCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IG9wdGltaXN0aWNEYXRhOiB7IGN1cnJlbnRTdGF0dXM6ICdzdGFydCcgfSB9KTtcbiAgICAgIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMyWydkZWZhdWx0J10uc3RhcnRUb3JyZW50cyhbdGhpcy5wcm9wcy50b3JyZW50Lmhhc2hdKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVTdG9wJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlU3RvcCgpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBvcHRpbWlzdGljRGF0YTogeyBjdXJyZW50U3RhdHVzOiAnc3RvcCcgfSB9KTtcbiAgICAgIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMyWydkZWZhdWx0J10uc3RvcFRvcnJlbnRzKFt0aGlzLnByb3BzLnRvcnJlbnQuaGFzaF0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3JlbmRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciB0b3JyZW50ID0gdGhpcy5wcm9wcy50b3JyZW50O1xuICAgICAgdmFyIGNvbXBsZXRlZCA9IF91dGlsRm9ybWF0RGF0YTJbJ2RlZmF1bHQnXS5kYXRhKHRvcnJlbnQuYnl0ZXNEb25lKTtcbiAgICAgIHZhciBkb3dubG9hZFJhdGUgPSBfdXRpbEZvcm1hdERhdGEyWydkZWZhdWx0J10uZGF0YSh0b3JyZW50LmRvd25sb2FkUmF0ZSwgJy9zJyk7XG4gICAgICB2YXIgZG93bmxvYWRUb3RhbCA9IF91dGlsRm9ybWF0RGF0YTJbJ2RlZmF1bHQnXS5kYXRhKHRvcnJlbnQuZG93bmxvYWRUb3RhbCk7XG4gICAgICB2YXIgZXRhID0gX3V0aWxGb3JtYXREYXRhMlsnZGVmYXVsdCddLmV0YSh0b3JyZW50LmV0YSk7XG4gICAgICB2YXIgcmF0aW8gPSBfdXRpbEZvcm1hdERhdGEyWydkZWZhdWx0J10ucmF0aW8odG9ycmVudC5yYXRpbyk7XG4gICAgICB2YXIgdXBsb2FkUmF0ZSA9IF91dGlsRm9ybWF0RGF0YTJbJ2RlZmF1bHQnXS5kYXRhKHRvcnJlbnQudXBsb2FkUmF0ZSwgJy9zJyk7XG4gICAgICB2YXIgdXBsb2FkVG90YWwgPSBfdXRpbEZvcm1hdERhdGEyWydkZWZhdWx0J10uZGF0YSh0b3JyZW50LnVwbG9hZFRvdGFsKTtcblxuICAgICAgdmFyIHRvcnJlbnRDbGFzc2VzID0gKDAsIF91dGlsVG9ycmVudFN0YXR1c0NsYXNzZXMudG9ycmVudFN0YXR1c0NsYXNzZXMpKHRvcnJlbnQsICd0b3JyZW50LWRldGFpbHNfX2hlYWRlcicpO1xuXG4gICAgICByZXR1cm4gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICdkaXYnLFxuICAgICAgICB7IGNsYXNzTmFtZTogdG9ycmVudENsYXNzZXMgfSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgJ2gxJyxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ3RvcnJlbnQtZGV0YWlsc19faGVhZGluZyB0b3JyZW50LWRldGFpbHMtLW5hbWUnIH0sXG4gICAgICAgICAgdG9ycmVudC5uYW1lXG4gICAgICAgICksXG4gICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICdkaXYnLFxuICAgICAgICAgIHsgY2xhc3NOYW1lOiAndG9ycmVudC1kZXRhaWxzX19zdWItaGVhZGluZycgfSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICd1bCcsXG4gICAgICAgICAgICB7IGNsYXNzTmFtZTogJ3RvcnJlbnQtZGV0YWlsc19fc3ViLWhlYWRpbmdfX3NlY29uZGFyeScgfSxcbiAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAnbGknLFxuICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ3RvcnJlbnQtZGV0YWlsc19fc3ViLWhlYWRpbmdfX3RlcnRpYXJ5IHRvcnJlbnQtZGV0YWlsc19fc3ViLWhlYWRpbmdfX3RlcnRpYXJ5LS1kb3dubG9hZCcgfSxcbiAgICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2ljb25zRG93bmxvYWQyWydkZWZhdWx0J10sIG51bGwpLFxuICAgICAgICAgICAgICBkb3dubG9hZFJhdGUudmFsdWUsXG4gICAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdlbScsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICd1bml0JyB9LFxuICAgICAgICAgICAgICAgIGRvd25sb2FkUmF0ZS51bml0XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICfCoOKAlMKgJyxcbiAgICAgICAgICAgICAgY29tcGxldGVkLnZhbHVlLFxuICAgICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAnZW0nLFxuICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAndW5pdCcgfSxcbiAgICAgICAgICAgICAgICBjb21wbGV0ZWQudW5pdFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICdsaScsXG4gICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAndG9ycmVudC1kZXRhaWxzX19zdWItaGVhZGluZ19fdGVydGlhcnkgdG9ycmVudC1kZXRhaWxzX19zdWItaGVhZGluZ19fdGVydGlhcnktLXVwbG9hZCcgfSxcbiAgICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2ljb25zVXBsb2FkMlsnZGVmYXVsdCddLCBudWxsKSxcbiAgICAgICAgICAgICAgdXBsb2FkUmF0ZS52YWx1ZSxcbiAgICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ2VtJyxcbiAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ3VuaXQnIH0sXG4gICAgICAgICAgICAgICAgdXBsb2FkUmF0ZS51bml0XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICfCoOKAlMKgJyxcbiAgICAgICAgICAgICAgdXBsb2FkVG90YWwudmFsdWUsXG4gICAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdlbScsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICd1bml0JyB9LFxuICAgICAgICAgICAgICAgIHVwbG9hZFRvdGFsLnVuaXRcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAnbGknLFxuICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ3RvcnJlbnQtZGV0YWlsc19fc3ViLWhlYWRpbmdfX3RlcnRpYXJ5JyB9LFxuICAgICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfY29tcG9uZW50c0ljb25zUmF0aW8yWydkZWZhdWx0J10sIG51bGwpLFxuICAgICAgICAgICAgICByYXRpb1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAnbGknLFxuICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ3RvcnJlbnQtZGV0YWlsc19fc3ViLWhlYWRpbmdfX3RlcnRpYXJ5JyB9LFxuICAgICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfaWNvbnNFVEEyWydkZWZhdWx0J10sIG51bGwpLFxuICAgICAgICAgICAgICBldGFcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgJ3VsJyxcbiAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAndG9ycmVudC1kZXRhaWxzX19zdWItaGVhZGluZ19fc2Vjb25kYXJ5JyB9LFxuICAgICAgICAgICAgdGhpcy5nZXRUb3JyZW50QWN0aW9ucyh0b3JyZW50KVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX3VpUHJvZ3Jlc3NCYXIyWydkZWZhdWx0J10sIHsgcGVyY2VudDogdG9ycmVudC5wZXJjZW50Q29tcGxldGUgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRvcnJlbnRIZWFkaW5nO1xufSkoX3JlYWN0MlsnZGVmYXVsdCddLkNvbXBvbmVudCk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IFRvcnJlbnRIZWFkaW5nO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9jb21wb25lbnRzL3RvcnJlbnQtZGV0YWlscy9Ub3JyZW50SGVhZGluZy5qc1xuICoqIG1vZHVsZSBpZCA9IDI2N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); + eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _classnames = __webpack_require__(171);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _iconsFolderOpenSolid = __webpack_require__(265);\n\nvar _iconsFolderOpenSolid2 = _interopRequireDefault(_iconsFolderOpenSolid);\n\nvar _filesystemDirectoryTree = __webpack_require__(259);\n\nvar _filesystemDirectoryTree2 = _interopRequireDefault(_filesystemDirectoryTree);\n\nvar _iconsDownload = __webpack_require__(213);\n\nvar _iconsDownload2 = _interopRequireDefault(_iconsDownload);\n\nvar _iconsETA = __webpack_require__(268);\n\nvar _iconsETA2 = _interopRequireDefault(_iconsETA);\n\nvar _constantsEventTypes = __webpack_require__(172);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _iconsFile = __webpack_require__(261);\n\nvar _iconsFile2 = _interopRequireDefault(_iconsFile);\n\nvar _utilFormatData = __webpack_require__(214);\n\nvar _utilFormatData2 = _interopRequireDefault(_utilFormatData);\n\nvar _componentsIconsPause = __webpack_require__(269);\n\nvar _componentsIconsPause2 = _interopRequireDefault(_componentsIconsPause);\n\nvar _filesystemPriorityMeter = __webpack_require__(262);\n\nvar _filesystemPriorityMeter2 = _interopRequireDefault(_filesystemPriorityMeter);\n\nvar _uiProgressBar = __webpack_require__(270);\n\nvar _uiProgressBar2 = _interopRequireDefault(_uiProgressBar);\n\nvar _sharedConstantsPropsMap = __webpack_require__(204);\n\nvar _sharedConstantsPropsMap2 = _interopRequireDefault(_sharedConstantsPropsMap);\n\nvar _componentsIconsRatio = __webpack_require__(271);\n\nvar _componentsIconsRatio2 = _interopRequireDefault(_componentsIconsRatio);\n\nvar _componentsIconsStart = __webpack_require__(272);\n\nvar _componentsIconsStart2 = _interopRequireDefault(_componentsIconsStart);\n\nvar _componentsIconsStop = __webpack_require__(273);\n\nvar _componentsIconsStop2 = _interopRequireDefault(_componentsIconsStop);\n\nvar _sharedUtilStringUtil = __webpack_require__(274);\n\nvar _sharedUtilStringUtil2 = _interopRequireDefault(_sharedUtilStringUtil);\n\nvar _actionsTorrentActions = __webpack_require__(179);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar _storesTorrentStore = __webpack_require__(199);\n\nvar _storesTorrentStore2 = _interopRequireDefault(_storesTorrentStore);\n\nvar _utilTorrentStatusClasses = __webpack_require__(275);\n\nvar _iconsUpload = __webpack_require__(220);\n\nvar _iconsUpload2 = _interopRequireDefault(_iconsUpload);\n\nvar METHODS_TO_BIND = ['getCurrentStatus', 'handlePause', 'handleStart', 'handleStop'];\n\nvar TorrentHeading = (function (_React$Component) {\n _inherits(TorrentHeading, _React$Component);\n\n function TorrentHeading() {\n var _this = this;\n\n _classCallCheck(this, TorrentHeading);\n\n _get(Object.getPrototypeOf(TorrentHeading.prototype), 'constructor', this).call(this);\n\n this.state = {\n optimisticData: { currentStatus: null }\n };\n\n METHODS_TO_BIND.forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n }\n\n _createClass(TorrentHeading, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (this.state.optimisticData.currentStatus) {\n this.setState({ optimisticData: { currentStatus: null } });\n }\n }\n }, {\n key: 'getCurrentStatus',\n value: function getCurrentStatus(torrentStatus) {\n if (torrentStatus.indexOf(_sharedConstantsPropsMap2['default'].clientStatus.paused) > -1) {\n return 'pause';\n } else if (torrentStatus.indexOf(_sharedConstantsPropsMap2['default'].clientStatus.stopped) > -1) {\n return 'stop';\n } else {\n return 'start';\n }\n }\n }, {\n key: 'getTorrentActions',\n value: function getTorrentActions(torrent) {\n var _this2 = this;\n\n var currentStatus = this.state.optimisticData.currentStatus || this.getCurrentStatus(torrent.status);\n var statusIcons = {\n 'pause': _react2['default'].createElement(_componentsIconsPause2['default'], null),\n 'start': _react2['default'].createElement(_componentsIconsStart2['default'], null),\n 'stop': _react2['default'].createElement(_componentsIconsStop2['default'], null)\n };\n var torrentActions = ['start', 'pause', 'stop'];\n var torrentActionElements = [];\n\n torrentActionElements.push(_react2['default'].createElement(\n 'li',\n { className: 'torrent-details__sub-heading__tertiary',\n key: torrentActions.length + 1 },\n _react2['default'].createElement(_filesystemPriorityMeter2['default'], { id: torrent.hash, key: torrent.hash,\n level: torrent.priority, maxLevel: 3,\n onChange: this.handlePriorityChange, showLabel: true })\n ));\n\n torrentActions.forEach(function (torrentAction, index) {\n var capitalizedAction = _sharedUtilStringUtil2['default'].capitalize(torrentAction);\n var classes = 'torrent-details__sub-heading__tertiary torrent-details__action';\n\n if (torrentAction === currentStatus) {\n classes += ' is-active';\n }\n\n torrentActionElements.push(_react2['default'].createElement(\n 'li',\n { className: classes, key: index,\n onClick: _this2['handle' + capitalizedAction] },\n statusIcons[torrentAction],\n capitalizedAction\n ));\n });\n\n return torrentActionElements;\n }\n }, {\n key: 'handlePause',\n value: function handlePause() {\n this.setState({ optimisticData: { currentStatus: 'pause' } });\n _actionsTorrentActions2['default'].pauseTorrents([this.props.torrent.hash]);\n }\n }, {\n key: 'handlePriorityChange',\n value: function handlePriorityChange(hash, level) {\n _actionsTorrentActions2['default'].setPriority(hash, level);\n }\n }, {\n key: 'handleStart',\n value: function handleStart() {\n this.setState({ optimisticData: { currentStatus: 'start' } });\n _actionsTorrentActions2['default'].startTorrents([this.props.torrent.hash]);\n }\n }, {\n key: 'handleStop',\n value: function handleStop() {\n this.setState({ optimisticData: { currentStatus: 'stop' } });\n _actionsTorrentActions2['default'].stopTorrents([this.props.torrent.hash]);\n }\n }, {\n key: 'render',\n value: function render() {\n var torrent = this.props.torrent;\n var completed = _utilFormatData2['default'].data(torrent.bytesDone);\n var downloadRate = _utilFormatData2['default'].data(torrent.downloadRate, '/s');\n var downloadTotal = _utilFormatData2['default'].data(torrent.downloadTotal);\n var eta = _utilFormatData2['default'].eta(torrent.eta);\n var ratio = _utilFormatData2['default'].ratio(torrent.ratio);\n var uploadRate = _utilFormatData2['default'].data(torrent.uploadRate, '/s');\n var uploadTotal = _utilFormatData2['default'].data(torrent.uploadTotal);\n\n var torrentClasses = (0, _utilTorrentStatusClasses.torrentStatusClasses)(torrent, 'torrent-details__header');\n\n return _react2['default'].createElement(\n 'div',\n { className: torrentClasses },\n _react2['default'].createElement(\n 'h1',\n { className: 'torrent-details__heading torrent-details--name' },\n torrent.name\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'torrent-details__sub-heading' },\n _react2['default'].createElement(\n 'ul',\n { className: 'torrent-details__sub-heading__secondary' },\n _react2['default'].createElement(\n 'li',\n { className: 'torrent-details__sub-heading__tertiary torrent-details__sub-heading__tertiary--download' },\n _react2['default'].createElement(_iconsDownload2['default'], null),\n downloadRate.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n downloadRate.unit\n ),\n ' — ',\n completed.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n completed.unit\n )\n ),\n _react2['default'].createElement(\n 'li',\n { className: 'torrent-details__sub-heading__tertiary torrent-details__sub-heading__tertiary--upload' },\n _react2['default'].createElement(_iconsUpload2['default'], null),\n uploadRate.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n uploadRate.unit\n ),\n ' — ',\n uploadTotal.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n uploadTotal.unit\n )\n ),\n _react2['default'].createElement(\n 'li',\n { className: 'torrent-details__sub-heading__tertiary' },\n _react2['default'].createElement(_componentsIconsRatio2['default'], null),\n ratio\n ),\n _react2['default'].createElement(\n 'li',\n { className: 'torrent-details__sub-heading__tertiary' },\n _react2['default'].createElement(_iconsETA2['default'], null),\n eta\n )\n ),\n _react2['default'].createElement(\n 'ul',\n { className: 'torrent-details__sub-heading__secondary' },\n this.getTorrentActions(torrent)\n )\n ),\n _react2['default'].createElement(_uiProgressBar2['default'], { percent: torrent.percentComplete })\n );\n }\n }]);\n\n return TorrentHeading;\n})(_react2['default'].Component);\n\nexports['default'] = TorrentHeading;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy90b3JyZW50LWRldGFpbHMvVG9ycmVudEhlYWRpbmcuanM/NGY2MSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxpQ0FBaUMsMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUUsRUFBRSx5REFBeUQscUVBQXFFLDZEQUE2RCxvQkFBb0IsR0FBRyxFQUFFOztBQUVsakIsdUNBQXVDLG1CQUFtQiw0QkFBNEIsaURBQWlELGdCQUFnQixrREFBa0QsOERBQThELDBCQUEwQiw0Q0FBNEMsdUJBQXVCLGtCQUFrQixFQUFFLE9BQU8sYUFBYSxnQkFBZ0IsZ0JBQWdCLGVBQWUsMkJBQTJCLG9CQUFvQixFQUFFLEVBQUUsNEJBQTRCLG1CQUFtQixFQUFFLE9BQU8sdUJBQXVCLDRCQUE0QixrQkFBa0IsRUFBRSw4QkFBOEIsRUFBRSxFQUFFOztBQUUvb0Isc0NBQXNDLHVDQUF1QyxrQkFBa0I7O0FBRS9GLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDBDQUEwQywrREFBK0QscUdBQXFHLEVBQUUseUVBQXlFLGVBQWUseUVBQXlFLEVBQUUsRUFBRSx1SEFBdUg7O0FBRTVlOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBLHVCQUF1QjtBQUN2Qjs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGtCQUFrQixzQkFBc0IsRUFBRTtBQUNqRTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNULDBDQUEwQztBQUMxQyxnRkFBZ0Y7QUFDaEY7QUFDQSxnRUFBZ0U7QUFDaEU7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVztBQUNYLDJEQUEyRDtBQUMzRDtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHFCQUFxQixrQkFBa0IseUJBQXlCLEVBQUU7QUFDbEU7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EscUJBQXFCLGtCQUFrQix5QkFBeUIsRUFBRTtBQUNsRTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxxQkFBcUIsa0JBQWtCLHdCQUF3QixFQUFFO0FBQ2pFO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLFNBQVMsNEJBQTRCO0FBQ3JDO0FBQ0E7QUFDQSxXQUFXLDhEQUE4RDtBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsNENBQTRDO0FBQ3ZEO0FBQ0E7QUFDQSxhQUFhLHVEQUF1RDtBQUNwRTtBQUNBO0FBQ0EsZUFBZSx1R0FBdUc7QUFDdEg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsb0JBQW9CO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixvQkFBb0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUscUdBQXFHO0FBQ3BIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG9CQUFvQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsb0JBQW9CO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHNEQUFzRDtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzREFBc0Q7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx1REFBdUQ7QUFDcEU7QUFDQTtBQUNBO0FBQ0Esc0VBQXNFLG1DQUFtQztBQUN6RztBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7QUFDQSIsImZpbGUiOiIyNjcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChfeCwgX3gyLCBfeDMpIHsgdmFyIF9hZ2FpbiA9IHRydWU7IF9mdW5jdGlvbjogd2hpbGUgKF9hZ2FpbikgeyB2YXIgb2JqZWN0ID0gX3gsIHByb3BlcnR5ID0gX3gyLCByZWNlaXZlciA9IF94MzsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeCA9IHBhcmVudDsgX3gyID0gcHJvcGVydHk7IF94MyA9IHJlY2VpdmVyOyBfYWdhaW4gPSB0cnVlOyBkZXNjID0gcGFyZW50ID0gdW5kZWZpbmVkOyBjb250aW51ZSBfZnVuY3Rpb247IH0gfSBlbHNlIGlmICgndmFsdWUnIGluIGRlc2MpIHsgcmV0dXJuIGRlc2MudmFsdWU7IH0gZWxzZSB7IHZhciBnZXR0ZXIgPSBkZXNjLmdldDsgaWYgKGdldHRlciA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTsgfSB9IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBfY2xhc3NuYW1lcyA9IHJlcXVpcmUoJ2NsYXNzbmFtZXMnKTtcblxudmFyIF9jbGFzc25hbWVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzbmFtZXMpO1xuXG52YXIgX3JlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cbnZhciBfaWNvbnNGb2xkZXJPcGVuU29saWQgPSByZXF1aXJlKCcuLi9pY29ucy9Gb2xkZXJPcGVuU29saWQnKTtcblxudmFyIF9pY29uc0ZvbGRlck9wZW5Tb2xpZDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pY29uc0ZvbGRlck9wZW5Tb2xpZCk7XG5cbnZhciBfZmlsZXN5c3RlbURpcmVjdG9yeVRyZWUgPSByZXF1aXJlKCcuLi9maWxlc3lzdGVtL0RpcmVjdG9yeVRyZWUnKTtcblxudmFyIF9maWxlc3lzdGVtRGlyZWN0b3J5VHJlZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9maWxlc3lzdGVtRGlyZWN0b3J5VHJlZSk7XG5cbnZhciBfaWNvbnNEb3dubG9hZCA9IHJlcXVpcmUoJy4uL2ljb25zL0Rvd25sb2FkJyk7XG5cbnZhciBfaWNvbnNEb3dubG9hZDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pY29uc0Rvd25sb2FkKTtcblxudmFyIF9pY29uc0VUQSA9IHJlcXVpcmUoJy4uL2ljb25zL0VUQScpO1xuXG52YXIgX2ljb25zRVRBMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ljb25zRVRBKTtcblxudmFyIF9jb25zdGFudHNFdmVudFR5cGVzID0gcmVxdWlyZSgnLi4vLi4vY29uc3RhbnRzL0V2ZW50VHlwZXMnKTtcblxudmFyIF9jb25zdGFudHNFdmVudFR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbnN0YW50c0V2ZW50VHlwZXMpO1xuXG52YXIgX2ljb25zRmlsZSA9IHJlcXVpcmUoJy4uL2ljb25zL0ZpbGUnKTtcblxudmFyIF9pY29uc0ZpbGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaWNvbnNGaWxlKTtcblxudmFyIF91dGlsRm9ybWF0RGF0YSA9IHJlcXVpcmUoJy4uLy4uL3V0aWwvZm9ybWF0RGF0YScpO1xuXG52YXIgX3V0aWxGb3JtYXREYXRhMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3V0aWxGb3JtYXREYXRhKTtcblxudmFyIF9jb21wb25lbnRzSWNvbnNQYXVzZSA9IHJlcXVpcmUoJy4uLy4uL2NvbXBvbmVudHMvaWNvbnMvUGF1c2UnKTtcblxudmFyIF9jb21wb25lbnRzSWNvbnNQYXVzZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21wb25lbnRzSWNvbnNQYXVzZSk7XG5cbnZhciBfZmlsZXN5c3RlbVByaW9yaXR5TWV0ZXIgPSByZXF1aXJlKCcuLi9maWxlc3lzdGVtL1ByaW9yaXR5TWV0ZXInKTtcblxudmFyIF9maWxlc3lzdGVtUHJpb3JpdHlNZXRlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9maWxlc3lzdGVtUHJpb3JpdHlNZXRlcik7XG5cbnZhciBfdWlQcm9ncmVzc0JhciA9IHJlcXVpcmUoJy4uL3VpL1Byb2dyZXNzQmFyJyk7XG5cbnZhciBfdWlQcm9ncmVzc0JhcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF91aVByb2dyZXNzQmFyKTtcblxudmFyIF9zaGFyZWRDb25zdGFudHNQcm9wc01hcCA9IHJlcXVpcmUoJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9jb25zdGFudHMvcHJvcHNNYXAnKTtcblxudmFyIF9zaGFyZWRDb25zdGFudHNQcm9wc01hcDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zaGFyZWRDb25zdGFudHNQcm9wc01hcCk7XG5cbnZhciBfY29tcG9uZW50c0ljb25zUmF0aW8gPSByZXF1aXJlKCcuLi8uLi9jb21wb25lbnRzL2ljb25zL1JhdGlvJyk7XG5cbnZhciBfY29tcG9uZW50c0ljb25zUmF0aW8yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29tcG9uZW50c0ljb25zUmF0aW8pO1xuXG52YXIgX2NvbXBvbmVudHNJY29uc1N0YXJ0ID0gcmVxdWlyZSgnLi4vLi4vY29tcG9uZW50cy9pY29ucy9TdGFydCcpO1xuXG52YXIgX2NvbXBvbmVudHNJY29uc1N0YXJ0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbXBvbmVudHNJY29uc1N0YXJ0KTtcblxudmFyIF9jb21wb25lbnRzSWNvbnNTdG9wID0gcmVxdWlyZSgnLi4vLi4vY29tcG9uZW50cy9pY29ucy9TdG9wJyk7XG5cbnZhciBfY29tcG9uZW50c0ljb25zU3RvcDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21wb25lbnRzSWNvbnNTdG9wKTtcblxudmFyIF9zaGFyZWRVdGlsU3RyaW5nVXRpbCA9IHJlcXVpcmUoJy4uLy4uLy4uLy4uLy4uL3NoYXJlZC91dGlsL3N0cmluZ1V0aWwnKTtcblxudmFyIF9zaGFyZWRVdGlsU3RyaW5nVXRpbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zaGFyZWRVdGlsU3RyaW5nVXRpbCk7XG5cbnZhciBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zID0gcmVxdWlyZSgnLi4vLi4vYWN0aW9ucy9Ub3JyZW50QWN0aW9ucycpO1xuXG52YXIgX2FjdGlvbnNUb3JyZW50QWN0aW9uczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hY3Rpb25zVG9ycmVudEFjdGlvbnMpO1xuXG52YXIgX3N0b3Jlc1RvcnJlbnRTdG9yZSA9IHJlcXVpcmUoJy4uLy4uL3N0b3Jlcy9Ub3JyZW50U3RvcmUnKTtcblxudmFyIF9zdG9yZXNUb3JyZW50U3RvcmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3RvcmVzVG9ycmVudFN0b3JlKTtcblxudmFyIF91dGlsVG9ycmVudFN0YXR1c0NsYXNzZXMgPSByZXF1aXJlKCcuLi8uLi91dGlsL3RvcnJlbnRTdGF0dXNDbGFzc2VzJyk7XG5cbnZhciBfaWNvbnNVcGxvYWQgPSByZXF1aXJlKCcuLi9pY29ucy9VcGxvYWQnKTtcblxudmFyIF9pY29uc1VwbG9hZDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pY29uc1VwbG9hZCk7XG5cbnZhciBNRVRIT0RTX1RPX0JJTkQgPSBbJ2dldEN1cnJlbnRTdGF0dXMnLCAnaGFuZGxlUGF1c2UnLCAnaGFuZGxlU3RhcnQnLCAnaGFuZGxlU3RvcCddO1xuXG52YXIgVG9ycmVudEhlYWRpbmcgPSAoZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFRvcnJlbnRIZWFkaW5nLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBUb3JyZW50SGVhZGluZygpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRvcnJlbnRIZWFkaW5nKTtcblxuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKFRvcnJlbnRIZWFkaW5nLnByb3RvdHlwZSksICdjb25zdHJ1Y3RvcicsIHRoaXMpLmNhbGwodGhpcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgb3B0aW1pc3RpY0RhdGE6IHsgY3VycmVudFN0YXR1czogbnVsbCB9XG4gICAgfTtcblxuICAgIE1FVEhPRFNfVE9fQklORC5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICAgIF90aGlzW21ldGhvZF0gPSBfdGhpc1ttZXRob2RdLmJpbmQoX3RoaXMpO1xuICAgIH0pO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRvcnJlbnRIZWFkaW5nLCBbe1xuICAgIGtleTogJ2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgICAgaWYgKHRoaXMuc3RhdGUub3B0aW1pc3RpY0RhdGEuY3VycmVudFN0YXR1cykge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgb3B0aW1pc3RpY0RhdGE6IHsgY3VycmVudFN0YXR1czogbnVsbCB9IH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldEN1cnJlbnRTdGF0dXMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDdXJyZW50U3RhdHVzKHRvcnJlbnRTdGF0dXMpIHtcbiAgICAgIGlmICh0b3JyZW50U3RhdHVzLmluZGV4T2YoX3NoYXJlZENvbnN0YW50c1Byb3BzTWFwMlsnZGVmYXVsdCddLmNsaWVudFN0YXR1cy5wYXVzZWQpID4gLTEpIHtcbiAgICAgICAgcmV0dXJuICdwYXVzZSc7XG4gICAgICB9IGVsc2UgaWYgKHRvcnJlbnRTdGF0dXMuaW5kZXhPZihfc2hhcmVkQ29uc3RhbnRzUHJvcHNNYXAyWydkZWZhdWx0J10uY2xpZW50U3RhdHVzLnN0b3BwZWQpID4gLTEpIHtcbiAgICAgICAgcmV0dXJuICdzdG9wJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAnc3RhcnQnO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldFRvcnJlbnRBY3Rpb25zJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VG9ycmVudEFjdGlvbnModG9ycmVudCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBjdXJyZW50U3RhdHVzID0gdGhpcy5zdGF0ZS5vcHRpbWlzdGljRGF0YS5jdXJyZW50U3RhdHVzIHx8IHRoaXMuZ2V0Q3VycmVudFN0YXR1cyh0b3JyZW50LnN0YXR1cyk7XG4gICAgICB2YXIgc3RhdHVzSWNvbnMgPSB7XG4gICAgICAgICdwYXVzZSc6IF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9jb21wb25lbnRzSWNvbnNQYXVzZTJbJ2RlZmF1bHQnXSwgbnVsbCksXG4gICAgICAgICdzdGFydCc6IF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9jb21wb25lbnRzSWNvbnNTdGFydDJbJ2RlZmF1bHQnXSwgbnVsbCksXG4gICAgICAgICdzdG9wJzogX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2NvbXBvbmVudHNJY29uc1N0b3AyWydkZWZhdWx0J10sIG51bGwpXG4gICAgICB9O1xuICAgICAgdmFyIHRvcnJlbnRBY3Rpb25zID0gWydzdGFydCcsICdwYXVzZScsICdzdG9wJ107XG4gICAgICB2YXIgdG9ycmVudEFjdGlvbkVsZW1lbnRzID0gW107XG5cbiAgICAgIHRvcnJlbnRBY3Rpb25FbGVtZW50cy5wdXNoKF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAnbGknLFxuICAgICAgICB7IGNsYXNzTmFtZTogJ3RvcnJlbnQtZGV0YWlsc19fc3ViLWhlYWRpbmdfX3RlcnRpYXJ5JyxcbiAgICAgICAgICBrZXk6IHRvcnJlbnRBY3Rpb25zLmxlbmd0aCArIDEgfSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2ZpbGVzeXN0ZW1Qcmlvcml0eU1ldGVyMlsnZGVmYXVsdCddLCB7IGlkOiB0b3JyZW50Lmhhc2gsIGtleTogdG9ycmVudC5oYXNoLFxuICAgICAgICAgIGxldmVsOiB0b3JyZW50LnByaW9yaXR5LCBtYXhMZXZlbDogMyxcbiAgICAgICAgICBvbkNoYW5nZTogdGhpcy5oYW5kbGVQcmlvcml0eUNoYW5nZSwgc2hvd0xhYmVsOiB0cnVlIH0pXG4gICAgICApKTtcblxuICAgICAgdG9ycmVudEFjdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAodG9ycmVudEFjdGlvbiwgaW5kZXgpIHtcbiAgICAgICAgdmFyIGNhcGl0YWxpemVkQWN0aW9uID0gX3NoYXJlZFV0aWxTdHJpbmdVdGlsMlsnZGVmYXVsdCddLmNhcGl0YWxpemUodG9ycmVudEFjdGlvbik7XG4gICAgICAgIHZhciBjbGFzc2VzID0gJ3RvcnJlbnQtZGV0YWlsc19fc3ViLWhlYWRpbmdfX3RlcnRpYXJ5IHRvcnJlbnQtZGV0YWlsc19fYWN0aW9uJztcblxuICAgICAgICBpZiAodG9ycmVudEFjdGlvbiA9PT0gY3VycmVudFN0YXR1cykge1xuICAgICAgICAgIGNsYXNzZXMgKz0gJyBpcy1hY3RpdmUnO1xuICAgICAgICB9XG5cbiAgICAgICAgdG9ycmVudEFjdGlvbkVsZW1lbnRzLnB1c2goX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgJ2xpJyxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogY2xhc3Nlcywga2V5OiBpbmRleCxcbiAgICAgICAgICAgIG9uQ2xpY2s6IF90aGlzMlsnaGFuZGxlJyArIGNhcGl0YWxpemVkQWN0aW9uXSB9LFxuICAgICAgICAgIHN0YXR1c0ljb25zW3RvcnJlbnRBY3Rpb25dLFxuICAgICAgICAgIGNhcGl0YWxpemVkQWN0aW9uXG4gICAgICAgICkpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB0b3JyZW50QWN0aW9uRWxlbWVudHM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlUGF1c2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVQYXVzZSgpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBvcHRpbWlzdGljRGF0YTogeyBjdXJyZW50U3RhdHVzOiAncGF1c2UnIH0gfSk7XG4gICAgICBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMlsnZGVmYXVsdCddLnBhdXNlVG9ycmVudHMoW3RoaXMucHJvcHMudG9ycmVudC5oYXNoXSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlUHJpb3JpdHlDaGFuZ2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVQcmlvcml0eUNoYW5nZShoYXNoLCBsZXZlbCkge1xuICAgICAgX2FjdGlvbnNUb3JyZW50QWN0aW9uczJbJ2RlZmF1bHQnXS5zZXRQcmlvcml0eShoYXNoLCBsZXZlbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlU3RhcnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVTdGFydCgpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBvcHRpbWlzdGljRGF0YTogeyBjdXJyZW50U3RhdHVzOiAnc3RhcnQnIH0gfSk7XG4gICAgICBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMlsnZGVmYXVsdCddLnN0YXJ0VG9ycmVudHMoW3RoaXMucHJvcHMudG9ycmVudC5oYXNoXSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlU3RvcCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVN0b3AoKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgb3B0aW1pc3RpY0RhdGE6IHsgY3VycmVudFN0YXR1czogJ3N0b3AnIH0gfSk7XG4gICAgICBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMlsnZGVmYXVsdCddLnN0b3BUb3JyZW50cyhbdGhpcy5wcm9wcy50b3JyZW50Lmhhc2hdKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdyZW5kZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgdG9ycmVudCA9IHRoaXMucHJvcHMudG9ycmVudDtcbiAgICAgIHZhciBjb21wbGV0ZWQgPSBfdXRpbEZvcm1hdERhdGEyWydkZWZhdWx0J10uZGF0YSh0b3JyZW50LmJ5dGVzRG9uZSk7XG4gICAgICB2YXIgZG93bmxvYWRSYXRlID0gX3V0aWxGb3JtYXREYXRhMlsnZGVmYXVsdCddLmRhdGEodG9ycmVudC5kb3dubG9hZFJhdGUsICcvcycpO1xuICAgICAgdmFyIGRvd25sb2FkVG90YWwgPSBfdXRpbEZvcm1hdERhdGEyWydkZWZhdWx0J10uZGF0YSh0b3JyZW50LmRvd25sb2FkVG90YWwpO1xuICAgICAgdmFyIGV0YSA9IF91dGlsRm9ybWF0RGF0YTJbJ2RlZmF1bHQnXS5ldGEodG9ycmVudC5ldGEpO1xuICAgICAgdmFyIHJhdGlvID0gX3V0aWxGb3JtYXREYXRhMlsnZGVmYXVsdCddLnJhdGlvKHRvcnJlbnQucmF0aW8pO1xuICAgICAgdmFyIHVwbG9hZFJhdGUgPSBfdXRpbEZvcm1hdERhdGEyWydkZWZhdWx0J10uZGF0YSh0b3JyZW50LnVwbG9hZFJhdGUsICcvcycpO1xuICAgICAgdmFyIHVwbG9hZFRvdGFsID0gX3V0aWxGb3JtYXREYXRhMlsnZGVmYXVsdCddLmRhdGEodG9ycmVudC51cGxvYWRUb3RhbCk7XG5cbiAgICAgIHZhciB0b3JyZW50Q2xhc3NlcyA9ICgwLCBfdXRpbFRvcnJlbnRTdGF0dXNDbGFzc2VzLnRvcnJlbnRTdGF0dXNDbGFzc2VzKSh0b3JyZW50LCAndG9ycmVudC1kZXRhaWxzX19oZWFkZXInKTtcblxuICAgICAgcmV0dXJuIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAnZGl2JyxcbiAgICAgICAgeyBjbGFzc05hbWU6IHRvcnJlbnRDbGFzc2VzIH0sXG4gICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICdoMScsXG4gICAgICAgICAgeyBjbGFzc05hbWU6ICd0b3JyZW50LWRldGFpbHNfX2hlYWRpbmcgdG9ycmVudC1kZXRhaWxzLS1uYW1lJyB9LFxuICAgICAgICAgIHRvcnJlbnQubmFtZVxuICAgICAgICApLFxuICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ3RvcnJlbnQtZGV0YWlsc19fc3ViLWhlYWRpbmcnIH0sXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAndWwnLFxuICAgICAgICAgICAgeyBjbGFzc05hbWU6ICd0b3JyZW50LWRldGFpbHNfX3N1Yi1oZWFkaW5nX19zZWNvbmRhcnknIH0sXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgJ2xpJyxcbiAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICd0b3JyZW50LWRldGFpbHNfX3N1Yi1oZWFkaW5nX190ZXJ0aWFyeSB0b3JyZW50LWRldGFpbHNfX3N1Yi1oZWFkaW5nX190ZXJ0aWFyeS0tZG93bmxvYWQnIH0sXG4gICAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9pY29uc0Rvd25sb2FkMlsnZGVmYXVsdCddLCBudWxsKSxcbiAgICAgICAgICAgICAgZG93bmxvYWRSYXRlLnZhbHVlLFxuICAgICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAnZW0nLFxuICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAndW5pdCcgfSxcbiAgICAgICAgICAgICAgICBkb3dubG9hZFJhdGUudW5pdFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAnwqDigJTCoCcsXG4gICAgICAgICAgICAgIGNvbXBsZXRlZC52YWx1ZSxcbiAgICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ2VtJyxcbiAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ3VuaXQnIH0sXG4gICAgICAgICAgICAgICAgY29tcGxldGVkLnVuaXRcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAnbGknLFxuICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ3RvcnJlbnQtZGV0YWlsc19fc3ViLWhlYWRpbmdfX3RlcnRpYXJ5IHRvcnJlbnQtZGV0YWlsc19fc3ViLWhlYWRpbmdfX3RlcnRpYXJ5LS11cGxvYWQnIH0sXG4gICAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9pY29uc1VwbG9hZDJbJ2RlZmF1bHQnXSwgbnVsbCksXG4gICAgICAgICAgICAgIHVwbG9hZFJhdGUudmFsdWUsXG4gICAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdlbScsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICd1bml0JyB9LFxuICAgICAgICAgICAgICAgIHVwbG9hZFJhdGUudW5pdFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAnwqDigJTCoCcsXG4gICAgICAgICAgICAgIHVwbG9hZFRvdGFsLnZhbHVlLFxuICAgICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAnZW0nLFxuICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAndW5pdCcgfSxcbiAgICAgICAgICAgICAgICB1cGxvYWRUb3RhbC51bml0XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgJ2xpJyxcbiAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICd0b3JyZW50LWRldGFpbHNfX3N1Yi1oZWFkaW5nX190ZXJ0aWFyeScgfSxcbiAgICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2NvbXBvbmVudHNJY29uc1JhdGlvMlsnZGVmYXVsdCddLCBudWxsKSxcbiAgICAgICAgICAgICAgcmF0aW9cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgJ2xpJyxcbiAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICd0b3JyZW50LWRldGFpbHNfX3N1Yi1oZWFkaW5nX190ZXJ0aWFyeScgfSxcbiAgICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2ljb25zRVRBMlsnZGVmYXVsdCddLCBudWxsKSxcbiAgICAgICAgICAgICAgZXRhXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICd1bCcsXG4gICAgICAgICAgICB7IGNsYXNzTmFtZTogJ3RvcnJlbnQtZGV0YWlsc19fc3ViLWhlYWRpbmdfX3NlY29uZGFyeScgfSxcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9ycmVudEFjdGlvbnModG9ycmVudClcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF91aVByb2dyZXNzQmFyMlsnZGVmYXVsdCddLCB7IHBlcmNlbnQ6IHRvcnJlbnQucGVyY2VudENvbXBsZXRlIH0pXG4gICAgICApO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUb3JyZW50SGVhZGluZztcbn0pKF9yZWFjdDJbJ2RlZmF1bHQnXS5Db21wb25lbnQpO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBUb3JyZW50SGVhZGluZztcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy90b3JyZW50LWRldGFpbHMvVG9ycmVudEhlYWRpbmcuanNcbiAqKiBtb2R1bGUgaWQgPSAyNjdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0="); /***/ }, /* 268 */