bearychat-rtm-client
Advanced tools
Comparing version
{ | ||
"name": "bearychat-rtm-client", | ||
"version": "0.2.0-alpha3", | ||
"version": "0.2.0-alpha4", | ||
"description": "RTM client for BearyChat", | ||
@@ -22,6 +22,4 @@ "main": "lib/index.js", | ||
"delay": "^2.0.0", | ||
"detect-node": "^2.0.3", | ||
"invariant": "^2.2.2", | ||
"warning": "^3.0.0", | ||
"ws": "^3.0.0" | ||
"warning": "^3.0.0" | ||
}, | ||
@@ -28,0 +26,0 @@ "keywords": [ |
187
RTMClient.js
@@ -16,8 +16,8 @@ 'use strict'; | ||
var timeoutDelay = function () { | ||
var _ref9 = _asyncToGenerator(_regenerator2.default.mark(function _callee5(timeout, message) { | ||
return _regenerator2.default.wrap(function _callee5$(_context5) { | ||
var _ref10 = _asyncToGenerator(_regenerator2.default.mark(function _callee6(timeout, message) { | ||
return _regenerator2.default.wrap(function _callee6$(_context6) { | ||
while (1) { | ||
switch (_context5.prev = _context5.next) { | ||
switch (_context6.prev = _context6.next) { | ||
case 0: | ||
_context5.next = 2; | ||
_context6.next = 2; | ||
return (0, _delay2.default)(timeout); | ||
@@ -30,10 +30,10 @@ | ||
case 'end': | ||
return _context5.stop(); | ||
return _context6.stop(); | ||
} | ||
} | ||
}, _callee5, this); | ||
}, _callee6, this); | ||
})); | ||
return function timeoutDelay(_x3, _x4) { | ||
return _ref9.apply(this, arguments); | ||
return function timeoutDelay(_x4, _x5) { | ||
return _ref10.apply(this, arguments); | ||
}; | ||
@@ -97,2 +97,17 @@ }(); | ||
var RTMNotConnectedError = function (_Error2) { | ||
_inherits(RTMNotConnectedError, _Error2); | ||
function RTMNotConnectedError(errorMessage, rtmMessage) { | ||
_classCallCheck(this, RTMNotConnectedError); | ||
var _this2 = _possibleConstructorReturn(this, (RTMNotConnectedError.__proto__ || Object.getPrototypeOf(RTMNotConnectedError)).call(this, errorMessage)); | ||
_this2.rtmMessage = rtmMessage; | ||
return _this2; | ||
} | ||
return RTMNotConnectedError; | ||
}(Error); | ||
/** | ||
@@ -128,9 +143,9 @@ * Keep an RTM client running with multiple. | ||
function RTMClient(options) { | ||
var _this3 = this; | ||
var _this4 = this; | ||
_classCallCheck(this, RTMClient); | ||
var _this2 = _possibleConstructorReturn(this, (RTMClient.__proto__ || Object.getPrototypeOf(RTMClient)).call(this)); | ||
var _this3 = _possibleConstructorReturn(this, (RTMClient.__proto__ || Object.getPrototypeOf(RTMClient)).call(this)); | ||
_this2._doConnect = _asyncToGenerator(_regenerator2.default.mark(function _callee() { | ||
_this3._doConnect = _asyncToGenerator(_regenerator2.default.mark(function _callee() { | ||
var wsUrl; | ||
@@ -141,3 +156,3 @@ return _regenerator2.default.wrap(function _callee$(_context) { | ||
case 0: | ||
_this2._state = _RTMClientState2.default.CONNECTING; | ||
_this3._state = _RTMClientState2.default.CONNECTING; | ||
@@ -147,3 +162,3 @@ wsUrl = void 0; | ||
_context.next = 5; | ||
return _this2._getUrl(); | ||
return _this3._getUrl(); | ||
@@ -159,4 +174,4 @@ case 5: | ||
_this2._reconnect(); // intentionally ignore "await" | ||
_this2.emit(_RTMClientEvents2.default.ERROR, _context.t0); | ||
_this3._reconnect(); // intentionally ignore "await" | ||
_this3.emit(_RTMClientEvents2.default.ERROR, _context.t0); | ||
return _context.abrupt('return'); | ||
@@ -166,4 +181,7 @@ | ||
_this2._reconnectAttempts = 1; | ||
_this2._setConnection(new _RTMConnection2.default(wsUrl)); | ||
_this3._reconnectAttempts = 1; | ||
_this3._setConnection(new _RTMConnection2.default({ | ||
url: wsUrl, | ||
WebSocket: _this3.WebSocket | ||
})); | ||
@@ -175,30 +193,30 @@ case 15: | ||
} | ||
}, _callee, _this3, [[2, 8]]); | ||
}, _callee, _this4, [[2, 8]]); | ||
})); | ||
_this2._handleConnectionOpen = function () { | ||
_this2._state = _RTMClientState2.default.CONNECTED; | ||
_this2.emit(_RTMClientEvents2.default.ONLINE); | ||
_this3._handleConnectionOpen = function () { | ||
_this3._state = _RTMClientState2.default.CONNECTED; | ||
_this3.emit(_RTMClientEvents2.default.ONLINE); | ||
}; | ||
_this2._handleConnectionClose = function () { | ||
_this2._removeConnection(); | ||
_this2.emit(_RTMClientEvents2.default.OFFLINE); | ||
if (_this2._forceClose) { | ||
_this3._handleConnectionClose = function () { | ||
_this3._removeConnection(); | ||
_this3.emit(_RTMClientEvents2.default.OFFLINE); | ||
if (_this3._forceClose) { | ||
// client close, close normally | ||
_this2._state = _RTMClientState2.default.CLOSED; | ||
_this2.emit(_RTMClientEvents2.default.CLOSE); | ||
_this2._forceClose = false; | ||
_this3._state = _RTMClientState2.default.CLOSED; | ||
_this3.emit(_RTMClientEvents2.default.CLOSE); | ||
_this3._forceClose = false; | ||
} else { | ||
// server close or error, re-connect | ||
_this2._reconnect(); | ||
_this3._reconnect(); | ||
} | ||
}; | ||
_this2._handleConnectionError = function (error) { | ||
_this2.emit(_RTMClientEvents2.default.ERROR, error); | ||
_this3._handleConnectionError = function (error) { | ||
_this3.emit(_RTMClientEvents2.default.ERROR, error); | ||
}; | ||
_this2._handleConnectionMessage = function (message) { | ||
_this2.emit(_RTMClientEvents2.default.MESSAGE, message); | ||
_this3._handleConnectionMessage = function (message) { | ||
_this3.emit(_RTMClientEvents2.default.MESSAGE, message); | ||
}; | ||
@@ -215,13 +233,18 @@ | ||
_this2._url = url; | ||
var WebSocket = options.WebSocket || window.WebSocket; | ||
_this2._connectionEvents = [[_RTMConnectionEvents2.default.OPEN, _this2._handleConnectionOpen], [_RTMConnectionEvents2.default.CLOSE, _this2._handleConnectionClose], [_RTMConnectionEvents2.default.ERROR, _this2._handleConnectionError], [_RTMConnectionEvents2.default.MESSAGE, _this2._handleConnectionMessage]]; | ||
(0, _invariant2.default)(WebSocket, 'A Websocket client is required.'); | ||
_this2._state = _RTMClientState2.default.INITIAL; | ||
_this2._connection = null; | ||
_this2._forceClose = false; | ||
_this2._reconnectAttempts = 1; | ||
_this3._url = url; | ||
_this3.WebSocket = WebSocket; | ||
_this2.connect(); | ||
return _this2; | ||
_this3._connectionEvents = [[_RTMConnectionEvents2.default.OPEN, _this3._handleConnectionOpen], [_RTMConnectionEvents2.default.CLOSE, _this3._handleConnectionClose], [_RTMConnectionEvents2.default.ERROR, _this3._handleConnectionError], [_RTMConnectionEvents2.default.MESSAGE, _this3._handleConnectionMessage]]; | ||
_this3._state = _RTMClientState2.default.INITIAL; | ||
_this3._connection = null; | ||
_this3._forceClose = false; | ||
_this3._reconnectAttempts = 1; | ||
_this3.connect(); | ||
return _this3; | ||
} | ||
@@ -317,6 +340,5 @@ | ||
}, { | ||
key: 'send', | ||
key: '_send', | ||
value: function () { | ||
var _ref4 = _asyncToGenerator(_regenerator2.default.mark(function _callee4(message, timeout) { | ||
var sendPromise, timeoutPromise; | ||
var _ref4 = _asyncToGenerator(_regenerator2.default.mark(function _callee4(message) { | ||
return _regenerator2.default.wrap(function _callee4$(_context4) { | ||
@@ -326,2 +348,39 @@ while (1) { | ||
case 0: | ||
if (!this._connection) { | ||
_context4.next = 4; | ||
break; | ||
} | ||
_context4.next = 3; | ||
return this._connection.send(message); | ||
case 3: | ||
return _context4.abrupt('return', _context4.sent); | ||
case 4: | ||
throw new RTMNotConnectedError('Client currently not connected, the current state is: ' + this.getState()); | ||
case 5: | ||
case 'end': | ||
return _context4.stop(); | ||
} | ||
} | ||
}, _callee4, this); | ||
})); | ||
function _send(_x) { | ||
return _ref4.apply(this, arguments); | ||
} | ||
return _send; | ||
}() | ||
}, { | ||
key: 'send', | ||
value: function () { | ||
var _ref5 = _asyncToGenerator(_regenerator2.default.mark(function _callee5(message, timeout) { | ||
var sendPromise, timeoutPromise; | ||
return _regenerator2.default.wrap(function _callee5$(_context5) { | ||
while (1) { | ||
switch (_context5.prev = _context5.next) { | ||
case 0: | ||
if (!timeout || timeout < 0) { | ||
@@ -332,27 +391,27 @@ timeout = Infinity; | ||
if (Number.isFinite(timeout)) { | ||
_context4.next = 5; | ||
_context5.next = 5; | ||
break; | ||
} | ||
_context4.next = 4; | ||
return this._connection.send(message); | ||
_context5.next = 4; | ||
return this._send(message); | ||
case 4: | ||
return _context4.abrupt('return', _context4.sent); | ||
return _context5.abrupt('return', _context5.sent); | ||
case 5: | ||
sendPromise = this._connection.send(message); | ||
sendPromise = this._send(message); | ||
timeoutPromise = timeoutDelay(timeout, message); | ||
return _context4.abrupt('return', Promise.race([sendPromise, timeoutPromise])); | ||
return _context5.abrupt('return', Promise.race([sendPromise, timeoutPromise])); | ||
case 8: | ||
case 'end': | ||
return _context4.stop(); | ||
return _context5.stop(); | ||
} | ||
} | ||
}, _callee4, this); | ||
}, _callee5, this); | ||
})); | ||
function send(_x, _x2) { | ||
return _ref4.apply(this, arguments); | ||
function send(_x2, _x3) { | ||
return _ref5.apply(this, arguments); | ||
} | ||
@@ -374,6 +433,6 @@ | ||
this._connectionEvents.forEach(function (_ref5) { | ||
var _ref6 = _slicedToArray(_ref5, 2), | ||
name = _ref6[0], | ||
handler = _ref6[1]; | ||
this._connectionEvents.forEach(function (_ref6) { | ||
var _ref7 = _slicedToArray(_ref6, 2), | ||
name = _ref7[0], | ||
handler = _ref7[1]; | ||
@@ -394,6 +453,6 @@ connection.on(name, handler); | ||
this._connectionEvents.forEach(function (_ref7) { | ||
var _ref8 = _slicedToArray(_ref7, 2), | ||
name = _ref8[0], | ||
handler = _ref8[1]; | ||
this._connectionEvents.forEach(function (_ref8) { | ||
var _ref9 = _slicedToArray(_ref8, 2), | ||
name = _ref9[0], | ||
handler = _ref9[1]; | ||
@@ -410,3 +469,3 @@ connection.removeListener(name, handler); | ||
// exponential backoff | ||
// exponential backoff, 30 seconds max | ||
@@ -423,2 +482,2 @@ | ||
module.exports = exports['default']; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9SVE1DbGllbnQuanMiXSwibmFtZXMiOlsidGltZW91dCIsIm1lc3NhZ2UiLCJSVE1UaW1lb3V0RXJyb3IiLCJ0aW1lb3V0RGVsYXkiLCJlcnJvck1lc3NhZ2UiLCJydG1NZXNzYWdlIiwiRXJyb3IiLCJSVE1DbGllbnQiLCJvcHRpb25zIiwiX2RvQ29ubmVjdCIsIl9zdGF0ZSIsIkNPTk5FQ1RJTkciLCJ3c1VybCIsIl9nZXRVcmwiLCJfcmVjb25uZWN0IiwiZW1pdCIsIkVSUk9SIiwiX3JlY29ubmVjdEF0dGVtcHRzIiwiX3NldENvbm5lY3Rpb24iLCJfaGFuZGxlQ29ubmVjdGlvbk9wZW4iLCJDT05ORUNURUQiLCJPTkxJTkUiLCJfaGFuZGxlQ29ubmVjdGlvbkNsb3NlIiwiX3JlbW92ZUNvbm5lY3Rpb24iLCJPRkZMSU5FIiwiX2ZvcmNlQ2xvc2UiLCJDTE9TRUQiLCJDTE9TRSIsIl9oYW5kbGVDb25uZWN0aW9uRXJyb3IiLCJlcnJvciIsIl9oYW5kbGVDb25uZWN0aW9uTWVzc2FnZSIsIk1FU1NBR0UiLCJ1cmwiLCJfdXJsIiwiX2Nvbm5lY3Rpb25FdmVudHMiLCJPUEVOIiwiSU5JVElBTCIsIl9jb25uZWN0aW9uIiwiY29ubmVjdCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIlJFQ09OTkVDVCIsImdlbmVyYXRlSW50ZXJ2YWwiLCJDTE9TSU5HIiwiY2xvc2UiLCJJbmZpbml0eSIsIk51bWJlciIsImlzRmluaXRlIiwic2VuZCIsInNlbmRQcm9taXNlIiwidGltZW91dFByb21pc2UiLCJQcm9taXNlIiwicmFjZSIsImNvbm5lY3Rpb24iLCJmb3JFYWNoIiwibmFtZSIsImhhbmRsZXIiLCJvbiIsInJlbW92ZUxpc3RlbmVyIiwiUlRNQ2xpZW50RXZlbnRzIiwiUlRNQ2xpZW50U3RhdGUiLCJhdHRlbXB0cyIsIm1heEludGVydmFsIiwiTWF0aCIsIm1pbiIsInBvdyIsInJhbmRvbSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OzJEQStOQSxrQkFBNEJBLE9BQTVCLEVBQXFDQyxPQUFyQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFDUSxxQkFBTUQsT0FBTixDQURSOztBQUFBO0FBQUEsa0JBRVEsSUFBSUUsZUFBSixDQUFvQiwyQkFBcEIsRUFBaURELE9BQWpELENBRlI7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRzs7a0JBQWVFLFk7Ozs7O0FBL05mOztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7Ozs7Ozs7OztJQUVNRCxlOzs7QUFDSiwyQkFBWUUsWUFBWixFQUEwQkMsVUFBMUIsRUFBc0M7QUFBQTs7QUFBQSxrSUFDOUJELFlBRDhCOztBQUVwQyxVQUFLQyxVQUFMLEdBQWtCQSxVQUFsQjtBQUZvQztBQUdyQzs7O0VBSjJCQyxLOztBQU85Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF3QnFCQyxTOzs7QUFNbkIscUJBQVlDLE9BQVosRUFBcUI7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQSxXQW1EckJDLFVBbkRxQixnREFtRFI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ1gscUJBQUtDLE1BQUwsR0FBYyx5QkFBZUMsVUFBN0I7O0FBRUlDLG1CQUhPO0FBQUE7QUFBQTtBQUFBLHFCQUtLLE9BQUtDLE9BQUwsRUFMTDs7QUFBQTtBQUtURCxtQkFMUztBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBOztBQU9ULHFCQUFLRSxVQUFMLEdBUFMsQ0FPVTtBQUNuQixxQkFBS0MsSUFBTCxDQUFVLDBCQUFnQkMsS0FBMUI7QUFSUzs7QUFBQTs7QUFZWCxxQkFBS0Msa0JBQUwsR0FBMEIsQ0FBMUI7QUFDQSxxQkFBS0MsY0FBTCxDQUFvQiw0QkFBa0JOLEtBQWxCLENBQXBCOztBQWJXO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEtBbkRROztBQUFBLFdBMkdyQk8scUJBM0dxQixHQTJHRyxZQUFNO0FBQzVCLGFBQUtULE1BQUwsR0FBYyx5QkFBZVUsU0FBN0I7QUFDQSxhQUFLTCxJQUFMLENBQVUsMEJBQWdCTSxNQUExQjtBQUNELEtBOUdvQjs7QUFBQSxXQWdIckJDLHNCQWhIcUIsR0FnSEksWUFBTTtBQUM3QixhQUFLQyxpQkFBTDtBQUNBLGFBQUtSLElBQUwsQ0FBVSwwQkFBZ0JTLE9BQTFCO0FBQ0EsVUFBSSxPQUFLQyxXQUFULEVBQXNCO0FBQ3BCO0FBQ0EsZUFBS2YsTUFBTCxHQUFjLHlCQUFlZ0IsTUFBN0I7QUFDQSxlQUFLWCxJQUFMLENBQVUsMEJBQWdCWSxLQUExQjtBQUNBLGVBQUtGLFdBQUwsR0FBbUIsS0FBbkI7QUFDRCxPQUxELE1BS087QUFDTDtBQUNBLGVBQUtYLFVBQUw7QUFDRDtBQUNGLEtBNUhvQjs7QUFBQSxXQThIckJjLHNCQTlIcUIsR0E4SEksVUFBQ0MsS0FBRCxFQUFXO0FBQ2xDLGFBQUtkLElBQUwsQ0FBVSwwQkFBZ0JDLEtBQTFCLEVBQWlDYSxLQUFqQztBQUNELEtBaElvQjs7QUFBQSxXQWtJckJDLHdCQWxJcUIsR0FrSU0sVUFBQzdCLE9BQUQsRUFBYTtBQUN0QyxhQUFLYyxJQUFMLENBQVUsMEJBQWdCZ0IsT0FBMUIsRUFBbUM5QixPQUFuQztBQUNELEtBcElvQjs7QUFHbkJPLGNBQVVBLFdBQVcsRUFBckI7QUFIbUIsbUJBSUhBLE9BSkc7QUFBQSxRQUlYd0IsR0FKVyxZQUlYQSxHQUpXOzs7QUFNbkIsMkJBQ0VBLEdBREYsRUFFRSxvQkFGRjs7QUFLQSwyQkFDRSxPQUFPQSxHQUFQLEtBQWUsUUFBZixJQUEyQixPQUFPQSxHQUFQLEtBQWUsVUFENUMsRUFFRSwwREFGRjs7QUFLQSxXQUFLQyxJQUFMLEdBQVlELEdBQVo7O0FBRUEsV0FBS0UsaUJBQUwsR0FBeUIsQ0FDdkIsQ0FBQyw4QkFBb0JDLElBQXJCLEVBQTJCLE9BQUtoQixxQkFBaEMsQ0FEdUIsRUFFdkIsQ0FBQyw4QkFBb0JRLEtBQXJCLEVBQTRCLE9BQUtMLHNCQUFqQyxDQUZ1QixFQUd2QixDQUFDLDhCQUFvQk4sS0FBckIsRUFBNEIsT0FBS1ksc0JBQWpDLENBSHVCLEVBSXZCLENBQUMsOEJBQW9CRyxPQUFyQixFQUE4QixPQUFLRCx3QkFBbkMsQ0FKdUIsQ0FBekI7O0FBT0EsV0FBS3BCLE1BQUwsR0FBYyx5QkFBZTBCLE9BQTdCO0FBQ0EsV0FBS0MsV0FBTCxHQUFtQixJQUFuQjtBQUNBLFdBQUtaLFdBQUwsR0FBbUIsS0FBbkI7QUFDQSxXQUFLUixrQkFBTCxHQUEwQixDQUExQjs7QUFFQSxXQUFLcUIsT0FBTDtBQTlCbUI7QUErQnBCOzs7OzhCQUVTO0FBQ1IsVUFBSUMsUUFBUUMsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQTdCLEVBQTJDO0FBQ3pDLGlDQUNFLEtBQUsvQixNQUFMLEtBQWdCLHlCQUFlMEIsT0FBL0IsSUFDQSxLQUFLMUIsTUFBTCxLQUFnQix5QkFBZWdCLE1BRC9CLElBRUEsS0FBS2hCLE1BQUwsS0FBZ0IseUJBQWVnQyxTQUhqQyxFQUlFLHlFQUNBLHNEQUxGLEVBTUUseUJBQWVOLE9BTmpCLEVBT0UseUJBQWVWLE1BUGpCLEVBUUUseUJBQWVnQixTQVJqQixFQVNFLEtBQUtoQyxNQVRQO0FBV0Q7O0FBRUQsV0FBS0QsVUFBTDtBQUNEOzs7Ozs7Ozs7QUFtQkMscUJBQUtDLE1BQUwsR0FBYyx5QkFBZWdDLFNBQTdCOzt1QkFDTSxxQkFBTUMsaUJBQWlCLEtBQUsxQixrQkFBdEIsQ0FBTixDOzs7QUFDTixxQkFBS0Esa0JBQUw7QUFDQSxxQkFBS3FCLE9BQUw7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJTU4sbUIsR0FBTSxLQUFLQyxJOztzQkFFYixPQUFPRCxHQUFQLEtBQWUsUTs7Ozs7a0RBQ1ZBLEc7Ozs7dUJBSUlBLEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0QkFHUDtBQUNOLFVBQUksS0FBS0ssV0FBTCxJQUFvQixLQUFLM0IsTUFBTCxLQUFnQix5QkFBZWtDLE9BQXZELEVBQWdFO0FBQzlELGFBQUtsQyxNQUFMLEdBQWMseUJBQWVrQyxPQUE3QjtBQUNBLGFBQUtuQixXQUFMLEdBQW1CLElBQW5CO0FBQ0EsYUFBS1ksV0FBTCxDQUFpQlEsS0FBakI7QUFDRDtBQUNGOzs7O2lGQUVVNUMsTyxFQUFTRCxPOzs7Ozs7QUFDbEIsb0JBQUksQ0FBQ0EsT0FBRCxJQUFZQSxVQUFVLENBQTFCLEVBQTZCO0FBQzNCQSw0QkFBVThDLFFBQVY7QUFDRDs7b0JBRUlDLE9BQU9DLFFBQVAsQ0FBZ0JoRCxPQUFoQixDOzs7Ozs7dUJBQ1UsS0FBS3FDLFdBQUwsQ0FBaUJZLElBQWpCLENBQXNCaEQsT0FBdEIsQzs7Ozs7O0FBR1RpRCwyQixHQUFjLEtBQUtiLFdBQUwsQ0FBaUJZLElBQWpCLENBQXNCaEQsT0FBdEIsQztBQUNka0QsOEIsR0FBaUJoRCxhQUFhSCxPQUFiLEVBQXNCQyxPQUF0QixDO2tEQUNoQm1ELFFBQVFDLElBQVIsQ0FBYSxDQUFDSCxXQUFELEVBQWNDLGNBQWQsQ0FBYixDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7K0JBOEJFO0FBQ1QsYUFBTyxLQUFLekMsTUFBWjtBQUNEOzs7bUNBRWM0QyxVLEVBQVk7QUFDekIsVUFBSWYsUUFBUUMsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQTdCLEVBQTJDO0FBQ3pDLGlDQUNFLENBQUMsS0FBS0osV0FEUixFQUVFLDJEQUZGO0FBSUQ7O0FBRUQsV0FBS0gsaUJBQUwsQ0FBdUJxQixPQUF2QixDQUErQixpQkFBcUI7QUFBQTtBQUFBLFlBQW5CQyxJQUFtQjtBQUFBLFlBQWJDLE9BQWE7O0FBQ2xESCxtQkFBV0ksRUFBWCxDQUFjRixJQUFkLEVBQW9CQyxPQUFwQjtBQUNELE9BRkQ7O0FBSUEsV0FBS3BCLFdBQUwsR0FBbUJpQixVQUFuQjtBQUNEOzs7d0NBRW1CO0FBQ2xCLFVBQU1BLGFBQWEsS0FBS2pCLFdBQXhCOztBQUVBLFVBQUlFLFFBQVFDLEdBQVIsQ0FBWUMsUUFBWixLQUF5QixZQUE3QixFQUEyQztBQUN6QyxpQ0FDRWEsVUFERixFQUVFLHdDQUZGO0FBSUQ7O0FBRUQsV0FBS3BCLGlCQUFMLENBQXVCcUIsT0FBdkIsQ0FBK0IsaUJBQXFCO0FBQUE7QUFBQSxZQUFuQkMsSUFBbUI7QUFBQSxZQUFiQyxPQUFhOztBQUNsREgsbUJBQVdLLGNBQVgsQ0FBMEJILElBQTFCLEVBQWdDQyxPQUFoQztBQUNELE9BRkQ7O0FBSUEsV0FBS3BCLFdBQUwsR0FBbUIsSUFBbkI7QUFDRDs7Ozs7O0FBR0g7OztBQWpMcUI5QixTLENBRVpxRCxlO0FBRllyRCxTLENBSVpzRCxjO2tCQUpZdEQsUztBQWtMckIsU0FBU29DLGdCQUFULENBQTBCbUIsUUFBMUIsRUFBb0M7QUFDbEMsTUFBTUMsY0FBY0MsS0FBS0MsR0FBTCxDQUFTLEVBQVQsRUFBY0QsS0FBS0UsR0FBTCxDQUFTLENBQVQsRUFBWUosUUFBWixJQUF3QixDQUF0QyxJQUE0QyxJQUFoRTtBQUNBLFNBQU9FLEtBQUtHLE1BQUwsS0FBZ0JKLFdBQXZCO0FBQ0QiLCJmaWxlIjoiUlRNQ2xpZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCB3YXJuaW5nIGZyb20gJ3dhcm5pbmcnO1xuaW1wb3J0IGludmFyaWFudCBmcm9tICdpbnZhcmlhbnQnO1xuaW1wb3J0IGRlbGF5IGZyb20gJ2RlbGF5JztcbmltcG9ydCBSVE1DbGllbnRFdmVudHMgZnJvbSAnLi9SVE1DbGllbnRFdmVudHMnO1xuaW1wb3J0IFJUTUNsaWVudFN0YXRlIGZyb20gJy4vUlRNQ2xpZW50U3RhdGUnO1xuaW1wb3J0IFJUTUNvbm5lY3Rpb25FdmVudHMgZnJvbSAnLi9SVE1Db25uZWN0aW9uRXZlbnRzJztcbmltcG9ydCBSVE1Db25uZWN0aW9uIGZyb20gJy4vUlRNQ29ubmVjdGlvbic7XG5cbmNsYXNzIFJUTVRpbWVvdXRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoZXJyb3JNZXNzYWdlLCBydG1NZXNzYWdlKSB7XG4gICAgc3VwZXIoZXJyb3JNZXNzYWdlKTtcbiAgICB0aGlzLnJ0bU1lc3NhZ2UgPSBydG1NZXNzYWdlO1xuICB9XG59XG5cbi8qKlxuICogS2VlcCBhbiBSVE0gY2xpZW50IHJ1bm5pbmcgd2l0aCBtdWx0aXBsZS5cbiAqXG4gKiBTdGF0ZSBkaWFncmFtOlxuICpcbiAqICAgICAgICAgICAgICAgICAgICBJTklUSUFMXG4gKiAgICAgICAgICAgICAgICAgICAgICAgK1xuICogICAgICAgICAgZXJyb3IgICAgICAgIHxcbiAqICAgICAgKy0tLS0tLS0tLS0tLS0rICB8XG4gKiAgICAgIHYgICAgICAgICAgICAgKyAgdiAgICAgICAgY29ubmVjdFxuICogIFJFQ09OTkVDVCstLS0tLS0tPkNPTk5FQ1RJTkc8LS0tLS0tLS0tK0NMT1NFRFxuICogICAgICBeICAgICAgICAgICAgICAgICsgICAgICAgICAgICAgICAgICAgIF5cbiAqICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8XG4gKiAgICAgIHwgICAgc2VydmVyICAgICAgfCAgICAgICAgICAgICAgICAgICAgfFxuICogICAgICB8ICAgIGNsb3NlLyAgICAgIHYgICAgICAgIGNsb3NlICAgICAgICtcbiAqICAgICAgKy0tLS0tLS0tLS0tLStDT05ORUNURUQrLS0tLS0tLS0tLT5DTE9TSU5HXG4gKiAgICAgICAgICAgZXJyb3JcbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKiBAcGFyYW0ge3N0cmluZ3xGdW5jdGlvbn0gb3B0aW9ucy51cmwgLSBBIHN0cmluZyBvciBhIGZ1bmN0aW9uIHJldHVybmluZ1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBzdHJpbmcgb3IgYSBQcm9taXNlIHJlc29sdmVzIHRvXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHN0cmluZy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUlRNQ2xpZW50IGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcblxuICBzdGF0aWMgUlRNQ2xpZW50RXZlbnRzID0gUlRNQ2xpZW50RXZlbnRzO1xuXG4gIHN0YXRpYyBSVE1DbGllbnRTdGF0ZSA9IFJUTUNsaWVudFN0YXRlO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgY29uc3QgeyB1cmwgfSA9IG9wdGlvbnM7XG5cbiAgICB3YXJuaW5nKFxuICAgICAgdXJsLFxuICAgICAgJ1widXJsXCIgaXMgcmVxdWlyZWQuJ1xuICAgICk7XG5cbiAgICB3YXJuaW5nKFxuICAgICAgdHlwZW9mIHVybCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHVybCA9PT0gJ2Z1bmN0aW9uJyxcbiAgICAgICdcInVybFwiIG11c3QgYmUgYSBzdHJpbmcgb3IgYSBmdW5jdGlvbiByZXR1cm5pbmcgYSBzdHJpbmcuJ1xuICAgICk7XG5cbiAgICB0aGlzLl91cmwgPSB1cmw7XG5cbiAgICB0aGlzLl9jb25uZWN0aW9uRXZlbnRzID0gW1xuICAgICAgW1JUTUNvbm5lY3Rpb25FdmVudHMuT1BFTiwgdGhpcy5faGFuZGxlQ29ubmVjdGlvbk9wZW5dLFxuICAgICAgW1JUTUNvbm5lY3Rpb25FdmVudHMuQ0xPU0UsIHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25DbG9zZV0sXG4gICAgICBbUlRNQ29ubmVjdGlvbkV2ZW50cy5FUlJPUiwgdGhpcy5faGFuZGxlQ29ubmVjdGlvbkVycm9yXSxcbiAgICAgIFtSVE1Db25uZWN0aW9uRXZlbnRzLk1FU1NBR0UsIHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25NZXNzYWdlXSxcbiAgICBdO1xuXG4gICAgdGhpcy5fc3RhdGUgPSBSVE1DbGllbnRTdGF0ZS5JTklUSUFMO1xuICAgIHRoaXMuX2Nvbm5lY3Rpb24gPSBudWxsO1xuICAgIHRoaXMuX2ZvcmNlQ2xvc2UgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWNvbm5lY3RBdHRlbXB0cyA9IDE7XG5cbiAgICB0aGlzLmNvbm5lY3QoKTtcbiAgfVxuXG4gIGNvbm5lY3QoKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGludmFyaWFudChcbiAgICAgICAgdGhpcy5fc3RhdGUgPT09IFJUTUNsaWVudFN0YXRlLklOSVRJQUwgfHxcbiAgICAgICAgdGhpcy5fc3RhdGUgPT09IFJUTUNsaWVudFN0YXRlLkNMT1NFRCB8fFxuICAgICAgICB0aGlzLl9zdGF0ZSA9PT0gUlRNQ2xpZW50U3RhdGUuUkVDT05ORUNULFxuICAgICAgICAnSW52YWxpZCBzdGF0ZTogY29ubmVjdCgpIHNob3VsZCBhbHdheXMgYmUgY2FsbGVkIHdoZW4gY3VycmVudCBzdGF0ZSAnICtcbiAgICAgICAgJ2lzIFwiJXNcIiwgXCIlc1wiIG9yIFwiJXNcIiBidXQgdGhlIGN1cnJlbnQgc3RhdGUgaXMgXCIlc1wiLicsXG4gICAgICAgIFJUTUNsaWVudFN0YXRlLklOSVRJQUwsXG4gICAgICAgIFJUTUNsaWVudFN0YXRlLkNMT1NFRCxcbiAgICAgICAgUlRNQ2xpZW50U3RhdGUuUkVDT05ORUNULFxuICAgICAgICB0aGlzLl9zdGF0ZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kb0Nvbm5lY3QoKTtcbiAgfVxuXG4gIF9kb0Nvbm5lY3QgPSBhc3luYyAoKSA9PiB7XG4gICAgdGhpcy5fc3RhdGUgPSBSVE1DbGllbnRTdGF0ZS5DT05ORUNUSU5HO1xuXG4gICAgbGV0IHdzVXJsO1xuICAgIHRyeSB7XG4gICAgICB3c1VybCA9IGF3YWl0IHRoaXMuX2dldFVybCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX3JlY29ubmVjdCgpOyAvLyBpbnRlbnRpb25hbGx5IGlnbm9yZSBcImF3YWl0XCJcbiAgICAgIHRoaXMuZW1pdChSVE1DbGllbnRFdmVudHMuRVJST1IsIGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3JlY29ubmVjdEF0dGVtcHRzID0gMTtcbiAgICB0aGlzLl9zZXRDb25uZWN0aW9uKG5ldyBSVE1Db25uZWN0aW9uKHdzVXJsKSk7XG4gIH07XG5cbiAgYXN5bmMgX3JlY29ubmVjdCgpIHtcbiAgICB0aGlzLl9zdGF0ZSA9IFJUTUNsaWVudFN0YXRlLlJFQ09OTkVDVDtcbiAgICBhd2FpdCBkZWxheShnZW5lcmF0ZUludGVydmFsKHRoaXMuX3JlY29ubmVjdEF0dGVtcHRzKSk7XG4gICAgdGhpcy5fcmVjb25uZWN0QXR0ZW1wdHMrKztcbiAgICB0aGlzLmNvbm5lY3QoKTtcbiAgfVxuXG4gIGFzeW5jIF9nZXRVcmwoKSB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5fdXJsO1xuXG4gICAgaWYgKHR5cGVvZiB1cmwgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIC8vIGFzc3VtZSB1cmwgaXMgYSBmdW5jdGlvblxuICAgIHJldHVybiBhd2FpdCB1cmwoKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGlmICh0aGlzLl9jb25uZWN0aW9uICYmIHRoaXMuX3N0YXRlICE9PSBSVE1DbGllbnRTdGF0ZS5DTE9TSU5HKSB7XG4gICAgICB0aGlzLl9zdGF0ZSA9IFJUTUNsaWVudFN0YXRlLkNMT1NJTkc7XG4gICAgICB0aGlzLl9mb3JjZUNsb3NlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2Nvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzZW5kKG1lc3NhZ2UsIHRpbWVvdXQpIHtcbiAgICBpZiAoIXRpbWVvdXQgfHwgdGltZW91dCA8IDApIHtcbiAgICAgIHRpbWVvdXQgPSBJbmZpbml0eTtcbiAgICB9XG5cbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZSh0aW1lb3V0KSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2Nvbm5lY3Rpb24uc2VuZChtZXNzYWdlKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZW5kUHJvbWlzZSA9IHRoaXMuX2Nvbm5lY3Rpb24uc2VuZChtZXNzYWdlKTtcbiAgICBjb25zdCB0aW1lb3V0UHJvbWlzZSA9IHRpbWVvdXREZWxheSh0aW1lb3V0LCBtZXNzYWdlKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtzZW5kUHJvbWlzZSwgdGltZW91dFByb21pc2VdKTtcbiAgfVxuXG4gIF9oYW5kbGVDb25uZWN0aW9uT3BlbiA9ICgpID0+IHtcbiAgICB0aGlzLl9zdGF0ZSA9IFJUTUNsaWVudFN0YXRlLkNPTk5FQ1RFRDtcbiAgICB0aGlzLmVtaXQoUlRNQ2xpZW50RXZlbnRzLk9OTElORSk7XG4gIH07XG5cbiAgX2hhbmRsZUNvbm5lY3Rpb25DbG9zZSA9ICgpID0+IHtcbiAgICB0aGlzLl9yZW1vdmVDb25uZWN0aW9uKCk7XG4gICAgdGhpcy5lbWl0KFJUTUNsaWVudEV2ZW50cy5PRkZMSU5FKTtcbiAgICBpZiAodGhpcy5fZm9yY2VDbG9zZSkge1xuICAgICAgLy8gY2xpZW50IGNsb3NlLCBjbG9zZSBub3JtYWxseVxuICAgICAgdGhpcy5fc3RhdGUgPSBSVE1DbGllbnRTdGF0ZS5DTE9TRUQ7XG4gICAgICB0aGlzLmVtaXQoUlRNQ2xpZW50RXZlbnRzLkNMT1NFKTtcbiAgICAgIHRoaXMuX2ZvcmNlQ2xvc2UgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gc2VydmVyIGNsb3NlIG9yIGVycm9yLCByZS1jb25uZWN0XG4gICAgICB0aGlzLl9yZWNvbm5lY3QoKTtcbiAgICB9XG4gIH07XG5cbiAgX2hhbmRsZUNvbm5lY3Rpb25FcnJvciA9IChlcnJvcikgPT4ge1xuICAgIHRoaXMuZW1pdChSVE1DbGllbnRFdmVudHMuRVJST1IsIGVycm9yKTtcbiAgfTtcblxuICBfaGFuZGxlQ29ubmVjdGlvbk1lc3NhZ2UgPSAobWVzc2FnZSkgPT4ge1xuICAgIHRoaXMuZW1pdChSVE1DbGllbnRFdmVudHMuTUVTU0FHRSwgbWVzc2FnZSk7XG4gIH07XG5cbiAgZ2V0U3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlO1xuICB9XG5cbiAgX3NldENvbm5lY3Rpb24oY29ubmVjdGlvbikge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpbnZhcmlhbnQoXG4gICAgICAgICF0aGlzLl9jb25uZWN0aW9uLFxuICAgICAgICAnU2hvdWxkIG5vdCBzZXQgY29ubmVjdGlvbiB3aGVuIGNvbm5lY3Rpb24gYWxyZWFkeSBleGlzdHMuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jb25uZWN0aW9uRXZlbnRzLmZvckVhY2goKFtuYW1lLCBoYW5kbGVyXSkgPT4ge1xuICAgICAgY29ubmVjdGlvbi5vbihuYW1lLCBoYW5kbGVyKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2Nvbm5lY3Rpb24gPSBjb25uZWN0aW9uO1xuICB9XG5cbiAgX3JlbW92ZUNvbm5lY3Rpb24oKSB7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuX2Nvbm5lY3Rpb247XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaW52YXJpYW50KFxuICAgICAgICBjb25uZWN0aW9uLFxuICAgICAgICAnQ29ubmVjdGlvbiBub3Qgc2V0IG9yIGFscmVhZHkgcmVtb3ZlZC4nXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuX2Nvbm5lY3Rpb25FdmVudHMuZm9yRWFjaCgoW25hbWUsIGhhbmRsZXJdKSA9PiB7XG4gICAgICBjb25uZWN0aW9uLnJlbW92ZUxpc3RlbmVyKG5hbWUsIGhhbmRsZXIpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fY29ubmVjdGlvbiA9IG51bGw7XG4gIH1cbn1cblxuLy8gZXhwb25lbnRpYWwgYmFja29mZlxuZnVuY3Rpb24gZ2VuZXJhdGVJbnRlcnZhbChhdHRlbXB0cykge1xuICBjb25zdCBtYXhJbnRlcnZhbCA9IE1hdGgubWluKDMwLCAoTWF0aC5wb3coMiwgYXR0ZW1wdHMpIC0gMSkpICogMTAwMDtcbiAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiBtYXhJbnRlcnZhbDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdGltZW91dERlbGF5KHRpbWVvdXQsIG1lc3NhZ2UpIHtcbiAgYXdhaXQgZGVsYXkodGltZW91dCk7XG4gIHRocm93IG5ldyBSVE1UaW1lb3V0RXJyb3IoJ1JUTSBtZXNzYWdlIHNlbmQgdGltZW91dC4nLCBtZXNzYWdlKTtcbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9SVE1DbGllbnQuanMiXSwibmFtZXMiOlsidGltZW91dCIsIm1lc3NhZ2UiLCJSVE1UaW1lb3V0RXJyb3IiLCJ0aW1lb3V0RGVsYXkiLCJlcnJvck1lc3NhZ2UiLCJydG1NZXNzYWdlIiwiRXJyb3IiLCJSVE1Ob3RDb25uZWN0ZWRFcnJvciIsIlJUTUNsaWVudCIsIm9wdGlvbnMiLCJfZG9Db25uZWN0IiwiX3N0YXRlIiwiQ09OTkVDVElORyIsIndzVXJsIiwiX2dldFVybCIsIl9yZWNvbm5lY3QiLCJlbWl0IiwiRVJST1IiLCJfcmVjb25uZWN0QXR0ZW1wdHMiLCJfc2V0Q29ubmVjdGlvbiIsInVybCIsIldlYlNvY2tldCIsIl9oYW5kbGVDb25uZWN0aW9uT3BlbiIsIkNPTk5FQ1RFRCIsIk9OTElORSIsIl9oYW5kbGVDb25uZWN0aW9uQ2xvc2UiLCJfcmVtb3ZlQ29ubmVjdGlvbiIsIk9GRkxJTkUiLCJfZm9yY2VDbG9zZSIsIkNMT1NFRCIsIkNMT1NFIiwiX2hhbmRsZUNvbm5lY3Rpb25FcnJvciIsImVycm9yIiwiX2hhbmRsZUNvbm5lY3Rpb25NZXNzYWdlIiwiTUVTU0FHRSIsIndpbmRvdyIsIl91cmwiLCJfY29ubmVjdGlvbkV2ZW50cyIsIk9QRU4iLCJJTklUSUFMIiwiX2Nvbm5lY3Rpb24iLCJjb25uZWN0IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiUkVDT05ORUNUIiwiZ2VuZXJhdGVJbnRlcnZhbCIsIkNMT1NJTkciLCJjbG9zZSIsInNlbmQiLCJnZXRTdGF0ZSIsIkluZmluaXR5IiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJfc2VuZCIsInNlbmRQcm9taXNlIiwidGltZW91dFByb21pc2UiLCJQcm9taXNlIiwicmFjZSIsImNvbm5lY3Rpb24iLCJmb3JFYWNoIiwibmFtZSIsImhhbmRsZXIiLCJvbiIsInJlbW92ZUxpc3RlbmVyIiwiUlRNQ2xpZW50RXZlbnRzIiwiUlRNQ2xpZW50U3RhdGUiLCJhdHRlbXB0cyIsIm1heEludGVy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dEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSAnd2FybmluZyc7XG5pbXBvcnQgaW52YXJpYW50IGZyb20gJ2ludmFyaWFudCc7XG5pbXBvcnQgZGVsYXkgZnJvbSAnZGVsYXknO1xuaW1wb3J0IFJUTUNsaWVudEV2ZW50cyBmcm9tICcuL1JUTUNsaWVudEV2ZW50cyc7XG5pbXBvcnQgUlRNQ2xpZW50U3RhdGUgZnJvbSAnLi9SVE1DbGllbnRTdGF0ZSc7XG5pbXBvcnQgUlRNQ29ubmVjdGlvbkV2ZW50cyBmcm9tICcuL1JUTUNvbm5lY3Rpb25FdmVudHMnO1xuaW1wb3J0IFJUTUNvbm5lY3Rpb24gZnJvbSAnLi9SVE1Db25uZWN0aW9uJztcblxuY2xhc3MgUlRNVGltZW91dEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihlcnJvck1lc3NhZ2UsIHJ0bU1lc3NhZ2UpIHtcbiAgICBzdXBlcihlcnJvck1lc3NhZ2UpO1xuICAgIHRoaXMucnRtTWVzc2FnZSA9IHJ0bU1lc3NhZ2U7XG4gIH1cbn1cblxuY2xhc3MgUlRNTm90Q29ubmVjdGVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGVycm9yTWVzc2FnZSwgcnRtTWVzc2FnZSkge1xuICAgIHN1cGVyKGVycm9yTWVzc2FnZSk7XG4gICAgdGhpcy5ydG1NZXNzYWdlID0gcnRtTWVzc2FnZTtcbiAgfVxufVxuXG4vKipcbiAqIEtlZXAgYW4gUlRNIGNsaWVudCBydW5uaW5nIHdpdGggbXVsdGlwbGUuXG4gKlxuICogU3RhdGUgZGlhZ3JhbTpcbiAqXG4gKiAgICAgICAgICAgICAgICAgICAgSU5JVElBTFxuICogICAgICAgICAgICAgICAgICAgICAgICtcbiAqICAgICAgICAgIGVycm9yICAgICAgICB8XG4gKiAgICAgICstLS0tLS0tLS0tLS0tKyAgfFxuICogICAgICB2ICAgICAgICAgICAgICsgIHYgICAgICAgIGNvbm5lY3RcbiAqICBSRUNPTk5FQ1QrLS0tLS0tLT5DT05ORUNUSU5HPC0tLS0tLS0tLStDTE9TRURcbiAqICAgICAgXiAgICAgICAgICAgICAgICArICAgICAgICAgICAgICAgICAgICBeXG4gKiAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfFxuICogICAgICB8ICAgIHNlcnZlciAgICAgIHwgICAgICAgICAgICAgICAgICAgIHxcbiAqICAgICAgfCAgICBjbG9zZS8gICAgICB2ICAgICAgICBjbG9zZSAgICAgICArXG4gKiAgICAgICstLS0tLS0tLS0tLS0rQ09OTkVDVEVEKy0tLS0tLS0tLS0+Q0xPU0lOR1xuICogICAgICAgICAgIGVycm9yXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIHtzdHJpbmd8RnVuY3Rpb259IG9wdGlvbnMudXJsIC0gQSBzdHJpbmcgb3IgYSBmdW5jdGlvbiByZXR1cm5pbmdcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgc3RyaW5nIG9yIGEgUHJvbWlzZSByZXNvbHZlcyB0b1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBzdHJpbmcuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJUTUNsaWVudCBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG5cbiAgc3RhdGljIFJUTUNsaWVudEV2ZW50cyA9IFJUTUNsaWVudEV2ZW50cztcblxuICBzdGF0aWMgUlRNQ2xpZW50U3RhdGUgPSBSVE1DbGllbnRTdGF0ZTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIGNvbnN0IHsgdXJsIH0gPSBvcHRpb25zO1xuXG4gICAgd2FybmluZyhcbiAgICAgIHVybCxcbiAgICAgICdcInVybFwiIGlzIHJlcXVpcmVkLidcbiAgICApO1xuXG4gICAgd2FybmluZyhcbiAgICAgIHR5cGVvZiB1cmwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB1cmwgPT09ICdmdW5jdGlvbicsXG4gICAgICAnXCJ1cmxcIiBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGEgc3RyaW5nLidcbiAgICApO1xuXG4gICAgY29uc3QgV2ViU29ja2V0ID0gb3B0aW9ucy5XZWJTb2NrZXQgfHwgd2luZG93LldlYlNvY2tldDtcblxuICAgIGludmFyaWFudChcbiAgICAgIFdlYlNvY2tldCxcbiAgICAgICdBIFdlYnNvY2tldCBjbGllbnQgaXMgcmVxdWlyZWQuJ1xuICAgICk7XG5cbiAgICB0aGlzLl91cmwgPSB1cmw7XG4gICAgdGhpcy5XZWJTb2NrZXQgPSBXZWJTb2NrZXQ7XG5cbiAgICB0aGlzLl9jb25uZWN0aW9uRXZlbnRzID0gW1xuICAgICAgW1JUTUNvbm5lY3Rpb25FdmVudHMuT1BFTiwgdGhpcy5faGFuZGxlQ29ubmVjdGlvbk9wZW5dLFxuICAgICAgW1JUTUNvbm5lY3Rpb25FdmVudHMuQ0xPU0UsIHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25DbG9zZV0sXG4gICAgICBbUlRNQ29ubmVjdGlvbkV2ZW50cy5FUlJPUiwgdGhpcy5faGFuZGxlQ29ubmVjdGlvbkVycm9yXSxcbiAgICAgIFtSVE1Db25uZWN0aW9uRXZlbnRzLk1FU1NBR0UsIHRoaXMuX2hhbmRsZUNvbm5lY3Rpb25NZXNzYWdlXSxcbiAgICBdO1xuXG4gICAgdGhpcy5fc3RhdGUgPSBSVE1DbGllbnRTdGF0ZS5JTklUSUFMO1xuICAgIHRoaXMuX2Nvbm5lY3Rpb24gPSBudWxsO1xuICAgIHRoaXMuX2ZvcmNlQ2xvc2UgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWNvbm5lY3RBdHRlbXB0cyA9IDE7XG5cbiAgICB0aGlzLmNvbm5lY3QoKTtcbiAgfVxuXG4gIGNvbm5lY3QoKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGludmFyaWFudChcbiAgICAgICAgdGhpcy5fc3RhdGUgPT09IFJUTUNsaWVudFN0YXRlLklOSVRJQUwgfHxcbiAgICAgICAgdGhpcy5fc3RhdGUgPT09IFJUTUNsaWVudFN0YXRlLkNMT1NFRCB8fFxuICAgICAgICB0aGlzLl9zdGF0ZSA9PT0gUlRNQ2xpZW50U3RhdGUuUkVDT05ORUNULFxuICAgICAgICAnSW52YWxpZCBzdGF0ZTogY29ubmVjdCgpIHNob3VsZCBhbHdheXMgYmUgY2FsbGVkIHdoZW4gY3VycmVudCBzdGF0ZSAnICtcbiAgICAgICAgJ2lzIFwiJXNcIiwgXCIlc1wiIG9yIFwiJXNcIiBidXQgdGhlIGN1cnJlbnQgc3RhdGUgaXMgXCIlc1wiLicsXG4gICAgICAgIFJUTUNsaWVudFN0YXRlLklOSVRJQUwsXG4gICAgICAgIFJUTUNsaWVudFN0YXRlLkNMT1NFRCxcbiAgICAgICAgUlRNQ2xpZW50U3RhdGUuUkVDT05ORUNULFxuICAgICAgICB0aGlzLl9zdGF0ZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kb0Nvbm5lY3QoKTtcbiAgfVxuXG4gIF9kb0Nvbm5lY3QgPSBhc3luYyAoKSA9PiB7XG4gICAgdGhpcy5fc3RhdGUgPSBSVE1DbGllbnRTdGF0ZS5DT05ORUNUSU5HO1xuXG4gICAgbGV0IHdzVXJsO1xuICAgIHRyeSB7XG4gICAgICB3c1VybCA9IGF3YWl0IHRoaXMuX2dldFVybCgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX3JlY29ubmVjdCgpOyAvLyBpbnRlbnRpb25hbGx5IGlnbm9yZSBcImF3YWl0XCJcbiAgICAgIHRoaXMuZW1pdChSVE1DbGllbnRFdmVudHMuRVJST1IsIGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3JlY29ubmVjdEF0dGVtcHRzID0gMTtcbiAgICB0aGlzLl9zZXRDb25uZWN0aW9uKG5ldyBSVE1Db25uZWN0aW9uKHtcbiAgICAgIHVybDogd3NVcmwsXG4gICAgICBXZWJTb2NrZXQ6IHRoaXMuV2ViU29ja2V0XG4gICAgfSkpO1xuICB9O1xuXG4gIGFzeW5jIF9yZWNvbm5lY3QoKSB7XG4gICAgdGhpcy5fc3RhdGUgPSBSVE1DbGllbnRTdGF0ZS5SRUNPTk5FQ1Q7XG4gICAgYXdhaXQgZGVsYXkoZ2VuZXJhdGVJbnRlcnZhbCh0aGlzLl9yZWNvbm5lY3RBdHRlbXB0cykpO1xuICAgIHRoaXMuX3JlY29ubmVjdEF0dGVtcHRzKys7XG4gICAgdGhpcy5jb25uZWN0KCk7XG4gIH1cblxuICBhc3luYyBfZ2V0VXJsKCkge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuX3VybDtcblxuICAgIGlmICh0eXBlb2YgdXJsID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG5cbiAgICAvLyBhc3N1bWUgdXJsIGlzIGEgZnVuY3Rpb25cbiAgICByZXR1cm4gYXdhaXQgdXJsKCk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICBpZiAodGhpcy5fY29ubmVjdGlvbiAmJiB0aGlzLl9zdGF0ZSAhPT0gUlRNQ2xpZW50U3RhdGUuQ0xPU0lORykge1xuICAgICAgdGhpcy5fc3RhdGUgPSBSVE1DbGllbnRTdGF0ZS5DTE9TSU5HO1xuICAgICAgdGhpcy5fZm9yY2VDbG9zZSA9IHRydWU7XG4gICAgICB0aGlzLl9jb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgX3NlbmQobWVzc2FnZSkge1xuICAgIGlmICh0aGlzLl9jb25uZWN0aW9uKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5fY29ubmVjdGlvbi5zZW5kKG1lc3NhZ2UpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgUlRNTm90Q29ubmVjdGVkRXJyb3IoXG4gICAgICAnQ2xpZW50IGN1cnJlbnRseSBub3QgY29ubmVjdGVkLCB0aGUgY3VycmVudCBzdGF0ZSBpczogJyArIHRoaXMuZ2V0U3RhdGUoKVxuICAgICk7XG4gIH1cblxuXG4gIGFzeW5jIHNlbmQobWVzc2FnZSwgdGltZW91dCkge1xuICAgIGlmICghdGltZW91dCB8fCB0aW1lb3V0IDwgMCkge1xuICAgICAgdGltZW91dCA9IEluZmluaXR5O1xuICAgIH1cblxuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKHRpbWVvdXQpKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5fc2VuZChtZXNzYWdlKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZW5kUHJvbWlzZSA9IHRoaXMuX3NlbmQobWVzc2FnZSk7XG4gICAgY29uc3QgdGltZW91dFByb21pc2UgPSB0aW1lb3V0RGVsYXkodGltZW91dCwgbWVzc2FnZSk7XG4gICAgcmV0dXJuIFByb21pc2UucmFjZShbc2VuZFByb21pc2UsIHRpbWVvdXRQcm9taXNlXSk7XG4gIH1cblxuICBfaGFuZGxlQ29ubmVjdGlvbk9wZW4gPSAoKSA9PiB7XG4gICAgdGhpcy5fc3RhdGUgPSBSVE1DbGllbnRTdGF0ZS5DT05ORUNURUQ7XG4gICAgdGhpcy5lbWl0KFJUTUNsaWVudEV2ZW50cy5PTkxJTkUpO1xuICB9O1xuXG4gIF9oYW5kbGVDb25uZWN0aW9uQ2xvc2UgPSAoKSA9PiB7XG4gICAgdGhpcy5fcmVtb3ZlQ29ubmVjdGlvbigpO1xuICAgIHRoaXMuZW1pdChSVE1DbGllbnRFdmVudHMuT0ZGTElORSk7XG4gICAgaWYgKHRoaXMuX2ZvcmNlQ2xvc2UpIHtcbiAgICAgIC8vIGNsaWVudCBjbG9zZSwgY2xvc2Ugbm9ybWFsbHlcbiAgICAgIHRoaXMuX3N0YXRlID0gUlRNQ2xpZW50U3RhdGUuQ0xPU0VEO1xuICAgICAgdGhpcy5lbWl0KFJUTUNsaWVudEV2ZW50cy5DTE9TRSk7XG4gICAgICB0aGlzLl9mb3JjZUNsb3NlID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNlcnZlciBjbG9zZSBvciBlcnJvciwgcmUtY29ubmVjdFxuICAgICAgdGhpcy5fcmVjb25uZWN0KCk7XG4gICAgfVxuICB9O1xuXG4gIF9oYW5kbGVDb25uZWN0aW9uRXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICB0aGlzLmVtaXQoUlRNQ2xpZW50RXZlbnRzLkVSUk9SLCBlcnJvcik7XG4gIH07XG5cbiAgX2hhbmRsZUNvbm5lY3Rpb25NZXNzYWdlID0gKG1lc3NhZ2UpID0+IHtcbiAgICB0aGlzLmVtaXQoUlRNQ2xpZW50RXZlbnRzLk1FU1NBR0UsIG1lc3NhZ2UpO1xuICB9O1xuXG4gIGdldFN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgfVxuXG4gIF9zZXRDb25uZWN0aW9uKGNvbm5lY3Rpb24pIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaW52YXJpYW50KFxuICAgICAgICAhdGhpcy5fY29ubmVjdGlvbixcbiAgICAgICAgJ1Nob3VsZCBub3Qgc2V0IGNvbm5lY3Rpb24gd2hlbiBjb25uZWN0aW9uIGFscmVhZHkgZXhpc3RzLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fY29ubmVjdGlvbkV2ZW50cy5mb3JFYWNoKChbbmFtZSwgaGFuZGxlcl0pID0+IHtcbiAgICAgIGNvbm5lY3Rpb24ub24obmFtZSwgaGFuZGxlcik7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9jb25uZWN0aW9uID0gY29ubmVjdGlvbjtcbiAgfVxuXG4gIF9yZW1vdmVDb25uZWN0aW9uKCkge1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLl9jb25uZWN0aW9uO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGludmFyaWFudChcbiAgICAgICAgY29ubmVjdGlvbixcbiAgICAgICAgJ0Nvbm5lY3Rpb24gbm90IHNldCBvciBhbHJlYWR5IHJlbW92ZWQuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jb25uZWN0aW9uRXZlbnRzLmZvckVhY2goKFtuYW1lLCBoYW5kbGVyXSkgPT4ge1xuICAgICAgY29ubmVjdGlvbi5yZW1vdmVMaXN0ZW5lcihuYW1lLCBoYW5kbGVyKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2Nvbm5lY3Rpb24gPSBudWxsO1xuICB9XG59XG5cbi8vIGV4cG9uZW50aWFsIGJhY2tvZmYsIDMwIHNlY29uZHMgbWF4XG5mdW5jdGlvbiBnZW5lcmF0ZUludGVydmFsKGF0dGVtcHRzKSB7XG4gIGNvbnN0IG1heEludGVydmFsID0gTWF0aC5taW4oMzAsIChNYXRoLnBvdygyLCBhdHRlbXB0cykgLSAxKSkgKiAxMDAwO1xuICByZXR1cm4gTWF0aC5yYW5kb20oKSAqIG1heEludGVydmFsO1xufVxuXG5hc3luYyBmdW5jdGlvbiB0aW1lb3V0RGVsYXkodGltZW91dCwgbWVzc2FnZSkge1xuICBhd2FpdCBkZWxheSh0aW1lb3V0KTtcbiAgdGhyb3cgbmV3IFJUTVRpbWVvdXRFcnJvcignUlRNIG1lc3NhZ2Ugc2VuZCB0aW1lb3V0LicsIG1lc3NhZ2UpO1xufVxuIl19 |
@@ -15,6 +15,2 @@ 'use strict'; | ||
var _WebSocket = require('./WebSocket'); | ||
var _WebSocket2 = _interopRequireDefault(_WebSocket); | ||
var _events = require('events'); | ||
@@ -78,5 +74,8 @@ | ||
function RTMConnection(url) { | ||
function RTMConnection(_ref) { | ||
var _this2 = this; | ||
var url = _ref.url, | ||
WebSocket = _ref.WebSocket; | ||
_classCallCheck(this, RTMConnection); | ||
@@ -146,3 +145,3 @@ | ||
_this._state = _RTMConnectionState2.default.INITIAL; | ||
_this._ws = new _WebSocket2.default(url); | ||
_this._ws = new WebSocket(url); | ||
_this._callbackMap = new Map(); | ||
@@ -219,2 +218,2 @@ | ||
module.exports = exports['default']; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9SVE1Db25uZWN0aW9uLmpzIl0sIm5hbWVzIjpbIlJUTUNvbm5lY3Rpb24iLCJ1cmwiLCJzdGF0ZSIsIl9oYW5kbGVPcGVuIiwiX3N0YXRlIiwiQ09OTkVDVEVEIiwiZW1pdCIsIk9QRU4iLCJfc3RhcnRMb29wIiwiX2hhbmRsZUNsb3NlIiwiQ0xPU0VEIiwiQ0xPU0UiLCJfaGFuZGxlTWVzc2FnZSIsImV2ZW50IiwibWVzc2FnZSIsIkpTT04iLCJwYXJzZSIsImRhdGEiLCJ0eXBlIiwiUE9ORyIsIk9LIiwiUkVQTFkiLCJfaGFuZGxlUmVwbHlNZXNzYWdlIiwiTUVTU0FHRSIsIl9oYW5kbGVFcnJvciIsImVycm9yIiwiRVJST1IiLCJfcGluZyIsIl9jdXJyZW50Q2FsbElkIiwiSU5JVElBTCIsIl93cyIsIl9jYWxsYmFja01hcCIsIk1hcCIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYWxsYmFja01hcCIsImNhbGxJZCIsImNhbGxfaWQiLCJoYXMiLCJjYWxsYmFjayIsImdldCIsImRlbGV0ZSIsIl9nZXROZXh0Q2FsbElkIiwiY2FsbElkTWFwIiwiUHJvbWlzZSIsInJlc29sdmUiLCJzZXQiLCJzZW5kIiwic3RyaW5naWZ5IiwiUElORyIsIkNMT1NJTkciLCJjbG9zZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7OztBQUNBOztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBdUJxQkEsYTs7O0FBSW5CLHlCQUFZQyxHQUFaLEVBQWlCO0FBQUE7O0FBQUE7O0FBQUE7O0FBQUEsVUFGakJDLEtBRWlCLEdBRlQsRUFFUzs7QUFBQSxVQWFqQkMsV0FiaUIsR0FhSCxZQUFNO0FBQ2xCLFlBQUtDLE1BQUwsR0FBYyw2QkFBbUJDLFNBQWpDO0FBQ0EsWUFBS0MsSUFBTCxDQUFVLDhCQUFvQkMsSUFBOUI7QUFDQSxZQUFLQyxVQUFMO0FBQ0QsS0FqQmdC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akMsT0FBZixDQUFkO0FBQ0QsT0FITSxDQUFQO0FBSUQ7Ozs0QkFFTztBQUNOLFdBQUtnQyxJQUFMLENBQVU7QUFDUjVCLGNBQU0sMEJBQWdCOEI7QUFEZCxPQUFWO0FBR0Q7Ozs0QkFTTztBQUNOLFdBQUs1QyxNQUFMLEdBQWMsNkJBQW1CNkMsT0FBakM7QUFDQSxXQUFLbkIsR0FBTCxDQUFTb0IsS0FBVDtBQUNEOzs7K0JBRVU7QUFDVCxhQUFPLEtBQUs5QyxNQUFaO0FBQ0Q7Ozs7OztrQkE1R2tCSixhIiwiZmlsZSI6IlJUTUNvbm5lY3Rpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgV2ViU29ja2V0IGZyb20gJy4vV2ViU29ja2V0JztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9ICBmcm9tICdldmVudHMnO1xuaW1wb3J0IFJUTUNvbm5lY3Rpb25TdGF0ZSBmcm9tICcuL1JUTUNvbm5lY3Rpb25TdGF0ZSc7XG5pbXBvcnQgUlRNQ29ubmVjdGlvbkV2ZW50cyBmcm9tICcuL1JUTUNvbm5lY3Rpb25FdmVudHMnO1xuaW1wb3J0IFJUTU1lc3NhZ2VUeXBlcyBmcm9tICcuL1JUTU1lc3NhZ2VUeXBlcyc7XG5pbXBvcnQgZGVsYXkgZnJvbSAnZGVsYXknO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSAnd2FybmluZyc7XG5cbi8qKlxuICogS2VlcCBhIFdlYlNvY2tldCBjb25uZWN0aW9uIHdpdGggc2VydmVyLCBoYW5kbGluZyBoZWFydGJlYXQgZXZlbnRzLFxuICogb21pdHRpbmcgb2Jzb2xldGUgbWVzc2FnZSB0eXBlcy5cbiAqXG4gKiBTdGF0ZSBkaWFncmFtOlxuICpcbiAqICAgIElOSVRJQUxcbiAqICAgICAgICtcbiAqICAgICAgIHxcbiAqICAgICAgIHxcbiAqICAgICAgIHZcbiAqICAgQ09OTkVDVEVEICstK1xuICogICAgICAgKyAgICAgICB8XG4gKiBjbGllbnR8ICAgICAgIHxcbiAqIGNsb3NlIHwgICAgICAgfCBzZXJ2ZXJcbiAqICAgICAgIHYgICAgICAgfCBjbG9zZS9cbiAqICAgIENMT1NJTkcgICAgfCBlcnJvclxuICogICAgICAgKyAgICAgICB8XG4gKiAgICAgICB8ICAgICAgIHxcbiAqICAgICAgIHwgICAgICAgfFxuICogICAgICAgdiAgICAgICB8XG4gKiAgICBDTE9TRUQgPC0tLStcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUlRNQ29ubmVjdGlvbiBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG5cbiAgc3RhdGUgPSB7fTtcblxuICBjb25zdHJ1Y3Rvcih1cmwpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2N1cnJlbnRDYWxsSWQgPSAwO1xuICAgIHRoaXMuX3N0YXRlID0gUlRNQ29ubmVjdGlvblN0YXRlLklOSVRJQUw7XG4gICAgdGhpcy5fd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7XG4gICAgdGhpcy5fY2FsbGJhY2tNYXAgPSBuZXcgTWFwKCk7XG5cbiAgICB0aGlzLl93cy5hZGRFdmVudExpc3RlbmVyKCdvcGVuJywgdGhpcy5faGFuZGxlT3Blbik7XG4gICAgdGhpcy5fd3MuYWRkRXZlbnRMaXN0ZW5lcignY2xvc2UnLCB0aGlzLl9oYW5kbGVDbG9zZSk7XG4gICAgdGhpcy5fd3MuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMuX2hhbmRsZU1lc3NhZ2UpO1xuICAgIHRoaXMuX3dzLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgdGhpcy5faGFuZGxlRXJyb3IpO1xuICB9XG5cbiAgX2hhbmRsZU9wZW4gPSAoKSA9PiB7XG4gICAgdGhpcy5fc3RhdGUgPSBSVE1Db25uZWN0aW9uU3RhdGUuQ09OTkVDVEVEO1xuICAgIHRoaXMuZW1pdChSVE1Db25uZWN0aW9uRXZlbnRzLk9QRU4pO1xuICAgIHRoaXMuX3N0YXJ0TG9vcCgpO1xuICB9O1xuXG4gIF9oYW5kbGVDbG9zZSA9ICgpID0+IHtcbiAgICB0aGlzLl9zdGF0ZSA9IFJUTUNvbm5lY3Rpb25TdGF0ZS5DTE9TRUQ7XG4gICAgdGhpcy5lbWl0KFJUTUNvbm5lY3Rpb25FdmVudHMuQ0xPU0UpO1xuICB9O1xuXG4gIF9oYW5kbGVNZXNzYWdlID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgbWVzc2FnZSA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XG4gICAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICAgIGNhc2UgUlRNTWVzc2FnZVR5cGVzLlBPTkc6XG4gICAgICBjYXNlIFJUTU1lc3NhZ2VUeXBlcy5PSzpcbiAgICAgICAgLy8gaWdub3JlIGRlcHJlY2F0ZWQgZXZlbnRzXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBSVE1NZXNzYWdlVHlwZXMuUkVQTFk6XG4gICAgICAgIHRoaXMuX2hhbmRsZVJlcGx5TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmVtaXQoUlRNQ29ubmVjdGlvbkV2ZW50cy5NRVNTQUdFLCBtZXNzYWdlKTtcbiAgICB9XG4gIH07XG5cbiAgX2hhbmRsZVJlcGx5TWVzc2FnZShtZXNzYWdlKSB7XG4gICAgY29uc3QgY2FsbGJhY2tNYXAgPSB0aGlzLl9jYWxsYmFja01hcDtcbiAgICBjb25zdCBjYWxsSWQgPSBtZXNzYWdlLmNhbGxfaWQ7XG5cbiAgICB3YXJuaW5nKFxuICAgICAgY2FsbGJhY2tNYXAuaGFzKGNhbGxJZCksXG4gICAgICAnQ2FsbCBpZCByZXBsaWVkIHdpdGhvdXQgc2VuZGluZzogJXMnLFxuICAgICAgY2FsbElkXG4gICAgKTtcblxuICAgIGNvbnN0IGNhbGxiYWNrID0gY2FsbGJhY2tNYXAuZ2V0KGNhbGxJZCk7XG4gICAgY2FsbGJhY2tNYXAuZGVsZXRlKGNhbGxJZCk7XG4gICAgY2FsbGJhY2sobWVzc2FnZSk7XG4gIH1cblxuICBfaGFuZGxlRXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICB0aGlzLmVtaXQoUlRNQ29ubmVjdGlvbkV2ZW50cy5FUlJPUiwgZXJyb3IpO1xuICB9O1xuXG4gIF9nZXROZXh0Q2FsbElkKCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50Q2FsbElkKys7XG4gIH1cblxuICBzZW5kKG1lc3NhZ2UpIHtcbiAgICBpZiAoIW1lc3NhZ2UuY2FsbF9pZCkge1xuICAgICAgbWVzc2FnZSA9IHtcbiAgICAgICAgLi4ubWVzc2FnZSxcbiAgICAgICAgY2FsbF9pZDogdGhpcy5fZ2V0TmV4dENhbGxJZCgpXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGNhbGxJZE1hcCA9IHRoaXMuX2NhbGxiYWNrTWFwO1xuICAgIGNvbnN0IGNhbGxJZCA9IG1lc3NhZ2UuY2FsbF9pZDtcbiAgICB3YXJuaW5nKFxuICAgICAgIWNhbGxJZE1hcC5oYXMoY2FsbElkKSxcbiAgICAgICdEdXBsaWNhdGUgY2FsbCBpZCAlcycsXG4gICAgICBjYWxsSWRcbiAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBjYWxsSWRNYXAuc2V0KGNhbGxJZCwgcmVzb2x2ZSk7XG4gICAgICB0aGlzLl93cy5zZW5kKEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9waW5nKCkge1xuICAgIHRoaXMuc2VuZCh7XG4gICAgICB0eXBlOiBSVE1NZXNzYWdlVHlwZXMuUElOR1xuICAgIH0pO1xuICB9XG5cbiAgX3N0YXJ0TG9vcCA9IGFzeW5jICgpID0+IHtcbiAgICB3aGlsZSAodGhpcy5fc3RhdGUgPT09IFJUTUNvbm5lY3Rpb25TdGF0ZS5DT05ORUNURUQpIHtcbiAgICAgIHRoaXMuX3BpbmcoKTtcbiAgICAgIGF3YWl0IGRlbGF5KDUwMDApO1xuICAgIH1cbiAgfTtcblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLl9zdGF0ZSA9IFJUTUNvbm5lY3Rpb25TdGF0ZS5DTE9TSU5HO1xuICAgIHRoaXMuX3dzLmNsb3NlKCk7XG4gIH1cblxuICBnZXRTdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGU7XG4gIH1cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9SVE1Db25uZWN0aW9uLmpzIl0sIm5hbWVzIjpbIlJUTUNvbm5lY3Rpb24iLCJ1cmwiLCJXZWJTb2NrZXQiLCJzdGF0ZSIsIl9oYW5kbGVPcGVuIiwiX3N0YXRlIiwiQ09OTkVDVEVEIiwiZW1pdCIsIk9QRU4iLCJfc3RhcnRMb29wIiwiX2hhbmRsZUNsb3NlIiwiQ0xPU0VEIiwiQ0xPU0UiLCJfaGFuZGxlTWVzc2FnZSIsImV2ZW50IiwibWVzc2FnZSIsIkpTT04iLCJwYXJzZSIsImRhdGEiLCJ0eXBlIiwiUE9ORyIsIk9LIiwiUkVQTFkiLCJfaGFuZGxlUmVwbHlNZXNzYWdlIiwiTUVTU0FHRSIsIl9oYW5kbGVFcnJvciIsImVycm9yIiwiRVJST1IiLCJfcGluZyIsIl9jdXJyZW50Q2FsbElkIiwiSU5JVElBTCIsIl93cyIsIl9jYWxsYmFja01hcCIsIk1hcCIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYWxsYmFja01hcCIsImNhbGxJZCIsImNhbGxfaWQiLCJoYXMiLCJjYWxsYmFjayIsImdldCIsImRlbGV0ZSIsIl9nZXROZXh0Q2FsbElkIiwiY2FsbElkTWFwIiwiUHJvbWlzZSIsInJlc29sdmUiLCJzZXQiLCJzZW5kIiwic3RyaW5naWZ5IiwiUElORyIsIkNMT1NJTkciLCJjbG9zZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7Ozs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXVCcUJBLGE7OztBQUluQiwrQkFBZ0M7QUFBQTs7QUFBQSxRQUFsQkMsR0FBa0IsUUFBbEJBLEdBQWtCO0FBQUEsUUFBYkMsU0FBYSxRQUFiQSxTQUFhOztBQUFBOztBQUFBOztBQUFBLFVBRmhDQyxLQUVnQyxHQUZ4QixFQUV3Qjs7QUFBQSxVQWFoQ0MsV0FiZ0MsR0FhbEIsWUFBTTtBQUNsQixZQUFLQyxNQUFMLEdBQWMsNkJBQW1CQyxTQUFqQztBQUNBLFlB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VixNQUFkLEVBQXNCUyxPQUF0QjtBQUNBLGVBQUtkLEdBQUwsQ0FBU2dCLElBQVQsQ0FBYy9CLEtBQUtnQyxTQUFMLENBQWVqQyxPQUFmLENBQWQ7QUFDRCxPQUhNLENBQVA7QUFJRDs7OzRCQUVPO0FBQ04sV0FBS2dDLElBQUwsQ0FBVTtBQUNSNUIsY0FBTSwwQkFBZ0I4QjtBQURkLE9BQVY7QUFHRDs7OzRCQVNPO0FBQ04sV0FBSzVDLE1BQUwsR0FBYyw2QkFBbUI2QyxPQUFqQztBQUNBLFdBQUtuQixHQUFMLENBQVNvQixLQUFUO0FBQ0Q7OzsrQkFFVTtBQUNULGFBQU8sS0FBSzlDLE1BQVo7QUFDRDs7Ozs7O2tCQTVHa0JMLGEiLCJmaWxlIjoiUlRNQ29ubmVjdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9ICBmcm9tICdldmVudHMnO1xuaW1wb3J0IFJUTUNvbm5lY3Rpb25TdGF0ZSBmcm9tICcuL1JUTUNvbm5lY3Rpb25TdGF0ZSc7XG5pbXBvcnQgUlRNQ29ubmVjdGlvbkV2ZW50cyBmcm9tICcuL1JUTUNvbm5lY3Rpb25FdmVudHMnO1xuaW1wb3J0IFJUTU1lc3NhZ2VUeXBlcyBmcm9tICcuL1JUTU1lc3NhZ2VUeXBlcyc7XG5pbXBvcnQgZGVsYXkgZnJvbSAnZGVsYXknO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSAnd2FybmluZyc7XG5cbi8qKlxuICogS2VlcCBhIFdlYlNvY2tldCBjb25uZWN0aW9uIHdpdGggc2VydmVyLCBoYW5kbGluZyBoZWFydGJlYXQgZXZlbnRzLFxuICogb21pdHRpbmcgb2Jzb2xldGUgbWVzc2FnZSB0eXBlcy5cbiAqXG4gKiBTdGF0ZSBkaWFncmFtOlxuICpcbiAqICAgIElOSVRJQUxcbiAqICAgICAgICtcbiAqICAgICAgIHxcbiAqICAgICAgIHxcbiAqICAgICAgIHZcbiAqICAgQ09OTkVDVEVEICstK1xuICogICAgICAgKyAgICAgICB8XG4gKiBjbGllbnR8ICAgICAgIHxcbiAqIGNsb3NlIHwgICAgICAgfCBzZXJ2ZXJcbiAqICAgICAgIHYgICAgICAgfCBjbG9zZS9cbiAqICAgIENMT1NJTkcgICAgfCBlcnJvclxuICogICAgICAgKyAgICAgICB8XG4gKiAgICAgICB8ICAgICAgIHxcbiAqICAgICAgIHwgICAgICAgfFxuICogICAgICAgdiAgICAgICB8XG4gKiAgICBDTE9TRUQgPC0tLStcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUlRNQ29ubmVjdGlvbiBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG5cbiAgc3RhdGUgPSB7fTtcblxuICBjb25zdHJ1Y3Rvcih7IHVybCwgV2ViU29ja2V0IH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2N1cnJlbnRDYWxsSWQgPSAwO1xuICAgIHRoaXMuX3N0YXRlID0gUlRNQ29ubmVjdGlvblN0YXRlLklOSVRJQUw7XG4gICAgdGhpcy5fd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7XG4gICAgdGhpcy5fY2FsbGJhY2tNYXAgPSBuZXcgTWFwKCk7XG5cbiAgICB0aGlzLl93cy5hZGRFdmVudExpc3RlbmVyKCdvcGVuJywgdGhpcy5faGFuZGxlT3Blbik7XG4gICAgdGhpcy5fd3MuYWRkRXZlbnRMaXN0ZW5lcignY2xvc2UnLCB0aGlzLl9oYW5kbGVDbG9zZSk7XG4gICAgdGhpcy5fd3MuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMuX2hhbmRsZU1lc3NhZ2UpO1xuICAgIHRoaXMuX3dzLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgdGhpcy5faGFuZGxlRXJyb3IpO1xuICB9XG5cbiAgX2hhbmRsZU9wZW4gPSAoKSA9PiB7XG4gICAgdGhpcy5fc3RhdGUgPSBSVE1Db25uZWN0aW9uU3RhdGUuQ09OTkVDVEVEO1xuICAgIHRoaXMuZW1pdChSVE1Db25uZWN0aW9uRXZlbnRzLk9QRU4pO1xuICAgIHRoaXMuX3N0YXJ0TG9vcCgpO1xuICB9O1xuXG4gIF9oYW5kbGVDbG9zZSA9ICgpID0+IHtcbiAgICB0aGlzLl9zdGF0ZSA9IFJUTUNvbm5lY3Rpb25TdGF0ZS5DTE9TRUQ7XG4gICAgdGhpcy5lbWl0KFJUTUNvbm5lY3Rpb25FdmVudHMuQ0xPU0UpO1xuICB9O1xuXG4gIF9oYW5kbGVNZXNzYWdlID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgbWVzc2FnZSA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XG4gICAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICAgIGNhc2UgUlRNTWVzc2FnZVR5cGVzLlBPTkc6XG4gICAgICBjYXNlIFJUTU1lc3NhZ2VUeXBlcy5PSzpcbiAgICAgICAgLy8gaWdub3JlIGRlcHJlY2F0ZWQgZXZlbnRzXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBSVE1NZXNzYWdlVHlwZXMuUkVQTFk6XG4gICAgICAgIHRoaXMuX2hhbmRsZVJlcGx5TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmVtaXQoUlRNQ29ubmVjdGlvbkV2ZW50cy5NRVNTQUdFLCBtZXNzYWdlKTtcbiAgICB9XG4gIH07XG5cbiAgX2hhbmRsZVJlcGx5TWVzc2FnZShtZXNzYWdlKSB7XG4gICAgY29uc3QgY2FsbGJhY2tNYXAgPSB0aGlzLl9jYWxsYmFja01hcDtcbiAgICBjb25zdCBjYWxsSWQgPSBtZXNzYWdlLmNhbGxfaWQ7XG5cbiAgICB3YXJuaW5nKFxuICAgICAgY2FsbGJhY2tNYXAuaGFzKGNhbGxJZCksXG4gICAgICAnQ2FsbCBpZCByZXBsaWVkIHdpdGhvdXQgc2VuZGluZzogJXMnLFxuICAgICAgY2FsbElkXG4gICAgKTtcblxuICAgIGNvbnN0IGNhbGxiYWNrID0gY2FsbGJhY2tNYXAuZ2V0KGNhbGxJZCk7XG4gICAgY2FsbGJhY2tNYXAuZGVsZXRlKGNhbGxJZCk7XG4gICAgY2FsbGJhY2sobWVzc2FnZSk7XG4gIH1cblxuICBfaGFuZGxlRXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICB0aGlzLmVtaXQoUlRNQ29ubmVjdGlvbkV2ZW50cy5FUlJPUiwgZXJyb3IpO1xuICB9O1xuXG4gIF9nZXROZXh0Q2FsbElkKCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50Q2FsbElkKys7XG4gIH1cblxuICBzZW5kKG1lc3NhZ2UpIHtcbiAgICBpZiAoIW1lc3NhZ2UuY2FsbF9pZCkge1xuICAgICAgbWVzc2FnZSA9IHtcbiAgICAgICAgLi4ubWVzc2FnZSxcbiAgICAgICAgY2FsbF9pZDogdGhpcy5fZ2V0TmV4dENhbGxJZCgpXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGNhbGxJZE1hcCA9IHRoaXMuX2NhbGxiYWNrTWFwO1xuICAgIGNvbnN0IGNhbGxJZCA9IG1lc3NhZ2UuY2FsbF9pZDtcbiAgICB3YXJuaW5nKFxuICAgICAgIWNhbGxJZE1hcC5oYXMoY2FsbElkKSxcbiAgICAgICdEdXBsaWNhdGUgY2FsbCBpZCAlcycsXG4gICAgICBjYWxsSWRcbiAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBjYWxsSWRNYXAuc2V0KGNhbGxJZCwgcmVzb2x2ZSk7XG4gICAgICB0aGlzLl93cy5zZW5kKEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9waW5nKCkge1xuICAgIHRoaXMuc2VuZCh7XG4gICAgICB0eXBlOiBSVE1NZXNzYWdlVHlwZXMuUElOR1xuICAgIH0pO1xuICB9XG5cbiAgX3N0YXJ0TG9vcCA9IGFzeW5jICgpID0+IHtcbiAgICB3aGlsZSAodGhpcy5fc3RhdGUgPT09IFJUTUNvbm5lY3Rpb25TdGF0ZS5DT05ORUNURUQpIHtcbiAgICAgIHRoaXMuX3BpbmcoKTtcbiAgICAgIGF3YWl0IGRlbGF5KDUwMDApO1xuICAgIH1cbiAgfTtcblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLl9zdGF0ZSA9IFJUTUNvbm5lY3Rpb25TdGF0ZS5DTE9TSU5HO1xuICAgIHRoaXMuX3dzLmNsb3NlKCk7XG4gIH1cblxuICBnZXRTdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGU7XG4gIH1cbn1cbiJdfQ== |
56199
4.35%5
-28.57%621
6.7%9
-10%- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed