diff --git a/.gitignore b/.gitignore index fdedeae8..3c2ed828 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .DS_Store node_modules npm-debug.log +server/db/uiSettings.db server/db/users.js server/db/history diff --git a/client/source/scripts/actions/TorrentActions.js b/client/source/scripts/actions/TorrentActions.js index 0797b1e7..8849d99c 100644 --- a/client/source/scripts/actions/TorrentActions.js +++ b/client/source/scripts/actions/TorrentActions.js @@ -5,6 +5,12 @@ import ActionTypes from '../constants/ActionTypes'; const TorrentActions = { addTorrents: function(urls, destination) { + axios.post('/ui/torrent-location', { + destination + }) + .catch(function (error) { + console.log(error); + }); return axios.post('/client/add', { urls, destination @@ -30,6 +36,25 @@ const TorrentActions = { }); }, + fetchLatestTorrentLocation: function () { + return axios.get('/ui/torrent-location') + .then((json = {}) => { + return json.data; + }) + .then((data) => { + AppDispatcher.dispatchServerAction({ + type: ActionTypes.UI_LATEST_TORRENT_LOCATION_REQUEST_SUCCESS, + data + }); + }) + .catch((error) => { + AppDispatcher.dispatchServerAction({ + type: ActionTypes.UI_LATEST_TORRENT_LOCATION_REQUEST_ERROR, + error + }); + }); + }, + fetchTorrents: function () { return axios.get('/client/list') .then((json = {}) => { diff --git a/client/source/scripts/actions/UIActions.js b/client/source/scripts/actions/UIActions.js index 349c2dc9..f98093d8 100644 --- a/client/source/scripts/actions/UIActions.js +++ b/client/source/scripts/actions/UIActions.js @@ -1,3 +1,5 @@ +import axios from 'axios'; + import AppDispatcher from '../dispatcher/AppDispatcher'; import ActionTypes from '../constants/ActionTypes'; @@ -16,6 +18,25 @@ const UIActions = { }); }, + fetchSortProps: function() { + return axios.get('/ui/sort-props') + .then((json = {}) => { + return json.data; + }) + .then((data) => { + AppDispatcher.dispatchServerAction({ + type: ActionTypes.UI_SORT_PROPS_REQUEST_SUCCESS, + data + }); + }) + .catch((error) => { + AppDispatcher.dispatchServerAction({ + type: ActionTypes.UI_SORT_PROPS_REQUEST_ERROR, + error + }); + }); + }, + handleDetailsClick: function(data) { AppDispatcher.dispatchUIAction({ type: ActionTypes.UI_CLICK_TORRENT_DETAILS, @@ -45,6 +66,12 @@ const UIActions = { }, setTorrentsSort: function(data) { + axios + .post('/ui/sort-props', data) + .catch(function (error) { + console.log(error); + }); + AppDispatcher.dispatchUIAction({ type: ActionTypes.UI_SET_TORRENT_SORT, data diff --git a/client/source/scripts/app.js b/client/source/scripts/app.js index a5e900a6..e8713b63 100644 --- a/client/source/scripts/app.js +++ b/client/source/scripts/app.js @@ -7,8 +7,13 @@ import Modals from './components/modals/Modals'; import Sidebar from './components/panels/Sidebar'; import TorrentListView from './components/panels/TorrentListView'; import TorrentDetailsView from './components/panels/TorrentDetailsView'; +import TorrentActions from './actions/TorrentActions'; class FloodApp extends React.Component { + componentDidMount() { + TorrentActions.fetchLatestTorrentLocation(); + } + render() { return ( diff --git a/client/source/scripts/components/modals/AddTorrents.js b/client/source/scripts/components/modals/AddTorrents.js index c831dc46..09c48ed3 100644 --- a/client/source/scripts/components/modals/AddTorrents.js +++ b/client/source/scripts/components/modals/AddTorrents.js @@ -2,8 +2,10 @@ import _ from 'lodash'; import classnames from 'classnames'; import React from 'react'; +import EventTypes from '../../constants/EventTypes'; import TextboxRepeater from '../forms/TextboxRepeater'; import TorrentActions from '../../actions/TorrentActions'; +import UIStore from '../../stores/UIStore'; const METHODS_TO_BIND = [ 'getContent', @@ -11,7 +13,8 @@ const METHODS_TO_BIND = [ 'handleUrlAdd', 'handleUrlChange', 'handleUrlRemove', - 'handleAddTorrents' + 'handleAddTorrents', + 'onLatestTorrentLocationChange' ]; export default class AddTorrents extends React.Component { @@ -29,6 +32,23 @@ export default class AddTorrents extends React.Component { }); } + componentWillMount() { + this.setState({destination: UIStore.getLatestTorrentLocation()}); + } + + componentDidMount() { + UIStore.listen(EventTypes.UI_LATEST_TORRENT_LOCATION_CHANGE, this.onLatestTorrentLocationChange); + } + + componentWillUnmount() { + UIStore.unlisten(EventTypes.UI_LATEST_TORRENT_LOCATION_CHANGE, this.onLatestTorrentLocationChange); + UIStore.fetchLatestTorrentLocation(); + } + + onLatestTorrentLocationChange() { + this.setState({destination: UIStore.getLatestTorrentLocation()}); + } + getContent() { return (
diff --git a/client/source/scripts/components/sidebar/SpeedLimitDropdown.js b/client/source/scripts/components/sidebar/SpeedLimitDropdown.js index 9bd187d9..6aab52b1 100644 --- a/client/source/scripts/components/sidebar/SpeedLimitDropdown.js +++ b/client/source/scripts/components/sidebar/SpeedLimitDropdown.js @@ -1,12 +1,12 @@ import React from 'react'; import ClientActions from '../../actions/ClientActions'; -import ClientDataStore from '../../stores/ClientDataStore'; import Dropdown from '../forms/Dropdown'; import EventTypes from '../../constants/EventTypes'; import format from '../../util/formatData'; import Limits from '../icons/Limits'; import SidebarItem from '../sidebar/SidebarItem'; +import TransferDataStore from '../../stores/TransferDataStore'; const METHODS_TO_BIND = ['onTransferDataRequestSuccess']; const SPEEDS = [1024, 10240, 102400, 512000, 1048576, 2097152, 5242880, 10485760, 0]; @@ -25,15 +25,15 @@ class Sidebar extends React.Component { } componentDidMount() { - ClientDataStore.listen( + TransferDataStore.listen( EventTypes.CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, this.onTransferDataRequestSuccess ); - ClientDataStore.fetchTransferData(); + TransferDataStore.fetchTransferData(); } componentWillUnmount() { - ClientDataStore.unlisten( + TransferDataStore.unlisten( EventTypes.CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, this.onTransferDataRequestSuccess ); @@ -41,7 +41,7 @@ class Sidebar extends React.Component { onTransferDataRequestSuccess() { this.setState({ - throttle: ClientDataStore.getThrottles({latest: true}) + throttle: TransferDataStore.getThrottles({latest: true}) }); } diff --git a/client/source/scripts/components/sidebar/TransferData.js b/client/source/scripts/components/sidebar/TransferData.js index ff5d778f..e76fd9bb 100644 --- a/client/source/scripts/components/sidebar/TransferData.js +++ b/client/source/scripts/components/sidebar/TransferData.js @@ -1,16 +1,18 @@ import React from 'react'; import ReactDOM from 'react-dom'; -import ClientDataStore from '../../stores/ClientDataStore'; import Download from '../icons/Download'; import EventTypes from '../../constants/EventTypes'; import format from '../../util/formatData'; import LineChart from '../ui/LineChart'; +import LoadingIndicator from '../ui/LoadingIndicator'; +import TransferDataStore from '../../stores/TransferDataStore'; import Upload from '../icons/Upload'; const METHODS_TO_BIND = [ 'onTransferDataRequestError', - 'onTransferDataRequestSuccess' + 'onTransferDataRequestSuccess', + 'onTransferHistoryRequestSuccess' ]; class ClientStats extends React.Component { @@ -19,6 +21,7 @@ class ClientStats extends React.Component { this.state = { sidebarWidth: 0, + transferHistoryRequestSuccess: false, transferDataRequestError: false, transferDataRequestSuccess: false }; @@ -32,20 +35,25 @@ class ClientStats extends React.Component { this.setState({ sidebarWidth: ReactDOM.findDOMNode(this).offsetWidth }); - ClientDataStore.listen( - EventTypes.CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, - this.onTransferDataRequestSuccess - ); - ClientDataStore.fetchTransferData(); + TransferDataStore.listen(EventTypes.CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, + this.onTransferDataRequestSuccess); + TransferDataStore.listen(EventTypes.CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS, + this.onTransferHistoryRequestSuccess); + TransferDataStore.fetchTransferData(); } componentWillUnmount() { - ClientDataStore.unlisten( + TransferDataStore.unlisten( EventTypes.CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, this.onTransferDataRequestSuccess ); } + isLoading() { + return !this.state.transferHistoryRequestSuccess || + !this.state.transferDataRequestSuccess; + } + onTransferDataRequestError() { this.setState({ transferDataRequestError: true, @@ -60,17 +68,25 @@ class ClientStats extends React.Component { }); } + onTransferHistoryRequestSuccess() { + if (!this.state.transferHistoryRequestSuccess) { + this.setState({ + transferHistoryRequestSuccess: true + }); + } + } + render() { if (this.state.transferDataRequestError) { return
Error
; - } else if (!this.state.transferDataRequestSuccess) { - return
Loading
; + } else if (this.isLoading()) { + return ; } - let throttles = ClientDataStore.getThrottles(); - let transferRate = ClientDataStore.getTransferRate(); - let transferRates = ClientDataStore.getTransferRates(); - let transferTotals = ClientDataStore.getTransferTotals(); + let throttles = TransferDataStore.getThrottles(); + let transferRate = TransferDataStore.getTransferRate(); + let transferRates = TransferDataStore.getTransferRates(); + let transferTotals = TransferDataStore.getTransferTotals(); let downloadRate = format.data(transferRate.download, '/s'); let downloadTotal = format.data(transferTotals.download); diff --git a/client/source/scripts/components/torrent-list/ActionBar.js b/client/source/scripts/components/torrent-list/ActionBar.js index 911ebf8b..79f91077 100644 --- a/client/source/scripts/components/torrent-list/ActionBar.js +++ b/client/source/scripts/components/torrent-list/ActionBar.js @@ -34,6 +34,7 @@ export default class ActionBar extends React.Component { } componentDidMount() { + TorrentFilterStore.fetchSortProps(); TorrentFilterStore.listen(EventTypes.UI_TORRENTS_SORT_CHANGE, this.onSortChange); } diff --git a/client/source/scripts/components/ui/LineChart.js b/client/source/scripts/components/ui/LineChart.js index 9cbe23cc..f950b3e9 100644 --- a/client/source/scripts/components/ui/LineChart.js +++ b/client/source/scripts/components/ui/LineChart.js @@ -41,16 +41,18 @@ export default class LineChart extends React.Component { }) ]); - let lineFunc = d3 - .svg - .line() - .x(function(dataPoint, index) { - return xRange(index); - }) - .y(function(dataPoint) { - return yRange(dataPoint); - }) - .interpolate('basis'); + let lineFunc = function (interpolation) { + return d3 + .svg + .line() + .x(function(dataPoint, index) { + return xRange(index); + }) + .y(function(dataPoint) { + return yRange(dataPoint); + }) + .interpolate(interpolation); + } let areaFunc = d3 .svg @@ -64,8 +66,8 @@ export default class LineChart extends React.Component { }) .interpolate('basis'); - let transferDataLinePoints = lineFunc(transferData); - let transferLimitLinePoints = lineFunc(transferLimit); + let transferDataLinePoints = lineFunc('basis')(transferData); + let transferLimitLinePoints = lineFunc('step-after')(transferLimit); let transferDataAreaPoints = areaFunc(transferData); graph diff --git a/client/source/scripts/constants/ActionTypes.js b/client/source/scripts/constants/ActionTypes.js index 780b6345..1a5d3c3e 100644 --- a/client/source/scripts/constants/ActionTypes.js +++ b/client/source/scripts/constants/ActionTypes.js @@ -18,9 +18,13 @@ const ActionTypes = { UI_CLICK_TORRENT: 'UI_CLICK_TORRENT', UI_CLICK_TORRENT_DETAILS: 'UI_CLICK_TORRENT_DETAILS', UI_DISPLAY_MODAL: 'UI_DISPLAY_MODAL', + UI_LATEST_TORRENT_LOCATION_REQUEST_ERROR: 'UI_LATEST_TORRENT_LOCATION_REQUEST_ERROR', + UI_LATEST_TORRENT_LOCATION_REQUEST_SUCCESS: 'UI_LATEST_TORRENT_LOCATION_REQUEST_SUCCESS', UI_SET_TORRENT_SEARCH_FILTER: 'UI_SET_TORRENT_SEARCH_FILTER', UI_SET_TORRENT_SORT: 'UI_SET_TORRENT_SORT', - UI_SET_TORRENT_STATUS_FILTER: 'UI_SET_TORRENT_STATUS_FILTER' + UI_SET_TORRENT_STATUS_FILTER: 'UI_SET_TORRENT_STATUS_FILTER', + UI_SORT_PROPS_REQUEST_SUCCESS: 'UI_SORT_PROPS_REQUEST_SUCCESS', + UI_SORT_PROPS_REQUEST_ERROR: 'UI_SORT_PROPS_REQUEST_ERROR' }; export default ActionTypes; diff --git a/client/source/scripts/constants/EventTypes.js b/client/source/scripts/constants/EventTypes.js index edd35437..cde58ae9 100644 --- a/client/source/scripts/constants/EventTypes.js +++ b/client/source/scripts/constants/EventTypes.js @@ -8,6 +8,7 @@ const EventTypes = { CLIENT_TRANSFER_DATA_REQUEST_ERROR: 'CLIENT_TRANSFER_DATA_REQUEST_ERROR', CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS: 'CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS', UI_MODAL_CHANGE: 'UI_MODAL_CHANGE', + UI_LATEST_TORRENT_LOCATION_CHANGE: 'UI_LATEST_TORRENT_LOCATION_CHANGE', UI_TORRENT_DETAILS_HASH_CHANGE: 'UI_TORRENT_DETAILS_HASH_CHANGE', UI_TORRENT_DETAILS_OPEN_CHANGE: 'UI_TORRENT_DETAILS_OPEN_CHANGE', UI_TORRENT_SELECTION_CHANGE: 'UI_TORRENT_SELECTION_CHANGE', diff --git a/client/source/scripts/stores/TorrentFilterStore.js b/client/source/scripts/stores/TorrentFilterStore.js index 23e9170a..384ba450 100644 --- a/client/source/scripts/stores/TorrentFilterStore.js +++ b/client/source/scripts/stores/TorrentFilterStore.js @@ -1,8 +1,9 @@ import ActionTypes from '../constants/ActionTypes'; import AppDispatcher from '../dispatcher/AppDispatcher'; import BaseStore from './BaseStore'; -import TorrentActions from '../actions/TorrentActions'; import EventTypes from '../constants/EventTypes'; +import TorrentActions from '../actions/TorrentActions'; +import UIActions from '../actions/UIActions'; class TorrentFilterStoreClass extends BaseStore { constructor() { @@ -18,26 +19,34 @@ class TorrentFilterStoreClass extends BaseStore { }; } - getStatusFilter() { - return this.statusFilter; - } - - setStatusFilter(filter) { - this.statusFilter = filter; - this.emit(EventTypes.UI_TORRENTS_FILTER_STATUS_CHANGE); + fetchSortProps() { + UIActions.fetchSortProps(); } getSearchFilter() { return this.searchFilter; } + getStatusFilter() { + return this.statusFilter; + } + + getTorrentsSort() { + return this.sortTorrentsBy; + } + + handleSortPropsRequestSuccess(sortBy) { + this.setTorrentsSort(sortBy); + } + setSearchFilter(filter) { this.searchFilter = filter; this.emit(EventTypes.UI_TORRENTS_FILTER_SEARCH_CHANGE); } - getTorrentsSort() { - return this.sortTorrentsBy; + setStatusFilter(filter) { + this.statusFilter = filter; + this.emit(EventTypes.UI_TORRENTS_FILTER_STATUS_CHANGE); } setTorrentsSort(sortBy) { @@ -61,6 +70,9 @@ AppDispatcher.register((payload) => { case ActionTypes.UI_SET_TORRENT_SORT: TorrentFilterStore.setTorrentsSort(action.data); break; + case ActionTypes.UI_SORT_PROPS_REQUEST_SUCCESS: + TorrentFilterStore.handleSortPropsRequestSuccess(action.data); + break; } }); diff --git a/client/source/scripts/stores/ClientDataStore.js b/client/source/scripts/stores/TransferDataStore.js similarity index 84% rename from client/source/scripts/stores/ClientDataStore.js rename to client/source/scripts/stores/TransferDataStore.js index 898c0333..98c4734b 100644 --- a/client/source/scripts/stores/ClientDataStore.js +++ b/client/source/scripts/stores/TransferDataStore.js @@ -5,7 +5,7 @@ import ClientActions from '../actions/ClientActions'; import config from '../../../../config'; import EventTypes from '../constants/EventTypes'; -class ClientDataStoreClass extends BaseStore { +class TransferDataStoreClass extends BaseStore { constructor() { super(); @@ -126,43 +126,33 @@ class ClientDataStoreClass extends BaseStore { config.pollInterval ); } - - startPollingTorrents() { - clearInterval(this.pollTransferDataID); - this.pollTransferDataID = null; - } - - stopPollingTorrentDetails() { - clearInterval(this.pollTorrentDetailsIntervalID); - this.isPollingTorrents = false; - } } -const ClientDataStore = new ClientDataStoreClass(); +const TransferDataStore = new TransferDataStoreClass(); AppDispatcher.register((payload) => { const {action, source} = payload; switch (action.type) { case ActionTypes.CLIENT_FETCH_TRANSFER_DATA_SUCCESS: - ClientDataStore.handleTransferDataSuccess(action.data.transferData); + TransferDataStore.handleTransferDataSuccess(action.data.transferData); break; case ActionTypes.CLIENT_FETCH_TRANSFER_DATA_ERROR: - ClientDataStore.handleTransferDataError(action.data.error); + TransferDataStore.handleTransferDataError(action.data.error); break; case ActionTypes.CLIENT_SET_THROTTLE_SUCCESS: - ClientDataStore.handleSetThrottleSuccess(action.data.transferData); + TransferDataStore.handleSetThrottleSuccess(action.data.transferData); break; case ActionTypes.CLIENT_SET_THROTTLE_ERROR: - ClientDataStore.handleSetThrottleError(action.data.error); + TransferDataStore.handleSetThrottleError(action.data.error); break; case ActionTypes.CLIENT_FETCH_TRANSFER_HISTORY_ERROR: - ClientDataStore.handleTransferHistoryError(action.error); + TransferDataStore.handleTransferHistoryError(action.error); break; case ActionTypes.CLIENT_FETCH_TRANSFER_HISTORY_SUCCESS: - ClientDataStore.handleTransferHistorySuccess(action.data); + TransferDataStore.handleTransferHistorySuccess(action.data); break; } }); -export default ClientDataStore; +export default TransferDataStore; diff --git a/client/source/scripts/stores/UIStore.js b/client/source/scripts/stores/UIStore.js index ca81fa61..7f2294d7 100644 --- a/client/source/scripts/stores/UIStore.js +++ b/client/source/scripts/stores/UIStore.js @@ -10,6 +10,7 @@ class UIStoreClass extends BaseStore { super(); this.activeModal = null; + this.latestTorrentLocation = null; this.torrentDetailsHash = null; this.torrentDetailsOpen = false; } @@ -21,19 +22,31 @@ class UIStoreClass extends BaseStore { } } + fetchLatestTorrentLocation() { + TorrentActions.fetchLatestTorrentLocation(); + } + getActiveModal() { return this.activeModal; } - setActiveModal(modal) { - this.activeModal = modal; - this.emit(EventTypes.UI_MODAL_CHANGE); + getLatestTorrentLocation() { + return this.latestTorrentLocation; } getTorrentDetailsHash() { return this.torrentDetailsHash; } + handleLatestTorrentLocationRequestSuccess(location) { + this.latestTorrentLocation = location; + this.emit(EventTypes.UI_LATEST_TORRENT_LOCATION_CHANGE); + } + + handleLatestTorrentLocationRequestError(error) { + console.log(error); + } + handleTorrentClick(hash) { this.torrentDetailsHash = hash; this.emit(EventTypes.UI_TORRENT_DETAILS_HASH_CHANGE); @@ -47,6 +60,11 @@ class UIStoreClass extends BaseStore { isTorrentDetailsOpen() { return this.torrentDetailsOpen; } + + setActiveModal(modal) { + this.activeModal = modal; + this.emit(EventTypes.UI_MODAL_CHANGE); + } } const UIStore = new UIStoreClass(); @@ -64,6 +82,12 @@ AppDispatcher.register((payload) => { case ActionTypes.UI_DISPLAY_MODAL: UIStore.setActiveModal(action.data); break; + case ActionTypes.UI_LATEST_TORRENT_LOCATION_REQUEST_SUCCESS: + UIStore.handleLatestTorrentLocationRequestSuccess(action.data.path); + break; + case ActionTypes.UI_LATEST_TORRENT_LOCATION_REQUEST_ERROR: + UIStore.handleLatestTorrentLocationRequestError(action.error); + break; } }); diff --git a/config.js b/config.js index b77fa249..1235d647 100644 --- a/config.js +++ b/config.js @@ -1,6 +1,8 @@ const config = { + databasePath: './server/db/', maxHistoryStates: 30, - pollInterval: 5000 + pollInterval: 5000, + uiDatabaseCleanInterval: 1000 * 60 * 60 // 1 hour }; module.exports = config; diff --git a/server/app.js b/server/app.js index 6ea80216..a3c7490f 100644 --- a/server/app.js +++ b/server/app.js @@ -5,7 +5,8 @@ var favicon = require('serve-favicon'); var logger = require('morgan'); var path = require('path'); -var client = require('./routes/client'); +var clientRoutes = require('./routes/client'); +var uiRoutes = require('./routes/ui'); var routes = require('./routes/index'); var app = express(); @@ -33,7 +34,8 @@ app.use(function(req, res, next) { }); app.use('/', routes); -app.use('/client', client); +app.use('/client', clientRoutes); +app.use('/ui', uiRoutes); // catch 404 and forward to error handler app.use(function(req, res, next) { diff --git a/server/assets/app.js b/server/assets/app.js index 3a6d9813..d2d30267 100644 --- a/server/assets/app.js +++ b/server/assets/app.js @@ -44,7 +44,7 @@ /* 0 */ /***/ function(module, exports, __webpack_require__) { - eval("'use strict';\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 _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(157);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _componentsLayoutApplication = __webpack_require__(158);\n\nvar _componentsLayoutApplication2 = _interopRequireDefault(_componentsLayoutApplication);\n\nvar _componentsLayoutApplicationContent = __webpack_require__(159);\n\nvar _componentsLayoutApplicationContent2 = _interopRequireDefault(_componentsLayoutApplicationContent);\n\nvar _componentsModalsModals = __webpack_require__(160);\n\nvar _componentsModalsModals2 = _interopRequireDefault(_componentsModalsModals);\n\nvar _componentsPanelsSidebar = __webpack_require__(202);\n\nvar _componentsPanelsSidebar2 = _interopRequireDefault(_componentsPanelsSidebar);\n\nvar _componentsPanelsTorrentListView = __webpack_require__(227);\n\nvar _componentsPanelsTorrentListView2 = _interopRequireDefault(_componentsPanelsTorrentListView);\n\nvar _componentsPanelsTorrentDetailsView = __webpack_require__(246);\n\nvar _componentsPanelsTorrentDetailsView2 = _interopRequireDefault(_componentsPanelsTorrentDetailsView);\n\nvar FloodApp = (function (_React$Component) {\n _inherits(FloodApp, _React$Component);\n\n function FloodApp() {\n _classCallCheck(this, FloodApp);\n\n _get(Object.getPrototypeOf(FloodApp.prototype), 'constructor', this).apply(this, arguments);\n }\n\n _createClass(FloodApp, [{\n key: 'render',\n value: function render() {\n return _react2['default'].createElement(\n _componentsLayoutApplication2['default'],\n null,\n _react2['default'].createElement(_componentsPanelsSidebar2['default'], null),\n _react2['default'].createElement(\n _componentsLayoutApplicationContent2['default'],\n null,\n _react2['default'].createElement(_componentsPanelsTorrentDetailsView2['default'], null),\n _react2['default'].createElement(_componentsPanelsTorrentListView2['default'], null)\n ),\n _react2['default'].createElement(_componentsModalsModals2['default'], null)\n );\n }\n }]);\n\n return FloodApp;\n})(_react2['default'].Component);\n\n_reactDom2['default'].render(_react2['default'].createElement(FloodApp, null), document.getElementById('app'));//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvYXBwLmpzPzRiMTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsaUNBQWlDLDJDQUEyQyxnQkFBZ0Isa0JBQWtCLE9BQU8sMkJBQTJCLHdEQUF3RCxnQ0FBZ0MsdURBQXVELDJEQUEyRCxFQUFFLEVBQUUseURBQXlELHFFQUFxRSw2REFBNkQsb0JBQW9CLEdBQUcsRUFBRTs7QUFFbGpCLHVDQUF1QyxtQkFBbUIsNEJBQTRCLGlEQUFpRCxnQkFBZ0Isa0RBQWtELDhEQUE4RCwwQkFBMEIsNENBQTRDLHVCQUF1QixrQkFBa0IsRUFBRSxPQUFPLGFBQWEsZ0JBQWdCLGdCQUFnQixlQUFlLDJCQUEyQixvQkFBb0IsRUFBRSxFQUFFLDRCQUE0QixtQkFBbUIsRUFBRSxPQUFPLHVCQUF1Qiw0QkFBNEIsa0JBQWtCLEVBQUUsOEJBQThCLEVBQUUsRUFBRTs7QUFFL29CLHNDQUFzQyx1Q0FBdUMsa0JBQWtCOztBQUUvRixpREFBaUQsMENBQTBDLDBEQUEwRCxFQUFFOztBQUV2SiwwQ0FBMEMsK0RBQStELHFHQUFxRyxFQUFFLHlFQUF5RSxlQUFlLHlFQUF5RSxFQUFFLEVBQUUsdUhBQXVIOztBQUU1ZTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVEIiwiZmlsZSI6IjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbnZhciBfZ2V0ID0gZnVuY3Rpb24gZ2V0KF94LCBfeDIsIF94MykgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeCwgcHJvcGVydHkgPSBfeDIsIHJlY2VpdmVyID0gX3gzOyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94ID0gcGFyZW50OyBfeDIgPSBwcm9wZXJ0eTsgX3gzID0gcmVjZWl2ZXI7IF9hZ2FpbiA9IHRydWU7IGRlc2MgPSBwYXJlbnQgPSB1bmRlZmluZWQ7IGNvbnRpbnVlIF9mdW5jdGlvbjsgfSB9IGVsc2UgaWYgKCd2YWx1ZScgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gJ2Z1bmN0aW9uJyAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ1N1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgJyArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbnZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXG52YXIgX3JlYWN0RG9tID0gcmVxdWlyZSgncmVhY3QtZG9tJyk7XG5cbnZhciBfcmVhY3REb20yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3REb20pO1xuXG52YXIgX2NvbXBvbmVudHNMYXlvdXRBcHBsaWNhdGlvbiA9IHJlcXVpcmUoJy4vY29tcG9uZW50cy9sYXlvdXQvQXBwbGljYXRpb24nKTtcblxudmFyIF9jb21wb25lbnRzTGF5b3V0QXBwbGljYXRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29tcG9uZW50c0xheW91dEFwcGxpY2F0aW9uKTtcblxudmFyIF9jb21wb25lbnRzTGF5b3V0QXBwbGljYXRpb25Db250ZW50ID0gcmVxdWlyZSgnLi9jb21wb25lbnRzL2xheW91dC9BcHBsaWNhdGlvbkNvbnRlbnQnKTtcblxudmFyIF9jb21wb25lbnRzTGF5b3V0QXBwbGljYXRpb25Db250ZW50MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbXBvbmVudHNMYXlvdXRBcHBsaWNhdGlvbkNvbnRlbnQpO1xuXG52YXIgX2NvbXBvbmVudHNNb2RhbHNNb2RhbHMgPSByZXF1aXJlKCcuL2NvbXBvbmVudHMvbW9kYWxzL01vZGFscycpO1xuXG52YXIgX2NvbXBvbmVudHNNb2RhbHNNb2RhbHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29tcG9uZW50c01vZGFsc01vZGFscyk7XG5cbnZhciBfY29tcG9uZW50c1BhbmVsc1NpZGViYXIgPSByZXF1aXJlKCcuL2NvbXBvbmVudHMvcGFuZWxzL1NpZGViYXInKTtcblxudmFyIF9jb21wb25lbnRzUGFuZWxzU2lkZWJhcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21wb25lbnRzUGFuZWxzU2lkZWJhcik7XG5cbnZhciBfY29tcG9uZW50c1BhbmVsc1RvcnJlbnRMaXN0VmlldyA9IHJlcXVpcmUoJy4vY29tcG9uZW50cy9wYW5lbHMvVG9ycmVudExpc3RWaWV3Jyk7XG5cbnZhciBfY29tcG9uZW50c1BhbmVsc1RvcnJlbnRMaXN0VmlldzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21wb25lbnRzUGFuZWxzVG9ycmVudExpc3RWaWV3KTtcblxudmFyIF9jb21wb25lbnRzUGFuZWxzVG9ycmVudERldGFpbHNWaWV3ID0gcmVxdWlyZSgnLi9jb21wb25lbnRzL3BhbmVscy9Ub3JyZW50RGV0YWlsc1ZpZXcnKTtcblxudmFyIF9jb21wb25lbnRzUGFuZWxzVG9ycmVudERldGFpbHNWaWV3MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbXBvbmVudHNQYW5lbHNUb3JyZW50RGV0YWlsc1ZpZXcpO1xuXG52YXIgRmxvb2RBcHAgPSAoZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKEZsb29kQXBwLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBGbG9vZEFwcCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRmxvb2RBcHApO1xuXG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoRmxvb2RBcHAucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhGbG9vZEFwcCwgW3tcbiAgICBrZXk6ICdyZW5kZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgIF9jb21wb25lbnRzTGF5b3V0QXBwbGljYXRpb24yWydkZWZhdWx0J10sXG4gICAgICAgIG51bGwsXG4gICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9jb21wb25lbnRzUGFuZWxzU2lkZWJhcjJbJ2RlZmF1bHQnXSwgbnVsbCksXG4gICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgIF9jb21wb25lbnRzTGF5b3V0QXBwbGljYXRpb25Db250ZW50MlsnZGVmYXVsdCddLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2NvbXBvbmVudHNQYW5lbHNUb3JyZW50RGV0YWlsc1ZpZXcyWydkZWZhdWx0J10sIG51bGwpLFxuICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9jb21wb25lbnRzUGFuZWxzVG9ycmVudExpc3RWaWV3MlsnZGVmYXVsdCddLCBudWxsKVxuICAgICAgICApLFxuICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfY29tcG9uZW50c01vZGFsc01vZGFsczJbJ2RlZmF1bHQnXSwgbnVsbClcbiAgICAgICk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEZsb29kQXBwO1xufSkoX3JlYWN0MlsnZGVmYXVsdCddLkNvbXBvbmVudCk7XG5cbl9yZWFjdERvbTJbJ2RlZmF1bHQnXS5yZW5kZXIoX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoRmxvb2RBcHAsIG51bGwpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXBwJykpO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9jbGllbnQvc291cmNlL3NjcmlwdHMvYXBwLmpzXG4gKiogbW9kdWxlIGlkID0gMFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); + eval("'use strict';\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 _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(157);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _componentsLayoutApplication = __webpack_require__(158);\n\nvar _componentsLayoutApplication2 = _interopRequireDefault(_componentsLayoutApplication);\n\nvar _componentsLayoutApplicationContent = __webpack_require__(159);\n\nvar _componentsLayoutApplicationContent2 = _interopRequireDefault(_componentsLayoutApplicationContent);\n\nvar _componentsModalsModals = __webpack_require__(160);\n\nvar _componentsModalsModals2 = _interopRequireDefault(_componentsModalsModals);\n\nvar _componentsPanelsSidebar = __webpack_require__(202);\n\nvar _componentsPanelsSidebar2 = _interopRequireDefault(_componentsPanelsSidebar);\n\nvar _componentsPanelsTorrentListView = __webpack_require__(227);\n\nvar _componentsPanelsTorrentListView2 = _interopRequireDefault(_componentsPanelsTorrentListView);\n\nvar _componentsPanelsTorrentDetailsView = __webpack_require__(246);\n\nvar _componentsPanelsTorrentDetailsView2 = _interopRequireDefault(_componentsPanelsTorrentDetailsView);\n\nvar _actionsTorrentActions = __webpack_require__(176);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar FloodApp = (function (_React$Component) {\n _inherits(FloodApp, _React$Component);\n\n function FloodApp() {\n _classCallCheck(this, FloodApp);\n\n _get(Object.getPrototypeOf(FloodApp.prototype), 'constructor', this).apply(this, arguments);\n }\n\n _createClass(FloodApp, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n _actionsTorrentActions2['default'].fetchLatestTorrentLocation();\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2['default'].createElement(\n _componentsLayoutApplication2['default'],\n null,\n _react2['default'].createElement(_componentsPanelsSidebar2['default'], null),\n _react2['default'].createElement(\n _componentsLayoutApplicationContent2['default'],\n null,\n _react2['default'].createElement(_componentsPanelsTorrentDetailsView2['default'], null),\n _react2['default'].createElement(_componentsPanelsTorrentListView2['default'], null)\n ),\n _react2['default'].createElement(_componentsModalsModals2['default'], null)\n );\n }\n }]);\n\n return FloodApp;\n})(_react2['default'].Component);\n\n_reactDom2['default'].render(_react2['default'].createElement(FloodApp, null), document.getElementById('app'));//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvYXBwLmpzPzRiMTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsaUNBQWlDLDJDQUEyQyxnQkFBZ0Isa0JBQWtCLE9BQU8sMkJBQTJCLHdEQUF3RCxnQ0FBZ0MsdURBQXVELDJEQUEyRCxFQUFFLEVBQUUseURBQXlELHFFQUFxRSw2REFBNkQsb0JBQW9CLEdBQUcsRUFBRTs7QUFFbGpCLHVDQUF1QyxtQkFBbUIsNEJBQTRCLGlEQUFpRCxnQkFBZ0Isa0RBQWtELDhEQUE4RCwwQkFBMEIsNENBQTRDLHVCQUF1QixrQkFBa0IsRUFBRSxPQUFPLGFBQWEsZ0JBQWdCLGdCQUFnQixlQUFlLDJCQUEyQixvQkFBb0IsRUFBRSxFQUFFLDRCQUE0QixtQkFBbUIsRUFBRSxPQUFPLHVCQUF1Qiw0QkFBNEIsa0JBQWtCLEVBQUUsOEJBQThCLEVBQUUsRUFBRTs7QUFFL29CLHNDQUFzQyx1Q0FBdUMsa0JBQWtCOztBQUUvRixpREFBaUQsMENBQTBDLDBEQUEwRCxFQUFFOztBQUV2SiwwQ0FBMEMsK0RBQStELHFHQUFxRyxFQUFFLHlFQUF5RSxlQUFlLHlFQUF5RSxFQUFFLEVBQUUsdUhBQXVIOztBQUU1ZTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVEIiwiZmlsZSI6IjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbnZhciBfZ2V0ID0gZnVuY3Rpb24gZ2V0KF94LCBfeDIsIF94MykgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeCwgcHJvcGVydHkgPSBfeDIsIHJlY2VpdmVyID0gX3gzOyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94ID0gcGFyZW50OyBfeDIgPSBwcm9wZXJ0eTsgX3gzID0gcmVjZWl2ZXI7IF9hZ2FpbiA9IHRydWU7IGRlc2MgPSBwYXJlbnQgPSB1bmRlZmluZWQ7IGNvbnRpbnVlIF9mdW5jdGlvbjsgfSB9IGVsc2UgaWYgKCd2YWx1ZScgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gJ2Z1bmN0aW9uJyAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ1N1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgJyArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbnZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXG52YXIgX3JlYWN0RG9tID0gcmVxdWlyZSgncmVhY3QtZG9tJyk7XG5cbnZhciBfcmVhY3REb20yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3REb20pO1xuXG52YXIgX2NvbXBvbmVudHNMYXlvdXRBcHBsaWNhdGlvbiA9IHJlcXVpcmUoJy4vY29tcG9uZW50cy9sYXlvdXQvQXBwbGljYXRpb24nKTtcblxudmFyIF9jb21wb25lbnRzTGF5b3V0QXBwbGljYXRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29tcG9uZW50c0xheW91dEFwcGxpY2F0aW9uKTtcblxudmFyIF9jb21wb25lbnRzTGF5b3V0QXBwbGljYXRpb25Db250ZW50ID0gcmVxdWlyZSgnLi9jb21wb25lbnRzL2xheW91dC9BcHBsaWNhdGlvbkNvbnRlbnQnKTtcblxudmFyIF9jb21wb25lbnRzTGF5b3V0QXBwbGljYXRpb25Db250ZW50MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbXBvbmVudHNMYXlvdXRBcHBsaWNhdGlvbkNvbnRlbnQpO1xuXG52YXIgX2NvbXBvbmVudHNNb2RhbHNNb2RhbHMgPSByZXF1aXJlKCcuL2NvbXBvbmVudHMvbW9kYWxzL01vZGFscycpO1xuXG52YXIgX2NvbXBvbmVudHNNb2RhbHNNb2RhbHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29tcG9uZW50c01vZGFsc01vZGFscyk7XG5cbnZhciBfY29tcG9uZW50c1BhbmVsc1NpZGViYXIgPSByZXF1aXJlKCcuL2NvbXBvbmVudHMvcGFuZWxzL1NpZGViYXInKTtcblxudmFyIF9jb21wb25lbnRzUGFuZWxzU2lkZWJhcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21wb25lbnRzUGFuZWxzU2lkZWJhcik7XG5cbnZhciBfY29tcG9uZW50c1BhbmVsc1RvcnJlbnRMaXN0VmlldyA9IHJlcXVpcmUoJy4vY29tcG9uZW50cy9wYW5lbHMvVG9ycmVudExpc3RWaWV3Jyk7XG5cbnZhciBfY29tcG9uZW50c1BhbmVsc1RvcnJlbnRMaXN0VmlldzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21wb25lbnRzUGFuZWxzVG9ycmVudExpc3RWaWV3KTtcblxudmFyIF9jb21wb25lbnRzUGFuZWxzVG9ycmVudERldGFpbHNWaWV3ID0gcmVxdWlyZSgnLi9jb21wb25lbnRzL3BhbmVscy9Ub3JyZW50RGV0YWlsc1ZpZXcnKTtcblxudmFyIF9jb21wb25lbnRzUGFuZWxzVG9ycmVudERldGFpbHNWaWV3MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbXBvbmVudHNQYW5lbHNUb3JyZW50RGV0YWlsc1ZpZXcpO1xuXG52YXIgX2FjdGlvbnNUb3JyZW50QWN0aW9ucyA9IHJlcXVpcmUoJy4vYWN0aW9ucy9Ub3JyZW50QWN0aW9ucycpO1xuXG52YXIgX2FjdGlvbnNUb3JyZW50QWN0aW9uczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hY3Rpb25zVG9ycmVudEFjdGlvbnMpO1xuXG52YXIgRmxvb2RBcHAgPSAoZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKEZsb29kQXBwLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBGbG9vZEFwcCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRmxvb2RBcHApO1xuXG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoRmxvb2RBcHAucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhGbG9vZEFwcCwgW3tcbiAgICBrZXk6ICdjb21wb25lbnREaWRNb3VudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgX2FjdGlvbnNUb3JyZW50QWN0aW9uczJbJ2RlZmF1bHQnXS5mZXRjaExhdGVzdFRvcnJlbnRMb2NhdGlvbigpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3JlbmRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHJldHVybiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgX2NvbXBvbmVudHNMYXlvdXRBcHBsaWNhdGlvbjJbJ2RlZmF1bHQnXSxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2NvbXBvbmVudHNQYW5lbHNTaWRlYmFyMlsnZGVmYXVsdCddLCBudWxsKSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgX2NvbXBvbmVudHNMYXlvdXRBcHBsaWNhdGlvbkNvbnRlbnQyWydkZWZhdWx0J10sXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfY29tcG9uZW50c1BhbmVsc1RvcnJlbnREZXRhaWxzVmlldzJbJ2RlZmF1bHQnXSwgbnVsbCksXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2NvbXBvbmVudHNQYW5lbHNUb3JyZW50TGlzdFZpZXcyWydkZWZhdWx0J10sIG51bGwpXG4gICAgICAgICksXG4gICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9jb21wb25lbnRzTW9kYWxzTW9kYWxzMlsnZGVmYXVsdCddLCBudWxsKVxuICAgICAgKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRmxvb2RBcHA7XG59KShfcmVhY3QyWydkZWZhdWx0J10uQ29tcG9uZW50KTtcblxuX3JlYWN0RG9tMlsnZGVmYXVsdCddLnJlbmRlcihfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChGbG9vZEFwcCwgbnVsbCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcHAnKSk7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9hcHAuanNcbiAqKiBtb2R1bGUgaWQgPSAwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iXSwic291cmNlUm9vdCI6IiJ9"); /***/ }, /* 1 */ @@ -1052,7 +1052,7 @@ /* 168 */ /***/ 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__(169);\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 _formsTextboxRepeater = __webpack_require__(172);\n\nvar _formsTextboxRepeater2 = _interopRequireDefault(_formsTextboxRepeater);\n\nvar _actionsTorrentActions = __webpack_require__(176);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar METHODS_TO_BIND = ['getContent', 'handleDestinationChange', 'handleUrlAdd', 'handleUrlChange', 'handleUrlRemove', 'handleAddTorrents'];\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 destination: null,\n isExpanded: 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: 'getContent',\n value: function getContent() {\n return _react2['default'].createElement(\n 'div',\n { className: 'modal__content', onClick: this.handleMenuWrapperClick },\n _react2['default'].createElement(\n 'div',\n { className: 'modal__header' },\n 'Add Torrents'\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'modal__content__container' },\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 _react2['default'].createElement(\n 'div',\n { className: 'modal__button-group form__row' },\n _react2['default'].createElement(\n 'button',\n { className: 'button button--deemphasize',\n onClick: this.props.dismissModal },\n 'Cancel'\n ),\n _react2['default'].createElement(\n 'button',\n { className: 'button button--primary',\n onClick: this.handleAddTorrents },\n 'Add Torrent'\n )\n )\n )\n );\n }\n }, {\n key: 'handleAddTorrents',\n value: function handleAddTorrents() {\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 this.getContent();\n }\n }]);\n\n return AddTorrents;\n})(_react2['default'].Component);\n\nexports['default'] = AddTorrents;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy9tb2RhbHMvQWRkVG9ycmVudHMuanM/MGVlMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxpQ0FBaUMsMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUUsRUFBRSx5REFBeUQscUVBQXFFLDZEQUE2RCxvQkFBb0IsR0FBRyxFQUFFOztBQUVsakIsdUNBQXVDLG1CQUFtQiw0QkFBNEIsaURBQWlELGdCQUFnQixrREFBa0QsOERBQThELDBCQUEwQiw0Q0FBNEMsdUJBQXVCLGtCQUFrQixFQUFFLE9BQU8sYUFBYSxnQkFBZ0IsZ0JBQWdCLGVBQWUsMkJBQTJCLG9CQUFvQixFQUFFLEVBQUUsNEJBQTRCLG1CQUFtQixFQUFFLE9BQU8sdUJBQXVCLDRCQUE0QixrQkFBa0IsRUFBRSw4QkFBOEIsRUFBRSxFQUFFOztBQUUvb0Isc0NBQXNDLHVDQUF1QyxrQkFBa0I7O0FBRS9GLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDBDQUEwQywrREFBK0QscUdBQXFHLEVBQUUseUVBQXlFLGVBQWUseUVBQXlFLEVBQUUsRUFBRSx1SEFBdUg7O0FBRTVlOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsY0FBYztBQUNwQzs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLG9FQUFvRTtBQUM3RTtBQUNBO0FBQ0EsV0FBVyw2QkFBNkI7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHlDQUF5QztBQUNwRDtBQUNBO0FBQ0EsYUFBYSx5QkFBeUI7QUFDdEMsaUZBQWlGO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRDtBQUNsRDtBQUNBO0FBQ0E7QUFDQSxhQUFhLHlCQUF5QjtBQUN0Qyx1REFBdUQ7QUFDdkQ7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLGFBQWEsNkNBQTZDO0FBQzFEO0FBQ0E7QUFDQSxlQUFlO0FBQ2Ysa0RBQWtEO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmLGlEQUFpRDtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLGNBQWM7QUFDdkQscUJBQXFCLDZCQUE2QjtBQUNsRDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw2QkFBNkI7QUFDbEQ7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6IjE2OC5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbnZhciBfZ2V0ID0gZnVuY3Rpb24gZ2V0KF94LCBfeDIsIF94MykgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeCwgcHJvcGVydHkgPSBfeDIsIHJlY2VpdmVyID0gX3gzOyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94ID0gcGFyZW50OyBfeDIgPSBwcm9wZXJ0eTsgX3gzID0gcmVjZWl2ZXI7IF9hZ2FpbiA9IHRydWU7IGRlc2MgPSBwYXJlbnQgPSB1bmRlZmluZWQ7IGNvbnRpbnVlIF9mdW5jdGlvbjsgfSB9IGVsc2UgaWYgKCd2YWx1ZScgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gJ2Z1bmN0aW9uJyAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ1N1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgJyArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIF9sb2Rhc2ggPSByZXF1aXJlKCdsb2Rhc2gnKTtcblxudmFyIF9sb2Rhc2gyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbG9kYXNoKTtcblxudmFyIF9jbGFzc25hbWVzID0gcmVxdWlyZSgnY2xhc3NuYW1lcycpO1xuXG52YXIgX2NsYXNzbmFtZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY2xhc3NuYW1lcyk7XG5cbnZhciBfcmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xuXG52YXIgX3JlYWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlYWN0KTtcblxudmFyIF9mb3Jtc1RleHRib3hSZXBlYXRlciA9IHJlcXVpcmUoJy4uL2Zvcm1zL1RleHRib3hSZXBlYXRlcicpO1xuXG52YXIgX2Zvcm1zVGV4dGJveFJlcGVhdGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Zvcm1zVGV4dGJveFJlcGVhdGVyKTtcblxudmFyIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMgPSByZXF1aXJlKCcuLi8uLi9hY3Rpb25zL1RvcnJlbnRBY3Rpb25zJyk7XG5cbnZhciBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2FjdGlvbnNUb3JyZW50QWN0aW9ucyk7XG5cbnZhciBNRVRIT0RTX1RPX0JJTkQgPSBbJ2dldENvbnRlbnQnLCAnaGFuZGxlRGVzdGluYXRpb25DaGFuZ2UnLCAnaGFuZGxlVXJsQWRkJywgJ2hhbmRsZVVybENoYW5nZScsICdoYW5kbGVVcmxSZW1vdmUnLCAnaGFuZGxlQWRkVG9ycmVudHMnXTtcblxudmFyIEFkZFRvcnJlbnRzID0gKGZ1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhBZGRUb3JyZW50cywgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gQWRkVG9ycmVudHMoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBZGRUb3JyZW50cyk7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihBZGRUb3JyZW50cy5wcm90b3R5cGUpLCAnY29uc3RydWN0b3InLCB0aGlzKS5jYWxsKHRoaXMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGRlc3RpbmF0aW9uOiBudWxsLFxuICAgICAgaXNFeHBhbmRlZDogZmFsc2UsXG4gICAgICB1cmxUZXh0Ym94ZXM6IFt7IHZhbHVlOiBudWxsIH1dXG4gICAgfTtcblxuICAgIE1FVEhPRFNfVE9fQklORC5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICAgIF90aGlzW21ldGhvZF0gPSBfdGhpc1ttZXRob2RdLmJpbmQoX3RoaXMpO1xuICAgIH0pO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEFkZFRvcnJlbnRzLCBbe1xuICAgIGtleTogJ2dldENvbnRlbnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb250ZW50KCkge1xuICAgICAgcmV0dXJuIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAnZGl2JyxcbiAgICAgICAgeyBjbGFzc05hbWU6ICdtb2RhbF9fY29udGVudCcsIG9uQ2xpY2s6IHRoaXMuaGFuZGxlTWVudVdyYXBwZXJDbGljayB9LFxuICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ21vZGFsX19oZWFkZXInIH0sXG4gICAgICAgICAgJ0FkZCBUb3JyZW50cydcbiAgICAgICAgKSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgeyBjbGFzc05hbWU6ICdtb2RhbF9fY29udGVudF9fY29udGFpbmVyJyB9LFxuICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2Zvcm1fX3JvdycgfSxcbiAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9mb3Jtc1RleHRib3hSZXBlYXRlcjJbJ2RlZmF1bHQnXSwgeyBwbGFjZWhvbGRlcjogJ1RvcnJlbnQgVVJMJyxcbiAgICAgICAgICAgICAgaGFuZGxlVGV4dGJveEFkZDogdGhpcy5oYW5kbGVVcmxBZGQsXG4gICAgICAgICAgICAgIGhhbmRsZVRleHRib3hDaGFuZ2U6IHRoaXMuaGFuZGxlVXJsQ2hhbmdlLFxuICAgICAgICAgICAgICBoYW5kbGVUZXh0Ym94UmVtb3ZlOiB0aGlzLmhhbmRsZVVybFJlbW92ZSxcbiAgICAgICAgICAgICAgdGV4dGJveGVzOiB0aGlzLnN0YXRlLnVybFRleHRib3hlcyB9KVxuICAgICAgICAgICksXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnZm9ybV9fcm93JyB9LFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoJ2lucHV0JywgeyBjbGFzc05hbWU6ICd0ZXh0Ym94JyxcbiAgICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMuaGFuZGxlRGVzdGluYXRpb25DaGFuZ2UsXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnRGVzdGluYXRpb24nLFxuICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5zdGF0ZS5kZXN0aW5hdGlvbixcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnIH0pXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdtb2RhbF9fYnV0dG9uLWdyb3VwIGZvcm1fX3JvdycgfSxcbiAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdidXR0b24gYnV0dG9uLS1kZWVtcGhhc2l6ZScsXG4gICAgICAgICAgICAgICAgb25DbGljazogdGhpcy5wcm9wcy5kaXNtaXNzTW9kYWwgfSxcbiAgICAgICAgICAgICAgJ0NhbmNlbCdcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgJ2J1dHRvbicsXG4gICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnYnV0dG9uIGJ1dHRvbi0tcHJpbWFyeScsXG4gICAgICAgICAgICAgICAgb25DbGljazogdGhpcy5oYW5kbGVBZGRUb3JyZW50cyB9LFxuICAgICAgICAgICAgICAnQWRkIFRvcnJlbnQnXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZUFkZFRvcnJlbnRzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlQWRkVG9ycmVudHMoKSB7XG4gICAgICB2YXIgdG9ycmVudFVybHMgPSBfbG9kYXNoMlsnZGVmYXVsdCddLnBsdWNrKHRoaXMuc3RhdGUudXJsVGV4dGJveGVzLCAndmFsdWUnKTtcbiAgICAgIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMyWydkZWZhdWx0J10uYWRkVG9ycmVudHModG9ycmVudFVybHMsIHRoaXMuc3RhdGUuZGVzdGluYXRpb24pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZURlc3RpbmF0aW9uQ2hhbmdlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlRGVzdGluYXRpb25DaGFuZ2UoZXZlbnQpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBkZXN0aW5hdGlvbjogZXZlbnQudGFyZ2V0LnZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVNZW51V3JhcHBlckNsaWNrJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlTWVudVdyYXBwZXJDbGljayhldmVudCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlVXJsUmVtb3ZlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlVXJsUmVtb3ZlKGluZGV4KSB7XG4gICAgICB2YXIgdXJsVGV4dGJveGVzID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5zdGF0ZS51cmxUZXh0Ym94ZXMpO1xuICAgICAgdXJsVGV4dGJveGVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgdXJsVGV4dGJveGVzOiB1cmxUZXh0Ym94ZXNcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZVVybEFkZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVVybEFkZChpbmRleCkge1xuICAgICAgdmFyIHVybFRleHRib3hlcyA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMuc3RhdGUudXJsVGV4dGJveGVzKTtcbiAgICAgIHVybFRleHRib3hlcy5zcGxpY2UoaW5kZXggKyAxLCAwLCB7IHZhbHVlOiBudWxsIH0pO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IHVybFRleHRib3hlczogdXJsVGV4dGJveGVzIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZVVybENoYW5nZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVVybENoYW5nZShpbmRleCwgdmFsdWUpIHtcbiAgICAgIHZhciB1cmxUZXh0Ym94ZXMgPSBPYmplY3QuYXNzaWduKFtdLCB0aGlzLnN0YXRlLnVybFRleHRib3hlcyk7XG4gICAgICB1cmxUZXh0Ym94ZXNbaW5kZXhdLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgdXJsVGV4dGJveGVzOiB1cmxUZXh0Ym94ZXMgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVuZGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29udGVudCgpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBBZGRUb3JyZW50cztcbn0pKF9yZWFjdDJbJ2RlZmF1bHQnXS5Db21wb25lbnQpO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBBZGRUb3JyZW50cztcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy9tb2RhbHMvQWRkVG9ycmVudHMuanNcbiAqKiBtb2R1bGUgaWQgPSAxNjhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0="); + 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__(169);\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__(196);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _formsTextboxRepeater = __webpack_require__(172);\n\nvar _formsTextboxRepeater2 = _interopRequireDefault(_formsTextboxRepeater);\n\nvar _actionsTorrentActions = __webpack_require__(176);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar _storesUIStore = __webpack_require__(198);\n\nvar _storesUIStore2 = _interopRequireDefault(_storesUIStore);\n\nvar METHODS_TO_BIND = ['getContent', 'handleDestinationChange', 'handleUrlAdd', 'handleUrlChange', 'handleUrlRemove', 'handleAddTorrents', '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 destination: null,\n isExpanded: 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 _storesUIStore2['default'].listen(_constantsEventTypes2['default'].UI_LATEST_TORRENT_LOCATION_CHANGE, this.onLatestTorrentLocationChange);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _storesUIStore2['default'].unlisten(_constantsEventTypes2['default'].UI_LATEST_TORRENT_LOCATION_CHANGE, this.onLatestTorrentLocationChange);\n _storesUIStore2['default'].fetchLatestTorrentLocation();\n }\n }, {\n key: 'onLatestTorrentLocationChange',\n value: function onLatestTorrentLocationChange() {\n this.setState({ destination: _storesUIStore2['default'].getLatestTorrentLocation() });\n }\n }, {\n key: 'getContent',\n value: function getContent() {\n return _react2['default'].createElement(\n 'div',\n { className: 'modal__content', onClick: this.handleMenuWrapperClick },\n _react2['default'].createElement(\n 'div',\n { className: 'modal__header' },\n 'Add Torrents'\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'modal__content__container' },\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 _react2['default'].createElement(\n 'div',\n { className: 'modal__button-group form__row' },\n _react2['default'].createElement(\n 'button',\n { className: 'button button--deemphasize',\n onClick: this.props.dismissModal },\n 'Cancel'\n ),\n _react2['default'].createElement(\n 'button',\n { className: 'button button--primary',\n onClick: this.handleAddTorrents },\n 'Add Torrent'\n )\n )\n )\n );\n }\n }, {\n key: 'handleAddTorrents',\n value: function handleAddTorrents() {\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 this.getContent();\n }\n }]);\n\n return AddTorrents;\n})(_react2['default'].Component);\n\nexports['default'] = AddTorrents;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy9tb2RhbHMvQWRkVG9ycmVudHMuanM/MGVlMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxpQ0FBaUMsMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUUsRUFBRSx5REFBeUQscUVBQXFFLDZEQUE2RCxvQkFBb0IsR0FBRyxFQUFFOztBQUVsakIsdUNBQXVDLG1CQUFtQiw0QkFBNEIsaURBQWlELGdCQUFnQixrREFBa0QsOERBQThELDBCQUEwQiw0Q0FBNEMsdUJBQXVCLGtCQUFrQixFQUFFLE9BQU8sYUFBYSxnQkFBZ0IsZ0JBQWdCLGVBQWUsMkJBQTJCLG9CQUFvQixFQUFFLEVBQUUsNEJBQTRCLG1CQUFtQixFQUFFLE9BQU8sdUJBQXVCLDRCQUE0QixrQkFBa0IsRUFBRSw4QkFBOEIsRUFBRSxFQUFFOztBQUUvb0Isc0NBQXNDLHVDQUF1QyxrQkFBa0I7O0FBRS9GLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDBDQUEwQywrREFBK0QscUdBQXFHLEVBQUUseUVBQXlFLGVBQWUseUVBQXlFLEVBQUUsRUFBRSx1SEFBdUg7O0FBRTVlOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsY0FBYztBQUNwQzs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixxRUFBcUU7QUFDMUY7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EscUJBQXFCLHFFQUFxRTtBQUMxRjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsb0VBQW9FO0FBQzdFO0FBQ0E7QUFDQSxXQUFXLDZCQUE2QjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcseUNBQXlDO0FBQ3BEO0FBQ0E7QUFDQSxhQUFhLHlCQUF5QjtBQUN0QyxpRkFBaUY7QUFDakY7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLGFBQWEseUJBQXlCO0FBQ3RDLHVEQUF1RDtBQUN2RDtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsYUFBYSw2Q0FBNkM7QUFDMUQ7QUFDQTtBQUNBLGVBQWU7QUFDZixrREFBa0Q7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsaURBQWlEO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsY0FBYztBQUN2RCxxQkFBcUIsNkJBQTZCO0FBQ2xEO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDZCQUE2QjtBQUNsRDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVEO0FBQ0EiLCJmaWxlIjoiMTY4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gsIF94MiwgX3gzKSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94LCBwcm9wZXJ0eSA9IF94MiwgcmVjZWl2ZXIgPSBfeDM7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3ggPSBwYXJlbnQ7IF94MiA9IHByb3BlcnR5OyBfeDMgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX2xvZGFzaCA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xuXG52YXIgX2xvZGFzaDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9sb2Rhc2gpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSByZXF1aXJlKCdjbGFzc25hbWVzJyk7XG5cbnZhciBfY2xhc3NuYW1lczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc25hbWVzKTtcblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbnZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXG52YXIgX2NvbnN0YW50c0V2ZW50VHlwZXMgPSByZXF1aXJlKCcuLi8uLi9jb25zdGFudHMvRXZlbnRUeXBlcycpO1xuXG52YXIgX2NvbnN0YW50c0V2ZW50VHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzRXZlbnRUeXBlcyk7XG5cbnZhciBfZm9ybXNUZXh0Ym94UmVwZWF0ZXIgPSByZXF1aXJlKCcuLi9mb3Jtcy9UZXh0Ym94UmVwZWF0ZXInKTtcblxudmFyIF9mb3Jtc1RleHRib3hSZXBlYXRlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9mb3Jtc1RleHRib3hSZXBlYXRlcik7XG5cbnZhciBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zID0gcmVxdWlyZSgnLi4vLi4vYWN0aW9ucy9Ub3JyZW50QWN0aW9ucycpO1xuXG52YXIgX2FjdGlvbnNUb3JyZW50QWN0aW9uczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hY3Rpb25zVG9ycmVudEFjdGlvbnMpO1xuXG52YXIgX3N0b3Jlc1VJU3RvcmUgPSByZXF1aXJlKCcuLi8uLi9zdG9yZXMvVUlTdG9yZScpO1xuXG52YXIgX3N0b3Jlc1VJU3RvcmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3RvcmVzVUlTdG9yZSk7XG5cbnZhciBNRVRIT0RTX1RPX0JJTkQgPSBbJ2dldENvbnRlbnQnLCAnaGFuZGxlRGVzdGluYXRpb25DaGFuZ2UnLCAnaGFuZGxlVXJsQWRkJywgJ2hhbmRsZVVybENoYW5nZScsICdoYW5kbGVVcmxSZW1vdmUnLCAnaGFuZGxlQWRkVG9ycmVudHMnLCAnb25MYXRlc3RUb3JyZW50TG9jYXRpb25DaGFuZ2UnXTtcblxudmFyIEFkZFRvcnJlbnRzID0gKGZ1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhBZGRUb3JyZW50cywgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gQWRkVG9ycmVudHMoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBZGRUb3JyZW50cyk7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihBZGRUb3JyZW50cy5wcm90b3R5cGUpLCAnY29uc3RydWN0b3InLCB0aGlzKS5jYWxsKHRoaXMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGRlc3RpbmF0aW9uOiBudWxsLFxuICAgICAgaXNFeHBhbmRlZDogZmFsc2UsXG4gICAgICB1cmxUZXh0Ym94ZXM6IFt7IHZhbHVlOiBudWxsIH1dXG4gICAgfTtcblxuICAgIE1FVEhPRFNfVE9fQklORC5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICAgIF90aGlzW21ldGhvZF0gPSBfdGhpc1ttZXRob2RdLmJpbmQoX3RoaXMpO1xuICAgIH0pO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEFkZFRvcnJlbnRzLCBbe1xuICAgIGtleTogJ2NvbXBvbmVudFdpbGxNb3VudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxNb3VudCgpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBkZXN0aW5hdGlvbjogX3N0b3Jlc1VJU3RvcmUyWydkZWZhdWx0J10uZ2V0TGF0ZXN0VG9ycmVudExvY2F0aW9uKCkgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnY29tcG9uZW50RGlkTW91bnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIF9zdG9yZXNVSVN0b3JlMlsnZGVmYXVsdCddLmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9MQVRFU1RfVE9SUkVOVF9MT0NBVElPTl9DSEFOR0UsIHRoaXMub25MYXRlc3RUb3JyZW50TG9jYXRpb25DaGFuZ2UpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2NvbXBvbmVudFdpbGxVbm1vdW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBfc3RvcmVzVUlTdG9yZTJbJ2RlZmF1bHQnXS51bmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9MQVRFU1RfVE9SUkVOVF9MT0NBVElPTl9DSEFOR0UsIHRoaXMub25MYXRlc3RUb3JyZW50TG9jYXRpb25DaGFuZ2UpO1xuICAgICAgX3N0b3Jlc1VJU3RvcmUyWydkZWZhdWx0J10uZmV0Y2hMYXRlc3RUb3JyZW50TG9jYXRpb24oKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdvbkxhdGVzdFRvcnJlbnRMb2NhdGlvbkNoYW5nZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uTGF0ZXN0VG9ycmVudExvY2F0aW9uQ2hhbmdlKCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGRlc3RpbmF0aW9uOiBfc3RvcmVzVUlTdG9yZTJbJ2RlZmF1bHQnXS5nZXRMYXRlc3RUb3JyZW50TG9jYXRpb24oKSB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRDb250ZW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29udGVudCgpIHtcbiAgICAgIHJldHVybiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgJ2RpdicsXG4gICAgICAgIHsgY2xhc3NOYW1lOiAnbW9kYWxfX2NvbnRlbnQnLCBvbkNsaWNrOiB0aGlzLmhhbmRsZU1lbnVXcmFwcGVyQ2xpY2sgfSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgeyBjbGFzc05hbWU6ICdtb2RhbF9faGVhZGVyJyB9LFxuICAgICAgICAgICdBZGQgVG9ycmVudHMnXG4gICAgICAgICksXG4gICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICdkaXYnLFxuICAgICAgICAgIHsgY2xhc3NOYW1lOiAnbW9kYWxfX2NvbnRlbnRfX2NvbnRhaW5lcicgfSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdmb3JtX19yb3cnIH0sXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfZm9ybXNUZXh0Ym94UmVwZWF0ZXIyWydkZWZhdWx0J10sIHsgcGxhY2Vob2xkZXI6ICdUb3JyZW50IFVSTCcsXG4gICAgICAgICAgICAgIGhhbmRsZVRleHRib3hBZGQ6IHRoaXMuaGFuZGxlVXJsQWRkLFxuICAgICAgICAgICAgICBoYW5kbGVUZXh0Ym94Q2hhbmdlOiB0aGlzLmhhbmRsZVVybENoYW5nZSxcbiAgICAgICAgICAgICAgaGFuZGxlVGV4dGJveFJlbW92ZTogdGhpcy5oYW5kbGVVcmxSZW1vdmUsXG4gICAgICAgICAgICAgIHRleHRib3hlczogdGhpcy5zdGF0ZS51cmxUZXh0Ym94ZXMgfSlcbiAgICAgICAgICApLFxuICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2Zvcm1fX3JvdycgfSxcbiAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KCdpbnB1dCcsIHsgY2xhc3NOYW1lOiAndGV4dGJveCcsXG4gICAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLmhhbmRsZURlc3RpbmF0aW9uQ2hhbmdlLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0Rlc3RpbmF0aW9uJyxcbiAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuc3RhdGUuZGVzdGluYXRpb24sXG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyB9KVxuICAgICAgICAgICksXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnbW9kYWxfX2J1dHRvbi1ncm91cCBmb3JtX19yb3cnIH0sXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgJ2J1dHRvbicsXG4gICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnYnV0dG9uIGJ1dHRvbi0tZGVlbXBoYXNpemUnLFxuICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMucHJvcHMuZGlzbWlzc01vZGFsIH0sXG4gICAgICAgICAgICAgICdDYW5jZWwnXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICdidXR0b24nLFxuICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2J1dHRvbiBidXR0b24tLXByaW1hcnknLFxuICAgICAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMuaGFuZGxlQWRkVG9ycmVudHMgfSxcbiAgICAgICAgICAgICAgJ0FkZCBUb3JyZW50J1xuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVBZGRUb3JyZW50cycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZUFkZFRvcnJlbnRzKCkge1xuICAgICAgdmFyIHRvcnJlbnRVcmxzID0gX2xvZGFzaDJbJ2RlZmF1bHQnXS5wbHVjayh0aGlzLnN0YXRlLnVybFRleHRib3hlcywgJ3ZhbHVlJyk7XG4gICAgICBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMlsnZGVmYXVsdCddLmFkZFRvcnJlbnRzKHRvcnJlbnRVcmxzLCB0aGlzLnN0YXRlLmRlc3RpbmF0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVEZXN0aW5hdGlvbkNoYW5nZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZURlc3RpbmF0aW9uQ2hhbmdlKGV2ZW50KSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZGVzdGluYXRpb246IGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlTWVudVdyYXBwZXJDbGljaycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZU1lbnVXcmFwcGVyQ2xpY2soZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZVVybFJlbW92ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVVybFJlbW92ZShpbmRleCkge1xuICAgICAgdmFyIHVybFRleHRib3hlcyA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMuc3RhdGUudXJsVGV4dGJveGVzKTtcbiAgICAgIHVybFRleHRib3hlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHVybFRleHRib3hlczogdXJsVGV4dGJveGVzXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVVcmxBZGQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVVcmxBZGQoaW5kZXgpIHtcbiAgICAgIHZhciB1cmxUZXh0Ym94ZXMgPSBPYmplY3QuYXNzaWduKFtdLCB0aGlzLnN0YXRlLnVybFRleHRib3hlcyk7XG4gICAgICB1cmxUZXh0Ym94ZXMuc3BsaWNlKGluZGV4ICsgMSwgMCwgeyB2YWx1ZTogbnVsbCB9KTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyB1cmxUZXh0Ym94ZXM6IHVybFRleHRib3hlcyB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVVcmxDaGFuZ2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVVcmxDaGFuZ2UoaW5kZXgsIHZhbHVlKSB7XG4gICAgICB2YXIgdXJsVGV4dGJveGVzID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5zdGF0ZS51cmxUZXh0Ym94ZXMpO1xuICAgICAgdXJsVGV4dGJveGVzW2luZGV4XS52YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IHVybFRleHRib3hlczogdXJsVGV4dGJveGVzIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3JlbmRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENvbnRlbnQoKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQWRkVG9ycmVudHM7XG59KShfcmVhY3QyWydkZWZhdWx0J10uQ29tcG9uZW50KTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gQWRkVG9ycmVudHM7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vY2xpZW50L3NvdXJjZS9zY3JpcHRzL2NvbXBvbmVudHMvbW9kYWxzL0FkZFRvcnJlbnRzLmpzXG4gKiogbW9kdWxlIGlkID0gMTY4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iXSwic291cmNlUm9vdCI6IiJ9"); /***/ }, /* 169 */ @@ -1100,7 +1100,7 @@ /* 176 */ /***/ function(module, exports, __webpack_require__) { - eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _axios = __webpack_require__(177);\n\nvar _axios2 = _interopRequireDefault(_axios);\n\nvar _dispatcherAppDispatcher = __webpack_require__(191);\n\nvar _dispatcherAppDispatcher2 = _interopRequireDefault(_dispatcherAppDispatcher);\n\nvar _constantsActionTypes = __webpack_require__(195);\n\nvar _constantsActionTypes2 = _interopRequireDefault(_constantsActionTypes);\n\nvar TorrentActions = {\n addTorrents: function addTorrents(urls, destination) {\n return _axios2['default'].post('/client/add', {\n urls: urls,\n destination: destination\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (response) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_ADD_TORRENT_SUCCESS,\n data: {\n response: response\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_ADD_TORRENT_ERROR,\n data: {\n error: error\n }\n });\n });\n },\n\n fetchTorrents: function fetchTorrents() {\n return _axios2['default'].get('/client/list').then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (torrents) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENTS_SUCCESS,\n data: {\n torrents: torrents\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENTS_ERROR,\n data: {\n error: error\n }\n });\n });\n },\n\n fetchTorrentDetails: function fetchTorrentDetails(hash) {\n return _axios2['default'].post('/client/torrent-details', {\n hash: hash\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (torrentDetails) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENT_DETAILS_SUCCESS,\n data: {\n hash: hash,\n torrentDetails: torrentDetails\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENT_DETAILS_ERROR,\n data: {\n hash: hash\n }\n });\n });\n },\n\n startTorrents: function startTorrents(hashes) {\n return _axios2['default'].post('/client/start', {\n hashes: hashes\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (response) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_START_TORRENT_SUCCESS,\n data: {\n response: response\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_START_TORRENT_ERROR,\n data: {\n error: error\n }\n });\n });\n },\n\n stopTorrents: function stopTorrents(hashes) {\n return _axios2['default'].post('/client/stop', {\n hashes: hashes\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (response) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_STOP_TORRENT_SUCCESS,\n data: {\n response: response\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_STOP_TORRENT_ERROR,\n data: {\n error: error\n }\n });\n });\n }\n};\n\nexports['default'] = TorrentActions;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvYWN0aW9ucy9Ub3JyZW50QWN0aW9ucy5qcz8yMTA0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELHNDQUFzQyx1Q0FBdUMsa0JBQWtCOztBQUUvRjs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLHlFQUF5RTs7QUFFekU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0EseUVBQXlFOztBQUV6RTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCx5RUFBeUU7O0FBRXpFO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wseUVBQXlFOztBQUV6RTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCx5RUFBeUU7O0FBRXpFO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIxNzYuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbnZhciBfYXhpb3MgPSByZXF1aXJlKCdheGlvcycpO1xuXG52YXIgX2F4aW9zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2F4aW9zKTtcblxudmFyIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlciA9IHJlcXVpcmUoJy4uL2Rpc3BhdGNoZXIvQXBwRGlzcGF0Y2hlcicpO1xuXG52YXIgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyKTtcblxudmFyIF9jb25zdGFudHNBY3Rpb25UeXBlcyA9IHJlcXVpcmUoJy4uL2NvbnN0YW50cy9BY3Rpb25UeXBlcycpO1xuXG52YXIgX2NvbnN0YW50c0FjdGlvblR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbnN0YW50c0FjdGlvblR5cGVzKTtcblxudmFyIFRvcnJlbnRBY3Rpb25zID0ge1xuICBhZGRUb3JyZW50czogZnVuY3Rpb24gYWRkVG9ycmVudHModXJscywgZGVzdGluYXRpb24pIHtcbiAgICByZXR1cm4gX2F4aW9zMlsnZGVmYXVsdCddLnBvc3QoJy9jbGllbnQvYWRkJywge1xuICAgICAgdXJsczogdXJscyxcbiAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvblxuICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGpzb24gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1swXTtcblxuICAgICAgcmV0dXJuIGpzb24uZGF0YTtcbiAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9BRERfVE9SUkVOVF9TVUNDRVNTLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgcmVzcG9uc2U6IHJlc3BvbnNlXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9BRERfVE9SUkVOVF9FUlJPUixcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGVycm9yOiBlcnJvclxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBmZXRjaFRvcnJlbnRzOiBmdW5jdGlvbiBmZXRjaFRvcnJlbnRzKCkge1xuICAgIHJldHVybiBfYXhpb3MyWydkZWZhdWx0J10uZ2V0KCcvY2xpZW50L2xpc3QnKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBqc29uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHJldHVybiBqc29uLmRhdGE7XG4gICAgfSkudGhlbihmdW5jdGlvbiAodG9ycmVudHMpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVE9SUkVOVFNfU1VDQ0VTUyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHRvcnJlbnRzOiB0b3JyZW50c1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVE9SUkVOVFNfRVJST1IsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBlcnJvcjogZXJyb3JcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZmV0Y2hUb3JyZW50RGV0YWlsczogZnVuY3Rpb24gZmV0Y2hUb3JyZW50RGV0YWlscyhoYXNoKSB7XG4gICAgcmV0dXJuIF9heGlvczJbJ2RlZmF1bHQnXS5wb3N0KCcvY2xpZW50L3RvcnJlbnQtZGV0YWlscycsIHtcbiAgICAgIGhhc2g6IGhhc2hcbiAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBqc29uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHJldHVybiBqc29uLmRhdGE7XG4gICAgfSkudGhlbihmdW5jdGlvbiAodG9ycmVudERldGFpbHMpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVE9SUkVOVF9ERVRBSUxTX1NVQ0NFU1MsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBoYXNoOiBoYXNoLFxuICAgICAgICAgIHRvcnJlbnREZXRhaWxzOiB0b3JyZW50RGV0YWlsc1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVE9SUkVOVF9ERVRBSUxTX0VSUk9SLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaGFzaDogaGFzaFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBzdGFydFRvcnJlbnRzOiBmdW5jdGlvbiBzdGFydFRvcnJlbnRzKGhhc2hlcykge1xuICAgIHJldHVybiBfYXhpb3MyWydkZWZhdWx0J10ucG9zdCgnL2NsaWVudC9zdGFydCcsIHtcbiAgICAgIGhhc2hlczogaGFzaGVzXG4gICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIganNvbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICByZXR1cm4ganNvbi5kYXRhO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1NUQVJUX1RPUlJFTlRfU1VDQ0VTUyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfU1RBUlRfVE9SUkVOVF9FUlJPUixcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGVycm9yOiBlcnJvclxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBzdG9wVG9ycmVudHM6IGZ1bmN0aW9uIHN0b3BUb3JyZW50cyhoYXNoZXMpIHtcbiAgICByZXR1cm4gX2F4aW9zMlsnZGVmYXVsdCddLnBvc3QoJy9jbGllbnQvc3RvcCcsIHtcbiAgICAgIGhhc2hlczogaGFzaGVzXG4gICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIganNvbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICByZXR1cm4ganNvbi5kYXRhO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1NUT1BfVE9SUkVOVF9TVUNDRVNTLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgcmVzcG9uc2U6IHJlc3BvbnNlXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9TVE9QX1RPUlJFTlRfRVJST1IsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBlcnJvcjogZXJyb3JcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IFRvcnJlbnRBY3Rpb25zO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9hY3Rpb25zL1RvcnJlbnRBY3Rpb25zLmpzXG4gKiogbW9kdWxlIGlkID0gMTc2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iXSwic291cmNlUm9vdCI6IiJ9"); + eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _axios = __webpack_require__(177);\n\nvar _axios2 = _interopRequireDefault(_axios);\n\nvar _dispatcherAppDispatcher = __webpack_require__(191);\n\nvar _dispatcherAppDispatcher2 = _interopRequireDefault(_dispatcherAppDispatcher);\n\nvar _constantsActionTypes = __webpack_require__(195);\n\nvar _constantsActionTypes2 = _interopRequireDefault(_constantsActionTypes);\n\nvar TorrentActions = {\n addTorrents: function addTorrents(urls, destination) {\n _axios2['default'].post('/ui/torrent-location', {\n destination: destination\n })['catch'](function (error) {\n console.log(error);\n });\n return _axios2['default'].post('/client/add', {\n urls: urls,\n destination: destination\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (response) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_ADD_TORRENT_SUCCESS,\n data: {\n response: response\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_ADD_TORRENT_ERROR,\n data: {\n error: error\n }\n });\n });\n },\n\n fetchLatestTorrentLocation: function fetchLatestTorrentLocation() {\n return _axios2['default'].get('/ui/torrent-location').then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (data) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].UI_LATEST_TORRENT_LOCATION_REQUEST_SUCCESS,\n data: data\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].UI_LATEST_TORRENT_LOCATION_REQUEST_ERROR,\n error: error\n });\n });\n },\n\n fetchTorrents: function fetchTorrents() {\n return _axios2['default'].get('/client/list').then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (torrents) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENTS_SUCCESS,\n data: {\n torrents: torrents\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENTS_ERROR,\n data: {\n error: error\n }\n });\n });\n },\n\n fetchTorrentDetails: function fetchTorrentDetails(hash) {\n return _axios2['default'].post('/client/torrent-details', {\n hash: hash\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (torrentDetails) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENT_DETAILS_SUCCESS,\n data: {\n hash: hash,\n torrentDetails: torrentDetails\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENT_DETAILS_ERROR,\n data: {\n hash: hash\n }\n });\n });\n },\n\n startTorrents: function startTorrents(hashes) {\n return _axios2['default'].post('/client/start', {\n hashes: hashes\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (response) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_START_TORRENT_SUCCESS,\n data: {\n response: response\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_START_TORRENT_ERROR,\n data: {\n error: error\n }\n });\n });\n },\n\n stopTorrents: function stopTorrents(hashes) {\n return _axios2['default'].post('/client/stop', {\n hashes: hashes\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (response) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_STOP_TORRENT_SUCCESS,\n data: {\n response: response\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_STOP_TORRENT_ERROR,\n data: {\n error: error\n }\n });\n });\n }\n};\n\nexports['default'] = TorrentActions;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvYWN0aW9ucy9Ub3JyZW50QWN0aW9ucy5qcz8yMTA0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELHNDQUFzQyx1Q0FBdUMsa0JBQWtCOztBQUUvRjs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wseUVBQXlFOztBQUV6RTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQSx5RUFBeUU7O0FBRXpFO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQSx5RUFBeUU7O0FBRXpFO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLHlFQUF5RTs7QUFFekU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCx5RUFBeUU7O0FBRXpFO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLHlFQUF5RTs7QUFFekU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6IjE3Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF9heGlvcyA9IHJlcXVpcmUoJ2F4aW9zJyk7XG5cbnZhciBfYXhpb3MyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXhpb3MpO1xuXG52YXIgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyID0gcmVxdWlyZSgnLi4vZGlzcGF0Y2hlci9BcHBEaXNwYXRjaGVyJyk7XG5cbnZhciBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIpO1xuXG52YXIgX2NvbnN0YW50c0FjdGlvblR5cGVzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL0FjdGlvblR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzQWN0aW9uVHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzQWN0aW9uVHlwZXMpO1xuXG52YXIgVG9ycmVudEFjdGlvbnMgPSB7XG4gIGFkZFRvcnJlbnRzOiBmdW5jdGlvbiBhZGRUb3JyZW50cyh1cmxzLCBkZXN0aW5hdGlvbikge1xuICAgIF9heGlvczJbJ2RlZmF1bHQnXS5wb3N0KCcvdWkvdG9ycmVudC1sb2NhdGlvbicsIHtcbiAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvblxuICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgIH0pO1xuICAgIHJldHVybiBfYXhpb3MyWydkZWZhdWx0J10ucG9zdCgnL2NsaWVudC9hZGQnLCB7XG4gICAgICB1cmxzOiB1cmxzLFxuICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uXG4gICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIganNvbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICByZXR1cm4ganNvbi5kYXRhO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX0FERF9UT1JSRU5UX1NVQ0NFU1MsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICByZXNwb25zZTogcmVzcG9uc2VcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSlbJ2NhdGNoJ10oZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX0FERF9UT1JSRU5UX0VSUk9SLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZXJyb3I6IGVycm9yXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LFxuXG4gIGZldGNoTGF0ZXN0VG9ycmVudExvY2F0aW9uOiBmdW5jdGlvbiBmZXRjaExhdGVzdFRvcnJlbnRMb2NhdGlvbigpIHtcbiAgICByZXR1cm4gX2F4aW9zMlsnZGVmYXVsdCddLmdldCgnL3VpL3RvcnJlbnQtbG9jYXRpb24nKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBqc29uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHJldHVybiBqc29uLmRhdGE7XG4gICAgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX0xBVEVTVF9UT1JSRU5UX0xPQ0FUSU9OX1JFUVVFU1RfU1VDQ0VTUyxcbiAgICAgICAgZGF0YTogZGF0YVxuICAgICAgfSk7XG4gICAgfSlbJ2NhdGNoJ10oZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfTEFURVNUX1RPUlJFTlRfTE9DQVRJT05fUkVRVUVTVF9FUlJPUixcbiAgICAgICAgZXJyb3I6IGVycm9yXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBmZXRjaFRvcnJlbnRzOiBmdW5jdGlvbiBmZXRjaFRvcnJlbnRzKCkge1xuICAgIHJldHVybiBfYXhpb3MyWydkZWZhdWx0J10uZ2V0KCcvY2xpZW50L2xpc3QnKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBqc29uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHJldHVybiBqc29uLmRhdGE7XG4gICAgfSkudGhlbihmdW5jdGlvbiAodG9ycmVudHMpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVE9SUkVOVFNfU1VDQ0VTUyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHRvcnJlbnRzOiB0b3JyZW50c1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVE9SUkVOVFNfRVJST1IsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBlcnJvcjogZXJyb3JcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZmV0Y2hUb3JyZW50RGV0YWlsczogZnVuY3Rpb24gZmV0Y2hUb3JyZW50RGV0YWlscyhoYXNoKSB7XG4gICAgcmV0dXJuIF9heGlvczJbJ2RlZmF1bHQnXS5wb3N0KCcvY2xpZW50L3RvcnJlbnQtZGV0YWlscycsIHtcbiAgICAgIGhhc2g6IGhhc2hcbiAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBqc29uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHJldHVybiBqc29uLmRhdGE7XG4gICAgfSkudGhlbihmdW5jdGlvbiAodG9ycmVudERldGFpbHMpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVE9SUkVOVF9ERVRBSUxTX1NVQ0NFU1MsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBoYXNoOiBoYXNoLFxuICAgICAgICAgIHRvcnJlbnREZXRhaWxzOiB0b3JyZW50RGV0YWlsc1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVE9SUkVOVF9ERVRBSUxTX0VSUk9SLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaGFzaDogaGFzaFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBzdGFydFRvcnJlbnRzOiBmdW5jdGlvbiBzdGFydFRvcnJlbnRzKGhhc2hlcykge1xuICAgIHJldHVybiBfYXhpb3MyWydkZWZhdWx0J10ucG9zdCgnL2NsaWVudC9zdGFydCcsIHtcbiAgICAgIGhhc2hlczogaGFzaGVzXG4gICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIganNvbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICByZXR1cm4ganNvbi5kYXRhO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1NUQVJUX1RPUlJFTlRfU1VDQ0VTUyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfU1RBUlRfVE9SUkVOVF9FUlJPUixcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGVycm9yOiBlcnJvclxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBzdG9wVG9ycmVudHM6IGZ1bmN0aW9uIHN0b3BUb3JyZW50cyhoYXNoZXMpIHtcbiAgICByZXR1cm4gX2F4aW9zMlsnZGVmYXVsdCddLnBvc3QoJy9jbGllbnQvc3RvcCcsIHtcbiAgICAgIGhhc2hlczogaGFzaGVzXG4gICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIganNvbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICByZXR1cm4ganNvbi5kYXRhO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1NUT1BfVE9SUkVOVF9TVUNDRVNTLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgcmVzcG9uc2U6IHJlc3BvbnNlXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9TVE9QX1RPUlJFTlRfRVJST1IsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBlcnJvcjogZXJyb3JcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IFRvcnJlbnRBY3Rpb25zO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9hY3Rpb25zL1RvcnJlbnRBY3Rpb25zLmpzXG4gKiogbW9kdWxlIGlkID0gMTc2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iXSwic291cmNlUm9vdCI6IiJ9"); /***/ }, /* 177 */ @@ -1214,25 +1214,25 @@ /* 195 */ /***/ function(module, exports) { - eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar ActionTypes = {\n CLIENT_ADD_TORRENT_ERROR: 'CLIENT_ADD_TORRENT_ERROR',\n CLIENT_ADD_TORRENT_SUCCESS: 'CLIENT_ADD_TORRENT_SUCCESS',\n CLIENT_FETCH_TORRENT_DETAILS_ERROR: 'CLIENT_FETCH_TORRENT_DETAILS_ERROR',\n CLIENT_FETCH_TORRENT_DETAILS_SUCCESS: 'CLIENT_FETCH_TORRENT_DETAILS_SUCCESS',\n CLIENT_FETCH_TORRENTS_ERROR: 'CLIENT_FETCH_TORRENTS_ERROR',\n CLIENT_FETCH_TORRENTS_SUCCESS: 'CLIENT_FETCH_TORRENTS_SUCCESS',\n CLIENT_FETCH_TRANSFER_DATA_ERROR: 'CLIENT_FETCH_TRANSFER_DATA_ERROR',\n CLIENT_FETCH_TRANSFER_DATA_SUCCESS: 'CLIENT_FETCH_TRANSFER_DATA_SUCCESS',\n CLIENT_FETCH_TRANSFER_HISTORY_ERROR: 'CLIENT_FETCH_TRANSFER_HISTORY_ERROR',\n CLIENT_FETCH_TRANSFER_HISTORY_SUCCESS: 'CLIENT_FETCH_TRANSFER_HISTORY_SUCCESS',\n CLIENT_SET_THROTTLE_ERROR: 'CLIENT_SET_THROTTLE_ERROR',\n CLIENT_SET_THROTTLE_SUCCESS: 'CLIENT_SET_THROTTLE_SUCCESS',\n CLIENT_START_TORRENT_ERROR: 'CLIENT_START_TORRENT_ERROR',\n CLIENT_START_TORRENT_SUCCESS: 'CLIENT_START_TORRENT_SUCCESS',\n CLIENT_STOP_TORRENT_ERROR: 'CLIENT_STOP_TORRENT_ERROR',\n CLIENT_STOP_TORRENT_SUCCESS: 'CLIENT_STOP_TORRENT_SUCCESS',\n UI_CLICK_TORRENT: 'UI_CLICK_TORRENT',\n UI_CLICK_TORRENT_DETAILS: 'UI_CLICK_TORRENT_DETAILS',\n UI_DISPLAY_MODAL: 'UI_DISPLAY_MODAL',\n UI_SET_TORRENT_SEARCH_FILTER: 'UI_SET_TORRENT_SEARCH_FILTER',\n UI_SET_TORRENT_SORT: 'UI_SET_TORRENT_SORT',\n UI_SET_TORRENT_STATUS_FILTER: 'UI_SET_TORRENT_STATUS_FILTER'\n};\n\nexports['default'] = ActionTypes;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29uc3RhbnRzL0FjdGlvblR5cGVzLmpzP2M2OTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIxOTUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xudmFyIEFjdGlvblR5cGVzID0ge1xuICBDTElFTlRfQUREX1RPUlJFTlRfRVJST1I6ICdDTElFTlRfQUREX1RPUlJFTlRfRVJST1InLFxuICBDTElFTlRfQUREX1RPUlJFTlRfU1VDQ0VTUzogJ0NMSUVOVF9BRERfVE9SUkVOVF9TVUNDRVNTJyxcbiAgQ0xJRU5UX0ZFVENIX1RPUlJFTlRfREVUQUlMU19FUlJPUjogJ0NMSUVOVF9GRVRDSF9UT1JSRU5UX0RFVEFJTFNfRVJST1InLFxuICBDTElFTlRfRkVUQ0hfVE9SUkVOVF9ERVRBSUxTX1NVQ0NFU1M6ICdDTElFTlRfRkVUQ0hfVE9SUkVOVF9ERVRBSUxTX1NVQ0NFU1MnLFxuICBDTElFTlRfRkVUQ0hfVE9SUkVOVFNfRVJST1I6ICdDTElFTlRfRkVUQ0hfVE9SUkVOVFNfRVJST1InLFxuICBDTElFTlRfRkVUQ0hfVE9SUkVOVFNfU1VDQ0VTUzogJ0NMSUVOVF9GRVRDSF9UT1JSRU5UU19TVUNDRVNTJyxcbiAgQ0xJRU5UX0ZFVENIX1RSQU5TRkVSX0RBVEFfRVJST1I6ICdDTElFTlRfRkVUQ0hfVFJBTlNGRVJfREFUQV9FUlJPUicsXG4gIENMSUVOVF9GRVRDSF9UUkFOU0ZFUl9EQVRBX1NVQ0NFU1M6ICdDTElFTlRfRkVUQ0hfVFJBTlNGRVJfREFUQV9TVUNDRVNTJyxcbiAgQ0xJRU5UX0ZFVENIX1RSQU5TRkVSX0hJU1RPUllfRVJST1I6ICdDTElFTlRfRkVUQ0hfVFJBTlNGRVJfSElTVE9SWV9FUlJPUicsXG4gIENMSUVOVF9GRVRDSF9UUkFOU0ZFUl9ISVNUT1JZX1NVQ0NFU1M6ICdDTElFTlRfRkVUQ0hfVFJBTlNGRVJfSElTVE9SWV9TVUNDRVNTJyxcbiAgQ0xJRU5UX1NFVF9USFJPVFRMRV9FUlJPUjogJ0NMSUVOVF9TRVRfVEhST1RUTEVfRVJST1InLFxuICBDTElFTlRfU0VUX1RIUk9UVExFX1NVQ0NFU1M6ICdDTElFTlRfU0VUX1RIUk9UVExFX1NVQ0NFU1MnLFxuICBDTElFTlRfU1RBUlRfVE9SUkVOVF9FUlJPUjogJ0NMSUVOVF9TVEFSVF9UT1JSRU5UX0VSUk9SJyxcbiAgQ0xJRU5UX1NUQVJUX1RPUlJFTlRfU1VDQ0VTUzogJ0NMSUVOVF9TVEFSVF9UT1JSRU5UX1NVQ0NFU1MnLFxuICBDTElFTlRfU1RPUF9UT1JSRU5UX0VSUk9SOiAnQ0xJRU5UX1NUT1BfVE9SUkVOVF9FUlJPUicsXG4gIENMSUVOVF9TVE9QX1RPUlJFTlRfU1VDQ0VTUzogJ0NMSUVOVF9TVE9QX1RPUlJFTlRfU1VDQ0VTUycsXG4gIFVJX0NMSUNLX1RPUlJFTlQ6ICdVSV9DTElDS19UT1JSRU5UJyxcbiAgVUlfQ0xJQ0tfVE9SUkVOVF9ERVRBSUxTOiAnVUlfQ0xJQ0tfVE9SUkVOVF9ERVRBSUxTJyxcbiAgVUlfRElTUExBWV9NT0RBTDogJ1VJX0RJU1BMQVlfTU9EQUwnLFxuICBVSV9TRVRfVE9SUkVOVF9TRUFSQ0hfRklMVEVSOiAnVUlfU0VUX1RPUlJFTlRfU0VBUkNIX0ZJTFRFUicsXG4gIFVJX1NFVF9UT1JSRU5UX1NPUlQ6ICdVSV9TRVRfVE9SUkVOVF9TT1JUJyxcbiAgVUlfU0VUX1RPUlJFTlRfU1RBVFVTX0ZJTFRFUjogJ1VJX1NFVF9UT1JSRU5UX1NUQVRVU19GSUxURVInXG59O1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBBY3Rpb25UeXBlcztcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29uc3RhbnRzL0FjdGlvblR5cGVzLmpzXG4gKiogbW9kdWxlIGlkID0gMTk1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iXSwic291cmNlUm9vdCI6IiJ9"); + eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar ActionTypes = {\n CLIENT_ADD_TORRENT_ERROR: 'CLIENT_ADD_TORRENT_ERROR',\n CLIENT_ADD_TORRENT_SUCCESS: 'CLIENT_ADD_TORRENT_SUCCESS',\n CLIENT_FETCH_TORRENT_DETAILS_ERROR: 'CLIENT_FETCH_TORRENT_DETAILS_ERROR',\n CLIENT_FETCH_TORRENT_DETAILS_SUCCESS: 'CLIENT_FETCH_TORRENT_DETAILS_SUCCESS',\n CLIENT_FETCH_TORRENTS_ERROR: 'CLIENT_FETCH_TORRENTS_ERROR',\n CLIENT_FETCH_TORRENTS_SUCCESS: 'CLIENT_FETCH_TORRENTS_SUCCESS',\n CLIENT_FETCH_TRANSFER_DATA_ERROR: 'CLIENT_FETCH_TRANSFER_DATA_ERROR',\n CLIENT_FETCH_TRANSFER_DATA_SUCCESS: 'CLIENT_FETCH_TRANSFER_DATA_SUCCESS',\n CLIENT_FETCH_TRANSFER_HISTORY_ERROR: 'CLIENT_FETCH_TRANSFER_HISTORY_ERROR',\n CLIENT_FETCH_TRANSFER_HISTORY_SUCCESS: 'CLIENT_FETCH_TRANSFER_HISTORY_SUCCESS',\n CLIENT_SET_THROTTLE_ERROR: 'CLIENT_SET_THROTTLE_ERROR',\n CLIENT_SET_THROTTLE_SUCCESS: 'CLIENT_SET_THROTTLE_SUCCESS',\n CLIENT_START_TORRENT_ERROR: 'CLIENT_START_TORRENT_ERROR',\n CLIENT_START_TORRENT_SUCCESS: 'CLIENT_START_TORRENT_SUCCESS',\n CLIENT_STOP_TORRENT_ERROR: 'CLIENT_STOP_TORRENT_ERROR',\n CLIENT_STOP_TORRENT_SUCCESS: 'CLIENT_STOP_TORRENT_SUCCESS',\n UI_CLICK_TORRENT: 'UI_CLICK_TORRENT',\n UI_CLICK_TORRENT_DETAILS: 'UI_CLICK_TORRENT_DETAILS',\n UI_DISPLAY_MODAL: 'UI_DISPLAY_MODAL',\n UI_LATEST_TORRENT_LOCATION_REQUEST_ERROR: 'UI_LATEST_TORRENT_LOCATION_REQUEST_ERROR',\n UI_LATEST_TORRENT_LOCATION_REQUEST_SUCCESS: 'UI_LATEST_TORRENT_LOCATION_REQUEST_SUCCESS',\n UI_SET_TORRENT_SEARCH_FILTER: 'UI_SET_TORRENT_SEARCH_FILTER',\n UI_SET_TORRENT_SORT: 'UI_SET_TORRENT_SORT',\n UI_SET_TORRENT_STATUS_FILTER: 'UI_SET_TORRENT_STATUS_FILTER',\n UI_SORT_PROPS_REQUEST_SUCCESS: 'UI_SORT_PROPS_REQUEST_SUCCESS',\n UI_SORT_PROPS_REQUEST_ERROR: 'UI_SORT_PROPS_REQUEST_ERROR'\n};\n\nexports['default'] = ActionTypes;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29uc3RhbnRzL0FjdGlvblR5cGVzLmpzP2M2OTgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6IjE5NS5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG52YXIgQWN0aW9uVHlwZXMgPSB7XG4gIENMSUVOVF9BRERfVE9SUkVOVF9FUlJPUjogJ0NMSUVOVF9BRERfVE9SUkVOVF9FUlJPUicsXG4gIENMSUVOVF9BRERfVE9SUkVOVF9TVUNDRVNTOiAnQ0xJRU5UX0FERF9UT1JSRU5UX1NVQ0NFU1MnLFxuICBDTElFTlRfRkVUQ0hfVE9SUkVOVF9ERVRBSUxTX0VSUk9SOiAnQ0xJRU5UX0ZFVENIX1RPUlJFTlRfREVUQUlMU19FUlJPUicsXG4gIENMSUVOVF9GRVRDSF9UT1JSRU5UX0RFVEFJTFNfU1VDQ0VTUzogJ0NMSUVOVF9GRVRDSF9UT1JSRU5UX0RFVEFJTFNfU1VDQ0VTUycsXG4gIENMSUVOVF9GRVRDSF9UT1JSRU5UU19FUlJPUjogJ0NMSUVOVF9GRVRDSF9UT1JSRU5UU19FUlJPUicsXG4gIENMSUVOVF9GRVRDSF9UT1JSRU5UU19TVUNDRVNTOiAnQ0xJRU5UX0ZFVENIX1RPUlJFTlRTX1NVQ0NFU1MnLFxuICBDTElFTlRfRkVUQ0hfVFJBTlNGRVJfREFUQV9FUlJPUjogJ0NMSUVOVF9GRVRDSF9UUkFOU0ZFUl9EQVRBX0VSUk9SJyxcbiAgQ0xJRU5UX0ZFVENIX1RSQU5TRkVSX0RBVEFfU1VDQ0VTUzogJ0NMSUVOVF9GRVRDSF9UUkFOU0ZFUl9EQVRBX1NVQ0NFU1MnLFxuICBDTElFTlRfRkVUQ0hfVFJBTlNGRVJfSElTVE9SWV9FUlJPUjogJ0NMSUVOVF9GRVRDSF9UUkFOU0ZFUl9ISVNUT1JZX0VSUk9SJyxcbiAgQ0xJRU5UX0ZFVENIX1RSQU5TRkVSX0hJU1RPUllfU1VDQ0VTUzogJ0NMSUVOVF9GRVRDSF9UUkFOU0ZFUl9ISVNUT1JZX1NVQ0NFU1MnLFxuICBDTElFTlRfU0VUX1RIUk9UVExFX0VSUk9SOiAnQ0xJRU5UX1NFVF9USFJPVFRMRV9FUlJPUicsXG4gIENMSUVOVF9TRVRfVEhST1RUTEVfU1VDQ0VTUzogJ0NMSUVOVF9TRVRfVEhST1RUTEVfU1VDQ0VTUycsXG4gIENMSUVOVF9TVEFSVF9UT1JSRU5UX0VSUk9SOiAnQ0xJRU5UX1NUQVJUX1RPUlJFTlRfRVJST1InLFxuICBDTElFTlRfU1RBUlRfVE9SUkVOVF9TVUNDRVNTOiAnQ0xJRU5UX1NUQVJUX1RPUlJFTlRfU1VDQ0VTUycsXG4gIENMSUVOVF9TVE9QX1RPUlJFTlRfRVJST1I6ICdDTElFTlRfU1RPUF9UT1JSRU5UX0VSUk9SJyxcbiAgQ0xJRU5UX1NUT1BfVE9SUkVOVF9TVUNDRVNTOiAnQ0xJRU5UX1NUT1BfVE9SUkVOVF9TVUNDRVNTJyxcbiAgVUlfQ0xJQ0tfVE9SUkVOVDogJ1VJX0NMSUNLX1RPUlJFTlQnLFxuICBVSV9DTElDS19UT1JSRU5UX0RFVEFJTFM6ICdVSV9DTElDS19UT1JSRU5UX0RFVEFJTFMnLFxuICBVSV9ESVNQTEFZX01PREFMOiAnVUlfRElTUExBWV9NT0RBTCcsXG4gIFVJX0xBVEVTVF9UT1JSRU5UX0xPQ0FUSU9OX1JFUVVFU1RfRVJST1I6ICdVSV9MQVRFU1RfVE9SUkVOVF9MT0NBVElPTl9SRVFVRVNUX0VSUk9SJyxcbiAgVUlfTEFURVNUX1RPUlJFTlRfTE9DQVRJT05fUkVRVUVTVF9TVUNDRVNTOiAnVUlfTEFURVNUX1RPUlJFTlRfTE9DQVRJT05fUkVRVUVTVF9TVUNDRVNTJyxcbiAgVUlfU0VUX1RPUlJFTlRfU0VBUkNIX0ZJTFRFUjogJ1VJX1NFVF9UT1JSRU5UX1NFQVJDSF9GSUxURVInLFxuICBVSV9TRVRfVE9SUkVOVF9TT1JUOiAnVUlfU0VUX1RPUlJFTlRfU09SVCcsXG4gIFVJX1NFVF9UT1JSRU5UX1NUQVRVU19GSUxURVI6ICdVSV9TRVRfVE9SUkVOVF9TVEFUVVNfRklMVEVSJyxcbiAgVUlfU09SVF9QUk9QU19SRVFVRVNUX1NVQ0NFU1M6ICdVSV9TT1JUX1BST1BTX1JFUVVFU1RfU1VDQ0VTUycsXG4gIFVJX1NPUlRfUFJPUFNfUkVRVUVTVF9FUlJPUjogJ1VJX1NPUlRfUFJPUFNfUkVRVUVTVF9FUlJPUidcbn07XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IEFjdGlvblR5cGVzO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9jb25zdGFudHMvQWN0aW9uVHlwZXMuanNcbiAqKiBtb2R1bGUgaWQgPSAxOTVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0="); /***/ }, /* 196 */ /***/ function(module, exports) { - eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar EventTypes = {\n CLIENT_SET_THROTTLE_ERROR: 'CLIENT_SET_THROTTLE_ERROR',\n CLIENT_SET_THROTTLE_SUCCESS: 'CLIENT_SET_THROTTLE_SUCCESS',\n CLIENT_TORRENTS_REQUEST_ERROR: 'CLIENT_TORRENTS_REQUEST_ERROR',\n CLIENT_TORRENTS_REQUEST_SUCCESS: 'CLIENT_TORRENTS_REQUEST_SUCCESS',\n CLIENT_TORRENT_DETAILS_CHANGE: 'CLIENT_TORRENT_DETAILS_CHANGE',\n CLIENT_TRANSFER_DATA_REQUEST_SUCCESS: 'CLIENT_TRANSFER_DATA_REQUEST_SUCCESS',\n CLIENT_TRANSFER_DATA_REQUEST_ERROR: 'CLIENT_TRANSFER_DATA_REQUEST_ERROR',\n CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS: 'CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS',\n UI_MODAL_CHANGE: 'UI_MODAL_CHANGE',\n UI_TORRENT_DETAILS_HASH_CHANGE: 'UI_TORRENT_DETAILS_HASH_CHANGE',\n UI_TORRENT_DETAILS_OPEN_CHANGE: 'UI_TORRENT_DETAILS_OPEN_CHANGE',\n UI_TORRENT_SELECTION_CHANGE: 'UI_TORRENT_SELECTION_CHANGE',\n UI_TORRENTS_FILTER_STATUS_CHANGE: 'UI_FILTER_STATUS_CHANGE',\n UI_TORRENTS_FILTER_SEARCH_CHANGE: 'UI_FILTER_SEARCH_CHANGE',\n UI_TORRENTS_SORT_CHANGE: 'UI_TORRENTS_SORT_CHANGE'\n};\n\nexports['default'] = EventTypes;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29uc3RhbnRzL0V2ZW50VHlwZXMuanM/ZTRiMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIxOTYuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xudmFyIEV2ZW50VHlwZXMgPSB7XG4gIENMSUVOVF9TRVRfVEhST1RUTEVfRVJST1I6ICdDTElFTlRfU0VUX1RIUk9UVExFX0VSUk9SJyxcbiAgQ0xJRU5UX1NFVF9USFJPVFRMRV9TVUNDRVNTOiAnQ0xJRU5UX1NFVF9USFJPVFRMRV9TVUNDRVNTJyxcbiAgQ0xJRU5UX1RPUlJFTlRTX1JFUVVFU1RfRVJST1I6ICdDTElFTlRfVE9SUkVOVFNfUkVRVUVTVF9FUlJPUicsXG4gIENMSUVOVF9UT1JSRU5UU19SRVFVRVNUX1NVQ0NFU1M6ICdDTElFTlRfVE9SUkVOVFNfUkVRVUVTVF9TVUNDRVNTJyxcbiAgQ0xJRU5UX1RPUlJFTlRfREVUQUlMU19DSEFOR0U6ICdDTElFTlRfVE9SUkVOVF9ERVRBSUxTX0NIQU5HRScsXG4gIENMSUVOVF9UUkFOU0ZFUl9EQVRBX1JFUVVFU1RfU1VDQ0VTUzogJ0NMSUVOVF9UUkFOU0ZFUl9EQVRBX1JFUVVFU1RfU1VDQ0VTUycsXG4gIENMSUVOVF9UUkFOU0ZFUl9EQVRBX1JFUVVFU1RfRVJST1I6ICdDTElFTlRfVFJBTlNGRVJfREFUQV9SRVFVRVNUX0VSUk9SJyxcbiAgQ0xJRU5UX1RSQU5TRkVSX0hJU1RPUllfUkVRVUVTVF9TVUNDRVNTOiAnQ0xJRU5UX1RSQU5TRkVSX0hJU1RPUllfUkVRVUVTVF9TVUNDRVNTJyxcbiAgVUlfTU9EQUxfQ0hBTkdFOiAnVUlfTU9EQUxfQ0hBTkdFJyxcbiAgVUlfVE9SUkVOVF9ERVRBSUxTX0hBU0hfQ0hBTkdFOiAnVUlfVE9SUkVOVF9ERVRBSUxTX0hBU0hfQ0hBTkdFJyxcbiAgVUlfVE9SUkVOVF9ERVRBSUxTX09QRU5fQ0hBTkdFOiAnVUlfVE9SUkVOVF9ERVRBSUxTX09QRU5fQ0hBTkdFJyxcbiAgVUlfVE9SUkVOVF9TRUxFQ1RJT05fQ0hBTkdFOiAnVUlfVE9SUkVOVF9TRUxFQ1RJT05fQ0hBTkdFJyxcbiAgVUlfVE9SUkVOVFNfRklMVEVSX1NUQVRVU19DSEFOR0U6ICdVSV9GSUxURVJfU1RBVFVTX0NIQU5HRScsXG4gIFVJX1RPUlJFTlRTX0ZJTFRFUl9TRUFSQ0hfQ0hBTkdFOiAnVUlfRklMVEVSX1NFQVJDSF9DSEFOR0UnLFxuICBVSV9UT1JSRU5UU19TT1JUX0NIQU5HRTogJ1VJX1RPUlJFTlRTX1NPUlRfQ0hBTkdFJ1xufTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gRXZlbnRUeXBlcztcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29uc3RhbnRzL0V2ZW50VHlwZXMuanNcbiAqKiBtb2R1bGUgaWQgPSAxOTZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0="); + eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar EventTypes = {\n CLIENT_SET_THROTTLE_ERROR: 'CLIENT_SET_THROTTLE_ERROR',\n CLIENT_SET_THROTTLE_SUCCESS: 'CLIENT_SET_THROTTLE_SUCCESS',\n CLIENT_TORRENTS_REQUEST_ERROR: 'CLIENT_TORRENTS_REQUEST_ERROR',\n CLIENT_TORRENTS_REQUEST_SUCCESS: 'CLIENT_TORRENTS_REQUEST_SUCCESS',\n CLIENT_TORRENT_DETAILS_CHANGE: 'CLIENT_TORRENT_DETAILS_CHANGE',\n CLIENT_TRANSFER_DATA_REQUEST_SUCCESS: 'CLIENT_TRANSFER_DATA_REQUEST_SUCCESS',\n CLIENT_TRANSFER_DATA_REQUEST_ERROR: 'CLIENT_TRANSFER_DATA_REQUEST_ERROR',\n CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS: 'CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS',\n UI_MODAL_CHANGE: 'UI_MODAL_CHANGE',\n UI_LATEST_TORRENT_LOCATION_CHANGE: 'UI_LATEST_TORRENT_LOCATION_CHANGE',\n UI_TORRENT_DETAILS_HASH_CHANGE: 'UI_TORRENT_DETAILS_HASH_CHANGE',\n UI_TORRENT_DETAILS_OPEN_CHANGE: 'UI_TORRENT_DETAILS_OPEN_CHANGE',\n UI_TORRENT_SELECTION_CHANGE: 'UI_TORRENT_SELECTION_CHANGE',\n UI_TORRENTS_FILTER_STATUS_CHANGE: 'UI_FILTER_STATUS_CHANGE',\n UI_TORRENTS_FILTER_SEARCH_CHANGE: 'UI_FILTER_SEARCH_CHANGE',\n UI_TORRENTS_SORT_CHANGE: 'UI_TORRENTS_SORT_CHANGE'\n};\n\nexports['default'] = EventTypes;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29uc3RhbnRzL0V2ZW50VHlwZXMuanM/ZTRiMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6IjE5Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG52YXIgRXZlbnRUeXBlcyA9IHtcbiAgQ0xJRU5UX1NFVF9USFJPVFRMRV9FUlJPUjogJ0NMSUVOVF9TRVRfVEhST1RUTEVfRVJST1InLFxuICBDTElFTlRfU0VUX1RIUk9UVExFX1NVQ0NFU1M6ICdDTElFTlRfU0VUX1RIUk9UVExFX1NVQ0NFU1MnLFxuICBDTElFTlRfVE9SUkVOVFNfUkVRVUVTVF9FUlJPUjogJ0NMSUVOVF9UT1JSRU5UU19SRVFVRVNUX0VSUk9SJyxcbiAgQ0xJRU5UX1RPUlJFTlRTX1JFUVVFU1RfU1VDQ0VTUzogJ0NMSUVOVF9UT1JSRU5UU19SRVFVRVNUX1NVQ0NFU1MnLFxuICBDTElFTlRfVE9SUkVOVF9ERVRBSUxTX0NIQU5HRTogJ0NMSUVOVF9UT1JSRU5UX0RFVEFJTFNfQ0hBTkdFJyxcbiAgQ0xJRU5UX1RSQU5TRkVSX0RBVEFfUkVRVUVTVF9TVUNDRVNTOiAnQ0xJRU5UX1RSQU5TRkVSX0RBVEFfUkVRVUVTVF9TVUNDRVNTJyxcbiAgQ0xJRU5UX1RSQU5TRkVSX0RBVEFfUkVRVUVTVF9FUlJPUjogJ0NMSUVOVF9UUkFOU0ZFUl9EQVRBX1JFUVVFU1RfRVJST1InLFxuICBDTElFTlRfVFJBTlNGRVJfSElTVE9SWV9SRVFVRVNUX1NVQ0NFU1M6ICdDTElFTlRfVFJBTlNGRVJfSElTVE9SWV9SRVFVRVNUX1NVQ0NFU1MnLFxuICBVSV9NT0RBTF9DSEFOR0U6ICdVSV9NT0RBTF9DSEFOR0UnLFxuICBVSV9MQVRFU1RfVE9SUkVOVF9MT0NBVElPTl9DSEFOR0U6ICdVSV9MQVRFU1RfVE9SUkVOVF9MT0NBVElPTl9DSEFOR0UnLFxuICBVSV9UT1JSRU5UX0RFVEFJTFNfSEFTSF9DSEFOR0U6ICdVSV9UT1JSRU5UX0RFVEFJTFNfSEFTSF9DSEFOR0UnLFxuICBVSV9UT1JSRU5UX0RFVEFJTFNfT1BFTl9DSEFOR0U6ICdVSV9UT1JSRU5UX0RFVEFJTFNfT1BFTl9DSEFOR0UnLFxuICBVSV9UT1JSRU5UX1NFTEVDVElPTl9DSEFOR0U6ICdVSV9UT1JSRU5UX1NFTEVDVElPTl9DSEFOR0UnLFxuICBVSV9UT1JSRU5UU19GSUxURVJfU1RBVFVTX0NIQU5HRTogJ1VJX0ZJTFRFUl9TVEFUVVNfQ0hBTkdFJyxcbiAgVUlfVE9SUkVOVFNfRklMVEVSX1NFQVJDSF9DSEFOR0U6ICdVSV9GSUxURVJfU0VBUkNIX0NIQU5HRScsXG4gIFVJX1RPUlJFTlRTX1NPUlRfQ0hBTkdFOiAnVUlfVE9SUkVOVFNfU09SVF9DSEFOR0UnXG59O1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBFdmVudFR5cGVzO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9jb25zdGFudHMvRXZlbnRUeXBlcy5qc1xuICoqIG1vZHVsZSBpZCA9IDE5NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); /***/ }, /* 197 */ /***/ function(module, exports, __webpack_require__) { - eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _dispatcherAppDispatcher = __webpack_require__(191);\n\nvar _dispatcherAppDispatcher2 = _interopRequireDefault(_dispatcherAppDispatcher);\n\nvar _constantsActionTypes = __webpack_require__(195);\n\nvar _constantsActionTypes2 = _interopRequireDefault(_constantsActionTypes);\n\nvar UIActions = {\n displayModal: function displayModal(data) {\n _dispatcherAppDispatcher2['default'].dispatchUIAction({\n type: _constantsActionTypes2['default'].UI_DISPLAY_MODAL,\n data: data\n });\n },\n\n dismissModal: function dismissModal(data) {\n _dispatcherAppDispatcher2['default'].dispatchUIAction({\n type: _constantsActionTypes2['default'].UI_DISPLAY_MODAL,\n data: null\n });\n },\n\n handleDetailsClick: function handleDetailsClick(data) {\n _dispatcherAppDispatcher2['default'].dispatchUIAction({\n type: _constantsActionTypes2['default'].UI_CLICK_TORRENT_DETAILS,\n data: data\n });\n },\n\n handleTorrentClick: function handleTorrentClick(data) {\n _dispatcherAppDispatcher2['default'].dispatchUIAction({\n type: _constantsActionTypes2['default'].UI_CLICK_TORRENT,\n data: data\n });\n },\n\n setTorrentStatusFilter: function setTorrentStatusFilter(data) {\n _dispatcherAppDispatcher2['default'].dispatchUIAction({\n type: _constantsActionTypes2['default'].UI_SET_TORRENT_STATUS_FILTER,\n data: data\n });\n },\n\n setTorrentsSearchFilter: function setTorrentsSearchFilter(data) {\n _dispatcherAppDispatcher2['default'].dispatchUIAction({\n type: _constantsActionTypes2['default'].UI_SET_TORRENT_SEARCH_FILTER,\n data: data\n });\n },\n\n setTorrentsSort: function setTorrentsSort(data) {\n _dispatcherAppDispatcher2['default'].dispatchUIAction({\n type: _constantsActionTypes2['default'].UI_SET_TORRENT_SORT,\n data: data\n });\n }\n};\n\nexports['default'] = UIActions;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvYWN0aW9ucy9VSUFjdGlvbnMuanM/MjQ4ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxzQ0FBc0MsdUNBQXVDLGtCQUFrQjs7QUFFL0Y7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiMTk3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52YXIgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyID0gcmVxdWlyZSgnLi4vZGlzcGF0Y2hlci9BcHBEaXNwYXRjaGVyJyk7XG5cbnZhciBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIpO1xuXG52YXIgX2NvbnN0YW50c0FjdGlvblR5cGVzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL0FjdGlvblR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzQWN0aW9uVHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzQWN0aW9uVHlwZXMpO1xuXG52YXIgVUlBY3Rpb25zID0ge1xuICBkaXNwbGF5TW9kYWw6IGZ1bmN0aW9uIGRpc3BsYXlNb2RhbChkYXRhKSB7XG4gICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoVUlBY3Rpb24oe1xuICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX0RJU1BMQVlfTU9EQUwsXG4gICAgICBkYXRhOiBkYXRhXG4gICAgfSk7XG4gIH0sXG5cbiAgZGlzbWlzc01vZGFsOiBmdW5jdGlvbiBkaXNtaXNzTW9kYWwoZGF0YSkge1xuICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFVJQWN0aW9uKHtcbiAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5VSV9ESVNQTEFZX01PREFMLFxuICAgICAgZGF0YTogbnVsbFxuICAgIH0pO1xuICB9LFxuXG4gIGhhbmRsZURldGFpbHNDbGljazogZnVuY3Rpb24gaGFuZGxlRGV0YWlsc0NsaWNrKGRhdGEpIHtcbiAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hVSUFjdGlvbih7XG4gICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfQ0xJQ0tfVE9SUkVOVF9ERVRBSUxTLFxuICAgICAgZGF0YTogZGF0YVxuICAgIH0pO1xuICB9LFxuXG4gIGhhbmRsZVRvcnJlbnRDbGljazogZnVuY3Rpb24gaGFuZGxlVG9ycmVudENsaWNrKGRhdGEpIHtcbiAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hVSUFjdGlvbih7XG4gICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfQ0xJQ0tfVE9SUkVOVCxcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9KTtcbiAgfSxcblxuICBzZXRUb3JyZW50U3RhdHVzRmlsdGVyOiBmdW5jdGlvbiBzZXRUb3JyZW50U3RhdHVzRmlsdGVyKGRhdGEpIHtcbiAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hVSUFjdGlvbih7XG4gICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfU0VUX1RPUlJFTlRfU1RBVFVTX0ZJTFRFUixcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9KTtcbiAgfSxcblxuICBzZXRUb3JyZW50c1NlYXJjaEZpbHRlcjogZnVuY3Rpb24gc2V0VG9ycmVudHNTZWFyY2hGaWx0ZXIoZGF0YSkge1xuICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFVJQWN0aW9uKHtcbiAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5VSV9TRVRfVE9SUkVOVF9TRUFSQ0hfRklMVEVSLFxuICAgICAgZGF0YTogZGF0YVxuICAgIH0pO1xuICB9LFxuXG4gIHNldFRvcnJlbnRzU29ydDogZnVuY3Rpb24gc2V0VG9ycmVudHNTb3J0KGRhdGEpIHtcbiAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hVSUFjdGlvbih7XG4gICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfU0VUX1RPUlJFTlRfU09SVCxcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gVUlBY3Rpb25zO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9hY3Rpb25zL1VJQWN0aW9ucy5qc1xuICoqIG1vZHVsZSBpZCA9IDE5N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); + eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _axios = __webpack_require__(177);\n\nvar _axios2 = _interopRequireDefault(_axios);\n\nvar _dispatcherAppDispatcher = __webpack_require__(191);\n\nvar _dispatcherAppDispatcher2 = _interopRequireDefault(_dispatcherAppDispatcher);\n\nvar _constantsActionTypes = __webpack_require__(195);\n\nvar _constantsActionTypes2 = _interopRequireDefault(_constantsActionTypes);\n\nvar UIActions = {\n displayModal: function displayModal(data) {\n _dispatcherAppDispatcher2['default'].dispatchUIAction({\n type: _constantsActionTypes2['default'].UI_DISPLAY_MODAL,\n data: data\n });\n },\n\n dismissModal: function dismissModal(data) {\n _dispatcherAppDispatcher2['default'].dispatchUIAction({\n type: _constantsActionTypes2['default'].UI_DISPLAY_MODAL,\n data: null\n });\n },\n\n fetchSortProps: function fetchSortProps() {\n return _axios2['default'].get('/ui/sort-props').then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (data) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].UI_SORT_PROPS_REQUEST_SUCCESS,\n data: data\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].UI_SORT_PROPS_REQUEST_ERROR,\n error: error\n });\n });\n },\n\n handleDetailsClick: function handleDetailsClick(data) {\n _dispatcherAppDispatcher2['default'].dispatchUIAction({\n type: _constantsActionTypes2['default'].UI_CLICK_TORRENT_DETAILS,\n data: data\n });\n },\n\n handleTorrentClick: function handleTorrentClick(data) {\n _dispatcherAppDispatcher2['default'].dispatchUIAction({\n type: _constantsActionTypes2['default'].UI_CLICK_TORRENT,\n data: data\n });\n },\n\n setTorrentStatusFilter: function setTorrentStatusFilter(data) {\n _dispatcherAppDispatcher2['default'].dispatchUIAction({\n type: _constantsActionTypes2['default'].UI_SET_TORRENT_STATUS_FILTER,\n data: data\n });\n },\n\n setTorrentsSearchFilter: function setTorrentsSearchFilter(data) {\n _dispatcherAppDispatcher2['default'].dispatchUIAction({\n type: _constantsActionTypes2['default'].UI_SET_TORRENT_SEARCH_FILTER,\n data: data\n });\n },\n\n setTorrentsSort: function setTorrentsSort(data) {\n _axios2['default'].post('/ui/sort-props', data)['catch'](function (error) {\n console.log(error);\n });\n\n _dispatcherAppDispatcher2['default'].dispatchUIAction({\n type: _constantsActionTypes2['default'].UI_SET_TORRENT_SORT,\n data: data\n });\n }\n};\n\nexports['default'] = UIActions;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvYWN0aW9ucy9VSUFjdGlvbnMuanM/MjQ4ZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxzQ0FBc0MsdUNBQXVDLGtCQUFrQjs7QUFFL0Y7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBLHlFQUF5RTs7QUFFekU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiMTk3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52YXIgX2F4aW9zID0gcmVxdWlyZSgnYXhpb3MnKTtcblxudmFyIF9heGlvczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9heGlvcyk7XG5cbnZhciBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIgPSByZXF1aXJlKCcuLi9kaXNwYXRjaGVyL0FwcERpc3BhdGNoZXInKTtcblxudmFyIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcik7XG5cbnZhciBfY29uc3RhbnRzQWN0aW9uVHlwZXMgPSByZXF1aXJlKCcuLi9jb25zdGFudHMvQWN0aW9uVHlwZXMnKTtcblxudmFyIF9jb25zdGFudHNBY3Rpb25UeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25zdGFudHNBY3Rpb25UeXBlcyk7XG5cbnZhciBVSUFjdGlvbnMgPSB7XG4gIGRpc3BsYXlNb2RhbDogZnVuY3Rpb24gZGlzcGxheU1vZGFsKGRhdGEpIHtcbiAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hVSUFjdGlvbih7XG4gICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfRElTUExBWV9NT0RBTCxcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9KTtcbiAgfSxcblxuICBkaXNtaXNzTW9kYWw6IGZ1bmN0aW9uIGRpc21pc3NNb2RhbChkYXRhKSB7XG4gICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoVUlBY3Rpb24oe1xuICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX0RJU1BMQVlfTU9EQUwsXG4gICAgICBkYXRhOiBudWxsXG4gICAgfSk7XG4gIH0sXG5cbiAgZmV0Y2hTb3J0UHJvcHM6IGZ1bmN0aW9uIGZldGNoU29ydFByb3BzKCkge1xuICAgIHJldHVybiBfYXhpb3MyWydkZWZhdWx0J10uZ2V0KCcvdWkvc29ydC1wcm9wcycpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGpzb24gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1swXTtcblxuICAgICAgcmV0dXJuIGpzb24uZGF0YTtcbiAgICB9KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfU09SVF9QUk9QU19SRVFVRVNUX1NVQ0NFU1MsXG4gICAgICAgIGRhdGE6IGRhdGFcbiAgICAgIH0pO1xuICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX1NPUlRfUFJPUFNfUkVRVUVTVF9FUlJPUixcbiAgICAgICAgZXJyb3I6IGVycm9yXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBoYW5kbGVEZXRhaWxzQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZURldGFpbHNDbGljayhkYXRhKSB7XG4gICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoVUlBY3Rpb24oe1xuICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX0NMSUNLX1RPUlJFTlRfREVUQUlMUyxcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9KTtcbiAgfSxcblxuICBoYW5kbGVUb3JyZW50Q2xpY2s6IGZ1bmN0aW9uIGhhbmRsZVRvcnJlbnRDbGljayhkYXRhKSB7XG4gICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoVUlBY3Rpb24oe1xuICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX0NMSUNLX1RPUlJFTlQsXG4gICAgICBkYXRhOiBkYXRhXG4gICAgfSk7XG4gIH0sXG5cbiAgc2V0VG9ycmVudFN0YXR1c0ZpbHRlcjogZnVuY3Rpb24gc2V0VG9ycmVudFN0YXR1c0ZpbHRlcihkYXRhKSB7XG4gICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoVUlBY3Rpb24oe1xuICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX1NFVF9UT1JSRU5UX1NUQVRVU19GSUxURVIsXG4gICAgICBkYXRhOiBkYXRhXG4gICAgfSk7XG4gIH0sXG5cbiAgc2V0VG9ycmVudHNTZWFyY2hGaWx0ZXI6IGZ1bmN0aW9uIHNldFRvcnJlbnRzU2VhcmNoRmlsdGVyKGRhdGEpIHtcbiAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hVSUFjdGlvbih7XG4gICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfU0VUX1RPUlJFTlRfU0VBUkNIX0ZJTFRFUixcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9KTtcbiAgfSxcblxuICBzZXRUb3JyZW50c1NvcnQ6IGZ1bmN0aW9uIHNldFRvcnJlbnRzU29ydChkYXRhKSB7XG4gICAgX2F4aW9zMlsnZGVmYXVsdCddLnBvc3QoJy91aS9zb3J0LXByb3BzJywgZGF0YSlbJ2NhdGNoJ10oZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgfSk7XG5cbiAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hVSUFjdGlvbih7XG4gICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfU0VUX1RPUlJFTlRfU09SVCxcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gVUlBY3Rpb25zO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9hY3Rpb25zL1VJQWN0aW9ucy5qc1xuICoqIG1vZHVsZSBpZCA9IDE5N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); /***/ }, /* 198 */ /***/ 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 _constantsActionTypes = __webpack_require__(195);\n\nvar _constantsActionTypes2 = _interopRequireDefault(_constantsActionTypes);\n\nvar _dispatcherAppDispatcher = __webpack_require__(191);\n\nvar _dispatcherAppDispatcher2 = _interopRequireDefault(_dispatcherAppDispatcher);\n\nvar _BaseStore2 = __webpack_require__(199);\n\nvar _BaseStore3 = _interopRequireDefault(_BaseStore2);\n\nvar _constantsEventTypes = __webpack_require__(196);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _utilSelectTorrents = __webpack_require__(201);\n\nvar _actionsTorrentActions = __webpack_require__(176);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar UIStoreClass = (function (_BaseStore) {\n _inherits(UIStoreClass, _BaseStore);\n\n function UIStoreClass() {\n _classCallCheck(this, UIStoreClass);\n\n _get(Object.getPrototypeOf(UIStoreClass.prototype), 'constructor', this).call(this);\n\n this.activeModal = null;\n this.torrentDetailsHash = null;\n this.torrentDetailsOpen = false;\n }\n\n _createClass(UIStoreClass, [{\n key: 'closeTorrentDetailsPanel',\n value: function closeTorrentDetailsPanel() {\n if (this.torrentDetailsOpen) {\n this.torrentDetailsOpen = false;\n this.emit(_constantsEventTypes2['default'].UI_TORRENT_DETAILS_OPEN_CHANGE);\n }\n }\n }, {\n key: 'getActiveModal',\n value: function getActiveModal() {\n return this.activeModal;\n }\n }, {\n key: 'setActiveModal',\n value: function setActiveModal(modal) {\n this.activeModal = modal;\n this.emit(_constantsEventTypes2['default'].UI_MODAL_CHANGE);\n }\n }, {\n key: 'getTorrentDetailsHash',\n value: function getTorrentDetailsHash() {\n return this.torrentDetailsHash;\n }\n }, {\n key: 'handleTorrentClick',\n value: function handleTorrentClick(hash) {\n this.torrentDetailsHash = hash;\n this.emit(_constantsEventTypes2['default'].UI_TORRENT_DETAILS_HASH_CHANGE);\n }\n }, {\n key: 'handleTorrentDetailsClick',\n value: function handleTorrentDetailsClick(hash, event) {\n this.torrentDetailsOpen = !this.torrentDetailsOpen;\n this.emit(_constantsEventTypes2['default'].UI_TORRENT_DETAILS_OPEN_CHANGE);\n }\n }, {\n key: 'isTorrentDetailsOpen',\n value: function isTorrentDetailsOpen() {\n return this.torrentDetailsOpen;\n }\n }]);\n\n return UIStoreClass;\n})(_BaseStore3['default']);\n\nvar UIStore = new UIStoreClass();\n\n_dispatcherAppDispatcher2['default'].register(function (payload) {\n var action = payload.action;\n var source = payload.source;\n\n switch (action.type) {\n case _constantsActionTypes2['default'].UI_CLICK_TORRENT_DETAILS:\n UIStore.handleTorrentDetailsClick(action.data.hash, action.data.event);\n break;\n case _constantsActionTypes2['default'].UI_CLICK_TORRENT:\n UIStore.handleTorrentClick(action.data.hash);\n break;\n case _constantsActionTypes2['default'].UI_DISPLAY_MODAL:\n UIStore.setActiveModal(action.data);\n break;\n }\n});\n\nexports['default'] = UIStore;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvc3RvcmVzL1VJU3RvcmUuanM/N2FkMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxpQ0FBaUMsMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUUsRUFBRSx5REFBeUQscUVBQXFFLDZEQUE2RCxvQkFBb0IsR0FBRyxFQUFFOztBQUVsakIsdUNBQXVDLG1CQUFtQiw0QkFBNEIsaURBQWlELGdCQUFnQixrREFBa0QsOERBQThELDBCQUEwQiw0Q0FBNEMsdUJBQXVCLGtCQUFrQixFQUFFLE9BQU8sYUFBYSxnQkFBZ0IsZ0JBQWdCLGVBQWUsMkJBQTJCLG9CQUFvQixFQUFFLEVBQUUsNEJBQTRCLG1CQUFtQixFQUFFLE9BQU8sdUJBQXVCLDRCQUE0QixrQkFBa0IsRUFBRSw4QkFBOEIsRUFBRSxFQUFFOztBQUUvb0Isc0NBQXNDLHVDQUF1QyxrQkFBa0I7O0FBRS9GLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDBDQUEwQywrREFBK0QscUdBQXFHLEVBQUUseUVBQXlFLGVBQWUseUVBQXlFLEVBQUUsRUFBRSx1SEFBdUg7O0FBRTVlOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0EiLCJmaWxlIjoiMTk4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gsIF94MiwgX3gzKSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94LCBwcm9wZXJ0eSA9IF94MiwgcmVjZWl2ZXIgPSBfeDM7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3ggPSBwYXJlbnQ7IF94MiA9IHByb3BlcnR5OyBfeDMgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX2NvbnN0YW50c0FjdGlvblR5cGVzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL0FjdGlvblR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzQWN0aW9uVHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzQWN0aW9uVHlwZXMpO1xuXG52YXIgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyID0gcmVxdWlyZSgnLi4vZGlzcGF0Y2hlci9BcHBEaXNwYXRjaGVyJyk7XG5cbnZhciBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIpO1xuXG52YXIgX0Jhc2VTdG9yZTIgPSByZXF1aXJlKCcuL0Jhc2VTdG9yZScpO1xuXG52YXIgX0Jhc2VTdG9yZTMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9CYXNlU3RvcmUyKTtcblxudmFyIF9jb25zdGFudHNFdmVudFR5cGVzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL0V2ZW50VHlwZXMnKTtcblxudmFyIF9jb25zdGFudHNFdmVudFR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbnN0YW50c0V2ZW50VHlwZXMpO1xuXG52YXIgX3V0aWxTZWxlY3RUb3JyZW50cyA9IHJlcXVpcmUoJy4uL3V0aWwvc2VsZWN0VG9ycmVudHMnKTtcblxudmFyIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMgPSByZXF1aXJlKCcuLi9hY3Rpb25zL1RvcnJlbnRBY3Rpb25zJyk7XG5cbnZhciBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2FjdGlvbnNUb3JyZW50QWN0aW9ucyk7XG5cbnZhciBVSVN0b3JlQ2xhc3MgPSAoZnVuY3Rpb24gKF9CYXNlU3RvcmUpIHtcbiAgX2luaGVyaXRzKFVJU3RvcmVDbGFzcywgX0Jhc2VTdG9yZSk7XG5cbiAgZnVuY3Rpb24gVUlTdG9yZUNsYXNzKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBVSVN0b3JlQ2xhc3MpO1xuXG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoVUlTdG9yZUNsYXNzLnByb3RvdHlwZSksICdjb25zdHJ1Y3RvcicsIHRoaXMpLmNhbGwodGhpcyk7XG5cbiAgICB0aGlzLmFjdGl2ZU1vZGFsID0gbnVsbDtcbiAgICB0aGlzLnRvcnJlbnREZXRhaWxzSGFzaCA9IG51bGw7XG4gICAgdGhpcy50b3JyZW50RGV0YWlsc09wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhVSVN0b3JlQ2xhc3MsIFt7XG4gICAga2V5OiAnY2xvc2VUb3JyZW50RGV0YWlsc1BhbmVsJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xvc2VUb3JyZW50RGV0YWlsc1BhbmVsKCkge1xuICAgICAgaWYgKHRoaXMudG9ycmVudERldGFpbHNPcGVuKSB7XG4gICAgICAgIHRoaXMudG9ycmVudERldGFpbHNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9UT1JSRU5UX0RFVEFJTFNfT1BFTl9DSEFOR0UpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldEFjdGl2ZU1vZGFsJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QWN0aXZlTW9kYWwoKSB7XG4gICAgICByZXR1cm4gdGhpcy5hY3RpdmVNb2RhbDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdzZXRBY3RpdmVNb2RhbCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEFjdGl2ZU1vZGFsKG1vZGFsKSB7XG4gICAgICB0aGlzLmFjdGl2ZU1vZGFsID0gbW9kYWw7XG4gICAgICB0aGlzLmVtaXQoX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uVUlfTU9EQUxfQ0hBTkdFKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRUb3JyZW50RGV0YWlsc0hhc2gnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUb3JyZW50RGV0YWlsc0hhc2goKSB7XG4gICAgICByZXR1cm4gdGhpcy50b3JyZW50RGV0YWlsc0hhc2g7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlVG9ycmVudENsaWNrJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlVG9ycmVudENsaWNrKGhhc2gpIHtcbiAgICAgIHRoaXMudG9ycmVudERldGFpbHNIYXNoID0gaGFzaDtcbiAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9UT1JSRU5UX0RFVEFJTFNfSEFTSF9DSEFOR0UpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZVRvcnJlbnREZXRhaWxzQ2xpY2snLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVUb3JyZW50RGV0YWlsc0NsaWNrKGhhc2gsIGV2ZW50KSB7XG4gICAgICB0aGlzLnRvcnJlbnREZXRhaWxzT3BlbiA9ICF0aGlzLnRvcnJlbnREZXRhaWxzT3BlbjtcbiAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9UT1JSRU5UX0RFVEFJTFNfT1BFTl9DSEFOR0UpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2lzVG9ycmVudERldGFpbHNPcGVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNUb3JyZW50RGV0YWlsc09wZW4oKSB7XG4gICAgICByZXR1cm4gdGhpcy50b3JyZW50RGV0YWlsc09wZW47XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFVJU3RvcmVDbGFzcztcbn0pKF9CYXNlU3RvcmUzWydkZWZhdWx0J10pO1xuXG52YXIgVUlTdG9yZSA9IG5ldyBVSVN0b3JlQ2xhc3MoKTtcblxuX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLnJlZ2lzdGVyKGZ1bmN0aW9uIChwYXlsb2FkKSB7XG4gIHZhciBhY3Rpb24gPSBwYXlsb2FkLmFjdGlvbjtcbiAgdmFyIHNvdXJjZSA9IHBheWxvYWQuc291cmNlO1xuXG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlIF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5VSV9DTElDS19UT1JSRU5UX0RFVEFJTFM6XG4gICAgICBVSVN0b3JlLmhhbmRsZVRvcnJlbnREZXRhaWxzQ2xpY2soYWN0aW9uLmRhdGEuaGFzaCwgYWN0aW9uLmRhdGEuZXZlbnQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfQ0xJQ0tfVE9SUkVOVDpcbiAgICAgIFVJU3RvcmUuaGFuZGxlVG9ycmVudENsaWNrKGFjdGlvbi5kYXRhLmhhc2gpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfRElTUExBWV9NT0RBTDpcbiAgICAgIFVJU3RvcmUuc2V0QWN0aXZlTW9kYWwoYWN0aW9uLmRhdGEpO1xuICAgICAgYnJlYWs7XG4gIH1cbn0pO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBVSVN0b3JlO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9zdG9yZXMvVUlTdG9yZS5qc1xuICoqIG1vZHVsZSBpZCA9IDE5OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); + 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 _constantsActionTypes = __webpack_require__(195);\n\nvar _constantsActionTypes2 = _interopRequireDefault(_constantsActionTypes);\n\nvar _dispatcherAppDispatcher = __webpack_require__(191);\n\nvar _dispatcherAppDispatcher2 = _interopRequireDefault(_dispatcherAppDispatcher);\n\nvar _BaseStore2 = __webpack_require__(199);\n\nvar _BaseStore3 = _interopRequireDefault(_BaseStore2);\n\nvar _constantsEventTypes = __webpack_require__(196);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _utilSelectTorrents = __webpack_require__(201);\n\nvar _actionsTorrentActions = __webpack_require__(176);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar UIStoreClass = (function (_BaseStore) {\n _inherits(UIStoreClass, _BaseStore);\n\n function UIStoreClass() {\n _classCallCheck(this, UIStoreClass);\n\n _get(Object.getPrototypeOf(UIStoreClass.prototype), 'constructor', this).call(this);\n\n this.activeModal = null;\n this.latestTorrentLocation = null;\n this.torrentDetailsHash = null;\n this.torrentDetailsOpen = false;\n }\n\n _createClass(UIStoreClass, [{\n key: 'closeTorrentDetailsPanel',\n value: function closeTorrentDetailsPanel() {\n if (this.torrentDetailsOpen) {\n this.torrentDetailsOpen = false;\n this.emit(_constantsEventTypes2['default'].UI_TORRENT_DETAILS_OPEN_CHANGE);\n }\n }\n }, {\n key: 'fetchLatestTorrentLocation',\n value: function fetchLatestTorrentLocation() {\n _actionsTorrentActions2['default'].fetchLatestTorrentLocation();\n }\n }, {\n key: 'getActiveModal',\n value: function getActiveModal() {\n return this.activeModal;\n }\n }, {\n key: 'getLatestTorrentLocation',\n value: function getLatestTorrentLocation() {\n return this.latestTorrentLocation;\n }\n }, {\n key: 'getTorrentDetailsHash',\n value: function getTorrentDetailsHash() {\n return this.torrentDetailsHash;\n }\n }, {\n key: 'handleLatestTorrentLocationRequestSuccess',\n value: function handleLatestTorrentLocationRequestSuccess(location) {\n this.latestTorrentLocation = location;\n this.emit(_constantsEventTypes2['default'].UI_LATEST_TORRENT_LOCATION_CHANGE);\n }\n }, {\n key: 'handleLatestTorrentLocationRequestError',\n value: function handleLatestTorrentLocationRequestError(error) {\n console.log(error);\n }\n }, {\n key: 'handleTorrentClick',\n value: function handleTorrentClick(hash) {\n this.torrentDetailsHash = hash;\n this.emit(_constantsEventTypes2['default'].UI_TORRENT_DETAILS_HASH_CHANGE);\n }\n }, {\n key: 'handleTorrentDetailsClick',\n value: function handleTorrentDetailsClick(hash, event) {\n this.torrentDetailsOpen = !this.torrentDetailsOpen;\n this.emit(_constantsEventTypes2['default'].UI_TORRENT_DETAILS_OPEN_CHANGE);\n }\n }, {\n key: 'isTorrentDetailsOpen',\n value: function isTorrentDetailsOpen() {\n return this.torrentDetailsOpen;\n }\n }, {\n key: 'setActiveModal',\n value: function setActiveModal(modal) {\n this.activeModal = modal;\n this.emit(_constantsEventTypes2['default'].UI_MODAL_CHANGE);\n }\n }]);\n\n return UIStoreClass;\n})(_BaseStore3['default']);\n\nvar UIStore = new UIStoreClass();\n\n_dispatcherAppDispatcher2['default'].register(function (payload) {\n var action = payload.action;\n var source = payload.source;\n\n switch (action.type) {\n case _constantsActionTypes2['default'].UI_CLICK_TORRENT_DETAILS:\n UIStore.handleTorrentDetailsClick(action.data.hash, action.data.event);\n break;\n case _constantsActionTypes2['default'].UI_CLICK_TORRENT:\n UIStore.handleTorrentClick(action.data.hash);\n break;\n case _constantsActionTypes2['default'].UI_DISPLAY_MODAL:\n UIStore.setActiveModal(action.data);\n break;\n case _constantsActionTypes2['default'].UI_LATEST_TORRENT_LOCATION_REQUEST_SUCCESS:\n UIStore.handleLatestTorrentLocationRequestSuccess(action.data.path);\n break;\n case _constantsActionTypes2['default'].UI_LATEST_TORRENT_LOCATION_REQUEST_ERROR:\n UIStore.handleLatestTorrentLocationRequestError(action.error);\n break;\n }\n});\n\nexports['default'] = UIStore;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvc3RvcmVzL1VJU3RvcmUuanM/N2FkMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxpQ0FBaUMsMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUUsRUFBRSx5REFBeUQscUVBQXFFLDZEQUE2RCxvQkFBb0IsR0FBRyxFQUFFOztBQUVsakIsdUNBQXVDLG1CQUFtQiw0QkFBNEIsaURBQWlELGdCQUFnQixrREFBa0QsOERBQThELDBCQUEwQiw0Q0FBNEMsdUJBQXVCLGtCQUFrQixFQUFFLE9BQU8sYUFBYSxnQkFBZ0IsZ0JBQWdCLGVBQWUsMkJBQTJCLG9CQUFvQixFQUFFLEVBQUUsNEJBQTRCLG1CQUFtQixFQUFFLE9BQU8sdUJBQXVCLDRCQUE0QixrQkFBa0IsRUFBRSw4QkFBOEIsRUFBRSxFQUFFOztBQUUvb0Isc0NBQXNDLHVDQUF1QyxrQkFBa0I7O0FBRS9GLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDBDQUEwQywrREFBK0QscUdBQXFHLEVBQUUseUVBQXlFLGVBQWUseUVBQXlFLEVBQUUsRUFBRSx1SEFBdUg7O0FBRTVlOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6IjE5OC5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbnZhciBfZ2V0ID0gZnVuY3Rpb24gZ2V0KF94LCBfeDIsIF94MykgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeCwgcHJvcGVydHkgPSBfeDIsIHJlY2VpdmVyID0gX3gzOyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94ID0gcGFyZW50OyBfeDIgPSBwcm9wZXJ0eTsgX3gzID0gcmVjZWl2ZXI7IF9hZ2FpbiA9IHRydWU7IGRlc2MgPSBwYXJlbnQgPSB1bmRlZmluZWQ7IGNvbnRpbnVlIF9mdW5jdGlvbjsgfSB9IGVsc2UgaWYgKCd2YWx1ZScgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gJ2Z1bmN0aW9uJyAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ1N1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgJyArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIF9jb25zdGFudHNBY3Rpb25UeXBlcyA9IHJlcXVpcmUoJy4uL2NvbnN0YW50cy9BY3Rpb25UeXBlcycpO1xuXG52YXIgX2NvbnN0YW50c0FjdGlvblR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbnN0YW50c0FjdGlvblR5cGVzKTtcblxudmFyIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlciA9IHJlcXVpcmUoJy4uL2Rpc3BhdGNoZXIvQXBwRGlzcGF0Y2hlcicpO1xuXG52YXIgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyKTtcblxudmFyIF9CYXNlU3RvcmUyID0gcmVxdWlyZSgnLi9CYXNlU3RvcmUnKTtcblxudmFyIF9CYXNlU3RvcmUzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfQmFzZVN0b3JlMik7XG5cbnZhciBfY29uc3RhbnRzRXZlbnRUeXBlcyA9IHJlcXVpcmUoJy4uL2NvbnN0YW50cy9FdmVudFR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzRXZlbnRUeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25zdGFudHNFdmVudFR5cGVzKTtcblxudmFyIF91dGlsU2VsZWN0VG9ycmVudHMgPSByZXF1aXJlKCcuLi91dGlsL3NlbGVjdFRvcnJlbnRzJyk7XG5cbnZhciBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zID0gcmVxdWlyZSgnLi4vYWN0aW9ucy9Ub3JyZW50QWN0aW9ucycpO1xuXG52YXIgX2FjdGlvbnNUb3JyZW50QWN0aW9uczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hY3Rpb25zVG9ycmVudEFjdGlvbnMpO1xuXG52YXIgVUlTdG9yZUNsYXNzID0gKGZ1bmN0aW9uIChfQmFzZVN0b3JlKSB7XG4gIF9pbmhlcml0cyhVSVN0b3JlQ2xhc3MsIF9CYXNlU3RvcmUpO1xuXG4gIGZ1bmN0aW9uIFVJU3RvcmVDbGFzcygpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVUlTdG9yZUNsYXNzKTtcblxuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKFVJU3RvcmVDbGFzcy5wcm90b3R5cGUpLCAnY29uc3RydWN0b3InLCB0aGlzKS5jYWxsKHRoaXMpO1xuXG4gICAgdGhpcy5hY3RpdmVNb2RhbCA9IG51bGw7XG4gICAgdGhpcy5sYXRlc3RUb3JyZW50TG9jYXRpb24gPSBudWxsO1xuICAgIHRoaXMudG9ycmVudERldGFpbHNIYXNoID0gbnVsbDtcbiAgICB0aGlzLnRvcnJlbnREZXRhaWxzT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFVJU3RvcmVDbGFzcywgW3tcbiAgICBrZXk6ICdjbG9zZVRvcnJlbnREZXRhaWxzUGFuZWwnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbG9zZVRvcnJlbnREZXRhaWxzUGFuZWwoKSB7XG4gICAgICBpZiAodGhpcy50b3JyZW50RGV0YWlsc09wZW4pIHtcbiAgICAgICAgdGhpcy50b3JyZW50RGV0YWlsc09wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5lbWl0KF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLlVJX1RPUlJFTlRfREVUQUlMU19PUEVOX0NIQU5HRSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZmV0Y2hMYXRlc3RUb3JyZW50TG9jYXRpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmZXRjaExhdGVzdFRvcnJlbnRMb2NhdGlvbigpIHtcbiAgICAgIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMyWydkZWZhdWx0J10uZmV0Y2hMYXRlc3RUb3JyZW50TG9jYXRpb24oKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRBY3RpdmVNb2RhbCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEFjdGl2ZU1vZGFsKCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlTW9kYWw7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0TGF0ZXN0VG9ycmVudExvY2F0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TGF0ZXN0VG9ycmVudExvY2F0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMubGF0ZXN0VG9ycmVudExvY2F0aW9uO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldFRvcnJlbnREZXRhaWxzSGFzaCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFRvcnJlbnREZXRhaWxzSGFzaCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnRvcnJlbnREZXRhaWxzSGFzaDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVMYXRlc3RUb3JyZW50TG9jYXRpb25SZXF1ZXN0U3VjY2VzcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZUxhdGVzdFRvcnJlbnRMb2NhdGlvblJlcXVlc3RTdWNjZXNzKGxvY2F0aW9uKSB7XG4gICAgICB0aGlzLmxhdGVzdFRvcnJlbnRMb2NhdGlvbiA9IGxvY2F0aW9uO1xuICAgICAgdGhpcy5lbWl0KF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLlVJX0xBVEVTVF9UT1JSRU5UX0xPQ0FUSU9OX0NIQU5HRSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlTGF0ZXN0VG9ycmVudExvY2F0aW9uUmVxdWVzdEVycm9yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlTGF0ZXN0VG9ycmVudExvY2F0aW9uUmVxdWVzdEVycm9yKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlVG9ycmVudENsaWNrJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlVG9ycmVudENsaWNrKGhhc2gpIHtcbiAgICAgIHRoaXMudG9ycmVudERldGFpbHNIYXNoID0gaGFzaDtcbiAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9UT1JSRU5UX0RFVEFJTFNfSEFTSF9DSEFOR0UpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZVRvcnJlbnREZXRhaWxzQ2xpY2snLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVUb3JyZW50RGV0YWlsc0NsaWNrKGhhc2gsIGV2ZW50KSB7XG4gICAgICB0aGlzLnRvcnJlbnREZXRhaWxzT3BlbiA9ICF0aGlzLnRvcnJlbnREZXRhaWxzT3BlbjtcbiAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9UT1JSRU5UX0RFVEFJTFNfT1BFTl9DSEFOR0UpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2lzVG9ycmVudERldGFpbHNPcGVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNUb3JyZW50RGV0YWlsc09wZW4oKSB7XG4gICAgICByZXR1cm4gdGhpcy50b3JyZW50RGV0YWlsc09wZW47XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc2V0QWN0aXZlTW9kYWwnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRBY3RpdmVNb2RhbChtb2RhbCkge1xuICAgICAgdGhpcy5hY3RpdmVNb2RhbCA9IG1vZGFsO1xuICAgICAgdGhpcy5lbWl0KF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLlVJX01PREFMX0NIQU5HRSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFVJU3RvcmVDbGFzcztcbn0pKF9CYXNlU3RvcmUzWydkZWZhdWx0J10pO1xuXG52YXIgVUlTdG9yZSA9IG5ldyBVSVN0b3JlQ2xhc3MoKTtcblxuX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLnJlZ2lzdGVyKGZ1bmN0aW9uIChwYXlsb2FkKSB7XG4gIHZhciBhY3Rpb24gPSBwYXlsb2FkLmFjdGlvbjtcbiAgdmFyIHNvdXJjZSA9IHBheWxvYWQuc291cmNlO1xuXG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlIF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5VSV9DTElDS19UT1JSRU5UX0RFVEFJTFM6XG4gICAgICBVSVN0b3JlLmhhbmRsZVRvcnJlbnREZXRhaWxzQ2xpY2soYWN0aW9uLmRhdGEuaGFzaCwgYWN0aW9uLmRhdGEuZXZlbnQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfQ0xJQ0tfVE9SUkVOVDpcbiAgICAgIFVJU3RvcmUuaGFuZGxlVG9ycmVudENsaWNrKGFjdGlvbi5kYXRhLmhhc2gpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfRElTUExBWV9NT0RBTDpcbiAgICAgIFVJU3RvcmUuc2V0QWN0aXZlTW9kYWwoYWN0aW9uLmRhdGEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfTEFURVNUX1RPUlJFTlRfTE9DQVRJT05fUkVRVUVTVF9TVUNDRVNTOlxuICAgICAgVUlTdG9yZS5oYW5kbGVMYXRlc3RUb3JyZW50TG9jYXRpb25SZXF1ZXN0U3VjY2VzcyhhY3Rpb24uZGF0YS5wYXRoKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX0xBVEVTVF9UT1JSRU5UX0xPQ0FUSU9OX1JFUVVFU1RfRVJST1I6XG4gICAgICBVSVN0b3JlLmhhbmRsZUxhdGVzdFRvcnJlbnRMb2NhdGlvblJlcXVlc3RFcnJvcihhY3Rpb24uZXJyb3IpO1xuICAgICAgYnJlYWs7XG4gIH1cbn0pO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBVSVN0b3JlO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9zdG9yZXMvVUlTdG9yZS5qc1xuICoqIG1vZHVsZSBpZCA9IDE5OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); /***/ }, /* 199 */ @@ -1262,15 +1262,10 @@ /* 203 */ /***/ 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 _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(157);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _storesClientDataStore = __webpack_require__(204);\n\nvar _storesClientDataStore2 = _interopRequireDefault(_storesClientDataStore);\n\nvar _iconsDownload = __webpack_require__(207);\n\nvar _iconsDownload2 = _interopRequireDefault(_iconsDownload);\n\nvar _constantsEventTypes = __webpack_require__(196);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _utilFormatData = __webpack_require__(208);\n\nvar _utilFormatData2 = _interopRequireDefault(_utilFormatData);\n\nvar _uiLineChart = __webpack_require__(209);\n\nvar _uiLineChart2 = _interopRequireDefault(_uiLineChart);\n\nvar _iconsUpload = __webpack_require__(211);\n\nvar _iconsUpload2 = _interopRequireDefault(_iconsUpload);\n\nvar METHODS_TO_BIND = ['onTransferDataRequestError', 'onTransferDataRequestSuccess'];\n\nvar ClientStats = (function (_React$Component) {\n _inherits(ClientStats, _React$Component);\n\n function ClientStats() {\n var _this = this;\n\n _classCallCheck(this, ClientStats);\n\n _get(Object.getPrototypeOf(ClientStats.prototype), 'constructor', this).call(this);\n\n this.state = {\n sidebarWidth: 0,\n transferDataRequestError: false,\n transferDataRequestSuccess: false\n };\n\n METHODS_TO_BIND.forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n }\n\n _createClass(ClientStats, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.setState({\n sidebarWidth: _reactDom2['default'].findDOMNode(this).offsetWidth\n });\n _storesClientDataStore2['default'].listen(_constantsEventTypes2['default'].CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, this.onTransferDataRequestSuccess);\n _storesClientDataStore2['default'].fetchTransferData();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _storesClientDataStore2['default'].unlisten(_constantsEventTypes2['default'].CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, this.onTransferDataRequestSuccess);\n }\n }, {\n key: 'onTransferDataRequestError',\n value: function onTransferDataRequestError() {\n this.setState({\n transferDataRequestError: true,\n transferDataRequestSuccess: false\n });\n }\n }, {\n key: 'onTransferDataRequestSuccess',\n value: function onTransferDataRequestSuccess() {\n this.setState({\n transferDataRequestError: false,\n transferDataRequestSuccess: true\n });\n }\n }, {\n key: 'render',\n value: function render() {\n if (this.state.transferDataRequestError) {\n return _react2['default'].createElement(\n 'div',\n null,\n 'Error'\n );\n } else if (!this.state.transferDataRequestSuccess) {\n return _react2['default'].createElement(\n 'div',\n null,\n 'Loading'\n );\n }\n\n var throttles = _storesClientDataStore2['default'].getThrottles();\n var transferRate = _storesClientDataStore2['default'].getTransferRate();\n var transferRates = _storesClientDataStore2['default'].getTransferRates();\n var transferTotals = _storesClientDataStore2['default'].getTransferTotals();\n\n var downloadRate = _utilFormatData2['default'].data(transferRate.download, '/s');\n var downloadTotal = _utilFormatData2['default'].data(transferTotals.download);\n var uploadRate = _utilFormatData2['default'].data(transferRate.upload, '/s');\n var uploadTotal = _utilFormatData2['default'].data(transferTotals.upload);\n\n return _react2['default'].createElement(\n 'div',\n { className: 'client-stats sidebar__item' },\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat client-stat--download' },\n _react2['default'].createElement(\n 'span',\n { className: 'client-stat__icon' },\n _react2['default'].createElement(_iconsDownload2['default'], null)\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data' },\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data--primary' },\n downloadRate.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n downloadRate.unit\n )\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data--secondary' },\n downloadTotal.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n downloadTotal.unit\n ),\n ' Downloaded'\n )\n ),\n _react2['default'].createElement(_uiLineChart2['default'], {\n data: transferRates.download,\n height: 100,\n id: 'graph--download',\n limit: throttles.download,\n slug: 'graph--download',\n width: this.state.sidebarWidth })\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat client-stat--upload' },\n _react2['default'].createElement(\n 'span',\n { className: 'client-stat__icon' },\n _react2['default'].createElement(_iconsUpload2['default'], null)\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data' },\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data--primary' },\n uploadRate.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n uploadRate.unit\n )\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data--secondary' },\n uploadTotal.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n uploadTotal.unit\n ),\n ' Uploaded'\n )\n ),\n _react2['default'].createElement(_uiLineChart2['default'], {\n data: transferRates.upload,\n height: 100,\n id: 'graph--upload',\n limit: throttles.upload,\n slug: 'graph--upload',\n width: this.state.sidebarWidth })\n )\n );\n }\n }]);\n\n return ClientStats;\n})(_react2['default'].Component);\n\nClientStats.defaultProps = {\n historyLength: 1\n};\n\nexports['default'] = ClientStats;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy9zaWRlYmFyL1RyYW5zZmVyRGF0YS5qcz9mZTM1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGlDQUFpQywyQ0FBMkMsZ0JBQWdCLGtCQUFrQixPQUFPLDJCQUEyQix3REFBd0QsZ0NBQWdDLHVEQUF1RCwyREFBMkQsRUFBRSxFQUFFLHlEQUF5RCxxRUFBcUUsNkRBQTZELG9CQUFvQixHQUFHLEVBQUU7O0FBRWxqQix1Q0FBdUMsbUJBQW1CLDRCQUE0QixpREFBaUQsZ0JBQWdCLGtEQUFrRCw4REFBOEQsMEJBQTBCLDRDQUE0Qyx1QkFBdUIsa0JBQWtCLEVBQUUsT0FBTyxhQUFhLGdCQUFnQixnQkFBZ0IsZUFBZSwyQkFBMkIsb0JBQW9CLEVBQUUsRUFBRSw0QkFBNEIsbUJBQW1CLEVBQUUsT0FBTyx1QkFBdUIsNEJBQTRCLGtCQUFrQixFQUFFLDhCQUE4QixFQUFFLEVBQUU7O0FBRS9vQixzQ0FBc0MsdUNBQXVDLGtCQUFrQjs7QUFFL0YsaURBQWlELDBDQUEwQywwREFBMEQsRUFBRTs7QUFFdkosMENBQTBDLCtEQUErRCxxR0FBcUcsRUFBRSx5RUFBeUUsZUFBZSx5RUFBeUUsRUFBRSxFQUFFLHVIQUF1SDs7QUFFNWU7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVMsMENBQTBDO0FBQ25EO0FBQ0E7QUFDQSxXQUFXLGlEQUFpRDtBQUM1RDtBQUNBO0FBQ0EsYUFBYSxpQ0FBaUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlDQUFpQztBQUM5QztBQUNBO0FBQ0EsZUFBZSwwQ0FBMEM7QUFDekQ7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG9CQUFvQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSw0Q0FBNEM7QUFDM0Q7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG9CQUFvQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsK0NBQStDO0FBQzFEO0FBQ0E7QUFDQSxhQUFhLGlDQUFpQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaUNBQWlDO0FBQzlDO0FBQ0E7QUFDQSxlQUFlLDBDQUEwQztBQUN6RDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsb0JBQW9CO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLDRDQUE0QztBQUMzRDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsb0JBQW9CO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiMjAzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gsIF94MiwgX3gzKSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94LCBwcm9wZXJ0eSA9IF94MiwgcmVjZWl2ZXIgPSBfeDM7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3ggPSBwYXJlbnQ7IF94MiA9IHByb3BlcnR5OyBfeDMgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX3JlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cbnZhciBfcmVhY3REb20gPSByZXF1aXJlKCdyZWFjdC1kb20nKTtcblxudmFyIF9yZWFjdERvbTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdERvbSk7XG5cbnZhciBfc3RvcmVzQ2xpZW50RGF0YVN0b3JlID0gcmVxdWlyZSgnLi4vLi4vc3RvcmVzL0NsaWVudERhdGFTdG9yZScpO1xuXG52YXIgX3N0b3Jlc0NsaWVudERhdGFTdG9yZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdG9yZXNDbGllbnREYXRhU3RvcmUpO1xuXG52YXIgX2ljb25zRG93bmxvYWQgPSByZXF1aXJlKCcuLi9pY29ucy9Eb3dubG9hZCcpO1xuXG52YXIgX2ljb25zRG93bmxvYWQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaWNvbnNEb3dubG9hZCk7XG5cbnZhciBfY29uc3RhbnRzRXZlbnRUeXBlcyA9IHJlcXVpcmUoJy4uLy4uL2NvbnN0YW50cy9FdmVudFR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzRXZlbnRUeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25zdGFudHNFdmVudFR5cGVzKTtcblxudmFyIF91dGlsRm9ybWF0RGF0YSA9IHJlcXVpcmUoJy4uLy4uL3V0aWwvZm9ybWF0RGF0YScpO1xuXG52YXIgX3V0aWxGb3JtYXREYXRhMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3V0aWxGb3JtYXREYXRhKTtcblxudmFyIF91aUxpbmVDaGFydCA9IHJlcXVpcmUoJy4uL3VpL0xpbmVDaGFydCcpO1xuXG52YXIgX3VpTGluZUNoYXJ0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3VpTGluZUNoYXJ0KTtcblxudmFyIF9pY29uc1VwbG9hZCA9IHJlcXVpcmUoJy4uL2ljb25zL1VwbG9hZCcpO1xuXG52YXIgX2ljb25zVXBsb2FkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ljb25zVXBsb2FkKTtcblxudmFyIE1FVEhPRFNfVE9fQklORCA9IFsnb25UcmFuc2ZlckRhdGFSZXF1ZXN0RXJyb3InLCAnb25UcmFuc2ZlckRhdGFSZXF1ZXN0U3VjY2VzcyddO1xuXG52YXIgQ2xpZW50U3RhdHMgPSAoZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKENsaWVudFN0YXRzLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBDbGllbnRTdGF0cygpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENsaWVudFN0YXRzKTtcblxuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKENsaWVudFN0YXRzLnByb3RvdHlwZSksICdjb25zdHJ1Y3RvcicsIHRoaXMpLmNhbGwodGhpcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgc2lkZWJhcldpZHRoOiAwLFxuICAgICAgdHJhbnNmZXJEYXRhUmVxdWVzdEVycm9yOiBmYWxzZSxcbiAgICAgIHRyYW5zZmVyRGF0YVJlcXVlc3RTdWNjZXNzOiBmYWxzZVxuICAgIH07XG5cbiAgICBNRVRIT0RTX1RPX0JJTkQuZm9yRWFjaChmdW5jdGlvbiAobWV0aG9kKSB7XG4gICAgICBfdGhpc1ttZXRob2RdID0gX3RoaXNbbWV0aG9kXS5iaW5kKF90aGlzKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhDbGllbnRTdGF0cywgW3tcbiAgICBrZXk6ICdjb21wb25lbnREaWRNb3VudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHNpZGViYXJXaWR0aDogX3JlYWN0RG9tMlsnZGVmYXVsdCddLmZpbmRET01Ob2RlKHRoaXMpLm9mZnNldFdpZHRoXG4gICAgICB9KTtcbiAgICAgIF9zdG9yZXNDbGllbnREYXRhU3RvcmUyWydkZWZhdWx0J10ubGlzdGVuKF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9UUkFOU0ZFUl9EQVRBX1JFUVVFU1RfU1VDQ0VTUywgdGhpcy5vblRyYW5zZmVyRGF0YVJlcXVlc3RTdWNjZXNzKTtcbiAgICAgIF9zdG9yZXNDbGllbnREYXRhU3RvcmUyWydkZWZhdWx0J10uZmV0Y2hUcmFuc2ZlckRhdGEoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdjb21wb25lbnRXaWxsVW5tb3VudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgX3N0b3Jlc0NsaWVudERhdGFTdG9yZTJbJ2RlZmF1bHQnXS51bmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfVFJBTlNGRVJfREFUQV9SRVFVRVNUX1NVQ0NFU1MsIHRoaXMub25UcmFuc2ZlckRhdGFSZXF1ZXN0U3VjY2Vzcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnb25UcmFuc2ZlckRhdGFSZXF1ZXN0RXJyb3InLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvblRyYW5zZmVyRGF0YVJlcXVlc3RFcnJvcigpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICB0cmFuc2ZlckRhdGFSZXF1ZXN0RXJyb3I6IHRydWUsXG4gICAgICAgIHRyYW5zZmVyRGF0YVJlcXVlc3RTdWNjZXNzOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnb25UcmFuc2ZlckRhdGFSZXF1ZXN0U3VjY2VzcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uVHJhbnNmZXJEYXRhUmVxdWVzdFN1Y2Nlc3MoKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgdHJhbnNmZXJEYXRhUmVxdWVzdEVycm9yOiBmYWxzZSxcbiAgICAgICAgdHJhbnNmZXJEYXRhUmVxdWVzdFN1Y2Nlc3M6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3JlbmRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIGlmICh0aGlzLnN0YXRlLnRyYW5zZmVyRGF0YVJlcXVlc3RFcnJvcikge1xuICAgICAgICByZXR1cm4gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICAnRXJyb3InXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLnN0YXRlLnRyYW5zZmVyRGF0YVJlcXVlc3RTdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgICdMb2FkaW5nJ1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB2YXIgdGhyb3R0bGVzID0gX3N0b3Jlc0NsaWVudERhdGFTdG9yZTJbJ2RlZmF1bHQnXS5nZXRUaHJvdHRsZXMoKTtcbiAgICAgIHZhciB0cmFuc2ZlclJhdGUgPSBfc3RvcmVzQ2xpZW50RGF0YVN0b3JlMlsnZGVmYXVsdCddLmdldFRyYW5zZmVyUmF0ZSgpO1xuICAgICAgdmFyIHRyYW5zZmVyUmF0ZXMgPSBfc3RvcmVzQ2xpZW50RGF0YVN0b3JlMlsnZGVmYXVsdCddLmdldFRyYW5zZmVyUmF0ZXMoKTtcbiAgICAgIHZhciB0cmFuc2ZlclRvdGFscyA9IF9zdG9yZXNDbGllbnREYXRhU3RvcmUyWydkZWZhdWx0J10uZ2V0VHJhbnNmZXJUb3RhbHMoKTtcblxuICAgICAgdmFyIGRvd25sb2FkUmF0ZSA9IF91dGlsRm9ybWF0RGF0YTJbJ2RlZmF1bHQnXS5kYXRhKHRyYW5zZmVyUmF0ZS5kb3dubG9hZCwgJy9zJyk7XG4gICAgICB2YXIgZG93bmxvYWRUb3RhbCA9IF91dGlsRm9ybWF0RGF0YTJbJ2RlZmF1bHQnXS5kYXRhKHRyYW5zZmVyVG90YWxzLmRvd25sb2FkKTtcbiAgICAgIHZhciB1cGxvYWRSYXRlID0gX3V0aWxGb3JtYXREYXRhMlsnZGVmYXVsdCddLmRhdGEodHJhbnNmZXJSYXRlLnVwbG9hZCwgJy9zJyk7XG4gICAgICB2YXIgdXBsb2FkVG90YWwgPSBfdXRpbEZvcm1hdERhdGEyWydkZWZhdWx0J10uZGF0YSh0cmFuc2ZlclRvdGFscy51cGxvYWQpO1xuXG4gICAgICByZXR1cm4gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICdkaXYnLFxuICAgICAgICB7IGNsYXNzTmFtZTogJ2NsaWVudC1zdGF0cyBzaWRlYmFyX19pdGVtJyB9LFxuICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ2NsaWVudC1zdGF0IGNsaWVudC1zdGF0LS1kb3dubG9hZCcgfSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICdzcGFuJyxcbiAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnY2xpZW50LXN0YXRfX2ljb24nIH0sXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfaWNvbnNEb3dubG9hZDJbJ2RlZmF1bHQnXSwgbnVsbClcbiAgICAgICAgICApLFxuICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2NsaWVudC1zdGF0X19kYXRhJyB9LFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2NsaWVudC1zdGF0X19kYXRhLS1wcmltYXJ5JyB9LFxuICAgICAgICAgICAgICBkb3dubG9hZFJhdGUudmFsdWUsXG4gICAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdlbScsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICd1bml0JyB9LFxuICAgICAgICAgICAgICAgIGRvd25sb2FkUmF0ZS51bml0XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnY2xpZW50LXN0YXRfX2RhdGEtLXNlY29uZGFyeScgfSxcbiAgICAgICAgICAgICAgZG93bmxvYWRUb3RhbC52YWx1ZSxcbiAgICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ2VtJyxcbiAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ3VuaXQnIH0sXG4gICAgICAgICAgICAgICAgZG93bmxvYWRUb3RhbC51bml0XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICcgRG93bmxvYWRlZCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF91aUxpbmVDaGFydDJbJ2RlZmF1bHQnXSwge1xuICAgICAgICAgICAgZGF0YTogdHJhbnNmZXJSYXRlcy5kb3dubG9hZCxcbiAgICAgICAgICAgIGhlaWdodDogMTAwLFxuICAgICAgICAgICAgaWQ6ICdncmFwaC0tZG93bmxvYWQnLFxuICAgICAgICAgICAgbGltaXQ6IHRocm90dGxlcy5kb3dubG9hZCxcbiAgICAgICAgICAgIHNsdWc6ICdncmFwaC0tZG93bmxvYWQnLFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMuc3RhdGUuc2lkZWJhcldpZHRoIH0pXG4gICAgICAgICksXG4gICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICdkaXYnLFxuICAgICAgICAgIHsgY2xhc3NOYW1lOiAnY2xpZW50LXN0YXQgY2xpZW50LXN0YXQtLXVwbG9hZCcgfSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICdzcGFuJyxcbiAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnY2xpZW50LXN0YXRfX2ljb24nIH0sXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfaWNvbnNVcGxvYWQyWydkZWZhdWx0J10sIG51bGwpXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdjbGllbnQtc3RhdF9fZGF0YScgfSxcbiAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdjbGllbnQtc3RhdF9fZGF0YS0tcHJpbWFyeScgfSxcbiAgICAgICAgICAgICAgdXBsb2FkUmF0ZS52YWx1ZSxcbiAgICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ2VtJyxcbiAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ3VuaXQnIH0sXG4gICAgICAgICAgICAgICAgdXBsb2FkUmF0ZS51bml0XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnY2xpZW50LXN0YXRfX2RhdGEtLXNlY29uZGFyeScgfSxcbiAgICAgICAgICAgICAgdXBsb2FkVG90YWwudmFsdWUsXG4gICAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdlbScsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICd1bml0JyB9LFxuICAgICAgICAgICAgICAgIHVwbG9hZFRvdGFsLnVuaXRcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgJyBVcGxvYWRlZCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF91aUxpbmVDaGFydDJbJ2RlZmF1bHQnXSwge1xuICAgICAgICAgICAgZGF0YTogdHJhbnNmZXJSYXRlcy51cGxvYWQsXG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCxcbiAgICAgICAgICAgIGlkOiAnZ3JhcGgtLXVwbG9hZCcsXG4gICAgICAgICAgICBsaW1pdDogdGhyb3R0bGVzLnVwbG9hZCxcbiAgICAgICAgICAgIHNsdWc6ICdncmFwaC0tdXBsb2FkJyxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLnN0YXRlLnNpZGViYXJXaWR0aCB9KVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBDbGllbnRTdGF0cztcbn0pKF9yZWFjdDJbJ2RlZmF1bHQnXS5Db21wb25lbnQpO1xuXG5DbGllbnRTdGF0cy5kZWZhdWx0UHJvcHMgPSB7XG4gIGhpc3RvcnlMZW5ndGg6IDFcbn07XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IENsaWVudFN0YXRzO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9jb21wb25lbnRzL3NpZGViYXIvVHJhbnNmZXJEYXRhLmpzXG4gKiogbW9kdWxlIGlkID0gMjAzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iXSwic291cmNlUm9vdCI6IiJ9"); - -/***/ }, -/* 204 */ -/***/ 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(_x2, _x3, _x4) { var _again = true; _function: while (_again) { var object = _x2, property = _x3, receiver = _x4; _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 { _x2 = parent; _x3 = property; _x4 = 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 _constantsActionTypes = __webpack_require__(195);\n\nvar _constantsActionTypes2 = _interopRequireDefault(_constantsActionTypes);\n\nvar _dispatcherAppDispatcher = __webpack_require__(191);\n\nvar _dispatcherAppDispatcher2 = _interopRequireDefault(_dispatcherAppDispatcher);\n\nvar _BaseStore2 = __webpack_require__(199);\n\nvar _BaseStore3 = _interopRequireDefault(_BaseStore2);\n\nvar _actionsClientActions = __webpack_require__(205);\n\nvar _actionsClientActions2 = _interopRequireDefault(_actionsClientActions);\n\nvar _config = __webpack_require__(206);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _constantsEventTypes = __webpack_require__(196);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar ClientDataStoreClass = (function (_BaseStore) {\n _inherits(ClientDataStoreClass, _BaseStore);\n\n function ClientDataStoreClass() {\n _classCallCheck(this, ClientDataStoreClass);\n\n _get(Object.getPrototypeOf(ClientDataStoreClass.prototype), 'constructor', this).call(this);\n\n this.pollTransferDataID = null;\n this.transferRates = { download: [], upload: [] };\n this.transferTotals = { download: null, upload: null };\n this.throttles = { download: null, upload: null };\n }\n\n _createClass(ClientDataStoreClass, [{\n key: 'fetchTransferData',\n value: function fetchTransferData() {\n _actionsClientActions2['default'].fetchTransferHistory({\n snapshot: 'fiveMin'\n });\n\n _actionsClientActions2['default'].fetchTransferData();\n\n if (this.pollTransferDataID === null) {\n this.startPollingTransferData();\n }\n }\n }, {\n key: 'getThrottles',\n value: function getThrottles() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n if (options.latest) {\n return {\n download: this.throttles.download ? this.throttles.download[this.throttles.download.length - 1] : null,\n upload: this.throttles.upload ? this.throttles.upload[this.throttles.upload.length - 1] : null\n };\n }\n return this.throttles;\n }\n }, {\n key: 'getTransferTotals',\n value: function getTransferTotals() {\n return this.transferTotals;\n }\n }, {\n key: 'getTransferRate',\n value: function getTransferRate() {\n return this.transferRate;\n }\n }, {\n key: 'getTransferRates',\n value: function getTransferRates() {\n return this.transferRates;\n }\n }, {\n key: 'handleSetThrottleSuccess',\n value: function handleSetThrottleSuccess(data) {\n this.fetchTransferData();\n this.emit(_constantsEventTypes2['default'].CLIENT_SET_THROTTLE_SUCCESS);\n }\n }, {\n key: 'handleSetThrottleError',\n value: function handleSetThrottleError(error) {\n this.emit(_constantsEventTypes2['default'].CLIENT_SET_THROTTLE_ERROR);\n }\n }, {\n key: 'handleTransferDataSuccess',\n value: function handleTransferDataSuccess(transferData) {\n this.transferTotals = {\n download: transferData.downloadTotal,\n upload: transferData.uploadTotal\n };\n\n this.transferRate = {\n download: transferData.downloadRate,\n upload: transferData.uploadRate\n };\n\n // add the latest download & upload throttles to the end of the array and\n // remove the first element in the array. if the arrays are empty, fill in\n // zeros the last known throttle value.\n var index = 0;\n var downloadRateThrottleHistory = Object.assign([], this.throttles.download);\n var uploadRateThrottleHistory = Object.assign([], this.throttles.upload);\n\n if (downloadRateThrottleHistory.length === _config2['default'].maxHistoryStates) {\n\n downloadRateThrottleHistory.shift();\n uploadRateThrottleHistory.shift();\n\n downloadRateThrottleHistory.push(parseInt(transferData.downloadThrottle));\n uploadRateThrottleHistory.push(parseInt(transferData.uploadThrottle));\n } else {\n while (index < _config2['default'].maxHistoryStates) {\n // we assume the throttle history has been the same for all previous\n // history states.\n uploadRateThrottleHistory[index] = parseInt(transferData.uploadThrottle);\n downloadRateThrottleHistory[index] = parseInt(transferData.downloadThrottle);\n index++;\n }\n }\n\n this.throttles = {\n download: downloadRateThrottleHistory,\n upload: uploadRateThrottleHistory\n };\n\n this.emit(_constantsEventTypes2['default'].CLIENT_TRANSFER_DATA_REQUEST_SUCCESS);\n }\n }, {\n key: 'handleTransferDataError',\n value: function handleTransferDataError() {\n this.emit(_constantsEventTypes2['default'].CLIENT_TRANSFER_DATA_REQUEST_ERROR);\n }\n }, {\n key: 'handleTransferHistoryError',\n value: function handleTransferHistoryError(error) {\n console.trace(error);\n }\n }, {\n key: 'handleTransferHistorySuccess',\n value: function handleTransferHistorySuccess(transferData) {\n this.transferRates = {\n download: transferData.download,\n upload: transferData.upload\n };\n\n this.emit(_constantsEventTypes2['default'].CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS);\n }\n }, {\n key: 'startPollingTransferData',\n value: function startPollingTransferData() {\n this.pollTransferDataID = setInterval(this.fetchTransferData.bind(this), _config2['default'].pollInterval);\n }\n }, {\n key: 'startPollingTorrents',\n value: function startPollingTorrents() {\n clearInterval(this.pollTransferDataID);\n this.pollTransferDataID = null;\n }\n }, {\n key: 'stopPollingTorrentDetails',\n value: function stopPollingTorrentDetails() {\n clearInterval(this.pollTorrentDetailsIntervalID);\n this.isPollingTorrents = false;\n }\n }]);\n\n return ClientDataStoreClass;\n})(_BaseStore3['default']);\n\nvar ClientDataStore = new ClientDataStoreClass();\n\n_dispatcherAppDispatcher2['default'].register(function (payload) {\n var action = payload.action;\n var source = payload.source;\n\n switch (action.type) {\n case _constantsActionTypes2['default'].CLIENT_FETCH_TRANSFER_DATA_SUCCESS:\n ClientDataStore.handleTransferDataSuccess(action.data.transferData);\n break;\n case _constantsActionTypes2['default'].CLIENT_FETCH_TRANSFER_DATA_ERROR:\n ClientDataStore.handleTransferDataError(action.data.error);\n break;\n case _constantsActionTypes2['default'].CLIENT_SET_THROTTLE_SUCCESS:\n ClientDataStore.handleSetThrottleSuccess(action.data.transferData);\n break;\n case _constantsActionTypes2['default'].CLIENT_SET_THROTTLE_ERROR:\n ClientDataStore.handleSetThrottleError(action.data.error);\n break;\n case _constantsActionTypes2['default'].CLIENT_FETCH_TRANSFER_HISTORY_ERROR:\n ClientDataStore.handleTransferHistoryError(action.error);\n break;\n case _constantsActionTypes2['default'].CLIENT_FETCH_TRANSFER_HISTORY_SUCCESS:\n ClientDataStore.handleTransferHistorySuccess(action.data);\n break;\n }\n});\n\nexports['default'] = ClientDataStore;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvc3RvcmVzL0NsaWVudERhdGFTdG9yZS5qcz82ZDllIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGlDQUFpQywyQ0FBMkMsZ0JBQWdCLGtCQUFrQixPQUFPLDJCQUEyQix3REFBd0QsZ0NBQWdDLHVEQUF1RCwyREFBMkQsRUFBRSxFQUFFLHlEQUF5RCxxRUFBcUUsNkRBQTZELG9CQUFvQixHQUFHLEVBQUU7O0FBRWxqQix3Q0FBd0MsbUJBQW1CLDRCQUE0QixrREFBa0QsZ0JBQWdCLGtEQUFrRCw4REFBOEQsMEJBQTBCLDRDQUE0Qyx1QkFBdUIsa0JBQWtCLEVBQUUsT0FBTyxjQUFjLGdCQUFnQixnQkFBZ0IsZUFBZSwyQkFBMkIsb0JBQW9CLEVBQUUsRUFBRSw0QkFBNEIsbUJBQW1CLEVBQUUsT0FBTyx1QkFBdUIsNEJBQTRCLGtCQUFrQixFQUFFLDhCQUE4QixFQUFFLEVBQUU7O0FBRWxwQixzQ0FBc0MsdUNBQXVDLGtCQUFrQjs7QUFFL0YsaURBQWlELDBDQUEwQywwREFBMEQsRUFBRTs7QUFFdkosMENBQTBDLCtEQUErRCxxR0FBcUcsRUFBRSx5RUFBeUUsZUFBZSx5RUFBeUUsRUFBRSxFQUFFLHVIQUF1SDs7QUFFNWU7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsMEJBQTBCO0FBQzFCLDJCQUEyQjtBQUMzQixzQkFBc0I7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDRFQUE0RTs7QUFFNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSIsImZpbGUiOiIyMDQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChfeDIsIF94MywgX3g0KSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94MiwgcHJvcGVydHkgPSBfeDMsIHJlY2VpdmVyID0gX3g0OyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94MiA9IHBhcmVudDsgX3gzID0gcHJvcGVydHk7IF94NCA9IHJlY2VpdmVyOyBfYWdhaW4gPSB0cnVlOyBkZXNjID0gcGFyZW50ID0gdW5kZWZpbmVkOyBjb250aW51ZSBfZnVuY3Rpb247IH0gfSBlbHNlIGlmICgndmFsdWUnIGluIGRlc2MpIHsgcmV0dXJuIGRlc2MudmFsdWU7IH0gZWxzZSB7IHZhciBnZXR0ZXIgPSBkZXNjLmdldDsgaWYgKGdldHRlciA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTsgfSB9IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBfY29uc3RhbnRzQWN0aW9uVHlwZXMgPSByZXF1aXJlKCcuLi9jb25zdGFudHMvQWN0aW9uVHlwZXMnKTtcblxudmFyIF9jb25zdGFudHNBY3Rpb25UeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25zdGFudHNBY3Rpb25UeXBlcyk7XG5cbnZhciBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIgPSByZXF1aXJlKCcuLi9kaXNwYXRjaGVyL0FwcERpc3BhdGNoZXInKTtcblxudmFyIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcik7XG5cbnZhciBfQmFzZVN0b3JlMiA9IHJlcXVpcmUoJy4vQmFzZVN0b3JlJyk7XG5cbnZhciBfQmFzZVN0b3JlMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX0Jhc2VTdG9yZTIpO1xuXG52YXIgX2FjdGlvbnNDbGllbnRBY3Rpb25zID0gcmVxdWlyZSgnLi4vYWN0aW9ucy9DbGllbnRBY3Rpb25zJyk7XG5cbnZhciBfYWN0aW9uc0NsaWVudEFjdGlvbnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYWN0aW9uc0NsaWVudEFjdGlvbnMpO1xuXG52YXIgX2NvbmZpZyA9IHJlcXVpcmUoJy4uLy4uLy4uLy4uL2NvbmZpZycpO1xuXG52YXIgX2NvbmZpZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25maWcpO1xuXG52YXIgX2NvbnN0YW50c0V2ZW50VHlwZXMgPSByZXF1aXJlKCcuLi9jb25zdGFudHMvRXZlbnRUeXBlcycpO1xuXG52YXIgX2NvbnN0YW50c0V2ZW50VHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzRXZlbnRUeXBlcyk7XG5cbnZhciBDbGllbnREYXRhU3RvcmVDbGFzcyA9IChmdW5jdGlvbiAoX0Jhc2VTdG9yZSkge1xuICBfaW5oZXJpdHMoQ2xpZW50RGF0YVN0b3JlQ2xhc3MsIF9CYXNlU3RvcmUpO1xuXG4gIGZ1bmN0aW9uIENsaWVudERhdGFTdG9yZUNsYXNzKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDbGllbnREYXRhU3RvcmVDbGFzcyk7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihDbGllbnREYXRhU3RvcmVDbGFzcy5wcm90b3R5cGUpLCAnY29uc3RydWN0b3InLCB0aGlzKS5jYWxsKHRoaXMpO1xuXG4gICAgdGhpcy5wb2xsVHJhbnNmZXJEYXRhSUQgPSBudWxsO1xuICAgIHRoaXMudHJhbnNmZXJSYXRlcyA9IHsgZG93bmxvYWQ6IFtdLCB1cGxvYWQ6IFtdIH07XG4gICAgdGhpcy50cmFuc2ZlclRvdGFscyA9IHsgZG93bmxvYWQ6IG51bGwsIHVwbG9hZDogbnVsbCB9O1xuICAgIHRoaXMudGhyb3R0bGVzID0geyBkb3dubG9hZDogbnVsbCwgdXBsb2FkOiBudWxsIH07XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQ2xpZW50RGF0YVN0b3JlQ2xhc3MsIFt7XG4gICAga2V5OiAnZmV0Y2hUcmFuc2ZlckRhdGEnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmZXRjaFRyYW5zZmVyRGF0YSgpIHtcbiAgICAgIF9hY3Rpb25zQ2xpZW50QWN0aW9uczJbJ2RlZmF1bHQnXS5mZXRjaFRyYW5zZmVySGlzdG9yeSh7XG4gICAgICAgIHNuYXBzaG90OiAnZml2ZU1pbidcbiAgICAgIH0pO1xuXG4gICAgICBfYWN0aW9uc0NsaWVudEFjdGlvbnMyWydkZWZhdWx0J10uZmV0Y2hUcmFuc2ZlckRhdGEoKTtcblxuICAgICAgaWYgKHRoaXMucG9sbFRyYW5zZmVyRGF0YUlEID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuc3RhcnRQb2xsaW5nVHJhbnNmZXJEYXRhKCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0VGhyb3R0bGVzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VGhyb3R0bGVzKCkge1xuICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1swXTtcblxuICAgICAgaWYgKG9wdGlvbnMubGF0ZXN0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZG93bmxvYWQ6IHRoaXMudGhyb3R0bGVzLmRvd25sb2FkID8gdGhpcy50aHJvdHRsZXMuZG93bmxvYWRbdGhpcy50aHJvdHRsZXMuZG93bmxvYWQubGVuZ3RoIC0gMV0gOiBudWxsLFxuICAgICAgICAgIHVwbG9hZDogdGhpcy50aHJvdHRsZXMudXBsb2FkID8gdGhpcy50aHJvdHRsZXMudXBsb2FkW3RoaXMudGhyb3R0bGVzLnVwbG9hZC5sZW5ndGggLSAxXSA6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnRocm90dGxlcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRUcmFuc2ZlclRvdGFscycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFRyYW5zZmVyVG90YWxzKCkge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNmZXJUb3RhbHM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0VHJhbnNmZXJSYXRlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VHJhbnNmZXJSYXRlKCkge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNmZXJSYXRlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldFRyYW5zZmVyUmF0ZXMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUcmFuc2ZlclJhdGVzKCkge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNmZXJSYXRlcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVTZXRUaHJvdHRsZVN1Y2Nlc3MnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVTZXRUaHJvdHRsZVN1Y2Nlc3MoZGF0YSkge1xuICAgICAgdGhpcy5mZXRjaFRyYW5zZmVyRGF0YSgpO1xuICAgICAgdGhpcy5lbWl0KF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9TRVRfVEhST1RUTEVfU1VDQ0VTUyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlU2V0VGhyb3R0bGVFcnJvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVNldFRocm90dGxlRXJyb3IoZXJyb3IpIHtcbiAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfU0VUX1RIUk9UVExFX0VSUk9SKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVUcmFuc2ZlckRhdGFTdWNjZXNzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlVHJhbnNmZXJEYXRhU3VjY2Vzcyh0cmFuc2ZlckRhdGEpIHtcbiAgICAgIHRoaXMudHJhbnNmZXJUb3RhbHMgPSB7XG4gICAgICAgIGRvd25sb2FkOiB0cmFuc2ZlckRhdGEuZG93bmxvYWRUb3RhbCxcbiAgICAgICAgdXBsb2FkOiB0cmFuc2ZlckRhdGEudXBsb2FkVG90YWxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMudHJhbnNmZXJSYXRlID0ge1xuICAgICAgICBkb3dubG9hZDogdHJhbnNmZXJEYXRhLmRvd25sb2FkUmF0ZSxcbiAgICAgICAgdXBsb2FkOiB0cmFuc2ZlckRhdGEudXBsb2FkUmF0ZVxuICAgICAgfTtcblxuICAgICAgLy8gYWRkIHRoZSBsYXRlc3QgZG93bmxvYWQgJiB1cGxvYWQgdGhyb3R0bGVzIHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5IGFuZFxuICAgICAgLy8gcmVtb3ZlIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBhcnJheS4gaWYgdGhlIGFycmF5cyBhcmUgZW1wdHksIGZpbGwgaW5cbiAgICAgIC8vIHplcm9zIHRoZSBsYXN0IGtub3duIHRocm90dGxlIHZhbHVlLlxuICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgIHZhciBkb3dubG9hZFJhdGVUaHJvdHRsZUhpc3RvcnkgPSBPYmplY3QuYXNzaWduKFtdLCB0aGlzLnRocm90dGxlcy5kb3dubG9hZCk7XG4gICAgICB2YXIgdXBsb2FkUmF0ZVRocm90dGxlSGlzdG9yeSA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMudGhyb3R0bGVzLnVwbG9hZCk7XG5cbiAgICAgIGlmIChkb3dubG9hZFJhdGVUaHJvdHRsZUhpc3RvcnkubGVuZ3RoID09PSBfY29uZmlnMlsnZGVmYXVsdCddLm1heEhpc3RvcnlTdGF0ZXMpIHtcblxuICAgICAgICBkb3dubG9hZFJhdGVUaHJvdHRsZUhpc3Rvcnkuc2hpZnQoKTtcbiAgICAgICAgdXBsb2FkUmF0ZVRocm90dGxlSGlzdG9yeS5zaGlmdCgpO1xuXG4gICAgICAgIGRvd25sb2FkUmF0ZVRocm90dGxlSGlzdG9yeS5wdXNoKHBhcnNlSW50KHRyYW5zZmVyRGF0YS5kb3dubG9hZFRocm90dGxlKSk7XG4gICAgICAgIHVwbG9hZFJhdGVUaHJvdHRsZUhpc3RvcnkucHVzaChwYXJzZUludCh0cmFuc2ZlckRhdGEudXBsb2FkVGhyb3R0bGUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdoaWxlIChpbmRleCA8IF9jb25maWcyWydkZWZhdWx0J10ubWF4SGlzdG9yeVN0YXRlcykge1xuICAgICAgICAgIC8vIHdlIGFzc3VtZSB0aGUgdGhyb3R0bGUgaGlzdG9yeSBoYXMgYmVlbiB0aGUgc2FtZSBmb3IgYWxsIHByZXZpb3VzXG4gICAgICAgICAgLy8gaGlzdG9yeSBzdGF0ZXMuXG4gICAgICAgICAgdXBsb2FkUmF0ZVRocm90dGxlSGlzdG9yeVtpbmRleF0gPSBwYXJzZUludCh0cmFuc2ZlckRhdGEudXBsb2FkVGhyb3R0bGUpO1xuICAgICAgICAgIGRvd25sb2FkUmF0ZVRocm90dGxlSGlzdG9yeVtpbmRleF0gPSBwYXJzZUludCh0cmFuc2ZlckRhdGEuZG93bmxvYWRUaHJvdHRsZSk7XG4gICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLnRocm90dGxlcyA9IHtcbiAgICAgICAgZG93bmxvYWQ6IGRvd25sb2FkUmF0ZVRocm90dGxlSGlzdG9yeSxcbiAgICAgICAgdXBsb2FkOiB1cGxvYWRSYXRlVGhyb3R0bGVIaXN0b3J5XG4gICAgICB9O1xuXG4gICAgICB0aGlzLmVtaXQoX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1RSQU5TRkVSX0RBVEFfUkVRVUVTVF9TVUNDRVNTKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVUcmFuc2ZlckRhdGFFcnJvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVRyYW5zZmVyRGF0YUVycm9yKCkge1xuICAgICAgdGhpcy5lbWl0KF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9UUkFOU0ZFUl9EQVRBX1JFUVVFU1RfRVJST1IpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZVRyYW5zZmVySGlzdG9yeUVycm9yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlVHJhbnNmZXJIaXN0b3J5RXJyb3IoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUudHJhY2UoZXJyb3IpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZVRyYW5zZmVySGlzdG9yeVN1Y2Nlc3MnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVUcmFuc2Zlckhpc3RvcnlTdWNjZXNzKHRyYW5zZmVyRGF0YSkge1xuICAgICAgdGhpcy50cmFuc2ZlclJhdGVzID0ge1xuICAgICAgICBkb3dubG9hZDogdHJhbnNmZXJEYXRhLmRvd25sb2FkLFxuICAgICAgICB1cGxvYWQ6IHRyYW5zZmVyRGF0YS51cGxvYWRcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfVFJBTlNGRVJfSElTVE9SWV9SRVFVRVNUX1NVQ0NFU1MpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3N0YXJ0UG9sbGluZ1RyYW5zZmVyRGF0YScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0YXJ0UG9sbGluZ1RyYW5zZmVyRGF0YSgpIHtcbiAgICAgIHRoaXMucG9sbFRyYW5zZmVyRGF0YUlEID0gc2V0SW50ZXJ2YWwodGhpcy5mZXRjaFRyYW5zZmVyRGF0YS5iaW5kKHRoaXMpLCBfY29uZmlnMlsnZGVmYXVsdCddLnBvbGxJbnRlcnZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc3RhcnRQb2xsaW5nVG9ycmVudHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdGFydFBvbGxpbmdUb3JyZW50cygpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5wb2xsVHJhbnNmZXJEYXRhSUQpO1xuICAgICAgdGhpcy5wb2xsVHJhbnNmZXJEYXRhSUQgPSBudWxsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3N0b3BQb2xsaW5nVG9ycmVudERldGFpbHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdG9wUG9sbGluZ1RvcnJlbnREZXRhaWxzKCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnBvbGxUb3JyZW50RGV0YWlsc0ludGVydmFsSUQpO1xuICAgICAgdGhpcy5pc1BvbGxpbmdUb3JyZW50cyA9IGZhbHNlO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBDbGllbnREYXRhU3RvcmVDbGFzcztcbn0pKF9CYXNlU3RvcmUzWydkZWZhdWx0J10pO1xuXG52YXIgQ2xpZW50RGF0YVN0b3JlID0gbmV3IENsaWVudERhdGFTdG9yZUNsYXNzKCk7XG5cbl9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5yZWdpc3RlcihmdW5jdGlvbiAocGF5bG9hZCkge1xuICB2YXIgYWN0aW9uID0gcGF5bG9hZC5hY3Rpb247XG4gIHZhciBzb3VyY2UgPSBwYXlsb2FkLnNvdXJjZTtcblxuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX0ZFVENIX1RSQU5TRkVSX0RBVEFfU1VDQ0VTUzpcbiAgICAgIENsaWVudERhdGFTdG9yZS5oYW5kbGVUcmFuc2ZlckRhdGFTdWNjZXNzKGFjdGlvbi5kYXRhLnRyYW5zZmVyRGF0YSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVFJBTlNGRVJfREFUQV9FUlJPUjpcbiAgICAgIENsaWVudERhdGFTdG9yZS5oYW5kbGVUcmFuc2ZlckRhdGFFcnJvcihhY3Rpb24uZGF0YS5lcnJvcik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfU0VUX1RIUk9UVExFX1NVQ0NFU1M6XG4gICAgICBDbGllbnREYXRhU3RvcmUuaGFuZGxlU2V0VGhyb3R0bGVTdWNjZXNzKGFjdGlvbi5kYXRhLnRyYW5zZmVyRGF0YSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfU0VUX1RIUk9UVExFX0VSUk9SOlxuICAgICAgQ2xpZW50RGF0YVN0b3JlLmhhbmRsZVNldFRocm90dGxlRXJyb3IoYWN0aW9uLmRhdGEuZXJyb3IpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX0ZFVENIX1RSQU5TRkVSX0hJU1RPUllfRVJST1I6XG4gICAgICBDbGllbnREYXRhU3RvcmUuaGFuZGxlVHJhbnNmZXJIaXN0b3J5RXJyb3IoYWN0aW9uLmVycm9yKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9GRVRDSF9UUkFOU0ZFUl9ISVNUT1JZX1NVQ0NFU1M6XG4gICAgICBDbGllbnREYXRhU3RvcmUuaGFuZGxlVHJhbnNmZXJIaXN0b3J5U3VjY2VzcyhhY3Rpb24uZGF0YSk7XG4gICAgICBicmVhaztcbiAgfVxufSk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IENsaWVudERhdGFTdG9yZTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9jbGllbnQvc291cmNlL3NjcmlwdHMvc3RvcmVzL0NsaWVudERhdGFTdG9yZS5qc1xuICoqIG1vZHVsZSBpZCA9IDIwNFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); + 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 _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(157);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _iconsDownload = __webpack_require__(207);\n\nvar _iconsDownload2 = _interopRequireDefault(_iconsDownload);\n\nvar _constantsEventTypes = __webpack_require__(196);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _utilFormatData = __webpack_require__(208);\n\nvar _utilFormatData2 = _interopRequireDefault(_utilFormatData);\n\nvar _uiLineChart = __webpack_require__(209);\n\nvar _uiLineChart2 = _interopRequireDefault(_uiLineChart);\n\nvar _uiLoadingIndicator = __webpack_require__(242);\n\nvar _uiLoadingIndicator2 = _interopRequireDefault(_uiLoadingIndicator);\n\nvar _storesTransferDataStore = __webpack_require__(261);\n\nvar _storesTransferDataStore2 = _interopRequireDefault(_storesTransferDataStore);\n\nvar _iconsUpload = __webpack_require__(211);\n\nvar _iconsUpload2 = _interopRequireDefault(_iconsUpload);\n\nvar METHODS_TO_BIND = ['onTransferDataRequestError', 'onTransferDataRequestSuccess', 'onTransferHistoryRequestSuccess'];\n\nvar ClientStats = (function (_React$Component) {\n _inherits(ClientStats, _React$Component);\n\n function ClientStats() {\n var _this = this;\n\n _classCallCheck(this, ClientStats);\n\n _get(Object.getPrototypeOf(ClientStats.prototype), 'constructor', this).call(this);\n\n this.state = {\n sidebarWidth: 0,\n transferHistoryRequestSuccess: false,\n transferDataRequestError: false,\n transferDataRequestSuccess: false\n };\n\n METHODS_TO_BIND.forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n }\n\n _createClass(ClientStats, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.setState({\n sidebarWidth: _reactDom2['default'].findDOMNode(this).offsetWidth\n });\n _storesTransferDataStore2['default'].listen(_constantsEventTypes2['default'].CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, this.onTransferDataRequestSuccess);\n _storesTransferDataStore2['default'].listen(_constantsEventTypes2['default'].CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS, this.onTransferHistoryRequestSuccess);\n _storesTransferDataStore2['default'].fetchTransferData();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _storesTransferDataStore2['default'].unlisten(_constantsEventTypes2['default'].CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, this.onTransferDataRequestSuccess);\n }\n }, {\n key: 'isLoading',\n value: function isLoading() {\n return !this.state.transferHistoryRequestSuccess || !this.state.transferDataRequestSuccess;\n }\n }, {\n key: 'onTransferDataRequestError',\n value: function onTransferDataRequestError() {\n this.setState({\n transferDataRequestError: true,\n transferDataRequestSuccess: false\n });\n }\n }, {\n key: 'onTransferDataRequestSuccess',\n value: function onTransferDataRequestSuccess() {\n this.setState({\n transferDataRequestError: false,\n transferDataRequestSuccess: true\n });\n }\n }, {\n key: 'onTransferHistoryRequestSuccess',\n value: function onTransferHistoryRequestSuccess() {\n if (!this.state.transferHistoryRequestSuccess) {\n this.setState({\n transferHistoryRequestSuccess: true\n });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n if (this.state.transferDataRequestError) {\n return _react2['default'].createElement(\n 'div',\n null,\n 'Error'\n );\n } else if (this.isLoading()) {\n return _react2['default'].createElement(_uiLoadingIndicator2['default'], null);\n }\n\n var throttles = _storesTransferDataStore2['default'].getThrottles();\n var transferRate = _storesTransferDataStore2['default'].getTransferRate();\n var transferRates = _storesTransferDataStore2['default'].getTransferRates();\n var transferTotals = _storesTransferDataStore2['default'].getTransferTotals();\n\n var downloadRate = _utilFormatData2['default'].data(transferRate.download, '/s');\n var downloadTotal = _utilFormatData2['default'].data(transferTotals.download);\n var uploadRate = _utilFormatData2['default'].data(transferRate.upload, '/s');\n var uploadTotal = _utilFormatData2['default'].data(transferTotals.upload);\n\n return _react2['default'].createElement(\n 'div',\n { className: 'client-stats sidebar__item' },\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat client-stat--download' },\n _react2['default'].createElement(\n 'span',\n { className: 'client-stat__icon' },\n _react2['default'].createElement(_iconsDownload2['default'], null)\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data' },\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data--primary' },\n downloadRate.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n downloadRate.unit\n )\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data--secondary' },\n downloadTotal.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n downloadTotal.unit\n ),\n ' Downloaded'\n )\n ),\n _react2['default'].createElement(_uiLineChart2['default'], {\n data: transferRates.download,\n height: 100,\n id: 'graph--download',\n limit: throttles.download,\n slug: 'graph--download',\n width: this.state.sidebarWidth })\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat client-stat--upload' },\n _react2['default'].createElement(\n 'span',\n { className: 'client-stat__icon' },\n _react2['default'].createElement(_iconsUpload2['default'], null)\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data' },\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data--primary' },\n uploadRate.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n uploadRate.unit\n )\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data--secondary' },\n uploadTotal.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n uploadTotal.unit\n ),\n ' Uploaded'\n )\n ),\n _react2['default'].createElement(_uiLineChart2['default'], {\n data: transferRates.upload,\n height: 100,\n id: 'graph--upload',\n limit: throttles.upload,\n slug: 'graph--upload',\n width: this.state.sidebarWidth })\n )\n );\n }\n }]);\n\n return ClientStats;\n})(_react2['default'].Component);\n\nClientStats.defaultProps = {\n historyLength: 1\n};\n\nexports['default'] = ClientStats;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy9zaWRlYmFyL1RyYW5zZmVyRGF0YS5qcz9mZTM1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGlDQUFpQywyQ0FBMkMsZ0JBQWdCLGtCQUFrQixPQUFPLDJCQUEyQix3REFBd0QsZ0NBQWdDLHVEQUF1RCwyREFBMkQsRUFBRSxFQUFFLHlEQUF5RCxxRUFBcUUsNkRBQTZELG9CQUFvQixHQUFHLEVBQUU7O0FBRWxqQix1Q0FBdUMsbUJBQW1CLDRCQUE0QixpREFBaUQsZ0JBQWdCLGtEQUFrRCw4REFBOEQsMEJBQTBCLDRDQUE0Qyx1QkFBdUIsa0JBQWtCLEVBQUUsT0FBTyxhQUFhLGdCQUFnQixnQkFBZ0IsZUFBZSwyQkFBMkIsb0JBQW9CLEVBQUUsRUFBRSw0QkFBNEIsbUJBQW1CLEVBQUUsT0FBTyx1QkFBdUIsNEJBQTRCLGtCQUFrQixFQUFFLDhCQUE4QixFQUFFLEVBQUU7O0FBRS9vQixzQ0FBc0MsdUNBQXVDLGtCQUFrQjs7QUFFL0YsaURBQWlELDBDQUEwQywwREFBMEQsRUFBRTs7QUFFdkosMENBQTBDLCtEQUErRCxxR0FBcUcsRUFBRSx5RUFBeUUsZUFBZSx5RUFBeUUsRUFBRSxFQUFFLHVIQUF1SDs7QUFFNWU7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVMsMENBQTBDO0FBQ25EO0FBQ0E7QUFDQSxXQUFXLGlEQUFpRDtBQUM1RDtBQUNBO0FBQ0EsYUFBYSxpQ0FBaUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGlDQUFpQztBQUM5QztBQUNBO0FBQ0EsZUFBZSwwQ0FBMEM7QUFDekQ7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG9CQUFvQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSw0Q0FBNEM7QUFDM0Q7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG9CQUFvQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsK0NBQStDO0FBQzFEO0FBQ0E7QUFDQSxhQUFhLGlDQUFpQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsaUNBQWlDO0FBQzlDO0FBQ0E7QUFDQSxlQUFlLDBDQUEwQztBQUN6RDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsb0JBQW9CO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLDRDQUE0QztBQUMzRDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsb0JBQW9CO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiMjAzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gsIF94MiwgX3gzKSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94LCBwcm9wZXJ0eSA9IF94MiwgcmVjZWl2ZXIgPSBfeDM7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3ggPSBwYXJlbnQ7IF94MiA9IHByb3BlcnR5OyBfeDMgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX3JlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cbnZhciBfcmVhY3REb20gPSByZXF1aXJlKCdyZWFjdC1kb20nKTtcblxudmFyIF9yZWFjdERvbTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdERvbSk7XG5cbnZhciBfaWNvbnNEb3dubG9hZCA9IHJlcXVpcmUoJy4uL2ljb25zL0Rvd25sb2FkJyk7XG5cbnZhciBfaWNvbnNEb3dubG9hZDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pY29uc0Rvd25sb2FkKTtcblxudmFyIF9jb25zdGFudHNFdmVudFR5cGVzID0gcmVxdWlyZSgnLi4vLi4vY29uc3RhbnRzL0V2ZW50VHlwZXMnKTtcblxudmFyIF9jb25zdGFudHNFdmVudFR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbnN0YW50c0V2ZW50VHlwZXMpO1xuXG52YXIgX3V0aWxGb3JtYXREYXRhID0gcmVxdWlyZSgnLi4vLi4vdXRpbC9mb3JtYXREYXRhJyk7XG5cbnZhciBfdXRpbEZvcm1hdERhdGEyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdXRpbEZvcm1hdERhdGEpO1xuXG52YXIgX3VpTGluZUNoYXJ0ID0gcmVxdWlyZSgnLi4vdWkvTGluZUNoYXJ0Jyk7XG5cbnZhciBfdWlMaW5lQ2hhcnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdWlMaW5lQ2hhcnQpO1xuXG52YXIgX3VpTG9hZGluZ0luZGljYXRvciA9IHJlcXVpcmUoJy4uL3VpL0xvYWRpbmdJbmRpY2F0b3InKTtcblxudmFyIF91aUxvYWRpbmdJbmRpY2F0b3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdWlMb2FkaW5nSW5kaWNhdG9yKTtcblxudmFyIF9zdG9yZXNUcmFuc2ZlckRhdGFTdG9yZSA9IHJlcXVpcmUoJy4uLy4uL3N0b3Jlcy9UcmFuc2ZlckRhdGFTdG9yZScpO1xuXG52YXIgX3N0b3Jlc1RyYW5zZmVyRGF0YVN0b3JlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N0b3Jlc1RyYW5zZmVyRGF0YVN0b3JlKTtcblxudmFyIF9pY29uc1VwbG9hZCA9IHJlcXVpcmUoJy4uL2ljb25zL1VwbG9hZCcpO1xuXG52YXIgX2ljb25zVXBsb2FkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ljb25zVXBsb2FkKTtcblxudmFyIE1FVEhPRFNfVE9fQklORCA9IFsnb25UcmFuc2ZlckRhdGFSZXF1ZXN0RXJyb3InLCAnb25UcmFuc2ZlckRhdGFSZXF1ZXN0U3VjY2VzcycsICdvblRyYW5zZmVySGlzdG9yeVJlcXVlc3RTdWNjZXNzJ107XG5cbnZhciBDbGllbnRTdGF0cyA9IChmdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQ2xpZW50U3RhdHMsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIENsaWVudFN0YXRzKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ2xpZW50U3RhdHMpO1xuXG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoQ2xpZW50U3RhdHMucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuY2FsbCh0aGlzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBzaWRlYmFyV2lkdGg6IDAsXG4gICAgICB0cmFuc2Zlckhpc3RvcnlSZXF1ZXN0U3VjY2VzczogZmFsc2UsXG4gICAgICB0cmFuc2ZlckRhdGFSZXF1ZXN0RXJyb3I6IGZhbHNlLFxuICAgICAgdHJhbnNmZXJEYXRhUmVxdWVzdFN1Y2Nlc3M6IGZhbHNlXG4gICAgfTtcblxuICAgIE1FVEhPRFNfVE9fQklORC5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICAgIF90aGlzW21ldGhvZF0gPSBfdGhpc1ttZXRob2RdLmJpbmQoX3RoaXMpO1xuICAgIH0pO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENsaWVudFN0YXRzLCBbe1xuICAgIGtleTogJ2NvbXBvbmVudERpZE1vdW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc2lkZWJhcldpZHRoOiBfcmVhY3REb20yWydkZWZhdWx0J10uZmluZERPTU5vZGUodGhpcykub2Zmc2V0V2lkdGhcbiAgICAgIH0pO1xuICAgICAgX3N0b3Jlc1RyYW5zZmVyRGF0YVN0b3JlMlsnZGVmYXVsdCddLmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfVFJBTlNGRVJfREFUQV9SRVFVRVNUX1NVQ0NFU1MsIHRoaXMub25UcmFuc2ZlckRhdGFSZXF1ZXN0U3VjY2Vzcyk7XG4gICAgICBfc3RvcmVzVHJhbnNmZXJEYXRhU3RvcmUyWydkZWZhdWx0J10ubGlzdGVuKF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9UUkFOU0ZFUl9ISVNUT1JZX1JFUVVFU1RfU1VDQ0VTUywgdGhpcy5vblRyYW5zZmVySGlzdG9yeVJlcXVlc3RTdWNjZXNzKTtcbiAgICAgIF9zdG9yZXNUcmFuc2ZlckRhdGFTdG9yZTJbJ2RlZmF1bHQnXS5mZXRjaFRyYW5zZmVyRGF0YSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2NvbXBvbmVudFdpbGxVbm1vdW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBfc3RvcmVzVHJhbnNmZXJEYXRhU3RvcmUyWydkZWZhdWx0J10udW5saXN0ZW4oX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1RSQU5TRkVSX0RBVEFfUkVRVUVTVF9TVUNDRVNTLCB0aGlzLm9uVHJhbnNmZXJEYXRhUmVxdWVzdFN1Y2Nlc3MpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2lzTG9hZGluZycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzTG9hZGluZygpIHtcbiAgICAgIHJldHVybiAhdGhpcy5zdGF0ZS50cmFuc2Zlckhpc3RvcnlSZXF1ZXN0U3VjY2VzcyB8fCAhdGhpcy5zdGF0ZS50cmFuc2ZlckRhdGFSZXF1ZXN0U3VjY2VzcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdvblRyYW5zZmVyRGF0YVJlcXVlc3RFcnJvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uVHJhbnNmZXJEYXRhUmVxdWVzdEVycm9yKCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHRyYW5zZmVyRGF0YVJlcXVlc3RFcnJvcjogdHJ1ZSxcbiAgICAgICAgdHJhbnNmZXJEYXRhUmVxdWVzdFN1Y2Nlc3M6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdvblRyYW5zZmVyRGF0YVJlcXVlc3RTdWNjZXNzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25UcmFuc2ZlckRhdGFSZXF1ZXN0U3VjY2VzcygpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICB0cmFuc2ZlckRhdGFSZXF1ZXN0RXJyb3I6IGZhbHNlLFxuICAgICAgICB0cmFuc2ZlckRhdGFSZXF1ZXN0U3VjY2VzczogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnb25UcmFuc2Zlckhpc3RvcnlSZXF1ZXN0U3VjY2VzcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uVHJhbnNmZXJIaXN0b3J5UmVxdWVzdFN1Y2Nlc3MoKSB7XG4gICAgICBpZiAoIXRoaXMuc3RhdGUudHJhbnNmZXJIaXN0b3J5UmVxdWVzdFN1Y2Nlc3MpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgdHJhbnNmZXJIaXN0b3J5UmVxdWVzdFN1Y2Nlc3M6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVuZGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgaWYgKHRoaXMuc3RhdGUudHJhbnNmZXJEYXRhUmVxdWVzdEVycm9yKSB7XG4gICAgICAgIHJldHVybiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgICdFcnJvcidcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0xvYWRpbmcoKSkge1xuICAgICAgICByZXR1cm4gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX3VpTG9hZGluZ0luZGljYXRvcjJbJ2RlZmF1bHQnXSwgbnVsbCk7XG4gICAgICB9XG5cbiAgICAgIHZhciB0aHJvdHRsZXMgPSBfc3RvcmVzVHJhbnNmZXJEYXRhU3RvcmUyWydkZWZhdWx0J10uZ2V0VGhyb3R0bGVzKCk7XG4gICAgICB2YXIgdHJhbnNmZXJSYXRlID0gX3N0b3Jlc1RyYW5zZmVyRGF0YVN0b3JlMlsnZGVmYXVsdCddLmdldFRyYW5zZmVyUmF0ZSgpO1xuICAgICAgdmFyIHRyYW5zZmVyUmF0ZXMgPSBfc3RvcmVzVHJhbnNmZXJEYXRhU3RvcmUyWydkZWZhdWx0J10uZ2V0VHJhbnNmZXJSYXRlcygpO1xuICAgICAgdmFyIHRyYW5zZmVyVG90YWxzID0gX3N0b3Jlc1RyYW5zZmVyRGF0YVN0b3JlMlsnZGVmYXVsdCddLmdldFRyYW5zZmVyVG90YWxzKCk7XG5cbiAgICAgIHZhciBkb3dubG9hZFJhdGUgPSBfdXRpbEZvcm1hdERhdGEyWydkZWZhdWx0J10uZGF0YSh0cmFuc2ZlclJhdGUuZG93bmxvYWQsICcvcycpO1xuICAgICAgdmFyIGRvd25sb2FkVG90YWwgPSBfdXRpbEZvcm1hdERhdGEyWydkZWZhdWx0J10uZGF0YSh0cmFuc2ZlclRvdGFscy5kb3dubG9hZCk7XG4gICAgICB2YXIgdXBsb2FkUmF0ZSA9IF91dGlsRm9ybWF0RGF0YTJbJ2RlZmF1bHQnXS5kYXRhKHRyYW5zZmVyUmF0ZS51cGxvYWQsICcvcycpO1xuICAgICAgdmFyIHVwbG9hZFRvdGFsID0gX3V0aWxGb3JtYXREYXRhMlsnZGVmYXVsdCddLmRhdGEodHJhbnNmZXJUb3RhbHMudXBsb2FkKTtcblxuICAgICAgcmV0dXJuIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAnZGl2JyxcbiAgICAgICAgeyBjbGFzc05hbWU6ICdjbGllbnQtc3RhdHMgc2lkZWJhcl9faXRlbScgfSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgeyBjbGFzc05hbWU6ICdjbGllbnQtc3RhdCBjbGllbnQtc3RhdC0tZG93bmxvYWQnIH0sXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAnc3BhbicsXG4gICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2NsaWVudC1zdGF0X19pY29uJyB9LFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2ljb25zRG93bmxvYWQyWydkZWZhdWx0J10sIG51bGwpXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdjbGllbnQtc3RhdF9fZGF0YScgfSxcbiAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdjbGllbnQtc3RhdF9fZGF0YS0tcHJpbWFyeScgfSxcbiAgICAgICAgICAgICAgZG93bmxvYWRSYXRlLnZhbHVlLFxuICAgICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAnZW0nLFxuICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAndW5pdCcgfSxcbiAgICAgICAgICAgICAgICBkb3dubG9hZFJhdGUudW5pdFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2NsaWVudC1zdGF0X19kYXRhLS1zZWNvbmRhcnknIH0sXG4gICAgICAgICAgICAgIGRvd25sb2FkVG90YWwudmFsdWUsXG4gICAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdlbScsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICd1bml0JyB9LFxuICAgICAgICAgICAgICAgIGRvd25sb2FkVG90YWwudW5pdFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAnIERvd25sb2FkZWQnXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfdWlMaW5lQ2hhcnQyWydkZWZhdWx0J10sIHtcbiAgICAgICAgICAgIGRhdGE6IHRyYW5zZmVyUmF0ZXMuZG93bmxvYWQsXG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCxcbiAgICAgICAgICAgIGlkOiAnZ3JhcGgtLWRvd25sb2FkJyxcbiAgICAgICAgICAgIGxpbWl0OiB0aHJvdHRsZXMuZG93bmxvYWQsXG4gICAgICAgICAgICBzbHVnOiAnZ3JhcGgtLWRvd25sb2FkJyxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLnN0YXRlLnNpZGViYXJXaWR0aCB9KVxuICAgICAgICApLFxuICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ2NsaWVudC1zdGF0IGNsaWVudC1zdGF0LS11cGxvYWQnIH0sXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAnc3BhbicsXG4gICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2NsaWVudC1zdGF0X19pY29uJyB9LFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2ljb25zVXBsb2FkMlsnZGVmYXVsdCddLCBudWxsKVxuICAgICAgICAgICksXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnY2xpZW50LXN0YXRfX2RhdGEnIH0sXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnY2xpZW50LXN0YXRfX2RhdGEtLXByaW1hcnknIH0sXG4gICAgICAgICAgICAgIHVwbG9hZFJhdGUudmFsdWUsXG4gICAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdlbScsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICd1bml0JyB9LFxuICAgICAgICAgICAgICAgIHVwbG9hZFJhdGUudW5pdFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2NsaWVudC1zdGF0X19kYXRhLS1zZWNvbmRhcnknIH0sXG4gICAgICAgICAgICAgIHVwbG9hZFRvdGFsLnZhbHVlLFxuICAgICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAnZW0nLFxuICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAndW5pdCcgfSxcbiAgICAgICAgICAgICAgICB1cGxvYWRUb3RhbC51bml0XG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICcgVXBsb2FkZWQnXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfdWlMaW5lQ2hhcnQyWydkZWZhdWx0J10sIHtcbiAgICAgICAgICAgIGRhdGE6IHRyYW5zZmVyUmF0ZXMudXBsb2FkLFxuICAgICAgICAgICAgaGVpZ2h0OiAxMDAsXG4gICAgICAgICAgICBpZDogJ2dyYXBoLS11cGxvYWQnLFxuICAgICAgICAgICAgbGltaXQ6IHRocm90dGxlcy51cGxvYWQsXG4gICAgICAgICAgICBzbHVnOiAnZ3JhcGgtLXVwbG9hZCcsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy5zdGF0ZS5zaWRlYmFyV2lkdGggfSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ2xpZW50U3RhdHM7XG59KShfcmVhY3QyWydkZWZhdWx0J10uQ29tcG9uZW50KTtcblxuQ2xpZW50U3RhdHMuZGVmYXVsdFByb3BzID0ge1xuICBoaXN0b3J5TGVuZ3RoOiAxXG59O1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBDbGllbnRTdGF0cztcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy9zaWRlYmFyL1RyYW5zZmVyRGF0YS5qc1xuICoqIG1vZHVsZSBpZCA9IDIwM1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); /***/ }, +/* 204 */, /* 205 */ /***/ function(module, exports, __webpack_require__) { @@ -1280,7 +1275,7 @@ /* 206 */ /***/ function(module, exports) { - eval("\"use strict\";\n\nvar config = {\n maxHistoryStates: 30,\n pollInterval: 5000\n};\n\nmodule.exports = config;//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jb25maWcuanM/MzMzOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIyMDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxudmFyIGNvbmZpZyA9IHtcbiAgbWF4SGlzdG9yeVN0YXRlczogMzAsXG4gIHBvbGxJbnRlcnZhbDogNTAwMFxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb25maWc7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NvbmZpZy5qc1xuICoqIG1vZHVsZSBpZCA9IDIwNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); + eval("'use strict';\n\nvar config = {\n databasePath: './server/db/',\n maxHistoryStates: 30,\n pollInterval: 5000,\n uiDatabaseCleanInterval: 1000 * 60 * 60 // 1 hour\n};\n\nmodule.exports = config;//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jb25maWcuanM/MzMzOSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiMjA2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY29uZmlnID0ge1xuICBkYXRhYmFzZVBhdGg6ICcuL3NlcnZlci9kYi8nLFxuICBtYXhIaXN0b3J5U3RhdGVzOiAzMCxcbiAgcG9sbEludGVydmFsOiA1MDAwLFxuICB1aURhdGFiYXNlQ2xlYW5JbnRlcnZhbDogMTAwMCAqIDYwICogNjAgLy8gMSBob3VyXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbmZpZztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vY29uZmlnLmpzXG4gKiogbW9kdWxlIGlkID0gMjA2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iXSwic291cmNlUm9vdCI6IiJ9"); /***/ }, /* 207 */ @@ -1298,7 +1293,7 @@ /* 209 */ /***/ 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 _d3 = __webpack_require__(210);\n\nvar _d32 = _interopRequireDefault(_d3);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar LineChart = (function (_React$Component) {\n _inherits(LineChart, _React$Component);\n\n function LineChart() {\n _classCallCheck(this, LineChart);\n\n _get(Object.getPrototypeOf(LineChart.prototype), 'constructor', this).apply(this, arguments);\n }\n\n _createClass(LineChart, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n var graph = _d32['default'].select('#' + this.props.id);\n var transferData = this.props.data;\n var transferLimit = this.props.limit;\n var margin = {\n bottom: 10,\n top: 10\n };\n var width = this.props.width;\n var height = this.props.height;\n\n var xRange = _d32['default'].scale.linear().range([0, width]).domain([_d32['default'].min(transferData, function (dataPoint, index) {\n return index;\n }), _d32['default'].max(transferData, function (dataPoint, index) {\n return index;\n })]);\n\n var yRange = _d32['default'].scale.linear().range([height - margin.top, margin.bottom]).domain([0, _d32['default'].max(transferData, function (dataPoint, index) {\n if (dataPoint >= transferLimit[index]) {\n return dataPoint;\n } else {\n return transferLimit[index];\n }\n })]);\n\n var lineFunc = _d32['default'].svg.line().x(function (dataPoint, index) {\n return xRange(index);\n }).y(function (dataPoint) {\n return yRange(dataPoint);\n }).interpolate('basis');\n\n var areaFunc = _d32['default'].svg.area().x(function (dataPoint, index) {\n return xRange(index);\n }).y0(height).y1(function (dataPoint) {\n return yRange(dataPoint);\n }).interpolate('basis');\n\n var transferDataLinePoints = lineFunc(transferData);\n var transferLimitLinePoints = lineFunc(transferLimit);\n var transferDataAreaPoints = areaFunc(transferData);\n\n graph.select('g').remove();\n\n graph.append('g').append('svg:path').attr('class', 'graph__area').attr('d', transferDataAreaPoints);\n\n graph.select('g').append('svg:path').attr('class', 'graph__line graph__line--limit').attr('d', transferLimitLinePoints);\n\n graph.select('g').append('svg:path').attr('class', 'graph__line graph__line--rate').attr('d', transferDataLinePoints);\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2['default'].createElement(\n 'svg',\n { className: 'graph', id: this.props.id },\n _react2['default'].createElement(\n 'defs',\n null,\n _react2['default'].createElement(\n 'linearGradient',\n { id: this.props.slug + '--gradient', x1: '0%', y1: '0%',\n x2: '0%', y2: '100%' },\n _react2['default'].createElement('stop', { className: this.props.slug + '--gradient--top', offset: '0%' }),\n _react2['default'].createElement('stop', { className: this.props.slug + '--gradient--bottom', offset: '100%' })\n )\n )\n );\n }\n }]);\n\n return LineChart;\n})(_react2['default'].Component);\n\nexports['default'] = LineChart;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy91aS9MaW5lQ2hhcnQuanM/ZTMyMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxpQ0FBaUMsMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUUsRUFBRSx5REFBeUQscUVBQXFFLDZEQUE2RCxvQkFBb0IsR0FBRyxFQUFFOztBQUVsakIsdUNBQXVDLG1CQUFtQiw0QkFBNEIsaURBQWlELGdCQUFnQixrREFBa0QsOERBQThELDBCQUEwQiw0Q0FBNEMsdUJBQXVCLGtCQUFrQixFQUFFLE9BQU8sYUFBYSxnQkFBZ0IsZ0JBQWdCLGVBQWUsMkJBQTJCLG9CQUFvQixFQUFFLEVBQUUsNEJBQTRCLG1CQUFtQixFQUFFLE9BQU8sdUJBQXVCLDRCQUE0QixrQkFBa0IsRUFBRSw4QkFBOEIsRUFBRSxFQUFFOztBQUUvb0Isc0NBQXNDLHVDQUF1QyxrQkFBa0I7O0FBRS9GLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDBDQUEwQywrREFBK0QscUdBQXFHLEVBQUUseUVBQXlFLGVBQWUseUVBQXlFLEVBQUUsRUFBRSx1SEFBdUg7O0FBRTVlOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLHdDQUF3QztBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLG9DQUFvQztBQUNwQyxzREFBc0QsK0RBQStEO0FBQ3JILHNEQUFzRCxvRUFBb0U7QUFDMUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6IjIwOS5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbnZhciBfZ2V0ID0gZnVuY3Rpb24gZ2V0KF94LCBfeDIsIF94MykgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeCwgcHJvcGVydHkgPSBfeDIsIHJlY2VpdmVyID0gX3gzOyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94ID0gcGFyZW50OyBfeDIgPSBwcm9wZXJ0eTsgX3gzID0gcmVjZWl2ZXI7IF9hZ2FpbiA9IHRydWU7IGRlc2MgPSBwYXJlbnQgPSB1bmRlZmluZWQ7IGNvbnRpbnVlIF9mdW5jdGlvbjsgfSB9IGVsc2UgaWYgKCd2YWx1ZScgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gJ2Z1bmN0aW9uJyAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ1N1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgJyArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIF9kMyA9IHJlcXVpcmUoJ2QzJyk7XG5cbnZhciBfZDMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZDMpO1xuXG52YXIgX3JlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cbnZhciBMaW5lQ2hhcnQgPSAoZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKExpbmVDaGFydCwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gTGluZUNoYXJ0KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMaW5lQ2hhcnQpO1xuXG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoTGluZUNoYXJ0LnByb3RvdHlwZSksICdjb25zdHJ1Y3RvcicsIHRoaXMpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoTGluZUNoYXJ0LCBbe1xuICAgIGtleTogJ2NvbXBvbmVudERpZFVwZGF0ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICAgIHZhciBncmFwaCA9IF9kMzJbJ2RlZmF1bHQnXS5zZWxlY3QoJyMnICsgdGhpcy5wcm9wcy5pZCk7XG4gICAgICB2YXIgdHJhbnNmZXJEYXRhID0gdGhpcy5wcm9wcy5kYXRhO1xuICAgICAgdmFyIHRyYW5zZmVyTGltaXQgPSB0aGlzLnByb3BzLmxpbWl0O1xuICAgICAgdmFyIG1hcmdpbiA9IHtcbiAgICAgICAgYm90dG9tOiAxMCxcbiAgICAgICAgdG9wOiAxMFxuICAgICAgfTtcbiAgICAgIHZhciB3aWR0aCA9IHRoaXMucHJvcHMud2lkdGg7XG4gICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5wcm9wcy5oZWlnaHQ7XG5cbiAgICAgIHZhciB4UmFuZ2UgPSBfZDMyWydkZWZhdWx0J10uc2NhbGUubGluZWFyKCkucmFuZ2UoWzAsIHdpZHRoXSkuZG9tYWluKFtfZDMyWydkZWZhdWx0J10ubWluKHRyYW5zZmVyRGF0YSwgZnVuY3Rpb24gKGRhdGFQb2ludCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfSksIF9kMzJbJ2RlZmF1bHQnXS5tYXgodHJhbnNmZXJEYXRhLCBmdW5jdGlvbiAoZGF0YVBvaW50LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9KV0pO1xuXG4gICAgICB2YXIgeVJhbmdlID0gX2QzMlsnZGVmYXVsdCddLnNjYWxlLmxpbmVhcigpLnJhbmdlKFtoZWlnaHQgLSBtYXJnaW4udG9wLCBtYXJnaW4uYm90dG9tXSkuZG9tYWluKFswLCBfZDMyWydkZWZhdWx0J10ubWF4KHRyYW5zZmVyRGF0YSwgZnVuY3Rpb24gKGRhdGFQb2ludCwgaW5kZXgpIHtcbiAgICAgICAgaWYgKGRhdGFQb2ludCA+PSB0cmFuc2ZlckxpbWl0W2luZGV4XSkge1xuICAgICAgICAgIHJldHVybiBkYXRhUG9pbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRyYW5zZmVyTGltaXRbaW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9KV0pO1xuXG4gICAgICB2YXIgbGluZUZ1bmMgPSBfZDMyWydkZWZhdWx0J10uc3ZnLmxpbmUoKS54KGZ1bmN0aW9uIChkYXRhUG9pbnQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiB4UmFuZ2UoaW5kZXgpO1xuICAgICAgfSkueShmdW5jdGlvbiAoZGF0YVBvaW50KSB7XG4gICAgICAgIHJldHVybiB5UmFuZ2UoZGF0YVBvaW50KTtcbiAgICAgIH0pLmludGVycG9sYXRlKCdiYXNpcycpO1xuXG4gICAgICB2YXIgYXJlYUZ1bmMgPSBfZDMyWydkZWZhdWx0J10uc3ZnLmFyZWEoKS54KGZ1bmN0aW9uIChkYXRhUG9pbnQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiB4UmFuZ2UoaW5kZXgpO1xuICAgICAgfSkueTAoaGVpZ2h0KS55MShmdW5jdGlvbiAoZGF0YVBvaW50KSB7XG4gICAgICAgIHJldHVybiB5UmFuZ2UoZGF0YVBvaW50KTtcbiAgICAgIH0pLmludGVycG9sYXRlKCdiYXNpcycpO1xuXG4gICAgICB2YXIgdHJhbnNmZXJEYXRhTGluZVBvaW50cyA9IGxpbmVGdW5jKHRyYW5zZmVyRGF0YSk7XG4gICAgICB2YXIgdHJhbnNmZXJMaW1pdExpbmVQb2ludHMgPSBsaW5lRnVuYyh0cmFuc2ZlckxpbWl0KTtcbiAgICAgIHZhciB0cmFuc2ZlckRhdGFBcmVhUG9pbnRzID0gYXJlYUZ1bmModHJhbnNmZXJEYXRhKTtcblxuICAgICAgZ3JhcGguc2VsZWN0KCdnJykucmVtb3ZlKCk7XG5cbiAgICAgIGdyYXBoLmFwcGVuZCgnZycpLmFwcGVuZCgnc3ZnOnBhdGgnKS5hdHRyKCdjbGFzcycsICdncmFwaF9fYXJlYScpLmF0dHIoJ2QnLCB0cmFuc2ZlckRhdGFBcmVhUG9pbnRzKTtcblxuICAgICAgZ3JhcGguc2VsZWN0KCdnJykuYXBwZW5kKCdzdmc6cGF0aCcpLmF0dHIoJ2NsYXNzJywgJ2dyYXBoX19saW5lIGdyYXBoX19saW5lLS1saW1pdCcpLmF0dHIoJ2QnLCB0cmFuc2ZlckxpbWl0TGluZVBvaW50cyk7XG5cbiAgICAgIGdyYXBoLnNlbGVjdCgnZycpLmFwcGVuZCgnc3ZnOnBhdGgnKS5hdHRyKCdjbGFzcycsICdncmFwaF9fbGluZSBncmFwaF9fbGluZS0tcmF0ZScpLmF0dHIoJ2QnLCB0cmFuc2ZlckRhdGFMaW5lUG9pbnRzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdyZW5kZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICdzdmcnLFxuICAgICAgICB7IGNsYXNzTmFtZTogJ2dyYXBoJywgaWQ6IHRoaXMucHJvcHMuaWQgfSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgJ2RlZnMnLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAnbGluZWFyR3JhZGllbnQnLFxuICAgICAgICAgICAgeyBpZDogdGhpcy5wcm9wcy5zbHVnICsgJy0tZ3JhZGllbnQnLCB4MTogJzAlJywgeTE6ICcwJScsXG4gICAgICAgICAgICAgIHgyOiAnMCUnLCB5MjogJzEwMCUnIH0sXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudCgnc3RvcCcsIHsgY2xhc3NOYW1lOiB0aGlzLnByb3BzLnNsdWcgKyAnLS1ncmFkaWVudC0tdG9wJywgb2Zmc2V0OiAnMCUnIH0pLFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoJ3N0b3AnLCB7IGNsYXNzTmFtZTogdGhpcy5wcm9wcy5zbHVnICsgJy0tZ3JhZGllbnQtLWJvdHRvbScsIG9mZnNldDogJzEwMCUnIH0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBMaW5lQ2hhcnQ7XG59KShfcmVhY3QyWydkZWZhdWx0J10uQ29tcG9uZW50KTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gTGluZUNoYXJ0O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9jb21wb25lbnRzL3VpL0xpbmVDaGFydC5qc1xuICoqIG1vZHVsZSBpZCA9IDIwOVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); + 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 _d3 = __webpack_require__(210);\n\nvar _d32 = _interopRequireDefault(_d3);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar LineChart = (function (_React$Component) {\n _inherits(LineChart, _React$Component);\n\n function LineChart() {\n _classCallCheck(this, LineChart);\n\n _get(Object.getPrototypeOf(LineChart.prototype), 'constructor', this).apply(this, arguments);\n }\n\n _createClass(LineChart, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n var graph = _d32['default'].select('#' + this.props.id);\n var transferData = this.props.data;\n var transferLimit = this.props.limit;\n var margin = {\n bottom: 10,\n top: 10\n };\n var width = this.props.width;\n var height = this.props.height;\n\n var xRange = _d32['default'].scale.linear().range([0, width]).domain([_d32['default'].min(transferData, function (dataPoint, index) {\n return index;\n }), _d32['default'].max(transferData, function (dataPoint, index) {\n return index;\n })]);\n\n var yRange = _d32['default'].scale.linear().range([height - margin.top, margin.bottom]).domain([0, _d32['default'].max(transferData, function (dataPoint, index) {\n if (dataPoint >= transferLimit[index]) {\n return dataPoint;\n } else {\n return transferLimit[index];\n }\n })]);\n\n var lineFunc = function lineFunc(interpolation) {\n return _d32['default'].svg.line().x(function (dataPoint, index) {\n return xRange(index);\n }).y(function (dataPoint) {\n return yRange(dataPoint);\n }).interpolate(interpolation);\n };\n\n var areaFunc = _d32['default'].svg.area().x(function (dataPoint, index) {\n return xRange(index);\n }).y0(height).y1(function (dataPoint) {\n return yRange(dataPoint);\n }).interpolate('basis');\n\n var transferDataLinePoints = lineFunc('basis')(transferData);\n var transferLimitLinePoints = lineFunc('step-after')(transferLimit);\n var transferDataAreaPoints = areaFunc(transferData);\n\n graph.select('g').remove();\n\n graph.append('g').append('svg:path').attr('class', 'graph__area').attr('d', transferDataAreaPoints);\n\n graph.select('g').append('svg:path').attr('class', 'graph__line graph__line--limit').attr('d', transferLimitLinePoints);\n\n graph.select('g').append('svg:path').attr('class', 'graph__line graph__line--rate').attr('d', transferDataLinePoints);\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2['default'].createElement(\n 'svg',\n { className: 'graph', id: this.props.id },\n _react2['default'].createElement(\n 'defs',\n null,\n _react2['default'].createElement(\n 'linearGradient',\n { id: this.props.slug + '--gradient', x1: '0%', y1: '0%',\n x2: '0%', y2: '100%' },\n _react2['default'].createElement('stop', { className: this.props.slug + '--gradient--top', offset: '0%' }),\n _react2['default'].createElement('stop', { className: this.props.slug + '--gradient--bottom', offset: '100%' })\n )\n )\n );\n }\n }]);\n\n return LineChart;\n})(_react2['default'].Component);\n\nexports['default'] = LineChart;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy91aS9MaW5lQ2hhcnQuanM/ZTMyMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxpQ0FBaUMsMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUUsRUFBRSx5REFBeUQscUVBQXFFLDZEQUE2RCxvQkFBb0IsR0FBRyxFQUFFOztBQUVsakIsdUNBQXVDLG1CQUFtQiw0QkFBNEIsaURBQWlELGdCQUFnQixrREFBa0QsOERBQThELDBCQUEwQiw0Q0FBNEMsdUJBQXVCLGtCQUFrQixFQUFFLE9BQU8sYUFBYSxnQkFBZ0IsZ0JBQWdCLGVBQWUsMkJBQTJCLG9CQUFvQixFQUFFLEVBQUUsNEJBQTRCLG1CQUFtQixFQUFFLE9BQU8sdUJBQXVCLDRCQUE0QixrQkFBa0IsRUFBRSw4QkFBOEIsRUFBRSxFQUFFOztBQUUvb0Isc0NBQXNDLHVDQUF1QyxrQkFBa0I7O0FBRS9GLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDBDQUEwQywrREFBK0QscUdBQXFHLEVBQUUseUVBQXlFLGVBQWUseUVBQXlFLEVBQUUsRUFBRSx1SEFBdUg7O0FBRTVlOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyx3Q0FBd0M7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixvQ0FBb0M7QUFDcEMsc0RBQXNELCtEQUErRDtBQUNySCxzREFBc0Qsb0VBQW9FO0FBQzFIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7QUFDQSIsImZpbGUiOiIyMDkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChfeCwgX3gyLCBfeDMpIHsgdmFyIF9hZ2FpbiA9IHRydWU7IF9mdW5jdGlvbjogd2hpbGUgKF9hZ2FpbikgeyB2YXIgb2JqZWN0ID0gX3gsIHByb3BlcnR5ID0gX3gyLCByZWNlaXZlciA9IF94MzsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeCA9IHBhcmVudDsgX3gyID0gcHJvcGVydHk7IF94MyA9IHJlY2VpdmVyOyBfYWdhaW4gPSB0cnVlOyBkZXNjID0gcGFyZW50ID0gdW5kZWZpbmVkOyBjb250aW51ZSBfZnVuY3Rpb247IH0gfSBlbHNlIGlmICgndmFsdWUnIGluIGRlc2MpIHsgcmV0dXJuIGRlc2MudmFsdWU7IH0gZWxzZSB7IHZhciBnZXR0ZXIgPSBkZXNjLmdldDsgaWYgKGdldHRlciA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTsgfSB9IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBfZDMgPSByZXF1aXJlKCdkMycpO1xuXG52YXIgX2QzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2QzKTtcblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbnZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXG52YXIgTGluZUNoYXJ0ID0gKGZ1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhMaW5lQ2hhcnQsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIExpbmVDaGFydCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTGluZUNoYXJ0KTtcblxuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKExpbmVDaGFydC5wcm90b3R5cGUpLCAnY29uc3RydWN0b3InLCB0aGlzKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKExpbmVDaGFydCwgW3tcbiAgICBrZXk6ICdjb21wb25lbnREaWRVcGRhdGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICB2YXIgZ3JhcGggPSBfZDMyWydkZWZhdWx0J10uc2VsZWN0KCcjJyArIHRoaXMucHJvcHMuaWQpO1xuICAgICAgdmFyIHRyYW5zZmVyRGF0YSA9IHRoaXMucHJvcHMuZGF0YTtcbiAgICAgIHZhciB0cmFuc2ZlckxpbWl0ID0gdGhpcy5wcm9wcy5saW1pdDtcbiAgICAgIHZhciBtYXJnaW4gPSB7XG4gICAgICAgIGJvdHRvbTogMTAsXG4gICAgICAgIHRvcDogMTBcbiAgICAgIH07XG4gICAgICB2YXIgd2lkdGggPSB0aGlzLnByb3BzLndpZHRoO1xuICAgICAgdmFyIGhlaWdodCA9IHRoaXMucHJvcHMuaGVpZ2h0O1xuXG4gICAgICB2YXIgeFJhbmdlID0gX2QzMlsnZGVmYXVsdCddLnNjYWxlLmxpbmVhcigpLnJhbmdlKFswLCB3aWR0aF0pLmRvbWFpbihbX2QzMlsnZGVmYXVsdCddLm1pbih0cmFuc2ZlckRhdGEsIGZ1bmN0aW9uIChkYXRhUG9pbnQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH0pLCBfZDMyWydkZWZhdWx0J10ubWF4KHRyYW5zZmVyRGF0YSwgZnVuY3Rpb24gKGRhdGFQb2ludCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfSldKTtcblxuICAgICAgdmFyIHlSYW5nZSA9IF9kMzJbJ2RlZmF1bHQnXS5zY2FsZS5saW5lYXIoKS5yYW5nZShbaGVpZ2h0IC0gbWFyZ2luLnRvcCwgbWFyZ2luLmJvdHRvbV0pLmRvbWFpbihbMCwgX2QzMlsnZGVmYXVsdCddLm1heCh0cmFuc2ZlckRhdGEsIGZ1bmN0aW9uIChkYXRhUG9pbnQsIGluZGV4KSB7XG4gICAgICAgIGlmIChkYXRhUG9pbnQgPj0gdHJhbnNmZXJMaW1pdFtpbmRleF0pIHtcbiAgICAgICAgICByZXR1cm4gZGF0YVBvaW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0cmFuc2ZlckxpbWl0W2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfSldKTtcblxuICAgICAgdmFyIGxpbmVGdW5jID0gZnVuY3Rpb24gbGluZUZ1bmMoaW50ZXJwb2xhdGlvbikge1xuICAgICAgICByZXR1cm4gX2QzMlsnZGVmYXVsdCddLnN2Zy5saW5lKCkueChmdW5jdGlvbiAoZGF0YVBvaW50LCBpbmRleCkge1xuICAgICAgICAgIHJldHVybiB4UmFuZ2UoaW5kZXgpO1xuICAgICAgICB9KS55KGZ1bmN0aW9uIChkYXRhUG9pbnQpIHtcbiAgICAgICAgICByZXR1cm4geVJhbmdlKGRhdGFQb2ludCk7XG4gICAgICAgIH0pLmludGVycG9sYXRlKGludGVycG9sYXRpb24pO1xuICAgICAgfTtcblxuICAgICAgdmFyIGFyZWFGdW5jID0gX2QzMlsnZGVmYXVsdCddLnN2Zy5hcmVhKCkueChmdW5jdGlvbiAoZGF0YVBvaW50LCBpbmRleCkge1xuICAgICAgICByZXR1cm4geFJhbmdlKGluZGV4KTtcbiAgICAgIH0pLnkwKGhlaWdodCkueTEoZnVuY3Rpb24gKGRhdGFQb2ludCkge1xuICAgICAgICByZXR1cm4geVJhbmdlKGRhdGFQb2ludCk7XG4gICAgICB9KS5pbnRlcnBvbGF0ZSgnYmFzaXMnKTtcblxuICAgICAgdmFyIHRyYW5zZmVyRGF0YUxpbmVQb2ludHMgPSBsaW5lRnVuYygnYmFzaXMnKSh0cmFuc2ZlckRhdGEpO1xuICAgICAgdmFyIHRyYW5zZmVyTGltaXRMaW5lUG9pbnRzID0gbGluZUZ1bmMoJ3N0ZXAtYWZ0ZXInKSh0cmFuc2ZlckxpbWl0KTtcbiAgICAgIHZhciB0cmFuc2ZlckRhdGFBcmVhUG9pbnRzID0gYXJlYUZ1bmModHJhbnNmZXJEYXRhKTtcblxuICAgICAgZ3JhcGguc2VsZWN0KCdnJykucmVtb3ZlKCk7XG5cbiAgICAgIGdyYXBoLmFwcGVuZCgnZycpLmFwcGVuZCgnc3ZnOnBhdGgnKS5hdHRyKCdjbGFzcycsICdncmFwaF9fYXJlYScpLmF0dHIoJ2QnLCB0cmFuc2ZlckRhdGFBcmVhUG9pbnRzKTtcblxuICAgICAgZ3JhcGguc2VsZWN0KCdnJykuYXBwZW5kKCdzdmc6cGF0aCcpLmF0dHIoJ2NsYXNzJywgJ2dyYXBoX19saW5lIGdyYXBoX19saW5lLS1saW1pdCcpLmF0dHIoJ2QnLCB0cmFuc2ZlckxpbWl0TGluZVBvaW50cyk7XG5cbiAgICAgIGdyYXBoLnNlbGVjdCgnZycpLmFwcGVuZCgnc3ZnOnBhdGgnKS5hdHRyKCdjbGFzcycsICdncmFwaF9fbGluZSBncmFwaF9fbGluZS0tcmF0ZScpLmF0dHIoJ2QnLCB0cmFuc2ZlckRhdGFMaW5lUG9pbnRzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdyZW5kZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICdzdmcnLFxuICAgICAgICB7IGNsYXNzTmFtZTogJ2dyYXBoJywgaWQ6IHRoaXMucHJvcHMuaWQgfSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgJ2RlZnMnLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAnbGluZWFyR3JhZGllbnQnLFxuICAgICAgICAgICAgeyBpZDogdGhpcy5wcm9wcy5zbHVnICsgJy0tZ3JhZGllbnQnLCB4MTogJzAlJywgeTE6ICcwJScsXG4gICAgICAgICAgICAgIHgyOiAnMCUnLCB5MjogJzEwMCUnIH0sXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudCgnc3RvcCcsIHsgY2xhc3NOYW1lOiB0aGlzLnByb3BzLnNsdWcgKyAnLS1ncmFkaWVudC0tdG9wJywgb2Zmc2V0OiAnMCUnIH0pLFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoJ3N0b3AnLCB7IGNsYXNzTmFtZTogdGhpcy5wcm9wcy5zbHVnICsgJy0tZ3JhZGllbnQtLWJvdHRvbScsIG9mZnNldDogJzEwMCUnIH0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBMaW5lQ2hhcnQ7XG59KShfcmVhY3QyWydkZWZhdWx0J10uQ29tcG9uZW50KTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gTGluZUNoYXJ0O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9jb21wb25lbnRzL3VpL0xpbmVDaGFydC5qc1xuICoqIG1vZHVsZSBpZCA9IDIwOVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); /***/ }, /* 210 */ @@ -1328,7 +1323,7 @@ /* 214 */ /***/ 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 _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _actionsClientActions = __webpack_require__(205);\n\nvar _actionsClientActions2 = _interopRequireDefault(_actionsClientActions);\n\nvar _storesClientDataStore = __webpack_require__(204);\n\nvar _storesClientDataStore2 = _interopRequireDefault(_storesClientDataStore);\n\nvar _formsDropdown = __webpack_require__(215);\n\nvar _formsDropdown2 = _interopRequireDefault(_formsDropdown);\n\nvar _constantsEventTypes = __webpack_require__(196);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _utilFormatData = __webpack_require__(208);\n\nvar _utilFormatData2 = _interopRequireDefault(_utilFormatData);\n\nvar _iconsLimits = __webpack_require__(216);\n\nvar _iconsLimits2 = _interopRequireDefault(_iconsLimits);\n\nvar _sidebarSidebarItem = __webpack_require__(217);\n\nvar _sidebarSidebarItem2 = _interopRequireDefault(_sidebarSidebarItem);\n\nvar METHODS_TO_BIND = ['onTransferDataRequestSuccess'];\nvar SPEEDS = [1024, 10240, 102400, 512000, 1048576, 2097152, 5242880, 10485760, 0];\n\nvar Sidebar = (function (_React$Component) {\n _inherits(Sidebar, _React$Component);\n\n function Sidebar() {\n var _this = this;\n\n _classCallCheck(this, Sidebar);\n\n _get(Object.getPrototypeOf(Sidebar.prototype), 'constructor', this).call(this);\n\n this.state = {\n throttle: null\n };\n\n METHODS_TO_BIND.forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n }\n\n _createClass(Sidebar, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n _storesClientDataStore2['default'].listen(_constantsEventTypes2['default'].CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, this.onTransferDataRequestSuccess);\n _storesClientDataStore2['default'].fetchTransferData();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _storesClientDataStore2['default'].unlisten(_constantsEventTypes2['default'].CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, this.onTransferDataRequestSuccess);\n }\n }, {\n key: 'onTransferDataRequestSuccess',\n value: function onTransferDataRequestSuccess() {\n this.setState({\n throttle: _storesClientDataStore2['default'].getThrottles({ latest: true })\n });\n }\n }, {\n key: 'getDropdownHeader',\n value: function getDropdownHeader() {\n return _react2['default'].createElement(\n 'a',\n { className: 'client-stat--limits' },\n _react2['default'].createElement(_iconsLimits2['default'], null),\n ' Speed Limits'\n );\n }\n }, {\n key: 'getHumanReadableSpeed',\n value: function getHumanReadableSpeed(bytes) {\n if (bytes === 0) {\n return 'Unlimited';\n } else {\n var formattedData = _utilFormatData2['default'].data(bytes, '/s', 0);\n return _react2['default'].createElement(\n 'span',\n null,\n formattedData.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n formattedData.unit\n )\n );\n }\n }\n }, {\n key: 'getSpeedList',\n value: function getSpeedList(property) {\n var _this2 = this;\n\n var heading = {\n className: 'dropdown__label dropdown__label--' + property,\n displayName: '' + property.charAt(0).toUpperCase() + property.slice(1),\n selectable: false,\n value: null\n };\n\n var insertCurrentThrottle = true;\n var currentThrottle = this.state.throttle;\n\n var items = SPEEDS.map(function (bytes) {\n var selected = false;\n\n // Check if the current throttle setting exists in the preset speeds list.\n // Determine if we need to add the current throttle setting to the menu.\n if (currentThrottle && currentThrottle[property] === bytes) {\n selected = true;\n insertCurrentThrottle = false;\n }\n\n return {\n displayName: _this2.getHumanReadableSpeed(bytes),\n property: property,\n selected: selected,\n selectable: true,\n value: bytes\n };\n });\n\n // If the current throttle setting doesn't exist in the pre-set speeds list,\n // add it and show it as selected.\n if (insertCurrentThrottle && currentThrottle) {\n // Find the position to insert the current throttle setting so that it\n // remains sorted from lowest to highest.\n var insertionPoint = _.sortedIndex(SPEEDS, currentThrottle[property]);\n\n items.splice(insertionPoint, 0, {\n displayName: this.getHumanReadableSpeed(currentThrottle[property]),\n property: property,\n selected: true,\n selectable: true,\n value: currentThrottle[property]\n });\n }\n\n items.unshift(heading);\n\n return items;\n }\n }, {\n key: 'getDropdownMenus',\n value: function getDropdownMenus() {\n return [this.getSpeedList('download'), this.getSpeedList('upload')];\n }\n }, {\n key: 'handleItemSelect',\n value: function handleItemSelect(data) {\n _actionsClientActions2['default'].setThrottle(data.property, data.value);\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2['default'].createElement(\n _sidebarSidebarItem2['default'],\n { modifier: 'speed-limit' },\n _react2['default'].createElement(_formsDropdown2['default'], {\n handleItemSelect: this.handleItemSelect,\n header: this.getDropdownHeader(),\n menuItems: this.getDropdownMenus()\n })\n );\n }\n }]);\n\n return Sidebar;\n})(_react2['default'].Component);\n\nexports['default'] = Sidebar;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy9zaWRlYmFyL1NwZWVkTGltaXREcm9wZG93bi5qcz9jYzMxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGlDQUFpQywyQ0FBMkMsZ0JBQWdCLGtCQUFrQixPQUFPLDJCQUEyQix3REFBd0QsZ0NBQWdDLHVEQUF1RCwyREFBMkQsRUFBRSxFQUFFLHlEQUF5RCxxRUFBcUUsNkRBQTZELG9CQUFvQixHQUFHLEVBQUU7O0FBRWxqQix1Q0FBdUMsbUJBQW1CLDRCQUE0QixpREFBaUQsZ0JBQWdCLGtEQUFrRCw4REFBOEQsMEJBQTBCLDRDQUE0Qyx1QkFBdUIsa0JBQWtCLEVBQUUsT0FBTyxhQUFhLGdCQUFnQixnQkFBZ0IsZUFBZSwyQkFBMkIsb0JBQW9CLEVBQUUsRUFBRSw0QkFBNEIsbUJBQW1CLEVBQUUsT0FBTyx1QkFBdUIsNEJBQTRCLGtCQUFrQixFQUFFLDhCQUE4QixFQUFFLEVBQUU7O0FBRS9vQixzQ0FBc0MsdUNBQXVDLGtCQUFrQjs7QUFFL0YsaURBQWlELDBDQUEwQywwREFBMEQsRUFBRTs7QUFFdkosMENBQTBDLCtEQUErRCxxR0FBcUcsRUFBRSx5RUFBeUUsZUFBZSx5RUFBeUUsRUFBRSxFQUFFLHVIQUF1SDs7QUFFNWU7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLG1FQUFtRSxlQUFlO0FBQ2xGLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsbUNBQW1DO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxvQkFBb0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsMEJBQTBCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6IjIxNC5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbnZhciBfZ2V0ID0gZnVuY3Rpb24gZ2V0KF94LCBfeDIsIF94MykgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeCwgcHJvcGVydHkgPSBfeDIsIHJlY2VpdmVyID0gX3gzOyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94ID0gcGFyZW50OyBfeDIgPSBwcm9wZXJ0eTsgX3gzID0gcmVjZWl2ZXI7IF9hZ2FpbiA9IHRydWU7IGRlc2MgPSBwYXJlbnQgPSB1bmRlZmluZWQ7IGNvbnRpbnVlIF9mdW5jdGlvbjsgfSB9IGVsc2UgaWYgKCd2YWx1ZScgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gJ2Z1bmN0aW9uJyAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ1N1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgJyArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbnZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXG52YXIgX2FjdGlvbnNDbGllbnRBY3Rpb25zID0gcmVxdWlyZSgnLi4vLi4vYWN0aW9ucy9DbGllbnRBY3Rpb25zJyk7XG5cbnZhciBfYWN0aW9uc0NsaWVudEFjdGlvbnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYWN0aW9uc0NsaWVudEFjdGlvbnMpO1xuXG52YXIgX3N0b3Jlc0NsaWVudERhdGFTdG9yZSA9IHJlcXVpcmUoJy4uLy4uL3N0b3Jlcy9DbGllbnREYXRhU3RvcmUnKTtcblxudmFyIF9zdG9yZXNDbGllbnREYXRhU3RvcmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3RvcmVzQ2xpZW50RGF0YVN0b3JlKTtcblxudmFyIF9mb3Jtc0Ryb3Bkb3duID0gcmVxdWlyZSgnLi4vZm9ybXMvRHJvcGRvd24nKTtcblxudmFyIF9mb3Jtc0Ryb3Bkb3duMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Zvcm1zRHJvcGRvd24pO1xuXG52YXIgX2NvbnN0YW50c0V2ZW50VHlwZXMgPSByZXF1aXJlKCcuLi8uLi9jb25zdGFudHMvRXZlbnRUeXBlcycpO1xuXG52YXIgX2NvbnN0YW50c0V2ZW50VHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzRXZlbnRUeXBlcyk7XG5cbnZhciBfdXRpbEZvcm1hdERhdGEgPSByZXF1aXJlKCcuLi8uLi91dGlsL2Zvcm1hdERhdGEnKTtcblxudmFyIF91dGlsRm9ybWF0RGF0YTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF91dGlsRm9ybWF0RGF0YSk7XG5cbnZhciBfaWNvbnNMaW1pdHMgPSByZXF1aXJlKCcuLi9pY29ucy9MaW1pdHMnKTtcblxudmFyIF9pY29uc0xpbWl0czIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pY29uc0xpbWl0cyk7XG5cbnZhciBfc2lkZWJhclNpZGViYXJJdGVtID0gcmVxdWlyZSgnLi4vc2lkZWJhci9TaWRlYmFySXRlbScpO1xuXG52YXIgX3NpZGViYXJTaWRlYmFySXRlbTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zaWRlYmFyU2lkZWJhckl0ZW0pO1xuXG52YXIgTUVUSE9EU19UT19CSU5EID0gWydvblRyYW5zZmVyRGF0YVJlcXVlc3RTdWNjZXNzJ107XG52YXIgU1BFRURTID0gWzEwMjQsIDEwMjQwLCAxMDI0MDAsIDUxMjAwMCwgMTA0ODU3NiwgMjA5NzE1MiwgNTI0Mjg4MCwgMTA0ODU3NjAsIDBdO1xuXG52YXIgU2lkZWJhciA9IChmdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoU2lkZWJhciwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gU2lkZWJhcigpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNpZGViYXIpO1xuXG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoU2lkZWJhci5wcm90b3R5cGUpLCAnY29uc3RydWN0b3InLCB0aGlzKS5jYWxsKHRoaXMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHRocm90dGxlOiBudWxsXG4gICAgfTtcblxuICAgIE1FVEhPRFNfVE9fQklORC5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICAgIF90aGlzW21ldGhvZF0gPSBfdGhpc1ttZXRob2RdLmJpbmQoX3RoaXMpO1xuICAgIH0pO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFNpZGViYXIsIFt7XG4gICAga2V5OiAnY29tcG9uZW50RGlkTW91bnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIF9zdG9yZXNDbGllbnREYXRhU3RvcmUyWydkZWZhdWx0J10ubGlzdGVuKF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9UUkFOU0ZFUl9EQVRBX1JFUVVFU1RfU1VDQ0VTUywgdGhpcy5vblRyYW5zZmVyRGF0YVJlcXVlc3RTdWNjZXNzKTtcbiAgICAgIF9zdG9yZXNDbGllbnREYXRhU3RvcmUyWydkZWZhdWx0J10uZmV0Y2hUcmFuc2ZlckRhdGEoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdjb21wb25lbnRXaWxsVW5tb3VudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgX3N0b3Jlc0NsaWVudERhdGFTdG9yZTJbJ2RlZmF1bHQnXS51bmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfVFJBTlNGRVJfREFUQV9SRVFVRVNUX1NVQ0NFU1MsIHRoaXMub25UcmFuc2ZlckRhdGFSZXF1ZXN0U3VjY2Vzcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnb25UcmFuc2ZlckRhdGFSZXF1ZXN0U3VjY2VzcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uVHJhbnNmZXJEYXRhUmVxdWVzdFN1Y2Nlc3MoKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgdGhyb3R0bGU6IF9zdG9yZXNDbGllbnREYXRhU3RvcmUyWydkZWZhdWx0J10uZ2V0VGhyb3R0bGVzKHsgbGF0ZXN0OiB0cnVlIH0pXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXREcm9wZG93bkhlYWRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldERyb3Bkb3duSGVhZGVyKCkge1xuICAgICAgcmV0dXJuIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAnYScsXG4gICAgICAgIHsgY2xhc3NOYW1lOiAnY2xpZW50LXN0YXQtLWxpbWl0cycgfSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2ljb25zTGltaXRzMlsnZGVmYXVsdCddLCBudWxsKSxcbiAgICAgICAgJyBTcGVlZCBMaW1pdHMnXG4gICAgICApO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldEh1bWFuUmVhZGFibGVTcGVlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEh1bWFuUmVhZGFibGVTcGVlZChieXRlcykge1xuICAgICAgaWYgKGJ5dGVzID09PSAwKSB7XG4gICAgICAgIHJldHVybiAnVW5saW1pdGVkJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBmb3JtYXR0ZWREYXRhID0gX3V0aWxGb3JtYXREYXRhMlsnZGVmYXVsdCddLmRhdGEoYnl0ZXMsICcvcycsIDApO1xuICAgICAgICByZXR1cm4gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgJ3NwYW4nLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgZm9ybWF0dGVkRGF0YS52YWx1ZSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICdlbScsXG4gICAgICAgICAgICB7IGNsYXNzTmFtZTogJ3VuaXQnIH0sXG4gICAgICAgICAgICBmb3JtYXR0ZWREYXRhLnVuaXRcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0U3BlZWRMaXN0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U3BlZWRMaXN0KHByb3BlcnR5KSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIGhlYWRpbmcgPSB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Ryb3Bkb3duX19sYWJlbCBkcm9wZG93bl9fbGFiZWwtLScgKyBwcm9wZXJ0eSxcbiAgICAgICAgZGlzcGxheU5hbWU6ICcnICsgcHJvcGVydHkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBwcm9wZXJ0eS5zbGljZSgxKSxcbiAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXG4gICAgICAgIHZhbHVlOiBudWxsXG4gICAgICB9O1xuXG4gICAgICB2YXIgaW5zZXJ0Q3VycmVudFRocm90dGxlID0gdHJ1ZTtcbiAgICAgIHZhciBjdXJyZW50VGhyb3R0bGUgPSB0aGlzLnN0YXRlLnRocm90dGxlO1xuXG4gICAgICB2YXIgaXRlbXMgPSBTUEVFRFMubWFwKGZ1bmN0aW9uIChieXRlcykge1xuICAgICAgICB2YXIgc2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgICAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCB0aHJvdHRsZSBzZXR0aW5nIGV4aXN0cyBpbiB0aGUgcHJlc2V0IHNwZWVkcyBsaXN0LlxuICAgICAgICAvLyBEZXRlcm1pbmUgaWYgd2UgbmVlZCB0byBhZGQgdGhlIGN1cnJlbnQgdGhyb3R0bGUgc2V0dGluZyB0byB0aGUgbWVudS5cbiAgICAgICAgaWYgKGN1cnJlbnRUaHJvdHRsZSAmJiBjdXJyZW50VGhyb3R0bGVbcHJvcGVydHldID09PSBieXRlcykge1xuICAgICAgICAgIHNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICBpbnNlcnRDdXJyZW50VGhyb3R0bGUgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGlzcGxheU5hbWU6IF90aGlzMi5nZXRIdW1hblJlYWRhYmxlU3BlZWQoYnl0ZXMpLFxuICAgICAgICAgIHByb3BlcnR5OiBwcm9wZXJ0eSxcbiAgICAgICAgICBzZWxlY3RlZDogc2VsZWN0ZWQsXG4gICAgICAgICAgc2VsZWN0YWJsZTogdHJ1ZSxcbiAgICAgICAgICB2YWx1ZTogYnl0ZXNcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBJZiB0aGUgY3VycmVudCB0aHJvdHRsZSBzZXR0aW5nIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIHByZS1zZXQgc3BlZWRzIGxpc3QsXG4gICAgICAvLyBhZGQgaXQgYW5kIHNob3cgaXQgYXMgc2VsZWN0ZWQuXG4gICAgICBpZiAoaW5zZXJ0Q3VycmVudFRocm90dGxlICYmIGN1cnJlbnRUaHJvdHRsZSkge1xuICAgICAgICAvLyBGaW5kIHRoZSBwb3NpdGlvbiB0byBpbnNlcnQgdGhlIGN1cnJlbnQgdGhyb3R0bGUgc2V0dGluZyBzbyB0aGF0IGl0XG4gICAgICAgIC8vIHJlbWFpbnMgc29ydGVkIGZyb20gbG93ZXN0IHRvIGhpZ2hlc3QuXG4gICAgICAgIHZhciBpbnNlcnRpb25Qb2ludCA9IF8uc29ydGVkSW5kZXgoU1BFRURTLCBjdXJyZW50VGhyb3R0bGVbcHJvcGVydHldKTtcblxuICAgICAgICBpdGVtcy5zcGxpY2UoaW5zZXJ0aW9uUG9pbnQsIDAsIHtcbiAgICAgICAgICBkaXNwbGF5TmFtZTogdGhpcy5nZXRIdW1hblJlYWRhYmxlU3BlZWQoY3VycmVudFRocm90dGxlW3Byb3BlcnR5XSksXG4gICAgICAgICAgcHJvcGVydHk6IHByb3BlcnR5LFxuICAgICAgICAgIHNlbGVjdGVkOiB0cnVlLFxuICAgICAgICAgIHNlbGVjdGFibGU6IHRydWUsXG4gICAgICAgICAgdmFsdWU6IGN1cnJlbnRUaHJvdHRsZVtwcm9wZXJ0eV1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGl0ZW1zLnVuc2hpZnQoaGVhZGluZyk7XG5cbiAgICAgIHJldHVybiBpdGVtcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXREcm9wZG93bk1lbnVzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RHJvcGRvd25NZW51cygpIHtcbiAgICAgIHJldHVybiBbdGhpcy5nZXRTcGVlZExpc3QoJ2Rvd25sb2FkJyksIHRoaXMuZ2V0U3BlZWRMaXN0KCd1cGxvYWQnKV07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlSXRlbVNlbGVjdCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZUl0ZW1TZWxlY3QoZGF0YSkge1xuICAgICAgX2FjdGlvbnNDbGllbnRBY3Rpb25zMlsnZGVmYXVsdCddLnNldFRocm90dGxlKGRhdGEucHJvcGVydHksIGRhdGEudmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3JlbmRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHJldHVybiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgX3NpZGViYXJTaWRlYmFySXRlbTJbJ2RlZmF1bHQnXSxcbiAgICAgICAgeyBtb2RpZmllcjogJ3NwZWVkLWxpbWl0JyB9LFxuICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfZm9ybXNEcm9wZG93bjJbJ2RlZmF1bHQnXSwge1xuICAgICAgICAgIGhhbmRsZUl0ZW1TZWxlY3Q6IHRoaXMuaGFuZGxlSXRlbVNlbGVjdCxcbiAgICAgICAgICBoZWFkZXI6IHRoaXMuZ2V0RHJvcGRvd25IZWFkZXIoKSxcbiAgICAgICAgICBtZW51SXRlbXM6IHRoaXMuZ2V0RHJvcGRvd25NZW51cygpXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBTaWRlYmFyO1xufSkoX3JlYWN0MlsnZGVmYXVsdCddLkNvbXBvbmVudCk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IFNpZGViYXI7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vY2xpZW50L3NvdXJjZS9zY3JpcHRzL2NvbXBvbmVudHMvc2lkZWJhci9TcGVlZExpbWl0RHJvcGRvd24uanNcbiAqKiBtb2R1bGUgaWQgPSAyMTRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0="); + 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 _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _actionsClientActions = __webpack_require__(205);\n\nvar _actionsClientActions2 = _interopRequireDefault(_actionsClientActions);\n\nvar _formsDropdown = __webpack_require__(215);\n\nvar _formsDropdown2 = _interopRequireDefault(_formsDropdown);\n\nvar _constantsEventTypes = __webpack_require__(196);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _utilFormatData = __webpack_require__(208);\n\nvar _utilFormatData2 = _interopRequireDefault(_utilFormatData);\n\nvar _iconsLimits = __webpack_require__(216);\n\nvar _iconsLimits2 = _interopRequireDefault(_iconsLimits);\n\nvar _sidebarSidebarItem = __webpack_require__(217);\n\nvar _sidebarSidebarItem2 = _interopRequireDefault(_sidebarSidebarItem);\n\nvar _storesTransferDataStore = __webpack_require__(261);\n\nvar _storesTransferDataStore2 = _interopRequireDefault(_storesTransferDataStore);\n\nvar METHODS_TO_BIND = ['onTransferDataRequestSuccess'];\nvar SPEEDS = [1024, 10240, 102400, 512000, 1048576, 2097152, 5242880, 10485760, 0];\n\nvar Sidebar = (function (_React$Component) {\n _inherits(Sidebar, _React$Component);\n\n function Sidebar() {\n var _this = this;\n\n _classCallCheck(this, Sidebar);\n\n _get(Object.getPrototypeOf(Sidebar.prototype), 'constructor', this).call(this);\n\n this.state = {\n throttle: null\n };\n\n METHODS_TO_BIND.forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n }\n\n _createClass(Sidebar, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n _storesTransferDataStore2['default'].listen(_constantsEventTypes2['default'].CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, this.onTransferDataRequestSuccess);\n _storesTransferDataStore2['default'].fetchTransferData();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _storesTransferDataStore2['default'].unlisten(_constantsEventTypes2['default'].CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, this.onTransferDataRequestSuccess);\n }\n }, {\n key: 'onTransferDataRequestSuccess',\n value: function onTransferDataRequestSuccess() {\n this.setState({\n throttle: _storesTransferDataStore2['default'].getThrottles({ latest: true })\n });\n }\n }, {\n key: 'getDropdownHeader',\n value: function getDropdownHeader() {\n return _react2['default'].createElement(\n 'a',\n { className: 'client-stat--limits' },\n _react2['default'].createElement(_iconsLimits2['default'], null),\n ' Speed Limits'\n );\n }\n }, {\n key: 'getHumanReadableSpeed',\n value: function getHumanReadableSpeed(bytes) {\n if (bytes === 0) {\n return 'Unlimited';\n } else {\n var formattedData = _utilFormatData2['default'].data(bytes, '/s', 0);\n return _react2['default'].createElement(\n 'span',\n null,\n formattedData.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n formattedData.unit\n )\n );\n }\n }\n }, {\n key: 'getSpeedList',\n value: function getSpeedList(property) {\n var _this2 = this;\n\n var heading = {\n className: 'dropdown__label dropdown__label--' + property,\n displayName: '' + property.charAt(0).toUpperCase() + property.slice(1),\n selectable: false,\n value: null\n };\n\n var insertCurrentThrottle = true;\n var currentThrottle = this.state.throttle;\n\n var items = SPEEDS.map(function (bytes) {\n var selected = false;\n\n // Check if the current throttle setting exists in the preset speeds list.\n // Determine if we need to add the current throttle setting to the menu.\n if (currentThrottle && currentThrottle[property] === bytes) {\n selected = true;\n insertCurrentThrottle = false;\n }\n\n return {\n displayName: _this2.getHumanReadableSpeed(bytes),\n property: property,\n selected: selected,\n selectable: true,\n value: bytes\n };\n });\n\n // If the current throttle setting doesn't exist in the pre-set speeds list,\n // add it and show it as selected.\n if (insertCurrentThrottle && currentThrottle) {\n // Find the position to insert the current throttle setting so that it\n // remains sorted from lowest to highest.\n var insertionPoint = _.sortedIndex(SPEEDS, currentThrottle[property]);\n\n items.splice(insertionPoint, 0, {\n displayName: this.getHumanReadableSpeed(currentThrottle[property]),\n property: property,\n selected: true,\n selectable: true,\n value: currentThrottle[property]\n });\n }\n\n items.unshift(heading);\n\n return items;\n }\n }, {\n key: 'getDropdownMenus',\n value: function getDropdownMenus() {\n return [this.getSpeedList('download'), this.getSpeedList('upload')];\n }\n }, {\n key: 'handleItemSelect',\n value: function handleItemSelect(data) {\n _actionsClientActions2['default'].setThrottle(data.property, data.value);\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2['default'].createElement(\n _sidebarSidebarItem2['default'],\n { modifier: 'speed-limit' },\n _react2['default'].createElement(_formsDropdown2['default'], {\n handleItemSelect: this.handleItemSelect,\n header: this.getDropdownHeader(),\n menuItems: this.getDropdownMenus()\n })\n );\n }\n }]);\n\n return Sidebar;\n})(_react2['default'].Component);\n\nexports['default'] = Sidebar;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy9zaWRlYmFyL1NwZWVkTGltaXREcm9wZG93bi5qcz9jYzMxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGlDQUFpQywyQ0FBMkMsZ0JBQWdCLGtCQUFrQixPQUFPLDJCQUEyQix3REFBd0QsZ0NBQWdDLHVEQUF1RCwyREFBMkQsRUFBRSxFQUFFLHlEQUF5RCxxRUFBcUUsNkRBQTZELG9CQUFvQixHQUFHLEVBQUU7O0FBRWxqQix1Q0FBdUMsbUJBQW1CLDRCQUE0QixpREFBaUQsZ0JBQWdCLGtEQUFrRCw4REFBOEQsMEJBQTBCLDRDQUE0Qyx1QkFBdUIsa0JBQWtCLEVBQUUsT0FBTyxhQUFhLGdCQUFnQixnQkFBZ0IsZUFBZSwyQkFBMkIsb0JBQW9CLEVBQUUsRUFBRSw0QkFBNEIsbUJBQW1CLEVBQUUsT0FBTyx1QkFBdUIsNEJBQTRCLGtCQUFrQixFQUFFLDhCQUE4QixFQUFFLEVBQUU7O0FBRS9vQixzQ0FBc0MsdUNBQXVDLGtCQUFrQjs7QUFFL0YsaURBQWlELDBDQUEwQywwREFBMEQsRUFBRTs7QUFFdkosMENBQTBDLCtEQUErRCxxR0FBcUcsRUFBRSx5RUFBeUUsZUFBZSx5RUFBeUUsRUFBRSxFQUFFLHVIQUF1SDs7QUFFNWU7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLHFFQUFxRSxlQUFlO0FBQ3BGLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsbUNBQW1DO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxvQkFBb0I7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsMEJBQTBCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6IjIxNC5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbnZhciBfZ2V0ID0gZnVuY3Rpb24gZ2V0KF94LCBfeDIsIF94MykgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeCwgcHJvcGVydHkgPSBfeDIsIHJlY2VpdmVyID0gX3gzOyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94ID0gcGFyZW50OyBfeDIgPSBwcm9wZXJ0eTsgX3gzID0gcmVjZWl2ZXI7IF9hZ2FpbiA9IHRydWU7IGRlc2MgPSBwYXJlbnQgPSB1bmRlZmluZWQ7IGNvbnRpbnVlIF9mdW5jdGlvbjsgfSB9IGVsc2UgaWYgKCd2YWx1ZScgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gJ2Z1bmN0aW9uJyAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ1N1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgJyArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbnZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXG52YXIgX2FjdGlvbnNDbGllbnRBY3Rpb25zID0gcmVxdWlyZSgnLi4vLi4vYWN0aW9ucy9DbGllbnRBY3Rpb25zJyk7XG5cbnZhciBfYWN0aW9uc0NsaWVudEFjdGlvbnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYWN0aW9uc0NsaWVudEFjdGlvbnMpO1xuXG52YXIgX2Zvcm1zRHJvcGRvd24gPSByZXF1aXJlKCcuLi9mb3Jtcy9Ecm9wZG93bicpO1xuXG52YXIgX2Zvcm1zRHJvcGRvd24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZm9ybXNEcm9wZG93bik7XG5cbnZhciBfY29uc3RhbnRzRXZlbnRUeXBlcyA9IHJlcXVpcmUoJy4uLy4uL2NvbnN0YW50cy9FdmVudFR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzRXZlbnRUeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25zdGFudHNFdmVudFR5cGVzKTtcblxudmFyIF91dGlsRm9ybWF0RGF0YSA9IHJlcXVpcmUoJy4uLy4uL3V0aWwvZm9ybWF0RGF0YScpO1xuXG52YXIgX3V0aWxGb3JtYXREYXRhMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3V0aWxGb3JtYXREYXRhKTtcblxudmFyIF9pY29uc0xpbWl0cyA9IHJlcXVpcmUoJy4uL2ljb25zL0xpbWl0cycpO1xuXG52YXIgX2ljb25zTGltaXRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ljb25zTGltaXRzKTtcblxudmFyIF9zaWRlYmFyU2lkZWJhckl0ZW0gPSByZXF1aXJlKCcuLi9zaWRlYmFyL1NpZGViYXJJdGVtJyk7XG5cbnZhciBfc2lkZWJhclNpZGViYXJJdGVtMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3NpZGViYXJTaWRlYmFySXRlbSk7XG5cbnZhciBfc3RvcmVzVHJhbnNmZXJEYXRhU3RvcmUgPSByZXF1aXJlKCcuLi8uLi9zdG9yZXMvVHJhbnNmZXJEYXRhU3RvcmUnKTtcblxudmFyIF9zdG9yZXNUcmFuc2ZlckRhdGFTdG9yZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdG9yZXNUcmFuc2ZlckRhdGFTdG9yZSk7XG5cbnZhciBNRVRIT0RTX1RPX0JJTkQgPSBbJ29uVHJhbnNmZXJEYXRhUmVxdWVzdFN1Y2Nlc3MnXTtcbnZhciBTUEVFRFMgPSBbMTAyNCwgMTAyNDAsIDEwMjQwMCwgNTEyMDAwLCAxMDQ4NTc2LCAyMDk3MTUyLCA1MjQyODgwLCAxMDQ4NTc2MCwgMF07XG5cbnZhciBTaWRlYmFyID0gKGZ1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhTaWRlYmFyLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBTaWRlYmFyKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU2lkZWJhcik7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihTaWRlYmFyLnByb3RvdHlwZSksICdjb25zdHJ1Y3RvcicsIHRoaXMpLmNhbGwodGhpcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgdGhyb3R0bGU6IG51bGxcbiAgICB9O1xuXG4gICAgTUVUSE9EU19UT19CSU5ELmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgICAgX3RoaXNbbWV0aG9kXSA9IF90aGlzW21ldGhvZF0uYmluZChfdGhpcyk7XG4gICAgfSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoU2lkZWJhciwgW3tcbiAgICBrZXk6ICdjb21wb25lbnREaWRNb3VudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgX3N0b3Jlc1RyYW5zZmVyRGF0YVN0b3JlMlsnZGVmYXVsdCddLmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfVFJBTlNGRVJfREFUQV9SRVFVRVNUX1NVQ0NFU1MsIHRoaXMub25UcmFuc2ZlckRhdGFSZXF1ZXN0U3VjY2Vzcyk7XG4gICAgICBfc3RvcmVzVHJhbnNmZXJEYXRhU3RvcmUyWydkZWZhdWx0J10uZmV0Y2hUcmFuc2ZlckRhdGEoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdjb21wb25lbnRXaWxsVW5tb3VudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgX3N0b3Jlc1RyYW5zZmVyRGF0YVN0b3JlMlsnZGVmYXVsdCddLnVubGlzdGVuKF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9UUkFOU0ZFUl9EQVRBX1JFUVVFU1RfU1VDQ0VTUywgdGhpcy5vblRyYW5zZmVyRGF0YVJlcXVlc3RTdWNjZXNzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdvblRyYW5zZmVyRGF0YVJlcXVlc3RTdWNjZXNzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25UcmFuc2ZlckRhdGFSZXF1ZXN0U3VjY2VzcygpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICB0aHJvdHRsZTogX3N0b3Jlc1RyYW5zZmVyRGF0YVN0b3JlMlsnZGVmYXVsdCddLmdldFRocm90dGxlcyh7IGxhdGVzdDogdHJ1ZSB9KVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0RHJvcGRvd25IZWFkZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREcm9wZG93bkhlYWRlcigpIHtcbiAgICAgIHJldHVybiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgJ2EnLFxuICAgICAgICB7IGNsYXNzTmFtZTogJ2NsaWVudC1zdGF0LS1saW1pdHMnIH0sXG4gICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9pY29uc0xpbWl0czJbJ2RlZmF1bHQnXSwgbnVsbCksXG4gICAgICAgICcgU3BlZWQgTGltaXRzJ1xuICAgICAgKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRIdW1hblJlYWRhYmxlU3BlZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRIdW1hblJlYWRhYmxlU3BlZWQoYnl0ZXMpIHtcbiAgICAgIGlmIChieXRlcyA9PT0gMCkge1xuICAgICAgICByZXR1cm4gJ1VubGltaXRlZCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgZm9ybWF0dGVkRGF0YSA9IF91dGlsRm9ybWF0RGF0YTJbJ2RlZmF1bHQnXS5kYXRhKGJ5dGVzLCAnL3MnLCAwKTtcbiAgICAgICAgcmV0dXJuIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICdzcGFuJyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIGZvcm1hdHRlZERhdGEudmFsdWUsXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAnZW0nLFxuICAgICAgICAgICAgeyBjbGFzc05hbWU6ICd1bml0JyB9LFxuICAgICAgICAgICAgZm9ybWF0dGVkRGF0YS51bml0XG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldFNwZWVkTGlzdCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNwZWVkTGlzdChwcm9wZXJ0eSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBoZWFkaW5nID0ge1xuICAgICAgICBjbGFzc05hbWU6ICdkcm9wZG93bl9fbGFiZWwgZHJvcGRvd25fX2xhYmVsLS0nICsgcHJvcGVydHksXG4gICAgICAgIGRpc3BsYXlOYW1lOiAnJyArIHByb3BlcnR5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcHJvcGVydHkuc2xpY2UoMSksXG4gICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxuICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgfTtcblxuICAgICAgdmFyIGluc2VydEN1cnJlbnRUaHJvdHRsZSA9IHRydWU7XG4gICAgICB2YXIgY3VycmVudFRocm90dGxlID0gdGhpcy5zdGF0ZS50aHJvdHRsZTtcblxuICAgICAgdmFyIGl0ZW1zID0gU1BFRURTLm1hcChmdW5jdGlvbiAoYnl0ZXMpIHtcbiAgICAgICAgdmFyIHNlbGVjdGVkID0gZmFsc2U7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgdGhyb3R0bGUgc2V0dGluZyBleGlzdHMgaW4gdGhlIHByZXNldCBzcGVlZHMgbGlzdC5cbiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gYWRkIHRoZSBjdXJyZW50IHRocm90dGxlIHNldHRpbmcgdG8gdGhlIG1lbnUuXG4gICAgICAgIGlmIChjdXJyZW50VGhyb3R0bGUgJiYgY3VycmVudFRocm90dGxlW3Byb3BlcnR5XSA9PT0gYnl0ZXMpIHtcbiAgICAgICAgICBzZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgaW5zZXJ0Q3VycmVudFRocm90dGxlID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRpc3BsYXlOYW1lOiBfdGhpczIuZ2V0SHVtYW5SZWFkYWJsZVNwZWVkKGJ5dGVzKSxcbiAgICAgICAgICBwcm9wZXJ0eTogcHJvcGVydHksXG4gICAgICAgICAgc2VsZWN0ZWQ6IHNlbGVjdGVkLFxuICAgICAgICAgIHNlbGVjdGFibGU6IHRydWUsXG4gICAgICAgICAgdmFsdWU6IGJ5dGVzXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgdGhyb3R0bGUgc2V0dGluZyBkb2Vzbid0IGV4aXN0IGluIHRoZSBwcmUtc2V0IHNwZWVkcyBsaXN0LFxuICAgICAgLy8gYWRkIGl0IGFuZCBzaG93IGl0IGFzIHNlbGVjdGVkLlxuICAgICAgaWYgKGluc2VydEN1cnJlbnRUaHJvdHRsZSAmJiBjdXJyZW50VGhyb3R0bGUpIHtcbiAgICAgICAgLy8gRmluZCB0aGUgcG9zaXRpb24gdG8gaW5zZXJ0IHRoZSBjdXJyZW50IHRocm90dGxlIHNldHRpbmcgc28gdGhhdCBpdFxuICAgICAgICAvLyByZW1haW5zIHNvcnRlZCBmcm9tIGxvd2VzdCB0byBoaWdoZXN0LlxuICAgICAgICB2YXIgaW5zZXJ0aW9uUG9pbnQgPSBfLnNvcnRlZEluZGV4KFNQRUVEUywgY3VycmVudFRocm90dGxlW3Byb3BlcnR5XSk7XG5cbiAgICAgICAgaXRlbXMuc3BsaWNlKGluc2VydGlvblBvaW50LCAwLCB7XG4gICAgICAgICAgZGlzcGxheU5hbWU6IHRoaXMuZ2V0SHVtYW5SZWFkYWJsZVNwZWVkKGN1cnJlbnRUaHJvdHRsZVtwcm9wZXJ0eV0pLFxuICAgICAgICAgIHByb3BlcnR5OiBwcm9wZXJ0eSxcbiAgICAgICAgICBzZWxlY3RlZDogdHJ1ZSxcbiAgICAgICAgICBzZWxlY3RhYmxlOiB0cnVlLFxuICAgICAgICAgIHZhbHVlOiBjdXJyZW50VGhyb3R0bGVbcHJvcGVydHldXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpdGVtcy51bnNoaWZ0KGhlYWRpbmcpO1xuXG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0RHJvcGRvd25NZW51cycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldERyb3Bkb3duTWVudXMoKSB7XG4gICAgICByZXR1cm4gW3RoaXMuZ2V0U3BlZWRMaXN0KCdkb3dubG9hZCcpLCB0aGlzLmdldFNwZWVkTGlzdCgndXBsb2FkJyldO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZUl0ZW1TZWxlY3QnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVJdGVtU2VsZWN0KGRhdGEpIHtcbiAgICAgIF9hY3Rpb25zQ2xpZW50QWN0aW9uczJbJ2RlZmF1bHQnXS5zZXRUaHJvdHRsZShkYXRhLnByb3BlcnR5LCBkYXRhLnZhbHVlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdyZW5kZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgIF9zaWRlYmFyU2lkZWJhckl0ZW0yWydkZWZhdWx0J10sXG4gICAgICAgIHsgbW9kaWZpZXI6ICdzcGVlZC1saW1pdCcgfSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2Zvcm1zRHJvcGRvd24yWydkZWZhdWx0J10sIHtcbiAgICAgICAgICBoYW5kbGVJdGVtU2VsZWN0OiB0aGlzLmhhbmRsZUl0ZW1TZWxlY3QsXG4gICAgICAgICAgaGVhZGVyOiB0aGlzLmdldERyb3Bkb3duSGVhZGVyKCksXG4gICAgICAgICAgbWVudUl0ZW1zOiB0aGlzLmdldERyb3Bkb3duTWVudXMoKVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU2lkZWJhcjtcbn0pKF9yZWFjdDJbJ2RlZmF1bHQnXS5Db21wb25lbnQpO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBTaWRlYmFyO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9jb21wb25lbnRzL3NpZGViYXIvU3BlZWRMaW1pdERyb3Bkb3duLmpzXG4gKiogbW9kdWxlIGlkID0gMjE0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iXSwic291cmNlUm9vdCI6IiJ9"); /***/ }, /* 215 */ @@ -1400,7 +1395,7 @@ /* 226 */ /***/ 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 _constantsActionTypes = __webpack_require__(195);\n\nvar _constantsActionTypes2 = _interopRequireDefault(_constantsActionTypes);\n\nvar _dispatcherAppDispatcher = __webpack_require__(191);\n\nvar _dispatcherAppDispatcher2 = _interopRequireDefault(_dispatcherAppDispatcher);\n\nvar _BaseStore2 = __webpack_require__(199);\n\nvar _BaseStore3 = _interopRequireDefault(_BaseStore2);\n\nvar _actionsTorrentActions = __webpack_require__(176);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar _constantsEventTypes = __webpack_require__(196);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar TorrentFilterStoreClass = (function (_BaseStore) {\n _inherits(TorrentFilterStoreClass, _BaseStore);\n\n function TorrentFilterStoreClass() {\n _classCallCheck(this, TorrentFilterStoreClass);\n\n _get(Object.getPrototypeOf(TorrentFilterStoreClass.prototype), 'constructor', this).call(this);\n\n this.searchFilter = null;\n this.statusFilter = 'all';\n this.sortTorrentsBy = {\n direction: 'desc',\n displayName: 'Date Added',\n property: 'sortBy',\n value: 'added'\n };\n }\n\n _createClass(TorrentFilterStoreClass, [{\n key: 'getStatusFilter',\n value: function getStatusFilter() {\n return this.statusFilter;\n }\n }, {\n key: 'setStatusFilter',\n value: function setStatusFilter(filter) {\n this.statusFilter = filter;\n this.emit(_constantsEventTypes2['default'].UI_TORRENTS_FILTER_STATUS_CHANGE);\n }\n }, {\n key: 'getSearchFilter',\n value: function getSearchFilter() {\n return this.searchFilter;\n }\n }, {\n key: 'setSearchFilter',\n value: function setSearchFilter(filter) {\n this.searchFilter = filter;\n this.emit(_constantsEventTypes2['default'].UI_TORRENTS_FILTER_SEARCH_CHANGE);\n }\n }, {\n key: 'getTorrentsSort',\n value: function getTorrentsSort() {\n return this.sortTorrentsBy;\n }\n }, {\n key: 'setTorrentsSort',\n value: function setTorrentsSort(sortBy) {\n this.sortTorrentsBy = sortBy;\n this.emit(_constantsEventTypes2['default'].UI_TORRENTS_SORT_CHANGE);\n }\n }]);\n\n return TorrentFilterStoreClass;\n})(_BaseStore3['default']);\n\nvar TorrentFilterStore = new TorrentFilterStoreClass();\n\n_dispatcherAppDispatcher2['default'].register(function (payload) {\n var action = payload.action;\n var source = payload.source;\n\n switch (action.type) {\n case _constantsActionTypes2['default'].UI_SET_TORRENT_SEARCH_FILTER:\n TorrentFilterStore.setSearchFilter(action.data);\n break;\n case _constantsActionTypes2['default'].UI_SET_TORRENT_STATUS_FILTER:\n TorrentFilterStore.setStatusFilter(action.data);\n break;\n case _constantsActionTypes2['default'].UI_SET_TORRENT_SORT:\n TorrentFilterStore.setTorrentsSort(action.data);\n break;\n }\n});\n\nexports['default'] = TorrentFilterStore;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvc3RvcmVzL1RvcnJlbnRGaWx0ZXJTdG9yZS5qcz9kM2ZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGlDQUFpQywyQ0FBMkMsZ0JBQWdCLGtCQUFrQixPQUFPLDJCQUEyQix3REFBd0QsZ0NBQWdDLHVEQUF1RCwyREFBMkQsRUFBRSxFQUFFLHlEQUF5RCxxRUFBcUUsNkRBQTZELG9CQUFvQixHQUFHLEVBQUU7O0FBRWxqQix1Q0FBdUMsbUJBQW1CLDRCQUE0QixpREFBaUQsZ0JBQWdCLGtEQUFrRCw4REFBOEQsMEJBQTBCLDRDQUE0Qyx1QkFBdUIsa0JBQWtCLEVBQUUsT0FBTyxhQUFhLGdCQUFnQixnQkFBZ0IsZUFBZSwyQkFBMkIsb0JBQW9CLEVBQUUsRUFBRSw0QkFBNEIsbUJBQW1CLEVBQUUsT0FBTyx1QkFBdUIsNEJBQTRCLGtCQUFrQixFQUFFLDhCQUE4QixFQUFFLEVBQUU7O0FBRS9vQixzQ0FBc0MsdUNBQXVDLGtCQUFrQjs7QUFFL0YsaURBQWlELDBDQUEwQywwREFBMEQsRUFBRTs7QUFFdkosMENBQTBDLCtEQUErRCxxR0FBcUcsRUFBRSx5RUFBeUUsZUFBZSx5RUFBeUUsRUFBRSxFQUFFLHVIQUF1SDs7QUFFNWU7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0EiLCJmaWxlIjoiMjI2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gsIF94MiwgX3gzKSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94LCBwcm9wZXJ0eSA9IF94MiwgcmVjZWl2ZXIgPSBfeDM7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3ggPSBwYXJlbnQ7IF94MiA9IHByb3BlcnR5OyBfeDMgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX2NvbnN0YW50c0FjdGlvblR5cGVzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL0FjdGlvblR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzQWN0aW9uVHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzQWN0aW9uVHlwZXMpO1xuXG52YXIgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyID0gcmVxdWlyZSgnLi4vZGlzcGF0Y2hlci9BcHBEaXNwYXRjaGVyJyk7XG5cbnZhciBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIpO1xuXG52YXIgX0Jhc2VTdG9yZTIgPSByZXF1aXJlKCcuL0Jhc2VTdG9yZScpO1xuXG52YXIgX0Jhc2VTdG9yZTMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9CYXNlU3RvcmUyKTtcblxudmFyIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMgPSByZXF1aXJlKCcuLi9hY3Rpb25zL1RvcnJlbnRBY3Rpb25zJyk7XG5cbnZhciBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2FjdGlvbnNUb3JyZW50QWN0aW9ucyk7XG5cbnZhciBfY29uc3RhbnRzRXZlbnRUeXBlcyA9IHJlcXVpcmUoJy4uL2NvbnN0YW50cy9FdmVudFR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzRXZlbnRUeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25zdGFudHNFdmVudFR5cGVzKTtcblxudmFyIFRvcnJlbnRGaWx0ZXJTdG9yZUNsYXNzID0gKGZ1bmN0aW9uIChfQmFzZVN0b3JlKSB7XG4gIF9pbmhlcml0cyhUb3JyZW50RmlsdGVyU3RvcmVDbGFzcywgX0Jhc2VTdG9yZSk7XG5cbiAgZnVuY3Rpb24gVG9ycmVudEZpbHRlclN0b3JlQ2xhc3MoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRvcnJlbnRGaWx0ZXJTdG9yZUNsYXNzKTtcblxuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKFRvcnJlbnRGaWx0ZXJTdG9yZUNsYXNzLnByb3RvdHlwZSksICdjb25zdHJ1Y3RvcicsIHRoaXMpLmNhbGwodGhpcyk7XG5cbiAgICB0aGlzLnNlYXJjaEZpbHRlciA9IG51bGw7XG4gICAgdGhpcy5zdGF0dXNGaWx0ZXIgPSAnYWxsJztcbiAgICB0aGlzLnNvcnRUb3JyZW50c0J5ID0ge1xuICAgICAgZGlyZWN0aW9uOiAnZGVzYycsXG4gICAgICBkaXNwbGF5TmFtZTogJ0RhdGUgQWRkZWQnLFxuICAgICAgcHJvcGVydHk6ICdzb3J0QnknLFxuICAgICAgdmFsdWU6ICdhZGRlZCdcbiAgICB9O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRvcnJlbnRGaWx0ZXJTdG9yZUNsYXNzLCBbe1xuICAgIGtleTogJ2dldFN0YXR1c0ZpbHRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFN0YXR1c0ZpbHRlcigpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YXR1c0ZpbHRlcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdzZXRTdGF0dXNGaWx0ZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRTdGF0dXNGaWx0ZXIoZmlsdGVyKSB7XG4gICAgICB0aGlzLnN0YXR1c0ZpbHRlciA9IGZpbHRlcjtcbiAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9UT1JSRU5UU19GSUxURVJfU1RBVFVTX0NIQU5HRSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0U2VhcmNoRmlsdGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2VhcmNoRmlsdGVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoRmlsdGVyO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3NldFNlYXJjaEZpbHRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFNlYXJjaEZpbHRlcihmaWx0ZXIpIHtcbiAgICAgIHRoaXMuc2VhcmNoRmlsdGVyID0gZmlsdGVyO1xuICAgICAgdGhpcy5lbWl0KF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLlVJX1RPUlJFTlRTX0ZJTFRFUl9TRUFSQ0hfQ0hBTkdFKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRUb3JyZW50c1NvcnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUb3JyZW50c1NvcnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zb3J0VG9ycmVudHNCeTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdzZXRUb3JyZW50c1NvcnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRUb3JyZW50c1NvcnQoc29ydEJ5KSB7XG4gICAgICB0aGlzLnNvcnRUb3JyZW50c0J5ID0gc29ydEJ5O1xuICAgICAgdGhpcy5lbWl0KF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLlVJX1RPUlJFTlRTX1NPUlRfQ0hBTkdFKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVG9ycmVudEZpbHRlclN0b3JlQ2xhc3M7XG59KShfQmFzZVN0b3JlM1snZGVmYXVsdCddKTtcblxudmFyIFRvcnJlbnRGaWx0ZXJTdG9yZSA9IG5ldyBUb3JyZW50RmlsdGVyU3RvcmVDbGFzcygpO1xuXG5fZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10ucmVnaXN0ZXIoZnVuY3Rpb24gKHBheWxvYWQpIHtcbiAgdmFyIGFjdGlvbiA9IHBheWxvYWQuYWN0aW9uO1xuICB2YXIgc291cmNlID0gcGF5bG9hZC5zb3VyY2U7XG5cbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX1NFVF9UT1JSRU5UX1NFQVJDSF9GSUxURVI6XG4gICAgICBUb3JyZW50RmlsdGVyU3RvcmUuc2V0U2VhcmNoRmlsdGVyKGFjdGlvbi5kYXRhKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX1NFVF9UT1JSRU5UX1NUQVRVU19GSUxURVI6XG4gICAgICBUb3JyZW50RmlsdGVyU3RvcmUuc2V0U3RhdHVzRmlsdGVyKGFjdGlvbi5kYXRhKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX1NFVF9UT1JSRU5UX1NPUlQ6XG4gICAgICBUb3JyZW50RmlsdGVyU3RvcmUuc2V0VG9ycmVudHNTb3J0KGFjdGlvbi5kYXRhKTtcbiAgICAgIGJyZWFrO1xuICB9XG59KTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gVG9ycmVudEZpbHRlclN0b3JlO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9zdG9yZXMvVG9ycmVudEZpbHRlclN0b3JlLmpzXG4gKiogbW9kdWxlIGlkID0gMjI2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iXSwic291cmNlUm9vdCI6IiJ9"); + 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 _constantsActionTypes = __webpack_require__(195);\n\nvar _constantsActionTypes2 = _interopRequireDefault(_constantsActionTypes);\n\nvar _dispatcherAppDispatcher = __webpack_require__(191);\n\nvar _dispatcherAppDispatcher2 = _interopRequireDefault(_dispatcherAppDispatcher);\n\nvar _BaseStore2 = __webpack_require__(199);\n\nvar _BaseStore3 = _interopRequireDefault(_BaseStore2);\n\nvar _constantsEventTypes = __webpack_require__(196);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _actionsTorrentActions = __webpack_require__(176);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar _actionsUIActions = __webpack_require__(197);\n\nvar _actionsUIActions2 = _interopRequireDefault(_actionsUIActions);\n\nvar TorrentFilterStoreClass = (function (_BaseStore) {\n _inherits(TorrentFilterStoreClass, _BaseStore);\n\n function TorrentFilterStoreClass() {\n _classCallCheck(this, TorrentFilterStoreClass);\n\n _get(Object.getPrototypeOf(TorrentFilterStoreClass.prototype), 'constructor', this).call(this);\n\n this.searchFilter = null;\n this.statusFilter = 'all';\n this.sortTorrentsBy = {\n direction: 'desc',\n displayName: 'Date Added',\n property: 'sortBy',\n value: 'added'\n };\n }\n\n _createClass(TorrentFilterStoreClass, [{\n key: 'fetchSortProps',\n value: function fetchSortProps() {\n _actionsUIActions2['default'].fetchSortProps();\n }\n }, {\n key: 'getSearchFilter',\n value: function getSearchFilter() {\n return this.searchFilter;\n }\n }, {\n key: 'getStatusFilter',\n value: function getStatusFilter() {\n return this.statusFilter;\n }\n }, {\n key: 'getTorrentsSort',\n value: function getTorrentsSort() {\n return this.sortTorrentsBy;\n }\n }, {\n key: 'handleSortPropsRequestSuccess',\n value: function handleSortPropsRequestSuccess(sortBy) {\n this.setTorrentsSort(sortBy);\n }\n }, {\n key: 'setSearchFilter',\n value: function setSearchFilter(filter) {\n this.searchFilter = filter;\n this.emit(_constantsEventTypes2['default'].UI_TORRENTS_FILTER_SEARCH_CHANGE);\n }\n }, {\n key: 'setStatusFilter',\n value: function setStatusFilter(filter) {\n this.statusFilter = filter;\n this.emit(_constantsEventTypes2['default'].UI_TORRENTS_FILTER_STATUS_CHANGE);\n }\n }, {\n key: 'setTorrentsSort',\n value: function setTorrentsSort(sortBy) {\n this.sortTorrentsBy = sortBy;\n this.emit(_constantsEventTypes2['default'].UI_TORRENTS_SORT_CHANGE);\n }\n }]);\n\n return TorrentFilterStoreClass;\n})(_BaseStore3['default']);\n\nvar TorrentFilterStore = new TorrentFilterStoreClass();\n\n_dispatcherAppDispatcher2['default'].register(function (payload) {\n var action = payload.action;\n var source = payload.source;\n\n switch (action.type) {\n case _constantsActionTypes2['default'].UI_SET_TORRENT_SEARCH_FILTER:\n TorrentFilterStore.setSearchFilter(action.data);\n break;\n case _constantsActionTypes2['default'].UI_SET_TORRENT_STATUS_FILTER:\n TorrentFilterStore.setStatusFilter(action.data);\n break;\n case _constantsActionTypes2['default'].UI_SET_TORRENT_SORT:\n TorrentFilterStore.setTorrentsSort(action.data);\n break;\n case _constantsActionTypes2['default'].UI_SORT_PROPS_REQUEST_SUCCESS:\n TorrentFilterStore.handleSortPropsRequestSuccess(action.data);\n break;\n }\n});\n\nexports['default'] = TorrentFilterStore;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvc3RvcmVzL1RvcnJlbnRGaWx0ZXJTdG9yZS5qcz9kM2ZjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGlDQUFpQywyQ0FBMkMsZ0JBQWdCLGtCQUFrQixPQUFPLDJCQUEyQix3REFBd0QsZ0NBQWdDLHVEQUF1RCwyREFBMkQsRUFBRSxFQUFFLHlEQUF5RCxxRUFBcUUsNkRBQTZELG9CQUFvQixHQUFHLEVBQUU7O0FBRWxqQix1Q0FBdUMsbUJBQW1CLDRCQUE0QixpREFBaUQsZ0JBQWdCLGtEQUFrRCw4REFBOEQsMEJBQTBCLDRDQUE0Qyx1QkFBdUIsa0JBQWtCLEVBQUUsT0FBTyxhQUFhLGdCQUFnQixnQkFBZ0IsZUFBZSwyQkFBMkIsb0JBQW9CLEVBQUUsRUFBRSw0QkFBNEIsbUJBQW1CLEVBQUUsT0FBTyx1QkFBdUIsNEJBQTRCLGtCQUFrQixFQUFFLDhCQUE4QixFQUFFLEVBQUU7O0FBRS9vQixzQ0FBc0MsdUNBQXVDLGtCQUFrQjs7QUFFL0YsaURBQWlELDBDQUEwQywwREFBMEQsRUFBRTs7QUFFdkosMENBQTBDLCtEQUErRCxxR0FBcUcsRUFBRSx5RUFBeUUsZUFBZSx5RUFBeUUsRUFBRSxFQUFFLHVIQUF1SDs7QUFFNWU7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0EiLCJmaWxlIjoiMjI2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gsIF94MiwgX3gzKSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94LCBwcm9wZXJ0eSA9IF94MiwgcmVjZWl2ZXIgPSBfeDM7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3ggPSBwYXJlbnQ7IF94MiA9IHByb3BlcnR5OyBfeDMgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX2NvbnN0YW50c0FjdGlvblR5cGVzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL0FjdGlvblR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzQWN0aW9uVHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzQWN0aW9uVHlwZXMpO1xuXG52YXIgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyID0gcmVxdWlyZSgnLi4vZGlzcGF0Y2hlci9BcHBEaXNwYXRjaGVyJyk7XG5cbnZhciBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIpO1xuXG52YXIgX0Jhc2VTdG9yZTIgPSByZXF1aXJlKCcuL0Jhc2VTdG9yZScpO1xuXG52YXIgX0Jhc2VTdG9yZTMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9CYXNlU3RvcmUyKTtcblxudmFyIF9jb25zdGFudHNFdmVudFR5cGVzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL0V2ZW50VHlwZXMnKTtcblxudmFyIF9jb25zdGFudHNFdmVudFR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbnN0YW50c0V2ZW50VHlwZXMpO1xuXG52YXIgX2FjdGlvbnNUb3JyZW50QWN0aW9ucyA9IHJlcXVpcmUoJy4uL2FjdGlvbnMvVG9ycmVudEFjdGlvbnMnKTtcblxudmFyIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYWN0aW9uc1RvcnJlbnRBY3Rpb25zKTtcblxudmFyIF9hY3Rpb25zVUlBY3Rpb25zID0gcmVxdWlyZSgnLi4vYWN0aW9ucy9VSUFjdGlvbnMnKTtcblxudmFyIF9hY3Rpb25zVUlBY3Rpb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2FjdGlvbnNVSUFjdGlvbnMpO1xuXG52YXIgVG9ycmVudEZpbHRlclN0b3JlQ2xhc3MgPSAoZnVuY3Rpb24gKF9CYXNlU3RvcmUpIHtcbiAgX2luaGVyaXRzKFRvcnJlbnRGaWx0ZXJTdG9yZUNsYXNzLCBfQmFzZVN0b3JlKTtcblxuICBmdW5jdGlvbiBUb3JyZW50RmlsdGVyU3RvcmVDbGFzcygpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVG9ycmVudEZpbHRlclN0b3JlQ2xhc3MpO1xuXG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoVG9ycmVudEZpbHRlclN0b3JlQ2xhc3MucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuY2FsbCh0aGlzKTtcblxuICAgIHRoaXMuc2VhcmNoRmlsdGVyID0gbnVsbDtcbiAgICB0aGlzLnN0YXR1c0ZpbHRlciA9ICdhbGwnO1xuICAgIHRoaXMuc29ydFRvcnJlbnRzQnkgPSB7XG4gICAgICBkaXJlY3Rpb246ICdkZXNjJyxcbiAgICAgIGRpc3BsYXlOYW1lOiAnRGF0ZSBBZGRlZCcsXG4gICAgICBwcm9wZXJ0eTogJ3NvcnRCeScsXG4gICAgICB2YWx1ZTogJ2FkZGVkJ1xuICAgIH07XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVG9ycmVudEZpbHRlclN0b3JlQ2xhc3MsIFt7XG4gICAga2V5OiAnZmV0Y2hTb3J0UHJvcHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmZXRjaFNvcnRQcm9wcygpIHtcbiAgICAgIF9hY3Rpb25zVUlBY3Rpb25zMlsnZGVmYXVsdCddLmZldGNoU29ydFByb3BzKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0U2VhcmNoRmlsdGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2VhcmNoRmlsdGVyKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoRmlsdGVyO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldFN0YXR1c0ZpbHRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFN0YXR1c0ZpbHRlcigpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YXR1c0ZpbHRlcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRUb3JyZW50c1NvcnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUb3JyZW50c1NvcnQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5zb3J0VG9ycmVudHNCeTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVTb3J0UHJvcHNSZXF1ZXN0U3VjY2VzcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVNvcnRQcm9wc1JlcXVlc3RTdWNjZXNzKHNvcnRCeSkge1xuICAgICAgdGhpcy5zZXRUb3JyZW50c1NvcnQoc29ydEJ5KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdzZXRTZWFyY2hGaWx0ZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRTZWFyY2hGaWx0ZXIoZmlsdGVyKSB7XG4gICAgICB0aGlzLnNlYXJjaEZpbHRlciA9IGZpbHRlcjtcbiAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9UT1JSRU5UU19GSUxURVJfU0VBUkNIX0NIQU5HRSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc2V0U3RhdHVzRmlsdGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0U3RhdHVzRmlsdGVyKGZpbHRlcikge1xuICAgICAgdGhpcy5zdGF0dXNGaWx0ZXIgPSBmaWx0ZXI7XG4gICAgICB0aGlzLmVtaXQoX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uVUlfVE9SUkVOVFNfRklMVEVSX1NUQVRVU19DSEFOR0UpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3NldFRvcnJlbnRzU29ydCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFRvcnJlbnRzU29ydChzb3J0QnkpIHtcbiAgICAgIHRoaXMuc29ydFRvcnJlbnRzQnkgPSBzb3J0Qnk7XG4gICAgICB0aGlzLmVtaXQoX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uVUlfVE9SUkVOVFNfU09SVF9DSEFOR0UpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUb3JyZW50RmlsdGVyU3RvcmVDbGFzcztcbn0pKF9CYXNlU3RvcmUzWydkZWZhdWx0J10pO1xuXG52YXIgVG9ycmVudEZpbHRlclN0b3JlID0gbmV3IFRvcnJlbnRGaWx0ZXJTdG9yZUNsYXNzKCk7XG5cbl9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5yZWdpc3RlcihmdW5jdGlvbiAocGF5bG9hZCkge1xuICB2YXIgYWN0aW9uID0gcGF5bG9hZC5hY3Rpb247XG4gIHZhciBzb3VyY2UgPSBwYXlsb2FkLnNvdXJjZTtcblxuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfU0VUX1RPUlJFTlRfU0VBUkNIX0ZJTFRFUjpcbiAgICAgIFRvcnJlbnRGaWx0ZXJTdG9yZS5zZXRTZWFyY2hGaWx0ZXIoYWN0aW9uLmRhdGEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfU0VUX1RPUlJFTlRfU1RBVFVTX0ZJTFRFUjpcbiAgICAgIFRvcnJlbnRGaWx0ZXJTdG9yZS5zZXRTdGF0dXNGaWx0ZXIoYWN0aW9uLmRhdGEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfU0VUX1RPUlJFTlRfU09SVDpcbiAgICAgIFRvcnJlbnRGaWx0ZXJTdG9yZS5zZXRUb3JyZW50c1NvcnQoYWN0aW9uLmRhdGEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfU09SVF9QUk9QU19SRVFVRVNUX1NVQ0NFU1M6XG4gICAgICBUb3JyZW50RmlsdGVyU3RvcmUuaGFuZGxlU29ydFByb3BzUmVxdWVzdFN1Y2Nlc3MoYWN0aW9uLmRhdGEpO1xuICAgICAgYnJlYWs7XG4gIH1cbn0pO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBUb3JyZW50RmlsdGVyU3RvcmU7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vY2xpZW50L3NvdXJjZS9zY3JpcHRzL3N0b3Jlcy9Ub3JyZW50RmlsdGVyU3RvcmUuanNcbiAqKiBtb2R1bGUgaWQgPSAyMjZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0="); /***/ }, /* 227 */ @@ -1412,7 +1407,7 @@ /* 228 */ /***/ 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 _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Action = __webpack_require__(229);\n\nvar _Action2 = _interopRequireDefault(_Action);\n\nvar _iconsAdd = __webpack_require__(231);\n\nvar _iconsAdd2 = _interopRequireDefault(_iconsAdd);\n\nvar _constantsEventTypes = __webpack_require__(196);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _iconsPause = __webpack_require__(232);\n\nvar _iconsPause2 = _interopRequireDefault(_iconsPause);\n\nvar _SortDropdown = __webpack_require__(233);\n\nvar _SortDropdown2 = _interopRequireDefault(_SortDropdown);\n\nvar _iconsStart = __webpack_require__(234);\n\nvar _iconsStart2 = _interopRequireDefault(_iconsStart);\n\nvar _iconsStop = __webpack_require__(230);\n\nvar _iconsStop2 = _interopRequireDefault(_iconsStop);\n\nvar _actionsTorrentActions = __webpack_require__(176);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar _storesTorrentFilterStore = __webpack_require__(226);\n\nvar _storesTorrentFilterStore2 = _interopRequireDefault(_storesTorrentFilterStore);\n\nvar _storesTorrentStore = __webpack_require__(235);\n\nvar _storesTorrentStore2 = _interopRequireDefault(_storesTorrentStore);\n\nvar _actionsUIActions = __webpack_require__(197);\n\nvar _actionsUIActions2 = _interopRequireDefault(_actionsUIActions);\n\nvar METHODS_TO_BIND = ['handleAddTorrents', 'handleSortChange', 'handleStart', 'handleStop', 'onSortChange'];\n\nvar ActionBar = (function (_React$Component) {\n _inherits(ActionBar, _React$Component);\n\n function ActionBar() {\n var _this = this;\n\n _classCallCheck(this, ActionBar);\n\n _get(Object.getPrototypeOf(ActionBar.prototype), 'constructor', this).call(this);\n\n this.state = {\n sortBy: _storesTorrentFilterStore2['default'].getTorrentsSort()\n };\n\n METHODS_TO_BIND.forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n }\n\n _createClass(ActionBar, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n _storesTorrentFilterStore2['default'].listen(_constantsEventTypes2['default'].UI_TORRENTS_SORT_CHANGE, this.onSortChange);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _storesTorrentFilterStore2['default'].unlisten(_constantsEventTypes2['default'].UI_TORRENTS_SORT_CHANGE, this.onSortChange);\n }\n }, {\n key: 'handleAddTorrents',\n value: function handleAddTorrents() {\n _actionsUIActions2['default'].displayModal('add-torrents');\n }\n }, {\n key: 'handleSortChange',\n value: function handleSortChange(sortBy) {\n _actionsUIActions2['default'].setTorrentsSort(sortBy);\n }\n }, {\n key: 'handleStart',\n value: function handleStart() {\n _actionsTorrentActions2['default'].startTorrents(_storesTorrentStore2['default'].getSelectedTorrents());\n }\n }, {\n key: 'handleStop',\n value: function handleStop() {\n _actionsTorrentActions2['default'].stopTorrents(_storesTorrentStore2['default'].getSelectedTorrents());\n }\n }, {\n key: 'onSortChange',\n value: function onSortChange() {\n this.setState({\n sortBy: _storesTorrentFilterStore2['default'].getTorrentsSort()\n });\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2['default'].createElement(\n 'nav',\n { className: 'action-bar' },\n _react2['default'].createElement(\n 'div',\n { className: 'actions action-bar__item action-bar__item--sort-torrents' },\n _react2['default'].createElement(_SortDropdown2['default'], { onSortChange: this.handleSortChange,\n selectedItem: this.state.sortBy })\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'actions action-bar__item action-bar__item--torrent-operations' },\n _react2['default'].createElement(\n 'div',\n { className: 'action-bar__group' },\n _react2['default'].createElement(_Action2['default'], { label: 'Start Torrent', slug: 'start-torrent', icon: _react2['default'].createElement(_iconsStart2['default'], null),\n clickHandler: this.handleStart }),\n _react2['default'].createElement(_Action2['default'], { label: 'Stop Torrent', slug: 'stop-torrent', icon: _react2['default'].createElement(_iconsStop2['default'], null),\n clickHandler: this.handleStop }),\n _react2['default'].createElement(_Action2['default'], { label: 'Pause Torrent', slug: 'pause-torrent', icon: _react2['default'].createElement(_iconsPause2['default'], null),\n clickHandler: this.handlePause })\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'action-bar__group action-bar__group--has-divider' },\n _react2['default'].createElement(_Action2['default'], { label: 'Add Torrent', slug: 'add-torrent', icon: _react2['default'].createElement(_iconsAdd2['default'], null),\n clickHandler: this.handleAddTorrents })\n )\n )\n );\n }\n }]);\n\n return ActionBar;\n})(_react2['default'].Component);\n\nexports['default'] = ActionBar;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy90b3JyZW50LWxpc3QvQWN0aW9uQmFyLmpzPzhjMDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQsaUNBQWlDLDJDQUEyQyxnQkFBZ0Isa0JBQWtCLE9BQU8sMkJBQTJCLHdEQUF3RCxnQ0FBZ0MsdURBQXVELDJEQUEyRCxFQUFFLEVBQUUseURBQXlELHFFQUFxRSw2REFBNkQsb0JBQW9CLEdBQUcsRUFBRTs7QUFFbGpCLHVDQUF1QyxtQkFBbUIsNEJBQTRCLGlEQUFpRCxnQkFBZ0Isa0RBQWtELDhEQUE4RCwwQkFBMEIsNENBQTRDLHVCQUF1QixrQkFBa0IsRUFBRSxPQUFPLGFBQWEsZ0JBQWdCLGdCQUFnQixlQUFlLDJCQUEyQixvQkFBb0IsRUFBRSxFQUFFLDRCQUE0QixtQkFBbUIsRUFBRSxPQUFPLHVCQUF1Qiw0QkFBNEIsa0JBQWtCLEVBQUUsOEJBQThCLEVBQUUsRUFBRTs7QUFFL29CLHNDQUFzQyx1Q0FBdUMsa0JBQWtCOztBQUUvRixpREFBaUQsMENBQTBDLDBEQUEwRCxFQUFFOztBQUV2SiwwQ0FBMEMsK0RBQStELHFHQUFxRyxFQUFFLHlFQUF5RSxlQUFlLHlFQUF5RSxFQUFFLEVBQUUsdUhBQXVIOztBQUU1ZTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsMEJBQTBCO0FBQ25DO0FBQ0E7QUFDQSxXQUFXLHdFQUF3RTtBQUNuRix1RUFBdUU7QUFDdkUsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsNkVBQTZFO0FBQ3hGO0FBQ0E7QUFDQSxhQUFhLGlDQUFpQztBQUM5QyxtRUFBbUU7QUFDbkUsOENBQThDO0FBQzlDLG1FQUFtRTtBQUNuRSw2Q0FBNkM7QUFDN0MsbUVBQW1FO0FBQ25FLDhDQUE4QztBQUM5QztBQUNBO0FBQ0E7QUFDQSxhQUFhLGdFQUFnRTtBQUM3RSxtRUFBbUU7QUFDbkUsb0RBQW9EO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7QUFDQSIsImZpbGUiOiIyMjguanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChfeCwgX3gyLCBfeDMpIHsgdmFyIF9hZ2FpbiA9IHRydWU7IF9mdW5jdGlvbjogd2hpbGUgKF9hZ2FpbikgeyB2YXIgb2JqZWN0ID0gX3gsIHByb3BlcnR5ID0gX3gyLCByZWNlaXZlciA9IF94MzsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeCA9IHBhcmVudDsgX3gyID0gcHJvcGVydHk7IF94MyA9IHJlY2VpdmVyOyBfYWdhaW4gPSB0cnVlOyBkZXNjID0gcGFyZW50ID0gdW5kZWZpbmVkOyBjb250aW51ZSBfZnVuY3Rpb247IH0gfSBlbHNlIGlmICgndmFsdWUnIGluIGRlc2MpIHsgcmV0dXJuIGRlc2MudmFsdWU7IH0gZWxzZSB7IHZhciBnZXR0ZXIgPSBkZXNjLmdldDsgaWYgKGdldHRlciA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTsgfSB9IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBfcmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xuXG52YXIgX3JlYWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlYWN0KTtcblxudmFyIF9BY3Rpb24gPSByZXF1aXJlKCcuL0FjdGlvbicpO1xuXG52YXIgX0FjdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9BY3Rpb24pO1xuXG52YXIgX2ljb25zQWRkID0gcmVxdWlyZSgnLi4vaWNvbnMvQWRkJyk7XG5cbnZhciBfaWNvbnNBZGQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaWNvbnNBZGQpO1xuXG52YXIgX2NvbnN0YW50c0V2ZW50VHlwZXMgPSByZXF1aXJlKCcuLi8uLi9jb25zdGFudHMvRXZlbnRUeXBlcycpO1xuXG52YXIgX2NvbnN0YW50c0V2ZW50VHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzRXZlbnRUeXBlcyk7XG5cbnZhciBfaWNvbnNQYXVzZSA9IHJlcXVpcmUoJy4uL2ljb25zL1BhdXNlJyk7XG5cbnZhciBfaWNvbnNQYXVzZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pY29uc1BhdXNlKTtcblxudmFyIF9Tb3J0RHJvcGRvd24gPSByZXF1aXJlKCcuL1NvcnREcm9wZG93bicpO1xuXG52YXIgX1NvcnREcm9wZG93bjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Tb3J0RHJvcGRvd24pO1xuXG52YXIgX2ljb25zU3RhcnQgPSByZXF1aXJlKCcuLi9pY29ucy9TdGFydCcpO1xuXG52YXIgX2ljb25zU3RhcnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaWNvbnNTdGFydCk7XG5cbnZhciBfaWNvbnNTdG9wID0gcmVxdWlyZSgnLi4vaWNvbnMvU3RvcCcpO1xuXG52YXIgX2ljb25zU3RvcDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pY29uc1N0b3ApO1xuXG52YXIgX2FjdGlvbnNUb3JyZW50QWN0aW9ucyA9IHJlcXVpcmUoJy4uLy4uL2FjdGlvbnMvVG9ycmVudEFjdGlvbnMnKTtcblxudmFyIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYWN0aW9uc1RvcnJlbnRBY3Rpb25zKTtcblxudmFyIF9zdG9yZXNUb3JyZW50RmlsdGVyU3RvcmUgPSByZXF1aXJlKCcuLi8uLi9zdG9yZXMvVG9ycmVudEZpbHRlclN0b3JlJyk7XG5cbnZhciBfc3RvcmVzVG9ycmVudEZpbHRlclN0b3JlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N0b3Jlc1RvcnJlbnRGaWx0ZXJTdG9yZSk7XG5cbnZhciBfc3RvcmVzVG9ycmVudFN0b3JlID0gcmVxdWlyZSgnLi4vLi4vc3RvcmVzL1RvcnJlbnRTdG9yZScpO1xuXG52YXIgX3N0b3Jlc1RvcnJlbnRTdG9yZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdG9yZXNUb3JyZW50U3RvcmUpO1xuXG52YXIgX2FjdGlvbnNVSUFjdGlvbnMgPSByZXF1aXJlKCcuLi8uLi9hY3Rpb25zL1VJQWN0aW9ucycpO1xuXG52YXIgX2FjdGlvbnNVSUFjdGlvbnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYWN0aW9uc1VJQWN0aW9ucyk7XG5cbnZhciBNRVRIT0RTX1RPX0JJTkQgPSBbJ2hhbmRsZUFkZFRvcnJlbnRzJywgJ2hhbmRsZVNvcnRDaGFuZ2UnLCAnaGFuZGxlU3RhcnQnLCAnaGFuZGxlU3RvcCcsICdvblNvcnRDaGFuZ2UnXTtcblxudmFyIEFjdGlvbkJhciA9IChmdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQWN0aW9uQmFyLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBBY3Rpb25CYXIoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBY3Rpb25CYXIpO1xuXG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoQWN0aW9uQmFyLnByb3RvdHlwZSksICdjb25zdHJ1Y3RvcicsIHRoaXMpLmNhbGwodGhpcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgc29ydEJ5OiBfc3RvcmVzVG9ycmVudEZpbHRlclN0b3JlMlsnZGVmYXVsdCddLmdldFRvcnJlbnRzU29ydCgpXG4gICAgfTtcblxuICAgIE1FVEhPRFNfVE9fQklORC5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICAgIF90aGlzW21ldGhvZF0gPSBfdGhpc1ttZXRob2RdLmJpbmQoX3RoaXMpO1xuICAgIH0pO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEFjdGlvbkJhciwgW3tcbiAgICBrZXk6ICdjb21wb25lbnREaWRNb3VudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgX3N0b3Jlc1RvcnJlbnRGaWx0ZXJTdG9yZTJbJ2RlZmF1bHQnXS5saXN0ZW4oX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uVUlfVE9SUkVOVFNfU09SVF9DSEFOR0UsIHRoaXMub25Tb3J0Q2hhbmdlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdjb21wb25lbnRXaWxsVW5tb3VudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgX3N0b3Jlc1RvcnJlbnRGaWx0ZXJTdG9yZTJbJ2RlZmF1bHQnXS51bmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9UT1JSRU5UU19TT1JUX0NIQU5HRSwgdGhpcy5vblNvcnRDaGFuZ2UpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZUFkZFRvcnJlbnRzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlQWRkVG9ycmVudHMoKSB7XG4gICAgICBfYWN0aW9uc1VJQWN0aW9uczJbJ2RlZmF1bHQnXS5kaXNwbGF5TW9kYWwoJ2FkZC10b3JyZW50cycpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZVNvcnRDaGFuZ2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVTb3J0Q2hhbmdlKHNvcnRCeSkge1xuICAgICAgX2FjdGlvbnNVSUFjdGlvbnMyWydkZWZhdWx0J10uc2V0VG9ycmVudHNTb3J0KHNvcnRCeSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlU3RhcnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVTdGFydCgpIHtcbiAgICAgIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMyWydkZWZhdWx0J10uc3RhcnRUb3JyZW50cyhfc3RvcmVzVG9ycmVudFN0b3JlMlsnZGVmYXVsdCddLmdldFNlbGVjdGVkVG9ycmVudHMoKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlU3RvcCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVN0b3AoKSB7XG4gICAgICBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMlsnZGVmYXVsdCddLnN0b3BUb3JyZW50cyhfc3RvcmVzVG9ycmVudFN0b3JlMlsnZGVmYXVsdCddLmdldFNlbGVjdGVkVG9ycmVudHMoKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnb25Tb3J0Q2hhbmdlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25Tb3J0Q2hhbmdlKCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHNvcnRCeTogX3N0b3Jlc1RvcnJlbnRGaWx0ZXJTdG9yZTJbJ2RlZmF1bHQnXS5nZXRUb3JyZW50c1NvcnQoKVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVuZGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgcmV0dXJuIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAnbmF2JyxcbiAgICAgICAgeyBjbGFzc05hbWU6ICdhY3Rpb24tYmFyJyB9LFxuICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ2FjdGlvbnMgYWN0aW9uLWJhcl9faXRlbSBhY3Rpb24tYmFyX19pdGVtLS1zb3J0LXRvcnJlbnRzJyB9LFxuICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9Tb3J0RHJvcGRvd24yWydkZWZhdWx0J10sIHsgb25Tb3J0Q2hhbmdlOiB0aGlzLmhhbmRsZVNvcnRDaGFuZ2UsXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW06IHRoaXMuc3RhdGUuc29ydEJ5IH0pXG4gICAgICAgICksXG4gICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICdkaXYnLFxuICAgICAgICAgIHsgY2xhc3NOYW1lOiAnYWN0aW9ucyBhY3Rpb24tYmFyX19pdGVtIGFjdGlvbi1iYXJfX2l0ZW0tLXRvcnJlbnQtb3BlcmF0aW9ucycgfSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdhY3Rpb24tYmFyX19ncm91cCcgfSxcbiAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9BY3Rpb24yWydkZWZhdWx0J10sIHsgbGFiZWw6ICdTdGFydCBUb3JyZW50Jywgc2x1ZzogJ3N0YXJ0LXRvcnJlbnQnLCBpY29uOiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfaWNvbnNTdGFydDJbJ2RlZmF1bHQnXSwgbnVsbCksXG4gICAgICAgICAgICAgIGNsaWNrSGFuZGxlcjogdGhpcy5oYW5kbGVTdGFydCB9KSxcbiAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9BY3Rpb24yWydkZWZhdWx0J10sIHsgbGFiZWw6ICdTdG9wIFRvcnJlbnQnLCBzbHVnOiAnc3RvcC10b3JyZW50JywgaWNvbjogX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2ljb25zU3RvcDJbJ2RlZmF1bHQnXSwgbnVsbCksXG4gICAgICAgICAgICAgIGNsaWNrSGFuZGxlcjogdGhpcy5oYW5kbGVTdG9wIH0pLFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX0FjdGlvbjJbJ2RlZmF1bHQnXSwgeyBsYWJlbDogJ1BhdXNlIFRvcnJlbnQnLCBzbHVnOiAncGF1c2UtdG9ycmVudCcsIGljb246IF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9pY29uc1BhdXNlMlsnZGVmYXVsdCddLCBudWxsKSxcbiAgICAgICAgICAgICAgY2xpY2tIYW5kbGVyOiB0aGlzLmhhbmRsZVBhdXNlIH0pXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdhY3Rpb24tYmFyX19ncm91cCBhY3Rpb24tYmFyX19ncm91cC0taGFzLWRpdmlkZXInIH0sXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfQWN0aW9uMlsnZGVmYXVsdCddLCB7IGxhYmVsOiAnQWRkIFRvcnJlbnQnLCBzbHVnOiAnYWRkLXRvcnJlbnQnLCBpY29uOiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfaWNvbnNBZGQyWydkZWZhdWx0J10sIG51bGwpLFxuICAgICAgICAgICAgICBjbGlja0hhbmRsZXI6IHRoaXMuaGFuZGxlQWRkVG9ycmVudHMgfSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEFjdGlvbkJhcjtcbn0pKF9yZWFjdDJbJ2RlZmF1bHQnXS5Db21wb25lbnQpO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBBY3Rpb25CYXI7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vY2xpZW50L3NvdXJjZS9zY3JpcHRzL2NvbXBvbmVudHMvdG9ycmVudC1saXN0L0FjdGlvbkJhci5qc1xuICoqIG1vZHVsZSBpZCA9IDIyOFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); + 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 _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Action = __webpack_require__(229);\n\nvar _Action2 = _interopRequireDefault(_Action);\n\nvar _iconsAdd = __webpack_require__(231);\n\nvar _iconsAdd2 = _interopRequireDefault(_iconsAdd);\n\nvar _constantsEventTypes = __webpack_require__(196);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _iconsPause = __webpack_require__(232);\n\nvar _iconsPause2 = _interopRequireDefault(_iconsPause);\n\nvar _SortDropdown = __webpack_require__(233);\n\nvar _SortDropdown2 = _interopRequireDefault(_SortDropdown);\n\nvar _iconsStart = __webpack_require__(234);\n\nvar _iconsStart2 = _interopRequireDefault(_iconsStart);\n\nvar _iconsStop = __webpack_require__(230);\n\nvar _iconsStop2 = _interopRequireDefault(_iconsStop);\n\nvar _actionsTorrentActions = __webpack_require__(176);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar _storesTorrentFilterStore = __webpack_require__(226);\n\nvar _storesTorrentFilterStore2 = _interopRequireDefault(_storesTorrentFilterStore);\n\nvar _storesTorrentStore = __webpack_require__(235);\n\nvar _storesTorrentStore2 = _interopRequireDefault(_storesTorrentStore);\n\nvar _actionsUIActions = __webpack_require__(197);\n\nvar _actionsUIActions2 = _interopRequireDefault(_actionsUIActions);\n\nvar METHODS_TO_BIND = ['handleAddTorrents', 'handleSortChange', 'handleStart', 'handleStop', 'onSortChange'];\n\nvar ActionBar = (function (_React$Component) {\n _inherits(ActionBar, _React$Component);\n\n function ActionBar() {\n var _this = this;\n\n _classCallCheck(this, ActionBar);\n\n _get(Object.getPrototypeOf(ActionBar.prototype), 'constructor', this).call(this);\n\n this.state = {\n sortBy: _storesTorrentFilterStore2['default'].getTorrentsSort()\n };\n\n METHODS_TO_BIND.forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n }\n\n _createClass(ActionBar, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n _storesTorrentFilterStore2['default'].fetchSortProps();\n _storesTorrentFilterStore2['default'].listen(_constantsEventTypes2['default'].UI_TORRENTS_SORT_CHANGE, this.onSortChange);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _storesTorrentFilterStore2['default'].unlisten(_constantsEventTypes2['default'].UI_TORRENTS_SORT_CHANGE, this.onSortChange);\n }\n }, {\n key: 'handleAddTorrents',\n value: function handleAddTorrents() {\n _actionsUIActions2['default'].displayModal('add-torrents');\n }\n }, {\n key: 'handleSortChange',\n value: function handleSortChange(sortBy) {\n _actionsUIActions2['default'].setTorrentsSort(sortBy);\n }\n }, {\n key: 'handleStart',\n value: function handleStart() {\n _actionsTorrentActions2['default'].startTorrents(_storesTorrentStore2['default'].getSelectedTorrents());\n }\n }, {\n key: 'handleStop',\n value: function handleStop() {\n _actionsTorrentActions2['default'].stopTorrents(_storesTorrentStore2['default'].getSelectedTorrents());\n }\n }, {\n key: 'onSortChange',\n value: function onSortChange() {\n this.setState({\n sortBy: _storesTorrentFilterStore2['default'].getTorrentsSort()\n });\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2['default'].createElement(\n 'nav',\n { className: 'action-bar' },\n _react2['default'].createElement(\n 'div',\n { className: 'actions action-bar__item action-bar__item--sort-torrents' },\n _react2['default'].createElement(_SortDropdown2['default'], { onSortChange: this.handleSortChange,\n selectedItem: this.state.sortBy })\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'actions action-bar__item action-bar__item--torrent-operations' },\n _react2['default'].createElement(\n 'div',\n { className: 'action-bar__group' },\n _react2['default'].createElement(_Action2['default'], { label: 'Start Torrent', slug: 'start-torrent', icon: _react2['default'].createElement(_iconsStart2['default'], null),\n clickHandler: this.handleStart }),\n _react2['default'].createElement(_Action2['default'], { label: 'Stop Torrent', slug: 'stop-torrent', icon: _react2['default'].createElement(_iconsStop2['default'], null),\n clickHandler: this.handleStop }),\n _react2['default'].createElement(_Action2['default'], { label: 'Pause Torrent', slug: 'pause-torrent', icon: _react2['default'].createElement(_iconsPause2['default'], null),\n clickHandler: this.handlePause })\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'action-bar__group action-bar__group--has-divider' },\n _react2['default'].createElement(_Action2['default'], { label: 'Add Torrent', slug: 'add-torrent', icon: _react2['default'].createElement(_iconsAdd2['default'], null),\n clickHandler: this.handleAddTorrents })\n )\n )\n );\n }\n }]);\n\n return ActionBar;\n})(_react2['default'].Component);\n\nexports['default'] = ActionBar;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy90b3JyZW50LWxpc3QvQWN0aW9uQmFyLmpzPzhjMDMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQsaUNBQWlDLDJDQUEyQyxnQkFBZ0Isa0JBQWtCLE9BQU8sMkJBQTJCLHdEQUF3RCxnQ0FBZ0MsdURBQXVELDJEQUEyRCxFQUFFLEVBQUUseURBQXlELHFFQUFxRSw2REFBNkQsb0JBQW9CLEdBQUcsRUFBRTs7QUFFbGpCLHVDQUF1QyxtQkFBbUIsNEJBQTRCLGlEQUFpRCxnQkFBZ0Isa0RBQWtELDhEQUE4RCwwQkFBMEIsNENBQTRDLHVCQUF1QixrQkFBa0IsRUFBRSxPQUFPLGFBQWEsZ0JBQWdCLGdCQUFnQixlQUFlLDJCQUEyQixvQkFBb0IsRUFBRSxFQUFFLDRCQUE0QixtQkFBbUIsRUFBRSxPQUFPLHVCQUF1Qiw0QkFBNEIsa0JBQWtCLEVBQUUsOEJBQThCLEVBQUUsRUFBRTs7QUFFL29CLHNDQUFzQyx1Q0FBdUMsa0JBQWtCOztBQUUvRixpREFBaUQsMENBQTBDLDBEQUEwRCxFQUFFOztBQUV2SiwwQ0FBMEMsK0RBQStELHFHQUFxRyxFQUFFLHlFQUF5RSxlQUFlLHlFQUF5RSxFQUFFLEVBQUUsdUhBQXVIOztBQUU1ZTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUywwQkFBMEI7QUFDbkM7QUFDQTtBQUNBLFdBQVcsd0VBQXdFO0FBQ25GLHVFQUF1RTtBQUN2RSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0EsV0FBVyw2RUFBNkU7QUFDeEY7QUFDQTtBQUNBLGFBQWEsaUNBQWlDO0FBQzlDLG1FQUFtRTtBQUNuRSw4Q0FBOEM7QUFDOUMsbUVBQW1FO0FBQ25FLDZDQUE2QztBQUM3QyxtRUFBbUU7QUFDbkUsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLGFBQWEsZ0VBQWdFO0FBQzdFLG1FQUFtRTtBQUNuRSxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6IjIyOC5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbnZhciBfZ2V0ID0gZnVuY3Rpb24gZ2V0KF94LCBfeDIsIF94MykgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeCwgcHJvcGVydHkgPSBfeDIsIHJlY2VpdmVyID0gX3gzOyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94ID0gcGFyZW50OyBfeDIgPSBwcm9wZXJ0eTsgX3gzID0gcmVjZWl2ZXI7IF9hZ2FpbiA9IHRydWU7IGRlc2MgPSBwYXJlbnQgPSB1bmRlZmluZWQ7IGNvbnRpbnVlIF9mdW5jdGlvbjsgfSB9IGVsc2UgaWYgKCd2YWx1ZScgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gJ2Z1bmN0aW9uJyAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ1N1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgJyArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbnZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXG52YXIgX0FjdGlvbiA9IHJlcXVpcmUoJy4vQWN0aW9uJyk7XG5cbnZhciBfQWN0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX0FjdGlvbik7XG5cbnZhciBfaWNvbnNBZGQgPSByZXF1aXJlKCcuLi9pY29ucy9BZGQnKTtcblxudmFyIF9pY29uc0FkZDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pY29uc0FkZCk7XG5cbnZhciBfY29uc3RhbnRzRXZlbnRUeXBlcyA9IHJlcXVpcmUoJy4uLy4uL2NvbnN0YW50cy9FdmVudFR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzRXZlbnRUeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25zdGFudHNFdmVudFR5cGVzKTtcblxudmFyIF9pY29uc1BhdXNlID0gcmVxdWlyZSgnLi4vaWNvbnMvUGF1c2UnKTtcblxudmFyIF9pY29uc1BhdXNlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ljb25zUGF1c2UpO1xuXG52YXIgX1NvcnREcm9wZG93biA9IHJlcXVpcmUoJy4vU29ydERyb3Bkb3duJyk7XG5cbnZhciBfU29ydERyb3Bkb3duMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1NvcnREcm9wZG93bik7XG5cbnZhciBfaWNvbnNTdGFydCA9IHJlcXVpcmUoJy4uL2ljb25zL1N0YXJ0Jyk7XG5cbnZhciBfaWNvbnNTdGFydDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pY29uc1N0YXJ0KTtcblxudmFyIF9pY29uc1N0b3AgPSByZXF1aXJlKCcuLi9pY29ucy9TdG9wJyk7XG5cbnZhciBfaWNvbnNTdG9wMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ljb25zU3RvcCk7XG5cbnZhciBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zID0gcmVxdWlyZSgnLi4vLi4vYWN0aW9ucy9Ub3JyZW50QWN0aW9ucycpO1xuXG52YXIgX2FjdGlvbnNUb3JyZW50QWN0aW9uczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hY3Rpb25zVG9ycmVudEFjdGlvbnMpO1xuXG52YXIgX3N0b3Jlc1RvcnJlbnRGaWx0ZXJTdG9yZSA9IHJlcXVpcmUoJy4uLy4uL3N0b3Jlcy9Ub3JyZW50RmlsdGVyU3RvcmUnKTtcblxudmFyIF9zdG9yZXNUb3JyZW50RmlsdGVyU3RvcmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3RvcmVzVG9ycmVudEZpbHRlclN0b3JlKTtcblxudmFyIF9zdG9yZXNUb3JyZW50U3RvcmUgPSByZXF1aXJlKCcuLi8uLi9zdG9yZXMvVG9ycmVudFN0b3JlJyk7XG5cbnZhciBfc3RvcmVzVG9ycmVudFN0b3JlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N0b3Jlc1RvcnJlbnRTdG9yZSk7XG5cbnZhciBfYWN0aW9uc1VJQWN0aW9ucyA9IHJlcXVpcmUoJy4uLy4uL2FjdGlvbnMvVUlBY3Rpb25zJyk7XG5cbnZhciBfYWN0aW9uc1VJQWN0aW9uczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hY3Rpb25zVUlBY3Rpb25zKTtcblxudmFyIE1FVEhPRFNfVE9fQklORCA9IFsnaGFuZGxlQWRkVG9ycmVudHMnLCAnaGFuZGxlU29ydENoYW5nZScsICdoYW5kbGVTdGFydCcsICdoYW5kbGVTdG9wJywgJ29uU29ydENoYW5nZSddO1xuXG52YXIgQWN0aW9uQmFyID0gKGZ1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhBY3Rpb25CYXIsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIEFjdGlvbkJhcigpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEFjdGlvbkJhcik7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihBY3Rpb25CYXIucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuY2FsbCh0aGlzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBzb3J0Qnk6IF9zdG9yZXNUb3JyZW50RmlsdGVyU3RvcmUyWydkZWZhdWx0J10uZ2V0VG9ycmVudHNTb3J0KClcbiAgICB9O1xuXG4gICAgTUVUSE9EU19UT19CSU5ELmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgICAgX3RoaXNbbWV0aG9kXSA9IF90aGlzW21ldGhvZF0uYmluZChfdGhpcyk7XG4gICAgfSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQWN0aW9uQmFyLCBbe1xuICAgIGtleTogJ2NvbXBvbmVudERpZE1vdW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICBfc3RvcmVzVG9ycmVudEZpbHRlclN0b3JlMlsnZGVmYXVsdCddLmZldGNoU29ydFByb3BzKCk7XG4gICAgICBfc3RvcmVzVG9ycmVudEZpbHRlclN0b3JlMlsnZGVmYXVsdCddLmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9UT1JSRU5UU19TT1JUX0NIQU5HRSwgdGhpcy5vblNvcnRDaGFuZ2UpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2NvbXBvbmVudFdpbGxVbm1vdW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBfc3RvcmVzVG9ycmVudEZpbHRlclN0b3JlMlsnZGVmYXVsdCddLnVubGlzdGVuKF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLlVJX1RPUlJFTlRTX1NPUlRfQ0hBTkdFLCB0aGlzLm9uU29ydENoYW5nZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlQWRkVG9ycmVudHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVBZGRUb3JyZW50cygpIHtcbiAgICAgIF9hY3Rpb25zVUlBY3Rpb25zMlsnZGVmYXVsdCddLmRpc3BsYXlNb2RhbCgnYWRkLXRvcnJlbnRzJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlU29ydENoYW5nZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVNvcnRDaGFuZ2Uoc29ydEJ5KSB7XG4gICAgICBfYWN0aW9uc1VJQWN0aW9uczJbJ2RlZmF1bHQnXS5zZXRUb3JyZW50c1NvcnQoc29ydEJ5KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVTdGFydCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVN0YXJ0KCkge1xuICAgICAgX2FjdGlvbnNUb3JyZW50QWN0aW9uczJbJ2RlZmF1bHQnXS5zdGFydFRvcnJlbnRzKF9zdG9yZXNUb3JyZW50U3RvcmUyWydkZWZhdWx0J10uZ2V0U2VsZWN0ZWRUb3JyZW50cygpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVTdG9wJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlU3RvcCgpIHtcbiAgICAgIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMyWydkZWZhdWx0J10uc3RvcFRvcnJlbnRzKF9zdG9yZXNUb3JyZW50U3RvcmUyWydkZWZhdWx0J10uZ2V0U2VsZWN0ZWRUb3JyZW50cygpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdvblNvcnRDaGFuZ2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvblNvcnRDaGFuZ2UoKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc29ydEJ5OiBfc3RvcmVzVG9ycmVudEZpbHRlclN0b3JlMlsnZGVmYXVsdCddLmdldFRvcnJlbnRzU29ydCgpXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdyZW5kZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICduYXYnLFxuICAgICAgICB7IGNsYXNzTmFtZTogJ2FjdGlvbi1iYXInIH0sXG4gICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICdkaXYnLFxuICAgICAgICAgIHsgY2xhc3NOYW1lOiAnYWN0aW9ucyBhY3Rpb24tYmFyX19pdGVtIGFjdGlvbi1iYXJfX2l0ZW0tLXNvcnQtdG9ycmVudHMnIH0sXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX1NvcnREcm9wZG93bjJbJ2RlZmF1bHQnXSwgeyBvblNvcnRDaGFuZ2U6IHRoaXMuaGFuZGxlU29ydENoYW5nZSxcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbTogdGhpcy5zdGF0ZS5zb3J0QnkgfSlcbiAgICAgICAgKSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgeyBjbGFzc05hbWU6ICdhY3Rpb25zIGFjdGlvbi1iYXJfX2l0ZW0gYWN0aW9uLWJhcl9faXRlbS0tdG9ycmVudC1vcGVyYXRpb25zJyB9LFxuICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2FjdGlvbi1iYXJfX2dyb3VwJyB9LFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX0FjdGlvbjJbJ2RlZmF1bHQnXSwgeyBsYWJlbDogJ1N0YXJ0IFRvcnJlbnQnLCBzbHVnOiAnc3RhcnQtdG9ycmVudCcsIGljb246IF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9pY29uc1N0YXJ0MlsnZGVmYXVsdCddLCBudWxsKSxcbiAgICAgICAgICAgICAgY2xpY2tIYW5kbGVyOiB0aGlzLmhhbmRsZVN0YXJ0IH0pLFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX0FjdGlvbjJbJ2RlZmF1bHQnXSwgeyBsYWJlbDogJ1N0b3AgVG9ycmVudCcsIHNsdWc6ICdzdG9wLXRvcnJlbnQnLCBpY29uOiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfaWNvbnNTdG9wMlsnZGVmYXVsdCddLCBudWxsKSxcbiAgICAgICAgICAgICAgY2xpY2tIYW5kbGVyOiB0aGlzLmhhbmRsZVN0b3AgfSksXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfQWN0aW9uMlsnZGVmYXVsdCddLCB7IGxhYmVsOiAnUGF1c2UgVG9ycmVudCcsIHNsdWc6ICdwYXVzZS10b3JyZW50JywgaWNvbjogX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2ljb25zUGF1c2UyWydkZWZhdWx0J10sIG51bGwpLFxuICAgICAgICAgICAgICBjbGlja0hhbmRsZXI6IHRoaXMuaGFuZGxlUGF1c2UgfSlcbiAgICAgICAgICApLFxuICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2FjdGlvbi1iYXJfX2dyb3VwIGFjdGlvbi1iYXJfX2dyb3VwLS1oYXMtZGl2aWRlcicgfSxcbiAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9BY3Rpb24yWydkZWZhdWx0J10sIHsgbGFiZWw6ICdBZGQgVG9ycmVudCcsIHNsdWc6ICdhZGQtdG9ycmVudCcsIGljb246IF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9pY29uc0FkZDJbJ2RlZmF1bHQnXSwgbnVsbCksXG4gICAgICAgICAgICAgIGNsaWNrSGFuZGxlcjogdGhpcy5oYW5kbGVBZGRUb3JyZW50cyB9KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQWN0aW9uQmFyO1xufSkoX3JlYWN0MlsnZGVmYXVsdCddLkNvbXBvbmVudCk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IEFjdGlvbkJhcjtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy90b3JyZW50LWxpc3QvQWN0aW9uQmFyLmpzXG4gKiogbW9kdWxlIGlkID0gMjI4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iXSwic291cmNlUm9vdCI6IiJ9"); /***/ }, /* 229 */ @@ -1606,5 +1601,11 @@ 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 _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar TorrentTrackrs = (function (_React$Component) {\n _inherits(TorrentTrackrs, _React$Component);\n\n function TorrentTrackrs() {\n _classCallCheck(this, TorrentTrackrs);\n\n _get(Object.getPrototypeOf(TorrentTrackrs.prototype), 'constructor', this).apply(this, arguments);\n }\n\n _createClass(TorrentTrackrs, [{\n key: 'render',\n value: function render() {\n var trackers = this.props.trackers || [];\n\n var trackerCount = trackers.length;\n var trackerTypes = ['http', 'udp', 'dht'];\n\n var trackerDetails = trackers.map(function (tracker, index) {\n return _react2['default'].createElement(\n 'tr',\n { key: index },\n _react2['default'].createElement(\n 'td',\n null,\n tracker.url\n ),\n _react2['default'].createElement(\n 'td',\n null,\n trackerTypes[tracker.type - 1]\n )\n );\n });\n\n return _react2['default'].createElement(\n 'div',\n { className: 'torrent-details__trackers torrent-details__section' },\n _react2['default'].createElement(\n 'table',\n { className: 'torrent-details__table table' },\n _react2['default'].createElement(\n 'thead',\n { className: 'torrent-details__table__heading' },\n _react2['default'].createElement(\n 'tr',\n null,\n _react2['default'].createElement(\n 'th',\n null,\n 'Trackers',\n _react2['default'].createElement(\n 'span',\n { className: 'torrent-details__table__heading__count' },\n trackerCount\n )\n ),\n _react2['default'].createElement(\n 'th',\n null,\n 'Type'\n )\n )\n ),\n _react2['default'].createElement(\n 'tbody',\n null,\n trackerDetails\n )\n )\n );\n }\n }]);\n\n return TorrentTrackrs;\n})(_react2['default'].Component);\n\nexports['default'] = TorrentTrackrs;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy90b3JyZW50LWRldGFpbHMvVG9ycmVudFRyYWNrZXJzLmpzPzEyMWYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQsaUNBQWlDLDJDQUEyQyxnQkFBZ0Isa0JBQWtCLE9BQU8sMkJBQTJCLHdEQUF3RCxnQ0FBZ0MsdURBQXVELDJEQUEyRCxFQUFFLEVBQUUseURBQXlELHFFQUFxRSw2REFBNkQsb0JBQW9CLEdBQUcsRUFBRTs7QUFFbGpCLHVDQUF1QyxtQkFBbUIsNEJBQTRCLGlEQUFpRCxnQkFBZ0Isa0RBQWtELDhEQUE4RCwwQkFBMEIsNENBQTRDLHVCQUF1QixrQkFBa0IsRUFBRSxPQUFPLGFBQWEsZ0JBQWdCLGdCQUFnQixlQUFlLDJCQUEyQixvQkFBb0IsRUFBRSxFQUFFLDRCQUE0QixtQkFBbUIsRUFBRSxPQUFPLHVCQUF1Qiw0QkFBNEIsa0JBQWtCLEVBQUUsOEJBQThCLEVBQUUsRUFBRTs7QUFFL29CLHNDQUFzQyx1Q0FBdUMsa0JBQWtCOztBQUUvRixpREFBaUQsMENBQTBDLDBEQUEwRCxFQUFFOztBQUV2SiwwQ0FBMEMsK0RBQStELHFHQUFxRyxFQUFFLHlFQUF5RSxlQUFlLHlFQUF5RSxFQUFFLEVBQUUsdUhBQXVIOztBQUU1ZTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsU0FBUyxrRUFBa0U7QUFDM0U7QUFDQTtBQUNBLFdBQVcsNENBQTRDO0FBQ3ZEO0FBQ0E7QUFDQSxhQUFhLCtDQUErQztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsc0RBQXNEO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVEO0FBQ0EiLCJmaWxlIjoiMjYwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gsIF94MiwgX3gzKSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94LCBwcm9wZXJ0eSA9IF94MiwgcmVjZWl2ZXIgPSBfeDM7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3ggPSBwYXJlbnQ7IF94MiA9IHByb3BlcnR5OyBfeDMgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX3JlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cbnZhciBUb3JyZW50VHJhY2tycyA9IChmdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoVG9ycmVudFRyYWNrcnMsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIFRvcnJlbnRUcmFja3JzKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUb3JyZW50VHJhY2tycyk7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihUb3JyZW50VHJhY2tycy5wcm90b3R5cGUpLCAnY29uc3RydWN0b3InLCB0aGlzKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRvcnJlbnRUcmFja3JzLCBbe1xuICAgIGtleTogJ3JlbmRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciB0cmFja2VycyA9IHRoaXMucHJvcHMudHJhY2tlcnMgfHwgW107XG5cbiAgICAgIHZhciB0cmFja2VyQ291bnQgPSB0cmFja2Vycy5sZW5ndGg7XG4gICAgICB2YXIgdHJhY2tlclR5cGVzID0gWydodHRwJywgJ3VkcCcsICdkaHQnXTtcblxuICAgICAgdmFyIHRyYWNrZXJEZXRhaWxzID0gdHJhY2tlcnMubWFwKGZ1bmN0aW9uICh0cmFja2VyLCBpbmRleCkge1xuICAgICAgICByZXR1cm4gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgJ3RyJyxcbiAgICAgICAgICB7IGtleTogaW5kZXggfSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICd0ZCcsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgdHJhY2tlci51cmxcbiAgICAgICAgICApLFxuICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgJ3RkJyxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICB0cmFja2VyVHlwZXNbdHJhY2tlci50eXBlIC0gMV1cbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAnZGl2JyxcbiAgICAgICAgeyBjbGFzc05hbWU6ICd0b3JyZW50LWRldGFpbHNfX3RyYWNrZXJzIHRvcnJlbnQtZGV0YWlsc19fc2VjdGlvbicgfSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgJ3RhYmxlJyxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ3RvcnJlbnQtZGV0YWlsc19fdGFibGUgdGFibGUnIH0sXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAndGhlYWQnLFxuICAgICAgICAgICAgeyBjbGFzc05hbWU6ICd0b3JyZW50LWRldGFpbHNfX3RhYmxlX19oZWFkaW5nJyB9LFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICd0cicsXG4gICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICd0aCcsXG4gICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAnVHJhY2tlcnMnLFxuICAgICAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgJ3NwYW4nLFxuICAgICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICd0b3JyZW50LWRldGFpbHNfX3RhYmxlX19oZWFkaW5nX19jb3VudCcgfSxcbiAgICAgICAgICAgICAgICAgIHRyYWNrZXJDb3VudFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ3RoJyxcbiAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICdUeXBlJ1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICd0Ym9keScsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgdHJhY2tlckRldGFpbHNcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRvcnJlbnRUcmFja3JzO1xufSkoX3JlYWN0MlsnZGVmYXVsdCddLkNvbXBvbmVudCk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IFRvcnJlbnRUcmFja3JzO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9jb21wb25lbnRzL3RvcnJlbnQtZGV0YWlscy9Ub3JyZW50VHJhY2tlcnMuanNcbiAqKiBtb2R1bGUgaWQgPSAyNjBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0="); +/***/ }, +/* 261 */ +/***/ 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(_x2, _x3, _x4) { var _again = true; _function: while (_again) { var object = _x2, property = _x3, receiver = _x4; _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 { _x2 = parent; _x3 = property; _x4 = 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 _constantsActionTypes = __webpack_require__(195);\n\nvar _constantsActionTypes2 = _interopRequireDefault(_constantsActionTypes);\n\nvar _dispatcherAppDispatcher = __webpack_require__(191);\n\nvar _dispatcherAppDispatcher2 = _interopRequireDefault(_dispatcherAppDispatcher);\n\nvar _BaseStore2 = __webpack_require__(199);\n\nvar _BaseStore3 = _interopRequireDefault(_BaseStore2);\n\nvar _actionsClientActions = __webpack_require__(205);\n\nvar _actionsClientActions2 = _interopRequireDefault(_actionsClientActions);\n\nvar _config = __webpack_require__(206);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _constantsEventTypes = __webpack_require__(196);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar TransferDataStoreClass = (function (_BaseStore) {\n _inherits(TransferDataStoreClass, _BaseStore);\n\n function TransferDataStoreClass() {\n _classCallCheck(this, TransferDataStoreClass);\n\n _get(Object.getPrototypeOf(TransferDataStoreClass.prototype), 'constructor', this).call(this);\n\n this.pollTransferDataID = null;\n this.transferRates = { download: [], upload: [] };\n this.transferTotals = { download: null, upload: null };\n this.throttles = { download: null, upload: null };\n }\n\n _createClass(TransferDataStoreClass, [{\n key: 'fetchTransferData',\n value: function fetchTransferData() {\n _actionsClientActions2['default'].fetchTransferHistory({\n snapshot: 'fiveMin'\n });\n\n _actionsClientActions2['default'].fetchTransferData();\n\n if (this.pollTransferDataID === null) {\n this.startPollingTransferData();\n }\n }\n }, {\n key: 'getThrottles',\n value: function getThrottles() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n if (options.latest) {\n return {\n download: this.throttles.download ? this.throttles.download[this.throttles.download.length - 1] : null,\n upload: this.throttles.upload ? this.throttles.upload[this.throttles.upload.length - 1] : null\n };\n }\n return this.throttles;\n }\n }, {\n key: 'getTransferTotals',\n value: function getTransferTotals() {\n return this.transferTotals;\n }\n }, {\n key: 'getTransferRate',\n value: function getTransferRate() {\n return this.transferRate;\n }\n }, {\n key: 'getTransferRates',\n value: function getTransferRates() {\n return this.transferRates;\n }\n }, {\n key: 'handleSetThrottleSuccess',\n value: function handleSetThrottleSuccess(data) {\n this.fetchTransferData();\n this.emit(_constantsEventTypes2['default'].CLIENT_SET_THROTTLE_SUCCESS);\n }\n }, {\n key: 'handleSetThrottleError',\n value: function handleSetThrottleError(error) {\n this.emit(_constantsEventTypes2['default'].CLIENT_SET_THROTTLE_ERROR);\n }\n }, {\n key: 'handleTransferDataSuccess',\n value: function handleTransferDataSuccess(transferData) {\n this.transferTotals = {\n download: transferData.downloadTotal,\n upload: transferData.uploadTotal\n };\n\n this.transferRate = {\n download: transferData.downloadRate,\n upload: transferData.uploadRate\n };\n\n // add the latest download & upload throttles to the end of the array and\n // remove the first element in the array. if the arrays are empty, fill in\n // zeros the last known throttle value.\n var index = 0;\n var downloadRateThrottleHistory = Object.assign([], this.throttles.download);\n var uploadRateThrottleHistory = Object.assign([], this.throttles.upload);\n\n if (downloadRateThrottleHistory.length === _config2['default'].maxHistoryStates) {\n\n downloadRateThrottleHistory.shift();\n uploadRateThrottleHistory.shift();\n\n downloadRateThrottleHistory.push(parseInt(transferData.downloadThrottle));\n uploadRateThrottleHistory.push(parseInt(transferData.uploadThrottle));\n } else {\n while (index < _config2['default'].maxHistoryStates) {\n // we assume the throttle history has been the same for all previous\n // history states.\n uploadRateThrottleHistory[index] = parseInt(transferData.uploadThrottle);\n downloadRateThrottleHistory[index] = parseInt(transferData.downloadThrottle);\n index++;\n }\n }\n\n this.throttles = {\n download: downloadRateThrottleHistory,\n upload: uploadRateThrottleHistory\n };\n\n this.emit(_constantsEventTypes2['default'].CLIENT_TRANSFER_DATA_REQUEST_SUCCESS);\n }\n }, {\n key: 'handleTransferDataError',\n value: function handleTransferDataError() {\n this.emit(_constantsEventTypes2['default'].CLIENT_TRANSFER_DATA_REQUEST_ERROR);\n }\n }, {\n key: 'handleTransferHistoryError',\n value: function handleTransferHistoryError(error) {\n console.trace(error);\n }\n }, {\n key: 'handleTransferHistorySuccess',\n value: function handleTransferHistorySuccess(transferData) {\n this.transferRates = {\n download: transferData.download,\n upload: transferData.upload\n };\n\n this.emit(_constantsEventTypes2['default'].CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS);\n }\n }, {\n key: 'startPollingTransferData',\n value: function startPollingTransferData() {\n this.pollTransferDataID = setInterval(this.fetchTransferData.bind(this), _config2['default'].pollInterval);\n }\n }]);\n\n return TransferDataStoreClass;\n})(_BaseStore3['default']);\n\nvar TransferDataStore = new TransferDataStoreClass();\n\n_dispatcherAppDispatcher2['default'].register(function (payload) {\n var action = payload.action;\n var source = payload.source;\n\n switch (action.type) {\n case _constantsActionTypes2['default'].CLIENT_FETCH_TRANSFER_DATA_SUCCESS:\n TransferDataStore.handleTransferDataSuccess(action.data.transferData);\n break;\n case _constantsActionTypes2['default'].CLIENT_FETCH_TRANSFER_DATA_ERROR:\n TransferDataStore.handleTransferDataError(action.data.error);\n break;\n case _constantsActionTypes2['default'].CLIENT_SET_THROTTLE_SUCCESS:\n TransferDataStore.handleSetThrottleSuccess(action.data.transferData);\n break;\n case _constantsActionTypes2['default'].CLIENT_SET_THROTTLE_ERROR:\n TransferDataStore.handleSetThrottleError(action.data.error);\n break;\n case _constantsActionTypes2['default'].CLIENT_FETCH_TRANSFER_HISTORY_ERROR:\n TransferDataStore.handleTransferHistoryError(action.error);\n break;\n case _constantsActionTypes2['default'].CLIENT_FETCH_TRANSFER_HISTORY_SUCCESS:\n TransferDataStore.handleTransferHistorySuccess(action.data);\n break;\n }\n});\n\nexports['default'] = TransferDataStore;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvc3RvcmVzL1RyYW5zZmVyRGF0YVN0b3JlLmpzPzExZDEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQsaUNBQWlDLDJDQUEyQyxnQkFBZ0Isa0JBQWtCLE9BQU8sMkJBQTJCLHdEQUF3RCxnQ0FBZ0MsdURBQXVELDJEQUEyRCxFQUFFLEVBQUUseURBQXlELHFFQUFxRSw2REFBNkQsb0JBQW9CLEdBQUcsRUFBRTs7QUFFbGpCLHdDQUF3QyxtQkFBbUIsNEJBQTRCLGtEQUFrRCxnQkFBZ0Isa0RBQWtELDhEQUE4RCwwQkFBMEIsNENBQTRDLHVCQUF1QixrQkFBa0IsRUFBRSxPQUFPLGNBQWMsZ0JBQWdCLGdCQUFnQixlQUFlLDJCQUEyQixvQkFBb0IsRUFBRSxFQUFFLDRCQUE0QixtQkFBbUIsRUFBRSxPQUFPLHVCQUF1Qiw0QkFBNEIsa0JBQWtCLEVBQUUsOEJBQThCLEVBQUUsRUFBRTs7QUFFbHBCLHNDQUFzQyx1Q0FBdUMsa0JBQWtCOztBQUUvRixpREFBaUQsMENBQTBDLDBEQUEwRCxFQUFFOztBQUV2SiwwQ0FBMEMsK0RBQStELHFHQUFxRyxFQUFFLHlFQUF5RSxlQUFlLHlFQUF5RSxFQUFFLEVBQUUsdUhBQXVIOztBQUU1ZTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSwwQkFBMEI7QUFDMUIsMkJBQTJCO0FBQzNCLHNCQUFzQjtBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsNEVBQTRFOztBQUU1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0EiLCJmaWxlIjoiMjYxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gyLCBfeDMsIF94NCkgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeDIsIHByb3BlcnR5ID0gX3gzLCByZWNlaXZlciA9IF94NDsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeDIgPSBwYXJlbnQ7IF94MyA9IHByb3BlcnR5OyBfeDQgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX2NvbnN0YW50c0FjdGlvblR5cGVzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL0FjdGlvblR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzQWN0aW9uVHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzQWN0aW9uVHlwZXMpO1xuXG52YXIgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyID0gcmVxdWlyZSgnLi4vZGlzcGF0Y2hlci9BcHBEaXNwYXRjaGVyJyk7XG5cbnZhciBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIpO1xuXG52YXIgX0Jhc2VTdG9yZTIgPSByZXF1aXJlKCcuL0Jhc2VTdG9yZScpO1xuXG52YXIgX0Jhc2VTdG9yZTMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9CYXNlU3RvcmUyKTtcblxudmFyIF9hY3Rpb25zQ2xpZW50QWN0aW9ucyA9IHJlcXVpcmUoJy4uL2FjdGlvbnMvQ2xpZW50QWN0aW9ucycpO1xuXG52YXIgX2FjdGlvbnNDbGllbnRBY3Rpb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2FjdGlvbnNDbGllbnRBY3Rpb25zKTtcblxudmFyIF9jb25maWcgPSByZXF1aXJlKCcuLi8uLi8uLi8uLi9jb25maWcnKTtcblxudmFyIF9jb25maWcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uZmlnKTtcblxudmFyIF9jb25zdGFudHNFdmVudFR5cGVzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL0V2ZW50VHlwZXMnKTtcblxudmFyIF9jb25zdGFudHNFdmVudFR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbnN0YW50c0V2ZW50VHlwZXMpO1xuXG52YXIgVHJhbnNmZXJEYXRhU3RvcmVDbGFzcyA9IChmdW5jdGlvbiAoX0Jhc2VTdG9yZSkge1xuICBfaW5oZXJpdHMoVHJhbnNmZXJEYXRhU3RvcmVDbGFzcywgX0Jhc2VTdG9yZSk7XG5cbiAgZnVuY3Rpb24gVHJhbnNmZXJEYXRhU3RvcmVDbGFzcygpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVHJhbnNmZXJEYXRhU3RvcmVDbGFzcyk7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihUcmFuc2ZlckRhdGFTdG9yZUNsYXNzLnByb3RvdHlwZSksICdjb25zdHJ1Y3RvcicsIHRoaXMpLmNhbGwodGhpcyk7XG5cbiAgICB0aGlzLnBvbGxUcmFuc2ZlckRhdGFJRCA9IG51bGw7XG4gICAgdGhpcy50cmFuc2ZlclJhdGVzID0geyBkb3dubG9hZDogW10sIHVwbG9hZDogW10gfTtcbiAgICB0aGlzLnRyYW5zZmVyVG90YWxzID0geyBkb3dubG9hZDogbnVsbCwgdXBsb2FkOiBudWxsIH07XG4gICAgdGhpcy50aHJvdHRsZXMgPSB7IGRvd25sb2FkOiBudWxsLCB1cGxvYWQ6IG51bGwgfTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUcmFuc2ZlckRhdGFTdG9yZUNsYXNzLCBbe1xuICAgIGtleTogJ2ZldGNoVHJhbnNmZXJEYXRhJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmV0Y2hUcmFuc2ZlckRhdGEoKSB7XG4gICAgICBfYWN0aW9uc0NsaWVudEFjdGlvbnMyWydkZWZhdWx0J10uZmV0Y2hUcmFuc2Zlckhpc3Rvcnkoe1xuICAgICAgICBzbmFwc2hvdDogJ2ZpdmVNaW4nXG4gICAgICB9KTtcblxuICAgICAgX2FjdGlvbnNDbGllbnRBY3Rpb25zMlsnZGVmYXVsdCddLmZldGNoVHJhbnNmZXJEYXRhKCk7XG5cbiAgICAgIGlmICh0aGlzLnBvbGxUcmFuc2ZlckRhdGFJRCA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLnN0YXJ0UG9sbGluZ1RyYW5zZmVyRGF0YSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldFRocm90dGxlcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFRocm90dGxlcygpIHtcbiAgICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIGlmIChvcHRpb25zLmxhdGVzdCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRvd25sb2FkOiB0aGlzLnRocm90dGxlcy5kb3dubG9hZCA/IHRoaXMudGhyb3R0bGVzLmRvd25sb2FkW3RoaXMudGhyb3R0bGVzLmRvd25sb2FkLmxlbmd0aCAtIDFdIDogbnVsbCxcbiAgICAgICAgICB1cGxvYWQ6IHRoaXMudGhyb3R0bGVzLnVwbG9hZCA/IHRoaXMudGhyb3R0bGVzLnVwbG9hZFt0aGlzLnRocm90dGxlcy51cGxvYWQubGVuZ3RoIC0gMV0gOiBudWxsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy50aHJvdHRsZXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0VHJhbnNmZXJUb3RhbHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUcmFuc2ZlclRvdGFscygpIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zZmVyVG90YWxzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldFRyYW5zZmVyUmF0ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFRyYW5zZmVyUmF0ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zZmVyUmF0ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRUcmFuc2ZlclJhdGVzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VHJhbnNmZXJSYXRlcygpIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zZmVyUmF0ZXM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlU2V0VGhyb3R0bGVTdWNjZXNzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlU2V0VGhyb3R0bGVTdWNjZXNzKGRhdGEpIHtcbiAgICAgIHRoaXMuZmV0Y2hUcmFuc2ZlckRhdGEoKTtcbiAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfU0VUX1RIUk9UVExFX1NVQ0NFU1MpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZVNldFRocm90dGxlRXJyb3InLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVTZXRUaHJvdHRsZUVycm9yKGVycm9yKSB7XG4gICAgICB0aGlzLmVtaXQoX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1NFVF9USFJPVFRMRV9FUlJPUik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlVHJhbnNmZXJEYXRhU3VjY2VzcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVRyYW5zZmVyRGF0YVN1Y2Nlc3ModHJhbnNmZXJEYXRhKSB7XG4gICAgICB0aGlzLnRyYW5zZmVyVG90YWxzID0ge1xuICAgICAgICBkb3dubG9hZDogdHJhbnNmZXJEYXRhLmRvd25sb2FkVG90YWwsXG4gICAgICAgIHVwbG9hZDogdHJhbnNmZXJEYXRhLnVwbG9hZFRvdGFsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnRyYW5zZmVyUmF0ZSA9IHtcbiAgICAgICAgZG93bmxvYWQ6IHRyYW5zZmVyRGF0YS5kb3dubG9hZFJhdGUsXG4gICAgICAgIHVwbG9hZDogdHJhbnNmZXJEYXRhLnVwbG9hZFJhdGVcbiAgICAgIH07XG5cbiAgICAgIC8vIGFkZCB0aGUgbGF0ZXN0IGRvd25sb2FkICYgdXBsb2FkIHRocm90dGxlcyB0byB0aGUgZW5kIG9mIHRoZSBhcnJheSBhbmRcbiAgICAgIC8vIHJlbW92ZSB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgYXJyYXkuIGlmIHRoZSBhcnJheXMgYXJlIGVtcHR5LCBmaWxsIGluXG4gICAgICAvLyB6ZXJvcyB0aGUgbGFzdCBrbm93biB0aHJvdHRsZSB2YWx1ZS5cbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICB2YXIgZG93bmxvYWRSYXRlVGhyb3R0bGVIaXN0b3J5ID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy50aHJvdHRsZXMuZG93bmxvYWQpO1xuICAgICAgdmFyIHVwbG9hZFJhdGVUaHJvdHRsZUhpc3RvcnkgPSBPYmplY3QuYXNzaWduKFtdLCB0aGlzLnRocm90dGxlcy51cGxvYWQpO1xuXG4gICAgICBpZiAoZG93bmxvYWRSYXRlVGhyb3R0bGVIaXN0b3J5Lmxlbmd0aCA9PT0gX2NvbmZpZzJbJ2RlZmF1bHQnXS5tYXhIaXN0b3J5U3RhdGVzKSB7XG5cbiAgICAgICAgZG93bmxvYWRSYXRlVGhyb3R0bGVIaXN0b3J5LnNoaWZ0KCk7XG4gICAgICAgIHVwbG9hZFJhdGVUaHJvdHRsZUhpc3Rvcnkuc2hpZnQoKTtcblxuICAgICAgICBkb3dubG9hZFJhdGVUaHJvdHRsZUhpc3RvcnkucHVzaChwYXJzZUludCh0cmFuc2ZlckRhdGEuZG93bmxvYWRUaHJvdHRsZSkpO1xuICAgICAgICB1cGxvYWRSYXRlVGhyb3R0bGVIaXN0b3J5LnB1c2gocGFyc2VJbnQodHJhbnNmZXJEYXRhLnVwbG9hZFRocm90dGxlKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aGlsZSAoaW5kZXggPCBfY29uZmlnMlsnZGVmYXVsdCddLm1heEhpc3RvcnlTdGF0ZXMpIHtcbiAgICAgICAgICAvLyB3ZSBhc3N1bWUgdGhlIHRocm90dGxlIGhpc3RvcnkgaGFzIGJlZW4gdGhlIHNhbWUgZm9yIGFsbCBwcmV2aW91c1xuICAgICAgICAgIC8vIGhpc3Rvcnkgc3RhdGVzLlxuICAgICAgICAgIHVwbG9hZFJhdGVUaHJvdHRsZUhpc3RvcnlbaW5kZXhdID0gcGFyc2VJbnQodHJhbnNmZXJEYXRhLnVwbG9hZFRocm90dGxlKTtcbiAgICAgICAgICBkb3dubG9hZFJhdGVUaHJvdHRsZUhpc3RvcnlbaW5kZXhdID0gcGFyc2VJbnQodHJhbnNmZXJEYXRhLmRvd25sb2FkVGhyb3R0bGUpO1xuICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy50aHJvdHRsZXMgPSB7XG4gICAgICAgIGRvd25sb2FkOiBkb3dubG9hZFJhdGVUaHJvdHRsZUhpc3RvcnksXG4gICAgICAgIHVwbG9hZDogdXBsb2FkUmF0ZVRocm90dGxlSGlzdG9yeVxuICAgICAgfTtcblxuICAgICAgdGhpcy5lbWl0KF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9UUkFOU0ZFUl9EQVRBX1JFUVVFU1RfU1VDQ0VTUyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlVHJhbnNmZXJEYXRhRXJyb3InLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVUcmFuc2ZlckRhdGFFcnJvcigpIHtcbiAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfVFJBTlNGRVJfREFUQV9SRVFVRVNUX0VSUk9SKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVUcmFuc2Zlckhpc3RvcnlFcnJvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVRyYW5zZmVySGlzdG9yeUVycm9yKGVycm9yKSB7XG4gICAgICBjb25zb2xlLnRyYWNlKGVycm9yKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVUcmFuc2Zlckhpc3RvcnlTdWNjZXNzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlVHJhbnNmZXJIaXN0b3J5U3VjY2Vzcyh0cmFuc2ZlckRhdGEpIHtcbiAgICAgIHRoaXMudHJhbnNmZXJSYXRlcyA9IHtcbiAgICAgICAgZG93bmxvYWQ6IHRyYW5zZmVyRGF0YS5kb3dubG9hZCxcbiAgICAgICAgdXBsb2FkOiB0cmFuc2ZlckRhdGEudXBsb2FkXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmVtaXQoX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1RSQU5TRkVSX0hJU1RPUllfUkVRVUVTVF9TVUNDRVNTKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdzdGFydFBvbGxpbmdUcmFuc2ZlckRhdGEnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdGFydFBvbGxpbmdUcmFuc2ZlckRhdGEoKSB7XG4gICAgICB0aGlzLnBvbGxUcmFuc2ZlckRhdGFJRCA9IHNldEludGVydmFsKHRoaXMuZmV0Y2hUcmFuc2ZlckRhdGEuYmluZCh0aGlzKSwgX2NvbmZpZzJbJ2RlZmF1bHQnXS5wb2xsSW50ZXJ2YWwpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUcmFuc2ZlckRhdGFTdG9yZUNsYXNzO1xufSkoX0Jhc2VTdG9yZTNbJ2RlZmF1bHQnXSk7XG5cbnZhciBUcmFuc2ZlckRhdGFTdG9yZSA9IG5ldyBUcmFuc2ZlckRhdGFTdG9yZUNsYXNzKCk7XG5cbl9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5yZWdpc3RlcihmdW5jdGlvbiAocGF5bG9hZCkge1xuICB2YXIgYWN0aW9uID0gcGF5bG9hZC5hY3Rpb247XG4gIHZhciBzb3VyY2UgPSBwYXlsb2FkLnNvdXJjZTtcblxuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX0ZFVENIX1RSQU5TRkVSX0RBVEFfU1VDQ0VTUzpcbiAgICAgIFRyYW5zZmVyRGF0YVN0b3JlLmhhbmRsZVRyYW5zZmVyRGF0YVN1Y2Nlc3MoYWN0aW9uLmRhdGEudHJhbnNmZXJEYXRhKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9GRVRDSF9UUkFOU0ZFUl9EQVRBX0VSUk9SOlxuICAgICAgVHJhbnNmZXJEYXRhU3RvcmUuaGFuZGxlVHJhbnNmZXJEYXRhRXJyb3IoYWN0aW9uLmRhdGEuZXJyb3IpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1NFVF9USFJPVFRMRV9TVUNDRVNTOlxuICAgICAgVHJhbnNmZXJEYXRhU3RvcmUuaGFuZGxlU2V0VGhyb3R0bGVTdWNjZXNzKGFjdGlvbi5kYXRhLnRyYW5zZmVyRGF0YSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfU0VUX1RIUk9UVExFX0VSUk9SOlxuICAgICAgVHJhbnNmZXJEYXRhU3RvcmUuaGFuZGxlU2V0VGhyb3R0bGVFcnJvcihhY3Rpb24uZGF0YS5lcnJvcik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVFJBTlNGRVJfSElTVE9SWV9FUlJPUjpcbiAgICAgIFRyYW5zZmVyRGF0YVN0b3JlLmhhbmRsZVRyYW5zZmVySGlzdG9yeUVycm9yKGFjdGlvbi5lcnJvcik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVFJBTlNGRVJfSElTVE9SWV9TVUNDRVNTOlxuICAgICAgVHJhbnNmZXJEYXRhU3RvcmUuaGFuZGxlVHJhbnNmZXJIaXN0b3J5U3VjY2VzcyhhY3Rpb24uZGF0YSk7XG4gICAgICBicmVhaztcbiAgfVxufSk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IFRyYW5zZmVyRGF0YVN0b3JlO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9zdG9yZXMvVHJhbnNmZXJEYXRhU3RvcmUuanNcbiAqKiBtb2R1bGUgaWQgPSAyNjFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0="); + /***/ } /******/ ]); \ No newline at end of file diff --git a/server/models/HistoryEra.js b/server/models/HistoryEra.js index e068c811..c567ca28 100644 --- a/server/models/HistoryEra.js +++ b/server/models/HistoryEra.js @@ -2,9 +2,9 @@ let Datastore = require('nedb'); +let config = require('../../config'); let stringUtil = require('./util/stringUtil'); -const FILE_PATH = './server/db/history/'; const MAX_CLEANUP_INTERVAL = 1000 * 60 * 60; // 1 hour const MAX_NEXT_ERA_UPDATE_INTERVAL = 1000 * 60 * 60 * 12; // 12 hours const CUMULATIVE_DATA_BUFFER = 1000 * 2; @@ -92,7 +92,8 @@ class HistoryEra { getData(opts, callback) { let minTimestamp = Date.now() - this.opts.maxTime; - this.db.find({ts: {$gte: minTimestamp}}).sort({ts: 1}) + this.db.find({ts: {$gte: minTimestamp}}) + .sort({ts: 1}) .exec(function (err, docs) { callback(err, docs); } @@ -104,7 +105,7 @@ class HistoryEra { REQUIRED_FIELDS.forEach(function (field) { if (opts[field] == null) { - console.warn(`historyEra requires ${field}`); + console.warn(`HistoryEra requires ${field}`); requirementsMet = false; } }); @@ -115,7 +116,7 @@ class HistoryEra { loadDatabase(dbName) { let db = new Datastore({ autoload: true, - filename: `${FILE_PATH}${dbName}.db` + filename: `${config.databasePath}history/${dbName}.db` }); this.ready = true; diff --git a/server/models/history.js b/server/models/history.js index 340fc446..e2d37c7c 100644 --- a/server/models/history.js +++ b/server/models/history.js @@ -1,5 +1,4 @@ 'use strict'; -var Datastore = require('nedb'); var client = require('./client'); var config = require('../../config'); diff --git a/server/models/rtorrent.js b/server/models/rtorrent.js index 7374d311..38a46e56 100644 --- a/server/models/rtorrent.js +++ b/server/models/rtorrent.js @@ -4,11 +4,9 @@ var Deserializer = require('./util/deserializer'); var Serializer = require('./util/serializer'); var rtorrent = { - initialized: false, get: function(api, array) { - var stream = net.connect({ port: 5000, host: 'localhost' @@ -62,7 +60,6 @@ var rtorrent = { return deferred.promise; } - } module.exports = rtorrent; diff --git a/server/models/uiSettings.js b/server/models/uiSettings.js new file mode 100644 index 00000000..7e9e29c0 --- /dev/null +++ b/server/models/uiSettings.js @@ -0,0 +1,70 @@ +'use strict'; + +let Datastore = require('nedb'); + +let config = require('../../config'); + +let uiDB = new Datastore({ + autoload: true, + filename: `${config.databasePath}uiSettings.db` +}); + +uiDB.persistence.setAutocompactionInterval(config.uiDatabaseCleanInterval); + +let uiSettings = { + getLatestTorrentLocation: function(callback) { + uiDB.find({type: 'location'}, function(error, docs) { + if (error) { + callback(error); + return; + } + + if (docs.length) { + callback(error, docs[0]); + } + }); + }, + + getSortProps: function(callback) { + uiDB.find({type: 'sort'}, function(error, docs) { + if (error) { + callback(error); + return; + } + + if (docs.length) { + callback(error, docs[0]); + } + }); + }, + + setLatestTorrentLocation: function(data, callback) { + let newLocationData = Object.assign({}, {type: 'location'}, {path: data.destination}); + uiDB.update({type: 'location'}, newLocationData, {upsert: true}, function (error, docs) { + if (error) { + callback(error); + return; + } + + if (docs.length) { + callback(error, docs); + } + }); + }, + + setSortProps: function(sortProps, callback) { + let newSortPropData = Object.assign({}, {type: 'sort'}, sortProps); + uiDB.update({type: 'sort'}, newSortPropData, {upsert: true}, function (error, docs) { + if (error) { + callback(error); + return; + } + + if (docs.length) { + callback(error, docs); + } + }); + } +} + +module.exports = uiSettings; diff --git a/server/routes/client.js b/server/routes/client.js index b0c2739f..00a55de2 100644 --- a/server/routes/client.js +++ b/server/routes/client.js @@ -1,52 +1,46 @@ -var express = require('express'); -var router = express.Router(); -var xmlrpc = require('xmlrpc'); +'use strict'; -var client = require('../models/client'); -var history = require('../models/history'); +let express = require('express'); +let router = express.Router(); +let xmlrpc = require('xmlrpc'); -var handleClientResponse = function (res) { - return function (error, response) { - if (error) { - console.log(error); - } - res.json(response); - } -} +let ajaxUtil = require('../util/ajaxUtil'); +let client = require('../models/client'); +let history = require('../models/history'); router.post('/add', function(req, res, next) { - client.add(req.body, handleClientResponse(res)); + client.add(req.body, ajaxUtil.getResponseFn(res)); }); router.get('/history', function(req, res, next) { - history.get(req.query, handleClientResponse(res)); + history.get(req.query, ajaxUtil.getResponseFn(res)); }); router.get('/list', function(req, res, next) { - client.getTorrentList(handleClientResponse(res)); + client.getTorrentList(ajaxUtil.getResponseFn(res)); }); router.put('/settings/speed-limits', function(req, res, next) { - client.setSpeedLimits(req.body, handleClientResponse(res)); + client.setSpeedLimits(req.body, ajaxUtil.getResponseFn(res)); }); router.post('/start', function(req, res, next) { var hashes = req.body.hashes; - client.startTorrent(hashes, handleClientResponse(res)); + client.startTorrent(hashes, ajaxUtil.getResponseFn(res)); }); router.get('/stats', function(req, res, next) { - client.getTransferStats(handleClientResponse(res)); + client.getTransferStats(ajaxUtil.getResponseFn(res)); }); router.post('/stop', function(req, res, next) { var hashes = req.body.hashes; - client.stopTorrent(hashes, handleClientResponse(res)); + client.stopTorrent(hashes, ajaxUtil.getResponseFn(res)); }); router.post('/torrent-details', function(req, res, next) { var hash = req.body.hash; - client.getTorrentDetails(hash, handleClientResponse(res)); + client.getTorrentDetails(hash, ajaxUtil.getResponseFn(res)); }); router.get('/methods.json', function(req, res, next) { @@ -60,7 +54,7 @@ router.get('/methods.json', function(req, res, next) { method = 'system.methodSignature'; } - client.listMethods(method, args, handleClientResponse(res)); + client.listMethods(method, args, ajaxUtil.getResponseFn(res)); }); module.exports = router; diff --git a/server/routes/ui.js b/server/routes/ui.js new file mode 100644 index 00000000..61f08f08 --- /dev/null +++ b/server/routes/ui.js @@ -0,0 +1,28 @@ +'use strict'; + +let express = require('express'); +let router = express.Router(); +let xmlrpc = require('xmlrpc'); + +let ajaxUtil = require('../util/ajaxUtil'); +let client = require('../models/client'); +let history = require('../models/history'); +let uiSettings = require('../models/uiSettings'); + +router.post('/sort-props', function(req, res, next) { + uiSettings.setSortProps(req.body, ajaxUtil.getResponseFn(res)); +}); + +router.get('/sort-props', function(req, res, next) { + uiSettings.getSortProps(ajaxUtil.getResponseFn(res)); +}); + +router.get('/torrent-location', function(req, res, next) { + uiSettings.getLatestTorrentLocation(ajaxUtil.getResponseFn(res)); +}); + +router.post('/torrent-location', function(req, res, next) { + uiSettings.setLatestTorrentLocation(req.body, ajaxUtil.getResponseFn(res)); +}); + +module.exports = router; diff --git a/server/util/ajaxUtil.js b/server/util/ajaxUtil.js new file mode 100644 index 00000000..65acecf8 --- /dev/null +++ b/server/util/ajaxUtil.js @@ -0,0 +1,14 @@ +'use strict'; + +let ajaxUtil = { + getResponseFn: function (res) { + return function (error, response) { + if (error) { + console.log('error in getResponseFn', error); + } + res.json(response); + } + } +}; + +module.exports = ajaxUtil;