diff --git a/CHANGELOG.md b/CHANGELOG.md index 8170d585..46cc487f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +2.1.6 +===== + +* fix subscribe after clearing connection state, see [#83](https://github.com/centrifugal/centrifuge-js/issues/83) for details + 2.1.5 ===== diff --git a/dist/centrifuge.js b/dist/centrifuge.js index 251dd263..bda43c76 100644 --- a/dist/centrifuge.js +++ b/dist/centrifuge.js @@ -428,7 +428,9 @@ var Centrifuge = exports.Centrifuge = function (_EventEmitter) { sub._triggerUnsubscribe(); sub._recover = true; } - sub._setSubscribing(); + if (sub._shouldResubscribe()) { + sub._setSubscribing(); + } } else { sub._setUnsubscribed(); } diff --git a/dist/centrifuge.js.map b/dist/centrifuge.js.map index 170a8c8b..c228d4f1 100644 --- a/dist/centrifuge.js.map +++ b/dist/centrifuge.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 15676cf76596a7b53ff3","webpack:///./src/centrifuge.js","webpack:///./src/subscription.js","webpack:///./src/json.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/index.js","webpack:///./node_modules/events/events.js","webpack:///./src/utils.js"],"names":["_errorTimeout","_errorConnectionClosed","Centrifuge","url","options","_url","_sockjs","_isSockjs","_binary","_methodType","_pushType","_encoder","_decoder","_status","_reconnect","_reconnecting","_transport","_transportName","_transportClosed","_messageId","_clientID","_refreshRequired","_subs","_lastSeq","_lastGen","_lastEpoch","_messages","_isBatching","_isSubscribeBatching","_privateChannels","_numRefreshFailed","_refreshTimeout","_pingTimeout","_pongTimeout","_subRefreshTimeouts","_retries","_callbacks","_latency","_latencyStart","_connectData","_token","_xhrID","_xhrs","_config","debug","sockjs","promise","minRetry","maxRetry","timeout","ping","pingInterval","pongWaitTimeout","privateChannelPrefix","onTransportClose","sockjsServer","sockjsTransports","refreshEndpoint","refreshHeaders","refreshParams","refreshData","refreshAttempts","refreshInterval","onRefreshFailed","onRefresh","subscribeEndpoint","subscribeHeaders","subscribeParams","subRefreshInterval","onPrivateSubscribe","_configure","token","data","params","headers","callback","query","_debug","JSON","stringify","xhr","global","XMLHttpRequest","ActiveXObject","i","hasOwnProperty","length","encodeURIComponent","open","withCredentials","setRequestHeader","headerName","onreadystatechange","readyState","status","parsed","parse","responseText","e","error","_log","setTimeout","send","arguments","WebSocket","format","_formatOverride","Error","configuration","Object","assign","indexOf","_setFormat","SockJS","newStatus","interval","xhrID","abort","reconnect","_stopPing","id","callbacks","clearTimeout","errback","_createErrorObject","channel","sub","_isSuccess","_triggerUnsubscribe","_recover","_setSubscribing","_setUnsubscribed","_abortInflightXHRs","_clearSubRefreshTimeout","transport","OPEN","commands","_isTransportOpen","command","encodeCommands","sockjsOptions","transports","server","_websocketSupported","binaryType","onopen","onheartbeat","_restartPing","msg","Date","_call","then","_connectResponse","decodeCommandResult","CONNECT","resolveCtx","result","next","err","rejectCtx","code","_disconnect","onerror","onclose","reason","needReconnect","closeEvent","advice","event","_getRetryInterval","_refresh","_connect","onmessage","_dataReceived","method","RPC","isConnected","Promise","reject","SEND","sent","_transportSend","resolve","PUBLISH","replies","decodeReplies","p","_dispatchReply","_addMessage","_registerCall","_setStatus","_setupTransport","shouldReconnect","_isDisconnected","_clearConnectedState","emit","close","_refreshFailed","clientID","_newXHRID","cb","resp","jitter","Math","round","random","max","REFRESH","_refreshResponse","_refreshError","context","_ajax","expires","client","_getTTLMilliseconds","ttl","undefined","channelsData","channels","channelData","SUB_REFRESH","_getSub","_subRefreshResponse","_subRefreshError","subRefreshTimeout","_subRefresh","isResubscribe","_setNew","SUBSCRIBE","startSubscribeBatching","_subscribe","stopSubscribeBatching","recover","_needRecover","seq","_getLastSeq","gen","_getLastGen","epoch","_getLastEpoch","_subscribeResponse","_subscribeError","UNSUBSCRIBE","min","wasReconnecting","_resetRetry","getTime","startBatching","_shouldResubscribe","stopBatching","_startPing","ctx","latency","_isSubscribing","message","_setSubscribeError","recovered","_setSubscribeSuccess","pubs","publications","reverse","_handlePublication","recoverable","_recoverable","reply","join","leave","unsub","unsubscribe","resubscribe","subscribe","pub","push","decodePush","type","PUBLICATION","decodePushData","MESSAGE","_handleMessage","JOIN","_handleJoin","LEAVE","_handleLeave","UNSUB","_handleUnsub","_handleReply","_handlePush","messages","slice","PING","_pingResponse","lastSeq","lastGen","lastEpoch","errObject","_nextMessageId","_isConnected","_ping","_flush","authChannels","batch","events","currentSub","_setEvents","_isUnsubscribed","_STATE_NEW","_STATE_SUBSCRIBING","_STATE_SUCCESS","_STATE_ERROR","_STATE_UNSUBSCRIBED","Subscription","centrifuge","_centrifuge","_error","_isResubscribe","_ready","_subscriptionPromise","_noResubscribe","_initializePromise","_promises","on","errContext","_resolve","value","_reject","prototype","toString","call","knownEvents","l","ev","successContext","_getSubscribeSuccessContext","to","_getSubscribeErrorContext","noResubscribe","needTrigger","subscribeErrorContext","_unsubscribe","methodCallPromise","subPromise","_isError","res","rej","_methodCall","PRESENCE","PRESENCE_STATS","HISTORY","JsonMethodType","JsonPushType","JsonEncoder","encodedCommands","JsonDecoder","encodedReplies","split","methodType","pushType","startsWith","isFunction","log","backoff","errorExists","prefix","lastIndexOf","level","args","console","logger","apply","step","pow","floor"],"mappings":"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AOA,IAAP;AACD;;;;;;;;;;;AC7DH;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;;;;ACpBA;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;QC7SgB6R,U,GAAAA,U;QAIAC,U,GAAAA,U;QAOAC,G,GAAAA,G;QAUAC,O,GAAAA,O;QAOAC,W,GAAAA,W;AA5BT,SAASJ,UAAT,CAAoBlC,KAApB,EAA2BuC,MAA3B,EAAmC;AACxC,SAAOvC,MAAMwC,WAAN,CAAkBD,MAAlB,EAA0B,CAA1B,MAAiC,CAAxC;AACD;;AAEM,SAASJ,UAAT,CAAoBnC,KAApB,EAA2B;AAChC,MAAIA,UAAU3G,SAAV,IAAuB2G,UAAU,IAArC,EAA2C;AACzC,WAAO,KAAP;AACD;AACD,SAAO,OAAOA,KAAP,KAAiB,UAAxB;AACD;;AAEM,SAASoC,GAAT,CAAaK,KAAb,EAAoBC,IAApB,EAA0B;AAC/B,MAAI5R,OAAO6R,OAAX,EAAoB;AAClB,QAAMC,SAAS9R,OAAO6R,OAAP,CAAeF,KAAf,CAAf;;AAEA,QAAIN,WAAWS,MAAX,CAAJ,EAAwB;AACtBA,aAAOC,KAAP,CAAa/R,OAAO6R,OAApB,EAA6BD,IAA7B;AACD;AACF;AACF;;AAEM,SAASL,OAAT,CAAiBS,IAAjB,EAAuB9H,GAAvB,EAA4BrC,GAA5B,EAAiC;AACtC,MAAMJ,SAAS,MAAMC,KAAKE,MAAL,EAArB;AACA,MAAM1F,WAAWwF,KAAKwC,GAAL,CAASrC,GAAT,EAAcqC,MAAMxC,KAAKuK,GAAL,CAAS,CAAT,EAAYD,OAAO,CAAnB,CAApB,CAAjB;;AAEA,SAAOtK,KAAKwK,KAAL,CAAW,CAAC,IAAIzK,MAAL,IAAevF,QAA1B,CAAP;AACD;;AAEM,SAASsP,WAAT,CAAqBjS,IAArB,EAA2B;AAChC,SAAO,WAAWA,IAAX,IAAmBA,KAAK2B,KAAL,KAAe,IAAzC;AACD,E","file":"centrifuge.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Centrifuge\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Centrifuge\"] = factory();\n\telse\n\t\troot[\"Centrifuge\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 31);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 15676cf76596a7b53ff3","import EventEmitter from 'events';\nimport Subscription from './subscription';\n\nimport {\n JsonEncoder,\n JsonDecoder,\n JsonMethodType,\n JsonPushType\n} from './json';\n\nimport {\n isFunction,\n log,\n startsWith,\n errorExists,\n backoff\n} from './utils';\n\nconst _errorTimeout = 'timeout';\nconst _errorConnectionClosed = 'connection closed';\n\nexport class Centrifuge extends EventEmitter {\n\n constructor(url, options) {\n super();\n this._url = url;\n this._sockjs = null;\n this._isSockjs = false;\n this._binary = false;\n this._methodType = null;\n this._pushType = null;\n this._encoder = null;\n this._decoder = null;\n this._status = 'disconnected';\n this._reconnect = true;\n this._reconnecting = false;\n this._transport = null;\n this._transportName = null;\n this._transportClosed = true;\n this._messageId = 0;\n this._clientID = null;\n this._refreshRequired = false;\n this._subs = {};\n this._lastSeq = {};\n this._lastGen = {};\n this._lastEpoch = {};\n this._messages = [];\n this._isBatching = false;\n this._isSubscribeBatching = false;\n this._privateChannels = {};\n this._numRefreshFailed = 0;\n this._refreshTimeout = null;\n this._pingTimeout = null;\n this._pongTimeout = null;\n this._subRefreshTimeouts = {};\n this._retries = 0;\n this._callbacks = {};\n this._latency = null;\n this._latencyStart = null;\n this._connectData = null;\n this._token = null;\n this._xhrID = 0;\n this._xhrs = {};\n this._config = {\n debug: false,\n sockjs: null,\n promise: null,\n minRetry: 1000,\n maxRetry: 20000,\n timeout: 5000,\n ping: true,\n pingInterval: 25000,\n pongWaitTimeout: 5000,\n privateChannelPrefix: '$',\n onTransportClose: null,\n sockjsServer: null,\n sockjsTransports: [\n 'websocket',\n 'xdr-streaming',\n 'xhr-streaming',\n 'eventsource',\n 'iframe-eventsource',\n 'iframe-htmlfile',\n 'xdr-polling',\n 'xhr-polling',\n 'iframe-xhr-polling',\n 'jsonp-polling'\n ],\n refreshEndpoint: '/centrifuge/refresh',\n refreshHeaders: {},\n refreshParams: {},\n refreshData: {},\n refreshAttempts: null,\n refreshInterval: 1000,\n onRefreshFailed: null,\n onRefresh: null,\n subscribeEndpoint: '/centrifuge/subscribe',\n subscribeHeaders: {},\n subscribeParams: {},\n subRefreshInterval: 1000,\n onPrivateSubscribe: null\n };\n this._configure(options);\n }\n\n setToken(token) {\n this._token = token;\n }\n\n setConnectData(data) {\n this._connectData = data;\n }\n\n _ajax(url, params, headers, data, callback) {\n let query = '';\n this._debug('sending AJAX request to', url, 'with data', JSON.stringify(data));\n\n const xhr = (global.XMLHttpRequest ? new global.XMLHttpRequest() : new global.ActiveXObject('Microsoft.XMLHTTP'));\n\n for (const i in params) {\n if (params.hasOwnProperty(i)) {\n if (query.length > 0) {\n query += '&';\n }\n query += encodeURIComponent(i) + '=' + encodeURIComponent(params[i]);\n }\n }\n if (query.length > 0) {\n query = '?' + query;\n }\n xhr.open('POST', url + query, true);\n if ('withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr.setRequestHeader('Content-Type', 'application/json');\n for (const headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n xhr.setRequestHeader(headerName, headers[headerName]);\n }\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n let data, parsed = false;\n try {\n data = JSON.parse(xhr.responseText);\n parsed = true;\n } catch (e) {\n callback({\n error: 'Invalid JSON. Data was: ' + xhr.responseText,\n status: 200,\n data: null\n });\n }\n if (parsed) { // prevents double execution.\n callback({\n data: data,\n status: 200\n });\n }\n } else {\n this._log('wrong status code in AJAX response', xhr.status);\n callback({\n status: xhr.status,\n data: null\n });\n }\n }\n };\n setTimeout(() => xhr.send(JSON.stringify(data)), 20);\n return xhr;\n };\n\n _log() {\n log('info', arguments);\n };\n\n _debug() {\n if (this._config.debug === true) {\n log('debug', arguments);\n }\n };\n\n _websocketSupported() {\n return !(typeof WebSocket !== 'function' && typeof WebSocket !== 'object');\n };\n\n _setFormat(format) {\n if (this._formatOverride(format)) {\n return;\n }\n if (format === 'protobuf') {\n throw new Error('not implemented by JSON only Centrifuge client – use client with Protobuf');\n }\n this._binary = false;\n this._methodType = JsonMethodType;\n this._pushType = JsonPushType;\n this._encoder = new JsonEncoder();\n this._decoder = new JsonDecoder();\n }\n\n _formatOverride(format) {\n return false;\n }\n\n _configure(configuration) {\n if (!('Promise' in global)) {\n throw new Error('Promise polyfill required');\n }\n\n Object.assign(this._config, configuration || {});\n this._debug('centrifuge config', this._config);\n\n if (!this._url) {\n throw new Error('url required');\n }\n\n if (startsWith(this._url, 'ws') && this._url.indexOf('format=protobuf') > -1) {\n this._setFormat('protobuf');\n } else {\n this._setFormat('json');\n }\n\n if (startsWith(this._url, 'http')) {\n this._debug('client will try to connect to SockJS endpoint');\n if (this._config.sockjs !== null) {\n this._debug('SockJS explicitly provided in options');\n this._sockjs = this._config.sockjs;\n } else {\n if (typeof global.SockJS === 'undefined') {\n throw new Error('SockJS not found, use ws:// in url or include SockJS');\n }\n this._debug('use globally defined SockJS');\n this._sockjs = global.SockJS;\n }\n } else {\n this._debug('client will connect to websocket endpoint');\n }\n };\n\n _setStatus(newStatus) {\n if (this._status !== newStatus) {\n this._debug('Status', this._status, '->', newStatus);\n this._status = newStatus;\n }\n };\n\n _isDisconnected() {\n return this._status === 'disconnected';\n };\n\n _isConnecting() {\n return this._status === 'connecting';\n };\n\n _isConnected() {\n return this._status === 'connected';\n };\n\n _nextMessageId() {\n return ++this._messageId;\n };\n\n _resetRetry() {\n this._debug('reset retries count to 0');\n this._retries = 0;\n };\n\n _getRetryInterval() {\n const interval = backoff(this._retries, this._config.minRetry, this._config.maxRetry);\n\n this._retries += 1;\n return interval;\n };\n\n _abortInflightXHRs() {\n for (const xhrID in this._xhrs) {\n try {\n this._xhrs[xhrID].abort();\n } catch (e) {\n this._debug('error aborting xhr', e);\n }\n delete this._xhrs[xhrID];\n }\n };\n\n _clearConnectedState(reconnect) {\n this._clientID = null;\n this._stopPing();\n\n // fire errbacks of registered outgoing calls.\n for (const id in this._callbacks) {\n if (this._callbacks.hasOwnProperty(id)) {\n const callbacks = this._callbacks[id];\n clearTimeout(callbacks.timeout);\n const errback = callbacks.errback;\n if (!errback) {\n continue;\n }\n errback({error: this._createErrorObject('disconnected')});\n }\n }\n this._callbacks = {};\n\n // fire unsubscribe events\n for (const channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n const sub = this._subs[channel];\n\n if (reconnect) {\n if (sub._isSuccess()) {\n sub._triggerUnsubscribe();\n sub._recover = true;\n }\n sub._setSubscribing();\n } else {\n sub._setUnsubscribed();\n }\n }\n }\n\n this._abortInflightXHRs();\n\n // clear refresh timer\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n // clear sub refresh timers\n for (const channel in this._subRefreshTimeouts) {\n if (this._subRefreshTimeouts.hasOwnProperty(channel) && this._subRefreshTimeouts[channel]) {\n this._clearSubRefreshTimeout(channel);\n }\n }\n this._subRefreshTimeouts = {};\n\n if (!this._reconnect) {\n // completely clear subscriptions\n this._subs = {};\n }\n };\n\n _isTransportOpen() {\n if (this._isSockjs) {\n return this._transport &&\n this._transport.transport &&\n this._transport.transport.readyState === this._transport.transport.OPEN;\n }\n return this._transport && this._transport.readyState === this._transport.OPEN;\n };\n\n _transportSend(commands) {\n if (!commands.length) {\n return true;\n }\n\n if (!this._isTransportOpen()) {\n // resolve pending commands with error if transport is not open\n for (let command in commands) {\n let id = command.id;\n if (!(id in this._callbacks)) {\n continue;\n }\n const callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n const errback = callbacks.errback;\n errback({error: this._createErrorObject(_errorConnectionClosed, 0)});\n }\n return false;\n }\n this._transport.send(this._encoder.encodeCommands(commands));\n return true;\n }\n\n _setupTransport() {\n this._isSockjs = false;\n\n // detect transport to use - SockJS or Websocket\n if (this._sockjs !== null) {\n const sockjsOptions = {\n transports: this._config.sockjsTransports\n };\n\n if (this._config.sockjsServer !== null) {\n sockjsOptions.server = this._config.sockjsServer;\n }\n this._isSockjs = true;\n this._transport = new this._sockjs(this._url, null, sockjsOptions);\n } else {\n if (!this._websocketSupported()) {\n this._debug('No Websocket support and no SockJS configured, can not connect');\n return;\n }\n this._transport = new WebSocket(this._url);\n if (this._binary === true) {\n this._transport.binaryType = 'arraybuffer';\n }\n }\n\n this._transport.onopen = () => {\n this._transportClosed = false;\n\n if (this._isSockjs) {\n this._transportName = 'sockjs-' + this._transport.transport;\n this._transport.onheartbeat = () => this._restartPing();\n } else {\n this._transportName = 'websocket';\n }\n\n // Can omit method here due to zero value.\n const msg = {\n // method: this._methodType.CONNECT\n };\n\n if (this._token || this._connectData) {\n msg.params = {};\n }\n\n if (this._token) {\n msg.params.token = this._token;\n }\n\n if (this._connectData) {\n msg.params.data = this._connectData;\n }\n\n this._latencyStart = new Date();\n this._call(msg).then(resolveCtx => {\n this._connectResponse(this._decoder.decodeCommandResult(this._methodType.CONNECT, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n const err = rejectCtx.error;\n if (err.code === 109) { // token expired.\n this._refreshRequired = true;\n }\n this._disconnect('connect error', true);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n this._transport.onerror = error => {\n this._debug('transport level error', error);\n };\n\n this._transport.onclose = closeEvent => {\n this._transportClosed = true;\n let reason = _errorConnectionClosed;\n let needReconnect = true;\n\n if (closeEvent && 'reason' in closeEvent && closeEvent.reason) {\n try {\n const advice = JSON.parse(closeEvent.reason);\n this._debug('reason is an advice object', advice);\n reason = advice.reason;\n needReconnect = advice.reconnect;\n } catch (e) {\n reason = closeEvent.reason;\n this._debug('reason is a plain string', reason);\n }\n }\n\n // onTransportClose callback should be executed every time transport was closed.\n // This can be helpful to catch failed connection events (because our disconnect\n // event only called once and every future attempts to connect do not fire disconnect\n // event again).\n if (this._config.onTransportClose !== null) {\n this._config.onTransportClose({\n event: closeEvent,\n reason: reason,\n reconnect: needReconnect\n });\n }\n\n this._disconnect(reason, needReconnect);\n\n if (this._reconnect === true) {\n this._reconnecting = true;\n const interval = this._getRetryInterval();\n\n this._debug('reconnect after ' + interval + ' milliseconds');\n setTimeout(() => {\n if (this._reconnect === true) {\n if (this._refreshRequired) {\n this._refresh();\n } else {\n this._connect();\n }\n }\n }, interval);\n }\n };\n\n this._transport.onmessage = event => {\n this._dataReceived(event.data);\n };\n };\n\n rpc(data) {\n const msg = {\n method: this._methodType.RPC,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(resolveCtx => {\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n return this._decoder.decodeCommandResult(this._methodType.RPC, resolveCtx.result);\n }, rejectCtx => {\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n return rejectCtx.error;\n });\n }\n\n send(data) {\n const msg = {\n method: this._methodType.SEND,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n const sent = this._transportSend([msg]); // can send async message to server without id set\n if (!sent) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n };\n return Promise.resolve({});\n }\n\n publish(channel, data) {\n const msg = {\n method: this._methodType.PUBLISH,\n params: {\n channel: channel,\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(result => {\n if (result.next) {\n result.next();\n }\n return {};\n });\n }\n\n _dataReceived(data) {\n const replies = this._decoder.decodeReplies(data);\n // we have to guarantee order of events in replies processing - i.e. start processing\n // next reply only when we finished processing of current one. Without syncing things in\n // this way we could get wrong publication events order as reply promises resolve\n // on next loop tick so for loop continues before we finished emitting all reply events.\n let p = Promise.resolve();\n for (const i in replies) {\n if (replies.hasOwnProperty(i)) {\n p = p.then(() => {\n return this._dispatchReply(replies[i]);\n });\n }\n }\n this._restartPing();\n }\n\n _call(msg) {\n return new Promise((resolve, reject) => {\n const id = this._addMessage(msg);\n this._registerCall(id, resolve, reject);\n });\n }\n\n _connect() {\n if (this.isConnected()) {\n this._debug('connect called when already connected');\n return;\n }\n if (this._status === 'connecting') {\n return;\n }\n\n this._debug('start connecting');\n this._setStatus('connecting');\n this._clientID = null;\n this._reconnect = true;\n this._setupTransport();\n };\n\n _disconnect(reason, shouldReconnect) {\n\n if (this._isDisconnected()) {\n return;\n }\n\n this._debug('disconnected:', reason, shouldReconnect);\n\n const reconnect = shouldReconnect || false;\n\n if (reconnect === false) {\n this._reconnect = false;\n }\n\n this._clearConnectedState(reconnect);\n\n if (!this._isDisconnected()) {\n this._setStatus('disconnected');\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._reconnecting === false) {\n this.emit('disconnect', {\n reason: reason,\n reconnect: reconnect\n });\n }\n }\n\n if (!this._transportClosed) {\n this._transport.close();\n }\n };\n\n _refreshFailed() {\n this._numRefreshFailed = 0;\n if (!this._isDisconnected()) {\n this._disconnect('refresh failed', false);\n }\n if (this._config.onRefreshFailed !== null) {\n this._config.onRefreshFailed();\n }\n };\n\n _refresh() {\n // ask application for new connection token.\n this._debug('refresh token');\n\n if (this._config.refreshAttempts === 0) {\n this._debug('refresh attempts set to 0, do not send refresh request at all');\n this._refreshFailed();\n return;\n }\n\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (this._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n // We don't perform any connection status related actions here as we are\n // relying on server that must close connection eventually.\n if (resp.error) {\n this._debug('error refreshing connection token', resp.error);\n } else {\n this._debug('error refreshing connection token: wrong status code', resp.status);\n }\n this._numRefreshFailed++;\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._config.refreshAttempts !== null && this._numRefreshFailed >= this._config.refreshAttempts) {\n this._refreshFailed();\n return;\n }\n const jitter = Math.round(Math.random() * 1000 * Math.max(this._numRefreshFailed, 20));\n const interval = this._config.refreshInterval + jitter;\n this._refreshTimeout = setTimeout(() => this._refresh(), interval);\n return;\n }\n this._numRefreshFailed = 0;\n this._token = resp.data.token;\n if (!this._token) {\n this._refreshFailed();\n return;\n }\n if (this._isDisconnected() && this._reconnect) {\n this._debug('token refreshed, connect from scratch');\n this._connect();\n } else {\n this._debug('send refreshed token');\n const msg = {\n method: this._methodType.REFRESH,\n params: {\n token: this._token\n }\n };\n this._call(msg).then(resolveCtx => {\n this._refreshResponse(this._decoder.decodeCommandResult(this._methodType.REFRESH, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._refreshError(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n if (this._config.onRefresh !== null) {\n const context = {};\n this._config.onRefresh(context, cb);\n } else {\n const xhr = this._ajax(\n this._config.refreshEndpoint,\n this._config.refreshParams,\n this._config.refreshHeaders,\n this._config.refreshData,\n cb\n );\n this._xhrs[xhrID] = xhr;\n }\n };\n\n _refreshError(err) {\n this._debug('refresh error', err);\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n const interval = this._config.refreshInterval + Math.round(Math.random() * 1000);\n this._refreshTimeout = setTimeout(() => this._refresh(), interval);\n }\n\n _refreshResponse(result) {\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (result.expires) {\n this._clientID = result.client;\n this._refreshTimeout = setTimeout(() => this._refresh(), this._getTTLMilliseconds(result.ttl));\n }\n };\n\n _newXHRID() {\n this._xhrID++;\n return this._xhrID;\n }\n\n _subRefresh(channel) {\n this._debug('refresh subscription token for channel', channel);\n\n if (this._subRefreshTimeouts[channel] !== undefined) {\n this._clearSubRefreshTimeout(channel);\n } else {\n return;\n }\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (resp.error || resp.status !== 200 || this._clientID !== clientID) {\n return;\n }\n let channelsData = {};\n if (resp.data.channels) {\n for (const i in data.channels) {\n const channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n const token = channelsData[channel];\n if (!token) {\n return;\n }\n const msg = {\n method: this._methodType.SUB_REFRESH,\n params: {\n channel: channel,\n token: token\n }\n };\n\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n\n this._call(msg).then(resolveCtx => {\n this._subRefreshResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUB_REFRESH, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subRefreshError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n const data = {\n client: this._clientID,\n channels: [channel]\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n const xhr = this._ajax(\n this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n };\n\n _clearSubRefreshTimeout(channel) {\n if (this._subRefreshTimeouts[channel] !== undefined) {\n clearTimeout(this._subRefreshTimeouts[channel]);\n delete this._subRefreshTimeouts[channel];\n }\n }\n\n _subRefreshError(channel, err) {\n this._debug('subscription refresh error', channel, err);\n this._clearSubRefreshTimeout(channel);\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n const jitter = Math.round(Math.random() * 1000);\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._config.subRefreshInterval + jitter);\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n return;\n }\n\n _subRefreshResponse(channel, result) {\n this._debug('subscription refresh success', channel);\n this._clearSubRefreshTimeout(channel);\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n if (result.expires === true) {\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n return;\n };\n\n _subscribe(sub, isResubscribe) {\n this._debug('subscribing on', sub.channel);\n const channel = sub.channel;\n\n if (!(channel in this._subs)) {\n this._subs[channel] = sub;\n }\n\n if (!this.isConnected()) {\n // subscribe will be called later\n sub._setNew();\n return;\n }\n\n sub._setSubscribing(isResubscribe);\n\n const msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel\n }\n };\n\n // If channel name does not start with privateChannelPrefix - then we\n // can just send subscription message to Centrifuge. If channel name\n // starts with privateChannelPrefix - then this is a private channel\n // and we should ask web application backend for permission first.\n if (startsWith(channel, this._config.privateChannelPrefix)) {\n // private channel.\n if (this._isSubscribeBatching) {\n this._privateChannels[channel] = true;\n } else {\n this.startSubscribeBatching();\n this._subscribe(sub);\n this.stopSubscribeBatching();\n }\n } else {\n const recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n const seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n const gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n const epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n\n this._call(msg).then(resolveCtx => {\n this._subscribeResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUBSCRIBE, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n _unsubscribe(sub) {\n if (this.isConnected()) {\n // No need to unsubscribe in disconnected state - i.e. client already unsubscribed.\n this._addMessage({\n method: this._methodType.UNSUBSCRIBE,\n params: {\n channel: sub.channel\n }\n });\n }\n };\n\n _getTTLMilliseconds(ttl) {\n // https://stackoverflow.com/questions/12633405/what-is-the-maximum-delay-for-setinterval\n return Math.min(ttl * 1000, 2147483647);\n }\n\n getSub(channel) {\n return this._getSub(channel);\n }\n\n _getSub(channel) {\n const sub = this._subs[channel];\n if (!sub) {\n return null;\n }\n return sub;\n };\n\n _connectResponse(result) {\n const wasReconnecting = this._reconnecting;\n this._reconnecting = false;\n this._resetRetry();\n this._refreshRequired = false;\n\n if (this.isConnected()) {\n return;\n }\n\n if (this._latencyStart !== null) {\n this._latency = (new Date()).getTime() - this._latencyStart.getTime();\n this._latencyStart = null;\n }\n\n this._clientID = result.client;\n this._setStatus('connected');\n\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n }\n\n if (result.expires) {\n this._refreshTimeout = setTimeout(() => this._refresh(), this._getTTLMilliseconds(result.ttl));\n }\n\n this.startBatching();\n this.startSubscribeBatching();\n for (const channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n const sub = this._subs[channel];\n if (sub._shouldResubscribe()) {\n this._subscribe(sub, wasReconnecting);\n }\n }\n }\n this.stopSubscribeBatching();\n this.stopBatching();\n\n this._startPing();\n\n const ctx = {\n client: result.client,\n transport: this._transportName,\n latency: this._latency\n };\n if (result.data) {\n ctx.data = result.data;\n }\n\n this.emit('connect', ctx);\n };\n\n _stopPing() {\n if (this._pongTimeout !== null) {\n clearTimeout(this._pongTimeout);\n this._pongTimeout = null;\n }\n if (this._pingTimeout !== null) {\n clearTimeout(this._pingTimeout);\n this._pingTimeout = null;\n }\n };\n\n _startPing() {\n if (this._config.ping !== true || this._config.pingInterval <= 0) {\n return;\n }\n if (!this.isConnected()) {\n return;\n }\n\n this._pingTimeout = setTimeout(() => {\n if (!this.isConnected()) {\n this._stopPing();\n return;\n }\n this.ping();\n this._pongTimeout = setTimeout(() => {\n this._disconnect('no ping', true);\n }, this._config.pongWaitTimeout);\n }, this._config.pingInterval);\n };\n\n _restartPing() {\n this._stopPing();\n this._startPing();\n };\n\n _subscribeError(channel, error) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n if (error.code === 0 && error.message === _errorTimeout) { // client side timeout.\n this._disconnect('timeout', true);\n return;\n }\n sub._setSubscribeError(error);\n };\n\n _subscribeResponse(channel, result) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n\n let recovered = false;\n if ('recovered' in result) {\n recovered = result.recovered;\n }\n sub._setSubscribeSuccess(recovered);\n\n let pubs = result.publications;\n\n if (pubs && pubs.length > 0) {\n // handle missed pubs.\n pubs = pubs.reverse();\n for (let i in pubs) {\n if (pubs.hasOwnProperty(i)) {\n this._handlePublication(channel, pubs[i]);\n }\n }\n } else {\n if (result.recoverable) {\n this._lastSeq[channel] = result.seq || 0;\n this._lastGen[channel] = result.gen || 0;\n }\n }\n\n this._lastEpoch[channel] = result.epoch || '';\n\n if (result.recoverable) {\n sub._recoverable = true;\n }\n\n if (result.expires === true) {\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n };\n\n _handleReply(reply, next) {\n const id = reply.id;\n const result = reply.result;\n\n if (!(id in this._callbacks)) {\n next();\n return;\n }\n const callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n\n if (!errorExists(reply)) {\n const callback = callbacks.callback;\n if (!callback) {\n return;\n }\n callback({result, next});\n } else {\n const errback = callbacks.errback;\n if (!errback) {\n next();\n return;\n }\n const error = reply.error;\n errback({error, next});\n }\n }\n\n _handleJoin(channel, join) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('join', join);\n };\n\n _handleLeave(channel, leave) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('leave', leave);\n };\n\n _handleUnsub(channel, unsub) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.unsubscribe();\n if (unsub.resubscribe === true) {\n sub.subscribe();\n }\n };\n\n _handlePublication(channel, pub) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (pub.seq !== undefined) {\n this._lastSeq[channel] = pub.seq;\n }\n if (pub.gen !== undefined) {\n this._lastGen[channel] = pub.gen;\n }\n sub.emit('publish', pub);\n };\n\n _handleMessage(message) {\n this.emit('message', message.data);\n };\n\n _handlePush(data, next) {\n const push = this._decoder.decodePush(data);\n let type = 0;\n if ('type' in push) {\n type = push['type'];\n }\n const channel = push.channel;\n\n if (type === this._pushType.PUBLICATION) {\n const pub = this._decoder.decodePushData(this._pushType.PUBLICATION, push.data);\n this._handlePublication(channel, pub);\n } else if (type === this._pushType.MESSAGE) {\n const message = this._decoder.decodePushData(this._pushType.MESSAGE, push.data);\n this._handleMessage(message);\n } else if (type === this._pushType.JOIN) {\n const join = this._decoder.decodePushData(this._pushType.JOIN, push.data);\n this._handleJoin(channel, join);\n } else if (type === this._pushType.LEAVE) {\n const leave = this._decoder.decodePushData(this._pushType.LEAVE, push.data);\n this._handleLeave(channel, leave);\n } else if (type === this._pushType.UNSUB) {\n const unsub = this._decoder.decodePushData(this._pushType.UNSUB, push.data);\n this._handleUnsub(channel, unsub);\n }\n next();\n }\n\n _dispatchReply(reply) {\n var next;\n const p = new Promise(resolve =>{\n next = resolve;\n });\n\n if (reply === undefined || reply === null) {\n this._debug('dispatch: got undefined or null reply');\n next();\n return p;\n }\n\n const id = reply.id;\n\n if (id && id > 0) {\n this._handleReply(reply, next);\n } else {\n this._handlePush(reply.result, next);\n }\n\n return p;\n };\n\n _flush() {\n const messages = this._messages.slice(0);\n this._messages = [];\n this._transportSend(messages);\n };\n\n _ping() {\n const msg = {\n method: this._methodType.PING\n };\n this._call(msg).then(resolveCtx => {\n this._pingResponse(this._decoder.decodeCommandResult(this._methodType.PING, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._debug('ping error', rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n _pingResponse(result) {\n if (!this.isConnected()) {\n return;\n }\n this._stopPing();\n this._startPing();\n }\n\n _getLastSeq(channel) {\n const lastSeq = this._lastSeq[channel];\n if (lastSeq) {\n return lastSeq;\n }\n return 0;\n };\n\n _getLastGen(channel) {\n const lastGen = this._lastGen[channel];\n if (lastGen) {\n return lastGen;\n }\n return 0;\n };\n\n _getLastEpoch(channel) {\n const lastEpoch = this._lastEpoch[channel];\n if (lastEpoch) {\n return lastEpoch;\n }\n return '';\n };\n\n _createErrorObject(message, code) {\n const errObject = {\n message: message,\n code: code || 0\n };\n\n return errObject;\n };\n\n _registerCall(id, callback, errback) {\n this._callbacks[id] = {\n callback: callback,\n errback: errback,\n timeout: null\n };\n this._callbacks[id].timeout = setTimeout(() => {\n delete this._callbacks[id];\n if (isFunction(errback)) {\n errback({error: this._createErrorObject(_errorTimeout)});\n }\n }, this._config.timeout);\n };\n\n _addMessage(message) {\n let id = this._nextMessageId();\n message.id = id;\n if (this._isBatching === true) {\n this._messages.push(message);\n } else {\n this._transportSend([message]);\n }\n return id;\n };\n\n isConnected() {\n return this._isConnected();\n }\n\n connect() {\n this._connect();\n };\n\n disconnect() {\n this._disconnect('client', false);\n };\n\n ping() {\n return this._ping();\n }\n\n startBatching() {\n // start collecting messages without sending them to Centrifuge until flush\n // method called\n this._isBatching = true;\n };\n\n stopBatching() {\n this._isBatching = false;\n this._flush();\n };\n\n startSubscribeBatching() {\n // start collecting private channels to create bulk authentication\n // request to subscribeEndpoint when stopSubscribeBatching will be called\n this._isSubscribeBatching = true;\n };\n\n stopSubscribeBatching() {\n // create request to subscribeEndpoint with collected private channels\n // to ask if this client can subscribe on each channel\n this._isSubscribeBatching = false;\n const authChannels = this._privateChannels;\n this._privateChannels = {};\n\n const channels = [];\n\n for (const channel in authChannels) {\n if (authChannels.hasOwnProperty(channel)) {\n const sub = this._getSub(channel);\n if (!sub) {\n continue;\n }\n channels.push(channel);\n }\n }\n\n if (channels.length === 0) {\n this._debug('no private channels found, no need to make request');\n return;\n }\n\n const data = {\n client: this._clientID,\n channels: channels\n };\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (this._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n this._debug('authorization request failed');\n for (const i in channels) {\n if (channels.hasOwnProperty(i)) {\n const channel = channels[i];\n this._subscribeError(channel, this._createErrorObject('authorization request failed'));\n }\n }\n return;\n }\n\n let channelsData = {};\n if (resp.data.channels) {\n for (const i in resp.data.channels) {\n const channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n // try to send all subscriptions in one request.\n let batch = false;\n\n if (!this._isBatching) {\n this.startBatching();\n batch = true;\n }\n\n for (const i in channels) {\n if (channels.hasOwnProperty(i)) {\n const channel = channels[i];\n const token = channelsData[channel];\n\n if (!token) {\n // subscription:error\n this._subscribeError(channel, this._createErrorObject('permission denied', 103));\n continue;\n } else {\n const msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel,\n token: token\n }\n };\n\n const sub = this._getSub(channel);\n if (sub === null) {\n continue;\n }\n\n const recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n const seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n const gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n const epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n this._call(msg).then(resolveCtx => {\n this._subscribeResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUBSCRIBE, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }\n }\n\n if (batch) {\n this.stopBatching();\n }\n\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n const xhr = this._ajax(\n this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n };\n\n subscribe(channel, events) {\n const currentSub = this._getSub(channel);\n if (currentSub !== null) {\n currentSub._setEvents(events);\n if (currentSub._isUnsubscribed()) {\n currentSub.subscribe();\n }\n return currentSub;\n }\n const sub = new Subscription(this, channel, events);\n this._subs[channel] = sub;\n sub.subscribe();\n return sub;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/centrifuge.js","import EventEmitter from 'events';\n\nimport {\n isFunction\n} from './utils';\n\nconst _STATE_NEW = 0;\nconst _STATE_SUBSCRIBING = 1;\nconst _STATE_SUCCESS = 2;\nconst _STATE_ERROR = 3;\nconst _STATE_UNSUBSCRIBED = 4;\n\nexport default class Subscription extends EventEmitter {\n constructor(centrifuge, channel, events) {\n super();\n this.channel = channel;\n this._centrifuge = centrifuge;\n this._status = _STATE_NEW;\n this._error = null;\n this._isResubscribe = false;\n this._ready = false;\n this._subscriptionPromise = null;\n this._noResubscribe = false;\n this._recoverable = false;\n this._recover = false;\n this._setEvents(events);\n this._initializePromise();\n this._promises = {};\n this.on('error', function (errContext) {\n this._centrifuge._debug('subscription error', errContext);\n });\n }\n\n _initializePromise() {\n // this helps us to wait until subscription will successfully\n // subscribe and call actions such as presence, history etc in\n // synchronous way.\n this._ready = false;\n\n this._subscriptionPromise = new Promise((resolve, reject) => {\n this._resolve = value => {\n this._ready = true;\n resolve(value);\n };\n this._reject = err => {\n this._ready = true;\n reject(err);\n };\n }).then(function () {}, function () {});\n };\n\n _needRecover() {\n return this._recoverable === true && this._recover === true;\n };\n\n _setEvents(events) {\n if (!events) {\n return;\n }\n if (isFunction(events)) {\n // events is just a function to handle publication received from channel.\n this.on('publish', events);\n } else if (Object.prototype.toString.call(events) === Object.prototype.toString.call({})) {\n const knownEvents = ['publish', 'join', 'leave', 'unsubscribe', 'subscribe', 'error'];\n for (let i = 0, l = knownEvents.length; i < l; i++) {\n const ev = knownEvents[i];\n if (ev in events) {\n this.on(ev, events[ev]);\n }\n }\n }\n };\n\n _isNew() {\n return this._status === _STATE_NEW;\n };\n\n _isUnsubscribed() {\n return this._status === _STATE_UNSUBSCRIBED;\n };\n\n _isSubscribing() {\n return this._status === _STATE_SUBSCRIBING;\n };\n\n _isReady() {\n return this._status === _STATE_SUCCESS || this._status === _STATE_ERROR;\n };\n\n _isSuccess() {\n return this._status === _STATE_SUCCESS;\n };\n\n _isError() {\n return this._status === _STATE_ERROR;\n };\n\n _setNew() {\n this._status = _STATE_NEW;\n };\n\n _setSubscribing(isResubscribe) {\n this._isResubscribe = isResubscribe || false;\n if (this._ready === true) {\n // new promise for this subscription\n this._initializePromise();\n }\n this._status = _STATE_SUBSCRIBING;\n };\n\n _setSubscribeSuccess(recovered) {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._status = _STATE_SUCCESS;\n const successContext = this._getSubscribeSuccessContext(recovered);\n\n this._recover = false;\n this.emit('subscribe', successContext);\n this._resolve(successContext);\n for (const to in this._promises) {\n clearTimeout(to);\n this._promises[to].resolve();\n delete this._promises[to];\n }\n };\n\n _setSubscribeError(err) {\n if (this._status === _STATE_ERROR) {\n return;\n }\n this._status = _STATE_ERROR;\n this._error = err;\n const errContext = this._getSubscribeErrorContext();\n this.emit('error', errContext);\n this._reject(errContext);\n for (const to in this._promises) {\n clearTimeout(to);\n this._promises[to].reject(err);\n delete this._promises[to];\n }\n };\n\n _triggerUnsubscribe() {\n this.emit('unsubscribe', {\n channel: this.channel\n });\n };\n\n _setUnsubscribed(noResubscribe) {\n this._centrifuge._clearSubRefreshTimeout(this.channel);\n if (this._status === _STATE_UNSUBSCRIBED) {\n return;\n }\n const needTrigger = this._status === _STATE_SUCCESS;\n this._status = _STATE_UNSUBSCRIBED;\n if (noResubscribe === true) {\n this._recover = false;\n this._noResubscribe = true;\n delete this._centrifuge._lastSeq[this.channel];\n delete this._centrifuge._lastGen[this.channel];\n delete this._centrifuge._lastEpoch[this.channel];\n }\n if (needTrigger) {\n this._triggerUnsubscribe();\n }\n };\n\n _shouldResubscribe() {\n return !this._noResubscribe;\n };\n\n _getSubscribeSuccessContext(recovered) {\n return {\n channel: this.channel,\n isResubscribe: this._isResubscribe,\n recovered: recovered\n };\n };\n\n _getSubscribeErrorContext() {\n const subscribeErrorContext = this._error;\n subscribeErrorContext.channel = this.channel;\n subscribeErrorContext.isResubscribe = this._isResubscribe;\n return subscribeErrorContext;\n };\n\n ready(callback, errback) {\n if (this._ready) {\n if (this._isSuccess()) {\n callback(this._getSubscribeSuccessContext());\n } else {\n errback(this._getSubscribeErrorContext());\n }\n }\n };\n\n subscribe() {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._noResubscribe = false;\n this._centrifuge._subscribe(this);\n };\n\n unsubscribe() {\n this._setUnsubscribed(true);\n this._centrifuge._unsubscribe(this);\n };\n\n _methodCall(message, type) {\n const methodCallPromise = new Promise((resolve, reject) => {\n let subPromise;\n if (this._isSuccess()) {\n subPromise = Promise.resolve();\n } else if (this._isError()) {\n subPromise = Promise.reject(this._error);\n } else {\n subPromise = new Promise((res, rej) => {\n const timeout = setTimeout(function () {\n rej({'code': 0, 'message': 'timeout'});\n }, this._centrifuge._config.timeout);\n this._promises[timeout] = {\n resolve: res,\n reject: rej\n };\n });\n }\n subPromise.then(\n () => {\n return this._centrifuge._call(message).then(\n resolveCtx => {\n resolve(this._centrifuge._decoder.decodeCommandResult(type, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n },\n rejectCtx => {\n reject(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n }\n );\n },\n error => {\n reject(error);\n }\n );\n });\n return methodCallPromise;\n }\n\n publish(data) {\n return this._methodCall({\n method: this._centrifuge._methodType.PUBLISH,\n params: {\n channel: this.channel,\n data: data\n }\n }, this._centrifuge._methodType.PUBLISH);\n };\n\n presence() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE);\n };\n\n presenceStats() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE_STATS,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE_STATS);\n };\n\n history() {\n return this._methodCall({\n method: this._centrifuge._methodType.HISTORY,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.HISTORY);\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/subscription.js","export const JsonMethodType = {\n CONNECT: 0,\n SUBSCRIBE: 1,\n UNSUBSCRIBE: 2,\n PUBLISH: 3,\n PRESENCE: 4,\n PRESENCE_STATS: 5,\n HISTORY: 6,\n PING: 7,\n SEND: 8,\n RPC: 9,\n REFRESH: 10,\n SUB_REFRESH: 11\n};\n\nexport const JsonPushType = {\n PUBLICATION: 0,\n JOIN: 1,\n LEAVE: 2,\n UNSUB: 3,\n MESSAGE: 4\n};\n\nexport class JsonEncoder {\n encodeCommands(commands) {\n const encodedCommands = [];\n for (const i in commands) {\n if (commands.hasOwnProperty(i)) {\n encodedCommands.push(JSON.stringify(commands[i]));\n }\n }\n return encodedCommands.join('\\n');\n }\n}\n\nexport class JsonDecoder {\n decodeReplies(data) {\n const replies = [];\n const encodedReplies = data.split('\\n');\n for (const i in encodedReplies) {\n if (encodedReplies.hasOwnProperty(i)) {\n if (!encodedReplies[i]) {\n continue;\n }\n const reply = JSON.parse(encodedReplies[i]);\n replies.push(reply);\n }\n }\n return replies;\n }\n\n decodeCommandResult(methodType, data) {\n return data;\n }\n\n decodePush(data) {\n return data;\n }\n\n decodePushData(pushType, data) {\n return data;\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/json.js","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 3\n// module chunks = 0 1","import {Centrifuge} from './centrifuge.js';\nexport default Centrifuge;\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/events/events.js\n// module id = 6\n// module chunks = 0 1","export function startsWith(value, prefix) {\n return value.lastIndexOf(prefix, 0) === 0;\n};\n\nexport function isFunction(value) {\n if (value === undefined || value === null) {\n return false;\n }\n return typeof value === 'function';\n};\n\nexport function log(level, args) {\n if (global.console) {\n const logger = global.console[level];\n\n if (isFunction(logger)) {\n logger.apply(global.console, args);\n }\n }\n};\n\nexport function backoff(step, min, max) {\n const jitter = 0.5 * Math.random();\n const interval = Math.min(max, min * Math.pow(2, step + 1));\n\n return Math.floor((1 - jitter) * interval);\n};\n\nexport function errorExists(data) {\n return 'error' in data && data.error !== null;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 6c4bc52bd851320564c5","webpack:///./src/centrifuge.js","webpack:///./src/subscription.js","webpack:///./src/json.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/index.js","webpack:///./node_modules/events/events.js","webpack:///./src/utils.js"],"names":["_errorTimeout","_errorConnectionClosed","Centrifuge","url","options","_url","_sockjs","_isSockjs","_binary","_methodType","_pushType","_encoder","_decoder","_status","_reconnect","_reconnecting","_transport","_transportName","_transportClosed","_messageId","_clientID","_refreshRequired","_subs","_lastSeq","_lastGen","_lastEpoch","_messages","_isBatching","_isSubscribeBatching","_privateChannels","_numRefreshFailed","_refreshTimeout","_pingTimeout","_pongTimeout","_subRefreshTimeouts","_retries","_callbacks","_latency","_latencyStart","_connectData","_token","_xhrID","_xhrs","_config","debug","sockjs","promise","minRetry","maxRetry","timeout","ping","pingInterval","pongWaitTimeout","privateChannelPrefix","onTransportClose","sockjsServer","sockjsTransports","refreshEndpoint","refreshHeaders","refreshParams","refreshData","refreshAttempts","refreshInterval","onRefreshFailed","onRefresh","subscribeEndpoint","subscribeHeaders","subscribeParams","subRefreshInterval","onPrivateSubscribe","_configure","token","data","params","headers","callback","query","_debug","JSON","stringify","xhr","global","XMLHttpRequest","ActiveXObject","i","hasOwnProperty","length","encodeURIComponent","open","withCredentials","setRequestHeader","headerName","onreadystatechange","readyState","status","parsed","parse","responseText","e","error","_log","setTimeout","send","arguments","WebSocket","format","_formatOverride","Error","configuration","Object","assign","indexOf","_setFormat","SockJS","newStatus","interval","xhrID","abort","reconnect","_stopPing","id","callbacks","clearTimeout","errback","_createErrorObject","channel","sub","_isSuccess","_triggerUnsubscribe","_recover","_shouldResubscribe","_setSubscribing","_setUnsubscribed","_abortInflightXHRs","_clearSubRefreshTimeout","transport","OPEN","commands","_isTransportOpen","command","encodeCommands","sockjsOptions","transports","server","_websocketSupported","binaryType","onopen","onheartbeat","_restartPing","msg","Date","_call","then","_connectResponse","decodeCommandResult","CONNECT","resolveCtx","result","next","err","rejectCtx","code","_disconnect","onerror","onclose","reason","needReconnect","closeEvent","advice","event","_getRetryInterval","_refresh","_connect","onmessage","_dataReceived","method","RPC","isConnected","Promise","reject","SEND","sent","_transportSend","resolve","PUBLISH","replies","decodeReplies","p","_dispatchReply","_addMessage","_registerCall","_setStatus","_setupTransport","shouldReconnect","_isDisconnected","_clearConnectedState","emit","close","_refreshFailed","clientID","_newXHRID","cb","resp","jitter","Math","round","random","max","REFRESH","_refreshResponse","_refreshError","context","_ajax","expires","client","_getTTLMilliseconds","ttl","undefined","channelsData","channels","channelData","SUB_REFRESH","_getSub","_subRefreshResponse","_subRefreshError","subRefreshTimeout","_subRefresh","isResubscribe","_setNew","SUBSCRIBE","startSubscribeBatching","_subscribe","stopSubscribeBatching","recover","_needRecover","seq","_getLastSeq","gen","_getLastGen","epoch","_getLastEpoch","_subscribeResponse","_subscribeError","UNSUBSCRIBE","min","wasReconnecting","_resetRetry","getTime","startBatching","stopBatching","_startPing","ctx","latency","_isSubscribing","message","_setSubscribeError","recovered","_setSubscribeSuccess","pubs","publications","reverse","_handlePublication","recoverable","_recoverable","reply","join","leave","unsub","unsubscribe","resubscribe","subscribe","pub","push","decodePush","type","PUBLICATION","decodePushData","MESSAGE","_handleMessage","JOIN","_handleJoin","LEAVE","_handleLeave","UNSUB","_handleUnsub","_handleReply","_handlePush","messages","slice","PING","_pingResponse","lastSeq","lastGen","lastEpoch","errObject","_nextMessageId","_isConnected","_ping","_flush","authChannels","batch","events","currentSub","_setEvents","_isUnsubscribed","_STATE_NEW","_STATE_SUBSCRIBING","_STATE_SUCCESS","_STATE_ERROR","_STATE_UNSUBSCRIBED","Subscription","centrifuge","_centrifuge","_error","_isResubscribe","_ready","_subscriptionPromise","_noResubscribe","_initializePromise","_promises","on","errContext","_resolve","value","_reject","prototype","toString","call","knownEvents","l","ev","successContext","_getSubscribeSuccessContext","to","_getSubscribeErrorContext","noResubscribe","needTrigger","subscribeErrorContext","_unsubscribe","methodCallPromise","subPromise","_isError","res","rej","_methodCall","PRESENCE","PRESENCE_STATS","HISTORY","JsonMethodType","JsonPushType","JsonEncoder","encodedCommands","JsonDecoder","encodedReplies","split","methodType","pushType","startsWith","isFunction","log","backoff","errorExists","prefix","lastIndexOf","level","args","console","logger","apply","step","pow","floor"],"mappings":"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;AACD;;;mCAEc4R,Q,EAAU5R,I,EAAM;AAC7B,aAAOA,IAAP;AACD;;;;;;;;;;;AC7DH;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;;;;ACpBA;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;QC7SgB6R,U,GAAAA,U;QAIAC,U,GAAAA,U;QAOAC,G,GAAAA,G;QAUAC,O,GAAAA,O;QAOAC,W,GAAAA,W;AA5BT,SAASJ,UAAT,CAAoBlC,KAApB,EAA2BuC,MAA3B,EAAmC;AACxC,SAAOvC,MAAMwC,WAAN,CAAkBD,MAAlB,EAA0B,CAA1B,MAAiC,CAAxC;AACD;;AAEM,SAASJ,UAAT,CAAoBnC,KAApB,EAA2B;AAChC,MAAIA,UAAU1G,SAAV,IAAuB0G,UAAU,IAArC,EAA2C;AACzC,WAAO,KAAP;AACD;AACD,SAAO,OAAOA,KAAP,KAAiB,UAAxB;AACD;;AAEM,SAASoC,GAAT,CAAaK,KAAb,EAAoBC,IAApB,EAA0B;AAC/B,MAAI5R,OAAO6R,OAAX,EAAoB;AAClB,QAAMC,SAAS9R,OAAO6R,OAAP,CAAeF,KAAf,CAAf;;AAEA,QAAIN,WAAWS,MAAX,CAAJ,EAAwB;AACtBA,aAAOC,KAAP,CAAa/R,OAAO6R,OAApB,EAA6BD,IAA7B;AACD;AACF;AACF;;AAEM,SAASL,OAAT,CAAiBS,IAAjB,EAAuB7H,GAAvB,EAA4BrC,GAA5B,EAAiC;AACtC,MAAMJ,SAAS,MAAMC,KAAKE,MAAL,EAArB;AACA,MAAM3F,WAAWyF,KAAKwC,GAAL,CAASrC,GAAT,EAAcqC,MAAMxC,KAAKsK,GAAL,CAAS,CAAT,EAAYD,OAAO,CAAnB,CAApB,CAAjB;;AAEA,SAAOrK,KAAKuK,KAAL,CAAW,CAAC,IAAIxK,MAAL,IAAexF,QAA1B,CAAP;AACD;;AAEM,SAASsP,WAAT,CAAqBjS,IAArB,EAA2B;AAChC,SAAO,WAAWA,IAAX,IAAmBA,KAAK2B,KAAL,KAAe,IAAzC;AACD,E","file":"centrifuge.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Centrifuge\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Centrifuge\"] = factory();\n\telse\n\t\troot[\"Centrifuge\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 31);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 6c4bc52bd851320564c5","import EventEmitter from 'events';\nimport Subscription from './subscription';\n\nimport {\n JsonEncoder,\n JsonDecoder,\n JsonMethodType,\n JsonPushType\n} from './json';\n\nimport {\n isFunction,\n log,\n startsWith,\n errorExists,\n backoff\n} from './utils';\n\nconst _errorTimeout = 'timeout';\nconst _errorConnectionClosed = 'connection closed';\n\nexport class Centrifuge extends EventEmitter {\n\n constructor(url, options) {\n super();\n this._url = url;\n this._sockjs = null;\n this._isSockjs = false;\n this._binary = false;\n this._methodType = null;\n this._pushType = null;\n this._encoder = null;\n this._decoder = null;\n this._status = 'disconnected';\n this._reconnect = true;\n this._reconnecting = false;\n this._transport = null;\n this._transportName = null;\n this._transportClosed = true;\n this._messageId = 0;\n this._clientID = null;\n this._refreshRequired = false;\n this._subs = {};\n this._lastSeq = {};\n this._lastGen = {};\n this._lastEpoch = {};\n this._messages = [];\n this._isBatching = false;\n this._isSubscribeBatching = false;\n this._privateChannels = {};\n this._numRefreshFailed = 0;\n this._refreshTimeout = null;\n this._pingTimeout = null;\n this._pongTimeout = null;\n this._subRefreshTimeouts = {};\n this._retries = 0;\n this._callbacks = {};\n this._latency = null;\n this._latencyStart = null;\n this._connectData = null;\n this._token = null;\n this._xhrID = 0;\n this._xhrs = {};\n this._config = {\n debug: false,\n sockjs: null,\n promise: null,\n minRetry: 1000,\n maxRetry: 20000,\n timeout: 5000,\n ping: true,\n pingInterval: 25000,\n pongWaitTimeout: 5000,\n privateChannelPrefix: '$',\n onTransportClose: null,\n sockjsServer: null,\n sockjsTransports: [\n 'websocket',\n 'xdr-streaming',\n 'xhr-streaming',\n 'eventsource',\n 'iframe-eventsource',\n 'iframe-htmlfile',\n 'xdr-polling',\n 'xhr-polling',\n 'iframe-xhr-polling',\n 'jsonp-polling'\n ],\n refreshEndpoint: '/centrifuge/refresh',\n refreshHeaders: {},\n refreshParams: {},\n refreshData: {},\n refreshAttempts: null,\n refreshInterval: 1000,\n onRefreshFailed: null,\n onRefresh: null,\n subscribeEndpoint: '/centrifuge/subscribe',\n subscribeHeaders: {},\n subscribeParams: {},\n subRefreshInterval: 1000,\n onPrivateSubscribe: null\n };\n this._configure(options);\n }\n\n setToken(token) {\n this._token = token;\n }\n\n setConnectData(data) {\n this._connectData = data;\n }\n\n _ajax(url, params, headers, data, callback) {\n let query = '';\n this._debug('sending AJAX request to', url, 'with data', JSON.stringify(data));\n\n const xhr = (global.XMLHttpRequest ? new global.XMLHttpRequest() : new global.ActiveXObject('Microsoft.XMLHTTP'));\n\n for (const i in params) {\n if (params.hasOwnProperty(i)) {\n if (query.length > 0) {\n query += '&';\n }\n query += encodeURIComponent(i) + '=' + encodeURIComponent(params[i]);\n }\n }\n if (query.length > 0) {\n query = '?' + query;\n }\n xhr.open('POST', url + query, true);\n if ('withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr.setRequestHeader('Content-Type', 'application/json');\n for (const headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n xhr.setRequestHeader(headerName, headers[headerName]);\n }\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n let data, parsed = false;\n try {\n data = JSON.parse(xhr.responseText);\n parsed = true;\n } catch (e) {\n callback({\n error: 'Invalid JSON. Data was: ' + xhr.responseText,\n status: 200,\n data: null\n });\n }\n if (parsed) { // prevents double execution.\n callback({\n data: data,\n status: 200\n });\n }\n } else {\n this._log('wrong status code in AJAX response', xhr.status);\n callback({\n status: xhr.status,\n data: null\n });\n }\n }\n };\n setTimeout(() => xhr.send(JSON.stringify(data)), 20);\n return xhr;\n };\n\n _log() {\n log('info', arguments);\n };\n\n _debug() {\n if (this._config.debug === true) {\n log('debug', arguments);\n }\n };\n\n _websocketSupported() {\n return !(typeof WebSocket !== 'function' && typeof WebSocket !== 'object');\n };\n\n _setFormat(format) {\n if (this._formatOverride(format)) {\n return;\n }\n if (format === 'protobuf') {\n throw new Error('not implemented by JSON only Centrifuge client – use client with Protobuf');\n }\n this._binary = false;\n this._methodType = JsonMethodType;\n this._pushType = JsonPushType;\n this._encoder = new JsonEncoder();\n this._decoder = new JsonDecoder();\n }\n\n _formatOverride(format) {\n return false;\n }\n\n _configure(configuration) {\n if (!('Promise' in global)) {\n throw new Error('Promise polyfill required');\n }\n\n Object.assign(this._config, configuration || {});\n this._debug('centrifuge config', this._config);\n\n if (!this._url) {\n throw new Error('url required');\n }\n\n if (startsWith(this._url, 'ws') && this._url.indexOf('format=protobuf') > -1) {\n this._setFormat('protobuf');\n } else {\n this._setFormat('json');\n }\n\n if (startsWith(this._url, 'http')) {\n this._debug('client will try to connect to SockJS endpoint');\n if (this._config.sockjs !== null) {\n this._debug('SockJS explicitly provided in options');\n this._sockjs = this._config.sockjs;\n } else {\n if (typeof global.SockJS === 'undefined') {\n throw new Error('SockJS not found, use ws:// in url or include SockJS');\n }\n this._debug('use globally defined SockJS');\n this._sockjs = global.SockJS;\n }\n } else {\n this._debug('client will connect to websocket endpoint');\n }\n };\n\n _setStatus(newStatus) {\n if (this._status !== newStatus) {\n this._debug('Status', this._status, '->', newStatus);\n this._status = newStatus;\n }\n };\n\n _isDisconnected() {\n return this._status === 'disconnected';\n };\n\n _isConnecting() {\n return this._status === 'connecting';\n };\n\n _isConnected() {\n return this._status === 'connected';\n };\n\n _nextMessageId() {\n return ++this._messageId;\n };\n\n _resetRetry() {\n this._debug('reset retries count to 0');\n this._retries = 0;\n };\n\n _getRetryInterval() {\n const interval = backoff(this._retries, this._config.minRetry, this._config.maxRetry);\n\n this._retries += 1;\n return interval;\n };\n\n _abortInflightXHRs() {\n for (const xhrID in this._xhrs) {\n try {\n this._xhrs[xhrID].abort();\n } catch (e) {\n this._debug('error aborting xhr', e);\n }\n delete this._xhrs[xhrID];\n }\n };\n\n _clearConnectedState(reconnect) {\n this._clientID = null;\n this._stopPing();\n\n // fire errbacks of registered outgoing calls.\n for (const id in this._callbacks) {\n if (this._callbacks.hasOwnProperty(id)) {\n const callbacks = this._callbacks[id];\n clearTimeout(callbacks.timeout);\n const errback = callbacks.errback;\n if (!errback) {\n continue;\n }\n errback({error: this._createErrorObject('disconnected')});\n }\n }\n this._callbacks = {};\n\n // fire unsubscribe events\n for (const channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n const sub = this._subs[channel];\n\n if (reconnect) {\n if (sub._isSuccess()) {\n sub._triggerUnsubscribe();\n sub._recover = true;\n }\n if (sub._shouldResubscribe()) {\n sub._setSubscribing();\n }\n } else {\n sub._setUnsubscribed();\n }\n }\n }\n\n this._abortInflightXHRs();\n\n // clear refresh timer\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n // clear sub refresh timers\n for (const channel in this._subRefreshTimeouts) {\n if (this._subRefreshTimeouts.hasOwnProperty(channel) && this._subRefreshTimeouts[channel]) {\n this._clearSubRefreshTimeout(channel);\n }\n }\n this._subRefreshTimeouts = {};\n\n if (!this._reconnect) {\n // completely clear subscriptions\n this._subs = {};\n }\n };\n\n _isTransportOpen() {\n if (this._isSockjs) {\n return this._transport &&\n this._transport.transport &&\n this._transport.transport.readyState === this._transport.transport.OPEN;\n }\n return this._transport && this._transport.readyState === this._transport.OPEN;\n };\n\n _transportSend(commands) {\n if (!commands.length) {\n return true;\n }\n\n if (!this._isTransportOpen()) {\n // resolve pending commands with error if transport is not open\n for (let command in commands) {\n let id = command.id;\n if (!(id in this._callbacks)) {\n continue;\n }\n const callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n const errback = callbacks.errback;\n errback({error: this._createErrorObject(_errorConnectionClosed, 0)});\n }\n return false;\n }\n this._transport.send(this._encoder.encodeCommands(commands));\n return true;\n }\n\n _setupTransport() {\n this._isSockjs = false;\n\n // detect transport to use - SockJS or Websocket\n if (this._sockjs !== null) {\n const sockjsOptions = {\n transports: this._config.sockjsTransports\n };\n\n if (this._config.sockjsServer !== null) {\n sockjsOptions.server = this._config.sockjsServer;\n }\n this._isSockjs = true;\n this._transport = new this._sockjs(this._url, null, sockjsOptions);\n } else {\n if (!this._websocketSupported()) {\n this._debug('No Websocket support and no SockJS configured, can not connect');\n return;\n }\n this._transport = new WebSocket(this._url);\n if (this._binary === true) {\n this._transport.binaryType = 'arraybuffer';\n }\n }\n\n this._transport.onopen = () => {\n this._transportClosed = false;\n\n if (this._isSockjs) {\n this._transportName = 'sockjs-' + this._transport.transport;\n this._transport.onheartbeat = () => this._restartPing();\n } else {\n this._transportName = 'websocket';\n }\n\n // Can omit method here due to zero value.\n const msg = {\n // method: this._methodType.CONNECT\n };\n\n if (this._token || this._connectData) {\n msg.params = {};\n }\n\n if (this._token) {\n msg.params.token = this._token;\n }\n\n if (this._connectData) {\n msg.params.data = this._connectData;\n }\n\n this._latencyStart = new Date();\n this._call(msg).then(resolveCtx => {\n this._connectResponse(this._decoder.decodeCommandResult(this._methodType.CONNECT, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n const err = rejectCtx.error;\n if (err.code === 109) { // token expired.\n this._refreshRequired = true;\n }\n this._disconnect('connect error', true);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n this._transport.onerror = error => {\n this._debug('transport level error', error);\n };\n\n this._transport.onclose = closeEvent => {\n this._transportClosed = true;\n let reason = _errorConnectionClosed;\n let needReconnect = true;\n\n if (closeEvent && 'reason' in closeEvent && closeEvent.reason) {\n try {\n const advice = JSON.parse(closeEvent.reason);\n this._debug('reason is an advice object', advice);\n reason = advice.reason;\n needReconnect = advice.reconnect;\n } catch (e) {\n reason = closeEvent.reason;\n this._debug('reason is a plain string', reason);\n }\n }\n\n // onTransportClose callback should be executed every time transport was closed.\n // This can be helpful to catch failed connection events (because our disconnect\n // event only called once and every future attempts to connect do not fire disconnect\n // event again).\n if (this._config.onTransportClose !== null) {\n this._config.onTransportClose({\n event: closeEvent,\n reason: reason,\n reconnect: needReconnect\n });\n }\n\n this._disconnect(reason, needReconnect);\n\n if (this._reconnect === true) {\n this._reconnecting = true;\n const interval = this._getRetryInterval();\n\n this._debug('reconnect after ' + interval + ' milliseconds');\n setTimeout(() => {\n if (this._reconnect === true) {\n if (this._refreshRequired) {\n this._refresh();\n } else {\n this._connect();\n }\n }\n }, interval);\n }\n };\n\n this._transport.onmessage = event => {\n this._dataReceived(event.data);\n };\n };\n\n rpc(data) {\n const msg = {\n method: this._methodType.RPC,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(resolveCtx => {\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n return this._decoder.decodeCommandResult(this._methodType.RPC, resolveCtx.result);\n }, rejectCtx => {\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n return rejectCtx.error;\n });\n }\n\n send(data) {\n const msg = {\n method: this._methodType.SEND,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n const sent = this._transportSend([msg]); // can send async message to server without id set\n if (!sent) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n };\n return Promise.resolve({});\n }\n\n publish(channel, data) {\n const msg = {\n method: this._methodType.PUBLISH,\n params: {\n channel: channel,\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(result => {\n if (result.next) {\n result.next();\n }\n return {};\n });\n }\n\n _dataReceived(data) {\n const replies = this._decoder.decodeReplies(data);\n // we have to guarantee order of events in replies processing - i.e. start processing\n // next reply only when we finished processing of current one. Without syncing things in\n // this way we could get wrong publication events order as reply promises resolve\n // on next loop tick so for loop continues before we finished emitting all reply events.\n let p = Promise.resolve();\n for (const i in replies) {\n if (replies.hasOwnProperty(i)) {\n p = p.then(() => {\n return this._dispatchReply(replies[i]);\n });\n }\n }\n this._restartPing();\n }\n\n _call(msg) {\n return new Promise((resolve, reject) => {\n const id = this._addMessage(msg);\n this._registerCall(id, resolve, reject);\n });\n }\n\n _connect() {\n if (this.isConnected()) {\n this._debug('connect called when already connected');\n return;\n }\n if (this._status === 'connecting') {\n return;\n }\n\n this._debug('start connecting');\n this._setStatus('connecting');\n this._clientID = null;\n this._reconnect = true;\n this._setupTransport();\n };\n\n _disconnect(reason, shouldReconnect) {\n\n if (this._isDisconnected()) {\n return;\n }\n\n this._debug('disconnected:', reason, shouldReconnect);\n\n const reconnect = shouldReconnect || false;\n\n if (reconnect === false) {\n this._reconnect = false;\n }\n\n this._clearConnectedState(reconnect);\n\n if (!this._isDisconnected()) {\n this._setStatus('disconnected');\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._reconnecting === false) {\n this.emit('disconnect', {\n reason: reason,\n reconnect: reconnect\n });\n }\n }\n\n if (!this._transportClosed) {\n this._transport.close();\n }\n };\n\n _refreshFailed() {\n this._numRefreshFailed = 0;\n if (!this._isDisconnected()) {\n this._disconnect('refresh failed', false);\n }\n if (this._config.onRefreshFailed !== null) {\n this._config.onRefreshFailed();\n }\n };\n\n _refresh() {\n // ask application for new connection token.\n this._debug('refresh token');\n\n if (this._config.refreshAttempts === 0) {\n this._debug('refresh attempts set to 0, do not send refresh request at all');\n this._refreshFailed();\n return;\n }\n\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (this._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n // We don't perform any connection status related actions here as we are\n // relying on server that must close connection eventually.\n if (resp.error) {\n this._debug('error refreshing connection token', resp.error);\n } else {\n this._debug('error refreshing connection token: wrong status code', resp.status);\n }\n this._numRefreshFailed++;\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._config.refreshAttempts !== null && this._numRefreshFailed >= this._config.refreshAttempts) {\n this._refreshFailed();\n return;\n }\n const jitter = Math.round(Math.random() * 1000 * Math.max(this._numRefreshFailed, 20));\n const interval = this._config.refreshInterval + jitter;\n this._refreshTimeout = setTimeout(() => this._refresh(), interval);\n return;\n }\n this._numRefreshFailed = 0;\n this._token = resp.data.token;\n if (!this._token) {\n this._refreshFailed();\n return;\n }\n if (this._isDisconnected() && this._reconnect) {\n this._debug('token refreshed, connect from scratch');\n this._connect();\n } else {\n this._debug('send refreshed token');\n const msg = {\n method: this._methodType.REFRESH,\n params: {\n token: this._token\n }\n };\n this._call(msg).then(resolveCtx => {\n this._refreshResponse(this._decoder.decodeCommandResult(this._methodType.REFRESH, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._refreshError(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n if (this._config.onRefresh !== null) {\n const context = {};\n this._config.onRefresh(context, cb);\n } else {\n const xhr = this._ajax(\n this._config.refreshEndpoint,\n this._config.refreshParams,\n this._config.refreshHeaders,\n this._config.refreshData,\n cb\n );\n this._xhrs[xhrID] = xhr;\n }\n };\n\n _refreshError(err) {\n this._debug('refresh error', err);\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n const interval = this._config.refreshInterval + Math.round(Math.random() * 1000);\n this._refreshTimeout = setTimeout(() => this._refresh(), interval);\n }\n\n _refreshResponse(result) {\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (result.expires) {\n this._clientID = result.client;\n this._refreshTimeout = setTimeout(() => this._refresh(), this._getTTLMilliseconds(result.ttl));\n }\n };\n\n _newXHRID() {\n this._xhrID++;\n return this._xhrID;\n }\n\n _subRefresh(channel) {\n this._debug('refresh subscription token for channel', channel);\n\n if (this._subRefreshTimeouts[channel] !== undefined) {\n this._clearSubRefreshTimeout(channel);\n } else {\n return;\n }\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (resp.error || resp.status !== 200 || this._clientID !== clientID) {\n return;\n }\n let channelsData = {};\n if (resp.data.channels) {\n for (const i in data.channels) {\n const channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n const token = channelsData[channel];\n if (!token) {\n return;\n }\n const msg = {\n method: this._methodType.SUB_REFRESH,\n params: {\n channel: channel,\n token: token\n }\n };\n\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n\n this._call(msg).then(resolveCtx => {\n this._subRefreshResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUB_REFRESH, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subRefreshError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n const data = {\n client: this._clientID,\n channels: [channel]\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n const xhr = this._ajax(\n this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n };\n\n _clearSubRefreshTimeout(channel) {\n if (this._subRefreshTimeouts[channel] !== undefined) {\n clearTimeout(this._subRefreshTimeouts[channel]);\n delete this._subRefreshTimeouts[channel];\n }\n }\n\n _subRefreshError(channel, err) {\n this._debug('subscription refresh error', channel, err);\n this._clearSubRefreshTimeout(channel);\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n const jitter = Math.round(Math.random() * 1000);\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._config.subRefreshInterval + jitter);\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n return;\n }\n\n _subRefreshResponse(channel, result) {\n this._debug('subscription refresh success', channel);\n this._clearSubRefreshTimeout(channel);\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n if (result.expires === true) {\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n return;\n };\n\n _subscribe(sub, isResubscribe) {\n this._debug('subscribing on', sub.channel);\n const channel = sub.channel;\n\n if (!(channel in this._subs)) {\n this._subs[channel] = sub;\n }\n\n if (!this.isConnected()) {\n // subscribe will be called later\n sub._setNew();\n return;\n }\n\n sub._setSubscribing(isResubscribe);\n\n const msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel\n }\n };\n\n // If channel name does not start with privateChannelPrefix - then we\n // can just send subscription message to Centrifuge. If channel name\n // starts with privateChannelPrefix - then this is a private channel\n // and we should ask web application backend for permission first.\n if (startsWith(channel, this._config.privateChannelPrefix)) {\n // private channel.\n if (this._isSubscribeBatching) {\n this._privateChannels[channel] = true;\n } else {\n this.startSubscribeBatching();\n this._subscribe(sub);\n this.stopSubscribeBatching();\n }\n } else {\n const recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n const seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n const gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n const epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n\n this._call(msg).then(resolveCtx => {\n this._subscribeResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUBSCRIBE, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n _unsubscribe(sub) {\n if (this.isConnected()) {\n // No need to unsubscribe in disconnected state - i.e. client already unsubscribed.\n this._addMessage({\n method: this._methodType.UNSUBSCRIBE,\n params: {\n channel: sub.channel\n }\n });\n }\n };\n\n _getTTLMilliseconds(ttl) {\n // https://stackoverflow.com/questions/12633405/what-is-the-maximum-delay-for-setinterval\n return Math.min(ttl * 1000, 2147483647);\n }\n\n getSub(channel) {\n return this._getSub(channel);\n }\n\n _getSub(channel) {\n const sub = this._subs[channel];\n if (!sub) {\n return null;\n }\n return sub;\n };\n\n _connectResponse(result) {\n const wasReconnecting = this._reconnecting;\n this._reconnecting = false;\n this._resetRetry();\n this._refreshRequired = false;\n\n if (this.isConnected()) {\n return;\n }\n\n if (this._latencyStart !== null) {\n this._latency = (new Date()).getTime() - this._latencyStart.getTime();\n this._latencyStart = null;\n }\n\n this._clientID = result.client;\n this._setStatus('connected');\n\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n }\n\n if (result.expires) {\n this._refreshTimeout = setTimeout(() => this._refresh(), this._getTTLMilliseconds(result.ttl));\n }\n\n this.startBatching();\n this.startSubscribeBatching();\n for (const channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n const sub = this._subs[channel];\n if (sub._shouldResubscribe()) {\n this._subscribe(sub, wasReconnecting);\n }\n }\n }\n this.stopSubscribeBatching();\n this.stopBatching();\n\n this._startPing();\n\n const ctx = {\n client: result.client,\n transport: this._transportName,\n latency: this._latency\n };\n if (result.data) {\n ctx.data = result.data;\n }\n\n this.emit('connect', ctx);\n };\n\n _stopPing() {\n if (this._pongTimeout !== null) {\n clearTimeout(this._pongTimeout);\n this._pongTimeout = null;\n }\n if (this._pingTimeout !== null) {\n clearTimeout(this._pingTimeout);\n this._pingTimeout = null;\n }\n };\n\n _startPing() {\n if (this._config.ping !== true || this._config.pingInterval <= 0) {\n return;\n }\n if (!this.isConnected()) {\n return;\n }\n\n this._pingTimeout = setTimeout(() => {\n if (!this.isConnected()) {\n this._stopPing();\n return;\n }\n this.ping();\n this._pongTimeout = setTimeout(() => {\n this._disconnect('no ping', true);\n }, this._config.pongWaitTimeout);\n }, this._config.pingInterval);\n };\n\n _restartPing() {\n this._stopPing();\n this._startPing();\n };\n\n _subscribeError(channel, error) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n if (error.code === 0 && error.message === _errorTimeout) { // client side timeout.\n this._disconnect('timeout', true);\n return;\n }\n sub._setSubscribeError(error);\n };\n\n _subscribeResponse(channel, result) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n\n let recovered = false;\n if ('recovered' in result) {\n recovered = result.recovered;\n }\n sub._setSubscribeSuccess(recovered);\n\n let pubs = result.publications;\n\n if (pubs && pubs.length > 0) {\n // handle missed pubs.\n pubs = pubs.reverse();\n for (let i in pubs) {\n if (pubs.hasOwnProperty(i)) {\n this._handlePublication(channel, pubs[i]);\n }\n }\n } else {\n if (result.recoverable) {\n this._lastSeq[channel] = result.seq || 0;\n this._lastGen[channel] = result.gen || 0;\n }\n }\n\n this._lastEpoch[channel] = result.epoch || '';\n\n if (result.recoverable) {\n sub._recoverable = true;\n }\n\n if (result.expires === true) {\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n };\n\n _handleReply(reply, next) {\n const id = reply.id;\n const result = reply.result;\n\n if (!(id in this._callbacks)) {\n next();\n return;\n }\n const callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n\n if (!errorExists(reply)) {\n const callback = callbacks.callback;\n if (!callback) {\n return;\n }\n callback({result, next});\n } else {\n const errback = callbacks.errback;\n if (!errback) {\n next();\n return;\n }\n const error = reply.error;\n errback({error, next});\n }\n }\n\n _handleJoin(channel, join) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('join', join);\n };\n\n _handleLeave(channel, leave) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('leave', leave);\n };\n\n _handleUnsub(channel, unsub) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.unsubscribe();\n if (unsub.resubscribe === true) {\n sub.subscribe();\n }\n };\n\n _handlePublication(channel, pub) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (pub.seq !== undefined) {\n this._lastSeq[channel] = pub.seq;\n }\n if (pub.gen !== undefined) {\n this._lastGen[channel] = pub.gen;\n }\n sub.emit('publish', pub);\n };\n\n _handleMessage(message) {\n this.emit('message', message.data);\n };\n\n _handlePush(data, next) {\n const push = this._decoder.decodePush(data);\n let type = 0;\n if ('type' in push) {\n type = push['type'];\n }\n const channel = push.channel;\n\n if (type === this._pushType.PUBLICATION) {\n const pub = this._decoder.decodePushData(this._pushType.PUBLICATION, push.data);\n this._handlePublication(channel, pub);\n } else if (type === this._pushType.MESSAGE) {\n const message = this._decoder.decodePushData(this._pushType.MESSAGE, push.data);\n this._handleMessage(message);\n } else if (type === this._pushType.JOIN) {\n const join = this._decoder.decodePushData(this._pushType.JOIN, push.data);\n this._handleJoin(channel, join);\n } else if (type === this._pushType.LEAVE) {\n const leave = this._decoder.decodePushData(this._pushType.LEAVE, push.data);\n this._handleLeave(channel, leave);\n } else if (type === this._pushType.UNSUB) {\n const unsub = this._decoder.decodePushData(this._pushType.UNSUB, push.data);\n this._handleUnsub(channel, unsub);\n }\n next();\n }\n\n _dispatchReply(reply) {\n var next;\n const p = new Promise(resolve =>{\n next = resolve;\n });\n\n if (reply === undefined || reply === null) {\n this._debug('dispatch: got undefined or null reply');\n next();\n return p;\n }\n\n const id = reply.id;\n\n if (id && id > 0) {\n this._handleReply(reply, next);\n } else {\n this._handlePush(reply.result, next);\n }\n\n return p;\n };\n\n _flush() {\n const messages = this._messages.slice(0);\n this._messages = [];\n this._transportSend(messages);\n };\n\n _ping() {\n const msg = {\n method: this._methodType.PING\n };\n this._call(msg).then(resolveCtx => {\n this._pingResponse(this._decoder.decodeCommandResult(this._methodType.PING, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._debug('ping error', rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n _pingResponse(result) {\n if (!this.isConnected()) {\n return;\n }\n this._stopPing();\n this._startPing();\n }\n\n _getLastSeq(channel) {\n const lastSeq = this._lastSeq[channel];\n if (lastSeq) {\n return lastSeq;\n }\n return 0;\n };\n\n _getLastGen(channel) {\n const lastGen = this._lastGen[channel];\n if (lastGen) {\n return lastGen;\n }\n return 0;\n };\n\n _getLastEpoch(channel) {\n const lastEpoch = this._lastEpoch[channel];\n if (lastEpoch) {\n return lastEpoch;\n }\n return '';\n };\n\n _createErrorObject(message, code) {\n const errObject = {\n message: message,\n code: code || 0\n };\n\n return errObject;\n };\n\n _registerCall(id, callback, errback) {\n this._callbacks[id] = {\n callback: callback,\n errback: errback,\n timeout: null\n };\n this._callbacks[id].timeout = setTimeout(() => {\n delete this._callbacks[id];\n if (isFunction(errback)) {\n errback({error: this._createErrorObject(_errorTimeout)});\n }\n }, this._config.timeout);\n };\n\n _addMessage(message) {\n let id = this._nextMessageId();\n message.id = id;\n if (this._isBatching === true) {\n this._messages.push(message);\n } else {\n this._transportSend([message]);\n }\n return id;\n };\n\n isConnected() {\n return this._isConnected();\n }\n\n connect() {\n this._connect();\n };\n\n disconnect() {\n this._disconnect('client', false);\n };\n\n ping() {\n return this._ping();\n }\n\n startBatching() {\n // start collecting messages without sending them to Centrifuge until flush\n // method called\n this._isBatching = true;\n };\n\n stopBatching() {\n this._isBatching = false;\n this._flush();\n };\n\n startSubscribeBatching() {\n // start collecting private channels to create bulk authentication\n // request to subscribeEndpoint when stopSubscribeBatching will be called\n this._isSubscribeBatching = true;\n };\n\n stopSubscribeBatching() {\n // create request to subscribeEndpoint with collected private channels\n // to ask if this client can subscribe on each channel\n this._isSubscribeBatching = false;\n const authChannels = this._privateChannels;\n this._privateChannels = {};\n\n const channels = [];\n\n for (const channel in authChannels) {\n if (authChannels.hasOwnProperty(channel)) {\n const sub = this._getSub(channel);\n if (!sub) {\n continue;\n }\n channels.push(channel);\n }\n }\n\n if (channels.length === 0) {\n this._debug('no private channels found, no need to make request');\n return;\n }\n\n const data = {\n client: this._clientID,\n channels: channels\n };\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (this._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n this._debug('authorization request failed');\n for (const i in channels) {\n if (channels.hasOwnProperty(i)) {\n const channel = channels[i];\n this._subscribeError(channel, this._createErrorObject('authorization request failed'));\n }\n }\n return;\n }\n\n let channelsData = {};\n if (resp.data.channels) {\n for (const i in resp.data.channels) {\n const channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n // try to send all subscriptions in one request.\n let batch = false;\n\n if (!this._isBatching) {\n this.startBatching();\n batch = true;\n }\n\n for (const i in channels) {\n if (channels.hasOwnProperty(i)) {\n const channel = channels[i];\n const token = channelsData[channel];\n\n if (!token) {\n // subscription:error\n this._subscribeError(channel, this._createErrorObject('permission denied', 103));\n continue;\n } else {\n const msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel,\n token: token\n }\n };\n\n const sub = this._getSub(channel);\n if (sub === null) {\n continue;\n }\n\n const recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n const seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n const gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n const epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n this._call(msg).then(resolveCtx => {\n this._subscribeResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUBSCRIBE, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }\n }\n\n if (batch) {\n this.stopBatching();\n }\n\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n const xhr = this._ajax(\n this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n };\n\n subscribe(channel, events) {\n const currentSub = this._getSub(channel);\n if (currentSub !== null) {\n currentSub._setEvents(events);\n if (currentSub._isUnsubscribed()) {\n currentSub.subscribe();\n }\n return currentSub;\n }\n const sub = new Subscription(this, channel, events);\n this._subs[channel] = sub;\n sub.subscribe();\n return sub;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/centrifuge.js","import EventEmitter from 'events';\n\nimport {\n isFunction\n} from './utils';\n\nconst _STATE_NEW = 0;\nconst _STATE_SUBSCRIBING = 1;\nconst _STATE_SUCCESS = 2;\nconst _STATE_ERROR = 3;\nconst _STATE_UNSUBSCRIBED = 4;\n\nexport default class Subscription extends EventEmitter {\n constructor(centrifuge, channel, events) {\n super();\n this.channel = channel;\n this._centrifuge = centrifuge;\n this._status = _STATE_NEW;\n this._error = null;\n this._isResubscribe = false;\n this._ready = false;\n this._subscriptionPromise = null;\n this._noResubscribe = false;\n this._recoverable = false;\n this._recover = false;\n this._setEvents(events);\n this._initializePromise();\n this._promises = {};\n this.on('error', function (errContext) {\n this._centrifuge._debug('subscription error', errContext);\n });\n }\n\n _initializePromise() {\n // this helps us to wait until subscription will successfully\n // subscribe and call actions such as presence, history etc in\n // synchronous way.\n this._ready = false;\n\n this._subscriptionPromise = new Promise((resolve, reject) => {\n this._resolve = value => {\n this._ready = true;\n resolve(value);\n };\n this._reject = err => {\n this._ready = true;\n reject(err);\n };\n }).then(function () {}, function () {});\n };\n\n _needRecover() {\n return this._recoverable === true && this._recover === true;\n };\n\n _setEvents(events) {\n if (!events) {\n return;\n }\n if (isFunction(events)) {\n // events is just a function to handle publication received from channel.\n this.on('publish', events);\n } else if (Object.prototype.toString.call(events) === Object.prototype.toString.call({})) {\n const knownEvents = ['publish', 'join', 'leave', 'unsubscribe', 'subscribe', 'error'];\n for (let i = 0, l = knownEvents.length; i < l; i++) {\n const ev = knownEvents[i];\n if (ev in events) {\n this.on(ev, events[ev]);\n }\n }\n }\n };\n\n _isNew() {\n return this._status === _STATE_NEW;\n };\n\n _isUnsubscribed() {\n return this._status === _STATE_UNSUBSCRIBED;\n };\n\n _isSubscribing() {\n return this._status === _STATE_SUBSCRIBING;\n };\n\n _isReady() {\n return this._status === _STATE_SUCCESS || this._status === _STATE_ERROR;\n };\n\n _isSuccess() {\n return this._status === _STATE_SUCCESS;\n };\n\n _isError() {\n return this._status === _STATE_ERROR;\n };\n\n _setNew() {\n this._status = _STATE_NEW;\n };\n\n _setSubscribing(isResubscribe) {\n this._isResubscribe = isResubscribe || false;\n if (this._ready === true) {\n // new promise for this subscription\n this._initializePromise();\n }\n this._status = _STATE_SUBSCRIBING;\n };\n\n _setSubscribeSuccess(recovered) {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._status = _STATE_SUCCESS;\n const successContext = this._getSubscribeSuccessContext(recovered);\n\n this._recover = false;\n this.emit('subscribe', successContext);\n this._resolve(successContext);\n for (const to in this._promises) {\n clearTimeout(to);\n this._promises[to].resolve();\n delete this._promises[to];\n }\n };\n\n _setSubscribeError(err) {\n if (this._status === _STATE_ERROR) {\n return;\n }\n this._status = _STATE_ERROR;\n this._error = err;\n const errContext = this._getSubscribeErrorContext();\n this.emit('error', errContext);\n this._reject(errContext);\n for (const to in this._promises) {\n clearTimeout(to);\n this._promises[to].reject(err);\n delete this._promises[to];\n }\n };\n\n _triggerUnsubscribe() {\n this.emit('unsubscribe', {\n channel: this.channel\n });\n };\n\n _setUnsubscribed(noResubscribe) {\n this._centrifuge._clearSubRefreshTimeout(this.channel);\n if (this._status === _STATE_UNSUBSCRIBED) {\n return;\n }\n const needTrigger = this._status === _STATE_SUCCESS;\n this._status = _STATE_UNSUBSCRIBED;\n if (noResubscribe === true) {\n this._recover = false;\n this._noResubscribe = true;\n delete this._centrifuge._lastSeq[this.channel];\n delete this._centrifuge._lastGen[this.channel];\n delete this._centrifuge._lastEpoch[this.channel];\n }\n if (needTrigger) {\n this._triggerUnsubscribe();\n }\n };\n\n _shouldResubscribe() {\n return !this._noResubscribe;\n };\n\n _getSubscribeSuccessContext(recovered) {\n return {\n channel: this.channel,\n isResubscribe: this._isResubscribe,\n recovered: recovered\n };\n };\n\n _getSubscribeErrorContext() {\n const subscribeErrorContext = this._error;\n subscribeErrorContext.channel = this.channel;\n subscribeErrorContext.isResubscribe = this._isResubscribe;\n return subscribeErrorContext;\n };\n\n ready(callback, errback) {\n if (this._ready) {\n if (this._isSuccess()) {\n callback(this._getSubscribeSuccessContext());\n } else {\n errback(this._getSubscribeErrorContext());\n }\n }\n };\n\n subscribe() {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._noResubscribe = false;\n this._centrifuge._subscribe(this);\n };\n\n unsubscribe() {\n this._setUnsubscribed(true);\n this._centrifuge._unsubscribe(this);\n };\n\n _methodCall(message, type) {\n const methodCallPromise = new Promise((resolve, reject) => {\n let subPromise;\n if (this._isSuccess()) {\n subPromise = Promise.resolve();\n } else if (this._isError()) {\n subPromise = Promise.reject(this._error);\n } else {\n subPromise = new Promise((res, rej) => {\n const timeout = setTimeout(function () {\n rej({'code': 0, 'message': 'timeout'});\n }, this._centrifuge._config.timeout);\n this._promises[timeout] = {\n resolve: res,\n reject: rej\n };\n });\n }\n subPromise.then(\n () => {\n return this._centrifuge._call(message).then(\n resolveCtx => {\n resolve(this._centrifuge._decoder.decodeCommandResult(type, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n },\n rejectCtx => {\n reject(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n }\n );\n },\n error => {\n reject(error);\n }\n );\n });\n return methodCallPromise;\n }\n\n publish(data) {\n return this._methodCall({\n method: this._centrifuge._methodType.PUBLISH,\n params: {\n channel: this.channel,\n data: data\n }\n }, this._centrifuge._methodType.PUBLISH);\n };\n\n presence() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE);\n };\n\n presenceStats() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE_STATS,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE_STATS);\n };\n\n history() {\n return this._methodCall({\n method: this._centrifuge._methodType.HISTORY,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.HISTORY);\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/subscription.js","export const JsonMethodType = {\n CONNECT: 0,\n SUBSCRIBE: 1,\n UNSUBSCRIBE: 2,\n PUBLISH: 3,\n PRESENCE: 4,\n PRESENCE_STATS: 5,\n HISTORY: 6,\n PING: 7,\n SEND: 8,\n RPC: 9,\n REFRESH: 10,\n SUB_REFRESH: 11\n};\n\nexport const JsonPushType = {\n PUBLICATION: 0,\n JOIN: 1,\n LEAVE: 2,\n UNSUB: 3,\n MESSAGE: 4\n};\n\nexport class JsonEncoder {\n encodeCommands(commands) {\n const encodedCommands = [];\n for (const i in commands) {\n if (commands.hasOwnProperty(i)) {\n encodedCommands.push(JSON.stringify(commands[i]));\n }\n }\n return encodedCommands.join('\\n');\n }\n}\n\nexport class JsonDecoder {\n decodeReplies(data) {\n const replies = [];\n const encodedReplies = data.split('\\n');\n for (const i in encodedReplies) {\n if (encodedReplies.hasOwnProperty(i)) {\n if (!encodedReplies[i]) {\n continue;\n }\n const reply = JSON.parse(encodedReplies[i]);\n replies.push(reply);\n }\n }\n return replies;\n }\n\n decodeCommandResult(methodType, data) {\n return data;\n }\n\n decodePush(data) {\n return data;\n }\n\n decodePushData(pushType, data) {\n return data;\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/json.js","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 3\n// module chunks = 0 1","import {Centrifuge} from './centrifuge.js';\nexport default Centrifuge;\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/events/events.js\n// module id = 6\n// module chunks = 0 1","export function startsWith(value, prefix) {\n return value.lastIndexOf(prefix, 0) === 0;\n};\n\nexport function isFunction(value) {\n if (value === undefined || value === null) {\n return false;\n }\n return typeof value === 'function';\n};\n\nexport function log(level, args) {\n if (global.console) {\n const logger = global.console[level];\n\n if (isFunction(logger)) {\n logger.apply(global.console, args);\n }\n }\n};\n\nexport function backoff(step, min, max) {\n const jitter = 0.5 * Math.random();\n const interval = Math.min(max, min * Math.pow(2, step + 1));\n\n return Math.floor((1 - jitter) * interval);\n};\n\nexport function errorExists(data) {\n return 'error' in data && data.error !== null;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/centrifuge.min.js b/dist/centrifuge.min.js index 42807bbb..74d95ddf 100644 --- a/dist/centrifuge.min.js +++ b/dist/centrifuge.min.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Centrifuge",[],t):"object"==typeof exports?exports.Centrifuge=t():e.Centrifuge=t()}("undefined"!=typeof self?self:this,function(){return function(e){function t(s){if(n[s])return n[s].exports;var r=n[s]={i:s,l:!1,exports:{}};return e[s].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,s){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:s})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=31)}({10:function(e,t,n){"use strict";(function(e){function s(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0}),t.Centrifuge=void 0;var u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=function(){function e(e,t){for(var n=0;n0&&(u+="&"),u+=encodeURIComponent(c)+"="+encodeURIComponent(n[c]));u.length>0&&(u="?"+u),a.open("POST",t+u,!0),"withCredentials"in a&&(a.withCredentials=!0),a.setRequestHeader("X-Requested-With","XMLHttpRequest"),a.setRequestHeader("Content-Type","application/json");for(var h in s)s.hasOwnProperty(h)&&a.setRequestHeader(h,s[h]);return a.onreadystatechange=function(){if(4===a.readyState)if(200===a.status){var e=void 0,t=!1;try{e=JSON.parse(a.responseText),t=!0}catch(e){i({error:"Invalid JSON. Data was: "+a.responseText,status:200,data:null})}t&&i({data:e,status:200})}else o._log("wrong status code in AJAX response",a.status),i({status:a.status,data:null})},setTimeout(function(){return a.send(JSON.stringify(r))},20),a}},{key:"_log",value:function(){(0,d.log)("info",arguments)}},{key:"_debug",value:function(){!0===this._config.debug&&(0,d.log)("debug",arguments)}},{key:"_websocketSupported",value:function(){return!("function"!=typeof WebSocket&&"object"!==("undefined"==typeof WebSocket?"undefined":u(WebSocket)))}},{key:"_setFormat",value:function(e){if(!this._formatOverride(e)){if("protobuf"===e)throw new Error("not implemented by JSON only Centrifuge client – use client with Protobuf");this._binary=!1,this._methodType=f.JsonMethodType,this._pushType=f.JsonPushType,this._encoder=new f.JsonEncoder,this._decoder=new f.JsonDecoder}}},{key:"_formatOverride",value:function(e){return!1}},{key:"_configure",value:function(t){if(!("Promise"in e))throw new Error("Promise polyfill required");if(Object.assign(this._config,t||{}),this._debug("centrifuge config",this._config),!this._url)throw new Error("url required");if((0,d.startsWith)(this._url,"ws")&&this._url.indexOf("format=protobuf")>-1?this._setFormat("protobuf"):this._setFormat("json"),(0,d.startsWith)(this._url,"http"))if(this._debug("client will try to connect to SockJS endpoint"),null!==this._config.sockjs)this._debug("SockJS explicitly provided in options"),this._sockjs=this._config.sockjs;else{if(void 0===e.SockJS)throw new Error("SockJS not found, use ws:// in url or include SockJS");this._debug("use globally defined SockJS"),this._sockjs=e.SockJS}else this._debug("client will connect to websocket endpoint")}},{key:"_setStatus",value:function(e){this._status!==e&&(this._debug("Status",this._status,"->",e),this._status=e)}},{key:"_isDisconnected",value:function(){return"disconnected"===this._status}},{key:"_isConnecting",value:function(){return"connecting"===this._status}},{key:"_isConnected",value:function(){return"connected"===this._status}},{key:"_nextMessageId",value:function(){return++this._messageId}},{key:"_resetRetry",value:function(){this._debug("reset retries count to 0"),this._retries=0}},{key:"_getRetryInterval",value:function(){var e=(0,d.backoff)(this._retries,this._config.minRetry,this._config.maxRetry);return this._retries+=1,e}},{key:"_abortInflightXHRs",value:function(){for(var e in this._xhrs){try{this._xhrs[e].abort()}catch(e){this._debug("error aborting xhr",e)}delete this._xhrs[e]}}},{key:"_clearConnectedState",value:function(e){this._clientID=null,this._stopPing();for(var t in this._callbacks)if(this._callbacks.hasOwnProperty(t)){var n=this._callbacks[t];clearTimeout(n.timeout);var s=n.errback;if(!s)continue;s({error:this._createErrorObject("disconnected")})}this._callbacks={};for(var r in this._subs)if(this._subs.hasOwnProperty(r)){var i=this._subs[r];e?(i._isSuccess()&&(i._triggerUnsubscribe(),i._recover=!0),i._setSubscribing()):i._setUnsubscribed()}this._abortInflightXHRs(),null!==this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null);for(var o in this._subRefreshTimeouts)this._subRefreshTimeouts.hasOwnProperty(o)&&this._subRefreshTimeouts[o]&&this._clearSubRefreshTimeout(o);this._subRefreshTimeouts={},this._reconnect||(this._subs={})}},{key:"_isTransportOpen",value:function(){return this._isSockjs?this._transport&&this._transport.transport&&this._transport.transport.readyState===this._transport.transport.OPEN:this._transport&&this._transport.readyState===this._transport.OPEN}},{key:"_transportSend",value:function(e){if(!e.length)return!0;if(!this._isTransportOpen()){for(var t in e){var n=t.id;if(n in this._callbacks){var s=this._callbacks[n];clearTimeout(this._callbacks[n].timeout),delete this._callbacks[n];(0,s.errback)({error:this._createErrorObject("connection closed",0)})}}return!1}return this._transport.send(this._encoder.encodeCommands(e)),!0}},{key:"_setupTransport",value:function(){var e=this;if(this._isSockjs=!1,null!==this._sockjs){var t={transports:this._config.sockjsTransports};null!==this._config.sockjsServer&&(t.server=this._config.sockjsServer),this._isSockjs=!0,this._transport=new this._sockjs(this._url,null,t)}else{if(!this._websocketSupported())return void this._debug("No Websocket support and no SockJS configured, can not connect");this._transport=new WebSocket(this._url),!0===this._binary&&(this._transport.binaryType="arraybuffer")}this._transport.onopen=function(){e._transportClosed=!1,e._isSockjs?(e._transportName="sockjs-"+e._transport.transport,e._transport.onheartbeat=function(){return e._restartPing()}):e._transportName="websocket";var t={};(e._token||e._connectData)&&(t.params={}),e._token&&(t.params.token=e._token),e._connectData&&(t.params.data=e._connectData),e._latencyStart=new Date,e._call(t).then(function(t){e._connectResponse(e._decoder.decodeCommandResult(e._methodType.CONNECT,t.result)),t.next&&t.next()},function(t){109===t.error.code&&(e._refreshRequired=!0),e._disconnect("connect error",!0),t.next&&t.next()})},this._transport.onerror=function(t){e._debug("transport level error",t)},this._transport.onclose=function(t){e._transportClosed=!0;var n="connection closed",s=!0;if(t&&"reason"in t&&t.reason)try{var r=JSON.parse(t.reason);e._debug("reason is an advice object",r),n=r.reason,s=r.reconnect}catch(s){n=t.reason,e._debug("reason is a plain string",n)}if(null!==e._config.onTransportClose&&e._config.onTransportClose({event:t,reason:n,reconnect:s}),e._disconnect(n,s),!0===e._reconnect){e._reconnecting=!0;var i=e._getRetryInterval();e._debug("reconnect after "+i+" milliseconds"),setTimeout(function(){!0===e._reconnect&&(e._refreshRequired?e._refresh():e._connect())},i)}},this._transport.onmessage=function(t){e._dataReceived(t.data)}}},{key:"rpc",value:function(e){var t=this,n={method:this._methodType.RPC,params:{data:e}};return this.isConnected()?this._call(n).then(function(e){return e.next&&e.next(),t._decoder.decodeCommandResult(t._methodType.RPC,e.result)},function(e){return e.next&&e.next(),e.error}):Promise.reject(this._createErrorObject("connection closed",0))}},{key:"send",value:function(e){var t={method:this._methodType.SEND,params:{data:e}};return this.isConnected()&&this._transportSend([t])?Promise.resolve({}):Promise.reject(this._createErrorObject("connection closed",0))}},{key:"publish",value:function(e,t){var n={method:this._methodType.PUBLISH,params:{channel:e,data:t}};return this.isConnected()?this._call(n).then(function(e){return e.next&&e.next(),{}}):Promise.reject(this._createErrorObject("connection closed",0))}},{key:"_dataReceived",value:function(e){var t=this,n=this._decoder.decodeReplies(e),s=Promise.resolve();for(var r in n)!function(e){n.hasOwnProperty(e)&&(s=s.then(function(){return t._dispatchReply(n[e])}))}(r);this._restartPing()}},{key:"_call",value:function(e){var t=this;return new Promise(function(n,s){var r=t._addMessage(e);t._registerCall(r,n,s)})}},{key:"_connect",value:function(){if(this.isConnected())return void this._debug("connect called when already connected");"connecting"!==this._status&&(this._debug("start connecting"),this._setStatus("connecting"),this._clientID=null,this._reconnect=!0,this._setupTransport())}},{key:"_disconnect",value:function(e,t){if(!this._isDisconnected()){this._debug("disconnected:",e,t);var n=t||!1;!1===n&&(this._reconnect=!1),this._clearConnectedState(n),this._isDisconnected()||(this._setStatus("disconnected"),this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null),!1===this._reconnecting&&this.emit("disconnect",{reason:e,reconnect:n})),this._transportClosed||this._transport.close()}}},{key:"_refreshFailed",value:function(){this._numRefreshFailed=0,this._isDisconnected()||this._disconnect("refresh failed",!1),null!==this._config.onRefreshFailed&&this._config.onRefreshFailed()}},{key:"_refresh",value:function(){var e=this;if(this._debug("refresh token"),0===this._config.refreshAttempts)return this._debug("refresh attempts set to 0, do not send refresh request at all"),void this._refreshFailed();null!==this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null);var t=this._clientID,n=this._newXHRID(),s=function(s){if(n in e._xhrs&&delete e._xhrs[n],e._clientID===t){if(s.error||200!==s.status){if(s.error?e._debug("error refreshing connection token",s.error):e._debug("error refreshing connection token: wrong status code",s.status),e._numRefreshFailed++,null!==e._refreshTimeout&&(clearTimeout(e._refreshTimeout),e._refreshTimeout=null),null!==e._config.refreshAttempts&&e._numRefreshFailed>=e._config.refreshAttempts)return void e._refreshFailed();var r=Math.round(1e3*Math.random()*Math.max(e._numRefreshFailed,20)),i=e._config.refreshInterval+r;return void(e._refreshTimeout=setTimeout(function(){return e._refresh()},i))}if(e._numRefreshFailed=0,e._token=s.data.token,!e._token)return void e._refreshFailed();if(e._isDisconnected()&&e._reconnect)e._debug("token refreshed, connect from scratch"),e._connect();else{e._debug("send refreshed token");var o={method:e._methodType.REFRESH,params:{token:e._token}};e._call(o).then(function(t){e._refreshResponse(e._decoder.decodeCommandResult(e._methodType.REFRESH,t.result)),t.next&&t.next()},function(t){e._refreshError(t.error),t.next&&t.next()})}}};if(null!==this._config.onRefresh){var r={};this._config.onRefresh(r,s)}else{var i=this._ajax(this._config.refreshEndpoint,this._config.refreshParams,this._config.refreshHeaders,this._config.refreshData,s);this._xhrs[n]=i}}},{key:"_refreshError",value:function(e){var t=this;this._debug("refresh error",e),this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null);var n=this._config.refreshInterval+Math.round(1e3*Math.random());this._refreshTimeout=setTimeout(function(){return t._refresh()},n)}},{key:"_refreshResponse",value:function(e){var t=this;this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null),e.expires&&(this._clientID=e.client,this._refreshTimeout=setTimeout(function(){return t._refresh()},this._getTTLMilliseconds(e.ttl)))}},{key:"_newXHRID",value:function(){return++this._xhrID}},{key:"_subRefresh",value:function(e){var t=this;if(this._debug("refresh subscription token for channel",e),void 0!==this._subRefreshTimeouts[e]){this._clearSubRefreshTimeout(e);var n=this._clientID,s=this._newXHRID(),r=function(r){if(s in t._xhrs&&delete t._xhrs[s],!r.error&&200===r.status&&t._clientID===n){var o={};if(r.data.channels)for(var u in i.channels){var a=r.data.channels[u];a.channel&&(o[a.channel]=a.token)}var c=o[e];if(c){var h={method:t._methodType.SUB_REFRESH,params:{channel:e,token:c}};null!==t._getSub(e)&&t._call(h).then(function(n){t._subRefreshResponse(e,t._decoder.decodeCommandResult(t._methodType.SUB_REFRESH,n.result)),n.next&&n.next()},function(n){t._subRefreshError(e,n.error),n.next&&n.next()})}}},i={client:this._clientID,channels:[e]};if(null!==this._config.onPrivateSubscribe)this._config.onPrivateSubscribe({data:i},r);else{var o=this._ajax(this._config.subscribeEndpoint,this._config.subscribeParams,this._config.subscribeHeaders,i,r);this._xhrs[s]=o}}}},{key:"_clearSubRefreshTimeout",value:function(e){void 0!==this._subRefreshTimeouts[e]&&(clearTimeout(this._subRefreshTimeouts[e]),delete this._subRefreshTimeouts[e])}},{key:"_subRefreshError",value:function(e,t){var n=this;if(this._debug("subscription refresh error",e,t),this._clearSubRefreshTimeout(e),null!==this._getSub(e)){var s=Math.round(1e3*Math.random()),r=setTimeout(function(){return n._subRefresh(e)},this._config.subRefreshInterval+s);this._subRefreshTimeouts[e]=r}}},{key:"_subRefreshResponse",value:function(e,t){var n=this;if(this._debug("subscription refresh success",e),this._clearSubRefreshTimeout(e),null!==this._getSub(e)&&!0===t.expires){var s=setTimeout(function(){return n._subRefresh(e)},this._getTTLMilliseconds(t.ttl));this._subRefreshTimeouts[e]=s}}},{key:"_subscribe",value:function(e,t){var n=this;this._debug("subscribing on",e.channel);var s=e.channel;if(s in this._subs||(this._subs[s]=e),!this.isConnected())return void e._setNew();e._setSubscribing(t);var r={method:this._methodType.SUBSCRIBE,params:{channel:s}};if((0,d.startsWith)(s,this._config.privateChannelPrefix))this._isSubscribeBatching?this._privateChannels[s]=!0:(this.startSubscribeBatching(),this._subscribe(e),this.stopSubscribeBatching());else{if(!0===e._needRecover()){r.params.recover=!0;var i=this._getLastSeq(s);i&&(r.params.seq=i);var o=this._getLastGen(s);o&&(r.params.gen=o);var u=this._getLastEpoch(s);u&&(r.params.epoch=u)}this._call(r).then(function(e){n._subscribeResponse(s,n._decoder.decodeCommandResult(n._methodType.SUBSCRIBE,e.result)),e.next&&e.next()},function(e){n._subscribeError(s,e.error),e.next&&e.next()})}}},{key:"_unsubscribe",value:function(e){this.isConnected()&&this._addMessage({method:this._methodType.UNSUBSCRIBE,params:{channel:e.channel}})}},{key:"_getTTLMilliseconds",value:function(e){return Math.min(1e3*e,2147483647)}},{key:"getSub",value:function(e){return this._getSub(e)}},{key:"_getSub",value:function(e){var t=this._subs[e];return t||null}},{key:"_connectResponse",value:function(e){var t=this,n=this._reconnecting;if(this._reconnecting=!1,this._resetRetry(),this._refreshRequired=!1,!this.isConnected()){null!==this._latencyStart&&(this._latency=(new Date).getTime()-this._latencyStart.getTime(),this._latencyStart=null),this._clientID=e.client,this._setStatus("connected"),this._refreshTimeout&&clearTimeout(this._refreshTimeout),e.expires&&(this._refreshTimeout=setTimeout(function(){return t._refresh()},this._getTTLMilliseconds(e.ttl))),this.startBatching(),this.startSubscribeBatching();for(var s in this._subs)if(this._subs.hasOwnProperty(s)){var r=this._subs[s];r._shouldResubscribe()&&this._subscribe(r,n)}this.stopSubscribeBatching(),this.stopBatching(),this._startPing();var i={client:e.client,transport:this._transportName,latency:this._latency};e.data&&(i.data=e.data),this.emit("connect",i)}}},{key:"_stopPing",value:function(){null!==this._pongTimeout&&(clearTimeout(this._pongTimeout),this._pongTimeout=null),null!==this._pingTimeout&&(clearTimeout(this._pingTimeout),this._pingTimeout=null)}},{key:"_startPing",value:function(){var e=this;!0!==this._config.ping||this._config.pingInterval<=0||this.isConnected()&&(this._pingTimeout=setTimeout(function(){if(!e.isConnected())return void e._stopPing();e.ping(),e._pongTimeout=setTimeout(function(){e._disconnect("no ping",!0)},e._config.pongWaitTimeout)},this._config.pingInterval))}},{key:"_restartPing",value:function(){this._stopPing(),this._startPing()}},{key:"_subscribeError",value:function(e,t){var n=this._getSub(e);if(n&&n._isSubscribing())return 0===t.code&&"timeout"===t.message?void this._disconnect("timeout",!0):void n._setSubscribeError(t)}},{key:"_subscribeResponse",value:function(e,t){var n=this,s=this._getSub(e);if(s&&s._isSubscribing()){var r=!1;"recovered"in t&&(r=t.recovered),s._setSubscribeSuccess(r);var i=t.publications;if(i&&i.length>0){i=i.reverse();for(var o in i)i.hasOwnProperty(o)&&this._handlePublication(e,i[o])}else t.recoverable&&(this._lastSeq[e]=t.seq||0,this._lastGen[e]=t.gen||0);if(this._lastEpoch[e]=t.epoch||"",t.recoverable&&(s._recoverable=!0),!0===t.expires){var u=setTimeout(function(){return n._subRefresh(e)},this._getTTLMilliseconds(t.ttl));this._subRefreshTimeouts[e]=u}}}},{key:"_handleReply",value:function(e,t){var n=e.id,s=e.result;if(!(n in this._callbacks))return void t();var r=this._callbacks[n];if(clearTimeout(this._callbacks[n].timeout),delete this._callbacks[n],(0,d.errorExists)(e)){var i=r.errback;if(!i)return void t();i({error:e.error,next:t})}else{var o=r.callback;if(!o)return;o({result:s,next:t})}}},{key:"_handleJoin",value:function(e,t){var n=this._getSub(e);n&&n.emit("join",t)}},{key:"_handleLeave",value:function(e,t){var n=this._getSub(e);n&&n.emit("leave",t)}},{key:"_handleUnsub",value:function(e,t){var n=this._getSub(e);n&&(n.unsubscribe(),!0===t.resubscribe&&n.subscribe())}},{key:"_handlePublication",value:function(e,t){var n=this._getSub(e);n&&(void 0!==t.seq&&(this._lastSeq[e]=t.seq),void 0!==t.gen&&(this._lastGen[e]=t.gen),n.emit("publish",t))}},{key:"_handleMessage",value:function(e){this.emit("message",e.data)}},{key:"_handlePush",value:function(e,t){var n=this._decoder.decodePush(e),s=0;"type"in n&&(s=n.type);var r=n.channel;if(s===this._pushType.PUBLICATION){var i=this._decoder.decodePushData(this._pushType.PUBLICATION,n.data);this._handlePublication(r,i)}else if(s===this._pushType.MESSAGE){var o=this._decoder.decodePushData(this._pushType.MESSAGE,n.data);this._handleMessage(o)}else if(s===this._pushType.JOIN){var u=this._decoder.decodePushData(this._pushType.JOIN,n.data);this._handleJoin(r,u)}else if(s===this._pushType.LEAVE){var a=this._decoder.decodePushData(this._pushType.LEAVE,n.data);this._handleLeave(r,a)}else if(s===this._pushType.UNSUB){var c=this._decoder.decodePushData(this._pushType.UNSUB,n.data);this._handleUnsub(r,c)}t()}},{key:"_dispatchReply",value:function(e){var t,n=new Promise(function(e){t=e});if(void 0===e||null===e)return this._debug("dispatch: got undefined or null reply"),t(),n;var s=e.id;return s&&s>0?this._handleReply(e,t):this._handlePush(e.result,t),n}},{key:"_flush",value:function(){var e=this._messages.slice(0);this._messages=[],this._transportSend(e)}},{key:"_ping",value:function(){var e=this,t={method:this._methodType.PING};this._call(t).then(function(t){e._pingResponse(e._decoder.decodeCommandResult(e._methodType.PING,t.result)),t.next&&t.next()},function(t){e._debug("ping error",t.error),t.next&&t.next()})}},{key:"_pingResponse",value:function(e){this.isConnected()&&(this._stopPing(),this._startPing())}},{key:"_getLastSeq",value:function(e){var t=this._lastSeq[e];return t||0}},{key:"_getLastGen",value:function(e){var t=this._lastGen[e];return t||0}},{key:"_getLastEpoch",value:function(e){var t=this._lastEpoch[e];return t||""}},{key:"_createErrorObject",value:function(e,t){return{message:e,code:t||0}}},{key:"_registerCall",value:function(e,t,n){var s=this;this._callbacks[e]={callback:t,errback:n,timeout:null},this._callbacks[e].timeout=setTimeout(function(){delete s._callbacks[e],(0,d.isFunction)(n)&&n({error:s._createErrorObject("timeout")})},this._config.timeout)}},{key:"_addMessage",value:function(e){var t=this._nextMessageId();return e.id=t,!0===this._isBatching?this._messages.push(e):this._transportSend([e]),t}},{key:"isConnected",value:function(){return this._isConnected()}},{key:"connect",value:function(){this._connect()}},{key:"disconnect",value:function(){this._disconnect("client",!1)}},{key:"ping",value:function(){return this._ping()}},{key:"startBatching",value:function(){this._isBatching=!0}},{key:"stopBatching",value:function(){this._isBatching=!1,this._flush()}},{key:"startSubscribeBatching",value:function(){this._isSubscribeBatching=!0}},{key:"stopSubscribeBatching",value:function(){var e=this;this._isSubscribeBatching=!1;var t=this._privateChannels;this._privateChannels={};var n=[];for(var s in t)if(t.hasOwnProperty(s)){var r=this._getSub(s);if(!r)continue;n.push(s)}if(0===n.length)return void this._debug("no private channels found, no need to make request");var i={client:this._clientID,channels:n},o=this._clientID,u=this._newXHRID(),a=function(t){if(u in e._xhrs&&delete e._xhrs[u],e._clientID===o)if(t.error||200!==t.status){e._debug("authorization request failed");for(var s in n)if(n.hasOwnProperty(s)){var r=n[s];e._subscribeError(r,e._createErrorObject("authorization request failed"))}}else{var i={};if(t.data.channels)for(var a in t.data.channels){var c=t.data.channels[a];c.channel&&(i[c.channel]=c.token)}var h=!1;e._isBatching||(e.startBatching(),h=!0);for(var l in n)if(n.hasOwnProperty(l)){var _=function(){var t=n[l],s=i[t];if(!s)return e._subscribeError(t,e._createErrorObject("permission denied",103)),"continue";var r={method:e._methodType.SUBSCRIBE,params:{channel:t,token:s}},o=e._getSub(t);if(null===o)return"continue";if(!0===o._needRecover()){r.params.recover=!0;var u=e._getLastSeq(t);u&&(r.params.seq=u);var a=e._getLastGen(t);a&&(r.params.gen=a);var c=e._getLastEpoch(t);c&&(r.params.epoch=c)}e._call(r).then(function(n){e._subscribeResponse(t,e._decoder.decodeCommandResult(e._methodType.SUBSCRIBE,n.result)),n.next&&n.next()},function(n){e._subscribeError(t,n.error),n.next&&n.next()})}();if("continue"===_)continue}h&&e.stopBatching()}};if(null!==this._config.onPrivateSubscribe)this._config.onPrivateSubscribe({data:i},a);else{var c=this._ajax(this._config.subscribeEndpoint,this._config.subscribeParams,this._config.subscribeHeaders,i,a);this._xhrs[u]=c}}},{key:"subscribe",value:function(e,t){var n=this._getSub(e);if(null!==n)return n._setEvents(t),n._isUnsubscribed()&&n.subscribe(),n;var s=new _.default(this,e,t);return this._subs[e]=s,s.subscribe(),s}}]),n}(h.default)}).call(t,n(3))},11:function(e,t,n){"use strict";function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n0&&this._events[e].length>r&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(e,t){function n(){this.removeListener(e,n),r||(r=!0,t.apply(this,arguments))}if(!s(t))throw TypeError("listener must be a function");var r=!1;return n.listener=t,this.on(e,n),this},n.prototype.removeListener=function(e,t){var n,r,o,u;if(!s(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(n=this._events[e],o=n.length,r=-1,n===t||s(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(i(n)){for(u=o;u-- >0;)if(n[u]===t||n[u].listener&&n[u].listener===t){r=u;break}if(r<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},n.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[e],s(n))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},n.prototype.listeners=function(e){return this._events&&this._events[e]?s(this._events[e])?[this._events[e]]:this._events[e].slice():[]},n.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(s(t))return 1;if(t)return t.length}return 0},n.listenerCount=function(e,t){return e.listenerCount(t)}},7:function(e,t,n){"use strict";(function(e){function n(e,t){return 0===e.lastIndexOf(t,0)}function s(e){return void 0!==e&&null!==e&&"function"==typeof e}function r(t,n){if(e.console){var r=e.console[t];s(r)&&r.apply(e.console,n)}}function i(e,t,n){var s=.5*Math.random(),r=Math.min(n,t*Math.pow(2,e+1));return Math.floor((1-s)*r)}function o(e){return"error"in e&&null!==e.error}Object.defineProperty(t,"__esModule",{value:!0}),t.startsWith=n,t.isFunction=s,t.log=r,t.backoff=i,t.errorExists=o}).call(t,n(3))}})}); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Centrifuge",[],t):"object"==typeof exports?exports.Centrifuge=t():e.Centrifuge=t()}("undefined"!=typeof self?self:this,function(){return function(e){function t(s){if(n[s])return n[s].exports;var r=n[s]={i:s,l:!1,exports:{}};return e[s].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,s){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:s})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=31)}({10:function(e,t,n){"use strict";(function(e){function s(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0}),t.Centrifuge=void 0;var u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=function(){function e(e,t){for(var n=0;n0&&(u+="&"),u+=encodeURIComponent(c)+"="+encodeURIComponent(n[c]));u.length>0&&(u="?"+u),a.open("POST",t+u,!0),"withCredentials"in a&&(a.withCredentials=!0),a.setRequestHeader("X-Requested-With","XMLHttpRequest"),a.setRequestHeader("Content-Type","application/json");for(var h in s)s.hasOwnProperty(h)&&a.setRequestHeader(h,s[h]);return a.onreadystatechange=function(){if(4===a.readyState)if(200===a.status){var e=void 0,t=!1;try{e=JSON.parse(a.responseText),t=!0}catch(e){i({error:"Invalid JSON. Data was: "+a.responseText,status:200,data:null})}t&&i({data:e,status:200})}else o._log("wrong status code in AJAX response",a.status),i({status:a.status,data:null})},setTimeout(function(){return a.send(JSON.stringify(r))},20),a}},{key:"_log",value:function(){(0,d.log)("info",arguments)}},{key:"_debug",value:function(){!0===this._config.debug&&(0,d.log)("debug",arguments)}},{key:"_websocketSupported",value:function(){return!("function"!=typeof WebSocket&&"object"!==("undefined"==typeof WebSocket?"undefined":u(WebSocket)))}},{key:"_setFormat",value:function(e){if(!this._formatOverride(e)){if("protobuf"===e)throw new Error("not implemented by JSON only Centrifuge client – use client with Protobuf");this._binary=!1,this._methodType=f.JsonMethodType,this._pushType=f.JsonPushType,this._encoder=new f.JsonEncoder,this._decoder=new f.JsonDecoder}}},{key:"_formatOverride",value:function(e){return!1}},{key:"_configure",value:function(t){if(!("Promise"in e))throw new Error("Promise polyfill required");if(Object.assign(this._config,t||{}),this._debug("centrifuge config",this._config),!this._url)throw new Error("url required");if((0,d.startsWith)(this._url,"ws")&&this._url.indexOf("format=protobuf")>-1?this._setFormat("protobuf"):this._setFormat("json"),(0,d.startsWith)(this._url,"http"))if(this._debug("client will try to connect to SockJS endpoint"),null!==this._config.sockjs)this._debug("SockJS explicitly provided in options"),this._sockjs=this._config.sockjs;else{if(void 0===e.SockJS)throw new Error("SockJS not found, use ws:// in url or include SockJS");this._debug("use globally defined SockJS"),this._sockjs=e.SockJS}else this._debug("client will connect to websocket endpoint")}},{key:"_setStatus",value:function(e){this._status!==e&&(this._debug("Status",this._status,"->",e),this._status=e)}},{key:"_isDisconnected",value:function(){return"disconnected"===this._status}},{key:"_isConnecting",value:function(){return"connecting"===this._status}},{key:"_isConnected",value:function(){return"connected"===this._status}},{key:"_nextMessageId",value:function(){return++this._messageId}},{key:"_resetRetry",value:function(){this._debug("reset retries count to 0"),this._retries=0}},{key:"_getRetryInterval",value:function(){var e=(0,d.backoff)(this._retries,this._config.minRetry,this._config.maxRetry);return this._retries+=1,e}},{key:"_abortInflightXHRs",value:function(){for(var e in this._xhrs){try{this._xhrs[e].abort()}catch(e){this._debug("error aborting xhr",e)}delete this._xhrs[e]}}},{key:"_clearConnectedState",value:function(e){this._clientID=null,this._stopPing();for(var t in this._callbacks)if(this._callbacks.hasOwnProperty(t)){var n=this._callbacks[t];clearTimeout(n.timeout);var s=n.errback;if(!s)continue;s({error:this._createErrorObject("disconnected")})}this._callbacks={};for(var r in this._subs)if(this._subs.hasOwnProperty(r)){var i=this._subs[r];e?(i._isSuccess()&&(i._triggerUnsubscribe(),i._recover=!0),i._shouldResubscribe()&&i._setSubscribing()):i._setUnsubscribed()}this._abortInflightXHRs(),null!==this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null);for(var o in this._subRefreshTimeouts)this._subRefreshTimeouts.hasOwnProperty(o)&&this._subRefreshTimeouts[o]&&this._clearSubRefreshTimeout(o);this._subRefreshTimeouts={},this._reconnect||(this._subs={})}},{key:"_isTransportOpen",value:function(){return this._isSockjs?this._transport&&this._transport.transport&&this._transport.transport.readyState===this._transport.transport.OPEN:this._transport&&this._transport.readyState===this._transport.OPEN}},{key:"_transportSend",value:function(e){if(!e.length)return!0;if(!this._isTransportOpen()){for(var t in e){var n=t.id;if(n in this._callbacks){var s=this._callbacks[n];clearTimeout(this._callbacks[n].timeout),delete this._callbacks[n];(0,s.errback)({error:this._createErrorObject("connection closed",0)})}}return!1}return this._transport.send(this._encoder.encodeCommands(e)),!0}},{key:"_setupTransport",value:function(){var e=this;if(this._isSockjs=!1,null!==this._sockjs){var t={transports:this._config.sockjsTransports};null!==this._config.sockjsServer&&(t.server=this._config.sockjsServer),this._isSockjs=!0,this._transport=new this._sockjs(this._url,null,t)}else{if(!this._websocketSupported())return void this._debug("No Websocket support and no SockJS configured, can not connect");this._transport=new WebSocket(this._url),!0===this._binary&&(this._transport.binaryType="arraybuffer")}this._transport.onopen=function(){e._transportClosed=!1,e._isSockjs?(e._transportName="sockjs-"+e._transport.transport,e._transport.onheartbeat=function(){return e._restartPing()}):e._transportName="websocket";var t={};(e._token||e._connectData)&&(t.params={}),e._token&&(t.params.token=e._token),e._connectData&&(t.params.data=e._connectData),e._latencyStart=new Date,e._call(t).then(function(t){e._connectResponse(e._decoder.decodeCommandResult(e._methodType.CONNECT,t.result)),t.next&&t.next()},function(t){109===t.error.code&&(e._refreshRequired=!0),e._disconnect("connect error",!0),t.next&&t.next()})},this._transport.onerror=function(t){e._debug("transport level error",t)},this._transport.onclose=function(t){e._transportClosed=!0;var n="connection closed",s=!0;if(t&&"reason"in t&&t.reason)try{var r=JSON.parse(t.reason);e._debug("reason is an advice object",r),n=r.reason,s=r.reconnect}catch(s){n=t.reason,e._debug("reason is a plain string",n)}if(null!==e._config.onTransportClose&&e._config.onTransportClose({event:t,reason:n,reconnect:s}),e._disconnect(n,s),!0===e._reconnect){e._reconnecting=!0;var i=e._getRetryInterval();e._debug("reconnect after "+i+" milliseconds"),setTimeout(function(){!0===e._reconnect&&(e._refreshRequired?e._refresh():e._connect())},i)}},this._transport.onmessage=function(t){e._dataReceived(t.data)}}},{key:"rpc",value:function(e){var t=this,n={method:this._methodType.RPC,params:{data:e}};return this.isConnected()?this._call(n).then(function(e){return e.next&&e.next(),t._decoder.decodeCommandResult(t._methodType.RPC,e.result)},function(e){return e.next&&e.next(),e.error}):Promise.reject(this._createErrorObject("connection closed",0))}},{key:"send",value:function(e){var t={method:this._methodType.SEND,params:{data:e}};return this.isConnected()&&this._transportSend([t])?Promise.resolve({}):Promise.reject(this._createErrorObject("connection closed",0))}},{key:"publish",value:function(e,t){var n={method:this._methodType.PUBLISH,params:{channel:e,data:t}};return this.isConnected()?this._call(n).then(function(e){return e.next&&e.next(),{}}):Promise.reject(this._createErrorObject("connection closed",0))}},{key:"_dataReceived",value:function(e){var t=this,n=this._decoder.decodeReplies(e),s=Promise.resolve();for(var r in n)!function(e){n.hasOwnProperty(e)&&(s=s.then(function(){return t._dispatchReply(n[e])}))}(r);this._restartPing()}},{key:"_call",value:function(e){var t=this;return new Promise(function(n,s){var r=t._addMessage(e);t._registerCall(r,n,s)})}},{key:"_connect",value:function(){if(this.isConnected())return void this._debug("connect called when already connected");"connecting"!==this._status&&(this._debug("start connecting"),this._setStatus("connecting"),this._clientID=null,this._reconnect=!0,this._setupTransport())}},{key:"_disconnect",value:function(e,t){if(!this._isDisconnected()){this._debug("disconnected:",e,t);var n=t||!1;!1===n&&(this._reconnect=!1),this._clearConnectedState(n),this._isDisconnected()||(this._setStatus("disconnected"),this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null),!1===this._reconnecting&&this.emit("disconnect",{reason:e,reconnect:n})),this._transportClosed||this._transport.close()}}},{key:"_refreshFailed",value:function(){this._numRefreshFailed=0,this._isDisconnected()||this._disconnect("refresh failed",!1),null!==this._config.onRefreshFailed&&this._config.onRefreshFailed()}},{key:"_refresh",value:function(){var e=this;if(this._debug("refresh token"),0===this._config.refreshAttempts)return this._debug("refresh attempts set to 0, do not send refresh request at all"),void this._refreshFailed();null!==this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null);var t=this._clientID,n=this._newXHRID(),s=function(s){if(n in e._xhrs&&delete e._xhrs[n],e._clientID===t){if(s.error||200!==s.status){if(s.error?e._debug("error refreshing connection token",s.error):e._debug("error refreshing connection token: wrong status code",s.status),e._numRefreshFailed++,null!==e._refreshTimeout&&(clearTimeout(e._refreshTimeout),e._refreshTimeout=null),null!==e._config.refreshAttempts&&e._numRefreshFailed>=e._config.refreshAttempts)return void e._refreshFailed();var r=Math.round(1e3*Math.random()*Math.max(e._numRefreshFailed,20)),i=e._config.refreshInterval+r;return void(e._refreshTimeout=setTimeout(function(){return e._refresh()},i))}if(e._numRefreshFailed=0,e._token=s.data.token,!e._token)return void e._refreshFailed();if(e._isDisconnected()&&e._reconnect)e._debug("token refreshed, connect from scratch"),e._connect();else{e._debug("send refreshed token");var o={method:e._methodType.REFRESH,params:{token:e._token}};e._call(o).then(function(t){e._refreshResponse(e._decoder.decodeCommandResult(e._methodType.REFRESH,t.result)),t.next&&t.next()},function(t){e._refreshError(t.error),t.next&&t.next()})}}};if(null!==this._config.onRefresh){var r={};this._config.onRefresh(r,s)}else{var i=this._ajax(this._config.refreshEndpoint,this._config.refreshParams,this._config.refreshHeaders,this._config.refreshData,s);this._xhrs[n]=i}}},{key:"_refreshError",value:function(e){var t=this;this._debug("refresh error",e),this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null);var n=this._config.refreshInterval+Math.round(1e3*Math.random());this._refreshTimeout=setTimeout(function(){return t._refresh()},n)}},{key:"_refreshResponse",value:function(e){var t=this;this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null),e.expires&&(this._clientID=e.client,this._refreshTimeout=setTimeout(function(){return t._refresh()},this._getTTLMilliseconds(e.ttl)))}},{key:"_newXHRID",value:function(){return++this._xhrID}},{key:"_subRefresh",value:function(e){var t=this;if(this._debug("refresh subscription token for channel",e),void 0!==this._subRefreshTimeouts[e]){this._clearSubRefreshTimeout(e);var n=this._clientID,s=this._newXHRID(),r=function(r){if(s in t._xhrs&&delete t._xhrs[s],!r.error&&200===r.status&&t._clientID===n){var o={};if(r.data.channels)for(var u in i.channels){var a=r.data.channels[u];a.channel&&(o[a.channel]=a.token)}var c=o[e];if(c){var h={method:t._methodType.SUB_REFRESH,params:{channel:e,token:c}};null!==t._getSub(e)&&t._call(h).then(function(n){t._subRefreshResponse(e,t._decoder.decodeCommandResult(t._methodType.SUB_REFRESH,n.result)),n.next&&n.next()},function(n){t._subRefreshError(e,n.error),n.next&&n.next()})}}},i={client:this._clientID,channels:[e]};if(null!==this._config.onPrivateSubscribe)this._config.onPrivateSubscribe({data:i},r);else{var o=this._ajax(this._config.subscribeEndpoint,this._config.subscribeParams,this._config.subscribeHeaders,i,r);this._xhrs[s]=o}}}},{key:"_clearSubRefreshTimeout",value:function(e){void 0!==this._subRefreshTimeouts[e]&&(clearTimeout(this._subRefreshTimeouts[e]),delete this._subRefreshTimeouts[e])}},{key:"_subRefreshError",value:function(e,t){var n=this;if(this._debug("subscription refresh error",e,t),this._clearSubRefreshTimeout(e),null!==this._getSub(e)){var s=Math.round(1e3*Math.random()),r=setTimeout(function(){return n._subRefresh(e)},this._config.subRefreshInterval+s);this._subRefreshTimeouts[e]=r}}},{key:"_subRefreshResponse",value:function(e,t){var n=this;if(this._debug("subscription refresh success",e),this._clearSubRefreshTimeout(e),null!==this._getSub(e)&&!0===t.expires){var s=setTimeout(function(){return n._subRefresh(e)},this._getTTLMilliseconds(t.ttl));this._subRefreshTimeouts[e]=s}}},{key:"_subscribe",value:function(e,t){var n=this;this._debug("subscribing on",e.channel);var s=e.channel;if(s in this._subs||(this._subs[s]=e),!this.isConnected())return void e._setNew();e._setSubscribing(t);var r={method:this._methodType.SUBSCRIBE,params:{channel:s}};if((0,d.startsWith)(s,this._config.privateChannelPrefix))this._isSubscribeBatching?this._privateChannels[s]=!0:(this.startSubscribeBatching(),this._subscribe(e),this.stopSubscribeBatching());else{if(!0===e._needRecover()){r.params.recover=!0;var i=this._getLastSeq(s);i&&(r.params.seq=i);var o=this._getLastGen(s);o&&(r.params.gen=o);var u=this._getLastEpoch(s);u&&(r.params.epoch=u)}this._call(r).then(function(e){n._subscribeResponse(s,n._decoder.decodeCommandResult(n._methodType.SUBSCRIBE,e.result)),e.next&&e.next()},function(e){n._subscribeError(s,e.error),e.next&&e.next()})}}},{key:"_unsubscribe",value:function(e){this.isConnected()&&this._addMessage({method:this._methodType.UNSUBSCRIBE,params:{channel:e.channel}})}},{key:"_getTTLMilliseconds",value:function(e){return Math.min(1e3*e,2147483647)}},{key:"getSub",value:function(e){return this._getSub(e)}},{key:"_getSub",value:function(e){var t=this._subs[e];return t||null}},{key:"_connectResponse",value:function(e){var t=this,n=this._reconnecting;if(this._reconnecting=!1,this._resetRetry(),this._refreshRequired=!1,!this.isConnected()){null!==this._latencyStart&&(this._latency=(new Date).getTime()-this._latencyStart.getTime(),this._latencyStart=null),this._clientID=e.client,this._setStatus("connected"),this._refreshTimeout&&clearTimeout(this._refreshTimeout),e.expires&&(this._refreshTimeout=setTimeout(function(){return t._refresh()},this._getTTLMilliseconds(e.ttl))),this.startBatching(),this.startSubscribeBatching();for(var s in this._subs)if(this._subs.hasOwnProperty(s)){var r=this._subs[s];r._shouldResubscribe()&&this._subscribe(r,n)}this.stopSubscribeBatching(),this.stopBatching(),this._startPing();var i={client:e.client,transport:this._transportName,latency:this._latency};e.data&&(i.data=e.data),this.emit("connect",i)}}},{key:"_stopPing",value:function(){null!==this._pongTimeout&&(clearTimeout(this._pongTimeout),this._pongTimeout=null),null!==this._pingTimeout&&(clearTimeout(this._pingTimeout),this._pingTimeout=null)}},{key:"_startPing",value:function(){var e=this;!0!==this._config.ping||this._config.pingInterval<=0||this.isConnected()&&(this._pingTimeout=setTimeout(function(){if(!e.isConnected())return void e._stopPing();e.ping(),e._pongTimeout=setTimeout(function(){e._disconnect("no ping",!0)},e._config.pongWaitTimeout)},this._config.pingInterval))}},{key:"_restartPing",value:function(){this._stopPing(),this._startPing()}},{key:"_subscribeError",value:function(e,t){var n=this._getSub(e);if(n&&n._isSubscribing())return 0===t.code&&"timeout"===t.message?void this._disconnect("timeout",!0):void n._setSubscribeError(t)}},{key:"_subscribeResponse",value:function(e,t){var n=this,s=this._getSub(e);if(s&&s._isSubscribing()){var r=!1;"recovered"in t&&(r=t.recovered),s._setSubscribeSuccess(r);var i=t.publications;if(i&&i.length>0){i=i.reverse();for(var o in i)i.hasOwnProperty(o)&&this._handlePublication(e,i[o])}else t.recoverable&&(this._lastSeq[e]=t.seq||0,this._lastGen[e]=t.gen||0);if(this._lastEpoch[e]=t.epoch||"",t.recoverable&&(s._recoverable=!0),!0===t.expires){var u=setTimeout(function(){return n._subRefresh(e)},this._getTTLMilliseconds(t.ttl));this._subRefreshTimeouts[e]=u}}}},{key:"_handleReply",value:function(e,t){var n=e.id,s=e.result;if(!(n in this._callbacks))return void t();var r=this._callbacks[n];if(clearTimeout(this._callbacks[n].timeout),delete this._callbacks[n],(0,d.errorExists)(e)){var i=r.errback;if(!i)return void t();i({error:e.error,next:t})}else{var o=r.callback;if(!o)return;o({result:s,next:t})}}},{key:"_handleJoin",value:function(e,t){var n=this._getSub(e);n&&n.emit("join",t)}},{key:"_handleLeave",value:function(e,t){var n=this._getSub(e);n&&n.emit("leave",t)}},{key:"_handleUnsub",value:function(e,t){var n=this._getSub(e);n&&(n.unsubscribe(),!0===t.resubscribe&&n.subscribe())}},{key:"_handlePublication",value:function(e,t){var n=this._getSub(e);n&&(void 0!==t.seq&&(this._lastSeq[e]=t.seq),void 0!==t.gen&&(this._lastGen[e]=t.gen),n.emit("publish",t))}},{key:"_handleMessage",value:function(e){this.emit("message",e.data)}},{key:"_handlePush",value:function(e,t){var n=this._decoder.decodePush(e),s=0;"type"in n&&(s=n.type);var r=n.channel;if(s===this._pushType.PUBLICATION){var i=this._decoder.decodePushData(this._pushType.PUBLICATION,n.data);this._handlePublication(r,i)}else if(s===this._pushType.MESSAGE){var o=this._decoder.decodePushData(this._pushType.MESSAGE,n.data);this._handleMessage(o)}else if(s===this._pushType.JOIN){var u=this._decoder.decodePushData(this._pushType.JOIN,n.data);this._handleJoin(r,u)}else if(s===this._pushType.LEAVE){var a=this._decoder.decodePushData(this._pushType.LEAVE,n.data);this._handleLeave(r,a)}else if(s===this._pushType.UNSUB){var c=this._decoder.decodePushData(this._pushType.UNSUB,n.data);this._handleUnsub(r,c)}t()}},{key:"_dispatchReply",value:function(e){var t,n=new Promise(function(e){t=e});if(void 0===e||null===e)return this._debug("dispatch: got undefined or null reply"),t(),n;var s=e.id;return s&&s>0?this._handleReply(e,t):this._handlePush(e.result,t),n}},{key:"_flush",value:function(){var e=this._messages.slice(0);this._messages=[],this._transportSend(e)}},{key:"_ping",value:function(){var e=this,t={method:this._methodType.PING};this._call(t).then(function(t){e._pingResponse(e._decoder.decodeCommandResult(e._methodType.PING,t.result)),t.next&&t.next()},function(t){e._debug("ping error",t.error),t.next&&t.next()})}},{key:"_pingResponse",value:function(e){this.isConnected()&&(this._stopPing(),this._startPing())}},{key:"_getLastSeq",value:function(e){var t=this._lastSeq[e];return t||0}},{key:"_getLastGen",value:function(e){var t=this._lastGen[e];return t||0}},{key:"_getLastEpoch",value:function(e){var t=this._lastEpoch[e];return t||""}},{key:"_createErrorObject",value:function(e,t){return{message:e,code:t||0}}},{key:"_registerCall",value:function(e,t,n){var s=this;this._callbacks[e]={callback:t,errback:n,timeout:null},this._callbacks[e].timeout=setTimeout(function(){delete s._callbacks[e],(0,d.isFunction)(n)&&n({error:s._createErrorObject("timeout")})},this._config.timeout)}},{key:"_addMessage",value:function(e){var t=this._nextMessageId();return e.id=t,!0===this._isBatching?this._messages.push(e):this._transportSend([e]),t}},{key:"isConnected",value:function(){return this._isConnected()}},{key:"connect",value:function(){this._connect()}},{key:"disconnect",value:function(){this._disconnect("client",!1)}},{key:"ping",value:function(){return this._ping()}},{key:"startBatching",value:function(){this._isBatching=!0}},{key:"stopBatching",value:function(){this._isBatching=!1,this._flush()}},{key:"startSubscribeBatching",value:function(){this._isSubscribeBatching=!0}},{key:"stopSubscribeBatching",value:function(){var e=this;this._isSubscribeBatching=!1;var t=this._privateChannels;this._privateChannels={};var n=[];for(var s in t)if(t.hasOwnProperty(s)){var r=this._getSub(s);if(!r)continue;n.push(s)}if(0===n.length)return void this._debug("no private channels found, no need to make request");var i={client:this._clientID,channels:n},o=this._clientID,u=this._newXHRID(),a=function(t){if(u in e._xhrs&&delete e._xhrs[u],e._clientID===o)if(t.error||200!==t.status){e._debug("authorization request failed");for(var s in n)if(n.hasOwnProperty(s)){var r=n[s];e._subscribeError(r,e._createErrorObject("authorization request failed"))}}else{var i={};if(t.data.channels)for(var a in t.data.channels){var c=t.data.channels[a];c.channel&&(i[c.channel]=c.token)}var h=!1;e._isBatching||(e.startBatching(),h=!0);for(var l in n)if(n.hasOwnProperty(l)){var _=function(){var t=n[l],s=i[t];if(!s)return e._subscribeError(t,e._createErrorObject("permission denied",103)),"continue";var r={method:e._methodType.SUBSCRIBE,params:{channel:t,token:s}},o=e._getSub(t);if(null===o)return"continue";if(!0===o._needRecover()){r.params.recover=!0;var u=e._getLastSeq(t);u&&(r.params.seq=u);var a=e._getLastGen(t);a&&(r.params.gen=a);var c=e._getLastEpoch(t);c&&(r.params.epoch=c)}e._call(r).then(function(n){e._subscribeResponse(t,e._decoder.decodeCommandResult(e._methodType.SUBSCRIBE,n.result)),n.next&&n.next()},function(n){e._subscribeError(t,n.error),n.next&&n.next()})}();if("continue"===_)continue}h&&e.stopBatching()}};if(null!==this._config.onPrivateSubscribe)this._config.onPrivateSubscribe({data:i},a);else{var c=this._ajax(this._config.subscribeEndpoint,this._config.subscribeParams,this._config.subscribeHeaders,i,a);this._xhrs[u]=c}}},{key:"subscribe",value:function(e,t){var n=this._getSub(e);if(null!==n)return n._setEvents(t),n._isUnsubscribed()&&n.subscribe(),n;var s=new _.default(this,e,t);return this._subs[e]=s,s.subscribe(),s}}]),n}(h.default)}).call(t,n(3))},11:function(e,t,n){"use strict";function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n0&&this._events[e].length>r&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(e,t){function n(){this.removeListener(e,n),r||(r=!0,t.apply(this,arguments))}if(!s(t))throw TypeError("listener must be a function");var r=!1;return n.listener=t,this.on(e,n),this},n.prototype.removeListener=function(e,t){var n,r,o,u;if(!s(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(n=this._events[e],o=n.length,r=-1,n===t||s(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(i(n)){for(u=o;u-- >0;)if(n[u]===t||n[u].listener&&n[u].listener===t){r=u;break}if(r<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},n.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[e],s(n))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},n.prototype.listeners=function(e){return this._events&&this._events[e]?s(this._events[e])?[this._events[e]]:this._events[e].slice():[]},n.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(s(t))return 1;if(t)return t.length}return 0},n.listenerCount=function(e,t){return e.listenerCount(t)}},7:function(e,t,n){"use strict";(function(e){function n(e,t){return 0===e.lastIndexOf(t,0)}function s(e){return void 0!==e&&null!==e&&"function"==typeof e}function r(t,n){if(e.console){var r=e.console[t];s(r)&&r.apply(e.console,n)}}function i(e,t,n){var s=.5*Math.random(),r=Math.min(n,t*Math.pow(2,e+1));return Math.floor((1-s)*r)}function o(e){return"error"in e&&null!==e.error}Object.defineProperty(t,"__esModule",{value:!0}),t.startsWith=n,t.isFunction=s,t.log=r,t.backoff=i,t.errorExists=o}).call(t,n(3))}})}); //# sourceMappingURL=centrifuge.min.js.map \ No newline at end of file diff --git a/dist/centrifuge.min.js.map b/dist/centrifuge.min.js.map index de0c4278..28a4ce78 100644 --- a/dist/centrifuge.min.js.map +++ b/dist/centrifuge.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///centrifuge.min.js","webpack:///webpack/bootstrap 80f113d0e59618aae6bd","webpack:///./src/centrifuge.js","webpack:///./src/subscription.js","webpack:///./src/json.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/index.js","webpack:///./node_modules/events/events.js","webpack:///./src/utils.js"],"names":["root","factory","exports","module","define","amd","self","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","10","global","_interopRequireDefault","obj","default","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","create","constructor","value","writable","setPrototypeOf","__proto__","Centrifuge","undefined","_typeof","Symbol","iterator","_createClass","defineProperties","target","props","length","descriptor","key","protoProps","staticProps","_events","_events2","_subscription","_subscription2","_json","_utils","_EventEmitter","url","options","_this","getPrototypeOf","_url","_sockjs","_isSockjs","_binary","_methodType","_pushType","_encoder","_decoder","_status","_reconnect","_reconnecting","_transport","_transportName","_transportClosed","_messageId","_clientID","_refreshRequired","_subs","_lastSeq","_lastGen","_lastEpoch","_messages","_isBatching","_isSubscribeBatching","_privateChannels","_numRefreshFailed","_refreshTimeout","_pingTimeout","_pongTimeout","_subRefreshTimeouts","_retries","_callbacks","_latency","_latencyStart","_connectData","_token","_xhrID","_xhrs","_config","debug","sockjs","promise","minRetry","maxRetry","timeout","ping","pingInterval","pongWaitTimeout","privateChannelPrefix","onTransportClose","sockjsServer","sockjsTransports","refreshEndpoint","refreshHeaders","refreshParams","refreshData","refreshAttempts","refreshInterval","onRefreshFailed","onRefresh","subscribeEndpoint","subscribeHeaders","subscribeParams","subRefreshInterval","onPrivateSubscribe","_configure","token","data","params","headers","callback","_this2","query","_debug","JSON","stringify","xhr","XMLHttpRequest","ActiveXObject","encodeURIComponent","open","withCredentials","setRequestHeader","headerName","onreadystatechange","readyState","status","parsed","parse","responseText","e","error","_log","setTimeout","send","log","arguments","WebSocket","format","_formatOverride","Error","JsonMethodType","JsonPushType","JsonEncoder","JsonDecoder","configuration","assign","startsWith","indexOf","_setFormat","SockJS","newStatus","interval","backoff","xhrID","abort","reconnect","_stopPing","id","callbacks","clearTimeout","errback","_createErrorObject","channel","sub","_isSuccess","_triggerUnsubscribe","_recover","_setSubscribing","_setUnsubscribed","_abortInflightXHRs","_clearSubRefreshTimeout","transport","OPEN","commands","_isTransportOpen","command","encodeCommands","_this3","sockjsOptions","transports","server","_websocketSupported","binaryType","onopen","onheartbeat","_restartPing","msg","Date","_call","then","resolveCtx","_connectResponse","decodeCommandResult","CONNECT","result","next","rejectCtx","code","_disconnect","onerror","onclose","closeEvent","reason","needReconnect","advice","event","_getRetryInterval","_refresh","_connect","onmessage","_dataReceived","_this4","method","RPC","isConnected","Promise","reject","SEND","_transportSend","resolve","PUBLISH","_this5","replies","decodeReplies","_dispatchReply","_this6","_addMessage","_registerCall","_setStatus","_setupTransport","shouldReconnect","_isDisconnected","_clearConnectedState","emit","close","_this7","_refreshFailed","clientID","_newXHRID","cb","resp","jitter","Math","round","random","max","REFRESH","_refreshResponse","_refreshError","context","_ajax","err","_this8","_this9","expires","client","_getTTLMilliseconds","ttl","_this10","channelsData","channels","channelData","SUB_REFRESH","_getSub","_subRefreshResponse","_subRefreshError","_this11","subRefreshTimeout","_subRefresh","_this12","isResubscribe","_this13","_setNew","SUBSCRIBE","startSubscribeBatching","_subscribe","stopSubscribeBatching","_needRecover","recover","seq","_getLastSeq","gen","_getLastGen","epoch","_getLastEpoch","_subscribeResponse","_subscribeError","UNSUBSCRIBE","min","_this14","wasReconnecting","_resetRetry","getTime","startBatching","_shouldResubscribe","stopBatching","_startPing","ctx","latency","_this15","_isSubscribing","message","_setSubscribeError","_this16","recovered","_setSubscribeSuccess","pubs","publications","reverse","_handlePublication","recoverable","_recoverable","reply","errorExists","join","leave","unsub","unsubscribe","resubscribe","subscribe","pub","push","decodePush","type","PUBLICATION","decodePushData","MESSAGE","_handleMessage","JOIN","_handleJoin","LEAVE","_handleLeave","UNSUB","_handleUnsub","_handleReply","_handlePush","messages","slice","_this17","PING","_pingResponse","lastSeq","lastGen","lastEpoch","_this18","isFunction","_nextMessageId","_isConnected","_ping","_flush","_this19","authChannels","batch","_ret2","events","currentSub","_setEvents","_isUnsubscribed","11","_STATE_NEW","Subscription","centrifuge","_centrifuge","_error","_isResubscribe","_ready","_subscriptionPromise","_noResubscribe","_initializePromise","_promises","on","errContext","_resolve","_reject","toString","knownEvents","ev","successContext","_getSubscribeSuccessContext","to","_getSubscribeErrorContext","noResubscribe","needTrigger","subscribeErrorContext","_unsubscribe","subPromise","_isError","res","rej","_methodCall","PRESENCE","PRESENCE_STATS","HISTORY","12","encodedCommands","encodedReplies","split","methodType","pushType","3","g","Function","eval","window","31","6","EventEmitter","_maxListeners","arg","isNumber","isObject","isUndefined","defaultMaxListeners","setMaxListeners","isNaN","er","handler","len","args","listeners","Array","apply","addListener","listener","newListener","warned","console","trace","once","removeListener","fired","list","position","splice","removeAllListeners","listenerCount","evlistener","emitter","7","prefix","lastIndexOf","level","logger","step","pow","floor"],"mappings":"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","file":"centrifuge.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Centrifuge\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Centrifuge\"] = factory();\n\telse\n\t\troot[\"Centrifuge\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Centrifuge\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Centrifuge\"] = factory();\n\telse\n\t\troot[\"Centrifuge\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 31);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 10:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Centrifuge = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\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 _events = __webpack_require__(6);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _subscription = __webpack_require__(11);\n\nvar _subscription2 = _interopRequireDefault(_subscription);\n\nvar _json = __webpack_require__(12);\n\nvar _utils = __webpack_require__(7);\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 _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\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 _errorTimeout = 'timeout';\nvar _errorConnectionClosed = 'connection closed';\n\nvar Centrifuge = exports.Centrifuge = function (_EventEmitter) {\n _inherits(Centrifuge, _EventEmitter);\n\n function Centrifuge(url, options) {\n _classCallCheck(this, Centrifuge);\n\n var _this = _possibleConstructorReturn(this, (Centrifuge.__proto__ || Object.getPrototypeOf(Centrifuge)).call(this));\n\n _this._url = url;\n _this._sockjs = null;\n _this._isSockjs = false;\n _this._binary = false;\n _this._methodType = null;\n _this._pushType = null;\n _this._encoder = null;\n _this._decoder = null;\n _this._status = 'disconnected';\n _this._reconnect = true;\n _this._reconnecting = false;\n _this._transport = null;\n _this._transportName = null;\n _this._transportClosed = true;\n _this._messageId = 0;\n _this._clientID = null;\n _this._refreshRequired = false;\n _this._subs = {};\n _this._lastSeq = {};\n _this._lastGen = {};\n _this._lastEpoch = {};\n _this._messages = [];\n _this._isBatching = false;\n _this._isSubscribeBatching = false;\n _this._privateChannels = {};\n _this._numRefreshFailed = 0;\n _this._refreshTimeout = null;\n _this._pingTimeout = null;\n _this._pongTimeout = null;\n _this._subRefreshTimeouts = {};\n _this._retries = 0;\n _this._callbacks = {};\n _this._latency = null;\n _this._latencyStart = null;\n _this._connectData = null;\n _this._token = null;\n _this._xhrID = 0;\n _this._xhrs = {};\n _this._config = {\n debug: false,\n sockjs: null,\n promise: null,\n minRetry: 1000,\n maxRetry: 20000,\n timeout: 5000,\n ping: true,\n pingInterval: 25000,\n pongWaitTimeout: 5000,\n privateChannelPrefix: '$',\n onTransportClose: null,\n sockjsServer: null,\n sockjsTransports: ['websocket', 'xdr-streaming', 'xhr-streaming', 'eventsource', 'iframe-eventsource', 'iframe-htmlfile', 'xdr-polling', 'xhr-polling', 'iframe-xhr-polling', 'jsonp-polling'],\n refreshEndpoint: '/centrifuge/refresh',\n refreshHeaders: {},\n refreshParams: {},\n refreshData: {},\n refreshAttempts: null,\n refreshInterval: 1000,\n onRefreshFailed: null,\n onRefresh: null,\n subscribeEndpoint: '/centrifuge/subscribe',\n subscribeHeaders: {},\n subscribeParams: {},\n subRefreshInterval: 1000,\n onPrivateSubscribe: null\n };\n _this._configure(options);\n return _this;\n }\n\n _createClass(Centrifuge, [{\n key: 'setToken',\n value: function setToken(token) {\n this._token = token;\n }\n }, {\n key: 'setConnectData',\n value: function setConnectData(data) {\n this._connectData = data;\n }\n }, {\n key: '_ajax',\n value: function _ajax(url, params, headers, data, callback) {\n var _this2 = this;\n\n var query = '';\n this._debug('sending AJAX request to', url, 'with data', JSON.stringify(data));\n\n var xhr = global.XMLHttpRequest ? new global.XMLHttpRequest() : new global.ActiveXObject('Microsoft.XMLHTTP');\n\n for (var i in params) {\n if (params.hasOwnProperty(i)) {\n if (query.length > 0) {\n query += '&';\n }\n query += encodeURIComponent(i) + '=' + encodeURIComponent(params[i]);\n }\n }\n if (query.length > 0) {\n query = '?' + query;\n }\n xhr.open('POST', url + query, true);\n if ('withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr.setRequestHeader('Content-Type', 'application/json');\n for (var headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n xhr.setRequestHeader(headerName, headers[headerName]);\n }\n }\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n var _data = void 0,\n parsed = false;\n try {\n _data = JSON.parse(xhr.responseText);\n parsed = true;\n } catch (e) {\n callback({\n error: 'Invalid JSON. Data was: ' + xhr.responseText,\n status: 200,\n data: null\n });\n }\n if (parsed) {\n // prevents double execution.\n callback({\n data: _data,\n status: 200\n });\n }\n } else {\n _this2._log('wrong status code in AJAX response', xhr.status);\n callback({\n status: xhr.status,\n data: null\n });\n }\n }\n };\n setTimeout(function () {\n return xhr.send(JSON.stringify(data));\n }, 20);\n return xhr;\n }\n }, {\n key: '_log',\n value: function _log() {\n (0, _utils.log)('info', arguments);\n }\n }, {\n key: '_debug',\n value: function _debug() {\n if (this._config.debug === true) {\n (0, _utils.log)('debug', arguments);\n }\n }\n }, {\n key: '_websocketSupported',\n value: function _websocketSupported() {\n return !(typeof WebSocket !== 'function' && (typeof WebSocket === 'undefined' ? 'undefined' : _typeof(WebSocket)) !== 'object');\n }\n }, {\n key: '_setFormat',\n value: function _setFormat(format) {\n if (this._formatOverride(format)) {\n return;\n }\n if (format === 'protobuf') {\n throw new Error('not implemented by JSON only Centrifuge client – use client with Protobuf');\n }\n this._binary = false;\n this._methodType = _json.JsonMethodType;\n this._pushType = _json.JsonPushType;\n this._encoder = new _json.JsonEncoder();\n this._decoder = new _json.JsonDecoder();\n }\n }, {\n key: '_formatOverride',\n value: function _formatOverride(format) {\n return false;\n }\n }, {\n key: '_configure',\n value: function _configure(configuration) {\n if (!('Promise' in global)) {\n throw new Error('Promise polyfill required');\n }\n\n Object.assign(this._config, configuration || {});\n this._debug('centrifuge config', this._config);\n\n if (!this._url) {\n throw new Error('url required');\n }\n\n if ((0, _utils.startsWith)(this._url, 'ws') && this._url.indexOf('format=protobuf') > -1) {\n this._setFormat('protobuf');\n } else {\n this._setFormat('json');\n }\n\n if ((0, _utils.startsWith)(this._url, 'http')) {\n this._debug('client will try to connect to SockJS endpoint');\n if (this._config.sockjs !== null) {\n this._debug('SockJS explicitly provided in options');\n this._sockjs = this._config.sockjs;\n } else {\n if (typeof global.SockJS === 'undefined') {\n throw new Error('SockJS not found, use ws:// in url or include SockJS');\n }\n this._debug('use globally defined SockJS');\n this._sockjs = global.SockJS;\n }\n } else {\n this._debug('client will connect to websocket endpoint');\n }\n }\n }, {\n key: '_setStatus',\n value: function _setStatus(newStatus) {\n if (this._status !== newStatus) {\n this._debug('Status', this._status, '->', newStatus);\n this._status = newStatus;\n }\n }\n }, {\n key: '_isDisconnected',\n value: function _isDisconnected() {\n return this._status === 'disconnected';\n }\n }, {\n key: '_isConnecting',\n value: function _isConnecting() {\n return this._status === 'connecting';\n }\n }, {\n key: '_isConnected',\n value: function _isConnected() {\n return this._status === 'connected';\n }\n }, {\n key: '_nextMessageId',\n value: function _nextMessageId() {\n return ++this._messageId;\n }\n }, {\n key: '_resetRetry',\n value: function _resetRetry() {\n this._debug('reset retries count to 0');\n this._retries = 0;\n }\n }, {\n key: '_getRetryInterval',\n value: function _getRetryInterval() {\n var interval = (0, _utils.backoff)(this._retries, this._config.minRetry, this._config.maxRetry);\n\n this._retries += 1;\n return interval;\n }\n }, {\n key: '_abortInflightXHRs',\n value: function _abortInflightXHRs() {\n for (var xhrID in this._xhrs) {\n try {\n this._xhrs[xhrID].abort();\n } catch (e) {\n this._debug('error aborting xhr', e);\n }\n delete this._xhrs[xhrID];\n }\n }\n }, {\n key: '_clearConnectedState',\n value: function _clearConnectedState(reconnect) {\n this._clientID = null;\n this._stopPing();\n\n // fire errbacks of registered outgoing calls.\n for (var id in this._callbacks) {\n if (this._callbacks.hasOwnProperty(id)) {\n var callbacks = this._callbacks[id];\n clearTimeout(callbacks.timeout);\n var errback = callbacks.errback;\n if (!errback) {\n continue;\n }\n errback({ error: this._createErrorObject('disconnected') });\n }\n }\n this._callbacks = {};\n\n // fire unsubscribe events\n for (var channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n var sub = this._subs[channel];\n\n if (reconnect) {\n if (sub._isSuccess()) {\n sub._triggerUnsubscribe();\n sub._recover = true;\n }\n sub._setSubscribing();\n } else {\n sub._setUnsubscribed();\n }\n }\n }\n\n this._abortInflightXHRs();\n\n // clear refresh timer\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n // clear sub refresh timers\n for (var _channel in this._subRefreshTimeouts) {\n if (this._subRefreshTimeouts.hasOwnProperty(_channel) && this._subRefreshTimeouts[_channel]) {\n this._clearSubRefreshTimeout(_channel);\n }\n }\n this._subRefreshTimeouts = {};\n\n if (!this._reconnect) {\n // completely clear subscriptions\n this._subs = {};\n }\n }\n }, {\n key: '_isTransportOpen',\n value: function _isTransportOpen() {\n if (this._isSockjs) {\n return this._transport && this._transport.transport && this._transport.transport.readyState === this._transport.transport.OPEN;\n }\n return this._transport && this._transport.readyState === this._transport.OPEN;\n }\n }, {\n key: '_transportSend',\n value: function _transportSend(commands) {\n if (!commands.length) {\n return true;\n }\n\n if (!this._isTransportOpen()) {\n // resolve pending commands with error if transport is not open\n for (var command in commands) {\n var id = command.id;\n if (!(id in this._callbacks)) {\n continue;\n }\n var callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n var errback = callbacks.errback;\n errback({ error: this._createErrorObject(_errorConnectionClosed, 0) });\n }\n return false;\n }\n this._transport.send(this._encoder.encodeCommands(commands));\n return true;\n }\n }, {\n key: '_setupTransport',\n value: function _setupTransport() {\n var _this3 = this;\n\n this._isSockjs = false;\n\n // detect transport to use - SockJS or Websocket\n if (this._sockjs !== null) {\n var sockjsOptions = {\n transports: this._config.sockjsTransports\n };\n\n if (this._config.sockjsServer !== null) {\n sockjsOptions.server = this._config.sockjsServer;\n }\n this._isSockjs = true;\n this._transport = new this._sockjs(this._url, null, sockjsOptions);\n } else {\n if (!this._websocketSupported()) {\n this._debug('No Websocket support and no SockJS configured, can not connect');\n return;\n }\n this._transport = new WebSocket(this._url);\n if (this._binary === true) {\n this._transport.binaryType = 'arraybuffer';\n }\n }\n\n this._transport.onopen = function () {\n _this3._transportClosed = false;\n\n if (_this3._isSockjs) {\n _this3._transportName = 'sockjs-' + _this3._transport.transport;\n _this3._transport.onheartbeat = function () {\n return _this3._restartPing();\n };\n } else {\n _this3._transportName = 'websocket';\n }\n\n // Can omit method here due to zero value.\n var msg = {\n // method: this._methodType.CONNECT\n };\n\n if (_this3._token || _this3._connectData) {\n msg.params = {};\n }\n\n if (_this3._token) {\n msg.params.token = _this3._token;\n }\n\n if (_this3._connectData) {\n msg.params.data = _this3._connectData;\n }\n\n _this3._latencyStart = new Date();\n _this3._call(msg).then(function (resolveCtx) {\n _this3._connectResponse(_this3._decoder.decodeCommandResult(_this3._methodType.CONNECT, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n var err = rejectCtx.error;\n if (err.code === 109) {\n // token expired.\n _this3._refreshRequired = true;\n }\n _this3._disconnect('connect error', true);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n this._transport.onerror = function (error) {\n _this3._debug('transport level error', error);\n };\n\n this._transport.onclose = function (closeEvent) {\n _this3._transportClosed = true;\n var reason = _errorConnectionClosed;\n var needReconnect = true;\n\n if (closeEvent && 'reason' in closeEvent && closeEvent.reason) {\n try {\n var advice = JSON.parse(closeEvent.reason);\n _this3._debug('reason is an advice object', advice);\n reason = advice.reason;\n needReconnect = advice.reconnect;\n } catch (e) {\n reason = closeEvent.reason;\n _this3._debug('reason is a plain string', reason);\n }\n }\n\n // onTransportClose callback should be executed every time transport was closed.\n // This can be helpful to catch failed connection events (because our disconnect\n // event only called once and every future attempts to connect do not fire disconnect\n // event again).\n if (_this3._config.onTransportClose !== null) {\n _this3._config.onTransportClose({\n event: closeEvent,\n reason: reason,\n reconnect: needReconnect\n });\n }\n\n _this3._disconnect(reason, needReconnect);\n\n if (_this3._reconnect === true) {\n _this3._reconnecting = true;\n var interval = _this3._getRetryInterval();\n\n _this3._debug('reconnect after ' + interval + ' milliseconds');\n setTimeout(function () {\n if (_this3._reconnect === true) {\n if (_this3._refreshRequired) {\n _this3._refresh();\n } else {\n _this3._connect();\n }\n }\n }, interval);\n }\n };\n\n this._transport.onmessage = function (event) {\n _this3._dataReceived(event.data);\n };\n }\n }, {\n key: 'rpc',\n value: function rpc(data) {\n var _this4 = this;\n\n var msg = {\n method: this._methodType.RPC,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(function (resolveCtx) {\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n return _this4._decoder.decodeCommandResult(_this4._methodType.RPC, resolveCtx.result);\n }, function (rejectCtx) {\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n return rejectCtx.error;\n });\n }\n }, {\n key: 'send',\n value: function send(data) {\n var msg = {\n method: this._methodType.SEND,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n var sent = this._transportSend([msg]); // can send async message to server without id set\n if (!sent) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n };\n return Promise.resolve({});\n }\n }, {\n key: 'publish',\n value: function publish(channel, data) {\n var msg = {\n method: this._methodType.PUBLISH,\n params: {\n channel: channel,\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(function (result) {\n if (result.next) {\n result.next();\n }\n return {};\n });\n }\n }, {\n key: '_dataReceived',\n value: function _dataReceived(data) {\n var _this5 = this;\n\n var replies = this._decoder.decodeReplies(data);\n // we have to guarantee order of events in replies processing - i.e. start processing\n // next reply only when we finished processing of current one. Without syncing things in\n // this way we could get wrong publication events order as reply promises resolve\n // on next loop tick so for loop continues before we finished emitting all reply events.\n var p = Promise.resolve();\n\n var _loop = function _loop(i) {\n if (replies.hasOwnProperty(i)) {\n p = p.then(function () {\n return _this5._dispatchReply(replies[i]);\n });\n }\n };\n\n for (var i in replies) {\n _loop(i);\n }\n this._restartPing();\n }\n }, {\n key: '_call',\n value: function _call(msg) {\n var _this6 = this;\n\n return new Promise(function (resolve, reject) {\n var id = _this6._addMessage(msg);\n _this6._registerCall(id, resolve, reject);\n });\n }\n }, {\n key: '_connect',\n value: function _connect() {\n if (this.isConnected()) {\n this._debug('connect called when already connected');\n return;\n }\n if (this._status === 'connecting') {\n return;\n }\n\n this._debug('start connecting');\n this._setStatus('connecting');\n this._clientID = null;\n this._reconnect = true;\n this._setupTransport();\n }\n }, {\n key: '_disconnect',\n value: function _disconnect(reason, shouldReconnect) {\n\n if (this._isDisconnected()) {\n return;\n }\n\n this._debug('disconnected:', reason, shouldReconnect);\n\n var reconnect = shouldReconnect || false;\n\n if (reconnect === false) {\n this._reconnect = false;\n }\n\n this._clearConnectedState(reconnect);\n\n if (!this._isDisconnected()) {\n this._setStatus('disconnected');\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._reconnecting === false) {\n this.emit('disconnect', {\n reason: reason,\n reconnect: reconnect\n });\n }\n }\n\n if (!this._transportClosed) {\n this._transport.close();\n }\n }\n }, {\n key: '_refreshFailed',\n value: function _refreshFailed() {\n this._numRefreshFailed = 0;\n if (!this._isDisconnected()) {\n this._disconnect('refresh failed', false);\n }\n if (this._config.onRefreshFailed !== null) {\n this._config.onRefreshFailed();\n }\n }\n }, {\n key: '_refresh',\n value: function _refresh() {\n var _this7 = this;\n\n // ask application for new connection token.\n this._debug('refresh token');\n\n if (this._config.refreshAttempts === 0) {\n this._debug('refresh attempts set to 0, do not send refresh request at all');\n this._refreshFailed();\n return;\n }\n\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n var clientID = this._clientID;\n var xhrID = this._newXHRID();\n\n var cb = function cb(resp) {\n if (xhrID in _this7._xhrs) {\n delete _this7._xhrs[xhrID];\n }\n if (_this7._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n // We don't perform any connection status related actions here as we are\n // relying on server that must close connection eventually.\n if (resp.error) {\n _this7._debug('error refreshing connection token', resp.error);\n } else {\n _this7._debug('error refreshing connection token: wrong status code', resp.status);\n }\n _this7._numRefreshFailed++;\n if (_this7._refreshTimeout !== null) {\n clearTimeout(_this7._refreshTimeout);\n _this7._refreshTimeout = null;\n }\n if (_this7._config.refreshAttempts !== null && _this7._numRefreshFailed >= _this7._config.refreshAttempts) {\n _this7._refreshFailed();\n return;\n }\n var jitter = Math.round(Math.random() * 1000 * Math.max(_this7._numRefreshFailed, 20));\n var interval = _this7._config.refreshInterval + jitter;\n _this7._refreshTimeout = setTimeout(function () {\n return _this7._refresh();\n }, interval);\n return;\n }\n _this7._numRefreshFailed = 0;\n _this7._token = resp.data.token;\n if (!_this7._token) {\n _this7._refreshFailed();\n return;\n }\n if (_this7._isDisconnected() && _this7._reconnect) {\n _this7._debug('token refreshed, connect from scratch');\n _this7._connect();\n } else {\n _this7._debug('send refreshed token');\n var msg = {\n method: _this7._methodType.REFRESH,\n params: {\n token: _this7._token\n }\n };\n _this7._call(msg).then(function (resolveCtx) {\n _this7._refreshResponse(_this7._decoder.decodeCommandResult(_this7._methodType.REFRESH, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this7._refreshError(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n if (this._config.onRefresh !== null) {\n var context = {};\n this._config.onRefresh(context, cb);\n } else {\n var xhr = this._ajax(this._config.refreshEndpoint, this._config.refreshParams, this._config.refreshHeaders, this._config.refreshData, cb);\n this._xhrs[xhrID] = xhr;\n }\n }\n }, {\n key: '_refreshError',\n value: function _refreshError(err) {\n var _this8 = this;\n\n this._debug('refresh error', err);\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n var interval = this._config.refreshInterval + Math.round(Math.random() * 1000);\n this._refreshTimeout = setTimeout(function () {\n return _this8._refresh();\n }, interval);\n }\n }, {\n key: '_refreshResponse',\n value: function _refreshResponse(result) {\n var _this9 = this;\n\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (result.expires) {\n this._clientID = result.client;\n this._refreshTimeout = setTimeout(function () {\n return _this9._refresh();\n }, this._getTTLMilliseconds(result.ttl));\n }\n }\n }, {\n key: '_newXHRID',\n value: function _newXHRID() {\n this._xhrID++;\n return this._xhrID;\n }\n }, {\n key: '_subRefresh',\n value: function _subRefresh(channel) {\n var _this10 = this;\n\n this._debug('refresh subscription token for channel', channel);\n\n if (this._subRefreshTimeouts[channel] !== undefined) {\n this._clearSubRefreshTimeout(channel);\n } else {\n return;\n }\n\n var clientID = this._clientID;\n var xhrID = this._newXHRID();\n\n var cb = function cb(resp) {\n if (xhrID in _this10._xhrs) {\n delete _this10._xhrs[xhrID];\n }\n if (resp.error || resp.status !== 200 || _this10._clientID !== clientID) {\n return;\n }\n var channelsData = {};\n if (resp.data.channels) {\n for (var i in data.channels) {\n var channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n var token = channelsData[channel];\n if (!token) {\n return;\n }\n var msg = {\n method: _this10._methodType.SUB_REFRESH,\n params: {\n channel: channel,\n token: token\n }\n };\n\n var sub = _this10._getSub(channel);\n if (sub === null) {\n return;\n }\n\n _this10._call(msg).then(function (resolveCtx) {\n _this10._subRefreshResponse(channel, _this10._decoder.decodeCommandResult(_this10._methodType.SUB_REFRESH, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this10._subRefreshError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n var data = {\n client: this._clientID,\n channels: [channel]\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n var xhr = this._ajax(this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n }\n }, {\n key: '_clearSubRefreshTimeout',\n value: function _clearSubRefreshTimeout(channel) {\n if (this._subRefreshTimeouts[channel] !== undefined) {\n clearTimeout(this._subRefreshTimeouts[channel]);\n delete this._subRefreshTimeouts[channel];\n }\n }\n }, {\n key: '_subRefreshError',\n value: function _subRefreshError(channel, err) {\n var _this11 = this;\n\n this._debug('subscription refresh error', channel, err);\n this._clearSubRefreshTimeout(channel);\n var sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n var jitter = Math.round(Math.random() * 1000);\n var subRefreshTimeout = setTimeout(function () {\n return _this11._subRefresh(channel);\n }, this._config.subRefreshInterval + jitter);\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n return;\n }\n }, {\n key: '_subRefreshResponse',\n value: function _subRefreshResponse(channel, result) {\n var _this12 = this;\n\n this._debug('subscription refresh success', channel);\n this._clearSubRefreshTimeout(channel);\n var sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n if (result.expires === true) {\n var subRefreshTimeout = setTimeout(function () {\n return _this12._subRefresh(channel);\n }, this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n return;\n }\n }, {\n key: '_subscribe',\n value: function _subscribe(sub, isResubscribe) {\n var _this13 = this;\n\n this._debug('subscribing on', sub.channel);\n var channel = sub.channel;\n\n if (!(channel in this._subs)) {\n this._subs[channel] = sub;\n }\n\n if (!this.isConnected()) {\n // subscribe will be called later\n sub._setNew();\n return;\n }\n\n sub._setSubscribing(isResubscribe);\n\n var msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel\n }\n };\n\n // If channel name does not start with privateChannelPrefix - then we\n // can just send subscription message to Centrifuge. If channel name\n // starts with privateChannelPrefix - then this is a private channel\n // and we should ask web application backend for permission first.\n if ((0, _utils.startsWith)(channel, this._config.privateChannelPrefix)) {\n // private channel.\n if (this._isSubscribeBatching) {\n this._privateChannels[channel] = true;\n } else {\n this.startSubscribeBatching();\n this._subscribe(sub);\n this.stopSubscribeBatching();\n }\n } else {\n var recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n var seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n var gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n var epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n\n this._call(msg).then(function (resolveCtx) {\n _this13._subscribeResponse(channel, _this13._decoder.decodeCommandResult(_this13._methodType.SUBSCRIBE, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this13._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }\n }, {\n key: '_unsubscribe',\n value: function _unsubscribe(sub) {\n if (this.isConnected()) {\n // No need to unsubscribe in disconnected state - i.e. client already unsubscribed.\n this._addMessage({\n method: this._methodType.UNSUBSCRIBE,\n params: {\n channel: sub.channel\n }\n });\n }\n }\n }, {\n key: '_getTTLMilliseconds',\n value: function _getTTLMilliseconds(ttl) {\n // https://stackoverflow.com/questions/12633405/what-is-the-maximum-delay-for-setinterval\n return Math.min(ttl * 1000, 2147483647);\n }\n }, {\n key: 'getSub',\n value: function getSub(channel) {\n return this._getSub(channel);\n }\n }, {\n key: '_getSub',\n value: function _getSub(channel) {\n var sub = this._subs[channel];\n if (!sub) {\n return null;\n }\n return sub;\n }\n }, {\n key: '_connectResponse',\n value: function _connectResponse(result) {\n var _this14 = this;\n\n var wasReconnecting = this._reconnecting;\n this._reconnecting = false;\n this._resetRetry();\n this._refreshRequired = false;\n\n if (this.isConnected()) {\n return;\n }\n\n if (this._latencyStart !== null) {\n this._latency = new Date().getTime() - this._latencyStart.getTime();\n this._latencyStart = null;\n }\n\n this._clientID = result.client;\n this._setStatus('connected');\n\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n }\n\n if (result.expires) {\n this._refreshTimeout = setTimeout(function () {\n return _this14._refresh();\n }, this._getTTLMilliseconds(result.ttl));\n }\n\n this.startBatching();\n this.startSubscribeBatching();\n for (var channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n var sub = this._subs[channel];\n if (sub._shouldResubscribe()) {\n this._subscribe(sub, wasReconnecting);\n }\n }\n }\n this.stopSubscribeBatching();\n this.stopBatching();\n\n this._startPing();\n\n var ctx = {\n client: result.client,\n transport: this._transportName,\n latency: this._latency\n };\n if (result.data) {\n ctx.data = result.data;\n }\n\n this.emit('connect', ctx);\n }\n }, {\n key: '_stopPing',\n value: function _stopPing() {\n if (this._pongTimeout !== null) {\n clearTimeout(this._pongTimeout);\n this._pongTimeout = null;\n }\n if (this._pingTimeout !== null) {\n clearTimeout(this._pingTimeout);\n this._pingTimeout = null;\n }\n }\n }, {\n key: '_startPing',\n value: function _startPing() {\n var _this15 = this;\n\n if (this._config.ping !== true || this._config.pingInterval <= 0) {\n return;\n }\n if (!this.isConnected()) {\n return;\n }\n\n this._pingTimeout = setTimeout(function () {\n if (!_this15.isConnected()) {\n _this15._stopPing();\n return;\n }\n _this15.ping();\n _this15._pongTimeout = setTimeout(function () {\n _this15._disconnect('no ping', true);\n }, _this15._config.pongWaitTimeout);\n }, this._config.pingInterval);\n }\n }, {\n key: '_restartPing',\n value: function _restartPing() {\n this._stopPing();\n this._startPing();\n }\n }, {\n key: '_subscribeError',\n value: function _subscribeError(channel, error) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n if (error.code === 0 && error.message === _errorTimeout) {\n // client side timeout.\n this._disconnect('timeout', true);\n return;\n }\n sub._setSubscribeError(error);\n }\n }, {\n key: '_subscribeResponse',\n value: function _subscribeResponse(channel, result) {\n var _this16 = this;\n\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n\n var recovered = false;\n if ('recovered' in result) {\n recovered = result.recovered;\n }\n sub._setSubscribeSuccess(recovered);\n\n var pubs = result.publications;\n\n if (pubs && pubs.length > 0) {\n // handle missed pubs.\n pubs = pubs.reverse();\n for (var i in pubs) {\n if (pubs.hasOwnProperty(i)) {\n this._handlePublication(channel, pubs[i]);\n }\n }\n } else {\n if (result.recoverable) {\n this._lastSeq[channel] = result.seq || 0;\n this._lastGen[channel] = result.gen || 0;\n }\n }\n\n this._lastEpoch[channel] = result.epoch || '';\n\n if (result.recoverable) {\n sub._recoverable = true;\n }\n\n if (result.expires === true) {\n var subRefreshTimeout = setTimeout(function () {\n return _this16._subRefresh(channel);\n }, this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n }\n }, {\n key: '_handleReply',\n value: function _handleReply(reply, next) {\n var id = reply.id;\n var result = reply.result;\n\n if (!(id in this._callbacks)) {\n next();\n return;\n }\n var callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n\n if (!(0, _utils.errorExists)(reply)) {\n var callback = callbacks.callback;\n if (!callback) {\n return;\n }\n callback({ result: result, next: next });\n } else {\n var errback = callbacks.errback;\n if (!errback) {\n next();\n return;\n }\n var error = reply.error;\n errback({ error: error, next: next });\n }\n }\n }, {\n key: '_handleJoin',\n value: function _handleJoin(channel, join) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('join', join);\n }\n }, {\n key: '_handleLeave',\n value: function _handleLeave(channel, leave) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('leave', leave);\n }\n }, {\n key: '_handleUnsub',\n value: function _handleUnsub(channel, unsub) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.unsubscribe();\n if (unsub.resubscribe === true) {\n sub.subscribe();\n }\n }\n }, {\n key: '_handlePublication',\n value: function _handlePublication(channel, pub) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (pub.seq !== undefined) {\n this._lastSeq[channel] = pub.seq;\n }\n if (pub.gen !== undefined) {\n this._lastGen[channel] = pub.gen;\n }\n sub.emit('publish', pub);\n }\n }, {\n key: '_handleMessage',\n value: function _handleMessage(message) {\n this.emit('message', message.data);\n }\n }, {\n key: '_handlePush',\n value: function _handlePush(data, next) {\n var push = this._decoder.decodePush(data);\n var type = 0;\n if ('type' in push) {\n type = push['type'];\n }\n var channel = push.channel;\n\n if (type === this._pushType.PUBLICATION) {\n var pub = this._decoder.decodePushData(this._pushType.PUBLICATION, push.data);\n this._handlePublication(channel, pub);\n } else if (type === this._pushType.MESSAGE) {\n var message = this._decoder.decodePushData(this._pushType.MESSAGE, push.data);\n this._handleMessage(message);\n } else if (type === this._pushType.JOIN) {\n var join = this._decoder.decodePushData(this._pushType.JOIN, push.data);\n this._handleJoin(channel, join);\n } else if (type === this._pushType.LEAVE) {\n var leave = this._decoder.decodePushData(this._pushType.LEAVE, push.data);\n this._handleLeave(channel, leave);\n } else if (type === this._pushType.UNSUB) {\n var unsub = this._decoder.decodePushData(this._pushType.UNSUB, push.data);\n this._handleUnsub(channel, unsub);\n }\n next();\n }\n }, {\n key: '_dispatchReply',\n value: function _dispatchReply(reply) {\n var next;\n var p = new Promise(function (resolve) {\n next = resolve;\n });\n\n if (reply === undefined || reply === null) {\n this._debug('dispatch: got undefined or null reply');\n next();\n return p;\n }\n\n var id = reply.id;\n\n if (id && id > 0) {\n this._handleReply(reply, next);\n } else {\n this._handlePush(reply.result, next);\n }\n\n return p;\n }\n }, {\n key: '_flush',\n value: function _flush() {\n var messages = this._messages.slice(0);\n this._messages = [];\n this._transportSend(messages);\n }\n }, {\n key: '_ping',\n value: function _ping() {\n var _this17 = this;\n\n var msg = {\n method: this._methodType.PING\n };\n this._call(msg).then(function (resolveCtx) {\n _this17._pingResponse(_this17._decoder.decodeCommandResult(_this17._methodType.PING, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this17._debug('ping error', rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }, {\n key: '_pingResponse',\n value: function _pingResponse(result) {\n if (!this.isConnected()) {\n return;\n }\n this._stopPing();\n this._startPing();\n }\n }, {\n key: '_getLastSeq',\n value: function _getLastSeq(channel) {\n var lastSeq = this._lastSeq[channel];\n if (lastSeq) {\n return lastSeq;\n }\n return 0;\n }\n }, {\n key: '_getLastGen',\n value: function _getLastGen(channel) {\n var lastGen = this._lastGen[channel];\n if (lastGen) {\n return lastGen;\n }\n return 0;\n }\n }, {\n key: '_getLastEpoch',\n value: function _getLastEpoch(channel) {\n var lastEpoch = this._lastEpoch[channel];\n if (lastEpoch) {\n return lastEpoch;\n }\n return '';\n }\n }, {\n key: '_createErrorObject',\n value: function _createErrorObject(message, code) {\n var errObject = {\n message: message,\n code: code || 0\n };\n\n return errObject;\n }\n }, {\n key: '_registerCall',\n value: function _registerCall(id, callback, errback) {\n var _this18 = this;\n\n this._callbacks[id] = {\n callback: callback,\n errback: errback,\n timeout: null\n };\n this._callbacks[id].timeout = setTimeout(function () {\n delete _this18._callbacks[id];\n if ((0, _utils.isFunction)(errback)) {\n errback({ error: _this18._createErrorObject(_errorTimeout) });\n }\n }, this._config.timeout);\n }\n }, {\n key: '_addMessage',\n value: function _addMessage(message) {\n var id = this._nextMessageId();\n message.id = id;\n if (this._isBatching === true) {\n this._messages.push(message);\n } else {\n this._transportSend([message]);\n }\n return id;\n }\n }, {\n key: 'isConnected',\n value: function isConnected() {\n return this._isConnected();\n }\n }, {\n key: 'connect',\n value: function connect() {\n this._connect();\n }\n }, {\n key: 'disconnect',\n value: function disconnect() {\n this._disconnect('client', false);\n }\n }, {\n key: 'ping',\n value: function ping() {\n return this._ping();\n }\n }, {\n key: 'startBatching',\n value: function startBatching() {\n // start collecting messages without sending them to Centrifuge until flush\n // method called\n this._isBatching = true;\n }\n }, {\n key: 'stopBatching',\n value: function stopBatching() {\n this._isBatching = false;\n this._flush();\n }\n }, {\n key: 'startSubscribeBatching',\n value: function startSubscribeBatching() {\n // start collecting private channels to create bulk authentication\n // request to subscribeEndpoint when stopSubscribeBatching will be called\n this._isSubscribeBatching = true;\n }\n }, {\n key: 'stopSubscribeBatching',\n value: function stopSubscribeBatching() {\n var _this19 = this;\n\n // create request to subscribeEndpoint with collected private channels\n // to ask if this client can subscribe on each channel\n this._isSubscribeBatching = false;\n var authChannels = this._privateChannels;\n this._privateChannels = {};\n\n var channels = [];\n\n for (var channel in authChannels) {\n if (authChannels.hasOwnProperty(channel)) {\n var sub = this._getSub(channel);\n if (!sub) {\n continue;\n }\n channels.push(channel);\n }\n }\n\n if (channels.length === 0) {\n this._debug('no private channels found, no need to make request');\n return;\n }\n\n var data = {\n client: this._clientID,\n channels: channels\n };\n\n var clientID = this._clientID;\n var xhrID = this._newXHRID();\n\n var cb = function cb(resp) {\n if (xhrID in _this19._xhrs) {\n delete _this19._xhrs[xhrID];\n }\n if (_this19._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n _this19._debug('authorization request failed');\n for (var i in channels) {\n if (channels.hasOwnProperty(i)) {\n var _channel2 = channels[i];\n _this19._subscribeError(_channel2, _this19._createErrorObject('authorization request failed'));\n }\n }\n return;\n }\n\n var channelsData = {};\n if (resp.data.channels) {\n for (var _i in resp.data.channels) {\n var channelData = resp.data.channels[_i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n // try to send all subscriptions in one request.\n var batch = false;\n\n if (!_this19._isBatching) {\n _this19.startBatching();\n batch = true;\n }\n\n for (var _i2 in channels) {\n if (channels.hasOwnProperty(_i2)) {\n var _ret2 = function () {\n var channel = channels[_i2];\n var token = channelsData[channel];\n\n if (!token) {\n // subscription:error\n _this19._subscribeError(channel, _this19._createErrorObject('permission denied', 103));\n return 'continue';\n } else {\n var msg = {\n method: _this19._methodType.SUBSCRIBE,\n params: {\n channel: channel,\n token: token\n }\n };\n\n var _sub = _this19._getSub(channel);\n if (_sub === null) {\n return 'continue';\n }\n\n var recover = _sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n var seq = _this19._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n var gen = _this19._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n var epoch = _this19._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n _this19._call(msg).then(function (resolveCtx) {\n _this19._subscribeResponse(channel, _this19._decoder.decodeCommandResult(_this19._methodType.SUBSCRIBE, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this19._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }();\n\n if (_ret2 === 'continue') continue;\n }\n }\n\n if (batch) {\n _this19.stopBatching();\n }\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n var xhr = this._ajax(this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n }\n }, {\n key: 'subscribe',\n value: function subscribe(channel, events) {\n var currentSub = this._getSub(channel);\n if (currentSub !== null) {\n currentSub._setEvents(events);\n if (currentSub._isUnsubscribed()) {\n currentSub.subscribe();\n }\n return currentSub;\n }\n var sub = new _subscription2.default(this, channel, events);\n this._subs[channel] = sub;\n sub.subscribe();\n return sub;\n }\n }]);\n\n return Centrifuge;\n}(_events2.default);\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)))\n\n/***/ }),\n\n/***/ 11:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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 _events = __webpack_require__(6);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _utils = __webpack_require__(7);\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 _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\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 _STATE_NEW = 0;\nvar _STATE_SUBSCRIBING = 1;\nvar _STATE_SUCCESS = 2;\nvar _STATE_ERROR = 3;\nvar _STATE_UNSUBSCRIBED = 4;\n\nvar Subscription = function (_EventEmitter) {\n _inherits(Subscription, _EventEmitter);\n\n function Subscription(centrifuge, channel, events) {\n _classCallCheck(this, Subscription);\n\n var _this = _possibleConstructorReturn(this, (Subscription.__proto__ || Object.getPrototypeOf(Subscription)).call(this));\n\n _this.channel = channel;\n _this._centrifuge = centrifuge;\n _this._status = _STATE_NEW;\n _this._error = null;\n _this._isResubscribe = false;\n _this._ready = false;\n _this._subscriptionPromise = null;\n _this._noResubscribe = false;\n _this._recoverable = false;\n _this._recover = false;\n _this._setEvents(events);\n _this._initializePromise();\n _this._promises = {};\n _this.on('error', function (errContext) {\n this._centrifuge._debug('subscription error', errContext);\n });\n return _this;\n }\n\n _createClass(Subscription, [{\n key: '_initializePromise',\n value: function _initializePromise() {\n var _this2 = this;\n\n // this helps us to wait until subscription will successfully\n // subscribe and call actions such as presence, history etc in\n // synchronous way.\n this._ready = false;\n\n this._subscriptionPromise = new Promise(function (resolve, reject) {\n _this2._resolve = function (value) {\n _this2._ready = true;\n resolve(value);\n };\n _this2._reject = function (err) {\n _this2._ready = true;\n reject(err);\n };\n }).then(function () {}, function () {});\n }\n }, {\n key: '_needRecover',\n value: function _needRecover() {\n return this._recoverable === true && this._recover === true;\n }\n }, {\n key: '_setEvents',\n value: function _setEvents(events) {\n if (!events) {\n return;\n }\n if ((0, _utils.isFunction)(events)) {\n // events is just a function to handle publication received from channel.\n this.on('publish', events);\n } else if (Object.prototype.toString.call(events) === Object.prototype.toString.call({})) {\n var knownEvents = ['publish', 'join', 'leave', 'unsubscribe', 'subscribe', 'error'];\n for (var i = 0, l = knownEvents.length; i < l; i++) {\n var ev = knownEvents[i];\n if (ev in events) {\n this.on(ev, events[ev]);\n }\n }\n }\n }\n }, {\n key: '_isNew',\n value: function _isNew() {\n return this._status === _STATE_NEW;\n }\n }, {\n key: '_isUnsubscribed',\n value: function _isUnsubscribed() {\n return this._status === _STATE_UNSUBSCRIBED;\n }\n }, {\n key: '_isSubscribing',\n value: function _isSubscribing() {\n return this._status === _STATE_SUBSCRIBING;\n }\n }, {\n key: '_isReady',\n value: function _isReady() {\n return this._status === _STATE_SUCCESS || this._status === _STATE_ERROR;\n }\n }, {\n key: '_isSuccess',\n value: function _isSuccess() {\n return this._status === _STATE_SUCCESS;\n }\n }, {\n key: '_isError',\n value: function _isError() {\n return this._status === _STATE_ERROR;\n }\n }, {\n key: '_setNew',\n value: function _setNew() {\n this._status = _STATE_NEW;\n }\n }, {\n key: '_setSubscribing',\n value: function _setSubscribing(isResubscribe) {\n this._isResubscribe = isResubscribe || false;\n if (this._ready === true) {\n // new promise for this subscription\n this._initializePromise();\n }\n this._status = _STATE_SUBSCRIBING;\n }\n }, {\n key: '_setSubscribeSuccess',\n value: function _setSubscribeSuccess(recovered) {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._status = _STATE_SUCCESS;\n var successContext = this._getSubscribeSuccessContext(recovered);\n\n this._recover = false;\n this.emit('subscribe', successContext);\n this._resolve(successContext);\n for (var to in this._promises) {\n clearTimeout(to);\n this._promises[to].resolve();\n delete this._promises[to];\n }\n }\n }, {\n key: '_setSubscribeError',\n value: function _setSubscribeError(err) {\n if (this._status === _STATE_ERROR) {\n return;\n }\n this._status = _STATE_ERROR;\n this._error = err;\n var errContext = this._getSubscribeErrorContext();\n this.emit('error', errContext);\n this._reject(errContext);\n for (var to in this._promises) {\n clearTimeout(to);\n this._promises[to].reject(err);\n delete this._promises[to];\n }\n }\n }, {\n key: '_triggerUnsubscribe',\n value: function _triggerUnsubscribe() {\n this.emit('unsubscribe', {\n channel: this.channel\n });\n }\n }, {\n key: '_setUnsubscribed',\n value: function _setUnsubscribed(noResubscribe) {\n this._centrifuge._clearSubRefreshTimeout(this.channel);\n if (this._status === _STATE_UNSUBSCRIBED) {\n return;\n }\n var needTrigger = this._status === _STATE_SUCCESS;\n this._status = _STATE_UNSUBSCRIBED;\n if (noResubscribe === true) {\n this._recover = false;\n this._noResubscribe = true;\n delete this._centrifuge._lastSeq[this.channel];\n delete this._centrifuge._lastGen[this.channel];\n delete this._centrifuge._lastEpoch[this.channel];\n }\n if (needTrigger) {\n this._triggerUnsubscribe();\n }\n }\n }, {\n key: '_shouldResubscribe',\n value: function _shouldResubscribe() {\n return !this._noResubscribe;\n }\n }, {\n key: '_getSubscribeSuccessContext',\n value: function _getSubscribeSuccessContext(recovered) {\n return {\n channel: this.channel,\n isResubscribe: this._isResubscribe,\n recovered: recovered\n };\n }\n }, {\n key: '_getSubscribeErrorContext',\n value: function _getSubscribeErrorContext() {\n var subscribeErrorContext = this._error;\n subscribeErrorContext.channel = this.channel;\n subscribeErrorContext.isResubscribe = this._isResubscribe;\n return subscribeErrorContext;\n }\n }, {\n key: 'ready',\n value: function ready(callback, errback) {\n if (this._ready) {\n if (this._isSuccess()) {\n callback(this._getSubscribeSuccessContext());\n } else {\n errback(this._getSubscribeErrorContext());\n }\n }\n }\n }, {\n key: 'subscribe',\n value: function subscribe() {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._noResubscribe = false;\n this._centrifuge._subscribe(this);\n }\n }, {\n key: 'unsubscribe',\n value: function unsubscribe() {\n this._setUnsubscribed(true);\n this._centrifuge._unsubscribe(this);\n }\n }, {\n key: '_methodCall',\n value: function _methodCall(message, type) {\n var _this3 = this;\n\n var methodCallPromise = new Promise(function (resolve, reject) {\n var subPromise = void 0;\n if (_this3._isSuccess()) {\n subPromise = Promise.resolve();\n } else if (_this3._isError()) {\n subPromise = Promise.reject(_this3._error);\n } else {\n subPromise = new Promise(function (res, rej) {\n var timeout = setTimeout(function () {\n rej({ 'code': 0, 'message': 'timeout' });\n }, _this3._centrifuge._config.timeout);\n _this3._promises[timeout] = {\n resolve: res,\n reject: rej\n };\n });\n }\n subPromise.then(function () {\n return _this3._centrifuge._call(message).then(function (resolveCtx) {\n resolve(_this3._centrifuge._decoder.decodeCommandResult(type, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n reject(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }, function (error) {\n reject(error);\n });\n });\n return methodCallPromise;\n }\n }, {\n key: 'publish',\n value: function publish(data) {\n return this._methodCall({\n method: this._centrifuge._methodType.PUBLISH,\n params: {\n channel: this.channel,\n data: data\n }\n }, this._centrifuge._methodType.PUBLISH);\n }\n }, {\n key: 'presence',\n value: function presence() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE);\n }\n }, {\n key: 'presenceStats',\n value: function presenceStats() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE_STATS,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE_STATS);\n }\n }, {\n key: 'history',\n value: function history() {\n return this._methodCall({\n method: this._centrifuge._methodType.HISTORY,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.HISTORY);\n }\n }]);\n\n return Subscription;\n}(_events2.default);\n\nexports.default = Subscription;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 12:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar JsonMethodType = exports.JsonMethodType = {\n CONNECT: 0,\n SUBSCRIBE: 1,\n UNSUBSCRIBE: 2,\n PUBLISH: 3,\n PRESENCE: 4,\n PRESENCE_STATS: 5,\n HISTORY: 6,\n PING: 7,\n SEND: 8,\n RPC: 9,\n REFRESH: 10,\n SUB_REFRESH: 11\n};\n\nvar JsonPushType = exports.JsonPushType = {\n PUBLICATION: 0,\n JOIN: 1,\n LEAVE: 2,\n UNSUB: 3,\n MESSAGE: 4\n};\n\nvar JsonEncoder = exports.JsonEncoder = function () {\n function JsonEncoder() {\n _classCallCheck(this, JsonEncoder);\n }\n\n _createClass(JsonEncoder, [{\n key: 'encodeCommands',\n value: function encodeCommands(commands) {\n var encodedCommands = [];\n for (var i in commands) {\n if (commands.hasOwnProperty(i)) {\n encodedCommands.push(JSON.stringify(commands[i]));\n }\n }\n return encodedCommands.join('\\n');\n }\n }]);\n\n return JsonEncoder;\n}();\n\nvar JsonDecoder = exports.JsonDecoder = function () {\n function JsonDecoder() {\n _classCallCheck(this, JsonDecoder);\n }\n\n _createClass(JsonDecoder, [{\n key: 'decodeReplies',\n value: function decodeReplies(data) {\n var replies = [];\n var encodedReplies = data.split('\\n');\n for (var i in encodedReplies) {\n if (encodedReplies.hasOwnProperty(i)) {\n if (!encodedReplies[i]) {\n continue;\n }\n var reply = JSON.parse(encodedReplies[i]);\n replies.push(reply);\n }\n }\n return replies;\n }\n }, {\n key: 'decodeCommandResult',\n value: function decodeCommandResult(methodType, data) {\n return data;\n }\n }, {\n key: 'decodePush',\n value: function decodePush(data) {\n return data;\n }\n }, {\n key: 'decodePushData',\n value: function decodePushData(pushType, data) {\n return data;\n }\n }]);\n\n return JsonDecoder;\n}();\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n\n/***/ 31:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _centrifuge = __webpack_require__(10);\n\nexports.default = _centrifuge.Centrifuge;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 6:\n/***/ (function(module, exports) {\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n/***/ }),\n\n/***/ 7:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.startsWith = startsWith;\nexports.isFunction = isFunction;\nexports.log = log;\nexports.backoff = backoff;\nexports.errorExists = errorExists;\nfunction startsWith(value, prefix) {\n return value.lastIndexOf(prefix, 0) === 0;\n};\n\nfunction isFunction(value) {\n if (value === undefined || value === null) {\n return false;\n }\n return typeof value === 'function';\n};\n\nfunction log(level, args) {\n if (global.console) {\n var logger = global.console[level];\n\n if (isFunction(logger)) {\n logger.apply(global.console, args);\n }\n }\n};\n\nfunction backoff(step, min, max) {\n var jitter = 0.5 * Math.random();\n var interval = Math.min(max, min * Math.pow(2, step + 1));\n\n return Math.floor((1 - jitter) * interval);\n};\n\nfunction errorExists(data) {\n return 'error' in data && data.error !== null;\n};\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)))\n\n/***/ })\n\n/******/ });\n});\n\n\n// WEBPACK FOOTER //\n// centrifuge.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 31);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 80f113d0e59618aae6bd","import EventEmitter from 'events';\nimport Subscription from './subscription';\n\nimport {\n JsonEncoder,\n JsonDecoder,\n JsonMethodType,\n JsonPushType\n} from './json';\n\nimport {\n isFunction,\n log,\n startsWith,\n errorExists,\n backoff\n} from './utils';\n\nconst _errorTimeout = 'timeout';\nconst _errorConnectionClosed = 'connection closed';\n\nexport class Centrifuge extends EventEmitter {\n\n constructor(url, options) {\n super();\n this._url = url;\n this._sockjs = null;\n this._isSockjs = false;\n this._binary = false;\n this._methodType = null;\n this._pushType = null;\n this._encoder = null;\n this._decoder = null;\n this._status = 'disconnected';\n this._reconnect = true;\n this._reconnecting = false;\n this._transport = null;\n this._transportName = null;\n this._transportClosed = true;\n this._messageId = 0;\n this._clientID = null;\n this._refreshRequired = false;\n this._subs = {};\n this._lastSeq = {};\n this._lastGen = {};\n this._lastEpoch = {};\n this._messages = [];\n this._isBatching = false;\n this._isSubscribeBatching = false;\n this._privateChannels = {};\n this._numRefreshFailed = 0;\n this._refreshTimeout = null;\n this._pingTimeout = null;\n this._pongTimeout = null;\n this._subRefreshTimeouts = {};\n this._retries = 0;\n this._callbacks = {};\n this._latency = null;\n this._latencyStart = null;\n this._connectData = null;\n this._token = null;\n this._xhrID = 0;\n this._xhrs = {};\n this._config = {\n debug: false,\n sockjs: null,\n promise: null,\n minRetry: 1000,\n maxRetry: 20000,\n timeout: 5000,\n ping: true,\n pingInterval: 25000,\n pongWaitTimeout: 5000,\n privateChannelPrefix: '$',\n onTransportClose: null,\n sockjsServer: null,\n sockjsTransports: [\n 'websocket',\n 'xdr-streaming',\n 'xhr-streaming',\n 'eventsource',\n 'iframe-eventsource',\n 'iframe-htmlfile',\n 'xdr-polling',\n 'xhr-polling',\n 'iframe-xhr-polling',\n 'jsonp-polling'\n ],\n refreshEndpoint: '/centrifuge/refresh',\n refreshHeaders: {},\n refreshParams: {},\n refreshData: {},\n refreshAttempts: null,\n refreshInterval: 1000,\n onRefreshFailed: null,\n onRefresh: null,\n subscribeEndpoint: '/centrifuge/subscribe',\n subscribeHeaders: {},\n subscribeParams: {},\n subRefreshInterval: 1000,\n onPrivateSubscribe: null\n };\n this._configure(options);\n }\n\n setToken(token) {\n this._token = token;\n }\n\n setConnectData(data) {\n this._connectData = data;\n }\n\n _ajax(url, params, headers, data, callback) {\n let query = '';\n this._debug('sending AJAX request to', url, 'with data', JSON.stringify(data));\n\n const xhr = (global.XMLHttpRequest ? new global.XMLHttpRequest() : new global.ActiveXObject('Microsoft.XMLHTTP'));\n\n for (const i in params) {\n if (params.hasOwnProperty(i)) {\n if (query.length > 0) {\n query += '&';\n }\n query += encodeURIComponent(i) + '=' + encodeURIComponent(params[i]);\n }\n }\n if (query.length > 0) {\n query = '?' + query;\n }\n xhr.open('POST', url + query, true);\n if ('withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr.setRequestHeader('Content-Type', 'application/json');\n for (const headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n xhr.setRequestHeader(headerName, headers[headerName]);\n }\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n let data, parsed = false;\n try {\n data = JSON.parse(xhr.responseText);\n parsed = true;\n } catch (e) {\n callback({\n error: 'Invalid JSON. Data was: ' + xhr.responseText,\n status: 200,\n data: null\n });\n }\n if (parsed) { // prevents double execution.\n callback({\n data: data,\n status: 200\n });\n }\n } else {\n this._log('wrong status code in AJAX response', xhr.status);\n callback({\n status: xhr.status,\n data: null\n });\n }\n }\n };\n setTimeout(() => xhr.send(JSON.stringify(data)), 20);\n return xhr;\n };\n\n _log() {\n log('info', arguments);\n };\n\n _debug() {\n if (this._config.debug === true) {\n log('debug', arguments);\n }\n };\n\n _websocketSupported() {\n return !(typeof WebSocket !== 'function' && typeof WebSocket !== 'object');\n };\n\n _setFormat(format) {\n if (this._formatOverride(format)) {\n return;\n }\n if (format === 'protobuf') {\n throw new Error('not implemented by JSON only Centrifuge client – use client with Protobuf');\n }\n this._binary = false;\n this._methodType = JsonMethodType;\n this._pushType = JsonPushType;\n this._encoder = new JsonEncoder();\n this._decoder = new JsonDecoder();\n }\n\n _formatOverride(format) {\n return false;\n }\n\n _configure(configuration) {\n if (!('Promise' in global)) {\n throw new Error('Promise polyfill required');\n }\n\n Object.assign(this._config, configuration || {});\n this._debug('centrifuge config', this._config);\n\n if (!this._url) {\n throw new Error('url required');\n }\n\n if (startsWith(this._url, 'ws') && this._url.indexOf('format=protobuf') > -1) {\n this._setFormat('protobuf');\n } else {\n this._setFormat('json');\n }\n\n if (startsWith(this._url, 'http')) {\n this._debug('client will try to connect to SockJS endpoint');\n if (this._config.sockjs !== null) {\n this._debug('SockJS explicitly provided in options');\n this._sockjs = this._config.sockjs;\n } else {\n if (typeof global.SockJS === 'undefined') {\n throw new Error('SockJS not found, use ws:// in url or include SockJS');\n }\n this._debug('use globally defined SockJS');\n this._sockjs = global.SockJS;\n }\n } else {\n this._debug('client will connect to websocket endpoint');\n }\n };\n\n _setStatus(newStatus) {\n if (this._status !== newStatus) {\n this._debug('Status', this._status, '->', newStatus);\n this._status = newStatus;\n }\n };\n\n _isDisconnected() {\n return this._status === 'disconnected';\n };\n\n _isConnecting() {\n return this._status === 'connecting';\n };\n\n _isConnected() {\n return this._status === 'connected';\n };\n\n _nextMessageId() {\n return ++this._messageId;\n };\n\n _resetRetry() {\n this._debug('reset retries count to 0');\n this._retries = 0;\n };\n\n _getRetryInterval() {\n const interval = backoff(this._retries, this._config.minRetry, this._config.maxRetry);\n\n this._retries += 1;\n return interval;\n };\n\n _abortInflightXHRs() {\n for (const xhrID in this._xhrs) {\n try {\n this._xhrs[xhrID].abort();\n } catch (e) {\n this._debug('error aborting xhr', e);\n }\n delete this._xhrs[xhrID];\n }\n };\n\n _clearConnectedState(reconnect) {\n this._clientID = null;\n this._stopPing();\n\n // fire errbacks of registered outgoing calls.\n for (const id in this._callbacks) {\n if (this._callbacks.hasOwnProperty(id)) {\n const callbacks = this._callbacks[id];\n clearTimeout(callbacks.timeout);\n const errback = callbacks.errback;\n if (!errback) {\n continue;\n }\n errback({error: this._createErrorObject('disconnected')});\n }\n }\n this._callbacks = {};\n\n // fire unsubscribe events\n for (const channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n const sub = this._subs[channel];\n\n if (reconnect) {\n if (sub._isSuccess()) {\n sub._triggerUnsubscribe();\n sub._recover = true;\n }\n sub._setSubscribing();\n } else {\n sub._setUnsubscribed();\n }\n }\n }\n\n this._abortInflightXHRs();\n\n // clear refresh timer\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n // clear sub refresh timers\n for (const channel in this._subRefreshTimeouts) {\n if (this._subRefreshTimeouts.hasOwnProperty(channel) && this._subRefreshTimeouts[channel]) {\n this._clearSubRefreshTimeout(channel);\n }\n }\n this._subRefreshTimeouts = {};\n\n if (!this._reconnect) {\n // completely clear subscriptions\n this._subs = {};\n }\n };\n\n _isTransportOpen() {\n if (this._isSockjs) {\n return this._transport &&\n this._transport.transport &&\n this._transport.transport.readyState === this._transport.transport.OPEN;\n }\n return this._transport && this._transport.readyState === this._transport.OPEN;\n };\n\n _transportSend(commands) {\n if (!commands.length) {\n return true;\n }\n\n if (!this._isTransportOpen()) {\n // resolve pending commands with error if transport is not open\n for (let command in commands) {\n let id = command.id;\n if (!(id in this._callbacks)) {\n continue;\n }\n const callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n const errback = callbacks.errback;\n errback({error: this._createErrorObject(_errorConnectionClosed, 0)});\n }\n return false;\n }\n this._transport.send(this._encoder.encodeCommands(commands));\n return true;\n }\n\n _setupTransport() {\n this._isSockjs = false;\n\n // detect transport to use - SockJS or Websocket\n if (this._sockjs !== null) {\n const sockjsOptions = {\n transports: this._config.sockjsTransports\n };\n\n if (this._config.sockjsServer !== null) {\n sockjsOptions.server = this._config.sockjsServer;\n }\n this._isSockjs = true;\n this._transport = new this._sockjs(this._url, null, sockjsOptions);\n } else {\n if (!this._websocketSupported()) {\n this._debug('No Websocket support and no SockJS configured, can not connect');\n return;\n }\n this._transport = new WebSocket(this._url);\n if (this._binary === true) {\n this._transport.binaryType = 'arraybuffer';\n }\n }\n\n this._transport.onopen = () => {\n this._transportClosed = false;\n\n if (this._isSockjs) {\n this._transportName = 'sockjs-' + this._transport.transport;\n this._transport.onheartbeat = () => this._restartPing();\n } else {\n this._transportName = 'websocket';\n }\n\n // Can omit method here due to zero value.\n const msg = {\n // method: this._methodType.CONNECT\n };\n\n if (this._token || this._connectData) {\n msg.params = {};\n }\n\n if (this._token) {\n msg.params.token = this._token;\n }\n\n if (this._connectData) {\n msg.params.data = this._connectData;\n }\n\n this._latencyStart = new Date();\n this._call(msg).then(resolveCtx => {\n this._connectResponse(this._decoder.decodeCommandResult(this._methodType.CONNECT, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n const err = rejectCtx.error;\n if (err.code === 109) { // token expired.\n this._refreshRequired = true;\n }\n this._disconnect('connect error', true);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n this._transport.onerror = error => {\n this._debug('transport level error', error);\n };\n\n this._transport.onclose = closeEvent => {\n this._transportClosed = true;\n let reason = _errorConnectionClosed;\n let needReconnect = true;\n\n if (closeEvent && 'reason' in closeEvent && closeEvent.reason) {\n try {\n const advice = JSON.parse(closeEvent.reason);\n this._debug('reason is an advice object', advice);\n reason = advice.reason;\n needReconnect = advice.reconnect;\n } catch (e) {\n reason = closeEvent.reason;\n this._debug('reason is a plain string', reason);\n }\n }\n\n // onTransportClose callback should be executed every time transport was closed.\n // This can be helpful to catch failed connection events (because our disconnect\n // event only called once and every future attempts to connect do not fire disconnect\n // event again).\n if (this._config.onTransportClose !== null) {\n this._config.onTransportClose({\n event: closeEvent,\n reason: reason,\n reconnect: needReconnect\n });\n }\n\n this._disconnect(reason, needReconnect);\n\n if (this._reconnect === true) {\n this._reconnecting = true;\n const interval = this._getRetryInterval();\n\n this._debug('reconnect after ' + interval + ' milliseconds');\n setTimeout(() => {\n if (this._reconnect === true) {\n if (this._refreshRequired) {\n this._refresh();\n } else {\n this._connect();\n }\n }\n }, interval);\n }\n };\n\n this._transport.onmessage = event => {\n this._dataReceived(event.data);\n };\n };\n\n rpc(data) {\n const msg = {\n method: this._methodType.RPC,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(resolveCtx => {\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n return this._decoder.decodeCommandResult(this._methodType.RPC, resolveCtx.result);\n }, rejectCtx => {\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n return rejectCtx.error;\n });\n }\n\n send(data) {\n const msg = {\n method: this._methodType.SEND,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n const sent = this._transportSend([msg]); // can send async message to server without id set\n if (!sent) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n };\n return Promise.resolve({});\n }\n\n publish(channel, data) {\n const msg = {\n method: this._methodType.PUBLISH,\n params: {\n channel: channel,\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(result => {\n if (result.next) {\n result.next();\n }\n return {};\n });\n }\n\n _dataReceived(data) {\n const replies = this._decoder.decodeReplies(data);\n // we have to guarantee order of events in replies processing - i.e. start processing\n // next reply only when we finished processing of current one. Without syncing things in\n // this way we could get wrong publication events order as reply promises resolve\n // on next loop tick so for loop continues before we finished emitting all reply events.\n let p = Promise.resolve();\n for (const i in replies) {\n if (replies.hasOwnProperty(i)) {\n p = p.then(() => {\n return this._dispatchReply(replies[i]);\n });\n }\n }\n this._restartPing();\n }\n\n _call(msg) {\n return new Promise((resolve, reject) => {\n const id = this._addMessage(msg);\n this._registerCall(id, resolve, reject);\n });\n }\n\n _connect() {\n if (this.isConnected()) {\n this._debug('connect called when already connected');\n return;\n }\n if (this._status === 'connecting') {\n return;\n }\n\n this._debug('start connecting');\n this._setStatus('connecting');\n this._clientID = null;\n this._reconnect = true;\n this._setupTransport();\n };\n\n _disconnect(reason, shouldReconnect) {\n\n if (this._isDisconnected()) {\n return;\n }\n\n this._debug('disconnected:', reason, shouldReconnect);\n\n const reconnect = shouldReconnect || false;\n\n if (reconnect === false) {\n this._reconnect = false;\n }\n\n this._clearConnectedState(reconnect);\n\n if (!this._isDisconnected()) {\n this._setStatus('disconnected');\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._reconnecting === false) {\n this.emit('disconnect', {\n reason: reason,\n reconnect: reconnect\n });\n }\n }\n\n if (!this._transportClosed) {\n this._transport.close();\n }\n };\n\n _refreshFailed() {\n this._numRefreshFailed = 0;\n if (!this._isDisconnected()) {\n this._disconnect('refresh failed', false);\n }\n if (this._config.onRefreshFailed !== null) {\n this._config.onRefreshFailed();\n }\n };\n\n _refresh() {\n // ask application for new connection token.\n this._debug('refresh token');\n\n if (this._config.refreshAttempts === 0) {\n this._debug('refresh attempts set to 0, do not send refresh request at all');\n this._refreshFailed();\n return;\n }\n\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (this._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n // We don't perform any connection status related actions here as we are\n // relying on server that must close connection eventually.\n if (resp.error) {\n this._debug('error refreshing connection token', resp.error);\n } else {\n this._debug('error refreshing connection token: wrong status code', resp.status);\n }\n this._numRefreshFailed++;\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._config.refreshAttempts !== null && this._numRefreshFailed >= this._config.refreshAttempts) {\n this._refreshFailed();\n return;\n }\n const jitter = Math.round(Math.random() * 1000 * Math.max(this._numRefreshFailed, 20));\n const interval = this._config.refreshInterval + jitter;\n this._refreshTimeout = setTimeout(() => this._refresh(), interval);\n return;\n }\n this._numRefreshFailed = 0;\n this._token = resp.data.token;\n if (!this._token) {\n this._refreshFailed();\n return;\n }\n if (this._isDisconnected() && this._reconnect) {\n this._debug('token refreshed, connect from scratch');\n this._connect();\n } else {\n this._debug('send refreshed token');\n const msg = {\n method: this._methodType.REFRESH,\n params: {\n token: this._token\n }\n };\n this._call(msg).then(resolveCtx => {\n this._refreshResponse(this._decoder.decodeCommandResult(this._methodType.REFRESH, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._refreshError(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n if (this._config.onRefresh !== null) {\n const context = {};\n this._config.onRefresh(context, cb);\n } else {\n const xhr = this._ajax(\n this._config.refreshEndpoint,\n this._config.refreshParams,\n this._config.refreshHeaders,\n this._config.refreshData,\n cb\n );\n this._xhrs[xhrID] = xhr;\n }\n };\n\n _refreshError(err) {\n this._debug('refresh error', err);\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n const interval = this._config.refreshInterval + Math.round(Math.random() * 1000);\n this._refreshTimeout = setTimeout(() => this._refresh(), interval);\n }\n\n _refreshResponse(result) {\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (result.expires) {\n this._clientID = result.client;\n this._refreshTimeout = setTimeout(() => this._refresh(), this._getTTLMilliseconds(result.ttl));\n }\n };\n\n _newXHRID() {\n this._xhrID++;\n return this._xhrID;\n }\n\n _subRefresh(channel) {\n this._debug('refresh subscription token for channel', channel);\n\n if (this._subRefreshTimeouts[channel] !== undefined) {\n this._clearSubRefreshTimeout(channel);\n } else {\n return;\n }\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (resp.error || resp.status !== 200 || this._clientID !== clientID) {\n return;\n }\n let channelsData = {};\n if (resp.data.channels) {\n for (const i in data.channels) {\n const channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n const token = channelsData[channel];\n if (!token) {\n return;\n }\n const msg = {\n method: this._methodType.SUB_REFRESH,\n params: {\n channel: channel,\n token: token\n }\n };\n\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n\n this._call(msg).then(resolveCtx => {\n this._subRefreshResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUB_REFRESH, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subRefreshError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n const data = {\n client: this._clientID,\n channels: [channel]\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n const xhr = this._ajax(\n this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n };\n\n _clearSubRefreshTimeout(channel) {\n if (this._subRefreshTimeouts[channel] !== undefined) {\n clearTimeout(this._subRefreshTimeouts[channel]);\n delete this._subRefreshTimeouts[channel];\n }\n }\n\n _subRefreshError(channel, err) {\n this._debug('subscription refresh error', channel, err);\n this._clearSubRefreshTimeout(channel);\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n const jitter = Math.round(Math.random() * 1000);\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._config.subRefreshInterval + jitter);\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n return;\n }\n\n _subRefreshResponse(channel, result) {\n this._debug('subscription refresh success', channel);\n this._clearSubRefreshTimeout(channel);\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n if (result.expires === true) {\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n return;\n };\n\n _subscribe(sub, isResubscribe) {\n this._debug('subscribing on', sub.channel);\n const channel = sub.channel;\n\n if (!(channel in this._subs)) {\n this._subs[channel] = sub;\n }\n\n if (!this.isConnected()) {\n // subscribe will be called later\n sub._setNew();\n return;\n }\n\n sub._setSubscribing(isResubscribe);\n\n const msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel\n }\n };\n\n // If channel name does not start with privateChannelPrefix - then we\n // can just send subscription message to Centrifuge. If channel name\n // starts with privateChannelPrefix - then this is a private channel\n // and we should ask web application backend for permission first.\n if (startsWith(channel, this._config.privateChannelPrefix)) {\n // private channel.\n if (this._isSubscribeBatching) {\n this._privateChannels[channel] = true;\n } else {\n this.startSubscribeBatching();\n this._subscribe(sub);\n this.stopSubscribeBatching();\n }\n } else {\n const recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n const seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n const gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n const epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n\n this._call(msg).then(resolveCtx => {\n this._subscribeResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUBSCRIBE, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n _unsubscribe(sub) {\n if (this.isConnected()) {\n // No need to unsubscribe in disconnected state - i.e. client already unsubscribed.\n this._addMessage({\n method: this._methodType.UNSUBSCRIBE,\n params: {\n channel: sub.channel\n }\n });\n }\n };\n\n _getTTLMilliseconds(ttl) {\n // https://stackoverflow.com/questions/12633405/what-is-the-maximum-delay-for-setinterval\n return Math.min(ttl * 1000, 2147483647);\n }\n\n getSub(channel) {\n return this._getSub(channel);\n }\n\n _getSub(channel) {\n const sub = this._subs[channel];\n if (!sub) {\n return null;\n }\n return sub;\n };\n\n _connectResponse(result) {\n const wasReconnecting = this._reconnecting;\n this._reconnecting = false;\n this._resetRetry();\n this._refreshRequired = false;\n\n if (this.isConnected()) {\n return;\n }\n\n if (this._latencyStart !== null) {\n this._latency = (new Date()).getTime() - this._latencyStart.getTime();\n this._latencyStart = null;\n }\n\n this._clientID = result.client;\n this._setStatus('connected');\n\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n }\n\n if (result.expires) {\n this._refreshTimeout = setTimeout(() => this._refresh(), this._getTTLMilliseconds(result.ttl));\n }\n\n this.startBatching();\n this.startSubscribeBatching();\n for (const channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n const sub = this._subs[channel];\n if (sub._shouldResubscribe()) {\n this._subscribe(sub, wasReconnecting);\n }\n }\n }\n this.stopSubscribeBatching();\n this.stopBatching();\n\n this._startPing();\n\n const ctx = {\n client: result.client,\n transport: this._transportName,\n latency: this._latency\n };\n if (result.data) {\n ctx.data = result.data;\n }\n\n this.emit('connect', ctx);\n };\n\n _stopPing() {\n if (this._pongTimeout !== null) {\n clearTimeout(this._pongTimeout);\n this._pongTimeout = null;\n }\n if (this._pingTimeout !== null) {\n clearTimeout(this._pingTimeout);\n this._pingTimeout = null;\n }\n };\n\n _startPing() {\n if (this._config.ping !== true || this._config.pingInterval <= 0) {\n return;\n }\n if (!this.isConnected()) {\n return;\n }\n\n this._pingTimeout = setTimeout(() => {\n if (!this.isConnected()) {\n this._stopPing();\n return;\n }\n this.ping();\n this._pongTimeout = setTimeout(() => {\n this._disconnect('no ping', true);\n }, this._config.pongWaitTimeout);\n }, this._config.pingInterval);\n };\n\n _restartPing() {\n this._stopPing();\n this._startPing();\n };\n\n _subscribeError(channel, error) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n if (error.code === 0 && error.message === _errorTimeout) { // client side timeout.\n this._disconnect('timeout', true);\n return;\n }\n sub._setSubscribeError(error);\n };\n\n _subscribeResponse(channel, result) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n\n let recovered = false;\n if ('recovered' in result) {\n recovered = result.recovered;\n }\n sub._setSubscribeSuccess(recovered);\n\n let pubs = result.publications;\n\n if (pubs && pubs.length > 0) {\n // handle missed pubs.\n pubs = pubs.reverse();\n for (let i in pubs) {\n if (pubs.hasOwnProperty(i)) {\n this._handlePublication(channel, pubs[i]);\n }\n }\n } else {\n if (result.recoverable) {\n this._lastSeq[channel] = result.seq || 0;\n this._lastGen[channel] = result.gen || 0;\n }\n }\n\n this._lastEpoch[channel] = result.epoch || '';\n\n if (result.recoverable) {\n sub._recoverable = true;\n }\n\n if (result.expires === true) {\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n };\n\n _handleReply(reply, next) {\n const id = reply.id;\n const result = reply.result;\n\n if (!(id in this._callbacks)) {\n next();\n return;\n }\n const callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n\n if (!errorExists(reply)) {\n const callback = callbacks.callback;\n if (!callback) {\n return;\n }\n callback({result, next});\n } else {\n const errback = callbacks.errback;\n if (!errback) {\n next();\n return;\n }\n const error = reply.error;\n errback({error, next});\n }\n }\n\n _handleJoin(channel, join) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('join', join);\n };\n\n _handleLeave(channel, leave) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('leave', leave);\n };\n\n _handleUnsub(channel, unsub) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.unsubscribe();\n if (unsub.resubscribe === true) {\n sub.subscribe();\n }\n };\n\n _handlePublication(channel, pub) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (pub.seq !== undefined) {\n this._lastSeq[channel] = pub.seq;\n }\n if (pub.gen !== undefined) {\n this._lastGen[channel] = pub.gen;\n }\n sub.emit('publish', pub);\n };\n\n _handleMessage(message) {\n this.emit('message', message.data);\n };\n\n _handlePush(data, next) {\n const push = this._decoder.decodePush(data);\n let type = 0;\n if ('type' in push) {\n type = push['type'];\n }\n const channel = push.channel;\n\n if (type === this._pushType.PUBLICATION) {\n const pub = this._decoder.decodePushData(this._pushType.PUBLICATION, push.data);\n this._handlePublication(channel, pub);\n } else if (type === this._pushType.MESSAGE) {\n const message = this._decoder.decodePushData(this._pushType.MESSAGE, push.data);\n this._handleMessage(message);\n } else if (type === this._pushType.JOIN) {\n const join = this._decoder.decodePushData(this._pushType.JOIN, push.data);\n this._handleJoin(channel, join);\n } else if (type === this._pushType.LEAVE) {\n const leave = this._decoder.decodePushData(this._pushType.LEAVE, push.data);\n this._handleLeave(channel, leave);\n } else if (type === this._pushType.UNSUB) {\n const unsub = this._decoder.decodePushData(this._pushType.UNSUB, push.data);\n this._handleUnsub(channel, unsub);\n }\n next();\n }\n\n _dispatchReply(reply) {\n var next;\n const p = new Promise(resolve =>{\n next = resolve;\n });\n\n if (reply === undefined || reply === null) {\n this._debug('dispatch: got undefined or null reply');\n next();\n return p;\n }\n\n const id = reply.id;\n\n if (id && id > 0) {\n this._handleReply(reply, next);\n } else {\n this._handlePush(reply.result, next);\n }\n\n return p;\n };\n\n _flush() {\n const messages = this._messages.slice(0);\n this._messages = [];\n this._transportSend(messages);\n };\n\n _ping() {\n const msg = {\n method: this._methodType.PING\n };\n this._call(msg).then(resolveCtx => {\n this._pingResponse(this._decoder.decodeCommandResult(this._methodType.PING, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._debug('ping error', rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n _pingResponse(result) {\n if (!this.isConnected()) {\n return;\n }\n this._stopPing();\n this._startPing();\n }\n\n _getLastSeq(channel) {\n const lastSeq = this._lastSeq[channel];\n if (lastSeq) {\n return lastSeq;\n }\n return 0;\n };\n\n _getLastGen(channel) {\n const lastGen = this._lastGen[channel];\n if (lastGen) {\n return lastGen;\n }\n return 0;\n };\n\n _getLastEpoch(channel) {\n const lastEpoch = this._lastEpoch[channel];\n if (lastEpoch) {\n return lastEpoch;\n }\n return '';\n };\n\n _createErrorObject(message, code) {\n const errObject = {\n message: message,\n code: code || 0\n };\n\n return errObject;\n };\n\n _registerCall(id, callback, errback) {\n this._callbacks[id] = {\n callback: callback,\n errback: errback,\n timeout: null\n };\n this._callbacks[id].timeout = setTimeout(() => {\n delete this._callbacks[id];\n if (isFunction(errback)) {\n errback({error: this._createErrorObject(_errorTimeout)});\n }\n }, this._config.timeout);\n };\n\n _addMessage(message) {\n let id = this._nextMessageId();\n message.id = id;\n if (this._isBatching === true) {\n this._messages.push(message);\n } else {\n this._transportSend([message]);\n }\n return id;\n };\n\n isConnected() {\n return this._isConnected();\n }\n\n connect() {\n this._connect();\n };\n\n disconnect() {\n this._disconnect('client', false);\n };\n\n ping() {\n return this._ping();\n }\n\n startBatching() {\n // start collecting messages without sending them to Centrifuge until flush\n // method called\n this._isBatching = true;\n };\n\n stopBatching() {\n this._isBatching = false;\n this._flush();\n };\n\n startSubscribeBatching() {\n // start collecting private channels to create bulk authentication\n // request to subscribeEndpoint when stopSubscribeBatching will be called\n this._isSubscribeBatching = true;\n };\n\n stopSubscribeBatching() {\n // create request to subscribeEndpoint with collected private channels\n // to ask if this client can subscribe on each channel\n this._isSubscribeBatching = false;\n const authChannels = this._privateChannels;\n this._privateChannels = {};\n\n const channels = [];\n\n for (const channel in authChannels) {\n if (authChannels.hasOwnProperty(channel)) {\n const sub = this._getSub(channel);\n if (!sub) {\n continue;\n }\n channels.push(channel);\n }\n }\n\n if (channels.length === 0) {\n this._debug('no private channels found, no need to make request');\n return;\n }\n\n const data = {\n client: this._clientID,\n channels: channels\n };\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (this._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n this._debug('authorization request failed');\n for (const i in channels) {\n if (channels.hasOwnProperty(i)) {\n const channel = channels[i];\n this._subscribeError(channel, this._createErrorObject('authorization request failed'));\n }\n }\n return;\n }\n\n let channelsData = {};\n if (resp.data.channels) {\n for (const i in resp.data.channels) {\n const channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n // try to send all subscriptions in one request.\n let batch = false;\n\n if (!this._isBatching) {\n this.startBatching();\n batch = true;\n }\n\n for (const i in channels) {\n if (channels.hasOwnProperty(i)) {\n const channel = channels[i];\n const token = channelsData[channel];\n\n if (!token) {\n // subscription:error\n this._subscribeError(channel, this._createErrorObject('permission denied', 103));\n continue;\n } else {\n const msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel,\n token: token\n }\n };\n\n const sub = this._getSub(channel);\n if (sub === null) {\n continue;\n }\n\n const recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n const seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n const gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n const epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n this._call(msg).then(resolveCtx => {\n this._subscribeResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUBSCRIBE, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }\n }\n\n if (batch) {\n this.stopBatching();\n }\n\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n const xhr = this._ajax(\n this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n };\n\n subscribe(channel, events) {\n const currentSub = this._getSub(channel);\n if (currentSub !== null) {\n currentSub._setEvents(events);\n if (currentSub._isUnsubscribed()) {\n currentSub.subscribe();\n }\n return currentSub;\n }\n const sub = new Subscription(this, channel, events);\n this._subs[channel] = sub;\n sub.subscribe();\n return sub;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/centrifuge.js","import EventEmitter from 'events';\n\nimport {\n isFunction\n} from './utils';\n\nconst _STATE_NEW = 0;\nconst _STATE_SUBSCRIBING = 1;\nconst _STATE_SUCCESS = 2;\nconst _STATE_ERROR = 3;\nconst _STATE_UNSUBSCRIBED = 4;\n\nexport default class Subscription extends EventEmitter {\n constructor(centrifuge, channel, events) {\n super();\n this.channel = channel;\n this._centrifuge = centrifuge;\n this._status = _STATE_NEW;\n this._error = null;\n this._isResubscribe = false;\n this._ready = false;\n this._subscriptionPromise = null;\n this._noResubscribe = false;\n this._recoverable = false;\n this._recover = false;\n this._setEvents(events);\n this._initializePromise();\n this._promises = {};\n this.on('error', function (errContext) {\n this._centrifuge._debug('subscription error', errContext);\n });\n }\n\n _initializePromise() {\n // this helps us to wait until subscription will successfully\n // subscribe and call actions such as presence, history etc in\n // synchronous way.\n this._ready = false;\n\n this._subscriptionPromise = new Promise((resolve, reject) => {\n this._resolve = value => {\n this._ready = true;\n resolve(value);\n };\n this._reject = err => {\n this._ready = true;\n reject(err);\n };\n }).then(function () {}, function () {});\n };\n\n _needRecover() {\n return this._recoverable === true && this._recover === true;\n };\n\n _setEvents(events) {\n if (!events) {\n return;\n }\n if (isFunction(events)) {\n // events is just a function to handle publication received from channel.\n this.on('publish', events);\n } else if (Object.prototype.toString.call(events) === Object.prototype.toString.call({})) {\n const knownEvents = ['publish', 'join', 'leave', 'unsubscribe', 'subscribe', 'error'];\n for (let i = 0, l = knownEvents.length; i < l; i++) {\n const ev = knownEvents[i];\n if (ev in events) {\n this.on(ev, events[ev]);\n }\n }\n }\n };\n\n _isNew() {\n return this._status === _STATE_NEW;\n };\n\n _isUnsubscribed() {\n return this._status === _STATE_UNSUBSCRIBED;\n };\n\n _isSubscribing() {\n return this._status === _STATE_SUBSCRIBING;\n };\n\n _isReady() {\n return this._status === _STATE_SUCCESS || this._status === _STATE_ERROR;\n };\n\n _isSuccess() {\n return this._status === _STATE_SUCCESS;\n };\n\n _isError() {\n return this._status === _STATE_ERROR;\n };\n\n _setNew() {\n this._status = _STATE_NEW;\n };\n\n _setSubscribing(isResubscribe) {\n this._isResubscribe = isResubscribe || false;\n if (this._ready === true) {\n // new promise for this subscription\n this._initializePromise();\n }\n this._status = _STATE_SUBSCRIBING;\n };\n\n _setSubscribeSuccess(recovered) {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._status = _STATE_SUCCESS;\n const successContext = this._getSubscribeSuccessContext(recovered);\n\n this._recover = false;\n this.emit('subscribe', successContext);\n this._resolve(successContext);\n for (const to in this._promises) {\n clearTimeout(to);\n this._promises[to].resolve();\n delete this._promises[to];\n }\n };\n\n _setSubscribeError(err) {\n if (this._status === _STATE_ERROR) {\n return;\n }\n this._status = _STATE_ERROR;\n this._error = err;\n const errContext = this._getSubscribeErrorContext();\n this.emit('error', errContext);\n this._reject(errContext);\n for (const to in this._promises) {\n clearTimeout(to);\n this._promises[to].reject(err);\n delete this._promises[to];\n }\n };\n\n _triggerUnsubscribe() {\n this.emit('unsubscribe', {\n channel: this.channel\n });\n };\n\n _setUnsubscribed(noResubscribe) {\n this._centrifuge._clearSubRefreshTimeout(this.channel);\n if (this._status === _STATE_UNSUBSCRIBED) {\n return;\n }\n const needTrigger = this._status === _STATE_SUCCESS;\n this._status = _STATE_UNSUBSCRIBED;\n if (noResubscribe === true) {\n this._recover = false;\n this._noResubscribe = true;\n delete this._centrifuge._lastSeq[this.channel];\n delete this._centrifuge._lastGen[this.channel];\n delete this._centrifuge._lastEpoch[this.channel];\n }\n if (needTrigger) {\n this._triggerUnsubscribe();\n }\n };\n\n _shouldResubscribe() {\n return !this._noResubscribe;\n };\n\n _getSubscribeSuccessContext(recovered) {\n return {\n channel: this.channel,\n isResubscribe: this._isResubscribe,\n recovered: recovered\n };\n };\n\n _getSubscribeErrorContext() {\n const subscribeErrorContext = this._error;\n subscribeErrorContext.channel = this.channel;\n subscribeErrorContext.isResubscribe = this._isResubscribe;\n return subscribeErrorContext;\n };\n\n ready(callback, errback) {\n if (this._ready) {\n if (this._isSuccess()) {\n callback(this._getSubscribeSuccessContext());\n } else {\n errback(this._getSubscribeErrorContext());\n }\n }\n };\n\n subscribe() {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._noResubscribe = false;\n this._centrifuge._subscribe(this);\n };\n\n unsubscribe() {\n this._setUnsubscribed(true);\n this._centrifuge._unsubscribe(this);\n };\n\n _methodCall(message, type) {\n const methodCallPromise = new Promise((resolve, reject) => {\n let subPromise;\n if (this._isSuccess()) {\n subPromise = Promise.resolve();\n } else if (this._isError()) {\n subPromise = Promise.reject(this._error);\n } else {\n subPromise = new Promise((res, rej) => {\n const timeout = setTimeout(function () {\n rej({'code': 0, 'message': 'timeout'});\n }, this._centrifuge._config.timeout);\n this._promises[timeout] = {\n resolve: res,\n reject: rej\n };\n });\n }\n subPromise.then(\n () => {\n return this._centrifuge._call(message).then(\n resolveCtx => {\n resolve(this._centrifuge._decoder.decodeCommandResult(type, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n },\n rejectCtx => {\n reject(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n }\n );\n },\n error => {\n reject(error);\n }\n );\n });\n return methodCallPromise;\n }\n\n publish(data) {\n return this._methodCall({\n method: this._centrifuge._methodType.PUBLISH,\n params: {\n channel: this.channel,\n data: data\n }\n }, this._centrifuge._methodType.PUBLISH);\n };\n\n presence() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE);\n };\n\n presenceStats() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE_STATS,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE_STATS);\n };\n\n history() {\n return this._methodCall({\n method: this._centrifuge._methodType.HISTORY,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.HISTORY);\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/subscription.js","export const JsonMethodType = {\n CONNECT: 0,\n SUBSCRIBE: 1,\n UNSUBSCRIBE: 2,\n PUBLISH: 3,\n PRESENCE: 4,\n PRESENCE_STATS: 5,\n HISTORY: 6,\n PING: 7,\n SEND: 8,\n RPC: 9,\n REFRESH: 10,\n SUB_REFRESH: 11\n};\n\nexport const JsonPushType = {\n PUBLICATION: 0,\n JOIN: 1,\n LEAVE: 2,\n UNSUB: 3,\n MESSAGE: 4\n};\n\nexport class JsonEncoder {\n encodeCommands(commands) {\n const encodedCommands = [];\n for (const i in commands) {\n if (commands.hasOwnProperty(i)) {\n encodedCommands.push(JSON.stringify(commands[i]));\n }\n }\n return encodedCommands.join('\\n');\n }\n}\n\nexport class JsonDecoder {\n decodeReplies(data) {\n const replies = [];\n const encodedReplies = data.split('\\n');\n for (const i in encodedReplies) {\n if (encodedReplies.hasOwnProperty(i)) {\n if (!encodedReplies[i]) {\n continue;\n }\n const reply = JSON.parse(encodedReplies[i]);\n replies.push(reply);\n }\n }\n return replies;\n }\n\n decodeCommandResult(methodType, data) {\n return data;\n }\n\n decodePush(data) {\n return data;\n }\n\n decodePushData(pushType, data) {\n return data;\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/json.js","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 3\n// module chunks = 0 1","import {Centrifuge} from './centrifuge.js';\nexport default Centrifuge;\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/events/events.js\n// module id = 6\n// module chunks = 0 1","export function startsWith(value, prefix) {\n return value.lastIndexOf(prefix, 0) === 0;\n};\n\nexport function isFunction(value) {\n if (value === undefined || value === null) {\n return false;\n }\n return typeof value === 'function';\n};\n\nexport function log(level, args) {\n if (global.console) {\n const logger = global.console[level];\n\n if (isFunction(logger)) {\n logger.apply(global.console, args);\n }\n }\n};\n\nexport function backoff(step, min, max) {\n const jitter = 0.5 * Math.random();\n const interval = Math.min(max, min * Math.pow(2, step + 1));\n\n return Math.floor((1 - jitter) * interval);\n};\n\nexport function errorExists(data) {\n return 'error' in data && data.error !== null;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///centrifuge.min.js","webpack:///webpack/bootstrap 888eb561f5375783ac27","webpack:///./src/centrifuge.js","webpack:///./src/subscription.js","webpack:///./src/json.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/index.js","webpack:///./node_modules/events/events.js","webpack:///./src/utils.js"],"names":["root","factory","exports","module","define","amd","self","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","10","global","_interopRequireDefault","obj","default","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","create","constructor","value","writable","setPrototypeOf","__proto__","Centrifuge","undefined","_typeof","Symbol","iterator","_createClass","defineProperties","target","props","length","descriptor","key","protoProps","staticProps","_events","_events2","_subscription","_subscription2","_json","_utils","_EventEmitter","url","options","_this","getPrototypeOf","_url","_sockjs","_isSockjs","_binary","_methodType","_pushType","_encoder","_decoder","_status","_reconnect","_reconnecting","_transport","_transportName","_transportClosed","_messageId","_clientID","_refreshRequired","_subs","_lastSeq","_lastGen","_lastEpoch","_messages","_isBatching","_isSubscribeBatching","_privateChannels","_numRefreshFailed","_refreshTimeout","_pingTimeout","_pongTimeout","_subRefreshTimeouts","_retries","_callbacks","_latency","_latencyStart","_connectData","_token","_xhrID","_xhrs","_config","debug","sockjs","promise","minRetry","maxRetry","timeout","ping","pingInterval","pongWaitTimeout","privateChannelPrefix","onTransportClose","sockjsServer","sockjsTransports","refreshEndpoint","refreshHeaders","refreshParams","refreshData","refreshAttempts","refreshInterval","onRefreshFailed","onRefresh","subscribeEndpoint","subscribeHeaders","subscribeParams","subRefreshInterval","onPrivateSubscribe","_configure","token","data","params","headers","callback","_this2","query","_debug","JSON","stringify","xhr","XMLHttpRequest","ActiveXObject","encodeURIComponent","open","withCredentials","setRequestHeader","headerName","onreadystatechange","readyState","status","parsed","parse","responseText","e","error","_log","setTimeout","send","log","arguments","WebSocket","format","_formatOverride","Error","JsonMethodType","JsonPushType","JsonEncoder","JsonDecoder","configuration","assign","startsWith","indexOf","_setFormat","SockJS","newStatus","interval","backoff","xhrID","abort","reconnect","_stopPing","id","callbacks","clearTimeout","errback","_createErrorObject","channel","sub","_isSuccess","_triggerUnsubscribe","_recover","_shouldResubscribe","_setSubscribing","_setUnsubscribed","_abortInflightXHRs","_clearSubRefreshTimeout","transport","OPEN","commands","_isTransportOpen","command","encodeCommands","_this3","sockjsOptions","transports","server","_websocketSupported","binaryType","onopen","onheartbeat","_restartPing","msg","Date","_call","then","resolveCtx","_connectResponse","decodeCommandResult","CONNECT","result","next","rejectCtx","code","_disconnect","onerror","onclose","closeEvent","reason","needReconnect","advice","event","_getRetryInterval","_refresh","_connect","onmessage","_dataReceived","_this4","method","RPC","isConnected","Promise","reject","SEND","_transportSend","resolve","PUBLISH","_this5","replies","decodeReplies","_dispatchReply","_this6","_addMessage","_registerCall","_setStatus","_setupTransport","shouldReconnect","_isDisconnected","_clearConnectedState","emit","close","_this7","_refreshFailed","clientID","_newXHRID","cb","resp","jitter","Math","round","random","max","REFRESH","_refreshResponse","_refreshError","context","_ajax","err","_this8","_this9","expires","client","_getTTLMilliseconds","ttl","_this10","channelsData","channels","channelData","SUB_REFRESH","_getSub","_subRefreshResponse","_subRefreshError","_this11","subRefreshTimeout","_subRefresh","_this12","isResubscribe","_this13","_setNew","SUBSCRIBE","startSubscribeBatching","_subscribe","stopSubscribeBatching","_needRecover","recover","seq","_getLastSeq","gen","_getLastGen","epoch","_getLastEpoch","_subscribeResponse","_subscribeError","UNSUBSCRIBE","min","_this14","wasReconnecting","_resetRetry","getTime","startBatching","stopBatching","_startPing","ctx","latency","_this15","_isSubscribing","message","_setSubscribeError","_this16","recovered","_setSubscribeSuccess","pubs","publications","reverse","_handlePublication","recoverable","_recoverable","reply","errorExists","join","leave","unsub","unsubscribe","resubscribe","subscribe","pub","push","decodePush","type","PUBLICATION","decodePushData","MESSAGE","_handleMessage","JOIN","_handleJoin","LEAVE","_handleLeave","UNSUB","_handleUnsub","_handleReply","_handlePush","messages","slice","_this17","PING","_pingResponse","lastSeq","lastGen","lastEpoch","_this18","isFunction","_nextMessageId","_isConnected","_ping","_flush","_this19","authChannels","batch","_ret2","events","currentSub","_setEvents","_isUnsubscribed","11","_STATE_NEW","Subscription","centrifuge","_centrifuge","_error","_isResubscribe","_ready","_subscriptionPromise","_noResubscribe","_initializePromise","_promises","on","errContext","_resolve","_reject","toString","knownEvents","ev","successContext","_getSubscribeSuccessContext","to","_getSubscribeErrorContext","noResubscribe","needTrigger","subscribeErrorContext","_unsubscribe","subPromise","_isError","res","rej","_methodCall","PRESENCE","PRESENCE_STATS","HISTORY","12","encodedCommands","encodedReplies","split","methodType","pushType","3","g","Function","eval","window","31","6","EventEmitter","_maxListeners","arg","isNumber","isObject","isUndefined","defaultMaxListeners","setMaxListeners","isNaN","er","handler","len","args","listeners","Array","apply","addListener","listener","newListener","warned","console","trace","once","removeListener","fired","list","position","splice","removeAllListeners","listenerCount","evlistener","emitter","7","prefix","lastIndexOf","level","logger","step","pow","floor"],"mappings":"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","file":"centrifuge.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Centrifuge\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Centrifuge\"] = factory();\n\telse\n\t\troot[\"Centrifuge\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Centrifuge\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Centrifuge\"] = factory();\n\telse\n\t\troot[\"Centrifuge\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 31);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 10:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Centrifuge = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\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 _events = __webpack_require__(6);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _subscription = __webpack_require__(11);\n\nvar _subscription2 = _interopRequireDefault(_subscription);\n\nvar _json = __webpack_require__(12);\n\nvar _utils = __webpack_require__(7);\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 _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\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 _errorTimeout = 'timeout';\nvar _errorConnectionClosed = 'connection closed';\n\nvar Centrifuge = exports.Centrifuge = function (_EventEmitter) {\n _inherits(Centrifuge, _EventEmitter);\n\n function Centrifuge(url, options) {\n _classCallCheck(this, Centrifuge);\n\n var _this = _possibleConstructorReturn(this, (Centrifuge.__proto__ || Object.getPrototypeOf(Centrifuge)).call(this));\n\n _this._url = url;\n _this._sockjs = null;\n _this._isSockjs = false;\n _this._binary = false;\n _this._methodType = null;\n _this._pushType = null;\n _this._encoder = null;\n _this._decoder = null;\n _this._status = 'disconnected';\n _this._reconnect = true;\n _this._reconnecting = false;\n _this._transport = null;\n _this._transportName = null;\n _this._transportClosed = true;\n _this._messageId = 0;\n _this._clientID = null;\n _this._refreshRequired = false;\n _this._subs = {};\n _this._lastSeq = {};\n _this._lastGen = {};\n _this._lastEpoch = {};\n _this._messages = [];\n _this._isBatching = false;\n _this._isSubscribeBatching = false;\n _this._privateChannels = {};\n _this._numRefreshFailed = 0;\n _this._refreshTimeout = null;\n _this._pingTimeout = null;\n _this._pongTimeout = null;\n _this._subRefreshTimeouts = {};\n _this._retries = 0;\n _this._callbacks = {};\n _this._latency = null;\n _this._latencyStart = null;\n _this._connectData = null;\n _this._token = null;\n _this._xhrID = 0;\n _this._xhrs = {};\n _this._config = {\n debug: false,\n sockjs: null,\n promise: null,\n minRetry: 1000,\n maxRetry: 20000,\n timeout: 5000,\n ping: true,\n pingInterval: 25000,\n pongWaitTimeout: 5000,\n privateChannelPrefix: '$',\n onTransportClose: null,\n sockjsServer: null,\n sockjsTransports: ['websocket', 'xdr-streaming', 'xhr-streaming', 'eventsource', 'iframe-eventsource', 'iframe-htmlfile', 'xdr-polling', 'xhr-polling', 'iframe-xhr-polling', 'jsonp-polling'],\n refreshEndpoint: '/centrifuge/refresh',\n refreshHeaders: {},\n refreshParams: {},\n refreshData: {},\n refreshAttempts: null,\n refreshInterval: 1000,\n onRefreshFailed: null,\n onRefresh: null,\n subscribeEndpoint: '/centrifuge/subscribe',\n subscribeHeaders: {},\n subscribeParams: {},\n subRefreshInterval: 1000,\n onPrivateSubscribe: null\n };\n _this._configure(options);\n return _this;\n }\n\n _createClass(Centrifuge, [{\n key: 'setToken',\n value: function setToken(token) {\n this._token = token;\n }\n }, {\n key: 'setConnectData',\n value: function setConnectData(data) {\n this._connectData = data;\n }\n }, {\n key: '_ajax',\n value: function _ajax(url, params, headers, data, callback) {\n var _this2 = this;\n\n var query = '';\n this._debug('sending AJAX request to', url, 'with data', JSON.stringify(data));\n\n var xhr = global.XMLHttpRequest ? new global.XMLHttpRequest() : new global.ActiveXObject('Microsoft.XMLHTTP');\n\n for (var i in params) {\n if (params.hasOwnProperty(i)) {\n if (query.length > 0) {\n query += '&';\n }\n query += encodeURIComponent(i) + '=' + encodeURIComponent(params[i]);\n }\n }\n if (query.length > 0) {\n query = '?' + query;\n }\n xhr.open('POST', url + query, true);\n if ('withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr.setRequestHeader('Content-Type', 'application/json');\n for (var headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n xhr.setRequestHeader(headerName, headers[headerName]);\n }\n }\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n var _data = void 0,\n parsed = false;\n try {\n _data = JSON.parse(xhr.responseText);\n parsed = true;\n } catch (e) {\n callback({\n error: 'Invalid JSON. Data was: ' + xhr.responseText,\n status: 200,\n data: null\n });\n }\n if (parsed) {\n // prevents double execution.\n callback({\n data: _data,\n status: 200\n });\n }\n } else {\n _this2._log('wrong status code in AJAX response', xhr.status);\n callback({\n status: xhr.status,\n data: null\n });\n }\n }\n };\n setTimeout(function () {\n return xhr.send(JSON.stringify(data));\n }, 20);\n return xhr;\n }\n }, {\n key: '_log',\n value: function _log() {\n (0, _utils.log)('info', arguments);\n }\n }, {\n key: '_debug',\n value: function _debug() {\n if (this._config.debug === true) {\n (0, _utils.log)('debug', arguments);\n }\n }\n }, {\n key: '_websocketSupported',\n value: function _websocketSupported() {\n return !(typeof WebSocket !== 'function' && (typeof WebSocket === 'undefined' ? 'undefined' : _typeof(WebSocket)) !== 'object');\n }\n }, {\n key: '_setFormat',\n value: function _setFormat(format) {\n if (this._formatOverride(format)) {\n return;\n }\n if (format === 'protobuf') {\n throw new Error('not implemented by JSON only Centrifuge client – use client with Protobuf');\n }\n this._binary = false;\n this._methodType = _json.JsonMethodType;\n this._pushType = _json.JsonPushType;\n this._encoder = new _json.JsonEncoder();\n this._decoder = new _json.JsonDecoder();\n }\n }, {\n key: '_formatOverride',\n value: function _formatOverride(format) {\n return false;\n }\n }, {\n key: '_configure',\n value: function _configure(configuration) {\n if (!('Promise' in global)) {\n throw new Error('Promise polyfill required');\n }\n\n Object.assign(this._config, configuration || {});\n this._debug('centrifuge config', this._config);\n\n if (!this._url) {\n throw new Error('url required');\n }\n\n if ((0, _utils.startsWith)(this._url, 'ws') && this._url.indexOf('format=protobuf') > -1) {\n this._setFormat('protobuf');\n } else {\n this._setFormat('json');\n }\n\n if ((0, _utils.startsWith)(this._url, 'http')) {\n this._debug('client will try to connect to SockJS endpoint');\n if (this._config.sockjs !== null) {\n this._debug('SockJS explicitly provided in options');\n this._sockjs = this._config.sockjs;\n } else {\n if (typeof global.SockJS === 'undefined') {\n throw new Error('SockJS not found, use ws:// in url or include SockJS');\n }\n this._debug('use globally defined SockJS');\n this._sockjs = global.SockJS;\n }\n } else {\n this._debug('client will connect to websocket endpoint');\n }\n }\n }, {\n key: '_setStatus',\n value: function _setStatus(newStatus) {\n if (this._status !== newStatus) {\n this._debug('Status', this._status, '->', newStatus);\n this._status = newStatus;\n }\n }\n }, {\n key: '_isDisconnected',\n value: function _isDisconnected() {\n return this._status === 'disconnected';\n }\n }, {\n key: '_isConnecting',\n value: function _isConnecting() {\n return this._status === 'connecting';\n }\n }, {\n key: '_isConnected',\n value: function _isConnected() {\n return this._status === 'connected';\n }\n }, {\n key: '_nextMessageId',\n value: function _nextMessageId() {\n return ++this._messageId;\n }\n }, {\n key: '_resetRetry',\n value: function _resetRetry() {\n this._debug('reset retries count to 0');\n this._retries = 0;\n }\n }, {\n key: '_getRetryInterval',\n value: function _getRetryInterval() {\n var interval = (0, _utils.backoff)(this._retries, this._config.minRetry, this._config.maxRetry);\n\n this._retries += 1;\n return interval;\n }\n }, {\n key: '_abortInflightXHRs',\n value: function _abortInflightXHRs() {\n for (var xhrID in this._xhrs) {\n try {\n this._xhrs[xhrID].abort();\n } catch (e) {\n this._debug('error aborting xhr', e);\n }\n delete this._xhrs[xhrID];\n }\n }\n }, {\n key: '_clearConnectedState',\n value: function _clearConnectedState(reconnect) {\n this._clientID = null;\n this._stopPing();\n\n // fire errbacks of registered outgoing calls.\n for (var id in this._callbacks) {\n if (this._callbacks.hasOwnProperty(id)) {\n var callbacks = this._callbacks[id];\n clearTimeout(callbacks.timeout);\n var errback = callbacks.errback;\n if (!errback) {\n continue;\n }\n errback({ error: this._createErrorObject('disconnected') });\n }\n }\n this._callbacks = {};\n\n // fire unsubscribe events\n for (var channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n var sub = this._subs[channel];\n\n if (reconnect) {\n if (sub._isSuccess()) {\n sub._triggerUnsubscribe();\n sub._recover = true;\n }\n if (sub._shouldResubscribe()) {\n sub._setSubscribing();\n }\n } else {\n sub._setUnsubscribed();\n }\n }\n }\n\n this._abortInflightXHRs();\n\n // clear refresh timer\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n // clear sub refresh timers\n for (var _channel in this._subRefreshTimeouts) {\n if (this._subRefreshTimeouts.hasOwnProperty(_channel) && this._subRefreshTimeouts[_channel]) {\n this._clearSubRefreshTimeout(_channel);\n }\n }\n this._subRefreshTimeouts = {};\n\n if (!this._reconnect) {\n // completely clear subscriptions\n this._subs = {};\n }\n }\n }, {\n key: '_isTransportOpen',\n value: function _isTransportOpen() {\n if (this._isSockjs) {\n return this._transport && this._transport.transport && this._transport.transport.readyState === this._transport.transport.OPEN;\n }\n return this._transport && this._transport.readyState === this._transport.OPEN;\n }\n }, {\n key: '_transportSend',\n value: function _transportSend(commands) {\n if (!commands.length) {\n return true;\n }\n\n if (!this._isTransportOpen()) {\n // resolve pending commands with error if transport is not open\n for (var command in commands) {\n var id = command.id;\n if (!(id in this._callbacks)) {\n continue;\n }\n var callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n var errback = callbacks.errback;\n errback({ error: this._createErrorObject(_errorConnectionClosed, 0) });\n }\n return false;\n }\n this._transport.send(this._encoder.encodeCommands(commands));\n return true;\n }\n }, {\n key: '_setupTransport',\n value: function _setupTransport() {\n var _this3 = this;\n\n this._isSockjs = false;\n\n // detect transport to use - SockJS or Websocket\n if (this._sockjs !== null) {\n var sockjsOptions = {\n transports: this._config.sockjsTransports\n };\n\n if (this._config.sockjsServer !== null) {\n sockjsOptions.server = this._config.sockjsServer;\n }\n this._isSockjs = true;\n this._transport = new this._sockjs(this._url, null, sockjsOptions);\n } else {\n if (!this._websocketSupported()) {\n this._debug('No Websocket support and no SockJS configured, can not connect');\n return;\n }\n this._transport = new WebSocket(this._url);\n if (this._binary === true) {\n this._transport.binaryType = 'arraybuffer';\n }\n }\n\n this._transport.onopen = function () {\n _this3._transportClosed = false;\n\n if (_this3._isSockjs) {\n _this3._transportName = 'sockjs-' + _this3._transport.transport;\n _this3._transport.onheartbeat = function () {\n return _this3._restartPing();\n };\n } else {\n _this3._transportName = 'websocket';\n }\n\n // Can omit method here due to zero value.\n var msg = {\n // method: this._methodType.CONNECT\n };\n\n if (_this3._token || _this3._connectData) {\n msg.params = {};\n }\n\n if (_this3._token) {\n msg.params.token = _this3._token;\n }\n\n if (_this3._connectData) {\n msg.params.data = _this3._connectData;\n }\n\n _this3._latencyStart = new Date();\n _this3._call(msg).then(function (resolveCtx) {\n _this3._connectResponse(_this3._decoder.decodeCommandResult(_this3._methodType.CONNECT, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n var err = rejectCtx.error;\n if (err.code === 109) {\n // token expired.\n _this3._refreshRequired = true;\n }\n _this3._disconnect('connect error', true);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n this._transport.onerror = function (error) {\n _this3._debug('transport level error', error);\n };\n\n this._transport.onclose = function (closeEvent) {\n _this3._transportClosed = true;\n var reason = _errorConnectionClosed;\n var needReconnect = true;\n\n if (closeEvent && 'reason' in closeEvent && closeEvent.reason) {\n try {\n var advice = JSON.parse(closeEvent.reason);\n _this3._debug('reason is an advice object', advice);\n reason = advice.reason;\n needReconnect = advice.reconnect;\n } catch (e) {\n reason = closeEvent.reason;\n _this3._debug('reason is a plain string', reason);\n }\n }\n\n // onTransportClose callback should be executed every time transport was closed.\n // This can be helpful to catch failed connection events (because our disconnect\n // event only called once and every future attempts to connect do not fire disconnect\n // event again).\n if (_this3._config.onTransportClose !== null) {\n _this3._config.onTransportClose({\n event: closeEvent,\n reason: reason,\n reconnect: needReconnect\n });\n }\n\n _this3._disconnect(reason, needReconnect);\n\n if (_this3._reconnect === true) {\n _this3._reconnecting = true;\n var interval = _this3._getRetryInterval();\n\n _this3._debug('reconnect after ' + interval + ' milliseconds');\n setTimeout(function () {\n if (_this3._reconnect === true) {\n if (_this3._refreshRequired) {\n _this3._refresh();\n } else {\n _this3._connect();\n }\n }\n }, interval);\n }\n };\n\n this._transport.onmessage = function (event) {\n _this3._dataReceived(event.data);\n };\n }\n }, {\n key: 'rpc',\n value: function rpc(data) {\n var _this4 = this;\n\n var msg = {\n method: this._methodType.RPC,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(function (resolveCtx) {\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n return _this4._decoder.decodeCommandResult(_this4._methodType.RPC, resolveCtx.result);\n }, function (rejectCtx) {\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n return rejectCtx.error;\n });\n }\n }, {\n key: 'send',\n value: function send(data) {\n var msg = {\n method: this._methodType.SEND,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n var sent = this._transportSend([msg]); // can send async message to server without id set\n if (!sent) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n };\n return Promise.resolve({});\n }\n }, {\n key: 'publish',\n value: function publish(channel, data) {\n var msg = {\n method: this._methodType.PUBLISH,\n params: {\n channel: channel,\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(function (result) {\n if (result.next) {\n result.next();\n }\n return {};\n });\n }\n }, {\n key: '_dataReceived',\n value: function _dataReceived(data) {\n var _this5 = this;\n\n var replies = this._decoder.decodeReplies(data);\n // we have to guarantee order of events in replies processing - i.e. start processing\n // next reply only when we finished processing of current one. Without syncing things in\n // this way we could get wrong publication events order as reply promises resolve\n // on next loop tick so for loop continues before we finished emitting all reply events.\n var p = Promise.resolve();\n\n var _loop = function _loop(i) {\n if (replies.hasOwnProperty(i)) {\n p = p.then(function () {\n return _this5._dispatchReply(replies[i]);\n });\n }\n };\n\n for (var i in replies) {\n _loop(i);\n }\n this._restartPing();\n }\n }, {\n key: '_call',\n value: function _call(msg) {\n var _this6 = this;\n\n return new Promise(function (resolve, reject) {\n var id = _this6._addMessage(msg);\n _this6._registerCall(id, resolve, reject);\n });\n }\n }, {\n key: '_connect',\n value: function _connect() {\n if (this.isConnected()) {\n this._debug('connect called when already connected');\n return;\n }\n if (this._status === 'connecting') {\n return;\n }\n\n this._debug('start connecting');\n this._setStatus('connecting');\n this._clientID = null;\n this._reconnect = true;\n this._setupTransport();\n }\n }, {\n key: '_disconnect',\n value: function _disconnect(reason, shouldReconnect) {\n\n if (this._isDisconnected()) {\n return;\n }\n\n this._debug('disconnected:', reason, shouldReconnect);\n\n var reconnect = shouldReconnect || false;\n\n if (reconnect === false) {\n this._reconnect = false;\n }\n\n this._clearConnectedState(reconnect);\n\n if (!this._isDisconnected()) {\n this._setStatus('disconnected');\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._reconnecting === false) {\n this.emit('disconnect', {\n reason: reason,\n reconnect: reconnect\n });\n }\n }\n\n if (!this._transportClosed) {\n this._transport.close();\n }\n }\n }, {\n key: '_refreshFailed',\n value: function _refreshFailed() {\n this._numRefreshFailed = 0;\n if (!this._isDisconnected()) {\n this._disconnect('refresh failed', false);\n }\n if (this._config.onRefreshFailed !== null) {\n this._config.onRefreshFailed();\n }\n }\n }, {\n key: '_refresh',\n value: function _refresh() {\n var _this7 = this;\n\n // ask application for new connection token.\n this._debug('refresh token');\n\n if (this._config.refreshAttempts === 0) {\n this._debug('refresh attempts set to 0, do not send refresh request at all');\n this._refreshFailed();\n return;\n }\n\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n var clientID = this._clientID;\n var xhrID = this._newXHRID();\n\n var cb = function cb(resp) {\n if (xhrID in _this7._xhrs) {\n delete _this7._xhrs[xhrID];\n }\n if (_this7._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n // We don't perform any connection status related actions here as we are\n // relying on server that must close connection eventually.\n if (resp.error) {\n _this7._debug('error refreshing connection token', resp.error);\n } else {\n _this7._debug('error refreshing connection token: wrong status code', resp.status);\n }\n _this7._numRefreshFailed++;\n if (_this7._refreshTimeout !== null) {\n clearTimeout(_this7._refreshTimeout);\n _this7._refreshTimeout = null;\n }\n if (_this7._config.refreshAttempts !== null && _this7._numRefreshFailed >= _this7._config.refreshAttempts) {\n _this7._refreshFailed();\n return;\n }\n var jitter = Math.round(Math.random() * 1000 * Math.max(_this7._numRefreshFailed, 20));\n var interval = _this7._config.refreshInterval + jitter;\n _this7._refreshTimeout = setTimeout(function () {\n return _this7._refresh();\n }, interval);\n return;\n }\n _this7._numRefreshFailed = 0;\n _this7._token = resp.data.token;\n if (!_this7._token) {\n _this7._refreshFailed();\n return;\n }\n if (_this7._isDisconnected() && _this7._reconnect) {\n _this7._debug('token refreshed, connect from scratch');\n _this7._connect();\n } else {\n _this7._debug('send refreshed token');\n var msg = {\n method: _this7._methodType.REFRESH,\n params: {\n token: _this7._token\n }\n };\n _this7._call(msg).then(function (resolveCtx) {\n _this7._refreshResponse(_this7._decoder.decodeCommandResult(_this7._methodType.REFRESH, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this7._refreshError(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n if (this._config.onRefresh !== null) {\n var context = {};\n this._config.onRefresh(context, cb);\n } else {\n var xhr = this._ajax(this._config.refreshEndpoint, this._config.refreshParams, this._config.refreshHeaders, this._config.refreshData, cb);\n this._xhrs[xhrID] = xhr;\n }\n }\n }, {\n key: '_refreshError',\n value: function _refreshError(err) {\n var _this8 = this;\n\n this._debug('refresh error', err);\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n var interval = this._config.refreshInterval + Math.round(Math.random() * 1000);\n this._refreshTimeout = setTimeout(function () {\n return _this8._refresh();\n }, interval);\n }\n }, {\n key: '_refreshResponse',\n value: function _refreshResponse(result) {\n var _this9 = this;\n\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (result.expires) {\n this._clientID = result.client;\n this._refreshTimeout = setTimeout(function () {\n return _this9._refresh();\n }, this._getTTLMilliseconds(result.ttl));\n }\n }\n }, {\n key: '_newXHRID',\n value: function _newXHRID() {\n this._xhrID++;\n return this._xhrID;\n }\n }, {\n key: '_subRefresh',\n value: function _subRefresh(channel) {\n var _this10 = this;\n\n this._debug('refresh subscription token for channel', channel);\n\n if (this._subRefreshTimeouts[channel] !== undefined) {\n this._clearSubRefreshTimeout(channel);\n } else {\n return;\n }\n\n var clientID = this._clientID;\n var xhrID = this._newXHRID();\n\n var cb = function cb(resp) {\n if (xhrID in _this10._xhrs) {\n delete _this10._xhrs[xhrID];\n }\n if (resp.error || resp.status !== 200 || _this10._clientID !== clientID) {\n return;\n }\n var channelsData = {};\n if (resp.data.channels) {\n for (var i in data.channels) {\n var channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n var token = channelsData[channel];\n if (!token) {\n return;\n }\n var msg = {\n method: _this10._methodType.SUB_REFRESH,\n params: {\n channel: channel,\n token: token\n }\n };\n\n var sub = _this10._getSub(channel);\n if (sub === null) {\n return;\n }\n\n _this10._call(msg).then(function (resolveCtx) {\n _this10._subRefreshResponse(channel, _this10._decoder.decodeCommandResult(_this10._methodType.SUB_REFRESH, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this10._subRefreshError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n var data = {\n client: this._clientID,\n channels: [channel]\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n var xhr = this._ajax(this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n }\n }, {\n key: '_clearSubRefreshTimeout',\n value: function _clearSubRefreshTimeout(channel) {\n if (this._subRefreshTimeouts[channel] !== undefined) {\n clearTimeout(this._subRefreshTimeouts[channel]);\n delete this._subRefreshTimeouts[channel];\n }\n }\n }, {\n key: '_subRefreshError',\n value: function _subRefreshError(channel, err) {\n var _this11 = this;\n\n this._debug('subscription refresh error', channel, err);\n this._clearSubRefreshTimeout(channel);\n var sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n var jitter = Math.round(Math.random() * 1000);\n var subRefreshTimeout = setTimeout(function () {\n return _this11._subRefresh(channel);\n }, this._config.subRefreshInterval + jitter);\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n return;\n }\n }, {\n key: '_subRefreshResponse',\n value: function _subRefreshResponse(channel, result) {\n var _this12 = this;\n\n this._debug('subscription refresh success', channel);\n this._clearSubRefreshTimeout(channel);\n var sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n if (result.expires === true) {\n var subRefreshTimeout = setTimeout(function () {\n return _this12._subRefresh(channel);\n }, this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n return;\n }\n }, {\n key: '_subscribe',\n value: function _subscribe(sub, isResubscribe) {\n var _this13 = this;\n\n this._debug('subscribing on', sub.channel);\n var channel = sub.channel;\n\n if (!(channel in this._subs)) {\n this._subs[channel] = sub;\n }\n\n if (!this.isConnected()) {\n // subscribe will be called later\n sub._setNew();\n return;\n }\n\n sub._setSubscribing(isResubscribe);\n\n var msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel\n }\n };\n\n // If channel name does not start with privateChannelPrefix - then we\n // can just send subscription message to Centrifuge. If channel name\n // starts with privateChannelPrefix - then this is a private channel\n // and we should ask web application backend for permission first.\n if ((0, _utils.startsWith)(channel, this._config.privateChannelPrefix)) {\n // private channel.\n if (this._isSubscribeBatching) {\n this._privateChannels[channel] = true;\n } else {\n this.startSubscribeBatching();\n this._subscribe(sub);\n this.stopSubscribeBatching();\n }\n } else {\n var recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n var seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n var gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n var epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n\n this._call(msg).then(function (resolveCtx) {\n _this13._subscribeResponse(channel, _this13._decoder.decodeCommandResult(_this13._methodType.SUBSCRIBE, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this13._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }\n }, {\n key: '_unsubscribe',\n value: function _unsubscribe(sub) {\n if (this.isConnected()) {\n // No need to unsubscribe in disconnected state - i.e. client already unsubscribed.\n this._addMessage({\n method: this._methodType.UNSUBSCRIBE,\n params: {\n channel: sub.channel\n }\n });\n }\n }\n }, {\n key: '_getTTLMilliseconds',\n value: function _getTTLMilliseconds(ttl) {\n // https://stackoverflow.com/questions/12633405/what-is-the-maximum-delay-for-setinterval\n return Math.min(ttl * 1000, 2147483647);\n }\n }, {\n key: 'getSub',\n value: function getSub(channel) {\n return this._getSub(channel);\n }\n }, {\n key: '_getSub',\n value: function _getSub(channel) {\n var sub = this._subs[channel];\n if (!sub) {\n return null;\n }\n return sub;\n }\n }, {\n key: '_connectResponse',\n value: function _connectResponse(result) {\n var _this14 = this;\n\n var wasReconnecting = this._reconnecting;\n this._reconnecting = false;\n this._resetRetry();\n this._refreshRequired = false;\n\n if (this.isConnected()) {\n return;\n }\n\n if (this._latencyStart !== null) {\n this._latency = new Date().getTime() - this._latencyStart.getTime();\n this._latencyStart = null;\n }\n\n this._clientID = result.client;\n this._setStatus('connected');\n\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n }\n\n if (result.expires) {\n this._refreshTimeout = setTimeout(function () {\n return _this14._refresh();\n }, this._getTTLMilliseconds(result.ttl));\n }\n\n this.startBatching();\n this.startSubscribeBatching();\n for (var channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n var sub = this._subs[channel];\n if (sub._shouldResubscribe()) {\n this._subscribe(sub, wasReconnecting);\n }\n }\n }\n this.stopSubscribeBatching();\n this.stopBatching();\n\n this._startPing();\n\n var ctx = {\n client: result.client,\n transport: this._transportName,\n latency: this._latency\n };\n if (result.data) {\n ctx.data = result.data;\n }\n\n this.emit('connect', ctx);\n }\n }, {\n key: '_stopPing',\n value: function _stopPing() {\n if (this._pongTimeout !== null) {\n clearTimeout(this._pongTimeout);\n this._pongTimeout = null;\n }\n if (this._pingTimeout !== null) {\n clearTimeout(this._pingTimeout);\n this._pingTimeout = null;\n }\n }\n }, {\n key: '_startPing',\n value: function _startPing() {\n var _this15 = this;\n\n if (this._config.ping !== true || this._config.pingInterval <= 0) {\n return;\n }\n if (!this.isConnected()) {\n return;\n }\n\n this._pingTimeout = setTimeout(function () {\n if (!_this15.isConnected()) {\n _this15._stopPing();\n return;\n }\n _this15.ping();\n _this15._pongTimeout = setTimeout(function () {\n _this15._disconnect('no ping', true);\n }, _this15._config.pongWaitTimeout);\n }, this._config.pingInterval);\n }\n }, {\n key: '_restartPing',\n value: function _restartPing() {\n this._stopPing();\n this._startPing();\n }\n }, {\n key: '_subscribeError',\n value: function _subscribeError(channel, error) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n if (error.code === 0 && error.message === _errorTimeout) {\n // client side timeout.\n this._disconnect('timeout', true);\n return;\n }\n sub._setSubscribeError(error);\n }\n }, {\n key: '_subscribeResponse',\n value: function _subscribeResponse(channel, result) {\n var _this16 = this;\n\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n\n var recovered = false;\n if ('recovered' in result) {\n recovered = result.recovered;\n }\n sub._setSubscribeSuccess(recovered);\n\n var pubs = result.publications;\n\n if (pubs && pubs.length > 0) {\n // handle missed pubs.\n pubs = pubs.reverse();\n for (var i in pubs) {\n if (pubs.hasOwnProperty(i)) {\n this._handlePublication(channel, pubs[i]);\n }\n }\n } else {\n if (result.recoverable) {\n this._lastSeq[channel] = result.seq || 0;\n this._lastGen[channel] = result.gen || 0;\n }\n }\n\n this._lastEpoch[channel] = result.epoch || '';\n\n if (result.recoverable) {\n sub._recoverable = true;\n }\n\n if (result.expires === true) {\n var subRefreshTimeout = setTimeout(function () {\n return _this16._subRefresh(channel);\n }, this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n }\n }, {\n key: '_handleReply',\n value: function _handleReply(reply, next) {\n var id = reply.id;\n var result = reply.result;\n\n if (!(id in this._callbacks)) {\n next();\n return;\n }\n var callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n\n if (!(0, _utils.errorExists)(reply)) {\n var callback = callbacks.callback;\n if (!callback) {\n return;\n }\n callback({ result: result, next: next });\n } else {\n var errback = callbacks.errback;\n if (!errback) {\n next();\n return;\n }\n var error = reply.error;\n errback({ error: error, next: next });\n }\n }\n }, {\n key: '_handleJoin',\n value: function _handleJoin(channel, join) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('join', join);\n }\n }, {\n key: '_handleLeave',\n value: function _handleLeave(channel, leave) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('leave', leave);\n }\n }, {\n key: '_handleUnsub',\n value: function _handleUnsub(channel, unsub) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.unsubscribe();\n if (unsub.resubscribe === true) {\n sub.subscribe();\n }\n }\n }, {\n key: '_handlePublication',\n value: function _handlePublication(channel, pub) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (pub.seq !== undefined) {\n this._lastSeq[channel] = pub.seq;\n }\n if (pub.gen !== undefined) {\n this._lastGen[channel] = pub.gen;\n }\n sub.emit('publish', pub);\n }\n }, {\n key: '_handleMessage',\n value: function _handleMessage(message) {\n this.emit('message', message.data);\n }\n }, {\n key: '_handlePush',\n value: function _handlePush(data, next) {\n var push = this._decoder.decodePush(data);\n var type = 0;\n if ('type' in push) {\n type = push['type'];\n }\n var channel = push.channel;\n\n if (type === this._pushType.PUBLICATION) {\n var pub = this._decoder.decodePushData(this._pushType.PUBLICATION, push.data);\n this._handlePublication(channel, pub);\n } else if (type === this._pushType.MESSAGE) {\n var message = this._decoder.decodePushData(this._pushType.MESSAGE, push.data);\n this._handleMessage(message);\n } else if (type === this._pushType.JOIN) {\n var join = this._decoder.decodePushData(this._pushType.JOIN, push.data);\n this._handleJoin(channel, join);\n } else if (type === this._pushType.LEAVE) {\n var leave = this._decoder.decodePushData(this._pushType.LEAVE, push.data);\n this._handleLeave(channel, leave);\n } else if (type === this._pushType.UNSUB) {\n var unsub = this._decoder.decodePushData(this._pushType.UNSUB, push.data);\n this._handleUnsub(channel, unsub);\n }\n next();\n }\n }, {\n key: '_dispatchReply',\n value: function _dispatchReply(reply) {\n var next;\n var p = new Promise(function (resolve) {\n next = resolve;\n });\n\n if (reply === undefined || reply === null) {\n this._debug('dispatch: got undefined or null reply');\n next();\n return p;\n }\n\n var id = reply.id;\n\n if (id && id > 0) {\n this._handleReply(reply, next);\n } else {\n this._handlePush(reply.result, next);\n }\n\n return p;\n }\n }, {\n key: '_flush',\n value: function _flush() {\n var messages = this._messages.slice(0);\n this._messages = [];\n this._transportSend(messages);\n }\n }, {\n key: '_ping',\n value: function _ping() {\n var _this17 = this;\n\n var msg = {\n method: this._methodType.PING\n };\n this._call(msg).then(function (resolveCtx) {\n _this17._pingResponse(_this17._decoder.decodeCommandResult(_this17._methodType.PING, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this17._debug('ping error', rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }, {\n key: '_pingResponse',\n value: function _pingResponse(result) {\n if (!this.isConnected()) {\n return;\n }\n this._stopPing();\n this._startPing();\n }\n }, {\n key: '_getLastSeq',\n value: function _getLastSeq(channel) {\n var lastSeq = this._lastSeq[channel];\n if (lastSeq) {\n return lastSeq;\n }\n return 0;\n }\n }, {\n key: '_getLastGen',\n value: function _getLastGen(channel) {\n var lastGen = this._lastGen[channel];\n if (lastGen) {\n return lastGen;\n }\n return 0;\n }\n }, {\n key: '_getLastEpoch',\n value: function _getLastEpoch(channel) {\n var lastEpoch = this._lastEpoch[channel];\n if (lastEpoch) {\n return lastEpoch;\n }\n return '';\n }\n }, {\n key: '_createErrorObject',\n value: function _createErrorObject(message, code) {\n var errObject = {\n message: message,\n code: code || 0\n };\n\n return errObject;\n }\n }, {\n key: '_registerCall',\n value: function _registerCall(id, callback, errback) {\n var _this18 = this;\n\n this._callbacks[id] = {\n callback: callback,\n errback: errback,\n timeout: null\n };\n this._callbacks[id].timeout = setTimeout(function () {\n delete _this18._callbacks[id];\n if ((0, _utils.isFunction)(errback)) {\n errback({ error: _this18._createErrorObject(_errorTimeout) });\n }\n }, this._config.timeout);\n }\n }, {\n key: '_addMessage',\n value: function _addMessage(message) {\n var id = this._nextMessageId();\n message.id = id;\n if (this._isBatching === true) {\n this._messages.push(message);\n } else {\n this._transportSend([message]);\n }\n return id;\n }\n }, {\n key: 'isConnected',\n value: function isConnected() {\n return this._isConnected();\n }\n }, {\n key: 'connect',\n value: function connect() {\n this._connect();\n }\n }, {\n key: 'disconnect',\n value: function disconnect() {\n this._disconnect('client', false);\n }\n }, {\n key: 'ping',\n value: function ping() {\n return this._ping();\n }\n }, {\n key: 'startBatching',\n value: function startBatching() {\n // start collecting messages without sending them to Centrifuge until flush\n // method called\n this._isBatching = true;\n }\n }, {\n key: 'stopBatching',\n value: function stopBatching() {\n this._isBatching = false;\n this._flush();\n }\n }, {\n key: 'startSubscribeBatching',\n value: function startSubscribeBatching() {\n // start collecting private channels to create bulk authentication\n // request to subscribeEndpoint when stopSubscribeBatching will be called\n this._isSubscribeBatching = true;\n }\n }, {\n key: 'stopSubscribeBatching',\n value: function stopSubscribeBatching() {\n var _this19 = this;\n\n // create request to subscribeEndpoint with collected private channels\n // to ask if this client can subscribe on each channel\n this._isSubscribeBatching = false;\n var authChannels = this._privateChannels;\n this._privateChannels = {};\n\n var channels = [];\n\n for (var channel in authChannels) {\n if (authChannels.hasOwnProperty(channel)) {\n var sub = this._getSub(channel);\n if (!sub) {\n continue;\n }\n channels.push(channel);\n }\n }\n\n if (channels.length === 0) {\n this._debug('no private channels found, no need to make request');\n return;\n }\n\n var data = {\n client: this._clientID,\n channels: channels\n };\n\n var clientID = this._clientID;\n var xhrID = this._newXHRID();\n\n var cb = function cb(resp) {\n if (xhrID in _this19._xhrs) {\n delete _this19._xhrs[xhrID];\n }\n if (_this19._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n _this19._debug('authorization request failed');\n for (var i in channels) {\n if (channels.hasOwnProperty(i)) {\n var _channel2 = channels[i];\n _this19._subscribeError(_channel2, _this19._createErrorObject('authorization request failed'));\n }\n }\n return;\n }\n\n var channelsData = {};\n if (resp.data.channels) {\n for (var _i in resp.data.channels) {\n var channelData = resp.data.channels[_i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n // try to send all subscriptions in one request.\n var batch = false;\n\n if (!_this19._isBatching) {\n _this19.startBatching();\n batch = true;\n }\n\n for (var _i2 in channels) {\n if (channels.hasOwnProperty(_i2)) {\n var _ret2 = function () {\n var channel = channels[_i2];\n var token = channelsData[channel];\n\n if (!token) {\n // subscription:error\n _this19._subscribeError(channel, _this19._createErrorObject('permission denied', 103));\n return 'continue';\n } else {\n var msg = {\n method: _this19._methodType.SUBSCRIBE,\n params: {\n channel: channel,\n token: token\n }\n };\n\n var _sub = _this19._getSub(channel);\n if (_sub === null) {\n return 'continue';\n }\n\n var recover = _sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n var seq = _this19._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n var gen = _this19._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n var epoch = _this19._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n _this19._call(msg).then(function (resolveCtx) {\n _this19._subscribeResponse(channel, _this19._decoder.decodeCommandResult(_this19._methodType.SUBSCRIBE, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this19._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }();\n\n if (_ret2 === 'continue') continue;\n }\n }\n\n if (batch) {\n _this19.stopBatching();\n }\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n var xhr = this._ajax(this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n }\n }, {\n key: 'subscribe',\n value: function subscribe(channel, events) {\n var currentSub = this._getSub(channel);\n if (currentSub !== null) {\n currentSub._setEvents(events);\n if (currentSub._isUnsubscribed()) {\n currentSub.subscribe();\n }\n return currentSub;\n }\n var sub = new _subscription2.default(this, channel, events);\n this._subs[channel] = sub;\n sub.subscribe();\n return sub;\n }\n }]);\n\n return Centrifuge;\n}(_events2.default);\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)))\n\n/***/ }),\n\n/***/ 11:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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 _events = __webpack_require__(6);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _utils = __webpack_require__(7);\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 _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\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 _STATE_NEW = 0;\nvar _STATE_SUBSCRIBING = 1;\nvar _STATE_SUCCESS = 2;\nvar _STATE_ERROR = 3;\nvar _STATE_UNSUBSCRIBED = 4;\n\nvar Subscription = function (_EventEmitter) {\n _inherits(Subscription, _EventEmitter);\n\n function Subscription(centrifuge, channel, events) {\n _classCallCheck(this, Subscription);\n\n var _this = _possibleConstructorReturn(this, (Subscription.__proto__ || Object.getPrototypeOf(Subscription)).call(this));\n\n _this.channel = channel;\n _this._centrifuge = centrifuge;\n _this._status = _STATE_NEW;\n _this._error = null;\n _this._isResubscribe = false;\n _this._ready = false;\n _this._subscriptionPromise = null;\n _this._noResubscribe = false;\n _this._recoverable = false;\n _this._recover = false;\n _this._setEvents(events);\n _this._initializePromise();\n _this._promises = {};\n _this.on('error', function (errContext) {\n this._centrifuge._debug('subscription error', errContext);\n });\n return _this;\n }\n\n _createClass(Subscription, [{\n key: '_initializePromise',\n value: function _initializePromise() {\n var _this2 = this;\n\n // this helps us to wait until subscription will successfully\n // subscribe and call actions such as presence, history etc in\n // synchronous way.\n this._ready = false;\n\n this._subscriptionPromise = new Promise(function (resolve, reject) {\n _this2._resolve = function (value) {\n _this2._ready = true;\n resolve(value);\n };\n _this2._reject = function (err) {\n _this2._ready = true;\n reject(err);\n };\n }).then(function () {}, function () {});\n }\n }, {\n key: '_needRecover',\n value: function _needRecover() {\n return this._recoverable === true && this._recover === true;\n }\n }, {\n key: '_setEvents',\n value: function _setEvents(events) {\n if (!events) {\n return;\n }\n if ((0, _utils.isFunction)(events)) {\n // events is just a function to handle publication received from channel.\n this.on('publish', events);\n } else if (Object.prototype.toString.call(events) === Object.prototype.toString.call({})) {\n var knownEvents = ['publish', 'join', 'leave', 'unsubscribe', 'subscribe', 'error'];\n for (var i = 0, l = knownEvents.length; i < l; i++) {\n var ev = knownEvents[i];\n if (ev in events) {\n this.on(ev, events[ev]);\n }\n }\n }\n }\n }, {\n key: '_isNew',\n value: function _isNew() {\n return this._status === _STATE_NEW;\n }\n }, {\n key: '_isUnsubscribed',\n value: function _isUnsubscribed() {\n return this._status === _STATE_UNSUBSCRIBED;\n }\n }, {\n key: '_isSubscribing',\n value: function _isSubscribing() {\n return this._status === _STATE_SUBSCRIBING;\n }\n }, {\n key: '_isReady',\n value: function _isReady() {\n return this._status === _STATE_SUCCESS || this._status === _STATE_ERROR;\n }\n }, {\n key: '_isSuccess',\n value: function _isSuccess() {\n return this._status === _STATE_SUCCESS;\n }\n }, {\n key: '_isError',\n value: function _isError() {\n return this._status === _STATE_ERROR;\n }\n }, {\n key: '_setNew',\n value: function _setNew() {\n this._status = _STATE_NEW;\n }\n }, {\n key: '_setSubscribing',\n value: function _setSubscribing(isResubscribe) {\n this._isResubscribe = isResubscribe || false;\n if (this._ready === true) {\n // new promise for this subscription\n this._initializePromise();\n }\n this._status = _STATE_SUBSCRIBING;\n }\n }, {\n key: '_setSubscribeSuccess',\n value: function _setSubscribeSuccess(recovered) {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._status = _STATE_SUCCESS;\n var successContext = this._getSubscribeSuccessContext(recovered);\n\n this._recover = false;\n this.emit('subscribe', successContext);\n this._resolve(successContext);\n for (var to in this._promises) {\n clearTimeout(to);\n this._promises[to].resolve();\n delete this._promises[to];\n }\n }\n }, {\n key: '_setSubscribeError',\n value: function _setSubscribeError(err) {\n if (this._status === _STATE_ERROR) {\n return;\n }\n this._status = _STATE_ERROR;\n this._error = err;\n var errContext = this._getSubscribeErrorContext();\n this.emit('error', errContext);\n this._reject(errContext);\n for (var to in this._promises) {\n clearTimeout(to);\n this._promises[to].reject(err);\n delete this._promises[to];\n }\n }\n }, {\n key: '_triggerUnsubscribe',\n value: function _triggerUnsubscribe() {\n this.emit('unsubscribe', {\n channel: this.channel\n });\n }\n }, {\n key: '_setUnsubscribed',\n value: function _setUnsubscribed(noResubscribe) {\n this._centrifuge._clearSubRefreshTimeout(this.channel);\n if (this._status === _STATE_UNSUBSCRIBED) {\n return;\n }\n var needTrigger = this._status === _STATE_SUCCESS;\n this._status = _STATE_UNSUBSCRIBED;\n if (noResubscribe === true) {\n this._recover = false;\n this._noResubscribe = true;\n delete this._centrifuge._lastSeq[this.channel];\n delete this._centrifuge._lastGen[this.channel];\n delete this._centrifuge._lastEpoch[this.channel];\n }\n if (needTrigger) {\n this._triggerUnsubscribe();\n }\n }\n }, {\n key: '_shouldResubscribe',\n value: function _shouldResubscribe() {\n return !this._noResubscribe;\n }\n }, {\n key: '_getSubscribeSuccessContext',\n value: function _getSubscribeSuccessContext(recovered) {\n return {\n channel: this.channel,\n isResubscribe: this._isResubscribe,\n recovered: recovered\n };\n }\n }, {\n key: '_getSubscribeErrorContext',\n value: function _getSubscribeErrorContext() {\n var subscribeErrorContext = this._error;\n subscribeErrorContext.channel = this.channel;\n subscribeErrorContext.isResubscribe = this._isResubscribe;\n return subscribeErrorContext;\n }\n }, {\n key: 'ready',\n value: function ready(callback, errback) {\n if (this._ready) {\n if (this._isSuccess()) {\n callback(this._getSubscribeSuccessContext());\n } else {\n errback(this._getSubscribeErrorContext());\n }\n }\n }\n }, {\n key: 'subscribe',\n value: function subscribe() {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._noResubscribe = false;\n this._centrifuge._subscribe(this);\n }\n }, {\n key: 'unsubscribe',\n value: function unsubscribe() {\n this._setUnsubscribed(true);\n this._centrifuge._unsubscribe(this);\n }\n }, {\n key: '_methodCall',\n value: function _methodCall(message, type) {\n var _this3 = this;\n\n var methodCallPromise = new Promise(function (resolve, reject) {\n var subPromise = void 0;\n if (_this3._isSuccess()) {\n subPromise = Promise.resolve();\n } else if (_this3._isError()) {\n subPromise = Promise.reject(_this3._error);\n } else {\n subPromise = new Promise(function (res, rej) {\n var timeout = setTimeout(function () {\n rej({ 'code': 0, 'message': 'timeout' });\n }, _this3._centrifuge._config.timeout);\n _this3._promises[timeout] = {\n resolve: res,\n reject: rej\n };\n });\n }\n subPromise.then(function () {\n return _this3._centrifuge._call(message).then(function (resolveCtx) {\n resolve(_this3._centrifuge._decoder.decodeCommandResult(type, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n reject(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }, function (error) {\n reject(error);\n });\n });\n return methodCallPromise;\n }\n }, {\n key: 'publish',\n value: function publish(data) {\n return this._methodCall({\n method: this._centrifuge._methodType.PUBLISH,\n params: {\n channel: this.channel,\n data: data\n }\n }, this._centrifuge._methodType.PUBLISH);\n }\n }, {\n key: 'presence',\n value: function presence() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE);\n }\n }, {\n key: 'presenceStats',\n value: function presenceStats() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE_STATS,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE_STATS);\n }\n }, {\n key: 'history',\n value: function history() {\n return this._methodCall({\n method: this._centrifuge._methodType.HISTORY,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.HISTORY);\n }\n }]);\n\n return Subscription;\n}(_events2.default);\n\nexports.default = Subscription;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 12:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar JsonMethodType = exports.JsonMethodType = {\n CONNECT: 0,\n SUBSCRIBE: 1,\n UNSUBSCRIBE: 2,\n PUBLISH: 3,\n PRESENCE: 4,\n PRESENCE_STATS: 5,\n HISTORY: 6,\n PING: 7,\n SEND: 8,\n RPC: 9,\n REFRESH: 10,\n SUB_REFRESH: 11\n};\n\nvar JsonPushType = exports.JsonPushType = {\n PUBLICATION: 0,\n JOIN: 1,\n LEAVE: 2,\n UNSUB: 3,\n MESSAGE: 4\n};\n\nvar JsonEncoder = exports.JsonEncoder = function () {\n function JsonEncoder() {\n _classCallCheck(this, JsonEncoder);\n }\n\n _createClass(JsonEncoder, [{\n key: 'encodeCommands',\n value: function encodeCommands(commands) {\n var encodedCommands = [];\n for (var i in commands) {\n if (commands.hasOwnProperty(i)) {\n encodedCommands.push(JSON.stringify(commands[i]));\n }\n }\n return encodedCommands.join('\\n');\n }\n }]);\n\n return JsonEncoder;\n}();\n\nvar JsonDecoder = exports.JsonDecoder = function () {\n function JsonDecoder() {\n _classCallCheck(this, JsonDecoder);\n }\n\n _createClass(JsonDecoder, [{\n key: 'decodeReplies',\n value: function decodeReplies(data) {\n var replies = [];\n var encodedReplies = data.split('\\n');\n for (var i in encodedReplies) {\n if (encodedReplies.hasOwnProperty(i)) {\n if (!encodedReplies[i]) {\n continue;\n }\n var reply = JSON.parse(encodedReplies[i]);\n replies.push(reply);\n }\n }\n return replies;\n }\n }, {\n key: 'decodeCommandResult',\n value: function decodeCommandResult(methodType, data) {\n return data;\n }\n }, {\n key: 'decodePush',\n value: function decodePush(data) {\n return data;\n }\n }, {\n key: 'decodePushData',\n value: function decodePushData(pushType, data) {\n return data;\n }\n }]);\n\n return JsonDecoder;\n}();\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n\n/***/ 31:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _centrifuge = __webpack_require__(10);\n\nexports.default = _centrifuge.Centrifuge;\nmodule.exports = exports['default'];\n\n/***/ }),\n\n/***/ 6:\n/***/ (function(module, exports) {\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n/***/ }),\n\n/***/ 7:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.startsWith = startsWith;\nexports.isFunction = isFunction;\nexports.log = log;\nexports.backoff = backoff;\nexports.errorExists = errorExists;\nfunction startsWith(value, prefix) {\n return value.lastIndexOf(prefix, 0) === 0;\n};\n\nfunction isFunction(value) {\n if (value === undefined || value === null) {\n return false;\n }\n return typeof value === 'function';\n};\n\nfunction log(level, args) {\n if (global.console) {\n var logger = global.console[level];\n\n if (isFunction(logger)) {\n logger.apply(global.console, args);\n }\n }\n};\n\nfunction backoff(step, min, max) {\n var jitter = 0.5 * Math.random();\n var interval = Math.min(max, min * Math.pow(2, step + 1));\n\n return Math.floor((1 - jitter) * interval);\n};\n\nfunction errorExists(data) {\n return 'error' in data && data.error !== null;\n};\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)))\n\n/***/ })\n\n/******/ });\n});\n\n\n// WEBPACK FOOTER //\n// centrifuge.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 31);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 888eb561f5375783ac27","import EventEmitter from 'events';\nimport Subscription from './subscription';\n\nimport {\n JsonEncoder,\n JsonDecoder,\n JsonMethodType,\n JsonPushType\n} from './json';\n\nimport {\n isFunction,\n log,\n startsWith,\n errorExists,\n backoff\n} from './utils';\n\nconst _errorTimeout = 'timeout';\nconst _errorConnectionClosed = 'connection closed';\n\nexport class Centrifuge extends EventEmitter {\n\n constructor(url, options) {\n super();\n this._url = url;\n this._sockjs = null;\n this._isSockjs = false;\n this._binary = false;\n this._methodType = null;\n this._pushType = null;\n this._encoder = null;\n this._decoder = null;\n this._status = 'disconnected';\n this._reconnect = true;\n this._reconnecting = false;\n this._transport = null;\n this._transportName = null;\n this._transportClosed = true;\n this._messageId = 0;\n this._clientID = null;\n this._refreshRequired = false;\n this._subs = {};\n this._lastSeq = {};\n this._lastGen = {};\n this._lastEpoch = {};\n this._messages = [];\n this._isBatching = false;\n this._isSubscribeBatching = false;\n this._privateChannels = {};\n this._numRefreshFailed = 0;\n this._refreshTimeout = null;\n this._pingTimeout = null;\n this._pongTimeout = null;\n this._subRefreshTimeouts = {};\n this._retries = 0;\n this._callbacks = {};\n this._latency = null;\n this._latencyStart = null;\n this._connectData = null;\n this._token = null;\n this._xhrID = 0;\n this._xhrs = {};\n this._config = {\n debug: false,\n sockjs: null,\n promise: null,\n minRetry: 1000,\n maxRetry: 20000,\n timeout: 5000,\n ping: true,\n pingInterval: 25000,\n pongWaitTimeout: 5000,\n privateChannelPrefix: '$',\n onTransportClose: null,\n sockjsServer: null,\n sockjsTransports: [\n 'websocket',\n 'xdr-streaming',\n 'xhr-streaming',\n 'eventsource',\n 'iframe-eventsource',\n 'iframe-htmlfile',\n 'xdr-polling',\n 'xhr-polling',\n 'iframe-xhr-polling',\n 'jsonp-polling'\n ],\n refreshEndpoint: '/centrifuge/refresh',\n refreshHeaders: {},\n refreshParams: {},\n refreshData: {},\n refreshAttempts: null,\n refreshInterval: 1000,\n onRefreshFailed: null,\n onRefresh: null,\n subscribeEndpoint: '/centrifuge/subscribe',\n subscribeHeaders: {},\n subscribeParams: {},\n subRefreshInterval: 1000,\n onPrivateSubscribe: null\n };\n this._configure(options);\n }\n\n setToken(token) {\n this._token = token;\n }\n\n setConnectData(data) {\n this._connectData = data;\n }\n\n _ajax(url, params, headers, data, callback) {\n let query = '';\n this._debug('sending AJAX request to', url, 'with data', JSON.stringify(data));\n\n const xhr = (global.XMLHttpRequest ? new global.XMLHttpRequest() : new global.ActiveXObject('Microsoft.XMLHTTP'));\n\n for (const i in params) {\n if (params.hasOwnProperty(i)) {\n if (query.length > 0) {\n query += '&';\n }\n query += encodeURIComponent(i) + '=' + encodeURIComponent(params[i]);\n }\n }\n if (query.length > 0) {\n query = '?' + query;\n }\n xhr.open('POST', url + query, true);\n if ('withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr.setRequestHeader('Content-Type', 'application/json');\n for (const headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n xhr.setRequestHeader(headerName, headers[headerName]);\n }\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n let data, parsed = false;\n try {\n data = JSON.parse(xhr.responseText);\n parsed = true;\n } catch (e) {\n callback({\n error: 'Invalid JSON. Data was: ' + xhr.responseText,\n status: 200,\n data: null\n });\n }\n if (parsed) { // prevents double execution.\n callback({\n data: data,\n status: 200\n });\n }\n } else {\n this._log('wrong status code in AJAX response', xhr.status);\n callback({\n status: xhr.status,\n data: null\n });\n }\n }\n };\n setTimeout(() => xhr.send(JSON.stringify(data)), 20);\n return xhr;\n };\n\n _log() {\n log('info', arguments);\n };\n\n _debug() {\n if (this._config.debug === true) {\n log('debug', arguments);\n }\n };\n\n _websocketSupported() {\n return !(typeof WebSocket !== 'function' && typeof WebSocket !== 'object');\n };\n\n _setFormat(format) {\n if (this._formatOverride(format)) {\n return;\n }\n if (format === 'protobuf') {\n throw new Error('not implemented by JSON only Centrifuge client – use client with Protobuf');\n }\n this._binary = false;\n this._methodType = JsonMethodType;\n this._pushType = JsonPushType;\n this._encoder = new JsonEncoder();\n this._decoder = new JsonDecoder();\n }\n\n _formatOverride(format) {\n return false;\n }\n\n _configure(configuration) {\n if (!('Promise' in global)) {\n throw new Error('Promise polyfill required');\n }\n\n Object.assign(this._config, configuration || {});\n this._debug('centrifuge config', this._config);\n\n if (!this._url) {\n throw new Error('url required');\n }\n\n if (startsWith(this._url, 'ws') && this._url.indexOf('format=protobuf') > -1) {\n this._setFormat('protobuf');\n } else {\n this._setFormat('json');\n }\n\n if (startsWith(this._url, 'http')) {\n this._debug('client will try to connect to SockJS endpoint');\n if (this._config.sockjs !== null) {\n this._debug('SockJS explicitly provided in options');\n this._sockjs = this._config.sockjs;\n } else {\n if (typeof global.SockJS === 'undefined') {\n throw new Error('SockJS not found, use ws:// in url or include SockJS');\n }\n this._debug('use globally defined SockJS');\n this._sockjs = global.SockJS;\n }\n } else {\n this._debug('client will connect to websocket endpoint');\n }\n };\n\n _setStatus(newStatus) {\n if (this._status !== newStatus) {\n this._debug('Status', this._status, '->', newStatus);\n this._status = newStatus;\n }\n };\n\n _isDisconnected() {\n return this._status === 'disconnected';\n };\n\n _isConnecting() {\n return this._status === 'connecting';\n };\n\n _isConnected() {\n return this._status === 'connected';\n };\n\n _nextMessageId() {\n return ++this._messageId;\n };\n\n _resetRetry() {\n this._debug('reset retries count to 0');\n this._retries = 0;\n };\n\n _getRetryInterval() {\n const interval = backoff(this._retries, this._config.minRetry, this._config.maxRetry);\n\n this._retries += 1;\n return interval;\n };\n\n _abortInflightXHRs() {\n for (const xhrID in this._xhrs) {\n try {\n this._xhrs[xhrID].abort();\n } catch (e) {\n this._debug('error aborting xhr', e);\n }\n delete this._xhrs[xhrID];\n }\n };\n\n _clearConnectedState(reconnect) {\n this._clientID = null;\n this._stopPing();\n\n // fire errbacks of registered outgoing calls.\n for (const id in this._callbacks) {\n if (this._callbacks.hasOwnProperty(id)) {\n const callbacks = this._callbacks[id];\n clearTimeout(callbacks.timeout);\n const errback = callbacks.errback;\n if (!errback) {\n continue;\n }\n errback({error: this._createErrorObject('disconnected')});\n }\n }\n this._callbacks = {};\n\n // fire unsubscribe events\n for (const channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n const sub = this._subs[channel];\n\n if (reconnect) {\n if (sub._isSuccess()) {\n sub._triggerUnsubscribe();\n sub._recover = true;\n }\n if (sub._shouldResubscribe()) {\n sub._setSubscribing();\n }\n } else {\n sub._setUnsubscribed();\n }\n }\n }\n\n this._abortInflightXHRs();\n\n // clear refresh timer\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n // clear sub refresh timers\n for (const channel in this._subRefreshTimeouts) {\n if (this._subRefreshTimeouts.hasOwnProperty(channel) && this._subRefreshTimeouts[channel]) {\n this._clearSubRefreshTimeout(channel);\n }\n }\n this._subRefreshTimeouts = {};\n\n if (!this._reconnect) {\n // completely clear subscriptions\n this._subs = {};\n }\n };\n\n _isTransportOpen() {\n if (this._isSockjs) {\n return this._transport &&\n this._transport.transport &&\n this._transport.transport.readyState === this._transport.transport.OPEN;\n }\n return this._transport && this._transport.readyState === this._transport.OPEN;\n };\n\n _transportSend(commands) {\n if (!commands.length) {\n return true;\n }\n\n if (!this._isTransportOpen()) {\n // resolve pending commands with error if transport is not open\n for (let command in commands) {\n let id = command.id;\n if (!(id in this._callbacks)) {\n continue;\n }\n const callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n const errback = callbacks.errback;\n errback({error: this._createErrorObject(_errorConnectionClosed, 0)});\n }\n return false;\n }\n this._transport.send(this._encoder.encodeCommands(commands));\n return true;\n }\n\n _setupTransport() {\n this._isSockjs = false;\n\n // detect transport to use - SockJS or Websocket\n if (this._sockjs !== null) {\n const sockjsOptions = {\n transports: this._config.sockjsTransports\n };\n\n if (this._config.sockjsServer !== null) {\n sockjsOptions.server = this._config.sockjsServer;\n }\n this._isSockjs = true;\n this._transport = new this._sockjs(this._url, null, sockjsOptions);\n } else {\n if (!this._websocketSupported()) {\n this._debug('No Websocket support and no SockJS configured, can not connect');\n return;\n }\n this._transport = new WebSocket(this._url);\n if (this._binary === true) {\n this._transport.binaryType = 'arraybuffer';\n }\n }\n\n this._transport.onopen = () => {\n this._transportClosed = false;\n\n if (this._isSockjs) {\n this._transportName = 'sockjs-' + this._transport.transport;\n this._transport.onheartbeat = () => this._restartPing();\n } else {\n this._transportName = 'websocket';\n }\n\n // Can omit method here due to zero value.\n const msg = {\n // method: this._methodType.CONNECT\n };\n\n if (this._token || this._connectData) {\n msg.params = {};\n }\n\n if (this._token) {\n msg.params.token = this._token;\n }\n\n if (this._connectData) {\n msg.params.data = this._connectData;\n }\n\n this._latencyStart = new Date();\n this._call(msg).then(resolveCtx => {\n this._connectResponse(this._decoder.decodeCommandResult(this._methodType.CONNECT, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n const err = rejectCtx.error;\n if (err.code === 109) { // token expired.\n this._refreshRequired = true;\n }\n this._disconnect('connect error', true);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n this._transport.onerror = error => {\n this._debug('transport level error', error);\n };\n\n this._transport.onclose = closeEvent => {\n this._transportClosed = true;\n let reason = _errorConnectionClosed;\n let needReconnect = true;\n\n if (closeEvent && 'reason' in closeEvent && closeEvent.reason) {\n try {\n const advice = JSON.parse(closeEvent.reason);\n this._debug('reason is an advice object', advice);\n reason = advice.reason;\n needReconnect = advice.reconnect;\n } catch (e) {\n reason = closeEvent.reason;\n this._debug('reason is a plain string', reason);\n }\n }\n\n // onTransportClose callback should be executed every time transport was closed.\n // This can be helpful to catch failed connection events (because our disconnect\n // event only called once and every future attempts to connect do not fire disconnect\n // event again).\n if (this._config.onTransportClose !== null) {\n this._config.onTransportClose({\n event: closeEvent,\n reason: reason,\n reconnect: needReconnect\n });\n }\n\n this._disconnect(reason, needReconnect);\n\n if (this._reconnect === true) {\n this._reconnecting = true;\n const interval = this._getRetryInterval();\n\n this._debug('reconnect after ' + interval + ' milliseconds');\n setTimeout(() => {\n if (this._reconnect === true) {\n if (this._refreshRequired) {\n this._refresh();\n } else {\n this._connect();\n }\n }\n }, interval);\n }\n };\n\n this._transport.onmessage = event => {\n this._dataReceived(event.data);\n };\n };\n\n rpc(data) {\n const msg = {\n method: this._methodType.RPC,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(resolveCtx => {\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n return this._decoder.decodeCommandResult(this._methodType.RPC, resolveCtx.result);\n }, rejectCtx => {\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n return rejectCtx.error;\n });\n }\n\n send(data) {\n const msg = {\n method: this._methodType.SEND,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n const sent = this._transportSend([msg]); // can send async message to server without id set\n if (!sent) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n };\n return Promise.resolve({});\n }\n\n publish(channel, data) {\n const msg = {\n method: this._methodType.PUBLISH,\n params: {\n channel: channel,\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(result => {\n if (result.next) {\n result.next();\n }\n return {};\n });\n }\n\n _dataReceived(data) {\n const replies = this._decoder.decodeReplies(data);\n // we have to guarantee order of events in replies processing - i.e. start processing\n // next reply only when we finished processing of current one. Without syncing things in\n // this way we could get wrong publication events order as reply promises resolve\n // on next loop tick so for loop continues before we finished emitting all reply events.\n let p = Promise.resolve();\n for (const i in replies) {\n if (replies.hasOwnProperty(i)) {\n p = p.then(() => {\n return this._dispatchReply(replies[i]);\n });\n }\n }\n this._restartPing();\n }\n\n _call(msg) {\n return new Promise((resolve, reject) => {\n const id = this._addMessage(msg);\n this._registerCall(id, resolve, reject);\n });\n }\n\n _connect() {\n if (this.isConnected()) {\n this._debug('connect called when already connected');\n return;\n }\n if (this._status === 'connecting') {\n return;\n }\n\n this._debug('start connecting');\n this._setStatus('connecting');\n this._clientID = null;\n this._reconnect = true;\n this._setupTransport();\n };\n\n _disconnect(reason, shouldReconnect) {\n\n if (this._isDisconnected()) {\n return;\n }\n\n this._debug('disconnected:', reason, shouldReconnect);\n\n const reconnect = shouldReconnect || false;\n\n if (reconnect === false) {\n this._reconnect = false;\n }\n\n this._clearConnectedState(reconnect);\n\n if (!this._isDisconnected()) {\n this._setStatus('disconnected');\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._reconnecting === false) {\n this.emit('disconnect', {\n reason: reason,\n reconnect: reconnect\n });\n }\n }\n\n if (!this._transportClosed) {\n this._transport.close();\n }\n };\n\n _refreshFailed() {\n this._numRefreshFailed = 0;\n if (!this._isDisconnected()) {\n this._disconnect('refresh failed', false);\n }\n if (this._config.onRefreshFailed !== null) {\n this._config.onRefreshFailed();\n }\n };\n\n _refresh() {\n // ask application for new connection token.\n this._debug('refresh token');\n\n if (this._config.refreshAttempts === 0) {\n this._debug('refresh attempts set to 0, do not send refresh request at all');\n this._refreshFailed();\n return;\n }\n\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (this._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n // We don't perform any connection status related actions here as we are\n // relying on server that must close connection eventually.\n if (resp.error) {\n this._debug('error refreshing connection token', resp.error);\n } else {\n this._debug('error refreshing connection token: wrong status code', resp.status);\n }\n this._numRefreshFailed++;\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._config.refreshAttempts !== null && this._numRefreshFailed >= this._config.refreshAttempts) {\n this._refreshFailed();\n return;\n }\n const jitter = Math.round(Math.random() * 1000 * Math.max(this._numRefreshFailed, 20));\n const interval = this._config.refreshInterval + jitter;\n this._refreshTimeout = setTimeout(() => this._refresh(), interval);\n return;\n }\n this._numRefreshFailed = 0;\n this._token = resp.data.token;\n if (!this._token) {\n this._refreshFailed();\n return;\n }\n if (this._isDisconnected() && this._reconnect) {\n this._debug('token refreshed, connect from scratch');\n this._connect();\n } else {\n this._debug('send refreshed token');\n const msg = {\n method: this._methodType.REFRESH,\n params: {\n token: this._token\n }\n };\n this._call(msg).then(resolveCtx => {\n this._refreshResponse(this._decoder.decodeCommandResult(this._methodType.REFRESH, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._refreshError(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n if (this._config.onRefresh !== null) {\n const context = {};\n this._config.onRefresh(context, cb);\n } else {\n const xhr = this._ajax(\n this._config.refreshEndpoint,\n this._config.refreshParams,\n this._config.refreshHeaders,\n this._config.refreshData,\n cb\n );\n this._xhrs[xhrID] = xhr;\n }\n };\n\n _refreshError(err) {\n this._debug('refresh error', err);\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n const interval = this._config.refreshInterval + Math.round(Math.random() * 1000);\n this._refreshTimeout = setTimeout(() => this._refresh(), interval);\n }\n\n _refreshResponse(result) {\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (result.expires) {\n this._clientID = result.client;\n this._refreshTimeout = setTimeout(() => this._refresh(), this._getTTLMilliseconds(result.ttl));\n }\n };\n\n _newXHRID() {\n this._xhrID++;\n return this._xhrID;\n }\n\n _subRefresh(channel) {\n this._debug('refresh subscription token for channel', channel);\n\n if (this._subRefreshTimeouts[channel] !== undefined) {\n this._clearSubRefreshTimeout(channel);\n } else {\n return;\n }\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (resp.error || resp.status !== 200 || this._clientID !== clientID) {\n return;\n }\n let channelsData = {};\n if (resp.data.channels) {\n for (const i in data.channels) {\n const channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n const token = channelsData[channel];\n if (!token) {\n return;\n }\n const msg = {\n method: this._methodType.SUB_REFRESH,\n params: {\n channel: channel,\n token: token\n }\n };\n\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n\n this._call(msg).then(resolveCtx => {\n this._subRefreshResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUB_REFRESH, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subRefreshError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n const data = {\n client: this._clientID,\n channels: [channel]\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n const xhr = this._ajax(\n this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n };\n\n _clearSubRefreshTimeout(channel) {\n if (this._subRefreshTimeouts[channel] !== undefined) {\n clearTimeout(this._subRefreshTimeouts[channel]);\n delete this._subRefreshTimeouts[channel];\n }\n }\n\n _subRefreshError(channel, err) {\n this._debug('subscription refresh error', channel, err);\n this._clearSubRefreshTimeout(channel);\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n const jitter = Math.round(Math.random() * 1000);\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._config.subRefreshInterval + jitter);\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n return;\n }\n\n _subRefreshResponse(channel, result) {\n this._debug('subscription refresh success', channel);\n this._clearSubRefreshTimeout(channel);\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n if (result.expires === true) {\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n return;\n };\n\n _subscribe(sub, isResubscribe) {\n this._debug('subscribing on', sub.channel);\n const channel = sub.channel;\n\n if (!(channel in this._subs)) {\n this._subs[channel] = sub;\n }\n\n if (!this.isConnected()) {\n // subscribe will be called later\n sub._setNew();\n return;\n }\n\n sub._setSubscribing(isResubscribe);\n\n const msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel\n }\n };\n\n // If channel name does not start with privateChannelPrefix - then we\n // can just send subscription message to Centrifuge. If channel name\n // starts with privateChannelPrefix - then this is a private channel\n // and we should ask web application backend for permission first.\n if (startsWith(channel, this._config.privateChannelPrefix)) {\n // private channel.\n if (this._isSubscribeBatching) {\n this._privateChannels[channel] = true;\n } else {\n this.startSubscribeBatching();\n this._subscribe(sub);\n this.stopSubscribeBatching();\n }\n } else {\n const recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n const seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n const gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n const epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n\n this._call(msg).then(resolveCtx => {\n this._subscribeResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUBSCRIBE, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n _unsubscribe(sub) {\n if (this.isConnected()) {\n // No need to unsubscribe in disconnected state - i.e. client already unsubscribed.\n this._addMessage({\n method: this._methodType.UNSUBSCRIBE,\n params: {\n channel: sub.channel\n }\n });\n }\n };\n\n _getTTLMilliseconds(ttl) {\n // https://stackoverflow.com/questions/12633405/what-is-the-maximum-delay-for-setinterval\n return Math.min(ttl * 1000, 2147483647);\n }\n\n getSub(channel) {\n return this._getSub(channel);\n }\n\n _getSub(channel) {\n const sub = this._subs[channel];\n if (!sub) {\n return null;\n }\n return sub;\n };\n\n _connectResponse(result) {\n const wasReconnecting = this._reconnecting;\n this._reconnecting = false;\n this._resetRetry();\n this._refreshRequired = false;\n\n if (this.isConnected()) {\n return;\n }\n\n if (this._latencyStart !== null) {\n this._latency = (new Date()).getTime() - this._latencyStart.getTime();\n this._latencyStart = null;\n }\n\n this._clientID = result.client;\n this._setStatus('connected');\n\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n }\n\n if (result.expires) {\n this._refreshTimeout = setTimeout(() => this._refresh(), this._getTTLMilliseconds(result.ttl));\n }\n\n this.startBatching();\n this.startSubscribeBatching();\n for (const channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n const sub = this._subs[channel];\n if (sub._shouldResubscribe()) {\n this._subscribe(sub, wasReconnecting);\n }\n }\n }\n this.stopSubscribeBatching();\n this.stopBatching();\n\n this._startPing();\n\n const ctx = {\n client: result.client,\n transport: this._transportName,\n latency: this._latency\n };\n if (result.data) {\n ctx.data = result.data;\n }\n\n this.emit('connect', ctx);\n };\n\n _stopPing() {\n if (this._pongTimeout !== null) {\n clearTimeout(this._pongTimeout);\n this._pongTimeout = null;\n }\n if (this._pingTimeout !== null) {\n clearTimeout(this._pingTimeout);\n this._pingTimeout = null;\n }\n };\n\n _startPing() {\n if (this._config.ping !== true || this._config.pingInterval <= 0) {\n return;\n }\n if (!this.isConnected()) {\n return;\n }\n\n this._pingTimeout = setTimeout(() => {\n if (!this.isConnected()) {\n this._stopPing();\n return;\n }\n this.ping();\n this._pongTimeout = setTimeout(() => {\n this._disconnect('no ping', true);\n }, this._config.pongWaitTimeout);\n }, this._config.pingInterval);\n };\n\n _restartPing() {\n this._stopPing();\n this._startPing();\n };\n\n _subscribeError(channel, error) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n if (error.code === 0 && error.message === _errorTimeout) { // client side timeout.\n this._disconnect('timeout', true);\n return;\n }\n sub._setSubscribeError(error);\n };\n\n _subscribeResponse(channel, result) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n\n let recovered = false;\n if ('recovered' in result) {\n recovered = result.recovered;\n }\n sub._setSubscribeSuccess(recovered);\n\n let pubs = result.publications;\n\n if (pubs && pubs.length > 0) {\n // handle missed pubs.\n pubs = pubs.reverse();\n for (let i in pubs) {\n if (pubs.hasOwnProperty(i)) {\n this._handlePublication(channel, pubs[i]);\n }\n }\n } else {\n if (result.recoverable) {\n this._lastSeq[channel] = result.seq || 0;\n this._lastGen[channel] = result.gen || 0;\n }\n }\n\n this._lastEpoch[channel] = result.epoch || '';\n\n if (result.recoverable) {\n sub._recoverable = true;\n }\n\n if (result.expires === true) {\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n };\n\n _handleReply(reply, next) {\n const id = reply.id;\n const result = reply.result;\n\n if (!(id in this._callbacks)) {\n next();\n return;\n }\n const callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n\n if (!errorExists(reply)) {\n const callback = callbacks.callback;\n if (!callback) {\n return;\n }\n callback({result, next});\n } else {\n const errback = callbacks.errback;\n if (!errback) {\n next();\n return;\n }\n const error = reply.error;\n errback({error, next});\n }\n }\n\n _handleJoin(channel, join) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('join', join);\n };\n\n _handleLeave(channel, leave) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('leave', leave);\n };\n\n _handleUnsub(channel, unsub) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.unsubscribe();\n if (unsub.resubscribe === true) {\n sub.subscribe();\n }\n };\n\n _handlePublication(channel, pub) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (pub.seq !== undefined) {\n this._lastSeq[channel] = pub.seq;\n }\n if (pub.gen !== undefined) {\n this._lastGen[channel] = pub.gen;\n }\n sub.emit('publish', pub);\n };\n\n _handleMessage(message) {\n this.emit('message', message.data);\n };\n\n _handlePush(data, next) {\n const push = this._decoder.decodePush(data);\n let type = 0;\n if ('type' in push) {\n type = push['type'];\n }\n const channel = push.channel;\n\n if (type === this._pushType.PUBLICATION) {\n const pub = this._decoder.decodePushData(this._pushType.PUBLICATION, push.data);\n this._handlePublication(channel, pub);\n } else if (type === this._pushType.MESSAGE) {\n const message = this._decoder.decodePushData(this._pushType.MESSAGE, push.data);\n this._handleMessage(message);\n } else if (type === this._pushType.JOIN) {\n const join = this._decoder.decodePushData(this._pushType.JOIN, push.data);\n this._handleJoin(channel, join);\n } else if (type === this._pushType.LEAVE) {\n const leave = this._decoder.decodePushData(this._pushType.LEAVE, push.data);\n this._handleLeave(channel, leave);\n } else if (type === this._pushType.UNSUB) {\n const unsub = this._decoder.decodePushData(this._pushType.UNSUB, push.data);\n this._handleUnsub(channel, unsub);\n }\n next();\n }\n\n _dispatchReply(reply) {\n var next;\n const p = new Promise(resolve =>{\n next = resolve;\n });\n\n if (reply === undefined || reply === null) {\n this._debug('dispatch: got undefined or null reply');\n next();\n return p;\n }\n\n const id = reply.id;\n\n if (id && id > 0) {\n this._handleReply(reply, next);\n } else {\n this._handlePush(reply.result, next);\n }\n\n return p;\n };\n\n _flush() {\n const messages = this._messages.slice(0);\n this._messages = [];\n this._transportSend(messages);\n };\n\n _ping() {\n const msg = {\n method: this._methodType.PING\n };\n this._call(msg).then(resolveCtx => {\n this._pingResponse(this._decoder.decodeCommandResult(this._methodType.PING, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._debug('ping error', rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n _pingResponse(result) {\n if (!this.isConnected()) {\n return;\n }\n this._stopPing();\n this._startPing();\n }\n\n _getLastSeq(channel) {\n const lastSeq = this._lastSeq[channel];\n if (lastSeq) {\n return lastSeq;\n }\n return 0;\n };\n\n _getLastGen(channel) {\n const lastGen = this._lastGen[channel];\n if (lastGen) {\n return lastGen;\n }\n return 0;\n };\n\n _getLastEpoch(channel) {\n const lastEpoch = this._lastEpoch[channel];\n if (lastEpoch) {\n return lastEpoch;\n }\n return '';\n };\n\n _createErrorObject(message, code) {\n const errObject = {\n message: message,\n code: code || 0\n };\n\n return errObject;\n };\n\n _registerCall(id, callback, errback) {\n this._callbacks[id] = {\n callback: callback,\n errback: errback,\n timeout: null\n };\n this._callbacks[id].timeout = setTimeout(() => {\n delete this._callbacks[id];\n if (isFunction(errback)) {\n errback({error: this._createErrorObject(_errorTimeout)});\n }\n }, this._config.timeout);\n };\n\n _addMessage(message) {\n let id = this._nextMessageId();\n message.id = id;\n if (this._isBatching === true) {\n this._messages.push(message);\n } else {\n this._transportSend([message]);\n }\n return id;\n };\n\n isConnected() {\n return this._isConnected();\n }\n\n connect() {\n this._connect();\n };\n\n disconnect() {\n this._disconnect('client', false);\n };\n\n ping() {\n return this._ping();\n }\n\n startBatching() {\n // start collecting messages without sending them to Centrifuge until flush\n // method called\n this._isBatching = true;\n };\n\n stopBatching() {\n this._isBatching = false;\n this._flush();\n };\n\n startSubscribeBatching() {\n // start collecting private channels to create bulk authentication\n // request to subscribeEndpoint when stopSubscribeBatching will be called\n this._isSubscribeBatching = true;\n };\n\n stopSubscribeBatching() {\n // create request to subscribeEndpoint with collected private channels\n // to ask if this client can subscribe on each channel\n this._isSubscribeBatching = false;\n const authChannels = this._privateChannels;\n this._privateChannels = {};\n\n const channels = [];\n\n for (const channel in authChannels) {\n if (authChannels.hasOwnProperty(channel)) {\n const sub = this._getSub(channel);\n if (!sub) {\n continue;\n }\n channels.push(channel);\n }\n }\n\n if (channels.length === 0) {\n this._debug('no private channels found, no need to make request');\n return;\n }\n\n const data = {\n client: this._clientID,\n channels: channels\n };\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (this._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n this._debug('authorization request failed');\n for (const i in channels) {\n if (channels.hasOwnProperty(i)) {\n const channel = channels[i];\n this._subscribeError(channel, this._createErrorObject('authorization request failed'));\n }\n }\n return;\n }\n\n let channelsData = {};\n if (resp.data.channels) {\n for (const i in resp.data.channels) {\n const channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n // try to send all subscriptions in one request.\n let batch = false;\n\n if (!this._isBatching) {\n this.startBatching();\n batch = true;\n }\n\n for (const i in channels) {\n if (channels.hasOwnProperty(i)) {\n const channel = channels[i];\n const token = channelsData[channel];\n\n if (!token) {\n // subscription:error\n this._subscribeError(channel, this._createErrorObject('permission denied', 103));\n continue;\n } else {\n const msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel,\n token: token\n }\n };\n\n const sub = this._getSub(channel);\n if (sub === null) {\n continue;\n }\n\n const recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n const seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n const gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n const epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n this._call(msg).then(resolveCtx => {\n this._subscribeResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUBSCRIBE, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }\n }\n\n if (batch) {\n this.stopBatching();\n }\n\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n const xhr = this._ajax(\n this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n };\n\n subscribe(channel, events) {\n const currentSub = this._getSub(channel);\n if (currentSub !== null) {\n currentSub._setEvents(events);\n if (currentSub._isUnsubscribed()) {\n currentSub.subscribe();\n }\n return currentSub;\n }\n const sub = new Subscription(this, channel, events);\n this._subs[channel] = sub;\n sub.subscribe();\n return sub;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/centrifuge.js","import EventEmitter from 'events';\n\nimport {\n isFunction\n} from './utils';\n\nconst _STATE_NEW = 0;\nconst _STATE_SUBSCRIBING = 1;\nconst _STATE_SUCCESS = 2;\nconst _STATE_ERROR = 3;\nconst _STATE_UNSUBSCRIBED = 4;\n\nexport default class Subscription extends EventEmitter {\n constructor(centrifuge, channel, events) {\n super();\n this.channel = channel;\n this._centrifuge = centrifuge;\n this._status = _STATE_NEW;\n this._error = null;\n this._isResubscribe = false;\n this._ready = false;\n this._subscriptionPromise = null;\n this._noResubscribe = false;\n this._recoverable = false;\n this._recover = false;\n this._setEvents(events);\n this._initializePromise();\n this._promises = {};\n this.on('error', function (errContext) {\n this._centrifuge._debug('subscription error', errContext);\n });\n }\n\n _initializePromise() {\n // this helps us to wait until subscription will successfully\n // subscribe and call actions such as presence, history etc in\n // synchronous way.\n this._ready = false;\n\n this._subscriptionPromise = new Promise((resolve, reject) => {\n this._resolve = value => {\n this._ready = true;\n resolve(value);\n };\n this._reject = err => {\n this._ready = true;\n reject(err);\n };\n }).then(function () {}, function () {});\n };\n\n _needRecover() {\n return this._recoverable === true && this._recover === true;\n };\n\n _setEvents(events) {\n if (!events) {\n return;\n }\n if (isFunction(events)) {\n // events is just a function to handle publication received from channel.\n this.on('publish', events);\n } else if (Object.prototype.toString.call(events) === Object.prototype.toString.call({})) {\n const knownEvents = ['publish', 'join', 'leave', 'unsubscribe', 'subscribe', 'error'];\n for (let i = 0, l = knownEvents.length; i < l; i++) {\n const ev = knownEvents[i];\n if (ev in events) {\n this.on(ev, events[ev]);\n }\n }\n }\n };\n\n _isNew() {\n return this._status === _STATE_NEW;\n };\n\n _isUnsubscribed() {\n return this._status === _STATE_UNSUBSCRIBED;\n };\n\n _isSubscribing() {\n return this._status === _STATE_SUBSCRIBING;\n };\n\n _isReady() {\n return this._status === _STATE_SUCCESS || this._status === _STATE_ERROR;\n };\n\n _isSuccess() {\n return this._status === _STATE_SUCCESS;\n };\n\n _isError() {\n return this._status === _STATE_ERROR;\n };\n\n _setNew() {\n this._status = _STATE_NEW;\n };\n\n _setSubscribing(isResubscribe) {\n this._isResubscribe = isResubscribe || false;\n if (this._ready === true) {\n // new promise for this subscription\n this._initializePromise();\n }\n this._status = _STATE_SUBSCRIBING;\n };\n\n _setSubscribeSuccess(recovered) {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._status = _STATE_SUCCESS;\n const successContext = this._getSubscribeSuccessContext(recovered);\n\n this._recover = false;\n this.emit('subscribe', successContext);\n this._resolve(successContext);\n for (const to in this._promises) {\n clearTimeout(to);\n this._promises[to].resolve();\n delete this._promises[to];\n }\n };\n\n _setSubscribeError(err) {\n if (this._status === _STATE_ERROR) {\n return;\n }\n this._status = _STATE_ERROR;\n this._error = err;\n const errContext = this._getSubscribeErrorContext();\n this.emit('error', errContext);\n this._reject(errContext);\n for (const to in this._promises) {\n clearTimeout(to);\n this._promises[to].reject(err);\n delete this._promises[to];\n }\n };\n\n _triggerUnsubscribe() {\n this.emit('unsubscribe', {\n channel: this.channel\n });\n };\n\n _setUnsubscribed(noResubscribe) {\n this._centrifuge._clearSubRefreshTimeout(this.channel);\n if (this._status === _STATE_UNSUBSCRIBED) {\n return;\n }\n const needTrigger = this._status === _STATE_SUCCESS;\n this._status = _STATE_UNSUBSCRIBED;\n if (noResubscribe === true) {\n this._recover = false;\n this._noResubscribe = true;\n delete this._centrifuge._lastSeq[this.channel];\n delete this._centrifuge._lastGen[this.channel];\n delete this._centrifuge._lastEpoch[this.channel];\n }\n if (needTrigger) {\n this._triggerUnsubscribe();\n }\n };\n\n _shouldResubscribe() {\n return !this._noResubscribe;\n };\n\n _getSubscribeSuccessContext(recovered) {\n return {\n channel: this.channel,\n isResubscribe: this._isResubscribe,\n recovered: recovered\n };\n };\n\n _getSubscribeErrorContext() {\n const subscribeErrorContext = this._error;\n subscribeErrorContext.channel = this.channel;\n subscribeErrorContext.isResubscribe = this._isResubscribe;\n return subscribeErrorContext;\n };\n\n ready(callback, errback) {\n if (this._ready) {\n if (this._isSuccess()) {\n callback(this._getSubscribeSuccessContext());\n } else {\n errback(this._getSubscribeErrorContext());\n }\n }\n };\n\n subscribe() {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._noResubscribe = false;\n this._centrifuge._subscribe(this);\n };\n\n unsubscribe() {\n this._setUnsubscribed(true);\n this._centrifuge._unsubscribe(this);\n };\n\n _methodCall(message, type) {\n const methodCallPromise = new Promise((resolve, reject) => {\n let subPromise;\n if (this._isSuccess()) {\n subPromise = Promise.resolve();\n } else if (this._isError()) {\n subPromise = Promise.reject(this._error);\n } else {\n subPromise = new Promise((res, rej) => {\n const timeout = setTimeout(function () {\n rej({'code': 0, 'message': 'timeout'});\n }, this._centrifuge._config.timeout);\n this._promises[timeout] = {\n resolve: res,\n reject: rej\n };\n });\n }\n subPromise.then(\n () => {\n return this._centrifuge._call(message).then(\n resolveCtx => {\n resolve(this._centrifuge._decoder.decodeCommandResult(type, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n },\n rejectCtx => {\n reject(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n }\n );\n },\n error => {\n reject(error);\n }\n );\n });\n return methodCallPromise;\n }\n\n publish(data) {\n return this._methodCall({\n method: this._centrifuge._methodType.PUBLISH,\n params: {\n channel: this.channel,\n data: data\n }\n }, this._centrifuge._methodType.PUBLISH);\n };\n\n presence() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE);\n };\n\n presenceStats() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE_STATS,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE_STATS);\n };\n\n history() {\n return this._methodCall({\n method: this._centrifuge._methodType.HISTORY,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.HISTORY);\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/subscription.js","export const JsonMethodType = {\n CONNECT: 0,\n SUBSCRIBE: 1,\n UNSUBSCRIBE: 2,\n PUBLISH: 3,\n PRESENCE: 4,\n PRESENCE_STATS: 5,\n HISTORY: 6,\n PING: 7,\n SEND: 8,\n RPC: 9,\n REFRESH: 10,\n SUB_REFRESH: 11\n};\n\nexport const JsonPushType = {\n PUBLICATION: 0,\n JOIN: 1,\n LEAVE: 2,\n UNSUB: 3,\n MESSAGE: 4\n};\n\nexport class JsonEncoder {\n encodeCommands(commands) {\n const encodedCommands = [];\n for (const i in commands) {\n if (commands.hasOwnProperty(i)) {\n encodedCommands.push(JSON.stringify(commands[i]));\n }\n }\n return encodedCommands.join('\\n');\n }\n}\n\nexport class JsonDecoder {\n decodeReplies(data) {\n const replies = [];\n const encodedReplies = data.split('\\n');\n for (const i in encodedReplies) {\n if (encodedReplies.hasOwnProperty(i)) {\n if (!encodedReplies[i]) {\n continue;\n }\n const reply = JSON.parse(encodedReplies[i]);\n replies.push(reply);\n }\n }\n return replies;\n }\n\n decodeCommandResult(methodType, data) {\n return data;\n }\n\n decodePush(data) {\n return data;\n }\n\n decodePushData(pushType, data) {\n return data;\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/json.js","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 3\n// module chunks = 0 1","import {Centrifuge} from './centrifuge.js';\nexport default Centrifuge;\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/events/events.js\n// module id = 6\n// module chunks = 0 1","export function startsWith(value, prefix) {\n return value.lastIndexOf(prefix, 0) === 0;\n};\n\nexport function isFunction(value) {\n if (value === undefined || value === null) {\n return false;\n }\n return typeof value === 'function';\n};\n\nexport function log(level, args) {\n if (global.console) {\n const logger = global.console[level];\n\n if (isFunction(logger)) {\n logger.apply(global.console, args);\n }\n }\n};\n\nexport function backoff(step, min, max) {\n const jitter = 0.5 * Math.random();\n const interval = Math.min(max, min * Math.pow(2, step + 1));\n\n return Math.floor((1 - jitter) * interval);\n};\n\nexport function errorExists(data) {\n return 'error' in data && data.error !== null;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/centrifuge.protobuf.js b/dist/centrifuge.protobuf.js index e7037db2..2bbcdb6f 100644 --- a/dist/centrifuge.protobuf.js +++ b/dist/centrifuge.protobuf.js @@ -2820,7 +2820,9 @@ var Centrifuge = exports.Centrifuge = function (_EventEmitter) { sub._triggerUnsubscribe(); sub._recover = true; } - sub._setSubscribing(); + if (sub._shouldResubscribe()) { + sub._setSubscribing(); + } } else { sub._setUnsubscribed(); } diff --git a/dist/centrifuge.protobuf.js.map b/dist/centrifuge.protobuf.js.map index f386c9b2..cfc321e0 100644 --- a/dist/centrifuge.protobuf.js.map +++ b/dist/centrifuge.protobuf.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 15676cf76596a7b53ff3","webpack:///./node_modules/protobufjs/src/util.js","webpack:///./node_modules/protobufjs/src/enum.js","webpack:///./node_modules/protobufjs/src/util/minimal.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/protobufjs/src/object.js","webpack:///./node_modules/protobufjs/src/field.js","webpack:///./node_modules/events/events.js","webpack:///./src/utils.js","webpack:///./node_modules/protobufjs/src/namespace.js","webpack:///./node_modules/protobufjs/src/types.js","webpack:///./src/centrifuge.js","webpack:///./src/subscription.js","webpack:///./src/json.js","webpack:///./node_modules/protobufjs/src/writer.js","webpack:///./node_modules/protobufjs/src/reader.js","webpack:///./node_modules/protobufjs/src/oneof.js","webpack:///./node_modules/protobufjs/src/message.js","webpack:///./node_modules/@protobufjs/aspromise/index.js","webpack:///./node_modules/@protobufjs/inquire/index.js","webpack:///./node_modules/protobufjs/src/rpc.js","webpack:///./node_modules/protobufjs/src/roots.js","webpack:///./node_modules/protobufjs/src/encoder.js","webpack:///./node_modules/protobufjs/src/type.js","webpack:///./node_modules/protobufjs/src/mapfield.js","webpack:///./node_modules/protobufjs/src/service.js","webpack:///./node_modules/protobufjs/src/method.js","webpack:///./node_modules/protobufjs/src/decoder.js","webpack:///./node_modules/protobufjs/src/verifier.js","webpack:///./node_modules/protobufjs/src/converter.js","webpack:///./node_modules/protobufjs/src/wrappers.js","webpack:///./node_modules/protobufjs/src/root.js","webpack:///./src/index_protobuf.js","webpack:///./src/protobuf.js","webpack:///./node_modules/protobufjs/light.js","webpack:///./node_modules/protobufjs/src/index-light.js","webpack:///./node_modules/protobufjs/src/index-minimal.js","webpack:///./node_modules/@protobufjs/base64/index.js","webpack:///./node_modules/@protobufjs/eventemitter/index.js","webpack:///./node_modules/@protobufjs/float/index.js","webpack:///./node_modules/@protobufjs/utf8/index.js","webpack:///./node_modules/@protobufjs/pool/index.js","webpack:///./node_modules/protobufjs/src/util/longbits.js","webpack:///./node_modules/protobufjs/src/writer_buffer.js","webpack:///./node_modules/protobufjs/src/reader_buffer.js","webpack:///./node_modules/protobufjs/src/rpc/service.js","webpack:///./node_modules/@protobufjs/codegen/index.js","webpack:///./node_modules/@protobufjs/fetch/index.js","webpack:///./node_modules/@protobufjs/path/index.js","webpack:///./src/client.proto.json"],"names":["startsWith","isFunction","log","backoff","errorExists","value","prefix","lastIndexOf","undefined","level","args","global","console","logger","apply","step","min","max","jitter","Math","random","interval","pow","floor","data","error","_errorTimeout","_errorConnectionClosed","Centrifuge","url","options","_url","_sockjs","_isSockjs","_binary","_methodType","_pushType","_encoder","_decoder","_status","_reconnect","_reconnecting","_transport","_transportName","_transportClosed","_messageId","_clientID","_refreshRequired","_subs","_lastSeq","_lastGen","_lastEpoch","_messages","_isBatching","_isSubscribeBatching","_privateChannels","_numRefreshFailed","_refreshTimeout","_pingTimeout","_pongTimeout","_subRefreshTimeouts","_retries","_callbacks","_latency","_latencyStart","_connectData","_token","_xhrID","_xhrs","_config","debug","sockjs","promise","minRetry","maxRetry","timeout","ping","pingInterval","pongWaitTimeout","privateChannelPrefix","onTransportClose","sockjsServer","sockjsTransports","refreshEndpoint","refreshHeaders","refreshParams","refreshData","refreshAttempts","refreshInterval","onRefreshFailed","onRefresh","subscribeEndpoint","subscribeHeaders","subscribeParams","subRefreshInterval","onPrivateSubscribe","_configure","token","params","headers","callback","query","_debug","JSON","stringify","xhr","XMLHttpRequest","ActiveXObject","i","hasOwnProperty","length","encodeURIComponent","open","withCredentials","setRequestHeader","headerName","onreadystatechange","readyState","status","parsed","parse","responseText","e","_log","setTimeout","send","arguments","WebSocket","format","_formatOverride","Error","configuration","Object","assign","indexOf","_setFormat","SockJS","newStatus","xhrID","abort","reconnect","_stopPing","id","callbacks","clearTimeout","errback","_createErrorObject","channel","sub","_isSuccess","_triggerUnsubscribe","_recover","_setSubscribing","_setUnsubscribed","_abortInflightXHRs","_clearSubRefreshTimeout","transport","OPEN","commands","_isTransportOpen","command","encodeCommands","sockjsOptions","transports","server","_websocketSupported","binaryType","onopen","onheartbeat","_restartPing","msg","Date","_call","then","_connectResponse","decodeCommandResult","CONNECT","resolveCtx","result","next","err","rejectCtx","code","_disconnect","onerror","onclose","reason","needReconnect","closeEvent","advice","event","_getRetryInterval","_refresh","_connect","onmessage","_dataReceived","method","RPC","isConnected","Promise","reject","SEND","sent","_transportSend","resolve","PUBLISH","replies","decodeReplies","p","_dispatchReply","_addMessage","_registerCall","_setStatus","_setupTransport","shouldReconnect","_isDisconnected","_clearConnectedState","emit","close","_refreshFailed","clientID","_newXHRID","cb","resp","round","REFRESH","_refreshResponse","_refreshError","context","_ajax","expires","client","_getTTLMilliseconds","ttl","channelsData","channels","channelData","SUB_REFRESH","_getSub","_subRefreshResponse","_subRefreshError","subRefreshTimeout","_subRefresh","isResubscribe","_setNew","SUBSCRIBE","startSubscribeBatching","_subscribe","stopSubscribeBatching","recover","_needRecover","seq","_getLastSeq","gen","_getLastGen","epoch","_getLastEpoch","_subscribeResponse","_subscribeError","UNSUBSCRIBE","wasReconnecting","_resetRetry","getTime","startBatching","_shouldResubscribe","stopBatching","_startPing","ctx","latency","_isSubscribing","message","_setSubscribeError","recovered","_setSubscribeSuccess","pubs","publications","reverse","_handlePublication","recoverable","_recoverable","reply","join","leave","unsub","unsubscribe","resubscribe","subscribe","pub","push","decodePush","type","PUBLICATION","decodePushData","MESSAGE","_handleMessage","JOIN","_handleJoin","LEAVE","_handleLeave","UNSUB","_handleUnsub","_handleReply","_handlePush","messages","slice","PING","_pingResponse","lastSeq","lastGen","lastEpoch","errObject","_nextMessageId","_isConnected","_ping","_flush","authChannels","batch","events","currentSub","_setEvents","_isUnsubscribed","_STATE_NEW","_STATE_SUBSCRIBING","_STATE_SUCCESS","_STATE_ERROR","_STATE_UNSUBSCRIBED","Subscription","centrifuge","_centrifuge","_error","_isResubscribe","_ready","_subscriptionPromise","_noResubscribe","_initializePromise","_promises","on","errContext","_resolve","_reject","prototype","toString","call","knownEvents","l","ev","successContext","_getSubscribeSuccessContext","to","_getSubscribeErrorContext","noResubscribe","needTrigger","subscribeErrorContext","_unsubscribe","methodCallPromise","subPromise","_isError","res","rej","_methodCall","PRESENCE","PRESENCE_STATS","HISTORY","JsonMethodType","JsonPushType","JsonEncoder","encodedCommands","JsonDecoder","encodedReplies","split","methodType","pushType","protobuf","require","proto","Root","fromJSON","methodValues","lookupEnum","values","protobufMethodType","methodSchema","lookupType","protobufPushType","PushSchema","Push","Command","Reply","ProtobufEncoder","writer","Writer","create","encode","finish","encodeDelimited","ProtobufDecoder","reader","Reader","Uint8Array","pos","len","decodeDelimited","_decode","decode","CentrifugeProtobuf"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;AC7DA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,kBAAkB;AAC/B;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,uDAAuD,yBAAyB,EAAE;AAClF;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA,cAAc,KAAK;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB,0CAA0C,iCAAiC;AAC3E,oDAAoD,iCAAiC;AACrF;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C,gCAAgC;AAC5E;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;ACjLD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,uBAAuB;AAClC,WAAW,kBAAkB;AAC7B,WAAW,OAAO;AAClB,WAAW,uBAAuB;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,iDAAiD;;AAEjD;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA,mDAAmD,iBAAiB;AACpE;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,uBAAuB;AACrC,cAAc,kBAAkB;AAChC;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;;;;;;;8CCpLA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,oFAAoF;;AAEpF;AACA;AACA,UAAU;AACV;AACA;AACA,mDAAmD,kCAAkC;;AAErF;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,gBAAgB;AAC3B,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA,kCAAkC,EAAE;;AAEpC;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B,WAAW,kBAAkB;AAC7B,WAAW,QAAQ;AACnB,aAAa,kBAAkB;AAC/B;AACA,oCAAoC;AACpC,4CAA4C,iBAAiB;AAC7D;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,mBAAmB;AAChC;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA,gDAAgD,kBAAkB,gBAAgB,EAAE,EAAE;;AAEtF;AACA;AACA;AACA;AACA,kDAAkD,mCAAmC;;AAErF;AACA;AACA;;AAEA;;AAEA,0DAA0D,kBAAkB,aAAa,EAAE,EAAE;;AAE7F;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,kBAAkB;AAC7B;AACA;AACA,oCAAoC;AACpC,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA,kCAAkC,uBAAuB;AACzD;AACA,UAAU;AACV,aAAa,iBAAiB;AAC9B;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,YAAY;AACzB;AACA;AACA;AACA,mBAAmB,uBAAuB;AAC1C;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,uBAAuB;AACvB,+DAA+D,QAAQ;AACvE;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,uBAAuB;AACzD;AACA,UAAU;AACV,WAAW,iBAAiB;AAC5B,aAAa;AACb;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,YAAY;AACzB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;;AAEA;AACA,wCAAwC,qBAAqB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpZA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;ACpBA;AACA;;AAEA;;AAEA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,kBAAkB;AAC7B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,2BAA2B;;AAE3B;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA,WAAW,iBAAiB;AAC5B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iBAAiB;AAC5B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,WAAW,QAAQ;AACnB,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA,oDAAoD,iBAAiB;AACrE;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;ACtMA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS;;AAET;;AAEA;AACA,uDAAuD,0BAA0B;AACjF;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,yBAAyB;AACpC,WAAW,yBAAyB;AACpC,WAAW,kBAAkB;AAC7B;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB,YAAY,UAAU;AACtB;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,YAAY;AAC/C;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,yBAAyB;AACpC,WAAW,yBAAyB;AACpC,WAAW,kBAAkB;AAC7B,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,+DAA+D;;AAE/D;AACA;AACA,cAAc;AACd;AACA,qBAAqB;;AAErB;AACA;AACA,cAAc;AACd;AACA,iBAAiB;;AAEjB;AACA;AACA,cAAc;AACd;AACA,sCAAsC;;AAEtC;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,kBAAkB;AAChC;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,YAAY,MAAM;AAClB;AACA;;AAEA;AACA;;AAEA,uEAAuE;AACvE;AACA;AACA;AACA;AACA,kGAAkG;AAClG;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sCAAsC,cAAc,MAAM,iBAAiB;AAC3E;AACA,UAAU;AACV,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,8IAA8I;AACzJ,WAAW,iCAAiC;AAC5C,WAAW,EAAE;AACb,aAAa,eAAe;AAC5B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sEAAsE,0BAA0B;AAChG;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,sBAAsB;AACjC,WAAW,iCAAiC;AAC5C,aAAa,eAAe;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;ACjXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;QC7SgBA,U,GAAAA,U;QAIAC,U,GAAAA,U;QAOAC,G,GAAAA,G;QAUAC,O,GAAAA,O;QAOAC,W,GAAAA,W;AA5BT,SAASJ,UAAT,CAAoBK,KAApB,EAA2BC,MAA3B,EAAmC;AACxC,SAAOD,MAAME,WAAN,CAAkBD,MAAlB,EAA0B,CAA1B,MAAiC,CAAxC;AACD;;AAEM,SAASL,UAAT,CAAoBI,KAApB,EAA2B;AAChC,MAAIA,UAAUG,SAAV,IAAuBH,UAAU,IAArC,EAA2C;AACzC,WAAO,KAAP;AACD;AACD,SAAO,OAAOA,KAAP,KAAiB,UAAxB;AACD;;AAEM,SAASH,GAAT,CAAaO,KAAb,EAAoBC,IAApB,EAA0B;AAC/B,MAAIC,OAAOC,OAAX,EAAoB;AAClB,QAAMC,SAASF,OAAOC,OAAP,CAAeH,KAAf,CAAf;;AAEA,QAAIR,WAAWY,MAAX,CAAJ,EAAwB;AACtBA,aAAOC,KAAP,CAAaH,OAAOC,OAApB,EAA6BF,IAA7B;AACD;AACF;AACF;;AAEM,SAASP,OAAT,CAAiBY,IAAjB,EAAuBC,GAAvB,EAA4BC,GAA5B,EAAiC;AACtC,MAAMC,SAAS,MAAMC,KAAKC,MAAL,EAArB;AACA,MAAMC,WAAWF,KAAKH,GAAL,CAASC,GAAT,EAAcD,MAAMG,KAAKG,GAAL,CAAS,CAAT,EAAYP,OAAO,CAAnB,CAApB,CAAjB;;AAEA,SAAOI,KAAKI,KAAL,CAAW,CAAC,IAAIL,MAAL,IAAeG,QAA1B,CAAP;AACD;;AAEM,SAASjB,WAAT,CAAqBoB,IAArB,EAA2B;AAChC,SAAO,WAAWA,IAAX,IAAmBA,KAAKC,KAAL,KAAe,IAAzC;AACD,E;;;;;;;;AC9BD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,kBAAkB;AAC7B;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,kBAAkB;AAC7B,aAAa,UAAU;AACvB,YAAY,UAAU;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,eAAe;AAC1B,aAAa,4BAA4B;AACzC;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,kCAAkC;AAC7C,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,kCAAkC;AAC7C,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,gBAAgB;AACnD;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,kBAAkB;AAC7B,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,4BAA4B;;AAE5B;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,cAAc,kBAAkB;AAChC,cAAc,gCAAgC;AAC9C;;AAEA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,gCAAgC;AAC3C,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA,gEAAgE,kBAAkB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,sBAAsB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,gBAAgB;AAClD,8BAA8B,wBAAwB;AACtD,WAAW,OAAO;AAClB,aAAa,uBAAuB;AACpC,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iBAAiB;AAC5B,aAAa,UAAU;AACvB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iBAAiB;AAC5B,aAAa,UAAU;AACvB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,EAAE;AACb,aAAa,UAAU;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB,aAAa,sBAAsB;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,KAAK;AACL,uBAAuB,6BAA6B;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,QAAQ;AACnB,aAAa,sBAAsB;AACnC;AACA;AACA;;AAEA;AACA,iBAAiB,gBAAgB;AACjC,qDAAqD,8BAA8B;AACnF,WAAW,gBAAgB;AAC3B,aAAa,KAAK;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,gBAAgB;AAC/C,qDAAqD,8BAA8B;AACnF,WAAW,gBAAgB;AAC3B,aAAa,KAAK;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,gBAAgB,KAAK,gBAAgB;AACtD,qDAAqD,8BAA8B;AACnF,WAAW,gBAAgB;AAC3B,aAAa,KAAK;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,sBAAsB;AACvC,qDAAqD,8BAA8B;AACnF,WAAW,gBAAgB;AAC3B,aAAa,QAAQ;AACrB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;AC9aA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB,cAAc,eAAe;AAC7B,cAAc,KAAK;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACnMA;;;;AACA;;;;AAEA;;AAOA;;;;;;;;;;AAQA,IAAMC,gBAAgB,SAAtB;AACA,IAAMC,yBAAyB,mBAA/B;;IAEaC,U,WAAAA,U;;;AAEX,sBAAYC,GAAZ,EAAiBC,OAAjB,EAA0B;AAAA;;AAAA;;AAExB,UAAKC,IAAL,GAAYF,GAAZ;AACA,UAAKG,OAAL,GAAe,IAAf;AACA,UAAKC,SAAL,GAAiB,KAAjB;AACA,UAAKC,OAAL,GAAe,KAAf;AACA,UAAKC,WAAL,GAAmB,IAAnB;AACA,UAAKC,SAAL,GAAiB,IAAjB;AACA,UAAKC,QAAL,GAAgB,IAAhB;AACA,UAAKC,QAAL,GAAgB,IAAhB;AACA,UAAKC,OAAL,GAAe,cAAf;AACA,UAAKC,UAAL,GAAkB,IAAlB;AACA,UAAKC,aAAL,GAAqB,KAArB;AACA,UAAKC,UAAL,GAAkB,IAAlB;AACA,UAAKC,cAAL,GAAsB,IAAtB;AACA,UAAKC,gBAAL,GAAwB,IAAxB;AACA,UAAKC,UAAL,GAAkB,CAAlB;AACA,UAAKC,SAAL,GAAiB,IAAjB;AACA,UAAKC,gBAAL,GAAwB,KAAxB;AACA,UAAKC,KAAL,GAAa,EAAb;AACA,UAAKC,QAAL,GAAgB,EAAhB;AACA,UAAKC,QAAL,GAAgB,EAAhB;AACA,UAAKC,UAAL,GAAkB,EAAlB;AACA,UAAKC,SAAL,GAAiB,EAAjB;AACA,UAAKC,WAAL,GAAmB,KAAnB;AACA,UAAKC,oBAAL,GAA4B,KAA5B;AACA,UAAKC,gBAAL,GAAwB,EAAxB;AACA,UAAKC,iBAAL,GAAyB,CAAzB;AACA,UAAKC,eAAL,GAAuB,IAAvB;AACA,UAAKC,YAAL,GAAoB,IAApB;AACA,UAAKC,YAAL,GAAoB,IAApB;AACA,UAAKC,mBAAL,GAA2B,EAA3B;AACA,UAAKC,QAAL,GAAgB,CAAhB;AACA,UAAKC,UAAL,GAAkB,EAAlB;AACA,UAAKC,QAAL,GAAgB,IAAhB;AACA,UAAKC,aAAL,GAAqB,IAArB;AACA,UAAKC,YAAL,GAAoB,IAApB;AACA,UAAKC,MAAL,GAAc,IAAd;AACA,UAAKC,MAAL,GAAc,CAAd;AACA,UAAKC,KAAL,GAAa,EAAb;AACA,UAAKC,OAAL,GAAe;AACbC,aAAO,KADM;AAEbC,cAAQ,IAFK;AAGbC,eAAS,IAHI;AAIbC,gBAAU,IAJG;AAKbC,gBAAU,KALG;AAMbC,eAAS,IANI;AAObC,YAAM,IAPO;AAQbC,oBAAc,KARD;AASbC,uBAAiB,IATJ;AAUbC,4BAAsB,GAVT;AAWbC,wBAAkB,IAXL;AAYbC,oBAAc,IAZD;AAabC,wBAAkB,CAChB,WADgB,EAEhB,eAFgB,EAGhB,eAHgB,EAIhB,aAJgB,EAKhB,oBALgB,EAMhB,iBANgB,EAOhB,aAPgB,EAQhB,aARgB,EAShB,oBATgB,EAUhB,eAVgB,CAbL;AAyBbC,uBAAiB,qBAzBJ;AA0BbC,sBAAgB,EA1BH;AA2BbC,qBAAe,EA3BF;AA4BbC,mBAAa,EA5BA;AA6BbC,uBAAiB,IA7BJ;AA8BbC,uBAAiB,IA9BJ;AA+BbC,uBAAiB,IA/BJ;AAgCbC,iBAAW,IAhCE;AAiCbC,yBAAmB,uBAjCN;AAkCbC,wBAAkB,EAlCL;AAmCbC,uBAAiB,EAnCJ;AAoCbC,0BAAoB,IApCP;AAqCbC,0BAAoB;AArCP,KAAf;AAuCA,UAAKC,UAAL,CAAgBlE,OAAhB;AA/EwB;AAgFzB;;;;6BAEQmE,K,EAAO;AACd,WAAK/B,MAAL,GAAc+B,KAAd;AACD;;;mCAEczE,I,EAAM;AACnB,WAAKyC,YAAL,GAAoBzC,IAApB;AACD;;;0BAEKK,G,EAAKqE,M,EAAQC,O,EAAS3E,I,EAAM4E,Q,EAAU;AAAA;;AAC1C,UAAIC,QAAQ,EAAZ;AACA,WAAKC,MAAL,CAAY,yBAAZ,EAAuCzE,GAAvC,EAA4C,WAA5C,EAAyD0E,KAAKC,SAAL,CAAehF,IAAf,CAAzD;;AAEA,UAAMiF,MAAO9F,OAAO+F,cAAP,GAAwB,IAAI/F,OAAO+F,cAAX,EAAxB,GAAsD,IAAI/F,OAAOgG,aAAX,CAAyB,mBAAzB,CAAnE;;AAEA,WAAK,IAAMC,CAAX,IAAgBV,MAAhB,EAAwB;AACtB,YAAIA,OAAOW,cAAP,CAAsBD,CAAtB,CAAJ,EAA8B;AAC5B,cAAIP,MAAMS,MAAN,GAAe,CAAnB,EAAsB;AACpBT,qBAAS,GAAT;AACD;AACDA,mBAASU,mBAAmBH,CAAnB,IAAwB,GAAxB,GAA8BG,mBAAmBb,OAAOU,CAAP,CAAnB,CAAvC;AACD;AACF;AACD,UAAIP,MAAMS,MAAN,GAAe,CAAnB,EAAsB;AACpBT,gBAAQ,MAAMA,KAAd;AACD;AACDI,UAAIO,IAAJ,CAAS,MAAT,EAAiBnF,MAAMwE,KAAvB,EAA8B,IAA9B;AACA,UAAI,qBAAqBI,GAAzB,EAA8B;AAC5BA,YAAIQ,eAAJ,GAAsB,IAAtB;AACD;;AAEDR,UAAIS,gBAAJ,CAAqB,kBAArB,EAAyC,gBAAzC;AACAT,UAAIS,gBAAJ,CAAqB,cAArB,EAAqC,kBAArC;AACA,WAAK,IAAMC,UAAX,IAAyBhB,OAAzB,EAAkC;AAChC,YAAIA,QAAQU,cAAR,CAAuBM,UAAvB,CAAJ,EAAwC;AACtCV,cAAIS,gBAAJ,CAAqBC,UAArB,EAAiChB,QAAQgB,UAAR,CAAjC;AACD;AACF;;AAEDV,UAAIW,kBAAJ,GAAyB,YAAM;AAC7B,YAAIX,IAAIY,UAAJ,KAAmB,CAAvB,EAA0B;AACxB,cAAIZ,IAAIa,MAAJ,KAAe,GAAnB,EAAwB;AACtB,gBAAI9F,cAAJ;AAAA,gBAAU+F,SAAS,KAAnB;AACA,gBAAI;AACF/F,sBAAO+E,KAAKiB,KAAL,CAAWf,IAAIgB,YAAf,CAAP;AACAF,uBAAS,IAAT;AACD,aAHD,CAGE,OAAOG,CAAP,EAAU;AACVtB,uBAAS;AACP3E,uBAAO,6BAA6BgF,IAAIgB,YADjC;AAEPH,wBAAQ,GAFD;AAGP9F,sBAAM;AAHC,eAAT;AAKD;AACD,gBAAI+F,MAAJ,EAAY;AAAE;AACZnB,uBAAS;AACP5E,sBAAMA,KADC;AAEP8F,wBAAQ;AAFD,eAAT;AAID;AACF,WAlBD,MAkBO;AACL,mBAAKK,IAAL,CAAU,oCAAV,EAAgDlB,IAAIa,MAApD;AACAlB,qBAAS;AACPkB,sBAAQb,IAAIa,MADL;AAEP9F,oBAAM;AAFC,aAAT;AAID;AACF;AACF,OA5BD;AA6BAoG,iBAAW;AAAA,eAAMnB,IAAIoB,IAAJ,CAAStB,KAAKC,SAAL,CAAehF,IAAf,CAAT,CAAN;AAAA,OAAX,EAAiD,EAAjD;AACA,aAAOiF,GAAP;AACD;;;2BAEM;AACL,sBAAI,MAAJ,EAAYqB,SAAZ;AACD;;;6BAEQ;AACP,UAAI,KAAKzD,OAAL,CAAaC,KAAb,KAAuB,IAA3B,EAAiC;AAC/B,wBAAI,OAAJ,EAAawD,SAAb;AACD;AACF;;;0CAEqB;AACpB,aAAO,EAAE,OAAOC,SAAP,KAAqB,UAArB,IAAmC,QAAOA,SAAP,yCAAOA,SAAP,OAAqB,QAA1D,CAAP;AACD;;;+BAEUC,M,EAAQ;AACjB,UAAI,KAAKC,eAAL,CAAqBD,MAArB,CAAJ,EAAkC;AAChC;AACD;AACD,UAAIA,WAAW,UAAf,EAA2B;AACzB,cAAM,IAAIE,KAAJ,CAAU,2EAAV,CAAN;AACD;AACD,WAAKhG,OAAL,GAAe,KAAf;AACA,WAAKC,WAAL;AACA,WAAKC,SAAL;AACA,WAAKC,QAAL,GAAgB,uBAAhB;AACA,WAAKC,QAAL,GAAgB,uBAAhB;AACD;;;oCAEe0F,M,EAAQ;AACtB,aAAO,KAAP;AACD;;;+BAEUG,a,EAAe;AACxB,UAAI,EAAE,aAAaxH,MAAf,CAAJ,EAA4B;AAC1B,cAAM,IAAIuH,KAAJ,CAAU,2BAAV,CAAN;AACD;;AAEDE,aAAOC,MAAP,CAAc,KAAKhE,OAAnB,EAA4B8D,iBAAiB,EAA7C;AACA,WAAK7B,MAAL,CAAY,mBAAZ,EAAiC,KAAKjC,OAAtC;;AAEA,UAAI,CAAC,KAAKtC,IAAV,EAAgB;AACd,cAAM,IAAImG,KAAJ,CAAU,cAAV,CAAN;AACD;;AAED,UAAI,uBAAW,KAAKnG,IAAhB,EAAsB,IAAtB,KAA+B,KAAKA,IAAL,CAAUuG,OAAV,CAAkB,iBAAlB,IAAuC,CAAC,CAA3E,EAA8E;AAC5E,aAAKC,UAAL,CAAgB,UAAhB;AACD,OAFD,MAEO;AACL,aAAKA,UAAL,CAAgB,MAAhB;AACD;;AAED,UAAI,uBAAW,KAAKxG,IAAhB,EAAsB,MAAtB,CAAJ,EAAmC;AACjC,aAAKuE,MAAL,CAAY,+CAAZ;AACA,YAAI,KAAKjC,OAAL,CAAaE,MAAb,KAAwB,IAA5B,EAAkC;AAChC,eAAK+B,MAAL,CAAY,uCAAZ;AACA,eAAKtE,OAAL,GAAe,KAAKqC,OAAL,CAAaE,MAA5B;AACD,SAHD,MAGO;AACL,cAAI,OAAO5D,OAAO6H,MAAd,KAAyB,WAA7B,EAA0C;AACxC,kBAAM,IAAIN,KAAJ,CAAU,sDAAV,CAAN;AACD;AACD,eAAK5B,MAAL,CAAY,6BAAZ;AACA,eAAKtE,OAAL,GAAerB,OAAO6H,MAAtB;AACD;AACF,OAZD,MAYO;AACL,aAAKlC,MAAL,CAAY,2CAAZ;AACD;AACF;;;+BAEUmC,S,EAAW;AACpB,UAAI,KAAKlG,OAAL,KAAiBkG,SAArB,EAAgC;AAC9B,aAAKnC,MAAL,CAAY,QAAZ,EAAsB,KAAK/D,OAA3B,EAAoC,IAApC,EAA0CkG,SAA1C;AACA,aAAKlG,OAAL,GAAekG,SAAf;AACD;AACF;;;sCAEiB;AAChB,aAAO,KAAKlG,OAAL,KAAiB,cAAxB;AACD;;;oCAEe;AACd,aAAO,KAAKA,OAAL,KAAiB,YAAxB;AACD;;;mCAEc;AACb,aAAO,KAAKA,OAAL,KAAiB,WAAxB;AACD;;;qCAEgB;AACf,aAAO,EAAE,KAAKM,UAAd;AACD;;;kCAEa;AACZ,WAAKyD,MAAL,CAAY,0BAAZ;AACA,WAAKzC,QAAL,GAAgB,CAAhB;AACD;;;wCAEmB;AAClB,UAAMxC,WAAW,oBAAQ,KAAKwC,QAAb,EAAuB,KAAKQ,OAAL,CAAaI,QAApC,EAA8C,KAAKJ,OAAL,CAAaK,QAA3D,CAAjB;;AAEA,WAAKb,QAAL,IAAiB,CAAjB;AACA,aAAOxC,QAAP;AACD;;;yCAEoB;AACnB,WAAK,IAAMqH,KAAX,IAAoB,KAAKtE,KAAzB,EAAgC;AAC9B,YAAI;AACF,eAAKA,KAAL,CAAWsE,KAAX,EAAkBC,KAAlB;AACD,SAFD,CAEE,OAAOjB,CAAP,EAAU;AACV,eAAKpB,MAAL,CAAY,oBAAZ,EAAkCoB,CAAlC;AACD;AACD,eAAO,KAAKtD,KAAL,CAAWsE,KAAX,CAAP;AACD;AACF;;;yCAEoBE,S,EAAW;AAC9B,WAAK9F,SAAL,GAAiB,IAAjB;AACA,WAAK+F,SAAL;;AAEA;AACA,WAAK,IAAMC,EAAX,IAAiB,KAAKhF,UAAtB,EAAkC;AAChC,YAAI,KAAKA,UAAL,CAAgB+C,cAAhB,CAA+BiC,EAA/B,CAAJ,EAAwC;AACtC,cAAMC,YAAY,KAAKjF,UAAL,CAAgBgF,EAAhB,CAAlB;AACAE,uBAAaD,UAAUpE,OAAvB;AACA,cAAMsE,UAAUF,UAAUE,OAA1B;AACA,cAAI,CAACA,OAAL,EAAc;AACZ;AACD;AACDA,kBAAQ,EAACxH,OAAO,KAAKyH,kBAAL,CAAwB,cAAxB,CAAR,EAAR;AACD;AACF;AACD,WAAKpF,UAAL,GAAkB,EAAlB;;AAEA;AACA,WAAK,IAAMqF,OAAX,IAAsB,KAAKnG,KAA3B,EAAkC;AAChC,YAAI,KAAKA,KAAL,CAAW6D,cAAX,CAA0BsC,OAA1B,CAAJ,EAAwC;AACtC,cAAMC,MAAM,KAAKpG,KAAL,CAAWmG,OAAX,CAAZ;;AAEA,cAAIP,SAAJ,EAAe;AACb,gBAAIQ,IAAIC,UAAJ,EAAJ,EAAsB;AACpBD,kBAAIE,mBAAJ;AACAF,kBAAIG,QAAJ,GAAe,IAAf;AACD;AACDH,gBAAII,eAAJ;AACD,WAND,MAMO;AACLJ,gBAAIK,gBAAJ;AACD;AACF;AACF;;AAED,WAAKC,kBAAL;;AAEA;AACA,UAAI,KAAKjG,eAAL,KAAyB,IAA7B,EAAmC;AACjCuF,qBAAa,KAAKvF,eAAlB;AACA,aAAKA,eAAL,GAAuB,IAAvB;AACD;;AAED;AACA,WAAK,IAAM0F,QAAX,IAAsB,KAAKvF,mBAA3B,EAAgD;AAC9C,YAAI,KAAKA,mBAAL,CAAyBiD,cAAzB,CAAwCsC,QAAxC,KAAoD,KAAKvF,mBAAL,CAAyBuF,QAAzB,CAAxD,EAA2F;AACzF,eAAKQ,uBAAL,CAA6BR,QAA7B;AACD;AACF;AACD,WAAKvF,mBAAL,GAA2B,EAA3B;;AAEA,UAAI,CAAC,KAAKpB,UAAV,EAAsB;AACpB;AACA,aAAKQ,KAAL,GAAa,EAAb;AACD;AACF;;;uCAEkB;AACjB,UAAI,KAAKf,SAAT,EAAoB;AAClB,eAAO,KAAKS,UAAL,IACL,KAAKA,UAAL,CAAgBkH,SADX,IAEL,KAAKlH,UAAL,CAAgBkH,SAAhB,CAA0BvC,UAA1B,KAAyC,KAAK3E,UAAL,CAAgBkH,SAAhB,CAA0BC,IAFrE;AAGD;AACD,aAAO,KAAKnH,UAAL,IAAmB,KAAKA,UAAL,CAAgB2E,UAAhB,KAA+B,KAAK3E,UAAL,CAAgBmH,IAAzE;AACD;;;mCAEcC,Q,EAAU;AACvB,UAAI,CAACA,SAAShD,MAAd,EAAsB;AACpB,eAAO,IAAP;AACD;;AAED,UAAI,CAAC,KAAKiD,gBAAL,EAAL,EAA8B;AAC5B;AACA,aAAK,IAAIC,OAAT,IAAoBF,QAApB,EAA8B;AAC5B,cAAIhB,KAAKkB,QAAQlB,EAAjB;AACA,cAAI,EAAEA,MAAM,KAAKhF,UAAb,CAAJ,EAA8B;AAC5B;AACD;AACD,cAAMiF,YAAY,KAAKjF,UAAL,CAAgBgF,EAAhB,CAAlB;AACAE,uBAAa,KAAKlF,UAAL,CAAgBgF,EAAhB,EAAoBnE,OAAjC;AACA,iBAAO,KAAKb,UAAL,CAAgBgF,EAAhB,CAAP;AACA,cAAMG,UAAUF,UAAUE,OAA1B;AACAA,kBAAQ,EAACxH,OAAO,KAAKyH,kBAAL,CAAwBvH,sBAAxB,EAAgD,CAAhD,CAAR,EAAR;AACD;AACD,eAAO,KAAP;AACD;AACD,WAAKe,UAAL,CAAgBmF,IAAhB,CAAqB,KAAKxF,QAAL,CAAc4H,cAAd,CAA6BH,QAA7B,CAArB;AACA,aAAO,IAAP;AACD;;;sCAEiB;AAAA;;AAChB,WAAK7H,SAAL,GAAiB,KAAjB;;AAEA;AACA,UAAI,KAAKD,OAAL,KAAiB,IAArB,EAA2B;AACzB,YAAMkI,gBAAgB;AACpBC,sBAAY,KAAK9F,OAAL,CAAaa;AADL,SAAtB;;AAIA,YAAI,KAAKb,OAAL,CAAaY,YAAb,KAA8B,IAAlC,EAAwC;AACtCiF,wBAAcE,MAAd,GAAuB,KAAK/F,OAAL,CAAaY,YAApC;AACD;AACD,aAAKhD,SAAL,GAAiB,IAAjB;AACA,aAAKS,UAAL,GAAkB,IAAI,KAAKV,OAAT,CAAiB,KAAKD,IAAtB,EAA4B,IAA5B,EAAkCmI,aAAlC,CAAlB;AACD,OAVD,MAUO;AACL,YAAI,CAAC,KAAKG,mBAAL,EAAL,EAAiC;AAC/B,eAAK/D,MAAL,CAAY,gEAAZ;AACA;AACD;AACD,aAAK5D,UAAL,GAAkB,IAAIqF,SAAJ,CAAc,KAAKhG,IAAnB,CAAlB;AACA,YAAI,KAAKG,OAAL,KAAiB,IAArB,EAA2B;AACzB,eAAKQ,UAAL,CAAgB4H,UAAhB,GAA6B,aAA7B;AACD;AACF;;AAED,WAAK5H,UAAL,CAAgB6H,MAAhB,GAAyB,YAAM;AAC7B,eAAK3H,gBAAL,GAAwB,KAAxB;;AAEA,YAAI,OAAKX,SAAT,EAAoB;AAClB,iBAAKU,cAAL,GAAsB,YAAY,OAAKD,UAAL,CAAgBkH,SAAlD;AACA,iBAAKlH,UAAL,CAAgB8H,WAAhB,GAA8B;AAAA,mBAAM,OAAKC,YAAL,EAAN;AAAA,WAA9B;AACD,SAHD,MAGO;AACL,iBAAK9H,cAAL,GAAsB,WAAtB;AACD;;AAED;AACA,YAAM+H,MAAM;AACV;AADU,SAAZ;;AAIA,YAAI,OAAKxG,MAAL,IAAe,OAAKD,YAAxB,EAAsC;AACpCyG,cAAIxE,MAAJ,GAAa,EAAb;AACD;;AAED,YAAI,OAAKhC,MAAT,EAAiB;AACfwG,cAAIxE,MAAJ,CAAWD,KAAX,GAAmB,OAAK/B,MAAxB;AACD;;AAED,YAAI,OAAKD,YAAT,EAAuB;AACrByG,cAAIxE,MAAJ,CAAW1E,IAAX,GAAkB,OAAKyC,YAAvB;AACD;;AAED,eAAKD,aAAL,GAAqB,IAAI2G,IAAJ,EAArB;AACA,eAAKC,KAAL,CAAWF,GAAX,EAAgBG,IAAhB,CAAqB,sBAAc;AACjC,iBAAKC,gBAAL,CAAsB,OAAKxI,QAAL,CAAcyI,mBAAd,CAAkC,OAAK5I,WAAL,CAAiB6I,OAAnD,EAA4DC,WAAWC,MAAvE,CAAtB;AACA,cAAID,WAAWE,IAAf,EAAqB;AACnBF,uBAAWE,IAAX;AACD;AACF,SALD,EAKG,qBAAa;AACd,cAAMC,MAAMC,UAAU5J,KAAtB;AACA,cAAI2J,IAAIE,IAAJ,KAAa,GAAjB,EAAsB;AAAE;AACtB,mBAAKvI,gBAAL,GAAwB,IAAxB;AACD;AACD,iBAAKwI,WAAL,CAAiB,eAAjB,EAAkC,IAAlC;AACA,cAAIF,UAAUF,IAAd,EAAoB;AAClBE,sBAAUF,IAAV;AACD;AACF,SAdD;AAeD,OA3CD;;AA6CA,WAAKzI,UAAL,CAAgB8I,OAAhB,GAA0B,iBAAS;AACjC,eAAKlF,MAAL,CAAY,uBAAZ,EAAqC7E,KAArC;AACD,OAFD;;AAIA,WAAKiB,UAAL,CAAgB+I,OAAhB,GAA0B,sBAAc;AACtC,eAAK7I,gBAAL,GAAwB,IAAxB;AACA,YAAI8I,SAAS/J,sBAAb;AACA,YAAIgK,gBAAgB,IAApB;;AAEA,YAAIC,cAAc,YAAYA,UAA1B,IAAwCA,WAAWF,MAAvD,EAA+D;AAC7D,cAAI;AACF,gBAAMG,SAAStF,KAAKiB,KAAL,CAAWoE,WAAWF,MAAtB,CAAf;AACA,mBAAKpF,MAAL,CAAY,4BAAZ,EAA0CuF,MAA1C;AACAH,qBAASG,OAAOH,MAAhB;AACAC,4BAAgBE,OAAOjD,SAAvB;AACD,WALD,CAKE,OAAOlB,CAAP,EAAU;AACVgE,qBAASE,WAAWF,MAApB;AACA,mBAAKpF,MAAL,CAAY,0BAAZ,EAAwCoF,MAAxC;AACD;AACF;;AAED;AACA;AACA;AACA;AACA,YAAI,OAAKrH,OAAL,CAAaW,gBAAb,KAAkC,IAAtC,EAA4C;AAC1C,iBAAKX,OAAL,CAAaW,gBAAb,CAA8B;AAC5B8G,mBAAOF,UADqB;AAE5BF,oBAAQA,MAFoB;AAG5B9C,uBAAW+C;AAHiB,WAA9B;AAKD;;AAED,eAAKJ,WAAL,CAAiBG,MAAjB,EAAyBC,aAAzB;;AAEA,YAAI,OAAKnJ,UAAL,KAAoB,IAAxB,EAA8B;AAC5B,iBAAKC,aAAL,GAAqB,IAArB;AACA,cAAMpB,WAAW,OAAK0K,iBAAL,EAAjB;;AAEA,iBAAKzF,MAAL,CAAY,qBAAqBjF,QAArB,GAAgC,eAA5C;AACAuG,qBAAW,YAAM;AACf,gBAAI,OAAKpF,UAAL,KAAoB,IAAxB,EAA8B;AAC5B,kBAAI,OAAKO,gBAAT,EAA2B;AACzB,uBAAKiJ,QAAL;AACD,eAFD,MAEO;AACL,uBAAKC,QAAL;AACD;AACF;AACF,WARD,EAQG5K,QARH;AASD;AACF,OA9CD;;AAgDA,WAAKqB,UAAL,CAAgBwJ,SAAhB,GAA4B,iBAAS;AACnC,eAAKC,aAAL,CAAmBL,MAAMtK,IAAzB;AACD,OAFD;AAGD;;;wBAEGA,I,EAAM;AAAA;;AACR,UAAMkJ,MAAM;AACV0B,gBAAQ,KAAKjK,WAAL,CAAiBkK,GADf;AAEVnG,gBAAQ;AACN1E,gBAAMA;AADA;AAFE,OAAZ;;AAOA,UAAI,CAAC,KAAK8K,WAAL,EAAL,EAAyB;AACvB,eAAOC,QAAQC,MAAR,CAAe,KAAKtD,kBAAL,CAAwBvH,sBAAxB,EAAgD,CAAhD,CAAf,CAAP;AACD;;AAED,aAAO,KAAKiJ,KAAL,CAAWF,GAAX,EAAgBG,IAAhB,CAAqB,sBAAc;AACxC,YAAII,WAAWE,IAAf,EAAqB;AACnBF,qBAAWE,IAAX;AACD;AACD,eAAO,OAAK7I,QAAL,CAAcyI,mBAAd,CAAkC,OAAK5I,WAAL,CAAiBkK,GAAnD,EAAwDpB,WAAWC,MAAnE,CAAP;AACD,OALM,EAKJ,qBAAa;AACd,YAAIG,UAAUF,IAAd,EAAoB;AAClBE,oBAAUF,IAAV;AACD;AACD,eAAOE,UAAU5J,KAAjB;AACD,OAVM,CAAP;AAWD;;;yBAEID,I,EAAM;AACT,UAAMkJ,MAAM;AACV0B,gBAAQ,KAAKjK,WAAL,CAAiBsK,IADf;AAEVvG,gBAAQ;AACN1E,gBAAMA;AADA;AAFE,OAAZ;;AAOA,UAAI,CAAC,KAAK8K,WAAL,EAAL,EAAyB;AACvB,eAAOC,QAAQC,MAAR,CAAe,KAAKtD,kBAAL,CAAwBvH,sBAAxB,EAAgD,CAAhD,CAAf,CAAP;AACD;;AAED,UAAM+K,OAAO,KAAKC,cAAL,CAAoB,CAACjC,GAAD,CAApB,CAAb,CAZS,CAYgC;AACzC,UAAI,CAACgC,IAAL,EAAW;AACT,eAAOH,QAAQC,MAAR,CAAe,KAAKtD,kBAAL,CAAwBvH,sBAAxB,EAAgD,CAAhD,CAAf,CAAP;AACD;AACD,aAAO4K,QAAQK,OAAR,CAAgB,EAAhB,CAAP;AACD;;;4BAEOzD,O,EAAS3H,I,EAAM;AACrB,UAAMkJ,MAAM;AACV0B,gBAAQ,KAAKjK,WAAL,CAAiB0K,OADf;AAEV3G,gBAAQ;AACNiD,mBAASA,OADH;AAEN3H,gBAAMA;AAFA;AAFE,OAAZ;;AAQA,UAAI,CAAC,KAAK8K,WAAL,EAAL,EAAyB;AACvB,eAAOC,QAAQC,MAAR,CAAe,KAAKtD,kBAAL,CAAwBvH,sBAAxB,EAAgD,CAAhD,CAAf,CAAP;AACD;;AAED,aAAO,KAAKiJ,KAAL,CAAWF,GAAX,EAAgBG,IAAhB,CAAqB,kBAAU;AACpC,YAAIK,OAAOC,IAAX,EAAiB;AACfD,iBAAOC,IAAP;AACD;AACD,eAAO,EAAP;AACD,OALM,CAAP;AAMD;;;kCAEa3J,I,EAAM;AAAA;;AAClB,UAAMsL,UAAU,KAAKxK,QAAL,CAAcyK,aAAd,CAA4BvL,IAA5B,CAAhB;AACA;AACA;AACA;AACA;AACA,UAAIwL,IAAIT,QAAQK,OAAR,EAAR;;AANkB,iCAOPhG,CAPO;AAQhB,YAAIkG,QAAQjG,cAAR,CAAuBD,CAAvB,CAAJ,EAA+B;AAC7BoG,cAAIA,EAAEnC,IAAF,CAAO,YAAM;AACf,mBAAO,OAAKoC,cAAL,CAAoBH,QAAQlG,CAAR,CAApB,CAAP;AACD,WAFG,CAAJ;AAGD;AAZe;;AAOlB,WAAK,IAAMA,CAAX,IAAgBkG,OAAhB,EAAyB;AAAA,cAAdlG,CAAc;AAMxB;AACD,WAAK6D,YAAL;AACD;;;0BAEKC,G,EAAK;AAAA;;AACT,aAAO,IAAI6B,OAAJ,CAAY,UAACK,OAAD,EAAUJ,MAAV,EAAqB;AACtC,YAAM1D,KAAK,OAAKoE,WAAL,CAAiBxC,GAAjB,CAAX;AACA,eAAKyC,aAAL,CAAmBrE,EAAnB,EAAuB8D,OAAvB,EAAgCJ,MAAhC;AACD,OAHM,CAAP;AAID;;;+BAEU;AACT,UAAI,KAAKF,WAAL,EAAJ,EAAwB;AACtB,aAAKhG,MAAL,CAAY,uCAAZ;AACA;AACD;AACD,UAAI,KAAK/D,OAAL,KAAiB,YAArB,EAAmC;AACjC;AACD;;AAED,WAAK+D,MAAL,CAAY,kBAAZ;AACA,WAAK8G,UAAL,CAAgB,YAAhB;AACA,WAAKtK,SAAL,GAAiB,IAAjB;AACA,WAAKN,UAAL,GAAkB,IAAlB;AACA,WAAK6K,eAAL;AACD;;;gCAEW3B,M,EAAQ4B,e,EAAiB;;AAEnC,UAAI,KAAKC,eAAL,EAAJ,EAA4B;AAC1B;AACD;;AAED,WAAKjH,MAAL,CAAY,eAAZ,EAA6BoF,MAA7B,EAAqC4B,eAArC;;AAEA,UAAM1E,YAAY0E,mBAAmB,KAArC;;AAEA,UAAI1E,cAAc,KAAlB,EAAyB;AACvB,aAAKpG,UAAL,GAAkB,KAAlB;AACD;;AAED,WAAKgL,oBAAL,CAA0B5E,SAA1B;;AAEA,UAAI,CAAC,KAAK2E,eAAL,EAAL,EAA6B;AAC3B,aAAKH,UAAL,CAAgB,cAAhB;AACA,YAAI,KAAK3J,eAAT,EAA0B;AACxBuF,uBAAa,KAAKvF,eAAlB;AACA,eAAKA,eAAL,GAAuB,IAAvB;AACD;AACD,YAAI,KAAKhB,aAAL,KAAuB,KAA3B,EAAkC;AAChC,eAAKgL,IAAL,CAAU,YAAV,EAAwB;AACtB/B,oBAAQA,MADc;AAEtB9C,uBAAWA;AAFW,WAAxB;AAID;AACF;;AAED,UAAI,CAAC,KAAKhG,gBAAV,EAA4B;AAC1B,aAAKF,UAAL,CAAgBgL,KAAhB;AACD;AACF;;;qCAEgB;AACf,WAAKlK,iBAAL,GAAyB,CAAzB;AACA,UAAI,CAAC,KAAK+J,eAAL,EAAL,EAA6B;AAC3B,aAAKhC,WAAL,CAAiB,gBAAjB,EAAmC,KAAnC;AACD;AACD,UAAI,KAAKlH,OAAL,CAAaoB,eAAb,KAAiC,IAArC,EAA2C;AACzC,aAAKpB,OAAL,CAAaoB,eAAb;AACD;AACF;;;+BAEU;AAAA;;AACT;AACA,WAAKa,MAAL,CAAY,eAAZ;;AAEA,UAAI,KAAKjC,OAAL,CAAakB,eAAb,KAAiC,CAArC,EAAwC;AACtC,aAAKe,MAAL,CAAY,+DAAZ;AACA,aAAKqH,cAAL;AACA;AACD;;AAED,UAAI,KAAKlK,eAAL,KAAyB,IAA7B,EAAmC;AACjCuF,qBAAa,KAAKvF,eAAlB;AACA,aAAKA,eAAL,GAAuB,IAAvB;AACD;;AAED,UAAMmK,WAAW,KAAK9K,SAAtB;AACA,UAAM4F,QAAQ,KAAKmF,SAAL,EAAd;;AAEA,UAAMC,KAAK,SAALA,EAAK,CAACC,IAAD,EAAU;AACnB,YAAIrF,SAAS,OAAKtE,KAAlB,EAAyB;AACvB,iBAAO,OAAKA,KAAL,CAAWsE,KAAX,CAAP;AACD;AACD,YAAI,OAAK5F,SAAL,KAAmB8K,QAAvB,EAAiC;AAC/B;AACD;AACD,YAAIG,KAAKtM,KAAL,IAAcsM,KAAKzG,MAAL,KAAgB,GAAlC,EAAuC;AACrC;AACA;AACA,cAAIyG,KAAKtM,KAAT,EAAgB;AACd,mBAAK6E,MAAL,CAAY,mCAAZ,EAAiDyH,KAAKtM,KAAtD;AACD,WAFD,MAEO;AACL,mBAAK6E,MAAL,CAAY,sDAAZ,EAAoEyH,KAAKzG,MAAzE;AACD;AACD,iBAAK9D,iBAAL;AACA,cAAI,OAAKC,eAAL,KAAyB,IAA7B,EAAmC;AACjCuF,yBAAa,OAAKvF,eAAlB;AACA,mBAAKA,eAAL,GAAuB,IAAvB;AACD;AACD,cAAI,OAAKY,OAAL,CAAakB,eAAb,KAAiC,IAAjC,IAAyC,OAAK/B,iBAAL,IAA0B,OAAKa,OAAL,CAAakB,eAApF,EAAqG;AACnG,mBAAKoI,cAAL;AACA;AACD;AACD,cAAMzM,SAASC,KAAK6M,KAAL,CAAW7M,KAAKC,MAAL,KAAgB,IAAhB,GAAuBD,KAAKF,GAAL,CAAS,OAAKuC,iBAAd,EAAiC,EAAjC,CAAlC,CAAf;AACA,cAAMnC,WAAW,OAAKgD,OAAL,CAAamB,eAAb,GAA+BtE,MAAhD;AACA,iBAAKuC,eAAL,GAAuBmE,WAAW;AAAA,mBAAM,OAAKoE,QAAL,EAAN;AAAA,WAAX,EAAkC3K,QAAlC,CAAvB;AACA;AACD;AACD,eAAKmC,iBAAL,GAAyB,CAAzB;AACA,eAAKU,MAAL,GAAc6J,KAAKvM,IAAL,CAAUyE,KAAxB;AACA,YAAI,CAAC,OAAK/B,MAAV,EAAkB;AAChB,iBAAKyJ,cAAL;AACA;AACD;AACD,YAAI,OAAKJ,eAAL,MAA0B,OAAK/K,UAAnC,EAA+C;AAC7C,iBAAK8D,MAAL,CAAY,uCAAZ;AACA,iBAAK2F,QAAL;AACD,SAHD,MAGO;AACL,iBAAK3F,MAAL,CAAY,sBAAZ;AACA,cAAMoE,MAAM;AACV0B,oBAAQ,OAAKjK,WAAL,CAAiB8L,OADf;AAEV/H,oBAAQ;AACND,qBAAO,OAAK/B;AADN;AAFE,WAAZ;AAMA,iBAAK0G,KAAL,CAAWF,GAAX,EAAgBG,IAAhB,CAAqB,sBAAc;AACjC,mBAAKqD,gBAAL,CAAsB,OAAK5L,QAAL,CAAcyI,mBAAd,CAAkC,OAAK5I,WAAL,CAAiB8L,OAAnD,EAA4DhD,WAAWC,MAAvE,CAAtB;AACA,gBAAID,WAAWE,IAAf,EAAqB;AACnBF,yBAAWE,IAAX;AACD;AACF,WALD,EAKG,qBAAa;AACd,mBAAKgD,aAAL,CAAmB9C,UAAU5J,KAA7B;AACA,gBAAI4J,UAAUF,IAAd,EAAoB;AAClBE,wBAAUF,IAAV;AACD;AACF,WAVD;AAWD;AACF,OA1DD;;AA4DA,UAAI,KAAK9G,OAAL,CAAaqB,SAAb,KAA2B,IAA/B,EAAqC;AACnC,YAAM0I,UAAU,EAAhB;AACA,aAAK/J,OAAL,CAAaqB,SAAb,CAAuB0I,OAAvB,EAAgCN,EAAhC;AACD,OAHD,MAGO;AACL,YAAMrH,MAAM,KAAK4H,KAAL,CACV,KAAKhK,OAAL,CAAac,eADH,EAEV,KAAKd,OAAL,CAAagB,aAFH,EAGV,KAAKhB,OAAL,CAAae,cAHH,EAIV,KAAKf,OAAL,CAAaiB,WAJH,EAKVwI,EALU,CAAZ;AAOA,aAAK1J,KAAL,CAAWsE,KAAX,IAAoBjC,GAApB;AACD;AACF;;;kCAEa2E,G,EAAK;AAAA;;AACjB,WAAK9E,MAAL,CAAY,eAAZ,EAA6B8E,GAA7B;AACA,UAAI,KAAK3H,eAAT,EAA0B;AACxBuF,qBAAa,KAAKvF,eAAlB;AACA,aAAKA,eAAL,GAAuB,IAAvB;AACD;AACD,UAAMpC,WAAW,KAAKgD,OAAL,CAAamB,eAAb,GAA+BrE,KAAK6M,KAAL,CAAW7M,KAAKC,MAAL,KAAgB,IAA3B,CAAhD;AACA,WAAKqC,eAAL,GAAuBmE,WAAW;AAAA,eAAM,OAAKoE,QAAL,EAAN;AAAA,OAAX,EAAkC3K,QAAlC,CAAvB;AACD;;;qCAEgB6J,M,EAAQ;AAAA;;AACvB,UAAI,KAAKzH,eAAT,EAA0B;AACxBuF,qBAAa,KAAKvF,eAAlB;AACA,aAAKA,eAAL,GAAuB,IAAvB;AACD;AACD,UAAIyH,OAAOoD,OAAX,EAAoB;AAClB,aAAKxL,SAAL,GAAiBoI,OAAOqD,MAAxB;AACA,aAAK9K,eAAL,GAAuBmE,WAAW;AAAA,iBAAM,OAAKoE,QAAL,EAAN;AAAA,SAAX,EAAkC,KAAKwC,mBAAL,CAAyBtD,OAAOuD,GAAhC,CAAlC,CAAvB;AACD;AACF;;;gCAEW;AACV,WAAKtK,MAAL;AACA,aAAO,KAAKA,MAAZ;AACD;;;gCAEWgF,O,EAAS;AAAA;;AACnB,WAAK7C,MAAL,CAAY,wCAAZ,EAAsD6C,OAAtD;;AAEA,UAAI,KAAKvF,mBAAL,CAAyBuF,OAAzB,MAAsC3I,SAA1C,EAAqD;AACnD,aAAKmJ,uBAAL,CAA6BR,OAA7B;AACD,OAFD,MAEO;AACL;AACD;;AAED,UAAMyE,WAAW,KAAK9K,SAAtB;AACA,UAAM4F,QAAQ,KAAKmF,SAAL,EAAd;;AAEA,UAAMC,KAAK,SAALA,EAAK,CAACC,IAAD,EAAU;AACnB,YAAIrF,SAAS,QAAKtE,KAAlB,EAAyB;AACvB,iBAAO,QAAKA,KAAL,CAAWsE,KAAX,CAAP;AACD;AACD,YAAIqF,KAAKtM,KAAL,IAAcsM,KAAKzG,MAAL,KAAgB,GAA9B,IAAqC,QAAKxE,SAAL,KAAmB8K,QAA5D,EAAsE;AACpE;AACD;AACD,YAAIc,eAAe,EAAnB;AACA,YAAIX,KAAKvM,IAAL,CAAUmN,QAAd,EAAwB;AACtB,eAAK,IAAM/H,CAAX,IAAgBpF,KAAKmN,QAArB,EAA+B;AAC7B,gBAAMC,cAAcb,KAAKvM,IAAL,CAAUmN,QAAV,CAAmB/H,CAAnB,CAApB;AACA,gBAAI,CAACgI,YAAYzF,OAAjB,EAA0B;AACxB;AACD;AACDuF,yBAAaE,YAAYzF,OAAzB,IAAoCyF,YAAY3I,KAAhD;AACD;AACF;;AAED,YAAMA,QAAQyI,aAAavF,OAAb,CAAd;AACA,YAAI,CAAClD,KAAL,EAAY;AACV;AACD;AACD,YAAMyE,MAAM;AACV0B,kBAAQ,QAAKjK,WAAL,CAAiB0M,WADf;AAEV3I,kBAAQ;AACNiD,qBAASA,OADH;AAENlD,mBAAOA;AAFD;AAFE,SAAZ;;AAQA,YAAMmD,MAAM,QAAK0F,OAAL,CAAa3F,OAAb,CAAZ;AACA,YAAIC,QAAQ,IAAZ,EAAkB;AAChB;AACD;;AAED,gBAAKwB,KAAL,CAAWF,GAAX,EAAgBG,IAAhB,CAAqB,sBAAc;AACjC,kBAAKkE,mBAAL,CACE5F,OADF,EAEE,QAAK7G,QAAL,CAAcyI,mBAAd,CAAkC,QAAK5I,WAAL,CAAiB0M,WAAnD,EAAgE5D,WAAWC,MAA3E,CAFF;AAIA,cAAID,WAAWE,IAAf,EAAqB;AACnBF,uBAAWE,IAAX;AACD;AACF,SARD,EAQG,qBAAa;AACd,kBAAK6D,gBAAL,CAAsB7F,OAAtB,EAA+BkC,UAAU5J,KAAzC;AACA,cAAI4J,UAAUF,IAAd,EAAoB;AAClBE,sBAAUF,IAAV;AACD;AACF,SAbD;AAcD,OAjDD;;AAmDA,UAAM3J,OAAO;AACX+M,gBAAQ,KAAKzL,SADF;AAEX6L,kBAAU,CAACxF,OAAD;AAFC,OAAb;;AAKA,UAAI,KAAK9E,OAAL,CAAa0B,kBAAb,KAAoC,IAAxC,EAA8C;AAC5C,aAAK1B,OAAL,CAAa0B,kBAAb,CAAgC;AAC9BvE,gBAAMA;AADwB,SAAhC,EAEGsM,EAFH;AAGD,OAJD,MAIO;AACL,YAAMrH,MAAM,KAAK4H,KAAL,CACV,KAAKhK,OAAL,CAAasB,iBADH,EACsB,KAAKtB,OAAL,CAAawB,eADnC,EACoD,KAAKxB,OAAL,CAAauB,gBADjE,EACmFpE,IADnF,EACyFsM,EADzF,CAAZ;AAEA,aAAK1J,KAAL,CAAWsE,KAAX,IAAoBjC,GAApB;AACD;AACF;;;4CAEuB0C,O,EAAS;AAC/B,UAAI,KAAKvF,mBAAL,CAAyBuF,OAAzB,MAAsC3I,SAA1C,EAAqD;AACnDwI,qBAAa,KAAKpF,mBAAL,CAAyBuF,OAAzB,CAAb;AACA,eAAO,KAAKvF,mBAAL,CAAyBuF,OAAzB,CAAP;AACD;AACF;;;qCAEgBA,O,EAASiC,G,EAAK;AAAA;;AAC7B,WAAK9E,MAAL,CAAY,4BAAZ,EAA0C6C,OAA1C,EAAmDiC,GAAnD;AACA,WAAKzB,uBAAL,CAA6BR,OAA7B;AACA,UAAMC,MAAM,KAAK0F,OAAL,CAAa3F,OAAb,CAAZ;AACA,UAAIC,QAAQ,IAAZ,EAAkB;AAChB;AACD;AACD,UAAMlI,SAASC,KAAK6M,KAAL,CAAW7M,KAAKC,MAAL,KAAgB,IAA3B,CAAf;AACA,UAAI6N,oBAAoBrH,WAAW;AAAA,eAAM,QAAKsH,WAAL,CAAiB/F,OAAjB,CAAN;AAAA,OAAX,EAA4C,KAAK9E,OAAL,CAAayB,kBAAb,GAAkC5E,MAA9E,CAAxB;AACA,WAAK0C,mBAAL,CAAyBuF,OAAzB,IAAoC8F,iBAApC;AACA;AACD;;;wCAEmB9F,O,EAAS+B,M,EAAQ;AAAA;;AACnC,WAAK5E,MAAL,CAAY,8BAAZ,EAA4C6C,OAA5C;AACA,WAAKQ,uBAAL,CAA6BR,OAA7B;AACA,UAAMC,MAAM,KAAK0F,OAAL,CAAa3F,OAAb,CAAZ;AACA,UAAIC,QAAQ,IAAZ,EAAkB;AAChB;AACD;AACD,UAAI8B,OAAOoD,OAAP,KAAmB,IAAvB,EAA6B;AAC3B,YAAIW,oBAAoBrH,WAAW;AAAA,iBAAM,QAAKsH,WAAL,CAAiB/F,OAAjB,CAAN;AAAA,SAAX,EAA4C,KAAKqF,mBAAL,CAAyBtD,OAAOuD,GAAhC,CAA5C,CAAxB;AACA,aAAK7K,mBAAL,CAAyBuF,OAAzB,IAAoC8F,iBAApC;AACD;AACD;AACD;;;+BAEU7F,G,EAAK+F,a,EAAe;AAAA;;AAC7B,WAAK7I,MAAL,CAAY,gBAAZ,EAA8B8C,IAAID,OAAlC;AACA,UAAMA,UAAUC,IAAID,OAApB;;AAEA,UAAI,EAAEA,WAAW,KAAKnG,KAAlB,CAAJ,EAA8B;AAC5B,aAAKA,KAAL,CAAWmG,OAAX,IAAsBC,GAAtB;AACD;;AAED,UAAI,CAAC,KAAKkD,WAAL,EAAL,EAAyB;AACvB;AACAlD,YAAIgG,OAAJ;AACA;AACD;;AAEDhG,UAAII,eAAJ,CAAoB2F,aAApB;;AAEA,UAAMzE,MAAM;AACV0B,gBAAQ,KAAKjK,WAAL,CAAiBkN,SADf;AAEVnJ,gBAAQ;AACNiD,mBAASA;AADH;AAFE,OAAZ;;AAOA;AACA;AACA;AACA;AACA,UAAI,uBAAWA,OAAX,EAAoB,KAAK9E,OAAL,CAAaU,oBAAjC,CAAJ,EAA4D;AAC1D;AACA,YAAI,KAAKzB,oBAAT,EAA+B;AAC7B,eAAKC,gBAAL,CAAsB4F,OAAtB,IAAiC,IAAjC;AACD,SAFD,MAEO;AACL,eAAKmG,sBAAL;AACA,eAAKC,UAAL,CAAgBnG,GAAhB;AACA,eAAKoG,qBAAL;AACD;AACF,OATD,MASO;AACL,YAAMC,UAAUrG,IAAIsG,YAAJ,EAAhB;;AAEA,YAAID,YAAY,IAAhB,EAAsB;AACpB/E,cAAIxE,MAAJ,CAAWuJ,OAAX,GAAqB,IAArB;AACA,cAAME,MAAM,KAAKC,WAAL,CAAiBzG,OAAjB,CAAZ;AACA,cAAIwG,GAAJ,EAAS;AACPjF,gBAAIxE,MAAJ,CAAWyJ,GAAX,GAAiBA,GAAjB;AACD;AACD,cAAME,MAAM,KAAKC,WAAL,CAAiB3G,OAAjB,CAAZ;AACA,cAAI0G,GAAJ,EAAS;AACPnF,gBAAIxE,MAAJ,CAAW2J,GAAX,GAAiBA,GAAjB;AACD;AACD,cAAME,QAAQ,KAAKC,aAAL,CAAmB7G,OAAnB,CAAd;AACA,cAAI4G,KAAJ,EAAW;AACTrF,gBAAIxE,MAAJ,CAAW6J,KAAX,GAAmBA,KAAnB;AACD;AACF;;AAED,aAAKnF,KAAL,CAAWF,GAAX,EAAgBG,IAAhB,CAAqB,sBAAc;AACjC,kBAAKoF,kBAAL,CACE9G,OADF,EAEE,QAAK7G,QAAL,CAAcyI,mBAAd,CAAkC,QAAK5I,WAAL,CAAiBkN,SAAnD,EAA8DpE,WAAWC,MAAzE,CAFF;AAIA,cAAID,WAAWE,IAAf,EAAqB;AACnBF,uBAAWE,IAAX;AACD;AACF,SARD,EAQG,qBAAa;AACd,kBAAK+E,eAAL,CAAqB/G,OAArB,EAA8BkC,UAAU5J,KAAxC;AACA,cAAI4J,UAAUF,IAAd,EAAoB;AAClBE,sBAAUF,IAAV;AACD;AACF,SAbD;AAcD;AACF;;;iCAEY/B,G,EAAK;AAChB,UAAI,KAAKkD,WAAL,EAAJ,EAAwB;AACtB;AACA,aAAKY,WAAL,CAAiB;AACfd,kBAAQ,KAAKjK,WAAL,CAAiBgO,WADV;AAEfjK,kBAAQ;AACNiD,qBAASC,IAAID;AADP;AAFO,SAAjB;AAMD;AACF;;;wCAEmBsF,G,EAAK;AACvB;AACA,aAAOtN,KAAKH,GAAL,CAASyN,MAAM,IAAf,EAAqB,UAArB,CAAP;AACD;;;2BAEMtF,O,EAAS;AACd,aAAO,KAAK2F,OAAL,CAAa3F,OAAb,CAAP;AACD;;;4BAEOA,O,EAAS;AACf,UAAMC,MAAM,KAAKpG,KAAL,CAAWmG,OAAX,CAAZ;AACA,UAAI,CAACC,GAAL,EAAU;AACR,eAAO,IAAP;AACD;AACD,aAAOA,GAAP;AACD;;;qCAEgB8B,M,EAAQ;AAAA;;AACvB,UAAMkF,kBAAkB,KAAK3N,aAA7B;AACA,WAAKA,aAAL,GAAqB,KAArB;AACA,WAAK4N,WAAL;AACA,WAAKtN,gBAAL,GAAwB,KAAxB;;AAEA,UAAI,KAAKuJ,WAAL,EAAJ,EAAwB;AACtB;AACD;;AAED,UAAI,KAAKtI,aAAL,KAAuB,IAA3B,EAAiC;AAC/B,aAAKD,QAAL,GAAiB,IAAI4G,IAAJ,EAAD,CAAa2F,OAAb,KAAyB,KAAKtM,aAAL,CAAmBsM,OAAnB,EAAzC;AACA,aAAKtM,aAAL,GAAqB,IAArB;AACD;;AAED,WAAKlB,SAAL,GAAiBoI,OAAOqD,MAAxB;AACA,WAAKnB,UAAL,CAAgB,WAAhB;;AAEA,UAAI,KAAK3J,eAAT,EAA0B;AACxBuF,qBAAa,KAAKvF,eAAlB;AACD;;AAED,UAAIyH,OAAOoD,OAAX,EAAoB;AAClB,aAAK7K,eAAL,GAAuBmE,WAAW;AAAA,iBAAM,QAAKoE,QAAL,EAAN;AAAA,SAAX,EAAkC,KAAKwC,mBAAL,CAAyBtD,OAAOuD,GAAhC,CAAlC,CAAvB;AACD;;AAED,WAAK8B,aAAL;AACA,WAAKjB,sBAAL;AACA,WAAK,IAAMnG,OAAX,IAAsB,KAAKnG,KAA3B,EAAkC;AAChC,YAAI,KAAKA,KAAL,CAAW6D,cAAX,CAA0BsC,OAA1B,CAAJ,EAAwC;AACtC,cAAMC,MAAM,KAAKpG,KAAL,CAAWmG,OAAX,CAAZ;AACA,cAAIC,IAAIoH,kBAAJ,EAAJ,EAA8B;AAC5B,iBAAKjB,UAAL,CAAgBnG,GAAhB,EAAqBgH,eAArB;AACD;AACF;AACF;AACD,WAAKZ,qBAAL;AACA,WAAKiB,YAAL;;AAEA,WAAKC,UAAL;;AAEA,UAAMC,MAAM;AACVpC,gBAAQrD,OAAOqD,MADL;AAEV3E,mBAAW,KAAKjH,cAFN;AAGViO,iBAAS,KAAK7M;AAHJ,OAAZ;AAKA,UAAImH,OAAO1J,IAAX,EAAiB;AACfmP,YAAInP,IAAJ,GAAW0J,OAAO1J,IAAlB;AACD;;AAED,WAAKiM,IAAL,CAAU,SAAV,EAAqBkD,GAArB;AACD;;;gCAEW;AACV,UAAI,KAAKhN,YAAL,KAAsB,IAA1B,EAAgC;AAC9BqF,qBAAa,KAAKrF,YAAlB;AACA,aAAKA,YAAL,GAAoB,IAApB;AACD;AACD,UAAI,KAAKD,YAAL,KAAsB,IAA1B,EAAgC;AAC9BsF,qBAAa,KAAKtF,YAAlB;AACA,aAAKA,YAAL,GAAoB,IAApB;AACD;AACF;;;iCAEY;AAAA;;AACX,UAAI,KAAKW,OAAL,CAAaO,IAAb,KAAsB,IAAtB,IAA8B,KAAKP,OAAL,CAAaQ,YAAb,IAA6B,CAA/D,EAAkE;AAChE;AACD;AACD,UAAI,CAAC,KAAKyH,WAAL,EAAL,EAAyB;AACvB;AACD;;AAED,WAAK5I,YAAL,GAAoBkE,WAAW,YAAM;AACnC,YAAI,CAAC,QAAK0E,WAAL,EAAL,EAAyB;AACvB,kBAAKzD,SAAL;AACA;AACD;AACD,gBAAKjE,IAAL;AACA,gBAAKjB,YAAL,GAAoBiE,WAAW,YAAM;AACnC,kBAAK2D,WAAL,CAAiB,SAAjB,EAA4B,IAA5B;AACD,SAFmB,EAEjB,QAAKlH,OAAL,CAAaS,eAFI,CAApB;AAGD,OATmB,EASjB,KAAKT,OAAL,CAAaQ,YATI,CAApB;AAUD;;;mCAEc;AACb,WAAKgE,SAAL;AACA,WAAK6H,UAAL;AACD;;;oCAEevH,O,EAAS1H,K,EAAO;AAC9B,UAAM2H,MAAM,KAAK0F,OAAL,CAAa3F,OAAb,CAAZ;AACA,UAAI,CAACC,GAAL,EAAU;AACR;AACD;AACD,UAAI,CAACA,IAAIyH,cAAJ,EAAL,EAA2B;AACzB;AACD;AACD,UAAIpP,MAAM6J,IAAN,KAAe,CAAf,IAAoB7J,MAAMqP,OAAN,KAAkBpP,aAA1C,EAAyD;AAAE;AACzD,aAAK6J,WAAL,CAAiB,SAAjB,EAA4B,IAA5B;AACA;AACD;AACDnC,UAAI2H,kBAAJ,CAAuBtP,KAAvB;AACD;;;uCAEkB0H,O,EAAS+B,M,EAAQ;AAAA;;AAClC,UAAM9B,MAAM,KAAK0F,OAAL,CAAa3F,OAAb,CAAZ;AACA,UAAI,CAACC,GAAL,EAAU;AACR;AACD;AACD,UAAI,CAACA,IAAIyH,cAAJ,EAAL,EAA2B;AACzB;AACD;;AAED,UAAIG,YAAY,KAAhB;AACA,UAAI,eAAe9F,MAAnB,EAA2B;AACzB8F,oBAAY9F,OAAO8F,SAAnB;AACD;AACD5H,UAAI6H,oBAAJ,CAAyBD,SAAzB;;AAEA,UAAIE,OAAOhG,OAAOiG,YAAlB;;AAEA,UAAID,QAAQA,KAAKpK,MAAL,GAAc,CAA1B,EAA6B;AAC3B;AACAoK,eAAOA,KAAKE,OAAL,EAAP;AACA,aAAK,IAAIxK,CAAT,IAAcsK,IAAd,EAAoB;AAClB,cAAIA,KAAKrK,cAAL,CAAoBD,CAApB,CAAJ,EAA4B;AAC1B,iBAAKyK,kBAAL,CAAwBlI,OAAxB,EAAiC+H,KAAKtK,CAAL,CAAjC;AACD;AACF;AACF,OARD,MAQO;AACL,YAAIsE,OAAOoG,WAAX,EAAwB;AACtB,eAAKrO,QAAL,CAAckG,OAAd,IAAyB+B,OAAOyE,GAAP,IAAc,CAAvC;AACA,eAAKzM,QAAL,CAAciG,OAAd,IAAyB+B,OAAO2E,GAAP,IAAc,CAAvC;AACD;AACF;;AAED,WAAK1M,UAAL,CAAgBgG,OAAhB,IAA2B+B,OAAO6E,KAAP,IAAgB,EAA3C;;AAEA,UAAI7E,OAAOoG,WAAX,EAAwB;AACtBlI,YAAImI,YAAJ,GAAmB,IAAnB;AACD;;AAED,UAAIrG,OAAOoD,OAAP,KAAmB,IAAvB,EAA6B;AAC3B,YAAIW,oBAAoBrH,WAAW;AAAA,iBAAM,QAAKsH,WAAL,CAAiB/F,OAAjB,CAAN;AAAA,SAAX,EAA4C,KAAKqF,mBAAL,CAAyBtD,OAAOuD,GAAhC,CAA5C,CAAxB;AACA,aAAK7K,mBAAL,CAAyBuF,OAAzB,IAAoC8F,iBAApC;AACD;AACF;;;iCAEYuC,K,EAAOrG,I,EAAM;AACxB,UAAMrC,KAAK0I,MAAM1I,EAAjB;AACA,UAAMoC,SAASsG,MAAMtG,MAArB;;AAEA,UAAI,EAAEpC,MAAM,KAAKhF,UAAb,CAAJ,EAA8B;AAC5BqH;AACA;AACD;AACD,UAAMpC,YAAY,KAAKjF,UAAL,CAAgBgF,EAAhB,CAAlB;AACAE,mBAAa,KAAKlF,UAAL,CAAgBgF,EAAhB,EAAoBnE,OAAjC;AACA,aAAO,KAAKb,UAAL,CAAgBgF,EAAhB,CAAP;;AAEA,UAAI,CAAC,wBAAY0I,KAAZ,CAAL,EAAyB;AACvB,YAAMpL,WAAW2C,UAAU3C,QAA3B;AACA,YAAI,CAACA,QAAL,EAAe;AACb;AACD;AACDA,iBAAS,EAAC8E,cAAD,EAASC,UAAT,EAAT;AACD,OAND,MAMO;AACL,YAAMlC,UAAUF,UAAUE,OAA1B;AACA,YAAI,CAACA,OAAL,EAAc;AACZkC;AACA;AACD;AACD,YAAM1J,QAAQ+P,MAAM/P,KAApB;AACAwH,gBAAQ,EAACxH,YAAD,EAAQ0J,UAAR,EAAR;AACD;AACF;;;gCAEWhC,O,EAASsI,I,EAAM;AACzB,UAAMrI,MAAM,KAAK0F,OAAL,CAAa3F,OAAb,CAAZ;AACA,UAAI,CAACC,GAAL,EAAU;AACR;AACD;AACDA,UAAIqE,IAAJ,CAAS,MAAT,EAAiBgE,IAAjB;AACD;;;iCAEYtI,O,EAASuI,K,EAAO;AAC3B,UAAMtI,MAAM,KAAK0F,OAAL,CAAa3F,OAAb,CAAZ;AACA,UAAI,CAACC,GAAL,EAAU;AACR;AACD;AACDA,UAAIqE,IAAJ,CAAS,OAAT,EAAkBiE,KAAlB;AACD;;;iCAEYvI,O,EAASwI,K,EAAO;AAC3B,UAAMvI,MAAM,KAAK0F,OAAL,CAAa3F,OAAb,CAAZ;AACA,UAAI,CAACC,GAAL,EAAU;AACR;AACD;AACDA,UAAIwI,WAAJ;AACA,UAAID,MAAME,WAAN,KAAsB,IAA1B,EAAgC;AAC9BzI,YAAI0I,SAAJ;AACD;AACF;;;uCAEkB3I,O,EAAS4I,G,EAAK;AAC/B,UAAM3I,MAAM,KAAK0F,OAAL,CAAa3F,OAAb,CAAZ;AACA,UAAI,CAACC,GAAL,EAAU;AACR;AACD;AACD,UAAI2I,IAAIpC,GAAJ,KAAYnP,SAAhB,EAA2B;AACzB,aAAKyC,QAAL,CAAckG,OAAd,IAAyB4I,IAAIpC,GAA7B;AACD;AACD,UAAIoC,IAAIlC,GAAJ,KAAYrP,SAAhB,EAA2B;AACzB,aAAK0C,QAAL,CAAciG,OAAd,IAAyB4I,IAAIlC,GAA7B;AACD;AACDzG,UAAIqE,IAAJ,CAAS,SAAT,EAAoBsE,GAApB;AACD;;;mCAEcjB,O,EAAS;AACtB,WAAKrD,IAAL,CAAU,SAAV,EAAqBqD,QAAQtP,IAA7B;AACD;;;gCAEWA,I,EAAM2J,I,EAAM;AACtB,UAAM6G,OAAO,KAAK1P,QAAL,CAAc2P,UAAd,CAAyBzQ,IAAzB,CAAb;AACA,UAAI0Q,OAAO,CAAX;AACA,UAAI,UAAUF,IAAd,EAAoB;AAClBE,eAAOF,KAAK,MAAL,CAAP;AACD;AACD,UAAM7I,UAAU6I,KAAK7I,OAArB;;AAEA,UAAI+I,SAAS,KAAK9P,SAAL,CAAe+P,WAA5B,EAAyC;AACvC,YAAMJ,MAAM,KAAKzP,QAAL,CAAc8P,cAAd,CAA6B,KAAKhQ,SAAL,CAAe+P,WAA5C,EAAyDH,KAAKxQ,IAA9D,CAAZ;AACA,aAAK6P,kBAAL,CAAwBlI,OAAxB,EAAiC4I,GAAjC;AACD,OAHD,MAGO,IAAIG,SAAS,KAAK9P,SAAL,CAAeiQ,OAA5B,EAAqC;AAC1C,YAAMvB,UAAU,KAAKxO,QAAL,CAAc8P,cAAd,CAA6B,KAAKhQ,SAAL,CAAeiQ,OAA5C,EAAqDL,KAAKxQ,IAA1D,CAAhB;AACA,aAAK8Q,cAAL,CAAoBxB,OAApB;AACD,OAHM,MAGA,IAAIoB,SAAS,KAAK9P,SAAL,CAAemQ,IAA5B,EAAkC;AACvC,YAAMd,OAAO,KAAKnP,QAAL,CAAc8P,cAAd,CAA6B,KAAKhQ,SAAL,CAAemQ,IAA5C,EAAkDP,KAAKxQ,IAAvD,CAAb;AACA,aAAKgR,WAAL,CAAiBrJ,OAAjB,EAA0BsI,IAA1B;AACD,OAHM,MAGA,IAAIS,SAAS,KAAK9P,SAAL,CAAeqQ,KAA5B,EAAmC;AACxC,YAAMf,QAAQ,KAAKpP,QAAL,CAAc8P,cAAd,CAA6B,KAAKhQ,SAAL,CAAeqQ,KAA5C,EAAmDT,KAAKxQ,IAAxD,CAAd;AACA,aAAKkR,YAAL,CAAkBvJ,OAAlB,EAA2BuI,KAA3B;AACD,OAHM,MAGA,IAAIQ,SAAS,KAAK9P,SAAL,CAAeuQ,KAA5B,EAAmC;AACxC,YAAMhB,QAAQ,KAAKrP,QAAL,CAAc8P,cAAd,CAA6B,KAAKhQ,SAAL,CAAeuQ,KAA5C,EAAmDX,KAAKxQ,IAAxD,CAAd;AACA,aAAKoR,YAAL,CAAkBzJ,OAAlB,EAA2BwI,KAA3B;AACD;AACDxG;AACD;;;mCAEcqG,K,EAAO;AACpB,UAAIrG,IAAJ;AACA,UAAM6B,IAAI,IAAIT,OAAJ,CAAY,mBAAU;AAC9BpB,eAAOyB,OAAP;AACD,OAFS,CAAV;;AAIA,UAAI4E,UAAUhR,SAAV,IAAuBgR,UAAU,IAArC,EAA2C;AACzC,aAAKlL,MAAL,CAAY,uCAAZ;AACA6E;AACA,eAAO6B,CAAP;AACD;;AAED,UAAMlE,KAAK0I,MAAM1I,EAAjB;;AAEA,UAAIA,MAAMA,KAAK,CAAf,EAAkB;AAChB,aAAK+J,YAAL,CAAkBrB,KAAlB,EAAyBrG,IAAzB;AACD,OAFD,MAEO;AACL,aAAK2H,WAAL,CAAiBtB,MAAMtG,MAAvB,EAA+BC,IAA/B;AACD;;AAED,aAAO6B,CAAP;AACD;;;6BAEQ;AACP,UAAM+F,WAAW,KAAK3P,SAAL,CAAe4P,KAAf,CAAqB,CAArB,CAAjB;AACA,WAAK5P,SAAL,GAAiB,EAAjB;AACA,WAAKuJ,cAAL,CAAoBoG,QAApB;AACD;;;4BAEO;AAAA;;AACN,UAAMrI,MAAM;AACV0B,gBAAQ,KAAKjK,WAAL,CAAiB8Q;AADf,OAAZ;AAGA,WAAKrI,KAAL,CAAWF,GAAX,EAAgBG,IAAhB,CAAqB,sBAAc;AACjC,gBAAKqI,aAAL,CAAmB,QAAK5Q,QAAL,CAAcyI,mBAAd,CAAkC,QAAK5I,WAAL,CAAiB8Q,IAAnD,EAAyDhI,WAAWC,MAApE,CAAnB;AACA,YAAID,WAAWE,IAAf,EAAqB;AACnBF,qBAAWE,IAAX;AACD;AACF,OALD,EAKG,qBAAa;AACd,gBAAK7E,MAAL,CAAY,YAAZ,EAA0B+E,UAAU5J,KAApC;AACA,YAAI4J,UAAUF,IAAd,EAAoB;AAClBE,oBAAUF,IAAV;AACD;AACF,OAVD;AAWD;;;kCAEaD,M,EAAQ;AACpB,UAAI,CAAC,KAAKoB,WAAL,EAAL,EAAyB;AACvB;AACD;AACD,WAAKzD,SAAL;AACA,WAAK6H,UAAL;AACD;;;gCAEWvH,O,EAAS;AACnB,UAAMgK,UAAU,KAAKlQ,QAAL,CAAckG,OAAd,CAAhB;AACA,UAAIgK,OAAJ,EAAa;AACX,eAAOA,OAAP;AACD;AACD,aAAO,CAAP;AACD;;;gCAEWhK,O,EAAS;AACnB,UAAMiK,UAAU,KAAKlQ,QAAL,CAAciG,OAAd,CAAhB;AACA,UAAIiK,OAAJ,EAAa;AACX,eAAOA,OAAP;AACD;AACD,aAAO,CAAP;AACD;;;kCAEajK,O,EAAS;AACrB,UAAMkK,YAAY,KAAKlQ,UAAL,CAAgBgG,OAAhB,CAAlB;AACA,UAAIkK,SAAJ,EAAe;AACb,eAAOA,SAAP;AACD;AACD,aAAO,EAAP;AACD;;;uCAEkBvC,O,EAASxF,I,EAAM;AAChC,UAAMgI,YAAY;AAChBxC,iBAASA,OADO;AAEhBxF,cAAMA,QAAQ;AAFE,OAAlB;;AAKA,aAAOgI,SAAP;AACD;;;kCAEaxK,E,EAAI1C,Q,EAAU6C,O,EAAS;AAAA;;AACnC,WAAKnF,UAAL,CAAgBgF,EAAhB,IAAsB;AACpB1C,kBAAUA,QADU;AAEpB6C,iBAASA,OAFW;AAGpBtE,iBAAS;AAHW,OAAtB;AAKA,WAAKb,UAAL,CAAgBgF,EAAhB,EAAoBnE,OAApB,GAA8BiD,WAAW,YAAM;AAC7C,eAAO,QAAK9D,UAAL,CAAgBgF,EAAhB,CAAP;AACA,YAAI,uBAAWG,OAAX,CAAJ,EAAyB;AACvBA,kBAAQ,EAACxH,OAAO,QAAKyH,kBAAL,CAAwBxH,aAAxB,CAAR,EAAR;AACD;AACF,OAL6B,EAK3B,KAAK2C,OAAL,CAAaM,OALc,CAA9B;AAMD;;;gCAEWmM,O,EAAS;AACnB,UAAIhI,KAAK,KAAKyK,cAAL,EAAT;AACAzC,cAAQhI,EAAR,GAAaA,EAAb;AACA,UAAI,KAAKzF,WAAL,KAAqB,IAAzB,EAA+B;AAC7B,aAAKD,SAAL,CAAe4O,IAAf,CAAoBlB,OAApB;AACD,OAFD,MAEO;AACL,aAAKnE,cAAL,CAAoB,CAACmE,OAAD,CAApB;AACD;AACD,aAAOhI,EAAP;AACD;;;kCAEa;AACZ,aAAO,KAAK0K,YAAL,EAAP;AACD;;;8BAES;AACR,WAAKvH,QAAL;AACD;;;iCAEY;AACX,WAAKV,WAAL,CAAiB,QAAjB,EAA2B,KAA3B;AACD;;;2BAEM;AACL,aAAO,KAAKkI,KAAL,EAAP;AACD;;;oCAEe;AACd;AACA;AACA,WAAKpQ,WAAL,GAAmB,IAAnB;AACD;;;mCAEc;AACb,WAAKA,WAAL,GAAmB,KAAnB;AACA,WAAKqQ,MAAL;AACD;;;6CAEwB;AACvB;AACA;AACA,WAAKpQ,oBAAL,GAA4B,IAA5B;AACD;;;4CAEuB;AAAA;;AACtB;AACA;AACA,WAAKA,oBAAL,GAA4B,KAA5B;AACA,UAAMqQ,eAAe,KAAKpQ,gBAA1B;AACA,WAAKA,gBAAL,GAAwB,EAAxB;;AAEA,UAAMoL,WAAW,EAAjB;;AAEA,WAAK,IAAMxF,OAAX,IAAsBwK,YAAtB,EAAoC;AAClC,YAAIA,aAAa9M,cAAb,CAA4BsC,OAA5B,CAAJ,EAA0C;AACxC,cAAMC,MAAM,KAAK0F,OAAL,CAAa3F,OAAb,CAAZ;AACA,cAAI,CAACC,GAAL,EAAU;AACR;AACD;AACDuF,mBAASqD,IAAT,CAAc7I,OAAd;AACD;AACF;;AAED,UAAIwF,SAAS7H,MAAT,KAAoB,CAAxB,EAA2B;AACzB,aAAKR,MAAL,CAAY,oDAAZ;AACA;AACD;;AAED,UAAM9E,OAAO;AACX+M,gBAAQ,KAAKzL,SADF;AAEX6L,kBAAUA;AAFC,OAAb;;AAKA,UAAMf,WAAW,KAAK9K,SAAtB;AACA,UAAM4F,QAAQ,KAAKmF,SAAL,EAAd;;AAEA,UAAMC,KAAK,SAALA,EAAK,CAACC,IAAD,EAAU;AACnB,YAAIrF,SAAS,QAAKtE,KAAlB,EAAyB;AACvB,iBAAO,QAAKA,KAAL,CAAWsE,KAAX,CAAP;AACD;AACD,YAAI,QAAK5F,SAAL,KAAmB8K,QAAvB,EAAiC;AAC/B;AACD;AACD,YAAIG,KAAKtM,KAAL,IAAcsM,KAAKzG,MAAL,KAAgB,GAAlC,EAAuC;AACrC,kBAAKhB,MAAL,CAAY,8BAAZ;AACA,eAAK,IAAMM,CAAX,IAAgB+H,QAAhB,EAA0B;AACxB,gBAAIA,SAAS9H,cAAT,CAAwBD,CAAxB,CAAJ,EAAgC;AAC9B,kBAAMuC,YAAUwF,SAAS/H,CAAT,CAAhB;AACA,sBAAKsJ,eAAL,CAAqB/G,SAArB,EAA8B,QAAKD,kBAAL,CAAwB,8BAAxB,CAA9B;AACD;AACF;AACD;AACD;;AAED,YAAIwF,eAAe,EAAnB;AACA,YAAIX,KAAKvM,IAAL,CAAUmN,QAAd,EAAwB;AACtB,eAAK,IAAM/H,EAAX,IAAgBmH,KAAKvM,IAAL,CAAUmN,QAA1B,EAAoC;AAClC,gBAAMC,cAAcb,KAAKvM,IAAL,CAAUmN,QAAV,CAAmB/H,EAAnB,CAApB;AACA,gBAAI,CAACgI,YAAYzF,OAAjB,EAA0B;AACxB;AACD;AACDuF,yBAAaE,YAAYzF,OAAzB,IAAoCyF,YAAY3I,KAAhD;AACD;AACF;;AAED;AACA,YAAI2N,QAAQ,KAAZ;;AAEA,YAAI,CAAC,QAAKvQ,WAAV,EAAuB;AACrB,kBAAKkN,aAAL;AACAqD,kBAAQ,IAAR;AACD;;AAED,aAAK,IAAMhN,GAAX,IAAgB+H,QAAhB,EAA0B;AACxB,cAAIA,SAAS9H,cAAT,CAAwBD,GAAxB,CAAJ,EAAgC;AAAA;AAC9B,kBAAMuC,UAAUwF,SAAS/H,GAAT,CAAhB;AACA,kBAAMX,QAAQyI,aAAavF,OAAb,CAAd;;AAEA,kBAAI,CAAClD,KAAL,EAAY;AACV;AACA,wBAAKiK,eAAL,CAAqB/G,OAArB,EAA8B,QAAKD,kBAAL,CAAwB,mBAAxB,EAA6C,GAA7C,CAA9B;AACA;AACD,eAJD,MAIO;AACL,oBAAMwB,MAAM;AACV0B,0BAAQ,QAAKjK,WAAL,CAAiBkN,SADf;AAEVnJ,0BAAQ;AACNiD,6BAASA,OADH;AAENlD,2BAAOA;AAFD;AAFE,iBAAZ;;AAQA,oBAAMmD,OAAM,QAAK0F,OAAL,CAAa3F,OAAb,CAAZ;AACA,oBAAIC,SAAQ,IAAZ,EAAkB;AAChB;AACD;;AAED,oBAAMqG,UAAUrG,KAAIsG,YAAJ,EAAhB;;AAEA,oBAAID,YAAY,IAAhB,EAAsB;AACpB/E,sBAAIxE,MAAJ,CAAWuJ,OAAX,GAAqB,IAArB;AACA,sBAAME,MAAM,QAAKC,WAAL,CAAiBzG,OAAjB,CAAZ;AACA,sBAAIwG,GAAJ,EAAS;AACPjF,wBAAIxE,MAAJ,CAAWyJ,GAAX,GAAiBA,GAAjB;AACD;AACD,sBAAME,MAAM,QAAKC,WAAL,CAAiB3G,OAAjB,CAAZ;AACA,sBAAI0G,GAAJ,EAAS;AACPnF,wBAAIxE,MAAJ,CAAW2J,GAAX,GAAiBA,GAAjB;AACD;AACD,sBAAME,QAAQ,QAAKC,aAAL,CAAmB7G,OAAnB,CAAd;AACA,sBAAI4G,KAAJ,EAAW;AACTrF,wBAAIxE,MAAJ,CAAW6J,KAAX,GAAmBA,KAAnB;AACD;AACF;AACD,wBAAKnF,KAAL,CAAWF,GAAX,EAAgBG,IAAhB,CAAqB,sBAAc;AACjC,0BAAKoF,kBAAL,CACE9G,OADF,EAEE,QAAK7G,QAAL,CAAcyI,mBAAd,CAAkC,QAAK5I,WAAL,CAAiBkN,SAAnD,EAA8DpE,WAAWC,MAAzE,CAFF;AAIA,sBAAID,WAAWE,IAAf,EAAqB;AACnBF,+BAAWE,IAAX;AACD;AACF,iBARD,EAQG,qBAAa;AACd,0BAAK+E,eAAL,CAAqB/G,OAArB,EAA8BkC,UAAU5J,KAAxC;AACA,sBAAI4J,UAAUF,IAAd,EAAoB;AAClBE,8BAAUF,IAAV;AACD;AACF,iBAbD;AAcD;AArD6B;;AAAA,sCAmB1B;AAmCL;AACF;;AAED,YAAIyI,KAAJ,EAAW;AACT,kBAAKnD,YAAL;AACD;AAEF,OAnGD;;AAqGA,UAAI,KAAKpM,OAAL,CAAa0B,kBAAb,KAAoC,IAAxC,EAA8C;AAC5C,aAAK1B,OAAL,CAAa0B,kBAAb,CAAgC;AAC9BvE,gBAAMA;AADwB,SAAhC,EAEGsM,EAFH;AAGD,OAJD,MAIO;AACL,YAAMrH,MAAM,KAAK4H,KAAL,CACV,KAAKhK,OAAL,CAAasB,iBADH,EACsB,KAAKtB,OAAL,CAAawB,eADnC,EACoD,KAAKxB,OAAL,CAAauB,gBADjE,EACmFpE,IADnF,EACyFsM,EADzF,CAAZ;AAEA,aAAK1J,KAAL,CAAWsE,KAAX,IAAoBjC,GAApB;AACD;AACF;;;8BAES0C,O,EAAS0K,M,EAAQ;AACzB,UAAMC,aAAa,KAAKhF,OAAL,CAAa3F,OAAb,CAAnB;AACA,UAAI2K,eAAe,IAAnB,EAAyB;AACvBA,mBAAWC,UAAX,CAAsBF,MAAtB;AACA,YAAIC,WAAWE,eAAX,EAAJ,EAAkC;AAChCF,qBAAWhC,SAAX;AACD;AACD,eAAOgC,UAAP;AACD;AACD,UAAM1K,MAAM,2BAAiB,IAAjB,EAAuBD,OAAvB,EAAgC0K,MAAhC,CAAZ;AACA,WAAK7Q,KAAL,CAAWmG,OAAX,IAAsBC,GAAtB;AACAA,UAAI0I,SAAJ;AACA,aAAO1I,GAAP;AACD;;;;;;;;;;;;;;;;;;;;ACpgDH;;;;AAEA;;;;;;;;;;AAIA,IAAM6K,aAAa,CAAnB;AACA,IAAMC,qBAAqB,CAA3B;AACA,IAAMC,iBAAiB,CAAvB;AACA,IAAMC,eAAe,CAArB;AACA,IAAMC,sBAAsB,CAA5B;;IAEqBC,Y;;;AACnB,wBAAYC,UAAZ,EAAwBpL,OAAxB,EAAiC0K,MAAjC,EAAyC;AAAA;;AAAA;;AAEvC,UAAK1K,OAAL,GAAeA,OAAf;AACA,UAAKqL,WAAL,GAAmBD,UAAnB;AACA,UAAKhS,OAAL,GAAe0R,UAAf;AACA,UAAKQ,MAAL,GAAc,IAAd;AACA,UAAKC,cAAL,GAAsB,KAAtB;AACA,UAAKC,MAAL,GAAc,KAAd;AACA,UAAKC,oBAAL,GAA4B,IAA5B;AACA,UAAKC,cAAL,GAAsB,KAAtB;AACA,UAAKtD,YAAL,GAAoB,KAApB;AACA,UAAKhI,QAAL,GAAgB,KAAhB;AACA,UAAKwK,UAAL,CAAgBF,MAAhB;AACA,UAAKiB,kBAAL;AACA,UAAKC,SAAL,GAAiB,EAAjB;AACA,UAAKC,EAAL,CAAQ,OAAR,EAAiB,UAAUC,UAAV,EAAsB;AACrC,WAAKT,WAAL,CAAiBlO,MAAjB,CAAwB,oBAAxB,EAA8C2O,UAA9C;AACD,KAFD;AAfuC;AAkBxC;;;;yCAEoB;AAAA;;AACnB;AACA;AACA;AACA,WAAKN,MAAL,GAAc,KAAd;;AAEA,WAAKC,oBAAL,GAA4B,IAAIrI,OAAJ,CAAY,UAACK,OAAD,EAAUJ,MAAV,EAAqB;AAC3D,eAAK0I,QAAL,GAAgB,iBAAS;AACvB,iBAAKP,MAAL,GAAc,IAAd;AACA/H,kBAAQvM,KAAR;AACD,SAHD;AAIA,eAAK8U,OAAL,GAAe,eAAO;AACpB,iBAAKR,MAAL,GAAc,IAAd;AACAnI,iBAAOpB,GAAP;AACD,SAHD;AAID,OAT2B,EASzBP,IATyB,CASpB,YAAY,CAAE,CATM,EASJ,YAAY,CAAE,CATV,CAA5B;AAUD;;;mCAEc;AACb,aAAO,KAAK0G,YAAL,KAAsB,IAAtB,IAA8B,KAAKhI,QAAL,KAAkB,IAAvD;AACD;;;+BAEUsK,M,EAAQ;AACjB,UAAI,CAACA,MAAL,EAAa;AACX;AACD;AACD,UAAI,uBAAWA,MAAX,CAAJ,EAAwB;AACtB;AACA,aAAKmB,EAAL,CAAQ,SAAR,EAAmBnB,MAAnB;AACD,OAHD,MAGO,IAAIzL,OAAOgN,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BzB,MAA/B,MAA2CzL,OAAOgN,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+B,EAA/B,CAA/C,EAAmF;AACxF,YAAMC,cAAc,CAAC,SAAD,EAAY,MAAZ,EAAoB,OAApB,EAA6B,aAA7B,EAA4C,WAA5C,EAAyD,OAAzD,CAApB;AACA,aAAK,IAAI3O,IAAI,CAAR,EAAW4O,IAAID,YAAYzO,MAAhC,EAAwCF,IAAI4O,CAA5C,EAA+C5O,GAA/C,EAAoD;AAClD,cAAM6O,KAAKF,YAAY3O,CAAZ,CAAX;AACA,cAAI6O,MAAM5B,MAAV,EAAkB;AAChB,iBAAKmB,EAAL,CAAQS,EAAR,EAAY5B,OAAO4B,EAAP,CAAZ;AACD;AACF;AACF;AACF;;;6BAEQ;AACP,aAAO,KAAKlT,OAAL,KAAiB0R,UAAxB;AACD;;;sCAEiB;AAChB,aAAO,KAAK1R,OAAL,KAAiB8R,mBAAxB;AACD;;;qCAEgB;AACf,aAAO,KAAK9R,OAAL,KAAiB2R,kBAAxB;AACD;;;+BAEU;AACT,aAAO,KAAK3R,OAAL,KAAiB4R,cAAjB,IAAmC,KAAK5R,OAAL,KAAiB6R,YAA3D;AACD;;;iCAEY;AACX,aAAO,KAAK7R,OAAL,KAAiB4R,cAAxB;AACD;;;+BAEU;AACT,aAAO,KAAK5R,OAAL,KAAiB6R,YAAxB;AACD;;;8BAES;AACR,WAAK7R,OAAL,GAAe0R,UAAf;AACD;;;oCAEe9E,a,EAAe;AAC7B,WAAKuF,cAAL,GAAsBvF,iBAAiB,KAAvC;AACA,UAAI,KAAKwF,MAAL,KAAgB,IAApB,EAA0B;AACxB;AACA,aAAKG,kBAAL;AACD;AACD,WAAKvS,OAAL,GAAe2R,kBAAf;AACD;;;yCAEoBlD,S,EAAW;AAC9B,UAAI,KAAKzO,OAAL,KAAiB4R,cAArB,EAAqC;AACnC;AACD;AACD,WAAK5R,OAAL,GAAe4R,cAAf;AACA,UAAMuB,iBAAiB,KAAKC,2BAAL,CAAiC3E,SAAjC,CAAvB;;AAEA,WAAKzH,QAAL,GAAgB,KAAhB;AACA,WAAKkE,IAAL,CAAU,WAAV,EAAuBiI,cAAvB;AACA,WAAKR,QAAL,CAAcQ,cAAd;AACA,WAAK,IAAME,EAAX,IAAiB,KAAKb,SAAtB,EAAiC;AAC/B/L,qBAAa4M,EAAb;AACA,aAAKb,SAAL,CAAea,EAAf,EAAmBhJ,OAAnB;AACA,eAAO,KAAKmI,SAAL,CAAea,EAAf,CAAP;AACD;AACF;;;uCAEkBxK,G,EAAK;AACtB,UAAI,KAAK7I,OAAL,KAAiB6R,YAArB,EAAmC;AACjC;AACD;AACD,WAAK7R,OAAL,GAAe6R,YAAf;AACA,WAAKK,MAAL,GAAcrJ,GAAd;AACA,UAAM6J,aAAa,KAAKY,yBAAL,EAAnB;AACA,WAAKpI,IAAL,CAAU,OAAV,EAAmBwH,UAAnB;AACA,WAAKE,OAAL,CAAaF,UAAb;AACA,WAAK,IAAMW,EAAX,IAAiB,KAAKb,SAAtB,EAAiC;AAC/B/L,qBAAa4M,EAAb;AACA,aAAKb,SAAL,CAAea,EAAf,EAAmBpJ,MAAnB,CAA0BpB,GAA1B;AACA,eAAO,KAAK2J,SAAL,CAAea,EAAf,CAAP;AACD;AACF;;;0CAEqB;AACpB,WAAKnI,IAAL,CAAU,aAAV,EAAyB;AACvBtE,iBAAS,KAAKA;AADS,OAAzB;AAGD;;;qCAEgB2M,a,EAAe;AAC9B,WAAKtB,WAAL,CAAiB7K,uBAAjB,CAAyC,KAAKR,OAA9C;AACA,UAAI,KAAK5G,OAAL,KAAiB8R,mBAArB,EAA0C;AACxC;AACD;AACD,UAAM0B,cAAc,KAAKxT,OAAL,KAAiB4R,cAArC;AACA,WAAK5R,OAAL,GAAe8R,mBAAf;AACA,UAAIyB,kBAAkB,IAAtB,EAA4B;AAC1B,aAAKvM,QAAL,GAAgB,KAAhB;AACA,aAAKsL,cAAL,GAAsB,IAAtB;AACA,eAAO,KAAKL,WAAL,CAAiBvR,QAAjB,CAA0B,KAAKkG,OAA/B,CAAP;AACA,eAAO,KAAKqL,WAAL,CAAiBtR,QAAjB,CAA0B,KAAKiG,OAA/B,CAAP;AACA,eAAO,KAAKqL,WAAL,CAAiBrR,UAAjB,CAA4B,KAAKgG,OAAjC,CAAP;AACD;AACD,UAAI4M,WAAJ,EAAiB;AACf,aAAKzM,mBAAL;AACD;AACF;;;yCAEoB;AACnB,aAAO,CAAC,KAAKuL,cAAb;AACD;;;gDAE2B7D,S,EAAW;AACrC,aAAO;AACL7H,iBAAS,KAAKA,OADT;AAELgG,uBAAe,KAAKuF,cAFf;AAGL1D,mBAAWA;AAHN,OAAP;AAKD;;;gDAE2B;AAC1B,UAAMgF,wBAAwB,KAAKvB,MAAnC;AACAuB,4BAAsB7M,OAAtB,GAAgC,KAAKA,OAArC;AACA6M,4BAAsB7G,aAAtB,GAAsC,KAAKuF,cAA3C;AACA,aAAOsB,qBAAP;AACD;;;0BAEK5P,Q,EAAU6C,O,EAAS;AACvB,UAAI,KAAK0L,MAAT,EAAiB;AACf,YAAI,KAAKtL,UAAL,EAAJ,EAAuB;AACrBjD,mBAAS,KAAKuP,2BAAL,EAAT;AACD,SAFD,MAEO;AACL1M,kBAAQ,KAAK4M,yBAAL,EAAR;AACD;AACF;AACF;;;gCAEW;AACV,UAAI,KAAKtT,OAAL,KAAiB4R,cAArB,EAAqC;AACnC;AACD;AACD,WAAKU,cAAL,GAAsB,KAAtB;AACA,WAAKL,WAAL,CAAiBjF,UAAjB,CAA4B,IAA5B;AACD;;;kCAEa;AACZ,WAAK9F,gBAAL,CAAsB,IAAtB;AACA,WAAK+K,WAAL,CAAiByB,YAAjB,CAA8B,IAA9B;AACD;;;gCAEWnF,O,EAASoB,I,EAAM;AAAA;;AACzB,UAAMgE,oBAAoB,IAAI3J,OAAJ,CAAY,UAACK,OAAD,EAAUJ,MAAV,EAAqB;AACzD,YAAI2J,mBAAJ;AACA,YAAI,OAAK9M,UAAL,EAAJ,EAAuB;AACrB8M,uBAAa5J,QAAQK,OAAR,EAAb;AACD,SAFD,MAEO,IAAI,OAAKwJ,QAAL,EAAJ,EAAqB;AAC1BD,uBAAa5J,QAAQC,MAAR,CAAe,OAAKiI,MAApB,CAAb;AACD,SAFM,MAEA;AACL0B,uBAAa,IAAI5J,OAAJ,CAAY,UAAC8J,GAAD,EAAMC,GAAN,EAAc;AACrC,gBAAM3R,UAAUiD,WAAW,YAAY;AACrC0O,kBAAI,EAAC,QAAQ,CAAT,EAAY,WAAW,SAAvB,EAAJ;AACD,aAFe,EAEb,OAAK9B,WAAL,CAAiBnQ,OAAjB,CAAyBM,OAFZ,CAAhB;AAGA,mBAAKoQ,SAAL,CAAepQ,OAAf,IAA0B;AACxBiI,uBAASyJ,GADe;AAExB7J,sBAAQ8J;AAFgB,aAA1B;AAID,WARY,CAAb;AASD;AACDH,mBAAWtL,IAAX,CACE,YAAM;AACJ,iBAAO,OAAK2J,WAAL,CAAiB5J,KAAjB,CAAuBkG,OAAvB,EAAgCjG,IAAhC,CACL,sBAAc;AACZ+B,oBAAQ,OAAK4H,WAAL,CAAiBlS,QAAjB,CAA0ByI,mBAA1B,CAA8CmH,IAA9C,EAAoDjH,WAAWC,MAA/D,CAAR;AACA,gBAAID,WAAWE,IAAf,EAAqB;AACnBF,yBAAWE,IAAX;AACD;AACF,WANI,EAOL,qBAAa;AACXqB,mBAAOnB,UAAU5J,KAAjB;AACA,gBAAI4J,UAAUF,IAAd,EAAoB;AAClBE,wBAAUF,IAAV;AACD;AACF,WAZI,CAAP;AAcD,SAhBH,EAiBE,iBAAS;AACPqB,iBAAO/K,KAAP;AACD,SAnBH;AAqBD,OAtCyB,CAA1B;AAuCA,aAAOyU,iBAAP;AACD;;;4BAEO1U,I,EAAM;AACZ,aAAO,KAAK+U,WAAL,CAAiB;AACtBnK,gBAAQ,KAAKoI,WAAL,CAAiBrS,WAAjB,CAA6B0K,OADf;AAEtB3G,gBAAQ;AACNiD,mBAAS,KAAKA,OADR;AAEN3H,gBAAMA;AAFA;AAFc,OAAjB,EAMJ,KAAKgT,WAAL,CAAiBrS,WAAjB,CAA6B0K,OANzB,CAAP;AAOD;;;+BAEU;AACT,aAAO,KAAK0J,WAAL,CAAiB;AACtBnK,gBAAQ,KAAKoI,WAAL,CAAiBrS,WAAjB,CAA6BqU,QADf;AAEtBtQ,gBAAQ;AACNiD,mBAAS,KAAKA;AADR;AAFc,OAAjB,EAKJ,KAAKqL,WAAL,CAAiBrS,WAAjB,CAA6BqU,QALzB,CAAP;AAMD;;;oCAEe;AACd,aAAO,KAAKD,WAAL,CAAiB;AACtBnK,gBAAQ,KAAKoI,WAAL,CAAiBrS,WAAjB,CAA6BsU,cADf;AAEtBvQ,gBAAQ;AACNiD,mBAAS,KAAKA;AADR;AAFc,OAAjB,EAKJ,KAAKqL,WAAL,CAAiBrS,WAAjB,CAA6BsU,cALzB,CAAP;AAMD;;;8BAES;AACR,aAAO,KAAKF,WAAL,CAAiB;AACtBnK,gBAAQ,KAAKoI,WAAL,CAAiBrS,WAAjB,CAA6BuU,OADf;AAEtBxQ,gBAAQ;AACNiD,mBAAS,KAAKA;AADR;AAFc,OAAjB,EAKJ,KAAKqL,WAAL,CAAiBrS,WAAjB,CAA6BuU,OALzB,CAAP;AAMD;;;;;;kBApRkBpC,Y;;;;;;;;;;;;;;;;;;ACZd,IAAMqC,0CAAiB;AAC5B3L,WAAS,CADmB;AAE5BqE,aAAW,CAFiB;AAG5Bc,eAAa,CAHe;AAI5BtD,WAAS,CAJmB;AAK5B2J,YAAU,CALkB;AAM5BC,kBAAgB,CANY;AAO5BC,WAAS,CAPmB;AAQ5BzD,QAAM,CARsB;AAS5BxG,QAAM,CATsB;AAU5BJ,OAAK,CAVuB;AAW5B4B,WAAS,EAXmB;AAY5BY,eAAa;AAZe,CAAvB;;AAeA,IAAM+H,sCAAe;AAC1BzE,eAAa,CADa;AAE1BI,QAAM,CAFoB;AAG1BE,SAAO,CAHmB;AAI1BE,SAAO,CAJmB;AAK1BN,WAAS;AALiB,CAArB;;IAQMwE,W,WAAAA,W;;;;;;;mCACI/M,Q,EAAU;AACvB,UAAMgN,kBAAkB,EAAxB;AACA,WAAK,IAAMlQ,CAAX,IAAgBkD,QAAhB,EAA0B;AACxB,YAAIA,SAASjD,cAAT,CAAwBD,CAAxB,CAAJ,EAAgC;AAC9BkQ,0BAAgB9E,IAAhB,CAAqBzL,KAAKC,SAAL,CAAesD,SAASlD,CAAT,CAAf,CAArB;AACD;AACF;AACD,aAAOkQ,gBAAgBrF,IAAhB,CAAqB,IAArB,CAAP;AACD;;;;;;IAGUsF,W,WAAAA,W;;;;;;;kCACGvV,I,EAAM;AAClB,UAAMsL,UAAU,EAAhB;AACA,UAAMkK,iBAAiBxV,KAAKyV,KAAL,CAAW,IAAX,CAAvB;AACA,WAAK,IAAMrQ,CAAX,IAAgBoQ,cAAhB,EAAgC;AAC9B,YAAIA,eAAenQ,cAAf,CAA8BD,CAA9B,CAAJ,EAAsC;AACpC,cAAI,CAACoQ,eAAepQ,CAAf,CAAL,EAAwB;AACtB;AACD;AACD,cAAM4K,QAAQjL,KAAKiB,KAAL,CAAWwP,eAAepQ,CAAf,CAAX,CAAd;AACAkG,kBAAQkF,IAAR,CAAaR,KAAb;AACD;AACF;AACD,aAAO1E,OAAP;AACD;;;wCAEmBoK,U,EAAY1V,I,EAAM;AACpC,aAAOA,IAAP;AACD;;;+BAEUA,I,EAAM;AACf,aAAOA,IAAP;AACD;;;mCAEc2V,Q,EAAU3V,I,EAAM;AAC7B,aAAOA,IAAP;AACD;;;;;;;;;;;AC7DH;AACA;;AAEA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,gCAAgC;AAC3C,WAAW,OAAO;AAClB,WAAW,EAAE;AACb;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,mBAAmB;AACnB;;AAEA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,oBAAoB,IAAI,mBAAmB,0CAA0C;AAClG;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,WAAW;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,gCAAgC;AAC3C,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,mBAAmB;AAC9B,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;;AAEA;AACA;AACA,WAAW,mBAAmB;AAC9B,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA,WAAW,mBAAmB;AAC9B,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,yBAAyB,KAAK,2BAA2B;AACrE,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;AC1cA;AACA;;AAEA;;AAEA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,oBAAoB,IAAI,mBAAmB,uCAAuC;AAC/F,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA,2BAA2B;AAC3B;AACA,iEAAiE;AACjE,iEAAiE;AACjE,iEAAiE;AACjE,iEAAiE;AACjE,iEAAiE;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC;AAClC,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;;AAEA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;;AAEA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;;AAEA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA,KAAK;AACL;;;;;;;;ACtZA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,2BAA2B;AACtC,WAAW,kBAAkB;AAC7B,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,kCAAkC;;AAElC;AACA;AACA,cAAc;AACd;AACA;AACA,0BAA0B;;AAE1B;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,eAAe;AAC7B,cAAc,kBAAkB;AAChC;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB,YAAY,UAAU;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,uBAAuB,8BAA8B;AACrD;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,6BAA6B;AACvD;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,cAAc;AACpD;AACA,UAAU;AACV,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;;AAEA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;;;;;;AC1MA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA,uDAAuD,iBAAiB;AACxE;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,oBAAoB;AAC/B,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,oBAAoB;AAC/B,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,EAAE;AACb,WAAW,mBAAmB;AAC9B,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;;AAEA,6B;;;;;;;AC1IA;AACA;;AAEA;AACA,wBAAwB,qBAAqB;AAC7C;AACA,UAAU;AACV,WAAW,WAAW;AACtB,WAAW,KAAK;AAChB,aAAa;AACb;;AAEA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B,WAAW,EAAE;AACb,WAAW,KAAK;AAChB,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;;;;;;;ACnDA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA,KAAK,aAAa;AAClB;AACA;;;;;;;;AChBA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC,qBAAqB;AACtD;AACA,UAAU;AACV,WAAW,mCAAmC,YAAY,GAAG;AAC7D,WAAW,WAAW;AACtB,WAAW,gBAAgB;AAC3B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA,mCAAmC,cAAc;AACjD;AACA,UAAU;AACV,WAAW,WAAW;AACtB,WAAW,gBAAgB;AAC3B,aAAa;AACb;;AAEA;;;;;;;;ACnCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC,yCAAyC,YAAY,KAAK;AAC1D;AACA;AACA,8FAA8F;AAC9F;AACA;AACA;AACA,WAAW;AACX,OAAO;;AAEP;AACA,SAAS,2BAA2B;AACpC,8BAA8B,aAAa;;AAE3C;AACA,mEAAmE;;AAEnE;AACA,sBAAsB,YAAY;AAClC;AACA;;AAEA;AACA,aAAa,OAAO;;AAEpB,sBAAsB,YAAY;AAClC;AACA;AACA;AACA;;AAEA,aAAa;AACb,OAAO;;AAEP;AACA,SAAS;AACT;AACA,4DAA4D;;AAE5D;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,C;;;;;;;ACnGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,kBAAkB;AAC7B;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,qBAAqB;;AAErB;AACA;AACA,cAAc;AACd;AACA,4BAA4B;;AAE5B;AACA;AACA,cAAc;AACd;AACA,gCAAgC;;AAEhC;AACA;AACA,cAAc;AACd;AACA,8BAA8B;;AAE9B;AACA;AACA,cAAc;AACd;AACA,2BAA2B;;AAE3B;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc,cAAc;AAC5B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6DAA6D,kBAAkB;AAC/E;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,gGAAgG,cAAc,2GAA2G,cAAc;AACvO;AACA,cAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,kBAAkB,+CAA+C;AACjE,+CAA+C;;AAE/C;AACA;AACA,uBAAuB,+CAA+C;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,WAAW,KAAK;AAChB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,0BAA0B,8BAA8B;AACxD;AACA,uBAAuB;AACvB;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,uBAAuB;AACrC,cAAc,uBAAuB;AACrC,cAAc,WAAW;AACzB,cAAc,WAAW;AACzB,cAAc,QAAQ;AACtB;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,kBAAkB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,kBAAkB;AACvE;AACA;AACA,qDAAqD,kBAAkB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF,4BAA4B,EAAE,uBAAuB;AACzI;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iBAAiB;AAC5B,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iBAAiB;AAC5B,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,UAAU,EAAE;AACzB;AACA;AACA;AACA;;AAEA;AACA,YAAY,yBAAyB,GAAG,yBAAyB,MAAM,yBAAyB;AAChG,aAAa,KAAK;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,+CAA+C;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wDAAwD,yBAAyB;AACjF,WAAW,UAAU,oBAAoB;AACzC,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA,gDAAgD;AAChD;;AAEA;AACA,iGAAiG,yBAAyB;AAC1H,WAAW,UAAU,oBAAoB;AACzC,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,WAAW,OAAO;AAClB,aAAa,UAAU,EAAE;AACzB,YAAY,MAAM;AAClB,YAAY,qBAAqB,EAAE;AACnC;AACA;AACA,+CAA+C;AAC/C;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,UAAU,EAAE;AACzB,YAAY,MAAM;AAClB,YAAY,mBAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,YAAY;AACzB;AACA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,UAAU,EAAE;AACzB;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,oBAAoB,MAAM,uBAAuB;AACnF;AACA,cAAc,SAAS;AACvB;AACA,wFAAwF,WAAW;AACnG,cAAc,SAAS;AACvB;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB;;AAEA;AACA;AACA,WAAW,UAAU,EAAE;AACvB,WAAW,mBAAmB;AAC9B,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,aAAa;AACnD;AACA,UAAU;AACV,WAAW,eAAe;AAC1B,aAAa;AACb;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5kBA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,kBAAkB;AAC7B,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,2BAA2B;;AAE3B;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,cAAc,OAAO;AACrB;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,aAAa,SAAS;AACtB,YAAY,UAAU;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,8GAA8G;AACzH,WAAW,4JAA4J,EAAE;AACzK,aAAa,eAAe;AAC5B,wBAAwB,8FAA8F;AACtH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;AC7HA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,kBAAkB;AAC7B,YAAY,UAAU;AACtB;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,sBAAsB;;AAEtB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,wBAAwB;AACtC;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA,0DAA0D,kBAAkB;AAC5E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,4GAA4G;AAC5G;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,YAAY;AACzB;AACA;AACA;AACA,2BAA2B,gDAAgD;AAC3E;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;;;;;;ACtKA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,iBAAiB;AAC5B,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,0BAA0B;AACrC,WAAW,0BAA0B;AACrC,WAAW,kBAAkB;AAC7B,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA,8BAA8B;;AAE9B;AACA;AACA,cAAc;AACd;AACA,mCAAmC;;AAEnC;AACA;AACA,cAAc;AACd;AACA,0DAA0D;;AAE1D;AACA;AACA,cAAc;AACd;AACA,qCAAqC;;AAErC;AACA;AACA,cAAc;AACd;AACA,4DAA4D;;AAE5D;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,kBAAkB;AAChC;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;ACtJA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,sGAAsG,kBAAkB,EAAE;AAC1H,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,wBAAwB;;AAExB;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA,oDAAoD;AACpD;;AAEA;AACA,wBAAwB;AACxB;AACA;AACA,2BAA2B;AAC3B;AACA,4BAA4B;AAC5B;AACA;AACA,0GAA0G;AAC1G;AACA;AACA,aAAa;AACb;AACA,iEAAiE;AACjE;AACA;AACA;;AAEA;AACA,SAAS,2BAA2B;;AAEpC;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,WAAW;AACX,OAAO;;AAEP;AACA,eAAe,+BAA+B;AAC9C;AACA;AACA;AACA,uCAAuC,WAAW;AAClD;;AAEA;AACA;AACA;AACA;;;;;;;;ACzGA;AACA;;AAEA;AACA;;AAEA;AACA,kIAAkI,oBAAoB;AACtJ;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,yBAAyB;AACzB;AACA;AACA,0EAA0E,iBAAiB;AAC3F;AACA;AACA;AACA,eAAe;AACf,SAAS;AACT;AACA,eAAe;AACf,6CAA6C;AAC7C;AACA;AACA,eAAe;AACf;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,mBAAmB,gDAAgD;AACnE;AACA;;AAEA;AACA,6CAA6C,oBAAoB;;AAEjE;AACA,wBAAwB;AACxB;AACA;AACA;AACA,0BAA0B,WAAW,KAAK;AAC1C;AACA;AACA,eAAe;;AAEf;AACA,SAAS,2BAA2B;AACpC;AACA;AACA,0BAA0B,YAAY,KAAK;AAC3C;AACA,eAAe;;AAEf;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,C;;;;;;;AChLA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,0BAA0B;AAC1B,2FAA2F,iBAAiB;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,eAAe;AACf,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;;AAEA;AACA,wBAAwB;AACxB,cAAc;AACd;AACA;AACA,gBAAgB;AAChB,0CAA0C,YAAY,KAAK;AAC3D;AACA,WAAW;AACX,OAAO;;AAEP;AACA,SAAS,2BAA2B;AACpC,cAAc;AACd;AACA;AACA;AACA,sBAAsB,aAAa,KAAK;AACxC;AACA,WAAW;AACX,OAAO;;AAEP;AACA,SAAS;AACT;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA,cAAc;AACd,cAAc;;AAEd;AACA;AACA;AACA;AACA,UAAU,mBAAmB;AAC7B;AACA;AACA;AACA;;AAEA,gCAAgC;AAChC,+BAA+B;AAC/B,mBAAmB,2BAA2B;AAC9C;AACA;AACA,OAAO;AACP;;AAEA,2BAA2B;AAC3B,gCAAgC;AAChC,mBAAmB,sBAAsB;AACzC,gBAAgB;AAChB;AACA,OAAO;AACP;;AAEA,8BAA8B;AAC9B,qBAAqB;AACrB,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,SAAS;AACT,OAAO;AACP;AACA;AACA,eAAe,mBAAmB;AAClC;AACA;AACA;AACA;AACA,0BAA0B,eAAe;AACzC;AACA,aAAa;AACb,6CAA6C;AAC7C,gBAAgB;AAChB,sBAAsB,aAAa,KAAK;AACxC;AACA,WAAW;AACX,SAAS,2BAA2B;AACpC,0BAA0B;AAC1B;AACA,sBAAsB,aAAa,KAAK;AACxC;AACA,WAAW;AACX,SAAS,OAAO;AAChB,0CAA0C,qBAAqB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;;;;;;;AC9RA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;;AAEA;AACA,qCAAqC,eAAe;AACpD;AACA,UAAU;AACV,WAAW,kBAAkB;AAC7B,aAAa,UAAU,EAAE;AACzB;AACA;;AAEA;AACA,mCAAmC,eAAe;AAClD;AACA,UAAU;AACV,WAAW,UAAU,EAAE;AACvB,WAAW,mBAAmB;AAC9B,aAAa,kBAAkB;AAC/B;AACA;;AAEA;AACA,gCAAgC,eAAe;AAC/C;AACA,cAAc,2BAA2B;AACzC,cAAc,yBAAyB;AACvC;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;AClFA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,YAAY;AACzB;AACA;;AAEA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,cAAc;AACzB,WAAW,aAAa;AACxB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2BAA2B;AACrD;AACA;AACA;AACA,+BAA+B,+BAA+B;AAC9D;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,+BAA+B;AAC/B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAA6B,qBAAqB;AAClD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,aAAa;AACxB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,cAAc,uCAAuC,qBAAqB;AACrF,aAAa,cAAc;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,cAAc,uCAAuC,qBAAqB;AACrF,aAAa,KAAK;AAClB,YAAY,MAAM;AAClB;A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AAC3B,WAAW,KAAK;AAChB,aAAa,cAAc;AAC3B,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB,YAAY,MAAM;AAClB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACvGA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;ACnCA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;;AAEA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA,UAAU;AACV,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA,8BAA8B,EAAE,mBAAmB,EAAE,iBAAiB,EAAE;AACxE;;;;;;;;AC1IA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,KAAK;AAChB,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,sBAAsB;AACpC;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;;;;;;;;AC3EA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK,IAAI;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK,IAAI;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa,0CAA0C;AACvD;AACA;AACA,aAAa;AACb;AACA,oDAAoD;AACpD;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9UA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,WAAW;AACX,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxGA;AACA;;AAEA;AACA,4BAA4B,gBAAgB;AAC5C;AACA,UAAU;AACV,WAAW,OAAO;AAClB,aAAa,WAAW;AACxB;;AAEA;AACA,wBAAwB,gBAAgB;AACxC;AACA,UAAU;AACV,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,WAAW;AACxB,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/CA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA,4BAA4B,UAAU;AACtC,4CAA4C,aAAa;AACzD,0BAA0B,UAAU;;AAEpC;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,mBAAmB;AAC9B,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvMA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;;;;;;;;AChFA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;;;;;;;;AC3CA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,yCAAyC,sCAAsC;AAC/E;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA,UAAU;AACV,WAAW,WAAW;AACtB,WAAW,KAAK;AAChB,aAAa;AACb;;AAEA;AACA,+BAA+B,kBAAkB,gBAAgB,qBAAqB;AACtF;AACA;AACA;AACA,UAAU;AACV,WAAW,sBAAsB;AACjC,WAAW,gCAAgC;AAC3C,aAAa,uBAAuB;AACpC;;AAEA;AACA;AACA,6CAA6C,qBAAqB;AAClE;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,mCAAmC,kCAAkC;AACrE,WAAW,oCAAoC;AAC/C,WAAW,kBAAkB;AAC7B,WAAW,kBAAkB;AAC7B,WAAW,sBAAsB;AACjC,WAAW,gCAAgC;AAC3C,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+BAA+B,kCAAkC,EAAE;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,+BAA+B,eAAe,EAAE;AAChD;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7IA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd,eAAe,yBAAyB;AACxC,eAAe,KAAK;AACpB,iBAAiB,iBAAiB;AAClC,gBAAgB,MAAM;AACtB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF;AAClF;AACA,sCAAsC;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA,0IAA0I,gCAAgC;AAC1K;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;;;;;;;AClGA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,mCAAmC,iBAAiB;AACpD;AACA,UAAU;AACV,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;;AAEA;AACA,uBAAuB,iBAAiB;AACxC;AACA,UAAU;AACV,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,cAAc;AACzB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,yDAAyD;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,cAAc;AACzB,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,2BAA2B;AACxC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6BAA6B;AAC5D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;;AAEA;AACA;AACA;;;;;;;;AClHA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA,4BAA4B,GAAG;AAC/B;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChEA,kBAAkB,UAAU,SAAS,UAAU,SAAS,UAAU,QAAQ,uBAAuB,YAAY,yBAAyB,eAAe,UAAU,2JAA2J,YAAY,UAAU,MAAM,uBAAuB,WAAW,2BAA2B,WAAW,wBAAwB,UAAU,UAAU,MAAM,uBAAuB,UAAU,sBAAsB,WAAW,wBAAwB,aAAa,UAAU,0DAA0D,SAAS,UAAU,QAAQ,yBAAyB,YAAY,uBAAuB,SAAS,wBAAwB,eAAe,UAAU,QAAQ,uBAAuB,WAAW,uBAAuB,aAAa,sBAAsB,aAAa,wBAAwB,gBAAgB,UAAU,OAAO,uBAAuB,QAAQ,uBAAuB,QAAQ,uBAAuB,SAAS,sBAAsB,SAAS,6BAA6B,SAAS,UAAU,QAAQ,6BAA6B,UAAU,UAAU,QAAQ,6BAA6B,UAAU,UAAU,eAAe,uBAAuB,YAAY,UAAU,QAAQ,wBAAwB,mBAAmB,UAAU,SAAS,uBAAuB,SAAS,wBAAwB,kBAAkB,UAAU,UAAU,uBAAuB,YAAY,uBAAuB,YAAY,qBAAqB,QAAQ,uBAAuB,SAAS,wBAAwB,mBAAmB,UAAU,SAAS,yBAAyB,kBAAkB,UAAU,UAAU,uBAAuB,YAAY,uBAAuB,YAAY,qBAAqB,QAAQ,yBAAyB,qBAAqB,UAAU,WAAW,uBAAuB,UAAU,uBAAuB,YAAY,qBAAqB,QAAQ,uBAAuB,QAAQ,uBAAuB,UAAU,yBAAyB,oBAAoB,UAAU,WAAW,qBAAqB,QAAQ,uBAAuB,gBAAgB,qBAAqB,QAAQ,uBAAuB,QAAQ,uBAAuB,UAAU,uBAAuB,iBAAiB,8CAA8C,cAAc,uBAAuB,sBAAsB,UAAU,WAAW,uBAAuB,UAAU,yBAAyB,qBAAqB,UAAU,WAAW,qBAAqB,QAAQ,yBAAyB,uBAAuB,UAAU,WAAW,yBAAyB,sBAAsB,YAAY,mBAAmB,UAAU,WAAW,uBAAuB,SAAS,wBAAwB,kBAAkB,YAAY,oBAAoB,UAAU,WAAW,yBAAyB,mBAAmB,UAAU,YAAY,gDAAgD,yBAAyB,UAAU,WAAW,yBAAyB,wBAAwB,UAAU,cAAc,uBAAuB,aAAa,yBAAyB,mBAAmB,UAAU,WAAW,yBAAyB,kBAAkB,UAAU,gBAAgB,gDAAgD,gBAAgB,YAAY,eAAe,YAAY,eAAe,UAAU,QAAQ,wBAAwB,cAAc,UAAU,QAAQ,wBAAwB,gBAAgB,UAAU,QAAQ,4B","file":"centrifuge.protobuf.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Centrifuge\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Centrifuge\"] = factory();\n\telse\n\t\troot[\"Centrifuge\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 32);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 15676cf76596a7b53ff3","\"use strict\";\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = require(\"./util/minimal\");\r\n\r\nvar roots = require(\"./roots\");\r\n\r\nvar Type, // cyclic\r\n Enum;\r\n\r\nutil.codegen = require(\"@protobufjs/codegen\");\r\nutil.fetch = require(\"@protobufjs/fetch\");\r\nutil.path = require(\"@protobufjs/path\");\r\n\r\n/**\r\n * Node's fs module if available.\r\n * @type {Object.}\r\n */\r\nutil.fs = util.inquire(\"fs\");\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (object) {\r\n var keys = Object.keys(object),\r\n array = new Array(keys.length),\r\n index = 0;\r\n while (index < keys.length)\r\n array[index] = object[keys[index++]];\r\n return array;\r\n }\r\n return [];\r\n};\r\n\r\n/**\r\n * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values.\r\n * @param {Array.<*>} array Array to convert\r\n * @returns {Object.} Converted object\r\n */\r\nutil.toObject = function toObject(array) {\r\n var object = {},\r\n index = 0;\r\n while (index < array.length) {\r\n var key = array[index++],\r\n val = array[index++];\r\n if (val !== undefined)\r\n object[key] = val;\r\n }\r\n return object;\r\n};\r\n\r\nvar safePropBackslashRe = /\\\\/g,\r\n safePropQuoteRe = /\"/g;\r\n\r\n/**\r\n * Tests whether the specified name is a reserved word in JS.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nutil.isReserved = function isReserved(name) {\r\n return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test(name);\r\n};\r\n\r\n/**\r\n * Returns a safe property accessor for the specified property name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n if (!/^[$\\w_]+$/.test(prop) || util.isReserved(prop))\r\n return \"[\\\"\" + prop.replace(safePropBackslashRe, \"\\\\\\\\\").replace(safePropQuoteRe, \"\\\\\\\"\") + \"\\\"]\";\r\n return \".\" + prop;\r\n};\r\n\r\n/**\r\n * Converts the first character of a string to upper case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.ucFirst = function ucFirst(str) {\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\nvar camelCaseRe = /_([a-z])/g;\r\n\r\n/**\r\n * Converts a string to camel case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.camelCase = function camelCase(str) {\r\n return str.substring(0, 1)\r\n + str.substring(1)\r\n .replace(camelCaseRe, function($0, $1) { return $1.toUpperCase(); });\r\n};\r\n\r\n/**\r\n * Compares reflected fields by id.\r\n * @param {Field} a First field\r\n * @param {Field} b Second field\r\n * @returns {number} Comparison value\r\n */\r\nutil.compareFieldsById = function compareFieldsById(a, b) {\r\n return a.id - b.id;\r\n};\r\n\r\n/**\r\n * Decorator helper for types (TypeScript).\r\n * @param {Constructor} ctor Constructor function\r\n * @param {string} [typeName] Type name, defaults to the constructor's name\r\n * @returns {Type} Reflected type\r\n * @template T extends Message\r\n * @property {Root} root Decorators root\r\n */\r\nutil.decorateType = function decorateType(ctor, typeName) {\r\n\r\n /* istanbul ignore if */\r\n if (ctor.$type) {\r\n if (typeName && ctor.$type.name !== typeName) {\r\n util.decorateRoot.remove(ctor.$type);\r\n ctor.$type.name = typeName;\r\n util.decorateRoot.add(ctor.$type);\r\n }\r\n return ctor.$type;\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(\"./type\");\r\n\r\n var type = new Type(typeName || ctor.name);\r\n util.decorateRoot.add(type);\r\n type.ctor = ctor; // sets up .encode, .decode etc.\r\n Object.defineProperty(ctor, \"$type\", { value: type, enumerable: false });\r\n Object.defineProperty(ctor.prototype, \"$type\", { value: type, enumerable: false });\r\n return type;\r\n};\r\n\r\nvar decorateEnumIndex = 0;\r\n\r\n/**\r\n * Decorator helper for enums (TypeScript).\r\n * @param {Object} object Enum object\r\n * @returns {Enum} Reflected enum\r\n */\r\nutil.decorateEnum = function decorateEnum(object) {\r\n\r\n /* istanbul ignore if */\r\n if (object.$type)\r\n return object.$type;\r\n\r\n /* istanbul ignore next */\r\n if (!Enum)\r\n Enum = require(\"./enum\");\r\n\r\n var enm = new Enum(\"Enum\" + decorateEnumIndex++, object);\r\n util.decorateRoot.add(enm);\r\n Object.defineProperty(object, \"$type\", { value: enm, enumerable: false });\r\n return enm;\r\n};\r\n\r\n/**\r\n * Decorator root (TypeScript).\r\n * @name util.decorateRoot\r\n * @type {Root}\r\n * @readonly\r\n */\r\nObject.defineProperty(util, \"decorateRoot\", {\r\n get: function() {\r\n return roots[\"decorated\"] || (roots[\"decorated\"] = new (require(\"./root\"))());\r\n }\r\n});\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/util.js\n// module id = 0\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Enum;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Enum.prototype = Object.create(ReflectionObject.prototype)).constructor = Enum).className = \"Enum\";\r\n\r\nvar Namespace = require(\"./namespace\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new enum instance.\r\n * @classdesc Reflected enum.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {Object.} [values] Enum values as an object, by name\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] The comment for this enum\r\n * @param {Object.} [comments] The value comments for this enum\r\n */\r\nfunction Enum(name, values, options, comment, comments) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n if (values && typeof values !== \"object\")\r\n throw TypeError(\"values must be an object\");\r\n\r\n /**\r\n * Enum values by id.\r\n * @type {Object.}\r\n */\r\n this.valuesById = {};\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = Object.create(this.valuesById); // toJSON, marker\r\n\r\n /**\r\n * Enum comment text.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n\r\n /**\r\n * Value comment texts, if any.\r\n * @type {Object.}\r\n */\r\n this.comments = comments || {};\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {Array.}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n // Note that values inherit valuesById on their prototype which makes them a TypeScript-\r\n // compatible enum. This is used by pbts to write actual enum definitions that work for\r\n // static and reflection code alike instead of emitting generic object definitions.\r\n\r\n if (values)\r\n for (var keys = Object.keys(values), i = 0; i < keys.length; ++i)\r\n if (typeof values[keys[i]] === \"number\") // use forward entries only\r\n this.valuesById[ this.values[keys[i]] = values[keys[i]] ] = keys[i];\r\n}\r\n\r\n/**\r\n * Enum descriptor.\r\n * @interface IEnum\r\n * @property {Object.} values Enum values\r\n * @property {Object.} [options] Enum options\r\n */\r\n\r\n/**\r\n * Constructs an enum from an enum descriptor.\r\n * @param {string} name Enum name\r\n * @param {IEnum} json Enum descriptor\r\n * @returns {Enum} Created enum\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nEnum.fromJSON = function fromJSON(name, json) {\r\n var enm = new Enum(name, json.values, json.options, json.comment, json.comments);\r\n enm.reserved = json.reserved;\r\n return enm;\r\n};\r\n\r\n/**\r\n * Converts this enum to an enum descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IEnum} Enum descriptor\r\n */\r\nEnum.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"values\" , this.values,\r\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\r\n \"comment\" , keepComments ? this.comment : undefined,\r\n \"comments\" , keepComments ? this.comments : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds a value to this enum.\r\n * @param {string} name Value name\r\n * @param {number} id Value id\r\n * @param {string} [comment] Comment, if any\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnum.prototype.add = function add(name, id, comment) {\r\n // utilized by the parser but not by .fromJSON\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n if (!util.isInteger(id))\r\n throw TypeError(\"id must be an integer\");\r\n\r\n if (this.values[name] !== undefined)\r\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\r\n\r\n if (this.isReservedId(id))\r\n throw Error(\"id \" + id + \" is reserved in \" + this);\r\n\r\n if (this.isReservedName(name))\r\n throw Error(\"name '\" + name + \"' is reserved in \" + this);\r\n\r\n if (this.valuesById[id] !== undefined) {\r\n if (!(this.options && this.options.allow_alias))\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this.values[name] = id;\r\n } else\r\n this.valuesById[this.values[name] = id] = name;\r\n\r\n this.comments[name] = comment || null;\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnum.prototype.remove = function remove(name) {\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n var val = this.values[name];\r\n if (val == null)\r\n throw Error(\"name '\" + name + \"' does not exist in \" + this);\r\n\r\n delete this.valuesById[val];\r\n delete this.values[name];\r\n delete this.comments[name];\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nEnum.prototype.isReservedId = function isReservedId(id) {\r\n return Namespace.isReservedId(this.reserved, id);\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nEnum.prototype.isReservedName = function isReservedName(name) {\r\n return Namespace.isReservedName(this.reserved, name);\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/enum.js\n// module id = 1\n// module chunks = 0","\"use strict\";\r\nvar util = exports;\r\n\r\n// used to return a Promise where callback is omitted\r\nutil.asPromise = require(\"@protobufjs/aspromise\");\r\n\r\n// converts to / from base64 encoded strings\r\nutil.base64 = require(\"@protobufjs/base64\");\r\n\r\n// base class of rpc.Service\r\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\r\n\r\n// float handling accross browsers\r\nutil.float = require(\"@protobufjs/float\");\r\n\r\n// requires modules optionally and hides the call from bundlers\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\n\r\n// converts to / from utf8 encoded strings\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\n\r\n// provides a node-like buffer pool in the browser\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n// utility to work with the low and high bits of a 64 bit value\r\nutil.LongBits = require(\"./longbits\");\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n * @const\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n * @const\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n * @const\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\r\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nutil.isString = function isString(value) {\r\n return typeof value === \"string\" || value instanceof String;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return value && typeof value === \"object\";\r\n};\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * This is an alias of {@link util.isSet}.\r\n * @function\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isset =\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isSet = function isSet(obj, prop) {\r\n var value = obj[prop];\r\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\r\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\r\n return false;\r\n};\r\n\r\n/**\r\n * Any compatible Buffer instance.\r\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\r\n * @interface Buffer\r\n * @extends Uint8Array\r\n */\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {Constructor}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\r\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\r\n } catch (e) {\r\n /* istanbul ignore next */\r\n return null;\r\n }\r\n})();\r\n\r\n// Internal alias of or polyfull for Buffer.from.\r\nutil._Buffer_from = null;\r\n\r\n// Internal alias of or polyfill for Buffer.allocUnsafe.\r\nutil._Buffer_allocUnsafe = null;\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array|Buffer} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n /* istanbul ignore next */\r\n return typeof sizeOrArray === \"number\"\r\n ? util.Buffer\r\n ? util._Buffer_allocUnsafe(sizeOrArray)\r\n : new util.Array(sizeOrArray)\r\n : util.Buffer\r\n ? util._Buffer_from(sizeOrArray)\r\n : typeof Uint8Array === \"undefined\"\r\n ? sizeOrArray\r\n : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {Constructor}\r\n */\r\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\r\n * @interface Long\r\n * @property {number} low Low bits\r\n * @property {number} high High bits\r\n * @property {boolean} unsigned Whether unsigned or not\r\n */\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {Constructor}\r\n */\r\nutil.Long = /* istanbul ignore next */ global.dcodeIO && /* istanbul ignore next */ global.dcodeIO.Long || util.inquire(\"long\");\r\n\r\n/**\r\n * Regular expression used to verify 2 bit (`bool`) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key2Re = /^true|false|0|1$/;\r\n\r\n/**\r\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\r\n\r\n/**\r\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? util.LongBits.from(value).toHash()\r\n : util.LongBits.zeroHash;\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = util.LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @memberof util\r\n * @param {Object.} dst Destination object\r\n * @param {Object.} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.} Destination object\r\n */\r\nfunction merge(dst, src, ifNotSet) { // used by converters\r\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n return dst;\r\n}\r\n\r\nutil.merge = merge;\r\n\r\n/**\r\n * Converts the first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a custom error constructor.\r\n * @memberof util\r\n * @param {string} name Error name\r\n * @returns {Constructor} Custom error constructor\r\n */\r\nfunction newError(name) {\r\n\r\n function CustomError(message, properties) {\r\n\r\n if (!(this instanceof CustomError))\r\n return new CustomError(message, properties);\r\n\r\n // Error.call(this, message);\r\n // ^ just returns a new error instance because the ctor can be called as a function\r\n\r\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\r\n\r\n /* istanbul ignore next */\r\n if (Error.captureStackTrace) // node\r\n Error.captureStackTrace(this, CustomError);\r\n else\r\n Object.defineProperty(this, \"stack\", { value: (new Error()).stack || \"\" });\r\n\r\n if (properties)\r\n merge(this, properties);\r\n }\r\n\r\n (CustomError.prototype = Object.create(Error.prototype)).constructor = CustomError;\r\n\r\n Object.defineProperty(CustomError.prototype, \"name\", { get: function() { return name; } });\r\n\r\n CustomError.prototype.toString = function toString() {\r\n return this.name + \": \" + this.message;\r\n };\r\n\r\n return CustomError;\r\n}\r\n\r\nutil.newError = newError;\r\n\r\n/**\r\n * Constructs a new protocol error.\r\n * @classdesc Error subclass indicating a protocol specifc error.\r\n * @memberof util\r\n * @extends Error\r\n * @template T extends Message\r\n * @constructor\r\n * @param {string} message Error message\r\n * @param {Object.} [properties] Additional properties\r\n * @example\r\n * try {\r\n * MyMessage.decode(someBuffer); // throws if required fields are missing\r\n * } catch (e) {\r\n * if (e instanceof ProtocolError && e.instance)\r\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\r\n * }\r\n */\r\nutil.ProtocolError = newError(\"ProtocolError\");\r\n\r\n/**\r\n * So far decoded message instance.\r\n * @name util.ProtocolError#instance\r\n * @type {Message}\r\n */\r\n\r\n/**\r\n * A OneOf getter as returned by {@link util.oneOfGetter}.\r\n * @typedef OneOfGetter\r\n * @type {function}\r\n * @returns {string|undefined} Set field name, if any\r\n */\r\n\r\n/**\r\n * Builds a getter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfGetter} Unbound getter\r\n */\r\nutil.oneOfGetter = function getOneOf(fieldNames) {\r\n var fieldMap = {};\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n fieldMap[fieldNames[i]] = 1;\r\n\r\n /**\r\n * @returns {string|undefined} Set field name, if any\r\n * @this Object\r\n * @ignore\r\n */\r\n return function() { // eslint-disable-line consistent-return\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\r\n return keys[i];\r\n };\r\n};\r\n\r\n/**\r\n * A OneOf setter as returned by {@link util.oneOfSetter}.\r\n * @typedef OneOfSetter\r\n * @type {function}\r\n * @param {string|undefined} value Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Builds a setter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfSetter} Unbound setter\r\n */\r\nutil.oneOfSetter = function setOneOf(fieldNames) {\r\n\r\n /**\r\n * @param {string} name Field name\r\n * @returns {undefined}\r\n * @this Object\r\n * @ignore\r\n */\r\n return function(name) {\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n if (fieldNames[i] !== name)\r\n delete this[fieldNames[i]];\r\n };\r\n};\r\n\r\n/**\r\n * Default conversion options used for {@link Message#toJSON} implementations.\r\n *\r\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\r\n *\r\n * - Longs become strings\r\n * - Enums become string keys\r\n * - Bytes become base64 encoded strings\r\n * - (Sub-)Messages become plain objects\r\n * - Maps become plain objects with all string keys\r\n * - Repeated fields become arrays\r\n * - NaN and Infinity for float and double fields become strings\r\n *\r\n * @type {IConversionOptions}\r\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\r\n */\r\nutil.toJSONOptions = {\r\n longs: String,\r\n enums: String,\r\n bytes: String,\r\n json: true\r\n};\r\n\r\nutil._configure = function() {\r\n var Buffer = util.Buffer;\r\n /* istanbul ignore if */\r\n if (!Buffer) {\r\n util._Buffer_from = util._Buffer_allocUnsafe = null;\r\n return;\r\n }\r\n // because node 4.x buffers are incompatible & immutable\r\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\r\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\r\n /* istanbul ignore next */\r\n function Buffer_from(value, encoding) {\r\n return new Buffer(value, encoding);\r\n };\r\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\r\n /* istanbul ignore next */\r\n function Buffer_allocUnsafe(size) {\r\n return new Buffer(size);\r\n };\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/util/minimal.js\n// module id = 2\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 3\n// module chunks = 0 1","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nReflectionObject.className = \"ReflectionObject\";\r\n\r\nvar util = require(\"./util\");\r\n\r\nvar Root; // cyclic\r\n\r\n/**\r\n * Constructs a new reflection object instance.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object.} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n if (options && !util.isObject(options))\r\n throw TypeError(\"options must be an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|undefined}\r\n */\r\n this.options = options; // toJSON\r\n\r\n /**\r\n * Unique name within its namespace.\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Parent namespace.\r\n * @type {Namespace|null}\r\n */\r\n this.parent = null;\r\n\r\n /**\r\n * Whether already resolved or not.\r\n * @type {boolean}\r\n */\r\n this.resolved = false;\r\n\r\n /**\r\n * Comment text, if any.\r\n * @type {string|null}\r\n */\r\n this.comment = null;\r\n\r\n /**\r\n * Defining file name.\r\n * @type {string|null}\r\n */\r\n this.filename = null;\r\n}\r\n\r\nObject.defineProperties(ReflectionObject.prototype, {\r\n\r\n /**\r\n * Reference to the root namespace.\r\n * @name ReflectionObject#root\r\n * @type {Root}\r\n * @readonly\r\n */\r\n root: {\r\n get: function() {\r\n var ptr = this;\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n return ptr;\r\n }\r\n },\r\n\r\n /**\r\n * Full name including leading dot.\r\n * @name ReflectionObject#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: function() {\r\n var path = [ this.name ],\r\n ptr = this.parent;\r\n while (ptr) {\r\n path.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n }\r\n return path.join(\".\");\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Converts this reflection object to its descriptor representation.\r\n * @returns {Object.} Descriptor\r\n * @abstract\r\n */\r\nReflectionObject.prototype.toJSON = /* istanbul ignore next */ function toJSON() {\r\n throw Error(); // not implemented, shouldn't happen\r\n};\r\n\r\n/**\r\n * Called when this object is added to a parent.\r\n * @param {ReflectionObject} parent Parent added to\r\n * @returns {undefined}\r\n */\r\nReflectionObject.prototype.onAdd = function onAdd(parent) {\r\n if (this.parent && this.parent !== parent)\r\n this.parent.remove(this);\r\n this.parent = parent;\r\n this.resolved = false;\r\n var root = parent.root;\r\n if (root instanceof Root)\r\n root._handleAdd(this);\r\n};\r\n\r\n/**\r\n * Called when this object is removed from a parent.\r\n * @param {ReflectionObject} parent Parent removed from\r\n * @returns {undefined}\r\n */\r\nReflectionObject.prototype.onRemove = function onRemove(parent) {\r\n var root = parent.root;\r\n if (root instanceof Root)\r\n root._handleRemove(this);\r\n this.parent = null;\r\n this.resolved = false;\r\n};\r\n\r\n/**\r\n * Resolves this objects type references.\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n if (this.root instanceof Root)\r\n this.resolved = true; // only if part of a root\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\nReflectionObject.prototype.getOption = function getOption(name) {\r\n if (this.options)\r\n return this.options[name];\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Sets an option.\r\n * @param {string} name Option name\r\n * @param {*} value Option value\r\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (!ifNotSet || !this.options || this.options[name] === undefined)\r\n (this.options || (this.options = {}))[name] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets multiple options.\r\n * @param {Object.} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n for (var keys = Object.keys(options), i = 0; i < keys.length; ++i)\r\n this.setOption(keys[i], options[keys[i]], ifNotSet);\r\n return this;\r\n};\r\n\r\n/**\r\n * Converts this instance to its string representation.\r\n * @returns {string} Class name[, space, full name]\r\n */\r\nReflectionObject.prototype.toString = function toString() {\r\n var className = this.constructor.className,\r\n fullName = this.fullName;\r\n if (fullName.length)\r\n return className + \" \" + fullName;\r\n return className;\r\n};\r\n\r\nReflectionObject._configure = function(Root_) {\r\n Root = Root_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/object.js\n// module id = 4\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Field;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Field.prototype = Object.create(ReflectionObject.prototype)).constructor = Field).className = \"Field\";\r\n\r\nvar Enum = require(\"./enum\"),\r\n types = require(\"./types\"),\r\n util = require(\"./util\");\r\n\r\nvar Type; // cyclic\r\n\r\nvar ruleRe = /^required|optional|repeated$/;\r\n\r\n/**\r\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\r\n * @name Field\r\n * @classdesc Reflected message field.\r\n * @extends FieldBase\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string|Object.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n */\r\n\r\n/**\r\n * Constructs a field from a field descriptor.\r\n * @param {string} name Field name\r\n * @param {IField} json Field descriptor\r\n * @returns {Field} Created field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nField.fromJSON = function fromJSON(name, json) {\r\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Not an actual constructor. Use {@link Field} instead.\r\n * @classdesc Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports FieldBase\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string|Object.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction Field(name, id, type, rule, extend, options, comment) {\r\n\r\n if (util.isObject(rule)) {\r\n comment = extend;\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n comment = options;\r\n options = extend;\r\n extend = undefined;\r\n }\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id must be a non-negative integer\");\r\n\r\n if (!util.isString(type))\r\n throw TypeError(\"type must be a string\");\r\n\r\n if (rule !== undefined && !ruleRe.test(rule = rule.toString().toLowerCase()))\r\n throw TypeError(\"rule must be a string rule\");\r\n\r\n if (extend !== undefined && !util.isString(extend))\r\n throw TypeError(\"extend must be a string\");\r\n\r\n /**\r\n * Field rule, if any.\r\n * @type {string|undefined}\r\n */\r\n this.rule = rule && rule !== \"optional\" ? rule : undefined; // toJSON\r\n\r\n /**\r\n * Field type.\r\n * @type {string}\r\n */\r\n this.type = type; // toJSON\r\n\r\n /**\r\n * Unique field id.\r\n * @type {number}\r\n */\r\n this.id = id; // toJSON, marker\r\n\r\n /**\r\n * Extended type if different from parent.\r\n * @type {string|undefined}\r\n */\r\n this.extend = extend || undefined; // toJSON\r\n\r\n /**\r\n * Whether this field is required.\r\n * @type {boolean}\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Whether this field is optional.\r\n * @type {boolean}\r\n */\r\n this.optional = !this.required;\r\n\r\n /**\r\n * Whether this field is repeated.\r\n * @type {boolean}\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Whether this field is a map or not.\r\n * @type {boolean}\r\n */\r\n this.map = false;\r\n\r\n /**\r\n * Message this field belongs to.\r\n * @type {Type|null}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {OneOf|null}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field type's default value.\r\n * @type {*}\r\n */\r\n this.typeDefault = null;\r\n\r\n /**\r\n * The field's default value on prototypes.\r\n * @type {*}\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Whether this field's value should be treated as a long.\r\n * @type {boolean}\r\n */\r\n this.long = util.Long ? types.long[type] !== undefined : /* istanbul ignore next */ false;\r\n\r\n /**\r\n * Whether this field's value is a buffer.\r\n * @type {boolean}\r\n */\r\n this.bytes = type === \"bytes\";\r\n\r\n /**\r\n * Resolved type if not a basic type.\r\n * @type {Type|Enum|null}\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Sister-field within the extended type if a declaring extension field.\r\n * @type {Field|null}\r\n */\r\n this.extensionField = null;\r\n\r\n /**\r\n * Sister-field within the declaring namespace if an extended field.\r\n * @type {Field|null}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {boolean|null}\r\n * @private\r\n */\r\n this._packed = null;\r\n\r\n /**\r\n * Comment for this field.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\nObject.defineProperty(Field.prototype, \"packed\", {\r\n get: function() {\r\n // defaults to packed=true if not explicity set to false\r\n if (this._packed === null)\r\n this._packed = this.getOption(\"packed\") !== false;\r\n return this._packed;\r\n }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nField.prototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\") // clear cached before setting\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Field descriptor.\r\n * @interface IField\r\n * @property {string} [rule=\"optional\"] Field rule\r\n * @property {string} type Field type\r\n * @property {number} id Field id\r\n * @property {Object.} [options] Field options\r\n */\r\n\r\n/**\r\n * Extension field descriptor.\r\n * @interface IExtensionField\r\n * @extends IField\r\n * @property {string} extend Extended type\r\n */\r\n\r\n/**\r\n * Converts this field to a field descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IField} Field descriptor\r\n */\r\nField.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"rule\" , this.rule !== \"optional\" && this.rule || undefined,\r\n \"type\" , this.type,\r\n \"id\" , this.id,\r\n \"extend\" , this.extend,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Resolves this field's type references.\r\n * @returns {Field} `this`\r\n * @throws {Error} If any reference cannot be resolved\r\n */\r\nField.prototype.resolve = function resolve() {\r\n\r\n if (this.resolved)\r\n return this;\r\n\r\n if ((this.typeDefault = types.defaults[this.type]) === undefined) { // if not a basic type, resolve it\r\n this.resolvedType = (this.declaringField ? this.declaringField.parent : this.parent).lookupTypeOrEnum(this.type);\r\n if (this.resolvedType instanceof Type)\r\n this.typeDefault = null;\r\n else // instanceof Enum\r\n this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\r\n }\r\n\r\n // use explicitly set default value if present\r\n if (this.options && this.options[\"default\"] != null) {\r\n this.typeDefault = this.options[\"default\"];\r\n if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\r\n this.typeDefault = this.resolvedType.values[this.typeDefault];\r\n }\r\n\r\n // remove unnecessary options\r\n if (this.options) {\r\n if (this.options.packed === true || this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum))\r\n delete this.options.packed;\r\n if (!Object.keys(this.options).length)\r\n this.options = undefined;\r\n }\r\n\r\n // convert to internal data type if necesssary\r\n if (this.long) {\r\n this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\r\n\r\n /* istanbul ignore else */\r\n if (Object.freeze)\r\n Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n\r\n } else if (this.bytes && typeof this.typeDefault === \"string\") {\r\n var buf;\r\n if (util.base64.test(this.typeDefault))\r\n util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\r\n else\r\n util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\r\n this.typeDefault = buf;\r\n }\r\n\r\n // take special care of maps and repeated fields\r\n if (this.map)\r\n this.defaultValue = util.emptyObject;\r\n else if (this.repeated)\r\n this.defaultValue = util.emptyArray;\r\n else\r\n this.defaultValue = this.typeDefault;\r\n\r\n // ensure proper value on prototype\r\n if (this.parent instanceof Type)\r\n this.parent.ctor.prototype[this.name] = this.defaultValue;\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript).\r\n * @typedef FieldDecorator\r\n * @type {function}\r\n * @param {Object} prototype Target prototype\r\n * @param {string} fieldName Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Field decorator (TypeScript).\r\n * @name Field.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"string\"|\"bool\"|\"bytes\"|Object} fieldType Field type\r\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\r\n * @param {T} [defaultValue] Default value\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[]\r\n */\r\nField.d = function decorateField(fieldId, fieldType, fieldRule, defaultValue) {\r\n\r\n // submessage: decorate the submessage and use its name as the type\r\n if (typeof fieldType === \"function\")\r\n fieldType = util.decorateType(fieldType).name;\r\n\r\n // enum reference: create a reflected copy of the enum and keep reuseing it\r\n else if (fieldType && typeof fieldType === \"object\")\r\n fieldType = util.decorateEnum(fieldType).name;\r\n\r\n return function fieldDecorator(prototype, fieldName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new Field(fieldName, fieldId, fieldType, fieldRule, { \"default\": defaultValue }));\r\n };\r\n};\r\n\r\n/**\r\n * Field decorator (TypeScript).\r\n * @name Field.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {Constructor|string} fieldType Field type\r\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends Message\r\n * @variation 2\r\n */\r\n// like Field.d but without a default value\r\n\r\nField._configure = function configure(Type_) {\r\n Type = Type_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/field.js\n// module id = 5\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/events/events.js\n// module id = 6\n// module chunks = 0 1","export function startsWith(value, prefix) {\n return value.lastIndexOf(prefix, 0) === 0;\n};\n\nexport function isFunction(value) {\n if (value === undefined || value === null) {\n return false;\n }\n return typeof value === 'function';\n};\n\nexport function log(level, args) {\n if (global.console) {\n const logger = global.console[level];\n\n if (isFunction(logger)) {\n logger.apply(global.console, args);\n }\n }\n};\n\nexport function backoff(step, min, max) {\n const jitter = 0.5 * Math.random();\n const interval = Math.min(max, min * Math.pow(2, step + 1));\n\n return Math.floor((1 - jitter) * interval);\n};\n\nexport function errorExists(data) {\n return 'error' in data && data.error !== null;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Namespace.prototype = Object.create(ReflectionObject.prototype)).constructor = Namespace).className = \"Namespace\";\r\n\r\nvar Enum = require(\"./enum\"),\r\n Field = require(\"./field\"),\r\n util = require(\"./util\");\r\n\r\nvar Type, // cyclic\r\n Service; // \"\r\n\r\n/**\r\n * Constructs a new namespace instance.\r\n * @name Namespace\r\n * @classdesc Reflected namespace.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\r\n */\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @memberof Namespace\r\n * @function\r\n * @param {string} name Namespace name\r\n * @param {Object.} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array, toJSONOptions) {\r\n if (!(array && array.length))\r\n return undefined;\r\n var obj = {};\r\n for (var i = 0; i < array.length; ++i)\r\n obj[array[i].name] = array[i].toJSON(toJSONOptions);\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {Array.|undefined} reserved Array of reserved ranges and names\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nNamespace.isReservedId = function isReservedId(reserved, id) {\r\n if (reserved)\r\n for (var i = 0; i < reserved.length; ++i)\r\n if (typeof reserved[i] !== \"string\" && reserved[i][0] <= id && reserved[i][1] >= id)\r\n return true;\r\n return false;\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {Array.|undefined} reserved Array of reserved ranges and names\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nNamespace.isReservedName = function isReservedName(reserved, name) {\r\n if (reserved)\r\n for (var i = 0; i < reserved.length; ++i)\r\n if (reserved[i] === name)\r\n return true;\r\n return false;\r\n};\r\n\r\n/**\r\n * Not an actual constructor. Use {@link Namespace} instead.\r\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports NamespaceBase\r\n * @extends ReflectionObject\r\n * @abstract\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\r\n * @see {@link Namespace}\r\n */\r\nfunction Namespace(name, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Nested objects by name.\r\n * @type {Object.|undefined}\r\n */\r\n this.nested = undefined; // toJSON\r\n\r\n /**\r\n * Cached nested objects as an array.\r\n * @type {ReflectionObject[]|null}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n return namespace;\r\n}\r\n\r\n/**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name NamespaceBase#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(Namespace.prototype, \"nestedArray\", {\r\n get: function() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n});\r\n\r\n/**\r\n * Namespace descriptor.\r\n * @interface INamespace\r\n * @property {Object.} [options] Namespace options\r\n * @property {Object.} [nested] Nested object descriptors\r\n */\r\n\r\n/**\r\n * Any extension field descriptor.\r\n * @typedef AnyExtensionField\r\n * @type {IExtensionField|IExtensionMapField}\r\n */\r\n\r\n/**\r\n * Any nested object descriptor.\r\n * @typedef AnyNestedObject\r\n * @type {IEnum|IType|IService|AnyExtensionField|INamespace}\r\n */\r\n// ^ BEWARE: VSCode hangs forever when using more than 5 types (that's why AnyExtensionField exists in the first place)\r\n\r\n/**\r\n * Converts this namespace to a namespace descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {INamespace} Namespace descriptor\r\n */\r\nNamespace.prototype.toJSON = function toJSON(toJSONOptions) {\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"nested\" , arrayToJSON(this.nestedArray, toJSONOptions)\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds nested objects to this namespace from nested object descriptors.\r\n * @param {Object.} nestedJson Any nested object descriptors\r\n * @returns {Namespace} `this`\r\n */\r\nNamespace.prototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n /* istanbul ignore else */\r\n if (nestedJson) {\r\n for (var names = Object.keys(nestedJson), i = 0, nested; i < names.length; ++i) {\r\n nested = nestedJson[names[i]];\r\n ns.add( // most to least likely\r\n ( nested.fields !== undefined\r\n ? Type.fromJSON\r\n : nested.values !== undefined\r\n ? Enum.fromJSON\r\n : nested.methods !== undefined\r\n ? Service.fromJSON\r\n : nested.id !== undefined\r\n ? Field.fromJSON\r\n : Namespace.fromJSON )(names[i], nested)\r\n );\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets the nested object of the specified name.\r\n * @param {string} name Nested object name\r\n * @returns {ReflectionObject|null} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespace.prototype.get = function get(name) {\r\n return this.nested && this.nested[name]\r\n || null;\r\n};\r\n\r\n/**\r\n * Gets the values of the nested {@link Enum|enum} of the specified name.\r\n * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`.\r\n * @param {string} name Nested enum name\r\n * @returns {Object.} Enum values\r\n * @throws {Error} If there is no such enum\r\n */\r\nNamespace.prototype.getEnum = function getEnum(name) {\r\n if (this.nested && this.nested[name] instanceof Enum)\r\n return this.nested[name].values;\r\n throw Error(\"no such enum: \" + name);\r\n};\r\n\r\n/**\r\n * Adds a nested object to this namespace.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name\r\n */\r\nNamespace.prototype.add = function add(object) {\r\n\r\n if (!(object instanceof Field && object.extend !== undefined || object instanceof Type || object instanceof Enum || object instanceof Service || object instanceof Namespace))\r\n throw TypeError(\"object must be a valid nested object\");\r\n\r\n if (!this.nested)\r\n this.nested = {};\r\n else {\r\n var prev = this.get(object.name);\r\n if (prev) {\r\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\r\n // replace plain namespace but keep existing nested elements and options\r\n var nested = prev.nestedArray;\r\n for (var i = 0; i < nested.length; ++i)\r\n object.add(nested[i]);\r\n this.remove(prev);\r\n if (!this.nested)\r\n this.nested = {};\r\n object.setOptions(prev.options, true);\r\n\r\n } else\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n }\r\n }\r\n this.nested[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this namespace.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this namespace\r\n */\r\nNamespace.prototype.remove = function remove(object) {\r\n\r\n if (!(object instanceof ReflectionObject))\r\n throw TypeError(\"object must be a ReflectionObject\");\r\n if (object.parent !== this)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.nested[object.name];\r\n if (!Object.keys(this.nested).length)\r\n this.nested = undefined;\r\n\r\n object.onRemove(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Defines additial namespaces within this one if not yet existing.\r\n * @param {string|string[]} path Path to create\r\n * @param {*} [json] Nested types to create from JSON\r\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\r\n */\r\nNamespace.prototype.define = function define(path, json) {\r\n\r\n if (util.isString(path))\r\n path = path.split(\".\");\r\n else if (!Array.isArray(path))\r\n throw TypeError(\"illegal path\");\r\n if (path && path.length && path[0] === \"\")\r\n throw Error(\"path must be relative\");\r\n\r\n var ptr = this;\r\n while (path.length > 0) {\r\n var part = path.shift();\r\n if (ptr.nested && ptr.nested[part]) {\r\n ptr = ptr.nested[part];\r\n if (!(ptr instanceof Namespace))\r\n throw Error(\"path conflicts with non-namespace objects\");\r\n } else\r\n ptr.add(ptr = new Namespace(part));\r\n }\r\n if (json)\r\n ptr.addJSON(json);\r\n return ptr;\r\n};\r\n\r\n/**\r\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespace.prototype.resolveAll = function resolveAll() {\r\n var nested = this.nestedArray, i = 0;\r\n while (i < nested.length)\r\n if (nested[i] instanceof Namespace)\r\n nested[i++].resolveAll();\r\n else\r\n nested[i++].resolve();\r\n return this.resolve();\r\n};\r\n\r\n/**\r\n * Recursively looks up the reflection object matching the specified path in the scope of this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {*|Array.<*>} filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc.\r\n * @param {boolean} [parentAlreadyChecked=false] If known, whether the parent has already been checked\r\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\r\n */\r\nNamespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChecked) {\r\n\r\n /* istanbul ignore next */\r\n if (typeof filterTypes === \"boolean\") {\r\n parentAlreadyChecked = filterTypes;\r\n filterTypes = undefined;\r\n } else if (filterTypes && !Array.isArray(filterTypes))\r\n filterTypes = [ filterTypes ];\r\n\r\n if (util.isString(path) && path.length) {\r\n if (path === \".\")\r\n return this.root;\r\n path = path.split(\".\");\r\n } else if (!path.length)\r\n return this;\r\n\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.root.lookup(path.slice(1), filterTypes);\r\n\r\n // Test if the first part matches any nested object, and if so, traverse if path contains more\r\n var found = this.get(path[0]);\r\n if (found) {\r\n if (path.length === 1) {\r\n if (!filterTypes || filterTypes.indexOf(found.constructor) > -1)\r\n return found;\r\n } else if (found instanceof Namespace && (found = found.lookup(path.slice(1), filterTypes, true)))\r\n return found;\r\n\r\n // Otherwise try each nested namespace\r\n } else\r\n for (var i = 0; i < this.nestedArray.length; ++i)\r\n if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i].lookup(path, filterTypes, true)))\r\n return found;\r\n\r\n // If there hasn't been a match, try again at the parent\r\n if (this.parent === null || parentAlreadyChecked)\r\n return null;\r\n return this.parent.lookup(path, filterTypes);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @name NamespaceBase#lookup\r\n * @function\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\r\n * @variation 2\r\n */\r\n// lookup(path: string, [parentAlreadyChecked: boolean])\r\n\r\n/**\r\n * Looks up the {@link Type|type} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Type} Looked up type\r\n * @throws {Error} If `path` does not point to a type\r\n */\r\nNamespace.prototype.lookupType = function lookupType(path) {\r\n var found = this.lookup(path, [ Type ]);\r\n if (!found)\r\n throw Error(\"no such type: \" + path);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Enum} Looked up enum\r\n * @throws {Error} If `path` does not point to an enum\r\n */\r\nNamespace.prototype.lookupEnum = function lookupEnum(path) {\r\n var found = this.lookup(path, [ Enum ]);\r\n if (!found)\r\n throw Error(\"no such Enum '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Type} Looked up type or enum\r\n * @throws {Error} If `path` does not point to a type or enum\r\n */\r\nNamespace.prototype.lookupTypeOrEnum = function lookupTypeOrEnum(path) {\r\n var found = this.lookup(path, [ Type, Enum ]);\r\n if (!found)\r\n throw Error(\"no such Type or Enum '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the {@link Service|service} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Service} Looked up service\r\n * @throws {Error} If `path` does not point to a service\r\n */\r\nNamespace.prototype.lookupService = function lookupService(path) {\r\n var found = this.lookup(path, [ Service ]);\r\n if (!found)\r\n throw Error(\"no such Service '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\nNamespace._configure = function(Type_, Service_) {\r\n Type = Type_;\r\n Service = Service_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/namespace.js\n// module id = 8\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = exports;\r\n\r\nvar util = require(\"./util\");\r\n\r\nvar s = [\r\n \"double\", // 0\r\n \"float\", // 1\r\n \"int32\", // 2\r\n \"uint32\", // 3\r\n \"sint32\", // 4\r\n \"fixed32\", // 5\r\n \"sfixed32\", // 6\r\n \"int64\", // 7\r\n \"uint64\", // 8\r\n \"sint64\", // 9\r\n \"fixed64\", // 10\r\n \"sfixed64\", // 11\r\n \"bool\", // 12\r\n \"string\", // 13\r\n \"bytes\" // 14\r\n];\r\n\r\nfunction bake(values, offset) {\r\n var i = 0, o = {};\r\n offset |= 0;\r\n while (i < values.length) o[s[i + offset]] = values[i++];\r\n return o;\r\n}\r\n\r\n/**\r\n * Basic type wire types.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n * @property {number} bytes=2 Ldelim wire type\r\n */\r\ntypes.basic = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2,\r\n /* bytes */ 2\r\n]);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=0 Double default\r\n * @property {number} float=0 Float default\r\n * @property {number} int32=0 Int32 default\r\n * @property {number} uint32=0 Uint32 default\r\n * @property {number} sint32=0 Sint32 default\r\n * @property {number} fixed32=0 Fixed32 default\r\n * @property {number} sfixed32=0 Sfixed32 default\r\n * @property {number} int64=0 Int64 default\r\n * @property {number} uint64=0 Uint64 default\r\n * @property {number} sint64=0 Sint32 default\r\n * @property {number} fixed64=0 Fixed64 default\r\n * @property {number} sfixed64=0 Sfixed64 default\r\n * @property {boolean} bool=false Bool default\r\n * @property {string} string=\"\" String default\r\n * @property {Array.} bytes=Array(0) Bytes default\r\n * @property {null} message=null Message default\r\n */\r\ntypes.defaults = bake([\r\n /* double */ 0,\r\n /* float */ 0,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 0,\r\n /* sfixed32 */ 0,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 0,\r\n /* sfixed64 */ 0,\r\n /* bool */ false,\r\n /* string */ \"\",\r\n /* bytes */ util.emptyArray,\r\n /* message */ null\r\n]);\r\n\r\n/**\r\n * Basic long type wire types.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n */\r\ntypes.long = bake([\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n */\r\ntypes.mapKey = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n */\r\ntypes.packed = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0\r\n]);\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/types.js\n// module id = 9\n// module chunks = 0","import EventEmitter from 'events';\nimport Subscription from './subscription';\n\nimport {\n JsonEncoder,\n JsonDecoder,\n JsonMethodType,\n JsonPushType\n} from './json';\n\nimport {\n isFunction,\n log,\n startsWith,\n errorExists,\n backoff\n} from './utils';\n\nconst _errorTimeout = 'timeout';\nconst _errorConnectionClosed = 'connection closed';\n\nexport class Centrifuge extends EventEmitter {\n\n constructor(url, options) {\n super();\n this._url = url;\n this._sockjs = null;\n this._isSockjs = false;\n this._binary = false;\n this._methodType = null;\n this._pushType = null;\n this._encoder = null;\n this._decoder = null;\n this._status = 'disconnected';\n this._reconnect = true;\n this._reconnecting = false;\n this._transport = null;\n this._transportName = null;\n this._transportClosed = true;\n this._messageId = 0;\n this._clientID = null;\n this._refreshRequired = false;\n this._subs = {};\n this._lastSeq = {};\n this._lastGen = {};\n this._lastEpoch = {};\n this._messages = [];\n this._isBatching = false;\n this._isSubscribeBatching = false;\n this._privateChannels = {};\n this._numRefreshFailed = 0;\n this._refreshTimeout = null;\n this._pingTimeout = null;\n this._pongTimeout = null;\n this._subRefreshTimeouts = {};\n this._retries = 0;\n this._callbacks = {};\n this._latency = null;\n this._latencyStart = null;\n this._connectData = null;\n this._token = null;\n this._xhrID = 0;\n this._xhrs = {};\n this._config = {\n debug: false,\n sockjs: null,\n promise: null,\n minRetry: 1000,\n maxRetry: 20000,\n timeout: 5000,\n ping: true,\n pingInterval: 25000,\n pongWaitTimeout: 5000,\n privateChannelPrefix: '$',\n onTransportClose: null,\n sockjsServer: null,\n sockjsTransports: [\n 'websocket',\n 'xdr-streaming',\n 'xhr-streaming',\n 'eventsource',\n 'iframe-eventsource',\n 'iframe-htmlfile',\n 'xdr-polling',\n 'xhr-polling',\n 'iframe-xhr-polling',\n 'jsonp-polling'\n ],\n refreshEndpoint: '/centrifuge/refresh',\n refreshHeaders: {},\n refreshParams: {},\n refreshData: {},\n refreshAttempts: null,\n refreshInterval: 1000,\n onRefreshFailed: null,\n onRefresh: null,\n subscribeEndpoint: '/centrifuge/subscribe',\n subscribeHeaders: {},\n subscribeParams: {},\n subRefreshInterval: 1000,\n onPrivateSubscribe: null\n };\n this._configure(options);\n }\n\n setToken(token) {\n this._token = token;\n }\n\n setConnectData(data) {\n this._connectData = data;\n }\n\n _ajax(url, params, headers, data, callback) {\n let query = '';\n this._debug('sending AJAX request to', url, 'with data', JSON.stringify(data));\n\n const xhr = (global.XMLHttpRequest ? new global.XMLHttpRequest() : new global.ActiveXObject('Microsoft.XMLHTTP'));\n\n for (const i in params) {\n if (params.hasOwnProperty(i)) {\n if (query.length > 0) {\n query += '&';\n }\n query += encodeURIComponent(i) + '=' + encodeURIComponent(params[i]);\n }\n }\n if (query.length > 0) {\n query = '?' + query;\n }\n xhr.open('POST', url + query, true);\n if ('withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr.setRequestHeader('Content-Type', 'application/json');\n for (const headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n xhr.setRequestHeader(headerName, headers[headerName]);\n }\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n let data, parsed = false;\n try {\n data = JSON.parse(xhr.responseText);\n parsed = true;\n } catch (e) {\n callback({\n error: 'Invalid JSON. Data was: ' + xhr.responseText,\n status: 200,\n data: null\n });\n }\n if (parsed) { // prevents double execution.\n callback({\n data: data,\n status: 200\n });\n }\n } else {\n this._log('wrong status code in AJAX response', xhr.status);\n callback({\n status: xhr.status,\n data: null\n });\n }\n }\n };\n setTimeout(() => xhr.send(JSON.stringify(data)), 20);\n return xhr;\n };\n\n _log() {\n log('info', arguments);\n };\n\n _debug() {\n if (this._config.debug === true) {\n log('debug', arguments);\n }\n };\n\n _websocketSupported() {\n return !(typeof WebSocket !== 'function' && typeof WebSocket !== 'object');\n };\n\n _setFormat(format) {\n if (this._formatOverride(format)) {\n return;\n }\n if (format === 'protobuf') {\n throw new Error('not implemented by JSON only Centrifuge client – use client with Protobuf');\n }\n this._binary = false;\n this._methodType = JsonMethodType;\n this._pushType = JsonPushType;\n this._encoder = new JsonEncoder();\n this._decoder = new JsonDecoder();\n }\n\n _formatOverride(format) {\n return false;\n }\n\n _configure(configuration) {\n if (!('Promise' in global)) {\n throw new Error('Promise polyfill required');\n }\n\n Object.assign(this._config, configuration || {});\n this._debug('centrifuge config', this._config);\n\n if (!this._url) {\n throw new Error('url required');\n }\n\n if (startsWith(this._url, 'ws') && this._url.indexOf('format=protobuf') > -1) {\n this._setFormat('protobuf');\n } else {\n this._setFormat('json');\n }\n\n if (startsWith(this._url, 'http')) {\n this._debug('client will try to connect to SockJS endpoint');\n if (this._config.sockjs !== null) {\n this._debug('SockJS explicitly provided in options');\n this._sockjs = this._config.sockjs;\n } else {\n if (typeof global.SockJS === 'undefined') {\n throw new Error('SockJS not found, use ws:// in url or include SockJS');\n }\n this._debug('use globally defined SockJS');\n this._sockjs = global.SockJS;\n }\n } else {\n this._debug('client will connect to websocket endpoint');\n }\n };\n\n _setStatus(newStatus) {\n if (this._status !== newStatus) {\n this._debug('Status', this._status, '->', newStatus);\n this._status = newStatus;\n }\n };\n\n _isDisconnected() {\n return this._status === 'disconnected';\n };\n\n _isConnecting() {\n return this._status === 'connecting';\n };\n\n _isConnected() {\n return this._status === 'connected';\n };\n\n _nextMessageId() {\n return ++this._messageId;\n };\n\n _resetRetry() {\n this._debug('reset retries count to 0');\n this._retries = 0;\n };\n\n _getRetryInterval() {\n const interval = backoff(this._retries, this._config.minRetry, this._config.maxRetry);\n\n this._retries += 1;\n return interval;\n };\n\n _abortInflightXHRs() {\n for (const xhrID in this._xhrs) {\n try {\n this._xhrs[xhrID].abort();\n } catch (e) {\n this._debug('error aborting xhr', e);\n }\n delete this._xhrs[xhrID];\n }\n };\n\n _clearConnectedState(reconnect) {\n this._clientID = null;\n this._stopPing();\n\n // fire errbacks of registered outgoing calls.\n for (const id in this._callbacks) {\n if (this._callbacks.hasOwnProperty(id)) {\n const callbacks = this._callbacks[id];\n clearTimeout(callbacks.timeout);\n const errback = callbacks.errback;\n if (!errback) {\n continue;\n }\n errback({error: this._createErrorObject('disconnected')});\n }\n }\n this._callbacks = {};\n\n // fire unsubscribe events\n for (const channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n const sub = this._subs[channel];\n\n if (reconnect) {\n if (sub._isSuccess()) {\n sub._triggerUnsubscribe();\n sub._recover = true;\n }\n sub._setSubscribing();\n } else {\n sub._setUnsubscribed();\n }\n }\n }\n\n this._abortInflightXHRs();\n\n // clear refresh timer\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n // clear sub refresh timers\n for (const channel in this._subRefreshTimeouts) {\n if (this._subRefreshTimeouts.hasOwnProperty(channel) && this._subRefreshTimeouts[channel]) {\n this._clearSubRefreshTimeout(channel);\n }\n }\n this._subRefreshTimeouts = {};\n\n if (!this._reconnect) {\n // completely clear subscriptions\n this._subs = {};\n }\n };\n\n _isTransportOpen() {\n if (this._isSockjs) {\n return this._transport &&\n this._transport.transport &&\n this._transport.transport.readyState === this._transport.transport.OPEN;\n }\n return this._transport && this._transport.readyState === this._transport.OPEN;\n };\n\n _transportSend(commands) {\n if (!commands.length) {\n return true;\n }\n\n if (!this._isTransportOpen()) {\n // resolve pending commands with error if transport is not open\n for (let command in commands) {\n let id = command.id;\n if (!(id in this._callbacks)) {\n continue;\n }\n const callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n const errback = callbacks.errback;\n errback({error: this._createErrorObject(_errorConnectionClosed, 0)});\n }\n return false;\n }\n this._transport.send(this._encoder.encodeCommands(commands));\n return true;\n }\n\n _setupTransport() {\n this._isSockjs = false;\n\n // detect transport to use - SockJS or Websocket\n if (this._sockjs !== null) {\n const sockjsOptions = {\n transports: this._config.sockjsTransports\n };\n\n if (this._config.sockjsServer !== null) {\n sockjsOptions.server = this._config.sockjsServer;\n }\n this._isSockjs = true;\n this._transport = new this._sockjs(this._url, null, sockjsOptions);\n } else {\n if (!this._websocketSupported()) {\n this._debug('No Websocket support and no SockJS configured, can not connect');\n return;\n }\n this._transport = new WebSocket(this._url);\n if (this._binary === true) {\n this._transport.binaryType = 'arraybuffer';\n }\n }\n\n this._transport.onopen = () => {\n this._transportClosed = false;\n\n if (this._isSockjs) {\n this._transportName = 'sockjs-' + this._transport.transport;\n this._transport.onheartbeat = () => this._restartPing();\n } else {\n this._transportName = 'websocket';\n }\n\n // Can omit method here due to zero value.\n const msg = {\n // method: this._methodType.CONNECT\n };\n\n if (this._token || this._connectData) {\n msg.params = {};\n }\n\n if (this._token) {\n msg.params.token = this._token;\n }\n\n if (this._connectData) {\n msg.params.data = this._connectData;\n }\n\n this._latencyStart = new Date();\n this._call(msg).then(resolveCtx => {\n this._connectResponse(this._decoder.decodeCommandResult(this._methodType.CONNECT, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n const err = rejectCtx.error;\n if (err.code === 109) { // token expired.\n this._refreshRequired = true;\n }\n this._disconnect('connect error', true);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n this._transport.onerror = error => {\n this._debug('transport level error', error);\n };\n\n this._transport.onclose = closeEvent => {\n this._transportClosed = true;\n let reason = _errorConnectionClosed;\n let needReconnect = true;\n\n if (closeEvent && 'reason' in closeEvent && closeEvent.reason) {\n try {\n const advice = JSON.parse(closeEvent.reason);\n this._debug('reason is an advice object', advice);\n reason = advice.reason;\n needReconnect = advice.reconnect;\n } catch (e) {\n reason = closeEvent.reason;\n this._debug('reason is a plain string', reason);\n }\n }\n\n // onTransportClose callback should be executed every time transport was closed.\n // This can be helpful to catch failed connection events (because our disconnect\n // event only called once and every future attempts to connect do not fire disconnect\n // event again).\n if (this._config.onTransportClose !== null) {\n this._config.onTransportClose({\n event: closeEvent,\n reason: reason,\n reconnect: needReconnect\n });\n }\n\n this._disconnect(reason, needReconnect);\n\n if (this._reconnect === true) {\n this._reconnecting = true;\n const interval = this._getRetryInterval();\n\n this._debug('reconnect after ' + interval + ' milliseconds');\n setTimeout(() => {\n if (this._reconnect === true) {\n if (this._refreshRequired) {\n this._refresh();\n } else {\n this._connect();\n }\n }\n }, interval);\n }\n };\n\n this._transport.onmessage = event => {\n this._dataReceived(event.data);\n };\n };\n\n rpc(data) {\n const msg = {\n method: this._methodType.RPC,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(resolveCtx => {\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n return this._decoder.decodeCommandResult(this._methodType.RPC, resolveCtx.result);\n }, rejectCtx => {\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n return rejectCtx.error;\n });\n }\n\n send(data) {\n const msg = {\n method: this._methodType.SEND,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n const sent = this._transportSend([msg]); // can send async message to server without id set\n if (!sent) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n };\n return Promise.resolve({});\n }\n\n publish(channel, data) {\n const msg = {\n method: this._methodType.PUBLISH,\n params: {\n channel: channel,\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(result => {\n if (result.next) {\n result.next();\n }\n return {};\n });\n }\n\n _dataReceived(data) {\n const replies = this._decoder.decodeReplies(data);\n // we have to guarantee order of events in replies processing - i.e. start processing\n // next reply only when we finished processing of current one. Without syncing things in\n // this way we could get wrong publication events order as reply promises resolve\n // on next loop tick so for loop continues before we finished emitting all reply events.\n let p = Promise.resolve();\n for (const i in replies) {\n if (replies.hasOwnProperty(i)) {\n p = p.then(() => {\n return this._dispatchReply(replies[i]);\n });\n }\n }\n this._restartPing();\n }\n\n _call(msg) {\n return new Promise((resolve, reject) => {\n const id = this._addMessage(msg);\n this._registerCall(id, resolve, reject);\n });\n }\n\n _connect() {\n if (this.isConnected()) {\n this._debug('connect called when already connected');\n return;\n }\n if (this._status === 'connecting') {\n return;\n }\n\n this._debug('start connecting');\n this._setStatus('connecting');\n this._clientID = null;\n this._reconnect = true;\n this._setupTransport();\n };\n\n _disconnect(reason, shouldReconnect) {\n\n if (this._isDisconnected()) {\n return;\n }\n\n this._debug('disconnected:', reason, shouldReconnect);\n\n const reconnect = shouldReconnect || false;\n\n if (reconnect === false) {\n this._reconnect = false;\n }\n\n this._clearConnectedState(reconnect);\n\n if (!this._isDisconnected()) {\n this._setStatus('disconnected');\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._reconnecting === false) {\n this.emit('disconnect', {\n reason: reason,\n reconnect: reconnect\n });\n }\n }\n\n if (!this._transportClosed) {\n this._transport.close();\n }\n };\n\n _refreshFailed() {\n this._numRefreshFailed = 0;\n if (!this._isDisconnected()) {\n this._disconnect('refresh failed', false);\n }\n if (this._config.onRefreshFailed !== null) {\n this._config.onRefreshFailed();\n }\n };\n\n _refresh() {\n // ask application for new connection token.\n this._debug('refresh token');\n\n if (this._config.refreshAttempts === 0) {\n this._debug('refresh attempts set to 0, do not send refresh request at all');\n this._refreshFailed();\n return;\n }\n\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (this._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n // We don't perform any connection status related actions here as we are\n // relying on server that must close connection eventually.\n if (resp.error) {\n this._debug('error refreshing connection token', resp.error);\n } else {\n this._debug('error refreshing connection token: wrong status code', resp.status);\n }\n this._numRefreshFailed++;\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._config.refreshAttempts !== null && this._numRefreshFailed >= this._config.refreshAttempts) {\n this._refreshFailed();\n return;\n }\n const jitter = Math.round(Math.random() * 1000 * Math.max(this._numRefreshFailed, 20));\n const interval = this._config.refreshInterval + jitter;\n this._refreshTimeout = setTimeout(() => this._refresh(), interval);\n return;\n }\n this._numRefreshFailed = 0;\n this._token = resp.data.token;\n if (!this._token) {\n this._refreshFailed();\n return;\n }\n if (this._isDisconnected() && this._reconnect) {\n this._debug('token refreshed, connect from scratch');\n this._connect();\n } else {\n this._debug('send refreshed token');\n const msg = {\n method: this._methodType.REFRESH,\n params: {\n token: this._token\n }\n };\n this._call(msg).then(resolveCtx => {\n this._refreshResponse(this._decoder.decodeCommandResult(this._methodType.REFRESH, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._refreshError(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n if (this._config.onRefresh !== null) {\n const context = {};\n this._config.onRefresh(context, cb);\n } else {\n const xhr = this._ajax(\n this._config.refreshEndpoint,\n this._config.refreshParams,\n this._config.refreshHeaders,\n this._config.refreshData,\n cb\n );\n this._xhrs[xhrID] = xhr;\n }\n };\n\n _refreshError(err) {\n this._debug('refresh error', err);\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n const interval = this._config.refreshInterval + Math.round(Math.random() * 1000);\n this._refreshTimeout = setTimeout(() => this._refresh(), interval);\n }\n\n _refreshResponse(result) {\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (result.expires) {\n this._clientID = result.client;\n this._refreshTimeout = setTimeout(() => this._refresh(), this._getTTLMilliseconds(result.ttl));\n }\n };\n\n _newXHRID() {\n this._xhrID++;\n return this._xhrID;\n }\n\n _subRefresh(channel) {\n this._debug('refresh subscription token for channel', channel);\n\n if (this._subRefreshTimeouts[channel] !== undefined) {\n this._clearSubRefreshTimeout(channel);\n } else {\n return;\n }\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (resp.error || resp.status !== 200 || this._clientID !== clientID) {\n return;\n }\n let channelsData = {};\n if (resp.data.channels) {\n for (const i in data.channels) {\n const channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n const token = channelsData[channel];\n if (!token) {\n return;\n }\n const msg = {\n method: this._methodType.SUB_REFRESH,\n params: {\n channel: channel,\n token: token\n }\n };\n\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n\n this._call(msg).then(resolveCtx => {\n this._subRefreshResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUB_REFRESH, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subRefreshError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n const data = {\n client: this._clientID,\n channels: [channel]\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n const xhr = this._ajax(\n this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n };\n\n _clearSubRefreshTimeout(channel) {\n if (this._subRefreshTimeouts[channel] !== undefined) {\n clearTimeout(this._subRefreshTimeouts[channel]);\n delete this._subRefreshTimeouts[channel];\n }\n }\n\n _subRefreshError(channel, err) {\n this._debug('subscription refresh error', channel, err);\n this._clearSubRefreshTimeout(channel);\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n const jitter = Math.round(Math.random() * 1000);\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._config.subRefreshInterval + jitter);\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n return;\n }\n\n _subRefreshResponse(channel, result) {\n this._debug('subscription refresh success', channel);\n this._clearSubRefreshTimeout(channel);\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n if (result.expires === true) {\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n return;\n };\n\n _subscribe(sub, isResubscribe) {\n this._debug('subscribing on', sub.channel);\n const channel = sub.channel;\n\n if (!(channel in this._subs)) {\n this._subs[channel] = sub;\n }\n\n if (!this.isConnected()) {\n // subscribe will be called later\n sub._setNew();\n return;\n }\n\n sub._setSubscribing(isResubscribe);\n\n const msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel\n }\n };\n\n // If channel name does not start with privateChannelPrefix - then we\n // can just send subscription message to Centrifuge. If channel name\n // starts with privateChannelPrefix - then this is a private channel\n // and we should ask web application backend for permission first.\n if (startsWith(channel, this._config.privateChannelPrefix)) {\n // private channel.\n if (this._isSubscribeBatching) {\n this._privateChannels[channel] = true;\n } else {\n this.startSubscribeBatching();\n this._subscribe(sub);\n this.stopSubscribeBatching();\n }\n } else {\n const recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n const seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n const gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n const epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n\n this._call(msg).then(resolveCtx => {\n this._subscribeResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUBSCRIBE, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n _unsubscribe(sub) {\n if (this.isConnected()) {\n // No need to unsubscribe in disconnected state - i.e. client already unsubscribed.\n this._addMessage({\n method: this._methodType.UNSUBSCRIBE,\n params: {\n channel: sub.channel\n }\n });\n }\n };\n\n _getTTLMilliseconds(ttl) {\n // https://stackoverflow.com/questions/12633405/what-is-the-maximum-delay-for-setinterval\n return Math.min(ttl * 1000, 2147483647);\n }\n\n getSub(channel) {\n return this._getSub(channel);\n }\n\n _getSub(channel) {\n const sub = this._subs[channel];\n if (!sub) {\n return null;\n }\n return sub;\n };\n\n _connectResponse(result) {\n const wasReconnecting = this._reconnecting;\n this._reconnecting = false;\n this._resetRetry();\n this._refreshRequired = false;\n\n if (this.isConnected()) {\n return;\n }\n\n if (this._latencyStart !== null) {\n this._latency = (new Date()).getTime() - this._latencyStart.getTime();\n this._latencyStart = null;\n }\n\n this._clientID = result.client;\n this._setStatus('connected');\n\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n }\n\n if (result.expires) {\n this._refreshTimeout = setTimeout(() => this._refresh(), this._getTTLMilliseconds(result.ttl));\n }\n\n this.startBatching();\n this.startSubscribeBatching();\n for (const channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n const sub = this._subs[channel];\n if (sub._shouldResubscribe()) {\n this._subscribe(sub, wasReconnecting);\n }\n }\n }\n this.stopSubscribeBatching();\n this.stopBatching();\n\n this._startPing();\n\n const ctx = {\n client: result.client,\n transport: this._transportName,\n latency: this._latency\n };\n if (result.data) {\n ctx.data = result.data;\n }\n\n this.emit('connect', ctx);\n };\n\n _stopPing() {\n if (this._pongTimeout !== null) {\n clearTimeout(this._pongTimeout);\n this._pongTimeout = null;\n }\n if (this._pingTimeout !== null) {\n clearTimeout(this._pingTimeout);\n this._pingTimeout = null;\n }\n };\n\n _startPing() {\n if (this._config.ping !== true || this._config.pingInterval <= 0) {\n return;\n }\n if (!this.isConnected()) {\n return;\n }\n\n this._pingTimeout = setTimeout(() => {\n if (!this.isConnected()) {\n this._stopPing();\n return;\n }\n this.ping();\n this._pongTimeout = setTimeout(() => {\n this._disconnect('no ping', true);\n }, this._config.pongWaitTimeout);\n }, this._config.pingInterval);\n };\n\n _restartPing() {\n this._stopPing();\n this._startPing();\n };\n\n _subscribeError(channel, error) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n if (error.code === 0 && error.message === _errorTimeout) { // client side timeout.\n this._disconnect('timeout', true);\n return;\n }\n sub._setSubscribeError(error);\n };\n\n _subscribeResponse(channel, result) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n\n let recovered = false;\n if ('recovered' in result) {\n recovered = result.recovered;\n }\n sub._setSubscribeSuccess(recovered);\n\n let pubs = result.publications;\n\n if (pubs && pubs.length > 0) {\n // handle missed pubs.\n pubs = pubs.reverse();\n for (let i in pubs) {\n if (pubs.hasOwnProperty(i)) {\n this._handlePublication(channel, pubs[i]);\n }\n }\n } else {\n if (result.recoverable) {\n this._lastSeq[channel] = result.seq || 0;\n this._lastGen[channel] = result.gen || 0;\n }\n }\n\n this._lastEpoch[channel] = result.epoch || '';\n\n if (result.recoverable) {\n sub._recoverable = true;\n }\n\n if (result.expires === true) {\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n };\n\n _handleReply(reply, next) {\n const id = reply.id;\n const result = reply.result;\n\n if (!(id in this._callbacks)) {\n next();\n return;\n }\n const callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n\n if (!errorExists(reply)) {\n const callback = callbacks.callback;\n if (!callback) {\n return;\n }\n callback({result, next});\n } else {\n const errback = callbacks.errback;\n if (!errback) {\n next();\n return;\n }\n const error = reply.error;\n errback({error, next});\n }\n }\n\n _handleJoin(channel, join) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('join', join);\n };\n\n _handleLeave(channel, leave) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('leave', leave);\n };\n\n _handleUnsub(channel, unsub) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.unsubscribe();\n if (unsub.resubscribe === true) {\n sub.subscribe();\n }\n };\n\n _handlePublication(channel, pub) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (pub.seq !== undefined) {\n this._lastSeq[channel] = pub.seq;\n }\n if (pub.gen !== undefined) {\n this._lastGen[channel] = pub.gen;\n }\n sub.emit('publish', pub);\n };\n\n _handleMessage(message) {\n this.emit('message', message.data);\n };\n\n _handlePush(data, next) {\n const push = this._decoder.decodePush(data);\n let type = 0;\n if ('type' in push) {\n type = push['type'];\n }\n const channel = push.channel;\n\n if (type === this._pushType.PUBLICATION) {\n const pub = this._decoder.decodePushData(this._pushType.PUBLICATION, push.data);\n this._handlePublication(channel, pub);\n } else if (type === this._pushType.MESSAGE) {\n const message = this._decoder.decodePushData(this._pushType.MESSAGE, push.data);\n this._handleMessage(message);\n } else if (type === this._pushType.JOIN) {\n const join = this._decoder.decodePushData(this._pushType.JOIN, push.data);\n this._handleJoin(channel, join);\n } else if (type === this._pushType.LEAVE) {\n const leave = this._decoder.decodePushData(this._pushType.LEAVE, push.data);\n this._handleLeave(channel, leave);\n } else if (type === this._pushType.UNSUB) {\n const unsub = this._decoder.decodePushData(this._pushType.UNSUB, push.data);\n this._handleUnsub(channel, unsub);\n }\n next();\n }\n\n _dispatchReply(reply) {\n var next;\n const p = new Promise(resolve =>{\n next = resolve;\n });\n\n if (reply === undefined || reply === null) {\n this._debug('dispatch: got undefined or null reply');\n next();\n return p;\n }\n\n const id = reply.id;\n\n if (id && id > 0) {\n this._handleReply(reply, next);\n } else {\n this._handlePush(reply.result, next);\n }\n\n return p;\n };\n\n _flush() {\n const messages = this._messages.slice(0);\n this._messages = [];\n this._transportSend(messages);\n };\n\n _ping() {\n const msg = {\n method: this._methodType.PING\n };\n this._call(msg).then(resolveCtx => {\n this._pingResponse(this._decoder.decodeCommandResult(this._methodType.PING, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._debug('ping error', rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n _pingResponse(result) {\n if (!this.isConnected()) {\n return;\n }\n this._stopPing();\n this._startPing();\n }\n\n _getLastSeq(channel) {\n const lastSeq = this._lastSeq[channel];\n if (lastSeq) {\n return lastSeq;\n }\n return 0;\n };\n\n _getLastGen(channel) {\n const lastGen = this._lastGen[channel];\n if (lastGen) {\n return lastGen;\n }\n return 0;\n };\n\n _getLastEpoch(channel) {\n const lastEpoch = this._lastEpoch[channel];\n if (lastEpoch) {\n return lastEpoch;\n }\n return '';\n };\n\n _createErrorObject(message, code) {\n const errObject = {\n message: message,\n code: code || 0\n };\n\n return errObject;\n };\n\n _registerCall(id, callback, errback) {\n this._callbacks[id] = {\n callback: callback,\n errback: errback,\n timeout: null\n };\n this._callbacks[id].timeout = setTimeout(() => {\n delete this._callbacks[id];\n if (isFunction(errback)) {\n errback({error: this._createErrorObject(_errorTimeout)});\n }\n }, this._config.timeout);\n };\n\n _addMessage(message) {\n let id = this._nextMessageId();\n message.id = id;\n if (this._isBatching === true) {\n this._messages.push(message);\n } else {\n this._transportSend([message]);\n }\n return id;\n };\n\n isConnected() {\n return this._isConnected();\n }\n\n connect() {\n this._connect();\n };\n\n disconnect() {\n this._disconnect('client', false);\n };\n\n ping() {\n return this._ping();\n }\n\n startBatching() {\n // start collecting messages without sending them to Centrifuge until flush\n // method called\n this._isBatching = true;\n };\n\n stopBatching() {\n this._isBatching = false;\n this._flush();\n };\n\n startSubscribeBatching() {\n // start collecting private channels to create bulk authentication\n // request to subscribeEndpoint when stopSubscribeBatching will be called\n this._isSubscribeBatching = true;\n };\n\n stopSubscribeBatching() {\n // create request to subscribeEndpoint with collected private channels\n // to ask if this client can subscribe on each channel\n this._isSubscribeBatching = false;\n const authChannels = this._privateChannels;\n this._privateChannels = {};\n\n const channels = [];\n\n for (const channel in authChannels) {\n if (authChannels.hasOwnProperty(channel)) {\n const sub = this._getSub(channel);\n if (!sub) {\n continue;\n }\n channels.push(channel);\n }\n }\n\n if (channels.length === 0) {\n this._debug('no private channels found, no need to make request');\n return;\n }\n\n const data = {\n client: this._clientID,\n channels: channels\n };\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (this._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n this._debug('authorization request failed');\n for (const i in channels) {\n if (channels.hasOwnProperty(i)) {\n const channel = channels[i];\n this._subscribeError(channel, this._createErrorObject('authorization request failed'));\n }\n }\n return;\n }\n\n let channelsData = {};\n if (resp.data.channels) {\n for (const i in resp.data.channels) {\n const channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n // try to send all subscriptions in one request.\n let batch = false;\n\n if (!this._isBatching) {\n this.startBatching();\n batch = true;\n }\n\n for (const i in channels) {\n if (channels.hasOwnProperty(i)) {\n const channel = channels[i];\n const token = channelsData[channel];\n\n if (!token) {\n // subscription:error\n this._subscribeError(channel, this._createErrorObject('permission denied', 103));\n continue;\n } else {\n const msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel,\n token: token\n }\n };\n\n const sub = this._getSub(channel);\n if (sub === null) {\n continue;\n }\n\n const recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n const seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n const gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n const epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n this._call(msg).then(resolveCtx => {\n this._subscribeResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUBSCRIBE, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }\n }\n\n if (batch) {\n this.stopBatching();\n }\n\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n const xhr = this._ajax(\n this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n };\n\n subscribe(channel, events) {\n const currentSub = this._getSub(channel);\n if (currentSub !== null) {\n currentSub._setEvents(events);\n if (currentSub._isUnsubscribed()) {\n currentSub.subscribe();\n }\n return currentSub;\n }\n const sub = new Subscription(this, channel, events);\n this._subs[channel] = sub;\n sub.subscribe();\n return sub;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/centrifuge.js","import EventEmitter from 'events';\n\nimport {\n isFunction\n} from './utils';\n\nconst _STATE_NEW = 0;\nconst _STATE_SUBSCRIBING = 1;\nconst _STATE_SUCCESS = 2;\nconst _STATE_ERROR = 3;\nconst _STATE_UNSUBSCRIBED = 4;\n\nexport default class Subscription extends EventEmitter {\n constructor(centrifuge, channel, events) {\n super();\n this.channel = channel;\n this._centrifuge = centrifuge;\n this._status = _STATE_NEW;\n this._error = null;\n this._isResubscribe = false;\n this._ready = false;\n this._subscriptionPromise = null;\n this._noResubscribe = false;\n this._recoverable = false;\n this._recover = false;\n this._setEvents(events);\n this._initializePromise();\n this._promises = {};\n this.on('error', function (errContext) {\n this._centrifuge._debug('subscription error', errContext);\n });\n }\n\n _initializePromise() {\n // this helps us to wait until subscription will successfully\n // subscribe and call actions such as presence, history etc in\n // synchronous way.\n this._ready = false;\n\n this._subscriptionPromise = new Promise((resolve, reject) => {\n this._resolve = value => {\n this._ready = true;\n resolve(value);\n };\n this._reject = err => {\n this._ready = true;\n reject(err);\n };\n }).then(function () {}, function () {});\n };\n\n _needRecover() {\n return this._recoverable === true && this._recover === true;\n };\n\n _setEvents(events) {\n if (!events) {\n return;\n }\n if (isFunction(events)) {\n // events is just a function to handle publication received from channel.\n this.on('publish', events);\n } else if (Object.prototype.toString.call(events) === Object.prototype.toString.call({})) {\n const knownEvents = ['publish', 'join', 'leave', 'unsubscribe', 'subscribe', 'error'];\n for (let i = 0, l = knownEvents.length; i < l; i++) {\n const ev = knownEvents[i];\n if (ev in events) {\n this.on(ev, events[ev]);\n }\n }\n }\n };\n\n _isNew() {\n return this._status === _STATE_NEW;\n };\n\n _isUnsubscribed() {\n return this._status === _STATE_UNSUBSCRIBED;\n };\n\n _isSubscribing() {\n return this._status === _STATE_SUBSCRIBING;\n };\n\n _isReady() {\n return this._status === _STATE_SUCCESS || this._status === _STATE_ERROR;\n };\n\n _isSuccess() {\n return this._status === _STATE_SUCCESS;\n };\n\n _isError() {\n return this._status === _STATE_ERROR;\n };\n\n _setNew() {\n this._status = _STATE_NEW;\n };\n\n _setSubscribing(isResubscribe) {\n this._isResubscribe = isResubscribe || false;\n if (this._ready === true) {\n // new promise for this subscription\n this._initializePromise();\n }\n this._status = _STATE_SUBSCRIBING;\n };\n\n _setSubscribeSuccess(recovered) {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._status = _STATE_SUCCESS;\n const successContext = this._getSubscribeSuccessContext(recovered);\n\n this._recover = false;\n this.emit('subscribe', successContext);\n this._resolve(successContext);\n for (const to in this._promises) {\n clearTimeout(to);\n this._promises[to].resolve();\n delete this._promises[to];\n }\n };\n\n _setSubscribeError(err) {\n if (this._status === _STATE_ERROR) {\n return;\n }\n this._status = _STATE_ERROR;\n this._error = err;\n const errContext = this._getSubscribeErrorContext();\n this.emit('error', errContext);\n this._reject(errContext);\n for (const to in this._promises) {\n clearTimeout(to);\n this._promises[to].reject(err);\n delete this._promises[to];\n }\n };\n\n _triggerUnsubscribe() {\n this.emit('unsubscribe', {\n channel: this.channel\n });\n };\n\n _setUnsubscribed(noResubscribe) {\n this._centrifuge._clearSubRefreshTimeout(this.channel);\n if (this._status === _STATE_UNSUBSCRIBED) {\n return;\n }\n const needTrigger = this._status === _STATE_SUCCESS;\n this._status = _STATE_UNSUBSCRIBED;\n if (noResubscribe === true) {\n this._recover = false;\n this._noResubscribe = true;\n delete this._centrifuge._lastSeq[this.channel];\n delete this._centrifuge._lastGen[this.channel];\n delete this._centrifuge._lastEpoch[this.channel];\n }\n if (needTrigger) {\n this._triggerUnsubscribe();\n }\n };\n\n _shouldResubscribe() {\n return !this._noResubscribe;\n };\n\n _getSubscribeSuccessContext(recovered) {\n return {\n channel: this.channel,\n isResubscribe: this._isResubscribe,\n recovered: recovered\n };\n };\n\n _getSubscribeErrorContext() {\n const subscribeErrorContext = this._error;\n subscribeErrorContext.channel = this.channel;\n subscribeErrorContext.isResubscribe = this._isResubscribe;\n return subscribeErrorContext;\n };\n\n ready(callback, errback) {\n if (this._ready) {\n if (this._isSuccess()) {\n callback(this._getSubscribeSuccessContext());\n } else {\n errback(this._getSubscribeErrorContext());\n }\n }\n };\n\n subscribe() {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._noResubscribe = false;\n this._centrifuge._subscribe(this);\n };\n\n unsubscribe() {\n this._setUnsubscribed(true);\n this._centrifuge._unsubscribe(this);\n };\n\n _methodCall(message, type) {\n const methodCallPromise = new Promise((resolve, reject) => {\n let subPromise;\n if (this._isSuccess()) {\n subPromise = Promise.resolve();\n } else if (this._isError()) {\n subPromise = Promise.reject(this._error);\n } else {\n subPromise = new Promise((res, rej) => {\n const timeout = setTimeout(function () {\n rej({'code': 0, 'message': 'timeout'});\n }, this._centrifuge._config.timeout);\n this._promises[timeout] = {\n resolve: res,\n reject: rej\n };\n });\n }\n subPromise.then(\n () => {\n return this._centrifuge._call(message).then(\n resolveCtx => {\n resolve(this._centrifuge._decoder.decodeCommandResult(type, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n },\n rejectCtx => {\n reject(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n }\n );\n },\n error => {\n reject(error);\n }\n );\n });\n return methodCallPromise;\n }\n\n publish(data) {\n return this._methodCall({\n method: this._centrifuge._methodType.PUBLISH,\n params: {\n channel: this.channel,\n data: data\n }\n }, this._centrifuge._methodType.PUBLISH);\n };\n\n presence() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE);\n };\n\n presenceStats() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE_STATS,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE_STATS);\n };\n\n history() {\n return this._methodCall({\n method: this._centrifuge._methodType.HISTORY,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.HISTORY);\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/subscription.js","export const JsonMethodType = {\n CONNECT: 0,\n SUBSCRIBE: 1,\n UNSUBSCRIBE: 2,\n PUBLISH: 3,\n PRESENCE: 4,\n PRESENCE_STATS: 5,\n HISTORY: 6,\n PING: 7,\n SEND: 8,\n RPC: 9,\n REFRESH: 10,\n SUB_REFRESH: 11\n};\n\nexport const JsonPushType = {\n PUBLICATION: 0,\n JOIN: 1,\n LEAVE: 2,\n UNSUB: 3,\n MESSAGE: 4\n};\n\nexport class JsonEncoder {\n encodeCommands(commands) {\n const encodedCommands = [];\n for (const i in commands) {\n if (commands.hasOwnProperty(i)) {\n encodedCommands.push(JSON.stringify(commands[i]));\n }\n }\n return encodedCommands.join('\\n');\n }\n}\n\nexport class JsonDecoder {\n decodeReplies(data) {\n const replies = [];\n const encodedReplies = data.split('\\n');\n for (const i in encodedReplies) {\n if (encodedReplies.hasOwnProperty(i)) {\n if (!encodedReplies[i]) {\n continue;\n }\n const reply = JSON.parse(encodedReplies[i]);\n replies.push(reply);\n }\n }\n return replies;\n }\n\n decodeCommandResult(methodType, data) {\n return data;\n }\n\n decodePush(data) {\n return data;\n }\n\n decodePushData(pushType, data) {\n return data;\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/json.js","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar BufferWriter; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n base64 = util.base64,\r\n utf8 = util.utf8;\r\n\r\n/**\r\n * Constructs a new writer operation instance.\r\n * @classdesc Scheduled writer operation.\r\n * @constructor\r\n * @param {function(*, Uint8Array, number)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {*} val Value to write\r\n * @ignore\r\n */\r\nfunction Op(fn, len, val) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(Uint8Array, number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {Writer.Op|undefined}\r\n */\r\n this.next = undefined;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val; // type varies\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state instance.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n\r\n /**\r\n * Next state.\r\n * @type {State|null}\r\n */\r\n this.next = writer.states;\r\n}\r\n\r\n/**\r\n * Constructs a new writer instance.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * Linked forked states.\r\n * @type {Object|null}\r\n */\r\n this.states = null;\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling operations with already prepared values.\r\n}\r\n\r\n/**\r\n * Creates a new writer.\r\n * @function\r\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\r\n */\r\nWriter.create = util.Buffer\r\n ? function create_buffer_setup() {\r\n return (Writer.create = function create_buffer() {\r\n return new BufferWriter();\r\n })();\r\n }\r\n /* istanbul ignore next */\r\n : function create_array() {\r\n return new Writer();\r\n };\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nWriter.alloc = function alloc(size) {\r\n return new util.Array(size);\r\n};\r\n\r\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\r\n/* istanbul ignore else */\r\nif (util.Array !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n * @private\r\n */\r\nWriter.prototype._push = function push(fn, len, val) {\r\n this.tail = this.tail.next = new Op(fn, len, val);\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(val, buf, pos) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\nfunction writeVarint32(val, buf, pos) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Constructs a new varint writer operation instance.\r\n * @classdesc Scheduled varint writer operation.\r\n * @extends Op\r\n * @constructor\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @ignore\r\n */\r\nfunction VarintOp(len, val) {\r\n this.len = len;\r\n this.next = undefined;\r\n this.val = val;\r\n}\r\n\r\nVarintOp.prototype = Object.create(Op.prototype);\r\nVarintOp.prototype.fn = writeVarint32;\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.uint32 = function write_uint32(value) {\r\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\r\n // uint32 is by far the most frequently used operation and benefits significantly from this.\r\n this.len += (this.tail = this.tail.next = new VarintOp(\r\n (value = value >>> 0)\r\n < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5,\r\n value)).len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sint32 = function write_sint32(value) {\r\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\r\n};\r\n\r\nfunction writeVarint64(val, buf, pos) {\r\n while (val.hi) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n while (val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = val.lo >>> 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.int64 = Writer.prototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sint64 = function write_sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bool = function write_bool(value) {\r\n return this._push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fixed32 = function write_fixed32(value) {\r\n return this._push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as fixed 32 bits.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as fixed 64 bits.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.float = function write_float(value) {\r\n return this._push(util.float.writeFloatLE, 4, value);\r\n};\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.double = function write_double(value) {\r\n return this._push(util.float.writeDoubleLE, 8, value);\r\n};\r\n\r\nvar writeBytes = util.Array.prototype.set\r\n ? function writeBytes_set(val, buf, pos) {\r\n buf.set(val, pos); // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytes_for(val, buf, pos) {\r\n for (var i = 0; i < val.length; ++i)\r\n buf[pos + i] = val[i];\r\n };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (!len)\r\n return this._push(writeByte, 1, 0);\r\n if (util.isString(value)) {\r\n var buf = Writer.alloc(len = base64.length(value));\r\n base64.decode(value, buf, 0);\r\n value = buf;\r\n }\r\n return this.uint32(len)._push(writeBytes, len, value);\r\n};\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.string = function write_string(value) {\r\n var len = utf8.length(value);\r\n return len\r\n ? this.uint32(len)._push(utf8.write, len, value)\r\n : this._push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fork = function fork() {\r\n this.states = new State(this);\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.reset = function reset() {\r\n if (this.states) {\r\n this.head = this.states.head;\r\n this.tail = this.states.tail;\r\n this.len = this.states.len;\r\n this.states = this.states.next;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset().uint32(len);\r\n if (len) {\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriter.prototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = this.constructor.alloc(this.len),\r\n pos = 0;\r\n while (head) {\r\n head.fn(head.val, buf, pos);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n // this.head = this.tail = null;\r\n return buf;\r\n};\r\n\r\nWriter._configure = function(BufferWriter_) {\r\n BufferWriter = BufferWriter_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/writer.js\n// module id = 13\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar BufferReader; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n utf8 = util.utf8;\r\n\r\n/* istanbul ignore next */\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader instance using the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n\r\n /**\r\n * Read buffer.\r\n * @type {Uint8Array}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\nvar create_array = typeof Uint8Array !== \"undefined\"\r\n ? function create_typed_array(buffer) {\r\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n if (Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n };\r\n\r\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array|Buffer} buffer Buffer to read from\r\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n * @throws {Error} If `buffer` is not a valid buffer\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n return (Reader.create = function create_buffer(buffer) {\r\n return util.Buffer.isBuffer(buffer)\r\n ? new BufferReader(buffer)\r\n /* istanbul ignore next */\r\n : create_array(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : create_array;\r\n\r\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.uint32 = (function read_uint32_setup() {\r\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\r\n return function read_uint32() {\r\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n\r\n /* istanbul ignore if */\r\n if ((this.pos += 5) > this.len) {\r\n this.pos = this.len;\r\n throw indexOutOfRange(this, 10);\r\n }\r\n return value;\r\n };\r\n})();\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.int32 = function read_int32() {\r\n return this.uint32() | 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sint32 = function read_sint32() {\r\n var value = this.uint32();\r\n return value >>> 1 ^ -(value & 1) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readLongVarint() {\r\n // tends to deopt with local vars for octet etc.\r\n var bits = new LongBits(0, 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (; i < 4; ++i) {\r\n // 1st..4th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 5th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n i = 0;\r\n } else {\r\n for (; i < 3; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 1st..3th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 4th\r\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\r\n return bits;\r\n }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (; i < 5; ++i) {\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n } else {\r\n for (; i < 5; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n }\r\n /* istanbul ignore next */\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @name Reader#int64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @name Reader#uint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @name Reader#sint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReader.prototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\r\n return (buf[end - 4]\r\n | buf[end - 3] << 8\r\n | buf[end - 2] << 16\r\n | buf[end - 1] << 24) >>> 0;\r\n}\r\n\r\n/**\r\n * Reads fixed 32 bits as an unsigned 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a signed 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sfixed32 = function read_sfixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @name Reader#fixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @name Reader#sfixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.float = function read_float() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readFloatLE(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.double = function read_double() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readDoubleLE(this.buf, this.pos);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReader.prototype.bytes = function read_bytes() {\r\n var length = this.uint32(),\r\n start = this.pos,\r\n end = this.pos + length;\r\n\r\n /* istanbul ignore if */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\r\n if (Array.isArray(this.buf)) // plain array\r\n return this.buf.slice(start, end);\r\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n ? new this.buf.constructor(0)\r\n : this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReader.prototype.string = function read_string() {\r\n var bytes = this.bytes();\r\n return utf8.read(bytes, 0, bytes.length);\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore if */\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n } else {\r\n do {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n do { // eslint-disable-line no-constant-condition\r\n if ((wireType = this.uint32() & 7) === 4)\r\n break;\r\n this.skipType(wireType);\r\n } while (true);\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\r\n }\r\n return this;\r\n};\r\n\r\nReader._configure = function(BufferReader_) {\r\n BufferReader = BufferReader_;\r\n\r\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\r\n util.merge(Reader.prototype, {\r\n\r\n int64: function read_int64() {\r\n return readLongVarint.call(this)[fn](false);\r\n },\r\n\r\n uint64: function read_uint64() {\r\n return readLongVarint.call(this)[fn](true);\r\n },\r\n\r\n sint64: function read_sint64() {\r\n return readLongVarint.call(this).zzDecode()[fn](false);\r\n },\r\n\r\n fixed64: function read_fixed64() {\r\n return readFixed64.call(this)[fn](true);\r\n },\r\n\r\n sfixed64: function read_sfixed64() {\r\n return readFixed64.call(this)[fn](false);\r\n }\r\n\r\n });\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/reader.js\n// module id = 14\n// module chunks = 0","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((OneOf.prototype = Object.create(ReflectionObject.prototype)).constructor = OneOf).className = \"OneOf\";\r\n\r\nvar Field = require(\"./field\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new oneof instance.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]|Object.} [fieldNames] Field names\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction OneOf(name, fieldNames, options, comment) {\r\n if (!Array.isArray(fieldNames)) {\r\n options = fieldNames;\r\n fieldNames = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n\r\n /* istanbul ignore if */\r\n if (!(fieldNames === undefined || Array.isArray(fieldNames)))\r\n throw TypeError(\"fieldNames must be an Array\");\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {string[]}\r\n */\r\n this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n /**\r\n * Fields that belong to this oneof as an array for iteration.\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n this.fieldsArray = []; // declared readonly for conformance, possibly not yet added to parent\r\n\r\n /**\r\n * Comment for this field.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Oneof descriptor.\r\n * @interface IOneOf\r\n * @property {Array.} oneof Oneof field names\r\n * @property {Object.} [options] Oneof options\r\n */\r\n\r\n/**\r\n * Constructs a oneof from a oneof descriptor.\r\n * @param {string} name Oneof name\r\n * @param {IOneOf} json Oneof descriptor\r\n * @returns {OneOf} Created oneof\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nOneOf.fromJSON = function fromJSON(name, json) {\r\n return new OneOf(name, json.oneof, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this oneof to a oneof descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IOneOf} Oneof descriptor\r\n */\r\nOneOf.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"oneof\" , this.oneof,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds the fields of the specified oneof to the parent if not already done so.\r\n * @param {OneOf} oneof The oneof\r\n * @returns {undefined}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction addFieldsToParent(oneof) {\r\n if (oneof.parent)\r\n for (var i = 0; i < oneof.fieldsArray.length; ++i)\r\n if (!oneof.fieldsArray[i].parent)\r\n oneof.parent.add(oneof.fieldsArray[i]);\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof and removes it from its current parent, if any.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOf.prototype.add = function add(field) {\r\n\r\n /* istanbul ignore if */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field must be a Field\");\r\n\r\n if (field.parent && field.parent !== this.parent)\r\n field.parent.remove(field);\r\n this.oneof.push(field.name);\r\n this.fieldsArray.push(field);\r\n field.partOf = this; // field.parent remains null\r\n addFieldsToParent(this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a field from this oneof and puts it back to the oneof's parent.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOf.prototype.remove = function remove(field) {\r\n\r\n /* istanbul ignore if */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field must be a Field\");\r\n\r\n var index = this.fieldsArray.indexOf(field);\r\n\r\n /* istanbul ignore if */\r\n if (index < 0)\r\n throw Error(field + \" is not a member of \" + this);\r\n\r\n this.fieldsArray.splice(index, 1);\r\n index = this.oneof.indexOf(field.name);\r\n\r\n /* istanbul ignore else */\r\n if (index > -1) // theoretical\r\n this.oneof.splice(index, 1);\r\n\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOf.prototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n var self = this;\r\n // Collect present fields\r\n for (var i = 0; i < this.oneof.length; ++i) {\r\n var field = parent.get(this.oneof[i]);\r\n if (field && !field.partOf) {\r\n field.partOf = self;\r\n self.fieldsArray.push(field);\r\n }\r\n }\r\n // Add not yet present fields\r\n addFieldsToParent(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOf.prototype.onRemove = function onRemove(parent) {\r\n for (var i = 0, field; i < this.fieldsArray.length; ++i)\r\n if ((field = this.fieldsArray[i]).parent)\r\n field.parent.remove(field);\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link OneOf.d} (TypeScript).\r\n * @typedef OneOfDecorator\r\n * @type {function}\r\n * @param {Object} prototype Target prototype\r\n * @param {string} oneofName OneOf name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * OneOf decorator (TypeScript).\r\n * @function\r\n * @param {...string} fieldNames Field names\r\n * @returns {OneOfDecorator} Decorator function\r\n * @template T extends string\r\n */\r\nOneOf.d = function decorateOneOf() {\r\n var fieldNames = new Array(arguments.length),\r\n index = 0;\r\n while (index < arguments.length)\r\n fieldNames[index] = arguments[index++];\r\n return function oneOfDecorator(prototype, oneofName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new OneOf(oneofName, fieldNames));\r\n Object.defineProperty(prototype, oneofName, {\r\n get: util.oneOfGetter(fieldNames),\r\n set: util.oneOfSetter(fieldNames)\r\n });\r\n };\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/oneof.js\n// module id = 15\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Message;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\n/**\r\n * Constructs a new message instance.\r\n * @classdesc Abstract runtime message.\r\n * @constructor\r\n * @param {Properties} [properties] Properties to set\r\n * @template T extends object\r\n */\r\nfunction Message(properties) {\r\n // not used internally\r\n if (properties)\r\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\r\n this[keys[i]] = properties[keys[i]];\r\n}\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/*eslint-disable valid-jsdoc*/\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message} Message instance\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.create = function create(properties) {\r\n return this.$type.create(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {T|Object.} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.encode = function encode(message, writer) {\r\n return this.$type.encode(message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @param {T|Object.} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Message.decode\r\n * @function\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\r\n * @returns {T} Decoded message\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.decode = function decode(reader) {\r\n return this.$type.decode(reader);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Message.decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\r\n * @returns {T} Decoded message\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(reader) {\r\n return this.$type.decodeDelimited(reader);\r\n};\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Message.verify\r\n * @function\r\n * @param {Object.} message Plain object to verify\r\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\r\n */\r\nMessage.verify = function verify(message) {\r\n return this.$type.verify(message);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.} object Plain object\r\n * @returns {T} Message instance\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.fromObject = function fromObject(object) {\r\n return this.$type.fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {T} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.toObject = function toObject(message, options) {\r\n return this.$type.toObject(message, options);\r\n};\r\n\r\n/**\r\n * Converts this message to JSON.\r\n * @returns {Object.} JSON object\r\n */\r\nMessage.prototype.toJSON = function toJSON() {\r\n return this.$type.toObject(this, util.toJSONOptions);\r\n};\r\n\r\n/*eslint-enable valid-jsdoc*/\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/message.js\n// module id = 16\n// module chunks = 0","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/aspromise/index.js\n// module id = 17\n// module chunks = 0","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/inquire/index.js\n// module id = 18\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * Streaming RPC helpers.\r\n * @namespace\r\n */\r\nvar rpc = exports;\r\n\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @type {function}\r\n * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCImplCallback} callback Callback function\r\n * @returns {undefined}\r\n * @example\r\n * function rpcImpl(method, requestData, callback) {\r\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\r\n * throw Error(\"no such method\");\r\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\r\n * callback(err, responseData);\r\n * });\r\n * }\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCImplCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\nrpc.Service = require(\"./rpc/service\");\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/rpc.js\n// module id = 19\n// module chunks = 0","\"use strict\";\r\nmodule.exports = {};\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available accross modules.\r\n * @name roots\r\n * @type {Object.}\r\n * @example\r\n * // pbjs -r myroot -o compiled.js ...\r\n *\r\n * // in another module:\r\n * require(\"./compiled.js\");\r\n *\r\n * // in any subsequent module:\r\n * var root = protobuf.roots[\"myroot\"];\r\n */\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/roots.js\n// module id = 20\n// module chunks = 0","\"use strict\";\r\nmodule.exports = encoder;\r\n\r\nvar Enum = require(\"./enum\"),\r\n types = require(\"./types\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Generates a partial message type encoder.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genTypePartial(gen, field, fieldIndex, ref) {\r\n return field.resolvedType.group\r\n ? gen(\"types[%i].encode(%s,w.uint32(%i)).uint32(%i)\", fieldIndex, ref, (field.id << 3 | 3) >>> 0, (field.id << 3 | 4) >>> 0)\r\n : gen(\"types[%i].encode(%s,w.uint32(%i).fork()).ldelim()\", fieldIndex, ref, (field.id << 3 | 2) >>> 0);\r\n}\r\n\r\n/**\r\n * Generates an encoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction encoder(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var gen = util.codegen([\"m\", \"w\"], mtype.name + \"$encode\")\r\n (\"if(!w)\")\r\n (\"w=Writer.create()\");\r\n\r\n var i, ref;\r\n\r\n // \"when a message is serialized its known fields should be written sequentially by field number\"\r\n var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById);\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n index = mtype._fieldsArray.indexOf(field),\r\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\r\n wireType = types.basic[type];\r\n ref = \"m\" + util.safeProp(field.name);\r\n\r\n // Map fields\r\n if (field.map) {\r\n gen\r\n (\"if(%s!=null&&m.hasOwnProperty(%j)){\", ref, field.name) // !== undefined && !== null\r\n (\"for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[field.keyType], field.keyType);\r\n if (wireType === undefined) gen\r\n (\"types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", index, ref); // can't be groups\r\n else gen\r\n (\".uint32(%i).%s(%s[ks[i]]).ldelim()\", 16 | wireType, type, ref);\r\n gen\r\n (\"}\")\r\n (\"}\");\r\n\r\n // Repeated fields\r\n } else if (field.repeated) { gen\r\n (\"if(%s!=null&&%s.length){\", ref, ref); // !== undefined && !== null\r\n\r\n // Packed repeated\r\n if (field.packed && types.packed[type] !== undefined) { gen\r\n\r\n (\"w.uint32(%i).fork()\", (field.id << 3 | 2) >>> 0)\r\n (\"for(var i=0;i<%s.length;++i)\", ref)\r\n (\"w.%s(%s[i])\", type, ref)\r\n (\"w.ldelim()\");\r\n\r\n // Non-packed\r\n } else { gen\r\n\r\n (\"for(var i=0;i<%s.length;++i)\", ref);\r\n if (wireType === undefined)\r\n genTypePartial(gen, field, index, ref + \"[i]\");\r\n else gen\r\n (\"w.uint32(%i).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n } gen\r\n (\"}\");\r\n\r\n // Non-repeated\r\n } else {\r\n if (field.optional) gen\r\n (\"if(%s!=null&&m.hasOwnProperty(%j))\", ref, field.name); // !== undefined && !== null\r\n\r\n if (wireType === undefined)\r\n genTypePartial(gen, field, index, ref);\r\n else gen\r\n (\"w.uint32(%i).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n }\r\n\r\n return gen\r\n (\"return w\");\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/encoder.js\n// module id = 21\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Type;\r\n\r\n// extends Namespace\r\nvar Namespace = require(\"./namespace\");\r\n((Type.prototype = Object.create(Namespace.prototype)).constructor = Type).className = \"Type\";\r\n\r\nvar Enum = require(\"./enum\"),\r\n OneOf = require(\"./oneof\"),\r\n Field = require(\"./field\"),\r\n MapField = require(\"./mapfield\"),\r\n Service = require(\"./service\"),\r\n Message = require(\"./message\"),\r\n Reader = require(\"./reader\"),\r\n Writer = require(\"./writer\"),\r\n util = require(\"./util\"),\r\n encoder = require(\"./encoder\"),\r\n decoder = require(\"./decoder\"),\r\n verifier = require(\"./verifier\"),\r\n converter = require(\"./converter\"),\r\n wrappers = require(\"./wrappers\");\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Message fields.\r\n * @type {Object.}\r\n */\r\n this.fields = {}; // toJSON, marker\r\n\r\n /**\r\n * Oneofs declared within this namespace, if any.\r\n * @type {Object.}\r\n */\r\n this.oneofs = undefined; // toJSON\r\n\r\n /**\r\n * Extension ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.extensions = undefined; // toJSON\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {Array.}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n /*?\r\n * Whether this type is a legacy group.\r\n * @type {boolean|undefined}\r\n */\r\n this.group = undefined; // toJSON\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {Object.|null}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields as an array.\r\n * @type {Field[]|null}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {OneOf[]|null}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {Constructor<{}>}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nObject.defineProperties(Type.prototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: function() {\r\n\r\n /* istanbul ignore if */\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n\r\n this._fieldsById = {};\r\n for (var names = Object.keys(this.fields), i = 0; i < names.length; ++i) {\r\n var field = this.fields[names[i]],\r\n id = field.id;\r\n\r\n /* istanbul ignore if */\r\n if (this._fieldsById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n\r\n this._fieldsById[id] = field;\r\n }\r\n return this._fieldsById;\r\n }\r\n },\r\n\r\n /**\r\n * Fields of this message as an array for iteration.\r\n * @name Type#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: function() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Oneofs of this message as an array for iteration.\r\n * @name Type#oneofsArray\r\n * @type {OneOf[]}\r\n * @readonly\r\n */\r\n oneofsArray: {\r\n get: function() {\r\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n }\r\n },\r\n\r\n /**\r\n * The registered constructor, if any registered, otherwise a generic constructor.\r\n * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor.\r\n * @name Type#ctor\r\n * @type {Constructor<{}>}\r\n */\r\n ctor: {\r\n get: function() {\r\n return this._ctor || (this.ctor = Type.generateConstructor(this)());\r\n },\r\n set: function(ctor) {\r\n\r\n // Ensure proper prototype\r\n var prototype = ctor.prototype;\r\n if (!(prototype instanceof Message)) {\r\n (ctor.prototype = new Message()).constructor = ctor;\r\n util.merge(ctor.prototype, prototype);\r\n }\r\n\r\n // Classes and messages reference their reflected type\r\n ctor.$type = ctor.prototype.$type = this;\r\n\r\n // Mix in static methods\r\n util.merge(ctor, Message, true);\r\n\r\n this._ctor = ctor;\r\n\r\n // Messages have non-enumerable default values on their prototype\r\n var i = 0;\r\n for (; i < /* initializes */ this.fieldsArray.length; ++i)\r\n this._fieldsArray[i].resolve(); // ensures a proper value\r\n\r\n // Messages have non-enumerable getters and setters for each virtual oneof field\r\n var ctorProperties = {};\r\n for (i = 0; i < /* initializes */ this.oneofsArray.length; ++i)\r\n ctorProperties[this._oneofsArray[i].resolve().name] = {\r\n get: util.oneOfGetter(this._oneofsArray[i].oneof),\r\n set: util.oneOfSetter(this._oneofsArray[i].oneof)\r\n };\r\n if (i)\r\n Object.defineProperties(ctor.prototype, ctorProperties);\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Generates a constructor function for the specified type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nType.generateConstructor = function generateConstructor(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var gen = util.codegen([\"p\"], mtype.name);\r\n // explicitly initialize mutable object/array fields so that these aren't just inherited from the prototype\r\n for (var i = 0, field; i < mtype.fieldsArray.length; ++i)\r\n if ((field = mtype._fieldsArray[i]).map) gen\r\n (\"this%s={}\", util.safeProp(field.name));\r\n else if (field.repeated) gen\r\n (\"this%s=[]\", util.safeProp(field.name));\r\n return gen\r\n (\"if(p)for(var ks=Object.keys(p),i=0;i} [oneofs] Oneof descriptors\r\n * @property {Object.} fields Field descriptors\r\n * @property {number[][]} [extensions] Extension ranges\r\n * @property {number[][]} [reserved] Reserved ranges\r\n * @property {boolean} [group=false] Whether a legacy group or not\r\n */\r\n\r\n/**\r\n * Creates a message type from a message type descriptor.\r\n * @param {string} name Message name\r\n * @param {IType} json Message type descriptor\r\n * @returns {Type} Created message type\r\n */\r\nType.fromJSON = function fromJSON(name, json) {\r\n var type = new Type(name, json.options);\r\n type.extensions = json.extensions;\r\n type.reserved = json.reserved;\r\n var names = Object.keys(json.fields),\r\n i = 0;\r\n for (; i < names.length; ++i)\r\n type.add(\r\n ( typeof json.fields[names[i]].keyType !== \"undefined\"\r\n ? MapField.fromJSON\r\n : Field.fromJSON )(names[i], json.fields[names[i]])\r\n );\r\n if (json.oneofs)\r\n for (names = Object.keys(json.oneofs), i = 0; i < names.length; ++i)\r\n type.add(OneOf.fromJSON(names[i], json.oneofs[names[i]]));\r\n if (json.nested)\r\n for (names = Object.keys(json.nested), i = 0; i < names.length; ++i) {\r\n var nested = json.nested[names[i]];\r\n type.add( // most to least likely\r\n ( nested.id !== undefined\r\n ? Field.fromJSON\r\n : nested.fields !== undefined\r\n ? Type.fromJSON\r\n : nested.values !== undefined\r\n ? Enum.fromJSON\r\n : nested.methods !== undefined\r\n ? Service.fromJSON\r\n : Namespace.fromJSON )(names[i], nested)\r\n );\r\n }\r\n if (json.extensions && json.extensions.length)\r\n type.extensions = json.extensions;\r\n if (json.reserved && json.reserved.length)\r\n type.reserved = json.reserved;\r\n if (json.group)\r\n type.group = true;\r\n if (json.comment)\r\n type.comment = json.comment;\r\n return type;\r\n};\r\n\r\n/**\r\n * Converts this message type to a message type descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IType} Message type descriptor\r\n */\r\nType.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , inherited && inherited.options || undefined,\r\n \"oneofs\" , Namespace.arrayToJSON(this.oneofsArray, toJSONOptions),\r\n \"fields\" , Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; }), toJSONOptions) || {},\r\n \"extensions\" , this.extensions && this.extensions.length ? this.extensions : undefined,\r\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\r\n \"group\" , this.group || undefined,\r\n \"nested\" , inherited && inherited.nested || undefined,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nType.prototype.resolveAll = function resolveAll() {\r\n var fields = this.fieldsArray, i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.oneofsArray; i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nType.prototype.get = function get(name) {\r\n return this.fields[name]\r\n || this.oneofs && this.oneofs[name]\r\n || this.nested && this.nested[name]\r\n || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this type.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\r\n */\r\nType.prototype.add = function add(object) {\r\n\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n\r\n if (object instanceof Field && object.extend === undefined) {\r\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\r\n // The root object takes care of adding distinct sister-fields to the respective extended\r\n // type instead.\r\n\r\n // avoids calling the getter if not absolutely necessary because it's called quite frequently\r\n if (this._fieldsById ? /* istanbul ignore next */ this._fieldsById[object.id] : this.fieldsById[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\r\n if (this.isReservedId(object.id))\r\n throw Error(\"id \" + object.id + \" is reserved in \" + this);\r\n if (this.isReservedName(object.name))\r\n throw Error(\"name '\" + object.name + \"' is reserved in \" + this);\r\n\r\n if (object.parent)\r\n object.parent.remove(object);\r\n this.fields[object.name] = object;\r\n object.message = this;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n if (!this.oneofs)\r\n this.oneofs = {};\r\n this.oneofs[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this type.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this type\r\n */\r\nType.prototype.remove = function remove(object) {\r\n if (object instanceof Field && object.extend === undefined) {\r\n // See Type#add for the reason why extension fields are excluded here.\r\n\r\n /* istanbul ignore if */\r\n if (!this.fields || this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.fields[object.name];\r\n object.parent = null;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n\r\n /* istanbul ignore if */\r\n if (!this.oneofs || this.oneofs[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.oneofs[object.name];\r\n object.parent = null;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nType.prototype.isReservedId = function isReservedId(id) {\r\n return Namespace.isReservedId(this.reserved, id);\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nType.prototype.isReservedName = function isReservedName(name) {\r\n return Namespace.isReservedName(this.reserved, name);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message<{}>} Message instance\r\n */\r\nType.prototype.create = function create(properties) {\r\n return new this.ctor(properties);\r\n};\r\n\r\n/**\r\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\r\n * @returns {Type} `this`\r\n */\r\nType.prototype.setup = function setup() {\r\n // Sets up everything at once so that the prototype chain does not have to be re-evaluated\r\n // multiple times (V8, soft-deopt prototype-check).\r\n\r\n var fullName = this.fullName,\r\n types = [];\r\n for (var i = 0; i < /* initializes */ this.fieldsArray.length; ++i)\r\n types.push(this._fieldsArray[i].resolve().resolvedType);\r\n\r\n // Replace setup methods with type-specific generated functions\r\n this.encode = encoder(this)({\r\n Writer : Writer,\r\n types : types,\r\n util : util\r\n });\r\n this.decode = decoder(this)({\r\n Reader : Reader,\r\n types : types,\r\n util : util\r\n });\r\n this.verify = verifier(this)({\r\n types : types,\r\n util : util\r\n });\r\n this.fromObject = converter.fromObject(this)({\r\n types : types,\r\n util : util\r\n });\r\n this.toObject = converter.toObject(this)({\r\n types : types,\r\n util : util\r\n });\r\n\r\n // Inject custom wrappers for common types\r\n var wrapper = wrappers[fullName];\r\n if (wrapper) {\r\n var originalThis = Object.create(this);\r\n // if (wrapper.fromObject) {\r\n originalThis.fromObject = this.fromObject;\r\n this.fromObject = wrapper.fromObject.bind(originalThis);\r\n // }\r\n // if (wrapper.toObject) {\r\n originalThis.toObject = this.toObject;\r\n this.toObject = wrapper.toObject.bind(originalThis);\r\n // }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages.\r\n * @param {Message<{}>|Object.} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nType.prototype.encode = function encode_setup(message, writer) {\r\n return this.setup().encode(message, writer); // overrides this method\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages.\r\n * @param {Message<{}>|Object.} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nType.prototype.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim();\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Message<{}>} Decoded message\r\n * @throws {Error} If the payload is not a reader or valid buffer\r\n * @throws {util.ProtocolError<{}>} If required fields are missing\r\n */\r\nType.prototype.decode = function decode_setup(reader, length) {\r\n return this.setup().decode(reader, length); // overrides this method\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\r\n * @returns {Message<{}>} Decoded message\r\n * @throws {Error} If the payload is not a reader or valid buffer\r\n * @throws {util.ProtocolError} If required fields are missing\r\n */\r\nType.prototype.decodeDelimited = function decodeDelimited(reader) {\r\n if (!(reader instanceof Reader))\r\n reader = Reader.create(reader);\r\n return this.decode(reader, reader.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that field values are valid and that required fields are present.\r\n * @param {Object.} message Plain object to verify\r\n * @returns {null|string} `null` if valid, otherwise the reason why it is not\r\n */\r\nType.prototype.verify = function verify_setup(message) {\r\n return this.setup().verify(message); // overrides this method\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.} object Plain object to convert\r\n * @returns {Message<{}>} Message instance\r\n */\r\nType.prototype.fromObject = function fromObject(object) {\r\n return this.setup().fromObject(object);\r\n};\r\n\r\n/**\r\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\r\n * @interface IConversionOptions\r\n * @property {Function} [longs] Long conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\r\n * @property {Function} [enums] Enum value conversion type.\r\n * Only valid value is `String` (the global type).\r\n * Defaults to copy the present value, which is the numeric id.\r\n * @property {Function} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\r\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\r\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\r\n * @property {boolean} [oneofs=false] Includes virtual oneof properties set to the present field's name, if any\r\n * @property {boolean} [json=false] Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message<{}>} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n */\r\nType.prototype.toObject = function toObject(message, options) {\r\n return this.setup().toObject(message, options);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link Type.d} (TypeScript).\r\n * @typedef TypeDecorator\r\n * @type {function}\r\n * @param {Constructor} target Target constructor\r\n * @returns {undefined}\r\n * @template T extends Message\r\n */\r\n\r\n/**\r\n * Type decorator (TypeScript).\r\n * @param {string} [typeName] Type name, defaults to the constructor's name\r\n * @returns {TypeDecorator} Decorator function\r\n * @template T extends Message\r\n */\r\nType.d = function decorateType(typeName) {\r\n return function typeDecorator(target) {\r\n util.decorateType(target, typeName);\r\n };\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/type.js\n// module id = 22\n// module chunks = 0","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\n// extends Field\r\nvar Field = require(\"./field\");\r\n((MapField.prototype = Object.create(Field.prototype)).constructor = MapField).className = \"MapField\";\r\n\r\nvar types = require(\"./types\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new map field instance.\r\n * @classdesc Reflected map field.\r\n * @extends FieldBase\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} keyType Key type\r\n * @param {string} type Value type\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction MapField(name, id, keyType, type, options, comment) {\r\n Field.call(this, name, id, type, undefined, undefined, options, comment);\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(keyType))\r\n throw TypeError(\"keyType must be a string\");\r\n\r\n /**\r\n * Key type.\r\n * @type {string}\r\n */\r\n this.keyType = keyType; // toJSON, marker\r\n\r\n /**\r\n * Resolved key type if not a basic type.\r\n * @type {ReflectionObject|null}\r\n */\r\n this.resolvedKeyType = null;\r\n\r\n // Overrides Field#map\r\n this.map = true;\r\n}\r\n\r\n/**\r\n * Map field descriptor.\r\n * @interface IMapField\r\n * @extends {IField}\r\n * @property {string} keyType Key type\r\n */\r\n\r\n/**\r\n * Extension map field descriptor.\r\n * @interface IExtensionMapField\r\n * @extends IMapField\r\n * @property {string} extend Extended type\r\n */\r\n\r\n/**\r\n * Constructs a map field from a map field descriptor.\r\n * @param {string} name Field name\r\n * @param {IMapField} json Map field descriptor\r\n * @returns {MapField} Created map field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMapField.fromJSON = function fromJSON(name, json) {\r\n return new MapField(name, json.id, json.keyType, json.type, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this map field to a map field descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IMapField} Map field descriptor\r\n */\r\nMapField.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"keyType\" , this.keyType,\r\n \"type\" , this.type,\r\n \"id\" , this.id,\r\n \"extend\" , this.extend,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapField.prototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n // Besides a value type, map fields have a key type that may be \"any scalar type except for floating point types and bytes\"\r\n if (types.mapKey[this.keyType] === undefined)\r\n throw Error(\"invalid key type: \" + this.keyType);\r\n\r\n return Field.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Map field decorator (TypeScript).\r\n * @name MapField.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"} fieldKeyType Field key type\r\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"|\"bytes\"|Object|Constructor<{}>} fieldValueType Field value type\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> }\r\n */\r\nMapField.d = function decorateMapField(fieldId, fieldKeyType, fieldValueType) {\r\n\r\n // submessage value: decorate the submessage and use its name as the type\r\n if (typeof fieldValueType === \"function\")\r\n fieldValueType = util.decorateType(fieldValueType).name;\r\n\r\n // enum reference value: create a reflected copy of the enum and keep reuseing it\r\n else if (fieldValueType && typeof fieldValueType === \"object\")\r\n fieldValueType = util.decorateEnum(fieldValueType).name;\r\n\r\n return function mapFieldDecorator(prototype, fieldName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new MapField(fieldName, fieldId, fieldKeyType, fieldValueType));\r\n };\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/mapfield.js\n// module id = 23\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Service;\r\n\r\n// extends Namespace\r\nvar Namespace = require(\"./namespace\");\r\n((Service.prototype = Object.create(Namespace.prototype)).constructor = Service).className = \"Service\";\r\n\r\nvar Method = require(\"./method\"),\r\n util = require(\"./util\"),\r\n rpc = require(\"./rpc\");\r\n\r\n/**\r\n * Constructs a new service instance.\r\n * @classdesc Reflected service.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Service methods.\r\n * @type {Object.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {Method[]|null}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\n/**\r\n * Service descriptor.\r\n * @interface IService\r\n * @extends INamespace\r\n * @property {Object.} methods Method descriptors\r\n */\r\n\r\n/**\r\n * Constructs a service from a service descriptor.\r\n * @param {string} name Service name\r\n * @param {IService} json Service descriptor\r\n * @returns {Service} Created service\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nService.fromJSON = function fromJSON(name, json) {\r\n var service = new Service(name, json.options);\r\n /* istanbul ignore else */\r\n if (json.methods)\r\n for (var names = Object.keys(json.methods), i = 0; i < names.length; ++i)\r\n service.add(Method.fromJSON(names[i], json.methods[names[i]]));\r\n if (json.nested)\r\n service.addJSON(json.nested);\r\n service.comment = json.comment;\r\n return service;\r\n};\r\n\r\n/**\r\n * Converts this service to a service descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IService} Service descriptor\r\n */\r\nService.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , inherited && inherited.options || undefined,\r\n \"methods\" , Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ {},\r\n \"nested\" , inherited && inherited.nested || undefined,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(Service.prototype, \"methodsArray\", {\r\n get: function() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n});\r\n\r\nfunction clearCache(service) {\r\n service._methodsArray = null;\r\n return service;\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.get = function get(name) {\r\n return this.methods[name]\r\n || Namespace.prototype.get.call(this, name);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.resolveAll = function resolveAll() {\r\n var methods = this.methodsArray;\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return Namespace.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.add = function add(object) {\r\n\r\n /* istanbul ignore if */\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n\r\n if (object instanceof Method) {\r\n this.methods[object.name] = object;\r\n object.parent = this;\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n\r\n /* istanbul ignore if */\r\n if (this.methods[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.methods[object.name];\r\n object.parent = null;\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n * @returns {rpc.Service} RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nService.prototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl, requestDelimited, responseDelimited);\r\n for (var i = 0, method; i < /* initializes */ this.methodsArray.length; ++i) {\r\n var methodName = util.lcFirst((method = this._methodsArray[i]).resolve().name).replace(/[^$\\w_]/g, \"\");\r\n rpcService[methodName] = util.codegen([\"r\",\"c\"], util.isReserved(methodName) ? methodName + \"_\" : methodName)(\"return this.rpcCall(m,q,s,r,c)\")({\r\n m: method,\r\n q: method.resolvedRequestType.ctor,\r\n s: method.resolvedResponseType.ctor\r\n });\r\n }\r\n return rpcService;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/service.js\n// module id = 24\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Method;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = \"Method\";\r\n\r\nvar util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new service method instance.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean|Object.} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.} [responseStream] Whether the response is streamed\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] The comment for this method\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options, comment) {\r\n\r\n /* istanbul ignore next */\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n\r\n /* istanbul ignore if */\r\n if (!(type === undefined || util.isString(type)))\r\n throw TypeError(\"type must be a string\");\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(requestType))\r\n throw TypeError(\"requestType must be a string\");\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(responseType))\r\n throw TypeError(\"responseType must be a string\");\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Method type.\r\n * @type {string}\r\n */\r\n this.type = type || \"rpc\"; // toJSON\r\n\r\n /**\r\n * Request type.\r\n * @type {string}\r\n */\r\n this.requestType = requestType; // toJSON, marker\r\n\r\n /**\r\n * Whether requests are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Response type.\r\n * @type {string}\r\n */\r\n this.responseType = responseType; // toJSON\r\n\r\n /**\r\n * Whether responses are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Resolved request type.\r\n * @type {Type|null}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {Type|null}\r\n */\r\n this.resolvedResponseType = null;\r\n\r\n /**\r\n * Comment for this method\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Method descriptor.\r\n * @interface IMethod\r\n * @property {string} [type=\"rpc\"] Method type\r\n * @property {string} requestType Request type\r\n * @property {string} responseType Response type\r\n * @property {boolean} [requestStream=false] Whether requests are streamed\r\n * @property {boolean} [responseStream=false] Whether responses are streamed\r\n * @property {Object.} [options] Method options\r\n */\r\n\r\n/**\r\n * Constructs a method from a method descriptor.\r\n * @param {string} name Method name\r\n * @param {IMethod} json Method descriptor\r\n * @returns {Method} Created method\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMethod.fromJSON = function fromJSON(name, json) {\r\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this method to a method descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IMethod} Method descriptor\r\n */\r\nMethod.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"type\" , this.type !== \"rpc\" && /* istanbul ignore next */ this.type || undefined,\r\n \"requestType\" , this.requestType,\r\n \"requestStream\" , this.requestStream,\r\n \"responseType\" , this.responseType,\r\n \"responseStream\" , this.responseStream,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethod.prototype.resolve = function resolve() {\r\n\r\n /* istanbul ignore if */\r\n if (this.resolved)\r\n return this;\r\n\r\n this.resolvedRequestType = this.parent.lookupType(this.requestType);\r\n this.resolvedResponseType = this.parent.lookupType(this.responseType);\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/method.js\n// module id = 25\n// module chunks = 0","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\nvar Enum = require(\"./enum\"),\r\n types = require(\"./types\"),\r\n util = require(\"./util\");\r\n\r\nfunction missing(field) {\r\n return \"missing required '\" + field.name + \"'\";\r\n}\r\n\r\n/**\r\n * Generates a decoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction decoder(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var gen = util.codegen([\"r\", \"l\"], mtype.name + \"$decode\")\r\n (\"if(!(r instanceof Reader))\")\r\n (\"r=Reader.create(r)\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new this.ctor\" + (mtype.fieldsArray.filter(function(field) { return field.map; }).length ? \",k\" : \"\"))\r\n (\"while(r.pos>>3){\");\r\n\r\n var i = 0;\r\n for (; i < /* initializes */ mtype.fieldsArray.length; ++i) {\r\n var field = mtype._fieldsArray[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\r\n ref = \"m\" + util.safeProp(field.name); gen\r\n (\"case %i:\", field.id);\r\n\r\n // Map fields\r\n if (field.map) { gen\r\n (\"r.skip().pos++\") // assumes id 1 + key wireType\r\n (\"if(%s===util.emptyObject)\", ref)\r\n (\"%s={}\", ref)\r\n (\"k=r.%s()\", field.keyType)\r\n (\"r.pos++\"); // assumes id 2 + value wireType\r\n if (types.long[field.keyType] !== undefined) {\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=types[%i].decode(r,r.uint32())\", ref, i); // can't be groups\r\n else gen\r\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=r.%s()\", ref, type);\r\n } else {\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[k]=types[%i].decode(r,r.uint32())\", ref, i); // can't be groups\r\n else gen\r\n (\"%s[k]=r.%s()\", ref, type);\r\n }\r\n\r\n // Repeated fields\r\n } else if (field.repeated) { gen\r\n\r\n (\"if(!(%s&&%s.length))\", ref, ref)\r\n (\"%s=[]\", ref);\r\n\r\n // Packable (always check for forward and backward compatiblity)\r\n if (types.packed[type] !== undefined) gen\r\n (\"if((t&7)===2){\")\r\n (\"var c2=r.uint32()+r.pos\")\r\n (\"while(r.pos>>0\", prop, prop);\r\n break;\r\n case \"int32\":\r\n case \"sint32\":\r\n case \"sfixed32\": gen\r\n (\"m%s=d%s|0\", prop, prop);\r\n break;\r\n case \"uint64\":\r\n isUnsigned = true;\r\n // eslint-disable-line no-fallthrough\r\n case \"int64\":\r\n case \"sint64\":\r\n case \"fixed64\":\r\n case \"sfixed64\": gen\r\n (\"if(util.Long)\")\r\n (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\r\n (\"else if(typeof d%s===\\\"string\\\")\", prop)\r\n (\"m%s=parseInt(d%s,10)\", prop, prop)\r\n (\"else if(typeof d%s===\\\"number\\\")\", prop)\r\n (\"m%s=d%s\", prop, prop)\r\n (\"else if(typeof d%s===\\\"object\\\")\", prop)\r\n (\"m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\r\n break;\r\n case \"bytes\": gen\r\n (\"if(typeof d%s===\\\"string\\\")\", prop)\r\n (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop)\r\n (\"else if(d%s.length)\", prop)\r\n (\"m%s=d%s\", prop, prop);\r\n break;\r\n case \"string\": gen\r\n (\"m%s=String(d%s)\", prop, prop);\r\n break;\r\n case \"bool\": gen\r\n (\"m%s=Boolean(d%s)\", prop, prop);\r\n break;\r\n /* default: gen\r\n (\"m%s=d%s\", prop, prop);\r\n break; */\r\n }\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a plain object to runtime message converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.fromObject = function fromObject(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var fields = mtype.fieldsArray;\r\n var gen = util.codegen([\"d\"], mtype.name + \"$fromObject\")\r\n (\"if(d instanceof this.ctor)\")\r\n (\"return d\");\r\n if (!fields.length) return gen\r\n (\"return new this.ctor\");\r\n gen\r\n (\"var m=new this.ctor\");\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n prop = util.safeProp(field.name);\r\n\r\n // Map fields\r\n if (field.map) { gen\r\n (\"if(d%s){\", prop)\r\n (\"if(typeof d%s!==\\\"object\\\")\", prop)\r\n (\"throw TypeError(%j)\", field.fullName + \": object expected\")\r\n (\"m%s={}\", prop)\r\n (\"for(var ks=Object.keys(d%s),i=0;i>>0,m%s.high>>>0).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\r\n break;\r\n case \"bytes\": gen\r\n (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\r\n break;\r\n default: gen\r\n (\"d%s=m%s\", prop, prop);\r\n break;\r\n }\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a runtime message to plain object converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.toObject = function toObject(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var fields = mtype.fieldsArray.slice().sort(util.compareFieldsById);\r\n if (!fields.length)\r\n return util.codegen()(\"return {}\");\r\n var gen = util.codegen([\"m\", \"o\"], mtype.name + \"$toObject\")\r\n (\"if(!o)\")\r\n (\"o={}\")\r\n (\"var d={}\");\r\n\r\n var repeatedFields = [],\r\n mapFields = [],\r\n normalFields = [],\r\n i = 0;\r\n for (; i < fields.length; ++i)\r\n if (!fields[i].partOf)\r\n ( fields[i].resolve().repeated ? repeatedFields\r\n : fields[i].map ? mapFields\r\n : normalFields).push(fields[i]);\r\n\r\n if (repeatedFields.length) { gen\r\n (\"if(o.arrays||o.defaults){\");\r\n for (i = 0; i < repeatedFields.length; ++i) gen\r\n (\"d%s=[]\", util.safeProp(repeatedFields[i].name));\r\n gen\r\n (\"}\");\r\n }\r\n\r\n if (mapFields.length) { gen\r\n (\"if(o.objects||o.defaults){\");\r\n for (i = 0; i < mapFields.length; ++i) gen\r\n (\"d%s={}\", util.safeProp(mapFields[i].name));\r\n gen\r\n (\"}\");\r\n }\r\n\r\n if (normalFields.length) { gen\r\n (\"if(o.defaults){\");\r\n for (i = 0; i < normalFields.length; ++i) {\r\n var field = normalFields[i],\r\n prop = util.safeProp(field.name);\r\n if (field.resolvedType instanceof Enum) gen\r\n (\"d%s=o.enums===String?%j:%j\", prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\r\n else if (field.long) gen\r\n (\"if(util.Long){\")\r\n (\"var n=new util.Long(%i,%i,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\r\n (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", prop)\r\n (\"}else\")\r\n (\"d%s=o.longs===String?%j:%i\", prop, field.typeDefault.toString(), field.typeDefault.toNumber());\r\n else if (field.bytes) gen\r\n (\"d%s=o.bytes===String?%j:%s\", prop, String.fromCharCode.apply(String, field.typeDefault), \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\");\r\n else gen\r\n (\"d%s=%j\", prop, field.typeDefault); // also messages (=null)\r\n } gen\r\n (\"}\");\r\n }\r\n var hasKs2 = false;\r\n for (i = 0; i < fields.length; ++i) {\r\n var field = fields[i],\r\n index = mtype._fieldsArray.indexOf(field),\r\n prop = util.safeProp(field.name);\r\n if (field.map) {\r\n if (!hasKs2) { hasKs2 = true; gen\r\n (\"var ks2\");\r\n } gen\r\n (\"if(m%s&&(ks2=Object.keys(m%s)).length){\", prop, prop)\r\n (\"d%s={}\", prop)\r\n (\"for(var j=0;j}\r\n * @const\r\n */\r\nvar wrappers = exports;\r\n\r\nvar Message = require(\"./message\");\r\n\r\n/**\r\n * From object converter part of an {@link IWrapper}.\r\n * @typedef WrapperFromObjectConverter\r\n * @type {function}\r\n * @param {Object.} object Plain object\r\n * @returns {Message<{}>} Message instance\r\n * @this Type\r\n */\r\n\r\n/**\r\n * To object converter part of an {@link IWrapper}.\r\n * @typedef WrapperToObjectConverter\r\n * @type {function}\r\n * @param {Message<{}>} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n * @this Type\r\n */\r\n\r\n/**\r\n * Common type wrapper part of {@link wrappers}.\r\n * @interface IWrapper\r\n * @property {WrapperFromObjectConverter} [fromObject] From object converter\r\n * @property {WrapperToObjectConverter} [toObject] To object converter\r\n */\r\n\r\n// Custom wrapper for Any\r\nwrappers[\".google.protobuf.Any\"] = {\r\n\r\n fromObject: function(object) {\r\n\r\n // unwrap value type if mapped\r\n if (object && object[\"@type\"]) {\r\n var type = this.lookup(object[\"@type\"]);\r\n /* istanbul ignore else */\r\n if (type) {\r\n // type_url does not accept leading \".\"\r\n var type_url = object[\"@type\"].charAt(0) === \".\" ?\r\n object[\"@type\"].substr(1) : object[\"@type\"];\r\n // type_url prefix is optional, but path seperator is required\r\n return this.create({\r\n type_url: \"/\" + type_url,\r\n value: type.encode(type.fromObject(object)).finish()\r\n });\r\n }\r\n }\r\n\r\n return this.fromObject(object);\r\n },\r\n\r\n toObject: function(message, options) {\r\n\r\n // decode value if requested and unmapped\r\n if (options && options.json && message.type_url && message.value) {\r\n // Only use fully qualified type name after the last '/'\r\n var name = message.type_url.substring(message.type_url.lastIndexOf(\"/\") + 1);\r\n var type = this.lookup(name);\r\n /* istanbul ignore else */\r\n if (type)\r\n message = type.decode(message.value);\r\n }\r\n\r\n // wrap value if unmapped\r\n if (!(message instanceof this.ctor) && message instanceof Message) {\r\n var object = message.$type.toObject(message, options);\r\n object[\"@type\"] = message.$type.fullName;\r\n return object;\r\n }\r\n\r\n return this.toObject(message, options);\r\n }\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/wrappers.js\n// module id = 29\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Root;\r\n\r\n// extends Namespace\r\nvar Namespace = require(\"./namespace\");\r\n((Root.prototype = Object.create(Namespace.prototype)).constructor = Root).className = \"Root\";\r\n\r\nvar Field = require(\"./field\"),\r\n Enum = require(\"./enum\"),\r\n OneOf = require(\"./oneof\"),\r\n util = require(\"./util\");\r\n\r\nvar Type, // cyclic\r\n parse, // might be excluded\r\n common; // \"\r\n\r\n/**\r\n * Constructs a new root namespace instance.\r\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {Object.} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n Namespace.call(this, \"\", options);\r\n\r\n /**\r\n * Deferred extension fields.\r\n * @type {Field[]}\r\n */\r\n this.deferred = [];\r\n\r\n /**\r\n * Resolved file names of loaded files.\r\n * @type {string[]}\r\n */\r\n this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a namespace descriptor into a root namespace.\r\n * @param {INamespace} json Nameespace descriptor\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\r\n * @returns {Root} Root namespace\r\n */\r\nRoot.fromJSON = function fromJSON(json, root) {\r\n if (!root)\r\n root = new Root();\r\n if (json.options)\r\n root.setOptions(json.options);\r\n return root.addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Resolves the path of an imported file, relative to the importing origin.\r\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\r\n * @function\r\n * @param {string} origin The file name of the importing file\r\n * @param {string} target The file name being imported\r\n * @returns {string|null} Resolved path to `target` or `null` to skip the file\r\n */\r\nRoot.prototype.resolvePath = util.path.resolve;\r\n\r\n// A symbol-like function to safely signal synchronous loading\r\n/* istanbul ignore next */\r\nfunction SYNC() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} options Parse options\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nRoot.prototype.load = function load(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = undefined;\r\n }\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(load, self, filename, options);\r\n\r\n var sync = callback === SYNC; // undocumented\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n /* istanbul ignore if */\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n if (sync)\r\n throw err;\r\n cb(err, root);\r\n }\r\n\r\n // Processes a single file\r\n function process(filename, source) {\r\n try {\r\n if (util.isString(source) && source.charAt(0) === \"{\")\r\n source = JSON.parse(source);\r\n if (!util.isString(source))\r\n self.setOptions(source.options).addJSON(source.nested);\r\n else {\r\n parse.filename = filename;\r\n var parsed = parse(source, self, options),\r\n resolved,\r\n i = 0;\r\n if (parsed.imports)\r\n for (; i < parsed.imports.length; ++i)\r\n if (resolved = self.resolvePath(filename, parsed.imports[i]))\r\n fetch(resolved);\r\n if (parsed.weakImports)\r\n for (i = 0; i < parsed.weakImports.length; ++i)\r\n if (resolved = self.resolvePath(filename, parsed.weakImports[i]))\r\n fetch(resolved, true);\r\n }\r\n } catch (err) {\r\n finish(err);\r\n }\r\n if (!sync && !queued)\r\n finish(null, self); // only once anyway\r\n }\r\n\r\n // Fetches a single file\r\n function fetch(filename, weak) {\r\n\r\n // Strip path if this file references a bundled definition\r\n var idx = filename.lastIndexOf(\"google/protobuf/\");\r\n if (idx > -1) {\r\n var altname = filename.substring(idx);\r\n if (altname in common)\r\n filename = altname;\r\n }\r\n\r\n // Skip if already loaded / attempted\r\n if (self.files.indexOf(filename) > -1)\r\n return;\r\n self.files.push(filename);\r\n\r\n // Shortcut bundled definitions\r\n if (filename in common) {\r\n if (sync)\r\n process(filename, common[filename]);\r\n else {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n }\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n if (sync) {\r\n var source;\r\n try {\r\n source = util.fs.readFileSync(filename).toString(\"utf8\");\r\n } catch (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n } else {\r\n ++queued;\r\n util.fetch(filename, function(err, source) {\r\n --queued;\r\n /* istanbul ignore if */\r\n if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n /* istanbul ignore else */\r\n if (!weak)\r\n finish(err);\r\n else if (!queued) // can't be covered reliably\r\n finish(null, self);\r\n return;\r\n }\r\n process(filename, source);\r\n });\r\n }\r\n }\r\n var queued = 0;\r\n\r\n // Assembling the root namespace doesn't require working type\r\n // references anymore, so we can load everything in parallel\r\n if (util.isString(filename))\r\n filename = [ filename ];\r\n for (var i = 0, resolved; i < filename.length; ++i)\r\n if (resolved = self.resolvePath(\"\", filename[i]))\r\n fetch(resolved);\r\n\r\n if (sync)\r\n return self;\r\n if (!queued)\r\n finish(null, self);\r\n return undefined;\r\n};\r\n// function load(filename:string, options:IParseOptions, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\r\n * @function Root#load\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\r\n * @function Root#load\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:IParseOptions]):Promise\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only).\r\n * @function Root#loadSync\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\nRoot.prototype.loadSync = function loadSync(filename, options) {\r\n if (!util.isNode)\r\n throw Error(\"not supported\");\r\n return this.load(filename, options, SYNC);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRoot.prototype.resolveAll = function resolveAll() {\r\n if (this.deferred.length)\r\n throw Error(\"unresolvable extensions: \" + this.deferred.map(function(field) {\r\n return \"'extend \" + field.extend + \"' in \" + field.parent.fullName;\r\n }).join(\", \"));\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\r\n\r\n// only uppercased (and thus conflict-free) children are exposed, see below\r\nvar exposeRe = /^[A-Z]/;\r\n\r\n/**\r\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\r\n * @param {Root} root Root instance\r\n * @param {Field} field Declaring extension field witin the declaring type\r\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\r\n * @inner\r\n * @ignore\r\n */\r\nfunction tryHandleExtension(root, field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options);\r\n sisterField.declaringField = field;\r\n field.extensionField = sisterField;\r\n extendedType.add(sisterField);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRoot.prototype._handleAdd = function _handleAdd(object) {\r\n if (object instanceof Field) {\r\n\r\n if (/* an extension field (implies not part of a oneof) */ object.extend !== undefined && /* not already handled */ !object.extensionField)\r\n if (!tryHandleExtension(this, object))\r\n this.deferred.push(object);\r\n\r\n } else if (object instanceof Enum) {\r\n\r\n if (exposeRe.test(object.name))\r\n object.parent[object.name] = object.values; // expose enum values as property of its parent\r\n\r\n } else if (!(object instanceof OneOf)) /* everything else is a namespace */ {\r\n\r\n if (object instanceof Type) // Try to handle any deferred extensions\r\n for (var i = 0; i < this.deferred.length;)\r\n if (tryHandleExtension(this, this.deferred[i]))\r\n this.deferred.splice(i, 1);\r\n else\r\n ++i;\r\n for (var j = 0; j < /* initializes */ object.nestedArray.length; ++j) // recurse into the namespace\r\n this._handleAdd(object._nestedArray[j]);\r\n if (exposeRe.test(object.name))\r\n object.parent[object.name] = object; // expose namespace as property of its parent\r\n }\r\n\r\n // The above also adds uppercased (and thus conflict-free) nested types, services and enums as\r\n // properties of namespaces just like static code does. This allows using a .d.ts generated for\r\n // a static module with reflection-based solutions where the condition is met.\r\n};\r\n\r\n/**\r\n * Called when any object is removed from this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object removed\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRoot.prototype._handleRemove = function _handleRemove(object) {\r\n if (object instanceof Field) {\r\n\r\n if (/* an extension field */ object.extend !== undefined) {\r\n if (/* already handled */ object.extensionField) { // remove its sister field\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n } else { // cancel the extension\r\n var index = this.deferred.indexOf(object);\r\n /* istanbul ignore else */\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n }\r\n\r\n } else if (object instanceof Enum) {\r\n\r\n if (exposeRe.test(object.name))\r\n delete object.parent[object.name]; // unexpose enum values\r\n\r\n } else if (object instanceof Namespace) {\r\n\r\n for (var i = 0; i < /* initializes */ object.nestedArray.length; ++i) // recurse into the namespace\r\n this._handleRemove(object._nestedArray[i]);\r\n\r\n if (exposeRe.test(object.name))\r\n delete object.parent[object.name]; // unexpose namespaces\r\n\r\n }\r\n};\r\n\r\nRoot._configure = function(Type_, parse_, common_) {\r\n Type = Type_;\r\n parse = parse_;\r\n common = common_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/root.js\n// module id = 30\n// module chunks = 0","import {CentrifugeProtobuf} from './protobuf.js';\nexport default CentrifugeProtobuf;\n\n\n\n// WEBPACK FOOTER //\n// ./src/index_protobuf.js","import {Centrifuge} from './centrifuge.js';\n\nconst protobuf = require('protobufjs/light');\nconst proto = protobuf.Root.fromJSON(require('./client.proto.json'));\n\nconst methodValues = proto.lookupEnum('MethodType').values;\n\nconst protobufMethodType = {\n CONNECT: methodValues.CONNECT,\n SUBSCRIBE: methodValues.SUBSCRIBE,\n UNSUBSCRIBE: methodValues.UNSUBSCRIBE,\n PUBLISH: methodValues.PUBLISH,\n PRESENCE: methodValues.PRESENCE,\n PRESENCE_STATS: methodValues.PRESENCE_STATS,\n HISTORY: methodValues.HISTORY,\n PING: methodValues.PING,\n RPC: methodValues.RPC,\n SEND: methodValues.SEND,\n REFRESH: methodValues.REFRESH,\n SUB_REFRESH: methodValues.SUB_REFRESH\n};\n\nconst methodSchema = {\n CONNECT: [\n proto.lookupType('proto.ConnectRequest'),\n proto.lookupType('proto.ConnectResult')\n ],\n REFRESH: [\n proto.lookupType('proto.RefreshRequest'),\n proto.lookupType('proto.RefreshResult')\n ],\n SUBSCRIBE: [\n proto.lookupType('proto.SubscribeRequest'),\n proto.lookupType('proto.SubscribeResult')\n ],\n SUB_REFRESH: [\n proto.lookupType('proto.SubRefreshRequest'),\n proto.lookupType('proto.SubRefreshResult')\n ],\n UNSUBSCRIBE: [\n proto.lookupType('proto.UnsubscribeRequest'),\n proto.lookupType('proto.UnsubscribeResult')\n ],\n PUBLISH: [\n proto.lookupType('proto.PublishRequest'),\n proto.lookupType('proto.PublishResult')\n ],\n PRESENCE: [\n proto.lookupType('proto.PresenceRequest'),\n proto.lookupType('proto.PresenceResult')\n ],\n PRESENCE_STATS: [\n proto.lookupType('proto.PresenceStatsRequest'),\n proto.lookupType('proto.PresenceStatsResult')\n ],\n HISTORY: [\n proto.lookupType('proto.HistoryRequest'),\n proto.lookupType('proto.HistoryResult')\n ],\n PING: [\n proto.lookupType('proto.PingRequest'),\n proto.lookupType('proto.PingResult')\n ],\n RPC: [\n proto.lookupType('proto.RPCRequest'),\n proto.lookupType('proto.RPCResult')\n ],\n SEND: [\n proto.lookupType('proto.SendRequest'),\n null\n ]\n};\n\nconst protobufPushType = {\n PUBLICATION: proto.lookupEnum('PushType').values.PUBLICATION,\n JOIN: proto.lookupEnum('PushType').values.JOIN,\n LEAVE: proto.lookupEnum('PushType').values.LEAVE,\n UNSUB: proto.lookupEnum('PushType').values.UNSUB,\n MESSAGE: proto.lookupEnum('PushType').values.MESSAGE\n};\n\nconst PushSchema = {\n PUBLICATION: proto.lookupType('proto.Publication'),\n JOIN: proto.lookupType('proto.Join'),\n LEAVE: proto.lookupType('proto.Leave'),\n UNSUB: proto.lookupType('proto.Unsub'),\n MESSAGE: proto.lookupType('proto.Message')\n};\n\nconst Push = proto.lookupType('proto.Push');\nconst Command = proto.lookupType('proto.Command');\nconst Reply = proto.lookupType('proto.Reply');\n\nexport class ProtobufEncoder {\n encodeCommands(commands) {\n const writer = protobuf.Writer.create();\n for (const i in commands) {\n if (commands.hasOwnProperty(i)) {\n const command = Object.assign({}, commands[i]);\n if (command.params) {\n let type;\n if (!command.method) {\n command.method = protobufMethodType.CONNECT;\n };\n switch (command.method) {\n case protobufMethodType.CONNECT:\n type = methodSchema.CONNECT[0];\n break;\n case protobufMethodType.REFRESH:\n type = methodSchema.REFRESH;\n break;\n case protobufMethodType.SUBSCRIBE:\n type = methodSchema.SUBSCRIBE[0];\n break;\n case protobufMethodType.SUB_REFRESH:\n type = methodSchema.SUB_REFRESH[0];\n break;\n case protobufMethodType.UNSUBSCRIBE:\n type = methodSchema.UNSUBSCRIBE[0];\n break;\n case protobufMethodType.PUBLISH:\n type = methodSchema.PUBLISH[0];\n break;\n case protobufMethodType.PRESENCE:\n type = methodSchema.PRESENCE[0];\n break;\n case protobufMethodType.PRESENCE_STATS:\n type = methodSchema.PRESENCE_STATS[0];\n break;\n case protobufMethodType.HISTORY:\n type = methodSchema.HISTORY[0];\n break;\n case protobufMethodType.PING:\n type = methodSchema.PING[0];\n break;\n case protobufMethodType.RPC:\n type = methodSchema.RPC[0];\n break;\n case protobufMethodType.SEND:\n type = methodSchema.SEND[0];\n break;\n }\n command.params = type.encode(command.params).finish();\n }\n Command.encodeDelimited(command, writer);\n }\n }\n return writer.finish();\n }\n}\n\nexport class ProtobufDecoder {\n decodeReplies(data) {\n const replies = [];\n const reader = protobuf.Reader.create(new Uint8Array(data));\n while (reader.pos < reader.len) {\n const reply = Reply.decodeDelimited(reader);\n replies.push(reply);\n }\n return replies;\n }\n\n decodeCommandResult(methodType, data) {\n var type;\n switch (methodType) {\n case protobufMethodType.CONNECT:\n type = methodSchema.CONNECT[1];\n break;\n case protobufMethodType.REFRESH:\n type = methodSchema.REFRESH[1];\n break;\n case protobufMethodType.SUBSCRIBE:\n type = methodSchema.SUBSCRIBE[1];\n break;\n case protobufMethodType.SUB_REFRESH:\n type = methodSchema.SUB_REFRESH[1];\n break;\n case protobufMethodType.UNSUBSCRIBE:\n type = methodSchema.UNSUBSCRIBE[1];\n break;\n case protobufMethodType.PUBLISH:\n type = methodSchema.PUBLISH[1];\n break;\n case protobufMethodType.PRESENCE:\n type = methodSchema.PRESENCE[1];\n break;\n case protobufMethodType.PRESENCE_STATS:\n type = methodSchema.PRESENCE_STATS[1];\n break;\n case protobufMethodType.HISTORY:\n type = methodSchema.HISTORY[1];\n break;\n case protobufMethodType.PING:\n type = methodSchema.PING[1];\n break;\n case protobufMethodType.RPC:\n type = methodSchema.RPC[1];\n break;\n }\n return this._decode(type, data);\n }\n\n decodePush(data) {\n return this._decode(Push, data);\n }\n\n decodePushData(pushType, data) {\n var type;\n switch (pushType) {\n case protobufPushType.PUBLICATION:\n type = PushSchema.PUBLICATION;\n break;\n case protobufPushType.MESSAGE:\n type = PushSchema.MESSAGE;\n break;\n case protobufPushType.JOIN:\n type = PushSchema.JOIN;\n break;\n case protobufPushType.LEAVE:\n type = PushSchema.LEAVE;\n break;\n case protobufPushType.UNSUB:\n type = PushSchema.UNSUB;\n break;\n }\n return this._decode(type, data);\n }\n\n _decode(type, data) {\n let res;\n try {\n res = type.decode(data);\n } catch (err) {\n return null;\n }\n return res;\n }\n}\n\nexport class CentrifugeProtobuf extends Centrifuge {\n _formatOverride(format) {\n if (format === 'protobuf') {\n this._binary = true;\n this._methodType = protobufMethodType;\n this._pushType = protobufPushType;\n this._encoder = new ProtobufEncoder();\n this._decoder = new ProtobufDecoder();\n return true;\n }\n return false;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/protobuf.js","// light library entry point.\r\n\r\n\"use strict\";\r\nmodule.exports = require(\"./src/index-light\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/light.js\n// module id = 34\n// module chunks = 0","\"use strict\";\r\nvar protobuf = module.exports = require(\"./index-minimal\");\r\n\r\nprotobuf.build = \"light\";\r\n\r\n/**\r\n * A node-style callback as used by {@link load} and {@link Root#load}.\r\n * @typedef LoadCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Root} [root] Root, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} root Root namespace, defaults to create a new one if omitted.\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @see {@link Root#load}\r\n */\r\nfunction load(filename, root, callback) {\r\n if (typeof root === \"function\") {\r\n callback = root;\r\n root = new protobuf.Root();\r\n } else if (!root)\r\n root = new protobuf.Root();\r\n return root.load(filename, callback);\r\n}\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @see {@link Root#load}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Promise} Promise\r\n * @see {@link Root#load}\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n * @see {@link Root#loadSync}\r\n */\r\nfunction loadSync(filename, root) {\r\n if (!root)\r\n root = new protobuf.Root();\r\n return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\r\n\r\n// Serialization\r\nprotobuf.encoder = require(\"./encoder\");\r\nprotobuf.decoder = require(\"./decoder\");\r\nprotobuf.verifier = require(\"./verifier\");\r\nprotobuf.converter = require(\"./converter\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Message = require(\"./message\");\r\nprotobuf.wrappers = require(\"./wrappers\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.util = require(\"./util\");\r\n\r\n// Configure reflection\r\nprotobuf.ReflectionObject._configure(protobuf.Root);\r\nprotobuf.Namespace._configure(protobuf.Type, protobuf.Service);\r\nprotobuf.Root._configure(protobuf.Type);\r\nprotobuf.Field._configure(protobuf.Type);\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/index-light.js\n// module id = 35\n// module chunks = 0","\"use strict\";\r\nvar protobuf = exports;\r\n\r\n/**\r\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\r\n * @name build\r\n * @type {string}\r\n * @const\r\n */\r\nprotobuf.build = \"minimal\";\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = require(\"./writer_buffer\");\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = require(\"./reader_buffer\");\r\n\r\n// Utility\r\nprotobuf.util = require(\"./util/minimal\");\r\nprotobuf.rpc = require(\"./rpc\");\r\nprotobuf.roots = require(\"./roots\");\r\nprotobuf.configure = configure;\r\n\r\n/* istanbul ignore next */\r\n/**\r\n * Reconfigures the library according to the environment.\r\n * @returns {undefined}\r\n */\r\nfunction configure() {\r\n protobuf.Reader._configure(protobuf.BufferReader);\r\n protobuf.util._configure();\r\n}\r\n\r\n// Configure serialization\r\nprotobuf.Writer._configure(protobuf.BufferWriter);\r\nconfigure();\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/index-minimal.js\n// module id = 36\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/base64/index.js\n// module id = 37\n// module chunks = 0","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/eventemitter/index.js\n// module id = 38\n// module chunks = 0","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/float/index.js\n// module id = 39\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/utf8/index.js\n// module id = 40\n// module chunks = 0","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/pool/index.js\n// module id = 41\n// module chunks = 0","\"use strict\";\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(\"../util/minimal\");\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low 32 bits, unsigned\r\n * @param {number} hi High 32 bits, unsigned\r\n */\r\nfunction LongBits(lo, hi) {\r\n\r\n // note that the casts below are theoretically unnecessary as of today, but older statically\r\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo >>> 0;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi >>> 0;\r\n}\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = LongBits.zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Zero hash.\r\n * @memberof util.LongBits\r\n * @type {string}\r\n */\r\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n if (sign)\r\n value = -value;\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.from = function from(value) {\r\n if (typeof value === \"number\")\r\n return LongBits.fromNumber(value);\r\n if (util.isString(value)) {\r\n /* istanbul ignore else */\r\n if (util.Long)\r\n value = util.Long.fromString(value);\r\n else\r\n return LongBits.fromNumber(parseInt(value, 10));\r\n }\r\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBits.prototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n var lo = ~this.lo + 1 >>> 0,\r\n hi = ~this.hi >>> 0;\r\n if (!lo)\r\n hi = hi + 1 >>> 0;\r\n return -(lo + hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBits.prototype.toLong = function toLong(unsigned) {\r\n return util.Long\r\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\r\n /* istanbul ignore next */\r\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n if (hash === zeroHash)\r\n return zero;\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBits.prototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 ,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBits.prototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n return part2 === 0\r\n ? part1 === 0\r\n ? part0 < 16384\r\n ? part0 < 128 ? 1 : 2\r\n : part0 < 2097152 ? 3 : 4\r\n : part1 < 16384\r\n ? part1 < 128 ? 5 : 6\r\n : part1 < 2097152 ? 7 : 8\r\n : part2 < 128 ? 9 : 10;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/util/longbits.js\n// module id = 42\n// module chunks = 0","\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\n// extends Writer\r\nvar Writer = require(\"./writer\");\r\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar Buffer = util.Buffer;\r\n\r\n/**\r\n * Constructs a new buffer writer instance.\r\n * @classdesc Wire format writer using node buffers.\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Buffer} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = util._Buffer_allocUnsafe)(size);\r\n};\r\n\r\nvar writeBytesBuffer = Buffer && Buffer.prototype instanceof Uint8Array && Buffer.prototype.set.name === \"set\"\r\n ? function writeBytesBuffer_set(val, buf, pos) {\r\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\r\n // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n if (val.copy) // Buffer values\r\n val.copy(buf, pos, 0, val.length);\r\n else for (var i = 0; i < val.length;) // plain array values\r\n buf[pos++] = val[i++];\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\r\n if (util.isString(value))\r\n value = util._Buffer_from(value, \"base64\");\r\n var len = value.length >>> 0;\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeBytesBuffer, len, value);\r\n return this;\r\n};\r\n\r\nfunction writeStringBuffer(val, buf, pos) {\r\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\r\n util.utf8.write(val, buf, pos);\r\n else\r\n buf.utf8Write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.string = function write_string_buffer(value) {\r\n var len = Buffer.byteLength(value);\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeStringBuffer, len, value);\r\n return this;\r\n};\r\n\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @name BufferWriter#finish\r\n * @function\r\n * @returns {Buffer} Finished buffer\r\n */\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/writer_buffer.js\n// module id = 43\n// module chunks = 0","\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\n// extends Reader\r\nvar Reader = require(\"./reader\");\r\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\n/**\r\n * Constructs a new buffer reader instance.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n Reader.call(this, buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @name BufferReader#buf\r\n * @type {Buffer}\r\n */\r\n}\r\n\r\n/* istanbul ignore else */\r\nif (util.Buffer)\r\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReader.prototype.string = function read_string_buffer() {\r\n var len = this.uint32(); // modifies pos\r\n return this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len));\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @name BufferReader#bytes\r\n * @function\r\n * @returns {Buffer} Value read\r\n */\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/reader_buffer.js\n// module id = 44\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(\"../util/minimal\");\r\n\r\n// Extends EventEmitter\r\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\r\n\r\n/**\r\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\r\n *\r\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\r\n * @typedef rpc.ServiceMethodCallback\r\n * @template TRes extends Message\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {TRes} [response] Response message\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\r\n * @typedef rpc.ServiceMethod\r\n * @template TReq extends Message\r\n * @template TRes extends Message\r\n * @type {function}\r\n * @param {TReq|Properties} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message\r\n * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined`\r\n */\r\n\r\n/**\r\n * Constructs a new RPC service instance.\r\n * @classdesc An RPC service as returned by {@link Service#create}.\r\n * @exports rpc.Service\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n */\r\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\r\n\r\n if (typeof rpcImpl !== \"function\")\r\n throw TypeError(\"rpcImpl must be a function\");\r\n\r\n util.EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {RPCImpl|null}\r\n */\r\n this.rpcImpl = rpcImpl;\r\n\r\n /**\r\n * Whether requests are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.requestDelimited = Boolean(requestDelimited);\r\n\r\n /**\r\n * Whether responses are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.responseDelimited = Boolean(responseDelimited);\r\n}\r\n\r\n/**\r\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\r\n * @param {Method|rpc.ServiceMethod} method Reflected or static method\r\n * @param {Constructor} requestCtor Request constructor\r\n * @param {Constructor} responseCtor Response constructor\r\n * @param {TReq|Properties} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback} callback Service callback\r\n * @returns {undefined}\r\n * @template TReq extends Message\r\n * @template TRes extends Message\r\n */\r\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\r\n\r\n if (!request)\r\n throw TypeError(\"request must be specified\");\r\n\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\r\n\r\n if (!self.rpcImpl) {\r\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\r\n return undefined;\r\n }\r\n\r\n try {\r\n return self.rpcImpl(\r\n method,\r\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\r\n function rpcCallback(err, response) {\r\n\r\n if (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n\r\n if (response === null) {\r\n self.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n\r\n if (!(response instanceof responseCtor)) {\r\n try {\r\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n }\r\n\r\n self.emit(\"data\", response, method);\r\n return callback(null, response);\r\n }\r\n );\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n setTimeout(function() { callback(err); }, 0);\r\n return undefined;\r\n }\r\n};\r\n\r\n/**\r\n * Ends this service and emits the `end` event.\r\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\r\n * @returns {rpc.Service} `this`\r\n */\r\nService.prototype.end = function end(endedByRPC) {\r\n if (this.rpcImpl) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.rpcImpl(null, null, null);\r\n this.rpcImpl = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/rpc/service.js\n// module id = 45\n// module chunks = 0","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @param {string[]} functionParams Function parameter names\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n */\r\nfunction codegen(functionParams, functionName) {\r\n\r\n /* istanbul ignore if */\r\n if (typeof functionParams === \"string\") {\r\n functionName = functionParams;\r\n functionParams = undefined;\r\n }\r\n\r\n var body = [];\r\n\r\n /**\r\n * Appends code to the function's body or finishes generation.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string|Object.} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any\r\n * @param {...*} [formatParams] Format parameters\r\n * @returns {Codegen|Function} Itself or the generated function if finished\r\n * @throws {Error} If format parameter counts do not match\r\n */\r\n\r\n function Codegen(formatStringOrScope) {\r\n // note that explicit array handling below makes this ~50% faster\r\n\r\n // finish the function\r\n if (typeof formatStringOrScope !== \"string\") {\r\n var source = toString();\r\n if (codegen.verbose)\r\n console.log(\"codegen: \" + source); // eslint-disable-line no-console\r\n source = \"return \" + source;\r\n if (formatStringOrScope) {\r\n var scopeKeys = Object.keys(formatStringOrScope),\r\n scopeParams = new Array(scopeKeys.length + 1),\r\n scopeValues = new Array(scopeKeys.length),\r\n scopeOffset = 0;\r\n while (scopeOffset < scopeKeys.length) {\r\n scopeParams[scopeOffset] = scopeKeys[scopeOffset];\r\n scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]];\r\n }\r\n scopeParams[scopeOffset] = source;\r\n return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func\r\n }\r\n return Function(source)(); // eslint-disable-line no-new-func\r\n }\r\n\r\n // otherwise append to body\r\n var formatParams = new Array(arguments.length - 1),\r\n formatOffset = 0;\r\n while (formatOffset < formatParams.length)\r\n formatParams[formatOffset] = arguments[++formatOffset];\r\n formatOffset = 0;\r\n formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) {\r\n var value = formatParams[formatOffset++];\r\n switch ($1) {\r\n case \"d\": case \"f\": return String(Number(value));\r\n case \"i\": return String(Math.floor(value));\r\n case \"j\": return JSON.stringify(value);\r\n case \"s\": return String(value);\r\n }\r\n return \"%\";\r\n });\r\n if (formatOffset !== formatParams.length)\r\n throw Error(\"parameter count mismatch\");\r\n body.push(formatStringOrScope);\r\n return Codegen;\r\n }\r\n\r\n function toString(functionNameOverride) {\r\n return \"function \" + (functionNameOverride || functionName || \"\") + \"(\" + (functionParams && functionParams.join(\",\") || \"\") + \"){\\n \" + body.join(\"\\n \") + \"\\n}\";\r\n }\r\n\r\n Codegen.toString = toString;\r\n return Codegen;\r\n}\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @function codegen\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * When set to `true`, codegen will log generated code to console. Useful for debugging.\r\n * @name util.codegen.verbose\r\n * @type {boolean}\r\n */\r\ncodegen.verbose = false;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/codegen/index.js\n// module id = 46\n// module chunks = 0","\"use strict\";\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = require(\"@protobufjs/aspromise\"),\r\n inquire = require(\"@protobufjs/inquire\");\r\n\r\nvar fs = inquire(\"fs\");\r\n\r\n/**\r\n * Node-style callback as used by {@link util.fetch}.\r\n * @typedef FetchCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {string} [contents] File contents, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Options as used by {@link util.fetch}.\r\n * @typedef FetchOptions\r\n * @type {Object}\r\n * @property {boolean} [binary=false] Whether expecting a binary response\r\n * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} filename File path or url\r\n * @param {FetchOptions} options Fetch options\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nfunction fetch(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = {};\r\n } else if (!options)\r\n options = {};\r\n\r\n if (!callback)\r\n return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this\r\n\r\n // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.\r\n if (!options.xhr && fs && fs.readFile)\r\n return fs.readFile(filename, function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch.xhr(filename, options, callback)\r\n : err\r\n ? callback(err)\r\n : callback(null, options.binary ? contents : contents.toString(\"utf8\"));\r\n });\r\n\r\n // use the XHR version otherwise.\r\n return fetch.xhr(filename, options, callback);\r\n}\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchOptions} [options] Fetch options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n\r\n/**/\r\nfetch.xhr = function fetch_xhr(filename, options, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n\r\n if (xhr.readyState !== 4)\r\n return undefined;\r\n\r\n // local cors security errors return status 0 / empty string, too. afaik this cannot be\r\n // reliably distinguished from an actually empty file for security reasons. feel free\r\n // to send a pull request if you are aware of a solution.\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n\r\n // if binary data is expected, make sure that some sort of array is returned, even if\r\n // ArrayBuffers are not supported. the binary string fallback, however, is unsafe.\r\n if (options.binary) {\r\n var buffer = xhr.response;\r\n if (!buffer) {\r\n buffer = [];\r\n for (var i = 0; i < xhr.responseText.length; ++i)\r\n buffer.push(xhr.responseText.charCodeAt(i) & 255);\r\n }\r\n return callback(null, typeof Uint8Array !== \"undefined\" ? new Uint8Array(buffer) : buffer);\r\n }\r\n return callback(null, xhr.responseText);\r\n };\r\n\r\n if (options.binary) {\r\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers\r\n if (\"overrideMimeType\" in xhr)\r\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\r\n xhr.responseType = \"arraybuffer\";\r\n }\r\n\r\n xhr.open(\"GET\", filename);\r\n xhr.send();\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/fetch/index.js\n// module id = 47\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * A minimal path module to resolve Unix, Windows and URL paths alike.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar path = exports;\r\n\r\nvar isAbsolute =\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\npath.isAbsolute = function isAbsolute(path) {\r\n return /^(?:\\/|\\w+:)/.test(path);\r\n};\r\n\r\nvar normalize =\r\n/**\r\n * Normalizes the specified path.\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\npath.normalize = function normalize(path) {\r\n path = path.replace(/\\\\/g, \"/\")\r\n .replace(/\\/{2,}/g, \"/\");\r\n var parts = path.split(\"/\"),\r\n absolute = isAbsolute(path),\r\n prefix = \"\";\r\n if (absolute)\r\n prefix = parts.shift() + \"/\";\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === \"..\") {\r\n if (i > 0 && parts[i - 1] !== \"..\")\r\n parts.splice(--i, 2);\r\n else if (absolute)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === \".\")\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join(\"/\");\r\n};\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path to the origin file\r\n * @param {string} includePath Include path relative to origin path\r\n * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the include file\r\n */\r\npath.resolve = function resolve(originPath, includePath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n includePath = normalize(includePath);\r\n if (isAbsolute(includePath))\r\n return includePath;\r\n if (!alreadyNormalized)\r\n originPath = normalize(originPath);\r\n return (originPath = originPath.replace(/(?:\\/|^)[^/]+$/, \"\")).length ? normalize(originPath + \"/\" + includePath) : includePath;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/path/index.js\n// module id = 48\n// module chunks = 0","module.exports = {\"nested\":{\"proto\":{\"nested\":{\"Error\":{\"fields\":{\"code\":{\"type\":\"uint32\",\"id\":1},\"message\":{\"type\":\"string\",\"id\":2}}},\"MethodType\":{\"values\":{\"CONNECT\":0,\"SUBSCRIBE\":1,\"UNSUBSCRIBE\":2,\"PUBLISH\":3,\"PRESENCE\":4,\"PRESENCE_STATS\":5,\"HISTORY\":6,\"PING\":7,\"SEND\":8,\"RPC\":9,\"REFRESH\":10,\"SUB_REFRESH\":11}},\"Command\":{\"fields\":{\"id\":{\"type\":\"uint32\",\"id\":1},\"method\":{\"type\":\"MethodType\",\"id\":2},\"params\":{\"type\":\"bytes\",\"id\":3}}},\"Reply\":{\"fields\":{\"id\":{\"type\":\"uint32\",\"id\":1},\"error\":{\"type\":\"Error\",\"id\":2},\"result\":{\"type\":\"bytes\",\"id\":3}}},\"PushType\":{\"values\":{\"PUBLICATION\":0,\"JOIN\":1,\"LEAVE\":2,\"UNSUB\":3,\"MESSAGE\":4}},\"Push\":{\"fields\":{\"type\":{\"type\":\"PushType\",\"id\":1},\"channel\":{\"type\":\"string\",\"id\":2},\"data\":{\"type\":\"bytes\",\"id\":3}}},\"ClientInfo\":{\"fields\":{\"user\":{\"type\":\"string\",\"id\":1},\"client\":{\"type\":\"string\",\"id\":2},\"connInfo\":{\"type\":\"bytes\",\"id\":3},\"chanInfo\":{\"type\":\"bytes\",\"id\":4}}},\"Publication\":{\"fields\":{\"seq\":{\"type\":\"uint32\",\"id\":1},\"gen\":{\"type\":\"uint32\",\"id\":2},\"uid\":{\"type\":\"string\",\"id\":3},\"data\":{\"type\":\"bytes\",\"id\":4},\"info\":{\"type\":\"ClientInfo\",\"id\":5}}},\"Join\":{\"fields\":{\"info\":{\"type\":\"ClientInfo\",\"id\":1}}},\"Leave\":{\"fields\":{\"info\":{\"type\":\"ClientInfo\",\"id\":1}}},\"Unsub\":{\"fields\":{\"resubscribe\":{\"type\":\"bool\",\"id\":1}}},\"Message\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}},\"ConnectRequest\":{\"fields\":{\"token\":{\"type\":\"string\",\"id\":1},\"data\":{\"type\":\"bytes\",\"id\":2}}},\"ConnectResult\":{\"fields\":{\"client\":{\"type\":\"string\",\"id\":1},\"version\":{\"type\":\"string\",\"id\":2},\"expires\":{\"type\":\"bool\",\"id\":3},\"ttl\":{\"type\":\"uint32\",\"id\":4},\"data\":{\"type\":\"bytes\",\"id\":5}}},\"RefreshRequest\":{\"fields\":{\"token\":{\"type\":\"string\",\"id\":1}}},\"RefreshResult\":{\"fields\":{\"client\":{\"type\":\"string\",\"id\":1},\"version\":{\"type\":\"string\",\"id\":2},\"expires\":{\"type\":\"bool\",\"id\":3},\"ttl\":{\"type\":\"uint32\",\"id\":4}}},\"SubscribeRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1},\"token\":{\"type\":\"string\",\"id\":2},\"recover\":{\"type\":\"bool\",\"id\":3},\"seq\":{\"type\":\"uint32\",\"id\":4},\"gen\":{\"type\":\"uint32\",\"id\":5},\"epoch\":{\"type\":\"string\",\"id\":6}}},\"SubscribeResult\":{\"fields\":{\"expires\":{\"type\":\"bool\",\"id\":1},\"ttl\":{\"type\":\"uint32\",\"id\":2},\"recoverable\":{\"type\":\"bool\",\"id\":3},\"seq\":{\"type\":\"uint32\",\"id\":4},\"gen\":{\"type\":\"uint32\",\"id\":5},\"epoch\":{\"type\":\"string\",\"id\":6},\"publications\":{\"rule\":\"repeated\",\"type\":\"Publication\",\"id\":7},\"recovered\":{\"type\":\"bool\",\"id\":8}}},\"SubRefreshRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1},\"token\":{\"type\":\"string\",\"id\":2}}},\"SubRefreshResult\":{\"fields\":{\"expires\":{\"type\":\"bool\",\"id\":1},\"ttl\":{\"type\":\"uint32\",\"id\":2}}},\"UnsubscribeRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"UnsubscribeResult\":{\"fields\":{}},\"PublishRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1},\"data\":{\"type\":\"bytes\",\"id\":2}}},\"PublishResult\":{\"fields\":{}},\"PresenceRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"PresenceResult\":{\"fields\":{\"presence\":{\"keyType\":\"string\",\"type\":\"ClientInfo\",\"id\":1}}},\"PresenceStatsRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"PresenceStatsResult\":{\"fields\":{\"numClients\":{\"type\":\"uint32\",\"id\":1},\"numUsers\":{\"type\":\"uint32\",\"id\":2}}},\"HistoryRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"HistoryResult\":{\"fields\":{\"publications\":{\"rule\":\"repeated\",\"type\":\"Publication\",\"id\":1}}},\"PingRequest\":{\"fields\":{}},\"PingResult\":{\"fields\":{}},\"RPCRequest\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}},\"RPCResult\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}},\"SendRequest\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}}}}}}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/client.proto.json\n// module id = 49\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 6c4bc52bd851320564c5","webpack:///./node_modules/protobufjs/src/util.js","webpack:///./node_modules/protobufjs/src/enum.js","webpack:///./node_modules/protobufjs/src/util/minimal.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/protobufjs/src/object.js","webpack:///./node_modules/protobufjs/src/field.js","webpack:///./node_modules/events/events.js","webpack:///./src/utils.js","webpack:///./node_modules/protobufjs/src/namespace.js","webpack:///./node_modules/protobufjs/src/types.js","webpack:///./src/centrifuge.js","webpack:///./src/subscription.js","webpack:///./src/json.js","webpack:///./node_modules/protobufjs/src/writer.js","webpack:///./node_modules/protobufjs/src/reader.js","webpack:///./node_modules/protobufjs/src/oneof.js","webpack:///./node_modules/protobufjs/src/message.js","webpack:///./node_modules/@protobufjs/aspromise/index.js","webpack:///./node_modules/@protobufjs/inquire/index.js","webpack:///./node_modules/protobufjs/src/rpc.js","webpack:///./node_modules/protobufjs/src/roots.js","webpack:///./node_modules/protobufjs/src/encoder.js","webpack:///./node_modules/protobufjs/src/type.js","webpack:///./node_modules/protobufjs/src/mapfield.js","webpack:///./node_modules/protobufjs/src/service.js","webpack:///./node_modules/protobufjs/src/method.js","webpack:///./node_modules/protobufjs/src/decoder.js","webpack:///./node_modules/protobufjs/src/verifier.js","webpack:///./node_modules/protobufjs/src/converter.js","webpack:///./node_modules/protobufjs/src/wrappers.js","webpack:///./node_modules/protobufjs/src/root.js","webpack:///./src/index_protobuf.js","webpack:///./src/protobuf.js","webpack:///./node_modules/protobufjs/light.js","webpack:///./node_modules/protobufjs/src/index-light.js","webpack:///./node_modules/protobufjs/src/index-minimal.js","webpack:///./node_modules/@protobufjs/base64/index.js","webpack:///./node_modules/@protobufjs/eventemitter/index.js","webpack:///./node_modules/@protobufjs/float/index.js","webpack:///./node_modules/@protobufjs/utf8/index.js","webpack:///./node_modules/@protobufjs/pool/index.js","webpack:///./node_modules/protobufjs/src/util/longbits.js","webpack:///./node_modules/protobufjs/src/writer_buffer.js","webpack:///./node_modules/protobufjs/src/reader_buffer.js","webpack:///./node_modules/protobufjs/src/rpc/service.js","webpack:///./node_modules/@protobufjs/codegen/index.js","webpack:///./node_modules/@protobufjs/fetch/index.js","webpack:///./node_modules/@protobufjs/path/index.js","webpack:///./src/client.proto.json"],"names":["startsWith","isFunction","log","backoff","errorExists","value","prefix","lastIndexOf","undefined","level","args","global","console","logger","apply","step","min","max","jitter","Math","random","interval","pow","floor","data","error","_errorTimeout","_errorConnectionClosed","Centrifuge","url","options","_url","_sockjs","_isSockjs","_binary","_methodType","_pushType","_encoder","_decoder","_status","_reconnect","_reconnecting","_transport","_transportName","_transportClosed","_messageId","_clientID","_refreshRequired","_subs","_lastSeq","_lastGen","_lastEpoch","_messages","_isBatching","_isSubscribeBatching","_privateChannels","_numRefreshFailed","_refreshTimeout","_pingTimeout","_pongTimeout","_subRefreshTimeouts","_retries","_callbacks","_latency","_latencyStart","_connectData","_token","_xhrID","_xhrs","_config","debug","sockjs","promise","minRetry","maxRetry","timeout","ping","pingInterval","pongWaitTimeout","privateChannelPrefix","onTransportClose","sockjsServer","sockjsTransports","refreshEndpoint","refreshHeaders","refreshParams","refreshData","refreshAttempts","refreshInterval","onRefreshFailed","onRefresh","subscribeEndpoint","subscribeHeaders","subscribeParams","subRefreshInterval","onPrivateSubscribe","_configure","token","params","headers","callback","query","_debug","JSON","stringify","xhr","XMLHttpRequest","ActiveXObject","i","hasOwnProperty","length","encodeURIComponent","open","withCredentials","setRequestHeader","headerName","onreadystatechange","readyState","status","parsed","parse","responseText","e","_log","setTimeout","send","arguments","WebSocket","format","_formatOverride","Error","configuration","Object","assign","indexOf","_setFormat","SockJS","newStatus","xhrID","abort","reconnect","_stopPing","id","callbacks","clearTimeout","errback","_createErrorObject","channel","sub","_isSuccess","_triggerUnsubscribe","_recover","_shouldResubscribe","_setSubscribing","_setUnsubscribed","_abortInflightXHRs","_clearSubRefreshTimeout","transport","OPEN","commands","_isTransportOpen","command","encodeCommands","sockjsOptions","transports","server","_websocketSupported","binaryType","onopen","onheartbeat","_restartPing","msg","Date","_call","then","_connectResponse","decodeCommandResult","CONNECT","resolveCtx","result","next","err","rejectCtx","code","_disconnect","onerror","onclose","reason","needReconnect","closeEvent","advice","event","_getRetryInterval","_refresh","_connect","onmessage","_dataReceived","method","RPC","isConnected","Promise","reject","SEND","sent","_transportSend","resolve","PUBLISH","replies","decodeReplies","p","_dispatchReply","_addMessage","_registerCall","_setStatus","_setupTransport","shouldReconnect","_isDisconnected","_clearConnectedState","emit","close","_refreshFailed","clientID","_newXHRID","cb","resp","round","REFRESH","_refreshResponse","_refreshError","context","_ajax","expires","client","_getTTLMilliseconds","ttl","channelsData","channels","channelData","SUB_REFRESH","_getSub","_subRefreshResponse","_subRefreshError","subRefreshTimeout","_subRefresh","isResubscribe","_setNew","SUBSCRIBE","startSubscribeBatching","_subscribe","stopSubscribeBatching","recover","_needRecover","seq","_getLastSeq","gen","_getLastGen","epoch","_getLastEpoch","_subscribeResponse","_subscribeError","UNSUBSCRIBE","wasReconnecting","_resetRetry","getTime","startBatching","stopBatching","_startPing","ctx","latency","_isSubscribing","message","_setSubscribeError","recovered","_setSubscribeSuccess","pubs","publications","reverse","_handlePublication","recoverable","_recoverable","reply","join","leave","unsub","unsubscribe","resubscribe","subscribe","pub","push","decodePush","type","PUBLICATION","decodePushData","MESSAGE","_handleMessage","JOIN","_handleJoin","LEAVE","_handleLeave","UNSUB","_handleUnsub","_handleReply","_handlePush","messages","slice","PING","_pingResponse","lastSeq","lastGen","lastEpoch","errObject","_nextMessageId","_isConnected","_ping","_flush","authChannels","batch","events","currentSub","_setEvents","_isUnsubscribed","_STATE_NEW","_STATE_SUBSCRIBING","_STATE_SUCCESS","_STATE_ERROR","_STATE_UNSUBSCRIBED","Subscription","centrifuge","_centrifuge","_error","_isResubscribe","_ready","_subscriptionPromise","_noResubscribe","_initializePromise","_promises","on","errContext","_resolve","_reject","prototype","toString","call","knownEvents","l","ev","successContext","_getSubscribeSuccessContext","to","_getSubscribeErrorContext","noResubscribe","needTrigger","subscribeErrorContext","_unsubscribe","methodCallPromise","subPromise","_isError","res","rej","_methodCall","PRESENCE","PRESENCE_STATS","HISTORY","JsonMethodType","JsonPushType","JsonEncoder","encodedCommands","JsonDecoder","encodedReplies","split","methodType","pushType","protobuf","require","proto","Root","fromJSON","methodValues","lookupEnum","values","protobufMethodType","methodSchema","lookupType","protobufPushType","PushSchema","Push","Command","Reply","ProtobufEncoder","writer","Writer","create","encode","finish","encodeDelimited","ProtobufDecoder","reader","Reader","Uint8Array","pos","len","decodeDelimited","_decode","decode","CentrifugeProtobuf"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;AC7DA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,kBAAkB;AAC/B;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,uDAAuD,yBAAyB,EAAE;AAClF;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA,cAAc,KAAK;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB,0CAA0C,iCAAiC;AAC3E,oDAAoD,iCAAiC;AACrF;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C,gCAAgC;AAC5E;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;ACjLD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,uBAAuB;AAClC,WAAW,kBAAkB;AAC7B,WAAW,OAAO;AAClB,WAAW,uBAAuB;AAClC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,iDAAiD;;AAEjD;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA,mDAAmD,iBAAiB;AACpE;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,uBAAuB;AACrC,cAAc,kBAAkB;AAChC;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;;;;;;;8CCpLA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,oFAAoF;;AAEpF;AACA;AACA,UAAU;AACV;AACA;AACA,mDAAmD,kCAAkC;;AAErF;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,gBAAgB;AAC3B,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA,kCAAkC,EAAE;;AAEpC;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B,WAAW,kBAAkB;AAC7B,WAAW,QAAQ;AACnB,aAAa,kBAAkB;AAC/B;AACA,oCAAoC;AACpC,4CAA4C,iBAAiB;AAC7D;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,mBAAmB;AAChC;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA,gDAAgD,kBAAkB,gBAAgB,EAAE,EAAE;;AAEtF;AACA;AACA;AACA;AACA,kDAAkD,mCAAmC;;AAErF;AACA;AACA;;AAEA;;AAEA,0DAA0D,kBAAkB,aAAa,EAAE,EAAE;;AAE7F;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,kBAAkB;AAC7B;AACA;AACA,oCAAoC;AACpC,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA,kCAAkC,uBAAuB;AACzD;AACA,UAAU;AACV,aAAa,iBAAiB;AAC9B;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,YAAY;AACzB;AACA;AACA;AACA,mBAAmB,uBAAuB;AAC1C;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,uBAAuB;AACvB,+DAA+D,QAAQ;AACvE;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,uBAAuB;AACzD;AACA,UAAU;AACV,WAAW,iBAAiB;AAC5B,aAAa;AACb;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,YAAY;AACzB;AACA;;AAEA;AACA,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;;AAEA;AACA,wCAAwC,qBAAqB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpZA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;ACpBA;AACA;;AAEA;;AAEA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,kBAAkB;AAC7B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,2BAA2B;;AAE3B;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA,WAAW,iBAAiB;AAC5B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iBAAiB;AAC5B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,WAAW,QAAQ;AACnB,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA,oDAAoD,iBAAiB;AACrE;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;ACtMA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS;;AAET;;AAEA;AACA,uDAAuD,0BAA0B;AACjF;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,yBAAyB;AACpC,WAAW,yBAAyB;AACpC,WAAW,kBAAkB;AAC7B;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB,YAAY,UAAU;AACtB;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,YAAY;AAC/C;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,yBAAyB;AACpC,WAAW,yBAAyB;AACpC,WAAW,kBAAkB;AAC7B,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,+DAA+D;;AAE/D;AACA;AACA,cAAc;AACd;AACA,qBAAqB;;AAErB;AACA;AACA,cAAc;AACd;AACA,iBAAiB;;AAEjB;AACA;AACA,cAAc;AACd;AACA,sCAAsC;;AAEtC;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,kBAAkB;AAChC;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB,YAAY,MAAM;AAClB;AACA;;AAEA;AACA;;AAEA,uEAAuE;AACvE;AACA;AACA;AACA;AACA,kGAAkG;AAClG;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sCAAsC,cAAc,MAAM,iBAAiB;AAC3E;AACA,UAAU;AACV,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,8IAA8I;AACzJ,WAAW,iCAAiC;AAC5C,WAAW,EAAE;AACb,aAAa,eAAe;AAC5B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sEAAsE,0BAA0B;AAChG;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,sBAAsB;AACjC,WAAW,iCAAiC;AAC5C,aAAa,eAAe;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;ACjXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;QC7SgBA,U,GAAAA,U;QAIAC,U,GAAAA,U;QAOAC,G,GAAAA,G;QAUAC,O,GAAAA,O;QAOAC,W,GAAAA,W;AA5BT,SAASJ,UAAT,CAAoBK,KAApB,EAA2BC,MAA3B,EAAmC;AACxC,SAAOD,MAAME,WAAN,CAAkBD,MAAlB,EAA0B,CAA1B,MAAiC,CAAxC;AACD;;AAEM,SAASL,UAAT,CAAoBI,KAApB,EAA2B;AAChC,MAAIA,UAAUG,SAAV,IAAuBH,UAAU,IAArC,EAA2C;AACzC,WAAO,KAAP;AACD;AACD,SAAO,OAAOA,KAAP,KAAiB,UAAxB;AACD;;AAEM,SAASH,GAAT,CAAaO,KAAb,EAAoBC,IAApB,EAA0B;AAC/B,MAAIC,OAAOC,OAAX,EAAoB;AAClB,QAAMC,SAASF,OAAOC,OAAP,CAAeH,KAAf,CAAf;;AAEA,QAAIR,WAAWY,MAAX,CAAJ,EAAwB;AACtBA,aAAOC,KAAP,CAAaH,OAAOC,OAApB,EAA6BF,IAA7B;AACD;AACF;AACF;;AAEM,SAASP,OAAT,CAAiBY,IAAjB,EAAuBC,GAAvB,EAA4BC,GAA5B,EAAiC;AACtC,MAAMC,SAAS,MAAMC,KAAKC,MAAL,EAArB;AACA,MAAMC,WAAWF,KAAKH,GAAL,CAASC,GAAT,EAAcD,MAAMG,KAAKG,GAAL,CAAS,CAAT,EAAYP,OAAO,CAAnB,CAApB,CAAjB;;AAEA,SAAOI,KAAKI,KAAL,CAAW,CAAC,IAAIL,MAAL,IAAeG,QAA1B,CAAP;AACD;;AAEM,SAASjB,WAAT,CAAqBoB,IAArB,EAA2B;AAChC,SAAO,WAAWA,IAAX,IAAmBA,KAAKC,KAAL,KAAe,IAAzC;AACD,E;;;;;;;;AC9BD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,kBAAkB;AAC7B;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,kBAAkB;AAC7B,aAAa,UAAU;AACvB,YAAY,UAAU;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,eAAe;AAC1B,aAAa,4BAA4B;AACzC;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,kCAAkC;AAC7C,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,kCAAkC;AAC7C,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,gBAAgB;AACnD;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,kBAAkB;AAC7B,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,4BAA4B;;AAE5B;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,cAAc,kBAAkB;AAChC,cAAc,gCAAgC;AAC9C;;AAEA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,gCAAgC;AAC3C,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA,gEAAgE,kBAAkB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,sBAAsB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,gBAAgB;AAClD,8BAA8B,wBAAwB;AACtD,WAAW,OAAO;AAClB,aAAa,uBAAuB;AACpC,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iBAAiB;AAC5B,aAAa,UAAU;AACvB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iBAAiB;AAC5B,aAAa,UAAU;AACvB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,EAAE;AACb,aAAa,UAAU;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB,aAAa,sBAAsB;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,KAAK;AACL,uBAAuB,6BAA6B;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,QAAQ;AACnB,aAAa,sBAAsB;AACnC;AACA;AACA;;AAEA;AACA,iBAAiB,gBAAgB;AACjC,qDAAqD,8BAA8B;AACnF,WAAW,gBAAgB;AAC3B,aAAa,KAAK;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,gBAAgB;AAC/C,qDAAqD,8BAA8B;AACnF,WAAW,gBAAgB;AAC3B,aAAa,KAAK;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,gBAAgB,KAAK,gBAAgB;AACtD,qDAAqD,8BAA8B;AACnF,WAAW,gBAAgB;AAC3B,aAAa,KAAK;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,sBAAsB;AACvC,qDAAqD,8BAA8B;AACnF,WAAW,gBAAgB;AAC3B,aAAa,QAAQ;AACrB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;AC9aA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB,cAAc,eAAe;AAC7B,cAAc,KAAK;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACnMA;;;;AACA;;;;AAEA;;AAOA;;;;;;;;;;AAQA,IAAMC,gBAAgB,SAAtB;AACA,IAAMC,yBAAyB,mBAA/B;;IAEaC,U,WAAAA,U;;;AAEX,sBAAYC,GAAZ,EAAiBC,OAAjB,EAA0B;AAAA;;AAAA;;AAExB,UAAKC,IAAL,GAAYF,GAAZ;AACA,UAAKG,OAAL,GAAe,IAAf;AACA,UAAKC,SAAL,GAAiB,KAAjB;AACA,UAAKC,OAAL,GAAe,KAAf;AACA,UAAKC,WAAL,GAAmB,IAAnB;AACA,UAAKC,SAAL,GAAiB,IAAjB;AACA,UAAKC,QAAL,GAAgB,IAAhB;AACA,UAAKC,QAAL,GAAgB,IAAhB;AACA,UAAKC,OAAL,GAAe,cAAf;AACA,UAAKC,UAAL,GAAkB,IAAlB;AACA,UAAKC,aAAL,GAAqB,KAArB;AACA,UAAKC,UAAL,GAAkB,IAAlB;AACA,UAAKC,cAAL,GAAsB,IAAtB;AACA,UAAKC,gBAAL,GAAwB,IAAxB;AACA,UAAKC,UAAL,GAAkB,CAAlB;AACA,UAAKC,SAAL,GAAiB,IAAjB;AACA,UAAKC,gBAAL,GAAwB,KAAxB;AACA,UAAKC,KAAL,GAAa,EAAb;AACA,UAAKC,QAAL,GAAgB,EAAhB;AACA,UAAKC,QAAL,GAAgB,EAAhB;AACA,UAAKC,UAAL,GAAkB,EAAlB;AACA,UAAKC,SAAL,GAAiB,EAAjB;AACA,UAAKC,WAAL,GAAmB,KAAnB;AACA,UAAKC,oBAAL,GAA4B,KAA5B;AACA,UAAKC,gBAAL,GAAwB,EAAxB;AACA,UAAKC,iBAAL,GAAyB,CAAzB;AACA,UAAKC,eAAL,GAAuB,IAAvB;AACA,UAAKC,YAAL,GAAoB,IAApB;AACA,UAAKC,YAAL,GAAoB,IAApB;AACA,UAAKC,mBAAL,GAA2B,EAA3B;AACA,UAAKC,QAAL,GAAgB,CAAhB;AACA,UAAKC,UAAL,GAAkB,EAAlB;AACA,UAAKC,QAAL,GAAgB,IAAhB;AACA,UAAKC,aAAL,GAAqB,IAArB;AACA,UAAKC,YAAL,GAAoB,IAApB;AACA,UAAKC,MAAL,GAAc,IAAd;AACA,UAAKC,MAAL,GAAc,CAAd;AACA,UAAKC,KAAL,GAAa,EAAb;AACA,UAAKC,OAAL,GAAe;AACbC,aAAO,KADM;AAEbC,cAAQ,IAFK;AAGbC,eAAS,IAHI;AAIbC,gBAAU,IAJG;AAKbC,gBAAU,KALG;AAMbC,eAAS,IANI;AAObC,YAAM,IAPO;AAQbC,oBAAc,KARD;AASbC,uBAAiB,IATJ;AAUbC,4BAAsB,GAVT;AAWbC,wBAAkB,IAXL;AAYbC,oBAAc,IAZD;AAabC,wBAAkB,CAChB,WADgB,EAEhB,eAFgB,EAGhB,eAHgB,EAIhB,aAJgB,EAKhB,oBALgB,EAMhB,iBANgB,EAOhB,aAPgB,EAQhB,aARgB,EAShB,oBATgB,EAUhB,eAVgB,CAbL;AAyBbC,uBAAiB,qBAzBJ;AA0BbC,sBAAgB,EA1BH;AA2BbC,qBAAe,EA3BF;AA4BbC,mBAAa,EA5BA;AA6BbC,uBAAiB,IA7BJ;AA8BbC,uBAAiB,IA9BJ;AA+BbC,uBAAiB,IA/BJ;AAgCbC,iBAAW,IAhCE;AAiCbC,yBAAmB,uBAjCN;AAkCbC,wBAAkB,EAlCL;AAmCbC,uBAAiB,EAnCJ;AAoCbC,0BAAoB,IApCP;AAqCbC,0BAAoB;AArCP,KAAf;AAuCA,UAAKC,UAAL,CAAgBlE,OAAhB;AA/EwB;AAgFzB;;;;6BAEQmE,K,EAAO;AACd,WAAK/B,MAAL,GAAc+B,KAAd;AACD;;;mCAEczE,I,EAAM;AACnB,WAAKyC,YAAL,GAAoBzC,IAApB;AACD;;;0BAEKK,G,EAAKqE,M,EAAQC,O,EAAS3E,I,EAAM4E,Q,EAAU;AAAA;;AAC1C,UAAIC,QAAQ,EAAZ;AACA,WAAKC,MAAL,CAAY,yBAAZ,EAAuCzE,GAAvC,EAA4C,WAA5C,EAAyD0E,KAAKC,SAAL,CAAehF,IAAf,CAAzD;;AAEA,UAAMiF,MAAO9F,OAAO+F,cAAP,GAAwB,IAAI/F,OAAO+F,cAAX,EAAxB,GAAsD,IAAI/F,OAAOgG,aAAX,CAAyB,mBAAzB,CAAnE;;AAEA,WAAK,IAAMC,CAAX,IAAgBV,MAAhB,EAAwB;AACtB,YAAIA,OAAOW,cAAP,CAAsBD,CAAtB,CAAJ,EAA8B;AAC5B,cAAIP,MAAMS,MAAN,GAAe,CAAnB,EAAsB;AACpBT,qBAAS,GAAT;AACD;AACDA,mBAASU,mBAAmBH,CAAnB,IAAwB,GAAxB,GAA8BG,mBAAmBb,OAAOU,CAAP,CAAnB,CAAvC;AACD;AACF;AACD,UAAIP,MAAMS,MAAN,GAAe,CAAnB,EAAsB;AACpBT,gBAAQ,MAAMA,KAAd;AACD;AACDI,UAAIO,IAAJ,CAAS,MAAT,EAAiBnF,MAAMwE,KAAvB,EAA8B,IAA9B;AACA,UAAI,qBAAqBI,GAAzB,EAA8B;AAC5BA,YAAIQ,eAAJ,GAAsB,IAAtB;AACD;;AAEDR,UAAIS,gBAAJ,CAAqB,kBAArB,EAAyC,gBAAzC;AACAT,UAAIS,gBAAJ,CAAqB,cAArB,EAAqC,kBAArC;AACA,WAAK,IAAMC,UAAX,IAAyBhB,OAAzB,EAAkC;AAChC,YAAIA,QAAQU,cAAR,CAAuBM,UAAvB,CAAJ,EAAwC;AACtCV,cAAIS,gBAAJ,CAAqBC,UAArB,EAAiChB,QAAQgB,UAAR,CAAjC;AACD;AACF;;AAEDV,UAAIW,kBAAJ,GAAyB,YAAM;AAC7B,YAAIX,IAAIY,UAAJ,KAAmB,CAAvB,EAA0B;AACxB,cAAIZ,IAAIa,MAAJ,KAAe,GAAnB,EAAwB;AACtB,gBAAI9F,cAAJ;AAAA,gBAAU+F,SAAS,KAAnB;AACA,gBAAI;AACF/F,sBAAO+E,KAAKiB,KAAL,CAAWf,IAAIgB,YAAf,CAAP;AACAF,uBAAS,IAAT;AACD,aAHD,CAGE,OAAOG,CAAP,EAAU;AACVtB,uBAAS;AACP3E,uBAAO,6BAA6BgF,IAAIgB,YADjC;AAEPH,wBAAQ,GAFD;AAGP9F,sBAAM;AAHC,eAAT;AAKD;AACD,gBAAI+F,MAAJ,EAAY;AAAE;AACZnB,uBAAS;AACP5E,sBAAMA,KADC;AAEP8F,wBAAQ;AAFD,eAAT;AAID;AACF,WAlBD,MAkBO;AACL,mBAAKK,IAAL,CAAU,oCAAV,EAAgDlB,IAAIa,MAApD;AACAlB,qBAAS;AACPkB,sBAAQb,IAAIa,MADL;AAEP9F,oBAAM;AAFC,aAAT;AAID;AACF;AACF,OA5BD;AA6BAoG,iBAAW;AAAA,eAAMnB,IAAIoB,IAAJ,CAAStB,KAAKC,SAAL,CAAehF,IAAf,CAAT,CAAN;AAAA,OAAX,EAAiD,EAAjD;AACA,aAAOiF,GAAP;AACD;;;2BAEM;AACL,sBAAI,MAAJ,EAAYqB,SAAZ;AACD;;;6BAEQ;AACP,UAAI,KAAKzD,OAAL,CAAaC,KAAb,KAAuB,IAA3B,EAAiC;AAC/B,wBAAI,OAAJ,EAAawD,SAAb;AACD;AACF;;;0CAEqB;AACpB,aAAO,EAAE,OAAOC,SAAP,KAAqB,UAArB,IAAmC,QAAOA,SAAP,yCAAOA,SAAP,OAAqB,QAA1D,CAAP;AACD;;;+BAEUC,M,EAAQ;AACjB,UAAI,KAAKC,eAAL,CAAqBD,MAArB,CAAJ,EAAkC;AAChC;AACD;AACD,UAAIA,WAAW,UAAf,EAA2B;AACzB,cAAM,IAAIE,KAAJ,CAAU,2EAAV,CAAN;AACD;AACD,WAAKhG,OAAL,GAAe,KAAf;AACA,WAAKC,WAAL;AACA,WAAKC,SAAL;AACA,WAAKC,QAAL,GAAgB,uBAAhB;AACA,WAAKC,QAAL,GAAgB,uBAAhB;AACD;;;oCAEe0F,M,EAAQ;AACtB,aAAO,KAAP;AACD;;;+BAEUG,a,EAAe;AACxB,UAAI,EAAE,aAAaxH,MAAf,CAAJ,EAA4B;AAC1B,cAAM,IAAIuH,KAAJ,CAAU,2BAAV,CAAN;AACD;;AAEDE,aAAOC,MAAP,CAAc,KAAKhE,OAAnB,EAA4B8D,iBAAiB,EAA7C;AACA,WAAK7B,MAAL,CAAY,mBAAZ,EAAiC,KAAKjC,OAAtC;;AAEA,UAAI,CAAC,KAAKtC,IAAV,EAAgB;AACd,cAAM,IAAImG,KAAJ,CAAU,cAAV,CAAN;AACD;;AAED,UAAI,uBAAW,KAAKnG,IAAhB,EAAsB,IAAtB,KAA+B,KAAKA,IAAL,CAAUuG,OAAV,CAAkB,iBAAlB,IAAuC,CAAC,CAA3E,EAA8E;AAC5E,aAAKC,UAAL,CAAgB,UAAhB;AACD,OAFD,MAEO;AACL,aAAKA,UAAL,CAAgB,MAAhB;AACD;;AAED,UAAI,uBAAW,KAAKxG,IAAhB,EAAsB,MAAtB,CAAJ,EAAmC;AACjC,aAAKuE,MAAL,CAAY,+CAAZ;AACA,YAAI,KAAKjC,OAAL,CAAaE,MAAb,KAAwB,IAA5B,EAAkC;AAChC,eAAK+B,MAAL,CAAY,uCAAZ;AACA,eAAKtE,OAAL,GAAe,KAAKqC,OAAL,CAAaE,MAA5B;AACD,SAHD,MAGO;AACL,cAAI,OAAO5D,OAAO6H,MAAd,KAAyB,WAA7B,EAA0C;AACxC,kBAAM,IAAIN,KAAJ,CAAU,sDAAV,CAAN;AACD;AACD,eAAK5B,MAAL,CAAY,6BAAZ;AACA,eAAKtE,OAAL,GAAerB,OAAO6H,MAAtB;AACD;AACF,OAZD,MAYO;AACL,aAAKlC,MAAL,CAAY,2CAAZ;AACD;AACF;;;+BAEUmC,S,EAAW;AACpB,UAAI,KAAKlG,OAAL,KAAiBkG,SAArB,EAAgC;AAC9B,aAAKnC,MAAL,CAAY,QAAZ,EAAsB,KAAK/D,OAA3B,EAAoC,IAApC,EAA0CkG,SAA1C;AACA,aAAKlG,OAAL,GAAekG,SAAf;AACD;AACF;;;sCAEiB;AAChB,aAAO,KAAKlG,OAAL,KAAiB,cAAxB;AACD;;;oCAEe;AACd,aAAO,KAAKA,OAAL,KAAiB,YAAxB;AACD;;;mCAEc;AACb,aAAO,KAAKA,OAAL,KAAiB,WAAxB;AACD;;;qCAEgB;AACf,aAAO,EAAE,KAAKM,UAAd;AACD;;;kCAEa;AACZ,WAAKyD,MAAL,CAAY,0BAAZ;AACA,WAAKzC,QAAL,GAAgB,CAAhB;AACD;;;wCAEmB;AAClB,UAAMxC,WAAW,oBAAQ,KAAKwC,QAAb,EAAuB,KAAKQ,OAAL,CAAaI,QAApC,EAA8C,KAAKJ,OAAL,CAAaK,QAA3D,CAAjB;;AAEA,WAAKb,QAAL,IAAiB,CAAjB;AACA,aAAOxC,QAAP;AACD;;;yCAEoB;AACnB,WAAK,IAAMqH,KAAX,IAAoB,KAAKtE,KAAzB,EAAgC;AAC9B,YAAI;AACF,eAAKA,KAAL,CAAWsE,KAAX,EAAkBC,KAAlB;AACD,SAFD,CAEE,OAAOjB,CAAP,EAAU;AACV,eAAKpB,MAAL,CAAY,oBAAZ,EAAkCoB,CAAlC;AACD;AACD,eAAO,KAAKtD,KAAL,CAAWsE,KAAX,CAAP;AACD;AACF;;;yCAEoBE,S,EAAW;AAC9B,WAAK9F,SAAL,GAAiB,IAAjB;AACA,WAAK+F,SAAL;;AAEA;AACA,WAAK,IAAMC,EAAX,IAAiB,KAAKhF,UAAtB,EAAkC;AAChC,YAAI,KAAKA,UAAL,CAAgB+C,cAAhB,CAA+BiC,EAA/B,CAAJ,EAAwC;AACtC,cAAMC,YAAY,KAAKjF,UAAL,CAAgBgF,EAAhB,CAAlB;AACAE,uBAAaD,UAAUpE,OAAvB;AACA,cAAMsE,UAAUF,UAAUE,OAA1B;AACA,cAAI,CAACA,OAAL,EAAc;AACZ;AACD;AACDA,kBAAQ,EAACxH,OAAO,KAAKyH,kBAAL,CAAwB,cAAxB,CAAR,EAAR;AACD;AACF;AACD,WAAKpF,UAAL,GAAkB,EAAlB;;AAEA;AACA,WAAK,IAAMqF,OAAX,IAAsB,KAAKnG,KAA3B,EAAkC;AAChC,YAAI,KAAKA,KAAL,CAAW6D,cAAX,CAA0BsC,OAA1B,CAAJ,EAAwC;AACtC,cAAMC,MAAM,KAAKpG,KAAL,CAAWmG,OAAX,CAAZ;;AAEA,cAAIP,SAAJ,EAAe;AACb,gBAAIQ,IAAIC,UAAJ,EAAJ,EAAsB;AACpBD,kBAAIE,mBAAJ;AACAF,kBAAIG,QAAJ,GAAe,IAAf;AACD;AACD,gBAAIH,IAAII,kBAAJ,EAAJ,EAA8B;AAC5BJ,kBAAIK,eAAJ;AACD;AACF,WARD,MAQO;AACLL,gBAAIM,gBAAJ;AACD;AACF;AACF;;AAED,WAAKC,kBAAL;;AAEA;AACA,UAAI,KAAKlG,eAAL,KAAyB,IAA7B,EAAmC;AACjCuF,qBAAa,KAAKvF,eAAlB;AACA,aAAKA,eAAL,GAAuB,IAAvB;AACD;;AAED;AACA,WAAK,IAAM0F,QAAX,IAAsB,KAAKvF,mBAA3B,EAAgD;AAC9C,YAAI,KAAKA,mBAAL,CAAyBiD,cAAzB,CAAwCsC,QAAxC,KAAoD,KAAKvF,mBAAL,CAAyBuF,QAAzB,CAAxD,EAA2F;AACzF,eAAKS,uBAAL,CAA6BT,QAA7B;AACD;AACF;AACD,WAAKvF,mBAAL,GAA2B,EAA3B;;AAEA,UAAI,CAAC,KAAKpB,UAAV,EAAsB;AACpB;AACA,aAAKQ,KAAL,GAAa,EAAb;AACD;AACF;;;uCAEkB;AACjB,UAAI,KAAKf,SAAT,EAAoB;AAClB,eAAO,KAAKS,UAAL,IACL,KAAKA,UAAL,CAAgBmH,SADX,IAEL,KAAKnH,UAAL,CAAgBmH,SAAhB,CAA0BxC,UAA1B,KAAyC,KAAK3E,UAAL,CAAgBmH,SAAhB,CAA0BC,IAFrE;AAGD;AACD,aAAO,KAAKpH,UAAL,IAAmB,KAAKA,UAAL,CAAgB2E,UAAhB,KAA+B,KAAK3E,UAAL,CAAgBoH,IAAzE;AACD;;;mCAEcC,Q,EAAU;AACvB,UAAI,CAACA,SAASjD,MAAd,EAAsB;AACpB,eAAO,IAAP;AACD;;AAED,UAAI,CAAC,KAAKkD,gBAAL,EAAL,EAA8B;AAC5B;AACA,aAAK,IAAIC,OAAT,IAAoBF,QAApB,EAA8B;AAC5B,cAAIjB,KAAKmB,QAAQnB,EAAjB;AACA,cAAI,EAAEA,MAAM,KAAKhF,UAAb,CAAJ,EAA8B;AAC5B;AACD;AACD,cAAMiF,YAAY,KAAKjF,UAAL,CAAgBgF,EAAhB,CAAlB;AACAE,uBAAa,KAAKlF,UAAL,CAAgBgF,EAAhB,EAAoBnE,OAAjC;AACA,iBAAO,KAAKb,UAAL,CAAgBgF,EAAhB,CAAP;AACA,cAAMG,UAAUF,UAAUE,OAA1B;AACAA,kBAAQ,EAACxH,OAAO,KAAKyH,kBAAL,CAAwBvH,sBAAxB,EAAgD,CAAhD,CAAR,EAAR;AACD;AACD,eAAO,KAAP;AACD;AACD,WAAKe,UAAL,CAAgBmF,IAAhB,CAAqB,KAAKxF,QAAL,CAAc6H,cAAd,CAA6BH,QAA7B,CAArB;AACA,aAAO,IAAP;AACD;;;sCAEiB;AAAA;;AAChB,WAAK9H,SAAL,GAAiB,KAAjB;;AAEA;AACA,UAAI,KAAKD,OAAL,KAAiB,IAArB,EAA2B;AACzB,YAAMmI,gBAAgB;AACpBC,sBAAY,KAAK/F,OAAL,CAAaa;AADL,SAAtB;;AAIA,YAAI,KAAKb,OAAL,CAAaY,YAAb,KAA8B,IAAlC,EAAwC;AACtCkF,wBAAcE,MAAd,GAAuB,KAAKhG,OAAL,CAAaY,YAApC;AACD;AACD,aAAKhD,SAAL,GAAiB,IAAjB;AACA,aAAKS,UAAL,GAAkB,IAAI,KAAKV,OAAT,CAAiB,KAAKD,IAAtB,EAA4B,IAA5B,EAAkCoI,aAAlC,CAAlB;AACD,OAVD,MAUO;AACL,YAAI,CAAC,KAAKG,mBAAL,EAAL,EAAiC;AAC/B,eAAKhE,MAAL,CAAY,gEAAZ;AACA;AACD;AACD,aAAK5D,UAAL,GAAkB,IAAIqF,SAAJ,CAAc,KAAKhG,IAAnB,CAAlB;AACA,YAAI,KAAKG,OAAL,KAAiB,IAArB,EAA2B;AACzB,eAAKQ,UAAL,CAAgB6H,UAAhB,GAA6B,aAA7B;AACD;AACF;;AAED,WAAK7H,UAAL,CAAgB8H,MAAhB,GAAyB,YAAM;AAC7B,eAAK5H,gBAAL,GAAwB,KAAxB;;AAEA,YAAI,OAAKX,SAAT,EAAoB;AAClB,iBAAKU,cAAL,GAAsB,YAAY,OAAKD,UAAL,CAAgBmH,SAAlD;AACA,iBAAKnH,UAAL,CAAgB+H,WAAhB,GAA8B;AAAA,mBAAM,OAAKC,YAAL,EAAN;AAAA,WAA9B;AACD,SAHD,MAGO;AACL,iBAAK/H,cAAL,GAAsB,WAAtB;AACD;;AAED;AACA,YAAMgI,MAAM;AACV;AADU,SAAZ;;AAIA,YAAI,OAAKzG,MAAL,IAAe,OAAKD,YAAxB,EAAsC;AACpC0G,cAAIzE,MAAJ,GAAa,EAAb;AACD;;AAED,YAAI,OAAKhC,MAAT,EAAiB;AACfyG,cAAIzE,MAAJ,CAAWD,KAAX,GAAmB,OAAK/B,MAAxB;AACD;;AAED,YAAI,OAAKD,YAAT,EAAuB;AACrB0G,cAAIzE,MAAJ,CAAW1E,IAAX,GAAkB,OAAKyC,YAAvB;AACD;;AAED,eAAKD,aAAL,GAAqB,IAAI4G,IAAJ,EAArB;AACA,eAAKC,KAAL,CAAWF,GAAX,EAAgBG,IAAhB,CAAqB,sBAAc;AACjC,iBAAKC,gBAAL,CAAsB,OAAKzI,QAAL,CAAc0I,mBAAd,CAAkC,OAAK7I,WAAL,CAAiB8I,OAAnD,EAA4DC,WAAWC,MAAvE,CAAtB;AACA,cAAID,WAAWE,IAAf,EAAqB;AACnBF,uBAAWE,IAAX;AACD;AACF,SALD,EAKG,qBAAa;AACd,cAAMC,MAAMC,UAAU7J,KAAtB;AACA,cAAI4J,IAAIE,IAAJ,KAAa,GAAjB,EAAsB;AAAE;AACtB,mBAAKxI,gBAAL,GAAwB,IAAxB;AACD;AACD,iBAAKyI,WAAL,CAAiB,eAAjB,EAAkC,IAAlC;AACA,cAAIF,UAAUF,IAAd,EAAoB;AAClBE,sBAAUF,IAAV;AACD;AACF,SAdD;AAeD,OA3CD;;AA6CA,WAAK1I,UAAL,CAAgB+I,OAAhB,GAA0B,iBAAS;AACjC,eAAKnF,MAAL,CAAY,uBAAZ,EAAqC7E,KAArC;AACD,OAFD;;AAIA,WAAKiB,UAAL,CAAgBgJ,OAAhB,GAA0B,sBAAc;AACtC,eAAK9I,gBAAL,GAAwB,IAAxB;AACA,YAAI+I,SAAShK,sBAAb;AACA,YAAIiK,gBAAgB,IAApB;;AAEA,YAAIC,cAAc,YAAYA,UAA1B,IAAwCA,WAAWF,MAAvD,EAA+D;AAC7D,cAAI;AACF,gBAAMG,SAASvF,KAAKiB,KAAL,CAAWqE,WAAWF,MAAtB,CAAf;AACA,mBAAKrF,MAAL,CAAY,4BAAZ,EAA0CwF,MAA1C;AACAH,qBAASG,OAAOH,MAAhB;AACAC,4BAAgBE,OAAOlD,SAAvB;AACD,WALD,CAKE,OAAOlB,CAAP,EAAU;AACViE,qBAASE,WAAWF,MAApB;AACA,mBAAKrF,MAAL,CAAY,0BAAZ,EAAwCqF,MAAxC;AACD;AACF;;AAED;AACA;AACA;AACA;AACA,YAAI,OAAKtH,OAAL,CAAaW,gBAAb,KAAkC,IAAtC,EAA4C;AAC1C,iBAAKX,OAAL,CAAaW,gBAAb,CAA8B;AAC5B+G,mBAAOF,UADqB;AAE5BF,oBAAQA,MAFoB;AAG5B/C,uBAAWgD;AAHiB,WAA9B;AAKD;;AAED,eAAKJ,WAAL,CAAiBG,MAAjB,EAAyBC,aAAzB;;AAEA,YAAI,OAAKpJ,UAAL,KAAoB,IAAxB,EAA8B;AAC5B,iBAAKC,aAAL,GAAqB,IAArB;AACA,cAAMpB,WAAW,OAAK2K,iBAAL,EAAjB;;AAEA,iBAAK1F,MAAL,CAAY,qBAAqBjF,QAArB,GAAgC,eAA5C;AACAuG,qBAAW,YAAM;AACf,gBAAI,OAAKpF,UAAL,KAAoB,IAAxB,EAA8B;AAC5B,kBAAI,OAAKO,gBAAT,EAA2B;AACzB,uBAAKkJ,QAAL;AACD,eAFD,MAEO;AACL,uBAAKC,QAAL;AACD;AACF;AACF,WARD,EAQG7K,QARH;AASD;AACF,OA9CD;;AAgDA,WAAKqB,UAAL,CAAgByJ,SAAhB,GAA4B,iBAAS;AACnC,eAAKC,aAAL,CAAmBL,MAAMvK,IAAzB;AACD,OAFD;AAGD;;;wBAEGA,I,EAAM;AAAA;;AACR,UAAMmJ,MAAM;AACV0B,gBAAQ,KAAKlK,WAAL,CAAiBmK,GADf;AAEVpG,gBAAQ;AACN1E,gBAAMA;AADA;AAFE,OAAZ;;AAOA,UAAI,CAAC,KAAK+K,WAAL,EAAL,EAAyB;AACvB,eAAOC,QAAQC,MAAR,CAAe,KAAKvD,kBAAL,CAAwBvH,sBAAxB,EAAgD,CAAhD,CAAf,CAAP;AACD;;AAED,aAAO,KAAKkJ,KAAL,CAAWF,GAAX,EAAgBG,IAAhB,CAAqB,sBAAc;AACxC,YAAII,WAAWE,IAAf,EAAqB;AACnBF,qBAAWE,IAAX;AACD;AACD,eAAO,OAAK9I,QAAL,CAAc0I,mBAAd,CAAkC,OAAK7I,WAAL,CAAiBmK,GAAnD,EAAwDpB,WAAWC,MAAnE,CAAP;AACD,OALM,EAKJ,qBAAa;AACd,YAAIG,UAAUF,IAAd,EAAoB;AAClBE,oBAAUF,IAAV;AACD;AACD,eAAOE,UAAU7J,KAAjB;AACD,OAVM,CAAP;AAWD;;;yBAEID,I,EAAM;AACT,UAAMmJ,MAAM;AACV0B,gBAAQ,KAAKlK,WAAL,CAAiBuK,IADf;AAEVxG,gBAAQ;AACN1E,gBAAMA;AADA;AAFE,OAAZ;;AAOA,UAAI,CAAC,KAAK+K,WAAL,EAAL,EAAyB;AACvB,eAAOC,QAAQC,MAAR,CAAe,KAAKvD,kBAAL,CAAwBvH,sBAAxB,EAAgD,CAAhD,CAAf,CAAP;AACD;;AAED,UAAMgL,OAAO,KAAKC,cAAL,CAAoB,CAACjC,GAAD,CAApB,CAAb,CAZS,CAYgC;AACzC,UAAI,CAACgC,IAAL,EAAW;AACT,eAAOH,QAAQC,MAAR,CAAe,KAAKvD,kBAAL,CAAwBvH,sBAAxB,EAAgD,CAAhD,CAAf,CAAP;AACD;AACD,aAAO6K,QAAQK,OAAR,CAAgB,EAAhB,CAAP;AACD;;;4BAEO1D,O,EAAS3H,I,EAAM;AACrB,UAAMmJ,MAAM;AACV0B,gBAAQ,KAAKlK,WAAL,CAAiB2K,OADf;AAEV5G,gBAAQ;AACNiD,mBAASA,OADH;AAEN3H,gBAAMA;AAFA;AAFE,OAAZ;;AAQA,UAAI,CAAC,KAAK+K,WAAL,EAAL,EAAyB;AACvB,eAAOC,QAAQC,MAAR,CAAe,KAAKvD,kBAAL,CAAwBvH,sBAAxB,EAAgD,CAAhD,CAAf,CAAP;AACD;;AAED,aAAO,KAAKkJ,KAAL,CAAWF,GAAX,EAAgBG,IAAhB,CAAqB,kBAAU;AACpC,YAAIK,OAAOC,IAAX,EAAiB;AACfD,iBAAOC,IAAP;AACD;AACD,eAAO,EAAP;AACD,OALM,CAAP;AAMD;;;kCAEa5J,I,EAAM;AAAA;;AAClB,UAAMuL,UAAU,KAAKzK,QAAL,CAAc0K,aAAd,CAA4BxL,IAA5B,CAAhB;AACA;AACA;AACA;AACA;AACA,UAAIyL,IAAIT,QAAQK,OAAR,EAAR;;AANkB,iCAOPjG,CAPO;AAQhB,YAAImG,QAAQlG,cAAR,CAAuBD,CAAvB,CAAJ,EAA+B;AAC7BqG,cAAIA,EAAEnC,IAAF,CAAO,YAAM;AACf,mBAAO,OAAKoC,cAAL,CAAoBH,QAAQnG,CAAR,CAApB,CAAP;AACD,WAFG,CAAJ;AAGD;AAZe;;AAOlB,WAAK,IAAMA,CAAX,IAAgBmG,OAAhB,EAAyB;AAAA,cAAdnG,CAAc;AAMxB;AACD,WAAK8D,YAAL;AACD;;;0BAEKC,G,EAAK;AAAA;;AACT,aAAO,IAAI6B,OAAJ,CAAY,UAACK,OAAD,EAAUJ,MAAV,EAAqB;AACtC,YAAM3D,KAAK,OAAKqE,WAAL,CAAiBxC,GAAjB,CAAX;AACA,eAAKyC,aAAL,CAAmBtE,EAAnB,EAAuB+D,OAAvB,EAAgCJ,MAAhC;AACD,OAHM,CAAP;AAID;;;+BAEU;AACT,UAAI,KAAKF,WAAL,EAAJ,EAAwB;AACtB,aAAKjG,MAAL,CAAY,uCAAZ;AACA;AACD;AACD,UAAI,KAAK/D,OAAL,KAAiB,YAArB,EAAmC;AACjC;AACD;;AAED,WAAK+D,MAAL,CAAY,kBAAZ;AACA,WAAK+G,UAAL,CAAgB,YAAhB;AACA,WAAKvK,SAAL,GAAiB,IAAjB;AACA,WAAKN,UAAL,GAAkB,IAAlB;AACA,WAAK8K,eAAL;AACD;;;gCAEW3B,M,EAAQ4B,e,EAAiB;;AAEnC,UAAI,KAAKC,eAAL,EAAJ,EAA4B;AAC1B;AACD;;AAED,WAAKlH,MAAL,CAAY,eAAZ,EAA6BqF,MAA7B,EAAqC4B,eAArC;;AAEA,UAAM3E,YAAY2E,mBAAmB,KAArC;;AAEA,UAAI3E,cAAc,KAAlB,EAAyB;AACvB,aAAKpG,UAAL,GAAkB,KAAlB;AACD;;AAED,WAAKiL,oBAAL,CAA0B7E,SAA1B;;AAEA,UAAI,CAAC,KAAK4E,eAAL,EAAL,EAA6B;AAC3B,aAAKH,UAAL,CAAgB,cAAhB;AACA,YAAI,KAAK5J,eAAT,EAA0B;AACxBuF,uBAAa,KAAKvF,eAAlB;AACA,eAAKA,eAAL,GAAuB,IAAvB;AACD;AACD,YAAI,KAAKhB,aAAL,KAAuB,KAA3B,EAAkC;AAChC,eAAKiL,IAAL,CAAU,YAAV,EAAwB;AACtB/B,oBAAQA,MADc;AAEtB/C,uBAAWA;AAFW,WAAxB;AAID;AACF;;AAED,UAAI,CAAC,KAAKhG,gBAAV,EAA4B;AAC1B,aAAKF,UAAL,CAAgBiL,KAAhB;AACD;AACF;;;qCAEgB;AACf,WAAKnK,iBAAL,GAAyB,CAAzB;AACA,UAAI,CAAC,KAAKgK,eAAL,EAAL,EAA6B;AAC3B,aAAKhC,WAAL,CAAiB,gBAAjB,EAAmC,KAAnC;AACD;AACD,UAAI,KAAKnH,OAAL,CAAaoB,eAAb,KAAiC,IAArC,EAA2C;AACzC,aAAKpB,OAAL,CAAaoB,eAAb;AACD;AACF;;;+BAEU;AAAA;;AACT;AACA,WAAKa,MAAL,CAAY,eAAZ;;AAEA,UAAI,KAAKjC,OAAL,CAAakB,eAAb,KAAiC,CAArC,EAAwC;AACtC,aAAKe,MAAL,CAAY,+DAAZ;AACA,aAAKsH,cAAL;AACA;AACD;;AAED,UAAI,KAAKnK,eAAL,KAAyB,IAA7B,EAAmC;AACjCuF,qBAAa,KAAKvF,eAAlB;AACA,aAAKA,eAAL,GAAuB,IAAvB;AACD;;AAED,UAAMoK,WAAW,KAAK/K,SAAtB;AACA,UAAM4F,QAAQ,KAAKoF,SAAL,EAAd;;AAEA,UAAMC,KAAK,SAALA,EAAK,CAACC,IAAD,EAAU;AACnB,YAAItF,SAAS,OAAKtE,KAAlB,EAAyB;AACvB,iBAAO,OAAKA,KAAL,CAAWsE,KAAX,CAAP;AACD;AACD,YAAI,OAAK5F,SAAL,KAAmB+K,QAAvB,EAAiC;AAC/B;AACD;AACD,YAAIG,KAAKvM,KAAL,IAAcuM,KAAK1G,MAAL,KAAgB,GAAlC,EAAuC;AACrC;AACA;AACA,cAAI0G,KAAKvM,KAAT,EAAgB;AACd,mBAAK6E,MAAL,CAAY,mCAAZ,EAAiD0H,KAAKvM,KAAtD;AACD,WAFD,MAEO;AACL,mBAAK6E,MAAL,CAAY,sDAAZ,EAAoE0H,KAAK1G,MAAzE;AACD;AACD,iBAAK9D,iBAAL;AACA,cAAI,OAAKC,eAAL,KAAyB,IAA7B,EAAmC;AACjCuF,yBAAa,OAAKvF,eAAlB;AACA,mBAAKA,eAAL,GAAuB,IAAvB;AACD;AACD,cAAI,OAAKY,OAAL,CAAakB,eAAb,KAAiC,IAAjC,IAAyC,OAAK/B,iBAAL,IAA0B,OAAKa,OAAL,CAAakB,eAApF,EAAqG;AACnG,mBAAKqI,cAAL;AACA;AACD;AACD,cAAM1M,SAASC,KAAK8M,KAAL,CAAW9M,KAAKC,MAAL,KAAgB,IAAhB,GAAuBD,KAAKF,GAAL,CAAS,OAAKuC,iBAAd,EAAiC,EAAjC,CAAlC,CAAf;AACA,cAAMnC,WAAW,OAAKgD,OAAL,CAAamB,eAAb,GAA+BtE,MAAhD;AACA,iBAAKuC,eAAL,GAAuBmE,WAAW;AAAA,mBAAM,OAAKqE,QAAL,EAAN;AAAA,WAAX,EAAkC5K,QAAlC,CAAvB;AACA;AACD;AACD,eAAKmC,iBAAL,GAAyB,CAAzB;AACA,eAAKU,MAAL,GAAc8J,KAAKxM,IAAL,CAAUyE,KAAxB;AACA,YAAI,CAAC,OAAK/B,MAAV,EAAkB;AAChB,iBAAK0J,cAAL;AACA;AACD;AACD,YAAI,OAAKJ,eAAL,MAA0B,OAAKhL,UAAnC,EAA+C;AAC7C,iBAAK8D,MAAL,CAAY,uCAAZ;AACA,iBAAK4F,QAAL;AACD,SAHD,MAGO;AACL,iBAAK5F,MAAL,CAAY,sBAAZ;AACA,cAAMqE,MAAM;AACV0B,oBAAQ,OAAKlK,WAAL,CAAiB+L,OADf;AAEVhI,oBAAQ;AACND,qBAAO,OAAK/B;AADN;AAFE,WAAZ;AAMA,iBAAK2G,KAAL,CAAWF,GAAX,EAAgBG,IAAhB,CAAqB,sBAAc;AACjC,mBAAKqD,gBAAL,CAAsB,OAAK7L,QAAL,CAAc0I,mBAAd,CAAkC,OAAK7I,WAAL,CAAiB+L,OAAnD,EAA4DhD,WAAWC,MAAvE,CAAtB;AACA,gBAAID,WAAWE,IAAf,EAAqB;AACnBF,yBAAWE,IAAX;AACD;AACF,WALD,EAKG,qBAAa;AACd,mBAAKgD,aAAL,CAAmB9C,UAAU7J,KAA7B;AACA,gBAAI6J,UAAUF,IAAd,EAAoB;AAClBE,wBAAUF,IAAV;AACD;AACF,WAVD;AAWD;AACF,OA1DD;;AA4DA,UAAI,KAAK/G,OAAL,CAAaqB,SAAb,KAA2B,IAA/B,EAAqC;AACnC,YAAM2I,UAAU,EAAhB;AACA,aAAKhK,OAAL,CAAaqB,SAAb,CAAuB2I,OAAvB,EAAgCN,EAAhC;AACD,OAHD,MAGO;AACL,YAAMtH,MAAM,KAAK6H,KAAL,CACV,KAAKjK,OAAL,CAAac,eADH,EAEV,KAAKd,OAAL,CAAagB,aAFH,EAGV,KAAKhB,OAAL,CAAae,cAHH,EAIV,KAAKf,OAAL,CAAaiB,WAJH,EAKVyI,EALU,CAAZ;AAOA,aAAK3J,KAAL,CAAWsE,KAAX,IAAoBjC,GAApB;AACD;AACF;;;kCAEa4E,G,EAAK;AAAA;;AACjB,WAAK/E,MAAL,CAAY,eAAZ,EAA6B+E,GAA7B;AACA,UAAI,KAAK5H,eAAT,EAA0B;AACxBuF,qBAAa,KAAKvF,eAAlB;AACA,aAAKA,eAAL,GAAuB,IAAvB;AACD;AACD,UAAMpC,WAAW,KAAKgD,OAAL,CAAamB,eAAb,GAA+BrE,KAAK8M,KAAL,CAAW9M,KAAKC,MAAL,KAAgB,IAA3B,CAAhD;AACA,WAAKqC,eAAL,GAAuBmE,WAAW;AAAA,eAAM,OAAKqE,QAAL,EAAN;AAAA,OAAX,EAAkC5K,QAAlC,CAAvB;AACD;;;qCAEgB8J,M,EAAQ;AAAA;;AACvB,UAAI,KAAK1H,eAAT,EAA0B;AACxBuF,qBAAa,KAAKvF,eAAlB;AACA,aAAKA,eAAL,GAAuB,IAAvB;AACD;AACD,UAAI0H,OAAOoD,OAAX,EAAoB;AAClB,aAAKzL,SAAL,GAAiBqI,OAAOqD,MAAxB;AACA,aAAK/K,eAAL,GAAuBmE,WAAW;AAAA,iBAAM,OAAKqE,QAAL,EAAN;AAAA,SAAX,EAAkC,KAAKwC,mBAAL,CAAyBtD,OAAOuD,GAAhC,CAAlC,CAAvB;AACD;AACF;;;gCAEW;AACV,WAAKvK,MAAL;AACA,aAAO,KAAKA,MAAZ;AACD;;;gCAEWgF,O,EAAS;AAAA;;AACnB,WAAK7C,MAAL,CAAY,wCAAZ,EAAsD6C,OAAtD;;AAEA,UAAI,KAAKvF,mBAAL,CAAyBuF,OAAzB,MAAsC3I,SAA1C,EAAqD;AACnD,aAAKoJ,uBAAL,CAA6BT,OAA7B;AACD,OAFD,MAEO;AACL;AACD;;AAED,UAAM0E,WAAW,KAAK/K,SAAtB;AACA,UAAM4F,QAAQ,KAAKoF,SAAL,EAAd;;AAEA,UAAMC,KAAK,SAALA,EAAK,CAACC,IAAD,EAAU;AACnB,YAAItF,SAAS,QAAKtE,KAAlB,EAAyB;AACvB,iBAAO,QAAKA,KAAL,CAAWsE,KAAX,CAAP;AACD;AACD,YAAIsF,KAAKvM,KAAL,IAAcuM,KAAK1G,MAAL,KAAgB,GAA9B,IAAqC,QAAKxE,SAAL,KAAmB+K,QAA5D,EAAsE;AACpE;AACD;AACD,YAAIc,eAAe,EAAnB;AACA,YAAIX,KAAKxM,IAAL,CAAUoN,QAAd,EAAwB;AACtB,eAAK,IAAMhI,CAAX,IAAgBpF,KAAKoN,QAArB,EAA+B;AAC7B,gBAAMC,cAAcb,KAAKxM,IAAL,CAAUoN,QAAV,CAAmBhI,CAAnB,CAApB;AACA,gBAAI,CAACiI,YAAY1F,OAAjB,EAA0B;AACxB;AACD;AACDwF,yBAAaE,YAAY1F,OAAzB,IAAoC0F,YAAY5I,KAAhD;AACD;AACF;;AAED,YAAMA,QAAQ0I,aAAaxF,OAAb,CAAd;AACA,YAAI,CAAClD,KAAL,EAAY;AACV;AACD;AACD,YAAM0E,MAAM;AACV0B,kBAAQ,QAAKlK,WAAL,CAAiB2M,WADf;AAEV5I,kBAAQ;AACNiD,qBAASA,OADH;AAENlD,mBAAOA;AAFD;AAFE,SAAZ;;AAQA,YAAMmD,MAAM,QAAK2F,OAAL,CAAa5F,OAAb,CAAZ;AACA,YAAIC,QAAQ,IAAZ,EAAkB;AAChB;AACD;;AAED,gBAAKyB,KAAL,CAAWF,GAAX,EAAgBG,IAAhB,CAAqB,sBAAc;AACjC,kBAAKkE,mBAAL,CACE7F,OADF,EAEE,QAAK7G,QAAL,CAAc0I,mBAAd,CAAkC,QAAK7I,WAAL,CAAiB2M,WAAnD,EAAgE5D,WAAWC,MAA3E,CAFF;AAIA,cAAID,WAAWE,IAAf,EAAqB;AACnBF,uBAAWE,IAAX;AACD;AACF,SARD,EAQG,qBAAa;AACd,kBAAK6D,gBAAL,CAAsB9F,OAAtB,EAA+BmC,UAAU7J,KAAzC;AACA,cAAI6J,UAAUF,IAAd,EAAoB;AAClBE,sBAAUF,IAAV;AACD;AACF,SAbD;AAcD,OAjDD;;AAmDA,UAAM5J,OAAO;AACXgN,gBAAQ,KAAK1L,SADF;AAEX8L,kBAAU,CAACzF,OAAD;AAFC,OAAb;;AAKA,UAAI,KAAK9E,OAAL,CAAa0B,kBAAb,KAAoC,IAAxC,EAA8C;AAC5C,aAAK1B,OAAL,CAAa0B,kBAAb,CAAgC;AAC9BvE,gBAAMA;AADwB,SAAhC,EAEGuM,EAFH;AAGD,OAJD,MAIO;AACL,YAAMtH,MAAM,KAAK6H,KAAL,CACV,KAAKjK,OAAL,CAAasB,iBADH,EACsB,KAAKtB,OAAL,CAAawB,eADnC,EACoD,KAAKxB,OAAL,CAAauB,gBADjE,EACmFpE,IADnF,EACyFuM,EADzF,CAAZ;AAEA,aAAK3J,KAAL,CAAWsE,KAAX,IAAoBjC,GAApB;AACD;AACF;;;4CAEuB0C,O,EAAS;AAC/B,UAAI,KAAKvF,mBAAL,CAAyBuF,OAAzB,MAAsC3I,SAA1C,EAAqD;AACnDwI,qBAAa,KAAKpF,mBAAL,CAAyBuF,OAAzB,CAAb;AACA,eAAO,KAAKvF,mBAAL,CAAyBuF,OAAzB,CAAP;AACD;AACF;;;qCAEgBA,O,EAASkC,G,EAAK;AAAA;;AAC7B,WAAK/E,MAAL,CAAY,4BAAZ,EAA0C6C,OAA1C,EAAmDkC,GAAnD;AACA,WAAKzB,uBAAL,CAA6BT,OAA7B;AACA,UAAMC,MAAM,KAAK2F,OAAL,CAAa5F,OAAb,CAAZ;AACA,UAAIC,QAAQ,IAAZ,EAAkB;AAChB;AACD;AACD,UAAMlI,SAASC,KAAK8M,KAAL,CAAW9M,KAAKC,MAAL,KAAgB,IAA3B,CAAf;AACA,UAAI8N,oBAAoBtH,WAAW;AAAA,eAAM,QAAKuH,WAAL,CAAiBhG,OAAjB,CAAN;AAAA,OAAX,EAA4C,KAAK9E,OAAL,CAAayB,kBAAb,GAAkC5E,MAA9E,CAAxB;AACA,WAAK0C,mBAAL,CAAyBuF,OAAzB,IAAoC+F,iBAApC;AACA;AACD;;;wCAEmB/F,O,EAASgC,M,EAAQ;AAAA;;AACnC,WAAK7E,MAAL,CAAY,8BAAZ,EAA4C6C,OAA5C;AACA,WAAKS,uBAAL,CAA6BT,OAA7B;AACA,UAAMC,MAAM,KAAK2F,OAAL,CAAa5F,OAAb,CAAZ;AACA,UAAIC,QAAQ,IAAZ,EAAkB;AAChB;AACD;AACD,UAAI+B,OAAOoD,OAAP,KAAmB,IAAvB,EAA6B;AAC3B,YAAIW,oBAAoBtH,WAAW;AAAA,iBAAM,QAAKuH,WAAL,CAAiBhG,OAAjB,CAAN;AAAA,SAAX,EAA4C,KAAKsF,mBAAL,CAAyBtD,OAAOuD,GAAhC,CAA5C,CAAxB;AACA,aAAK9K,mBAAL,CAAyBuF,OAAzB,IAAoC+F,iBAApC;AACD;AACD;AACD;;;+BAEU9F,G,EAAKgG,a,EAAe;AAAA;;AAC7B,WAAK9I,MAAL,CAAY,gBAAZ,EAA8B8C,IAAID,OAAlC;AACA,UAAMA,UAAUC,IAAID,OAApB;;AAEA,UAAI,EAAEA,WAAW,KAAKnG,KAAlB,CAAJ,EAA8B;AAC5B,aAAKA,KAAL,CAAWmG,OAAX,IAAsBC,GAAtB;AACD;;AAED,UAAI,CAAC,KAAKmD,WAAL,EAAL,EAAyB;AACvB;AACAnD,YAAIiG,OAAJ;AACA;AACD;;AAEDjG,UAAIK,eAAJ,CAAoB2F,aAApB;;AAEA,UAAMzE,MAAM;AACV0B,gBAAQ,KAAKlK,WAAL,CAAiBmN,SADf;AAEVpJ,gBAAQ;AACNiD,mBAASA;AADH;AAFE,OAAZ;;AAOA;AACA;AACA;AACA;AACA,UAAI,uBAAWA,OAAX,EAAoB,KAAK9E,OAAL,CAAaU,oBAAjC,CAAJ,EAA4D;AAC1D;AACA,YAAI,KAAKzB,oBAAT,EAA+B;AAC7B,eAAKC,gBAAL,CAAsB4F,OAAtB,IAAiC,IAAjC;AACD,SAFD,MAEO;AACL,eAAKoG,sBAAL;AACA,eAAKC,UAAL,CAAgBpG,GAAhB;AACA,eAAKqG,qBAAL;AACD;AACF,OATD,MASO;AACL,YAAMC,UAAUtG,IAAIuG,YAAJ,EAAhB;;AAEA,YAAID,YAAY,IAAhB,EAAsB;AACpB/E,cAAIzE,MAAJ,CAAWwJ,OAAX,GAAqB,IAArB;AACA,cAAME,MAAM,KAAKC,WAAL,CAAiB1G,OAAjB,CAAZ;AACA,cAAIyG,GAAJ,EAAS;AACPjF,gBAAIzE,MAAJ,CAAW0J,GAAX,GAAiBA,GAAjB;AACD;AACD,cAAME,MAAM,KAAKC,WAAL,CAAiB5G,OAAjB,CAAZ;AACA,cAAI2G,GAAJ,EAAS;AACPnF,gBAAIzE,MAAJ,CAAW4J,GAAX,GAAiBA,GAAjB;AACD;AACD,cAAME,QAAQ,KAAKC,aAAL,CAAmB9G,OAAnB,CAAd;AACA,cAAI6G,KAAJ,EAAW;AACTrF,gBAAIzE,MAAJ,CAAW8J,KAAX,GAAmBA,KAAnB;AACD;AACF;;AAED,aAAKnF,KAAL,CAAWF,GAAX,EAAgBG,IAAhB,CAAqB,sBAAc;AACjC,kBAAKoF,kBAAL,CACE/G,OADF,EAEE,QAAK7G,QAAL,CAAc0I,mBAAd,CAAkC,QAAK7I,WAAL,CAAiBmN,SAAnD,EAA8DpE,WAAWC,MAAzE,CAFF;AAIA,cAAID,WAAWE,IAAf,EAAqB;AACnBF,uBAAWE,IAAX;AACD;AACF,SARD,EAQG,qBAAa;AACd,kBAAK+E,eAAL,CAAqBhH,OAArB,EAA8BmC,UAAU7J,KAAxC;AACA,cAAI6J,UAAUF,IAAd,EAAoB;AAClBE,sBAAUF,IAAV;AACD;AACF,SAbD;AAcD;AACF;;;iCAEYhC,G,EAAK;AAChB,UAAI,KAAKmD,WAAL,EAAJ,EAAwB;AACtB;AACA,aAAKY,WAAL,CAAiB;AACfd,kBAAQ,KAAKlK,WAAL,CAAiBiO,WADV;AAEflK,kBAAQ;AACNiD,qBAASC,IAAID;AADP;AAFO,SAAjB;AAMD;AACF;;;wCAEmBuF,G,EAAK;AACvB;AACA,aAAOvN,KAAKH,GAAL,CAAS0N,MAAM,IAAf,EAAqB,UAArB,CAAP;AACD;;;2BAEMvF,O,EAAS;AACd,aAAO,KAAK4F,OAAL,CAAa5F,OAAb,CAAP;AACD;;;4BAEOA,O,EAAS;AACf,UAAMC,MAAM,KAAKpG,KAAL,CAAWmG,OAAX,CAAZ;AACA,UAAI,CAACC,GAAL,EAAU;AACR,eAAO,IAAP;AACD;AACD,aAAOA,GAAP;AACD;;;qCAEgB+B,M,EAAQ;AAAA;;AACvB,UAAMkF,kBAAkB,KAAK5N,aAA7B;AACA,WAAKA,aAAL,GAAqB,KAArB;AACA,WAAK6N,WAAL;AACA,WAAKvN,gBAAL,GAAwB,KAAxB;;AAEA,UAAI,KAAKwJ,WAAL,EAAJ,EAAwB;AACtB;AACD;;AAED,UAAI,KAAKvI,aAAL,KAAuB,IAA3B,EAAiC;AAC/B,aAAKD,QAAL,GAAiB,IAAI6G,IAAJ,EAAD,CAAa2F,OAAb,KAAyB,KAAKvM,aAAL,CAAmBuM,OAAnB,EAAzC;AACA,aAAKvM,aAAL,GAAqB,IAArB;AACD;;AAED,WAAKlB,SAAL,GAAiBqI,OAAOqD,MAAxB;AACA,WAAKnB,UAAL,CAAgB,WAAhB;;AAEA,UAAI,KAAK5J,eAAT,EAA0B;AACxBuF,qBAAa,KAAKvF,eAAlB;AACD;;AAED,UAAI0H,OAAOoD,OAAX,EAAoB;AAClB,aAAK9K,eAAL,GAAuBmE,WAAW;AAAA,iBAAM,QAAKqE,QAAL,EAAN;AAAA,SAAX,EAAkC,KAAKwC,mBAAL,CAAyBtD,OAAOuD,GAAhC,CAAlC,CAAvB;AACD;;AAED,WAAK8B,aAAL;AACA,WAAKjB,sBAAL;AACA,WAAK,IAAMpG,OAAX,IAAsB,KAAKnG,KAA3B,EAAkC;AAChC,YAAI,KAAKA,KAAL,CAAW6D,cAAX,CAA0BsC,OAA1B,CAAJ,EAAwC;AACtC,cAAMC,MAAM,KAAKpG,KAAL,CAAWmG,OAAX,CAAZ;AACA,cAAIC,IAAII,kBAAJ,EAAJ,EAA8B;AAC5B,iBAAKgG,UAAL,CAAgBpG,GAAhB,EAAqBiH,eAArB;AACD;AACF;AACF;AACD,WAAKZ,qBAAL;AACA,WAAKgB,YAAL;;AAEA,WAAKC,UAAL;;AAEA,UAAMC,MAAM;AACVnC,gBAAQrD,OAAOqD,MADL;AAEV3E,mBAAW,KAAKlH,cAFN;AAGViO,iBAAS,KAAK7M;AAHJ,OAAZ;AAKA,UAAIoH,OAAO3J,IAAX,EAAiB;AACfmP,YAAInP,IAAJ,GAAW2J,OAAO3J,IAAlB;AACD;;AAED,WAAKkM,IAAL,CAAU,SAAV,EAAqBiD,GAArB;AACD;;;gCAEW;AACV,UAAI,KAAKhN,YAAL,KAAsB,IAA1B,EAAgC;AAC9BqF,qBAAa,KAAKrF,YAAlB;AACA,aAAKA,YAAL,GAAoB,IAApB;AACD;AACD,UAAI,KAAKD,YAAL,KAAsB,IAA1B,EAAgC;AAC9BsF,qBAAa,KAAKtF,YAAlB;AACA,aAAKA,YAAL,GAAoB,IAApB;AACD;AACF;;;iCAEY;AAAA;;AACX,UAAI,KAAKW,OAAL,CAAaO,IAAb,KAAsB,IAAtB,IAA8B,KAAKP,OAAL,CAAaQ,YAAb,IAA6B,CAA/D,EAAkE;AAChE;AACD;AACD,UAAI,CAAC,KAAK0H,WAAL,EAAL,EAAyB;AACvB;AACD;;AAED,WAAK7I,YAAL,GAAoBkE,WAAW,YAAM;AACnC,YAAI,CAAC,QAAK2E,WAAL,EAAL,EAAyB;AACvB,kBAAK1D,SAAL;AACA;AACD;AACD,gBAAKjE,IAAL;AACA,gBAAKjB,YAAL,GAAoBiE,WAAW,YAAM;AACnC,kBAAK4D,WAAL,CAAiB,SAAjB,EAA4B,IAA5B;AACD,SAFmB,EAEjB,QAAKnH,OAAL,CAAaS,eAFI,CAApB;AAGD,OATmB,EASjB,KAAKT,OAAL,CAAaQ,YATI,CAApB;AAUD;;;mCAEc;AACb,WAAKgE,SAAL;AACA,WAAK6H,UAAL;AACD;;;oCAEevH,O,EAAS1H,K,EAAO;AAC9B,UAAM2H,MAAM,KAAK2F,OAAL,CAAa5F,OAAb,CAAZ;AACA,UAAI,CAACC,GAAL,EAAU;AACR;AACD;AACD,UAAI,CAACA,IAAIyH,cAAJ,EAAL,EAA2B;AACzB;AACD;AACD,UAAIpP,MAAM8J,IAAN,KAAe,CAAf,IAAoB9J,MAAMqP,OAAN,KAAkBpP,aAA1C,EAAyD;AAAE;AACzD,aAAK8J,WAAL,CAAiB,SAAjB,EAA4B,IAA5B;AACA;AACD;AACDpC,UAAI2H,kBAAJ,CAAuBtP,KAAvB;AACD;;;uCAEkB0H,O,EAASgC,M,EAAQ;AAAA;;AAClC,UAAM/B,MAAM,KAAK2F,OAAL,CAAa5F,OAAb,CAAZ;AACA,UAAI,CAACC,GAAL,EAAU;AACR;AACD;AACD,UAAI,CAACA,IAAIyH,cAAJ,EAAL,EAA2B;AACzB;AACD;;AAED,UAAIG,YAAY,KAAhB;AACA,UAAI,eAAe7F,MAAnB,EAA2B;AACzB6F,oBAAY7F,OAAO6F,SAAnB;AACD;AACD5H,UAAI6H,oBAAJ,CAAyBD,SAAzB;;AAEA,UAAIE,OAAO/F,OAAOgG,YAAlB;;AAEA,UAAID,QAAQA,KAAKpK,MAAL,GAAc,CAA1B,EAA6B;AAC3B;AACAoK,eAAOA,KAAKE,OAAL,EAAP;AACA,aAAK,IAAIxK,CAAT,IAAcsK,IAAd,EAAoB;AAClB,cAAIA,KAAKrK,cAAL,CAAoBD,CAApB,CAAJ,EAA4B;AAC1B,iBAAKyK,kBAAL,CAAwBlI,OAAxB,EAAiC+H,KAAKtK,CAAL,CAAjC;AACD;AACF;AACF,OARD,MAQO;AACL,YAAIuE,OAAOmG,WAAX,EAAwB;AACtB,eAAKrO,QAAL,CAAckG,OAAd,IAAyBgC,OAAOyE,GAAP,IAAc,CAAvC;AACA,eAAK1M,QAAL,CAAciG,OAAd,IAAyBgC,OAAO2E,GAAP,IAAc,CAAvC;AACD;AACF;;AAED,WAAK3M,UAAL,CAAgBgG,OAAhB,IAA2BgC,OAAO6E,KAAP,IAAgB,EAA3C;;AAEA,UAAI7E,OAAOmG,WAAX,EAAwB;AACtBlI,YAAImI,YAAJ,GAAmB,IAAnB;AACD;;AAED,UAAIpG,OAAOoD,OAAP,KAAmB,IAAvB,EAA6B;AAC3B,YAAIW,oBAAoBtH,WAAW;AAAA,iBAAM,QAAKuH,WAAL,CAAiBhG,OAAjB,CAAN;AAAA,SAAX,EAA4C,KAAKsF,mBAAL,CAAyBtD,OAAOuD,GAAhC,CAA5C,CAAxB;AACA,aAAK9K,mBAAL,CAAyBuF,OAAzB,IAAoC+F,iBAApC;AACD;AACF;;;iCAEYsC,K,EAAOpG,I,EAAM;AACxB,UAAMtC,KAAK0I,MAAM1I,EAAjB;AACA,UAAMqC,SAASqG,MAAMrG,MAArB;;AAEA,UAAI,EAAErC,MAAM,KAAKhF,UAAb,CAAJ,EAA8B;AAC5BsH;AACA;AACD;AACD,UAAMrC,YAAY,KAAKjF,UAAL,CAAgBgF,EAAhB,CAAlB;AACAE,mBAAa,KAAKlF,UAAL,CAAgBgF,EAAhB,EAAoBnE,OAAjC;AACA,aAAO,KAAKb,UAAL,CAAgBgF,EAAhB,CAAP;;AAEA,UAAI,CAAC,wBAAY0I,KAAZ,CAAL,EAAyB;AACvB,YAAMpL,WAAW2C,UAAU3C,QAA3B;AACA,YAAI,CAACA,QAAL,EAAe;AACb;AACD;AACDA,iBAAS,EAAC+E,cAAD,EAASC,UAAT,EAAT;AACD,OAND,MAMO;AACL,YAAMnC,UAAUF,UAAUE,OAA1B;AACA,YAAI,CAACA,OAAL,EAAc;AACZmC;AACA;AACD;AACD,YAAM3J,QAAQ+P,MAAM/P,KAApB;AACAwH,gBAAQ,EAACxH,YAAD,EAAQ2J,UAAR,EAAR;AACD;AACF;;;gCAEWjC,O,EAASsI,I,EAAM;AACzB,UAAMrI,MAAM,KAAK2F,OAAL,CAAa5F,OAAb,CAAZ;AACA,UAAI,CAACC,GAAL,EAAU;AACR;AACD;AACDA,UAAIsE,IAAJ,CAAS,MAAT,EAAiB+D,IAAjB;AACD;;;iCAEYtI,O,EAASuI,K,EAAO;AAC3B,UAAMtI,MAAM,KAAK2F,OAAL,CAAa5F,OAAb,CAAZ;AACA,UAAI,CAACC,GAAL,EAAU;AACR;AACD;AACDA,UAAIsE,IAAJ,CAAS,OAAT,EAAkBgE,KAAlB;AACD;;;iCAEYvI,O,EAASwI,K,EAAO;AAC3B,UAAMvI,MAAM,KAAK2F,OAAL,CAAa5F,OAAb,CAAZ;AACA,UAAI,CAACC,GAAL,EAAU;AACR;AACD;AACDA,UAAIwI,WAAJ;AACA,UAAID,MAAME,WAAN,KAAsB,IAA1B,EAAgC;AAC9BzI,YAAI0I,SAAJ;AACD;AACF;;;uCAEkB3I,O,EAAS4I,G,EAAK;AAC/B,UAAM3I,MAAM,KAAK2F,OAAL,CAAa5F,OAAb,CAAZ;AACA,UAAI,CAACC,GAAL,EAAU;AACR;AACD;AACD,UAAI2I,IAAInC,GAAJ,KAAYpP,SAAhB,EAA2B;AACzB,aAAKyC,QAAL,CAAckG,OAAd,IAAyB4I,IAAInC,GAA7B;AACD;AACD,UAAImC,IAAIjC,GAAJ,KAAYtP,SAAhB,EAA2B;AACzB,aAAK0C,QAAL,CAAciG,OAAd,IAAyB4I,IAAIjC,GAA7B;AACD;AACD1G,UAAIsE,IAAJ,CAAS,SAAT,EAAoBqE,GAApB;AACD;;;mCAEcjB,O,EAAS;AACtB,WAAKpD,IAAL,CAAU,SAAV,EAAqBoD,QAAQtP,IAA7B;AACD;;;gCAEWA,I,EAAM4J,I,EAAM;AACtB,UAAM4G,OAAO,KAAK1P,QAAL,CAAc2P,UAAd,CAAyBzQ,IAAzB,CAAb;AACA,UAAI0Q,OAAO,CAAX;AACA,UAAI,UAAUF,IAAd,EAAoB;AAClBE,eAAOF,KAAK,MAAL,CAAP;AACD;AACD,UAAM7I,UAAU6I,KAAK7I,OAArB;;AAEA,UAAI+I,SAAS,KAAK9P,SAAL,CAAe+P,WAA5B,EAAyC;AACvC,YAAMJ,MAAM,KAAKzP,QAAL,CAAc8P,cAAd,CAA6B,KAAKhQ,SAAL,CAAe+P,WAA5C,EAAyDH,KAAKxQ,IAA9D,CAAZ;AACA,aAAK6P,kBAAL,CAAwBlI,OAAxB,EAAiC4I,GAAjC;AACD,OAHD,MAGO,IAAIG,SAAS,KAAK9P,SAAL,CAAeiQ,OAA5B,EAAqC;AAC1C,YAAMvB,UAAU,KAAKxO,QAAL,CAAc8P,cAAd,CAA6B,KAAKhQ,SAAL,CAAeiQ,OAA5C,EAAqDL,KAAKxQ,IAA1D,CAAhB;AACA,aAAK8Q,cAAL,CAAoBxB,OAApB;AACD,OAHM,MAGA,IAAIoB,SAAS,KAAK9P,SAAL,CAAemQ,IAA5B,EAAkC;AACvC,YAAMd,OAAO,KAAKnP,QAAL,CAAc8P,cAAd,CAA6B,KAAKhQ,SAAL,CAAemQ,IAA5C,EAAkDP,KAAKxQ,IAAvD,CAAb;AACA,aAAKgR,WAAL,CAAiBrJ,OAAjB,EAA0BsI,IAA1B;AACD,OAHM,MAGA,IAAIS,SAAS,KAAK9P,SAAL,CAAeqQ,KAA5B,EAAmC;AACxC,YAAMf,QAAQ,KAAKpP,QAAL,CAAc8P,cAAd,CAA6B,KAAKhQ,SAAL,CAAeqQ,KAA5C,EAAmDT,KAAKxQ,IAAxD,CAAd;AACA,aAAKkR,YAAL,CAAkBvJ,OAAlB,EAA2BuI,KAA3B;AACD,OAHM,MAGA,IAAIQ,SAAS,KAAK9P,SAAL,CAAeuQ,KAA5B,EAAmC;AACxC,YAAMhB,QAAQ,KAAKrP,QAAL,CAAc8P,cAAd,CAA6B,KAAKhQ,SAAL,CAAeuQ,KAA5C,EAAmDX,KAAKxQ,IAAxD,CAAd;AACA,aAAKoR,YAAL,CAAkBzJ,OAAlB,EAA2BwI,KAA3B;AACD;AACDvG;AACD;;;mCAEcoG,K,EAAO;AACpB,UAAIpG,IAAJ;AACA,UAAM6B,IAAI,IAAIT,OAAJ,CAAY,mBAAU;AAC9BpB,eAAOyB,OAAP;AACD,OAFS,CAAV;;AAIA,UAAI2E,UAAUhR,SAAV,IAAuBgR,UAAU,IAArC,EAA2C;AACzC,aAAKlL,MAAL,CAAY,uCAAZ;AACA8E;AACA,eAAO6B,CAAP;AACD;;AAED,UAAMnE,KAAK0I,MAAM1I,EAAjB;;AAEA,UAAIA,MAAMA,KAAK,CAAf,EAAkB;AAChB,aAAK+J,YAAL,CAAkBrB,KAAlB,EAAyBpG,IAAzB;AACD,OAFD,MAEO;AACL,aAAK0H,WAAL,CAAiBtB,MAAMrG,MAAvB,EAA+BC,IAA/B;AACD;;AAED,aAAO6B,CAAP;AACD;;;6BAEQ;AACP,UAAM8F,WAAW,KAAK3P,SAAL,CAAe4P,KAAf,CAAqB,CAArB,CAAjB;AACA,WAAK5P,SAAL,GAAiB,EAAjB;AACA,WAAKwJ,cAAL,CAAoBmG,QAApB;AACD;;;4BAEO;AAAA;;AACN,UAAMpI,MAAM;AACV0B,gBAAQ,KAAKlK,WAAL,CAAiB8Q;AADf,OAAZ;AAGA,WAAKpI,KAAL,CAAWF,GAAX,EAAgBG,IAAhB,CAAqB,sBAAc;AACjC,gBAAKoI,aAAL,CAAmB,QAAK5Q,QAAL,CAAc0I,mBAAd,CAAkC,QAAK7I,WAAL,CAAiB8Q,IAAnD,EAAyD/H,WAAWC,MAApE,CAAnB;AACA,YAAID,WAAWE,IAAf,EAAqB;AACnBF,qBAAWE,IAAX;AACD;AACF,OALD,EAKG,qBAAa;AACd,gBAAK9E,MAAL,CAAY,YAAZ,EAA0BgF,UAAU7J,KAApC;AACA,YAAI6J,UAAUF,IAAd,EAAoB;AAClBE,oBAAUF,IAAV;AACD;AACF,OAVD;AAWD;;;kCAEaD,M,EAAQ;AACpB,UAAI,CAAC,KAAKoB,WAAL,EAAL,EAAyB;AACvB;AACD;AACD,WAAK1D,SAAL;AACA,WAAK6H,UAAL;AACD;;;gCAEWvH,O,EAAS;AACnB,UAAMgK,UAAU,KAAKlQ,QAAL,CAAckG,OAAd,CAAhB;AACA,UAAIgK,OAAJ,EAAa;AACX,eAAOA,OAAP;AACD;AACD,aAAO,CAAP;AACD;;;gCAEWhK,O,EAAS;AACnB,UAAMiK,UAAU,KAAKlQ,QAAL,CAAciG,OAAd,CAAhB;AACA,UAAIiK,OAAJ,EAAa;AACX,eAAOA,OAAP;AACD;AACD,aAAO,CAAP;AACD;;;kCAEajK,O,EAAS;AACrB,UAAMkK,YAAY,KAAKlQ,UAAL,CAAgBgG,OAAhB,CAAlB;AACA,UAAIkK,SAAJ,EAAe;AACb,eAAOA,SAAP;AACD;AACD,aAAO,EAAP;AACD;;;uCAEkBvC,O,EAASvF,I,EAAM;AAChC,UAAM+H,YAAY;AAChBxC,iBAASA,OADO;AAEhBvF,cAAMA,QAAQ;AAFE,OAAlB;;AAKA,aAAO+H,SAAP;AACD;;;kCAEaxK,E,EAAI1C,Q,EAAU6C,O,EAAS;AAAA;;AACnC,WAAKnF,UAAL,CAAgBgF,EAAhB,IAAsB;AACpB1C,kBAAUA,QADU;AAEpB6C,iBAASA,OAFW;AAGpBtE,iBAAS;AAHW,OAAtB;AAKA,WAAKb,UAAL,CAAgBgF,EAAhB,EAAoBnE,OAApB,GAA8BiD,WAAW,YAAM;AAC7C,eAAO,QAAK9D,UAAL,CAAgBgF,EAAhB,CAAP;AACA,YAAI,uBAAWG,OAAX,CAAJ,EAAyB;AACvBA,kBAAQ,EAACxH,OAAO,QAAKyH,kBAAL,CAAwBxH,aAAxB,CAAR,EAAR;AACD;AACF,OAL6B,EAK3B,KAAK2C,OAAL,CAAaM,OALc,CAA9B;AAMD;;;gCAEWmM,O,EAAS;AACnB,UAAIhI,KAAK,KAAKyK,cAAL,EAAT;AACAzC,cAAQhI,EAAR,GAAaA,EAAb;AACA,UAAI,KAAKzF,WAAL,KAAqB,IAAzB,EAA+B;AAC7B,aAAKD,SAAL,CAAe4O,IAAf,CAAoBlB,OAApB;AACD,OAFD,MAEO;AACL,aAAKlE,cAAL,CAAoB,CAACkE,OAAD,CAApB;AACD;AACD,aAAOhI,EAAP;AACD;;;kCAEa;AACZ,aAAO,KAAK0K,YAAL,EAAP;AACD;;;8BAES;AACR,WAAKtH,QAAL;AACD;;;iCAEY;AACX,WAAKV,WAAL,CAAiB,QAAjB,EAA2B,KAA3B;AACD;;;2BAEM;AACL,aAAO,KAAKiI,KAAL,EAAP;AACD;;;oCAEe;AACd;AACA;AACA,WAAKpQ,WAAL,GAAmB,IAAnB;AACD;;;mCAEc;AACb,WAAKA,WAAL,GAAmB,KAAnB;AACA,WAAKqQ,MAAL;AACD;;;6CAEwB;AACvB;AACA;AACA,WAAKpQ,oBAAL,GAA4B,IAA5B;AACD;;;4CAEuB;AAAA;;AACtB;AACA;AACA,WAAKA,oBAAL,GAA4B,KAA5B;AACA,UAAMqQ,eAAe,KAAKpQ,gBAA1B;AACA,WAAKA,gBAAL,GAAwB,EAAxB;;AAEA,UAAMqL,WAAW,EAAjB;;AAEA,WAAK,IAAMzF,OAAX,IAAsBwK,YAAtB,EAAoC;AAClC,YAAIA,aAAa9M,cAAb,CAA4BsC,OAA5B,CAAJ,EAA0C;AACxC,cAAMC,MAAM,KAAK2F,OAAL,CAAa5F,OAAb,CAAZ;AACA,cAAI,CAACC,GAAL,EAAU;AACR;AACD;AACDwF,mBAASoD,IAAT,CAAc7I,OAAd;AACD;AACF;;AAED,UAAIyF,SAAS9H,MAAT,KAAoB,CAAxB,EAA2B;AACzB,aAAKR,MAAL,CAAY,oDAAZ;AACA;AACD;;AAED,UAAM9E,OAAO;AACXgN,gBAAQ,KAAK1L,SADF;AAEX8L,kBAAUA;AAFC,OAAb;;AAKA,UAAMf,WAAW,KAAK/K,SAAtB;AACA,UAAM4F,QAAQ,KAAKoF,SAAL,EAAd;;AAEA,UAAMC,KAAK,SAALA,EAAK,CAACC,IAAD,EAAU;AACnB,YAAItF,SAAS,QAAKtE,KAAlB,EAAyB;AACvB,iBAAO,QAAKA,KAAL,CAAWsE,KAAX,CAAP;AACD;AACD,YAAI,QAAK5F,SAAL,KAAmB+K,QAAvB,EAAiC;AAC/B;AACD;AACD,YAAIG,KAAKvM,KAAL,IAAcuM,KAAK1G,MAAL,KAAgB,GAAlC,EAAuC;AACrC,kBAAKhB,MAAL,CAAY,8BAAZ;AACA,eAAK,IAAMM,CAAX,IAAgBgI,QAAhB,EAA0B;AACxB,gBAAIA,SAAS/H,cAAT,CAAwBD,CAAxB,CAAJ,EAAgC;AAC9B,kBAAMuC,YAAUyF,SAAShI,CAAT,CAAhB;AACA,sBAAKuJ,eAAL,CAAqBhH,SAArB,EAA8B,QAAKD,kBAAL,CAAwB,8BAAxB,CAA9B;AACD;AACF;AACD;AACD;;AAED,YAAIyF,eAAe,EAAnB;AACA,YAAIX,KAAKxM,IAAL,CAAUoN,QAAd,EAAwB;AACtB,eAAK,IAAMhI,EAAX,IAAgBoH,KAAKxM,IAAL,CAAUoN,QAA1B,EAAoC;AAClC,gBAAMC,cAAcb,KAAKxM,IAAL,CAAUoN,QAAV,CAAmBhI,EAAnB,CAApB;AACA,gBAAI,CAACiI,YAAY1F,OAAjB,EAA0B;AACxB;AACD;AACDwF,yBAAaE,YAAY1F,OAAzB,IAAoC0F,YAAY5I,KAAhD;AACD;AACF;;AAED;AACA,YAAI2N,QAAQ,KAAZ;;AAEA,YAAI,CAAC,QAAKvQ,WAAV,EAAuB;AACrB,kBAAKmN,aAAL;AACAoD,kBAAQ,IAAR;AACD;;AAED,aAAK,IAAMhN,GAAX,IAAgBgI,QAAhB,EAA0B;AACxB,cAAIA,SAAS/H,cAAT,CAAwBD,GAAxB,CAAJ,EAAgC;AAAA;AAC9B,kBAAMuC,UAAUyF,SAAShI,GAAT,CAAhB;AACA,kBAAMX,QAAQ0I,aAAaxF,OAAb,CAAd;;AAEA,kBAAI,CAAClD,KAAL,EAAY;AACV;AACA,wBAAKkK,eAAL,CAAqBhH,OAArB,EAA8B,QAAKD,kBAAL,CAAwB,mBAAxB,EAA6C,GAA7C,CAA9B;AACA;AACD,eAJD,MAIO;AACL,oBAAMyB,MAAM;AACV0B,0BAAQ,QAAKlK,WAAL,CAAiBmN,SADf;AAEVpJ,0BAAQ;AACNiD,6BAASA,OADH;AAENlD,2BAAOA;AAFD;AAFE,iBAAZ;;AAQA,oBAAMmD,OAAM,QAAK2F,OAAL,CAAa5F,OAAb,CAAZ;AACA,oBAAIC,SAAQ,IAAZ,EAAkB;AAChB;AACD;;AAED,oBAAMsG,UAAUtG,KAAIuG,YAAJ,EAAhB;;AAEA,oBAAID,YAAY,IAAhB,EAAsB;AACpB/E,sBAAIzE,MAAJ,CAAWwJ,OAAX,GAAqB,IAArB;AACA,sBAAME,MAAM,QAAKC,WAAL,CAAiB1G,OAAjB,CAAZ;AACA,sBAAIyG,GAAJ,EAAS;AACPjF,wBAAIzE,MAAJ,CAAW0J,GAAX,GAAiBA,GAAjB;AACD;AACD,sBAAME,MAAM,QAAKC,WAAL,CAAiB5G,OAAjB,CAAZ;AACA,sBAAI2G,GAAJ,EAAS;AACPnF,wBAAIzE,MAAJ,CAAW4J,GAAX,GAAiBA,GAAjB;AACD;AACD,sBAAME,QAAQ,QAAKC,aAAL,CAAmB9G,OAAnB,CAAd;AACA,sBAAI6G,KAAJ,EAAW;AACTrF,wBAAIzE,MAAJ,CAAW8J,KAAX,GAAmBA,KAAnB;AACD;AACF;AACD,wBAAKnF,KAAL,CAAWF,GAAX,EAAgBG,IAAhB,CAAqB,sBAAc;AACjC,0BAAKoF,kBAAL,CACE/G,OADF,EAEE,QAAK7G,QAAL,CAAc0I,mBAAd,CAAkC,QAAK7I,WAAL,CAAiBmN,SAAnD,EAA8DpE,WAAWC,MAAzE,CAFF;AAIA,sBAAID,WAAWE,IAAf,EAAqB;AACnBF,+BAAWE,IAAX;AACD;AACF,iBARD,EAQG,qBAAa;AACd,0BAAK+E,eAAL,CAAqBhH,OAArB,EAA8BmC,UAAU7J,KAAxC;AACA,sBAAI6J,UAAUF,IAAd,EAAoB;AAClBE,8BAAUF,IAAV;AACD;AACF,iBAbD;AAcD;AArD6B;;AAAA,sCAmB1B;AAmCL;AACF;;AAED,YAAIwI,KAAJ,EAAW;AACT,kBAAKnD,YAAL;AACD;AAEF,OAnGD;;AAqGA,UAAI,KAAKpM,OAAL,CAAa0B,kBAAb,KAAoC,IAAxC,EAA8C;AAC5C,aAAK1B,OAAL,CAAa0B,kBAAb,CAAgC;AAC9BvE,gBAAMA;AADwB,SAAhC,EAEGuM,EAFH;AAGD,OAJD,MAIO;AACL,YAAMtH,MAAM,KAAK6H,KAAL,CACV,KAAKjK,OAAL,CAAasB,iBADH,EACsB,KAAKtB,OAAL,CAAawB,eADnC,EACoD,KAAKxB,OAAL,CAAauB,gBADjE,EACmFpE,IADnF,EACyFuM,EADzF,CAAZ;AAEA,aAAK3J,KAAL,CAAWsE,KAAX,IAAoBjC,GAApB;AACD;AACF;;;8BAES0C,O,EAAS0K,M,EAAQ;AACzB,UAAMC,aAAa,KAAK/E,OAAL,CAAa5F,OAAb,CAAnB;AACA,UAAI2K,eAAe,IAAnB,EAAyB;AACvBA,mBAAWC,UAAX,CAAsBF,MAAtB;AACA,YAAIC,WAAWE,eAAX,EAAJ,EAAkC;AAChCF,qBAAWhC,SAAX;AACD;AACD,eAAOgC,UAAP;AACD;AACD,UAAM1K,MAAM,2BAAiB,IAAjB,EAAuBD,OAAvB,EAAgC0K,MAAhC,CAAZ;AACA,WAAK7Q,KAAL,CAAWmG,OAAX,IAAsBC,GAAtB;AACAA,UAAI0I,SAAJ;AACA,aAAO1I,GAAP;AACD;;;;;;;;;;;;;;;;;;;;ACtgDH;;;;AAEA;;;;;;;;;;AAIA,IAAM6K,aAAa,CAAnB;AACA,IAAMC,qBAAqB,CAA3B;AACA,IAAMC,iBAAiB,CAAvB;AACA,IAAMC,eAAe,CAArB;AACA,IAAMC,sBAAsB,CAA5B;;IAEqBC,Y;;;AACnB,wBAAYC,UAAZ,EAAwBpL,OAAxB,EAAiC0K,MAAjC,EAAyC;AAAA;;AAAA;;AAEvC,UAAK1K,OAAL,GAAeA,OAAf;AACA,UAAKqL,WAAL,GAAmBD,UAAnB;AACA,UAAKhS,OAAL,GAAe0R,UAAf;AACA,UAAKQ,MAAL,GAAc,IAAd;AACA,UAAKC,cAAL,GAAsB,KAAtB;AACA,UAAKC,MAAL,GAAc,KAAd;AACA,UAAKC,oBAAL,GAA4B,IAA5B;AACA,UAAKC,cAAL,GAAsB,KAAtB;AACA,UAAKtD,YAAL,GAAoB,KAApB;AACA,UAAKhI,QAAL,GAAgB,KAAhB;AACA,UAAKwK,UAAL,CAAgBF,MAAhB;AACA,UAAKiB,kBAAL;AACA,UAAKC,SAAL,GAAiB,EAAjB;AACA,UAAKC,EAAL,CAAQ,OAAR,EAAiB,UAAUC,UAAV,EAAsB;AACrC,WAAKT,WAAL,CAAiBlO,MAAjB,CAAwB,oBAAxB,EAA8C2O,UAA9C;AACD,KAFD;AAfuC;AAkBxC;;;;yCAEoB;AAAA;;AACnB;AACA;AACA;AACA,WAAKN,MAAL,GAAc,KAAd;;AAEA,WAAKC,oBAAL,GAA4B,IAAIpI,OAAJ,CAAY,UAACK,OAAD,EAAUJ,MAAV,EAAqB;AAC3D,eAAKyI,QAAL,GAAgB,iBAAS;AACvB,iBAAKP,MAAL,GAAc,IAAd;AACA9H,kBAAQxM,KAAR;AACD,SAHD;AAIA,eAAK8U,OAAL,GAAe,eAAO;AACpB,iBAAKR,MAAL,GAAc,IAAd;AACAlI,iBAAOpB,GAAP;AACD,SAHD;AAID,OAT2B,EASzBP,IATyB,CASpB,YAAY,CAAE,CATM,EASJ,YAAY,CAAE,CATV,CAA5B;AAUD;;;mCAEc;AACb,aAAO,KAAKyG,YAAL,KAAsB,IAAtB,IAA8B,KAAKhI,QAAL,KAAkB,IAAvD;AACD;;;+BAEUsK,M,EAAQ;AACjB,UAAI,CAACA,MAAL,EAAa;AACX;AACD;AACD,UAAI,uBAAWA,MAAX,CAAJ,EAAwB;AACtB;AACA,aAAKmB,EAAL,CAAQ,SAAR,EAAmBnB,MAAnB;AACD,OAHD,MAGO,IAAIzL,OAAOgN,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BzB,MAA/B,MAA2CzL,OAAOgN,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+B,EAA/B,CAA/C,EAAmF;AACxF,YAAMC,cAAc,CAAC,SAAD,EAAY,MAAZ,EAAoB,OAApB,EAA6B,aAA7B,EAA4C,WAA5C,EAAyD,OAAzD,CAApB;AACA,aAAK,IAAI3O,IAAI,CAAR,EAAW4O,IAAID,YAAYzO,MAAhC,EAAwCF,IAAI4O,CAA5C,EAA+C5O,GAA/C,EAAoD;AAClD,cAAM6O,KAAKF,YAAY3O,CAAZ,CAAX;AACA,cAAI6O,MAAM5B,MAAV,EAAkB;AAChB,iBAAKmB,EAAL,CAAQS,EAAR,EAAY5B,OAAO4B,EAAP,CAAZ;AACD;AACF;AACF;AACF;;;6BAEQ;AACP,aAAO,KAAKlT,OAAL,KAAiB0R,UAAxB;AACD;;;sCAEiB;AAChB,aAAO,KAAK1R,OAAL,KAAiB8R,mBAAxB;AACD;;;qCAEgB;AACf,aAAO,KAAK9R,OAAL,KAAiB2R,kBAAxB;AACD;;;+BAEU;AACT,aAAO,KAAK3R,OAAL,KAAiB4R,cAAjB,IAAmC,KAAK5R,OAAL,KAAiB6R,YAA3D;AACD;;;iCAEY;AACX,aAAO,KAAK7R,OAAL,KAAiB4R,cAAxB;AACD;;;+BAEU;AACT,aAAO,KAAK5R,OAAL,KAAiB6R,YAAxB;AACD;;;8BAES;AACR,WAAK7R,OAAL,GAAe0R,UAAf;AACD;;;oCAEe7E,a,EAAe;AAC7B,WAAKsF,cAAL,GAAsBtF,iBAAiB,KAAvC;AACA,UAAI,KAAKuF,MAAL,KAAgB,IAApB,EAA0B;AACxB;AACA,aAAKG,kBAAL;AACD;AACD,WAAKvS,OAAL,GAAe2R,kBAAf;AACD;;;yCAEoBlD,S,EAAW;AAC9B,UAAI,KAAKzO,OAAL,KAAiB4R,cAArB,EAAqC;AACnC;AACD;AACD,WAAK5R,OAAL,GAAe4R,cAAf;AACA,UAAMuB,iBAAiB,KAAKC,2BAAL,CAAiC3E,SAAjC,CAAvB;;AAEA,WAAKzH,QAAL,GAAgB,KAAhB;AACA,WAAKmE,IAAL,CAAU,WAAV,EAAuBgI,cAAvB;AACA,WAAKR,QAAL,CAAcQ,cAAd;AACA,WAAK,IAAME,EAAX,IAAiB,KAAKb,SAAtB,EAAiC;AAC/B/L,qBAAa4M,EAAb;AACA,aAAKb,SAAL,CAAea,EAAf,EAAmB/I,OAAnB;AACA,eAAO,KAAKkI,SAAL,CAAea,EAAf,CAAP;AACD;AACF;;;uCAEkBvK,G,EAAK;AACtB,UAAI,KAAK9I,OAAL,KAAiB6R,YAArB,EAAmC;AACjC;AACD;AACD,WAAK7R,OAAL,GAAe6R,YAAf;AACA,WAAKK,MAAL,GAAcpJ,GAAd;AACA,UAAM4J,aAAa,KAAKY,yBAAL,EAAnB;AACA,WAAKnI,IAAL,CAAU,OAAV,EAAmBuH,UAAnB;AACA,WAAKE,OAAL,CAAaF,UAAb;AACA,WAAK,IAAMW,EAAX,IAAiB,KAAKb,SAAtB,EAAiC;AAC/B/L,qBAAa4M,EAAb;AACA,aAAKb,SAAL,CAAea,EAAf,EAAmBnJ,MAAnB,CAA0BpB,GAA1B;AACA,eAAO,KAAK0J,SAAL,CAAea,EAAf,CAAP;AACD;AACF;;;0CAEqB;AACpB,WAAKlI,IAAL,CAAU,aAAV,EAAyB;AACvBvE,iBAAS,KAAKA;AADS,OAAzB;AAGD;;;qCAEgB2M,a,EAAe;AAC9B,WAAKtB,WAAL,CAAiB5K,uBAAjB,CAAyC,KAAKT,OAA9C;AACA,UAAI,KAAK5G,OAAL,KAAiB8R,mBAArB,EAA0C;AACxC;AACD;AACD,UAAM0B,cAAc,KAAKxT,OAAL,KAAiB4R,cAArC;AACA,WAAK5R,OAAL,GAAe8R,mBAAf;AACA,UAAIyB,kBAAkB,IAAtB,EAA4B;AAC1B,aAAKvM,QAAL,GAAgB,KAAhB;AACA,aAAKsL,cAAL,GAAsB,IAAtB;AACA,eAAO,KAAKL,WAAL,CAAiBvR,QAAjB,CAA0B,KAAKkG,OAA/B,CAAP;AACA,eAAO,KAAKqL,WAAL,CAAiBtR,QAAjB,CAA0B,KAAKiG,OAA/B,CAAP;AACA,eAAO,KAAKqL,WAAL,CAAiBrR,UAAjB,CAA4B,KAAKgG,OAAjC,CAAP;AACD;AACD,UAAI4M,WAAJ,EAAiB;AACf,aAAKzM,mBAAL;AACD;AACF;;;yCAEoB;AACnB,aAAO,CAAC,KAAKuL,cAAb;AACD;;;gDAE2B7D,S,EAAW;AACrC,aAAO;AACL7H,iBAAS,KAAKA,OADT;AAELiG,uBAAe,KAAKsF,cAFf;AAGL1D,mBAAWA;AAHN,OAAP;AAKD;;;gDAE2B;AAC1B,UAAMgF,wBAAwB,KAAKvB,MAAnC;AACAuB,4BAAsB7M,OAAtB,GAAgC,KAAKA,OAArC;AACA6M,4BAAsB5G,aAAtB,GAAsC,KAAKsF,cAA3C;AACA,aAAOsB,qBAAP;AACD;;;0BAEK5P,Q,EAAU6C,O,EAAS;AACvB,UAAI,KAAK0L,MAAT,EAAiB;AACf,YAAI,KAAKtL,UAAL,EAAJ,EAAuB;AACrBjD,mBAAS,KAAKuP,2BAAL,EAAT;AACD,SAFD,MAEO;AACL1M,kBAAQ,KAAK4M,yBAAL,EAAR;AACD;AACF;AACF;;;gCAEW;AACV,UAAI,KAAKtT,OAAL,KAAiB4R,cAArB,EAAqC;AACnC;AACD;AACD,WAAKU,cAAL,GAAsB,KAAtB;AACA,WAAKL,WAAL,CAAiBhF,UAAjB,CAA4B,IAA5B;AACD;;;kCAEa;AACZ,WAAK9F,gBAAL,CAAsB,IAAtB;AACA,WAAK8K,WAAL,CAAiByB,YAAjB,CAA8B,IAA9B;AACD;;;gCAEWnF,O,EAASoB,I,EAAM;AAAA;;AACzB,UAAMgE,oBAAoB,IAAI1J,OAAJ,CAAY,UAACK,OAAD,EAAUJ,MAAV,EAAqB;AACzD,YAAI0J,mBAAJ;AACA,YAAI,OAAK9M,UAAL,EAAJ,EAAuB;AACrB8M,uBAAa3J,QAAQK,OAAR,EAAb;AACD,SAFD,MAEO,IAAI,OAAKuJ,QAAL,EAAJ,EAAqB;AAC1BD,uBAAa3J,QAAQC,MAAR,CAAe,OAAKgI,MAApB,CAAb;AACD,SAFM,MAEA;AACL0B,uBAAa,IAAI3J,OAAJ,CAAY,UAAC6J,GAAD,EAAMC,GAAN,EAAc;AACrC,gBAAM3R,UAAUiD,WAAW,YAAY;AACrC0O,kBAAI,EAAC,QAAQ,CAAT,EAAY,WAAW,SAAvB,EAAJ;AACD,aAFe,EAEb,OAAK9B,WAAL,CAAiBnQ,OAAjB,CAAyBM,OAFZ,CAAhB;AAGA,mBAAKoQ,SAAL,CAAepQ,OAAf,IAA0B;AACxBkI,uBAASwJ,GADe;AAExB5J,sBAAQ6J;AAFgB,aAA1B;AAID,WARY,CAAb;AASD;AACDH,mBAAWrL,IAAX,CACE,YAAM;AACJ,iBAAO,OAAK0J,WAAL,CAAiB3J,KAAjB,CAAuBiG,OAAvB,EAAgChG,IAAhC,CACL,sBAAc;AACZ+B,oBAAQ,OAAK2H,WAAL,CAAiBlS,QAAjB,CAA0B0I,mBAA1B,CAA8CkH,IAA9C,EAAoDhH,WAAWC,MAA/D,CAAR;AACA,gBAAID,WAAWE,IAAf,EAAqB;AACnBF,yBAAWE,IAAX;AACD;AACF,WANI,EAOL,qBAAa;AACXqB,mBAAOnB,UAAU7J,KAAjB;AACA,gBAAI6J,UAAUF,IAAd,EAAoB;AAClBE,wBAAUF,IAAV;AACD;AACF,WAZI,CAAP;AAcD,SAhBH,EAiBE,iBAAS;AACPqB,iBAAOhL,KAAP;AACD,SAnBH;AAqBD,OAtCyB,CAA1B;AAuCA,aAAOyU,iBAAP;AACD;;;4BAEO1U,I,EAAM;AACZ,aAAO,KAAK+U,WAAL,CAAiB;AACtBlK,gBAAQ,KAAKmI,WAAL,CAAiBrS,WAAjB,CAA6B2K,OADf;AAEtB5G,gBAAQ;AACNiD,mBAAS,KAAKA,OADR;AAEN3H,gBAAMA;AAFA;AAFc,OAAjB,EAMJ,KAAKgT,WAAL,CAAiBrS,WAAjB,CAA6B2K,OANzB,CAAP;AAOD;;;+BAEU;AACT,aAAO,KAAKyJ,WAAL,CAAiB;AACtBlK,gBAAQ,KAAKmI,WAAL,CAAiBrS,WAAjB,CAA6BqU,QADf;AAEtBtQ,gBAAQ;AACNiD,mBAAS,KAAKA;AADR;AAFc,OAAjB,EAKJ,KAAKqL,WAAL,CAAiBrS,WAAjB,CAA6BqU,QALzB,CAAP;AAMD;;;oCAEe;AACd,aAAO,KAAKD,WAAL,CAAiB;AACtBlK,gBAAQ,KAAKmI,WAAL,CAAiBrS,WAAjB,CAA6BsU,cADf;AAEtBvQ,gBAAQ;AACNiD,mBAAS,KAAKA;AADR;AAFc,OAAjB,EAKJ,KAAKqL,WAAL,CAAiBrS,WAAjB,CAA6BsU,cALzB,CAAP;AAMD;;;8BAES;AACR,aAAO,KAAKF,WAAL,CAAiB;AACtBlK,gBAAQ,KAAKmI,WAAL,CAAiBrS,WAAjB,CAA6BuU,OADf;AAEtBxQ,gBAAQ;AACNiD,mBAAS,KAAKA;AADR;AAFc,OAAjB,EAKJ,KAAKqL,WAAL,CAAiBrS,WAAjB,CAA6BuU,OALzB,CAAP;AAMD;;;;;;kBApRkBpC,Y;;;;;;;;;;;;;;;;;;ACZd,IAAMqC,0CAAiB;AAC5B1L,WAAS,CADmB;AAE5BqE,aAAW,CAFiB;AAG5Bc,eAAa,CAHe;AAI5BtD,WAAS,CAJmB;AAK5B0J,YAAU,CALkB;AAM5BC,kBAAgB,CANY;AAO5BC,WAAS,CAPmB;AAQ5BzD,QAAM,CARsB;AAS5BvG,QAAM,CATsB;AAU5BJ,OAAK,CAVuB;AAW5B4B,WAAS,EAXmB;AAY5BY,eAAa;AAZe,CAAvB;;AAeA,IAAM8H,sCAAe;AAC1BzE,eAAa,CADa;AAE1BI,QAAM,CAFoB;AAG1BE,SAAO,CAHmB;AAI1BE,SAAO,CAJmB;AAK1BN,WAAS;AALiB,CAArB;;IAQMwE,W,WAAAA,W;;;;;;;mCACI9M,Q,EAAU;AACvB,UAAM+M,kBAAkB,EAAxB;AACA,WAAK,IAAMlQ,CAAX,IAAgBmD,QAAhB,EAA0B;AACxB,YAAIA,SAASlD,cAAT,CAAwBD,CAAxB,CAAJ,EAAgC;AAC9BkQ,0BAAgB9E,IAAhB,CAAqBzL,KAAKC,SAAL,CAAeuD,SAASnD,CAAT,CAAf,CAArB;AACD;AACF;AACD,aAAOkQ,gBAAgBrF,IAAhB,CAAqB,IAArB,CAAP;AACD;;;;;;IAGUsF,W,WAAAA,W;;;;;;;kCACGvV,I,EAAM;AAClB,UAAMuL,UAAU,EAAhB;AACA,UAAMiK,iBAAiBxV,KAAKyV,KAAL,CAAW,IAAX,CAAvB;AACA,WAAK,IAAMrQ,CAAX,IAAgBoQ,cAAhB,EAAgC;AAC9B,YAAIA,eAAenQ,cAAf,CAA8BD,CAA9B,CAAJ,EAAsC;AACpC,cAAI,CAACoQ,eAAepQ,CAAf,CAAL,EAAwB;AACtB;AACD;AACD,cAAM4K,QAAQjL,KAAKiB,KAAL,CAAWwP,eAAepQ,CAAf,CAAX,CAAd;AACAmG,kBAAQiF,IAAR,CAAaR,KAAb;AACD;AACF;AACD,aAAOzE,OAAP;AACD;;;wCAEmBmK,U,EAAY1V,I,EAAM;AACpC,aAAOA,IAAP;AACD;;;+BAEUA,I,EAAM;AACf,aAAOA,IAAP;AACD;;;mCAEc2V,Q,EAAU3V,I,EAAM;AAC7B,aAAOA,IAAP;AACD;;;;;;;;;;;AC7DH;AACA;;AAEA;;AAEA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,gCAAgC;AAC3C,WAAW,OAAO;AAClB,WAAW,EAAE;AACb;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,mBAAmB;AACnB;;AAEA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,oBAAoB,IAAI,mBAAmB,0CAA0C;AAClG;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,WAAW;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,gCAAgC;AAC3C,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,mBAAmB;AAC9B,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;;AAEA;AACA;AACA,WAAW,mBAAmB;AAC9B,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA,WAAW,mBAAmB;AAC9B,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,yBAAyB,KAAK,2BAA2B;AACrE,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;AC1cA;AACA;;AAEA;;AAEA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,oBAAoB,IAAI,mBAAmB,uCAAuC;AAC/F,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA,2BAA2B;AAC3B;AACA,iEAAiE;AACjE,iEAAiE;AACjE,iEAAiE;AACjE,iEAAiE;AACjE,iEAAiE;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC;AAClC,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;;AAEA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;;AAEA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;;AAEA;AACA;AACA;AACA;AACA,aAAa,KAAK;AAClB;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA,KAAK;AACL;;;;;;;;ACtZA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,2BAA2B;AACtC,WAAW,kBAAkB;AAC7B,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,kCAAkC;;AAElC;AACA;AACA,cAAc;AACd;AACA;AACA,0BAA0B;;AAE1B;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,eAAe;AAC7B,cAAc,kBAAkB;AAChC;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB,YAAY,UAAU;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,uBAAuB,8BAA8B;AACrD;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,6BAA6B;AACvD;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,cAAc;AACpD;AACA,UAAU;AACV,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;;AAEA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;;;;;;AC1MA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA,uDAAuD,iBAAiB;AACxE;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,oBAAoB;AAC/B,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,oBAAoB;AAC/B,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,YAAY;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,EAAE;AACb,WAAW,mBAAmB;AAC9B,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;;AAEA,6B;;;;;;;AC1IA;AACA;;AAEA;AACA,wBAAwB,qBAAqB;AAC7C;AACA,UAAU;AACV,WAAW,WAAW;AACtB,WAAW,KAAK;AAChB,aAAa;AACb;;AAEA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B,WAAW,EAAE;AACb,WAAW,KAAK;AAChB,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;;;;;;;ACnDA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA,KAAK,aAAa;AAClB;AACA;;;;;;;;AChBA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC,qBAAqB;AACtD;AACA,UAAU;AACV,WAAW,mCAAmC,YAAY,GAAG;AAC7D,WAAW,WAAW;AACtB,WAAW,gBAAgB;AAC3B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA,mCAAmC,cAAc;AACjD;AACA,UAAU;AACV,WAAW,WAAW;AACtB,WAAW,gBAAgB;AAC3B,aAAa;AACb;;AAEA;;;;;;;;ACnCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC,yCAAyC,YAAY,KAAK;AAC1D;AACA;AACA,8FAA8F;AAC9F;AACA;AACA;AACA,WAAW;AACX,OAAO;;AAEP;AACA,SAAS,2BAA2B;AACpC,8BAA8B,aAAa;;AAE3C;AACA,mEAAmE;;AAEnE;AACA,sBAAsB,YAAY;AAClC;AACA;;AAEA;AACA,aAAa,OAAO;;AAEpB,sBAAsB,YAAY;AAClC;AACA;AACA;AACA;;AAEA,aAAa;AACb,OAAO;;AAEP;AACA,SAAS;AACT;AACA,4DAA4D;;AAE5D;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,C;;;;;;;ACnGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,kBAAkB;AAC7B;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,qBAAqB;;AAErB;AACA;AACA,cAAc;AACd;AACA,4BAA4B;;AAE5B;AACA;AACA,cAAc;AACd;AACA,gCAAgC;;AAEhC;AACA;AACA,cAAc;AACd;AACA,8BAA8B;;AAE9B;AACA;AACA,cAAc;AACd;AACA,2BAA2B;;AAE3B;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,cAAc,cAAc;AAC5B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6DAA6D,kBAAkB;AAC/E;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,gGAAgG,cAAc,2GAA2G,cAAc;AACvO;AACA,cAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,kBAAkB,+CAA+C;AACjE,+CAA+C;;AAE/C;AACA;AACA,uBAAuB,+CAA+C;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,WAAW,KAAK;AAChB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,0BAA0B,8BAA8B;AACxD;AACA,uBAAuB;AACvB;AACA;AACA;AACA,yCAAyC,YAAY;AACrD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,uBAAuB;AACrC,cAAc,uBAAuB;AACrC,cAAc,WAAW;AACzB,cAAc,WAAW;AACzB,cAAc,QAAQ;AACtB;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,kBAAkB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,kBAAkB;AACvE;AACA;AACA,qDAAqD,kBAAkB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF,4BAA4B,EAAE,uBAAuB;AACzI;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iBAAiB;AAC5B,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iBAAiB;AAC5B,aAAa,KAAK;AAClB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,UAAU,EAAE;AACzB;AACA;AACA;AACA;;AAEA;AACA,YAAY,yBAAyB,GAAG,yBAAyB,MAAM,yBAAyB;AAChG,aAAa,KAAK;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,+CAA+C;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wDAAwD,yBAAyB;AACjF,WAAW,UAAU,oBAAoB;AACzC,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA,gDAAgD;AAChD;;AAEA;AACA,iGAAiG,yBAAyB;AAC1H,WAAW,UAAU,oBAAoB;AACzC,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,WAAW,OAAO;AAClB,aAAa,UAAU,EAAE;AACzB,YAAY,MAAM;AAClB,YAAY,qBAAqB,EAAE;AACnC;AACA;AACA,+CAA+C;AAC/C;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,UAAU,EAAE;AACzB,YAAY,MAAM;AAClB,YAAY,mBAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,YAAY;AACzB;AACA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,aAAa,UAAU,EAAE;AACzB;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,oBAAoB,MAAM,uBAAuB;AACnF;AACA,cAAc,SAAS;AACvB;AACA,wFAAwF,WAAW;AACnG,cAAc,SAAS;AACvB;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB;;AAEA;AACA;AACA,WAAW,UAAU,EAAE;AACvB,WAAW,mBAAmB;AAC9B,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,aAAa;AACnD;AACA,UAAU;AACV,WAAW,eAAe;AAC1B,aAAa;AACb;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5kBA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,kBAAkB;AAC7B,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,2BAA2B;;AAE3B;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,cAAc,OAAO;AACrB;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,aAAa,SAAS;AACtB,YAAY,UAAU;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,8GAA8G;AACzH,WAAW,4JAA4J,EAAE;AACzK,aAAa,eAAe;AAC5B,wBAAwB,8FAA8F;AACtH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;AC7HA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,kBAAkB;AAC7B,YAAY,UAAU;AACtB;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA,sBAAsB;;AAEtB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,wBAAwB;AACtC;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA,0DAA0D,kBAAkB;AAC5E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,4GAA4G;AAC5G;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,YAAY;AACzB;AACA;AACA;AACA,2BAA2B,gDAAgD;AAC3E;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;;;;;;ACtKA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,iBAAiB;AAC5B,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,0BAA0B;AACrC,WAAW,0BAA0B;AACrC,WAAW,kBAAkB;AAC7B,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA,8BAA8B;;AAE9B;AACA;AACA,cAAc;AACd;AACA,mCAAmC;;AAEnC;AACA;AACA,cAAc;AACd;AACA,0DAA0D;;AAE1D;AACA;AACA,cAAc;AACd;AACA,qCAAqC;;AAErC;AACA;AACA,cAAc;AACd;AACA,4DAA4D;;AAE5D;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,kBAAkB;AAChC;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB,YAAY,UAAU;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;ACtJA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,sGAAsG,kBAAkB,EAAE;AAC1H,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,wBAAwB;;AAExB;AACA,UAAU,gDAAgD;AAC1D;AACA;AACA,oDAAoD;AACpD;;AAEA;AACA,wBAAwB;AACxB;AACA;AACA,2BAA2B;AAC3B;AACA,4BAA4B;AAC5B;AACA;AACA,0GAA0G;AAC1G;AACA;AACA,aAAa;AACb;AACA,iEAAiE;AACjE;AACA;AACA;;AAEA;AACA,SAAS,2BAA2B;;AAEpC;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,WAAW;AACX,OAAO;;AAEP;AACA,eAAe,+BAA+B;AAC9C;AACA;AACA;AACA,uCAAuC,WAAW;AAClD;;AAEA;AACA;AACA;AACA;;;;;;;;ACzGA;AACA;;AAEA;AACA;;AAEA;AACA,kIAAkI,oBAAoB;AACtJ;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,yBAAyB;AACzB;AACA;AACA,0EAA0E,iBAAiB;AAC3F;AACA;AACA;AACA,eAAe;AACf,SAAS;AACT;AACA,eAAe;AACf,6CAA6C;AAC7C;AACA;AACA,eAAe;AACf;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,mBAAmB,gDAAgD;AACnE;AACA;;AAEA;AACA,6CAA6C,oBAAoB;;AAEjE;AACA,wBAAwB;AACxB;AACA;AACA;AACA,0BAA0B,WAAW,KAAK;AAC1C;AACA;AACA,eAAe;;AAEf;AACA,SAAS,2BAA2B;AACpC;AACA;AACA,0BAA0B,YAAY,KAAK;AAC3C;AACA,eAAe;;AAEf;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,C;;;;;;;AChLA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,0BAA0B;AAC1B,2FAA2F,iBAAiB;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,eAAe;AACf,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;;AAEA;AACA,wBAAwB;AACxB,cAAc;AACd;AACA;AACA,gBAAgB;AAChB,0CAA0C,YAAY,KAAK;AAC3D;AACA,WAAW;AACX,OAAO;;AAEP;AACA,SAAS,2BAA2B;AACpC,cAAc;AACd;AACA;AACA;AACA,sBAAsB,aAAa,KAAK;AACxC;AACA,WAAW;AACX,OAAO;;AAEP;AACA,SAAS;AACT;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,KAAK;AAChB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA,cAAc;AACd,cAAc;;AAEd;AACA;AACA;AACA;AACA,UAAU,mBAAmB;AAC7B;AACA;AACA;AACA;;AAEA,gCAAgC;AAChC,+BAA+B;AAC/B,mBAAmB,2BAA2B;AAC9C;AACA;AACA,OAAO;AACP;;AAEA,2BAA2B;AAC3B,gCAAgC;AAChC,mBAAmB,sBAAsB;AACzC,gBAAgB;AAChB;AACA,OAAO;AACP;;AAEA,8BAA8B;AAC9B,qBAAqB;AACrB,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,SAAS;AACT,OAAO;AACP;AACA;AACA,eAAe,mBAAmB;AAClC;AACA;AACA;AACA;AACA,0BAA0B,eAAe;AACzC;AACA,aAAa;AACb,6CAA6C;AAC7C,gBAAgB;AAChB,sBAAsB,aAAa,KAAK;AACxC;AACA,WAAW;AACX,SAAS,2BAA2B;AACpC,0BAA0B;AAC1B;AACA,sBAAsB,aAAa,KAAK;AACxC;AACA,WAAW;AACX,SAAS,OAAO;AAChB,0CAA0C,qBAAqB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;;;;;;;AC9RA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;;AAEA;AACA,qCAAqC,eAAe;AACpD;AACA,UAAU;AACV,WAAW,kBAAkB;AAC7B,aAAa,UAAU,EAAE;AACzB;AACA;;AAEA;AACA,mCAAmC,eAAe;AAClD;AACA,UAAU;AACV,WAAW,UAAU,EAAE;AACvB,WAAW,mBAAmB;AAC9B,aAAa,kBAAkB;AAC/B;AACA;;AAEA;AACA,gCAAgC,eAAe;AAC/C;AACA,cAAc,2BAA2B;AACzC,cAAc,yBAAyB;AACvC;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;AClFA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,YAAY;AACzB;AACA;;AAEA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,cAAc;AACzB,WAAW,aAAa;AACxB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2BAA2B;AACrD;AACA;AACA;AACA,+BAA+B,+BAA+B;AAC9D;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,+BAA+B;AAC/B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6BAA6B,qBAAqB;AAClD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,aAAa;AACxB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,cAAc,uCAAuC,qBAAqB;AACrF,aAAa,cAAc;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,cAAc,uCAAuC,qBAAqB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A;;AAEA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,KAAK;AAChB,aAAa,cAAc;AAC3B,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,KAAK;AAChB,aAAa,KAAK;AAClB,YAAY,MAAM;AAClB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACvGA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;ACnCA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;;AAEA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA,UAAU;AACV,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA,8BAA8B,EAAE,mBAAmB,EAAE,iBAAiB,EAAE;AACxE;;;;;;;;AC1IA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,KAAK;AAChB,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,sBAAsB;AACpC;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;;;;;;;;AC3EA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK,IAAI;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK,IAAI;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa,0CAA0C;AACvD;AACA;AACA,aAAa;AACb;AACA,oDAAoD;AACpD;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9UA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,WAAW;AACX,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxGA;AACA;;AAEA;AACA,4BAA4B,gBAAgB;AAC5C;AACA,UAAU;AACV,WAAW,OAAO;AAClB,aAAa,WAAW;AACxB;;AAEA;AACA,wBAAwB,gBAAgB;AACxC;AACA,UAAU;AACV,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,WAAW;AACxB,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/CA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA,4BAA4B,UAAU;AACtC,4CAA4C,aAAa;AACzD,0BAA0B,UAAU;;AAEpC;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,mBAAmB;AAC9B,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvMA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;;;;;;;;AChFA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;;;;;;;;AC3CA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,yCAAyC,sCAAsC;AAC/E;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA,UAAU;AACV,WAAW,WAAW;AACtB,WAAW,KAAK;AAChB,aAAa;AACb;;AAEA;AACA,+BAA+B,kBAAkB,gBAAgB,qBAAqB;AACtF;AACA;AACA;AACA,UAAU;AACV,WAAW,sBAAsB;AACjC,WAAW,gCAAgC;AAC3C,aAAa,uBAAuB;AACpC;;AAEA;AACA;AACA,6CAA6C,qBAAqB;AAClE;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,mCAAmC,kCAAkC;AACrE,WAAW,oCAAoC;AAC/C,WAAW,kBAAkB;AAC7B,WAAW,kBAAkB;AAC7B,WAAW,sBAAsB;AACjC,WAAW,gCAAgC;AAC3C,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+BAA+B,kCAAkC,EAAE;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,+BAA+B,eAAe,EAAE;AAChD;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7IA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc;AACd,eAAe,yBAAyB;AACxC,eAAe,KAAK;AACpB,iBAAiB,iBAAiB;AAClC,gBAAgB,MAAM;AACtB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF;AAClF;AACA,sCAAsC;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA,0IAA0I,gCAAgC;AAC1K;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;;;;;;;AClGA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,mCAAmC,iBAAiB;AACpD;AACA,UAAU;AACV,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;;AAEA;AACA,uBAAuB,iBAAiB;AACxC;AACA,UAAU;AACV,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,cAAc;AACzB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,yDAAyD;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,cAAc;AACzB,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,2BAA2B;AACxC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6BAA6B;AAC5D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;;AAEA;AACA;AACA;;;;;;;;AClHA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA,4BAA4B,GAAG;AAC/B;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChEA,kBAAkB,UAAU,SAAS,UAAU,SAAS,UAAU,QAAQ,uBAAuB,YAAY,yBAAyB,eAAe,UAAU,2JAA2J,YAAY,UAAU,MAAM,uBAAuB,WAAW,2BAA2B,WAAW,wBAAwB,UAAU,UAAU,MAAM,uBAAuB,UAAU,sBAAsB,WAAW,wBAAwB,aAAa,UAAU,0DAA0D,SAAS,UAAU,QAAQ,yBAAyB,YAAY,uBAAuB,SAAS,wBAAwB,eAAe,UAAU,QAAQ,uBAAuB,WAAW,uBAAuB,aAAa,sBAAsB,aAAa,wBAAwB,gBAAgB,UAAU,OAAO,uBAAuB,QAAQ,uBAAuB,QAAQ,uBAAuB,SAAS,sBAAsB,SAAS,6BAA6B,SAAS,UAAU,QAAQ,6BAA6B,UAAU,UAAU,QAAQ,6BAA6B,UAAU,UAAU,eAAe,uBAAuB,YAAY,UAAU,QAAQ,wBAAwB,mBAAmB,UAAU,SAAS,uBAAuB,SAAS,wBAAwB,kBAAkB,UAAU,UAAU,uBAAuB,YAAY,uBAAuB,YAAY,qBAAqB,QAAQ,uBAAuB,SAAS,wBAAwB,mBAAmB,UAAU,SAAS,yBAAyB,kBAAkB,UAAU,UAAU,uBAAuB,YAAY,uBAAuB,YAAY,qBAAqB,QAAQ,yBAAyB,qBAAqB,UAAU,WAAW,uBAAuB,UAAU,uBAAuB,YAAY,qBAAqB,QAAQ,uBAAuB,QAAQ,uBAAuB,UAAU,yBAAyB,oBAAoB,UAAU,WAAW,qBAAqB,QAAQ,uBAAuB,gBAAgB,qBAAqB,QAAQ,uBAAuB,QAAQ,uBAAuB,UAAU,uBAAuB,iBAAiB,8CAA8C,cAAc,uBAAuB,sBAAsB,UAAU,WAAW,uBAAuB,UAAU,yBAAyB,qBAAqB,UAAU,WAAW,qBAAqB,QAAQ,yBAAyB,uBAAuB,UAAU,WAAW,yBAAyB,sBAAsB,YAAY,mBAAmB,UAAU,WAAW,uBAAuB,SAAS,wBAAwB,kBAAkB,YAAY,oBAAoB,UAAU,WAAW,yBAAyB,mBAAmB,UAAU,YAAY,gDAAgD,yBAAyB,UAAU,WAAW,yBAAyB,wBAAwB,UAAU,cAAc,uBAAuB,aAAa,yBAAyB,mBAAmB,UAAU,WAAW,yBAAyB,kBAAkB,UAAU,gBAAgB,gDAAgD,gBAAgB,YAAY,eAAe,YAAY,eAAe,UAAU,QAAQ,wBAAwB,cAAc,UAAU,QAAQ,wBAAwB,gBAAgB,UAAU,QAAQ,4B","file":"centrifuge.protobuf.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Centrifuge\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Centrifuge\"] = factory();\n\telse\n\t\troot[\"Centrifuge\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 32);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 6c4bc52bd851320564c5","\"use strict\";\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = require(\"./util/minimal\");\r\n\r\nvar roots = require(\"./roots\");\r\n\r\nvar Type, // cyclic\r\n Enum;\r\n\r\nutil.codegen = require(\"@protobufjs/codegen\");\r\nutil.fetch = require(\"@protobufjs/fetch\");\r\nutil.path = require(\"@protobufjs/path\");\r\n\r\n/**\r\n * Node's fs module if available.\r\n * @type {Object.}\r\n */\r\nutil.fs = util.inquire(\"fs\");\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (object) {\r\n var keys = Object.keys(object),\r\n array = new Array(keys.length),\r\n index = 0;\r\n while (index < keys.length)\r\n array[index] = object[keys[index++]];\r\n return array;\r\n }\r\n return [];\r\n};\r\n\r\n/**\r\n * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values.\r\n * @param {Array.<*>} array Array to convert\r\n * @returns {Object.} Converted object\r\n */\r\nutil.toObject = function toObject(array) {\r\n var object = {},\r\n index = 0;\r\n while (index < array.length) {\r\n var key = array[index++],\r\n val = array[index++];\r\n if (val !== undefined)\r\n object[key] = val;\r\n }\r\n return object;\r\n};\r\n\r\nvar safePropBackslashRe = /\\\\/g,\r\n safePropQuoteRe = /\"/g;\r\n\r\n/**\r\n * Tests whether the specified name is a reserved word in JS.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nutil.isReserved = function isReserved(name) {\r\n return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test(name);\r\n};\r\n\r\n/**\r\n * Returns a safe property accessor for the specified property name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n if (!/^[$\\w_]+$/.test(prop) || util.isReserved(prop))\r\n return \"[\\\"\" + prop.replace(safePropBackslashRe, \"\\\\\\\\\").replace(safePropQuoteRe, \"\\\\\\\"\") + \"\\\"]\";\r\n return \".\" + prop;\r\n};\r\n\r\n/**\r\n * Converts the first character of a string to upper case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.ucFirst = function ucFirst(str) {\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\nvar camelCaseRe = /_([a-z])/g;\r\n\r\n/**\r\n * Converts a string to camel case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.camelCase = function camelCase(str) {\r\n return str.substring(0, 1)\r\n + str.substring(1)\r\n .replace(camelCaseRe, function($0, $1) { return $1.toUpperCase(); });\r\n};\r\n\r\n/**\r\n * Compares reflected fields by id.\r\n * @param {Field} a First field\r\n * @param {Field} b Second field\r\n * @returns {number} Comparison value\r\n */\r\nutil.compareFieldsById = function compareFieldsById(a, b) {\r\n return a.id - b.id;\r\n};\r\n\r\n/**\r\n * Decorator helper for types (TypeScript).\r\n * @param {Constructor} ctor Constructor function\r\n * @param {string} [typeName] Type name, defaults to the constructor's name\r\n * @returns {Type} Reflected type\r\n * @template T extends Message\r\n * @property {Root} root Decorators root\r\n */\r\nutil.decorateType = function decorateType(ctor, typeName) {\r\n\r\n /* istanbul ignore if */\r\n if (ctor.$type) {\r\n if (typeName && ctor.$type.name !== typeName) {\r\n util.decorateRoot.remove(ctor.$type);\r\n ctor.$type.name = typeName;\r\n util.decorateRoot.add(ctor.$type);\r\n }\r\n return ctor.$type;\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(\"./type\");\r\n\r\n var type = new Type(typeName || ctor.name);\r\n util.decorateRoot.add(type);\r\n type.ctor = ctor; // sets up .encode, .decode etc.\r\n Object.defineProperty(ctor, \"$type\", { value: type, enumerable: false });\r\n Object.defineProperty(ctor.prototype, \"$type\", { value: type, enumerable: false });\r\n return type;\r\n};\r\n\r\nvar decorateEnumIndex = 0;\r\n\r\n/**\r\n * Decorator helper for enums (TypeScript).\r\n * @param {Object} object Enum object\r\n * @returns {Enum} Reflected enum\r\n */\r\nutil.decorateEnum = function decorateEnum(object) {\r\n\r\n /* istanbul ignore if */\r\n if (object.$type)\r\n return object.$type;\r\n\r\n /* istanbul ignore next */\r\n if (!Enum)\r\n Enum = require(\"./enum\");\r\n\r\n var enm = new Enum(\"Enum\" + decorateEnumIndex++, object);\r\n util.decorateRoot.add(enm);\r\n Object.defineProperty(object, \"$type\", { value: enm, enumerable: false });\r\n return enm;\r\n};\r\n\r\n/**\r\n * Decorator root (TypeScript).\r\n * @name util.decorateRoot\r\n * @type {Root}\r\n * @readonly\r\n */\r\nObject.defineProperty(util, \"decorateRoot\", {\r\n get: function() {\r\n return roots[\"decorated\"] || (roots[\"decorated\"] = new (require(\"./root\"))());\r\n }\r\n});\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/util.js\n// module id = 0\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Enum;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Enum.prototype = Object.create(ReflectionObject.prototype)).constructor = Enum).className = \"Enum\";\r\n\r\nvar Namespace = require(\"./namespace\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new enum instance.\r\n * @classdesc Reflected enum.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {Object.} [values] Enum values as an object, by name\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] The comment for this enum\r\n * @param {Object.} [comments] The value comments for this enum\r\n */\r\nfunction Enum(name, values, options, comment, comments) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n if (values && typeof values !== \"object\")\r\n throw TypeError(\"values must be an object\");\r\n\r\n /**\r\n * Enum values by id.\r\n * @type {Object.}\r\n */\r\n this.valuesById = {};\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = Object.create(this.valuesById); // toJSON, marker\r\n\r\n /**\r\n * Enum comment text.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n\r\n /**\r\n * Value comment texts, if any.\r\n * @type {Object.}\r\n */\r\n this.comments = comments || {};\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {Array.}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n // Note that values inherit valuesById on their prototype which makes them a TypeScript-\r\n // compatible enum. This is used by pbts to write actual enum definitions that work for\r\n // static and reflection code alike instead of emitting generic object definitions.\r\n\r\n if (values)\r\n for (var keys = Object.keys(values), i = 0; i < keys.length; ++i)\r\n if (typeof values[keys[i]] === \"number\") // use forward entries only\r\n this.valuesById[ this.values[keys[i]] = values[keys[i]] ] = keys[i];\r\n}\r\n\r\n/**\r\n * Enum descriptor.\r\n * @interface IEnum\r\n * @property {Object.} values Enum values\r\n * @property {Object.} [options] Enum options\r\n */\r\n\r\n/**\r\n * Constructs an enum from an enum descriptor.\r\n * @param {string} name Enum name\r\n * @param {IEnum} json Enum descriptor\r\n * @returns {Enum} Created enum\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nEnum.fromJSON = function fromJSON(name, json) {\r\n var enm = new Enum(name, json.values, json.options, json.comment, json.comments);\r\n enm.reserved = json.reserved;\r\n return enm;\r\n};\r\n\r\n/**\r\n * Converts this enum to an enum descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IEnum} Enum descriptor\r\n */\r\nEnum.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"values\" , this.values,\r\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\r\n \"comment\" , keepComments ? this.comment : undefined,\r\n \"comments\" , keepComments ? this.comments : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds a value to this enum.\r\n * @param {string} name Value name\r\n * @param {number} id Value id\r\n * @param {string} [comment] Comment, if any\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnum.prototype.add = function add(name, id, comment) {\r\n // utilized by the parser but not by .fromJSON\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n if (!util.isInteger(id))\r\n throw TypeError(\"id must be an integer\");\r\n\r\n if (this.values[name] !== undefined)\r\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\r\n\r\n if (this.isReservedId(id))\r\n throw Error(\"id \" + id + \" is reserved in \" + this);\r\n\r\n if (this.isReservedName(name))\r\n throw Error(\"name '\" + name + \"' is reserved in \" + this);\r\n\r\n if (this.valuesById[id] !== undefined) {\r\n if (!(this.options && this.options.allow_alias))\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this.values[name] = id;\r\n } else\r\n this.valuesById[this.values[name] = id] = name;\r\n\r\n this.comments[name] = comment || null;\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnum.prototype.remove = function remove(name) {\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n var val = this.values[name];\r\n if (val == null)\r\n throw Error(\"name '\" + name + \"' does not exist in \" + this);\r\n\r\n delete this.valuesById[val];\r\n delete this.values[name];\r\n delete this.comments[name];\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nEnum.prototype.isReservedId = function isReservedId(id) {\r\n return Namespace.isReservedId(this.reserved, id);\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nEnum.prototype.isReservedName = function isReservedName(name) {\r\n return Namespace.isReservedName(this.reserved, name);\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/enum.js\n// module id = 1\n// module chunks = 0","\"use strict\";\r\nvar util = exports;\r\n\r\n// used to return a Promise where callback is omitted\r\nutil.asPromise = require(\"@protobufjs/aspromise\");\r\n\r\n// converts to / from base64 encoded strings\r\nutil.base64 = require(\"@protobufjs/base64\");\r\n\r\n// base class of rpc.Service\r\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\r\n\r\n// float handling accross browsers\r\nutil.float = require(\"@protobufjs/float\");\r\n\r\n// requires modules optionally and hides the call from bundlers\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\n\r\n// converts to / from utf8 encoded strings\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\n\r\n// provides a node-like buffer pool in the browser\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n// utility to work with the low and high bits of a 64 bit value\r\nutil.LongBits = require(\"./longbits\");\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n * @const\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n * @const\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n * @const\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\r\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nutil.isString = function isString(value) {\r\n return typeof value === \"string\" || value instanceof String;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return value && typeof value === \"object\";\r\n};\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * This is an alias of {@link util.isSet}.\r\n * @function\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isset =\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isSet = function isSet(obj, prop) {\r\n var value = obj[prop];\r\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\r\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\r\n return false;\r\n};\r\n\r\n/**\r\n * Any compatible Buffer instance.\r\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\r\n * @interface Buffer\r\n * @extends Uint8Array\r\n */\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {Constructor}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\r\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\r\n } catch (e) {\r\n /* istanbul ignore next */\r\n return null;\r\n }\r\n})();\r\n\r\n// Internal alias of or polyfull for Buffer.from.\r\nutil._Buffer_from = null;\r\n\r\n// Internal alias of or polyfill for Buffer.allocUnsafe.\r\nutil._Buffer_allocUnsafe = null;\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array|Buffer} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n /* istanbul ignore next */\r\n return typeof sizeOrArray === \"number\"\r\n ? util.Buffer\r\n ? util._Buffer_allocUnsafe(sizeOrArray)\r\n : new util.Array(sizeOrArray)\r\n : util.Buffer\r\n ? util._Buffer_from(sizeOrArray)\r\n : typeof Uint8Array === \"undefined\"\r\n ? sizeOrArray\r\n : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {Constructor}\r\n */\r\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\r\n * @interface Long\r\n * @property {number} low Low bits\r\n * @property {number} high High bits\r\n * @property {boolean} unsigned Whether unsigned or not\r\n */\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {Constructor}\r\n */\r\nutil.Long = /* istanbul ignore next */ global.dcodeIO && /* istanbul ignore next */ global.dcodeIO.Long || util.inquire(\"long\");\r\n\r\n/**\r\n * Regular expression used to verify 2 bit (`bool`) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key2Re = /^true|false|0|1$/;\r\n\r\n/**\r\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\r\n\r\n/**\r\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? util.LongBits.from(value).toHash()\r\n : util.LongBits.zeroHash;\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = util.LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @memberof util\r\n * @param {Object.} dst Destination object\r\n * @param {Object.} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.} Destination object\r\n */\r\nfunction merge(dst, src, ifNotSet) { // used by converters\r\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n return dst;\r\n}\r\n\r\nutil.merge = merge;\r\n\r\n/**\r\n * Converts the first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a custom error constructor.\r\n * @memberof util\r\n * @param {string} name Error name\r\n * @returns {Constructor} Custom error constructor\r\n */\r\nfunction newError(name) {\r\n\r\n function CustomError(message, properties) {\r\n\r\n if (!(this instanceof CustomError))\r\n return new CustomError(message, properties);\r\n\r\n // Error.call(this, message);\r\n // ^ just returns a new error instance because the ctor can be called as a function\r\n\r\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\r\n\r\n /* istanbul ignore next */\r\n if (Error.captureStackTrace) // node\r\n Error.captureStackTrace(this, CustomError);\r\n else\r\n Object.defineProperty(this, \"stack\", { value: (new Error()).stack || \"\" });\r\n\r\n if (properties)\r\n merge(this, properties);\r\n }\r\n\r\n (CustomError.prototype = Object.create(Error.prototype)).constructor = CustomError;\r\n\r\n Object.defineProperty(CustomError.prototype, \"name\", { get: function() { return name; } });\r\n\r\n CustomError.prototype.toString = function toString() {\r\n return this.name + \": \" + this.message;\r\n };\r\n\r\n return CustomError;\r\n}\r\n\r\nutil.newError = newError;\r\n\r\n/**\r\n * Constructs a new protocol error.\r\n * @classdesc Error subclass indicating a protocol specifc error.\r\n * @memberof util\r\n * @extends Error\r\n * @template T extends Message\r\n * @constructor\r\n * @param {string} message Error message\r\n * @param {Object.} [properties] Additional properties\r\n * @example\r\n * try {\r\n * MyMessage.decode(someBuffer); // throws if required fields are missing\r\n * } catch (e) {\r\n * if (e instanceof ProtocolError && e.instance)\r\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\r\n * }\r\n */\r\nutil.ProtocolError = newError(\"ProtocolError\");\r\n\r\n/**\r\n * So far decoded message instance.\r\n * @name util.ProtocolError#instance\r\n * @type {Message}\r\n */\r\n\r\n/**\r\n * A OneOf getter as returned by {@link util.oneOfGetter}.\r\n * @typedef OneOfGetter\r\n * @type {function}\r\n * @returns {string|undefined} Set field name, if any\r\n */\r\n\r\n/**\r\n * Builds a getter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfGetter} Unbound getter\r\n */\r\nutil.oneOfGetter = function getOneOf(fieldNames) {\r\n var fieldMap = {};\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n fieldMap[fieldNames[i]] = 1;\r\n\r\n /**\r\n * @returns {string|undefined} Set field name, if any\r\n * @this Object\r\n * @ignore\r\n */\r\n return function() { // eslint-disable-line consistent-return\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\r\n return keys[i];\r\n };\r\n};\r\n\r\n/**\r\n * A OneOf setter as returned by {@link util.oneOfSetter}.\r\n * @typedef OneOfSetter\r\n * @type {function}\r\n * @param {string|undefined} value Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Builds a setter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfSetter} Unbound setter\r\n */\r\nutil.oneOfSetter = function setOneOf(fieldNames) {\r\n\r\n /**\r\n * @param {string} name Field name\r\n * @returns {undefined}\r\n * @this Object\r\n * @ignore\r\n */\r\n return function(name) {\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n if (fieldNames[i] !== name)\r\n delete this[fieldNames[i]];\r\n };\r\n};\r\n\r\n/**\r\n * Default conversion options used for {@link Message#toJSON} implementations.\r\n *\r\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\r\n *\r\n * - Longs become strings\r\n * - Enums become string keys\r\n * - Bytes become base64 encoded strings\r\n * - (Sub-)Messages become plain objects\r\n * - Maps become plain objects with all string keys\r\n * - Repeated fields become arrays\r\n * - NaN and Infinity for float and double fields become strings\r\n *\r\n * @type {IConversionOptions}\r\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\r\n */\r\nutil.toJSONOptions = {\r\n longs: String,\r\n enums: String,\r\n bytes: String,\r\n json: true\r\n};\r\n\r\nutil._configure = function() {\r\n var Buffer = util.Buffer;\r\n /* istanbul ignore if */\r\n if (!Buffer) {\r\n util._Buffer_from = util._Buffer_allocUnsafe = null;\r\n return;\r\n }\r\n // because node 4.x buffers are incompatible & immutable\r\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\r\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\r\n /* istanbul ignore next */\r\n function Buffer_from(value, encoding) {\r\n return new Buffer(value, encoding);\r\n };\r\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\r\n /* istanbul ignore next */\r\n function Buffer_allocUnsafe(size) {\r\n return new Buffer(size);\r\n };\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/util/minimal.js\n// module id = 2\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 3\n// module chunks = 0 1","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nReflectionObject.className = \"ReflectionObject\";\r\n\r\nvar util = require(\"./util\");\r\n\r\nvar Root; // cyclic\r\n\r\n/**\r\n * Constructs a new reflection object instance.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object.} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n if (options && !util.isObject(options))\r\n throw TypeError(\"options must be an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|undefined}\r\n */\r\n this.options = options; // toJSON\r\n\r\n /**\r\n * Unique name within its namespace.\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Parent namespace.\r\n * @type {Namespace|null}\r\n */\r\n this.parent = null;\r\n\r\n /**\r\n * Whether already resolved or not.\r\n * @type {boolean}\r\n */\r\n this.resolved = false;\r\n\r\n /**\r\n * Comment text, if any.\r\n * @type {string|null}\r\n */\r\n this.comment = null;\r\n\r\n /**\r\n * Defining file name.\r\n * @type {string|null}\r\n */\r\n this.filename = null;\r\n}\r\n\r\nObject.defineProperties(ReflectionObject.prototype, {\r\n\r\n /**\r\n * Reference to the root namespace.\r\n * @name ReflectionObject#root\r\n * @type {Root}\r\n * @readonly\r\n */\r\n root: {\r\n get: function() {\r\n var ptr = this;\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n return ptr;\r\n }\r\n },\r\n\r\n /**\r\n * Full name including leading dot.\r\n * @name ReflectionObject#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: function() {\r\n var path = [ this.name ],\r\n ptr = this.parent;\r\n while (ptr) {\r\n path.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n }\r\n return path.join(\".\");\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Converts this reflection object to its descriptor representation.\r\n * @returns {Object.} Descriptor\r\n * @abstract\r\n */\r\nReflectionObject.prototype.toJSON = /* istanbul ignore next */ function toJSON() {\r\n throw Error(); // not implemented, shouldn't happen\r\n};\r\n\r\n/**\r\n * Called when this object is added to a parent.\r\n * @param {ReflectionObject} parent Parent added to\r\n * @returns {undefined}\r\n */\r\nReflectionObject.prototype.onAdd = function onAdd(parent) {\r\n if (this.parent && this.parent !== parent)\r\n this.parent.remove(this);\r\n this.parent = parent;\r\n this.resolved = false;\r\n var root = parent.root;\r\n if (root instanceof Root)\r\n root._handleAdd(this);\r\n};\r\n\r\n/**\r\n * Called when this object is removed from a parent.\r\n * @param {ReflectionObject} parent Parent removed from\r\n * @returns {undefined}\r\n */\r\nReflectionObject.prototype.onRemove = function onRemove(parent) {\r\n var root = parent.root;\r\n if (root instanceof Root)\r\n root._handleRemove(this);\r\n this.parent = null;\r\n this.resolved = false;\r\n};\r\n\r\n/**\r\n * Resolves this objects type references.\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n if (this.root instanceof Root)\r\n this.resolved = true; // only if part of a root\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\nReflectionObject.prototype.getOption = function getOption(name) {\r\n if (this.options)\r\n return this.options[name];\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Sets an option.\r\n * @param {string} name Option name\r\n * @param {*} value Option value\r\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (!ifNotSet || !this.options || this.options[name] === undefined)\r\n (this.options || (this.options = {}))[name] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets multiple options.\r\n * @param {Object.} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n for (var keys = Object.keys(options), i = 0; i < keys.length; ++i)\r\n this.setOption(keys[i], options[keys[i]], ifNotSet);\r\n return this;\r\n};\r\n\r\n/**\r\n * Converts this instance to its string representation.\r\n * @returns {string} Class name[, space, full name]\r\n */\r\nReflectionObject.prototype.toString = function toString() {\r\n var className = this.constructor.className,\r\n fullName = this.fullName;\r\n if (fullName.length)\r\n return className + \" \" + fullName;\r\n return className;\r\n};\r\n\r\nReflectionObject._configure = function(Root_) {\r\n Root = Root_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/object.js\n// module id = 4\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Field;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Field.prototype = Object.create(ReflectionObject.prototype)).constructor = Field).className = \"Field\";\r\n\r\nvar Enum = require(\"./enum\"),\r\n types = require(\"./types\"),\r\n util = require(\"./util\");\r\n\r\nvar Type; // cyclic\r\n\r\nvar ruleRe = /^required|optional|repeated$/;\r\n\r\n/**\r\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\r\n * @name Field\r\n * @classdesc Reflected message field.\r\n * @extends FieldBase\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string|Object.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n */\r\n\r\n/**\r\n * Constructs a field from a field descriptor.\r\n * @param {string} name Field name\r\n * @param {IField} json Field descriptor\r\n * @returns {Field} Created field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nField.fromJSON = function fromJSON(name, json) {\r\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Not an actual constructor. Use {@link Field} instead.\r\n * @classdesc Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports FieldBase\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string|Object.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction Field(name, id, type, rule, extend, options, comment) {\r\n\r\n if (util.isObject(rule)) {\r\n comment = extend;\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n comment = options;\r\n options = extend;\r\n extend = undefined;\r\n }\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id must be a non-negative integer\");\r\n\r\n if (!util.isString(type))\r\n throw TypeError(\"type must be a string\");\r\n\r\n if (rule !== undefined && !ruleRe.test(rule = rule.toString().toLowerCase()))\r\n throw TypeError(\"rule must be a string rule\");\r\n\r\n if (extend !== undefined && !util.isString(extend))\r\n throw TypeError(\"extend must be a string\");\r\n\r\n /**\r\n * Field rule, if any.\r\n * @type {string|undefined}\r\n */\r\n this.rule = rule && rule !== \"optional\" ? rule : undefined; // toJSON\r\n\r\n /**\r\n * Field type.\r\n * @type {string}\r\n */\r\n this.type = type; // toJSON\r\n\r\n /**\r\n * Unique field id.\r\n * @type {number}\r\n */\r\n this.id = id; // toJSON, marker\r\n\r\n /**\r\n * Extended type if different from parent.\r\n * @type {string|undefined}\r\n */\r\n this.extend = extend || undefined; // toJSON\r\n\r\n /**\r\n * Whether this field is required.\r\n * @type {boolean}\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Whether this field is optional.\r\n * @type {boolean}\r\n */\r\n this.optional = !this.required;\r\n\r\n /**\r\n * Whether this field is repeated.\r\n * @type {boolean}\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Whether this field is a map or not.\r\n * @type {boolean}\r\n */\r\n this.map = false;\r\n\r\n /**\r\n * Message this field belongs to.\r\n * @type {Type|null}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {OneOf|null}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field type's default value.\r\n * @type {*}\r\n */\r\n this.typeDefault = null;\r\n\r\n /**\r\n * The field's default value on prototypes.\r\n * @type {*}\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Whether this field's value should be treated as a long.\r\n * @type {boolean}\r\n */\r\n this.long = util.Long ? types.long[type] !== undefined : /* istanbul ignore next */ false;\r\n\r\n /**\r\n * Whether this field's value is a buffer.\r\n * @type {boolean}\r\n */\r\n this.bytes = type === \"bytes\";\r\n\r\n /**\r\n * Resolved type if not a basic type.\r\n * @type {Type|Enum|null}\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Sister-field within the extended type if a declaring extension field.\r\n * @type {Field|null}\r\n */\r\n this.extensionField = null;\r\n\r\n /**\r\n * Sister-field within the declaring namespace if an extended field.\r\n * @type {Field|null}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {boolean|null}\r\n * @private\r\n */\r\n this._packed = null;\r\n\r\n /**\r\n * Comment for this field.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\nObject.defineProperty(Field.prototype, \"packed\", {\r\n get: function() {\r\n // defaults to packed=true if not explicity set to false\r\n if (this._packed === null)\r\n this._packed = this.getOption(\"packed\") !== false;\r\n return this._packed;\r\n }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nField.prototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\") // clear cached before setting\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Field descriptor.\r\n * @interface IField\r\n * @property {string} [rule=\"optional\"] Field rule\r\n * @property {string} type Field type\r\n * @property {number} id Field id\r\n * @property {Object.} [options] Field options\r\n */\r\n\r\n/**\r\n * Extension field descriptor.\r\n * @interface IExtensionField\r\n * @extends IField\r\n * @property {string} extend Extended type\r\n */\r\n\r\n/**\r\n * Converts this field to a field descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IField} Field descriptor\r\n */\r\nField.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"rule\" , this.rule !== \"optional\" && this.rule || undefined,\r\n \"type\" , this.type,\r\n \"id\" , this.id,\r\n \"extend\" , this.extend,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Resolves this field's type references.\r\n * @returns {Field} `this`\r\n * @throws {Error} If any reference cannot be resolved\r\n */\r\nField.prototype.resolve = function resolve() {\r\n\r\n if (this.resolved)\r\n return this;\r\n\r\n if ((this.typeDefault = types.defaults[this.type]) === undefined) { // if not a basic type, resolve it\r\n this.resolvedType = (this.declaringField ? this.declaringField.parent : this.parent).lookupTypeOrEnum(this.type);\r\n if (this.resolvedType instanceof Type)\r\n this.typeDefault = null;\r\n else // instanceof Enum\r\n this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\r\n }\r\n\r\n // use explicitly set default value if present\r\n if (this.options && this.options[\"default\"] != null) {\r\n this.typeDefault = this.options[\"default\"];\r\n if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\r\n this.typeDefault = this.resolvedType.values[this.typeDefault];\r\n }\r\n\r\n // remove unnecessary options\r\n if (this.options) {\r\n if (this.options.packed === true || this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum))\r\n delete this.options.packed;\r\n if (!Object.keys(this.options).length)\r\n this.options = undefined;\r\n }\r\n\r\n // convert to internal data type if necesssary\r\n if (this.long) {\r\n this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\r\n\r\n /* istanbul ignore else */\r\n if (Object.freeze)\r\n Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n\r\n } else if (this.bytes && typeof this.typeDefault === \"string\") {\r\n var buf;\r\n if (util.base64.test(this.typeDefault))\r\n util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\r\n else\r\n util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\r\n this.typeDefault = buf;\r\n }\r\n\r\n // take special care of maps and repeated fields\r\n if (this.map)\r\n this.defaultValue = util.emptyObject;\r\n else if (this.repeated)\r\n this.defaultValue = util.emptyArray;\r\n else\r\n this.defaultValue = this.typeDefault;\r\n\r\n // ensure proper value on prototype\r\n if (this.parent instanceof Type)\r\n this.parent.ctor.prototype[this.name] = this.defaultValue;\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript).\r\n * @typedef FieldDecorator\r\n * @type {function}\r\n * @param {Object} prototype Target prototype\r\n * @param {string} fieldName Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Field decorator (TypeScript).\r\n * @name Field.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"string\"|\"bool\"|\"bytes\"|Object} fieldType Field type\r\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\r\n * @param {T} [defaultValue] Default value\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[]\r\n */\r\nField.d = function decorateField(fieldId, fieldType, fieldRule, defaultValue) {\r\n\r\n // submessage: decorate the submessage and use its name as the type\r\n if (typeof fieldType === \"function\")\r\n fieldType = util.decorateType(fieldType).name;\r\n\r\n // enum reference: create a reflected copy of the enum and keep reuseing it\r\n else if (fieldType && typeof fieldType === \"object\")\r\n fieldType = util.decorateEnum(fieldType).name;\r\n\r\n return function fieldDecorator(prototype, fieldName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new Field(fieldName, fieldId, fieldType, fieldRule, { \"default\": defaultValue }));\r\n };\r\n};\r\n\r\n/**\r\n * Field decorator (TypeScript).\r\n * @name Field.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {Constructor|string} fieldType Field type\r\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends Message\r\n * @variation 2\r\n */\r\n// like Field.d but without a default value\r\n\r\nField._configure = function configure(Type_) {\r\n Type = Type_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/field.js\n// module id = 5\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/events/events.js\n// module id = 6\n// module chunks = 0 1","export function startsWith(value, prefix) {\n return value.lastIndexOf(prefix, 0) === 0;\n};\n\nexport function isFunction(value) {\n if (value === undefined || value === null) {\n return false;\n }\n return typeof value === 'function';\n};\n\nexport function log(level, args) {\n if (global.console) {\n const logger = global.console[level];\n\n if (isFunction(logger)) {\n logger.apply(global.console, args);\n }\n }\n};\n\nexport function backoff(step, min, max) {\n const jitter = 0.5 * Math.random();\n const interval = Math.min(max, min * Math.pow(2, step + 1));\n\n return Math.floor((1 - jitter) * interval);\n};\n\nexport function errorExists(data) {\n return 'error' in data && data.error !== null;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Namespace.prototype = Object.create(ReflectionObject.prototype)).constructor = Namespace).className = \"Namespace\";\r\n\r\nvar Enum = require(\"./enum\"),\r\n Field = require(\"./field\"),\r\n util = require(\"./util\");\r\n\r\nvar Type, // cyclic\r\n Service; // \"\r\n\r\n/**\r\n * Constructs a new namespace instance.\r\n * @name Namespace\r\n * @classdesc Reflected namespace.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\r\n */\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @memberof Namespace\r\n * @function\r\n * @param {string} name Namespace name\r\n * @param {Object.} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array, toJSONOptions) {\r\n if (!(array && array.length))\r\n return undefined;\r\n var obj = {};\r\n for (var i = 0; i < array.length; ++i)\r\n obj[array[i].name] = array[i].toJSON(toJSONOptions);\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {Array.|undefined} reserved Array of reserved ranges and names\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nNamespace.isReservedId = function isReservedId(reserved, id) {\r\n if (reserved)\r\n for (var i = 0; i < reserved.length; ++i)\r\n if (typeof reserved[i] !== \"string\" && reserved[i][0] <= id && reserved[i][1] >= id)\r\n return true;\r\n return false;\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {Array.|undefined} reserved Array of reserved ranges and names\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nNamespace.isReservedName = function isReservedName(reserved, name) {\r\n if (reserved)\r\n for (var i = 0; i < reserved.length; ++i)\r\n if (reserved[i] === name)\r\n return true;\r\n return false;\r\n};\r\n\r\n/**\r\n * Not an actual constructor. Use {@link Namespace} instead.\r\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports NamespaceBase\r\n * @extends ReflectionObject\r\n * @abstract\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\r\n * @see {@link Namespace}\r\n */\r\nfunction Namespace(name, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Nested objects by name.\r\n * @type {Object.|undefined}\r\n */\r\n this.nested = undefined; // toJSON\r\n\r\n /**\r\n * Cached nested objects as an array.\r\n * @type {ReflectionObject[]|null}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n return namespace;\r\n}\r\n\r\n/**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name NamespaceBase#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(Namespace.prototype, \"nestedArray\", {\r\n get: function() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n});\r\n\r\n/**\r\n * Namespace descriptor.\r\n * @interface INamespace\r\n * @property {Object.} [options] Namespace options\r\n * @property {Object.} [nested] Nested object descriptors\r\n */\r\n\r\n/**\r\n * Any extension field descriptor.\r\n * @typedef AnyExtensionField\r\n * @type {IExtensionField|IExtensionMapField}\r\n */\r\n\r\n/**\r\n * Any nested object descriptor.\r\n * @typedef AnyNestedObject\r\n * @type {IEnum|IType|IService|AnyExtensionField|INamespace}\r\n */\r\n// ^ BEWARE: VSCode hangs forever when using more than 5 types (that's why AnyExtensionField exists in the first place)\r\n\r\n/**\r\n * Converts this namespace to a namespace descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {INamespace} Namespace descriptor\r\n */\r\nNamespace.prototype.toJSON = function toJSON(toJSONOptions) {\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"nested\" , arrayToJSON(this.nestedArray, toJSONOptions)\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds nested objects to this namespace from nested object descriptors.\r\n * @param {Object.} nestedJson Any nested object descriptors\r\n * @returns {Namespace} `this`\r\n */\r\nNamespace.prototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n /* istanbul ignore else */\r\n if (nestedJson) {\r\n for (var names = Object.keys(nestedJson), i = 0, nested; i < names.length; ++i) {\r\n nested = nestedJson[names[i]];\r\n ns.add( // most to least likely\r\n ( nested.fields !== undefined\r\n ? Type.fromJSON\r\n : nested.values !== undefined\r\n ? Enum.fromJSON\r\n : nested.methods !== undefined\r\n ? Service.fromJSON\r\n : nested.id !== undefined\r\n ? Field.fromJSON\r\n : Namespace.fromJSON )(names[i], nested)\r\n );\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets the nested object of the specified name.\r\n * @param {string} name Nested object name\r\n * @returns {ReflectionObject|null} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespace.prototype.get = function get(name) {\r\n return this.nested && this.nested[name]\r\n || null;\r\n};\r\n\r\n/**\r\n * Gets the values of the nested {@link Enum|enum} of the specified name.\r\n * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`.\r\n * @param {string} name Nested enum name\r\n * @returns {Object.} Enum values\r\n * @throws {Error} If there is no such enum\r\n */\r\nNamespace.prototype.getEnum = function getEnum(name) {\r\n if (this.nested && this.nested[name] instanceof Enum)\r\n return this.nested[name].values;\r\n throw Error(\"no such enum: \" + name);\r\n};\r\n\r\n/**\r\n * Adds a nested object to this namespace.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name\r\n */\r\nNamespace.prototype.add = function add(object) {\r\n\r\n if (!(object instanceof Field && object.extend !== undefined || object instanceof Type || object instanceof Enum || object instanceof Service || object instanceof Namespace))\r\n throw TypeError(\"object must be a valid nested object\");\r\n\r\n if (!this.nested)\r\n this.nested = {};\r\n else {\r\n var prev = this.get(object.name);\r\n if (prev) {\r\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\r\n // replace plain namespace but keep existing nested elements and options\r\n var nested = prev.nestedArray;\r\n for (var i = 0; i < nested.length; ++i)\r\n object.add(nested[i]);\r\n this.remove(prev);\r\n if (!this.nested)\r\n this.nested = {};\r\n object.setOptions(prev.options, true);\r\n\r\n } else\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n }\r\n }\r\n this.nested[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this namespace.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this namespace\r\n */\r\nNamespace.prototype.remove = function remove(object) {\r\n\r\n if (!(object instanceof ReflectionObject))\r\n throw TypeError(\"object must be a ReflectionObject\");\r\n if (object.parent !== this)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.nested[object.name];\r\n if (!Object.keys(this.nested).length)\r\n this.nested = undefined;\r\n\r\n object.onRemove(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Defines additial namespaces within this one if not yet existing.\r\n * @param {string|string[]} path Path to create\r\n * @param {*} [json] Nested types to create from JSON\r\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\r\n */\r\nNamespace.prototype.define = function define(path, json) {\r\n\r\n if (util.isString(path))\r\n path = path.split(\".\");\r\n else if (!Array.isArray(path))\r\n throw TypeError(\"illegal path\");\r\n if (path && path.length && path[0] === \"\")\r\n throw Error(\"path must be relative\");\r\n\r\n var ptr = this;\r\n while (path.length > 0) {\r\n var part = path.shift();\r\n if (ptr.nested && ptr.nested[part]) {\r\n ptr = ptr.nested[part];\r\n if (!(ptr instanceof Namespace))\r\n throw Error(\"path conflicts with non-namespace objects\");\r\n } else\r\n ptr.add(ptr = new Namespace(part));\r\n }\r\n if (json)\r\n ptr.addJSON(json);\r\n return ptr;\r\n};\r\n\r\n/**\r\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespace.prototype.resolveAll = function resolveAll() {\r\n var nested = this.nestedArray, i = 0;\r\n while (i < nested.length)\r\n if (nested[i] instanceof Namespace)\r\n nested[i++].resolveAll();\r\n else\r\n nested[i++].resolve();\r\n return this.resolve();\r\n};\r\n\r\n/**\r\n * Recursively looks up the reflection object matching the specified path in the scope of this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {*|Array.<*>} filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc.\r\n * @param {boolean} [parentAlreadyChecked=false] If known, whether the parent has already been checked\r\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\r\n */\r\nNamespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChecked) {\r\n\r\n /* istanbul ignore next */\r\n if (typeof filterTypes === \"boolean\") {\r\n parentAlreadyChecked = filterTypes;\r\n filterTypes = undefined;\r\n } else if (filterTypes && !Array.isArray(filterTypes))\r\n filterTypes = [ filterTypes ];\r\n\r\n if (util.isString(path) && path.length) {\r\n if (path === \".\")\r\n return this.root;\r\n path = path.split(\".\");\r\n } else if (!path.length)\r\n return this;\r\n\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.root.lookup(path.slice(1), filterTypes);\r\n\r\n // Test if the first part matches any nested object, and if so, traverse if path contains more\r\n var found = this.get(path[0]);\r\n if (found) {\r\n if (path.length === 1) {\r\n if (!filterTypes || filterTypes.indexOf(found.constructor) > -1)\r\n return found;\r\n } else if (found instanceof Namespace && (found = found.lookup(path.slice(1), filterTypes, true)))\r\n return found;\r\n\r\n // Otherwise try each nested namespace\r\n } else\r\n for (var i = 0; i < this.nestedArray.length; ++i)\r\n if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i].lookup(path, filterTypes, true)))\r\n return found;\r\n\r\n // If there hasn't been a match, try again at the parent\r\n if (this.parent === null || parentAlreadyChecked)\r\n return null;\r\n return this.parent.lookup(path, filterTypes);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @name NamespaceBase#lookup\r\n * @function\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\r\n * @variation 2\r\n */\r\n// lookup(path: string, [parentAlreadyChecked: boolean])\r\n\r\n/**\r\n * Looks up the {@link Type|type} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Type} Looked up type\r\n * @throws {Error} If `path` does not point to a type\r\n */\r\nNamespace.prototype.lookupType = function lookupType(path) {\r\n var found = this.lookup(path, [ Type ]);\r\n if (!found)\r\n throw Error(\"no such type: \" + path);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Enum} Looked up enum\r\n * @throws {Error} If `path` does not point to an enum\r\n */\r\nNamespace.prototype.lookupEnum = function lookupEnum(path) {\r\n var found = this.lookup(path, [ Enum ]);\r\n if (!found)\r\n throw Error(\"no such Enum '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Type} Looked up type or enum\r\n * @throws {Error} If `path` does not point to a type or enum\r\n */\r\nNamespace.prototype.lookupTypeOrEnum = function lookupTypeOrEnum(path) {\r\n var found = this.lookup(path, [ Type, Enum ]);\r\n if (!found)\r\n throw Error(\"no such Type or Enum '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the {@link Service|service} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Service} Looked up service\r\n * @throws {Error} If `path` does not point to a service\r\n */\r\nNamespace.prototype.lookupService = function lookupService(path) {\r\n var found = this.lookup(path, [ Service ]);\r\n if (!found)\r\n throw Error(\"no such Service '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\nNamespace._configure = function(Type_, Service_) {\r\n Type = Type_;\r\n Service = Service_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/namespace.js\n// module id = 8\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = exports;\r\n\r\nvar util = require(\"./util\");\r\n\r\nvar s = [\r\n \"double\", // 0\r\n \"float\", // 1\r\n \"int32\", // 2\r\n \"uint32\", // 3\r\n \"sint32\", // 4\r\n \"fixed32\", // 5\r\n \"sfixed32\", // 6\r\n \"int64\", // 7\r\n \"uint64\", // 8\r\n \"sint64\", // 9\r\n \"fixed64\", // 10\r\n \"sfixed64\", // 11\r\n \"bool\", // 12\r\n \"string\", // 13\r\n \"bytes\" // 14\r\n];\r\n\r\nfunction bake(values, offset) {\r\n var i = 0, o = {};\r\n offset |= 0;\r\n while (i < values.length) o[s[i + offset]] = values[i++];\r\n return o;\r\n}\r\n\r\n/**\r\n * Basic type wire types.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n * @property {number} bytes=2 Ldelim wire type\r\n */\r\ntypes.basic = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2,\r\n /* bytes */ 2\r\n]);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=0 Double default\r\n * @property {number} float=0 Float default\r\n * @property {number} int32=0 Int32 default\r\n * @property {number} uint32=0 Uint32 default\r\n * @property {number} sint32=0 Sint32 default\r\n * @property {number} fixed32=0 Fixed32 default\r\n * @property {number} sfixed32=0 Sfixed32 default\r\n * @property {number} int64=0 Int64 default\r\n * @property {number} uint64=0 Uint64 default\r\n * @property {number} sint64=0 Sint32 default\r\n * @property {number} fixed64=0 Fixed64 default\r\n * @property {number} sfixed64=0 Sfixed64 default\r\n * @property {boolean} bool=false Bool default\r\n * @property {string} string=\"\" String default\r\n * @property {Array.} bytes=Array(0) Bytes default\r\n * @property {null} message=null Message default\r\n */\r\ntypes.defaults = bake([\r\n /* double */ 0,\r\n /* float */ 0,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 0,\r\n /* sfixed32 */ 0,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 0,\r\n /* sfixed64 */ 0,\r\n /* bool */ false,\r\n /* string */ \"\",\r\n /* bytes */ util.emptyArray,\r\n /* message */ null\r\n]);\r\n\r\n/**\r\n * Basic long type wire types.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n */\r\ntypes.long = bake([\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n */\r\ntypes.mapKey = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n */\r\ntypes.packed = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0\r\n]);\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/types.js\n// module id = 9\n// module chunks = 0","import EventEmitter from 'events';\nimport Subscription from './subscription';\n\nimport {\n JsonEncoder,\n JsonDecoder,\n JsonMethodType,\n JsonPushType\n} from './json';\n\nimport {\n isFunction,\n log,\n startsWith,\n errorExists,\n backoff\n} from './utils';\n\nconst _errorTimeout = 'timeout';\nconst _errorConnectionClosed = 'connection closed';\n\nexport class Centrifuge extends EventEmitter {\n\n constructor(url, options) {\n super();\n this._url = url;\n this._sockjs = null;\n this._isSockjs = false;\n this._binary = false;\n this._methodType = null;\n this._pushType = null;\n this._encoder = null;\n this._decoder = null;\n this._status = 'disconnected';\n this._reconnect = true;\n this._reconnecting = false;\n this._transport = null;\n this._transportName = null;\n this._transportClosed = true;\n this._messageId = 0;\n this._clientID = null;\n this._refreshRequired = false;\n this._subs = {};\n this._lastSeq = {};\n this._lastGen = {};\n this._lastEpoch = {};\n this._messages = [];\n this._isBatching = false;\n this._isSubscribeBatching = false;\n this._privateChannels = {};\n this._numRefreshFailed = 0;\n this._refreshTimeout = null;\n this._pingTimeout = null;\n this._pongTimeout = null;\n this._subRefreshTimeouts = {};\n this._retries = 0;\n this._callbacks = {};\n this._latency = null;\n this._latencyStart = null;\n this._connectData = null;\n this._token = null;\n this._xhrID = 0;\n this._xhrs = {};\n this._config = {\n debug: false,\n sockjs: null,\n promise: null,\n minRetry: 1000,\n maxRetry: 20000,\n timeout: 5000,\n ping: true,\n pingInterval: 25000,\n pongWaitTimeout: 5000,\n privateChannelPrefix: '$',\n onTransportClose: null,\n sockjsServer: null,\n sockjsTransports: [\n 'websocket',\n 'xdr-streaming',\n 'xhr-streaming',\n 'eventsource',\n 'iframe-eventsource',\n 'iframe-htmlfile',\n 'xdr-polling',\n 'xhr-polling',\n 'iframe-xhr-polling',\n 'jsonp-polling'\n ],\n refreshEndpoint: '/centrifuge/refresh',\n refreshHeaders: {},\n refreshParams: {},\n refreshData: {},\n refreshAttempts: null,\n refreshInterval: 1000,\n onRefreshFailed: null,\n onRefresh: null,\n subscribeEndpoint: '/centrifuge/subscribe',\n subscribeHeaders: {},\n subscribeParams: {},\n subRefreshInterval: 1000,\n onPrivateSubscribe: null\n };\n this._configure(options);\n }\n\n setToken(token) {\n this._token = token;\n }\n\n setConnectData(data) {\n this._connectData = data;\n }\n\n _ajax(url, params, headers, data, callback) {\n let query = '';\n this._debug('sending AJAX request to', url, 'with data', JSON.stringify(data));\n\n const xhr = (global.XMLHttpRequest ? new global.XMLHttpRequest() : new global.ActiveXObject('Microsoft.XMLHTTP'));\n\n for (const i in params) {\n if (params.hasOwnProperty(i)) {\n if (query.length > 0) {\n query += '&';\n }\n query += encodeURIComponent(i) + '=' + encodeURIComponent(params[i]);\n }\n }\n if (query.length > 0) {\n query = '?' + query;\n }\n xhr.open('POST', url + query, true);\n if ('withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr.setRequestHeader('Content-Type', 'application/json');\n for (const headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n xhr.setRequestHeader(headerName, headers[headerName]);\n }\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n let data, parsed = false;\n try {\n data = JSON.parse(xhr.responseText);\n parsed = true;\n } catch (e) {\n callback({\n error: 'Invalid JSON. Data was: ' + xhr.responseText,\n status: 200,\n data: null\n });\n }\n if (parsed) { // prevents double execution.\n callback({\n data: data,\n status: 200\n });\n }\n } else {\n this._log('wrong status code in AJAX response', xhr.status);\n callback({\n status: xhr.status,\n data: null\n });\n }\n }\n };\n setTimeout(() => xhr.send(JSON.stringify(data)), 20);\n return xhr;\n };\n\n _log() {\n log('info', arguments);\n };\n\n _debug() {\n if (this._config.debug === true) {\n log('debug', arguments);\n }\n };\n\n _websocketSupported() {\n return !(typeof WebSocket !== 'function' && typeof WebSocket !== 'object');\n };\n\n _setFormat(format) {\n if (this._formatOverride(format)) {\n return;\n }\n if (format === 'protobuf') {\n throw new Error('not implemented by JSON only Centrifuge client – use client with Protobuf');\n }\n this._binary = false;\n this._methodType = JsonMethodType;\n this._pushType = JsonPushType;\n this._encoder = new JsonEncoder();\n this._decoder = new JsonDecoder();\n }\n\n _formatOverride(format) {\n return false;\n }\n\n _configure(configuration) {\n if (!('Promise' in global)) {\n throw new Error('Promise polyfill required');\n }\n\n Object.assign(this._config, configuration || {});\n this._debug('centrifuge config', this._config);\n\n if (!this._url) {\n throw new Error('url required');\n }\n\n if (startsWith(this._url, 'ws') && this._url.indexOf('format=protobuf') > -1) {\n this._setFormat('protobuf');\n } else {\n this._setFormat('json');\n }\n\n if (startsWith(this._url, 'http')) {\n this._debug('client will try to connect to SockJS endpoint');\n if (this._config.sockjs !== null) {\n this._debug('SockJS explicitly provided in options');\n this._sockjs = this._config.sockjs;\n } else {\n if (typeof global.SockJS === 'undefined') {\n throw new Error('SockJS not found, use ws:// in url or include SockJS');\n }\n this._debug('use globally defined SockJS');\n this._sockjs = global.SockJS;\n }\n } else {\n this._debug('client will connect to websocket endpoint');\n }\n };\n\n _setStatus(newStatus) {\n if (this._status !== newStatus) {\n this._debug('Status', this._status, '->', newStatus);\n this._status = newStatus;\n }\n };\n\n _isDisconnected() {\n return this._status === 'disconnected';\n };\n\n _isConnecting() {\n return this._status === 'connecting';\n };\n\n _isConnected() {\n return this._status === 'connected';\n };\n\n _nextMessageId() {\n return ++this._messageId;\n };\n\n _resetRetry() {\n this._debug('reset retries count to 0');\n this._retries = 0;\n };\n\n _getRetryInterval() {\n const interval = backoff(this._retries, this._config.minRetry, this._config.maxRetry);\n\n this._retries += 1;\n return interval;\n };\n\n _abortInflightXHRs() {\n for (const xhrID in this._xhrs) {\n try {\n this._xhrs[xhrID].abort();\n } catch (e) {\n this._debug('error aborting xhr', e);\n }\n delete this._xhrs[xhrID];\n }\n };\n\n _clearConnectedState(reconnect) {\n this._clientID = null;\n this._stopPing();\n\n // fire errbacks of registered outgoing calls.\n for (const id in this._callbacks) {\n if (this._callbacks.hasOwnProperty(id)) {\n const callbacks = this._callbacks[id];\n clearTimeout(callbacks.timeout);\n const errback = callbacks.errback;\n if (!errback) {\n continue;\n }\n errback({error: this._createErrorObject('disconnected')});\n }\n }\n this._callbacks = {};\n\n // fire unsubscribe events\n for (const channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n const sub = this._subs[channel];\n\n if (reconnect) {\n if (sub._isSuccess()) {\n sub._triggerUnsubscribe();\n sub._recover = true;\n }\n if (sub._shouldResubscribe()) {\n sub._setSubscribing();\n }\n } else {\n sub._setUnsubscribed();\n }\n }\n }\n\n this._abortInflightXHRs();\n\n // clear refresh timer\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n // clear sub refresh timers\n for (const channel in this._subRefreshTimeouts) {\n if (this._subRefreshTimeouts.hasOwnProperty(channel) && this._subRefreshTimeouts[channel]) {\n this._clearSubRefreshTimeout(channel);\n }\n }\n this._subRefreshTimeouts = {};\n\n if (!this._reconnect) {\n // completely clear subscriptions\n this._subs = {};\n }\n };\n\n _isTransportOpen() {\n if (this._isSockjs) {\n return this._transport &&\n this._transport.transport &&\n this._transport.transport.readyState === this._transport.transport.OPEN;\n }\n return this._transport && this._transport.readyState === this._transport.OPEN;\n };\n\n _transportSend(commands) {\n if (!commands.length) {\n return true;\n }\n\n if (!this._isTransportOpen()) {\n // resolve pending commands with error if transport is not open\n for (let command in commands) {\n let id = command.id;\n if (!(id in this._callbacks)) {\n continue;\n }\n const callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n const errback = callbacks.errback;\n errback({error: this._createErrorObject(_errorConnectionClosed, 0)});\n }\n return false;\n }\n this._transport.send(this._encoder.encodeCommands(commands));\n return true;\n }\n\n _setupTransport() {\n this._isSockjs = false;\n\n // detect transport to use - SockJS or Websocket\n if (this._sockjs !== null) {\n const sockjsOptions = {\n transports: this._config.sockjsTransports\n };\n\n if (this._config.sockjsServer !== null) {\n sockjsOptions.server = this._config.sockjsServer;\n }\n this._isSockjs = true;\n this._transport = new this._sockjs(this._url, null, sockjsOptions);\n } else {\n if (!this._websocketSupported()) {\n this._debug('No Websocket support and no SockJS configured, can not connect');\n return;\n }\n this._transport = new WebSocket(this._url);\n if (this._binary === true) {\n this._transport.binaryType = 'arraybuffer';\n }\n }\n\n this._transport.onopen = () => {\n this._transportClosed = false;\n\n if (this._isSockjs) {\n this._transportName = 'sockjs-' + this._transport.transport;\n this._transport.onheartbeat = () => this._restartPing();\n } else {\n this._transportName = 'websocket';\n }\n\n // Can omit method here due to zero value.\n const msg = {\n // method: this._methodType.CONNECT\n };\n\n if (this._token || this._connectData) {\n msg.params = {};\n }\n\n if (this._token) {\n msg.params.token = this._token;\n }\n\n if (this._connectData) {\n msg.params.data = this._connectData;\n }\n\n this._latencyStart = new Date();\n this._call(msg).then(resolveCtx => {\n this._connectResponse(this._decoder.decodeCommandResult(this._methodType.CONNECT, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n const err = rejectCtx.error;\n if (err.code === 109) { // token expired.\n this._refreshRequired = true;\n }\n this._disconnect('connect error', true);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n this._transport.onerror = error => {\n this._debug('transport level error', error);\n };\n\n this._transport.onclose = closeEvent => {\n this._transportClosed = true;\n let reason = _errorConnectionClosed;\n let needReconnect = true;\n\n if (closeEvent && 'reason' in closeEvent && closeEvent.reason) {\n try {\n const advice = JSON.parse(closeEvent.reason);\n this._debug('reason is an advice object', advice);\n reason = advice.reason;\n needReconnect = advice.reconnect;\n } catch (e) {\n reason = closeEvent.reason;\n this._debug('reason is a plain string', reason);\n }\n }\n\n // onTransportClose callback should be executed every time transport was closed.\n // This can be helpful to catch failed connection events (because our disconnect\n // event only called once and every future attempts to connect do not fire disconnect\n // event again).\n if (this._config.onTransportClose !== null) {\n this._config.onTransportClose({\n event: closeEvent,\n reason: reason,\n reconnect: needReconnect\n });\n }\n\n this._disconnect(reason, needReconnect);\n\n if (this._reconnect === true) {\n this._reconnecting = true;\n const interval = this._getRetryInterval();\n\n this._debug('reconnect after ' + interval + ' milliseconds');\n setTimeout(() => {\n if (this._reconnect === true) {\n if (this._refreshRequired) {\n this._refresh();\n } else {\n this._connect();\n }\n }\n }, interval);\n }\n };\n\n this._transport.onmessage = event => {\n this._dataReceived(event.data);\n };\n };\n\n rpc(data) {\n const msg = {\n method: this._methodType.RPC,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(resolveCtx => {\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n return this._decoder.decodeCommandResult(this._methodType.RPC, resolveCtx.result);\n }, rejectCtx => {\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n return rejectCtx.error;\n });\n }\n\n send(data) {\n const msg = {\n method: this._methodType.SEND,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n const sent = this._transportSend([msg]); // can send async message to server without id set\n if (!sent) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n };\n return Promise.resolve({});\n }\n\n publish(channel, data) {\n const msg = {\n method: this._methodType.PUBLISH,\n params: {\n channel: channel,\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(result => {\n if (result.next) {\n result.next();\n }\n return {};\n });\n }\n\n _dataReceived(data) {\n const replies = this._decoder.decodeReplies(data);\n // we have to guarantee order of events in replies processing - i.e. start processing\n // next reply only when we finished processing of current one. Without syncing things in\n // this way we could get wrong publication events order as reply promises resolve\n // on next loop tick so for loop continues before we finished emitting all reply events.\n let p = Promise.resolve();\n for (const i in replies) {\n if (replies.hasOwnProperty(i)) {\n p = p.then(() => {\n return this._dispatchReply(replies[i]);\n });\n }\n }\n this._restartPing();\n }\n\n _call(msg) {\n return new Promise((resolve, reject) => {\n const id = this._addMessage(msg);\n this._registerCall(id, resolve, reject);\n });\n }\n\n _connect() {\n if (this.isConnected()) {\n this._debug('connect called when already connected');\n return;\n }\n if (this._status === 'connecting') {\n return;\n }\n\n this._debug('start connecting');\n this._setStatus('connecting');\n this._clientID = null;\n this._reconnect = true;\n this._setupTransport();\n };\n\n _disconnect(reason, shouldReconnect) {\n\n if (this._isDisconnected()) {\n return;\n }\n\n this._debug('disconnected:', reason, shouldReconnect);\n\n const reconnect = shouldReconnect || false;\n\n if (reconnect === false) {\n this._reconnect = false;\n }\n\n this._clearConnectedState(reconnect);\n\n if (!this._isDisconnected()) {\n this._setStatus('disconnected');\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._reconnecting === false) {\n this.emit('disconnect', {\n reason: reason,\n reconnect: reconnect\n });\n }\n }\n\n if (!this._transportClosed) {\n this._transport.close();\n }\n };\n\n _refreshFailed() {\n this._numRefreshFailed = 0;\n if (!this._isDisconnected()) {\n this._disconnect('refresh failed', false);\n }\n if (this._config.onRefreshFailed !== null) {\n this._config.onRefreshFailed();\n }\n };\n\n _refresh() {\n // ask application for new connection token.\n this._debug('refresh token');\n\n if (this._config.refreshAttempts === 0) {\n this._debug('refresh attempts set to 0, do not send refresh request at all');\n this._refreshFailed();\n return;\n }\n\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (this._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n // We don't perform any connection status related actions here as we are\n // relying on server that must close connection eventually.\n if (resp.error) {\n this._debug('error refreshing connection token', resp.error);\n } else {\n this._debug('error refreshing connection token: wrong status code', resp.status);\n }\n this._numRefreshFailed++;\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._config.refreshAttempts !== null && this._numRefreshFailed >= this._config.refreshAttempts) {\n this._refreshFailed();\n return;\n }\n const jitter = Math.round(Math.random() * 1000 * Math.max(this._numRefreshFailed, 20));\n const interval = this._config.refreshInterval + jitter;\n this._refreshTimeout = setTimeout(() => this._refresh(), interval);\n return;\n }\n this._numRefreshFailed = 0;\n this._token = resp.data.token;\n if (!this._token) {\n this._refreshFailed();\n return;\n }\n if (this._isDisconnected() && this._reconnect) {\n this._debug('token refreshed, connect from scratch');\n this._connect();\n } else {\n this._debug('send refreshed token');\n const msg = {\n method: this._methodType.REFRESH,\n params: {\n token: this._token\n }\n };\n this._call(msg).then(resolveCtx => {\n this._refreshResponse(this._decoder.decodeCommandResult(this._methodType.REFRESH, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._refreshError(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n if (this._config.onRefresh !== null) {\n const context = {};\n this._config.onRefresh(context, cb);\n } else {\n const xhr = this._ajax(\n this._config.refreshEndpoint,\n this._config.refreshParams,\n this._config.refreshHeaders,\n this._config.refreshData,\n cb\n );\n this._xhrs[xhrID] = xhr;\n }\n };\n\n _refreshError(err) {\n this._debug('refresh error', err);\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n const interval = this._config.refreshInterval + Math.round(Math.random() * 1000);\n this._refreshTimeout = setTimeout(() => this._refresh(), interval);\n }\n\n _refreshResponse(result) {\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (result.expires) {\n this._clientID = result.client;\n this._refreshTimeout = setTimeout(() => this._refresh(), this._getTTLMilliseconds(result.ttl));\n }\n };\n\n _newXHRID() {\n this._xhrID++;\n return this._xhrID;\n }\n\n _subRefresh(channel) {\n this._debug('refresh subscription token for channel', channel);\n\n if (this._subRefreshTimeouts[channel] !== undefined) {\n this._clearSubRefreshTimeout(channel);\n } else {\n return;\n }\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (resp.error || resp.status !== 200 || this._clientID !== clientID) {\n return;\n }\n let channelsData = {};\n if (resp.data.channels) {\n for (const i in data.channels) {\n const channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n const token = channelsData[channel];\n if (!token) {\n return;\n }\n const msg = {\n method: this._methodType.SUB_REFRESH,\n params: {\n channel: channel,\n token: token\n }\n };\n\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n\n this._call(msg).then(resolveCtx => {\n this._subRefreshResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUB_REFRESH, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subRefreshError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n const data = {\n client: this._clientID,\n channels: [channel]\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n const xhr = this._ajax(\n this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n };\n\n _clearSubRefreshTimeout(channel) {\n if (this._subRefreshTimeouts[channel] !== undefined) {\n clearTimeout(this._subRefreshTimeouts[channel]);\n delete this._subRefreshTimeouts[channel];\n }\n }\n\n _subRefreshError(channel, err) {\n this._debug('subscription refresh error', channel, err);\n this._clearSubRefreshTimeout(channel);\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n const jitter = Math.round(Math.random() * 1000);\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._config.subRefreshInterval + jitter);\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n return;\n }\n\n _subRefreshResponse(channel, result) {\n this._debug('subscription refresh success', channel);\n this._clearSubRefreshTimeout(channel);\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n if (result.expires === true) {\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n return;\n };\n\n _subscribe(sub, isResubscribe) {\n this._debug('subscribing on', sub.channel);\n const channel = sub.channel;\n\n if (!(channel in this._subs)) {\n this._subs[channel] = sub;\n }\n\n if (!this.isConnected()) {\n // subscribe will be called later\n sub._setNew();\n return;\n }\n\n sub._setSubscribing(isResubscribe);\n\n const msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel\n }\n };\n\n // If channel name does not start with privateChannelPrefix - then we\n // can just send subscription message to Centrifuge. If channel name\n // starts with privateChannelPrefix - then this is a private channel\n // and we should ask web application backend for permission first.\n if (startsWith(channel, this._config.privateChannelPrefix)) {\n // private channel.\n if (this._isSubscribeBatching) {\n this._privateChannels[channel] = true;\n } else {\n this.startSubscribeBatching();\n this._subscribe(sub);\n this.stopSubscribeBatching();\n }\n } else {\n const recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n const seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n const gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n const epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n\n this._call(msg).then(resolveCtx => {\n this._subscribeResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUBSCRIBE, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n _unsubscribe(sub) {\n if (this.isConnected()) {\n // No need to unsubscribe in disconnected state - i.e. client already unsubscribed.\n this._addMessage({\n method: this._methodType.UNSUBSCRIBE,\n params: {\n channel: sub.channel\n }\n });\n }\n };\n\n _getTTLMilliseconds(ttl) {\n // https://stackoverflow.com/questions/12633405/what-is-the-maximum-delay-for-setinterval\n return Math.min(ttl * 1000, 2147483647);\n }\n\n getSub(channel) {\n return this._getSub(channel);\n }\n\n _getSub(channel) {\n const sub = this._subs[channel];\n if (!sub) {\n return null;\n }\n return sub;\n };\n\n _connectResponse(result) {\n const wasReconnecting = this._reconnecting;\n this._reconnecting = false;\n this._resetRetry();\n this._refreshRequired = false;\n\n if (this.isConnected()) {\n return;\n }\n\n if (this._latencyStart !== null) {\n this._latency = (new Date()).getTime() - this._latencyStart.getTime();\n this._latencyStart = null;\n }\n\n this._clientID = result.client;\n this._setStatus('connected');\n\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n }\n\n if (result.expires) {\n this._refreshTimeout = setTimeout(() => this._refresh(), this._getTTLMilliseconds(result.ttl));\n }\n\n this.startBatching();\n this.startSubscribeBatching();\n for (const channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n const sub = this._subs[channel];\n if (sub._shouldResubscribe()) {\n this._subscribe(sub, wasReconnecting);\n }\n }\n }\n this.stopSubscribeBatching();\n this.stopBatching();\n\n this._startPing();\n\n const ctx = {\n client: result.client,\n transport: this._transportName,\n latency: this._latency\n };\n if (result.data) {\n ctx.data = result.data;\n }\n\n this.emit('connect', ctx);\n };\n\n _stopPing() {\n if (this._pongTimeout !== null) {\n clearTimeout(this._pongTimeout);\n this._pongTimeout = null;\n }\n if (this._pingTimeout !== null) {\n clearTimeout(this._pingTimeout);\n this._pingTimeout = null;\n }\n };\n\n _startPing() {\n if (this._config.ping !== true || this._config.pingInterval <= 0) {\n return;\n }\n if (!this.isConnected()) {\n return;\n }\n\n this._pingTimeout = setTimeout(() => {\n if (!this.isConnected()) {\n this._stopPing();\n return;\n }\n this.ping();\n this._pongTimeout = setTimeout(() => {\n this._disconnect('no ping', true);\n }, this._config.pongWaitTimeout);\n }, this._config.pingInterval);\n };\n\n _restartPing() {\n this._stopPing();\n this._startPing();\n };\n\n _subscribeError(channel, error) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n if (error.code === 0 && error.message === _errorTimeout) { // client side timeout.\n this._disconnect('timeout', true);\n return;\n }\n sub._setSubscribeError(error);\n };\n\n _subscribeResponse(channel, result) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n\n let recovered = false;\n if ('recovered' in result) {\n recovered = result.recovered;\n }\n sub._setSubscribeSuccess(recovered);\n\n let pubs = result.publications;\n\n if (pubs && pubs.length > 0) {\n // handle missed pubs.\n pubs = pubs.reverse();\n for (let i in pubs) {\n if (pubs.hasOwnProperty(i)) {\n this._handlePublication(channel, pubs[i]);\n }\n }\n } else {\n if (result.recoverable) {\n this._lastSeq[channel] = result.seq || 0;\n this._lastGen[channel] = result.gen || 0;\n }\n }\n\n this._lastEpoch[channel] = result.epoch || '';\n\n if (result.recoverable) {\n sub._recoverable = true;\n }\n\n if (result.expires === true) {\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n };\n\n _handleReply(reply, next) {\n const id = reply.id;\n const result = reply.result;\n\n if (!(id in this._callbacks)) {\n next();\n return;\n }\n const callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n\n if (!errorExists(reply)) {\n const callback = callbacks.callback;\n if (!callback) {\n return;\n }\n callback({result, next});\n } else {\n const errback = callbacks.errback;\n if (!errback) {\n next();\n return;\n }\n const error = reply.error;\n errback({error, next});\n }\n }\n\n _handleJoin(channel, join) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('join', join);\n };\n\n _handleLeave(channel, leave) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('leave', leave);\n };\n\n _handleUnsub(channel, unsub) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.unsubscribe();\n if (unsub.resubscribe === true) {\n sub.subscribe();\n }\n };\n\n _handlePublication(channel, pub) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (pub.seq !== undefined) {\n this._lastSeq[channel] = pub.seq;\n }\n if (pub.gen !== undefined) {\n this._lastGen[channel] = pub.gen;\n }\n sub.emit('publish', pub);\n };\n\n _handleMessage(message) {\n this.emit('message', message.data);\n };\n\n _handlePush(data, next) {\n const push = this._decoder.decodePush(data);\n let type = 0;\n if ('type' in push) {\n type = push['type'];\n }\n const channel = push.channel;\n\n if (type === this._pushType.PUBLICATION) {\n const pub = this._decoder.decodePushData(this._pushType.PUBLICATION, push.data);\n this._handlePublication(channel, pub);\n } else if (type === this._pushType.MESSAGE) {\n const message = this._decoder.decodePushData(this._pushType.MESSAGE, push.data);\n this._handleMessage(message);\n } else if (type === this._pushType.JOIN) {\n const join = this._decoder.decodePushData(this._pushType.JOIN, push.data);\n this._handleJoin(channel, join);\n } else if (type === this._pushType.LEAVE) {\n const leave = this._decoder.decodePushData(this._pushType.LEAVE, push.data);\n this._handleLeave(channel, leave);\n } else if (type === this._pushType.UNSUB) {\n const unsub = this._decoder.decodePushData(this._pushType.UNSUB, push.data);\n this._handleUnsub(channel, unsub);\n }\n next();\n }\n\n _dispatchReply(reply) {\n var next;\n const p = new Promise(resolve =>{\n next = resolve;\n });\n\n if (reply === undefined || reply === null) {\n this._debug('dispatch: got undefined or null reply');\n next();\n return p;\n }\n\n const id = reply.id;\n\n if (id && id > 0) {\n this._handleReply(reply, next);\n } else {\n this._handlePush(reply.result, next);\n }\n\n return p;\n };\n\n _flush() {\n const messages = this._messages.slice(0);\n this._messages = [];\n this._transportSend(messages);\n };\n\n _ping() {\n const msg = {\n method: this._methodType.PING\n };\n this._call(msg).then(resolveCtx => {\n this._pingResponse(this._decoder.decodeCommandResult(this._methodType.PING, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._debug('ping error', rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n _pingResponse(result) {\n if (!this.isConnected()) {\n return;\n }\n this._stopPing();\n this._startPing();\n }\n\n _getLastSeq(channel) {\n const lastSeq = this._lastSeq[channel];\n if (lastSeq) {\n return lastSeq;\n }\n return 0;\n };\n\n _getLastGen(channel) {\n const lastGen = this._lastGen[channel];\n if (lastGen) {\n return lastGen;\n }\n return 0;\n };\n\n _getLastEpoch(channel) {\n const lastEpoch = this._lastEpoch[channel];\n if (lastEpoch) {\n return lastEpoch;\n }\n return '';\n };\n\n _createErrorObject(message, code) {\n const errObject = {\n message: message,\n code: code || 0\n };\n\n return errObject;\n };\n\n _registerCall(id, callback, errback) {\n this._callbacks[id] = {\n callback: callback,\n errback: errback,\n timeout: null\n };\n this._callbacks[id].timeout = setTimeout(() => {\n delete this._callbacks[id];\n if (isFunction(errback)) {\n errback({error: this._createErrorObject(_errorTimeout)});\n }\n }, this._config.timeout);\n };\n\n _addMessage(message) {\n let id = this._nextMessageId();\n message.id = id;\n if (this._isBatching === true) {\n this._messages.push(message);\n } else {\n this._transportSend([message]);\n }\n return id;\n };\n\n isConnected() {\n return this._isConnected();\n }\n\n connect() {\n this._connect();\n };\n\n disconnect() {\n this._disconnect('client', false);\n };\n\n ping() {\n return this._ping();\n }\n\n startBatching() {\n // start collecting messages without sending them to Centrifuge until flush\n // method called\n this._isBatching = true;\n };\n\n stopBatching() {\n this._isBatching = false;\n this._flush();\n };\n\n startSubscribeBatching() {\n // start collecting private channels to create bulk authentication\n // request to subscribeEndpoint when stopSubscribeBatching will be called\n this._isSubscribeBatching = true;\n };\n\n stopSubscribeBatching() {\n // create request to subscribeEndpoint with collected private channels\n // to ask if this client can subscribe on each channel\n this._isSubscribeBatching = false;\n const authChannels = this._privateChannels;\n this._privateChannels = {};\n\n const channels = [];\n\n for (const channel in authChannels) {\n if (authChannels.hasOwnProperty(channel)) {\n const sub = this._getSub(channel);\n if (!sub) {\n continue;\n }\n channels.push(channel);\n }\n }\n\n if (channels.length === 0) {\n this._debug('no private channels found, no need to make request');\n return;\n }\n\n const data = {\n client: this._clientID,\n channels: channels\n };\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (this._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n this._debug('authorization request failed');\n for (const i in channels) {\n if (channels.hasOwnProperty(i)) {\n const channel = channels[i];\n this._subscribeError(channel, this._createErrorObject('authorization request failed'));\n }\n }\n return;\n }\n\n let channelsData = {};\n if (resp.data.channels) {\n for (const i in resp.data.channels) {\n const channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n // try to send all subscriptions in one request.\n let batch = false;\n\n if (!this._isBatching) {\n this.startBatching();\n batch = true;\n }\n\n for (const i in channels) {\n if (channels.hasOwnProperty(i)) {\n const channel = channels[i];\n const token = channelsData[channel];\n\n if (!token) {\n // subscription:error\n this._subscribeError(channel, this._createErrorObject('permission denied', 103));\n continue;\n } else {\n const msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel,\n token: token\n }\n };\n\n const sub = this._getSub(channel);\n if (sub === null) {\n continue;\n }\n\n const recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n const seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n const gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n const epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n this._call(msg).then(resolveCtx => {\n this._subscribeResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUBSCRIBE, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }\n }\n\n if (batch) {\n this.stopBatching();\n }\n\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n const xhr = this._ajax(\n this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n };\n\n subscribe(channel, events) {\n const currentSub = this._getSub(channel);\n if (currentSub !== null) {\n currentSub._setEvents(events);\n if (currentSub._isUnsubscribed()) {\n currentSub.subscribe();\n }\n return currentSub;\n }\n const sub = new Subscription(this, channel, events);\n this._subs[channel] = sub;\n sub.subscribe();\n return sub;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/centrifuge.js","import EventEmitter from 'events';\n\nimport {\n isFunction\n} from './utils';\n\nconst _STATE_NEW = 0;\nconst _STATE_SUBSCRIBING = 1;\nconst _STATE_SUCCESS = 2;\nconst _STATE_ERROR = 3;\nconst _STATE_UNSUBSCRIBED = 4;\n\nexport default class Subscription extends EventEmitter {\n constructor(centrifuge, channel, events) {\n super();\n this.channel = channel;\n this._centrifuge = centrifuge;\n this._status = _STATE_NEW;\n this._error = null;\n this._isResubscribe = false;\n this._ready = false;\n this._subscriptionPromise = null;\n this._noResubscribe = false;\n this._recoverable = false;\n this._recover = false;\n this._setEvents(events);\n this._initializePromise();\n this._promises = {};\n this.on('error', function (errContext) {\n this._centrifuge._debug('subscription error', errContext);\n });\n }\n\n _initializePromise() {\n // this helps us to wait until subscription will successfully\n // subscribe and call actions such as presence, history etc in\n // synchronous way.\n this._ready = false;\n\n this._subscriptionPromise = new Promise((resolve, reject) => {\n this._resolve = value => {\n this._ready = true;\n resolve(value);\n };\n this._reject = err => {\n this._ready = true;\n reject(err);\n };\n }).then(function () {}, function () {});\n };\n\n _needRecover() {\n return this._recoverable === true && this._recover === true;\n };\n\n _setEvents(events) {\n if (!events) {\n return;\n }\n if (isFunction(events)) {\n // events is just a function to handle publication received from channel.\n this.on('publish', events);\n } else if (Object.prototype.toString.call(events) === Object.prototype.toString.call({})) {\n const knownEvents = ['publish', 'join', 'leave', 'unsubscribe', 'subscribe', 'error'];\n for (let i = 0, l = knownEvents.length; i < l; i++) {\n const ev = knownEvents[i];\n if (ev in events) {\n this.on(ev, events[ev]);\n }\n }\n }\n };\n\n _isNew() {\n return this._status === _STATE_NEW;\n };\n\n _isUnsubscribed() {\n return this._status === _STATE_UNSUBSCRIBED;\n };\n\n _isSubscribing() {\n return this._status === _STATE_SUBSCRIBING;\n };\n\n _isReady() {\n return this._status === _STATE_SUCCESS || this._status === _STATE_ERROR;\n };\n\n _isSuccess() {\n return this._status === _STATE_SUCCESS;\n };\n\n _isError() {\n return this._status === _STATE_ERROR;\n };\n\n _setNew() {\n this._status = _STATE_NEW;\n };\n\n _setSubscribing(isResubscribe) {\n this._isResubscribe = isResubscribe || false;\n if (this._ready === true) {\n // new promise for this subscription\n this._initializePromise();\n }\n this._status = _STATE_SUBSCRIBING;\n };\n\n _setSubscribeSuccess(recovered) {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._status = _STATE_SUCCESS;\n const successContext = this._getSubscribeSuccessContext(recovered);\n\n this._recover = false;\n this.emit('subscribe', successContext);\n this._resolve(successContext);\n for (const to in this._promises) {\n clearTimeout(to);\n this._promises[to].resolve();\n delete this._promises[to];\n }\n };\n\n _setSubscribeError(err) {\n if (this._status === _STATE_ERROR) {\n return;\n }\n this._status = _STATE_ERROR;\n this._error = err;\n const errContext = this._getSubscribeErrorContext();\n this.emit('error', errContext);\n this._reject(errContext);\n for (const to in this._promises) {\n clearTimeout(to);\n this._promises[to].reject(err);\n delete this._promises[to];\n }\n };\n\n _triggerUnsubscribe() {\n this.emit('unsubscribe', {\n channel: this.channel\n });\n };\n\n _setUnsubscribed(noResubscribe) {\n this._centrifuge._clearSubRefreshTimeout(this.channel);\n if (this._status === _STATE_UNSUBSCRIBED) {\n return;\n }\n const needTrigger = this._status === _STATE_SUCCESS;\n this._status = _STATE_UNSUBSCRIBED;\n if (noResubscribe === true) {\n this._recover = false;\n this._noResubscribe = true;\n delete this._centrifuge._lastSeq[this.channel];\n delete this._centrifuge._lastGen[this.channel];\n delete this._centrifuge._lastEpoch[this.channel];\n }\n if (needTrigger) {\n this._triggerUnsubscribe();\n }\n };\n\n _shouldResubscribe() {\n return !this._noResubscribe;\n };\n\n _getSubscribeSuccessContext(recovered) {\n return {\n channel: this.channel,\n isResubscribe: this._isResubscribe,\n recovered: recovered\n };\n };\n\n _getSubscribeErrorContext() {\n const subscribeErrorContext = this._error;\n subscribeErrorContext.channel = this.channel;\n subscribeErrorContext.isResubscribe = this._isResubscribe;\n return subscribeErrorContext;\n };\n\n ready(callback, errback) {\n if (this._ready) {\n if (this._isSuccess()) {\n callback(this._getSubscribeSuccessContext());\n } else {\n errback(this._getSubscribeErrorContext());\n }\n }\n };\n\n subscribe() {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._noResubscribe = false;\n this._centrifuge._subscribe(this);\n };\n\n unsubscribe() {\n this._setUnsubscribed(true);\n this._centrifuge._unsubscribe(this);\n };\n\n _methodCall(message, type) {\n const methodCallPromise = new Promise((resolve, reject) => {\n let subPromise;\n if (this._isSuccess()) {\n subPromise = Promise.resolve();\n } else if (this._isError()) {\n subPromise = Promise.reject(this._error);\n } else {\n subPromise = new Promise((res, rej) => {\n const timeout = setTimeout(function () {\n rej({'code': 0, 'message': 'timeout'});\n }, this._centrifuge._config.timeout);\n this._promises[timeout] = {\n resolve: res,\n reject: rej\n };\n });\n }\n subPromise.then(\n () => {\n return this._centrifuge._call(message).then(\n resolveCtx => {\n resolve(this._centrifuge._decoder.decodeCommandResult(type, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n },\n rejectCtx => {\n reject(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n }\n );\n },\n error => {\n reject(error);\n }\n );\n });\n return methodCallPromise;\n }\n\n publish(data) {\n return this._methodCall({\n method: this._centrifuge._methodType.PUBLISH,\n params: {\n channel: this.channel,\n data: data\n }\n }, this._centrifuge._methodType.PUBLISH);\n };\n\n presence() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE);\n };\n\n presenceStats() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE_STATS,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE_STATS);\n };\n\n history() {\n return this._methodCall({\n method: this._centrifuge._methodType.HISTORY,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.HISTORY);\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/subscription.js","export const JsonMethodType = {\n CONNECT: 0,\n SUBSCRIBE: 1,\n UNSUBSCRIBE: 2,\n PUBLISH: 3,\n PRESENCE: 4,\n PRESENCE_STATS: 5,\n HISTORY: 6,\n PING: 7,\n SEND: 8,\n RPC: 9,\n REFRESH: 10,\n SUB_REFRESH: 11\n};\n\nexport const JsonPushType = {\n PUBLICATION: 0,\n JOIN: 1,\n LEAVE: 2,\n UNSUB: 3,\n MESSAGE: 4\n};\n\nexport class JsonEncoder {\n encodeCommands(commands) {\n const encodedCommands = [];\n for (const i in commands) {\n if (commands.hasOwnProperty(i)) {\n encodedCommands.push(JSON.stringify(commands[i]));\n }\n }\n return encodedCommands.join('\\n');\n }\n}\n\nexport class JsonDecoder {\n decodeReplies(data) {\n const replies = [];\n const encodedReplies = data.split('\\n');\n for (const i in encodedReplies) {\n if (encodedReplies.hasOwnProperty(i)) {\n if (!encodedReplies[i]) {\n continue;\n }\n const reply = JSON.parse(encodedReplies[i]);\n replies.push(reply);\n }\n }\n return replies;\n }\n\n decodeCommandResult(methodType, data) {\n return data;\n }\n\n decodePush(data) {\n return data;\n }\n\n decodePushData(pushType, data) {\n return data;\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/json.js","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar BufferWriter; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n base64 = util.base64,\r\n utf8 = util.utf8;\r\n\r\n/**\r\n * Constructs a new writer operation instance.\r\n * @classdesc Scheduled writer operation.\r\n * @constructor\r\n * @param {function(*, Uint8Array, number)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {*} val Value to write\r\n * @ignore\r\n */\r\nfunction Op(fn, len, val) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(Uint8Array, number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {Writer.Op|undefined}\r\n */\r\n this.next = undefined;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val; // type varies\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state instance.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n\r\n /**\r\n * Next state.\r\n * @type {State|null}\r\n */\r\n this.next = writer.states;\r\n}\r\n\r\n/**\r\n * Constructs a new writer instance.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * Linked forked states.\r\n * @type {Object|null}\r\n */\r\n this.states = null;\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling operations with already prepared values.\r\n}\r\n\r\n/**\r\n * Creates a new writer.\r\n * @function\r\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\r\n */\r\nWriter.create = util.Buffer\r\n ? function create_buffer_setup() {\r\n return (Writer.create = function create_buffer() {\r\n return new BufferWriter();\r\n })();\r\n }\r\n /* istanbul ignore next */\r\n : function create_array() {\r\n return new Writer();\r\n };\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nWriter.alloc = function alloc(size) {\r\n return new util.Array(size);\r\n};\r\n\r\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\r\n/* istanbul ignore else */\r\nif (util.Array !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n * @private\r\n */\r\nWriter.prototype._push = function push(fn, len, val) {\r\n this.tail = this.tail.next = new Op(fn, len, val);\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(val, buf, pos) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\nfunction writeVarint32(val, buf, pos) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Constructs a new varint writer operation instance.\r\n * @classdesc Scheduled varint writer operation.\r\n * @extends Op\r\n * @constructor\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @ignore\r\n */\r\nfunction VarintOp(len, val) {\r\n this.len = len;\r\n this.next = undefined;\r\n this.val = val;\r\n}\r\n\r\nVarintOp.prototype = Object.create(Op.prototype);\r\nVarintOp.prototype.fn = writeVarint32;\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.uint32 = function write_uint32(value) {\r\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\r\n // uint32 is by far the most frequently used operation and benefits significantly from this.\r\n this.len += (this.tail = this.tail.next = new VarintOp(\r\n (value = value >>> 0)\r\n < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5,\r\n value)).len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sint32 = function write_sint32(value) {\r\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\r\n};\r\n\r\nfunction writeVarint64(val, buf, pos) {\r\n while (val.hi) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n while (val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = val.lo >>> 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.int64 = Writer.prototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sint64 = function write_sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bool = function write_bool(value) {\r\n return this._push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fixed32 = function write_fixed32(value) {\r\n return this._push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as fixed 32 bits.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as fixed 64 bits.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.float = function write_float(value) {\r\n return this._push(util.float.writeFloatLE, 4, value);\r\n};\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.double = function write_double(value) {\r\n return this._push(util.float.writeDoubleLE, 8, value);\r\n};\r\n\r\nvar writeBytes = util.Array.prototype.set\r\n ? function writeBytes_set(val, buf, pos) {\r\n buf.set(val, pos); // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytes_for(val, buf, pos) {\r\n for (var i = 0; i < val.length; ++i)\r\n buf[pos + i] = val[i];\r\n };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (!len)\r\n return this._push(writeByte, 1, 0);\r\n if (util.isString(value)) {\r\n var buf = Writer.alloc(len = base64.length(value));\r\n base64.decode(value, buf, 0);\r\n value = buf;\r\n }\r\n return this.uint32(len)._push(writeBytes, len, value);\r\n};\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.string = function write_string(value) {\r\n var len = utf8.length(value);\r\n return len\r\n ? this.uint32(len)._push(utf8.write, len, value)\r\n : this._push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fork = function fork() {\r\n this.states = new State(this);\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.reset = function reset() {\r\n if (this.states) {\r\n this.head = this.states.head;\r\n this.tail = this.states.tail;\r\n this.len = this.states.len;\r\n this.states = this.states.next;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset().uint32(len);\r\n if (len) {\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriter.prototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = this.constructor.alloc(this.len),\r\n pos = 0;\r\n while (head) {\r\n head.fn(head.val, buf, pos);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n // this.head = this.tail = null;\r\n return buf;\r\n};\r\n\r\nWriter._configure = function(BufferWriter_) {\r\n BufferWriter = BufferWriter_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/writer.js\n// module id = 13\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar BufferReader; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n utf8 = util.utf8;\r\n\r\n/* istanbul ignore next */\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader instance using the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n\r\n /**\r\n * Read buffer.\r\n * @type {Uint8Array}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\nvar create_array = typeof Uint8Array !== \"undefined\"\r\n ? function create_typed_array(buffer) {\r\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n if (Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n };\r\n\r\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array|Buffer} buffer Buffer to read from\r\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n * @throws {Error} If `buffer` is not a valid buffer\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n return (Reader.create = function create_buffer(buffer) {\r\n return util.Buffer.isBuffer(buffer)\r\n ? new BufferReader(buffer)\r\n /* istanbul ignore next */\r\n : create_array(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : create_array;\r\n\r\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.uint32 = (function read_uint32_setup() {\r\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\r\n return function read_uint32() {\r\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n\r\n /* istanbul ignore if */\r\n if ((this.pos += 5) > this.len) {\r\n this.pos = this.len;\r\n throw indexOutOfRange(this, 10);\r\n }\r\n return value;\r\n };\r\n})();\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.int32 = function read_int32() {\r\n return this.uint32() | 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sint32 = function read_sint32() {\r\n var value = this.uint32();\r\n return value >>> 1 ^ -(value & 1) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readLongVarint() {\r\n // tends to deopt with local vars for octet etc.\r\n var bits = new LongBits(0, 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (; i < 4; ++i) {\r\n // 1st..4th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 5th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n i = 0;\r\n } else {\r\n for (; i < 3; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 1st..3th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 4th\r\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\r\n return bits;\r\n }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (; i < 5; ++i) {\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n } else {\r\n for (; i < 5; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n }\r\n /* istanbul ignore next */\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @name Reader#int64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @name Reader#uint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @name Reader#sint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReader.prototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\r\n return (buf[end - 4]\r\n | buf[end - 3] << 8\r\n | buf[end - 2] << 16\r\n | buf[end - 1] << 24) >>> 0;\r\n}\r\n\r\n/**\r\n * Reads fixed 32 bits as an unsigned 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a signed 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sfixed32 = function read_sfixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @name Reader#fixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @name Reader#sfixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.float = function read_float() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readFloatLE(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.double = function read_double() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readDoubleLE(this.buf, this.pos);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReader.prototype.bytes = function read_bytes() {\r\n var length = this.uint32(),\r\n start = this.pos,\r\n end = this.pos + length;\r\n\r\n /* istanbul ignore if */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\r\n if (Array.isArray(this.buf)) // plain array\r\n return this.buf.slice(start, end);\r\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n ? new this.buf.constructor(0)\r\n : this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReader.prototype.string = function read_string() {\r\n var bytes = this.bytes();\r\n return utf8.read(bytes, 0, bytes.length);\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore if */\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n } else {\r\n do {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n do { // eslint-disable-line no-constant-condition\r\n if ((wireType = this.uint32() & 7) === 4)\r\n break;\r\n this.skipType(wireType);\r\n } while (true);\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\r\n }\r\n return this;\r\n};\r\n\r\nReader._configure = function(BufferReader_) {\r\n BufferReader = BufferReader_;\r\n\r\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\r\n util.merge(Reader.prototype, {\r\n\r\n int64: function read_int64() {\r\n return readLongVarint.call(this)[fn](false);\r\n },\r\n\r\n uint64: function read_uint64() {\r\n return readLongVarint.call(this)[fn](true);\r\n },\r\n\r\n sint64: function read_sint64() {\r\n return readLongVarint.call(this).zzDecode()[fn](false);\r\n },\r\n\r\n fixed64: function read_fixed64() {\r\n return readFixed64.call(this)[fn](true);\r\n },\r\n\r\n sfixed64: function read_sfixed64() {\r\n return readFixed64.call(this)[fn](false);\r\n }\r\n\r\n });\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/reader.js\n// module id = 14\n// module chunks = 0","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((OneOf.prototype = Object.create(ReflectionObject.prototype)).constructor = OneOf).className = \"OneOf\";\r\n\r\nvar Field = require(\"./field\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new oneof instance.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]|Object.} [fieldNames] Field names\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction OneOf(name, fieldNames, options, comment) {\r\n if (!Array.isArray(fieldNames)) {\r\n options = fieldNames;\r\n fieldNames = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n\r\n /* istanbul ignore if */\r\n if (!(fieldNames === undefined || Array.isArray(fieldNames)))\r\n throw TypeError(\"fieldNames must be an Array\");\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {string[]}\r\n */\r\n this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n /**\r\n * Fields that belong to this oneof as an array for iteration.\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n this.fieldsArray = []; // declared readonly for conformance, possibly not yet added to parent\r\n\r\n /**\r\n * Comment for this field.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Oneof descriptor.\r\n * @interface IOneOf\r\n * @property {Array.} oneof Oneof field names\r\n * @property {Object.} [options] Oneof options\r\n */\r\n\r\n/**\r\n * Constructs a oneof from a oneof descriptor.\r\n * @param {string} name Oneof name\r\n * @param {IOneOf} json Oneof descriptor\r\n * @returns {OneOf} Created oneof\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nOneOf.fromJSON = function fromJSON(name, json) {\r\n return new OneOf(name, json.oneof, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this oneof to a oneof descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IOneOf} Oneof descriptor\r\n */\r\nOneOf.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"oneof\" , this.oneof,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds the fields of the specified oneof to the parent if not already done so.\r\n * @param {OneOf} oneof The oneof\r\n * @returns {undefined}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction addFieldsToParent(oneof) {\r\n if (oneof.parent)\r\n for (var i = 0; i < oneof.fieldsArray.length; ++i)\r\n if (!oneof.fieldsArray[i].parent)\r\n oneof.parent.add(oneof.fieldsArray[i]);\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof and removes it from its current parent, if any.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOf.prototype.add = function add(field) {\r\n\r\n /* istanbul ignore if */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field must be a Field\");\r\n\r\n if (field.parent && field.parent !== this.parent)\r\n field.parent.remove(field);\r\n this.oneof.push(field.name);\r\n this.fieldsArray.push(field);\r\n field.partOf = this; // field.parent remains null\r\n addFieldsToParent(this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a field from this oneof and puts it back to the oneof's parent.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOf.prototype.remove = function remove(field) {\r\n\r\n /* istanbul ignore if */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field must be a Field\");\r\n\r\n var index = this.fieldsArray.indexOf(field);\r\n\r\n /* istanbul ignore if */\r\n if (index < 0)\r\n throw Error(field + \" is not a member of \" + this);\r\n\r\n this.fieldsArray.splice(index, 1);\r\n index = this.oneof.indexOf(field.name);\r\n\r\n /* istanbul ignore else */\r\n if (index > -1) // theoretical\r\n this.oneof.splice(index, 1);\r\n\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOf.prototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n var self = this;\r\n // Collect present fields\r\n for (var i = 0; i < this.oneof.length; ++i) {\r\n var field = parent.get(this.oneof[i]);\r\n if (field && !field.partOf) {\r\n field.partOf = self;\r\n self.fieldsArray.push(field);\r\n }\r\n }\r\n // Add not yet present fields\r\n addFieldsToParent(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOf.prototype.onRemove = function onRemove(parent) {\r\n for (var i = 0, field; i < this.fieldsArray.length; ++i)\r\n if ((field = this.fieldsArray[i]).parent)\r\n field.parent.remove(field);\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link OneOf.d} (TypeScript).\r\n * @typedef OneOfDecorator\r\n * @type {function}\r\n * @param {Object} prototype Target prototype\r\n * @param {string} oneofName OneOf name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * OneOf decorator (TypeScript).\r\n * @function\r\n * @param {...string} fieldNames Field names\r\n * @returns {OneOfDecorator} Decorator function\r\n * @template T extends string\r\n */\r\nOneOf.d = function decorateOneOf() {\r\n var fieldNames = new Array(arguments.length),\r\n index = 0;\r\n while (index < arguments.length)\r\n fieldNames[index] = arguments[index++];\r\n return function oneOfDecorator(prototype, oneofName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new OneOf(oneofName, fieldNames));\r\n Object.defineProperty(prototype, oneofName, {\r\n get: util.oneOfGetter(fieldNames),\r\n set: util.oneOfSetter(fieldNames)\r\n });\r\n };\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/oneof.js\n// module id = 15\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Message;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\n/**\r\n * Constructs a new message instance.\r\n * @classdesc Abstract runtime message.\r\n * @constructor\r\n * @param {Properties} [properties] Properties to set\r\n * @template T extends object\r\n */\r\nfunction Message(properties) {\r\n // not used internally\r\n if (properties)\r\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\r\n this[keys[i]] = properties[keys[i]];\r\n}\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/*eslint-disable valid-jsdoc*/\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message} Message instance\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.create = function create(properties) {\r\n return this.$type.create(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {T|Object.} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.encode = function encode(message, writer) {\r\n return this.$type.encode(message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @param {T|Object.} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Message.decode\r\n * @function\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\r\n * @returns {T} Decoded message\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.decode = function decode(reader) {\r\n return this.$type.decode(reader);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Message.decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\r\n * @returns {T} Decoded message\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(reader) {\r\n return this.$type.decodeDelimited(reader);\r\n};\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Message.verify\r\n * @function\r\n * @param {Object.} message Plain object to verify\r\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\r\n */\r\nMessage.verify = function verify(message) {\r\n return this.$type.verify(message);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.} object Plain object\r\n * @returns {T} Message instance\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.fromObject = function fromObject(object) {\r\n return this.$type.fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {T} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.toObject = function toObject(message, options) {\r\n return this.$type.toObject(message, options);\r\n};\r\n\r\n/**\r\n * Converts this message to JSON.\r\n * @returns {Object.} JSON object\r\n */\r\nMessage.prototype.toJSON = function toJSON() {\r\n return this.$type.toObject(this, util.toJSONOptions);\r\n};\r\n\r\n/*eslint-enable valid-jsdoc*/\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/message.js\n// module id = 16\n// module chunks = 0","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/aspromise/index.js\n// module id = 17\n// module chunks = 0","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/inquire/index.js\n// module id = 18\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * Streaming RPC helpers.\r\n * @namespace\r\n */\r\nvar rpc = exports;\r\n\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @type {function}\r\n * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCImplCallback} callback Callback function\r\n * @returns {undefined}\r\n * @example\r\n * function rpcImpl(method, requestData, callback) {\r\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\r\n * throw Error(\"no such method\");\r\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\r\n * callback(err, responseData);\r\n * });\r\n * }\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCImplCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\nrpc.Service = require(\"./rpc/service\");\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/rpc.js\n// module id = 19\n// module chunks = 0","\"use strict\";\r\nmodule.exports = {};\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available accross modules.\r\n * @name roots\r\n * @type {Object.}\r\n * @example\r\n * // pbjs -r myroot -o compiled.js ...\r\n *\r\n * // in another module:\r\n * require(\"./compiled.js\");\r\n *\r\n * // in any subsequent module:\r\n * var root = protobuf.roots[\"myroot\"];\r\n */\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/roots.js\n// module id = 20\n// module chunks = 0","\"use strict\";\r\nmodule.exports = encoder;\r\n\r\nvar Enum = require(\"./enum\"),\r\n types = require(\"./types\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Generates a partial message type encoder.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genTypePartial(gen, field, fieldIndex, ref) {\r\n return field.resolvedType.group\r\n ? gen(\"types[%i].encode(%s,w.uint32(%i)).uint32(%i)\", fieldIndex, ref, (field.id << 3 | 3) >>> 0, (field.id << 3 | 4) >>> 0)\r\n : gen(\"types[%i].encode(%s,w.uint32(%i).fork()).ldelim()\", fieldIndex, ref, (field.id << 3 | 2) >>> 0);\r\n}\r\n\r\n/**\r\n * Generates an encoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction encoder(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var gen = util.codegen([\"m\", \"w\"], mtype.name + \"$encode\")\r\n (\"if(!w)\")\r\n (\"w=Writer.create()\");\r\n\r\n var i, ref;\r\n\r\n // \"when a message is serialized its known fields should be written sequentially by field number\"\r\n var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById);\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n index = mtype._fieldsArray.indexOf(field),\r\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\r\n wireType = types.basic[type];\r\n ref = \"m\" + util.safeProp(field.name);\r\n\r\n // Map fields\r\n if (field.map) {\r\n gen\r\n (\"if(%s!=null&&m.hasOwnProperty(%j)){\", ref, field.name) // !== undefined && !== null\r\n (\"for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[field.keyType], field.keyType);\r\n if (wireType === undefined) gen\r\n (\"types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", index, ref); // can't be groups\r\n else gen\r\n (\".uint32(%i).%s(%s[ks[i]]).ldelim()\", 16 | wireType, type, ref);\r\n gen\r\n (\"}\")\r\n (\"}\");\r\n\r\n // Repeated fields\r\n } else if (field.repeated) { gen\r\n (\"if(%s!=null&&%s.length){\", ref, ref); // !== undefined && !== null\r\n\r\n // Packed repeated\r\n if (field.packed && types.packed[type] !== undefined) { gen\r\n\r\n (\"w.uint32(%i).fork()\", (field.id << 3 | 2) >>> 0)\r\n (\"for(var i=0;i<%s.length;++i)\", ref)\r\n (\"w.%s(%s[i])\", type, ref)\r\n (\"w.ldelim()\");\r\n\r\n // Non-packed\r\n } else { gen\r\n\r\n (\"for(var i=0;i<%s.length;++i)\", ref);\r\n if (wireType === undefined)\r\n genTypePartial(gen, field, index, ref + \"[i]\");\r\n else gen\r\n (\"w.uint32(%i).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n } gen\r\n (\"}\");\r\n\r\n // Non-repeated\r\n } else {\r\n if (field.optional) gen\r\n (\"if(%s!=null&&m.hasOwnProperty(%j))\", ref, field.name); // !== undefined && !== null\r\n\r\n if (wireType === undefined)\r\n genTypePartial(gen, field, index, ref);\r\n else gen\r\n (\"w.uint32(%i).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n }\r\n\r\n return gen\r\n (\"return w\");\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/encoder.js\n// module id = 21\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Type;\r\n\r\n// extends Namespace\r\nvar Namespace = require(\"./namespace\");\r\n((Type.prototype = Object.create(Namespace.prototype)).constructor = Type).className = \"Type\";\r\n\r\nvar Enum = require(\"./enum\"),\r\n OneOf = require(\"./oneof\"),\r\n Field = require(\"./field\"),\r\n MapField = require(\"./mapfield\"),\r\n Service = require(\"./service\"),\r\n Message = require(\"./message\"),\r\n Reader = require(\"./reader\"),\r\n Writer = require(\"./writer\"),\r\n util = require(\"./util\"),\r\n encoder = require(\"./encoder\"),\r\n decoder = require(\"./decoder\"),\r\n verifier = require(\"./verifier\"),\r\n converter = require(\"./converter\"),\r\n wrappers = require(\"./wrappers\");\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Message fields.\r\n * @type {Object.}\r\n */\r\n this.fields = {}; // toJSON, marker\r\n\r\n /**\r\n * Oneofs declared within this namespace, if any.\r\n * @type {Object.}\r\n */\r\n this.oneofs = undefined; // toJSON\r\n\r\n /**\r\n * Extension ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.extensions = undefined; // toJSON\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {Array.}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n /*?\r\n * Whether this type is a legacy group.\r\n * @type {boolean|undefined}\r\n */\r\n this.group = undefined; // toJSON\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {Object.|null}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields as an array.\r\n * @type {Field[]|null}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {OneOf[]|null}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {Constructor<{}>}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nObject.defineProperties(Type.prototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: function() {\r\n\r\n /* istanbul ignore if */\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n\r\n this._fieldsById = {};\r\n for (var names = Object.keys(this.fields), i = 0; i < names.length; ++i) {\r\n var field = this.fields[names[i]],\r\n id = field.id;\r\n\r\n /* istanbul ignore if */\r\n if (this._fieldsById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n\r\n this._fieldsById[id] = field;\r\n }\r\n return this._fieldsById;\r\n }\r\n },\r\n\r\n /**\r\n * Fields of this message as an array for iteration.\r\n * @name Type#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: function() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Oneofs of this message as an array for iteration.\r\n * @name Type#oneofsArray\r\n * @type {OneOf[]}\r\n * @readonly\r\n */\r\n oneofsArray: {\r\n get: function() {\r\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n }\r\n },\r\n\r\n /**\r\n * The registered constructor, if any registered, otherwise a generic constructor.\r\n * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor.\r\n * @name Type#ctor\r\n * @type {Constructor<{}>}\r\n */\r\n ctor: {\r\n get: function() {\r\n return this._ctor || (this.ctor = Type.generateConstructor(this)());\r\n },\r\n set: function(ctor) {\r\n\r\n // Ensure proper prototype\r\n var prototype = ctor.prototype;\r\n if (!(prototype instanceof Message)) {\r\n (ctor.prototype = new Message()).constructor = ctor;\r\n util.merge(ctor.prototype, prototype);\r\n }\r\n\r\n // Classes and messages reference their reflected type\r\n ctor.$type = ctor.prototype.$type = this;\r\n\r\n // Mix in static methods\r\n util.merge(ctor, Message, true);\r\n\r\n this._ctor = ctor;\r\n\r\n // Messages have non-enumerable default values on their prototype\r\n var i = 0;\r\n for (; i < /* initializes */ this.fieldsArray.length; ++i)\r\n this._fieldsArray[i].resolve(); // ensures a proper value\r\n\r\n // Messages have non-enumerable getters and setters for each virtual oneof field\r\n var ctorProperties = {};\r\n for (i = 0; i < /* initializes */ this.oneofsArray.length; ++i)\r\n ctorProperties[this._oneofsArray[i].resolve().name] = {\r\n get: util.oneOfGetter(this._oneofsArray[i].oneof),\r\n set: util.oneOfSetter(this._oneofsArray[i].oneof)\r\n };\r\n if (i)\r\n Object.defineProperties(ctor.prototype, ctorProperties);\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Generates a constructor function for the specified type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nType.generateConstructor = function generateConstructor(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var gen = util.codegen([\"p\"], mtype.name);\r\n // explicitly initialize mutable object/array fields so that these aren't just inherited from the prototype\r\n for (var i = 0, field; i < mtype.fieldsArray.length; ++i)\r\n if ((field = mtype._fieldsArray[i]).map) gen\r\n (\"this%s={}\", util.safeProp(field.name));\r\n else if (field.repeated) gen\r\n (\"this%s=[]\", util.safeProp(field.name));\r\n return gen\r\n (\"if(p)for(var ks=Object.keys(p),i=0;i} [oneofs] Oneof descriptors\r\n * @property {Object.} fields Field descriptors\r\n * @property {number[][]} [extensions] Extension ranges\r\n * @property {number[][]} [reserved] Reserved ranges\r\n * @property {boolean} [group=false] Whether a legacy group or not\r\n */\r\n\r\n/**\r\n * Creates a message type from a message type descriptor.\r\n * @param {string} name Message name\r\n * @param {IType} json Message type descriptor\r\n * @returns {Type} Created message type\r\n */\r\nType.fromJSON = function fromJSON(name, json) {\r\n var type = new Type(name, json.options);\r\n type.extensions = json.extensions;\r\n type.reserved = json.reserved;\r\n var names = Object.keys(json.fields),\r\n i = 0;\r\n for (; i < names.length; ++i)\r\n type.add(\r\n ( typeof json.fields[names[i]].keyType !== \"undefined\"\r\n ? MapField.fromJSON\r\n : Field.fromJSON )(names[i], json.fields[names[i]])\r\n );\r\n if (json.oneofs)\r\n for (names = Object.keys(json.oneofs), i = 0; i < names.length; ++i)\r\n type.add(OneOf.fromJSON(names[i], json.oneofs[names[i]]));\r\n if (json.nested)\r\n for (names = Object.keys(json.nested), i = 0; i < names.length; ++i) {\r\n var nested = json.nested[names[i]];\r\n type.add( // most to least likely\r\n ( nested.id !== undefined\r\n ? Field.fromJSON\r\n : nested.fields !== undefined\r\n ? Type.fromJSON\r\n : nested.values !== undefined\r\n ? Enum.fromJSON\r\n : nested.methods !== undefined\r\n ? Service.fromJSON\r\n : Namespace.fromJSON )(names[i], nested)\r\n );\r\n }\r\n if (json.extensions && json.extensions.length)\r\n type.extensions = json.extensions;\r\n if (json.reserved && json.reserved.length)\r\n type.reserved = json.reserved;\r\n if (json.group)\r\n type.group = true;\r\n if (json.comment)\r\n type.comment = json.comment;\r\n return type;\r\n};\r\n\r\n/**\r\n * Converts this message type to a message type descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IType} Message type descriptor\r\n */\r\nType.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , inherited && inherited.options || undefined,\r\n \"oneofs\" , Namespace.arrayToJSON(this.oneofsArray, toJSONOptions),\r\n \"fields\" , Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; }), toJSONOptions) || {},\r\n \"extensions\" , this.extensions && this.extensions.length ? this.extensions : undefined,\r\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\r\n \"group\" , this.group || undefined,\r\n \"nested\" , inherited && inherited.nested || undefined,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nType.prototype.resolveAll = function resolveAll() {\r\n var fields = this.fieldsArray, i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.oneofsArray; i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nType.prototype.get = function get(name) {\r\n return this.fields[name]\r\n || this.oneofs && this.oneofs[name]\r\n || this.nested && this.nested[name]\r\n || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this type.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\r\n */\r\nType.prototype.add = function add(object) {\r\n\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n\r\n if (object instanceof Field && object.extend === undefined) {\r\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\r\n // The root object takes care of adding distinct sister-fields to the respective extended\r\n // type instead.\r\n\r\n // avoids calling the getter if not absolutely necessary because it's called quite frequently\r\n if (this._fieldsById ? /* istanbul ignore next */ this._fieldsById[object.id] : this.fieldsById[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\r\n if (this.isReservedId(object.id))\r\n throw Error(\"id \" + object.id + \" is reserved in \" + this);\r\n if (this.isReservedName(object.name))\r\n throw Error(\"name '\" + object.name + \"' is reserved in \" + this);\r\n\r\n if (object.parent)\r\n object.parent.remove(object);\r\n this.fields[object.name] = object;\r\n object.message = this;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n if (!this.oneofs)\r\n this.oneofs = {};\r\n this.oneofs[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this type.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this type\r\n */\r\nType.prototype.remove = function remove(object) {\r\n if (object instanceof Field && object.extend === undefined) {\r\n // See Type#add for the reason why extension fields are excluded here.\r\n\r\n /* istanbul ignore if */\r\n if (!this.fields || this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.fields[object.name];\r\n object.parent = null;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n\r\n /* istanbul ignore if */\r\n if (!this.oneofs || this.oneofs[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.oneofs[object.name];\r\n object.parent = null;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nType.prototype.isReservedId = function isReservedId(id) {\r\n return Namespace.isReservedId(this.reserved, id);\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nType.prototype.isReservedName = function isReservedName(name) {\r\n return Namespace.isReservedName(this.reserved, name);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message<{}>} Message instance\r\n */\r\nType.prototype.create = function create(properties) {\r\n return new this.ctor(properties);\r\n};\r\n\r\n/**\r\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\r\n * @returns {Type} `this`\r\n */\r\nType.prototype.setup = function setup() {\r\n // Sets up everything at once so that the prototype chain does not have to be re-evaluated\r\n // multiple times (V8, soft-deopt prototype-check).\r\n\r\n var fullName = this.fullName,\r\n types = [];\r\n for (var i = 0; i < /* initializes */ this.fieldsArray.length; ++i)\r\n types.push(this._fieldsArray[i].resolve().resolvedType);\r\n\r\n // Replace setup methods with type-specific generated functions\r\n this.encode = encoder(this)({\r\n Writer : Writer,\r\n types : types,\r\n util : util\r\n });\r\n this.decode = decoder(this)({\r\n Reader : Reader,\r\n types : types,\r\n util : util\r\n });\r\n this.verify = verifier(this)({\r\n types : types,\r\n util : util\r\n });\r\n this.fromObject = converter.fromObject(this)({\r\n types : types,\r\n util : util\r\n });\r\n this.toObject = converter.toObject(this)({\r\n types : types,\r\n util : util\r\n });\r\n\r\n // Inject custom wrappers for common types\r\n var wrapper = wrappers[fullName];\r\n if (wrapper) {\r\n var originalThis = Object.create(this);\r\n // if (wrapper.fromObject) {\r\n originalThis.fromObject = this.fromObject;\r\n this.fromObject = wrapper.fromObject.bind(originalThis);\r\n // }\r\n // if (wrapper.toObject) {\r\n originalThis.toObject = this.toObject;\r\n this.toObject = wrapper.toObject.bind(originalThis);\r\n // }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages.\r\n * @param {Message<{}>|Object.} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nType.prototype.encode = function encode_setup(message, writer) {\r\n return this.setup().encode(message, writer); // overrides this method\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages.\r\n * @param {Message<{}>|Object.} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nType.prototype.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim();\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Message<{}>} Decoded message\r\n * @throws {Error} If the payload is not a reader or valid buffer\r\n * @throws {util.ProtocolError<{}>} If required fields are missing\r\n */\r\nType.prototype.decode = function decode_setup(reader, length) {\r\n return this.setup().decode(reader, length); // overrides this method\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\r\n * @returns {Message<{}>} Decoded message\r\n * @throws {Error} If the payload is not a reader or valid buffer\r\n * @throws {util.ProtocolError} If required fields are missing\r\n */\r\nType.prototype.decodeDelimited = function decodeDelimited(reader) {\r\n if (!(reader instanceof Reader))\r\n reader = Reader.create(reader);\r\n return this.decode(reader, reader.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that field values are valid and that required fields are present.\r\n * @param {Object.} message Plain object to verify\r\n * @returns {null|string} `null` if valid, otherwise the reason why it is not\r\n */\r\nType.prototype.verify = function verify_setup(message) {\r\n return this.setup().verify(message); // overrides this method\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.} object Plain object to convert\r\n * @returns {Message<{}>} Message instance\r\n */\r\nType.prototype.fromObject = function fromObject(object) {\r\n return this.setup().fromObject(object);\r\n};\r\n\r\n/**\r\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\r\n * @interface IConversionOptions\r\n * @property {Function} [longs] Long conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\r\n * @property {Function} [enums] Enum value conversion type.\r\n * Only valid value is `String` (the global type).\r\n * Defaults to copy the present value, which is the numeric id.\r\n * @property {Function} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\r\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\r\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\r\n * @property {boolean} [oneofs=false] Includes virtual oneof properties set to the present field's name, if any\r\n * @property {boolean} [json=false] Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message<{}>} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n */\r\nType.prototype.toObject = function toObject(message, options) {\r\n return this.setup().toObject(message, options);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link Type.d} (TypeScript).\r\n * @typedef TypeDecorator\r\n * @type {function}\r\n * @param {Constructor} target Target constructor\r\n * @returns {undefined}\r\n * @template T extends Message\r\n */\r\n\r\n/**\r\n * Type decorator (TypeScript).\r\n * @param {string} [typeName] Type name, defaults to the constructor's name\r\n * @returns {TypeDecorator} Decorator function\r\n * @template T extends Message\r\n */\r\nType.d = function decorateType(typeName) {\r\n return function typeDecorator(target) {\r\n util.decorateType(target, typeName);\r\n };\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/type.js\n// module id = 22\n// module chunks = 0","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\n// extends Field\r\nvar Field = require(\"./field\");\r\n((MapField.prototype = Object.create(Field.prototype)).constructor = MapField).className = \"MapField\";\r\n\r\nvar types = require(\"./types\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new map field instance.\r\n * @classdesc Reflected map field.\r\n * @extends FieldBase\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} keyType Key type\r\n * @param {string} type Value type\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction MapField(name, id, keyType, type, options, comment) {\r\n Field.call(this, name, id, type, undefined, undefined, options, comment);\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(keyType))\r\n throw TypeError(\"keyType must be a string\");\r\n\r\n /**\r\n * Key type.\r\n * @type {string}\r\n */\r\n this.keyType = keyType; // toJSON, marker\r\n\r\n /**\r\n * Resolved key type if not a basic type.\r\n * @type {ReflectionObject|null}\r\n */\r\n this.resolvedKeyType = null;\r\n\r\n // Overrides Field#map\r\n this.map = true;\r\n}\r\n\r\n/**\r\n * Map field descriptor.\r\n * @interface IMapField\r\n * @extends {IField}\r\n * @property {string} keyType Key type\r\n */\r\n\r\n/**\r\n * Extension map field descriptor.\r\n * @interface IExtensionMapField\r\n * @extends IMapField\r\n * @property {string} extend Extended type\r\n */\r\n\r\n/**\r\n * Constructs a map field from a map field descriptor.\r\n * @param {string} name Field name\r\n * @param {IMapField} json Map field descriptor\r\n * @returns {MapField} Created map field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMapField.fromJSON = function fromJSON(name, json) {\r\n return new MapField(name, json.id, json.keyType, json.type, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this map field to a map field descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IMapField} Map field descriptor\r\n */\r\nMapField.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"keyType\" , this.keyType,\r\n \"type\" , this.type,\r\n \"id\" , this.id,\r\n \"extend\" , this.extend,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapField.prototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n // Besides a value type, map fields have a key type that may be \"any scalar type except for floating point types and bytes\"\r\n if (types.mapKey[this.keyType] === undefined)\r\n throw Error(\"invalid key type: \" + this.keyType);\r\n\r\n return Field.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Map field decorator (TypeScript).\r\n * @name MapField.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"} fieldKeyType Field key type\r\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"|\"bytes\"|Object|Constructor<{}>} fieldValueType Field value type\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> }\r\n */\r\nMapField.d = function decorateMapField(fieldId, fieldKeyType, fieldValueType) {\r\n\r\n // submessage value: decorate the submessage and use its name as the type\r\n if (typeof fieldValueType === \"function\")\r\n fieldValueType = util.decorateType(fieldValueType).name;\r\n\r\n // enum reference value: create a reflected copy of the enum and keep reuseing it\r\n else if (fieldValueType && typeof fieldValueType === \"object\")\r\n fieldValueType = util.decorateEnum(fieldValueType).name;\r\n\r\n return function mapFieldDecorator(prototype, fieldName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new MapField(fieldName, fieldId, fieldKeyType, fieldValueType));\r\n };\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/mapfield.js\n// module id = 23\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Service;\r\n\r\n// extends Namespace\r\nvar Namespace = require(\"./namespace\");\r\n((Service.prototype = Object.create(Namespace.prototype)).constructor = Service).className = \"Service\";\r\n\r\nvar Method = require(\"./method\"),\r\n util = require(\"./util\"),\r\n rpc = require(\"./rpc\");\r\n\r\n/**\r\n * Constructs a new service instance.\r\n * @classdesc Reflected service.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Service methods.\r\n * @type {Object.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {Method[]|null}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\n/**\r\n * Service descriptor.\r\n * @interface IService\r\n * @extends INamespace\r\n * @property {Object.} methods Method descriptors\r\n */\r\n\r\n/**\r\n * Constructs a service from a service descriptor.\r\n * @param {string} name Service name\r\n * @param {IService} json Service descriptor\r\n * @returns {Service} Created service\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nService.fromJSON = function fromJSON(name, json) {\r\n var service = new Service(name, json.options);\r\n /* istanbul ignore else */\r\n if (json.methods)\r\n for (var names = Object.keys(json.methods), i = 0; i < names.length; ++i)\r\n service.add(Method.fromJSON(names[i], json.methods[names[i]]));\r\n if (json.nested)\r\n service.addJSON(json.nested);\r\n service.comment = json.comment;\r\n return service;\r\n};\r\n\r\n/**\r\n * Converts this service to a service descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IService} Service descriptor\r\n */\r\nService.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , inherited && inherited.options || undefined,\r\n \"methods\" , Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ {},\r\n \"nested\" , inherited && inherited.nested || undefined,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(Service.prototype, \"methodsArray\", {\r\n get: function() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n});\r\n\r\nfunction clearCache(service) {\r\n service._methodsArray = null;\r\n return service;\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.get = function get(name) {\r\n return this.methods[name]\r\n || Namespace.prototype.get.call(this, name);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.resolveAll = function resolveAll() {\r\n var methods = this.methodsArray;\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return Namespace.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.add = function add(object) {\r\n\r\n /* istanbul ignore if */\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n\r\n if (object instanceof Method) {\r\n this.methods[object.name] = object;\r\n object.parent = this;\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n\r\n /* istanbul ignore if */\r\n if (this.methods[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.methods[object.name];\r\n object.parent = null;\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n * @returns {rpc.Service} RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nService.prototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl, requestDelimited, responseDelimited);\r\n for (var i = 0, method; i < /* initializes */ this.methodsArray.length; ++i) {\r\n var methodName = util.lcFirst((method = this._methodsArray[i]).resolve().name).replace(/[^$\\w_]/g, \"\");\r\n rpcService[methodName] = util.codegen([\"r\",\"c\"], util.isReserved(methodName) ? methodName + \"_\" : methodName)(\"return this.rpcCall(m,q,s,r,c)\")({\r\n m: method,\r\n q: method.resolvedRequestType.ctor,\r\n s: method.resolvedResponseType.ctor\r\n });\r\n }\r\n return rpcService;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/service.js\n// module id = 24\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Method;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = \"Method\";\r\n\r\nvar util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new service method instance.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean|Object.} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.} [responseStream] Whether the response is streamed\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] The comment for this method\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options, comment) {\r\n\r\n /* istanbul ignore next */\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n\r\n /* istanbul ignore if */\r\n if (!(type === undefined || util.isString(type)))\r\n throw TypeError(\"type must be a string\");\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(requestType))\r\n throw TypeError(\"requestType must be a string\");\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(responseType))\r\n throw TypeError(\"responseType must be a string\");\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Method type.\r\n * @type {string}\r\n */\r\n this.type = type || \"rpc\"; // toJSON\r\n\r\n /**\r\n * Request type.\r\n * @type {string}\r\n */\r\n this.requestType = requestType; // toJSON, marker\r\n\r\n /**\r\n * Whether requests are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Response type.\r\n * @type {string}\r\n */\r\n this.responseType = responseType; // toJSON\r\n\r\n /**\r\n * Whether responses are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Resolved request type.\r\n * @type {Type|null}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {Type|null}\r\n */\r\n this.resolvedResponseType = null;\r\n\r\n /**\r\n * Comment for this method\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Method descriptor.\r\n * @interface IMethod\r\n * @property {string} [type=\"rpc\"] Method type\r\n * @property {string} requestType Request type\r\n * @property {string} responseType Response type\r\n * @property {boolean} [requestStream=false] Whether requests are streamed\r\n * @property {boolean} [responseStream=false] Whether responses are streamed\r\n * @property {Object.} [options] Method options\r\n */\r\n\r\n/**\r\n * Constructs a method from a method descriptor.\r\n * @param {string} name Method name\r\n * @param {IMethod} json Method descriptor\r\n * @returns {Method} Created method\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMethod.fromJSON = function fromJSON(name, json) {\r\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this method to a method descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IMethod} Method descriptor\r\n */\r\nMethod.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"type\" , this.type !== \"rpc\" && /* istanbul ignore next */ this.type || undefined,\r\n \"requestType\" , this.requestType,\r\n \"requestStream\" , this.requestStream,\r\n \"responseType\" , this.responseType,\r\n \"responseStream\" , this.responseStream,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethod.prototype.resolve = function resolve() {\r\n\r\n /* istanbul ignore if */\r\n if (this.resolved)\r\n return this;\r\n\r\n this.resolvedRequestType = this.parent.lookupType(this.requestType);\r\n this.resolvedResponseType = this.parent.lookupType(this.responseType);\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/method.js\n// module id = 25\n// module chunks = 0","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\nvar Enum = require(\"./enum\"),\r\n types = require(\"./types\"),\r\n util = require(\"./util\");\r\n\r\nfunction missing(field) {\r\n return \"missing required '\" + field.name + \"'\";\r\n}\r\n\r\n/**\r\n * Generates a decoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction decoder(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var gen = util.codegen([\"r\", \"l\"], mtype.name + \"$decode\")\r\n (\"if(!(r instanceof Reader))\")\r\n (\"r=Reader.create(r)\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new this.ctor\" + (mtype.fieldsArray.filter(function(field) { return field.map; }).length ? \",k\" : \"\"))\r\n (\"while(r.pos>>3){\");\r\n\r\n var i = 0;\r\n for (; i < /* initializes */ mtype.fieldsArray.length; ++i) {\r\n var field = mtype._fieldsArray[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\r\n ref = \"m\" + util.safeProp(field.name); gen\r\n (\"case %i:\", field.id);\r\n\r\n // Map fields\r\n if (field.map) { gen\r\n (\"r.skip().pos++\") // assumes id 1 + key wireType\r\n (\"if(%s===util.emptyObject)\", ref)\r\n (\"%s={}\", ref)\r\n (\"k=r.%s()\", field.keyType)\r\n (\"r.pos++\"); // assumes id 2 + value wireType\r\n if (types.long[field.keyType] !== undefined) {\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=types[%i].decode(r,r.uint32())\", ref, i); // can't be groups\r\n else gen\r\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=r.%s()\", ref, type);\r\n } else {\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[k]=types[%i].decode(r,r.uint32())\", ref, i); // can't be groups\r\n else gen\r\n (\"%s[k]=r.%s()\", ref, type);\r\n }\r\n\r\n // Repeated fields\r\n } else if (field.repeated) { gen\r\n\r\n (\"if(!(%s&&%s.length))\", ref, ref)\r\n (\"%s=[]\", ref);\r\n\r\n // Packable (always check for forward and backward compatiblity)\r\n if (types.packed[type] !== undefined) gen\r\n (\"if((t&7)===2){\")\r\n (\"var c2=r.uint32()+r.pos\")\r\n (\"while(r.pos>>0\", prop, prop);\r\n break;\r\n case \"int32\":\r\n case \"sint32\":\r\n case \"sfixed32\": gen\r\n (\"m%s=d%s|0\", prop, prop);\r\n break;\r\n case \"uint64\":\r\n isUnsigned = true;\r\n // eslint-disable-line no-fallthrough\r\n case \"int64\":\r\n case \"sint64\":\r\n case \"fixed64\":\r\n case \"sfixed64\": gen\r\n (\"if(util.Long)\")\r\n (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\r\n (\"else if(typeof d%s===\\\"string\\\")\", prop)\r\n (\"m%s=parseInt(d%s,10)\", prop, prop)\r\n (\"else if(typeof d%s===\\\"number\\\")\", prop)\r\n (\"m%s=d%s\", prop, prop)\r\n (\"else if(typeof d%s===\\\"object\\\")\", prop)\r\n (\"m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\r\n break;\r\n case \"bytes\": gen\r\n (\"if(typeof d%s===\\\"string\\\")\", prop)\r\n (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop)\r\n (\"else if(d%s.length)\", prop)\r\n (\"m%s=d%s\", prop, prop);\r\n break;\r\n case \"string\": gen\r\n (\"m%s=String(d%s)\", prop, prop);\r\n break;\r\n case \"bool\": gen\r\n (\"m%s=Boolean(d%s)\", prop, prop);\r\n break;\r\n /* default: gen\r\n (\"m%s=d%s\", prop, prop);\r\n break; */\r\n }\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a plain object to runtime message converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.fromObject = function fromObject(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var fields = mtype.fieldsArray;\r\n var gen = util.codegen([\"d\"], mtype.name + \"$fromObject\")\r\n (\"if(d instanceof this.ctor)\")\r\n (\"return d\");\r\n if (!fields.length) return gen\r\n (\"return new this.ctor\");\r\n gen\r\n (\"var m=new this.ctor\");\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n prop = util.safeProp(field.name);\r\n\r\n // Map fields\r\n if (field.map) { gen\r\n (\"if(d%s){\", prop)\r\n (\"if(typeof d%s!==\\\"object\\\")\", prop)\r\n (\"throw TypeError(%j)\", field.fullName + \": object expected\")\r\n (\"m%s={}\", prop)\r\n (\"for(var ks=Object.keys(d%s),i=0;i>>0,m%s.high>>>0).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\r\n break;\r\n case \"bytes\": gen\r\n (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\r\n break;\r\n default: gen\r\n (\"d%s=m%s\", prop, prop);\r\n break;\r\n }\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a runtime message to plain object converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.toObject = function toObject(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var fields = mtype.fieldsArray.slice().sort(util.compareFieldsById);\r\n if (!fields.length)\r\n return util.codegen()(\"return {}\");\r\n var gen = util.codegen([\"m\", \"o\"], mtype.name + \"$toObject\")\r\n (\"if(!o)\")\r\n (\"o={}\")\r\n (\"var d={}\");\r\n\r\n var repeatedFields = [],\r\n mapFields = [],\r\n normalFields = [],\r\n i = 0;\r\n for (; i < fields.length; ++i)\r\n if (!fields[i].partOf)\r\n ( fields[i].resolve().repeated ? repeatedFields\r\n : fields[i].map ? mapFields\r\n : normalFields).push(fields[i]);\r\n\r\n if (repeatedFields.length) { gen\r\n (\"if(o.arrays||o.defaults){\");\r\n for (i = 0; i < repeatedFields.length; ++i) gen\r\n (\"d%s=[]\", util.safeProp(repeatedFields[i].name));\r\n gen\r\n (\"}\");\r\n }\r\n\r\n if (mapFields.length) { gen\r\n (\"if(o.objects||o.defaults){\");\r\n for (i = 0; i < mapFields.length; ++i) gen\r\n (\"d%s={}\", util.safeProp(mapFields[i].name));\r\n gen\r\n (\"}\");\r\n }\r\n\r\n if (normalFields.length) { gen\r\n (\"if(o.defaults){\");\r\n for (i = 0; i < normalFields.length; ++i) {\r\n var field = normalFields[i],\r\n prop = util.safeProp(field.name);\r\n if (field.resolvedType instanceof Enum) gen\r\n (\"d%s=o.enums===String?%j:%j\", prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\r\n else if (field.long) gen\r\n (\"if(util.Long){\")\r\n (\"var n=new util.Long(%i,%i,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\r\n (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", prop)\r\n (\"}else\")\r\n (\"d%s=o.longs===String?%j:%i\", prop, field.typeDefault.toString(), field.typeDefault.toNumber());\r\n else if (field.bytes) gen\r\n (\"d%s=o.bytes===String?%j:%s\", prop, String.fromCharCode.apply(String, field.typeDefault), \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\");\r\n else gen\r\n (\"d%s=%j\", prop, field.typeDefault); // also messages (=null)\r\n } gen\r\n (\"}\");\r\n }\r\n var hasKs2 = false;\r\n for (i = 0; i < fields.length; ++i) {\r\n var field = fields[i],\r\n index = mtype._fieldsArray.indexOf(field),\r\n prop = util.safeProp(field.name);\r\n if (field.map) {\r\n if (!hasKs2) { hasKs2 = true; gen\r\n (\"var ks2\");\r\n } gen\r\n (\"if(m%s&&(ks2=Object.keys(m%s)).length){\", prop, prop)\r\n (\"d%s={}\", prop)\r\n (\"for(var j=0;j}\r\n * @const\r\n */\r\nvar wrappers = exports;\r\n\r\nvar Message = require(\"./message\");\r\n\r\n/**\r\n * From object converter part of an {@link IWrapper}.\r\n * @typedef WrapperFromObjectConverter\r\n * @type {function}\r\n * @param {Object.} object Plain object\r\n * @returns {Message<{}>} Message instance\r\n * @this Type\r\n */\r\n\r\n/**\r\n * To object converter part of an {@link IWrapper}.\r\n * @typedef WrapperToObjectConverter\r\n * @type {function}\r\n * @param {Message<{}>} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n * @this Type\r\n */\r\n\r\n/**\r\n * Common type wrapper part of {@link wrappers}.\r\n * @interface IWrapper\r\n * @property {WrapperFromObjectConverter} [fromObject] From object converter\r\n * @property {WrapperToObjectConverter} [toObject] To object converter\r\n */\r\n\r\n// Custom wrapper for Any\r\nwrappers[\".google.protobuf.Any\"] = {\r\n\r\n fromObject: function(object) {\r\n\r\n // unwrap value type if mapped\r\n if (object && object[\"@type\"]) {\r\n var type = this.lookup(object[\"@type\"]);\r\n /* istanbul ignore else */\r\n if (type) {\r\n // type_url does not accept leading \".\"\r\n var type_url = object[\"@type\"].charAt(0) === \".\" ?\r\n object[\"@type\"].substr(1) : object[\"@type\"];\r\n // type_url prefix is optional, but path seperator is required\r\n return this.create({\r\n type_url: \"/\" + type_url,\r\n value: type.encode(type.fromObject(object)).finish()\r\n });\r\n }\r\n }\r\n\r\n return this.fromObject(object);\r\n },\r\n\r\n toObject: function(message, options) {\r\n\r\n // decode value if requested and unmapped\r\n if (options && options.json && message.type_url && message.value) {\r\n // Only use fully qualified type name after the last '/'\r\n var name = message.type_url.substring(message.type_url.lastIndexOf(\"/\") + 1);\r\n var type = this.lookup(name);\r\n /* istanbul ignore else */\r\n if (type)\r\n message = type.decode(message.value);\r\n }\r\n\r\n // wrap value if unmapped\r\n if (!(message instanceof this.ctor) && message instanceof Message) {\r\n var object = message.$type.toObject(message, options);\r\n object[\"@type\"] = message.$type.fullName;\r\n return object;\r\n }\r\n\r\n return this.toObject(message, options);\r\n }\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/wrappers.js\n// module id = 29\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Root;\r\n\r\n// extends Namespace\r\nvar Namespace = require(\"./namespace\");\r\n((Root.prototype = Object.create(Namespace.prototype)).constructor = Root).className = \"Root\";\r\n\r\nvar Field = require(\"./field\"),\r\n Enum = require(\"./enum\"),\r\n OneOf = require(\"./oneof\"),\r\n util = require(\"./util\");\r\n\r\nvar Type, // cyclic\r\n parse, // might be excluded\r\n common; // \"\r\n\r\n/**\r\n * Constructs a new root namespace instance.\r\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {Object.} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n Namespace.call(this, \"\", options);\r\n\r\n /**\r\n * Deferred extension fields.\r\n * @type {Field[]}\r\n */\r\n this.deferred = [];\r\n\r\n /**\r\n * Resolved file names of loaded files.\r\n * @type {string[]}\r\n */\r\n this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a namespace descriptor into a root namespace.\r\n * @param {INamespace} json Nameespace descriptor\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\r\n * @returns {Root} Root namespace\r\n */\r\nRoot.fromJSON = function fromJSON(json, root) {\r\n if (!root)\r\n root = new Root();\r\n if (json.options)\r\n root.setOptions(json.options);\r\n return root.addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Resolves the path of an imported file, relative to the importing origin.\r\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\r\n * @function\r\n * @param {string} origin The file name of the importing file\r\n * @param {string} target The file name being imported\r\n * @returns {string|null} Resolved path to `target` or `null` to skip the file\r\n */\r\nRoot.prototype.resolvePath = util.path.resolve;\r\n\r\n// A symbol-like function to safely signal synchronous loading\r\n/* istanbul ignore next */\r\nfunction SYNC() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} options Parse options\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nRoot.prototype.load = function load(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = undefined;\r\n }\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(load, self, filename, options);\r\n\r\n var sync = callback === SYNC; // undocumented\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n /* istanbul ignore if */\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n if (sync)\r\n throw err;\r\n cb(err, root);\r\n }\r\n\r\n // Processes a single file\r\n function process(filename, source) {\r\n try {\r\n if (util.isString(source) && source.charAt(0) === \"{\")\r\n source = JSON.parse(source);\r\n if (!util.isString(source))\r\n self.setOptions(source.options).addJSON(source.nested);\r\n else {\r\n parse.filename = filename;\r\n var parsed = parse(source, self, options),\r\n resolved,\r\n i = 0;\r\n if (parsed.imports)\r\n for (; i < parsed.imports.length; ++i)\r\n if (resolved = self.resolvePath(filename, parsed.imports[i]))\r\n fetch(resolved);\r\n if (parsed.weakImports)\r\n for (i = 0; i < parsed.weakImports.length; ++i)\r\n if (resolved = self.resolvePath(filename, parsed.weakImports[i]))\r\n fetch(resolved, true);\r\n }\r\n } catch (err) {\r\n finish(err);\r\n }\r\n if (!sync && !queued)\r\n finish(null, self); // only once anyway\r\n }\r\n\r\n // Fetches a single file\r\n function fetch(filename, weak) {\r\n\r\n // Strip path if this file references a bundled definition\r\n var idx = filename.lastIndexOf(\"google/protobuf/\");\r\n if (idx > -1) {\r\n var altname = filename.substring(idx);\r\n if (altname in common)\r\n filename = altname;\r\n }\r\n\r\n // Skip if already loaded / attempted\r\n if (self.files.indexOf(filename) > -1)\r\n return;\r\n self.files.push(filename);\r\n\r\n // Shortcut bundled definitions\r\n if (filename in common) {\r\n if (sync)\r\n process(filename, common[filename]);\r\n else {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n }\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n if (sync) {\r\n var source;\r\n try {\r\n source = util.fs.readFileSync(filename).toString(\"utf8\");\r\n } catch (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n } else {\r\n ++queued;\r\n util.fetch(filename, function(err, source) {\r\n --queued;\r\n /* istanbul ignore if */\r\n if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n /* istanbul ignore else */\r\n if (!weak)\r\n finish(err);\r\n else if (!queued) // can't be covered reliably\r\n finish(null, self);\r\n return;\r\n }\r\n process(filename, source);\r\n });\r\n }\r\n }\r\n var queued = 0;\r\n\r\n // Assembling the root namespace doesn't require working type\r\n // references anymore, so we can load everything in parallel\r\n if (util.isString(filename))\r\n filename = [ filename ];\r\n for (var i = 0, resolved; i < filename.length; ++i)\r\n if (resolved = self.resolvePath(\"\", filename[i]))\r\n fetch(resolved);\r\n\r\n if (sync)\r\n return self;\r\n if (!queued)\r\n finish(null, self);\r\n return undefined;\r\n};\r\n// function load(filename:string, options:IParseOptions, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\r\n * @function Root#load\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\r\n * @function Root#load\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:IParseOptions]):Promise\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only).\r\n * @function Root#loadSync\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\nRoot.prototype.loadSync = function loadSync(filename, options) {\r\n if (!util.isNode)\r\n throw Error(\"not supported\");\r\n return this.load(filename, options, SYNC);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRoot.prototype.resolveAll = function resolveAll() {\r\n if (this.deferred.length)\r\n throw Error(\"unresolvable extensions: \" + this.deferred.map(function(field) {\r\n return \"'extend \" + field.extend + \"' in \" + field.parent.fullName;\r\n }).join(\", \"));\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\r\n\r\n// only uppercased (and thus conflict-free) children are exposed, see below\r\nvar exposeRe = /^[A-Z]/;\r\n\r\n/**\r\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\r\n * @param {Root} root Root instance\r\n * @param {Field} field Declaring extension field witin the declaring type\r\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\r\n * @inner\r\n * @ignore\r\n */\r\nfunction tryHandleExtension(root, field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options);\r\n sisterField.declaringField = field;\r\n field.extensionField = sisterField;\r\n extendedType.add(sisterField);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRoot.prototype._handleAdd = function _handleAdd(object) {\r\n if (object instanceof Field) {\r\n\r\n if (/* an extension field (implies not part of a oneof) */ object.extend !== undefined && /* not already handled */ !object.extensionField)\r\n if (!tryHandleExtension(this, object))\r\n this.deferred.push(object);\r\n\r\n } else if (object instanceof Enum) {\r\n\r\n if (exposeRe.test(object.name))\r\n object.parent[object.name] = object.values; // expose enum values as property of its parent\r\n\r\n } else if (!(object instanceof OneOf)) /* everything else is a namespace */ {\r\n\r\n if (object instanceof Type) // Try to handle any deferred extensions\r\n for (var i = 0; i < this.deferred.length;)\r\n if (tryHandleExtension(this, this.deferred[i]))\r\n this.deferred.splice(i, 1);\r\n else\r\n ++i;\r\n for (var j = 0; j < /* initializes */ object.nestedArray.length; ++j) // recurse into the namespace\r\n this._handleAdd(object._nestedArray[j]);\r\n if (exposeRe.test(object.name))\r\n object.parent[object.name] = object; // expose namespace as property of its parent\r\n }\r\n\r\n // The above also adds uppercased (and thus conflict-free) nested types, services and enums as\r\n // properties of namespaces just like static code does. This allows using a .d.ts generated for\r\n // a static module with reflection-based solutions where the condition is met.\r\n};\r\n\r\n/**\r\n * Called when any object is removed from this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object removed\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRoot.prototype._handleRemove = function _handleRemove(object) {\r\n if (object instanceof Field) {\r\n\r\n if (/* an extension field */ object.extend !== undefined) {\r\n if (/* already handled */ object.extensionField) { // remove its sister field\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n } else { // cancel the extension\r\n var index = this.deferred.indexOf(object);\r\n /* istanbul ignore else */\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n }\r\n\r\n } else if (object instanceof Enum) {\r\n\r\n if (exposeRe.test(object.name))\r\n delete object.parent[object.name]; // unexpose enum values\r\n\r\n } else if (object instanceof Namespace) {\r\n\r\n for (var i = 0; i < /* initializes */ object.nestedArray.length; ++i) // recurse into the namespace\r\n this._handleRemove(object._nestedArray[i]);\r\n\r\n if (exposeRe.test(object.name))\r\n delete object.parent[object.name]; // unexpose namespaces\r\n\r\n }\r\n};\r\n\r\nRoot._configure = function(Type_, parse_, common_) {\r\n Type = Type_;\r\n parse = parse_;\r\n common = common_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/root.js\n// module id = 30\n// module chunks = 0","import {CentrifugeProtobuf} from './protobuf.js';\nexport default CentrifugeProtobuf;\n\n\n\n// WEBPACK FOOTER //\n// ./src/index_protobuf.js","import {Centrifuge} from './centrifuge.js';\n\nconst protobuf = require('protobufjs/light');\nconst proto = protobuf.Root.fromJSON(require('./client.proto.json'));\n\nconst methodValues = proto.lookupEnum('MethodType').values;\n\nconst protobufMethodType = {\n CONNECT: methodValues.CONNECT,\n SUBSCRIBE: methodValues.SUBSCRIBE,\n UNSUBSCRIBE: methodValues.UNSUBSCRIBE,\n PUBLISH: methodValues.PUBLISH,\n PRESENCE: methodValues.PRESENCE,\n PRESENCE_STATS: methodValues.PRESENCE_STATS,\n HISTORY: methodValues.HISTORY,\n PING: methodValues.PING,\n RPC: methodValues.RPC,\n SEND: methodValues.SEND,\n REFRESH: methodValues.REFRESH,\n SUB_REFRESH: methodValues.SUB_REFRESH\n};\n\nconst methodSchema = {\n CONNECT: [\n proto.lookupType('proto.ConnectRequest'),\n proto.lookupType('proto.ConnectResult')\n ],\n REFRESH: [\n proto.lookupType('proto.RefreshRequest'),\n proto.lookupType('proto.RefreshResult')\n ],\n SUBSCRIBE: [\n proto.lookupType('proto.SubscribeRequest'),\n proto.lookupType('proto.SubscribeResult')\n ],\n SUB_REFRESH: [\n proto.lookupType('proto.SubRefreshRequest'),\n proto.lookupType('proto.SubRefreshResult')\n ],\n UNSUBSCRIBE: [\n proto.lookupType('proto.UnsubscribeRequest'),\n proto.lookupType('proto.UnsubscribeResult')\n ],\n PUBLISH: [\n proto.lookupType('proto.PublishRequest'),\n proto.lookupType('proto.PublishResult')\n ],\n PRESENCE: [\n proto.lookupType('proto.PresenceRequest'),\n proto.lookupType('proto.PresenceResult')\n ],\n PRESENCE_STATS: [\n proto.lookupType('proto.PresenceStatsRequest'),\n proto.lookupType('proto.PresenceStatsResult')\n ],\n HISTORY: [\n proto.lookupType('proto.HistoryRequest'),\n proto.lookupType('proto.HistoryResult')\n ],\n PING: [\n proto.lookupType('proto.PingRequest'),\n proto.lookupType('proto.PingResult')\n ],\n RPC: [\n proto.lookupType('proto.RPCRequest'),\n proto.lookupType('proto.RPCResult')\n ],\n SEND: [\n proto.lookupType('proto.SendRequest'),\n null\n ]\n};\n\nconst protobufPushType = {\n PUBLICATION: proto.lookupEnum('PushType').values.PUBLICATION,\n JOIN: proto.lookupEnum('PushType').values.JOIN,\n LEAVE: proto.lookupEnum('PushType').values.LEAVE,\n UNSUB: proto.lookupEnum('PushType').values.UNSUB,\n MESSAGE: proto.lookupEnum('PushType').values.MESSAGE\n};\n\nconst PushSchema = {\n PUBLICATION: proto.lookupType('proto.Publication'),\n JOIN: proto.lookupType('proto.Join'),\n LEAVE: proto.lookupType('proto.Leave'),\n UNSUB: proto.lookupType('proto.Unsub'),\n MESSAGE: proto.lookupType('proto.Message')\n};\n\nconst Push = proto.lookupType('proto.Push');\nconst Command = proto.lookupType('proto.Command');\nconst Reply = proto.lookupType('proto.Reply');\n\nexport class ProtobufEncoder {\n encodeCommands(commands) {\n const writer = protobuf.Writer.create();\n for (const i in commands) {\n if (commands.hasOwnProperty(i)) {\n const command = Object.assign({}, commands[i]);\n if (command.params) {\n let type;\n if (!command.method) {\n command.method = protobufMethodType.CONNECT;\n };\n switch (command.method) {\n case protobufMethodType.CONNECT:\n type = methodSchema.CONNECT[0];\n break;\n case protobufMethodType.REFRESH:\n type = methodSchema.REFRESH;\n break;\n case protobufMethodType.SUBSCRIBE:\n type = methodSchema.SUBSCRIBE[0];\n break;\n case protobufMethodType.SUB_REFRESH:\n type = methodSchema.SUB_REFRESH[0];\n break;\n case protobufMethodType.UNSUBSCRIBE:\n type = methodSchema.UNSUBSCRIBE[0];\n break;\n case protobufMethodType.PUBLISH:\n type = methodSchema.PUBLISH[0];\n break;\n case protobufMethodType.PRESENCE:\n type = methodSchema.PRESENCE[0];\n break;\n case protobufMethodType.PRESENCE_STATS:\n type = methodSchema.PRESENCE_STATS[0];\n break;\n case protobufMethodType.HISTORY:\n type = methodSchema.HISTORY[0];\n break;\n case protobufMethodType.PING:\n type = methodSchema.PING[0];\n break;\n case protobufMethodType.RPC:\n type = methodSchema.RPC[0];\n break;\n case protobufMethodType.SEND:\n type = methodSchema.SEND[0];\n break;\n }\n command.params = type.encode(command.params).finish();\n }\n Command.encodeDelimited(command, writer);\n }\n }\n return writer.finish();\n }\n}\n\nexport class ProtobufDecoder {\n decodeReplies(data) {\n const replies = [];\n const reader = protobuf.Reader.create(new Uint8Array(data));\n while (reader.pos < reader.len) {\n const reply = Reply.decodeDelimited(reader);\n replies.push(reply);\n }\n return replies;\n }\n\n decodeCommandResult(methodType, data) {\n var type;\n switch (methodType) {\n case protobufMethodType.CONNECT:\n type = methodSchema.CONNECT[1];\n break;\n case protobufMethodType.REFRESH:\n type = methodSchema.REFRESH[1];\n break;\n case protobufMethodType.SUBSCRIBE:\n type = methodSchema.SUBSCRIBE[1];\n break;\n case protobufMethodType.SUB_REFRESH:\n type = methodSchema.SUB_REFRESH[1];\n break;\n case protobufMethodType.UNSUBSCRIBE:\n type = methodSchema.UNSUBSCRIBE[1];\n break;\n case protobufMethodType.PUBLISH:\n type = methodSchema.PUBLISH[1];\n break;\n case protobufMethodType.PRESENCE:\n type = methodSchema.PRESENCE[1];\n break;\n case protobufMethodType.PRESENCE_STATS:\n type = methodSchema.PRESENCE_STATS[1];\n break;\n case protobufMethodType.HISTORY:\n type = methodSchema.HISTORY[1];\n break;\n case protobufMethodType.PING:\n type = methodSchema.PING[1];\n break;\n case protobufMethodType.RPC:\n type = methodSchema.RPC[1];\n break;\n }\n return this._decode(type, data);\n }\n\n decodePush(data) {\n return this._decode(Push, data);\n }\n\n decodePushData(pushType, data) {\n var type;\n switch (pushType) {\n case protobufPushType.PUBLICATION:\n type = PushSchema.PUBLICATION;\n break;\n case protobufPushType.MESSAGE:\n type = PushSchema.MESSAGE;\n break;\n case protobufPushType.JOIN:\n type = PushSchema.JOIN;\n break;\n case protobufPushType.LEAVE:\n type = PushSchema.LEAVE;\n break;\n case protobufPushType.UNSUB:\n type = PushSchema.UNSUB;\n break;\n }\n return this._decode(type, data);\n }\n\n _decode(type, data) {\n let res;\n try {\n res = type.decode(data);\n } catch (err) {\n return null;\n }\n return res;\n }\n}\n\nexport class CentrifugeProtobuf extends Centrifuge {\n _formatOverride(format) {\n if (format === 'protobuf') {\n this._binary = true;\n this._methodType = protobufMethodType;\n this._pushType = protobufPushType;\n this._encoder = new ProtobufEncoder();\n this._decoder = new ProtobufDecoder();\n return true;\n }\n return false;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/protobuf.js","// light library entry point.\r\n\r\n\"use strict\";\r\nmodule.exports = require(\"./src/index-light\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/light.js\n// module id = 34\n// module chunks = 0","\"use strict\";\r\nvar protobuf = module.exports = require(\"./index-minimal\");\r\n\r\nprotobuf.build = \"light\";\r\n\r\n/**\r\n * A node-style callback as used by {@link load} and {@link Root#load}.\r\n * @typedef LoadCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Root} [root] Root, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} root Root namespace, defaults to create a new one if omitted.\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @see {@link Root#load}\r\n */\r\nfunction load(filename, root, callback) {\r\n if (typeof root === \"function\") {\r\n callback = root;\r\n root = new protobuf.Root();\r\n } else if (!root)\r\n root = new protobuf.Root();\r\n return root.load(filename, callback);\r\n}\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @see {@link Root#load}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Promise} Promise\r\n * @see {@link Root#load}\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n * @see {@link Root#loadSync}\r\n */\r\nfunction loadSync(filename, root) {\r\n if (!root)\r\n root = new protobuf.Root();\r\n return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\r\n\r\n// Serialization\r\nprotobuf.encoder = require(\"./encoder\");\r\nprotobuf.decoder = require(\"./decoder\");\r\nprotobuf.verifier = require(\"./verifier\");\r\nprotobuf.converter = require(\"./converter\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Message = require(\"./message\");\r\nprotobuf.wrappers = require(\"./wrappers\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.util = require(\"./util\");\r\n\r\n// Configure reflection\r\nprotobuf.ReflectionObject._configure(protobuf.Root);\r\nprotobuf.Namespace._configure(protobuf.Type, protobuf.Service);\r\nprotobuf.Root._configure(protobuf.Type);\r\nprotobuf.Field._configure(protobuf.Type);\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/index-light.js\n// module id = 35\n// module chunks = 0","\"use strict\";\r\nvar protobuf = exports;\r\n\r\n/**\r\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\r\n * @name build\r\n * @type {string}\r\n * @const\r\n */\r\nprotobuf.build = \"minimal\";\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = require(\"./writer_buffer\");\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = require(\"./reader_buffer\");\r\n\r\n// Utility\r\nprotobuf.util = require(\"./util/minimal\");\r\nprotobuf.rpc = require(\"./rpc\");\r\nprotobuf.roots = require(\"./roots\");\r\nprotobuf.configure = configure;\r\n\r\n/* istanbul ignore next */\r\n/**\r\n * Reconfigures the library according to the environment.\r\n * @returns {undefined}\r\n */\r\nfunction configure() {\r\n protobuf.Reader._configure(protobuf.BufferReader);\r\n protobuf.util._configure();\r\n}\r\n\r\n// Configure serialization\r\nprotobuf.Writer._configure(protobuf.BufferWriter);\r\nconfigure();\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/index-minimal.js\n// module id = 36\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/base64/index.js\n// module id = 37\n// module chunks = 0","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/eventemitter/index.js\n// module id = 38\n// module chunks = 0","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/float/index.js\n// module id = 39\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/utf8/index.js\n// module id = 40\n// module chunks = 0","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/pool/index.js\n// module id = 41\n// module chunks = 0","\"use strict\";\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(\"../util/minimal\");\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low 32 bits, unsigned\r\n * @param {number} hi High 32 bits, unsigned\r\n */\r\nfunction LongBits(lo, hi) {\r\n\r\n // note that the casts below are theoretically unnecessary as of today, but older statically\r\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo >>> 0;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi >>> 0;\r\n}\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = LongBits.zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Zero hash.\r\n * @memberof util.LongBits\r\n * @type {string}\r\n */\r\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n if (sign)\r\n value = -value;\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.from = function from(value) {\r\n if (typeof value === \"number\")\r\n return LongBits.fromNumber(value);\r\n if (util.isString(value)) {\r\n /* istanbul ignore else */\r\n if (util.Long)\r\n value = util.Long.fromString(value);\r\n else\r\n return LongBits.fromNumber(parseInt(value, 10));\r\n }\r\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBits.prototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n var lo = ~this.lo + 1 >>> 0,\r\n hi = ~this.hi >>> 0;\r\n if (!lo)\r\n hi = hi + 1 >>> 0;\r\n return -(lo + hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBits.prototype.toLong = function toLong(unsigned) {\r\n return util.Long\r\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\r\n /* istanbul ignore next */\r\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n if (hash === zeroHash)\r\n return zero;\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBits.prototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 ,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBits.prototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n return part2 === 0\r\n ? part1 === 0\r\n ? part0 < 16384\r\n ? part0 < 128 ? 1 : 2\r\n : part0 < 2097152 ? 3 : 4\r\n : part1 < 16384\r\n ? part1 < 128 ? 5 : 6\r\n : part1 < 2097152 ? 7 : 8\r\n : part2 < 128 ? 9 : 10;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/util/longbits.js\n// module id = 42\n// module chunks = 0","\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\n// extends Writer\r\nvar Writer = require(\"./writer\");\r\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar Buffer = util.Buffer;\r\n\r\n/**\r\n * Constructs a new buffer writer instance.\r\n * @classdesc Wire format writer using node buffers.\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Buffer} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = util._Buffer_allocUnsafe)(size);\r\n};\r\n\r\nvar writeBytesBuffer = Buffer && Buffer.prototype instanceof Uint8Array && Buffer.prototype.set.name === \"set\"\r\n ? function writeBytesBuffer_set(val, buf, pos) {\r\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\r\n // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n if (val.copy) // Buffer values\r\n val.copy(buf, pos, 0, val.length);\r\n else for (var i = 0; i < val.length;) // plain array values\r\n buf[pos++] = val[i++];\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\r\n if (util.isString(value))\r\n value = util._Buffer_from(value, \"base64\");\r\n var len = value.length >>> 0;\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeBytesBuffer, len, value);\r\n return this;\r\n};\r\n\r\nfunction writeStringBuffer(val, buf, pos) {\r\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\r\n util.utf8.write(val, buf, pos);\r\n else\r\n buf.utf8Write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.string = function write_string_buffer(value) {\r\n var len = Buffer.byteLength(value);\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeStringBuffer, len, value);\r\n return this;\r\n};\r\n\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @name BufferWriter#finish\r\n * @function\r\n * @returns {Buffer} Finished buffer\r\n */\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/writer_buffer.js\n// module id = 43\n// module chunks = 0","\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\n// extends Reader\r\nvar Reader = require(\"./reader\");\r\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\n/**\r\n * Constructs a new buffer reader instance.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n Reader.call(this, buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @name BufferReader#buf\r\n * @type {Buffer}\r\n */\r\n}\r\n\r\n/* istanbul ignore else */\r\nif (util.Buffer)\r\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReader.prototype.string = function read_string_buffer() {\r\n var len = this.uint32(); // modifies pos\r\n return this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len));\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @name BufferReader#bytes\r\n * @function\r\n * @returns {Buffer} Value read\r\n */\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/reader_buffer.js\n// module id = 44\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(\"../util/minimal\");\r\n\r\n// Extends EventEmitter\r\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\r\n\r\n/**\r\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\r\n *\r\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\r\n * @typedef rpc.ServiceMethodCallback\r\n * @template TRes extends Message\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {TRes} [response] Response message\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\r\n * @typedef rpc.ServiceMethod\r\n * @template TReq extends Message\r\n * @template TRes extends Message\r\n * @type {function}\r\n * @param {TReq|Properties} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message\r\n * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined`\r\n */\r\n\r\n/**\r\n * Constructs a new RPC service instance.\r\n * @classdesc An RPC service as returned by {@link Service#create}.\r\n * @exports rpc.Service\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n */\r\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\r\n\r\n if (typeof rpcImpl !== \"function\")\r\n throw TypeError(\"rpcImpl must be a function\");\r\n\r\n util.EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {RPCImpl|null}\r\n */\r\n this.rpcImpl = rpcImpl;\r\n\r\n /**\r\n * Whether requests are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.requestDelimited = Boolean(requestDelimited);\r\n\r\n /**\r\n * Whether responses are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.responseDelimited = Boolean(responseDelimited);\r\n}\r\n\r\n/**\r\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\r\n * @param {Method|rpc.ServiceMethod} method Reflected or static method\r\n * @param {Constructor} requestCtor Request constructor\r\n * @param {Constructor} responseCtor Response constructor\r\n * @param {TReq|Properties} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback} callback Service callback\r\n * @returns {undefined}\r\n * @template TReq extends Message\r\n * @template TRes extends Message\r\n */\r\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\r\n\r\n if (!request)\r\n throw TypeError(\"request must be specified\");\r\n\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\r\n\r\n if (!self.rpcImpl) {\r\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\r\n return undefined;\r\n }\r\n\r\n try {\r\n return self.rpcImpl(\r\n method,\r\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\r\n function rpcCallback(err, response) {\r\n\r\n if (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n\r\n if (response === null) {\r\n self.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n\r\n if (!(response instanceof responseCtor)) {\r\n try {\r\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n }\r\n\r\n self.emit(\"data\", response, method);\r\n return callback(null, response);\r\n }\r\n );\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n setTimeout(function() { callback(err); }, 0);\r\n return undefined;\r\n }\r\n};\r\n\r\n/**\r\n * Ends this service and emits the `end` event.\r\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\r\n * @returns {rpc.Service} `this`\r\n */\r\nService.prototype.end = function end(endedByRPC) {\r\n if (this.rpcImpl) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.rpcImpl(null, null, null);\r\n this.rpcImpl = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/rpc/service.js\n// module id = 45\n// module chunks = 0","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @param {string[]} functionParams Function parameter names\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n */\r\nfunction codegen(functionParams, functionName) {\r\n\r\n /* istanbul ignore if */\r\n if (typeof functionParams === \"string\") {\r\n functionName = functionParams;\r\n functionParams = undefined;\r\n }\r\n\r\n var body = [];\r\n\r\n /**\r\n * Appends code to the function's body or finishes generation.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string|Object.} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any\r\n * @param {...*} [formatParams] Format parameters\r\n * @returns {Codegen|Function} Itself or the generated function if finished\r\n * @throws {Error} If format parameter counts do not match\r\n */\r\n\r\n function Codegen(formatStringOrScope) {\r\n // note that explicit array handling below makes this ~50% faster\r\n\r\n // finish the function\r\n if (typeof formatStringOrScope !== \"string\") {\r\n var source = toString();\r\n if (codegen.verbose)\r\n console.log(\"codegen: \" + source); // eslint-disable-line no-console\r\n source = \"return \" + source;\r\n if (formatStringOrScope) {\r\n var scopeKeys = Object.keys(formatStringOrScope),\r\n scopeParams = new Array(scopeKeys.length + 1),\r\n scopeValues = new Array(scopeKeys.length),\r\n scopeOffset = 0;\r\n while (scopeOffset < scopeKeys.length) {\r\n scopeParams[scopeOffset] = scopeKeys[scopeOffset];\r\n scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]];\r\n }\r\n scopeParams[scopeOffset] = source;\r\n return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func\r\n }\r\n return Function(source)(); // eslint-disable-line no-new-func\r\n }\r\n\r\n // otherwise append to body\r\n var formatParams = new Array(arguments.length - 1),\r\n formatOffset = 0;\r\n while (formatOffset < formatParams.length)\r\n formatParams[formatOffset] = arguments[++formatOffset];\r\n formatOffset = 0;\r\n formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) {\r\n var value = formatParams[formatOffset++];\r\n switch ($1) {\r\n case \"d\": case \"f\": return String(Number(value));\r\n case \"i\": return String(Math.floor(value));\r\n case \"j\": return JSON.stringify(value);\r\n case \"s\": return String(value);\r\n }\r\n return \"%\";\r\n });\r\n if (formatOffset !== formatParams.length)\r\n throw Error(\"parameter count mismatch\");\r\n body.push(formatStringOrScope);\r\n return Codegen;\r\n }\r\n\r\n function toString(functionNameOverride) {\r\n return \"function \" + (functionNameOverride || functionName || \"\") + \"(\" + (functionParams && functionParams.join(\",\") || \"\") + \"){\\n \" + body.join(\"\\n \") + \"\\n}\";\r\n }\r\n\r\n Codegen.toString = toString;\r\n return Codegen;\r\n}\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @function codegen\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * When set to `true`, codegen will log generated code to console. Useful for debugging.\r\n * @name util.codegen.verbose\r\n * @type {boolean}\r\n */\r\ncodegen.verbose = false;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/codegen/index.js\n// module id = 46\n// module chunks = 0","\"use strict\";\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = require(\"@protobufjs/aspromise\"),\r\n inquire = require(\"@protobufjs/inquire\");\r\n\r\nvar fs = inquire(\"fs\");\r\n\r\n/**\r\n * Node-style callback as used by {@link util.fetch}.\r\n * @typedef FetchCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {string} [contents] File contents, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Options as used by {@link util.fetch}.\r\n * @typedef FetchOptions\r\n * @type {Object}\r\n * @property {boolean} [binary=false] Whether expecting a binary response\r\n * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} filename File path or url\r\n * @param {FetchOptions} options Fetch options\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nfunction fetch(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = {};\r\n } else if (!options)\r\n options = {};\r\n\r\n if (!callback)\r\n return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this\r\n\r\n // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.\r\n if (!options.xhr && fs && fs.readFile)\r\n return fs.readFile(filename, function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch.xhr(filename, options, callback)\r\n : err\r\n ? callback(err)\r\n : callback(null, options.binary ? contents : contents.toString(\"utf8\"));\r\n });\r\n\r\n // use the XHR version otherwise.\r\n return fetch.xhr(filename, options, callback);\r\n}\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchOptions} [options] Fetch options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n\r\n/**/\r\nfetch.xhr = function fetch_xhr(filename, options, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n\r\n if (xhr.readyState !== 4)\r\n return undefined;\r\n\r\n // local cors security errors return status 0 / empty string, too. afaik this cannot be\r\n // reliably distinguished from an actually empty file for security reasons. feel free\r\n // to send a pull request if you are aware of a solution.\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n\r\n // if binary data is expected, make sure that some sort of array is returned, even if\r\n // ArrayBuffers are not supported. the binary string fallback, however, is unsafe.\r\n if (options.binary) {\r\n var buffer = xhr.response;\r\n if (!buffer) {\r\n buffer = [];\r\n for (var i = 0; i < xhr.responseText.length; ++i)\r\n buffer.push(xhr.responseText.charCodeAt(i) & 255);\r\n }\r\n return callback(null, typeof Uint8Array !== \"undefined\" ? new Uint8Array(buffer) : buffer);\r\n }\r\n return callback(null, xhr.responseText);\r\n };\r\n\r\n if (options.binary) {\r\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers\r\n if (\"overrideMimeType\" in xhr)\r\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\r\n xhr.responseType = \"arraybuffer\";\r\n }\r\n\r\n xhr.open(\"GET\", filename);\r\n xhr.send();\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/fetch/index.js\n// module id = 47\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * A minimal path module to resolve Unix, Windows and URL paths alike.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar path = exports;\r\n\r\nvar isAbsolute =\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\npath.isAbsolute = function isAbsolute(path) {\r\n return /^(?:\\/|\\w+:)/.test(path);\r\n};\r\n\r\nvar normalize =\r\n/**\r\n * Normalizes the specified path.\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\npath.normalize = function normalize(path) {\r\n path = path.replace(/\\\\/g, \"/\")\r\n .replace(/\\/{2,}/g, \"/\");\r\n var parts = path.split(\"/\"),\r\n absolute = isAbsolute(path),\r\n prefix = \"\";\r\n if (absolute)\r\n prefix = parts.shift() + \"/\";\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === \"..\") {\r\n if (i > 0 && parts[i - 1] !== \"..\")\r\n parts.splice(--i, 2);\r\n else if (absolute)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === \".\")\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join(\"/\");\r\n};\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path to the origin file\r\n * @param {string} includePath Include path relative to origin path\r\n * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the include file\r\n */\r\npath.resolve = function resolve(originPath, includePath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n includePath = normalize(includePath);\r\n if (isAbsolute(includePath))\r\n return includePath;\r\n if (!alreadyNormalized)\r\n originPath = normalize(originPath);\r\n return (originPath = originPath.replace(/(?:\\/|^)[^/]+$/, \"\")).length ? normalize(originPath + \"/\" + includePath) : includePath;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/path/index.js\n// module id = 48\n// module chunks = 0","module.exports = {\"nested\":{\"proto\":{\"nested\":{\"Error\":{\"fields\":{\"code\":{\"type\":\"uint32\",\"id\":1},\"message\":{\"type\":\"string\",\"id\":2}}},\"MethodType\":{\"values\":{\"CONNECT\":0,\"SUBSCRIBE\":1,\"UNSUBSCRIBE\":2,\"PUBLISH\":3,\"PRESENCE\":4,\"PRESENCE_STATS\":5,\"HISTORY\":6,\"PING\":7,\"SEND\":8,\"RPC\":9,\"REFRESH\":10,\"SUB_REFRESH\":11}},\"Command\":{\"fields\":{\"id\":{\"type\":\"uint32\",\"id\":1},\"method\":{\"type\":\"MethodType\",\"id\":2},\"params\":{\"type\":\"bytes\",\"id\":3}}},\"Reply\":{\"fields\":{\"id\":{\"type\":\"uint32\",\"id\":1},\"error\":{\"type\":\"Error\",\"id\":2},\"result\":{\"type\":\"bytes\",\"id\":3}}},\"PushType\":{\"values\":{\"PUBLICATION\":0,\"JOIN\":1,\"LEAVE\":2,\"UNSUB\":3,\"MESSAGE\":4}},\"Push\":{\"fields\":{\"type\":{\"type\":\"PushType\",\"id\":1},\"channel\":{\"type\":\"string\",\"id\":2},\"data\":{\"type\":\"bytes\",\"id\":3}}},\"ClientInfo\":{\"fields\":{\"user\":{\"type\":\"string\",\"id\":1},\"client\":{\"type\":\"string\",\"id\":2},\"connInfo\":{\"type\":\"bytes\",\"id\":3},\"chanInfo\":{\"type\":\"bytes\",\"id\":4}}},\"Publication\":{\"fields\":{\"seq\":{\"type\":\"uint32\",\"id\":1},\"gen\":{\"type\":\"uint32\",\"id\":2},\"uid\":{\"type\":\"string\",\"id\":3},\"data\":{\"type\":\"bytes\",\"id\":4},\"info\":{\"type\":\"ClientInfo\",\"id\":5}}},\"Join\":{\"fields\":{\"info\":{\"type\":\"ClientInfo\",\"id\":1}}},\"Leave\":{\"fields\":{\"info\":{\"type\":\"ClientInfo\",\"id\":1}}},\"Unsub\":{\"fields\":{\"resubscribe\":{\"type\":\"bool\",\"id\":1}}},\"Message\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}},\"ConnectRequest\":{\"fields\":{\"token\":{\"type\":\"string\",\"id\":1},\"data\":{\"type\":\"bytes\",\"id\":2}}},\"ConnectResult\":{\"fields\":{\"client\":{\"type\":\"string\",\"id\":1},\"version\":{\"type\":\"string\",\"id\":2},\"expires\":{\"type\":\"bool\",\"id\":3},\"ttl\":{\"type\":\"uint32\",\"id\":4},\"data\":{\"type\":\"bytes\",\"id\":5}}},\"RefreshRequest\":{\"fields\":{\"token\":{\"type\":\"string\",\"id\":1}}},\"RefreshResult\":{\"fields\":{\"client\":{\"type\":\"string\",\"id\":1},\"version\":{\"type\":\"string\",\"id\":2},\"expires\":{\"type\":\"bool\",\"id\":3},\"ttl\":{\"type\":\"uint32\",\"id\":4}}},\"SubscribeRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1},\"token\":{\"type\":\"string\",\"id\":2},\"recover\":{\"type\":\"bool\",\"id\":3},\"seq\":{\"type\":\"uint32\",\"id\":4},\"gen\":{\"type\":\"uint32\",\"id\":5},\"epoch\":{\"type\":\"string\",\"id\":6}}},\"SubscribeResult\":{\"fields\":{\"expires\":{\"type\":\"bool\",\"id\":1},\"ttl\":{\"type\":\"uint32\",\"id\":2},\"recoverable\":{\"type\":\"bool\",\"id\":3},\"seq\":{\"type\":\"uint32\",\"id\":4},\"gen\":{\"type\":\"uint32\",\"id\":5},\"epoch\":{\"type\":\"string\",\"id\":6},\"publications\":{\"rule\":\"repeated\",\"type\":\"Publication\",\"id\":7},\"recovered\":{\"type\":\"bool\",\"id\":8}}},\"SubRefreshRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1},\"token\":{\"type\":\"string\",\"id\":2}}},\"SubRefreshResult\":{\"fields\":{\"expires\":{\"type\":\"bool\",\"id\":1},\"ttl\":{\"type\":\"uint32\",\"id\":2}}},\"UnsubscribeRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"UnsubscribeResult\":{\"fields\":{}},\"PublishRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1},\"data\":{\"type\":\"bytes\",\"id\":2}}},\"PublishResult\":{\"fields\":{}},\"PresenceRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"PresenceResult\":{\"fields\":{\"presence\":{\"keyType\":\"string\",\"type\":\"ClientInfo\",\"id\":1}}},\"PresenceStatsRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"PresenceStatsResult\":{\"fields\":{\"numClients\":{\"type\":\"uint32\",\"id\":1},\"numUsers\":{\"type\":\"uint32\",\"id\":2}}},\"HistoryRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"HistoryResult\":{\"fields\":{\"publications\":{\"rule\":\"repeated\",\"type\":\"Publication\",\"id\":1}}},\"PingRequest\":{\"fields\":{}},\"PingResult\":{\"fields\":{}},\"RPCRequest\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}},\"RPCResult\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}},\"SendRequest\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}}}}}}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/client.proto.json\n// module id = 49\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/centrifuge.protobuf.min.js b/dist/centrifuge.protobuf.min.js index ac085120..4209d974 100644 --- a/dist/centrifuge.protobuf.min.js +++ b/dist/centrifuge.protobuf.min.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Centrifuge",[],t):"object"==typeof exports?exports.Centrifuge=t():e.Centrifuge=t()}("undefined"!=typeof self?self:this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=32)}([function(e,t,r){"use strict";var n,i,s=e.exports=r(2),o=r(20);s.codegen=r(46),s.fetch=r(47),s.path=r(48),s.fs=s.inquire("fs"),s.toArray=function(e){if(e){for(var t=Object.keys(e),r=new Array(t.length),n=0;n0)},s.Buffer=function(){try{var e=s.inquire("buffer").Buffer;return e.prototype.utf8Write?e:null}catch(e){return null}}(),s._Buffer_from=null,s._Buffer_allocUnsafe=null,s.newBuffer=function(e){return"number"==typeof e?s.Buffer?s._Buffer_allocUnsafe(e):new s.Array(e):s.Buffer?s._Buffer_from(e):"undefined"==typeof Uint8Array?e:new Uint8Array(e)},s.Array="undefined"!=typeof Uint8Array?Uint8Array:Array,s.Long=e.dcodeIO&&e.dcodeIO.Long||s.inquire("long"),s.key2Re=/^true|false|0|1$/,s.key32Re=/^-?(?:0|[1-9][0-9]*)$/,s.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,s.longToHash=function(e){return e?s.LongBits.from(e).toHash():s.LongBits.zeroHash},s.longFromHash=function(e,t){var r=s.LongBits.fromHash(e);return s.Long?s.Long.fromBits(r.lo,r.hi,t):r.toNumber(Boolean(t))},s.merge=n,s.lcFirst=function(e){return e.charAt(0).toLowerCase()+e.substring(1)},s.newError=i,s.ProtocolError=i("ProtocolError"),s.oneOfGetter=function(e){for(var t={},r=0;r-1;--r)if(1===t[e[r]]&&void 0!==this[e[r]]&&null!==this[e[r]])return e[r]}},s.oneOfSetter=function(e){return function(t){for(var r=0;r0&&this._events[e].length>i&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function r(){this.removeListener(e,r),i||(i=!0,t.apply(this,arguments))}if(!n(t))throw TypeError("listener must be a function");var i=!1;return r.listener=t,this.on(e,r),this},r.prototype.removeListener=function(e,t){var r,i,o,u;if(!n(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(r=this._events[e],o=r.length,i=-1,r===t||n(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(s(r)){for(u=o;u-- >0;)if(r[u]===t||r[u].listener&&r[u].listener===t){i=u;break}if(i<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[e],n(r))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){return this._events&&this._events[e]?n(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(n(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,r){"use strict";(function(e){function r(e,t){return 0===e.lastIndexOf(t,0)}function n(e){return void 0!==e&&null!==e&&"function"==typeof e}function i(t,r){if(e.console){var i=e.console[t];n(i)&&i.apply(e.console,r)}}function s(e,t,r){var n=.5*Math.random(),i=Math.min(r,t*Math.pow(2,e+1));return Math.floor((1-n)*i)}function o(e){return"error"in e&&null!==e.error}Object.defineProperty(t,"__esModule",{value:!0}),t.startsWith=r,t.isFunction=n,t.log=i,t.backoff=s,t.errorExists=o}).call(t,r(3))},function(e,t,r){"use strict";function n(e,t){if(e&&e.length){for(var r={},n=0;n=t)return!0;return!1},i.isReservedName=function(e,t){if(e)for(var r=0;r0;){var n=e.shift();if(r.nested&&r.nested[n]){if(!((r=r.nested[n])instanceof i))throw Error("path conflicts with non-namespace objects")}else r.add(r=new i(n))}return t&&r.addJSON(t),r},i.prototype.resolveAll=function(){for(var e=this.nestedArray,t=0;t-1)return n}else if(n instanceof i&&(n=n.lookup(e.slice(1),t,!0)))return n}else for(var s=0;s0&&(u+="&"),u+=encodeURIComponent(c)+"="+encodeURIComponent(r[c]));u.length>0&&(u="?"+u),a.open("POST",t+u,!0),"withCredentials"in a&&(a.withCredentials=!0),a.setRequestHeader("X-Requested-With","XMLHttpRequest"),a.setRequestHeader("Content-Type","application/json");for(var l in n)n.hasOwnProperty(l)&&a.setRequestHeader(l,n[l]);return a.onreadystatechange=function(){if(4===a.readyState)if(200===a.status){var e=void 0,t=!1;try{e=JSON.parse(a.responseText),t=!0}catch(e){s({error:"Invalid JSON. Data was: "+a.responseText,status:200,data:null})}t&&s({data:e,status:200})}else o._log("wrong status code in AJAX response",a.status),s({status:a.status,data:null})},setTimeout(function(){return a.send(JSON.stringify(i))},20),a}},{key:"_log",value:function(){(0,d.log)("info",arguments)}},{key:"_debug",value:function(){!0===this._config.debug&&(0,d.log)("debug",arguments)}},{key:"_websocketSupported",value:function(){return!("function"!=typeof WebSocket&&"object"!==("undefined"==typeof WebSocket?"undefined":u(WebSocket)))}},{key:"_setFormat",value:function(e){if(!this._formatOverride(e)){if("protobuf"===e)throw new Error("not implemented by JSON only Centrifuge client – use client with Protobuf");this._binary=!1,this._methodType=p.JsonMethodType,this._pushType=p.JsonPushType,this._encoder=new p.JsonEncoder,this._decoder=new p.JsonDecoder}}},{key:"_formatOverride",value:function(e){return!1}},{key:"_configure",value:function(t){if(!("Promise"in e))throw new Error("Promise polyfill required");if(Object.assign(this._config,t||{}),this._debug("centrifuge config",this._config),!this._url)throw new Error("url required");if((0,d.startsWith)(this._url,"ws")&&this._url.indexOf("format=protobuf")>-1?this._setFormat("protobuf"):this._setFormat("json"),(0,d.startsWith)(this._url,"http"))if(this._debug("client will try to connect to SockJS endpoint"),null!==this._config.sockjs)this._debug("SockJS explicitly provided in options"),this._sockjs=this._config.sockjs;else{if(void 0===e.SockJS)throw new Error("SockJS not found, use ws:// in url or include SockJS");this._debug("use globally defined SockJS"),this._sockjs=e.SockJS}else this._debug("client will connect to websocket endpoint")}},{key:"_setStatus",value:function(e){this._status!==e&&(this._debug("Status",this._status,"->",e),this._status=e)}},{key:"_isDisconnected",value:function(){return"disconnected"===this._status}},{key:"_isConnecting",value:function(){return"connecting"===this._status}},{key:"_isConnected",value:function(){return"connected"===this._status}},{key:"_nextMessageId",value:function(){return++this._messageId}},{key:"_resetRetry",value:function(){this._debug("reset retries count to 0"),this._retries=0}},{key:"_getRetryInterval",value:function(){var e=(0,d.backoff)(this._retries,this._config.minRetry,this._config.maxRetry);return this._retries+=1,e}},{key:"_abortInflightXHRs",value:function(){for(var e in this._xhrs){try{this._xhrs[e].abort()}catch(e){this._debug("error aborting xhr",e)}delete this._xhrs[e]}}},{key:"_clearConnectedState",value:function(e){this._clientID=null,this._stopPing();for(var t in this._callbacks)if(this._callbacks.hasOwnProperty(t)){var r=this._callbacks[t];clearTimeout(r.timeout);var n=r.errback;if(!n)continue;n({error:this._createErrorObject("disconnected")})}this._callbacks={};for(var i in this._subs)if(this._subs.hasOwnProperty(i)){var s=this._subs[i];e?(s._isSuccess()&&(s._triggerUnsubscribe(),s._recover=!0),s._setSubscribing()):s._setUnsubscribed()}this._abortInflightXHRs(),null!==this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null);for(var o in this._subRefreshTimeouts)this._subRefreshTimeouts.hasOwnProperty(o)&&this._subRefreshTimeouts[o]&&this._clearSubRefreshTimeout(o);this._subRefreshTimeouts={},this._reconnect||(this._subs={})}},{key:"_isTransportOpen",value:function(){return this._isSockjs?this._transport&&this._transport.transport&&this._transport.transport.readyState===this._transport.transport.OPEN:this._transport&&this._transport.readyState===this._transport.OPEN}},{key:"_transportSend",value:function(e){if(!e.length)return!0;if(!this._isTransportOpen()){for(var t in e){var r=t.id;if(r in this._callbacks){var n=this._callbacks[r];clearTimeout(this._callbacks[r].timeout),delete this._callbacks[r];(0,n.errback)({error:this._createErrorObject("connection closed",0)})}}return!1}return this._transport.send(this._encoder.encodeCommands(e)),!0}},{key:"_setupTransport",value:function(){var e=this;if(this._isSockjs=!1,null!==this._sockjs){var t={transports:this._config.sockjsTransports};null!==this._config.sockjsServer&&(t.server=this._config.sockjsServer),this._isSockjs=!0,this._transport=new this._sockjs(this._url,null,t)}else{if(!this._websocketSupported())return void this._debug("No Websocket support and no SockJS configured, can not connect");this._transport=new WebSocket(this._url),!0===this._binary&&(this._transport.binaryType="arraybuffer")}this._transport.onopen=function(){e._transportClosed=!1,e._isSockjs?(e._transportName="sockjs-"+e._transport.transport,e._transport.onheartbeat=function(){return e._restartPing()}):e._transportName="websocket";var t={};(e._token||e._connectData)&&(t.params={}),e._token&&(t.params.token=e._token),e._connectData&&(t.params.data=e._connectData),e._latencyStart=new Date,e._call(t).then(function(t){e._connectResponse(e._decoder.decodeCommandResult(e._methodType.CONNECT,t.result)),t.next&&t.next()},function(t){109===t.error.code&&(e._refreshRequired=!0),e._disconnect("connect error",!0),t.next&&t.next()})},this._transport.onerror=function(t){e._debug("transport level error",t)},this._transport.onclose=function(t){e._transportClosed=!0;var r="connection closed",n=!0;if(t&&"reason"in t&&t.reason)try{var i=JSON.parse(t.reason);e._debug("reason is an advice object",i),r=i.reason,n=i.reconnect}catch(n){r=t.reason,e._debug("reason is a plain string",r)}if(null!==e._config.onTransportClose&&e._config.onTransportClose({event:t,reason:r,reconnect:n}),e._disconnect(r,n),!0===e._reconnect){e._reconnecting=!0;var s=e._getRetryInterval();e._debug("reconnect after "+s+" milliseconds"),setTimeout(function(){!0===e._reconnect&&(e._refreshRequired?e._refresh():e._connect())},s)}},this._transport.onmessage=function(t){e._dataReceived(t.data)}}},{key:"rpc",value:function(e){var t=this,r={method:this._methodType.RPC,params:{data:e}};return this.isConnected()?this._call(r).then(function(e){return e.next&&e.next(),t._decoder.decodeCommandResult(t._methodType.RPC,e.result)},function(e){return e.next&&e.next(),e.error}):Promise.reject(this._createErrorObject("connection closed",0))}},{key:"send",value:function(e){var t={method:this._methodType.SEND,params:{data:e}};return this.isConnected()&&this._transportSend([t])?Promise.resolve({}):Promise.reject(this._createErrorObject("connection closed",0))}},{key:"publish",value:function(e,t){var r={method:this._methodType.PUBLISH,params:{channel:e,data:t}};return this.isConnected()?this._call(r).then(function(e){return e.next&&e.next(),{}}):Promise.reject(this._createErrorObject("connection closed",0))}},{key:"_dataReceived",value:function(e){var t=this,r=this._decoder.decodeReplies(e),n=Promise.resolve();for(var i in r)!function(e){r.hasOwnProperty(e)&&(n=n.then(function(){return t._dispatchReply(r[e])}))}(i);this._restartPing()}},{key:"_call",value:function(e){var t=this;return new Promise(function(r,n){var i=t._addMessage(e);t._registerCall(i,r,n)})}},{key:"_connect",value:function(){if(this.isConnected())return void this._debug("connect called when already connected");"connecting"!==this._status&&(this._debug("start connecting"),this._setStatus("connecting"),this._clientID=null,this._reconnect=!0,this._setupTransport())}},{key:"_disconnect",value:function(e,t){if(!this._isDisconnected()){this._debug("disconnected:",e,t);var r=t||!1;!1===r&&(this._reconnect=!1),this._clearConnectedState(r),this._isDisconnected()||(this._setStatus("disconnected"),this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null),!1===this._reconnecting&&this.emit("disconnect",{reason:e,reconnect:r})),this._transportClosed||this._transport.close()}}},{key:"_refreshFailed",value:function(){this._numRefreshFailed=0,this._isDisconnected()||this._disconnect("refresh failed",!1),null!==this._config.onRefreshFailed&&this._config.onRefreshFailed()}},{key:"_refresh",value:function(){var e=this;if(this._debug("refresh token"),0===this._config.refreshAttempts)return this._debug("refresh attempts set to 0, do not send refresh request at all"),void this._refreshFailed();null!==this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null);var t=this._clientID,r=this._newXHRID(),n=function(n){if(r in e._xhrs&&delete e._xhrs[r],e._clientID===t){if(n.error||200!==n.status){if(n.error?e._debug("error refreshing connection token",n.error):e._debug("error refreshing connection token: wrong status code",n.status),e._numRefreshFailed++,null!==e._refreshTimeout&&(clearTimeout(e._refreshTimeout),e._refreshTimeout=null),null!==e._config.refreshAttempts&&e._numRefreshFailed>=e._config.refreshAttempts)return void e._refreshFailed();var i=Math.round(1e3*Math.random()*Math.max(e._numRefreshFailed,20)),s=e._config.refreshInterval+i;return void(e._refreshTimeout=setTimeout(function(){return e._refresh()},s))}if(e._numRefreshFailed=0,e._token=n.data.token,!e._token)return void e._refreshFailed();if(e._isDisconnected()&&e._reconnect)e._debug("token refreshed, connect from scratch"),e._connect();else{e._debug("send refreshed token");var o={method:e._methodType.REFRESH,params:{token:e._token}};e._call(o).then(function(t){e._refreshResponse(e._decoder.decodeCommandResult(e._methodType.REFRESH,t.result)),t.next&&t.next()},function(t){e._refreshError(t.error),t.next&&t.next()})}}};if(null!==this._config.onRefresh){var i={};this._config.onRefresh(i,n)}else{var s=this._ajax(this._config.refreshEndpoint,this._config.refreshParams,this._config.refreshHeaders,this._config.refreshData,n);this._xhrs[r]=s}}},{key:"_refreshError",value:function(e){var t=this;this._debug("refresh error",e),this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null);var r=this._config.refreshInterval+Math.round(1e3*Math.random());this._refreshTimeout=setTimeout(function(){return t._refresh()},r)}},{key:"_refreshResponse",value:function(e){var t=this;this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null),e.expires&&(this._clientID=e.client,this._refreshTimeout=setTimeout(function(){return t._refresh()},this._getTTLMilliseconds(e.ttl)))}},{key:"_newXHRID",value:function(){return++this._xhrID}},{key:"_subRefresh",value:function(e){var t=this;if(this._debug("refresh subscription token for channel",e),void 0!==this._subRefreshTimeouts[e]){this._clearSubRefreshTimeout(e);var r=this._clientID,n=this._newXHRID(),i=function(i){if(n in t._xhrs&&delete t._xhrs[n],!i.error&&200===i.status&&t._clientID===r){var o={};if(i.data.channels)for(var u in s.channels){var a=i.data.channels[u];a.channel&&(o[a.channel]=a.token)}var c=o[e];if(c){var l={method:t._methodType.SUB_REFRESH,params:{channel:e,token:c}};null!==t._getSub(e)&&t._call(l).then(function(r){t._subRefreshResponse(e,t._decoder.decodeCommandResult(t._methodType.SUB_REFRESH,r.result)),r.next&&r.next()},function(r){t._subRefreshError(e,r.error),r.next&&r.next()})}}},s={client:this._clientID,channels:[e]};if(null!==this._config.onPrivateSubscribe)this._config.onPrivateSubscribe({data:s},i);else{var o=this._ajax(this._config.subscribeEndpoint,this._config.subscribeParams,this._config.subscribeHeaders,s,i);this._xhrs[n]=o}}}},{key:"_clearSubRefreshTimeout",value:function(e){void 0!==this._subRefreshTimeouts[e]&&(clearTimeout(this._subRefreshTimeouts[e]),delete this._subRefreshTimeouts[e])}},{key:"_subRefreshError",value:function(e,t){var r=this;if(this._debug("subscription refresh error",e,t),this._clearSubRefreshTimeout(e),null!==this._getSub(e)){var n=Math.round(1e3*Math.random()),i=setTimeout(function(){return r._subRefresh(e)},this._config.subRefreshInterval+n);this._subRefreshTimeouts[e]=i}}},{key:"_subRefreshResponse",value:function(e,t){var r=this;if(this._debug("subscription refresh success",e),this._clearSubRefreshTimeout(e),null!==this._getSub(e)&&!0===t.expires){var n=setTimeout(function(){return r._subRefresh(e)},this._getTTLMilliseconds(t.ttl));this._subRefreshTimeouts[e]=n}}},{key:"_subscribe",value:function(e,t){var r=this;this._debug("subscribing on",e.channel);var n=e.channel;if(n in this._subs||(this._subs[n]=e),!this.isConnected())return void e._setNew();e._setSubscribing(t);var i={method:this._methodType.SUBSCRIBE,params:{channel:n}};if((0,d.startsWith)(n,this._config.privateChannelPrefix))this._isSubscribeBatching?this._privateChannels[n]=!0:(this.startSubscribeBatching(),this._subscribe(e),this.stopSubscribeBatching());else{if(!0===e._needRecover()){i.params.recover=!0;var s=this._getLastSeq(n);s&&(i.params.seq=s);var o=this._getLastGen(n);o&&(i.params.gen=o);var u=this._getLastEpoch(n);u&&(i.params.epoch=u)}this._call(i).then(function(e){r._subscribeResponse(n,r._decoder.decodeCommandResult(r._methodType.SUBSCRIBE,e.result)),e.next&&e.next()},function(e){r._subscribeError(n,e.error),e.next&&e.next()})}}},{key:"_unsubscribe",value:function(e){this.isConnected()&&this._addMessage({method:this._methodType.UNSUBSCRIBE,params:{channel:e.channel}})}},{key:"_getTTLMilliseconds",value:function(e){return Math.min(1e3*e,2147483647)}},{key:"getSub",value:function(e){return this._getSub(e)}},{key:"_getSub",value:function(e){var t=this._subs[e];return t||null}},{key:"_connectResponse",value:function(e){var t=this,r=this._reconnecting;if(this._reconnecting=!1,this._resetRetry(),this._refreshRequired=!1,!this.isConnected()){null!==this._latencyStart&&(this._latency=(new Date).getTime()-this._latencyStart.getTime(),this._latencyStart=null),this._clientID=e.client,this._setStatus("connected"),this._refreshTimeout&&clearTimeout(this._refreshTimeout),e.expires&&(this._refreshTimeout=setTimeout(function(){return t._refresh()},this._getTTLMilliseconds(e.ttl))),this.startBatching(),this.startSubscribeBatching();for(var n in this._subs)if(this._subs.hasOwnProperty(n)){var i=this._subs[n];i._shouldResubscribe()&&this._subscribe(i,r)}this.stopSubscribeBatching(),this.stopBatching(),this._startPing();var s={client:e.client,transport:this._transportName,latency:this._latency};e.data&&(s.data=e.data),this.emit("connect",s)}}},{key:"_stopPing",value:function(){null!==this._pongTimeout&&(clearTimeout(this._pongTimeout),this._pongTimeout=null),null!==this._pingTimeout&&(clearTimeout(this._pingTimeout),this._pingTimeout=null)}},{key:"_startPing",value:function(){var e=this;!0!==this._config.ping||this._config.pingInterval<=0||this.isConnected()&&(this._pingTimeout=setTimeout(function(){if(!e.isConnected())return void e._stopPing();e.ping(),e._pongTimeout=setTimeout(function(){e._disconnect("no ping",!0)},e._config.pongWaitTimeout)},this._config.pingInterval))}},{key:"_restartPing",value:function(){this._stopPing(),this._startPing()}},{key:"_subscribeError",value:function(e,t){var r=this._getSub(e);if(r&&r._isSubscribing())return 0===t.code&&"timeout"===t.message?void this._disconnect("timeout",!0):void r._setSubscribeError(t)}},{key:"_subscribeResponse",value:function(e,t){var r=this,n=this._getSub(e);if(n&&n._isSubscribing()){var i=!1;"recovered"in t&&(i=t.recovered),n._setSubscribeSuccess(i);var s=t.publications;if(s&&s.length>0){s=s.reverse();for(var o in s)s.hasOwnProperty(o)&&this._handlePublication(e,s[o])}else t.recoverable&&(this._lastSeq[e]=t.seq||0,this._lastGen[e]=t.gen||0);if(this._lastEpoch[e]=t.epoch||"",t.recoverable&&(n._recoverable=!0),!0===t.expires){var u=setTimeout(function(){return r._subRefresh(e)},this._getTTLMilliseconds(t.ttl));this._subRefreshTimeouts[e]=u}}}},{key:"_handleReply",value:function(e,t){var r=e.id,n=e.result;if(!(r in this._callbacks))return void t();var i=this._callbacks[r];if(clearTimeout(this._callbacks[r].timeout),delete this._callbacks[r],(0,d.errorExists)(e)){var s=i.errback;if(!s)return void t();s({error:e.error,next:t})}else{var o=i.callback;if(!o)return;o({result:n,next:t})}}},{key:"_handleJoin",value:function(e,t){var r=this._getSub(e);r&&r.emit("join",t)}},{key:"_handleLeave",value:function(e,t){var r=this._getSub(e);r&&r.emit("leave",t)}},{key:"_handleUnsub",value:function(e,t){var r=this._getSub(e);r&&(r.unsubscribe(),!0===t.resubscribe&&r.subscribe())}},{key:"_handlePublication",value:function(e,t){var r=this._getSub(e);r&&(void 0!==t.seq&&(this._lastSeq[e]=t.seq),void 0!==t.gen&&(this._lastGen[e]=t.gen),r.emit("publish",t))}},{key:"_handleMessage",value:function(e){this.emit("message",e.data)}},{key:"_handlePush",value:function(e,t){var r=this._decoder.decodePush(e),n=0;"type"in r&&(n=r.type);var i=r.channel;if(n===this._pushType.PUBLICATION){var s=this._decoder.decodePushData(this._pushType.PUBLICATION,r.data);this._handlePublication(i,s)}else if(n===this._pushType.MESSAGE){var o=this._decoder.decodePushData(this._pushType.MESSAGE,r.data);this._handleMessage(o)}else if(n===this._pushType.JOIN){var u=this._decoder.decodePushData(this._pushType.JOIN,r.data);this._handleJoin(i,u)}else if(n===this._pushType.LEAVE){var a=this._decoder.decodePushData(this._pushType.LEAVE,r.data);this._handleLeave(i,a)}else if(n===this._pushType.UNSUB){var c=this._decoder.decodePushData(this._pushType.UNSUB,r.data);this._handleUnsub(i,c)}t()}},{key:"_dispatchReply",value:function(e){var t,r=new Promise(function(e){t=e});if(void 0===e||null===e)return this._debug("dispatch: got undefined or null reply"),t(),r;var n=e.id;return n&&n>0?this._handleReply(e,t):this._handlePush(e.result,t),r}},{key:"_flush",value:function(){var e=this._messages.slice(0);this._messages=[],this._transportSend(e)}},{key:"_ping",value:function(){var e=this,t={method:this._methodType.PING};this._call(t).then(function(t){e._pingResponse(e._decoder.decodeCommandResult(e._methodType.PING,t.result)),t.next&&t.next()},function(t){e._debug("ping error",t.error),t.next&&t.next()})}},{key:"_pingResponse",value:function(e){this.isConnected()&&(this._stopPing(),this._startPing())}},{key:"_getLastSeq",value:function(e){var t=this._lastSeq[e];return t||0}},{key:"_getLastGen",value:function(e){var t=this._lastGen[e];return t||0}},{key:"_getLastEpoch",value:function(e){var t=this._lastEpoch[e];return t||""}},{key:"_createErrorObject",value:function(e,t){return{message:e,code:t||0}}},{key:"_registerCall",value:function(e,t,r){var n=this;this._callbacks[e]={callback:t,errback:r,timeout:null},this._callbacks[e].timeout=setTimeout(function(){delete n._callbacks[e],(0,d.isFunction)(r)&&r({error:n._createErrorObject("timeout")})},this._config.timeout)}},{key:"_addMessage",value:function(e){var t=this._nextMessageId();return e.id=t,!0===this._isBatching?this._messages.push(e):this._transportSend([e]),t}},{key:"isConnected",value:function(){return this._isConnected()}},{key:"connect",value:function(){this._connect()}},{key:"disconnect",value:function(){this._disconnect("client",!1)}},{key:"ping",value:function(){return this._ping()}},{key:"startBatching",value:function(){this._isBatching=!0}},{key:"stopBatching",value:function(){this._isBatching=!1,this._flush()}},{key:"startSubscribeBatching",value:function(){this._isSubscribeBatching=!0}},{key:"stopSubscribeBatching",value:function(){var e=this;this._isSubscribeBatching=!1;var t=this._privateChannels;this._privateChannels={};var r=[];for(var n in t)if(t.hasOwnProperty(n)){var i=this._getSub(n);if(!i)continue;r.push(n)}if(0===r.length)return void this._debug("no private channels found, no need to make request");var s={client:this._clientID,channels:r},o=this._clientID,u=this._newXHRID(),a=function(t){if(u in e._xhrs&&delete e._xhrs[u],e._clientID===o)if(t.error||200!==t.status){e._debug("authorization request failed");for(var n in r)if(r.hasOwnProperty(n)){var i=r[n];e._subscribeError(i,e._createErrorObject("authorization request failed"))}}else{var s={};if(t.data.channels)for(var a in t.data.channels){var c=t.data.channels[a];c.channel&&(s[c.channel]=c.token)}var l=!1;e._isBatching||(e.startBatching(),l=!0);for(var h in r)if(r.hasOwnProperty(h)){var f=function(){var t=r[h],n=s[t];if(!n)return e._subscribeError(t,e._createErrorObject("permission denied",103)),"continue";var i={method:e._methodType.SUBSCRIBE,params:{channel:t,token:n}},o=e._getSub(t);if(null===o)return"continue";if(!0===o._needRecover()){i.params.recover=!0;var u=e._getLastSeq(t);u&&(i.params.seq=u);var a=e._getLastGen(t);a&&(i.params.gen=a);var c=e._getLastEpoch(t);c&&(i.params.epoch=c)}e._call(i).then(function(r){e._subscribeResponse(t,e._decoder.decodeCommandResult(e._methodType.SUBSCRIBE,r.result)),r.next&&r.next()},function(r){e._subscribeError(t,r.error),r.next&&r.next()})}();if("continue"===f)continue}l&&e.stopBatching()}};if(null!==this._config.onPrivateSubscribe)this._config.onPrivateSubscribe({data:s},a);else{var c=this._ajax(this._config.subscribeEndpoint,this._config.subscribeParams,this._config.subscribeHeaders,s,a);this._xhrs[u]=c}}},{key:"subscribe",value:function(e,t){var r=this._getSub(e);if(null!==r)return r._setEvents(t),r._isUnsubscribed()&&r.subscribe(),r;var n=new f.default(this,e,t);return this._subs[e]=n,n.subscribe(),n}}]),r}(l.default)}).call(t,r(3))},function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r127;)t[r++]=127&e|128,e>>>=7;t[r]=e}function c(e,t){this.len=e,this.next=void 0,this.val=t}function l(e,t,r){for(;e.hi;)t[r++]=127&e.lo|128,e.lo=(e.lo>>>7|e.hi<<25)>>>0,e.hi>>>=7;for(;e.lo>127;)t[r++]=127&e.lo|128,e.lo=e.lo>>>7;t[r++]=e.lo}function h(e,t,r){t[r]=255&e,t[r+1]=e>>>8&255,t[r+2]=e>>>16&255,t[r+3]=e>>>24}e.exports=o;var f,p=r(2),d=p.LongBits,y=p.base64,v=p.utf8;o.create=p.Buffer?function(){return(o.create=function(){return new f})()}:function(){return new o},o.alloc=function(e){return new p.Array(e)},p.Array!==Array&&(o.alloc=p.pool(o.alloc,p.Array.prototype.subarray)),o.prototype._push=function(e,t,r){return this.tail=this.tail.next=new n(e,t,r),this.len+=t,this},c.prototype=Object.create(n.prototype),c.prototype.fn=a,o.prototype.uint32=function(e){return this.len+=(this.tail=this.tail.next=new c((e>>>=0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this},o.prototype.int32=function(e){return e<0?this._push(l,10,d.fromNumber(e)):this.uint32(e)},o.prototype.sint32=function(e){return this.uint32((e<<1^e>>31)>>>0)},o.prototype.uint64=function(e){var t=d.from(e);return this._push(l,t.length(),t)},o.prototype.int64=o.prototype.uint64,o.prototype.sint64=function(e){var t=d.from(e).zzEncode();return this._push(l,t.length(),t)},o.prototype.bool=function(e){return this._push(u,1,e?1:0)},o.prototype.fixed32=function(e){return this._push(h,4,e>>>0)},o.prototype.sfixed32=o.prototype.fixed32,o.prototype.fixed64=function(e){var t=d.from(e);return this._push(h,4,t.lo)._push(h,4,t.hi)},o.prototype.sfixed64=o.prototype.fixed64,o.prototype.float=function(e){return this._push(p.float.writeFloatLE,4,e)},o.prototype.double=function(e){return this._push(p.float.writeDoubleLE,8,e)};var m=p.Array.prototype.set?function(e,t,r){t.set(e,r)}:function(e,t,r){for(var n=0;n>>0;if(!t)return this._push(u,1,0);if(p.isString(e)){var r=o.alloc(t=y.length(e));y.decode(e,r,0),e=r}return this.uint32(t)._push(m,t,e)},o.prototype.string=function(e){var t=v.length(e);return t?this.uint32(t)._push(v.write,t,e):this._push(u,1,0)},o.prototype.fork=function(){return this.states=new s(this),this.head=this.tail=new n(i,0,0),this.len=0,this},o.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new n(i,0,0),this.len=0),this},o.prototype.ldelim=function(){var e=this.head,t=this.tail,r=this.len;return this.reset().uint32(r),r&&(this.tail.next=e.next,this.tail=t,this.len+=r),this},o.prototype.finish=function(){for(var e=this.head.next,t=this.constructor.alloc(this.len),r=0;e;)e.fn(e.val,t,r),r+=e.len,e=e.next;return t},o._configure=function(e){f=e}},function(e,t,r){"use strict";function n(e,t){return RangeError("index out of range: "+e.pos+" + "+(t||1)+" > "+e.len)}function i(e){this.buf=e,this.pos=0,this.len=e.length}function s(){var e=new l(0,0),t=0;if(!(this.len-this.pos>4)){for(;t<3;++t){if(this.pos>=this.len)throw n(this);if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(127&this.buf[this.pos++])<<7*t)>>>0,e}for(;t<4;++t)if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(127&this.buf[this.pos])<<28)>>>0,e.hi=(e.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return e;if(t=0,this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw n(this);if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}function o(e,t){return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0}function u(){if(this.pos+8>this.len)throw n(this,8);return new l(o(this.buf,this.pos+=4),o(this.buf,this.pos+=4))}e.exports=i;var a,c=r(2),l=c.LongBits,h=c.utf8,f="undefined"!=typeof Uint8Array?function(e){if(e instanceof Uint8Array||Array.isArray(e))return new i(e);throw Error("illegal buffer")}:function(e){if(Array.isArray(e))return new i(e);throw Error("illegal buffer")};i.create=c.Buffer?function(e){return(i.create=function(e){return c.Buffer.isBuffer(e)?new a(e):f(e)})(e)}:f,i.prototype._slice=c.Array.prototype.subarray||c.Array.prototype.slice,i.prototype.uint32=function(){var e=4294967295;return function(){if(e=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128)return e;if(e=(e|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)return e;if(e=(e|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)return e;if(e=(e|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)return e;if(e=(e|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128)return e;if((this.pos+=5)>this.len)throw this.pos=this.len,n(this,10);return e}}(),i.prototype.int32=function(){return 0|this.uint32()},i.prototype.sint32=function(){var e=this.uint32();return e>>>1^-(1&e)|0},i.prototype.bool=function(){return 0!==this.uint32()},i.prototype.fixed32=function(){if(this.pos+4>this.len)throw n(this,4);return o(this.buf,this.pos+=4)},i.prototype.sfixed32=function(){if(this.pos+4>this.len)throw n(this,4);return 0|o(this.buf,this.pos+=4)},i.prototype.float=function(){if(this.pos+4>this.len)throw n(this,4);var e=c.float.readFloatLE(this.buf,this.pos);return this.pos+=4,e},i.prototype.double=function(){if(this.pos+8>this.len)throw n(this,4);var e=c.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,e},i.prototype.bytes=function(){var e=this.uint32(),t=this.pos,r=this.pos+e;if(r>this.len)throw n(this,e);return this.pos+=e,Array.isArray(this.buf)?this.buf.slice(t,r):t===r?new this.buf.constructor(0):this._slice.call(this.buf,t,r)},i.prototype.string=function(){var e=this.bytes();return h.read(e,0,e.length)},i.prototype.skip=function(e){if("number"==typeof e){if(this.pos+e>this.len)throw n(this,e);this.pos+=e}else do{if(this.pos>=this.len)throw n(this)}while(128&this.buf[this.pos++]);return this},i.prototype.skipType=function(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;;){if(4==(e=7&this.uint32()))break;this.skipType(e)}break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+e+" at offset "+this.pos)}return this},i._configure=function(e){a=e;var t=c.Long?"toLong":"toNumber";c.merge(i.prototype,{int64:function(){return s.call(this)[t](!1)},uint64:function(){return s.call(this)[t](!0)},sint64:function(){return s.call(this).zzDecode()[t](!1)},fixed64:function(){return u.call(this)[t](!0)},sfixed64:function(){return u.call(this)[t](!1)}})}},function(e,t,r){"use strict";function n(e,t,r,n){if(Array.isArray(t)||(r=t,t=void 0),s.call(this,e,r),void 0!==t&&!Array.isArray(t))throw TypeError("fieldNames must be an Array");this.oneof=t||[],this.fieldsArray=[],this.comment=n}function i(e){if(e.parent)for(var t=0;t-1&&this.oneof.splice(t,1),e.partOf=null,this},n.prototype.onAdd=function(e){s.prototype.onAdd.call(this,e);for(var t=this,r=0;r>>0,(t.id<<3|4)>>>0):e("types[%i].encode(%s,w.uint32(%i).fork()).ldelim()",r,n,(t.id<<3|2)>>>0)}function i(e){for(var t,r,i=u.codegen(["m","w"],e.name+"$encode")("if(!w)")("w=Writer.create()"),a=e.fieldsArray.slice().sort(u.compareFieldsById),t=0;t>>0,8|o.mapKey[c.keyType],c.keyType),void 0===f?i("types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()",l,r):i(".uint32(%i).%s(%s[ks[i]]).ldelim()",16|f,h,r),i("}")("}")):c.repeated?(i("if(%s!=null&&%s.length){",r,r),c.packed&&void 0!==o.packed[h]?i("w.uint32(%i).fork()",(c.id<<3|2)>>>0)("for(var i=0;i<%s.length;++i)",r)("w.%s(%s[i])",h,r)("w.ldelim()"):(i("for(var i=0;i<%s.length;++i)",r),void 0===f?n(i,c,l,r+"[i]"):i("w.uint32(%i).%s(%s[i])",(c.id<<3|f)>>>0,h,r)),i("}")):(c.optional&&i("if(%s!=null&&m.hasOwnProperty(%j))",r,c.name),void 0===f?n(i,c,l,r):i("w.uint32(%i).%s(%s)",(c.id<<3|f)>>>0,h,r))}return i("return w")}e.exports=i;var s=r(1),o=r(9),u=r(0)},function(e,t,r){"use strict";function n(e,t){s.call(this,e,t),this.fields={},this.oneofs=void 0,this.extensions=void 0,this.reserved=void 0,this.group=void 0,this._fieldsById=null,this._fieldsArray=null,this._oneofsArray=null,this._ctor=null}function i(e){return e._fieldsById=e._fieldsArray=e._oneofsArray=null,delete e.encode,delete e.decode,delete e.verify,e}e.exports=n;var s=r(8);((n.prototype=Object.create(s.prototype)).constructor=n).className="Type";var o=r(1),u=r(15),a=r(5),c=r(23),l=r(24),h=r(16),f=r(14),p=r(13),d=r(0),y=r(21),v=r(26),m=r(27),_=r(28),b=r(29);Object.defineProperties(n.prototype,{fieldsById:{get:function(){if(this._fieldsById)return this._fieldsById;this._fieldsById={};for(var e=Object.keys(this.fields),t=0;t>>3){");for(var r=0;r>>0",n,n);break;case"int32":case"sint32":case"sfixed32":e("m%s=d%s|0",n,n);break;case"uint64":a=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":e("if(util.Long)")("(m%s=util.Long.fromValue(d%s)).unsigned=%j",n,n,a)('else if(typeof d%s==="string")',n)("m%s=parseInt(d%s,10)",n,n)('else if(typeof d%s==="number")',n)("m%s=d%s",n,n)('else if(typeof d%s==="object")',n)("m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)",n,n,n,a?"true":"");break;case"bytes":e('if(typeof d%s==="string")',n)("util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)",n,n,n)("else if(d%s.length)",n)("m%s=d%s",n,n);break;case"string":e("m%s=String(d%s)",n,n);break;case"bool":e("m%s=Boolean(d%s)",n,n)}}return e}function i(e,t,r,n){if(t.resolvedType)t.resolvedType instanceof o?e("d%s=o.enums===String?types[%i].values[m%s]:m%s",n,r,n,n):e("d%s=types[%i].toObject(m%s,o)",n,r,n);else{var i=!1;switch(t.type){case"double":case"float":e("d%s=o.json&&!isFinite(m%s)?String(m%s):m%s",n,n,n,n);break;case"uint64":i=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":e('if(typeof m%s==="number")',n)("d%s=o.longs===String?String(m%s):m%s",n,n,n)("else")("d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low>>>0,m%s.high>>>0).toNumber(%s):m%s",n,n,n,n,i?"true":"",n);break;case"bytes":e("d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s",n,n,n,n,n);break;default:e("d%s=m%s",n,n)}}return e}var s=t,o=r(1),u=r(0);s.fromObject=function(e){var t=e.fieldsArray,r=u.codegen(["d"],e.name+"$fromObject")("if(d instanceof this.ctor)")("return d");if(!t.length)return r("return new this.ctor");r("var m=new this.ctor");for(var i=0;i-1){var i=e.substring(r);i in c&&(e=i)}if(!(l.files.indexOf(e)>-1)){if(l.files.push(e),e in c)return void(h?o(e,c[e]):(++f,setTimeout(function(){--f,o(e,c[e])})));if(h){var u;try{u=p.fs.readFileSync(e).toString("utf8")}catch(e){return void(t||s(e))}o(e,u)}else++f,p.fetch(e,function(r,i){if(--f,n)return r?void(t?f||s(null,l):s(r)):void o(e,i)})}}"function"==typeof r&&(n=r,r=void 0);var l=this;if(!n)return p.asPromise(e,l,t,r);var h=n===i,f=0;p.isString(t)&&(t=[t]);for(var d,y=0;y-1&&this.deferred.splice(t,1)}}else if(e instanceof h)d.test(e.name)&&delete e.parent[e.name];else if(e instanceof o){for(var r=0;r1&&"="===e.charAt(t);)++r;return Math.ceil(3*e.length)/4-r};for(var i=new Array(64),s=new Array(123),o=0;o<64;)s[i[o]=o<26?o+65:o<52?o+71:o<62?o-4:o-59|43]=o++;n.encode=function(e,t,r){for(var n,s=null,o=[],u=0,a=0;t>2],n=(3&c)<<4,a=1;break;case 1:o[u++]=i[n|c>>4],n=(15&c)<<2,a=2;break;case 2:o[u++]=i[n|c>>6],o[u++]=i[63&c],a=0}u>8191&&((s||(s=[])).push(String.fromCharCode.apply(String,o)),u=0)}return a&&(o[u++]=i[n],o[u++]=61,1===a&&(o[u++]=61)),s?(u&&s.push(String.fromCharCode.apply(String,o.slice(0,u))),s.join("")):String.fromCharCode.apply(String,o.slice(0,u))};n.decode=function(e,t,r){for(var n,i=r,o=0,u=0;u1)break;if(void 0===(a=s[a]))throw Error("invalid encoding");switch(o){case 0:n=a,o=1;break;case 1:t[r++]=n<<2|(48&a)>>4,n=a,o=2;break;case 2:t[r++]=(15&n)<<4|(60&a)>>2,n=a,o=3;break;case 3:t[r++]=(3&n)<<6|a,o=0}}if(1===o)throw Error("invalid encoding");return r-i},n.test=function(e){return/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(e)}},function(e,t,r){"use strict";function n(){this._listeners={}}e.exports=n,n.prototype.on=function(e,t,r){return(this._listeners[e]||(this._listeners[e]=[])).push({fn:t,ctx:r||this}),this},n.prototype.off=function(e,t){if(void 0===e)this._listeners={};else if(void 0===t)this._listeners[e]=[];else for(var r=this._listeners[e],n=0;n0?0:2147483648,r,n);else if(isNaN(t))e(2143289344,r,n);else if(t>3.4028234663852886e38)e((i<<31|2139095040)>>>0,r,n);else if(t<1.1754943508222875e-38)e((i<<31|Math.round(t/1.401298464324817e-45))>>>0,r,n);else{var s=Math.floor(Math.log(t)/Math.LN2),o=8388607&Math.round(t*Math.pow(2,-s)*8388608);e((i<<31|s+127<<23|o)>>>0,r,n)}}function r(e,t,r){var n=e(t,r),i=2*(n>>31)+1,s=n>>>23&255,o=8388607&n;return 255===s?o?NaN:i*(1/0):0===s?1.401298464324817e-45*i*o:i*Math.pow(2,s-150)*(o+8388608)}e.writeFloatLE=t.bind(null,i),e.writeFloatBE=t.bind(null,s),e.readFloatLE=r.bind(null,o),e.readFloatBE=r.bind(null,u)}(),"undefined"!=typeof Float64Array?function(){function t(e,t,r){s[0]=e,t[r]=o[0],t[r+1]=o[1],t[r+2]=o[2],t[r+3]=o[3],t[r+4]=o[4],t[r+5]=o[5],t[r+6]=o[6],t[r+7]=o[7]}function r(e,t,r){s[0]=e,t[r]=o[7],t[r+1]=o[6],t[r+2]=o[5],t[r+3]=o[4],t[r+4]=o[3],t[r+5]=o[2],t[r+6]=o[1],t[r+7]=o[0]}function n(e,t){return o[0]=e[t],o[1]=e[t+1],o[2]=e[t+2],o[3]=e[t+3],o[4]=e[t+4],o[5]=e[t+5],o[6]=e[t+6],o[7]=e[t+7],s[0]}function i(e,t){return o[7]=e[t],o[6]=e[t+1],o[5]=e[t+2],o[4]=e[t+3],o[3]=e[t+4],o[2]=e[t+5],o[1]=e[t+6],o[0]=e[t+7],s[0]}var s=new Float64Array([-0]),o=new Uint8Array(s.buffer),u=128===o[7];e.writeDoubleLE=u?t:r,e.writeDoubleBE=u?r:t,e.readDoubleLE=u?n:i,e.readDoubleBE=u?i:n}():function(){function t(e,t,r,n,i,s){var o=n<0?1:0;if(o&&(n=-n),0===n)e(0,i,s+t),e(1/n>0?0:2147483648,i,s+r);else if(isNaN(n))e(0,i,s+t),e(2146959360,i,s+r);else if(n>1.7976931348623157e308)e(0,i,s+t),e((o<<31|2146435072)>>>0,i,s+r);else{var u;if(n<2.2250738585072014e-308)u=n/5e-324,e(u>>>0,i,s+t),e((o<<31|u/4294967296)>>>0,i,s+r);else{var a=Math.floor(Math.log(n)/Math.LN2);1024===a&&(a=1023),u=n*Math.pow(2,-a),e(4503599627370496*u>>>0,i,s+t),e((o<<31|a+1023<<20|1048576*u&1048575)>>>0,i,s+r)}}}function r(e,t,r,n,i){var s=e(n,i+t),o=e(n,i+r),u=2*(o>>31)+1,a=o>>>20&2047,c=4294967296*(1048575&o)+s;return 2047===a?c?NaN:u*(1/0):0===a?5e-324*u*c:u*Math.pow(2,a-1075)*(c+4503599627370496)}e.writeDoubleLE=t.bind(null,i,0,4),e.writeDoubleBE=t.bind(null,s,4,0),e.readDoubleLE=r.bind(null,o,0,4),e.readDoubleBE=r.bind(null,u,4,0)}(),e}function i(e,t,r){t[r]=255&e,t[r+1]=e>>>8&255,t[r+2]=e>>>16&255,t[r+3]=e>>>24}function s(e,t,r){t[r]=e>>>24,t[r+1]=e>>>16&255,t[r+2]=e>>>8&255,t[r+3]=255&e}function o(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}function u(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}e.exports=n(n)},function(e,t,r){"use strict";var n=t;n.length=function(e){for(var t=0,r=0,n=0;n191&&n<224?s[o++]=(31&n)<<6|63&e[t++]:n>239&&n<365?(n=((7&n)<<18|(63&e[t++])<<12|(63&e[t++])<<6|63&e[t++])-65536,s[o++]=55296+(n>>10),s[o++]=56320+(1023&n)):s[o++]=(15&n)<<12|(63&e[t++])<<6|63&e[t++],o>8191&&((i||(i=[])).push(String.fromCharCode.apply(String,s)),o=0);return i?(o&&i.push(String.fromCharCode.apply(String,s.slice(0,o))),i.join("")):String.fromCharCode.apply(String,s.slice(0,o))},n.write=function(e,t,r){for(var n,i,s=r,o=0;o>6|192,t[r++]=63&n|128):55296==(64512&n)&&56320==(64512&(i=e.charCodeAt(o+1)))?(n=65536+((1023&n)<<10)+(1023&i),++o,t[r++]=n>>18|240,t[r++]=n>>12&63|128,t[r++]=n>>6&63|128,t[r++]=63&n|128):(t[r++]=n>>12|224,t[r++]=n>>6&63|128,t[r++]=63&n|128);return r-s}},function(e,t,r){"use strict";function n(e,t,r){var n=r||8192,i=n>>>1,s=null,o=n;return function(r){if(r<1||r>i)return e(r);o+r>n&&(s=e(n),o=0);var u=t.call(s,o,o+=r);return 7&o&&(o=1+(7|o)),u}}e.exports=n},function(e,t,r){"use strict";function n(e,t){this.lo=e>>>0,this.hi=t>>>0}e.exports=n;var i=r(2),s=n.zero=new n(0,0);s.toNumber=function(){return 0},s.zzEncode=s.zzDecode=function(){return this},s.length=function(){return 1};var o=n.zeroHash="\0\0\0\0\0\0\0\0";n.fromNumber=function(e){if(0===e)return s;var t=e<0;t&&(e=-e);var r=e>>>0,i=(e-r)/4294967296>>>0;return t&&(i=~i>>>0,r=~r>>>0,++r>4294967295&&(r=0,++i>4294967295&&(i=0))),new n(r,i)},n.from=function(e){if("number"==typeof e)return n.fromNumber(e);if(i.isString(e)){if(!i.Long)return n.fromNumber(parseInt(e,10));e=i.Long.fromString(e)}return e.low||e.high?new n(e.low>>>0,e.high>>>0):s},n.prototype.toNumber=function(e){if(!e&&this.hi>>>31){var t=1+~this.lo>>>0,r=~this.hi>>>0;return t||(r=r+1>>>0),-(t+4294967296*r)}return this.lo+4294967296*this.hi},n.prototype.toLong=function(e){return i.Long?new i.Long(0|this.lo,0|this.hi,Boolean(e)):{low:0|this.lo,high:0|this.hi,unsigned:Boolean(e)}};var u=String.prototype.charCodeAt;n.fromHash=function(e){return e===o?s:new n((u.call(e,0)|u.call(e,1)<<8|u.call(e,2)<<16|u.call(e,3)<<24)>>>0,(u.call(e,4)|u.call(e,5)<<8|u.call(e,6)<<16|u.call(e,7)<<24)>>>0)},n.prototype.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},n.prototype.zzEncode=function(){var e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this},n.prototype.zzDecode=function(){var e=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this},n.prototype.length=function(){var e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,r=this.hi>>>24;return 0===r?0===t?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:r<128?9:10}},function(e,t,r){"use strict";function n(){s.call(this)}function i(e,t,r){e.length<40?o.utf8.write(e,t,r):t.utf8Write(e,r)}e.exports=n;var s=r(13);(n.prototype=Object.create(s.prototype)).constructor=n;var o=r(2),u=o.Buffer;n.alloc=function(e){return(n.alloc=o._Buffer_allocUnsafe)(e)};var a=u&&u.prototype instanceof Uint8Array&&"set"===u.prototype.set.name?function(e,t,r){t.set(e,r)}:function(e,t,r){if(e.copy)e.copy(t,r,0,e.length);else for(var n=0;n>>0;return this.uint32(t),t&&this._push(a,t,e),this},n.prototype.string=function(e){var t=u.byteLength(e);return this.uint32(t),t&&this._push(i,t,e),this}},function(e,t,r){"use strict";function n(e){i.call(this,e)}e.exports=n;var i=r(14);(n.prototype=Object.create(i.prototype)).constructor=n;var s=r(2);s.Buffer&&(n.prototype._slice=s.Buffer.prototype.slice),n.prototype.string=function(){var e=this.uint32();return this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+e,this.len))}},function(e,t,r){"use strict";function n(e,t,r){if("function"!=typeof e)throw TypeError("rpcImpl must be a function");i.EventEmitter.call(this),this.rpcImpl=e,this.requestDelimited=Boolean(t),this.responseDelimited=Boolean(r)}e.exports=n;var i=r(2);(n.prototype=Object.create(i.EventEmitter.prototype)).constructor=n,n.prototype.rpcCall=function e(t,r,n,s,o){if(!s)throw TypeError("request must be specified");var u=this;if(!o)return i.asPromise(e,u,t,r,n,s);if(!u.rpcImpl)return void setTimeout(function(){o(Error("already ended"))},0);try{return u.rpcImpl(t,r[u.requestDelimited?"encodeDelimited":"encode"](s).finish(),function(e,r){if(e)return u.emit("error",e,t),o(e);if(null===r)return void u.end(!0);if(!(r instanceof n))try{r=n[u.responseDelimited?"decodeDelimited":"decode"](r)}catch(e){return u.emit("error",e,t),o(e)}return u.emit("data",r,t),o(null,r)})}catch(e){return u.emit("error",e,t),void setTimeout(function(){o(e)},0)}},n.prototype.end=function(e){return this.rpcImpl&&(e||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}},function(e,t,r){"use strict";function n(e,t){function r(e){if("string"!=typeof e){var t=i();if(n.verbose&&console.log("codegen: "+t),t="return "+t,e){for(var o=Object.keys(e),u=new Array(o.length+1),a=new Array(o.length),c=0;c0&&".."!==t[s-1]?t.splice(--s,2):r?t.splice(s,1):++s:"."===t[s]?t.splice(s,1):++s;return n+t.join("/")};n.resolve=function(e,t,r){return r||(t=s(t)),i(t)?t:(r||(e=s(e)),(e=e.replace(/(?:\/|^)[^\/]+$/,"")).length?s(e+"/"+t):t)}},function(e,t){e.exports={nested:{proto:{nested:{Error:{fields:{code:{type:"uint32",id:1},message:{type:"string",id:2}}},MethodType:{values:{CONNECT:0,SUBSCRIBE:1,UNSUBSCRIBE:2,PUBLISH:3,PRESENCE:4,PRESENCE_STATS:5,HISTORY:6,PING:7,SEND:8,RPC:9,REFRESH:10,SUB_REFRESH:11}},Command:{fields:{id:{type:"uint32",id:1},method:{type:"MethodType",id:2},params:{type:"bytes",id:3}}},Reply:{fields:{id:{type:"uint32",id:1},error:{type:"Error",id:2},result:{type:"bytes",id:3}}},PushType:{values:{PUBLICATION:0,JOIN:1,LEAVE:2,UNSUB:3,MESSAGE:4}},Push:{fields:{type:{type:"PushType",id:1},channel:{type:"string",id:2},data:{type:"bytes",id:3}}},ClientInfo:{fields:{user:{type:"string",id:1},client:{type:"string",id:2},connInfo:{type:"bytes",id:3},chanInfo:{type:"bytes",id:4}}},Publication:{fields:{seq:{type:"uint32",id:1},gen:{type:"uint32",id:2},uid:{type:"string",id:3},data:{type:"bytes",id:4},info:{type:"ClientInfo",id:5}}},Join:{fields:{info:{type:"ClientInfo",id:1}}},Leave:{fields:{info:{type:"ClientInfo",id:1}}},Unsub:{fields:{resubscribe:{type:"bool",id:1}}},Message:{fields:{data:{type:"bytes",id:1}}},ConnectRequest:{fields:{token:{type:"string",id:1},data:{type:"bytes",id:2}}},ConnectResult:{fields:{client:{type:"string",id:1},version:{type:"string",id:2},expires:{type:"bool",id:3},ttl:{type:"uint32",id:4},data:{type:"bytes",id:5}}},RefreshRequest:{fields:{token:{type:"string",id:1}}},RefreshResult:{fields:{client:{type:"string",id:1},version:{type:"string",id:2},expires:{type:"bool",id:3},ttl:{type:"uint32",id:4}}},SubscribeRequest:{fields:{channel:{type:"string",id:1},token:{type:"string",id:2},recover:{type:"bool",id:3},seq:{type:"uint32",id:4},gen:{type:"uint32",id:5},epoch:{type:"string",id:6}}},SubscribeResult:{fields:{expires:{type:"bool",id:1},ttl:{type:"uint32",id:2},recoverable:{type:"bool",id:3},seq:{type:"uint32",id:4},gen:{type:"uint32",id:5},epoch:{type:"string",id:6},publications:{rule:"repeated",type:"Publication",id:7},recovered:{type:"bool",id:8}}},SubRefreshRequest:{fields:{channel:{type:"string",id:1},token:{type:"string",id:2}}},SubRefreshResult:{fields:{expires:{type:"bool",id:1},ttl:{type:"uint32",id:2}}},UnsubscribeRequest:{fields:{channel:{type:"string",id:1}}},UnsubscribeResult:{fields:{}},PublishRequest:{fields:{channel:{type:"string",id:1},data:{type:"bytes",id:2}}},PublishResult:{fields:{}},PresenceRequest:{fields:{channel:{type:"string",id:1}}},PresenceResult:{fields:{presence:{keyType:"string",type:"ClientInfo",id:1}}},PresenceStatsRequest:{fields:{channel:{type:"string",id:1}}},PresenceStatsResult:{fields:{numClients:{type:"uint32",id:1},numUsers:{type:"uint32",id:2}}},HistoryRequest:{fields:{channel:{type:"string",id:1}}},HistoryResult:{fields:{publications:{rule:"repeated",type:"Publication",id:1}}},PingRequest:{fields:{}},PingResult:{fields:{}},RPCRequest:{fields:{data:{type:"bytes",id:1}}},RPCResult:{fields:{data:{type:"bytes",id:1}}},SendRequest:{fields:{data:{type:"bytes",id:1}}}}}}}}])}); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Centrifuge",[],t):"object"==typeof exports?exports.Centrifuge=t():e.Centrifuge=t()}("undefined"!=typeof self?self:this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=32)}([function(e,t,r){"use strict";var n,i,s=e.exports=r(2),o=r(20);s.codegen=r(46),s.fetch=r(47),s.path=r(48),s.fs=s.inquire("fs"),s.toArray=function(e){if(e){for(var t=Object.keys(e),r=new Array(t.length),n=0;n0)},s.Buffer=function(){try{var e=s.inquire("buffer").Buffer;return e.prototype.utf8Write?e:null}catch(e){return null}}(),s._Buffer_from=null,s._Buffer_allocUnsafe=null,s.newBuffer=function(e){return"number"==typeof e?s.Buffer?s._Buffer_allocUnsafe(e):new s.Array(e):s.Buffer?s._Buffer_from(e):"undefined"==typeof Uint8Array?e:new Uint8Array(e)},s.Array="undefined"!=typeof Uint8Array?Uint8Array:Array,s.Long=e.dcodeIO&&e.dcodeIO.Long||s.inquire("long"),s.key2Re=/^true|false|0|1$/,s.key32Re=/^-?(?:0|[1-9][0-9]*)$/,s.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,s.longToHash=function(e){return e?s.LongBits.from(e).toHash():s.LongBits.zeroHash},s.longFromHash=function(e,t){var r=s.LongBits.fromHash(e);return s.Long?s.Long.fromBits(r.lo,r.hi,t):r.toNumber(Boolean(t))},s.merge=n,s.lcFirst=function(e){return e.charAt(0).toLowerCase()+e.substring(1)},s.newError=i,s.ProtocolError=i("ProtocolError"),s.oneOfGetter=function(e){for(var t={},r=0;r-1;--r)if(1===t[e[r]]&&void 0!==this[e[r]]&&null!==this[e[r]])return e[r]}},s.oneOfSetter=function(e){return function(t){for(var r=0;r0&&this._events[e].length>i&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function r(){this.removeListener(e,r),i||(i=!0,t.apply(this,arguments))}if(!n(t))throw TypeError("listener must be a function");var i=!1;return r.listener=t,this.on(e,r),this},r.prototype.removeListener=function(e,t){var r,i,o,u;if(!n(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(r=this._events[e],o=r.length,i=-1,r===t||n(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(s(r)){for(u=o;u-- >0;)if(r[u]===t||r[u].listener&&r[u].listener===t){i=u;break}if(i<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[e],n(r))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){return this._events&&this._events[e]?n(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(n(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,r){"use strict";(function(e){function r(e,t){return 0===e.lastIndexOf(t,0)}function n(e){return void 0!==e&&null!==e&&"function"==typeof e}function i(t,r){if(e.console){var i=e.console[t];n(i)&&i.apply(e.console,r)}}function s(e,t,r){var n=.5*Math.random(),i=Math.min(r,t*Math.pow(2,e+1));return Math.floor((1-n)*i)}function o(e){return"error"in e&&null!==e.error}Object.defineProperty(t,"__esModule",{value:!0}),t.startsWith=r,t.isFunction=n,t.log=i,t.backoff=s,t.errorExists=o}).call(t,r(3))},function(e,t,r){"use strict";function n(e,t){if(e&&e.length){for(var r={},n=0;n=t)return!0;return!1},i.isReservedName=function(e,t){if(e)for(var r=0;r0;){var n=e.shift();if(r.nested&&r.nested[n]){if(!((r=r.nested[n])instanceof i))throw Error("path conflicts with non-namespace objects")}else r.add(r=new i(n))}return t&&r.addJSON(t),r},i.prototype.resolveAll=function(){for(var e=this.nestedArray,t=0;t-1)return n}else if(n instanceof i&&(n=n.lookup(e.slice(1),t,!0)))return n}else for(var s=0;s0&&(u+="&"),u+=encodeURIComponent(c)+"="+encodeURIComponent(r[c]));u.length>0&&(u="?"+u),a.open("POST",t+u,!0),"withCredentials"in a&&(a.withCredentials=!0),a.setRequestHeader("X-Requested-With","XMLHttpRequest"),a.setRequestHeader("Content-Type","application/json");for(var l in n)n.hasOwnProperty(l)&&a.setRequestHeader(l,n[l]);return a.onreadystatechange=function(){if(4===a.readyState)if(200===a.status){var e=void 0,t=!1;try{e=JSON.parse(a.responseText),t=!0}catch(e){s({error:"Invalid JSON. Data was: "+a.responseText,status:200,data:null})}t&&s({data:e,status:200})}else o._log("wrong status code in AJAX response",a.status),s({status:a.status,data:null})},setTimeout(function(){return a.send(JSON.stringify(i))},20),a}},{key:"_log",value:function(){(0,d.log)("info",arguments)}},{key:"_debug",value:function(){!0===this._config.debug&&(0,d.log)("debug",arguments)}},{key:"_websocketSupported",value:function(){return!("function"!=typeof WebSocket&&"object"!==("undefined"==typeof WebSocket?"undefined":u(WebSocket)))}},{key:"_setFormat",value:function(e){if(!this._formatOverride(e)){if("protobuf"===e)throw new Error("not implemented by JSON only Centrifuge client – use client with Protobuf");this._binary=!1,this._methodType=p.JsonMethodType,this._pushType=p.JsonPushType,this._encoder=new p.JsonEncoder,this._decoder=new p.JsonDecoder}}},{key:"_formatOverride",value:function(e){return!1}},{key:"_configure",value:function(t){if(!("Promise"in e))throw new Error("Promise polyfill required");if(Object.assign(this._config,t||{}),this._debug("centrifuge config",this._config),!this._url)throw new Error("url required");if((0,d.startsWith)(this._url,"ws")&&this._url.indexOf("format=protobuf")>-1?this._setFormat("protobuf"):this._setFormat("json"),(0,d.startsWith)(this._url,"http"))if(this._debug("client will try to connect to SockJS endpoint"),null!==this._config.sockjs)this._debug("SockJS explicitly provided in options"),this._sockjs=this._config.sockjs;else{if(void 0===e.SockJS)throw new Error("SockJS not found, use ws:// in url or include SockJS");this._debug("use globally defined SockJS"),this._sockjs=e.SockJS}else this._debug("client will connect to websocket endpoint")}},{key:"_setStatus",value:function(e){this._status!==e&&(this._debug("Status",this._status,"->",e),this._status=e)}},{key:"_isDisconnected",value:function(){return"disconnected"===this._status}},{key:"_isConnecting",value:function(){return"connecting"===this._status}},{key:"_isConnected",value:function(){return"connected"===this._status}},{key:"_nextMessageId",value:function(){return++this._messageId}},{key:"_resetRetry",value:function(){this._debug("reset retries count to 0"),this._retries=0}},{key:"_getRetryInterval",value:function(){var e=(0,d.backoff)(this._retries,this._config.minRetry,this._config.maxRetry);return this._retries+=1,e}},{key:"_abortInflightXHRs",value:function(){for(var e in this._xhrs){try{this._xhrs[e].abort()}catch(e){this._debug("error aborting xhr",e)}delete this._xhrs[e]}}},{key:"_clearConnectedState",value:function(e){this._clientID=null,this._stopPing();for(var t in this._callbacks)if(this._callbacks.hasOwnProperty(t)){var r=this._callbacks[t];clearTimeout(r.timeout);var n=r.errback;if(!n)continue;n({error:this._createErrorObject("disconnected")})}this._callbacks={};for(var i in this._subs)if(this._subs.hasOwnProperty(i)){var s=this._subs[i];e?(s._isSuccess()&&(s._triggerUnsubscribe(),s._recover=!0),s._shouldResubscribe()&&s._setSubscribing()):s._setUnsubscribed()}this._abortInflightXHRs(),null!==this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null);for(var o in this._subRefreshTimeouts)this._subRefreshTimeouts.hasOwnProperty(o)&&this._subRefreshTimeouts[o]&&this._clearSubRefreshTimeout(o);this._subRefreshTimeouts={},this._reconnect||(this._subs={})}},{key:"_isTransportOpen",value:function(){return this._isSockjs?this._transport&&this._transport.transport&&this._transport.transport.readyState===this._transport.transport.OPEN:this._transport&&this._transport.readyState===this._transport.OPEN}},{key:"_transportSend",value:function(e){if(!e.length)return!0;if(!this._isTransportOpen()){for(var t in e){var r=t.id;if(r in this._callbacks){var n=this._callbacks[r];clearTimeout(this._callbacks[r].timeout),delete this._callbacks[r];(0,n.errback)({error:this._createErrorObject("connection closed",0)})}}return!1}return this._transport.send(this._encoder.encodeCommands(e)),!0}},{key:"_setupTransport",value:function(){var e=this;if(this._isSockjs=!1,null!==this._sockjs){var t={transports:this._config.sockjsTransports};null!==this._config.sockjsServer&&(t.server=this._config.sockjsServer),this._isSockjs=!0,this._transport=new this._sockjs(this._url,null,t)}else{if(!this._websocketSupported())return void this._debug("No Websocket support and no SockJS configured, can not connect");this._transport=new WebSocket(this._url),!0===this._binary&&(this._transport.binaryType="arraybuffer")}this._transport.onopen=function(){e._transportClosed=!1,e._isSockjs?(e._transportName="sockjs-"+e._transport.transport,e._transport.onheartbeat=function(){return e._restartPing()}):e._transportName="websocket";var t={};(e._token||e._connectData)&&(t.params={}),e._token&&(t.params.token=e._token),e._connectData&&(t.params.data=e._connectData),e._latencyStart=new Date,e._call(t).then(function(t){e._connectResponse(e._decoder.decodeCommandResult(e._methodType.CONNECT,t.result)),t.next&&t.next()},function(t){109===t.error.code&&(e._refreshRequired=!0),e._disconnect("connect error",!0),t.next&&t.next()})},this._transport.onerror=function(t){e._debug("transport level error",t)},this._transport.onclose=function(t){e._transportClosed=!0;var r="connection closed",n=!0;if(t&&"reason"in t&&t.reason)try{var i=JSON.parse(t.reason);e._debug("reason is an advice object",i),r=i.reason,n=i.reconnect}catch(n){r=t.reason,e._debug("reason is a plain string",r)}if(null!==e._config.onTransportClose&&e._config.onTransportClose({event:t,reason:r,reconnect:n}),e._disconnect(r,n),!0===e._reconnect){e._reconnecting=!0;var s=e._getRetryInterval();e._debug("reconnect after "+s+" milliseconds"),setTimeout(function(){!0===e._reconnect&&(e._refreshRequired?e._refresh():e._connect())},s)}},this._transport.onmessage=function(t){e._dataReceived(t.data)}}},{key:"rpc",value:function(e){var t=this,r={method:this._methodType.RPC,params:{data:e}};return this.isConnected()?this._call(r).then(function(e){return e.next&&e.next(),t._decoder.decodeCommandResult(t._methodType.RPC,e.result)},function(e){return e.next&&e.next(),e.error}):Promise.reject(this._createErrorObject("connection closed",0))}},{key:"send",value:function(e){var t={method:this._methodType.SEND,params:{data:e}};return this.isConnected()&&this._transportSend([t])?Promise.resolve({}):Promise.reject(this._createErrorObject("connection closed",0))}},{key:"publish",value:function(e,t){var r={method:this._methodType.PUBLISH,params:{channel:e,data:t}};return this.isConnected()?this._call(r).then(function(e){return e.next&&e.next(),{}}):Promise.reject(this._createErrorObject("connection closed",0))}},{key:"_dataReceived",value:function(e){var t=this,r=this._decoder.decodeReplies(e),n=Promise.resolve();for(var i in r)!function(e){r.hasOwnProperty(e)&&(n=n.then(function(){return t._dispatchReply(r[e])}))}(i);this._restartPing()}},{key:"_call",value:function(e){var t=this;return new Promise(function(r,n){var i=t._addMessage(e);t._registerCall(i,r,n)})}},{key:"_connect",value:function(){if(this.isConnected())return void this._debug("connect called when already connected");"connecting"!==this._status&&(this._debug("start connecting"),this._setStatus("connecting"),this._clientID=null,this._reconnect=!0,this._setupTransport())}},{key:"_disconnect",value:function(e,t){if(!this._isDisconnected()){this._debug("disconnected:",e,t);var r=t||!1;!1===r&&(this._reconnect=!1),this._clearConnectedState(r),this._isDisconnected()||(this._setStatus("disconnected"),this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null),!1===this._reconnecting&&this.emit("disconnect",{reason:e,reconnect:r})),this._transportClosed||this._transport.close()}}},{key:"_refreshFailed",value:function(){this._numRefreshFailed=0,this._isDisconnected()||this._disconnect("refresh failed",!1),null!==this._config.onRefreshFailed&&this._config.onRefreshFailed()}},{key:"_refresh",value:function(){var e=this;if(this._debug("refresh token"),0===this._config.refreshAttempts)return this._debug("refresh attempts set to 0, do not send refresh request at all"),void this._refreshFailed();null!==this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null);var t=this._clientID,r=this._newXHRID(),n=function(n){if(r in e._xhrs&&delete e._xhrs[r],e._clientID===t){if(n.error||200!==n.status){if(n.error?e._debug("error refreshing connection token",n.error):e._debug("error refreshing connection token: wrong status code",n.status),e._numRefreshFailed++,null!==e._refreshTimeout&&(clearTimeout(e._refreshTimeout),e._refreshTimeout=null),null!==e._config.refreshAttempts&&e._numRefreshFailed>=e._config.refreshAttempts)return void e._refreshFailed();var i=Math.round(1e3*Math.random()*Math.max(e._numRefreshFailed,20)),s=e._config.refreshInterval+i;return void(e._refreshTimeout=setTimeout(function(){return e._refresh()},s))}if(e._numRefreshFailed=0,e._token=n.data.token,!e._token)return void e._refreshFailed();if(e._isDisconnected()&&e._reconnect)e._debug("token refreshed, connect from scratch"),e._connect();else{e._debug("send refreshed token");var o={method:e._methodType.REFRESH,params:{token:e._token}};e._call(o).then(function(t){e._refreshResponse(e._decoder.decodeCommandResult(e._methodType.REFRESH,t.result)),t.next&&t.next()},function(t){e._refreshError(t.error),t.next&&t.next()})}}};if(null!==this._config.onRefresh){var i={};this._config.onRefresh(i,n)}else{var s=this._ajax(this._config.refreshEndpoint,this._config.refreshParams,this._config.refreshHeaders,this._config.refreshData,n);this._xhrs[r]=s}}},{key:"_refreshError",value:function(e){var t=this;this._debug("refresh error",e),this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null);var r=this._config.refreshInterval+Math.round(1e3*Math.random());this._refreshTimeout=setTimeout(function(){return t._refresh()},r)}},{key:"_refreshResponse",value:function(e){var t=this;this._refreshTimeout&&(clearTimeout(this._refreshTimeout),this._refreshTimeout=null),e.expires&&(this._clientID=e.client,this._refreshTimeout=setTimeout(function(){return t._refresh()},this._getTTLMilliseconds(e.ttl)))}},{key:"_newXHRID",value:function(){return++this._xhrID}},{key:"_subRefresh",value:function(e){var t=this;if(this._debug("refresh subscription token for channel",e),void 0!==this._subRefreshTimeouts[e]){this._clearSubRefreshTimeout(e);var r=this._clientID,n=this._newXHRID(),i=function(i){if(n in t._xhrs&&delete t._xhrs[n],!i.error&&200===i.status&&t._clientID===r){var o={};if(i.data.channels)for(var u in s.channels){var a=i.data.channels[u];a.channel&&(o[a.channel]=a.token)}var c=o[e];if(c){var l={method:t._methodType.SUB_REFRESH,params:{channel:e,token:c}};null!==t._getSub(e)&&t._call(l).then(function(r){t._subRefreshResponse(e,t._decoder.decodeCommandResult(t._methodType.SUB_REFRESH,r.result)),r.next&&r.next()},function(r){t._subRefreshError(e,r.error),r.next&&r.next()})}}},s={client:this._clientID,channels:[e]};if(null!==this._config.onPrivateSubscribe)this._config.onPrivateSubscribe({data:s},i);else{var o=this._ajax(this._config.subscribeEndpoint,this._config.subscribeParams,this._config.subscribeHeaders,s,i);this._xhrs[n]=o}}}},{key:"_clearSubRefreshTimeout",value:function(e){void 0!==this._subRefreshTimeouts[e]&&(clearTimeout(this._subRefreshTimeouts[e]),delete this._subRefreshTimeouts[e])}},{key:"_subRefreshError",value:function(e,t){var r=this;if(this._debug("subscription refresh error",e,t),this._clearSubRefreshTimeout(e),null!==this._getSub(e)){var n=Math.round(1e3*Math.random()),i=setTimeout(function(){return r._subRefresh(e)},this._config.subRefreshInterval+n);this._subRefreshTimeouts[e]=i}}},{key:"_subRefreshResponse",value:function(e,t){var r=this;if(this._debug("subscription refresh success",e),this._clearSubRefreshTimeout(e),null!==this._getSub(e)&&!0===t.expires){var n=setTimeout(function(){return r._subRefresh(e)},this._getTTLMilliseconds(t.ttl));this._subRefreshTimeouts[e]=n}}},{key:"_subscribe",value:function(e,t){var r=this;this._debug("subscribing on",e.channel);var n=e.channel;if(n in this._subs||(this._subs[n]=e),!this.isConnected())return void e._setNew();e._setSubscribing(t);var i={method:this._methodType.SUBSCRIBE,params:{channel:n}};if((0,d.startsWith)(n,this._config.privateChannelPrefix))this._isSubscribeBatching?this._privateChannels[n]=!0:(this.startSubscribeBatching(),this._subscribe(e),this.stopSubscribeBatching());else{if(!0===e._needRecover()){i.params.recover=!0;var s=this._getLastSeq(n);s&&(i.params.seq=s);var o=this._getLastGen(n);o&&(i.params.gen=o);var u=this._getLastEpoch(n);u&&(i.params.epoch=u)}this._call(i).then(function(e){r._subscribeResponse(n,r._decoder.decodeCommandResult(r._methodType.SUBSCRIBE,e.result)),e.next&&e.next()},function(e){r._subscribeError(n,e.error),e.next&&e.next()})}}},{key:"_unsubscribe",value:function(e){this.isConnected()&&this._addMessage({method:this._methodType.UNSUBSCRIBE,params:{channel:e.channel}})}},{key:"_getTTLMilliseconds",value:function(e){return Math.min(1e3*e,2147483647)}},{key:"getSub",value:function(e){return this._getSub(e)}},{key:"_getSub",value:function(e){var t=this._subs[e];return t||null}},{key:"_connectResponse",value:function(e){var t=this,r=this._reconnecting;if(this._reconnecting=!1,this._resetRetry(),this._refreshRequired=!1,!this.isConnected()){null!==this._latencyStart&&(this._latency=(new Date).getTime()-this._latencyStart.getTime(),this._latencyStart=null),this._clientID=e.client,this._setStatus("connected"),this._refreshTimeout&&clearTimeout(this._refreshTimeout),e.expires&&(this._refreshTimeout=setTimeout(function(){return t._refresh()},this._getTTLMilliseconds(e.ttl))),this.startBatching(),this.startSubscribeBatching();for(var n in this._subs)if(this._subs.hasOwnProperty(n)){var i=this._subs[n];i._shouldResubscribe()&&this._subscribe(i,r)}this.stopSubscribeBatching(),this.stopBatching(),this._startPing();var s={client:e.client,transport:this._transportName,latency:this._latency};e.data&&(s.data=e.data),this.emit("connect",s)}}},{key:"_stopPing",value:function(){null!==this._pongTimeout&&(clearTimeout(this._pongTimeout),this._pongTimeout=null),null!==this._pingTimeout&&(clearTimeout(this._pingTimeout),this._pingTimeout=null)}},{key:"_startPing",value:function(){var e=this;!0!==this._config.ping||this._config.pingInterval<=0||this.isConnected()&&(this._pingTimeout=setTimeout(function(){if(!e.isConnected())return void e._stopPing();e.ping(),e._pongTimeout=setTimeout(function(){e._disconnect("no ping",!0)},e._config.pongWaitTimeout)},this._config.pingInterval))}},{key:"_restartPing",value:function(){this._stopPing(),this._startPing()}},{key:"_subscribeError",value:function(e,t){var r=this._getSub(e);if(r&&r._isSubscribing())return 0===t.code&&"timeout"===t.message?void this._disconnect("timeout",!0):void r._setSubscribeError(t)}},{key:"_subscribeResponse",value:function(e,t){var r=this,n=this._getSub(e);if(n&&n._isSubscribing()){var i=!1;"recovered"in t&&(i=t.recovered),n._setSubscribeSuccess(i);var s=t.publications;if(s&&s.length>0){s=s.reverse();for(var o in s)s.hasOwnProperty(o)&&this._handlePublication(e,s[o])}else t.recoverable&&(this._lastSeq[e]=t.seq||0,this._lastGen[e]=t.gen||0);if(this._lastEpoch[e]=t.epoch||"",t.recoverable&&(n._recoverable=!0),!0===t.expires){var u=setTimeout(function(){return r._subRefresh(e)},this._getTTLMilliseconds(t.ttl));this._subRefreshTimeouts[e]=u}}}},{key:"_handleReply",value:function(e,t){var r=e.id,n=e.result;if(!(r in this._callbacks))return void t();var i=this._callbacks[r];if(clearTimeout(this._callbacks[r].timeout),delete this._callbacks[r],(0,d.errorExists)(e)){var s=i.errback;if(!s)return void t();s({error:e.error,next:t})}else{var o=i.callback;if(!o)return;o({result:n,next:t})}}},{key:"_handleJoin",value:function(e,t){var r=this._getSub(e);r&&r.emit("join",t)}},{key:"_handleLeave",value:function(e,t){var r=this._getSub(e);r&&r.emit("leave",t)}},{key:"_handleUnsub",value:function(e,t){var r=this._getSub(e);r&&(r.unsubscribe(),!0===t.resubscribe&&r.subscribe())}},{key:"_handlePublication",value:function(e,t){var r=this._getSub(e);r&&(void 0!==t.seq&&(this._lastSeq[e]=t.seq),void 0!==t.gen&&(this._lastGen[e]=t.gen),r.emit("publish",t))}},{key:"_handleMessage",value:function(e){this.emit("message",e.data)}},{key:"_handlePush",value:function(e,t){var r=this._decoder.decodePush(e),n=0;"type"in r&&(n=r.type);var i=r.channel;if(n===this._pushType.PUBLICATION){var s=this._decoder.decodePushData(this._pushType.PUBLICATION,r.data);this._handlePublication(i,s)}else if(n===this._pushType.MESSAGE){var o=this._decoder.decodePushData(this._pushType.MESSAGE,r.data);this._handleMessage(o)}else if(n===this._pushType.JOIN){var u=this._decoder.decodePushData(this._pushType.JOIN,r.data);this._handleJoin(i,u)}else if(n===this._pushType.LEAVE){var a=this._decoder.decodePushData(this._pushType.LEAVE,r.data);this._handleLeave(i,a)}else if(n===this._pushType.UNSUB){var c=this._decoder.decodePushData(this._pushType.UNSUB,r.data);this._handleUnsub(i,c)}t()}},{key:"_dispatchReply",value:function(e){var t,r=new Promise(function(e){t=e});if(void 0===e||null===e)return this._debug("dispatch: got undefined or null reply"),t(),r;var n=e.id;return n&&n>0?this._handleReply(e,t):this._handlePush(e.result,t),r}},{key:"_flush",value:function(){var e=this._messages.slice(0);this._messages=[],this._transportSend(e)}},{key:"_ping",value:function(){var e=this,t={method:this._methodType.PING};this._call(t).then(function(t){e._pingResponse(e._decoder.decodeCommandResult(e._methodType.PING,t.result)),t.next&&t.next()},function(t){e._debug("ping error",t.error),t.next&&t.next()})}},{key:"_pingResponse",value:function(e){this.isConnected()&&(this._stopPing(),this._startPing())}},{key:"_getLastSeq",value:function(e){var t=this._lastSeq[e];return t||0}},{key:"_getLastGen",value:function(e){var t=this._lastGen[e];return t||0}},{key:"_getLastEpoch",value:function(e){var t=this._lastEpoch[e];return t||""}},{key:"_createErrorObject",value:function(e,t){return{message:e,code:t||0}}},{key:"_registerCall",value:function(e,t,r){var n=this;this._callbacks[e]={callback:t,errback:r,timeout:null},this._callbacks[e].timeout=setTimeout(function(){delete n._callbacks[e],(0,d.isFunction)(r)&&r({error:n._createErrorObject("timeout")})},this._config.timeout)}},{key:"_addMessage",value:function(e){var t=this._nextMessageId();return e.id=t,!0===this._isBatching?this._messages.push(e):this._transportSend([e]),t}},{key:"isConnected",value:function(){return this._isConnected()}},{key:"connect",value:function(){this._connect()}},{key:"disconnect",value:function(){this._disconnect("client",!1)}},{key:"ping",value:function(){return this._ping()}},{key:"startBatching",value:function(){this._isBatching=!0}},{key:"stopBatching",value:function(){this._isBatching=!1,this._flush()}},{key:"startSubscribeBatching",value:function(){this._isSubscribeBatching=!0}},{key:"stopSubscribeBatching",value:function(){var e=this;this._isSubscribeBatching=!1;var t=this._privateChannels;this._privateChannels={};var r=[];for(var n in t)if(t.hasOwnProperty(n)){var i=this._getSub(n);if(!i)continue;r.push(n)}if(0===r.length)return void this._debug("no private channels found, no need to make request");var s={client:this._clientID,channels:r},o=this._clientID,u=this._newXHRID(),a=function(t){if(u in e._xhrs&&delete e._xhrs[u],e._clientID===o)if(t.error||200!==t.status){e._debug("authorization request failed");for(var n in r)if(r.hasOwnProperty(n)){var i=r[n];e._subscribeError(i,e._createErrorObject("authorization request failed"))}}else{var s={};if(t.data.channels)for(var a in t.data.channels){var c=t.data.channels[a];c.channel&&(s[c.channel]=c.token)}var l=!1;e._isBatching||(e.startBatching(),l=!0);for(var h in r)if(r.hasOwnProperty(h)){var f=function(){var t=r[h],n=s[t];if(!n)return e._subscribeError(t,e._createErrorObject("permission denied",103)),"continue";var i={method:e._methodType.SUBSCRIBE,params:{channel:t,token:n}},o=e._getSub(t);if(null===o)return"continue";if(!0===o._needRecover()){i.params.recover=!0;var u=e._getLastSeq(t);u&&(i.params.seq=u);var a=e._getLastGen(t);a&&(i.params.gen=a);var c=e._getLastEpoch(t);c&&(i.params.epoch=c)}e._call(i).then(function(r){e._subscribeResponse(t,e._decoder.decodeCommandResult(e._methodType.SUBSCRIBE,r.result)),r.next&&r.next()},function(r){e._subscribeError(t,r.error),r.next&&r.next()})}();if("continue"===f)continue}l&&e.stopBatching()}};if(null!==this._config.onPrivateSubscribe)this._config.onPrivateSubscribe({data:s},a);else{var c=this._ajax(this._config.subscribeEndpoint,this._config.subscribeParams,this._config.subscribeHeaders,s,a);this._xhrs[u]=c}}},{key:"subscribe",value:function(e,t){var r=this._getSub(e);if(null!==r)return r._setEvents(t),r._isUnsubscribed()&&r.subscribe(),r;var n=new f.default(this,e,t);return this._subs[e]=n,n.subscribe(),n}}]),r}(l.default)}).call(t,r(3))},function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r127;)t[r++]=127&e|128,e>>>=7;t[r]=e}function c(e,t){this.len=e,this.next=void 0,this.val=t}function l(e,t,r){for(;e.hi;)t[r++]=127&e.lo|128,e.lo=(e.lo>>>7|e.hi<<25)>>>0,e.hi>>>=7;for(;e.lo>127;)t[r++]=127&e.lo|128,e.lo=e.lo>>>7;t[r++]=e.lo}function h(e,t,r){t[r]=255&e,t[r+1]=e>>>8&255,t[r+2]=e>>>16&255,t[r+3]=e>>>24}e.exports=o;var f,p=r(2),d=p.LongBits,y=p.base64,v=p.utf8;o.create=p.Buffer?function(){return(o.create=function(){return new f})()}:function(){return new o},o.alloc=function(e){return new p.Array(e)},p.Array!==Array&&(o.alloc=p.pool(o.alloc,p.Array.prototype.subarray)),o.prototype._push=function(e,t,r){return this.tail=this.tail.next=new n(e,t,r),this.len+=t,this},c.prototype=Object.create(n.prototype),c.prototype.fn=a,o.prototype.uint32=function(e){return this.len+=(this.tail=this.tail.next=new c((e>>>=0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this},o.prototype.int32=function(e){return e<0?this._push(l,10,d.fromNumber(e)):this.uint32(e)},o.prototype.sint32=function(e){return this.uint32((e<<1^e>>31)>>>0)},o.prototype.uint64=function(e){var t=d.from(e);return this._push(l,t.length(),t)},o.prototype.int64=o.prototype.uint64,o.prototype.sint64=function(e){var t=d.from(e).zzEncode();return this._push(l,t.length(),t)},o.prototype.bool=function(e){return this._push(u,1,e?1:0)},o.prototype.fixed32=function(e){return this._push(h,4,e>>>0)},o.prototype.sfixed32=o.prototype.fixed32,o.prototype.fixed64=function(e){var t=d.from(e);return this._push(h,4,t.lo)._push(h,4,t.hi)},o.prototype.sfixed64=o.prototype.fixed64,o.prototype.float=function(e){return this._push(p.float.writeFloatLE,4,e)},o.prototype.double=function(e){return this._push(p.float.writeDoubleLE,8,e)};var m=p.Array.prototype.set?function(e,t,r){t.set(e,r)}:function(e,t,r){for(var n=0;n>>0;if(!t)return this._push(u,1,0);if(p.isString(e)){var r=o.alloc(t=y.length(e));y.decode(e,r,0),e=r}return this.uint32(t)._push(m,t,e)},o.prototype.string=function(e){var t=v.length(e);return t?this.uint32(t)._push(v.write,t,e):this._push(u,1,0)},o.prototype.fork=function(){return this.states=new s(this),this.head=this.tail=new n(i,0,0),this.len=0,this},o.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new n(i,0,0),this.len=0),this},o.prototype.ldelim=function(){var e=this.head,t=this.tail,r=this.len;return this.reset().uint32(r),r&&(this.tail.next=e.next,this.tail=t,this.len+=r),this},o.prototype.finish=function(){for(var e=this.head.next,t=this.constructor.alloc(this.len),r=0;e;)e.fn(e.val,t,r),r+=e.len,e=e.next;return t},o._configure=function(e){f=e}},function(e,t,r){"use strict";function n(e,t){return RangeError("index out of range: "+e.pos+" + "+(t||1)+" > "+e.len)}function i(e){this.buf=e,this.pos=0,this.len=e.length}function s(){var e=new l(0,0),t=0;if(!(this.len-this.pos>4)){for(;t<3;++t){if(this.pos>=this.len)throw n(this);if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(127&this.buf[this.pos++])<<7*t)>>>0,e}for(;t<4;++t)if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(127&this.buf[this.pos])<<28)>>>0,e.hi=(e.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return e;if(t=0,this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw n(this);if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}function o(e,t){return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0}function u(){if(this.pos+8>this.len)throw n(this,8);return new l(o(this.buf,this.pos+=4),o(this.buf,this.pos+=4))}e.exports=i;var a,c=r(2),l=c.LongBits,h=c.utf8,f="undefined"!=typeof Uint8Array?function(e){if(e instanceof Uint8Array||Array.isArray(e))return new i(e);throw Error("illegal buffer")}:function(e){if(Array.isArray(e))return new i(e);throw Error("illegal buffer")};i.create=c.Buffer?function(e){return(i.create=function(e){return c.Buffer.isBuffer(e)?new a(e):f(e)})(e)}:f,i.prototype._slice=c.Array.prototype.subarray||c.Array.prototype.slice,i.prototype.uint32=function(){var e=4294967295;return function(){if(e=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128)return e;if(e=(e|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)return e;if(e=(e|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)return e;if(e=(e|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)return e;if(e=(e|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128)return e;if((this.pos+=5)>this.len)throw this.pos=this.len,n(this,10);return e}}(),i.prototype.int32=function(){return 0|this.uint32()},i.prototype.sint32=function(){var e=this.uint32();return e>>>1^-(1&e)|0},i.prototype.bool=function(){return 0!==this.uint32()},i.prototype.fixed32=function(){if(this.pos+4>this.len)throw n(this,4);return o(this.buf,this.pos+=4)},i.prototype.sfixed32=function(){if(this.pos+4>this.len)throw n(this,4);return 0|o(this.buf,this.pos+=4)},i.prototype.float=function(){if(this.pos+4>this.len)throw n(this,4);var e=c.float.readFloatLE(this.buf,this.pos);return this.pos+=4,e},i.prototype.double=function(){if(this.pos+8>this.len)throw n(this,4);var e=c.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,e},i.prototype.bytes=function(){var e=this.uint32(),t=this.pos,r=this.pos+e;if(r>this.len)throw n(this,e);return this.pos+=e,Array.isArray(this.buf)?this.buf.slice(t,r):t===r?new this.buf.constructor(0):this._slice.call(this.buf,t,r)},i.prototype.string=function(){var e=this.bytes();return h.read(e,0,e.length)},i.prototype.skip=function(e){if("number"==typeof e){if(this.pos+e>this.len)throw n(this,e);this.pos+=e}else do{if(this.pos>=this.len)throw n(this)}while(128&this.buf[this.pos++]);return this},i.prototype.skipType=function(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;;){if(4==(e=7&this.uint32()))break;this.skipType(e)}break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+e+" at offset "+this.pos)}return this},i._configure=function(e){a=e;var t=c.Long?"toLong":"toNumber";c.merge(i.prototype,{int64:function(){return s.call(this)[t](!1)},uint64:function(){return s.call(this)[t](!0)},sint64:function(){return s.call(this).zzDecode()[t](!1)},fixed64:function(){return u.call(this)[t](!0)},sfixed64:function(){return u.call(this)[t](!1)}})}},function(e,t,r){"use strict";function n(e,t,r,n){if(Array.isArray(t)||(r=t,t=void 0),s.call(this,e,r),void 0!==t&&!Array.isArray(t))throw TypeError("fieldNames must be an Array");this.oneof=t||[],this.fieldsArray=[],this.comment=n}function i(e){if(e.parent)for(var t=0;t-1&&this.oneof.splice(t,1),e.partOf=null,this},n.prototype.onAdd=function(e){s.prototype.onAdd.call(this,e);for(var t=this,r=0;r>>0,(t.id<<3|4)>>>0):e("types[%i].encode(%s,w.uint32(%i).fork()).ldelim()",r,n,(t.id<<3|2)>>>0)}function i(e){for(var t,r,i=u.codegen(["m","w"],e.name+"$encode")("if(!w)")("w=Writer.create()"),a=e.fieldsArray.slice().sort(u.compareFieldsById),t=0;t>>0,8|o.mapKey[c.keyType],c.keyType),void 0===f?i("types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()",l,r):i(".uint32(%i).%s(%s[ks[i]]).ldelim()",16|f,h,r),i("}")("}")):c.repeated?(i("if(%s!=null&&%s.length){",r,r),c.packed&&void 0!==o.packed[h]?i("w.uint32(%i).fork()",(c.id<<3|2)>>>0)("for(var i=0;i<%s.length;++i)",r)("w.%s(%s[i])",h,r)("w.ldelim()"):(i("for(var i=0;i<%s.length;++i)",r),void 0===f?n(i,c,l,r+"[i]"):i("w.uint32(%i).%s(%s[i])",(c.id<<3|f)>>>0,h,r)),i("}")):(c.optional&&i("if(%s!=null&&m.hasOwnProperty(%j))",r,c.name),void 0===f?n(i,c,l,r):i("w.uint32(%i).%s(%s)",(c.id<<3|f)>>>0,h,r))}return i("return w")}e.exports=i;var s=r(1),o=r(9),u=r(0)},function(e,t,r){"use strict";function n(e,t){s.call(this,e,t),this.fields={},this.oneofs=void 0,this.extensions=void 0,this.reserved=void 0,this.group=void 0,this._fieldsById=null,this._fieldsArray=null,this._oneofsArray=null,this._ctor=null}function i(e){return e._fieldsById=e._fieldsArray=e._oneofsArray=null,delete e.encode,delete e.decode,delete e.verify,e}e.exports=n;var s=r(8);((n.prototype=Object.create(s.prototype)).constructor=n).className="Type";var o=r(1),u=r(15),a=r(5),c=r(23),l=r(24),h=r(16),f=r(14),p=r(13),d=r(0),y=r(21),v=r(26),m=r(27),_=r(28),b=r(29);Object.defineProperties(n.prototype,{fieldsById:{get:function(){if(this._fieldsById)return this._fieldsById;this._fieldsById={};for(var e=Object.keys(this.fields),t=0;t>>3){");for(var r=0;r>>0",n,n);break;case"int32":case"sint32":case"sfixed32":e("m%s=d%s|0",n,n);break;case"uint64":a=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":e("if(util.Long)")("(m%s=util.Long.fromValue(d%s)).unsigned=%j",n,n,a)('else if(typeof d%s==="string")',n)("m%s=parseInt(d%s,10)",n,n)('else if(typeof d%s==="number")',n)("m%s=d%s",n,n)('else if(typeof d%s==="object")',n)("m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)",n,n,n,a?"true":"");break;case"bytes":e('if(typeof d%s==="string")',n)("util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)",n,n,n)("else if(d%s.length)",n)("m%s=d%s",n,n);break;case"string":e("m%s=String(d%s)",n,n);break;case"bool":e("m%s=Boolean(d%s)",n,n)}}return e}function i(e,t,r,n){if(t.resolvedType)t.resolvedType instanceof o?e("d%s=o.enums===String?types[%i].values[m%s]:m%s",n,r,n,n):e("d%s=types[%i].toObject(m%s,o)",n,r,n);else{var i=!1;switch(t.type){case"double":case"float":e("d%s=o.json&&!isFinite(m%s)?String(m%s):m%s",n,n,n,n);break;case"uint64":i=!0;case"int64":case"sint64":case"fixed64":case"sfixed64":e('if(typeof m%s==="number")',n)("d%s=o.longs===String?String(m%s):m%s",n,n,n)("else")("d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low>>>0,m%s.high>>>0).toNumber(%s):m%s",n,n,n,n,i?"true":"",n);break;case"bytes":e("d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s",n,n,n,n,n);break;default:e("d%s=m%s",n,n)}}return e}var s=t,o=r(1),u=r(0);s.fromObject=function(e){var t=e.fieldsArray,r=u.codegen(["d"],e.name+"$fromObject")("if(d instanceof this.ctor)")("return d");if(!t.length)return r("return new this.ctor");r("var m=new this.ctor");for(var i=0;i-1){var i=e.substring(r);i in c&&(e=i)}if(!(l.files.indexOf(e)>-1)){if(l.files.push(e),e in c)return void(h?o(e,c[e]):(++f,setTimeout(function(){--f,o(e,c[e])})));if(h){var u;try{u=p.fs.readFileSync(e).toString("utf8")}catch(e){return void(t||s(e))}o(e,u)}else++f,p.fetch(e,function(r,i){if(--f,n)return r?void(t?f||s(null,l):s(r)):void o(e,i)})}}"function"==typeof r&&(n=r,r=void 0);var l=this;if(!n)return p.asPromise(e,l,t,r);var h=n===i,f=0;p.isString(t)&&(t=[t]);for(var d,y=0;y-1&&this.deferred.splice(t,1)}}else if(e instanceof h)d.test(e.name)&&delete e.parent[e.name];else if(e instanceof o){for(var r=0;r1&&"="===e.charAt(t);)++r;return Math.ceil(3*e.length)/4-r};for(var i=new Array(64),s=new Array(123),o=0;o<64;)s[i[o]=o<26?o+65:o<52?o+71:o<62?o-4:o-59|43]=o++;n.encode=function(e,t,r){for(var n,s=null,o=[],u=0,a=0;t>2],n=(3&c)<<4,a=1;break;case 1:o[u++]=i[n|c>>4],n=(15&c)<<2,a=2;break;case 2:o[u++]=i[n|c>>6],o[u++]=i[63&c],a=0}u>8191&&((s||(s=[])).push(String.fromCharCode.apply(String,o)),u=0)}return a&&(o[u++]=i[n],o[u++]=61,1===a&&(o[u++]=61)),s?(u&&s.push(String.fromCharCode.apply(String,o.slice(0,u))),s.join("")):String.fromCharCode.apply(String,o.slice(0,u))};n.decode=function(e,t,r){for(var n,i=r,o=0,u=0;u1)break;if(void 0===(a=s[a]))throw Error("invalid encoding");switch(o){case 0:n=a,o=1;break;case 1:t[r++]=n<<2|(48&a)>>4,n=a,o=2;break;case 2:t[r++]=(15&n)<<4|(60&a)>>2,n=a,o=3;break;case 3:t[r++]=(3&n)<<6|a,o=0}}if(1===o)throw Error("invalid encoding");return r-i},n.test=function(e){return/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(e)}},function(e,t,r){"use strict";function n(){this._listeners={}}e.exports=n,n.prototype.on=function(e,t,r){return(this._listeners[e]||(this._listeners[e]=[])).push({fn:t,ctx:r||this}),this},n.prototype.off=function(e,t){if(void 0===e)this._listeners={};else if(void 0===t)this._listeners[e]=[];else for(var r=this._listeners[e],n=0;n0?0:2147483648,r,n);else if(isNaN(t))e(2143289344,r,n);else if(t>3.4028234663852886e38)e((i<<31|2139095040)>>>0,r,n);else if(t<1.1754943508222875e-38)e((i<<31|Math.round(t/1.401298464324817e-45))>>>0,r,n);else{var s=Math.floor(Math.log(t)/Math.LN2),o=8388607&Math.round(t*Math.pow(2,-s)*8388608);e((i<<31|s+127<<23|o)>>>0,r,n)}}function r(e,t,r){var n=e(t,r),i=2*(n>>31)+1,s=n>>>23&255,o=8388607&n;return 255===s?o?NaN:i*(1/0):0===s?1.401298464324817e-45*i*o:i*Math.pow(2,s-150)*(o+8388608)}e.writeFloatLE=t.bind(null,i),e.writeFloatBE=t.bind(null,s),e.readFloatLE=r.bind(null,o),e.readFloatBE=r.bind(null,u)}(),"undefined"!=typeof Float64Array?function(){function t(e,t,r){s[0]=e,t[r]=o[0],t[r+1]=o[1],t[r+2]=o[2],t[r+3]=o[3],t[r+4]=o[4],t[r+5]=o[5],t[r+6]=o[6],t[r+7]=o[7]}function r(e,t,r){s[0]=e,t[r]=o[7],t[r+1]=o[6],t[r+2]=o[5],t[r+3]=o[4],t[r+4]=o[3],t[r+5]=o[2],t[r+6]=o[1],t[r+7]=o[0]}function n(e,t){return o[0]=e[t],o[1]=e[t+1],o[2]=e[t+2],o[3]=e[t+3],o[4]=e[t+4],o[5]=e[t+5],o[6]=e[t+6],o[7]=e[t+7],s[0]}function i(e,t){return o[7]=e[t],o[6]=e[t+1],o[5]=e[t+2],o[4]=e[t+3],o[3]=e[t+4],o[2]=e[t+5],o[1]=e[t+6],o[0]=e[t+7],s[0]}var s=new Float64Array([-0]),o=new Uint8Array(s.buffer),u=128===o[7];e.writeDoubleLE=u?t:r,e.writeDoubleBE=u?r:t,e.readDoubleLE=u?n:i,e.readDoubleBE=u?i:n}():function(){function t(e,t,r,n,i,s){var o=n<0?1:0;if(o&&(n=-n),0===n)e(0,i,s+t),e(1/n>0?0:2147483648,i,s+r);else if(isNaN(n))e(0,i,s+t),e(2146959360,i,s+r);else if(n>1.7976931348623157e308)e(0,i,s+t),e((o<<31|2146435072)>>>0,i,s+r);else{var u;if(n<2.2250738585072014e-308)u=n/5e-324,e(u>>>0,i,s+t),e((o<<31|u/4294967296)>>>0,i,s+r);else{var a=Math.floor(Math.log(n)/Math.LN2);1024===a&&(a=1023),u=n*Math.pow(2,-a),e(4503599627370496*u>>>0,i,s+t),e((o<<31|a+1023<<20|1048576*u&1048575)>>>0,i,s+r)}}}function r(e,t,r,n,i){var s=e(n,i+t),o=e(n,i+r),u=2*(o>>31)+1,a=o>>>20&2047,c=4294967296*(1048575&o)+s;return 2047===a?c?NaN:u*(1/0):0===a?5e-324*u*c:u*Math.pow(2,a-1075)*(c+4503599627370496)}e.writeDoubleLE=t.bind(null,i,0,4),e.writeDoubleBE=t.bind(null,s,4,0),e.readDoubleLE=r.bind(null,o,0,4),e.readDoubleBE=r.bind(null,u,4,0)}(),e}function i(e,t,r){t[r]=255&e,t[r+1]=e>>>8&255,t[r+2]=e>>>16&255,t[r+3]=e>>>24}function s(e,t,r){t[r]=e>>>24,t[r+1]=e>>>16&255,t[r+2]=e>>>8&255,t[r+3]=255&e}function o(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}function u(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}e.exports=n(n)},function(e,t,r){"use strict";var n=t;n.length=function(e){for(var t=0,r=0,n=0;n191&&n<224?s[o++]=(31&n)<<6|63&e[t++]:n>239&&n<365?(n=((7&n)<<18|(63&e[t++])<<12|(63&e[t++])<<6|63&e[t++])-65536,s[o++]=55296+(n>>10),s[o++]=56320+(1023&n)):s[o++]=(15&n)<<12|(63&e[t++])<<6|63&e[t++],o>8191&&((i||(i=[])).push(String.fromCharCode.apply(String,s)),o=0);return i?(o&&i.push(String.fromCharCode.apply(String,s.slice(0,o))),i.join("")):String.fromCharCode.apply(String,s.slice(0,o))},n.write=function(e,t,r){for(var n,i,s=r,o=0;o>6|192,t[r++]=63&n|128):55296==(64512&n)&&56320==(64512&(i=e.charCodeAt(o+1)))?(n=65536+((1023&n)<<10)+(1023&i),++o,t[r++]=n>>18|240,t[r++]=n>>12&63|128,t[r++]=n>>6&63|128,t[r++]=63&n|128):(t[r++]=n>>12|224,t[r++]=n>>6&63|128,t[r++]=63&n|128);return r-s}},function(e,t,r){"use strict";function n(e,t,r){var n=r||8192,i=n>>>1,s=null,o=n;return function(r){if(r<1||r>i)return e(r);o+r>n&&(s=e(n),o=0);var u=t.call(s,o,o+=r);return 7&o&&(o=1+(7|o)),u}}e.exports=n},function(e,t,r){"use strict";function n(e,t){this.lo=e>>>0,this.hi=t>>>0}e.exports=n;var i=r(2),s=n.zero=new n(0,0);s.toNumber=function(){return 0},s.zzEncode=s.zzDecode=function(){return this},s.length=function(){return 1};var o=n.zeroHash="\0\0\0\0\0\0\0\0";n.fromNumber=function(e){if(0===e)return s;var t=e<0;t&&(e=-e);var r=e>>>0,i=(e-r)/4294967296>>>0;return t&&(i=~i>>>0,r=~r>>>0,++r>4294967295&&(r=0,++i>4294967295&&(i=0))),new n(r,i)},n.from=function(e){if("number"==typeof e)return n.fromNumber(e);if(i.isString(e)){if(!i.Long)return n.fromNumber(parseInt(e,10));e=i.Long.fromString(e)}return e.low||e.high?new n(e.low>>>0,e.high>>>0):s},n.prototype.toNumber=function(e){if(!e&&this.hi>>>31){var t=1+~this.lo>>>0,r=~this.hi>>>0;return t||(r=r+1>>>0),-(t+4294967296*r)}return this.lo+4294967296*this.hi},n.prototype.toLong=function(e){return i.Long?new i.Long(0|this.lo,0|this.hi,Boolean(e)):{low:0|this.lo,high:0|this.hi,unsigned:Boolean(e)}};var u=String.prototype.charCodeAt;n.fromHash=function(e){return e===o?s:new n((u.call(e,0)|u.call(e,1)<<8|u.call(e,2)<<16|u.call(e,3)<<24)>>>0,(u.call(e,4)|u.call(e,5)<<8|u.call(e,6)<<16|u.call(e,7)<<24)>>>0)},n.prototype.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},n.prototype.zzEncode=function(){var e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this},n.prototype.zzDecode=function(){var e=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this},n.prototype.length=function(){var e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,r=this.hi>>>24;return 0===r?0===t?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:r<128?9:10}},function(e,t,r){"use strict";function n(){s.call(this)}function i(e,t,r){e.length<40?o.utf8.write(e,t,r):t.utf8Write(e,r)}e.exports=n;var s=r(13);(n.prototype=Object.create(s.prototype)).constructor=n;var o=r(2),u=o.Buffer;n.alloc=function(e){return(n.alloc=o._Buffer_allocUnsafe)(e)};var a=u&&u.prototype instanceof Uint8Array&&"set"===u.prototype.set.name?function(e,t,r){t.set(e,r)}:function(e,t,r){if(e.copy)e.copy(t,r,0,e.length);else for(var n=0;n>>0;return this.uint32(t),t&&this._push(a,t,e),this},n.prototype.string=function(e){var t=u.byteLength(e);return this.uint32(t),t&&this._push(i,t,e),this}},function(e,t,r){"use strict";function n(e){i.call(this,e)}e.exports=n;var i=r(14);(n.prototype=Object.create(i.prototype)).constructor=n;var s=r(2);s.Buffer&&(n.prototype._slice=s.Buffer.prototype.slice),n.prototype.string=function(){var e=this.uint32();return this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+e,this.len))}},function(e,t,r){"use strict";function n(e,t,r){if("function"!=typeof e)throw TypeError("rpcImpl must be a function");i.EventEmitter.call(this),this.rpcImpl=e,this.requestDelimited=Boolean(t),this.responseDelimited=Boolean(r)}e.exports=n;var i=r(2);(n.prototype=Object.create(i.EventEmitter.prototype)).constructor=n,n.prototype.rpcCall=function e(t,r,n,s,o){if(!s)throw TypeError("request must be specified");var u=this;if(!o)return i.asPromise(e,u,t,r,n,s);if(!u.rpcImpl)return void setTimeout(function(){o(Error("already ended"))},0);try{return u.rpcImpl(t,r[u.requestDelimited?"encodeDelimited":"encode"](s).finish(),function(e,r){if(e)return u.emit("error",e,t),o(e);if(null===r)return void u.end(!0);if(!(r instanceof n))try{r=n[u.responseDelimited?"decodeDelimited":"decode"](r)}catch(e){return u.emit("error",e,t),o(e)}return u.emit("data",r,t),o(null,r)})}catch(e){return u.emit("error",e,t),void setTimeout(function(){o(e)},0)}},n.prototype.end=function(e){return this.rpcImpl&&(e||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}},function(e,t,r){"use strict";function n(e,t){function r(e){if("string"!=typeof e){var t=i();if(n.verbose&&console.log("codegen: "+t),t="return "+t,e){for(var o=Object.keys(e),u=new Array(o.length+1),a=new Array(o.length),c=0;c0&&".."!==t[s-1]?t.splice(--s,2):r?t.splice(s,1):++s:"."===t[s]?t.splice(s,1):++s;return n+t.join("/")};n.resolve=function(e,t,r){return r||(t=s(t)),i(t)?t:(r||(e=s(e)),(e=e.replace(/(?:\/|^)[^\/]+$/,"")).length?s(e+"/"+t):t)}},function(e,t){e.exports={nested:{proto:{nested:{Error:{fields:{code:{type:"uint32",id:1},message:{type:"string",id:2}}},MethodType:{values:{CONNECT:0,SUBSCRIBE:1,UNSUBSCRIBE:2,PUBLISH:3,PRESENCE:4,PRESENCE_STATS:5,HISTORY:6,PING:7,SEND:8,RPC:9,REFRESH:10,SUB_REFRESH:11}},Command:{fields:{id:{type:"uint32",id:1},method:{type:"MethodType",id:2},params:{type:"bytes",id:3}}},Reply:{fields:{id:{type:"uint32",id:1},error:{type:"Error",id:2},result:{type:"bytes",id:3}}},PushType:{values:{PUBLICATION:0,JOIN:1,LEAVE:2,UNSUB:3,MESSAGE:4}},Push:{fields:{type:{type:"PushType",id:1},channel:{type:"string",id:2},data:{type:"bytes",id:3}}},ClientInfo:{fields:{user:{type:"string",id:1},client:{type:"string",id:2},connInfo:{type:"bytes",id:3},chanInfo:{type:"bytes",id:4}}},Publication:{fields:{seq:{type:"uint32",id:1},gen:{type:"uint32",id:2},uid:{type:"string",id:3},data:{type:"bytes",id:4},info:{type:"ClientInfo",id:5}}},Join:{fields:{info:{type:"ClientInfo",id:1}}},Leave:{fields:{info:{type:"ClientInfo",id:1}}},Unsub:{fields:{resubscribe:{type:"bool",id:1}}},Message:{fields:{data:{type:"bytes",id:1}}},ConnectRequest:{fields:{token:{type:"string",id:1},data:{type:"bytes",id:2}}},ConnectResult:{fields:{client:{type:"string",id:1},version:{type:"string",id:2},expires:{type:"bool",id:3},ttl:{type:"uint32",id:4},data:{type:"bytes",id:5}}},RefreshRequest:{fields:{token:{type:"string",id:1}}},RefreshResult:{fields:{client:{type:"string",id:1},version:{type:"string",id:2},expires:{type:"bool",id:3},ttl:{type:"uint32",id:4}}},SubscribeRequest:{fields:{channel:{type:"string",id:1},token:{type:"string",id:2},recover:{type:"bool",id:3},seq:{type:"uint32",id:4},gen:{type:"uint32",id:5},epoch:{type:"string",id:6}}},SubscribeResult:{fields:{expires:{type:"bool",id:1},ttl:{type:"uint32",id:2},recoverable:{type:"bool",id:3},seq:{type:"uint32",id:4},gen:{type:"uint32",id:5},epoch:{type:"string",id:6},publications:{rule:"repeated",type:"Publication",id:7},recovered:{type:"bool",id:8}}},SubRefreshRequest:{fields:{channel:{type:"string",id:1},token:{type:"string",id:2}}},SubRefreshResult:{fields:{expires:{type:"bool",id:1},ttl:{type:"uint32",id:2}}},UnsubscribeRequest:{fields:{channel:{type:"string",id:1}}},UnsubscribeResult:{fields:{}},PublishRequest:{fields:{channel:{type:"string",id:1},data:{type:"bytes",id:2}}},PublishResult:{fields:{}},PresenceRequest:{fields:{channel:{type:"string",id:1}}},PresenceResult:{fields:{presence:{keyType:"string",type:"ClientInfo",id:1}}},PresenceStatsRequest:{fields:{channel:{type:"string",id:1}}},PresenceStatsResult:{fields:{numClients:{type:"uint32",id:1},numUsers:{type:"uint32",id:2}}},HistoryRequest:{fields:{channel:{type:"string",id:1}}},HistoryResult:{fields:{publications:{rule:"repeated",type:"Publication",id:1}}},PingRequest:{fields:{}},PingResult:{fields:{}},RPCRequest:{fields:{data:{type:"bytes",id:1}}},RPCResult:{fields:{data:{type:"bytes",id:1}}},SendRequest:{fields:{data:{type:"bytes",id:1}}}}}}}}])}); //# sourceMappingURL=centrifuge.protobuf.min.js.map \ No newline at end of file diff --git a/dist/centrifuge.protobuf.min.js.map b/dist/centrifuge.protobuf.min.js.map index 980e5819..7192b2fd 100644 --- a/dist/centrifuge.protobuf.min.js.map +++ b/dist/centrifuge.protobuf.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///centrifuge.protobuf.min.js","webpack:///webpack/bootstrap 80f113d0e59618aae6bd","webpack:///./node_modules/protobufjs/src/util.js","webpack:///./node_modules/protobufjs/src/enum.js","webpack:///./node_modules/protobufjs/src/util/minimal.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/protobufjs/src/object.js","webpack:///./node_modules/protobufjs/src/field.js","webpack:///./node_modules/events/events.js","webpack:///./src/utils.js","webpack:///./node_modules/protobufjs/src/namespace.js","webpack:///./node_modules/protobufjs/src/types.js","webpack:///./src/centrifuge.js","webpack:///./src/subscription.js","webpack:///./src/json.js","webpack:///./node_modules/protobufjs/src/writer.js","webpack:///./node_modules/protobufjs/src/reader.js","webpack:///./node_modules/protobufjs/src/oneof.js","webpack:///./node_modules/protobufjs/src/message.js","webpack:///./node_modules/@protobufjs/aspromise/index.js","webpack:///./node_modules/@protobufjs/inquire/index.js","webpack:///./node_modules/protobufjs/src/rpc.js","webpack:///./node_modules/protobufjs/src/roots.js","webpack:///./node_modules/protobufjs/src/encoder.js","webpack:///./node_modules/protobufjs/src/type.js","webpack:///./node_modules/protobufjs/src/mapfield.js","webpack:///./node_modules/protobufjs/src/service.js","webpack:///./node_modules/protobufjs/src/method.js","webpack:///./node_modules/protobufjs/src/decoder.js","webpack:///./node_modules/protobufjs/src/verifier.js","webpack:///./node_modules/protobufjs/src/converter.js","webpack:///./node_modules/protobufjs/src/wrappers.js","webpack:///./node_modules/protobufjs/src/root.js","webpack:///./src/index_protobuf.js","webpack:///./src/protobuf.js","webpack:///./node_modules/protobufjs/light.js","webpack:///./node_modules/protobufjs/src/index-light.js","webpack:///./node_modules/protobufjs/src/index-minimal.js","webpack:///./node_modules/@protobufjs/base64/index.js","webpack:///./node_modules/@protobufjs/eventemitter/index.js","webpack:///./node_modules/@protobufjs/float/index.js","webpack:///./node_modules/@protobufjs/utf8/index.js","webpack:///./node_modules/@protobufjs/pool/index.js","webpack:///./node_modules/protobufjs/src/util/longbits.js","webpack:///./node_modules/protobufjs/src/writer_buffer.js","webpack:///./node_modules/protobufjs/src/reader_buffer.js","webpack:///./node_modules/protobufjs/src/rpc/service.js","webpack:///./node_modules/@protobufjs/codegen/index.js","webpack:///./node_modules/@protobufjs/fetch/index.js","webpack:///./node_modules/@protobufjs/path/index.js","webpack:///./src/client.proto.json"],"names":["root","factory","exports","module","define","amd","self","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","Type","Enum","util","roots","codegen","fetch","path","fs","inquire","toArray","keys","array","Array","length","index","toObject","key","val","undefined","safePropBackslashRe","safePropQuoteRe","isReserved","test","safeProp","prop","replace","ucFirst","str","charAt","toUpperCase","substring","camelCaseRe","camelCase","$0","$1","compareFieldsById","a","b","id","decorateType","ctor","typeName","$type","decorateRoot","remove","add","type","value","decorateEnumIndex","decorateEnum","enm","values","options","comment","comments","ReflectionObject","TypeError","valuesById","create","reserved","constructor","className","Namespace","fromJSON","json","toJSON","toJSONOptions","keepComments","Boolean","isString","isInteger","Error","isReservedId","isReservedName","allow_alias","global","merge","dst","src","ifNotSet","newError","CustomError","message","properties","captureStackTrace","stack","toString","asPromise","base64","EventEmitter","float","utf8","pool","LongBits","emptyArray","freeze","emptyObject","isNode","process","versions","node","Number","isFinite","Math","floor","String","isObject","isset","isSet","obj","isArray","Buffer","utf8Write","e","_Buffer_from","_Buffer_allocUnsafe","newBuffer","sizeOrArray","Uint8Array","Long","dcodeIO","key2Re","key32Re","key64Re","longToHash","from","toHash","zeroHash","longFromHash","hash","unsigned","bits","fromHash","fromBits","lo","hi","toNumber","lcFirst","toLowerCase","ProtocolError","oneOfGetter","fieldNames","fieldMap","oneOfSetter","longs","enums","bytes","_configure","encoding","allocUnsafe","size","g","Function","eval","window","parent","resolved","filename","Root","defineProperties","ptr","fullName","unshift","join","onAdd","_handleAdd","onRemove","_handleRemove","resolve","getOption","setOption","setOptions","Root_","Field","rule","extend","ruleRe","required","optional","repeated","map","partOf","typeDefault","defaultValue","long","types","resolvedType","extensionField","declaringField","_packed","defaults","lookupTypeOrEnum","packed","fromNumber","buf","decode","write","fieldId","fieldType","fieldRule","fieldName","default","Type_","_events","_maxListeners","isFunction","arg","isNumber","isUndefined","defaultMaxListeners","setMaxListeners","isNaN","emit","er","handler","len","args","listeners","error","arguments","err","context","slice","apply","addListener","listener","newListener","push","warned","console","trace","on","once","removeListener","fired","list","position","splice","removeAllListeners","listenerCount","evlistener","emitter","startsWith","prefix","lastIndexOf","log","level","logger","backoff","step","min","max","jitter","random","interval","pow","errorExists","data","arrayToJSON","nested","_nestedArray","clearCache","namespace","Service","addJSON","nestedArray","nestedJson","ns","names","fields","methods","getEnum","prev","split","part","shift","resolveAll","lookup","filterTypes","parentAlreadyChecked","found","indexOf","lookupType","lookupEnum","lookupService","Service_","bake","offset","basic","mapKey","_interopRequireDefault","_classCallCheck","instance","Constructor","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","writable","setPrototypeOf","__proto__","Centrifuge","_typeof","Symbol","iterator","_createClass","target","props","descriptor","protoProps","staticProps","_events2","_subscription","_subscription2","_json","_utils","_EventEmitter","url","_this","getPrototypeOf","_url","_sockjs","_isSockjs","_binary","_methodType","_pushType","_encoder","_decoder","_status","_reconnect","_reconnecting","_transport","_transportName","_transportClosed","_messageId","_clientID","_refreshRequired","_subs","_lastSeq","_lastGen","_lastEpoch","_messages","_isBatching","_isSubscribeBatching","_privateChannels","_numRefreshFailed","_refreshTimeout","_pingTimeout","_pongTimeout","_subRefreshTimeouts","_retries","_callbacks","_latency","_latencyStart","_connectData","_token","_xhrID","_xhrs","_config","debug","sockjs","promise","minRetry","maxRetry","timeout","ping","pingInterval","pongWaitTimeout","privateChannelPrefix","onTransportClose","sockjsServer","sockjsTransports","refreshEndpoint","refreshHeaders","refreshParams","refreshData","refreshAttempts","refreshInterval","onRefreshFailed","onRefresh","subscribeEndpoint","subscribeHeaders","subscribeParams","subRefreshInterval","onPrivateSubscribe","token","params","headers","callback","_this2","query","_debug","JSON","stringify","xhr","XMLHttpRequest","ActiveXObject","encodeURIComponent","open","withCredentials","setRequestHeader","headerName","onreadystatechange","readyState","status","parsed","parse","responseText","_log","setTimeout","send","WebSocket","format","_formatOverride","JsonMethodType","JsonPushType","JsonEncoder","JsonDecoder","configuration","assign","_setFormat","SockJS","newStatus","xhrID","abort","reconnect","_stopPing","callbacks","clearTimeout","errback","_createErrorObject","channel","sub","_isSuccess","_triggerUnsubscribe","_recover","_setSubscribing","_setUnsubscribed","_abortInflightXHRs","_clearSubRefreshTimeout","transport","OPEN","commands","_isTransportOpen","command","encodeCommands","_this3","sockjsOptions","transports","server","_websocketSupported","binaryType","onopen","onheartbeat","_restartPing","msg","Date","_call","then","resolveCtx","_connectResponse","decodeCommandResult","CONNECT","result","next","rejectCtx","code","_disconnect","onerror","onclose","closeEvent","reason","needReconnect","advice","event","_getRetryInterval","_refresh","_connect","onmessage","_dataReceived","_this4","method","RPC","isConnected","Promise","reject","SEND","_transportSend","PUBLISH","_this5","replies","decodeReplies","_dispatchReply","_this6","_addMessage","_registerCall","_setStatus","_setupTransport","shouldReconnect","_isDisconnected","_clearConnectedState","close","_this7","_refreshFailed","clientID","_newXHRID","cb","resp","round","REFRESH","_refreshResponse","_refreshError","_ajax","_this8","_this9","expires","client","_getTTLMilliseconds","ttl","_this10","channelsData","channels","channelData","SUB_REFRESH","_getSub","_subRefreshResponse","_subRefreshError","_this11","subRefreshTimeout","_subRefresh","_this12","isResubscribe","_this13","_setNew","SUBSCRIBE","startSubscribeBatching","_subscribe","stopSubscribeBatching","_needRecover","recover","seq","_getLastSeq","gen","_getLastGen","epoch","_getLastEpoch","_subscribeResponse","_subscribeError","UNSUBSCRIBE","_this14","wasReconnecting","_resetRetry","getTime","startBatching","_shouldResubscribe","stopBatching","_startPing","ctx","latency","_this15","_isSubscribing","_setSubscribeError","_this16","recovered","_setSubscribeSuccess","pubs","publications","reverse","_handlePublication","recoverable","_recoverable","reply","leave","unsub","unsubscribe","resubscribe","subscribe","pub","decodePush","PUBLICATION","decodePushData","MESSAGE","_handleMessage","JOIN","_handleJoin","LEAVE","_handleLeave","UNSUB","_handleUnsub","_handleReply","_handlePush","messages","_this17","PING","_pingResponse","lastSeq","lastGen","lastEpoch","_this18","_nextMessageId","_isConnected","_ping","_flush","_this19","authChannels","batch","_ret2","events","currentSub","_setEvents","_isUnsubscribed","_STATE_NEW","Subscription","centrifuge","_centrifuge","_error","_isResubscribe","_ready","_subscriptionPromise","_noResubscribe","_initializePromise","_promises","errContext","_resolve","_reject","knownEvents","ev","successContext","_getSubscribeSuccessContext","to","_getSubscribeErrorContext","noResubscribe","needTrigger","subscribeErrorContext","_unsubscribe","subPromise","_isError","res","rej","_methodCall","PRESENCE","PRESENCE_STATS","HISTORY","encodedCommands","encodedReplies","methodType","pushType","Op","fn","noop","State","writer","head","tail","states","Writer","writeByte","pos","writeVarint32","VarintOp","writeVarint64","writeFixed32","BufferWriter","alloc","subarray","_push","uint32","int32","sint32","uint64","int64","sint64","zzEncode","bool","fixed32","sfixed32","fixed64","sfixed64","writeFloatLE","double","writeDoubleLE","writeBytes","set","string","fork","reset","ldelim","finish","BufferWriter_","indexOutOfRange","reader","writeLength","RangeError","Reader","buffer","readLongVarint","readFixed32_end","end","readFixed64","BufferReader","create_array","isBuffer","_slice","readFloatLE","readDoubleLE","start","read","skip","skipType","wireType","BufferReader_","zzDecode","OneOf","oneof","fieldsArray","addFieldsToParent","field","oneofName","Message","encode","encodeDelimited","decodeDelimited","verify","fromObject","pending","moduleName","mod","genTypePartial","fieldIndex","ref","group","encoder","mtype","sort","_fieldsArray","keyType","oneofs","extensions","_fieldsById","_oneofsArray","_ctor","MapField","decoder","verifier","converter","wrappers","fieldsById","oneofsArray","generateConstructor","ctorProperties","inherited","filter","setup","wrapper","originalThis","bind","resolvedKeyType","fieldKeyType","fieldValueType","_methodsArray","service","Method","rpc","methodsArray","rpcImpl","requestDelimited","responseDelimited","rpcService","methodName","q","resolvedRequestType","resolvedResponseType","requestType","responseType","requestStream","responseStream","missing","rfield","invalid","expected","genVerifyValue","j","genVerifyKey","seenFirstField","oneofProp","genValuePartial_fromObject","isUnsigned","genValuePartial_toObject","repeatedFields","mapFields","normalFields","low","high","fromCharCode","hasKs2","type_url","substr","deferred","files","SYNC","tryHandleExtension","extendedType","sisterField","common","resolvePath","load","sync","source","imports","weakImports","queued","weak","idx","altname","readFileSync","loadSync","exposeRe","parse_","common_","_protobuf","CentrifugeProtobuf","ProtobufDecoder","ProtobufEncoder","protobuf","proto","methodValues","protobufMethodType","methodSchema","protobufPushType","PushSchema","Push","Command","Reply","_decode","_Centrifuge","build","configure","ceil","b64","s64","t","parts","chunk","charCodeAt","_listeners","evt","off","Float32Array","writeFloat_f32_cpy","f32","f8b","writeFloat_f32_rev","readFloat_f32_cpy","readFloat_f32_rev","le","writeFloatBE","readFloatBE","writeFloat_ieee754","writeUint","sign","exponent","LN2","mantissa","readFloat_ieee754","readUint","uint","NaN","Infinity","writeUintLE","writeUintBE","readUintLE","readUintBE","Float64Array","writeDouble_f64_cpy","f64","writeDouble_f64_rev","readDouble_f64_cpy","readDouble_f64_rev","writeDoubleBE","readDoubleBE","writeDouble_ieee754","off0","off1","readDouble_ieee754","c1","c2","SIZE","MAX","slab","zero","parseInt","fromString","toLong","mask","part0","part1","part2","writeStringBuffer","writeBytesBuffer","copy","byteLength","utf8Slice","rpcCall","requestCtor","responseCtor","request","response","endedByRPC","functionParams","functionName","Codegen","formatStringOrScope","verbose","scopeKeys","scopeParams","scopeValues","scopeOffset","formatParams","formatOffset","body","functionNameOverride","readFile","contents","binary","overrideMimeType","isAbsolute","normalize","absolute","originPath","includePath","alreadyNormalized","MethodType","PushType","ClientInfo","user","connInfo","chanInfo","Publication","uid","info","Join","Leave","Unsub","ConnectRequest","ConnectResult","version","RefreshRequest","RefreshResult","SubscribeRequest","SubscribeResult","SubRefreshRequest","SubRefreshResult","UnsubscribeRequest","UnsubscribeResult","PublishRequest","PublishResult","PresenceRequest","PresenceResult","presence","PresenceStatsRequest","PresenceStatsResult","numClients","numUsers","HistoryRequest","HistoryResult","PingRequest","PingResult","RPCRequest","RPCResult","SendRequest"],"mappings":"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","file":"centrifuge.protobuf.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Centrifuge\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Centrifuge\"] = factory();\n\telse\n\t\troot[\"Centrifuge\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Centrifuge\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Centrifuge\"] = factory();\n\telse\n\t\troot[\"Centrifuge\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 32);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = __webpack_require__(2);\r\n\r\nvar roots = __webpack_require__(20);\r\n\r\nvar Type, // cyclic\r\n Enum;\r\n\r\nutil.codegen = __webpack_require__(46);\r\nutil.fetch = __webpack_require__(47);\r\nutil.path = __webpack_require__(48);\r\n\r\n/**\r\n * Node's fs module if available.\r\n * @type {Object.}\r\n */\r\nutil.fs = util.inquire(\"fs\");\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (object) {\r\n var keys = Object.keys(object),\r\n array = new Array(keys.length),\r\n index = 0;\r\n while (index < keys.length)\r\n array[index] = object[keys[index++]];\r\n return array;\r\n }\r\n return [];\r\n};\r\n\r\n/**\r\n * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values.\r\n * @param {Array.<*>} array Array to convert\r\n * @returns {Object.} Converted object\r\n */\r\nutil.toObject = function toObject(array) {\r\n var object = {},\r\n index = 0;\r\n while (index < array.length) {\r\n var key = array[index++],\r\n val = array[index++];\r\n if (val !== undefined)\r\n object[key] = val;\r\n }\r\n return object;\r\n};\r\n\r\nvar safePropBackslashRe = /\\\\/g,\r\n safePropQuoteRe = /\"/g;\r\n\r\n/**\r\n * Tests whether the specified name is a reserved word in JS.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nutil.isReserved = function isReserved(name) {\r\n return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test(name);\r\n};\r\n\r\n/**\r\n * Returns a safe property accessor for the specified property name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n if (!/^[$\\w_]+$/.test(prop) || util.isReserved(prop))\r\n return \"[\\\"\" + prop.replace(safePropBackslashRe, \"\\\\\\\\\").replace(safePropQuoteRe, \"\\\\\\\"\") + \"\\\"]\";\r\n return \".\" + prop;\r\n};\r\n\r\n/**\r\n * Converts the first character of a string to upper case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.ucFirst = function ucFirst(str) {\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\nvar camelCaseRe = /_([a-z])/g;\r\n\r\n/**\r\n * Converts a string to camel case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.camelCase = function camelCase(str) {\r\n return str.substring(0, 1)\r\n + str.substring(1)\r\n .replace(camelCaseRe, function($0, $1) { return $1.toUpperCase(); });\r\n};\r\n\r\n/**\r\n * Compares reflected fields by id.\r\n * @param {Field} a First field\r\n * @param {Field} b Second field\r\n * @returns {number} Comparison value\r\n */\r\nutil.compareFieldsById = function compareFieldsById(a, b) {\r\n return a.id - b.id;\r\n};\r\n\r\n/**\r\n * Decorator helper for types (TypeScript).\r\n * @param {Constructor} ctor Constructor function\r\n * @param {string} [typeName] Type name, defaults to the constructor's name\r\n * @returns {Type} Reflected type\r\n * @template T extends Message\r\n * @property {Root} root Decorators root\r\n */\r\nutil.decorateType = function decorateType(ctor, typeName) {\r\n\r\n /* istanbul ignore if */\r\n if (ctor.$type) {\r\n if (typeName && ctor.$type.name !== typeName) {\r\n util.decorateRoot.remove(ctor.$type);\r\n ctor.$type.name = typeName;\r\n util.decorateRoot.add(ctor.$type);\r\n }\r\n return ctor.$type;\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = __webpack_require__(22);\r\n\r\n var type = new Type(typeName || ctor.name);\r\n util.decorateRoot.add(type);\r\n type.ctor = ctor; // sets up .encode, .decode etc.\r\n Object.defineProperty(ctor, \"$type\", { value: type, enumerable: false });\r\n Object.defineProperty(ctor.prototype, \"$type\", { value: type, enumerable: false });\r\n return type;\r\n};\r\n\r\nvar decorateEnumIndex = 0;\r\n\r\n/**\r\n * Decorator helper for enums (TypeScript).\r\n * @param {Object} object Enum object\r\n * @returns {Enum} Reflected enum\r\n */\r\nutil.decorateEnum = function decorateEnum(object) {\r\n\r\n /* istanbul ignore if */\r\n if (object.$type)\r\n return object.$type;\r\n\r\n /* istanbul ignore next */\r\n if (!Enum)\r\n Enum = __webpack_require__(1);\r\n\r\n var enm = new Enum(\"Enum\" + decorateEnumIndex++, object);\r\n util.decorateRoot.add(enm);\r\n Object.defineProperty(object, \"$type\", { value: enm, enumerable: false });\r\n return enm;\r\n};\r\n\r\n/**\r\n * Decorator root (TypeScript).\r\n * @name util.decorateRoot\r\n * @type {Root}\r\n * @readonly\r\n */\r\nObject.defineProperty(util, \"decorateRoot\", {\r\n get: function() {\r\n return roots[\"decorated\"] || (roots[\"decorated\"] = new (__webpack_require__(30))());\r\n }\r\n});\r\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Enum;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = __webpack_require__(4);\r\n((Enum.prototype = Object.create(ReflectionObject.prototype)).constructor = Enum).className = \"Enum\";\r\n\r\nvar Namespace = __webpack_require__(8),\r\n util = __webpack_require__(0);\r\n\r\n/**\r\n * Constructs a new enum instance.\r\n * @classdesc Reflected enum.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {Object.} [values] Enum values as an object, by name\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] The comment for this enum\r\n * @param {Object.} [comments] The value comments for this enum\r\n */\r\nfunction Enum(name, values, options, comment, comments) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n if (values && typeof values !== \"object\")\r\n throw TypeError(\"values must be an object\");\r\n\r\n /**\r\n * Enum values by id.\r\n * @type {Object.}\r\n */\r\n this.valuesById = {};\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = Object.create(this.valuesById); // toJSON, marker\r\n\r\n /**\r\n * Enum comment text.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n\r\n /**\r\n * Value comment texts, if any.\r\n * @type {Object.}\r\n */\r\n this.comments = comments || {};\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {Array.}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n // Note that values inherit valuesById on their prototype which makes them a TypeScript-\r\n // compatible enum. This is used by pbts to write actual enum definitions that work for\r\n // static and reflection code alike instead of emitting generic object definitions.\r\n\r\n if (values)\r\n for (var keys = Object.keys(values), i = 0; i < keys.length; ++i)\r\n if (typeof values[keys[i]] === \"number\") // use forward entries only\r\n this.valuesById[ this.values[keys[i]] = values[keys[i]] ] = keys[i];\r\n}\r\n\r\n/**\r\n * Enum descriptor.\r\n * @interface IEnum\r\n * @property {Object.} values Enum values\r\n * @property {Object.} [options] Enum options\r\n */\r\n\r\n/**\r\n * Constructs an enum from an enum descriptor.\r\n * @param {string} name Enum name\r\n * @param {IEnum} json Enum descriptor\r\n * @returns {Enum} Created enum\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nEnum.fromJSON = function fromJSON(name, json) {\r\n var enm = new Enum(name, json.values, json.options, json.comment, json.comments);\r\n enm.reserved = json.reserved;\r\n return enm;\r\n};\r\n\r\n/**\r\n * Converts this enum to an enum descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IEnum} Enum descriptor\r\n */\r\nEnum.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"values\" , this.values,\r\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\r\n \"comment\" , keepComments ? this.comment : undefined,\r\n \"comments\" , keepComments ? this.comments : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds a value to this enum.\r\n * @param {string} name Value name\r\n * @param {number} id Value id\r\n * @param {string} [comment] Comment, if any\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnum.prototype.add = function add(name, id, comment) {\r\n // utilized by the parser but not by .fromJSON\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n if (!util.isInteger(id))\r\n throw TypeError(\"id must be an integer\");\r\n\r\n if (this.values[name] !== undefined)\r\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\r\n\r\n if (this.isReservedId(id))\r\n throw Error(\"id \" + id + \" is reserved in \" + this);\r\n\r\n if (this.isReservedName(name))\r\n throw Error(\"name '\" + name + \"' is reserved in \" + this);\r\n\r\n if (this.valuesById[id] !== undefined) {\r\n if (!(this.options && this.options.allow_alias))\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this.values[name] = id;\r\n } else\r\n this.valuesById[this.values[name] = id] = name;\r\n\r\n this.comments[name] = comment || null;\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnum.prototype.remove = function remove(name) {\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n var val = this.values[name];\r\n if (val == null)\r\n throw Error(\"name '\" + name + \"' does not exist in \" + this);\r\n\r\n delete this.valuesById[val];\r\n delete this.values[name];\r\n delete this.comments[name];\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nEnum.prototype.isReservedId = function isReservedId(id) {\r\n return Namespace.isReservedId(this.reserved, id);\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nEnum.prototype.isReservedName = function isReservedName(name) {\r\n return Namespace.isReservedName(this.reserved, name);\r\n};\r\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\r\nvar util = exports;\r\n\r\n// used to return a Promise where callback is omitted\r\nutil.asPromise = __webpack_require__(17);\r\n\r\n// converts to / from base64 encoded strings\r\nutil.base64 = __webpack_require__(37);\r\n\r\n// base class of rpc.Service\r\nutil.EventEmitter = __webpack_require__(38);\r\n\r\n// float handling accross browsers\r\nutil.float = __webpack_require__(39);\r\n\r\n// requires modules optionally and hides the call from bundlers\r\nutil.inquire = __webpack_require__(18);\r\n\r\n// converts to / from utf8 encoded strings\r\nutil.utf8 = __webpack_require__(40);\r\n\r\n// provides a node-like buffer pool in the browser\r\nutil.pool = __webpack_require__(41);\r\n\r\n// utility to work with the low and high bits of a 64 bit value\r\nutil.LongBits = __webpack_require__(42);\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n * @const\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n * @const\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n * @const\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\r\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nutil.isString = function isString(value) {\r\n return typeof value === \"string\" || value instanceof String;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return value && typeof value === \"object\";\r\n};\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * This is an alias of {@link util.isSet}.\r\n * @function\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isset =\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isSet = function isSet(obj, prop) {\r\n var value = obj[prop];\r\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\r\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\r\n return false;\r\n};\r\n\r\n/**\r\n * Any compatible Buffer instance.\r\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\r\n * @interface Buffer\r\n * @extends Uint8Array\r\n */\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {Constructor}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\r\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\r\n } catch (e) {\r\n /* istanbul ignore next */\r\n return null;\r\n }\r\n})();\r\n\r\n// Internal alias of or polyfull for Buffer.from.\r\nutil._Buffer_from = null;\r\n\r\n// Internal alias of or polyfill for Buffer.allocUnsafe.\r\nutil._Buffer_allocUnsafe = null;\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array|Buffer} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n /* istanbul ignore next */\r\n return typeof sizeOrArray === \"number\"\r\n ? util.Buffer\r\n ? util._Buffer_allocUnsafe(sizeOrArray)\r\n : new util.Array(sizeOrArray)\r\n : util.Buffer\r\n ? util._Buffer_from(sizeOrArray)\r\n : typeof Uint8Array === \"undefined\"\r\n ? sizeOrArray\r\n : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {Constructor}\r\n */\r\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\r\n * @interface Long\r\n * @property {number} low Low bits\r\n * @property {number} high High bits\r\n * @property {boolean} unsigned Whether unsigned or not\r\n */\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {Constructor}\r\n */\r\nutil.Long = /* istanbul ignore next */ global.dcodeIO && /* istanbul ignore next */ global.dcodeIO.Long || util.inquire(\"long\");\r\n\r\n/**\r\n * Regular expression used to verify 2 bit (`bool`) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key2Re = /^true|false|0|1$/;\r\n\r\n/**\r\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\r\n\r\n/**\r\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? util.LongBits.from(value).toHash()\r\n : util.LongBits.zeroHash;\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = util.LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @memberof util\r\n * @param {Object.} dst Destination object\r\n * @param {Object.} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.} Destination object\r\n */\r\nfunction merge(dst, src, ifNotSet) { // used by converters\r\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n return dst;\r\n}\r\n\r\nutil.merge = merge;\r\n\r\n/**\r\n * Converts the first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a custom error constructor.\r\n * @memberof util\r\n * @param {string} name Error name\r\n * @returns {Constructor} Custom error constructor\r\n */\r\nfunction newError(name) {\r\n\r\n function CustomError(message, properties) {\r\n\r\n if (!(this instanceof CustomError))\r\n return new CustomError(message, properties);\r\n\r\n // Error.call(this, message);\r\n // ^ just returns a new error instance because the ctor can be called as a function\r\n\r\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\r\n\r\n /* istanbul ignore next */\r\n if (Error.captureStackTrace) // node\r\n Error.captureStackTrace(this, CustomError);\r\n else\r\n Object.defineProperty(this, \"stack\", { value: (new Error()).stack || \"\" });\r\n\r\n if (properties)\r\n merge(this, properties);\r\n }\r\n\r\n (CustomError.prototype = Object.create(Error.prototype)).constructor = CustomError;\r\n\r\n Object.defineProperty(CustomError.prototype, \"name\", { get: function() { return name; } });\r\n\r\n CustomError.prototype.toString = function toString() {\r\n return this.name + \": \" + this.message;\r\n };\r\n\r\n return CustomError;\r\n}\r\n\r\nutil.newError = newError;\r\n\r\n/**\r\n * Constructs a new protocol error.\r\n * @classdesc Error subclass indicating a protocol specifc error.\r\n * @memberof util\r\n * @extends Error\r\n * @template T extends Message\r\n * @constructor\r\n * @param {string} message Error message\r\n * @param {Object.} [properties] Additional properties\r\n * @example\r\n * try {\r\n * MyMessage.decode(someBuffer); // throws if required fields are missing\r\n * } catch (e) {\r\n * if (e instanceof ProtocolError && e.instance)\r\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\r\n * }\r\n */\r\nutil.ProtocolError = newError(\"ProtocolError\");\r\n\r\n/**\r\n * So far decoded message instance.\r\n * @name util.ProtocolError#instance\r\n * @type {Message}\r\n */\r\n\r\n/**\r\n * A OneOf getter as returned by {@link util.oneOfGetter}.\r\n * @typedef OneOfGetter\r\n * @type {function}\r\n * @returns {string|undefined} Set field name, if any\r\n */\r\n\r\n/**\r\n * Builds a getter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfGetter} Unbound getter\r\n */\r\nutil.oneOfGetter = function getOneOf(fieldNames) {\r\n var fieldMap = {};\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n fieldMap[fieldNames[i]] = 1;\r\n\r\n /**\r\n * @returns {string|undefined} Set field name, if any\r\n * @this Object\r\n * @ignore\r\n */\r\n return function() { // eslint-disable-line consistent-return\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\r\n return keys[i];\r\n };\r\n};\r\n\r\n/**\r\n * A OneOf setter as returned by {@link util.oneOfSetter}.\r\n * @typedef OneOfSetter\r\n * @type {function}\r\n * @param {string|undefined} value Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Builds a setter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfSetter} Unbound setter\r\n */\r\nutil.oneOfSetter = function setOneOf(fieldNames) {\r\n\r\n /**\r\n * @param {string} name Field name\r\n * @returns {undefined}\r\n * @this Object\r\n * @ignore\r\n */\r\n return function(name) {\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n if (fieldNames[i] !== name)\r\n delete this[fieldNames[i]];\r\n };\r\n};\r\n\r\n/**\r\n * Default conversion options used for {@link Message#toJSON} implementations.\r\n *\r\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\r\n *\r\n * - Longs become strings\r\n * - Enums become string keys\r\n * - Bytes become base64 encoded strings\r\n * - (Sub-)Messages become plain objects\r\n * - Maps become plain objects with all string keys\r\n * - Repeated fields become arrays\r\n * - NaN and Infinity for float and double fields become strings\r\n *\r\n * @type {IConversionOptions}\r\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\r\n */\r\nutil.toJSONOptions = {\r\n longs: String,\r\n enums: String,\r\n bytes: String,\r\n json: true\r\n};\r\n\r\nutil._configure = function() {\r\n var Buffer = util.Buffer;\r\n /* istanbul ignore if */\r\n if (!Buffer) {\r\n util._Buffer_from = util._Buffer_allocUnsafe = null;\r\n return;\r\n }\r\n // because node 4.x buffers are incompatible & immutable\r\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\r\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\r\n /* istanbul ignore next */\r\n function Buffer_from(value, encoding) {\r\n return new Buffer(value, encoding);\r\n };\r\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\r\n /* istanbul ignore next */\r\n function Buffer_allocUnsafe(size) {\r\n return new Buffer(size);\r\n };\r\n};\r\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)))\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = ReflectionObject;\r\n\r\nReflectionObject.className = \"ReflectionObject\";\r\n\r\nvar util = __webpack_require__(0);\r\n\r\nvar Root; // cyclic\r\n\r\n/**\r\n * Constructs a new reflection object instance.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object.} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n if (options && !util.isObject(options))\r\n throw TypeError(\"options must be an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|undefined}\r\n */\r\n this.options = options; // toJSON\r\n\r\n /**\r\n * Unique name within its namespace.\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Parent namespace.\r\n * @type {Namespace|null}\r\n */\r\n this.parent = null;\r\n\r\n /**\r\n * Whether already resolved or not.\r\n * @type {boolean}\r\n */\r\n this.resolved = false;\r\n\r\n /**\r\n * Comment text, if any.\r\n * @type {string|null}\r\n */\r\n this.comment = null;\r\n\r\n /**\r\n * Defining file name.\r\n * @type {string|null}\r\n */\r\n this.filename = null;\r\n}\r\n\r\nObject.defineProperties(ReflectionObject.prototype, {\r\n\r\n /**\r\n * Reference to the root namespace.\r\n * @name ReflectionObject#root\r\n * @type {Root}\r\n * @readonly\r\n */\r\n root: {\r\n get: function() {\r\n var ptr = this;\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n return ptr;\r\n }\r\n },\r\n\r\n /**\r\n * Full name including leading dot.\r\n * @name ReflectionObject#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: function() {\r\n var path = [ this.name ],\r\n ptr = this.parent;\r\n while (ptr) {\r\n path.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n }\r\n return path.join(\".\");\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Converts this reflection object to its descriptor representation.\r\n * @returns {Object.} Descriptor\r\n * @abstract\r\n */\r\nReflectionObject.prototype.toJSON = /* istanbul ignore next */ function toJSON() {\r\n throw Error(); // not implemented, shouldn't happen\r\n};\r\n\r\n/**\r\n * Called when this object is added to a parent.\r\n * @param {ReflectionObject} parent Parent added to\r\n * @returns {undefined}\r\n */\r\nReflectionObject.prototype.onAdd = function onAdd(parent) {\r\n if (this.parent && this.parent !== parent)\r\n this.parent.remove(this);\r\n this.parent = parent;\r\n this.resolved = false;\r\n var root = parent.root;\r\n if (root instanceof Root)\r\n root._handleAdd(this);\r\n};\r\n\r\n/**\r\n * Called when this object is removed from a parent.\r\n * @param {ReflectionObject} parent Parent removed from\r\n * @returns {undefined}\r\n */\r\nReflectionObject.prototype.onRemove = function onRemove(parent) {\r\n var root = parent.root;\r\n if (root instanceof Root)\r\n root._handleRemove(this);\r\n this.parent = null;\r\n this.resolved = false;\r\n};\r\n\r\n/**\r\n * Resolves this objects type references.\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n if (this.root instanceof Root)\r\n this.resolved = true; // only if part of a root\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\nReflectionObject.prototype.getOption = function getOption(name) {\r\n if (this.options)\r\n return this.options[name];\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Sets an option.\r\n * @param {string} name Option name\r\n * @param {*} value Option value\r\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (!ifNotSet || !this.options || this.options[name] === undefined)\r\n (this.options || (this.options = {}))[name] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets multiple options.\r\n * @param {Object.} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n for (var keys = Object.keys(options), i = 0; i < keys.length; ++i)\r\n this.setOption(keys[i], options[keys[i]], ifNotSet);\r\n return this;\r\n};\r\n\r\n/**\r\n * Converts this instance to its string representation.\r\n * @returns {string} Class name[, space, full name]\r\n */\r\nReflectionObject.prototype.toString = function toString() {\r\n var className = this.constructor.className,\r\n fullName = this.fullName;\r\n if (fullName.length)\r\n return className + \" \" + fullName;\r\n return className;\r\n};\r\n\r\nReflectionObject._configure = function(Root_) {\r\n Root = Root_;\r\n};\r\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Field;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = __webpack_require__(4);\r\n((Field.prototype = Object.create(ReflectionObject.prototype)).constructor = Field).className = \"Field\";\r\n\r\nvar Enum = __webpack_require__(1),\r\n types = __webpack_require__(9),\r\n util = __webpack_require__(0);\r\n\r\nvar Type; // cyclic\r\n\r\nvar ruleRe = /^required|optional|repeated$/;\r\n\r\n/**\r\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\r\n * @name Field\r\n * @classdesc Reflected message field.\r\n * @extends FieldBase\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string|Object.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n */\r\n\r\n/**\r\n * Constructs a field from a field descriptor.\r\n * @param {string} name Field name\r\n * @param {IField} json Field descriptor\r\n * @returns {Field} Created field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nField.fromJSON = function fromJSON(name, json) {\r\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Not an actual constructor. Use {@link Field} instead.\r\n * @classdesc Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports FieldBase\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string|Object.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction Field(name, id, type, rule, extend, options, comment) {\r\n\r\n if (util.isObject(rule)) {\r\n comment = extend;\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n comment = options;\r\n options = extend;\r\n extend = undefined;\r\n }\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id must be a non-negative integer\");\r\n\r\n if (!util.isString(type))\r\n throw TypeError(\"type must be a string\");\r\n\r\n if (rule !== undefined && !ruleRe.test(rule = rule.toString().toLowerCase()))\r\n throw TypeError(\"rule must be a string rule\");\r\n\r\n if (extend !== undefined && !util.isString(extend))\r\n throw TypeError(\"extend must be a string\");\r\n\r\n /**\r\n * Field rule, if any.\r\n * @type {string|undefined}\r\n */\r\n this.rule = rule && rule !== \"optional\" ? rule : undefined; // toJSON\r\n\r\n /**\r\n * Field type.\r\n * @type {string}\r\n */\r\n this.type = type; // toJSON\r\n\r\n /**\r\n * Unique field id.\r\n * @type {number}\r\n */\r\n this.id = id; // toJSON, marker\r\n\r\n /**\r\n * Extended type if different from parent.\r\n * @type {string|undefined}\r\n */\r\n this.extend = extend || undefined; // toJSON\r\n\r\n /**\r\n * Whether this field is required.\r\n * @type {boolean}\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Whether this field is optional.\r\n * @type {boolean}\r\n */\r\n this.optional = !this.required;\r\n\r\n /**\r\n * Whether this field is repeated.\r\n * @type {boolean}\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Whether this field is a map or not.\r\n * @type {boolean}\r\n */\r\n this.map = false;\r\n\r\n /**\r\n * Message this field belongs to.\r\n * @type {Type|null}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {OneOf|null}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field type's default value.\r\n * @type {*}\r\n */\r\n this.typeDefault = null;\r\n\r\n /**\r\n * The field's default value on prototypes.\r\n * @type {*}\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Whether this field's value should be treated as a long.\r\n * @type {boolean}\r\n */\r\n this.long = util.Long ? types.long[type] !== undefined : /* istanbul ignore next */ false;\r\n\r\n /**\r\n * Whether this field's value is a buffer.\r\n * @type {boolean}\r\n */\r\n this.bytes = type === \"bytes\";\r\n\r\n /**\r\n * Resolved type if not a basic type.\r\n * @type {Type|Enum|null}\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Sister-field within the extended type if a declaring extension field.\r\n * @type {Field|null}\r\n */\r\n this.extensionField = null;\r\n\r\n /**\r\n * Sister-field within the declaring namespace if an extended field.\r\n * @type {Field|null}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {boolean|null}\r\n * @private\r\n */\r\n this._packed = null;\r\n\r\n /**\r\n * Comment for this field.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\nObject.defineProperty(Field.prototype, \"packed\", {\r\n get: function() {\r\n // defaults to packed=true if not explicity set to false\r\n if (this._packed === null)\r\n this._packed = this.getOption(\"packed\") !== false;\r\n return this._packed;\r\n }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nField.prototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\") // clear cached before setting\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Field descriptor.\r\n * @interface IField\r\n * @property {string} [rule=\"optional\"] Field rule\r\n * @property {string} type Field type\r\n * @property {number} id Field id\r\n * @property {Object.} [options] Field options\r\n */\r\n\r\n/**\r\n * Extension field descriptor.\r\n * @interface IExtensionField\r\n * @extends IField\r\n * @property {string} extend Extended type\r\n */\r\n\r\n/**\r\n * Converts this field to a field descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IField} Field descriptor\r\n */\r\nField.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"rule\" , this.rule !== \"optional\" && this.rule || undefined,\r\n \"type\" , this.type,\r\n \"id\" , this.id,\r\n \"extend\" , this.extend,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Resolves this field's type references.\r\n * @returns {Field} `this`\r\n * @throws {Error} If any reference cannot be resolved\r\n */\r\nField.prototype.resolve = function resolve() {\r\n\r\n if (this.resolved)\r\n return this;\r\n\r\n if ((this.typeDefault = types.defaults[this.type]) === undefined) { // if not a basic type, resolve it\r\n this.resolvedType = (this.declaringField ? this.declaringField.parent : this.parent).lookupTypeOrEnum(this.type);\r\n if (this.resolvedType instanceof Type)\r\n this.typeDefault = null;\r\n else // instanceof Enum\r\n this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\r\n }\r\n\r\n // use explicitly set default value if present\r\n if (this.options && this.options[\"default\"] != null) {\r\n this.typeDefault = this.options[\"default\"];\r\n if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\r\n this.typeDefault = this.resolvedType.values[this.typeDefault];\r\n }\r\n\r\n // remove unnecessary options\r\n if (this.options) {\r\n if (this.options.packed === true || this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum))\r\n delete this.options.packed;\r\n if (!Object.keys(this.options).length)\r\n this.options = undefined;\r\n }\r\n\r\n // convert to internal data type if necesssary\r\n if (this.long) {\r\n this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\r\n\r\n /* istanbul ignore else */\r\n if (Object.freeze)\r\n Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n\r\n } else if (this.bytes && typeof this.typeDefault === \"string\") {\r\n var buf;\r\n if (util.base64.test(this.typeDefault))\r\n util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\r\n else\r\n util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\r\n this.typeDefault = buf;\r\n }\r\n\r\n // take special care of maps and repeated fields\r\n if (this.map)\r\n this.defaultValue = util.emptyObject;\r\n else if (this.repeated)\r\n this.defaultValue = util.emptyArray;\r\n else\r\n this.defaultValue = this.typeDefault;\r\n\r\n // ensure proper value on prototype\r\n if (this.parent instanceof Type)\r\n this.parent.ctor.prototype[this.name] = this.defaultValue;\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript).\r\n * @typedef FieldDecorator\r\n * @type {function}\r\n * @param {Object} prototype Target prototype\r\n * @param {string} fieldName Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Field decorator (TypeScript).\r\n * @name Field.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"string\"|\"bool\"|\"bytes\"|Object} fieldType Field type\r\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\r\n * @param {T} [defaultValue] Default value\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[]\r\n */\r\nField.d = function decorateField(fieldId, fieldType, fieldRule, defaultValue) {\r\n\r\n // submessage: decorate the submessage and use its name as the type\r\n if (typeof fieldType === \"function\")\r\n fieldType = util.decorateType(fieldType).name;\r\n\r\n // enum reference: create a reflected copy of the enum and keep reuseing it\r\n else if (fieldType && typeof fieldType === \"object\")\r\n fieldType = util.decorateEnum(fieldType).name;\r\n\r\n return function fieldDecorator(prototype, fieldName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new Field(fieldName, fieldId, fieldType, fieldRule, { \"default\": defaultValue }));\r\n };\r\n};\r\n\r\n/**\r\n * Field decorator (TypeScript).\r\n * @name Field.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {Constructor|string} fieldType Field type\r\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends Message\r\n * @variation 2\r\n */\r\n// like Field.d but without a default value\r\n\r\nField._configure = function configure(Type_) {\r\n Type = Type_;\r\n};\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.startsWith = startsWith;\nexports.isFunction = isFunction;\nexports.log = log;\nexports.backoff = backoff;\nexports.errorExists = errorExists;\nfunction startsWith(value, prefix) {\n return value.lastIndexOf(prefix, 0) === 0;\n};\n\nfunction isFunction(value) {\n if (value === undefined || value === null) {\n return false;\n }\n return typeof value === 'function';\n};\n\nfunction log(level, args) {\n if (global.console) {\n var logger = global.console[level];\n\n if (isFunction(logger)) {\n logger.apply(global.console, args);\n }\n }\n};\n\nfunction backoff(step, min, max) {\n var jitter = 0.5 * Math.random();\n var interval = Math.min(max, min * Math.pow(2, step + 1));\n\n return Math.floor((1 - jitter) * interval);\n};\n\nfunction errorExists(data) {\n return 'error' in data && data.error !== null;\n};\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)))\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Namespace;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = __webpack_require__(4);\r\n((Namespace.prototype = Object.create(ReflectionObject.prototype)).constructor = Namespace).className = \"Namespace\";\r\n\r\nvar Enum = __webpack_require__(1),\r\n Field = __webpack_require__(5),\r\n util = __webpack_require__(0);\r\n\r\nvar Type, // cyclic\r\n Service; // \"\r\n\r\n/**\r\n * Constructs a new namespace instance.\r\n * @name Namespace\r\n * @classdesc Reflected namespace.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\r\n */\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @memberof Namespace\r\n * @function\r\n * @param {string} name Namespace name\r\n * @param {Object.} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array, toJSONOptions) {\r\n if (!(array && array.length))\r\n return undefined;\r\n var obj = {};\r\n for (var i = 0; i < array.length; ++i)\r\n obj[array[i].name] = array[i].toJSON(toJSONOptions);\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {Array.|undefined} reserved Array of reserved ranges and names\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nNamespace.isReservedId = function isReservedId(reserved, id) {\r\n if (reserved)\r\n for (var i = 0; i < reserved.length; ++i)\r\n if (typeof reserved[i] !== \"string\" && reserved[i][0] <= id && reserved[i][1] >= id)\r\n return true;\r\n return false;\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {Array.|undefined} reserved Array of reserved ranges and names\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nNamespace.isReservedName = function isReservedName(reserved, name) {\r\n if (reserved)\r\n for (var i = 0; i < reserved.length; ++i)\r\n if (reserved[i] === name)\r\n return true;\r\n return false;\r\n};\r\n\r\n/**\r\n * Not an actual constructor. Use {@link Namespace} instead.\r\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports NamespaceBase\r\n * @extends ReflectionObject\r\n * @abstract\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\r\n * @see {@link Namespace}\r\n */\r\nfunction Namespace(name, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Nested objects by name.\r\n * @type {Object.|undefined}\r\n */\r\n this.nested = undefined; // toJSON\r\n\r\n /**\r\n * Cached nested objects as an array.\r\n * @type {ReflectionObject[]|null}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n return namespace;\r\n}\r\n\r\n/**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name NamespaceBase#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(Namespace.prototype, \"nestedArray\", {\r\n get: function() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n});\r\n\r\n/**\r\n * Namespace descriptor.\r\n * @interface INamespace\r\n * @property {Object.} [options] Namespace options\r\n * @property {Object.} [nested] Nested object descriptors\r\n */\r\n\r\n/**\r\n * Any extension field descriptor.\r\n * @typedef AnyExtensionField\r\n * @type {IExtensionField|IExtensionMapField}\r\n */\r\n\r\n/**\r\n * Any nested object descriptor.\r\n * @typedef AnyNestedObject\r\n * @type {IEnum|IType|IService|AnyExtensionField|INamespace}\r\n */\r\n// ^ BEWARE: VSCode hangs forever when using more than 5 types (that's why AnyExtensionField exists in the first place)\r\n\r\n/**\r\n * Converts this namespace to a namespace descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {INamespace} Namespace descriptor\r\n */\r\nNamespace.prototype.toJSON = function toJSON(toJSONOptions) {\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"nested\" , arrayToJSON(this.nestedArray, toJSONOptions)\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds nested objects to this namespace from nested object descriptors.\r\n * @param {Object.} nestedJson Any nested object descriptors\r\n * @returns {Namespace} `this`\r\n */\r\nNamespace.prototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n /* istanbul ignore else */\r\n if (nestedJson) {\r\n for (var names = Object.keys(nestedJson), i = 0, nested; i < names.length; ++i) {\r\n nested = nestedJson[names[i]];\r\n ns.add( // most to least likely\r\n ( nested.fields !== undefined\r\n ? Type.fromJSON\r\n : nested.values !== undefined\r\n ? Enum.fromJSON\r\n : nested.methods !== undefined\r\n ? Service.fromJSON\r\n : nested.id !== undefined\r\n ? Field.fromJSON\r\n : Namespace.fromJSON )(names[i], nested)\r\n );\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets the nested object of the specified name.\r\n * @param {string} name Nested object name\r\n * @returns {ReflectionObject|null} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespace.prototype.get = function get(name) {\r\n return this.nested && this.nested[name]\r\n || null;\r\n};\r\n\r\n/**\r\n * Gets the values of the nested {@link Enum|enum} of the specified name.\r\n * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`.\r\n * @param {string} name Nested enum name\r\n * @returns {Object.} Enum values\r\n * @throws {Error} If there is no such enum\r\n */\r\nNamespace.prototype.getEnum = function getEnum(name) {\r\n if (this.nested && this.nested[name] instanceof Enum)\r\n return this.nested[name].values;\r\n throw Error(\"no such enum: \" + name);\r\n};\r\n\r\n/**\r\n * Adds a nested object to this namespace.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name\r\n */\r\nNamespace.prototype.add = function add(object) {\r\n\r\n if (!(object instanceof Field && object.extend !== undefined || object instanceof Type || object instanceof Enum || object instanceof Service || object instanceof Namespace))\r\n throw TypeError(\"object must be a valid nested object\");\r\n\r\n if (!this.nested)\r\n this.nested = {};\r\n else {\r\n var prev = this.get(object.name);\r\n if (prev) {\r\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\r\n // replace plain namespace but keep existing nested elements and options\r\n var nested = prev.nestedArray;\r\n for (var i = 0; i < nested.length; ++i)\r\n object.add(nested[i]);\r\n this.remove(prev);\r\n if (!this.nested)\r\n this.nested = {};\r\n object.setOptions(prev.options, true);\r\n\r\n } else\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n }\r\n }\r\n this.nested[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this namespace.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this namespace\r\n */\r\nNamespace.prototype.remove = function remove(object) {\r\n\r\n if (!(object instanceof ReflectionObject))\r\n throw TypeError(\"object must be a ReflectionObject\");\r\n if (object.parent !== this)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.nested[object.name];\r\n if (!Object.keys(this.nested).length)\r\n this.nested = undefined;\r\n\r\n object.onRemove(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Defines additial namespaces within this one if not yet existing.\r\n * @param {string|string[]} path Path to create\r\n * @param {*} [json] Nested types to create from JSON\r\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\r\n */\r\nNamespace.prototype.define = function define(path, json) {\r\n\r\n if (util.isString(path))\r\n path = path.split(\".\");\r\n else if (!Array.isArray(path))\r\n throw TypeError(\"illegal path\");\r\n if (path && path.length && path[0] === \"\")\r\n throw Error(\"path must be relative\");\r\n\r\n var ptr = this;\r\n while (path.length > 0) {\r\n var part = path.shift();\r\n if (ptr.nested && ptr.nested[part]) {\r\n ptr = ptr.nested[part];\r\n if (!(ptr instanceof Namespace))\r\n throw Error(\"path conflicts with non-namespace objects\");\r\n } else\r\n ptr.add(ptr = new Namespace(part));\r\n }\r\n if (json)\r\n ptr.addJSON(json);\r\n return ptr;\r\n};\r\n\r\n/**\r\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespace.prototype.resolveAll = function resolveAll() {\r\n var nested = this.nestedArray, i = 0;\r\n while (i < nested.length)\r\n if (nested[i] instanceof Namespace)\r\n nested[i++].resolveAll();\r\n else\r\n nested[i++].resolve();\r\n return this.resolve();\r\n};\r\n\r\n/**\r\n * Recursively looks up the reflection object matching the specified path in the scope of this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {*|Array.<*>} filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc.\r\n * @param {boolean} [parentAlreadyChecked=false] If known, whether the parent has already been checked\r\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\r\n */\r\nNamespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChecked) {\r\n\r\n /* istanbul ignore next */\r\n if (typeof filterTypes === \"boolean\") {\r\n parentAlreadyChecked = filterTypes;\r\n filterTypes = undefined;\r\n } else if (filterTypes && !Array.isArray(filterTypes))\r\n filterTypes = [ filterTypes ];\r\n\r\n if (util.isString(path) && path.length) {\r\n if (path === \".\")\r\n return this.root;\r\n path = path.split(\".\");\r\n } else if (!path.length)\r\n return this;\r\n\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.root.lookup(path.slice(1), filterTypes);\r\n\r\n // Test if the first part matches any nested object, and if so, traverse if path contains more\r\n var found = this.get(path[0]);\r\n if (found) {\r\n if (path.length === 1) {\r\n if (!filterTypes || filterTypes.indexOf(found.constructor) > -1)\r\n return found;\r\n } else if (found instanceof Namespace && (found = found.lookup(path.slice(1), filterTypes, true)))\r\n return found;\r\n\r\n // Otherwise try each nested namespace\r\n } else\r\n for (var i = 0; i < this.nestedArray.length; ++i)\r\n if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i].lookup(path, filterTypes, true)))\r\n return found;\r\n\r\n // If there hasn't been a match, try again at the parent\r\n if (this.parent === null || parentAlreadyChecked)\r\n return null;\r\n return this.parent.lookup(path, filterTypes);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @name NamespaceBase#lookup\r\n * @function\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\r\n * @variation 2\r\n */\r\n// lookup(path: string, [parentAlreadyChecked: boolean])\r\n\r\n/**\r\n * Looks up the {@link Type|type} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Type} Looked up type\r\n * @throws {Error} If `path` does not point to a type\r\n */\r\nNamespace.prototype.lookupType = function lookupType(path) {\r\n var found = this.lookup(path, [ Type ]);\r\n if (!found)\r\n throw Error(\"no such type: \" + path);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Enum} Looked up enum\r\n * @throws {Error} If `path` does not point to an enum\r\n */\r\nNamespace.prototype.lookupEnum = function lookupEnum(path) {\r\n var found = this.lookup(path, [ Enum ]);\r\n if (!found)\r\n throw Error(\"no such Enum '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Type} Looked up type or enum\r\n * @throws {Error} If `path` does not point to a type or enum\r\n */\r\nNamespace.prototype.lookupTypeOrEnum = function lookupTypeOrEnum(path) {\r\n var found = this.lookup(path, [ Type, Enum ]);\r\n if (!found)\r\n throw Error(\"no such Type or Enum '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the {@link Service|service} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Service} Looked up service\r\n * @throws {Error} If `path` does not point to a service\r\n */\r\nNamespace.prototype.lookupService = function lookupService(path) {\r\n var found = this.lookup(path, [ Service ]);\r\n if (!found)\r\n throw Error(\"no such Service '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\nNamespace._configure = function(Type_, Service_) {\r\n Type = Type_;\r\n Service = Service_;\r\n};\r\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = exports;\r\n\r\nvar util = __webpack_require__(0);\r\n\r\nvar s = [\r\n \"double\", // 0\r\n \"float\", // 1\r\n \"int32\", // 2\r\n \"uint32\", // 3\r\n \"sint32\", // 4\r\n \"fixed32\", // 5\r\n \"sfixed32\", // 6\r\n \"int64\", // 7\r\n \"uint64\", // 8\r\n \"sint64\", // 9\r\n \"fixed64\", // 10\r\n \"sfixed64\", // 11\r\n \"bool\", // 12\r\n \"string\", // 13\r\n \"bytes\" // 14\r\n];\r\n\r\nfunction bake(values, offset) {\r\n var i = 0, o = {};\r\n offset |= 0;\r\n while (i < values.length) o[s[i + offset]] = values[i++];\r\n return o;\r\n}\r\n\r\n/**\r\n * Basic type wire types.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n * @property {number} bytes=2 Ldelim wire type\r\n */\r\ntypes.basic = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2,\r\n /* bytes */ 2\r\n]);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=0 Double default\r\n * @property {number} float=0 Float default\r\n * @property {number} int32=0 Int32 default\r\n * @property {number} uint32=0 Uint32 default\r\n * @property {number} sint32=0 Sint32 default\r\n * @property {number} fixed32=0 Fixed32 default\r\n * @property {number} sfixed32=0 Sfixed32 default\r\n * @property {number} int64=0 Int64 default\r\n * @property {number} uint64=0 Uint64 default\r\n * @property {number} sint64=0 Sint32 default\r\n * @property {number} fixed64=0 Fixed64 default\r\n * @property {number} sfixed64=0 Sfixed64 default\r\n * @property {boolean} bool=false Bool default\r\n * @property {string} string=\"\" String default\r\n * @property {Array.} bytes=Array(0) Bytes default\r\n * @property {null} message=null Message default\r\n */\r\ntypes.defaults = bake([\r\n /* double */ 0,\r\n /* float */ 0,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 0,\r\n /* sfixed32 */ 0,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 0,\r\n /* sfixed64 */ 0,\r\n /* bool */ false,\r\n /* string */ \"\",\r\n /* bytes */ util.emptyArray,\r\n /* message */ null\r\n]);\r\n\r\n/**\r\n * Basic long type wire types.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n */\r\ntypes.long = bake([\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n */\r\ntypes.mapKey = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n */\r\ntypes.packed = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0\r\n]);\r\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Centrifuge = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\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 _events = __webpack_require__(6);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _subscription = __webpack_require__(11);\n\nvar _subscription2 = _interopRequireDefault(_subscription);\n\nvar _json = __webpack_require__(12);\n\nvar _utils = __webpack_require__(7);\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 _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\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 _errorTimeout = 'timeout';\nvar _errorConnectionClosed = 'connection closed';\n\nvar Centrifuge = exports.Centrifuge = function (_EventEmitter) {\n _inherits(Centrifuge, _EventEmitter);\n\n function Centrifuge(url, options) {\n _classCallCheck(this, Centrifuge);\n\n var _this = _possibleConstructorReturn(this, (Centrifuge.__proto__ || Object.getPrototypeOf(Centrifuge)).call(this));\n\n _this._url = url;\n _this._sockjs = null;\n _this._isSockjs = false;\n _this._binary = false;\n _this._methodType = null;\n _this._pushType = null;\n _this._encoder = null;\n _this._decoder = null;\n _this._status = 'disconnected';\n _this._reconnect = true;\n _this._reconnecting = false;\n _this._transport = null;\n _this._transportName = null;\n _this._transportClosed = true;\n _this._messageId = 0;\n _this._clientID = null;\n _this._refreshRequired = false;\n _this._subs = {};\n _this._lastSeq = {};\n _this._lastGen = {};\n _this._lastEpoch = {};\n _this._messages = [];\n _this._isBatching = false;\n _this._isSubscribeBatching = false;\n _this._privateChannels = {};\n _this._numRefreshFailed = 0;\n _this._refreshTimeout = null;\n _this._pingTimeout = null;\n _this._pongTimeout = null;\n _this._subRefreshTimeouts = {};\n _this._retries = 0;\n _this._callbacks = {};\n _this._latency = null;\n _this._latencyStart = null;\n _this._connectData = null;\n _this._token = null;\n _this._xhrID = 0;\n _this._xhrs = {};\n _this._config = {\n debug: false,\n sockjs: null,\n promise: null,\n minRetry: 1000,\n maxRetry: 20000,\n timeout: 5000,\n ping: true,\n pingInterval: 25000,\n pongWaitTimeout: 5000,\n privateChannelPrefix: '$',\n onTransportClose: null,\n sockjsServer: null,\n sockjsTransports: ['websocket', 'xdr-streaming', 'xhr-streaming', 'eventsource', 'iframe-eventsource', 'iframe-htmlfile', 'xdr-polling', 'xhr-polling', 'iframe-xhr-polling', 'jsonp-polling'],\n refreshEndpoint: '/centrifuge/refresh',\n refreshHeaders: {},\n refreshParams: {},\n refreshData: {},\n refreshAttempts: null,\n refreshInterval: 1000,\n onRefreshFailed: null,\n onRefresh: null,\n subscribeEndpoint: '/centrifuge/subscribe',\n subscribeHeaders: {},\n subscribeParams: {},\n subRefreshInterval: 1000,\n onPrivateSubscribe: null\n };\n _this._configure(options);\n return _this;\n }\n\n _createClass(Centrifuge, [{\n key: 'setToken',\n value: function setToken(token) {\n this._token = token;\n }\n }, {\n key: 'setConnectData',\n value: function setConnectData(data) {\n this._connectData = data;\n }\n }, {\n key: '_ajax',\n value: function _ajax(url, params, headers, data, callback) {\n var _this2 = this;\n\n var query = '';\n this._debug('sending AJAX request to', url, 'with data', JSON.stringify(data));\n\n var xhr = global.XMLHttpRequest ? new global.XMLHttpRequest() : new global.ActiveXObject('Microsoft.XMLHTTP');\n\n for (var i in params) {\n if (params.hasOwnProperty(i)) {\n if (query.length > 0) {\n query += '&';\n }\n query += encodeURIComponent(i) + '=' + encodeURIComponent(params[i]);\n }\n }\n if (query.length > 0) {\n query = '?' + query;\n }\n xhr.open('POST', url + query, true);\n if ('withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr.setRequestHeader('Content-Type', 'application/json');\n for (var headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n xhr.setRequestHeader(headerName, headers[headerName]);\n }\n }\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n var _data = void 0,\n parsed = false;\n try {\n _data = JSON.parse(xhr.responseText);\n parsed = true;\n } catch (e) {\n callback({\n error: 'Invalid JSON. Data was: ' + xhr.responseText,\n status: 200,\n data: null\n });\n }\n if (parsed) {\n // prevents double execution.\n callback({\n data: _data,\n status: 200\n });\n }\n } else {\n _this2._log('wrong status code in AJAX response', xhr.status);\n callback({\n status: xhr.status,\n data: null\n });\n }\n }\n };\n setTimeout(function () {\n return xhr.send(JSON.stringify(data));\n }, 20);\n return xhr;\n }\n }, {\n key: '_log',\n value: function _log() {\n (0, _utils.log)('info', arguments);\n }\n }, {\n key: '_debug',\n value: function _debug() {\n if (this._config.debug === true) {\n (0, _utils.log)('debug', arguments);\n }\n }\n }, {\n key: '_websocketSupported',\n value: function _websocketSupported() {\n return !(typeof WebSocket !== 'function' && (typeof WebSocket === 'undefined' ? 'undefined' : _typeof(WebSocket)) !== 'object');\n }\n }, {\n key: '_setFormat',\n value: function _setFormat(format) {\n if (this._formatOverride(format)) {\n return;\n }\n if (format === 'protobuf') {\n throw new Error('not implemented by JSON only Centrifuge client – use client with Protobuf');\n }\n this._binary = false;\n this._methodType = _json.JsonMethodType;\n this._pushType = _json.JsonPushType;\n this._encoder = new _json.JsonEncoder();\n this._decoder = new _json.JsonDecoder();\n }\n }, {\n key: '_formatOverride',\n value: function _formatOverride(format) {\n return false;\n }\n }, {\n key: '_configure',\n value: function _configure(configuration) {\n if (!('Promise' in global)) {\n throw new Error('Promise polyfill required');\n }\n\n Object.assign(this._config, configuration || {});\n this._debug('centrifuge config', this._config);\n\n if (!this._url) {\n throw new Error('url required');\n }\n\n if ((0, _utils.startsWith)(this._url, 'ws') && this._url.indexOf('format=protobuf') > -1) {\n this._setFormat('protobuf');\n } else {\n this._setFormat('json');\n }\n\n if ((0, _utils.startsWith)(this._url, 'http')) {\n this._debug('client will try to connect to SockJS endpoint');\n if (this._config.sockjs !== null) {\n this._debug('SockJS explicitly provided in options');\n this._sockjs = this._config.sockjs;\n } else {\n if (typeof global.SockJS === 'undefined') {\n throw new Error('SockJS not found, use ws:// in url or include SockJS');\n }\n this._debug('use globally defined SockJS');\n this._sockjs = global.SockJS;\n }\n } else {\n this._debug('client will connect to websocket endpoint');\n }\n }\n }, {\n key: '_setStatus',\n value: function _setStatus(newStatus) {\n if (this._status !== newStatus) {\n this._debug('Status', this._status, '->', newStatus);\n this._status = newStatus;\n }\n }\n }, {\n key: '_isDisconnected',\n value: function _isDisconnected() {\n return this._status === 'disconnected';\n }\n }, {\n key: '_isConnecting',\n value: function _isConnecting() {\n return this._status === 'connecting';\n }\n }, {\n key: '_isConnected',\n value: function _isConnected() {\n return this._status === 'connected';\n }\n }, {\n key: '_nextMessageId',\n value: function _nextMessageId() {\n return ++this._messageId;\n }\n }, {\n key: '_resetRetry',\n value: function _resetRetry() {\n this._debug('reset retries count to 0');\n this._retries = 0;\n }\n }, {\n key: '_getRetryInterval',\n value: function _getRetryInterval() {\n var interval = (0, _utils.backoff)(this._retries, this._config.minRetry, this._config.maxRetry);\n\n this._retries += 1;\n return interval;\n }\n }, {\n key: '_abortInflightXHRs',\n value: function _abortInflightXHRs() {\n for (var xhrID in this._xhrs) {\n try {\n this._xhrs[xhrID].abort();\n } catch (e) {\n this._debug('error aborting xhr', e);\n }\n delete this._xhrs[xhrID];\n }\n }\n }, {\n key: '_clearConnectedState',\n value: function _clearConnectedState(reconnect) {\n this._clientID = null;\n this._stopPing();\n\n // fire errbacks of registered outgoing calls.\n for (var id in this._callbacks) {\n if (this._callbacks.hasOwnProperty(id)) {\n var callbacks = this._callbacks[id];\n clearTimeout(callbacks.timeout);\n var errback = callbacks.errback;\n if (!errback) {\n continue;\n }\n errback({ error: this._createErrorObject('disconnected') });\n }\n }\n this._callbacks = {};\n\n // fire unsubscribe events\n for (var channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n var sub = this._subs[channel];\n\n if (reconnect) {\n if (sub._isSuccess()) {\n sub._triggerUnsubscribe();\n sub._recover = true;\n }\n sub._setSubscribing();\n } else {\n sub._setUnsubscribed();\n }\n }\n }\n\n this._abortInflightXHRs();\n\n // clear refresh timer\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n // clear sub refresh timers\n for (var _channel in this._subRefreshTimeouts) {\n if (this._subRefreshTimeouts.hasOwnProperty(_channel) && this._subRefreshTimeouts[_channel]) {\n this._clearSubRefreshTimeout(_channel);\n }\n }\n this._subRefreshTimeouts = {};\n\n if (!this._reconnect) {\n // completely clear subscriptions\n this._subs = {};\n }\n }\n }, {\n key: '_isTransportOpen',\n value: function _isTransportOpen() {\n if (this._isSockjs) {\n return this._transport && this._transport.transport && this._transport.transport.readyState === this._transport.transport.OPEN;\n }\n return this._transport && this._transport.readyState === this._transport.OPEN;\n }\n }, {\n key: '_transportSend',\n value: function _transportSend(commands) {\n if (!commands.length) {\n return true;\n }\n\n if (!this._isTransportOpen()) {\n // resolve pending commands with error if transport is not open\n for (var command in commands) {\n var id = command.id;\n if (!(id in this._callbacks)) {\n continue;\n }\n var callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n var errback = callbacks.errback;\n errback({ error: this._createErrorObject(_errorConnectionClosed, 0) });\n }\n return false;\n }\n this._transport.send(this._encoder.encodeCommands(commands));\n return true;\n }\n }, {\n key: '_setupTransport',\n value: function _setupTransport() {\n var _this3 = this;\n\n this._isSockjs = false;\n\n // detect transport to use - SockJS or Websocket\n if (this._sockjs !== null) {\n var sockjsOptions = {\n transports: this._config.sockjsTransports\n };\n\n if (this._config.sockjsServer !== null) {\n sockjsOptions.server = this._config.sockjsServer;\n }\n this._isSockjs = true;\n this._transport = new this._sockjs(this._url, null, sockjsOptions);\n } else {\n if (!this._websocketSupported()) {\n this._debug('No Websocket support and no SockJS configured, can not connect');\n return;\n }\n this._transport = new WebSocket(this._url);\n if (this._binary === true) {\n this._transport.binaryType = 'arraybuffer';\n }\n }\n\n this._transport.onopen = function () {\n _this3._transportClosed = false;\n\n if (_this3._isSockjs) {\n _this3._transportName = 'sockjs-' + _this3._transport.transport;\n _this3._transport.onheartbeat = function () {\n return _this3._restartPing();\n };\n } else {\n _this3._transportName = 'websocket';\n }\n\n // Can omit method here due to zero value.\n var msg = {\n // method: this._methodType.CONNECT\n };\n\n if (_this3._token || _this3._connectData) {\n msg.params = {};\n }\n\n if (_this3._token) {\n msg.params.token = _this3._token;\n }\n\n if (_this3._connectData) {\n msg.params.data = _this3._connectData;\n }\n\n _this3._latencyStart = new Date();\n _this3._call(msg).then(function (resolveCtx) {\n _this3._connectResponse(_this3._decoder.decodeCommandResult(_this3._methodType.CONNECT, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n var err = rejectCtx.error;\n if (err.code === 109) {\n // token expired.\n _this3._refreshRequired = true;\n }\n _this3._disconnect('connect error', true);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n this._transport.onerror = function (error) {\n _this3._debug('transport level error', error);\n };\n\n this._transport.onclose = function (closeEvent) {\n _this3._transportClosed = true;\n var reason = _errorConnectionClosed;\n var needReconnect = true;\n\n if (closeEvent && 'reason' in closeEvent && closeEvent.reason) {\n try {\n var advice = JSON.parse(closeEvent.reason);\n _this3._debug('reason is an advice object', advice);\n reason = advice.reason;\n needReconnect = advice.reconnect;\n } catch (e) {\n reason = closeEvent.reason;\n _this3._debug('reason is a plain string', reason);\n }\n }\n\n // onTransportClose callback should be executed every time transport was closed.\n // This can be helpful to catch failed connection events (because our disconnect\n // event only called once and every future attempts to connect do not fire disconnect\n // event again).\n if (_this3._config.onTransportClose !== null) {\n _this3._config.onTransportClose({\n event: closeEvent,\n reason: reason,\n reconnect: needReconnect\n });\n }\n\n _this3._disconnect(reason, needReconnect);\n\n if (_this3._reconnect === true) {\n _this3._reconnecting = true;\n var interval = _this3._getRetryInterval();\n\n _this3._debug('reconnect after ' + interval + ' milliseconds');\n setTimeout(function () {\n if (_this3._reconnect === true) {\n if (_this3._refreshRequired) {\n _this3._refresh();\n } else {\n _this3._connect();\n }\n }\n }, interval);\n }\n };\n\n this._transport.onmessage = function (event) {\n _this3._dataReceived(event.data);\n };\n }\n }, {\n key: 'rpc',\n value: function rpc(data) {\n var _this4 = this;\n\n var msg = {\n method: this._methodType.RPC,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(function (resolveCtx) {\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n return _this4._decoder.decodeCommandResult(_this4._methodType.RPC, resolveCtx.result);\n }, function (rejectCtx) {\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n return rejectCtx.error;\n });\n }\n }, {\n key: 'send',\n value: function send(data) {\n var msg = {\n method: this._methodType.SEND,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n var sent = this._transportSend([msg]); // can send async message to server without id set\n if (!sent) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n };\n return Promise.resolve({});\n }\n }, {\n key: 'publish',\n value: function publish(channel, data) {\n var msg = {\n method: this._methodType.PUBLISH,\n params: {\n channel: channel,\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(function (result) {\n if (result.next) {\n result.next();\n }\n return {};\n });\n }\n }, {\n key: '_dataReceived',\n value: function _dataReceived(data) {\n var _this5 = this;\n\n var replies = this._decoder.decodeReplies(data);\n // we have to guarantee order of events in replies processing - i.e. start processing\n // next reply only when we finished processing of current one. Without syncing things in\n // this way we could get wrong publication events order as reply promises resolve\n // on next loop tick so for loop continues before we finished emitting all reply events.\n var p = Promise.resolve();\n\n var _loop = function _loop(i) {\n if (replies.hasOwnProperty(i)) {\n p = p.then(function () {\n return _this5._dispatchReply(replies[i]);\n });\n }\n };\n\n for (var i in replies) {\n _loop(i);\n }\n this._restartPing();\n }\n }, {\n key: '_call',\n value: function _call(msg) {\n var _this6 = this;\n\n return new Promise(function (resolve, reject) {\n var id = _this6._addMessage(msg);\n _this6._registerCall(id, resolve, reject);\n });\n }\n }, {\n key: '_connect',\n value: function _connect() {\n if (this.isConnected()) {\n this._debug('connect called when already connected');\n return;\n }\n if (this._status === 'connecting') {\n return;\n }\n\n this._debug('start connecting');\n this._setStatus('connecting');\n this._clientID = null;\n this._reconnect = true;\n this._setupTransport();\n }\n }, {\n key: '_disconnect',\n value: function _disconnect(reason, shouldReconnect) {\n\n if (this._isDisconnected()) {\n return;\n }\n\n this._debug('disconnected:', reason, shouldReconnect);\n\n var reconnect = shouldReconnect || false;\n\n if (reconnect === false) {\n this._reconnect = false;\n }\n\n this._clearConnectedState(reconnect);\n\n if (!this._isDisconnected()) {\n this._setStatus('disconnected');\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._reconnecting === false) {\n this.emit('disconnect', {\n reason: reason,\n reconnect: reconnect\n });\n }\n }\n\n if (!this._transportClosed) {\n this._transport.close();\n }\n }\n }, {\n key: '_refreshFailed',\n value: function _refreshFailed() {\n this._numRefreshFailed = 0;\n if (!this._isDisconnected()) {\n this._disconnect('refresh failed', false);\n }\n if (this._config.onRefreshFailed !== null) {\n this._config.onRefreshFailed();\n }\n }\n }, {\n key: '_refresh',\n value: function _refresh() {\n var _this7 = this;\n\n // ask application for new connection token.\n this._debug('refresh token');\n\n if (this._config.refreshAttempts === 0) {\n this._debug('refresh attempts set to 0, do not send refresh request at all');\n this._refreshFailed();\n return;\n }\n\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n var clientID = this._clientID;\n var xhrID = this._newXHRID();\n\n var cb = function cb(resp) {\n if (xhrID in _this7._xhrs) {\n delete _this7._xhrs[xhrID];\n }\n if (_this7._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n // We don't perform any connection status related actions here as we are\n // relying on server that must close connection eventually.\n if (resp.error) {\n _this7._debug('error refreshing connection token', resp.error);\n } else {\n _this7._debug('error refreshing connection token: wrong status code', resp.status);\n }\n _this7._numRefreshFailed++;\n if (_this7._refreshTimeout !== null) {\n clearTimeout(_this7._refreshTimeout);\n _this7._refreshTimeout = null;\n }\n if (_this7._config.refreshAttempts !== null && _this7._numRefreshFailed >= _this7._config.refreshAttempts) {\n _this7._refreshFailed();\n return;\n }\n var jitter = Math.round(Math.random() * 1000 * Math.max(_this7._numRefreshFailed, 20));\n var interval = _this7._config.refreshInterval + jitter;\n _this7._refreshTimeout = setTimeout(function () {\n return _this7._refresh();\n }, interval);\n return;\n }\n _this7._numRefreshFailed = 0;\n _this7._token = resp.data.token;\n if (!_this7._token) {\n _this7._refreshFailed();\n return;\n }\n if (_this7._isDisconnected() && _this7._reconnect) {\n _this7._debug('token refreshed, connect from scratch');\n _this7._connect();\n } else {\n _this7._debug('send refreshed token');\n var msg = {\n method: _this7._methodType.REFRESH,\n params: {\n token: _this7._token\n }\n };\n _this7._call(msg).then(function (resolveCtx) {\n _this7._refreshResponse(_this7._decoder.decodeCommandResult(_this7._methodType.REFRESH, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this7._refreshError(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n if (this._config.onRefresh !== null) {\n var context = {};\n this._config.onRefresh(context, cb);\n } else {\n var xhr = this._ajax(this._config.refreshEndpoint, this._config.refreshParams, this._config.refreshHeaders, this._config.refreshData, cb);\n this._xhrs[xhrID] = xhr;\n }\n }\n }, {\n key: '_refreshError',\n value: function _refreshError(err) {\n var _this8 = this;\n\n this._debug('refresh error', err);\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n var interval = this._config.refreshInterval + Math.round(Math.random() * 1000);\n this._refreshTimeout = setTimeout(function () {\n return _this8._refresh();\n }, interval);\n }\n }, {\n key: '_refreshResponse',\n value: function _refreshResponse(result) {\n var _this9 = this;\n\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (result.expires) {\n this._clientID = result.client;\n this._refreshTimeout = setTimeout(function () {\n return _this9._refresh();\n }, this._getTTLMilliseconds(result.ttl));\n }\n }\n }, {\n key: '_newXHRID',\n value: function _newXHRID() {\n this._xhrID++;\n return this._xhrID;\n }\n }, {\n key: '_subRefresh',\n value: function _subRefresh(channel) {\n var _this10 = this;\n\n this._debug('refresh subscription token for channel', channel);\n\n if (this._subRefreshTimeouts[channel] !== undefined) {\n this._clearSubRefreshTimeout(channel);\n } else {\n return;\n }\n\n var clientID = this._clientID;\n var xhrID = this._newXHRID();\n\n var cb = function cb(resp) {\n if (xhrID in _this10._xhrs) {\n delete _this10._xhrs[xhrID];\n }\n if (resp.error || resp.status !== 200 || _this10._clientID !== clientID) {\n return;\n }\n var channelsData = {};\n if (resp.data.channels) {\n for (var i in data.channels) {\n var channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n var token = channelsData[channel];\n if (!token) {\n return;\n }\n var msg = {\n method: _this10._methodType.SUB_REFRESH,\n params: {\n channel: channel,\n token: token\n }\n };\n\n var sub = _this10._getSub(channel);\n if (sub === null) {\n return;\n }\n\n _this10._call(msg).then(function (resolveCtx) {\n _this10._subRefreshResponse(channel, _this10._decoder.decodeCommandResult(_this10._methodType.SUB_REFRESH, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this10._subRefreshError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n var data = {\n client: this._clientID,\n channels: [channel]\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n var xhr = this._ajax(this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n }\n }, {\n key: '_clearSubRefreshTimeout',\n value: function _clearSubRefreshTimeout(channel) {\n if (this._subRefreshTimeouts[channel] !== undefined) {\n clearTimeout(this._subRefreshTimeouts[channel]);\n delete this._subRefreshTimeouts[channel];\n }\n }\n }, {\n key: '_subRefreshError',\n value: function _subRefreshError(channel, err) {\n var _this11 = this;\n\n this._debug('subscription refresh error', channel, err);\n this._clearSubRefreshTimeout(channel);\n var sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n var jitter = Math.round(Math.random() * 1000);\n var subRefreshTimeout = setTimeout(function () {\n return _this11._subRefresh(channel);\n }, this._config.subRefreshInterval + jitter);\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n return;\n }\n }, {\n key: '_subRefreshResponse',\n value: function _subRefreshResponse(channel, result) {\n var _this12 = this;\n\n this._debug('subscription refresh success', channel);\n this._clearSubRefreshTimeout(channel);\n var sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n if (result.expires === true) {\n var subRefreshTimeout = setTimeout(function () {\n return _this12._subRefresh(channel);\n }, this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n return;\n }\n }, {\n key: '_subscribe',\n value: function _subscribe(sub, isResubscribe) {\n var _this13 = this;\n\n this._debug('subscribing on', sub.channel);\n var channel = sub.channel;\n\n if (!(channel in this._subs)) {\n this._subs[channel] = sub;\n }\n\n if (!this.isConnected()) {\n // subscribe will be called later\n sub._setNew();\n return;\n }\n\n sub._setSubscribing(isResubscribe);\n\n var msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel\n }\n };\n\n // If channel name does not start with privateChannelPrefix - then we\n // can just send subscription message to Centrifuge. If channel name\n // starts with privateChannelPrefix - then this is a private channel\n // and we should ask web application backend for permission first.\n if ((0, _utils.startsWith)(channel, this._config.privateChannelPrefix)) {\n // private channel.\n if (this._isSubscribeBatching) {\n this._privateChannels[channel] = true;\n } else {\n this.startSubscribeBatching();\n this._subscribe(sub);\n this.stopSubscribeBatching();\n }\n } else {\n var recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n var seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n var gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n var epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n\n this._call(msg).then(function (resolveCtx) {\n _this13._subscribeResponse(channel, _this13._decoder.decodeCommandResult(_this13._methodType.SUBSCRIBE, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this13._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }\n }, {\n key: '_unsubscribe',\n value: function _unsubscribe(sub) {\n if (this.isConnected()) {\n // No need to unsubscribe in disconnected state - i.e. client already unsubscribed.\n this._addMessage({\n method: this._methodType.UNSUBSCRIBE,\n params: {\n channel: sub.channel\n }\n });\n }\n }\n }, {\n key: '_getTTLMilliseconds',\n value: function _getTTLMilliseconds(ttl) {\n // https://stackoverflow.com/questions/12633405/what-is-the-maximum-delay-for-setinterval\n return Math.min(ttl * 1000, 2147483647);\n }\n }, {\n key: 'getSub',\n value: function getSub(channel) {\n return this._getSub(channel);\n }\n }, {\n key: '_getSub',\n value: function _getSub(channel) {\n var sub = this._subs[channel];\n if (!sub) {\n return null;\n }\n return sub;\n }\n }, {\n key: '_connectResponse',\n value: function _connectResponse(result) {\n var _this14 = this;\n\n var wasReconnecting = this._reconnecting;\n this._reconnecting = false;\n this._resetRetry();\n this._refreshRequired = false;\n\n if (this.isConnected()) {\n return;\n }\n\n if (this._latencyStart !== null) {\n this._latency = new Date().getTime() - this._latencyStart.getTime();\n this._latencyStart = null;\n }\n\n this._clientID = result.client;\n this._setStatus('connected');\n\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n }\n\n if (result.expires) {\n this._refreshTimeout = setTimeout(function () {\n return _this14._refresh();\n }, this._getTTLMilliseconds(result.ttl));\n }\n\n this.startBatching();\n this.startSubscribeBatching();\n for (var channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n var sub = this._subs[channel];\n if (sub._shouldResubscribe()) {\n this._subscribe(sub, wasReconnecting);\n }\n }\n }\n this.stopSubscribeBatching();\n this.stopBatching();\n\n this._startPing();\n\n var ctx = {\n client: result.client,\n transport: this._transportName,\n latency: this._latency\n };\n if (result.data) {\n ctx.data = result.data;\n }\n\n this.emit('connect', ctx);\n }\n }, {\n key: '_stopPing',\n value: function _stopPing() {\n if (this._pongTimeout !== null) {\n clearTimeout(this._pongTimeout);\n this._pongTimeout = null;\n }\n if (this._pingTimeout !== null) {\n clearTimeout(this._pingTimeout);\n this._pingTimeout = null;\n }\n }\n }, {\n key: '_startPing',\n value: function _startPing() {\n var _this15 = this;\n\n if (this._config.ping !== true || this._config.pingInterval <= 0) {\n return;\n }\n if (!this.isConnected()) {\n return;\n }\n\n this._pingTimeout = setTimeout(function () {\n if (!_this15.isConnected()) {\n _this15._stopPing();\n return;\n }\n _this15.ping();\n _this15._pongTimeout = setTimeout(function () {\n _this15._disconnect('no ping', true);\n }, _this15._config.pongWaitTimeout);\n }, this._config.pingInterval);\n }\n }, {\n key: '_restartPing',\n value: function _restartPing() {\n this._stopPing();\n this._startPing();\n }\n }, {\n key: '_subscribeError',\n value: function _subscribeError(channel, error) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n if (error.code === 0 && error.message === _errorTimeout) {\n // client side timeout.\n this._disconnect('timeout', true);\n return;\n }\n sub._setSubscribeError(error);\n }\n }, {\n key: '_subscribeResponse',\n value: function _subscribeResponse(channel, result) {\n var _this16 = this;\n\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n\n var recovered = false;\n if ('recovered' in result) {\n recovered = result.recovered;\n }\n sub._setSubscribeSuccess(recovered);\n\n var pubs = result.publications;\n\n if (pubs && pubs.length > 0) {\n // handle missed pubs.\n pubs = pubs.reverse();\n for (var i in pubs) {\n if (pubs.hasOwnProperty(i)) {\n this._handlePublication(channel, pubs[i]);\n }\n }\n } else {\n if (result.recoverable) {\n this._lastSeq[channel] = result.seq || 0;\n this._lastGen[channel] = result.gen || 0;\n }\n }\n\n this._lastEpoch[channel] = result.epoch || '';\n\n if (result.recoverable) {\n sub._recoverable = true;\n }\n\n if (result.expires === true) {\n var subRefreshTimeout = setTimeout(function () {\n return _this16._subRefresh(channel);\n }, this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n }\n }, {\n key: '_handleReply',\n value: function _handleReply(reply, next) {\n var id = reply.id;\n var result = reply.result;\n\n if (!(id in this._callbacks)) {\n next();\n return;\n }\n var callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n\n if (!(0, _utils.errorExists)(reply)) {\n var callback = callbacks.callback;\n if (!callback) {\n return;\n }\n callback({ result: result, next: next });\n } else {\n var errback = callbacks.errback;\n if (!errback) {\n next();\n return;\n }\n var error = reply.error;\n errback({ error: error, next: next });\n }\n }\n }, {\n key: '_handleJoin',\n value: function _handleJoin(channel, join) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('join', join);\n }\n }, {\n key: '_handleLeave',\n value: function _handleLeave(channel, leave) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('leave', leave);\n }\n }, {\n key: '_handleUnsub',\n value: function _handleUnsub(channel, unsub) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.unsubscribe();\n if (unsub.resubscribe === true) {\n sub.subscribe();\n }\n }\n }, {\n key: '_handlePublication',\n value: function _handlePublication(channel, pub) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (pub.seq !== undefined) {\n this._lastSeq[channel] = pub.seq;\n }\n if (pub.gen !== undefined) {\n this._lastGen[channel] = pub.gen;\n }\n sub.emit('publish', pub);\n }\n }, {\n key: '_handleMessage',\n value: function _handleMessage(message) {\n this.emit('message', message.data);\n }\n }, {\n key: '_handlePush',\n value: function _handlePush(data, next) {\n var push = this._decoder.decodePush(data);\n var type = 0;\n if ('type' in push) {\n type = push['type'];\n }\n var channel = push.channel;\n\n if (type === this._pushType.PUBLICATION) {\n var pub = this._decoder.decodePushData(this._pushType.PUBLICATION, push.data);\n this._handlePublication(channel, pub);\n } else if (type === this._pushType.MESSAGE) {\n var message = this._decoder.decodePushData(this._pushType.MESSAGE, push.data);\n this._handleMessage(message);\n } else if (type === this._pushType.JOIN) {\n var join = this._decoder.decodePushData(this._pushType.JOIN, push.data);\n this._handleJoin(channel, join);\n } else if (type === this._pushType.LEAVE) {\n var leave = this._decoder.decodePushData(this._pushType.LEAVE, push.data);\n this._handleLeave(channel, leave);\n } else if (type === this._pushType.UNSUB) {\n var unsub = this._decoder.decodePushData(this._pushType.UNSUB, push.data);\n this._handleUnsub(channel, unsub);\n }\n next();\n }\n }, {\n key: '_dispatchReply',\n value: function _dispatchReply(reply) {\n var next;\n var p = new Promise(function (resolve) {\n next = resolve;\n });\n\n if (reply === undefined || reply === null) {\n this._debug('dispatch: got undefined or null reply');\n next();\n return p;\n }\n\n var id = reply.id;\n\n if (id && id > 0) {\n this._handleReply(reply, next);\n } else {\n this._handlePush(reply.result, next);\n }\n\n return p;\n }\n }, {\n key: '_flush',\n value: function _flush() {\n var messages = this._messages.slice(0);\n this._messages = [];\n this._transportSend(messages);\n }\n }, {\n key: '_ping',\n value: function _ping() {\n var _this17 = this;\n\n var msg = {\n method: this._methodType.PING\n };\n this._call(msg).then(function (resolveCtx) {\n _this17._pingResponse(_this17._decoder.decodeCommandResult(_this17._methodType.PING, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this17._debug('ping error', rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }, {\n key: '_pingResponse',\n value: function _pingResponse(result) {\n if (!this.isConnected()) {\n return;\n }\n this._stopPing();\n this._startPing();\n }\n }, {\n key: '_getLastSeq',\n value: function _getLastSeq(channel) {\n var lastSeq = this._lastSeq[channel];\n if (lastSeq) {\n return lastSeq;\n }\n return 0;\n }\n }, {\n key: '_getLastGen',\n value: function _getLastGen(channel) {\n var lastGen = this._lastGen[channel];\n if (lastGen) {\n return lastGen;\n }\n return 0;\n }\n }, {\n key: '_getLastEpoch',\n value: function _getLastEpoch(channel) {\n var lastEpoch = this._lastEpoch[channel];\n if (lastEpoch) {\n return lastEpoch;\n }\n return '';\n }\n }, {\n key: '_createErrorObject',\n value: function _createErrorObject(message, code) {\n var errObject = {\n message: message,\n code: code || 0\n };\n\n return errObject;\n }\n }, {\n key: '_registerCall',\n value: function _registerCall(id, callback, errback) {\n var _this18 = this;\n\n this._callbacks[id] = {\n callback: callback,\n errback: errback,\n timeout: null\n };\n this._callbacks[id].timeout = setTimeout(function () {\n delete _this18._callbacks[id];\n if ((0, _utils.isFunction)(errback)) {\n errback({ error: _this18._createErrorObject(_errorTimeout) });\n }\n }, this._config.timeout);\n }\n }, {\n key: '_addMessage',\n value: function _addMessage(message) {\n var id = this._nextMessageId();\n message.id = id;\n if (this._isBatching === true) {\n this._messages.push(message);\n } else {\n this._transportSend([message]);\n }\n return id;\n }\n }, {\n key: 'isConnected',\n value: function isConnected() {\n return this._isConnected();\n }\n }, {\n key: 'connect',\n value: function connect() {\n this._connect();\n }\n }, {\n key: 'disconnect',\n value: function disconnect() {\n this._disconnect('client', false);\n }\n }, {\n key: 'ping',\n value: function ping() {\n return this._ping();\n }\n }, {\n key: 'startBatching',\n value: function startBatching() {\n // start collecting messages without sending them to Centrifuge until flush\n // method called\n this._isBatching = true;\n }\n }, {\n key: 'stopBatching',\n value: function stopBatching() {\n this._isBatching = false;\n this._flush();\n }\n }, {\n key: 'startSubscribeBatching',\n value: function startSubscribeBatching() {\n // start collecting private channels to create bulk authentication\n // request to subscribeEndpoint when stopSubscribeBatching will be called\n this._isSubscribeBatching = true;\n }\n }, {\n key: 'stopSubscribeBatching',\n value: function stopSubscribeBatching() {\n var _this19 = this;\n\n // create request to subscribeEndpoint with collected private channels\n // to ask if this client can subscribe on each channel\n this._isSubscribeBatching = false;\n var authChannels = this._privateChannels;\n this._privateChannels = {};\n\n var channels = [];\n\n for (var channel in authChannels) {\n if (authChannels.hasOwnProperty(channel)) {\n var sub = this._getSub(channel);\n if (!sub) {\n continue;\n }\n channels.push(channel);\n }\n }\n\n if (channels.length === 0) {\n this._debug('no private channels found, no need to make request');\n return;\n }\n\n var data = {\n client: this._clientID,\n channels: channels\n };\n\n var clientID = this._clientID;\n var xhrID = this._newXHRID();\n\n var cb = function cb(resp) {\n if (xhrID in _this19._xhrs) {\n delete _this19._xhrs[xhrID];\n }\n if (_this19._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n _this19._debug('authorization request failed');\n for (var i in channels) {\n if (channels.hasOwnProperty(i)) {\n var _channel2 = channels[i];\n _this19._subscribeError(_channel2, _this19._createErrorObject('authorization request failed'));\n }\n }\n return;\n }\n\n var channelsData = {};\n if (resp.data.channels) {\n for (var _i in resp.data.channels) {\n var channelData = resp.data.channels[_i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n // try to send all subscriptions in one request.\n var batch = false;\n\n if (!_this19._isBatching) {\n _this19.startBatching();\n batch = true;\n }\n\n for (var _i2 in channels) {\n if (channels.hasOwnProperty(_i2)) {\n var _ret2 = function () {\n var channel = channels[_i2];\n var token = channelsData[channel];\n\n if (!token) {\n // subscription:error\n _this19._subscribeError(channel, _this19._createErrorObject('permission denied', 103));\n return 'continue';\n } else {\n var msg = {\n method: _this19._methodType.SUBSCRIBE,\n params: {\n channel: channel,\n token: token\n }\n };\n\n var _sub = _this19._getSub(channel);\n if (_sub === null) {\n return 'continue';\n }\n\n var recover = _sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n var seq = _this19._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n var gen = _this19._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n var epoch = _this19._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n _this19._call(msg).then(function (resolveCtx) {\n _this19._subscribeResponse(channel, _this19._decoder.decodeCommandResult(_this19._methodType.SUBSCRIBE, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this19._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }();\n\n if (_ret2 === 'continue') continue;\n }\n }\n\n if (batch) {\n _this19.stopBatching();\n }\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n var xhr = this._ajax(this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n }\n }, {\n key: 'subscribe',\n value: function subscribe(channel, events) {\n var currentSub = this._getSub(channel);\n if (currentSub !== null) {\n currentSub._setEvents(events);\n if (currentSub._isUnsubscribed()) {\n currentSub.subscribe();\n }\n return currentSub;\n }\n var sub = new _subscription2.default(this, channel, events);\n this._subs[channel] = sub;\n sub.subscribe();\n return sub;\n }\n }]);\n\n return Centrifuge;\n}(_events2.default);\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)))\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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 _events = __webpack_require__(6);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _utils = __webpack_require__(7);\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 _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\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 _STATE_NEW = 0;\nvar _STATE_SUBSCRIBING = 1;\nvar _STATE_SUCCESS = 2;\nvar _STATE_ERROR = 3;\nvar _STATE_UNSUBSCRIBED = 4;\n\nvar Subscription = function (_EventEmitter) {\n _inherits(Subscription, _EventEmitter);\n\n function Subscription(centrifuge, channel, events) {\n _classCallCheck(this, Subscription);\n\n var _this = _possibleConstructorReturn(this, (Subscription.__proto__ || Object.getPrototypeOf(Subscription)).call(this));\n\n _this.channel = channel;\n _this._centrifuge = centrifuge;\n _this._status = _STATE_NEW;\n _this._error = null;\n _this._isResubscribe = false;\n _this._ready = false;\n _this._subscriptionPromise = null;\n _this._noResubscribe = false;\n _this._recoverable = false;\n _this._recover = false;\n _this._setEvents(events);\n _this._initializePromise();\n _this._promises = {};\n _this.on('error', function (errContext) {\n this._centrifuge._debug('subscription error', errContext);\n });\n return _this;\n }\n\n _createClass(Subscription, [{\n key: '_initializePromise',\n value: function _initializePromise() {\n var _this2 = this;\n\n // this helps us to wait until subscription will successfully\n // subscribe and call actions such as presence, history etc in\n // synchronous way.\n this._ready = false;\n\n this._subscriptionPromise = new Promise(function (resolve, reject) {\n _this2._resolve = function (value) {\n _this2._ready = true;\n resolve(value);\n };\n _this2._reject = function (err) {\n _this2._ready = true;\n reject(err);\n };\n }).then(function () {}, function () {});\n }\n }, {\n key: '_needRecover',\n value: function _needRecover() {\n return this._recoverable === true && this._recover === true;\n }\n }, {\n key: '_setEvents',\n value: function _setEvents(events) {\n if (!events) {\n return;\n }\n if ((0, _utils.isFunction)(events)) {\n // events is just a function to handle publication received from channel.\n this.on('publish', events);\n } else if (Object.prototype.toString.call(events) === Object.prototype.toString.call({})) {\n var knownEvents = ['publish', 'join', 'leave', 'unsubscribe', 'subscribe', 'error'];\n for (var i = 0, l = knownEvents.length; i < l; i++) {\n var ev = knownEvents[i];\n if (ev in events) {\n this.on(ev, events[ev]);\n }\n }\n }\n }\n }, {\n key: '_isNew',\n value: function _isNew() {\n return this._status === _STATE_NEW;\n }\n }, {\n key: '_isUnsubscribed',\n value: function _isUnsubscribed() {\n return this._status === _STATE_UNSUBSCRIBED;\n }\n }, {\n key: '_isSubscribing',\n value: function _isSubscribing() {\n return this._status === _STATE_SUBSCRIBING;\n }\n }, {\n key: '_isReady',\n value: function _isReady() {\n return this._status === _STATE_SUCCESS || this._status === _STATE_ERROR;\n }\n }, {\n key: '_isSuccess',\n value: function _isSuccess() {\n return this._status === _STATE_SUCCESS;\n }\n }, {\n key: '_isError',\n value: function _isError() {\n return this._status === _STATE_ERROR;\n }\n }, {\n key: '_setNew',\n value: function _setNew() {\n this._status = _STATE_NEW;\n }\n }, {\n key: '_setSubscribing',\n value: function _setSubscribing(isResubscribe) {\n this._isResubscribe = isResubscribe || false;\n if (this._ready === true) {\n // new promise for this subscription\n this._initializePromise();\n }\n this._status = _STATE_SUBSCRIBING;\n }\n }, {\n key: '_setSubscribeSuccess',\n value: function _setSubscribeSuccess(recovered) {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._status = _STATE_SUCCESS;\n var successContext = this._getSubscribeSuccessContext(recovered);\n\n this._recover = false;\n this.emit('subscribe', successContext);\n this._resolve(successContext);\n for (var to in this._promises) {\n clearTimeout(to);\n this._promises[to].resolve();\n delete this._promises[to];\n }\n }\n }, {\n key: '_setSubscribeError',\n value: function _setSubscribeError(err) {\n if (this._status === _STATE_ERROR) {\n return;\n }\n this._status = _STATE_ERROR;\n this._error = err;\n var errContext = this._getSubscribeErrorContext();\n this.emit('error', errContext);\n this._reject(errContext);\n for (var to in this._promises) {\n clearTimeout(to);\n this._promises[to].reject(err);\n delete this._promises[to];\n }\n }\n }, {\n key: '_triggerUnsubscribe',\n value: function _triggerUnsubscribe() {\n this.emit('unsubscribe', {\n channel: this.channel\n });\n }\n }, {\n key: '_setUnsubscribed',\n value: function _setUnsubscribed(noResubscribe) {\n this._centrifuge._clearSubRefreshTimeout(this.channel);\n if (this._status === _STATE_UNSUBSCRIBED) {\n return;\n }\n var needTrigger = this._status === _STATE_SUCCESS;\n this._status = _STATE_UNSUBSCRIBED;\n if (noResubscribe === true) {\n this._recover = false;\n this._noResubscribe = true;\n delete this._centrifuge._lastSeq[this.channel];\n delete this._centrifuge._lastGen[this.channel];\n delete this._centrifuge._lastEpoch[this.channel];\n }\n if (needTrigger) {\n this._triggerUnsubscribe();\n }\n }\n }, {\n key: '_shouldResubscribe',\n value: function _shouldResubscribe() {\n return !this._noResubscribe;\n }\n }, {\n key: '_getSubscribeSuccessContext',\n value: function _getSubscribeSuccessContext(recovered) {\n return {\n channel: this.channel,\n isResubscribe: this._isResubscribe,\n recovered: recovered\n };\n }\n }, {\n key: '_getSubscribeErrorContext',\n value: function _getSubscribeErrorContext() {\n var subscribeErrorContext = this._error;\n subscribeErrorContext.channel = this.channel;\n subscribeErrorContext.isResubscribe = this._isResubscribe;\n return subscribeErrorContext;\n }\n }, {\n key: 'ready',\n value: function ready(callback, errback) {\n if (this._ready) {\n if (this._isSuccess()) {\n callback(this._getSubscribeSuccessContext());\n } else {\n errback(this._getSubscribeErrorContext());\n }\n }\n }\n }, {\n key: 'subscribe',\n value: function subscribe() {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._noResubscribe = false;\n this._centrifuge._subscribe(this);\n }\n }, {\n key: 'unsubscribe',\n value: function unsubscribe() {\n this._setUnsubscribed(true);\n this._centrifuge._unsubscribe(this);\n }\n }, {\n key: '_methodCall',\n value: function _methodCall(message, type) {\n var _this3 = this;\n\n var methodCallPromise = new Promise(function (resolve, reject) {\n var subPromise = void 0;\n if (_this3._isSuccess()) {\n subPromise = Promise.resolve();\n } else if (_this3._isError()) {\n subPromise = Promise.reject(_this3._error);\n } else {\n subPromise = new Promise(function (res, rej) {\n var timeout = setTimeout(function () {\n rej({ 'code': 0, 'message': 'timeout' });\n }, _this3._centrifuge._config.timeout);\n _this3._promises[timeout] = {\n resolve: res,\n reject: rej\n };\n });\n }\n subPromise.then(function () {\n return _this3._centrifuge._call(message).then(function (resolveCtx) {\n resolve(_this3._centrifuge._decoder.decodeCommandResult(type, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n reject(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }, function (error) {\n reject(error);\n });\n });\n return methodCallPromise;\n }\n }, {\n key: 'publish',\n value: function publish(data) {\n return this._methodCall({\n method: this._centrifuge._methodType.PUBLISH,\n params: {\n channel: this.channel,\n data: data\n }\n }, this._centrifuge._methodType.PUBLISH);\n }\n }, {\n key: 'presence',\n value: function presence() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE);\n }\n }, {\n key: 'presenceStats',\n value: function presenceStats() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE_STATS,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE_STATS);\n }\n }, {\n key: 'history',\n value: function history() {\n return this._methodCall({\n method: this._centrifuge._methodType.HISTORY,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.HISTORY);\n }\n }]);\n\n return Subscription;\n}(_events2.default);\n\nexports.default = Subscription;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar JsonMethodType = exports.JsonMethodType = {\n CONNECT: 0,\n SUBSCRIBE: 1,\n UNSUBSCRIBE: 2,\n PUBLISH: 3,\n PRESENCE: 4,\n PRESENCE_STATS: 5,\n HISTORY: 6,\n PING: 7,\n SEND: 8,\n RPC: 9,\n REFRESH: 10,\n SUB_REFRESH: 11\n};\n\nvar JsonPushType = exports.JsonPushType = {\n PUBLICATION: 0,\n JOIN: 1,\n LEAVE: 2,\n UNSUB: 3,\n MESSAGE: 4\n};\n\nvar JsonEncoder = exports.JsonEncoder = function () {\n function JsonEncoder() {\n _classCallCheck(this, JsonEncoder);\n }\n\n _createClass(JsonEncoder, [{\n key: 'encodeCommands',\n value: function encodeCommands(commands) {\n var encodedCommands = [];\n for (var i in commands) {\n if (commands.hasOwnProperty(i)) {\n encodedCommands.push(JSON.stringify(commands[i]));\n }\n }\n return encodedCommands.join('\\n');\n }\n }]);\n\n return JsonEncoder;\n}();\n\nvar JsonDecoder = exports.JsonDecoder = function () {\n function JsonDecoder() {\n _classCallCheck(this, JsonDecoder);\n }\n\n _createClass(JsonDecoder, [{\n key: 'decodeReplies',\n value: function decodeReplies(data) {\n var replies = [];\n var encodedReplies = data.split('\\n');\n for (var i in encodedReplies) {\n if (encodedReplies.hasOwnProperty(i)) {\n if (!encodedReplies[i]) {\n continue;\n }\n var reply = JSON.parse(encodedReplies[i]);\n replies.push(reply);\n }\n }\n return replies;\n }\n }, {\n key: 'decodeCommandResult',\n value: function decodeCommandResult(methodType, data) {\n return data;\n }\n }, {\n key: 'decodePush',\n value: function decodePush(data) {\n return data;\n }\n }, {\n key: 'decodePushData',\n value: function decodePushData(pushType, data) {\n return data;\n }\n }]);\n\n return JsonDecoder;\n}();\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Writer;\r\n\r\nvar util = __webpack_require__(2);\r\n\r\nvar BufferWriter; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n base64 = util.base64,\r\n utf8 = util.utf8;\r\n\r\n/**\r\n * Constructs a new writer operation instance.\r\n * @classdesc Scheduled writer operation.\r\n * @constructor\r\n * @param {function(*, Uint8Array, number)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {*} val Value to write\r\n * @ignore\r\n */\r\nfunction Op(fn, len, val) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(Uint8Array, number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {Writer.Op|undefined}\r\n */\r\n this.next = undefined;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val; // type varies\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state instance.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n\r\n /**\r\n * Next state.\r\n * @type {State|null}\r\n */\r\n this.next = writer.states;\r\n}\r\n\r\n/**\r\n * Constructs a new writer instance.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * Linked forked states.\r\n * @type {Object|null}\r\n */\r\n this.states = null;\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling operations with already prepared values.\r\n}\r\n\r\n/**\r\n * Creates a new writer.\r\n * @function\r\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\r\n */\r\nWriter.create = util.Buffer\r\n ? function create_buffer_setup() {\r\n return (Writer.create = function create_buffer() {\r\n return new BufferWriter();\r\n })();\r\n }\r\n /* istanbul ignore next */\r\n : function create_array() {\r\n return new Writer();\r\n };\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nWriter.alloc = function alloc(size) {\r\n return new util.Array(size);\r\n};\r\n\r\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\r\n/* istanbul ignore else */\r\nif (util.Array !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n * @private\r\n */\r\nWriter.prototype._push = function push(fn, len, val) {\r\n this.tail = this.tail.next = new Op(fn, len, val);\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(val, buf, pos) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\nfunction writeVarint32(val, buf, pos) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Constructs a new varint writer operation instance.\r\n * @classdesc Scheduled varint writer operation.\r\n * @extends Op\r\n * @constructor\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @ignore\r\n */\r\nfunction VarintOp(len, val) {\r\n this.len = len;\r\n this.next = undefined;\r\n this.val = val;\r\n}\r\n\r\nVarintOp.prototype = Object.create(Op.prototype);\r\nVarintOp.prototype.fn = writeVarint32;\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.uint32 = function write_uint32(value) {\r\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\r\n // uint32 is by far the most frequently used operation and benefits significantly from this.\r\n this.len += (this.tail = this.tail.next = new VarintOp(\r\n (value = value >>> 0)\r\n < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5,\r\n value)).len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sint32 = function write_sint32(value) {\r\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\r\n};\r\n\r\nfunction writeVarint64(val, buf, pos) {\r\n while (val.hi) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n while (val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = val.lo >>> 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.int64 = Writer.prototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sint64 = function write_sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bool = function write_bool(value) {\r\n return this._push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fixed32 = function write_fixed32(value) {\r\n return this._push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as fixed 32 bits.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as fixed 64 bits.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.float = function write_float(value) {\r\n return this._push(util.float.writeFloatLE, 4, value);\r\n};\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.double = function write_double(value) {\r\n return this._push(util.float.writeDoubleLE, 8, value);\r\n};\r\n\r\nvar writeBytes = util.Array.prototype.set\r\n ? function writeBytes_set(val, buf, pos) {\r\n buf.set(val, pos); // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytes_for(val, buf, pos) {\r\n for (var i = 0; i < val.length; ++i)\r\n buf[pos + i] = val[i];\r\n };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (!len)\r\n return this._push(writeByte, 1, 0);\r\n if (util.isString(value)) {\r\n var buf = Writer.alloc(len = base64.length(value));\r\n base64.decode(value, buf, 0);\r\n value = buf;\r\n }\r\n return this.uint32(len)._push(writeBytes, len, value);\r\n};\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.string = function write_string(value) {\r\n var len = utf8.length(value);\r\n return len\r\n ? this.uint32(len)._push(utf8.write, len, value)\r\n : this._push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fork = function fork() {\r\n this.states = new State(this);\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.reset = function reset() {\r\n if (this.states) {\r\n this.head = this.states.head;\r\n this.tail = this.states.tail;\r\n this.len = this.states.len;\r\n this.states = this.states.next;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset().uint32(len);\r\n if (len) {\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriter.prototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = this.constructor.alloc(this.len),\r\n pos = 0;\r\n while (head) {\r\n head.fn(head.val, buf, pos);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n // this.head = this.tail = null;\r\n return buf;\r\n};\r\n\r\nWriter._configure = function(BufferWriter_) {\r\n BufferWriter = BufferWriter_;\r\n};\r\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Reader;\r\n\r\nvar util = __webpack_require__(2);\r\n\r\nvar BufferReader; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n utf8 = util.utf8;\r\n\r\n/* istanbul ignore next */\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader instance using the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n\r\n /**\r\n * Read buffer.\r\n * @type {Uint8Array}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\nvar create_array = typeof Uint8Array !== \"undefined\"\r\n ? function create_typed_array(buffer) {\r\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n if (Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n };\r\n\r\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array|Buffer} buffer Buffer to read from\r\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n * @throws {Error} If `buffer` is not a valid buffer\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n return (Reader.create = function create_buffer(buffer) {\r\n return util.Buffer.isBuffer(buffer)\r\n ? new BufferReader(buffer)\r\n /* istanbul ignore next */\r\n : create_array(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : create_array;\r\n\r\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.uint32 = (function read_uint32_setup() {\r\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\r\n return function read_uint32() {\r\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n\r\n /* istanbul ignore if */\r\n if ((this.pos += 5) > this.len) {\r\n this.pos = this.len;\r\n throw indexOutOfRange(this, 10);\r\n }\r\n return value;\r\n };\r\n})();\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.int32 = function read_int32() {\r\n return this.uint32() | 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sint32 = function read_sint32() {\r\n var value = this.uint32();\r\n return value >>> 1 ^ -(value & 1) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readLongVarint() {\r\n // tends to deopt with local vars for octet etc.\r\n var bits = new LongBits(0, 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (; i < 4; ++i) {\r\n // 1st..4th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 5th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n i = 0;\r\n } else {\r\n for (; i < 3; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 1st..3th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 4th\r\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\r\n return bits;\r\n }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (; i < 5; ++i) {\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n } else {\r\n for (; i < 5; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n }\r\n /* istanbul ignore next */\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @name Reader#int64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @name Reader#uint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @name Reader#sint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReader.prototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\r\n return (buf[end - 4]\r\n | buf[end - 3] << 8\r\n | buf[end - 2] << 16\r\n | buf[end - 1] << 24) >>> 0;\r\n}\r\n\r\n/**\r\n * Reads fixed 32 bits as an unsigned 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a signed 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sfixed32 = function read_sfixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @name Reader#fixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @name Reader#sfixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.float = function read_float() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readFloatLE(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.double = function read_double() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readDoubleLE(this.buf, this.pos);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReader.prototype.bytes = function read_bytes() {\r\n var length = this.uint32(),\r\n start = this.pos,\r\n end = this.pos + length;\r\n\r\n /* istanbul ignore if */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\r\n if (Array.isArray(this.buf)) // plain array\r\n return this.buf.slice(start, end);\r\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n ? new this.buf.constructor(0)\r\n : this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReader.prototype.string = function read_string() {\r\n var bytes = this.bytes();\r\n return utf8.read(bytes, 0, bytes.length);\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore if */\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n } else {\r\n do {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n do { // eslint-disable-line no-constant-condition\r\n if ((wireType = this.uint32() & 7) === 4)\r\n break;\r\n this.skipType(wireType);\r\n } while (true);\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\r\n }\r\n return this;\r\n};\r\n\r\nReader._configure = function(BufferReader_) {\r\n BufferReader = BufferReader_;\r\n\r\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\r\n util.merge(Reader.prototype, {\r\n\r\n int64: function read_int64() {\r\n return readLongVarint.call(this)[fn](false);\r\n },\r\n\r\n uint64: function read_uint64() {\r\n return readLongVarint.call(this)[fn](true);\r\n },\r\n\r\n sint64: function read_sint64() {\r\n return readLongVarint.call(this).zzDecode()[fn](false);\r\n },\r\n\r\n fixed64: function read_fixed64() {\r\n return readFixed64.call(this)[fn](true);\r\n },\r\n\r\n sfixed64: function read_sfixed64() {\r\n return readFixed64.call(this)[fn](false);\r\n }\r\n\r\n });\r\n};\r\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = OneOf;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = __webpack_require__(4);\r\n((OneOf.prototype = Object.create(ReflectionObject.prototype)).constructor = OneOf).className = \"OneOf\";\r\n\r\nvar Field = __webpack_require__(5),\r\n util = __webpack_require__(0);\r\n\r\n/**\r\n * Constructs a new oneof instance.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]|Object.} [fieldNames] Field names\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction OneOf(name, fieldNames, options, comment) {\r\n if (!Array.isArray(fieldNames)) {\r\n options = fieldNames;\r\n fieldNames = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n\r\n /* istanbul ignore if */\r\n if (!(fieldNames === undefined || Array.isArray(fieldNames)))\r\n throw TypeError(\"fieldNames must be an Array\");\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {string[]}\r\n */\r\n this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n /**\r\n * Fields that belong to this oneof as an array for iteration.\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n this.fieldsArray = []; // declared readonly for conformance, possibly not yet added to parent\r\n\r\n /**\r\n * Comment for this field.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Oneof descriptor.\r\n * @interface IOneOf\r\n * @property {Array.} oneof Oneof field names\r\n * @property {Object.} [options] Oneof options\r\n */\r\n\r\n/**\r\n * Constructs a oneof from a oneof descriptor.\r\n * @param {string} name Oneof name\r\n * @param {IOneOf} json Oneof descriptor\r\n * @returns {OneOf} Created oneof\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nOneOf.fromJSON = function fromJSON(name, json) {\r\n return new OneOf(name, json.oneof, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this oneof to a oneof descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IOneOf} Oneof descriptor\r\n */\r\nOneOf.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"oneof\" , this.oneof,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds the fields of the specified oneof to the parent if not already done so.\r\n * @param {OneOf} oneof The oneof\r\n * @returns {undefined}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction addFieldsToParent(oneof) {\r\n if (oneof.parent)\r\n for (var i = 0; i < oneof.fieldsArray.length; ++i)\r\n if (!oneof.fieldsArray[i].parent)\r\n oneof.parent.add(oneof.fieldsArray[i]);\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof and removes it from its current parent, if any.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOf.prototype.add = function add(field) {\r\n\r\n /* istanbul ignore if */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field must be a Field\");\r\n\r\n if (field.parent && field.parent !== this.parent)\r\n field.parent.remove(field);\r\n this.oneof.push(field.name);\r\n this.fieldsArray.push(field);\r\n field.partOf = this; // field.parent remains null\r\n addFieldsToParent(this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a field from this oneof and puts it back to the oneof's parent.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOf.prototype.remove = function remove(field) {\r\n\r\n /* istanbul ignore if */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field must be a Field\");\r\n\r\n var index = this.fieldsArray.indexOf(field);\r\n\r\n /* istanbul ignore if */\r\n if (index < 0)\r\n throw Error(field + \" is not a member of \" + this);\r\n\r\n this.fieldsArray.splice(index, 1);\r\n index = this.oneof.indexOf(field.name);\r\n\r\n /* istanbul ignore else */\r\n if (index > -1) // theoretical\r\n this.oneof.splice(index, 1);\r\n\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOf.prototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n var self = this;\r\n // Collect present fields\r\n for (var i = 0; i < this.oneof.length; ++i) {\r\n var field = parent.get(this.oneof[i]);\r\n if (field && !field.partOf) {\r\n field.partOf = self;\r\n self.fieldsArray.push(field);\r\n }\r\n }\r\n // Add not yet present fields\r\n addFieldsToParent(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOf.prototype.onRemove = function onRemove(parent) {\r\n for (var i = 0, field; i < this.fieldsArray.length; ++i)\r\n if ((field = this.fieldsArray[i]).parent)\r\n field.parent.remove(field);\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link OneOf.d} (TypeScript).\r\n * @typedef OneOfDecorator\r\n * @type {function}\r\n * @param {Object} prototype Target prototype\r\n * @param {string} oneofName OneOf name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * OneOf decorator (TypeScript).\r\n * @function\r\n * @param {...string} fieldNames Field names\r\n * @returns {OneOfDecorator} Decorator function\r\n * @template T extends string\r\n */\r\nOneOf.d = function decorateOneOf() {\r\n var fieldNames = new Array(arguments.length),\r\n index = 0;\r\n while (index < arguments.length)\r\n fieldNames[index] = arguments[index++];\r\n return function oneOfDecorator(prototype, oneofName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new OneOf(oneofName, fieldNames));\r\n Object.defineProperty(prototype, oneofName, {\r\n get: util.oneOfGetter(fieldNames),\r\n set: util.oneOfSetter(fieldNames)\r\n });\r\n };\r\n};\r\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Message;\r\n\r\nvar util = __webpack_require__(2);\r\n\r\n/**\r\n * Constructs a new message instance.\r\n * @classdesc Abstract runtime message.\r\n * @constructor\r\n * @param {Properties} [properties] Properties to set\r\n * @template T extends object\r\n */\r\nfunction Message(properties) {\r\n // not used internally\r\n if (properties)\r\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\r\n this[keys[i]] = properties[keys[i]];\r\n}\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/*eslint-disable valid-jsdoc*/\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message} Message instance\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.create = function create(properties) {\r\n return this.$type.create(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {T|Object.} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.encode = function encode(message, writer) {\r\n return this.$type.encode(message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @param {T|Object.} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Message.decode\r\n * @function\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\r\n * @returns {T} Decoded message\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.decode = function decode(reader) {\r\n return this.$type.decode(reader);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Message.decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\r\n * @returns {T} Decoded message\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(reader) {\r\n return this.$type.decodeDelimited(reader);\r\n};\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Message.verify\r\n * @function\r\n * @param {Object.} message Plain object to verify\r\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\r\n */\r\nMessage.verify = function verify(message) {\r\n return this.$type.verify(message);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.} object Plain object\r\n * @returns {T} Message instance\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.fromObject = function fromObject(object) {\r\n return this.$type.fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {T} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.toObject = function toObject(message, options) {\r\n return this.$type.toObject(message, options);\r\n};\r\n\r\n/**\r\n * Converts this message to JSON.\r\n * @returns {Object.} JSON object\r\n */\r\nMessage.prototype.toJSON = function toJSON() {\r\n return this.$type.toObject(this, util.toJSONOptions);\r\n};\r\n\r\n/*eslint-enable valid-jsdoc*/\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\n/**\r\n * Streaming RPC helpers.\r\n * @namespace\r\n */\r\nvar rpc = exports;\r\n\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @type {function}\r\n * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCImplCallback} callback Callback function\r\n * @returns {undefined}\r\n * @example\r\n * function rpcImpl(method, requestData, callback) {\r\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\r\n * throw Error(\"no such method\");\r\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\r\n * callback(err, responseData);\r\n * });\r\n * }\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCImplCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\nrpc.Service = __webpack_require__(45);\r\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = {};\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available accross modules.\r\n * @name roots\r\n * @type {Object.}\r\n * @example\r\n * // pbjs -r myroot -o compiled.js ...\r\n *\r\n * // in another module:\r\n * require(\"./compiled.js\");\r\n *\r\n * // in any subsequent module:\r\n * var root = protobuf.roots[\"myroot\"];\r\n */\r\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = encoder;\r\n\r\nvar Enum = __webpack_require__(1),\r\n types = __webpack_require__(9),\r\n util = __webpack_require__(0);\r\n\r\n/**\r\n * Generates a partial message type encoder.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genTypePartial(gen, field, fieldIndex, ref) {\r\n return field.resolvedType.group\r\n ? gen(\"types[%i].encode(%s,w.uint32(%i)).uint32(%i)\", fieldIndex, ref, (field.id << 3 | 3) >>> 0, (field.id << 3 | 4) >>> 0)\r\n : gen(\"types[%i].encode(%s,w.uint32(%i).fork()).ldelim()\", fieldIndex, ref, (field.id << 3 | 2) >>> 0);\r\n}\r\n\r\n/**\r\n * Generates an encoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction encoder(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var gen = util.codegen([\"m\", \"w\"], mtype.name + \"$encode\")\r\n (\"if(!w)\")\r\n (\"w=Writer.create()\");\r\n\r\n var i, ref;\r\n\r\n // \"when a message is serialized its known fields should be written sequentially by field number\"\r\n var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById);\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n index = mtype._fieldsArray.indexOf(field),\r\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\r\n wireType = types.basic[type];\r\n ref = \"m\" + util.safeProp(field.name);\r\n\r\n // Map fields\r\n if (field.map) {\r\n gen\r\n (\"if(%s!=null&&m.hasOwnProperty(%j)){\", ref, field.name) // !== undefined && !== null\r\n (\"for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[field.keyType], field.keyType);\r\n if (wireType === undefined) gen\r\n (\"types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", index, ref); // can't be groups\r\n else gen\r\n (\".uint32(%i).%s(%s[ks[i]]).ldelim()\", 16 | wireType, type, ref);\r\n gen\r\n (\"}\")\r\n (\"}\");\r\n\r\n // Repeated fields\r\n } else if (field.repeated) { gen\r\n (\"if(%s!=null&&%s.length){\", ref, ref); // !== undefined && !== null\r\n\r\n // Packed repeated\r\n if (field.packed && types.packed[type] !== undefined) { gen\r\n\r\n (\"w.uint32(%i).fork()\", (field.id << 3 | 2) >>> 0)\r\n (\"for(var i=0;i<%s.length;++i)\", ref)\r\n (\"w.%s(%s[i])\", type, ref)\r\n (\"w.ldelim()\");\r\n\r\n // Non-packed\r\n } else { gen\r\n\r\n (\"for(var i=0;i<%s.length;++i)\", ref);\r\n if (wireType === undefined)\r\n genTypePartial(gen, field, index, ref + \"[i]\");\r\n else gen\r\n (\"w.uint32(%i).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n } gen\r\n (\"}\");\r\n\r\n // Non-repeated\r\n } else {\r\n if (field.optional) gen\r\n (\"if(%s!=null&&m.hasOwnProperty(%j))\", ref, field.name); // !== undefined && !== null\r\n\r\n if (wireType === undefined)\r\n genTypePartial(gen, field, index, ref);\r\n else gen\r\n (\"w.uint32(%i).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n }\r\n\r\n return gen\r\n (\"return w\");\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Type;\r\n\r\n// extends Namespace\r\nvar Namespace = __webpack_require__(8);\r\n((Type.prototype = Object.create(Namespace.prototype)).constructor = Type).className = \"Type\";\r\n\r\nvar Enum = __webpack_require__(1),\r\n OneOf = __webpack_require__(15),\r\n Field = __webpack_require__(5),\r\n MapField = __webpack_require__(23),\r\n Service = __webpack_require__(24),\r\n Message = __webpack_require__(16),\r\n Reader = __webpack_require__(14),\r\n Writer = __webpack_require__(13),\r\n util = __webpack_require__(0),\r\n encoder = __webpack_require__(21),\r\n decoder = __webpack_require__(26),\r\n verifier = __webpack_require__(27),\r\n converter = __webpack_require__(28),\r\n wrappers = __webpack_require__(29);\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Message fields.\r\n * @type {Object.}\r\n */\r\n this.fields = {}; // toJSON, marker\r\n\r\n /**\r\n * Oneofs declared within this namespace, if any.\r\n * @type {Object.}\r\n */\r\n this.oneofs = undefined; // toJSON\r\n\r\n /**\r\n * Extension ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.extensions = undefined; // toJSON\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {Array.}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n /*?\r\n * Whether this type is a legacy group.\r\n * @type {boolean|undefined}\r\n */\r\n this.group = undefined; // toJSON\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {Object.|null}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields as an array.\r\n * @type {Field[]|null}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {OneOf[]|null}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {Constructor<{}>}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nObject.defineProperties(Type.prototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: function() {\r\n\r\n /* istanbul ignore if */\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n\r\n this._fieldsById = {};\r\n for (var names = Object.keys(this.fields), i = 0; i < names.length; ++i) {\r\n var field = this.fields[names[i]],\r\n id = field.id;\r\n\r\n /* istanbul ignore if */\r\n if (this._fieldsById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n\r\n this._fieldsById[id] = field;\r\n }\r\n return this._fieldsById;\r\n }\r\n },\r\n\r\n /**\r\n * Fields of this message as an array for iteration.\r\n * @name Type#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: function() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Oneofs of this message as an array for iteration.\r\n * @name Type#oneofsArray\r\n * @type {OneOf[]}\r\n * @readonly\r\n */\r\n oneofsArray: {\r\n get: function() {\r\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n }\r\n },\r\n\r\n /**\r\n * The registered constructor, if any registered, otherwise a generic constructor.\r\n * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor.\r\n * @name Type#ctor\r\n * @type {Constructor<{}>}\r\n */\r\n ctor: {\r\n get: function() {\r\n return this._ctor || (this.ctor = Type.generateConstructor(this)());\r\n },\r\n set: function(ctor) {\r\n\r\n // Ensure proper prototype\r\n var prototype = ctor.prototype;\r\n if (!(prototype instanceof Message)) {\r\n (ctor.prototype = new Message()).constructor = ctor;\r\n util.merge(ctor.prototype, prototype);\r\n }\r\n\r\n // Classes and messages reference their reflected type\r\n ctor.$type = ctor.prototype.$type = this;\r\n\r\n // Mix in static methods\r\n util.merge(ctor, Message, true);\r\n\r\n this._ctor = ctor;\r\n\r\n // Messages have non-enumerable default values on their prototype\r\n var i = 0;\r\n for (; i < /* initializes */ this.fieldsArray.length; ++i)\r\n this._fieldsArray[i].resolve(); // ensures a proper value\r\n\r\n // Messages have non-enumerable getters and setters for each virtual oneof field\r\n var ctorProperties = {};\r\n for (i = 0; i < /* initializes */ this.oneofsArray.length; ++i)\r\n ctorProperties[this._oneofsArray[i].resolve().name] = {\r\n get: util.oneOfGetter(this._oneofsArray[i].oneof),\r\n set: util.oneOfSetter(this._oneofsArray[i].oneof)\r\n };\r\n if (i)\r\n Object.defineProperties(ctor.prototype, ctorProperties);\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Generates a constructor function for the specified type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nType.generateConstructor = function generateConstructor(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var gen = util.codegen([\"p\"], mtype.name);\r\n // explicitly initialize mutable object/array fields so that these aren't just inherited from the prototype\r\n for (var i = 0, field; i < mtype.fieldsArray.length; ++i)\r\n if ((field = mtype._fieldsArray[i]).map) gen\r\n (\"this%s={}\", util.safeProp(field.name));\r\n else if (field.repeated) gen\r\n (\"this%s=[]\", util.safeProp(field.name));\r\n return gen\r\n (\"if(p)for(var ks=Object.keys(p),i=0;i} [oneofs] Oneof descriptors\r\n * @property {Object.} fields Field descriptors\r\n * @property {number[][]} [extensions] Extension ranges\r\n * @property {number[][]} [reserved] Reserved ranges\r\n * @property {boolean} [group=false] Whether a legacy group or not\r\n */\r\n\r\n/**\r\n * Creates a message type from a message type descriptor.\r\n * @param {string} name Message name\r\n * @param {IType} json Message type descriptor\r\n * @returns {Type} Created message type\r\n */\r\nType.fromJSON = function fromJSON(name, json) {\r\n var type = new Type(name, json.options);\r\n type.extensions = json.extensions;\r\n type.reserved = json.reserved;\r\n var names = Object.keys(json.fields),\r\n i = 0;\r\n for (; i < names.length; ++i)\r\n type.add(\r\n ( typeof json.fields[names[i]].keyType !== \"undefined\"\r\n ? MapField.fromJSON\r\n : Field.fromJSON )(names[i], json.fields[names[i]])\r\n );\r\n if (json.oneofs)\r\n for (names = Object.keys(json.oneofs), i = 0; i < names.length; ++i)\r\n type.add(OneOf.fromJSON(names[i], json.oneofs[names[i]]));\r\n if (json.nested)\r\n for (names = Object.keys(json.nested), i = 0; i < names.length; ++i) {\r\n var nested = json.nested[names[i]];\r\n type.add( // most to least likely\r\n ( nested.id !== undefined\r\n ? Field.fromJSON\r\n : nested.fields !== undefined\r\n ? Type.fromJSON\r\n : nested.values !== undefined\r\n ? Enum.fromJSON\r\n : nested.methods !== undefined\r\n ? Service.fromJSON\r\n : Namespace.fromJSON )(names[i], nested)\r\n );\r\n }\r\n if (json.extensions && json.extensions.length)\r\n type.extensions = json.extensions;\r\n if (json.reserved && json.reserved.length)\r\n type.reserved = json.reserved;\r\n if (json.group)\r\n type.group = true;\r\n if (json.comment)\r\n type.comment = json.comment;\r\n return type;\r\n};\r\n\r\n/**\r\n * Converts this message type to a message type descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IType} Message type descriptor\r\n */\r\nType.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , inherited && inherited.options || undefined,\r\n \"oneofs\" , Namespace.arrayToJSON(this.oneofsArray, toJSONOptions),\r\n \"fields\" , Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; }), toJSONOptions) || {},\r\n \"extensions\" , this.extensions && this.extensions.length ? this.extensions : undefined,\r\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\r\n \"group\" , this.group || undefined,\r\n \"nested\" , inherited && inherited.nested || undefined,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nType.prototype.resolveAll = function resolveAll() {\r\n var fields = this.fieldsArray, i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.oneofsArray; i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nType.prototype.get = function get(name) {\r\n return this.fields[name]\r\n || this.oneofs && this.oneofs[name]\r\n || this.nested && this.nested[name]\r\n || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this type.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\r\n */\r\nType.prototype.add = function add(object) {\r\n\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n\r\n if (object instanceof Field && object.extend === undefined) {\r\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\r\n // The root object takes care of adding distinct sister-fields to the respective extended\r\n // type instead.\r\n\r\n // avoids calling the getter if not absolutely necessary because it's called quite frequently\r\n if (this._fieldsById ? /* istanbul ignore next */ this._fieldsById[object.id] : this.fieldsById[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\r\n if (this.isReservedId(object.id))\r\n throw Error(\"id \" + object.id + \" is reserved in \" + this);\r\n if (this.isReservedName(object.name))\r\n throw Error(\"name '\" + object.name + \"' is reserved in \" + this);\r\n\r\n if (object.parent)\r\n object.parent.remove(object);\r\n this.fields[object.name] = object;\r\n object.message = this;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n if (!this.oneofs)\r\n this.oneofs = {};\r\n this.oneofs[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this type.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this type\r\n */\r\nType.prototype.remove = function remove(object) {\r\n if (object instanceof Field && object.extend === undefined) {\r\n // See Type#add for the reason why extension fields are excluded here.\r\n\r\n /* istanbul ignore if */\r\n if (!this.fields || this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.fields[object.name];\r\n object.parent = null;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n\r\n /* istanbul ignore if */\r\n if (!this.oneofs || this.oneofs[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.oneofs[object.name];\r\n object.parent = null;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nType.prototype.isReservedId = function isReservedId(id) {\r\n return Namespace.isReservedId(this.reserved, id);\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nType.prototype.isReservedName = function isReservedName(name) {\r\n return Namespace.isReservedName(this.reserved, name);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message<{}>} Message instance\r\n */\r\nType.prototype.create = function create(properties) {\r\n return new this.ctor(properties);\r\n};\r\n\r\n/**\r\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\r\n * @returns {Type} `this`\r\n */\r\nType.prototype.setup = function setup() {\r\n // Sets up everything at once so that the prototype chain does not have to be re-evaluated\r\n // multiple times (V8, soft-deopt prototype-check).\r\n\r\n var fullName = this.fullName,\r\n types = [];\r\n for (var i = 0; i < /* initializes */ this.fieldsArray.length; ++i)\r\n types.push(this._fieldsArray[i].resolve().resolvedType);\r\n\r\n // Replace setup methods with type-specific generated functions\r\n this.encode = encoder(this)({\r\n Writer : Writer,\r\n types : types,\r\n util : util\r\n });\r\n this.decode = decoder(this)({\r\n Reader : Reader,\r\n types : types,\r\n util : util\r\n });\r\n this.verify = verifier(this)({\r\n types : types,\r\n util : util\r\n });\r\n this.fromObject = converter.fromObject(this)({\r\n types : types,\r\n util : util\r\n });\r\n this.toObject = converter.toObject(this)({\r\n types : types,\r\n util : util\r\n });\r\n\r\n // Inject custom wrappers for common types\r\n var wrapper = wrappers[fullName];\r\n if (wrapper) {\r\n var originalThis = Object.create(this);\r\n // if (wrapper.fromObject) {\r\n originalThis.fromObject = this.fromObject;\r\n this.fromObject = wrapper.fromObject.bind(originalThis);\r\n // }\r\n // if (wrapper.toObject) {\r\n originalThis.toObject = this.toObject;\r\n this.toObject = wrapper.toObject.bind(originalThis);\r\n // }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages.\r\n * @param {Message<{}>|Object.} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nType.prototype.encode = function encode_setup(message, writer) {\r\n return this.setup().encode(message, writer); // overrides this method\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages.\r\n * @param {Message<{}>|Object.} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nType.prototype.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim();\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Message<{}>} Decoded message\r\n * @throws {Error} If the payload is not a reader or valid buffer\r\n * @throws {util.ProtocolError<{}>} If required fields are missing\r\n */\r\nType.prototype.decode = function decode_setup(reader, length) {\r\n return this.setup().decode(reader, length); // overrides this method\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\r\n * @returns {Message<{}>} Decoded message\r\n * @throws {Error} If the payload is not a reader or valid buffer\r\n * @throws {util.ProtocolError} If required fields are missing\r\n */\r\nType.prototype.decodeDelimited = function decodeDelimited(reader) {\r\n if (!(reader instanceof Reader))\r\n reader = Reader.create(reader);\r\n return this.decode(reader, reader.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that field values are valid and that required fields are present.\r\n * @param {Object.} message Plain object to verify\r\n * @returns {null|string} `null` if valid, otherwise the reason why it is not\r\n */\r\nType.prototype.verify = function verify_setup(message) {\r\n return this.setup().verify(message); // overrides this method\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.} object Plain object to convert\r\n * @returns {Message<{}>} Message instance\r\n */\r\nType.prototype.fromObject = function fromObject(object) {\r\n return this.setup().fromObject(object);\r\n};\r\n\r\n/**\r\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\r\n * @interface IConversionOptions\r\n * @property {Function} [longs] Long conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\r\n * @property {Function} [enums] Enum value conversion type.\r\n * Only valid value is `String` (the global type).\r\n * Defaults to copy the present value, which is the numeric id.\r\n * @property {Function} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\r\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\r\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\r\n * @property {boolean} [oneofs=false] Includes virtual oneof properties set to the present field's name, if any\r\n * @property {boolean} [json=false] Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message<{}>} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n */\r\nType.prototype.toObject = function toObject(message, options) {\r\n return this.setup().toObject(message, options);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link Type.d} (TypeScript).\r\n * @typedef TypeDecorator\r\n * @type {function}\r\n * @param {Constructor} target Target constructor\r\n * @returns {undefined}\r\n * @template T extends Message\r\n */\r\n\r\n/**\r\n * Type decorator (TypeScript).\r\n * @param {string} [typeName] Type name, defaults to the constructor's name\r\n * @returns {TypeDecorator} Decorator function\r\n * @template T extends Message\r\n */\r\nType.d = function decorateType(typeName) {\r\n return function typeDecorator(target) {\r\n util.decorateType(target, typeName);\r\n };\r\n};\r\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = MapField;\r\n\r\n// extends Field\r\nvar Field = __webpack_require__(5);\r\n((MapField.prototype = Object.create(Field.prototype)).constructor = MapField).className = \"MapField\";\r\n\r\nvar types = __webpack_require__(9),\r\n util = __webpack_require__(0);\r\n\r\n/**\r\n * Constructs a new map field instance.\r\n * @classdesc Reflected map field.\r\n * @extends FieldBase\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} keyType Key type\r\n * @param {string} type Value type\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction MapField(name, id, keyType, type, options, comment) {\r\n Field.call(this, name, id, type, undefined, undefined, options, comment);\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(keyType))\r\n throw TypeError(\"keyType must be a string\");\r\n\r\n /**\r\n * Key type.\r\n * @type {string}\r\n */\r\n this.keyType = keyType; // toJSON, marker\r\n\r\n /**\r\n * Resolved key type if not a basic type.\r\n * @type {ReflectionObject|null}\r\n */\r\n this.resolvedKeyType = null;\r\n\r\n // Overrides Field#map\r\n this.map = true;\r\n}\r\n\r\n/**\r\n * Map field descriptor.\r\n * @interface IMapField\r\n * @extends {IField}\r\n * @property {string} keyType Key type\r\n */\r\n\r\n/**\r\n * Extension map field descriptor.\r\n * @interface IExtensionMapField\r\n * @extends IMapField\r\n * @property {string} extend Extended type\r\n */\r\n\r\n/**\r\n * Constructs a map field from a map field descriptor.\r\n * @param {string} name Field name\r\n * @param {IMapField} json Map field descriptor\r\n * @returns {MapField} Created map field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMapField.fromJSON = function fromJSON(name, json) {\r\n return new MapField(name, json.id, json.keyType, json.type, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this map field to a map field descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IMapField} Map field descriptor\r\n */\r\nMapField.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"keyType\" , this.keyType,\r\n \"type\" , this.type,\r\n \"id\" , this.id,\r\n \"extend\" , this.extend,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapField.prototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n // Besides a value type, map fields have a key type that may be \"any scalar type except for floating point types and bytes\"\r\n if (types.mapKey[this.keyType] === undefined)\r\n throw Error(\"invalid key type: \" + this.keyType);\r\n\r\n return Field.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Map field decorator (TypeScript).\r\n * @name MapField.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"} fieldKeyType Field key type\r\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"|\"bytes\"|Object|Constructor<{}>} fieldValueType Field value type\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> }\r\n */\r\nMapField.d = function decorateMapField(fieldId, fieldKeyType, fieldValueType) {\r\n\r\n // submessage value: decorate the submessage and use its name as the type\r\n if (typeof fieldValueType === \"function\")\r\n fieldValueType = util.decorateType(fieldValueType).name;\r\n\r\n // enum reference value: create a reflected copy of the enum and keep reuseing it\r\n else if (fieldValueType && typeof fieldValueType === \"object\")\r\n fieldValueType = util.decorateEnum(fieldValueType).name;\r\n\r\n return function mapFieldDecorator(prototype, fieldName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new MapField(fieldName, fieldId, fieldKeyType, fieldValueType));\r\n };\r\n};\r\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Service;\r\n\r\n// extends Namespace\r\nvar Namespace = __webpack_require__(8);\r\n((Service.prototype = Object.create(Namespace.prototype)).constructor = Service).className = \"Service\";\r\n\r\nvar Method = __webpack_require__(25),\r\n util = __webpack_require__(0),\r\n rpc = __webpack_require__(19);\r\n\r\n/**\r\n * Constructs a new service instance.\r\n * @classdesc Reflected service.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Service methods.\r\n * @type {Object.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {Method[]|null}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\n/**\r\n * Service descriptor.\r\n * @interface IService\r\n * @extends INamespace\r\n * @property {Object.} methods Method descriptors\r\n */\r\n\r\n/**\r\n * Constructs a service from a service descriptor.\r\n * @param {string} name Service name\r\n * @param {IService} json Service descriptor\r\n * @returns {Service} Created service\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nService.fromJSON = function fromJSON(name, json) {\r\n var service = new Service(name, json.options);\r\n /* istanbul ignore else */\r\n if (json.methods)\r\n for (var names = Object.keys(json.methods), i = 0; i < names.length; ++i)\r\n service.add(Method.fromJSON(names[i], json.methods[names[i]]));\r\n if (json.nested)\r\n service.addJSON(json.nested);\r\n service.comment = json.comment;\r\n return service;\r\n};\r\n\r\n/**\r\n * Converts this service to a service descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IService} Service descriptor\r\n */\r\nService.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , inherited && inherited.options || undefined,\r\n \"methods\" , Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ {},\r\n \"nested\" , inherited && inherited.nested || undefined,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(Service.prototype, \"methodsArray\", {\r\n get: function() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n});\r\n\r\nfunction clearCache(service) {\r\n service._methodsArray = null;\r\n return service;\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.get = function get(name) {\r\n return this.methods[name]\r\n || Namespace.prototype.get.call(this, name);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.resolveAll = function resolveAll() {\r\n var methods = this.methodsArray;\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return Namespace.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.add = function add(object) {\r\n\r\n /* istanbul ignore if */\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n\r\n if (object instanceof Method) {\r\n this.methods[object.name] = object;\r\n object.parent = this;\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n\r\n /* istanbul ignore if */\r\n if (this.methods[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.methods[object.name];\r\n object.parent = null;\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n * @returns {rpc.Service} RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nService.prototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl, requestDelimited, responseDelimited);\r\n for (var i = 0, method; i < /* initializes */ this.methodsArray.length; ++i) {\r\n var methodName = util.lcFirst((method = this._methodsArray[i]).resolve().name).replace(/[^$\\w_]/g, \"\");\r\n rpcService[methodName] = util.codegen([\"r\",\"c\"], util.isReserved(methodName) ? methodName + \"_\" : methodName)(\"return this.rpcCall(m,q,s,r,c)\")({\r\n m: method,\r\n q: method.resolvedRequestType.ctor,\r\n s: method.resolvedResponseType.ctor\r\n });\r\n }\r\n return rpcService;\r\n};\r\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Method;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = __webpack_require__(4);\r\n((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = \"Method\";\r\n\r\nvar util = __webpack_require__(0);\r\n\r\n/**\r\n * Constructs a new service method instance.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean|Object.} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.} [responseStream] Whether the response is streamed\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] The comment for this method\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options, comment) {\r\n\r\n /* istanbul ignore next */\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n\r\n /* istanbul ignore if */\r\n if (!(type === undefined || util.isString(type)))\r\n throw TypeError(\"type must be a string\");\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(requestType))\r\n throw TypeError(\"requestType must be a string\");\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(responseType))\r\n throw TypeError(\"responseType must be a string\");\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Method type.\r\n * @type {string}\r\n */\r\n this.type = type || \"rpc\"; // toJSON\r\n\r\n /**\r\n * Request type.\r\n * @type {string}\r\n */\r\n this.requestType = requestType; // toJSON, marker\r\n\r\n /**\r\n * Whether requests are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Response type.\r\n * @type {string}\r\n */\r\n this.responseType = responseType; // toJSON\r\n\r\n /**\r\n * Whether responses are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Resolved request type.\r\n * @type {Type|null}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {Type|null}\r\n */\r\n this.resolvedResponseType = null;\r\n\r\n /**\r\n * Comment for this method\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Method descriptor.\r\n * @interface IMethod\r\n * @property {string} [type=\"rpc\"] Method type\r\n * @property {string} requestType Request type\r\n * @property {string} responseType Response type\r\n * @property {boolean} [requestStream=false] Whether requests are streamed\r\n * @property {boolean} [responseStream=false] Whether responses are streamed\r\n * @property {Object.} [options] Method options\r\n */\r\n\r\n/**\r\n * Constructs a method from a method descriptor.\r\n * @param {string} name Method name\r\n * @param {IMethod} json Method descriptor\r\n * @returns {Method} Created method\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMethod.fromJSON = function fromJSON(name, json) {\r\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this method to a method descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IMethod} Method descriptor\r\n */\r\nMethod.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"type\" , this.type !== \"rpc\" && /* istanbul ignore next */ this.type || undefined,\r\n \"requestType\" , this.requestType,\r\n \"requestStream\" , this.requestStream,\r\n \"responseType\" , this.responseType,\r\n \"responseStream\" , this.responseStream,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethod.prototype.resolve = function resolve() {\r\n\r\n /* istanbul ignore if */\r\n if (this.resolved)\r\n return this;\r\n\r\n this.resolvedRequestType = this.parent.lookupType(this.requestType);\r\n this.resolvedResponseType = this.parent.lookupType(this.responseType);\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = decoder;\r\n\r\nvar Enum = __webpack_require__(1),\r\n types = __webpack_require__(9),\r\n util = __webpack_require__(0);\r\n\r\nfunction missing(field) {\r\n return \"missing required '\" + field.name + \"'\";\r\n}\r\n\r\n/**\r\n * Generates a decoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction decoder(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var gen = util.codegen([\"r\", \"l\"], mtype.name + \"$decode\")\r\n (\"if(!(r instanceof Reader))\")\r\n (\"r=Reader.create(r)\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new this.ctor\" + (mtype.fieldsArray.filter(function(field) { return field.map; }).length ? \",k\" : \"\"))\r\n (\"while(r.pos>>3){\");\r\n\r\n var i = 0;\r\n for (; i < /* initializes */ mtype.fieldsArray.length; ++i) {\r\n var field = mtype._fieldsArray[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\r\n ref = \"m\" + util.safeProp(field.name); gen\r\n (\"case %i:\", field.id);\r\n\r\n // Map fields\r\n if (field.map) { gen\r\n (\"r.skip().pos++\") // assumes id 1 + key wireType\r\n (\"if(%s===util.emptyObject)\", ref)\r\n (\"%s={}\", ref)\r\n (\"k=r.%s()\", field.keyType)\r\n (\"r.pos++\"); // assumes id 2 + value wireType\r\n if (types.long[field.keyType] !== undefined) {\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=types[%i].decode(r,r.uint32())\", ref, i); // can't be groups\r\n else gen\r\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=r.%s()\", ref, type);\r\n } else {\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[k]=types[%i].decode(r,r.uint32())\", ref, i); // can't be groups\r\n else gen\r\n (\"%s[k]=r.%s()\", ref, type);\r\n }\r\n\r\n // Repeated fields\r\n } else if (field.repeated) { gen\r\n\r\n (\"if(!(%s&&%s.length))\", ref, ref)\r\n (\"%s=[]\", ref);\r\n\r\n // Packable (always check for forward and backward compatiblity)\r\n if (types.packed[type] !== undefined) gen\r\n (\"if((t&7)===2){\")\r\n (\"var c2=r.uint32()+r.pos\")\r\n (\"while(r.pos>>0\", prop, prop);\r\n break;\r\n case \"int32\":\r\n case \"sint32\":\r\n case \"sfixed32\": gen\r\n (\"m%s=d%s|0\", prop, prop);\r\n break;\r\n case \"uint64\":\r\n isUnsigned = true;\r\n // eslint-disable-line no-fallthrough\r\n case \"int64\":\r\n case \"sint64\":\r\n case \"fixed64\":\r\n case \"sfixed64\": gen\r\n (\"if(util.Long)\")\r\n (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\r\n (\"else if(typeof d%s===\\\"string\\\")\", prop)\r\n (\"m%s=parseInt(d%s,10)\", prop, prop)\r\n (\"else if(typeof d%s===\\\"number\\\")\", prop)\r\n (\"m%s=d%s\", prop, prop)\r\n (\"else if(typeof d%s===\\\"object\\\")\", prop)\r\n (\"m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\r\n break;\r\n case \"bytes\": gen\r\n (\"if(typeof d%s===\\\"string\\\")\", prop)\r\n (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop)\r\n (\"else if(d%s.length)\", prop)\r\n (\"m%s=d%s\", prop, prop);\r\n break;\r\n case \"string\": gen\r\n (\"m%s=String(d%s)\", prop, prop);\r\n break;\r\n case \"bool\": gen\r\n (\"m%s=Boolean(d%s)\", prop, prop);\r\n break;\r\n /* default: gen\r\n (\"m%s=d%s\", prop, prop);\r\n break; */\r\n }\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a plain object to runtime message converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.fromObject = function fromObject(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var fields = mtype.fieldsArray;\r\n var gen = util.codegen([\"d\"], mtype.name + \"$fromObject\")\r\n (\"if(d instanceof this.ctor)\")\r\n (\"return d\");\r\n if (!fields.length) return gen\r\n (\"return new this.ctor\");\r\n gen\r\n (\"var m=new this.ctor\");\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n prop = util.safeProp(field.name);\r\n\r\n // Map fields\r\n if (field.map) { gen\r\n (\"if(d%s){\", prop)\r\n (\"if(typeof d%s!==\\\"object\\\")\", prop)\r\n (\"throw TypeError(%j)\", field.fullName + \": object expected\")\r\n (\"m%s={}\", prop)\r\n (\"for(var ks=Object.keys(d%s),i=0;i>>0,m%s.high>>>0).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\r\n break;\r\n case \"bytes\": gen\r\n (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\r\n break;\r\n default: gen\r\n (\"d%s=m%s\", prop, prop);\r\n break;\r\n }\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a runtime message to plain object converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.toObject = function toObject(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var fields = mtype.fieldsArray.slice().sort(util.compareFieldsById);\r\n if (!fields.length)\r\n return util.codegen()(\"return {}\");\r\n var gen = util.codegen([\"m\", \"o\"], mtype.name + \"$toObject\")\r\n (\"if(!o)\")\r\n (\"o={}\")\r\n (\"var d={}\");\r\n\r\n var repeatedFields = [],\r\n mapFields = [],\r\n normalFields = [],\r\n i = 0;\r\n for (; i < fields.length; ++i)\r\n if (!fields[i].partOf)\r\n ( fields[i].resolve().repeated ? repeatedFields\r\n : fields[i].map ? mapFields\r\n : normalFields).push(fields[i]);\r\n\r\n if (repeatedFields.length) { gen\r\n (\"if(o.arrays||o.defaults){\");\r\n for (i = 0; i < repeatedFields.length; ++i) gen\r\n (\"d%s=[]\", util.safeProp(repeatedFields[i].name));\r\n gen\r\n (\"}\");\r\n }\r\n\r\n if (mapFields.length) { gen\r\n (\"if(o.objects||o.defaults){\");\r\n for (i = 0; i < mapFields.length; ++i) gen\r\n (\"d%s={}\", util.safeProp(mapFields[i].name));\r\n gen\r\n (\"}\");\r\n }\r\n\r\n if (normalFields.length) { gen\r\n (\"if(o.defaults){\");\r\n for (i = 0; i < normalFields.length; ++i) {\r\n var field = normalFields[i],\r\n prop = util.safeProp(field.name);\r\n if (field.resolvedType instanceof Enum) gen\r\n (\"d%s=o.enums===String?%j:%j\", prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\r\n else if (field.long) gen\r\n (\"if(util.Long){\")\r\n (\"var n=new util.Long(%i,%i,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\r\n (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", prop)\r\n (\"}else\")\r\n (\"d%s=o.longs===String?%j:%i\", prop, field.typeDefault.toString(), field.typeDefault.toNumber());\r\n else if (field.bytes) gen\r\n (\"d%s=o.bytes===String?%j:%s\", prop, String.fromCharCode.apply(String, field.typeDefault), \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\");\r\n else gen\r\n (\"d%s=%j\", prop, field.typeDefault); // also messages (=null)\r\n } gen\r\n (\"}\");\r\n }\r\n var hasKs2 = false;\r\n for (i = 0; i < fields.length; ++i) {\r\n var field = fields[i],\r\n index = mtype._fieldsArray.indexOf(field),\r\n prop = util.safeProp(field.name);\r\n if (field.map) {\r\n if (!hasKs2) { hasKs2 = true; gen\r\n (\"var ks2\");\r\n } gen\r\n (\"if(m%s&&(ks2=Object.keys(m%s)).length){\", prop, prop)\r\n (\"d%s={}\", prop)\r\n (\"for(var j=0;j}\r\n * @const\r\n */\r\nvar wrappers = exports;\r\n\r\nvar Message = __webpack_require__(16);\r\n\r\n/**\r\n * From object converter part of an {@link IWrapper}.\r\n * @typedef WrapperFromObjectConverter\r\n * @type {function}\r\n * @param {Object.} object Plain object\r\n * @returns {Message<{}>} Message instance\r\n * @this Type\r\n */\r\n\r\n/**\r\n * To object converter part of an {@link IWrapper}.\r\n * @typedef WrapperToObjectConverter\r\n * @type {function}\r\n * @param {Message<{}>} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n * @this Type\r\n */\r\n\r\n/**\r\n * Common type wrapper part of {@link wrappers}.\r\n * @interface IWrapper\r\n * @property {WrapperFromObjectConverter} [fromObject] From object converter\r\n * @property {WrapperToObjectConverter} [toObject] To object converter\r\n */\r\n\r\n// Custom wrapper for Any\r\nwrappers[\".google.protobuf.Any\"] = {\r\n\r\n fromObject: function(object) {\r\n\r\n // unwrap value type if mapped\r\n if (object && object[\"@type\"]) {\r\n var type = this.lookup(object[\"@type\"]);\r\n /* istanbul ignore else */\r\n if (type) {\r\n // type_url does not accept leading \".\"\r\n var type_url = object[\"@type\"].charAt(0) === \".\" ?\r\n object[\"@type\"].substr(1) : object[\"@type\"];\r\n // type_url prefix is optional, but path seperator is required\r\n return this.create({\r\n type_url: \"/\" + type_url,\r\n value: type.encode(type.fromObject(object)).finish()\r\n });\r\n }\r\n }\r\n\r\n return this.fromObject(object);\r\n },\r\n\r\n toObject: function(message, options) {\r\n\r\n // decode value if requested and unmapped\r\n if (options && options.json && message.type_url && message.value) {\r\n // Only use fully qualified type name after the last '/'\r\n var name = message.type_url.substring(message.type_url.lastIndexOf(\"/\") + 1);\r\n var type = this.lookup(name);\r\n /* istanbul ignore else */\r\n if (type)\r\n message = type.decode(message.value);\r\n }\r\n\r\n // wrap value if unmapped\r\n if (!(message instanceof this.ctor) && message instanceof Message) {\r\n var object = message.$type.toObject(message, options);\r\n object[\"@type\"] = message.$type.fullName;\r\n return object;\r\n }\r\n\r\n return this.toObject(message, options);\r\n }\r\n};\r\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Root;\r\n\r\n// extends Namespace\r\nvar Namespace = __webpack_require__(8);\r\n((Root.prototype = Object.create(Namespace.prototype)).constructor = Root).className = \"Root\";\r\n\r\nvar Field = __webpack_require__(5),\r\n Enum = __webpack_require__(1),\r\n OneOf = __webpack_require__(15),\r\n util = __webpack_require__(0);\r\n\r\nvar Type, // cyclic\r\n parse, // might be excluded\r\n common; // \"\r\n\r\n/**\r\n * Constructs a new root namespace instance.\r\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {Object.} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n Namespace.call(this, \"\", options);\r\n\r\n /**\r\n * Deferred extension fields.\r\n * @type {Field[]}\r\n */\r\n this.deferred = [];\r\n\r\n /**\r\n * Resolved file names of loaded files.\r\n * @type {string[]}\r\n */\r\n this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a namespace descriptor into a root namespace.\r\n * @param {INamespace} json Nameespace descriptor\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\r\n * @returns {Root} Root namespace\r\n */\r\nRoot.fromJSON = function fromJSON(json, root) {\r\n if (!root)\r\n root = new Root();\r\n if (json.options)\r\n root.setOptions(json.options);\r\n return root.addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Resolves the path of an imported file, relative to the importing origin.\r\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\r\n * @function\r\n * @param {string} origin The file name of the importing file\r\n * @param {string} target The file name being imported\r\n * @returns {string|null} Resolved path to `target` or `null` to skip the file\r\n */\r\nRoot.prototype.resolvePath = util.path.resolve;\r\n\r\n// A symbol-like function to safely signal synchronous loading\r\n/* istanbul ignore next */\r\nfunction SYNC() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} options Parse options\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nRoot.prototype.load = function load(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = undefined;\r\n }\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(load, self, filename, options);\r\n\r\n var sync = callback === SYNC; // undocumented\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n /* istanbul ignore if */\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n if (sync)\r\n throw err;\r\n cb(err, root);\r\n }\r\n\r\n // Processes a single file\r\n function process(filename, source) {\r\n try {\r\n if (util.isString(source) && source.charAt(0) === \"{\")\r\n source = JSON.parse(source);\r\n if (!util.isString(source))\r\n self.setOptions(source.options).addJSON(source.nested);\r\n else {\r\n parse.filename = filename;\r\n var parsed = parse(source, self, options),\r\n resolved,\r\n i = 0;\r\n if (parsed.imports)\r\n for (; i < parsed.imports.length; ++i)\r\n if (resolved = self.resolvePath(filename, parsed.imports[i]))\r\n fetch(resolved);\r\n if (parsed.weakImports)\r\n for (i = 0; i < parsed.weakImports.length; ++i)\r\n if (resolved = self.resolvePath(filename, parsed.weakImports[i]))\r\n fetch(resolved, true);\r\n }\r\n } catch (err) {\r\n finish(err);\r\n }\r\n if (!sync && !queued)\r\n finish(null, self); // only once anyway\r\n }\r\n\r\n // Fetches a single file\r\n function fetch(filename, weak) {\r\n\r\n // Strip path if this file references a bundled definition\r\n var idx = filename.lastIndexOf(\"google/protobuf/\");\r\n if (idx > -1) {\r\n var altname = filename.substring(idx);\r\n if (altname in common)\r\n filename = altname;\r\n }\r\n\r\n // Skip if already loaded / attempted\r\n if (self.files.indexOf(filename) > -1)\r\n return;\r\n self.files.push(filename);\r\n\r\n // Shortcut bundled definitions\r\n if (filename in common) {\r\n if (sync)\r\n process(filename, common[filename]);\r\n else {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n }\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n if (sync) {\r\n var source;\r\n try {\r\n source = util.fs.readFileSync(filename).toString(\"utf8\");\r\n } catch (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n } else {\r\n ++queued;\r\n util.fetch(filename, function(err, source) {\r\n --queued;\r\n /* istanbul ignore if */\r\n if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n /* istanbul ignore else */\r\n if (!weak)\r\n finish(err);\r\n else if (!queued) // can't be covered reliably\r\n finish(null, self);\r\n return;\r\n }\r\n process(filename, source);\r\n });\r\n }\r\n }\r\n var queued = 0;\r\n\r\n // Assembling the root namespace doesn't require working type\r\n // references anymore, so we can load everything in parallel\r\n if (util.isString(filename))\r\n filename = [ filename ];\r\n for (var i = 0, resolved; i < filename.length; ++i)\r\n if (resolved = self.resolvePath(\"\", filename[i]))\r\n fetch(resolved);\r\n\r\n if (sync)\r\n return self;\r\n if (!queued)\r\n finish(null, self);\r\n return undefined;\r\n};\r\n// function load(filename:string, options:IParseOptions, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\r\n * @function Root#load\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\r\n * @function Root#load\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:IParseOptions]):Promise\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only).\r\n * @function Root#loadSync\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\nRoot.prototype.loadSync = function loadSync(filename, options) {\r\n if (!util.isNode)\r\n throw Error(\"not supported\");\r\n return this.load(filename, options, SYNC);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRoot.prototype.resolveAll = function resolveAll() {\r\n if (this.deferred.length)\r\n throw Error(\"unresolvable extensions: \" + this.deferred.map(function(field) {\r\n return \"'extend \" + field.extend + \"' in \" + field.parent.fullName;\r\n }).join(\", \"));\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\r\n\r\n// only uppercased (and thus conflict-free) children are exposed, see below\r\nvar exposeRe = /^[A-Z]/;\r\n\r\n/**\r\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\r\n * @param {Root} root Root instance\r\n * @param {Field} field Declaring extension field witin the declaring type\r\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\r\n * @inner\r\n * @ignore\r\n */\r\nfunction tryHandleExtension(root, field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options);\r\n sisterField.declaringField = field;\r\n field.extensionField = sisterField;\r\n extendedType.add(sisterField);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRoot.prototype._handleAdd = function _handleAdd(object) {\r\n if (object instanceof Field) {\r\n\r\n if (/* an extension field (implies not part of a oneof) */ object.extend !== undefined && /* not already handled */ !object.extensionField)\r\n if (!tryHandleExtension(this, object))\r\n this.deferred.push(object);\r\n\r\n } else if (object instanceof Enum) {\r\n\r\n if (exposeRe.test(object.name))\r\n object.parent[object.name] = object.values; // expose enum values as property of its parent\r\n\r\n } else if (!(object instanceof OneOf)) /* everything else is a namespace */ {\r\n\r\n if (object instanceof Type) // Try to handle any deferred extensions\r\n for (var i = 0; i < this.deferred.length;)\r\n if (tryHandleExtension(this, this.deferred[i]))\r\n this.deferred.splice(i, 1);\r\n else\r\n ++i;\r\n for (var j = 0; j < /* initializes */ object.nestedArray.length; ++j) // recurse into the namespace\r\n this._handleAdd(object._nestedArray[j]);\r\n if (exposeRe.test(object.name))\r\n object.parent[object.name] = object; // expose namespace as property of its parent\r\n }\r\n\r\n // The above also adds uppercased (and thus conflict-free) nested types, services and enums as\r\n // properties of namespaces just like static code does. This allows using a .d.ts generated for\r\n // a static module with reflection-based solutions where the condition is met.\r\n};\r\n\r\n/**\r\n * Called when any object is removed from this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object removed\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRoot.prototype._handleRemove = function _handleRemove(object) {\r\n if (object instanceof Field) {\r\n\r\n if (/* an extension field */ object.extend !== undefined) {\r\n if (/* already handled */ object.extensionField) { // remove its sister field\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n } else { // cancel the extension\r\n var index = this.deferred.indexOf(object);\r\n /* istanbul ignore else */\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n }\r\n\r\n } else if (object instanceof Enum) {\r\n\r\n if (exposeRe.test(object.name))\r\n delete object.parent[object.name]; // unexpose enum values\r\n\r\n } else if (object instanceof Namespace) {\r\n\r\n for (var i = 0; i < /* initializes */ object.nestedArray.length; ++i) // recurse into the namespace\r\n this._handleRemove(object._nestedArray[i]);\r\n\r\n if (exposeRe.test(object.name))\r\n delete object.parent[object.name]; // unexpose namespaces\r\n\r\n }\r\n};\r\n\r\nRoot._configure = function(Type_, parse_, common_) {\r\n Type = Type_;\r\n parse = parse_;\r\n common = common_;\r\n};\r\n\n\n/***/ }),\n/* 31 */,\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _protobuf = __webpack_require__(33);\n\nexports.default = _protobuf.CentrifugeProtobuf;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CentrifugeProtobuf = exports.ProtobufDecoder = exports.ProtobufEncoder = undefined;\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 _centrifuge = __webpack_require__(10);\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar protobuf = __webpack_require__(34);\nvar proto = protobuf.Root.fromJSON(__webpack_require__(49));\n\nvar methodValues = proto.lookupEnum('MethodType').values;\n\nvar protobufMethodType = {\n CONNECT: methodValues.CONNECT,\n SUBSCRIBE: methodValues.SUBSCRIBE,\n UNSUBSCRIBE: methodValues.UNSUBSCRIBE,\n PUBLISH: methodValues.PUBLISH,\n PRESENCE: methodValues.PRESENCE,\n PRESENCE_STATS: methodValues.PRESENCE_STATS,\n HISTORY: methodValues.HISTORY,\n PING: methodValues.PING,\n RPC: methodValues.RPC,\n SEND: methodValues.SEND,\n REFRESH: methodValues.REFRESH,\n SUB_REFRESH: methodValues.SUB_REFRESH\n};\n\nvar methodSchema = {\n CONNECT: [proto.lookupType('proto.ConnectRequest'), proto.lookupType('proto.ConnectResult')],\n REFRESH: [proto.lookupType('proto.RefreshRequest'), proto.lookupType('proto.RefreshResult')],\n SUBSCRIBE: [proto.lookupType('proto.SubscribeRequest'), proto.lookupType('proto.SubscribeResult')],\n SUB_REFRESH: [proto.lookupType('proto.SubRefreshRequest'), proto.lookupType('proto.SubRefreshResult')],\n UNSUBSCRIBE: [proto.lookupType('proto.UnsubscribeRequest'), proto.lookupType('proto.UnsubscribeResult')],\n PUBLISH: [proto.lookupType('proto.PublishRequest'), proto.lookupType('proto.PublishResult')],\n PRESENCE: [proto.lookupType('proto.PresenceRequest'), proto.lookupType('proto.PresenceResult')],\n PRESENCE_STATS: [proto.lookupType('proto.PresenceStatsRequest'), proto.lookupType('proto.PresenceStatsResult')],\n HISTORY: [proto.lookupType('proto.HistoryRequest'), proto.lookupType('proto.HistoryResult')],\n PING: [proto.lookupType('proto.PingRequest'), proto.lookupType('proto.PingResult')],\n RPC: [proto.lookupType('proto.RPCRequest'), proto.lookupType('proto.RPCResult')],\n SEND: [proto.lookupType('proto.SendRequest'), null]\n};\n\nvar protobufPushType = {\n PUBLICATION: proto.lookupEnum('PushType').values.PUBLICATION,\n JOIN: proto.lookupEnum('PushType').values.JOIN,\n LEAVE: proto.lookupEnum('PushType').values.LEAVE,\n UNSUB: proto.lookupEnum('PushType').values.UNSUB,\n MESSAGE: proto.lookupEnum('PushType').values.MESSAGE\n};\n\nvar PushSchema = {\n PUBLICATION: proto.lookupType('proto.Publication'),\n JOIN: proto.lookupType('proto.Join'),\n LEAVE: proto.lookupType('proto.Leave'),\n UNSUB: proto.lookupType('proto.Unsub'),\n MESSAGE: proto.lookupType('proto.Message')\n};\n\nvar Push = proto.lookupType('proto.Push');\nvar Command = proto.lookupType('proto.Command');\nvar Reply = proto.lookupType('proto.Reply');\n\nvar ProtobufEncoder = exports.ProtobufEncoder = function () {\n function ProtobufEncoder() {\n _classCallCheck(this, ProtobufEncoder);\n }\n\n _createClass(ProtobufEncoder, [{\n key: 'encodeCommands',\n value: function encodeCommands(commands) {\n var writer = protobuf.Writer.create();\n for (var i in commands) {\n if (commands.hasOwnProperty(i)) {\n var command = Object.assign({}, commands[i]);\n if (command.params) {\n var type = void 0;\n if (!command.method) {\n command.method = protobufMethodType.CONNECT;\n };\n switch (command.method) {\n case protobufMethodType.CONNECT:\n type = methodSchema.CONNECT[0];\n break;\n case protobufMethodType.REFRESH:\n type = methodSchema.REFRESH;\n break;\n case protobufMethodType.SUBSCRIBE:\n type = methodSchema.SUBSCRIBE[0];\n break;\n case protobufMethodType.SUB_REFRESH:\n type = methodSchema.SUB_REFRESH[0];\n break;\n case protobufMethodType.UNSUBSCRIBE:\n type = methodSchema.UNSUBSCRIBE[0];\n break;\n case protobufMethodType.PUBLISH:\n type = methodSchema.PUBLISH[0];\n break;\n case protobufMethodType.PRESENCE:\n type = methodSchema.PRESENCE[0];\n break;\n case protobufMethodType.PRESENCE_STATS:\n type = methodSchema.PRESENCE_STATS[0];\n break;\n case protobufMethodType.HISTORY:\n type = methodSchema.HISTORY[0];\n break;\n case protobufMethodType.PING:\n type = methodSchema.PING[0];\n break;\n case protobufMethodType.RPC:\n type = methodSchema.RPC[0];\n break;\n case protobufMethodType.SEND:\n type = methodSchema.SEND[0];\n break;\n }\n command.params = type.encode(command.params).finish();\n }\n Command.encodeDelimited(command, writer);\n }\n }\n return writer.finish();\n }\n }]);\n\n return ProtobufEncoder;\n}();\n\nvar ProtobufDecoder = exports.ProtobufDecoder = function () {\n function ProtobufDecoder() {\n _classCallCheck(this, ProtobufDecoder);\n }\n\n _createClass(ProtobufDecoder, [{\n key: 'decodeReplies',\n value: function decodeReplies(data) {\n var replies = [];\n var reader = protobuf.Reader.create(new Uint8Array(data));\n while (reader.pos < reader.len) {\n var reply = Reply.decodeDelimited(reader);\n replies.push(reply);\n }\n return replies;\n }\n }, {\n key: 'decodeCommandResult',\n value: function decodeCommandResult(methodType, data) {\n var type;\n switch (methodType) {\n case protobufMethodType.CONNECT:\n type = methodSchema.CONNECT[1];\n break;\n case protobufMethodType.REFRESH:\n type = methodSchema.REFRESH[1];\n break;\n case protobufMethodType.SUBSCRIBE:\n type = methodSchema.SUBSCRIBE[1];\n break;\n case protobufMethodType.SUB_REFRESH:\n type = methodSchema.SUB_REFRESH[1];\n break;\n case protobufMethodType.UNSUBSCRIBE:\n type = methodSchema.UNSUBSCRIBE[1];\n break;\n case protobufMethodType.PUBLISH:\n type = methodSchema.PUBLISH[1];\n break;\n case protobufMethodType.PRESENCE:\n type = methodSchema.PRESENCE[1];\n break;\n case protobufMethodType.PRESENCE_STATS:\n type = methodSchema.PRESENCE_STATS[1];\n break;\n case protobufMethodType.HISTORY:\n type = methodSchema.HISTORY[1];\n break;\n case protobufMethodType.PING:\n type = methodSchema.PING[1];\n break;\n case protobufMethodType.RPC:\n type = methodSchema.RPC[1];\n break;\n }\n return this._decode(type, data);\n }\n }, {\n key: 'decodePush',\n value: function decodePush(data) {\n return this._decode(Push, data);\n }\n }, {\n key: 'decodePushData',\n value: function decodePushData(pushType, data) {\n var type;\n switch (pushType) {\n case protobufPushType.PUBLICATION:\n type = PushSchema.PUBLICATION;\n break;\n case protobufPushType.MESSAGE:\n type = PushSchema.MESSAGE;\n break;\n case protobufPushType.JOIN:\n type = PushSchema.JOIN;\n break;\n case protobufPushType.LEAVE:\n type = PushSchema.LEAVE;\n break;\n case protobufPushType.UNSUB:\n type = PushSchema.UNSUB;\n break;\n }\n return this._decode(type, data);\n }\n }, {\n key: '_decode',\n value: function _decode(type, data) {\n var res = void 0;\n try {\n res = type.decode(data);\n } catch (err) {\n return null;\n }\n return res;\n }\n }]);\n\n return ProtobufDecoder;\n}();\n\nvar CentrifugeProtobuf = exports.CentrifugeProtobuf = function (_Centrifuge) {\n _inherits(CentrifugeProtobuf, _Centrifuge);\n\n function CentrifugeProtobuf() {\n _classCallCheck(this, CentrifugeProtobuf);\n\n return _possibleConstructorReturn(this, (CentrifugeProtobuf.__proto__ || Object.getPrototypeOf(CentrifugeProtobuf)).apply(this, arguments));\n }\n\n _createClass(CentrifugeProtobuf, [{\n key: '_formatOverride',\n value: function _formatOverride(format) {\n if (format === 'protobuf') {\n this._binary = true;\n this._methodType = protobufMethodType;\n this._pushType = protobufPushType;\n this._encoder = new ProtobufEncoder();\n this._decoder = new ProtobufDecoder();\n return true;\n }\n return false;\n }\n }]);\n\n return CentrifugeProtobuf;\n}(_centrifuge.Centrifuge);\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// light library entry point.\r\n\r\n\r\nmodule.exports = __webpack_require__(35);\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar protobuf = module.exports = __webpack_require__(36);\r\n\r\nprotobuf.build = \"light\";\r\n\r\n/**\r\n * A node-style callback as used by {@link load} and {@link Root#load}.\r\n * @typedef LoadCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Root} [root] Root, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} root Root namespace, defaults to create a new one if omitted.\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @see {@link Root#load}\r\n */\r\nfunction load(filename, root, callback) {\r\n if (typeof root === \"function\") {\r\n callback = root;\r\n root = new protobuf.Root();\r\n } else if (!root)\r\n root = new protobuf.Root();\r\n return root.load(filename, callback);\r\n}\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @see {@link Root#load}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Promise} Promise\r\n * @see {@link Root#load}\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n * @see {@link Root#loadSync}\r\n */\r\nfunction loadSync(filename, root) {\r\n if (!root)\r\n root = new protobuf.Root();\r\n return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\r\n\r\n// Serialization\r\nprotobuf.encoder = __webpack_require__(21);\r\nprotobuf.decoder = __webpack_require__(26);\r\nprotobuf.verifier = __webpack_require__(27);\r\nprotobuf.converter = __webpack_require__(28);\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = __webpack_require__(4);\r\nprotobuf.Namespace = __webpack_require__(8);\r\nprotobuf.Root = __webpack_require__(30);\r\nprotobuf.Enum = __webpack_require__(1);\r\nprotobuf.Type = __webpack_require__(22);\r\nprotobuf.Field = __webpack_require__(5);\r\nprotobuf.OneOf = __webpack_require__(15);\r\nprotobuf.MapField = __webpack_require__(23);\r\nprotobuf.Service = __webpack_require__(24);\r\nprotobuf.Method = __webpack_require__(25);\r\n\r\n// Runtime\r\nprotobuf.Message = __webpack_require__(16);\r\nprotobuf.wrappers = __webpack_require__(29);\r\n\r\n// Utility\r\nprotobuf.types = __webpack_require__(9);\r\nprotobuf.util = __webpack_require__(0);\r\n\r\n// Configure reflection\r\nprotobuf.ReflectionObject._configure(protobuf.Root);\r\nprotobuf.Namespace._configure(protobuf.Type, protobuf.Service);\r\nprotobuf.Root._configure(protobuf.Type);\r\nprotobuf.Field._configure(protobuf.Type);\r\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar protobuf = exports;\r\n\r\n/**\r\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\r\n * @name build\r\n * @type {string}\r\n * @const\r\n */\r\nprotobuf.build = \"minimal\";\r\n\r\n// Serialization\r\nprotobuf.Writer = __webpack_require__(13);\r\nprotobuf.BufferWriter = __webpack_require__(43);\r\nprotobuf.Reader = __webpack_require__(14);\r\nprotobuf.BufferReader = __webpack_require__(44);\r\n\r\n// Utility\r\nprotobuf.util = __webpack_require__(2);\r\nprotobuf.rpc = __webpack_require__(19);\r\nprotobuf.roots = __webpack_require__(20);\r\nprotobuf.configure = configure;\r\n\r\n/* istanbul ignore next */\r\n/**\r\n * Reconfigures the library according to the environment.\r\n * @returns {undefined}\r\n */\r\nfunction configure() {\r\n protobuf.Reader._configure(protobuf.BufferReader);\r\n protobuf.util._configure();\r\n}\r\n\r\n// Configure serialization\r\nprotobuf.Writer._configure(protobuf.BufferWriter);\r\nconfigure();\r\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = __webpack_require__(2);\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low 32 bits, unsigned\r\n * @param {number} hi High 32 bits, unsigned\r\n */\r\nfunction LongBits(lo, hi) {\r\n\r\n // note that the casts below are theoretically unnecessary as of today, but older statically\r\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo >>> 0;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi >>> 0;\r\n}\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = LongBits.zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Zero hash.\r\n * @memberof util.LongBits\r\n * @type {string}\r\n */\r\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n if (sign)\r\n value = -value;\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.from = function from(value) {\r\n if (typeof value === \"number\")\r\n return LongBits.fromNumber(value);\r\n if (util.isString(value)) {\r\n /* istanbul ignore else */\r\n if (util.Long)\r\n value = util.Long.fromString(value);\r\n else\r\n return LongBits.fromNumber(parseInt(value, 10));\r\n }\r\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBits.prototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n var lo = ~this.lo + 1 >>> 0,\r\n hi = ~this.hi >>> 0;\r\n if (!lo)\r\n hi = hi + 1 >>> 0;\r\n return -(lo + hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBits.prototype.toLong = function toLong(unsigned) {\r\n return util.Long\r\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\r\n /* istanbul ignore next */\r\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n if (hash === zeroHash)\r\n return zero;\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBits.prototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 ,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBits.prototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n return part2 === 0\r\n ? part1 === 0\r\n ? part0 < 16384\r\n ? part0 < 128 ? 1 : 2\r\n : part0 < 2097152 ? 3 : 4\r\n : part1 < 16384\r\n ? part1 < 128 ? 5 : 6\r\n : part1 < 2097152 ? 7 : 8\r\n : part2 < 128 ? 9 : 10;\r\n};\r\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = BufferWriter;\r\n\r\n// extends Writer\r\nvar Writer = __webpack_require__(13);\r\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\r\n\r\nvar util = __webpack_require__(2);\r\n\r\nvar Buffer = util.Buffer;\r\n\r\n/**\r\n * Constructs a new buffer writer instance.\r\n * @classdesc Wire format writer using node buffers.\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Buffer} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = util._Buffer_allocUnsafe)(size);\r\n};\r\n\r\nvar writeBytesBuffer = Buffer && Buffer.prototype instanceof Uint8Array && Buffer.prototype.set.name === \"set\"\r\n ? function writeBytesBuffer_set(val, buf, pos) {\r\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\r\n // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n if (val.copy) // Buffer values\r\n val.copy(buf, pos, 0, val.length);\r\n else for (var i = 0; i < val.length;) // plain array values\r\n buf[pos++] = val[i++];\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\r\n if (util.isString(value))\r\n value = util._Buffer_from(value, \"base64\");\r\n var len = value.length >>> 0;\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeBytesBuffer, len, value);\r\n return this;\r\n};\r\n\r\nfunction writeStringBuffer(val, buf, pos) {\r\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\r\n util.utf8.write(val, buf, pos);\r\n else\r\n buf.utf8Write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.string = function write_string_buffer(value) {\r\n var len = Buffer.byteLength(value);\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeStringBuffer, len, value);\r\n return this;\r\n};\r\n\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @name BufferWriter#finish\r\n * @function\r\n * @returns {Buffer} Finished buffer\r\n */\r\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = BufferReader;\r\n\r\n// extends Reader\r\nvar Reader = __webpack_require__(14);\r\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\r\n\r\nvar util = __webpack_require__(2);\r\n\r\n/**\r\n * Constructs a new buffer reader instance.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n Reader.call(this, buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @name BufferReader#buf\r\n * @type {Buffer}\r\n */\r\n}\r\n\r\n/* istanbul ignore else */\r\nif (util.Buffer)\r\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReader.prototype.string = function read_string_buffer() {\r\n var len = this.uint32(); // modifies pos\r\n return this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len));\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @name BufferReader#bytes\r\n * @function\r\n * @returns {Buffer} Value read\r\n */\r\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Service;\r\n\r\nvar util = __webpack_require__(2);\r\n\r\n// Extends EventEmitter\r\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\r\n\r\n/**\r\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\r\n *\r\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\r\n * @typedef rpc.ServiceMethodCallback\r\n * @template TRes extends Message\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {TRes} [response] Response message\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\r\n * @typedef rpc.ServiceMethod\r\n * @template TReq extends Message\r\n * @template TRes extends Message\r\n * @type {function}\r\n * @param {TReq|Properties} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message\r\n * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined`\r\n */\r\n\r\n/**\r\n * Constructs a new RPC service instance.\r\n * @classdesc An RPC service as returned by {@link Service#create}.\r\n * @exports rpc.Service\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n */\r\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\r\n\r\n if (typeof rpcImpl !== \"function\")\r\n throw TypeError(\"rpcImpl must be a function\");\r\n\r\n util.EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {RPCImpl|null}\r\n */\r\n this.rpcImpl = rpcImpl;\r\n\r\n /**\r\n * Whether requests are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.requestDelimited = Boolean(requestDelimited);\r\n\r\n /**\r\n * Whether responses are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.responseDelimited = Boolean(responseDelimited);\r\n}\r\n\r\n/**\r\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\r\n * @param {Method|rpc.ServiceMethod} method Reflected or static method\r\n * @param {Constructor} requestCtor Request constructor\r\n * @param {Constructor} responseCtor Response constructor\r\n * @param {TReq|Properties} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback} callback Service callback\r\n * @returns {undefined}\r\n * @template TReq extends Message\r\n * @template TRes extends Message\r\n */\r\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\r\n\r\n if (!request)\r\n throw TypeError(\"request must be specified\");\r\n\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\r\n\r\n if (!self.rpcImpl) {\r\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\r\n return undefined;\r\n }\r\n\r\n try {\r\n return self.rpcImpl(\r\n method,\r\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\r\n function rpcCallback(err, response) {\r\n\r\n if (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n\r\n if (response === null) {\r\n self.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n\r\n if (!(response instanceof responseCtor)) {\r\n try {\r\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n }\r\n\r\n self.emit(\"data\", response, method);\r\n return callback(null, response);\r\n }\r\n );\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n setTimeout(function() { callback(err); }, 0);\r\n return undefined;\r\n }\r\n};\r\n\r\n/**\r\n * Ends this service and emits the `end` event.\r\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\r\n * @returns {rpc.Service} `this`\r\n */\r\nService.prototype.end = function end(endedByRPC) {\r\n if (this.rpcImpl) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.rpcImpl(null, null, null);\r\n this.rpcImpl = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = codegen;\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @param {string[]} functionParams Function parameter names\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n */\r\nfunction codegen(functionParams, functionName) {\r\n\r\n /* istanbul ignore if */\r\n if (typeof functionParams === \"string\") {\r\n functionName = functionParams;\r\n functionParams = undefined;\r\n }\r\n\r\n var body = [];\r\n\r\n /**\r\n * Appends code to the function's body or finishes generation.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string|Object.} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any\r\n * @param {...*} [formatParams] Format parameters\r\n * @returns {Codegen|Function} Itself or the generated function if finished\r\n * @throws {Error} If format parameter counts do not match\r\n */\r\n\r\n function Codegen(formatStringOrScope) {\r\n // note that explicit array handling below makes this ~50% faster\r\n\r\n // finish the function\r\n if (typeof formatStringOrScope !== \"string\") {\r\n var source = toString();\r\n if (codegen.verbose)\r\n console.log(\"codegen: \" + source); // eslint-disable-line no-console\r\n source = \"return \" + source;\r\n if (formatStringOrScope) {\r\n var scopeKeys = Object.keys(formatStringOrScope),\r\n scopeParams = new Array(scopeKeys.length + 1),\r\n scopeValues = new Array(scopeKeys.length),\r\n scopeOffset = 0;\r\n while (scopeOffset < scopeKeys.length) {\r\n scopeParams[scopeOffset] = scopeKeys[scopeOffset];\r\n scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]];\r\n }\r\n scopeParams[scopeOffset] = source;\r\n return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func\r\n }\r\n return Function(source)(); // eslint-disable-line no-new-func\r\n }\r\n\r\n // otherwise append to body\r\n var formatParams = new Array(arguments.length - 1),\r\n formatOffset = 0;\r\n while (formatOffset < formatParams.length)\r\n formatParams[formatOffset] = arguments[++formatOffset];\r\n formatOffset = 0;\r\n formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) {\r\n var value = formatParams[formatOffset++];\r\n switch ($1) {\r\n case \"d\": case \"f\": return String(Number(value));\r\n case \"i\": return String(Math.floor(value));\r\n case \"j\": return JSON.stringify(value);\r\n case \"s\": return String(value);\r\n }\r\n return \"%\";\r\n });\r\n if (formatOffset !== formatParams.length)\r\n throw Error(\"parameter count mismatch\");\r\n body.push(formatStringOrScope);\r\n return Codegen;\r\n }\r\n\r\n function toString(functionNameOverride) {\r\n return \"function \" + (functionNameOverride || functionName || \"\") + \"(\" + (functionParams && functionParams.join(\",\") || \"\") + \"){\\n \" + body.join(\"\\n \") + \"\\n}\";\r\n }\r\n\r\n Codegen.toString = toString;\r\n return Codegen;\r\n}\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @function codegen\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * When set to `true`, codegen will log generated code to console. Useful for debugging.\r\n * @name util.codegen.verbose\r\n * @type {boolean}\r\n */\r\ncodegen.verbose = false;\r\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = __webpack_require__(17),\r\n inquire = __webpack_require__(18);\r\n\r\nvar fs = inquire(\"fs\");\r\n\r\n/**\r\n * Node-style callback as used by {@link util.fetch}.\r\n * @typedef FetchCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {string} [contents] File contents, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Options as used by {@link util.fetch}.\r\n * @typedef FetchOptions\r\n * @type {Object}\r\n * @property {boolean} [binary=false] Whether expecting a binary response\r\n * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} filename File path or url\r\n * @param {FetchOptions} options Fetch options\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nfunction fetch(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = {};\r\n } else if (!options)\r\n options = {};\r\n\r\n if (!callback)\r\n return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this\r\n\r\n // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.\r\n if (!options.xhr && fs && fs.readFile)\r\n return fs.readFile(filename, function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch.xhr(filename, options, callback)\r\n : err\r\n ? callback(err)\r\n : callback(null, options.binary ? contents : contents.toString(\"utf8\"));\r\n });\r\n\r\n // use the XHR version otherwise.\r\n return fetch.xhr(filename, options, callback);\r\n}\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchOptions} [options] Fetch options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n\r\n/**/\r\nfetch.xhr = function fetch_xhr(filename, options, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n\r\n if (xhr.readyState !== 4)\r\n return undefined;\r\n\r\n // local cors security errors return status 0 / empty string, too. afaik this cannot be\r\n // reliably distinguished from an actually empty file for security reasons. feel free\r\n // to send a pull request if you are aware of a solution.\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n\r\n // if binary data is expected, make sure that some sort of array is returned, even if\r\n // ArrayBuffers are not supported. the binary string fallback, however, is unsafe.\r\n if (options.binary) {\r\n var buffer = xhr.response;\r\n if (!buffer) {\r\n buffer = [];\r\n for (var i = 0; i < xhr.responseText.length; ++i)\r\n buffer.push(xhr.responseText.charCodeAt(i) & 255);\r\n }\r\n return callback(null, typeof Uint8Array !== \"undefined\" ? new Uint8Array(buffer) : buffer);\r\n }\r\n return callback(null, xhr.responseText);\r\n };\r\n\r\n if (options.binary) {\r\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers\r\n if (\"overrideMimeType\" in xhr)\r\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\r\n xhr.responseType = \"arraybuffer\";\r\n }\r\n\r\n xhr.open(\"GET\", filename);\r\n xhr.send();\r\n};\r\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\n/**\r\n * A minimal path module to resolve Unix, Windows and URL paths alike.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar path = exports;\r\n\r\nvar isAbsolute =\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\npath.isAbsolute = function isAbsolute(path) {\r\n return /^(?:\\/|\\w+:)/.test(path);\r\n};\r\n\r\nvar normalize =\r\n/**\r\n * Normalizes the specified path.\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\npath.normalize = function normalize(path) {\r\n path = path.replace(/\\\\/g, \"/\")\r\n .replace(/\\/{2,}/g, \"/\");\r\n var parts = path.split(\"/\"),\r\n absolute = isAbsolute(path),\r\n prefix = \"\";\r\n if (absolute)\r\n prefix = parts.shift() + \"/\";\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === \"..\") {\r\n if (i > 0 && parts[i - 1] !== \"..\")\r\n parts.splice(--i, 2);\r\n else if (absolute)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === \".\")\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join(\"/\");\r\n};\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path to the origin file\r\n * @param {string} includePath Include path relative to origin path\r\n * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the include file\r\n */\r\npath.resolve = function resolve(originPath, includePath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n includePath = normalize(includePath);\r\n if (isAbsolute(includePath))\r\n return includePath;\r\n if (!alreadyNormalized)\r\n originPath = normalize(originPath);\r\n return (originPath = originPath.replace(/(?:\\/|^)[^/]+$/, \"\")).length ? normalize(originPath + \"/\" + includePath) : includePath;\r\n};\r\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\"nested\":{\"proto\":{\"nested\":{\"Error\":{\"fields\":{\"code\":{\"type\":\"uint32\",\"id\":1},\"message\":{\"type\":\"string\",\"id\":2}}},\"MethodType\":{\"values\":{\"CONNECT\":0,\"SUBSCRIBE\":1,\"UNSUBSCRIBE\":2,\"PUBLISH\":3,\"PRESENCE\":4,\"PRESENCE_STATS\":5,\"HISTORY\":6,\"PING\":7,\"SEND\":8,\"RPC\":9,\"REFRESH\":10,\"SUB_REFRESH\":11}},\"Command\":{\"fields\":{\"id\":{\"type\":\"uint32\",\"id\":1},\"method\":{\"type\":\"MethodType\",\"id\":2},\"params\":{\"type\":\"bytes\",\"id\":3}}},\"Reply\":{\"fields\":{\"id\":{\"type\":\"uint32\",\"id\":1},\"error\":{\"type\":\"Error\",\"id\":2},\"result\":{\"type\":\"bytes\",\"id\":3}}},\"PushType\":{\"values\":{\"PUBLICATION\":0,\"JOIN\":1,\"LEAVE\":2,\"UNSUB\":3,\"MESSAGE\":4}},\"Push\":{\"fields\":{\"type\":{\"type\":\"PushType\",\"id\":1},\"channel\":{\"type\":\"string\",\"id\":2},\"data\":{\"type\":\"bytes\",\"id\":3}}},\"ClientInfo\":{\"fields\":{\"user\":{\"type\":\"string\",\"id\":1},\"client\":{\"type\":\"string\",\"id\":2},\"connInfo\":{\"type\":\"bytes\",\"id\":3},\"chanInfo\":{\"type\":\"bytes\",\"id\":4}}},\"Publication\":{\"fields\":{\"seq\":{\"type\":\"uint32\",\"id\":1},\"gen\":{\"type\":\"uint32\",\"id\":2},\"uid\":{\"type\":\"string\",\"id\":3},\"data\":{\"type\":\"bytes\",\"id\":4},\"info\":{\"type\":\"ClientInfo\",\"id\":5}}},\"Join\":{\"fields\":{\"info\":{\"type\":\"ClientInfo\",\"id\":1}}},\"Leave\":{\"fields\":{\"info\":{\"type\":\"ClientInfo\",\"id\":1}}},\"Unsub\":{\"fields\":{\"resubscribe\":{\"type\":\"bool\",\"id\":1}}},\"Message\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}},\"ConnectRequest\":{\"fields\":{\"token\":{\"type\":\"string\",\"id\":1},\"data\":{\"type\":\"bytes\",\"id\":2}}},\"ConnectResult\":{\"fields\":{\"client\":{\"type\":\"string\",\"id\":1},\"version\":{\"type\":\"string\",\"id\":2},\"expires\":{\"type\":\"bool\",\"id\":3},\"ttl\":{\"type\":\"uint32\",\"id\":4},\"data\":{\"type\":\"bytes\",\"id\":5}}},\"RefreshRequest\":{\"fields\":{\"token\":{\"type\":\"string\",\"id\":1}}},\"RefreshResult\":{\"fields\":{\"client\":{\"type\":\"string\",\"id\":1},\"version\":{\"type\":\"string\",\"id\":2},\"expires\":{\"type\":\"bool\",\"id\":3},\"ttl\":{\"type\":\"uint32\",\"id\":4}}},\"SubscribeRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1},\"token\":{\"type\":\"string\",\"id\":2},\"recover\":{\"type\":\"bool\",\"id\":3},\"seq\":{\"type\":\"uint32\",\"id\":4},\"gen\":{\"type\":\"uint32\",\"id\":5},\"epoch\":{\"type\":\"string\",\"id\":6}}},\"SubscribeResult\":{\"fields\":{\"expires\":{\"type\":\"bool\",\"id\":1},\"ttl\":{\"type\":\"uint32\",\"id\":2},\"recoverable\":{\"type\":\"bool\",\"id\":3},\"seq\":{\"type\":\"uint32\",\"id\":4},\"gen\":{\"type\":\"uint32\",\"id\":5},\"epoch\":{\"type\":\"string\",\"id\":6},\"publications\":{\"rule\":\"repeated\",\"type\":\"Publication\",\"id\":7},\"recovered\":{\"type\":\"bool\",\"id\":8}}},\"SubRefreshRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1},\"token\":{\"type\":\"string\",\"id\":2}}},\"SubRefreshResult\":{\"fields\":{\"expires\":{\"type\":\"bool\",\"id\":1},\"ttl\":{\"type\":\"uint32\",\"id\":2}}},\"UnsubscribeRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"UnsubscribeResult\":{\"fields\":{}},\"PublishRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1},\"data\":{\"type\":\"bytes\",\"id\":2}}},\"PublishResult\":{\"fields\":{}},\"PresenceRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"PresenceResult\":{\"fields\":{\"presence\":{\"keyType\":\"string\",\"type\":\"ClientInfo\",\"id\":1}}},\"PresenceStatsRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"PresenceStatsResult\":{\"fields\":{\"numClients\":{\"type\":\"uint32\",\"id\":1},\"numUsers\":{\"type\":\"uint32\",\"id\":2}}},\"HistoryRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"HistoryResult\":{\"fields\":{\"publications\":{\"rule\":\"repeated\",\"type\":\"Publication\",\"id\":1}}},\"PingRequest\":{\"fields\":{}},\"PingResult\":{\"fields\":{}},\"RPCRequest\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}},\"RPCResult\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}},\"SendRequest\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}}}}}}\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// centrifuge.protobuf.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 32);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 80f113d0e59618aae6bd","\"use strict\";\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = require(\"./util/minimal\");\r\n\r\nvar roots = require(\"./roots\");\r\n\r\nvar Type, // cyclic\r\n Enum;\r\n\r\nutil.codegen = require(\"@protobufjs/codegen\");\r\nutil.fetch = require(\"@protobufjs/fetch\");\r\nutil.path = require(\"@protobufjs/path\");\r\n\r\n/**\r\n * Node's fs module if available.\r\n * @type {Object.}\r\n */\r\nutil.fs = util.inquire(\"fs\");\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (object) {\r\n var keys = Object.keys(object),\r\n array = new Array(keys.length),\r\n index = 0;\r\n while (index < keys.length)\r\n array[index] = object[keys[index++]];\r\n return array;\r\n }\r\n return [];\r\n};\r\n\r\n/**\r\n * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values.\r\n * @param {Array.<*>} array Array to convert\r\n * @returns {Object.} Converted object\r\n */\r\nutil.toObject = function toObject(array) {\r\n var object = {},\r\n index = 0;\r\n while (index < array.length) {\r\n var key = array[index++],\r\n val = array[index++];\r\n if (val !== undefined)\r\n object[key] = val;\r\n }\r\n return object;\r\n};\r\n\r\nvar safePropBackslashRe = /\\\\/g,\r\n safePropQuoteRe = /\"/g;\r\n\r\n/**\r\n * Tests whether the specified name is a reserved word in JS.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nutil.isReserved = function isReserved(name) {\r\n return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test(name);\r\n};\r\n\r\n/**\r\n * Returns a safe property accessor for the specified property name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n if (!/^[$\\w_]+$/.test(prop) || util.isReserved(prop))\r\n return \"[\\\"\" + prop.replace(safePropBackslashRe, \"\\\\\\\\\").replace(safePropQuoteRe, \"\\\\\\\"\") + \"\\\"]\";\r\n return \".\" + prop;\r\n};\r\n\r\n/**\r\n * Converts the first character of a string to upper case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.ucFirst = function ucFirst(str) {\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\nvar camelCaseRe = /_([a-z])/g;\r\n\r\n/**\r\n * Converts a string to camel case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.camelCase = function camelCase(str) {\r\n return str.substring(0, 1)\r\n + str.substring(1)\r\n .replace(camelCaseRe, function($0, $1) { return $1.toUpperCase(); });\r\n};\r\n\r\n/**\r\n * Compares reflected fields by id.\r\n * @param {Field} a First field\r\n * @param {Field} b Second field\r\n * @returns {number} Comparison value\r\n */\r\nutil.compareFieldsById = function compareFieldsById(a, b) {\r\n return a.id - b.id;\r\n};\r\n\r\n/**\r\n * Decorator helper for types (TypeScript).\r\n * @param {Constructor} ctor Constructor function\r\n * @param {string} [typeName] Type name, defaults to the constructor's name\r\n * @returns {Type} Reflected type\r\n * @template T extends Message\r\n * @property {Root} root Decorators root\r\n */\r\nutil.decorateType = function decorateType(ctor, typeName) {\r\n\r\n /* istanbul ignore if */\r\n if (ctor.$type) {\r\n if (typeName && ctor.$type.name !== typeName) {\r\n util.decorateRoot.remove(ctor.$type);\r\n ctor.$type.name = typeName;\r\n util.decorateRoot.add(ctor.$type);\r\n }\r\n return ctor.$type;\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(\"./type\");\r\n\r\n var type = new Type(typeName || ctor.name);\r\n util.decorateRoot.add(type);\r\n type.ctor = ctor; // sets up .encode, .decode etc.\r\n Object.defineProperty(ctor, \"$type\", { value: type, enumerable: false });\r\n Object.defineProperty(ctor.prototype, \"$type\", { value: type, enumerable: false });\r\n return type;\r\n};\r\n\r\nvar decorateEnumIndex = 0;\r\n\r\n/**\r\n * Decorator helper for enums (TypeScript).\r\n * @param {Object} object Enum object\r\n * @returns {Enum} Reflected enum\r\n */\r\nutil.decorateEnum = function decorateEnum(object) {\r\n\r\n /* istanbul ignore if */\r\n if (object.$type)\r\n return object.$type;\r\n\r\n /* istanbul ignore next */\r\n if (!Enum)\r\n Enum = require(\"./enum\");\r\n\r\n var enm = new Enum(\"Enum\" + decorateEnumIndex++, object);\r\n util.decorateRoot.add(enm);\r\n Object.defineProperty(object, \"$type\", { value: enm, enumerable: false });\r\n return enm;\r\n};\r\n\r\n/**\r\n * Decorator root (TypeScript).\r\n * @name util.decorateRoot\r\n * @type {Root}\r\n * @readonly\r\n */\r\nObject.defineProperty(util, \"decorateRoot\", {\r\n get: function() {\r\n return roots[\"decorated\"] || (roots[\"decorated\"] = new (require(\"./root\"))());\r\n }\r\n});\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/util.js\n// module id = 0\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Enum;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Enum.prototype = Object.create(ReflectionObject.prototype)).constructor = Enum).className = \"Enum\";\r\n\r\nvar Namespace = require(\"./namespace\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new enum instance.\r\n * @classdesc Reflected enum.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {Object.} [values] Enum values as an object, by name\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] The comment for this enum\r\n * @param {Object.} [comments] The value comments for this enum\r\n */\r\nfunction Enum(name, values, options, comment, comments) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n if (values && typeof values !== \"object\")\r\n throw TypeError(\"values must be an object\");\r\n\r\n /**\r\n * Enum values by id.\r\n * @type {Object.}\r\n */\r\n this.valuesById = {};\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = Object.create(this.valuesById); // toJSON, marker\r\n\r\n /**\r\n * Enum comment text.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n\r\n /**\r\n * Value comment texts, if any.\r\n * @type {Object.}\r\n */\r\n this.comments = comments || {};\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {Array.}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n // Note that values inherit valuesById on their prototype which makes them a TypeScript-\r\n // compatible enum. This is used by pbts to write actual enum definitions that work for\r\n // static and reflection code alike instead of emitting generic object definitions.\r\n\r\n if (values)\r\n for (var keys = Object.keys(values), i = 0; i < keys.length; ++i)\r\n if (typeof values[keys[i]] === \"number\") // use forward entries only\r\n this.valuesById[ this.values[keys[i]] = values[keys[i]] ] = keys[i];\r\n}\r\n\r\n/**\r\n * Enum descriptor.\r\n * @interface IEnum\r\n * @property {Object.} values Enum values\r\n * @property {Object.} [options] Enum options\r\n */\r\n\r\n/**\r\n * Constructs an enum from an enum descriptor.\r\n * @param {string} name Enum name\r\n * @param {IEnum} json Enum descriptor\r\n * @returns {Enum} Created enum\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nEnum.fromJSON = function fromJSON(name, json) {\r\n var enm = new Enum(name, json.values, json.options, json.comment, json.comments);\r\n enm.reserved = json.reserved;\r\n return enm;\r\n};\r\n\r\n/**\r\n * Converts this enum to an enum descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IEnum} Enum descriptor\r\n */\r\nEnum.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"values\" , this.values,\r\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\r\n \"comment\" , keepComments ? this.comment : undefined,\r\n \"comments\" , keepComments ? this.comments : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds a value to this enum.\r\n * @param {string} name Value name\r\n * @param {number} id Value id\r\n * @param {string} [comment] Comment, if any\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnum.prototype.add = function add(name, id, comment) {\r\n // utilized by the parser but not by .fromJSON\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n if (!util.isInteger(id))\r\n throw TypeError(\"id must be an integer\");\r\n\r\n if (this.values[name] !== undefined)\r\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\r\n\r\n if (this.isReservedId(id))\r\n throw Error(\"id \" + id + \" is reserved in \" + this);\r\n\r\n if (this.isReservedName(name))\r\n throw Error(\"name '\" + name + \"' is reserved in \" + this);\r\n\r\n if (this.valuesById[id] !== undefined) {\r\n if (!(this.options && this.options.allow_alias))\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this.values[name] = id;\r\n } else\r\n this.valuesById[this.values[name] = id] = name;\r\n\r\n this.comments[name] = comment || null;\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnum.prototype.remove = function remove(name) {\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n var val = this.values[name];\r\n if (val == null)\r\n throw Error(\"name '\" + name + \"' does not exist in \" + this);\r\n\r\n delete this.valuesById[val];\r\n delete this.values[name];\r\n delete this.comments[name];\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nEnum.prototype.isReservedId = function isReservedId(id) {\r\n return Namespace.isReservedId(this.reserved, id);\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nEnum.prototype.isReservedName = function isReservedName(name) {\r\n return Namespace.isReservedName(this.reserved, name);\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/enum.js\n// module id = 1\n// module chunks = 0","\"use strict\";\r\nvar util = exports;\r\n\r\n// used to return a Promise where callback is omitted\r\nutil.asPromise = require(\"@protobufjs/aspromise\");\r\n\r\n// converts to / from base64 encoded strings\r\nutil.base64 = require(\"@protobufjs/base64\");\r\n\r\n// base class of rpc.Service\r\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\r\n\r\n// float handling accross browsers\r\nutil.float = require(\"@protobufjs/float\");\r\n\r\n// requires modules optionally and hides the call from bundlers\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\n\r\n// converts to / from utf8 encoded strings\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\n\r\n// provides a node-like buffer pool in the browser\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n// utility to work with the low and high bits of a 64 bit value\r\nutil.LongBits = require(\"./longbits\");\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n * @const\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n * @const\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n * @const\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\r\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nutil.isString = function isString(value) {\r\n return typeof value === \"string\" || value instanceof String;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return value && typeof value === \"object\";\r\n};\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * This is an alias of {@link util.isSet}.\r\n * @function\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isset =\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isSet = function isSet(obj, prop) {\r\n var value = obj[prop];\r\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\r\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\r\n return false;\r\n};\r\n\r\n/**\r\n * Any compatible Buffer instance.\r\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\r\n * @interface Buffer\r\n * @extends Uint8Array\r\n */\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {Constructor}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\r\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\r\n } catch (e) {\r\n /* istanbul ignore next */\r\n return null;\r\n }\r\n})();\r\n\r\n// Internal alias of or polyfull for Buffer.from.\r\nutil._Buffer_from = null;\r\n\r\n// Internal alias of or polyfill for Buffer.allocUnsafe.\r\nutil._Buffer_allocUnsafe = null;\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array|Buffer} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n /* istanbul ignore next */\r\n return typeof sizeOrArray === \"number\"\r\n ? util.Buffer\r\n ? util._Buffer_allocUnsafe(sizeOrArray)\r\n : new util.Array(sizeOrArray)\r\n : util.Buffer\r\n ? util._Buffer_from(sizeOrArray)\r\n : typeof Uint8Array === \"undefined\"\r\n ? sizeOrArray\r\n : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {Constructor}\r\n */\r\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\r\n * @interface Long\r\n * @property {number} low Low bits\r\n * @property {number} high High bits\r\n * @property {boolean} unsigned Whether unsigned or not\r\n */\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {Constructor}\r\n */\r\nutil.Long = /* istanbul ignore next */ global.dcodeIO && /* istanbul ignore next */ global.dcodeIO.Long || util.inquire(\"long\");\r\n\r\n/**\r\n * Regular expression used to verify 2 bit (`bool`) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key2Re = /^true|false|0|1$/;\r\n\r\n/**\r\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\r\n\r\n/**\r\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? util.LongBits.from(value).toHash()\r\n : util.LongBits.zeroHash;\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = util.LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @memberof util\r\n * @param {Object.} dst Destination object\r\n * @param {Object.} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.} Destination object\r\n */\r\nfunction merge(dst, src, ifNotSet) { // used by converters\r\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n return dst;\r\n}\r\n\r\nutil.merge = merge;\r\n\r\n/**\r\n * Converts the first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a custom error constructor.\r\n * @memberof util\r\n * @param {string} name Error name\r\n * @returns {Constructor} Custom error constructor\r\n */\r\nfunction newError(name) {\r\n\r\n function CustomError(message, properties) {\r\n\r\n if (!(this instanceof CustomError))\r\n return new CustomError(message, properties);\r\n\r\n // Error.call(this, message);\r\n // ^ just returns a new error instance because the ctor can be called as a function\r\n\r\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\r\n\r\n /* istanbul ignore next */\r\n if (Error.captureStackTrace) // node\r\n Error.captureStackTrace(this, CustomError);\r\n else\r\n Object.defineProperty(this, \"stack\", { value: (new Error()).stack || \"\" });\r\n\r\n if (properties)\r\n merge(this, properties);\r\n }\r\n\r\n (CustomError.prototype = Object.create(Error.prototype)).constructor = CustomError;\r\n\r\n Object.defineProperty(CustomError.prototype, \"name\", { get: function() { return name; } });\r\n\r\n CustomError.prototype.toString = function toString() {\r\n return this.name + \": \" + this.message;\r\n };\r\n\r\n return CustomError;\r\n}\r\n\r\nutil.newError = newError;\r\n\r\n/**\r\n * Constructs a new protocol error.\r\n * @classdesc Error subclass indicating a protocol specifc error.\r\n * @memberof util\r\n * @extends Error\r\n * @template T extends Message\r\n * @constructor\r\n * @param {string} message Error message\r\n * @param {Object.} [properties] Additional properties\r\n * @example\r\n * try {\r\n * MyMessage.decode(someBuffer); // throws if required fields are missing\r\n * } catch (e) {\r\n * if (e instanceof ProtocolError && e.instance)\r\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\r\n * }\r\n */\r\nutil.ProtocolError = newError(\"ProtocolError\");\r\n\r\n/**\r\n * So far decoded message instance.\r\n * @name util.ProtocolError#instance\r\n * @type {Message}\r\n */\r\n\r\n/**\r\n * A OneOf getter as returned by {@link util.oneOfGetter}.\r\n * @typedef OneOfGetter\r\n * @type {function}\r\n * @returns {string|undefined} Set field name, if any\r\n */\r\n\r\n/**\r\n * Builds a getter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfGetter} Unbound getter\r\n */\r\nutil.oneOfGetter = function getOneOf(fieldNames) {\r\n var fieldMap = {};\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n fieldMap[fieldNames[i]] = 1;\r\n\r\n /**\r\n * @returns {string|undefined} Set field name, if any\r\n * @this Object\r\n * @ignore\r\n */\r\n return function() { // eslint-disable-line consistent-return\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\r\n return keys[i];\r\n };\r\n};\r\n\r\n/**\r\n * A OneOf setter as returned by {@link util.oneOfSetter}.\r\n * @typedef OneOfSetter\r\n * @type {function}\r\n * @param {string|undefined} value Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Builds a setter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfSetter} Unbound setter\r\n */\r\nutil.oneOfSetter = function setOneOf(fieldNames) {\r\n\r\n /**\r\n * @param {string} name Field name\r\n * @returns {undefined}\r\n * @this Object\r\n * @ignore\r\n */\r\n return function(name) {\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n if (fieldNames[i] !== name)\r\n delete this[fieldNames[i]];\r\n };\r\n};\r\n\r\n/**\r\n * Default conversion options used for {@link Message#toJSON} implementations.\r\n *\r\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\r\n *\r\n * - Longs become strings\r\n * - Enums become string keys\r\n * - Bytes become base64 encoded strings\r\n * - (Sub-)Messages become plain objects\r\n * - Maps become plain objects with all string keys\r\n * - Repeated fields become arrays\r\n * - NaN and Infinity for float and double fields become strings\r\n *\r\n * @type {IConversionOptions}\r\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\r\n */\r\nutil.toJSONOptions = {\r\n longs: String,\r\n enums: String,\r\n bytes: String,\r\n json: true\r\n};\r\n\r\nutil._configure = function() {\r\n var Buffer = util.Buffer;\r\n /* istanbul ignore if */\r\n if (!Buffer) {\r\n util._Buffer_from = util._Buffer_allocUnsafe = null;\r\n return;\r\n }\r\n // because node 4.x buffers are incompatible & immutable\r\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\r\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\r\n /* istanbul ignore next */\r\n function Buffer_from(value, encoding) {\r\n return new Buffer(value, encoding);\r\n };\r\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\r\n /* istanbul ignore next */\r\n function Buffer_allocUnsafe(size) {\r\n return new Buffer(size);\r\n };\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/util/minimal.js\n// module id = 2\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 3\n// module chunks = 0 1","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nReflectionObject.className = \"ReflectionObject\";\r\n\r\nvar util = require(\"./util\");\r\n\r\nvar Root; // cyclic\r\n\r\n/**\r\n * Constructs a new reflection object instance.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object.} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n if (options && !util.isObject(options))\r\n throw TypeError(\"options must be an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|undefined}\r\n */\r\n this.options = options; // toJSON\r\n\r\n /**\r\n * Unique name within its namespace.\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Parent namespace.\r\n * @type {Namespace|null}\r\n */\r\n this.parent = null;\r\n\r\n /**\r\n * Whether already resolved or not.\r\n * @type {boolean}\r\n */\r\n this.resolved = false;\r\n\r\n /**\r\n * Comment text, if any.\r\n * @type {string|null}\r\n */\r\n this.comment = null;\r\n\r\n /**\r\n * Defining file name.\r\n * @type {string|null}\r\n */\r\n this.filename = null;\r\n}\r\n\r\nObject.defineProperties(ReflectionObject.prototype, {\r\n\r\n /**\r\n * Reference to the root namespace.\r\n * @name ReflectionObject#root\r\n * @type {Root}\r\n * @readonly\r\n */\r\n root: {\r\n get: function() {\r\n var ptr = this;\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n return ptr;\r\n }\r\n },\r\n\r\n /**\r\n * Full name including leading dot.\r\n * @name ReflectionObject#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: function() {\r\n var path = [ this.name ],\r\n ptr = this.parent;\r\n while (ptr) {\r\n path.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n }\r\n return path.join(\".\");\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Converts this reflection object to its descriptor representation.\r\n * @returns {Object.} Descriptor\r\n * @abstract\r\n */\r\nReflectionObject.prototype.toJSON = /* istanbul ignore next */ function toJSON() {\r\n throw Error(); // not implemented, shouldn't happen\r\n};\r\n\r\n/**\r\n * Called when this object is added to a parent.\r\n * @param {ReflectionObject} parent Parent added to\r\n * @returns {undefined}\r\n */\r\nReflectionObject.prototype.onAdd = function onAdd(parent) {\r\n if (this.parent && this.parent !== parent)\r\n this.parent.remove(this);\r\n this.parent = parent;\r\n this.resolved = false;\r\n var root = parent.root;\r\n if (root instanceof Root)\r\n root._handleAdd(this);\r\n};\r\n\r\n/**\r\n * Called when this object is removed from a parent.\r\n * @param {ReflectionObject} parent Parent removed from\r\n * @returns {undefined}\r\n */\r\nReflectionObject.prototype.onRemove = function onRemove(parent) {\r\n var root = parent.root;\r\n if (root instanceof Root)\r\n root._handleRemove(this);\r\n this.parent = null;\r\n this.resolved = false;\r\n};\r\n\r\n/**\r\n * Resolves this objects type references.\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n if (this.root instanceof Root)\r\n this.resolved = true; // only if part of a root\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\nReflectionObject.prototype.getOption = function getOption(name) {\r\n if (this.options)\r\n return this.options[name];\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Sets an option.\r\n * @param {string} name Option name\r\n * @param {*} value Option value\r\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (!ifNotSet || !this.options || this.options[name] === undefined)\r\n (this.options || (this.options = {}))[name] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets multiple options.\r\n * @param {Object.} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n for (var keys = Object.keys(options), i = 0; i < keys.length; ++i)\r\n this.setOption(keys[i], options[keys[i]], ifNotSet);\r\n return this;\r\n};\r\n\r\n/**\r\n * Converts this instance to its string representation.\r\n * @returns {string} Class name[, space, full name]\r\n */\r\nReflectionObject.prototype.toString = function toString() {\r\n var className = this.constructor.className,\r\n fullName = this.fullName;\r\n if (fullName.length)\r\n return className + \" \" + fullName;\r\n return className;\r\n};\r\n\r\nReflectionObject._configure = function(Root_) {\r\n Root = Root_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/object.js\n// module id = 4\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Field;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Field.prototype = Object.create(ReflectionObject.prototype)).constructor = Field).className = \"Field\";\r\n\r\nvar Enum = require(\"./enum\"),\r\n types = require(\"./types\"),\r\n util = require(\"./util\");\r\n\r\nvar Type; // cyclic\r\n\r\nvar ruleRe = /^required|optional|repeated$/;\r\n\r\n/**\r\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\r\n * @name Field\r\n * @classdesc Reflected message field.\r\n * @extends FieldBase\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string|Object.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n */\r\n\r\n/**\r\n * Constructs a field from a field descriptor.\r\n * @param {string} name Field name\r\n * @param {IField} json Field descriptor\r\n * @returns {Field} Created field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nField.fromJSON = function fromJSON(name, json) {\r\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Not an actual constructor. Use {@link Field} instead.\r\n * @classdesc Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports FieldBase\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string|Object.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction Field(name, id, type, rule, extend, options, comment) {\r\n\r\n if (util.isObject(rule)) {\r\n comment = extend;\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n comment = options;\r\n options = extend;\r\n extend = undefined;\r\n }\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id must be a non-negative integer\");\r\n\r\n if (!util.isString(type))\r\n throw TypeError(\"type must be a string\");\r\n\r\n if (rule !== undefined && !ruleRe.test(rule = rule.toString().toLowerCase()))\r\n throw TypeError(\"rule must be a string rule\");\r\n\r\n if (extend !== undefined && !util.isString(extend))\r\n throw TypeError(\"extend must be a string\");\r\n\r\n /**\r\n * Field rule, if any.\r\n * @type {string|undefined}\r\n */\r\n this.rule = rule && rule !== \"optional\" ? rule : undefined; // toJSON\r\n\r\n /**\r\n * Field type.\r\n * @type {string}\r\n */\r\n this.type = type; // toJSON\r\n\r\n /**\r\n * Unique field id.\r\n * @type {number}\r\n */\r\n this.id = id; // toJSON, marker\r\n\r\n /**\r\n * Extended type if different from parent.\r\n * @type {string|undefined}\r\n */\r\n this.extend = extend || undefined; // toJSON\r\n\r\n /**\r\n * Whether this field is required.\r\n * @type {boolean}\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Whether this field is optional.\r\n * @type {boolean}\r\n */\r\n this.optional = !this.required;\r\n\r\n /**\r\n * Whether this field is repeated.\r\n * @type {boolean}\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Whether this field is a map or not.\r\n * @type {boolean}\r\n */\r\n this.map = false;\r\n\r\n /**\r\n * Message this field belongs to.\r\n * @type {Type|null}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {OneOf|null}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field type's default value.\r\n * @type {*}\r\n */\r\n this.typeDefault = null;\r\n\r\n /**\r\n * The field's default value on prototypes.\r\n * @type {*}\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Whether this field's value should be treated as a long.\r\n * @type {boolean}\r\n */\r\n this.long = util.Long ? types.long[type] !== undefined : /* istanbul ignore next */ false;\r\n\r\n /**\r\n * Whether this field's value is a buffer.\r\n * @type {boolean}\r\n */\r\n this.bytes = type === \"bytes\";\r\n\r\n /**\r\n * Resolved type if not a basic type.\r\n * @type {Type|Enum|null}\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Sister-field within the extended type if a declaring extension field.\r\n * @type {Field|null}\r\n */\r\n this.extensionField = null;\r\n\r\n /**\r\n * Sister-field within the declaring namespace if an extended field.\r\n * @type {Field|null}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {boolean|null}\r\n * @private\r\n */\r\n this._packed = null;\r\n\r\n /**\r\n * Comment for this field.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\nObject.defineProperty(Field.prototype, \"packed\", {\r\n get: function() {\r\n // defaults to packed=true if not explicity set to false\r\n if (this._packed === null)\r\n this._packed = this.getOption(\"packed\") !== false;\r\n return this._packed;\r\n }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nField.prototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\") // clear cached before setting\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Field descriptor.\r\n * @interface IField\r\n * @property {string} [rule=\"optional\"] Field rule\r\n * @property {string} type Field type\r\n * @property {number} id Field id\r\n * @property {Object.} [options] Field options\r\n */\r\n\r\n/**\r\n * Extension field descriptor.\r\n * @interface IExtensionField\r\n * @extends IField\r\n * @property {string} extend Extended type\r\n */\r\n\r\n/**\r\n * Converts this field to a field descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IField} Field descriptor\r\n */\r\nField.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"rule\" , this.rule !== \"optional\" && this.rule || undefined,\r\n \"type\" , this.type,\r\n \"id\" , this.id,\r\n \"extend\" , this.extend,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Resolves this field's type references.\r\n * @returns {Field} `this`\r\n * @throws {Error} If any reference cannot be resolved\r\n */\r\nField.prototype.resolve = function resolve() {\r\n\r\n if (this.resolved)\r\n return this;\r\n\r\n if ((this.typeDefault = types.defaults[this.type]) === undefined) { // if not a basic type, resolve it\r\n this.resolvedType = (this.declaringField ? this.declaringField.parent : this.parent).lookupTypeOrEnum(this.type);\r\n if (this.resolvedType instanceof Type)\r\n this.typeDefault = null;\r\n else // instanceof Enum\r\n this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\r\n }\r\n\r\n // use explicitly set default value if present\r\n if (this.options && this.options[\"default\"] != null) {\r\n this.typeDefault = this.options[\"default\"];\r\n if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\r\n this.typeDefault = this.resolvedType.values[this.typeDefault];\r\n }\r\n\r\n // remove unnecessary options\r\n if (this.options) {\r\n if (this.options.packed === true || this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum))\r\n delete this.options.packed;\r\n if (!Object.keys(this.options).length)\r\n this.options = undefined;\r\n }\r\n\r\n // convert to internal data type if necesssary\r\n if (this.long) {\r\n this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\r\n\r\n /* istanbul ignore else */\r\n if (Object.freeze)\r\n Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n\r\n } else if (this.bytes && typeof this.typeDefault === \"string\") {\r\n var buf;\r\n if (util.base64.test(this.typeDefault))\r\n util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\r\n else\r\n util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\r\n this.typeDefault = buf;\r\n }\r\n\r\n // take special care of maps and repeated fields\r\n if (this.map)\r\n this.defaultValue = util.emptyObject;\r\n else if (this.repeated)\r\n this.defaultValue = util.emptyArray;\r\n else\r\n this.defaultValue = this.typeDefault;\r\n\r\n // ensure proper value on prototype\r\n if (this.parent instanceof Type)\r\n this.parent.ctor.prototype[this.name] = this.defaultValue;\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript).\r\n * @typedef FieldDecorator\r\n * @type {function}\r\n * @param {Object} prototype Target prototype\r\n * @param {string} fieldName Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Field decorator (TypeScript).\r\n * @name Field.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"string\"|\"bool\"|\"bytes\"|Object} fieldType Field type\r\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\r\n * @param {T} [defaultValue] Default value\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[]\r\n */\r\nField.d = function decorateField(fieldId, fieldType, fieldRule, defaultValue) {\r\n\r\n // submessage: decorate the submessage and use its name as the type\r\n if (typeof fieldType === \"function\")\r\n fieldType = util.decorateType(fieldType).name;\r\n\r\n // enum reference: create a reflected copy of the enum and keep reuseing it\r\n else if (fieldType && typeof fieldType === \"object\")\r\n fieldType = util.decorateEnum(fieldType).name;\r\n\r\n return function fieldDecorator(prototype, fieldName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new Field(fieldName, fieldId, fieldType, fieldRule, { \"default\": defaultValue }));\r\n };\r\n};\r\n\r\n/**\r\n * Field decorator (TypeScript).\r\n * @name Field.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {Constructor|string} fieldType Field type\r\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends Message\r\n * @variation 2\r\n */\r\n// like Field.d but without a default value\r\n\r\nField._configure = function configure(Type_) {\r\n Type = Type_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/field.js\n// module id = 5\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/events/events.js\n// module id = 6\n// module chunks = 0 1","export function startsWith(value, prefix) {\n return value.lastIndexOf(prefix, 0) === 0;\n};\n\nexport function isFunction(value) {\n if (value === undefined || value === null) {\n return false;\n }\n return typeof value === 'function';\n};\n\nexport function log(level, args) {\n if (global.console) {\n const logger = global.console[level];\n\n if (isFunction(logger)) {\n logger.apply(global.console, args);\n }\n }\n};\n\nexport function backoff(step, min, max) {\n const jitter = 0.5 * Math.random();\n const interval = Math.min(max, min * Math.pow(2, step + 1));\n\n return Math.floor((1 - jitter) * interval);\n};\n\nexport function errorExists(data) {\n return 'error' in data && data.error !== null;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Namespace.prototype = Object.create(ReflectionObject.prototype)).constructor = Namespace).className = \"Namespace\";\r\n\r\nvar Enum = require(\"./enum\"),\r\n Field = require(\"./field\"),\r\n util = require(\"./util\");\r\n\r\nvar Type, // cyclic\r\n Service; // \"\r\n\r\n/**\r\n * Constructs a new namespace instance.\r\n * @name Namespace\r\n * @classdesc Reflected namespace.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\r\n */\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @memberof Namespace\r\n * @function\r\n * @param {string} name Namespace name\r\n * @param {Object.} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array, toJSONOptions) {\r\n if (!(array && array.length))\r\n return undefined;\r\n var obj = {};\r\n for (var i = 0; i < array.length; ++i)\r\n obj[array[i].name] = array[i].toJSON(toJSONOptions);\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {Array.|undefined} reserved Array of reserved ranges and names\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nNamespace.isReservedId = function isReservedId(reserved, id) {\r\n if (reserved)\r\n for (var i = 0; i < reserved.length; ++i)\r\n if (typeof reserved[i] !== \"string\" && reserved[i][0] <= id && reserved[i][1] >= id)\r\n return true;\r\n return false;\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {Array.|undefined} reserved Array of reserved ranges and names\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nNamespace.isReservedName = function isReservedName(reserved, name) {\r\n if (reserved)\r\n for (var i = 0; i < reserved.length; ++i)\r\n if (reserved[i] === name)\r\n return true;\r\n return false;\r\n};\r\n\r\n/**\r\n * Not an actual constructor. Use {@link Namespace} instead.\r\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports NamespaceBase\r\n * @extends ReflectionObject\r\n * @abstract\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\r\n * @see {@link Namespace}\r\n */\r\nfunction Namespace(name, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Nested objects by name.\r\n * @type {Object.|undefined}\r\n */\r\n this.nested = undefined; // toJSON\r\n\r\n /**\r\n * Cached nested objects as an array.\r\n * @type {ReflectionObject[]|null}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n return namespace;\r\n}\r\n\r\n/**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name NamespaceBase#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(Namespace.prototype, \"nestedArray\", {\r\n get: function() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n});\r\n\r\n/**\r\n * Namespace descriptor.\r\n * @interface INamespace\r\n * @property {Object.} [options] Namespace options\r\n * @property {Object.} [nested] Nested object descriptors\r\n */\r\n\r\n/**\r\n * Any extension field descriptor.\r\n * @typedef AnyExtensionField\r\n * @type {IExtensionField|IExtensionMapField}\r\n */\r\n\r\n/**\r\n * Any nested object descriptor.\r\n * @typedef AnyNestedObject\r\n * @type {IEnum|IType|IService|AnyExtensionField|INamespace}\r\n */\r\n// ^ BEWARE: VSCode hangs forever when using more than 5 types (that's why AnyExtensionField exists in the first place)\r\n\r\n/**\r\n * Converts this namespace to a namespace descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {INamespace} Namespace descriptor\r\n */\r\nNamespace.prototype.toJSON = function toJSON(toJSONOptions) {\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"nested\" , arrayToJSON(this.nestedArray, toJSONOptions)\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds nested objects to this namespace from nested object descriptors.\r\n * @param {Object.} nestedJson Any nested object descriptors\r\n * @returns {Namespace} `this`\r\n */\r\nNamespace.prototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n /* istanbul ignore else */\r\n if (nestedJson) {\r\n for (var names = Object.keys(nestedJson), i = 0, nested; i < names.length; ++i) {\r\n nested = nestedJson[names[i]];\r\n ns.add( // most to least likely\r\n ( nested.fields !== undefined\r\n ? Type.fromJSON\r\n : nested.values !== undefined\r\n ? Enum.fromJSON\r\n : nested.methods !== undefined\r\n ? Service.fromJSON\r\n : nested.id !== undefined\r\n ? Field.fromJSON\r\n : Namespace.fromJSON )(names[i], nested)\r\n );\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets the nested object of the specified name.\r\n * @param {string} name Nested object name\r\n * @returns {ReflectionObject|null} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespace.prototype.get = function get(name) {\r\n return this.nested && this.nested[name]\r\n || null;\r\n};\r\n\r\n/**\r\n * Gets the values of the nested {@link Enum|enum} of the specified name.\r\n * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`.\r\n * @param {string} name Nested enum name\r\n * @returns {Object.} Enum values\r\n * @throws {Error} If there is no such enum\r\n */\r\nNamespace.prototype.getEnum = function getEnum(name) {\r\n if (this.nested && this.nested[name] instanceof Enum)\r\n return this.nested[name].values;\r\n throw Error(\"no such enum: \" + name);\r\n};\r\n\r\n/**\r\n * Adds a nested object to this namespace.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name\r\n */\r\nNamespace.prototype.add = function add(object) {\r\n\r\n if (!(object instanceof Field && object.extend !== undefined || object instanceof Type || object instanceof Enum || object instanceof Service || object instanceof Namespace))\r\n throw TypeError(\"object must be a valid nested object\");\r\n\r\n if (!this.nested)\r\n this.nested = {};\r\n else {\r\n var prev = this.get(object.name);\r\n if (prev) {\r\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\r\n // replace plain namespace but keep existing nested elements and options\r\n var nested = prev.nestedArray;\r\n for (var i = 0; i < nested.length; ++i)\r\n object.add(nested[i]);\r\n this.remove(prev);\r\n if (!this.nested)\r\n this.nested = {};\r\n object.setOptions(prev.options, true);\r\n\r\n } else\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n }\r\n }\r\n this.nested[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this namespace.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this namespace\r\n */\r\nNamespace.prototype.remove = function remove(object) {\r\n\r\n if (!(object instanceof ReflectionObject))\r\n throw TypeError(\"object must be a ReflectionObject\");\r\n if (object.parent !== this)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.nested[object.name];\r\n if (!Object.keys(this.nested).length)\r\n this.nested = undefined;\r\n\r\n object.onRemove(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Defines additial namespaces within this one if not yet existing.\r\n * @param {string|string[]} path Path to create\r\n * @param {*} [json] Nested types to create from JSON\r\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\r\n */\r\nNamespace.prototype.define = function define(path, json) {\r\n\r\n if (util.isString(path))\r\n path = path.split(\".\");\r\n else if (!Array.isArray(path))\r\n throw TypeError(\"illegal path\");\r\n if (path && path.length && path[0] === \"\")\r\n throw Error(\"path must be relative\");\r\n\r\n var ptr = this;\r\n while (path.length > 0) {\r\n var part = path.shift();\r\n if (ptr.nested && ptr.nested[part]) {\r\n ptr = ptr.nested[part];\r\n if (!(ptr instanceof Namespace))\r\n throw Error(\"path conflicts with non-namespace objects\");\r\n } else\r\n ptr.add(ptr = new Namespace(part));\r\n }\r\n if (json)\r\n ptr.addJSON(json);\r\n return ptr;\r\n};\r\n\r\n/**\r\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespace.prototype.resolveAll = function resolveAll() {\r\n var nested = this.nestedArray, i = 0;\r\n while (i < nested.length)\r\n if (nested[i] instanceof Namespace)\r\n nested[i++].resolveAll();\r\n else\r\n nested[i++].resolve();\r\n return this.resolve();\r\n};\r\n\r\n/**\r\n * Recursively looks up the reflection object matching the specified path in the scope of this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {*|Array.<*>} filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc.\r\n * @param {boolean} [parentAlreadyChecked=false] If known, whether the parent has already been checked\r\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\r\n */\r\nNamespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChecked) {\r\n\r\n /* istanbul ignore next */\r\n if (typeof filterTypes === \"boolean\") {\r\n parentAlreadyChecked = filterTypes;\r\n filterTypes = undefined;\r\n } else if (filterTypes && !Array.isArray(filterTypes))\r\n filterTypes = [ filterTypes ];\r\n\r\n if (util.isString(path) && path.length) {\r\n if (path === \".\")\r\n return this.root;\r\n path = path.split(\".\");\r\n } else if (!path.length)\r\n return this;\r\n\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.root.lookup(path.slice(1), filterTypes);\r\n\r\n // Test if the first part matches any nested object, and if so, traverse if path contains more\r\n var found = this.get(path[0]);\r\n if (found) {\r\n if (path.length === 1) {\r\n if (!filterTypes || filterTypes.indexOf(found.constructor) > -1)\r\n return found;\r\n } else if (found instanceof Namespace && (found = found.lookup(path.slice(1), filterTypes, true)))\r\n return found;\r\n\r\n // Otherwise try each nested namespace\r\n } else\r\n for (var i = 0; i < this.nestedArray.length; ++i)\r\n if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i].lookup(path, filterTypes, true)))\r\n return found;\r\n\r\n // If there hasn't been a match, try again at the parent\r\n if (this.parent === null || parentAlreadyChecked)\r\n return null;\r\n return this.parent.lookup(path, filterTypes);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @name NamespaceBase#lookup\r\n * @function\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\r\n * @variation 2\r\n */\r\n// lookup(path: string, [parentAlreadyChecked: boolean])\r\n\r\n/**\r\n * Looks up the {@link Type|type} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Type} Looked up type\r\n * @throws {Error} If `path` does not point to a type\r\n */\r\nNamespace.prototype.lookupType = function lookupType(path) {\r\n var found = this.lookup(path, [ Type ]);\r\n if (!found)\r\n throw Error(\"no such type: \" + path);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Enum} Looked up enum\r\n * @throws {Error} If `path` does not point to an enum\r\n */\r\nNamespace.prototype.lookupEnum = function lookupEnum(path) {\r\n var found = this.lookup(path, [ Enum ]);\r\n if (!found)\r\n throw Error(\"no such Enum '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Type} Looked up type or enum\r\n * @throws {Error} If `path` does not point to a type or enum\r\n */\r\nNamespace.prototype.lookupTypeOrEnum = function lookupTypeOrEnum(path) {\r\n var found = this.lookup(path, [ Type, Enum ]);\r\n if (!found)\r\n throw Error(\"no such Type or Enum '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the {@link Service|service} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Service} Looked up service\r\n * @throws {Error} If `path` does not point to a service\r\n */\r\nNamespace.prototype.lookupService = function lookupService(path) {\r\n var found = this.lookup(path, [ Service ]);\r\n if (!found)\r\n throw Error(\"no such Service '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\nNamespace._configure = function(Type_, Service_) {\r\n Type = Type_;\r\n Service = Service_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/namespace.js\n// module id = 8\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = exports;\r\n\r\nvar util = require(\"./util\");\r\n\r\nvar s = [\r\n \"double\", // 0\r\n \"float\", // 1\r\n \"int32\", // 2\r\n \"uint32\", // 3\r\n \"sint32\", // 4\r\n \"fixed32\", // 5\r\n \"sfixed32\", // 6\r\n \"int64\", // 7\r\n \"uint64\", // 8\r\n \"sint64\", // 9\r\n \"fixed64\", // 10\r\n \"sfixed64\", // 11\r\n \"bool\", // 12\r\n \"string\", // 13\r\n \"bytes\" // 14\r\n];\r\n\r\nfunction bake(values, offset) {\r\n var i = 0, o = {};\r\n offset |= 0;\r\n while (i < values.length) o[s[i + offset]] = values[i++];\r\n return o;\r\n}\r\n\r\n/**\r\n * Basic type wire types.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n * @property {number} bytes=2 Ldelim wire type\r\n */\r\ntypes.basic = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2,\r\n /* bytes */ 2\r\n]);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=0 Double default\r\n * @property {number} float=0 Float default\r\n * @property {number} int32=0 Int32 default\r\n * @property {number} uint32=0 Uint32 default\r\n * @property {number} sint32=0 Sint32 default\r\n * @property {number} fixed32=0 Fixed32 default\r\n * @property {number} sfixed32=0 Sfixed32 default\r\n * @property {number} int64=0 Int64 default\r\n * @property {number} uint64=0 Uint64 default\r\n * @property {number} sint64=0 Sint32 default\r\n * @property {number} fixed64=0 Fixed64 default\r\n * @property {number} sfixed64=0 Sfixed64 default\r\n * @property {boolean} bool=false Bool default\r\n * @property {string} string=\"\" String default\r\n * @property {Array.} bytes=Array(0) Bytes default\r\n * @property {null} message=null Message default\r\n */\r\ntypes.defaults = bake([\r\n /* double */ 0,\r\n /* float */ 0,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 0,\r\n /* sfixed32 */ 0,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 0,\r\n /* sfixed64 */ 0,\r\n /* bool */ false,\r\n /* string */ \"\",\r\n /* bytes */ util.emptyArray,\r\n /* message */ null\r\n]);\r\n\r\n/**\r\n * Basic long type wire types.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n */\r\ntypes.long = bake([\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n */\r\ntypes.mapKey = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n */\r\ntypes.packed = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0\r\n]);\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/types.js\n// module id = 9\n// module chunks = 0","import EventEmitter from 'events';\nimport Subscription from './subscription';\n\nimport {\n JsonEncoder,\n JsonDecoder,\n JsonMethodType,\n JsonPushType\n} from './json';\n\nimport {\n isFunction,\n log,\n startsWith,\n errorExists,\n backoff\n} from './utils';\n\nconst _errorTimeout = 'timeout';\nconst _errorConnectionClosed = 'connection closed';\n\nexport class Centrifuge extends EventEmitter {\n\n constructor(url, options) {\n super();\n this._url = url;\n this._sockjs = null;\n this._isSockjs = false;\n this._binary = false;\n this._methodType = null;\n this._pushType = null;\n this._encoder = null;\n this._decoder = null;\n this._status = 'disconnected';\n this._reconnect = true;\n this._reconnecting = false;\n this._transport = null;\n this._transportName = null;\n this._transportClosed = true;\n this._messageId = 0;\n this._clientID = null;\n this._refreshRequired = false;\n this._subs = {};\n this._lastSeq = {};\n this._lastGen = {};\n this._lastEpoch = {};\n this._messages = [];\n this._isBatching = false;\n this._isSubscribeBatching = false;\n this._privateChannels = {};\n this._numRefreshFailed = 0;\n this._refreshTimeout = null;\n this._pingTimeout = null;\n this._pongTimeout = null;\n this._subRefreshTimeouts = {};\n this._retries = 0;\n this._callbacks = {};\n this._latency = null;\n this._latencyStart = null;\n this._connectData = null;\n this._token = null;\n this._xhrID = 0;\n this._xhrs = {};\n this._config = {\n debug: false,\n sockjs: null,\n promise: null,\n minRetry: 1000,\n maxRetry: 20000,\n timeout: 5000,\n ping: true,\n pingInterval: 25000,\n pongWaitTimeout: 5000,\n privateChannelPrefix: '$',\n onTransportClose: null,\n sockjsServer: null,\n sockjsTransports: [\n 'websocket',\n 'xdr-streaming',\n 'xhr-streaming',\n 'eventsource',\n 'iframe-eventsource',\n 'iframe-htmlfile',\n 'xdr-polling',\n 'xhr-polling',\n 'iframe-xhr-polling',\n 'jsonp-polling'\n ],\n refreshEndpoint: '/centrifuge/refresh',\n refreshHeaders: {},\n refreshParams: {},\n refreshData: {},\n refreshAttempts: null,\n refreshInterval: 1000,\n onRefreshFailed: null,\n onRefresh: null,\n subscribeEndpoint: '/centrifuge/subscribe',\n subscribeHeaders: {},\n subscribeParams: {},\n subRefreshInterval: 1000,\n onPrivateSubscribe: null\n };\n this._configure(options);\n }\n\n setToken(token) {\n this._token = token;\n }\n\n setConnectData(data) {\n this._connectData = data;\n }\n\n _ajax(url, params, headers, data, callback) {\n let query = '';\n this._debug('sending AJAX request to', url, 'with data', JSON.stringify(data));\n\n const xhr = (global.XMLHttpRequest ? new global.XMLHttpRequest() : new global.ActiveXObject('Microsoft.XMLHTTP'));\n\n for (const i in params) {\n if (params.hasOwnProperty(i)) {\n if (query.length > 0) {\n query += '&';\n }\n query += encodeURIComponent(i) + '=' + encodeURIComponent(params[i]);\n }\n }\n if (query.length > 0) {\n query = '?' + query;\n }\n xhr.open('POST', url + query, true);\n if ('withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr.setRequestHeader('Content-Type', 'application/json');\n for (const headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n xhr.setRequestHeader(headerName, headers[headerName]);\n }\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n let data, parsed = false;\n try {\n data = JSON.parse(xhr.responseText);\n parsed = true;\n } catch (e) {\n callback({\n error: 'Invalid JSON. Data was: ' + xhr.responseText,\n status: 200,\n data: null\n });\n }\n if (parsed) { // prevents double execution.\n callback({\n data: data,\n status: 200\n });\n }\n } else {\n this._log('wrong status code in AJAX response', xhr.status);\n callback({\n status: xhr.status,\n data: null\n });\n }\n }\n };\n setTimeout(() => xhr.send(JSON.stringify(data)), 20);\n return xhr;\n };\n\n _log() {\n log('info', arguments);\n };\n\n _debug() {\n if (this._config.debug === true) {\n log('debug', arguments);\n }\n };\n\n _websocketSupported() {\n return !(typeof WebSocket !== 'function' && typeof WebSocket !== 'object');\n };\n\n _setFormat(format) {\n if (this._formatOverride(format)) {\n return;\n }\n if (format === 'protobuf') {\n throw new Error('not implemented by JSON only Centrifuge client – use client with Protobuf');\n }\n this._binary = false;\n this._methodType = JsonMethodType;\n this._pushType = JsonPushType;\n this._encoder = new JsonEncoder();\n this._decoder = new JsonDecoder();\n }\n\n _formatOverride(format) {\n return false;\n }\n\n _configure(configuration) {\n if (!('Promise' in global)) {\n throw new Error('Promise polyfill required');\n }\n\n Object.assign(this._config, configuration || {});\n this._debug('centrifuge config', this._config);\n\n if (!this._url) {\n throw new Error('url required');\n }\n\n if (startsWith(this._url, 'ws') && this._url.indexOf('format=protobuf') > -1) {\n this._setFormat('protobuf');\n } else {\n this._setFormat('json');\n }\n\n if (startsWith(this._url, 'http')) {\n this._debug('client will try to connect to SockJS endpoint');\n if (this._config.sockjs !== null) {\n this._debug('SockJS explicitly provided in options');\n this._sockjs = this._config.sockjs;\n } else {\n if (typeof global.SockJS === 'undefined') {\n throw new Error('SockJS not found, use ws:// in url or include SockJS');\n }\n this._debug('use globally defined SockJS');\n this._sockjs = global.SockJS;\n }\n } else {\n this._debug('client will connect to websocket endpoint');\n }\n };\n\n _setStatus(newStatus) {\n if (this._status !== newStatus) {\n this._debug('Status', this._status, '->', newStatus);\n this._status = newStatus;\n }\n };\n\n _isDisconnected() {\n return this._status === 'disconnected';\n };\n\n _isConnecting() {\n return this._status === 'connecting';\n };\n\n _isConnected() {\n return this._status === 'connected';\n };\n\n _nextMessageId() {\n return ++this._messageId;\n };\n\n _resetRetry() {\n this._debug('reset retries count to 0');\n this._retries = 0;\n };\n\n _getRetryInterval() {\n const interval = backoff(this._retries, this._config.minRetry, this._config.maxRetry);\n\n this._retries += 1;\n return interval;\n };\n\n _abortInflightXHRs() {\n for (const xhrID in this._xhrs) {\n try {\n this._xhrs[xhrID].abort();\n } catch (e) {\n this._debug('error aborting xhr', e);\n }\n delete this._xhrs[xhrID];\n }\n };\n\n _clearConnectedState(reconnect) {\n this._clientID = null;\n this._stopPing();\n\n // fire errbacks of registered outgoing calls.\n for (const id in this._callbacks) {\n if (this._callbacks.hasOwnProperty(id)) {\n const callbacks = this._callbacks[id];\n clearTimeout(callbacks.timeout);\n const errback = callbacks.errback;\n if (!errback) {\n continue;\n }\n errback({error: this._createErrorObject('disconnected')});\n }\n }\n this._callbacks = {};\n\n // fire unsubscribe events\n for (const channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n const sub = this._subs[channel];\n\n if (reconnect) {\n if (sub._isSuccess()) {\n sub._triggerUnsubscribe();\n sub._recover = true;\n }\n sub._setSubscribing();\n } else {\n sub._setUnsubscribed();\n }\n }\n }\n\n this._abortInflightXHRs();\n\n // clear refresh timer\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n // clear sub refresh timers\n for (const channel in this._subRefreshTimeouts) {\n if (this._subRefreshTimeouts.hasOwnProperty(channel) && this._subRefreshTimeouts[channel]) {\n this._clearSubRefreshTimeout(channel);\n }\n }\n this._subRefreshTimeouts = {};\n\n if (!this._reconnect) {\n // completely clear subscriptions\n this._subs = {};\n }\n };\n\n _isTransportOpen() {\n if (this._isSockjs) {\n return this._transport &&\n this._transport.transport &&\n this._transport.transport.readyState === this._transport.transport.OPEN;\n }\n return this._transport && this._transport.readyState === this._transport.OPEN;\n };\n\n _transportSend(commands) {\n if (!commands.length) {\n return true;\n }\n\n if (!this._isTransportOpen()) {\n // resolve pending commands with error if transport is not open\n for (let command in commands) {\n let id = command.id;\n if (!(id in this._callbacks)) {\n continue;\n }\n const callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n const errback = callbacks.errback;\n errback({error: this._createErrorObject(_errorConnectionClosed, 0)});\n }\n return false;\n }\n this._transport.send(this._encoder.encodeCommands(commands));\n return true;\n }\n\n _setupTransport() {\n this._isSockjs = false;\n\n // detect transport to use - SockJS or Websocket\n if (this._sockjs !== null) {\n const sockjsOptions = {\n transports: this._config.sockjsTransports\n };\n\n if (this._config.sockjsServer !== null) {\n sockjsOptions.server = this._config.sockjsServer;\n }\n this._isSockjs = true;\n this._transport = new this._sockjs(this._url, null, sockjsOptions);\n } else {\n if (!this._websocketSupported()) {\n this._debug('No Websocket support and no SockJS configured, can not connect');\n return;\n }\n this._transport = new WebSocket(this._url);\n if (this._binary === true) {\n this._transport.binaryType = 'arraybuffer';\n }\n }\n\n this._transport.onopen = () => {\n this._transportClosed = false;\n\n if (this._isSockjs) {\n this._transportName = 'sockjs-' + this._transport.transport;\n this._transport.onheartbeat = () => this._restartPing();\n } else {\n this._transportName = 'websocket';\n }\n\n // Can omit method here due to zero value.\n const msg = {\n // method: this._methodType.CONNECT\n };\n\n if (this._token || this._connectData) {\n msg.params = {};\n }\n\n if (this._token) {\n msg.params.token = this._token;\n }\n\n if (this._connectData) {\n msg.params.data = this._connectData;\n }\n\n this._latencyStart = new Date();\n this._call(msg).then(resolveCtx => {\n this._connectResponse(this._decoder.decodeCommandResult(this._methodType.CONNECT, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n const err = rejectCtx.error;\n if (err.code === 109) { // token expired.\n this._refreshRequired = true;\n }\n this._disconnect('connect error', true);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n this._transport.onerror = error => {\n this._debug('transport level error', error);\n };\n\n this._transport.onclose = closeEvent => {\n this._transportClosed = true;\n let reason = _errorConnectionClosed;\n let needReconnect = true;\n\n if (closeEvent && 'reason' in closeEvent && closeEvent.reason) {\n try {\n const advice = JSON.parse(closeEvent.reason);\n this._debug('reason is an advice object', advice);\n reason = advice.reason;\n needReconnect = advice.reconnect;\n } catch (e) {\n reason = closeEvent.reason;\n this._debug('reason is a plain string', reason);\n }\n }\n\n // onTransportClose callback should be executed every time transport was closed.\n // This can be helpful to catch failed connection events (because our disconnect\n // event only called once and every future attempts to connect do not fire disconnect\n // event again).\n if (this._config.onTransportClose !== null) {\n this._config.onTransportClose({\n event: closeEvent,\n reason: reason,\n reconnect: needReconnect\n });\n }\n\n this._disconnect(reason, needReconnect);\n\n if (this._reconnect === true) {\n this._reconnecting = true;\n const interval = this._getRetryInterval();\n\n this._debug('reconnect after ' + interval + ' milliseconds');\n setTimeout(() => {\n if (this._reconnect === true) {\n if (this._refreshRequired) {\n this._refresh();\n } else {\n this._connect();\n }\n }\n }, interval);\n }\n };\n\n this._transport.onmessage = event => {\n this._dataReceived(event.data);\n };\n };\n\n rpc(data) {\n const msg = {\n method: this._methodType.RPC,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(resolveCtx => {\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n return this._decoder.decodeCommandResult(this._methodType.RPC, resolveCtx.result);\n }, rejectCtx => {\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n return rejectCtx.error;\n });\n }\n\n send(data) {\n const msg = {\n method: this._methodType.SEND,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n const sent = this._transportSend([msg]); // can send async message to server without id set\n if (!sent) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n };\n return Promise.resolve({});\n }\n\n publish(channel, data) {\n const msg = {\n method: this._methodType.PUBLISH,\n params: {\n channel: channel,\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(result => {\n if (result.next) {\n result.next();\n }\n return {};\n });\n }\n\n _dataReceived(data) {\n const replies = this._decoder.decodeReplies(data);\n // we have to guarantee order of events in replies processing - i.e. start processing\n // next reply only when we finished processing of current one. Without syncing things in\n // this way we could get wrong publication events order as reply promises resolve\n // on next loop tick so for loop continues before we finished emitting all reply events.\n let p = Promise.resolve();\n for (const i in replies) {\n if (replies.hasOwnProperty(i)) {\n p = p.then(() => {\n return this._dispatchReply(replies[i]);\n });\n }\n }\n this._restartPing();\n }\n\n _call(msg) {\n return new Promise((resolve, reject) => {\n const id = this._addMessage(msg);\n this._registerCall(id, resolve, reject);\n });\n }\n\n _connect() {\n if (this.isConnected()) {\n this._debug('connect called when already connected');\n return;\n }\n if (this._status === 'connecting') {\n return;\n }\n\n this._debug('start connecting');\n this._setStatus('connecting');\n this._clientID = null;\n this._reconnect = true;\n this._setupTransport();\n };\n\n _disconnect(reason, shouldReconnect) {\n\n if (this._isDisconnected()) {\n return;\n }\n\n this._debug('disconnected:', reason, shouldReconnect);\n\n const reconnect = shouldReconnect || false;\n\n if (reconnect === false) {\n this._reconnect = false;\n }\n\n this._clearConnectedState(reconnect);\n\n if (!this._isDisconnected()) {\n this._setStatus('disconnected');\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._reconnecting === false) {\n this.emit('disconnect', {\n reason: reason,\n reconnect: reconnect\n });\n }\n }\n\n if (!this._transportClosed) {\n this._transport.close();\n }\n };\n\n _refreshFailed() {\n this._numRefreshFailed = 0;\n if (!this._isDisconnected()) {\n this._disconnect('refresh failed', false);\n }\n if (this._config.onRefreshFailed !== null) {\n this._config.onRefreshFailed();\n }\n };\n\n _refresh() {\n // ask application for new connection token.\n this._debug('refresh token');\n\n if (this._config.refreshAttempts === 0) {\n this._debug('refresh attempts set to 0, do not send refresh request at all');\n this._refreshFailed();\n return;\n }\n\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (this._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n // We don't perform any connection status related actions here as we are\n // relying on server that must close connection eventually.\n if (resp.error) {\n this._debug('error refreshing connection token', resp.error);\n } else {\n this._debug('error refreshing connection token: wrong status code', resp.status);\n }\n this._numRefreshFailed++;\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._config.refreshAttempts !== null && this._numRefreshFailed >= this._config.refreshAttempts) {\n this._refreshFailed();\n return;\n }\n const jitter = Math.round(Math.random() * 1000 * Math.max(this._numRefreshFailed, 20));\n const interval = this._config.refreshInterval + jitter;\n this._refreshTimeout = setTimeout(() => this._refresh(), interval);\n return;\n }\n this._numRefreshFailed = 0;\n this._token = resp.data.token;\n if (!this._token) {\n this._refreshFailed();\n return;\n }\n if (this._isDisconnected() && this._reconnect) {\n this._debug('token refreshed, connect from scratch');\n this._connect();\n } else {\n this._debug('send refreshed token');\n const msg = {\n method: this._methodType.REFRESH,\n params: {\n token: this._token\n }\n };\n this._call(msg).then(resolveCtx => {\n this._refreshResponse(this._decoder.decodeCommandResult(this._methodType.REFRESH, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._refreshError(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n if (this._config.onRefresh !== null) {\n const context = {};\n this._config.onRefresh(context, cb);\n } else {\n const xhr = this._ajax(\n this._config.refreshEndpoint,\n this._config.refreshParams,\n this._config.refreshHeaders,\n this._config.refreshData,\n cb\n );\n this._xhrs[xhrID] = xhr;\n }\n };\n\n _refreshError(err) {\n this._debug('refresh error', err);\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n const interval = this._config.refreshInterval + Math.round(Math.random() * 1000);\n this._refreshTimeout = setTimeout(() => this._refresh(), interval);\n }\n\n _refreshResponse(result) {\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (result.expires) {\n this._clientID = result.client;\n this._refreshTimeout = setTimeout(() => this._refresh(), this._getTTLMilliseconds(result.ttl));\n }\n };\n\n _newXHRID() {\n this._xhrID++;\n return this._xhrID;\n }\n\n _subRefresh(channel) {\n this._debug('refresh subscription token for channel', channel);\n\n if (this._subRefreshTimeouts[channel] !== undefined) {\n this._clearSubRefreshTimeout(channel);\n } else {\n return;\n }\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (resp.error || resp.status !== 200 || this._clientID !== clientID) {\n return;\n }\n let channelsData = {};\n if (resp.data.channels) {\n for (const i in data.channels) {\n const channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n const token = channelsData[channel];\n if (!token) {\n return;\n }\n const msg = {\n method: this._methodType.SUB_REFRESH,\n params: {\n channel: channel,\n token: token\n }\n };\n\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n\n this._call(msg).then(resolveCtx => {\n this._subRefreshResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUB_REFRESH, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subRefreshError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n const data = {\n client: this._clientID,\n channels: [channel]\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n const xhr = this._ajax(\n this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n };\n\n _clearSubRefreshTimeout(channel) {\n if (this._subRefreshTimeouts[channel] !== undefined) {\n clearTimeout(this._subRefreshTimeouts[channel]);\n delete this._subRefreshTimeouts[channel];\n }\n }\n\n _subRefreshError(channel, err) {\n this._debug('subscription refresh error', channel, err);\n this._clearSubRefreshTimeout(channel);\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n const jitter = Math.round(Math.random() * 1000);\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._config.subRefreshInterval + jitter);\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n return;\n }\n\n _subRefreshResponse(channel, result) {\n this._debug('subscription refresh success', channel);\n this._clearSubRefreshTimeout(channel);\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n if (result.expires === true) {\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n return;\n };\n\n _subscribe(sub, isResubscribe) {\n this._debug('subscribing on', sub.channel);\n const channel = sub.channel;\n\n if (!(channel in this._subs)) {\n this._subs[channel] = sub;\n }\n\n if (!this.isConnected()) {\n // subscribe will be called later\n sub._setNew();\n return;\n }\n\n sub._setSubscribing(isResubscribe);\n\n const msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel\n }\n };\n\n // If channel name does not start with privateChannelPrefix - then we\n // can just send subscription message to Centrifuge. If channel name\n // starts with privateChannelPrefix - then this is a private channel\n // and we should ask web application backend for permission first.\n if (startsWith(channel, this._config.privateChannelPrefix)) {\n // private channel.\n if (this._isSubscribeBatching) {\n this._privateChannels[channel] = true;\n } else {\n this.startSubscribeBatching();\n this._subscribe(sub);\n this.stopSubscribeBatching();\n }\n } else {\n const recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n const seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n const gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n const epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n\n this._call(msg).then(resolveCtx => {\n this._subscribeResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUBSCRIBE, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n _unsubscribe(sub) {\n if (this.isConnected()) {\n // No need to unsubscribe in disconnected state - i.e. client already unsubscribed.\n this._addMessage({\n method: this._methodType.UNSUBSCRIBE,\n params: {\n channel: sub.channel\n }\n });\n }\n };\n\n _getTTLMilliseconds(ttl) {\n // https://stackoverflow.com/questions/12633405/what-is-the-maximum-delay-for-setinterval\n return Math.min(ttl * 1000, 2147483647);\n }\n\n getSub(channel) {\n return this._getSub(channel);\n }\n\n _getSub(channel) {\n const sub = this._subs[channel];\n if (!sub) {\n return null;\n }\n return sub;\n };\n\n _connectResponse(result) {\n const wasReconnecting = this._reconnecting;\n this._reconnecting = false;\n this._resetRetry();\n this._refreshRequired = false;\n\n if (this.isConnected()) {\n return;\n }\n\n if (this._latencyStart !== null) {\n this._latency = (new Date()).getTime() - this._latencyStart.getTime();\n this._latencyStart = null;\n }\n\n this._clientID = result.client;\n this._setStatus('connected');\n\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n }\n\n if (result.expires) {\n this._refreshTimeout = setTimeout(() => this._refresh(), this._getTTLMilliseconds(result.ttl));\n }\n\n this.startBatching();\n this.startSubscribeBatching();\n for (const channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n const sub = this._subs[channel];\n if (sub._shouldResubscribe()) {\n this._subscribe(sub, wasReconnecting);\n }\n }\n }\n this.stopSubscribeBatching();\n this.stopBatching();\n\n this._startPing();\n\n const ctx = {\n client: result.client,\n transport: this._transportName,\n latency: this._latency\n };\n if (result.data) {\n ctx.data = result.data;\n }\n\n this.emit('connect', ctx);\n };\n\n _stopPing() {\n if (this._pongTimeout !== null) {\n clearTimeout(this._pongTimeout);\n this._pongTimeout = null;\n }\n if (this._pingTimeout !== null) {\n clearTimeout(this._pingTimeout);\n this._pingTimeout = null;\n }\n };\n\n _startPing() {\n if (this._config.ping !== true || this._config.pingInterval <= 0) {\n return;\n }\n if (!this.isConnected()) {\n return;\n }\n\n this._pingTimeout = setTimeout(() => {\n if (!this.isConnected()) {\n this._stopPing();\n return;\n }\n this.ping();\n this._pongTimeout = setTimeout(() => {\n this._disconnect('no ping', true);\n }, this._config.pongWaitTimeout);\n }, this._config.pingInterval);\n };\n\n _restartPing() {\n this._stopPing();\n this._startPing();\n };\n\n _subscribeError(channel, error) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n if (error.code === 0 && error.message === _errorTimeout) { // client side timeout.\n this._disconnect('timeout', true);\n return;\n }\n sub._setSubscribeError(error);\n };\n\n _subscribeResponse(channel, result) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n\n let recovered = false;\n if ('recovered' in result) {\n recovered = result.recovered;\n }\n sub._setSubscribeSuccess(recovered);\n\n let pubs = result.publications;\n\n if (pubs && pubs.length > 0) {\n // handle missed pubs.\n pubs = pubs.reverse();\n for (let i in pubs) {\n if (pubs.hasOwnProperty(i)) {\n this._handlePublication(channel, pubs[i]);\n }\n }\n } else {\n if (result.recoverable) {\n this._lastSeq[channel] = result.seq || 0;\n this._lastGen[channel] = result.gen || 0;\n }\n }\n\n this._lastEpoch[channel] = result.epoch || '';\n\n if (result.recoverable) {\n sub._recoverable = true;\n }\n\n if (result.expires === true) {\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n };\n\n _handleReply(reply, next) {\n const id = reply.id;\n const result = reply.result;\n\n if (!(id in this._callbacks)) {\n next();\n return;\n }\n const callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n\n if (!errorExists(reply)) {\n const callback = callbacks.callback;\n if (!callback) {\n return;\n }\n callback({result, next});\n } else {\n const errback = callbacks.errback;\n if (!errback) {\n next();\n return;\n }\n const error = reply.error;\n errback({error, next});\n }\n }\n\n _handleJoin(channel, join) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('join', join);\n };\n\n _handleLeave(channel, leave) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('leave', leave);\n };\n\n _handleUnsub(channel, unsub) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.unsubscribe();\n if (unsub.resubscribe === true) {\n sub.subscribe();\n }\n };\n\n _handlePublication(channel, pub) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (pub.seq !== undefined) {\n this._lastSeq[channel] = pub.seq;\n }\n if (pub.gen !== undefined) {\n this._lastGen[channel] = pub.gen;\n }\n sub.emit('publish', pub);\n };\n\n _handleMessage(message) {\n this.emit('message', message.data);\n };\n\n _handlePush(data, next) {\n const push = this._decoder.decodePush(data);\n let type = 0;\n if ('type' in push) {\n type = push['type'];\n }\n const channel = push.channel;\n\n if (type === this._pushType.PUBLICATION) {\n const pub = this._decoder.decodePushData(this._pushType.PUBLICATION, push.data);\n this._handlePublication(channel, pub);\n } else if (type === this._pushType.MESSAGE) {\n const message = this._decoder.decodePushData(this._pushType.MESSAGE, push.data);\n this._handleMessage(message);\n } else if (type === this._pushType.JOIN) {\n const join = this._decoder.decodePushData(this._pushType.JOIN, push.data);\n this._handleJoin(channel, join);\n } else if (type === this._pushType.LEAVE) {\n const leave = this._decoder.decodePushData(this._pushType.LEAVE, push.data);\n this._handleLeave(channel, leave);\n } else if (type === this._pushType.UNSUB) {\n const unsub = this._decoder.decodePushData(this._pushType.UNSUB, push.data);\n this._handleUnsub(channel, unsub);\n }\n next();\n }\n\n _dispatchReply(reply) {\n var next;\n const p = new Promise(resolve =>{\n next = resolve;\n });\n\n if (reply === undefined || reply === null) {\n this._debug('dispatch: got undefined or null reply');\n next();\n return p;\n }\n\n const id = reply.id;\n\n if (id && id > 0) {\n this._handleReply(reply, next);\n } else {\n this._handlePush(reply.result, next);\n }\n\n return p;\n };\n\n _flush() {\n const messages = this._messages.slice(0);\n this._messages = [];\n this._transportSend(messages);\n };\n\n _ping() {\n const msg = {\n method: this._methodType.PING\n };\n this._call(msg).then(resolveCtx => {\n this._pingResponse(this._decoder.decodeCommandResult(this._methodType.PING, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._debug('ping error', rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n _pingResponse(result) {\n if (!this.isConnected()) {\n return;\n }\n this._stopPing();\n this._startPing();\n }\n\n _getLastSeq(channel) {\n const lastSeq = this._lastSeq[channel];\n if (lastSeq) {\n return lastSeq;\n }\n return 0;\n };\n\n _getLastGen(channel) {\n const lastGen = this._lastGen[channel];\n if (lastGen) {\n return lastGen;\n }\n return 0;\n };\n\n _getLastEpoch(channel) {\n const lastEpoch = this._lastEpoch[channel];\n if (lastEpoch) {\n return lastEpoch;\n }\n return '';\n };\n\n _createErrorObject(message, code) {\n const errObject = {\n message: message,\n code: code || 0\n };\n\n return errObject;\n };\n\n _registerCall(id, callback, errback) {\n this._callbacks[id] = {\n callback: callback,\n errback: errback,\n timeout: null\n };\n this._callbacks[id].timeout = setTimeout(() => {\n delete this._callbacks[id];\n if (isFunction(errback)) {\n errback({error: this._createErrorObject(_errorTimeout)});\n }\n }, this._config.timeout);\n };\n\n _addMessage(message) {\n let id = this._nextMessageId();\n message.id = id;\n if (this._isBatching === true) {\n this._messages.push(message);\n } else {\n this._transportSend([message]);\n }\n return id;\n };\n\n isConnected() {\n return this._isConnected();\n }\n\n connect() {\n this._connect();\n };\n\n disconnect() {\n this._disconnect('client', false);\n };\n\n ping() {\n return this._ping();\n }\n\n startBatching() {\n // start collecting messages without sending them to Centrifuge until flush\n // method called\n this._isBatching = true;\n };\n\n stopBatching() {\n this._isBatching = false;\n this._flush();\n };\n\n startSubscribeBatching() {\n // start collecting private channels to create bulk authentication\n // request to subscribeEndpoint when stopSubscribeBatching will be called\n this._isSubscribeBatching = true;\n };\n\n stopSubscribeBatching() {\n // create request to subscribeEndpoint with collected private channels\n // to ask if this client can subscribe on each channel\n this._isSubscribeBatching = false;\n const authChannels = this._privateChannels;\n this._privateChannels = {};\n\n const channels = [];\n\n for (const channel in authChannels) {\n if (authChannels.hasOwnProperty(channel)) {\n const sub = this._getSub(channel);\n if (!sub) {\n continue;\n }\n channels.push(channel);\n }\n }\n\n if (channels.length === 0) {\n this._debug('no private channels found, no need to make request');\n return;\n }\n\n const data = {\n client: this._clientID,\n channels: channels\n };\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (this._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n this._debug('authorization request failed');\n for (const i in channels) {\n if (channels.hasOwnProperty(i)) {\n const channel = channels[i];\n this._subscribeError(channel, this._createErrorObject('authorization request failed'));\n }\n }\n return;\n }\n\n let channelsData = {};\n if (resp.data.channels) {\n for (const i in resp.data.channels) {\n const channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n // try to send all subscriptions in one request.\n let batch = false;\n\n if (!this._isBatching) {\n this.startBatching();\n batch = true;\n }\n\n for (const i in channels) {\n if (channels.hasOwnProperty(i)) {\n const channel = channels[i];\n const token = channelsData[channel];\n\n if (!token) {\n // subscription:error\n this._subscribeError(channel, this._createErrorObject('permission denied', 103));\n continue;\n } else {\n const msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel,\n token: token\n }\n };\n\n const sub = this._getSub(channel);\n if (sub === null) {\n continue;\n }\n\n const recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n const seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n const gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n const epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n this._call(msg).then(resolveCtx => {\n this._subscribeResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUBSCRIBE, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }\n }\n\n if (batch) {\n this.stopBatching();\n }\n\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n const xhr = this._ajax(\n this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n };\n\n subscribe(channel, events) {\n const currentSub = this._getSub(channel);\n if (currentSub !== null) {\n currentSub._setEvents(events);\n if (currentSub._isUnsubscribed()) {\n currentSub.subscribe();\n }\n return currentSub;\n }\n const sub = new Subscription(this, channel, events);\n this._subs[channel] = sub;\n sub.subscribe();\n return sub;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/centrifuge.js","import EventEmitter from 'events';\n\nimport {\n isFunction\n} from './utils';\n\nconst _STATE_NEW = 0;\nconst _STATE_SUBSCRIBING = 1;\nconst _STATE_SUCCESS = 2;\nconst _STATE_ERROR = 3;\nconst _STATE_UNSUBSCRIBED = 4;\n\nexport default class Subscription extends EventEmitter {\n constructor(centrifuge, channel, events) {\n super();\n this.channel = channel;\n this._centrifuge = centrifuge;\n this._status = _STATE_NEW;\n this._error = null;\n this._isResubscribe = false;\n this._ready = false;\n this._subscriptionPromise = null;\n this._noResubscribe = false;\n this._recoverable = false;\n this._recover = false;\n this._setEvents(events);\n this._initializePromise();\n this._promises = {};\n this.on('error', function (errContext) {\n this._centrifuge._debug('subscription error', errContext);\n });\n }\n\n _initializePromise() {\n // this helps us to wait until subscription will successfully\n // subscribe and call actions such as presence, history etc in\n // synchronous way.\n this._ready = false;\n\n this._subscriptionPromise = new Promise((resolve, reject) => {\n this._resolve = value => {\n this._ready = true;\n resolve(value);\n };\n this._reject = err => {\n this._ready = true;\n reject(err);\n };\n }).then(function () {}, function () {});\n };\n\n _needRecover() {\n return this._recoverable === true && this._recover === true;\n };\n\n _setEvents(events) {\n if (!events) {\n return;\n }\n if (isFunction(events)) {\n // events is just a function to handle publication received from channel.\n this.on('publish', events);\n } else if (Object.prototype.toString.call(events) === Object.prototype.toString.call({})) {\n const knownEvents = ['publish', 'join', 'leave', 'unsubscribe', 'subscribe', 'error'];\n for (let i = 0, l = knownEvents.length; i < l; i++) {\n const ev = knownEvents[i];\n if (ev in events) {\n this.on(ev, events[ev]);\n }\n }\n }\n };\n\n _isNew() {\n return this._status === _STATE_NEW;\n };\n\n _isUnsubscribed() {\n return this._status === _STATE_UNSUBSCRIBED;\n };\n\n _isSubscribing() {\n return this._status === _STATE_SUBSCRIBING;\n };\n\n _isReady() {\n return this._status === _STATE_SUCCESS || this._status === _STATE_ERROR;\n };\n\n _isSuccess() {\n return this._status === _STATE_SUCCESS;\n };\n\n _isError() {\n return this._status === _STATE_ERROR;\n };\n\n _setNew() {\n this._status = _STATE_NEW;\n };\n\n _setSubscribing(isResubscribe) {\n this._isResubscribe = isResubscribe || false;\n if (this._ready === true) {\n // new promise for this subscription\n this._initializePromise();\n }\n this._status = _STATE_SUBSCRIBING;\n };\n\n _setSubscribeSuccess(recovered) {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._status = _STATE_SUCCESS;\n const successContext = this._getSubscribeSuccessContext(recovered);\n\n this._recover = false;\n this.emit('subscribe', successContext);\n this._resolve(successContext);\n for (const to in this._promises) {\n clearTimeout(to);\n this._promises[to].resolve();\n delete this._promises[to];\n }\n };\n\n _setSubscribeError(err) {\n if (this._status === _STATE_ERROR) {\n return;\n }\n this._status = _STATE_ERROR;\n this._error = err;\n const errContext = this._getSubscribeErrorContext();\n this.emit('error', errContext);\n this._reject(errContext);\n for (const to in this._promises) {\n clearTimeout(to);\n this._promises[to].reject(err);\n delete this._promises[to];\n }\n };\n\n _triggerUnsubscribe() {\n this.emit('unsubscribe', {\n channel: this.channel\n });\n };\n\n _setUnsubscribed(noResubscribe) {\n this._centrifuge._clearSubRefreshTimeout(this.channel);\n if (this._status === _STATE_UNSUBSCRIBED) {\n return;\n }\n const needTrigger = this._status === _STATE_SUCCESS;\n this._status = _STATE_UNSUBSCRIBED;\n if (noResubscribe === true) {\n this._recover = false;\n this._noResubscribe = true;\n delete this._centrifuge._lastSeq[this.channel];\n delete this._centrifuge._lastGen[this.channel];\n delete this._centrifuge._lastEpoch[this.channel];\n }\n if (needTrigger) {\n this._triggerUnsubscribe();\n }\n };\n\n _shouldResubscribe() {\n return !this._noResubscribe;\n };\n\n _getSubscribeSuccessContext(recovered) {\n return {\n channel: this.channel,\n isResubscribe: this._isResubscribe,\n recovered: recovered\n };\n };\n\n _getSubscribeErrorContext() {\n const subscribeErrorContext = this._error;\n subscribeErrorContext.channel = this.channel;\n subscribeErrorContext.isResubscribe = this._isResubscribe;\n return subscribeErrorContext;\n };\n\n ready(callback, errback) {\n if (this._ready) {\n if (this._isSuccess()) {\n callback(this._getSubscribeSuccessContext());\n } else {\n errback(this._getSubscribeErrorContext());\n }\n }\n };\n\n subscribe() {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._noResubscribe = false;\n this._centrifuge._subscribe(this);\n };\n\n unsubscribe() {\n this._setUnsubscribed(true);\n this._centrifuge._unsubscribe(this);\n };\n\n _methodCall(message, type) {\n const methodCallPromise = new Promise((resolve, reject) => {\n let subPromise;\n if (this._isSuccess()) {\n subPromise = Promise.resolve();\n } else if (this._isError()) {\n subPromise = Promise.reject(this._error);\n } else {\n subPromise = new Promise((res, rej) => {\n const timeout = setTimeout(function () {\n rej({'code': 0, 'message': 'timeout'});\n }, this._centrifuge._config.timeout);\n this._promises[timeout] = {\n resolve: res,\n reject: rej\n };\n });\n }\n subPromise.then(\n () => {\n return this._centrifuge._call(message).then(\n resolveCtx => {\n resolve(this._centrifuge._decoder.decodeCommandResult(type, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n },\n rejectCtx => {\n reject(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n }\n );\n },\n error => {\n reject(error);\n }\n );\n });\n return methodCallPromise;\n }\n\n publish(data) {\n return this._methodCall({\n method: this._centrifuge._methodType.PUBLISH,\n params: {\n channel: this.channel,\n data: data\n }\n }, this._centrifuge._methodType.PUBLISH);\n };\n\n presence() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE);\n };\n\n presenceStats() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE_STATS,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE_STATS);\n };\n\n history() {\n return this._methodCall({\n method: this._centrifuge._methodType.HISTORY,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.HISTORY);\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/subscription.js","export const JsonMethodType = {\n CONNECT: 0,\n SUBSCRIBE: 1,\n UNSUBSCRIBE: 2,\n PUBLISH: 3,\n PRESENCE: 4,\n PRESENCE_STATS: 5,\n HISTORY: 6,\n PING: 7,\n SEND: 8,\n RPC: 9,\n REFRESH: 10,\n SUB_REFRESH: 11\n};\n\nexport const JsonPushType = {\n PUBLICATION: 0,\n JOIN: 1,\n LEAVE: 2,\n UNSUB: 3,\n MESSAGE: 4\n};\n\nexport class JsonEncoder {\n encodeCommands(commands) {\n const encodedCommands = [];\n for (const i in commands) {\n if (commands.hasOwnProperty(i)) {\n encodedCommands.push(JSON.stringify(commands[i]));\n }\n }\n return encodedCommands.join('\\n');\n }\n}\n\nexport class JsonDecoder {\n decodeReplies(data) {\n const replies = [];\n const encodedReplies = data.split('\\n');\n for (const i in encodedReplies) {\n if (encodedReplies.hasOwnProperty(i)) {\n if (!encodedReplies[i]) {\n continue;\n }\n const reply = JSON.parse(encodedReplies[i]);\n replies.push(reply);\n }\n }\n return replies;\n }\n\n decodeCommandResult(methodType, data) {\n return data;\n }\n\n decodePush(data) {\n return data;\n }\n\n decodePushData(pushType, data) {\n return data;\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/json.js","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar BufferWriter; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n base64 = util.base64,\r\n utf8 = util.utf8;\r\n\r\n/**\r\n * Constructs a new writer operation instance.\r\n * @classdesc Scheduled writer operation.\r\n * @constructor\r\n * @param {function(*, Uint8Array, number)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {*} val Value to write\r\n * @ignore\r\n */\r\nfunction Op(fn, len, val) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(Uint8Array, number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {Writer.Op|undefined}\r\n */\r\n this.next = undefined;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val; // type varies\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state instance.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n\r\n /**\r\n * Next state.\r\n * @type {State|null}\r\n */\r\n this.next = writer.states;\r\n}\r\n\r\n/**\r\n * Constructs a new writer instance.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * Linked forked states.\r\n * @type {Object|null}\r\n */\r\n this.states = null;\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling operations with already prepared values.\r\n}\r\n\r\n/**\r\n * Creates a new writer.\r\n * @function\r\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\r\n */\r\nWriter.create = util.Buffer\r\n ? function create_buffer_setup() {\r\n return (Writer.create = function create_buffer() {\r\n return new BufferWriter();\r\n })();\r\n }\r\n /* istanbul ignore next */\r\n : function create_array() {\r\n return new Writer();\r\n };\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nWriter.alloc = function alloc(size) {\r\n return new util.Array(size);\r\n};\r\n\r\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\r\n/* istanbul ignore else */\r\nif (util.Array !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n * @private\r\n */\r\nWriter.prototype._push = function push(fn, len, val) {\r\n this.tail = this.tail.next = new Op(fn, len, val);\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(val, buf, pos) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\nfunction writeVarint32(val, buf, pos) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Constructs a new varint writer operation instance.\r\n * @classdesc Scheduled varint writer operation.\r\n * @extends Op\r\n * @constructor\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @ignore\r\n */\r\nfunction VarintOp(len, val) {\r\n this.len = len;\r\n this.next = undefined;\r\n this.val = val;\r\n}\r\n\r\nVarintOp.prototype = Object.create(Op.prototype);\r\nVarintOp.prototype.fn = writeVarint32;\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.uint32 = function write_uint32(value) {\r\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\r\n // uint32 is by far the most frequently used operation and benefits significantly from this.\r\n this.len += (this.tail = this.tail.next = new VarintOp(\r\n (value = value >>> 0)\r\n < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5,\r\n value)).len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sint32 = function write_sint32(value) {\r\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\r\n};\r\n\r\nfunction writeVarint64(val, buf, pos) {\r\n while (val.hi) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n while (val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = val.lo >>> 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.int64 = Writer.prototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sint64 = function write_sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bool = function write_bool(value) {\r\n return this._push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fixed32 = function write_fixed32(value) {\r\n return this._push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as fixed 32 bits.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as fixed 64 bits.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.float = function write_float(value) {\r\n return this._push(util.float.writeFloatLE, 4, value);\r\n};\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.double = function write_double(value) {\r\n return this._push(util.float.writeDoubleLE, 8, value);\r\n};\r\n\r\nvar writeBytes = util.Array.prototype.set\r\n ? function writeBytes_set(val, buf, pos) {\r\n buf.set(val, pos); // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytes_for(val, buf, pos) {\r\n for (var i = 0; i < val.length; ++i)\r\n buf[pos + i] = val[i];\r\n };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (!len)\r\n return this._push(writeByte, 1, 0);\r\n if (util.isString(value)) {\r\n var buf = Writer.alloc(len = base64.length(value));\r\n base64.decode(value, buf, 0);\r\n value = buf;\r\n }\r\n return this.uint32(len)._push(writeBytes, len, value);\r\n};\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.string = function write_string(value) {\r\n var len = utf8.length(value);\r\n return len\r\n ? this.uint32(len)._push(utf8.write, len, value)\r\n : this._push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fork = function fork() {\r\n this.states = new State(this);\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.reset = function reset() {\r\n if (this.states) {\r\n this.head = this.states.head;\r\n this.tail = this.states.tail;\r\n this.len = this.states.len;\r\n this.states = this.states.next;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset().uint32(len);\r\n if (len) {\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriter.prototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = this.constructor.alloc(this.len),\r\n pos = 0;\r\n while (head) {\r\n head.fn(head.val, buf, pos);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n // this.head = this.tail = null;\r\n return buf;\r\n};\r\n\r\nWriter._configure = function(BufferWriter_) {\r\n BufferWriter = BufferWriter_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/writer.js\n// module id = 13\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar BufferReader; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n utf8 = util.utf8;\r\n\r\n/* istanbul ignore next */\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader instance using the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n\r\n /**\r\n * Read buffer.\r\n * @type {Uint8Array}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\nvar create_array = typeof Uint8Array !== \"undefined\"\r\n ? function create_typed_array(buffer) {\r\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n if (Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n };\r\n\r\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array|Buffer} buffer Buffer to read from\r\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n * @throws {Error} If `buffer` is not a valid buffer\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n return (Reader.create = function create_buffer(buffer) {\r\n return util.Buffer.isBuffer(buffer)\r\n ? new BufferReader(buffer)\r\n /* istanbul ignore next */\r\n : create_array(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : create_array;\r\n\r\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.uint32 = (function read_uint32_setup() {\r\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\r\n return function read_uint32() {\r\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n\r\n /* istanbul ignore if */\r\n if ((this.pos += 5) > this.len) {\r\n this.pos = this.len;\r\n throw indexOutOfRange(this, 10);\r\n }\r\n return value;\r\n };\r\n})();\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.int32 = function read_int32() {\r\n return this.uint32() | 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sint32 = function read_sint32() {\r\n var value = this.uint32();\r\n return value >>> 1 ^ -(value & 1) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readLongVarint() {\r\n // tends to deopt with local vars for octet etc.\r\n var bits = new LongBits(0, 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (; i < 4; ++i) {\r\n // 1st..4th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 5th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n i = 0;\r\n } else {\r\n for (; i < 3; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 1st..3th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 4th\r\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\r\n return bits;\r\n }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (; i < 5; ++i) {\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n } else {\r\n for (; i < 5; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n }\r\n /* istanbul ignore next */\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @name Reader#int64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @name Reader#uint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @name Reader#sint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReader.prototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\r\n return (buf[end - 4]\r\n | buf[end - 3] << 8\r\n | buf[end - 2] << 16\r\n | buf[end - 1] << 24) >>> 0;\r\n}\r\n\r\n/**\r\n * Reads fixed 32 bits as an unsigned 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a signed 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sfixed32 = function read_sfixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @name Reader#fixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @name Reader#sfixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.float = function read_float() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readFloatLE(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.double = function read_double() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readDoubleLE(this.buf, this.pos);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReader.prototype.bytes = function read_bytes() {\r\n var length = this.uint32(),\r\n start = this.pos,\r\n end = this.pos + length;\r\n\r\n /* istanbul ignore if */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\r\n if (Array.isArray(this.buf)) // plain array\r\n return this.buf.slice(start, end);\r\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n ? new this.buf.constructor(0)\r\n : this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReader.prototype.string = function read_string() {\r\n var bytes = this.bytes();\r\n return utf8.read(bytes, 0, bytes.length);\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore if */\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n } else {\r\n do {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n do { // eslint-disable-line no-constant-condition\r\n if ((wireType = this.uint32() & 7) === 4)\r\n break;\r\n this.skipType(wireType);\r\n } while (true);\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\r\n }\r\n return this;\r\n};\r\n\r\nReader._configure = function(BufferReader_) {\r\n BufferReader = BufferReader_;\r\n\r\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\r\n util.merge(Reader.prototype, {\r\n\r\n int64: function read_int64() {\r\n return readLongVarint.call(this)[fn](false);\r\n },\r\n\r\n uint64: function read_uint64() {\r\n return readLongVarint.call(this)[fn](true);\r\n },\r\n\r\n sint64: function read_sint64() {\r\n return readLongVarint.call(this).zzDecode()[fn](false);\r\n },\r\n\r\n fixed64: function read_fixed64() {\r\n return readFixed64.call(this)[fn](true);\r\n },\r\n\r\n sfixed64: function read_sfixed64() {\r\n return readFixed64.call(this)[fn](false);\r\n }\r\n\r\n });\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/reader.js\n// module id = 14\n// module chunks = 0","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((OneOf.prototype = Object.create(ReflectionObject.prototype)).constructor = OneOf).className = \"OneOf\";\r\n\r\nvar Field = require(\"./field\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new oneof instance.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]|Object.} [fieldNames] Field names\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction OneOf(name, fieldNames, options, comment) {\r\n if (!Array.isArray(fieldNames)) {\r\n options = fieldNames;\r\n fieldNames = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n\r\n /* istanbul ignore if */\r\n if (!(fieldNames === undefined || Array.isArray(fieldNames)))\r\n throw TypeError(\"fieldNames must be an Array\");\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {string[]}\r\n */\r\n this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n /**\r\n * Fields that belong to this oneof as an array for iteration.\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n this.fieldsArray = []; // declared readonly for conformance, possibly not yet added to parent\r\n\r\n /**\r\n * Comment for this field.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Oneof descriptor.\r\n * @interface IOneOf\r\n * @property {Array.} oneof Oneof field names\r\n * @property {Object.} [options] Oneof options\r\n */\r\n\r\n/**\r\n * Constructs a oneof from a oneof descriptor.\r\n * @param {string} name Oneof name\r\n * @param {IOneOf} json Oneof descriptor\r\n * @returns {OneOf} Created oneof\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nOneOf.fromJSON = function fromJSON(name, json) {\r\n return new OneOf(name, json.oneof, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this oneof to a oneof descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IOneOf} Oneof descriptor\r\n */\r\nOneOf.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"oneof\" , this.oneof,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds the fields of the specified oneof to the parent if not already done so.\r\n * @param {OneOf} oneof The oneof\r\n * @returns {undefined}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction addFieldsToParent(oneof) {\r\n if (oneof.parent)\r\n for (var i = 0; i < oneof.fieldsArray.length; ++i)\r\n if (!oneof.fieldsArray[i].parent)\r\n oneof.parent.add(oneof.fieldsArray[i]);\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof and removes it from its current parent, if any.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOf.prototype.add = function add(field) {\r\n\r\n /* istanbul ignore if */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field must be a Field\");\r\n\r\n if (field.parent && field.parent !== this.parent)\r\n field.parent.remove(field);\r\n this.oneof.push(field.name);\r\n this.fieldsArray.push(field);\r\n field.partOf = this; // field.parent remains null\r\n addFieldsToParent(this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a field from this oneof and puts it back to the oneof's parent.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOf.prototype.remove = function remove(field) {\r\n\r\n /* istanbul ignore if */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field must be a Field\");\r\n\r\n var index = this.fieldsArray.indexOf(field);\r\n\r\n /* istanbul ignore if */\r\n if (index < 0)\r\n throw Error(field + \" is not a member of \" + this);\r\n\r\n this.fieldsArray.splice(index, 1);\r\n index = this.oneof.indexOf(field.name);\r\n\r\n /* istanbul ignore else */\r\n if (index > -1) // theoretical\r\n this.oneof.splice(index, 1);\r\n\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOf.prototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n var self = this;\r\n // Collect present fields\r\n for (var i = 0; i < this.oneof.length; ++i) {\r\n var field = parent.get(this.oneof[i]);\r\n if (field && !field.partOf) {\r\n field.partOf = self;\r\n self.fieldsArray.push(field);\r\n }\r\n }\r\n // Add not yet present fields\r\n addFieldsToParent(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOf.prototype.onRemove = function onRemove(parent) {\r\n for (var i = 0, field; i < this.fieldsArray.length; ++i)\r\n if ((field = this.fieldsArray[i]).parent)\r\n field.parent.remove(field);\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link OneOf.d} (TypeScript).\r\n * @typedef OneOfDecorator\r\n * @type {function}\r\n * @param {Object} prototype Target prototype\r\n * @param {string} oneofName OneOf name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * OneOf decorator (TypeScript).\r\n * @function\r\n * @param {...string} fieldNames Field names\r\n * @returns {OneOfDecorator} Decorator function\r\n * @template T extends string\r\n */\r\nOneOf.d = function decorateOneOf() {\r\n var fieldNames = new Array(arguments.length),\r\n index = 0;\r\n while (index < arguments.length)\r\n fieldNames[index] = arguments[index++];\r\n return function oneOfDecorator(prototype, oneofName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new OneOf(oneofName, fieldNames));\r\n Object.defineProperty(prototype, oneofName, {\r\n get: util.oneOfGetter(fieldNames),\r\n set: util.oneOfSetter(fieldNames)\r\n });\r\n };\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/oneof.js\n// module id = 15\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Message;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\n/**\r\n * Constructs a new message instance.\r\n * @classdesc Abstract runtime message.\r\n * @constructor\r\n * @param {Properties} [properties] Properties to set\r\n * @template T extends object\r\n */\r\nfunction Message(properties) {\r\n // not used internally\r\n if (properties)\r\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\r\n this[keys[i]] = properties[keys[i]];\r\n}\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/*eslint-disable valid-jsdoc*/\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message} Message instance\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.create = function create(properties) {\r\n return this.$type.create(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {T|Object.} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.encode = function encode(message, writer) {\r\n return this.$type.encode(message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @param {T|Object.} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Message.decode\r\n * @function\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\r\n * @returns {T} Decoded message\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.decode = function decode(reader) {\r\n return this.$type.decode(reader);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Message.decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\r\n * @returns {T} Decoded message\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(reader) {\r\n return this.$type.decodeDelimited(reader);\r\n};\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Message.verify\r\n * @function\r\n * @param {Object.} message Plain object to verify\r\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\r\n */\r\nMessage.verify = function verify(message) {\r\n return this.$type.verify(message);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.} object Plain object\r\n * @returns {T} Message instance\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.fromObject = function fromObject(object) {\r\n return this.$type.fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {T} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.toObject = function toObject(message, options) {\r\n return this.$type.toObject(message, options);\r\n};\r\n\r\n/**\r\n * Converts this message to JSON.\r\n * @returns {Object.} JSON object\r\n */\r\nMessage.prototype.toJSON = function toJSON() {\r\n return this.$type.toObject(this, util.toJSONOptions);\r\n};\r\n\r\n/*eslint-enable valid-jsdoc*/\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/message.js\n// module id = 16\n// module chunks = 0","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/aspromise/index.js\n// module id = 17\n// module chunks = 0","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/inquire/index.js\n// module id = 18\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * Streaming RPC helpers.\r\n * @namespace\r\n */\r\nvar rpc = exports;\r\n\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @type {function}\r\n * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCImplCallback} callback Callback function\r\n * @returns {undefined}\r\n * @example\r\n * function rpcImpl(method, requestData, callback) {\r\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\r\n * throw Error(\"no such method\");\r\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\r\n * callback(err, responseData);\r\n * });\r\n * }\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCImplCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\nrpc.Service = require(\"./rpc/service\");\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/rpc.js\n// module id = 19\n// module chunks = 0","\"use strict\";\r\nmodule.exports = {};\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available accross modules.\r\n * @name roots\r\n * @type {Object.}\r\n * @example\r\n * // pbjs -r myroot -o compiled.js ...\r\n *\r\n * // in another module:\r\n * require(\"./compiled.js\");\r\n *\r\n * // in any subsequent module:\r\n * var root = protobuf.roots[\"myroot\"];\r\n */\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/roots.js\n// module id = 20\n// module chunks = 0","\"use strict\";\r\nmodule.exports = encoder;\r\n\r\nvar Enum = require(\"./enum\"),\r\n types = require(\"./types\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Generates a partial message type encoder.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genTypePartial(gen, field, fieldIndex, ref) {\r\n return field.resolvedType.group\r\n ? gen(\"types[%i].encode(%s,w.uint32(%i)).uint32(%i)\", fieldIndex, ref, (field.id << 3 | 3) >>> 0, (field.id << 3 | 4) >>> 0)\r\n : gen(\"types[%i].encode(%s,w.uint32(%i).fork()).ldelim()\", fieldIndex, ref, (field.id << 3 | 2) >>> 0);\r\n}\r\n\r\n/**\r\n * Generates an encoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction encoder(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var gen = util.codegen([\"m\", \"w\"], mtype.name + \"$encode\")\r\n (\"if(!w)\")\r\n (\"w=Writer.create()\");\r\n\r\n var i, ref;\r\n\r\n // \"when a message is serialized its known fields should be written sequentially by field number\"\r\n var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById);\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n index = mtype._fieldsArray.indexOf(field),\r\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\r\n wireType = types.basic[type];\r\n ref = \"m\" + util.safeProp(field.name);\r\n\r\n // Map fields\r\n if (field.map) {\r\n gen\r\n (\"if(%s!=null&&m.hasOwnProperty(%j)){\", ref, field.name) // !== undefined && !== null\r\n (\"for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[field.keyType], field.keyType);\r\n if (wireType === undefined) gen\r\n (\"types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", index, ref); // can't be groups\r\n else gen\r\n (\".uint32(%i).%s(%s[ks[i]]).ldelim()\", 16 | wireType, type, ref);\r\n gen\r\n (\"}\")\r\n (\"}\");\r\n\r\n // Repeated fields\r\n } else if (field.repeated) { gen\r\n (\"if(%s!=null&&%s.length){\", ref, ref); // !== undefined && !== null\r\n\r\n // Packed repeated\r\n if (field.packed && types.packed[type] !== undefined) { gen\r\n\r\n (\"w.uint32(%i).fork()\", (field.id << 3 | 2) >>> 0)\r\n (\"for(var i=0;i<%s.length;++i)\", ref)\r\n (\"w.%s(%s[i])\", type, ref)\r\n (\"w.ldelim()\");\r\n\r\n // Non-packed\r\n } else { gen\r\n\r\n (\"for(var i=0;i<%s.length;++i)\", ref);\r\n if (wireType === undefined)\r\n genTypePartial(gen, field, index, ref + \"[i]\");\r\n else gen\r\n (\"w.uint32(%i).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n } gen\r\n (\"}\");\r\n\r\n // Non-repeated\r\n } else {\r\n if (field.optional) gen\r\n (\"if(%s!=null&&m.hasOwnProperty(%j))\", ref, field.name); // !== undefined && !== null\r\n\r\n if (wireType === undefined)\r\n genTypePartial(gen, field, index, ref);\r\n else gen\r\n (\"w.uint32(%i).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n }\r\n\r\n return gen\r\n (\"return w\");\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/encoder.js\n// module id = 21\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Type;\r\n\r\n// extends Namespace\r\nvar Namespace = require(\"./namespace\");\r\n((Type.prototype = Object.create(Namespace.prototype)).constructor = Type).className = \"Type\";\r\n\r\nvar Enum = require(\"./enum\"),\r\n OneOf = require(\"./oneof\"),\r\n Field = require(\"./field\"),\r\n MapField = require(\"./mapfield\"),\r\n Service = require(\"./service\"),\r\n Message = require(\"./message\"),\r\n Reader = require(\"./reader\"),\r\n Writer = require(\"./writer\"),\r\n util = require(\"./util\"),\r\n encoder = require(\"./encoder\"),\r\n decoder = require(\"./decoder\"),\r\n verifier = require(\"./verifier\"),\r\n converter = require(\"./converter\"),\r\n wrappers = require(\"./wrappers\");\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Message fields.\r\n * @type {Object.}\r\n */\r\n this.fields = {}; // toJSON, marker\r\n\r\n /**\r\n * Oneofs declared within this namespace, if any.\r\n * @type {Object.}\r\n */\r\n this.oneofs = undefined; // toJSON\r\n\r\n /**\r\n * Extension ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.extensions = undefined; // toJSON\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {Array.}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n /*?\r\n * Whether this type is a legacy group.\r\n * @type {boolean|undefined}\r\n */\r\n this.group = undefined; // toJSON\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {Object.|null}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields as an array.\r\n * @type {Field[]|null}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {OneOf[]|null}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {Constructor<{}>}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nObject.defineProperties(Type.prototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: function() {\r\n\r\n /* istanbul ignore if */\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n\r\n this._fieldsById = {};\r\n for (var names = Object.keys(this.fields), i = 0; i < names.length; ++i) {\r\n var field = this.fields[names[i]],\r\n id = field.id;\r\n\r\n /* istanbul ignore if */\r\n if (this._fieldsById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n\r\n this._fieldsById[id] = field;\r\n }\r\n return this._fieldsById;\r\n }\r\n },\r\n\r\n /**\r\n * Fields of this message as an array for iteration.\r\n * @name Type#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: function() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Oneofs of this message as an array for iteration.\r\n * @name Type#oneofsArray\r\n * @type {OneOf[]}\r\n * @readonly\r\n */\r\n oneofsArray: {\r\n get: function() {\r\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n }\r\n },\r\n\r\n /**\r\n * The registered constructor, if any registered, otherwise a generic constructor.\r\n * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor.\r\n * @name Type#ctor\r\n * @type {Constructor<{}>}\r\n */\r\n ctor: {\r\n get: function() {\r\n return this._ctor || (this.ctor = Type.generateConstructor(this)());\r\n },\r\n set: function(ctor) {\r\n\r\n // Ensure proper prototype\r\n var prototype = ctor.prototype;\r\n if (!(prototype instanceof Message)) {\r\n (ctor.prototype = new Message()).constructor = ctor;\r\n util.merge(ctor.prototype, prototype);\r\n }\r\n\r\n // Classes and messages reference their reflected type\r\n ctor.$type = ctor.prototype.$type = this;\r\n\r\n // Mix in static methods\r\n util.merge(ctor, Message, true);\r\n\r\n this._ctor = ctor;\r\n\r\n // Messages have non-enumerable default values on their prototype\r\n var i = 0;\r\n for (; i < /* initializes */ this.fieldsArray.length; ++i)\r\n this._fieldsArray[i].resolve(); // ensures a proper value\r\n\r\n // Messages have non-enumerable getters and setters for each virtual oneof field\r\n var ctorProperties = {};\r\n for (i = 0; i < /* initializes */ this.oneofsArray.length; ++i)\r\n ctorProperties[this._oneofsArray[i].resolve().name] = {\r\n get: util.oneOfGetter(this._oneofsArray[i].oneof),\r\n set: util.oneOfSetter(this._oneofsArray[i].oneof)\r\n };\r\n if (i)\r\n Object.defineProperties(ctor.prototype, ctorProperties);\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Generates a constructor function for the specified type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nType.generateConstructor = function generateConstructor(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var gen = util.codegen([\"p\"], mtype.name);\r\n // explicitly initialize mutable object/array fields so that these aren't just inherited from the prototype\r\n for (var i = 0, field; i < mtype.fieldsArray.length; ++i)\r\n if ((field = mtype._fieldsArray[i]).map) gen\r\n (\"this%s={}\", util.safeProp(field.name));\r\n else if (field.repeated) gen\r\n (\"this%s=[]\", util.safeProp(field.name));\r\n return gen\r\n (\"if(p)for(var ks=Object.keys(p),i=0;i} [oneofs] Oneof descriptors\r\n * @property {Object.} fields Field descriptors\r\n * @property {number[][]} [extensions] Extension ranges\r\n * @property {number[][]} [reserved] Reserved ranges\r\n * @property {boolean} [group=false] Whether a legacy group or not\r\n */\r\n\r\n/**\r\n * Creates a message type from a message type descriptor.\r\n * @param {string} name Message name\r\n * @param {IType} json Message type descriptor\r\n * @returns {Type} Created message type\r\n */\r\nType.fromJSON = function fromJSON(name, json) {\r\n var type = new Type(name, json.options);\r\n type.extensions = json.extensions;\r\n type.reserved = json.reserved;\r\n var names = Object.keys(json.fields),\r\n i = 0;\r\n for (; i < names.length; ++i)\r\n type.add(\r\n ( typeof json.fields[names[i]].keyType !== \"undefined\"\r\n ? MapField.fromJSON\r\n : Field.fromJSON )(names[i], json.fields[names[i]])\r\n );\r\n if (json.oneofs)\r\n for (names = Object.keys(json.oneofs), i = 0; i < names.length; ++i)\r\n type.add(OneOf.fromJSON(names[i], json.oneofs[names[i]]));\r\n if (json.nested)\r\n for (names = Object.keys(json.nested), i = 0; i < names.length; ++i) {\r\n var nested = json.nested[names[i]];\r\n type.add( // most to least likely\r\n ( nested.id !== undefined\r\n ? Field.fromJSON\r\n : nested.fields !== undefined\r\n ? Type.fromJSON\r\n : nested.values !== undefined\r\n ? Enum.fromJSON\r\n : nested.methods !== undefined\r\n ? Service.fromJSON\r\n : Namespace.fromJSON )(names[i], nested)\r\n );\r\n }\r\n if (json.extensions && json.extensions.length)\r\n type.extensions = json.extensions;\r\n if (json.reserved && json.reserved.length)\r\n type.reserved = json.reserved;\r\n if (json.group)\r\n type.group = true;\r\n if (json.comment)\r\n type.comment = json.comment;\r\n return type;\r\n};\r\n\r\n/**\r\n * Converts this message type to a message type descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IType} Message type descriptor\r\n */\r\nType.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , inherited && inherited.options || undefined,\r\n \"oneofs\" , Namespace.arrayToJSON(this.oneofsArray, toJSONOptions),\r\n \"fields\" , Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; }), toJSONOptions) || {},\r\n \"extensions\" , this.extensions && this.extensions.length ? this.extensions : undefined,\r\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\r\n \"group\" , this.group || undefined,\r\n \"nested\" , inherited && inherited.nested || undefined,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nType.prototype.resolveAll = function resolveAll() {\r\n var fields = this.fieldsArray, i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.oneofsArray; i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nType.prototype.get = function get(name) {\r\n return this.fields[name]\r\n || this.oneofs && this.oneofs[name]\r\n || this.nested && this.nested[name]\r\n || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this type.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\r\n */\r\nType.prototype.add = function add(object) {\r\n\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n\r\n if (object instanceof Field && object.extend === undefined) {\r\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\r\n // The root object takes care of adding distinct sister-fields to the respective extended\r\n // type instead.\r\n\r\n // avoids calling the getter if not absolutely necessary because it's called quite frequently\r\n if (this._fieldsById ? /* istanbul ignore next */ this._fieldsById[object.id] : this.fieldsById[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\r\n if (this.isReservedId(object.id))\r\n throw Error(\"id \" + object.id + \" is reserved in \" + this);\r\n if (this.isReservedName(object.name))\r\n throw Error(\"name '\" + object.name + \"' is reserved in \" + this);\r\n\r\n if (object.parent)\r\n object.parent.remove(object);\r\n this.fields[object.name] = object;\r\n object.message = this;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n if (!this.oneofs)\r\n this.oneofs = {};\r\n this.oneofs[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this type.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this type\r\n */\r\nType.prototype.remove = function remove(object) {\r\n if (object instanceof Field && object.extend === undefined) {\r\n // See Type#add for the reason why extension fields are excluded here.\r\n\r\n /* istanbul ignore if */\r\n if (!this.fields || this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.fields[object.name];\r\n object.parent = null;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n\r\n /* istanbul ignore if */\r\n if (!this.oneofs || this.oneofs[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.oneofs[object.name];\r\n object.parent = null;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nType.prototype.isReservedId = function isReservedId(id) {\r\n return Namespace.isReservedId(this.reserved, id);\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nType.prototype.isReservedName = function isReservedName(name) {\r\n return Namespace.isReservedName(this.reserved, name);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message<{}>} Message instance\r\n */\r\nType.prototype.create = function create(properties) {\r\n return new this.ctor(properties);\r\n};\r\n\r\n/**\r\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\r\n * @returns {Type} `this`\r\n */\r\nType.prototype.setup = function setup() {\r\n // Sets up everything at once so that the prototype chain does not have to be re-evaluated\r\n // multiple times (V8, soft-deopt prototype-check).\r\n\r\n var fullName = this.fullName,\r\n types = [];\r\n for (var i = 0; i < /* initializes */ this.fieldsArray.length; ++i)\r\n types.push(this._fieldsArray[i].resolve().resolvedType);\r\n\r\n // Replace setup methods with type-specific generated functions\r\n this.encode = encoder(this)({\r\n Writer : Writer,\r\n types : types,\r\n util : util\r\n });\r\n this.decode = decoder(this)({\r\n Reader : Reader,\r\n types : types,\r\n util : util\r\n });\r\n this.verify = verifier(this)({\r\n types : types,\r\n util : util\r\n });\r\n this.fromObject = converter.fromObject(this)({\r\n types : types,\r\n util : util\r\n });\r\n this.toObject = converter.toObject(this)({\r\n types : types,\r\n util : util\r\n });\r\n\r\n // Inject custom wrappers for common types\r\n var wrapper = wrappers[fullName];\r\n if (wrapper) {\r\n var originalThis = Object.create(this);\r\n // if (wrapper.fromObject) {\r\n originalThis.fromObject = this.fromObject;\r\n this.fromObject = wrapper.fromObject.bind(originalThis);\r\n // }\r\n // if (wrapper.toObject) {\r\n originalThis.toObject = this.toObject;\r\n this.toObject = wrapper.toObject.bind(originalThis);\r\n // }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages.\r\n * @param {Message<{}>|Object.} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nType.prototype.encode = function encode_setup(message, writer) {\r\n return this.setup().encode(message, writer); // overrides this method\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages.\r\n * @param {Message<{}>|Object.} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nType.prototype.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim();\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Message<{}>} Decoded message\r\n * @throws {Error} If the payload is not a reader or valid buffer\r\n * @throws {util.ProtocolError<{}>} If required fields are missing\r\n */\r\nType.prototype.decode = function decode_setup(reader, length) {\r\n return this.setup().decode(reader, length); // overrides this method\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\r\n * @returns {Message<{}>} Decoded message\r\n * @throws {Error} If the payload is not a reader or valid buffer\r\n * @throws {util.ProtocolError} If required fields are missing\r\n */\r\nType.prototype.decodeDelimited = function decodeDelimited(reader) {\r\n if (!(reader instanceof Reader))\r\n reader = Reader.create(reader);\r\n return this.decode(reader, reader.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that field values are valid and that required fields are present.\r\n * @param {Object.} message Plain object to verify\r\n * @returns {null|string} `null` if valid, otherwise the reason why it is not\r\n */\r\nType.prototype.verify = function verify_setup(message) {\r\n return this.setup().verify(message); // overrides this method\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.} object Plain object to convert\r\n * @returns {Message<{}>} Message instance\r\n */\r\nType.prototype.fromObject = function fromObject(object) {\r\n return this.setup().fromObject(object);\r\n};\r\n\r\n/**\r\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\r\n * @interface IConversionOptions\r\n * @property {Function} [longs] Long conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\r\n * @property {Function} [enums] Enum value conversion type.\r\n * Only valid value is `String` (the global type).\r\n * Defaults to copy the present value, which is the numeric id.\r\n * @property {Function} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\r\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\r\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\r\n * @property {boolean} [oneofs=false] Includes virtual oneof properties set to the present field's name, if any\r\n * @property {boolean} [json=false] Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message<{}>} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n */\r\nType.prototype.toObject = function toObject(message, options) {\r\n return this.setup().toObject(message, options);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link Type.d} (TypeScript).\r\n * @typedef TypeDecorator\r\n * @type {function}\r\n * @param {Constructor} target Target constructor\r\n * @returns {undefined}\r\n * @template T extends Message\r\n */\r\n\r\n/**\r\n * Type decorator (TypeScript).\r\n * @param {string} [typeName] Type name, defaults to the constructor's name\r\n * @returns {TypeDecorator} Decorator function\r\n * @template T extends Message\r\n */\r\nType.d = function decorateType(typeName) {\r\n return function typeDecorator(target) {\r\n util.decorateType(target, typeName);\r\n };\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/type.js\n// module id = 22\n// module chunks = 0","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\n// extends Field\r\nvar Field = require(\"./field\");\r\n((MapField.prototype = Object.create(Field.prototype)).constructor = MapField).className = \"MapField\";\r\n\r\nvar types = require(\"./types\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new map field instance.\r\n * @classdesc Reflected map field.\r\n * @extends FieldBase\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} keyType Key type\r\n * @param {string} type Value type\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction MapField(name, id, keyType, type, options, comment) {\r\n Field.call(this, name, id, type, undefined, undefined, options, comment);\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(keyType))\r\n throw TypeError(\"keyType must be a string\");\r\n\r\n /**\r\n * Key type.\r\n * @type {string}\r\n */\r\n this.keyType = keyType; // toJSON, marker\r\n\r\n /**\r\n * Resolved key type if not a basic type.\r\n * @type {ReflectionObject|null}\r\n */\r\n this.resolvedKeyType = null;\r\n\r\n // Overrides Field#map\r\n this.map = true;\r\n}\r\n\r\n/**\r\n * Map field descriptor.\r\n * @interface IMapField\r\n * @extends {IField}\r\n * @property {string} keyType Key type\r\n */\r\n\r\n/**\r\n * Extension map field descriptor.\r\n * @interface IExtensionMapField\r\n * @extends IMapField\r\n * @property {string} extend Extended type\r\n */\r\n\r\n/**\r\n * Constructs a map field from a map field descriptor.\r\n * @param {string} name Field name\r\n * @param {IMapField} json Map field descriptor\r\n * @returns {MapField} Created map field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMapField.fromJSON = function fromJSON(name, json) {\r\n return new MapField(name, json.id, json.keyType, json.type, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this map field to a map field descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IMapField} Map field descriptor\r\n */\r\nMapField.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"keyType\" , this.keyType,\r\n \"type\" , this.type,\r\n \"id\" , this.id,\r\n \"extend\" , this.extend,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapField.prototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n // Besides a value type, map fields have a key type that may be \"any scalar type except for floating point types and bytes\"\r\n if (types.mapKey[this.keyType] === undefined)\r\n throw Error(\"invalid key type: \" + this.keyType);\r\n\r\n return Field.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Map field decorator (TypeScript).\r\n * @name MapField.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"} fieldKeyType Field key type\r\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"|\"bytes\"|Object|Constructor<{}>} fieldValueType Field value type\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> }\r\n */\r\nMapField.d = function decorateMapField(fieldId, fieldKeyType, fieldValueType) {\r\n\r\n // submessage value: decorate the submessage and use its name as the type\r\n if (typeof fieldValueType === \"function\")\r\n fieldValueType = util.decorateType(fieldValueType).name;\r\n\r\n // enum reference value: create a reflected copy of the enum and keep reuseing it\r\n else if (fieldValueType && typeof fieldValueType === \"object\")\r\n fieldValueType = util.decorateEnum(fieldValueType).name;\r\n\r\n return function mapFieldDecorator(prototype, fieldName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new MapField(fieldName, fieldId, fieldKeyType, fieldValueType));\r\n };\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/mapfield.js\n// module id = 23\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Service;\r\n\r\n// extends Namespace\r\nvar Namespace = require(\"./namespace\");\r\n((Service.prototype = Object.create(Namespace.prototype)).constructor = Service).className = \"Service\";\r\n\r\nvar Method = require(\"./method\"),\r\n util = require(\"./util\"),\r\n rpc = require(\"./rpc\");\r\n\r\n/**\r\n * Constructs a new service instance.\r\n * @classdesc Reflected service.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Service methods.\r\n * @type {Object.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {Method[]|null}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\n/**\r\n * Service descriptor.\r\n * @interface IService\r\n * @extends INamespace\r\n * @property {Object.} methods Method descriptors\r\n */\r\n\r\n/**\r\n * Constructs a service from a service descriptor.\r\n * @param {string} name Service name\r\n * @param {IService} json Service descriptor\r\n * @returns {Service} Created service\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nService.fromJSON = function fromJSON(name, json) {\r\n var service = new Service(name, json.options);\r\n /* istanbul ignore else */\r\n if (json.methods)\r\n for (var names = Object.keys(json.methods), i = 0; i < names.length; ++i)\r\n service.add(Method.fromJSON(names[i], json.methods[names[i]]));\r\n if (json.nested)\r\n service.addJSON(json.nested);\r\n service.comment = json.comment;\r\n return service;\r\n};\r\n\r\n/**\r\n * Converts this service to a service descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IService} Service descriptor\r\n */\r\nService.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , inherited && inherited.options || undefined,\r\n \"methods\" , Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ {},\r\n \"nested\" , inherited && inherited.nested || undefined,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(Service.prototype, \"methodsArray\", {\r\n get: function() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n});\r\n\r\nfunction clearCache(service) {\r\n service._methodsArray = null;\r\n return service;\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.get = function get(name) {\r\n return this.methods[name]\r\n || Namespace.prototype.get.call(this, name);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.resolveAll = function resolveAll() {\r\n var methods = this.methodsArray;\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return Namespace.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.add = function add(object) {\r\n\r\n /* istanbul ignore if */\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n\r\n if (object instanceof Method) {\r\n this.methods[object.name] = object;\r\n object.parent = this;\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n\r\n /* istanbul ignore if */\r\n if (this.methods[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.methods[object.name];\r\n object.parent = null;\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n * @returns {rpc.Service} RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nService.prototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl, requestDelimited, responseDelimited);\r\n for (var i = 0, method; i < /* initializes */ this.methodsArray.length; ++i) {\r\n var methodName = util.lcFirst((method = this._methodsArray[i]).resolve().name).replace(/[^$\\w_]/g, \"\");\r\n rpcService[methodName] = util.codegen([\"r\",\"c\"], util.isReserved(methodName) ? methodName + \"_\" : methodName)(\"return this.rpcCall(m,q,s,r,c)\")({\r\n m: method,\r\n q: method.resolvedRequestType.ctor,\r\n s: method.resolvedResponseType.ctor\r\n });\r\n }\r\n return rpcService;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/service.js\n// module id = 24\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Method;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = \"Method\";\r\n\r\nvar util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new service method instance.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean|Object.} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.} [responseStream] Whether the response is streamed\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] The comment for this method\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options, comment) {\r\n\r\n /* istanbul ignore next */\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n\r\n /* istanbul ignore if */\r\n if (!(type === undefined || util.isString(type)))\r\n throw TypeError(\"type must be a string\");\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(requestType))\r\n throw TypeError(\"requestType must be a string\");\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(responseType))\r\n throw TypeError(\"responseType must be a string\");\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Method type.\r\n * @type {string}\r\n */\r\n this.type = type || \"rpc\"; // toJSON\r\n\r\n /**\r\n * Request type.\r\n * @type {string}\r\n */\r\n this.requestType = requestType; // toJSON, marker\r\n\r\n /**\r\n * Whether requests are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Response type.\r\n * @type {string}\r\n */\r\n this.responseType = responseType; // toJSON\r\n\r\n /**\r\n * Whether responses are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Resolved request type.\r\n * @type {Type|null}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {Type|null}\r\n */\r\n this.resolvedResponseType = null;\r\n\r\n /**\r\n * Comment for this method\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Method descriptor.\r\n * @interface IMethod\r\n * @property {string} [type=\"rpc\"] Method type\r\n * @property {string} requestType Request type\r\n * @property {string} responseType Response type\r\n * @property {boolean} [requestStream=false] Whether requests are streamed\r\n * @property {boolean} [responseStream=false] Whether responses are streamed\r\n * @property {Object.} [options] Method options\r\n */\r\n\r\n/**\r\n * Constructs a method from a method descriptor.\r\n * @param {string} name Method name\r\n * @param {IMethod} json Method descriptor\r\n * @returns {Method} Created method\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMethod.fromJSON = function fromJSON(name, json) {\r\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this method to a method descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IMethod} Method descriptor\r\n */\r\nMethod.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"type\" , this.type !== \"rpc\" && /* istanbul ignore next */ this.type || undefined,\r\n \"requestType\" , this.requestType,\r\n \"requestStream\" , this.requestStream,\r\n \"responseType\" , this.responseType,\r\n \"responseStream\" , this.responseStream,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethod.prototype.resolve = function resolve() {\r\n\r\n /* istanbul ignore if */\r\n if (this.resolved)\r\n return this;\r\n\r\n this.resolvedRequestType = this.parent.lookupType(this.requestType);\r\n this.resolvedResponseType = this.parent.lookupType(this.responseType);\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/method.js\n// module id = 25\n// module chunks = 0","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\nvar Enum = require(\"./enum\"),\r\n types = require(\"./types\"),\r\n util = require(\"./util\");\r\n\r\nfunction missing(field) {\r\n return \"missing required '\" + field.name + \"'\";\r\n}\r\n\r\n/**\r\n * Generates a decoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction decoder(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var gen = util.codegen([\"r\", \"l\"], mtype.name + \"$decode\")\r\n (\"if(!(r instanceof Reader))\")\r\n (\"r=Reader.create(r)\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new this.ctor\" + (mtype.fieldsArray.filter(function(field) { return field.map; }).length ? \",k\" : \"\"))\r\n (\"while(r.pos>>3){\");\r\n\r\n var i = 0;\r\n for (; i < /* initializes */ mtype.fieldsArray.length; ++i) {\r\n var field = mtype._fieldsArray[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\r\n ref = \"m\" + util.safeProp(field.name); gen\r\n (\"case %i:\", field.id);\r\n\r\n // Map fields\r\n if (field.map) { gen\r\n (\"r.skip().pos++\") // assumes id 1 + key wireType\r\n (\"if(%s===util.emptyObject)\", ref)\r\n (\"%s={}\", ref)\r\n (\"k=r.%s()\", field.keyType)\r\n (\"r.pos++\"); // assumes id 2 + value wireType\r\n if (types.long[field.keyType] !== undefined) {\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=types[%i].decode(r,r.uint32())\", ref, i); // can't be groups\r\n else gen\r\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=r.%s()\", ref, type);\r\n } else {\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[k]=types[%i].decode(r,r.uint32())\", ref, i); // can't be groups\r\n else gen\r\n (\"%s[k]=r.%s()\", ref, type);\r\n }\r\n\r\n // Repeated fields\r\n } else if (field.repeated) { gen\r\n\r\n (\"if(!(%s&&%s.length))\", ref, ref)\r\n (\"%s=[]\", ref);\r\n\r\n // Packable (always check for forward and backward compatiblity)\r\n if (types.packed[type] !== undefined) gen\r\n (\"if((t&7)===2){\")\r\n (\"var c2=r.uint32()+r.pos\")\r\n (\"while(r.pos>>0\", prop, prop);\r\n break;\r\n case \"int32\":\r\n case \"sint32\":\r\n case \"sfixed32\": gen\r\n (\"m%s=d%s|0\", prop, prop);\r\n break;\r\n case \"uint64\":\r\n isUnsigned = true;\r\n // eslint-disable-line no-fallthrough\r\n case \"int64\":\r\n case \"sint64\":\r\n case \"fixed64\":\r\n case \"sfixed64\": gen\r\n (\"if(util.Long)\")\r\n (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\r\n (\"else if(typeof d%s===\\\"string\\\")\", prop)\r\n (\"m%s=parseInt(d%s,10)\", prop, prop)\r\n (\"else if(typeof d%s===\\\"number\\\")\", prop)\r\n (\"m%s=d%s\", prop, prop)\r\n (\"else if(typeof d%s===\\\"object\\\")\", prop)\r\n (\"m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\r\n break;\r\n case \"bytes\": gen\r\n (\"if(typeof d%s===\\\"string\\\")\", prop)\r\n (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop)\r\n (\"else if(d%s.length)\", prop)\r\n (\"m%s=d%s\", prop, prop);\r\n break;\r\n case \"string\": gen\r\n (\"m%s=String(d%s)\", prop, prop);\r\n break;\r\n case \"bool\": gen\r\n (\"m%s=Boolean(d%s)\", prop, prop);\r\n break;\r\n /* default: gen\r\n (\"m%s=d%s\", prop, prop);\r\n break; */\r\n }\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a plain object to runtime message converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.fromObject = function fromObject(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var fields = mtype.fieldsArray;\r\n var gen = util.codegen([\"d\"], mtype.name + \"$fromObject\")\r\n (\"if(d instanceof this.ctor)\")\r\n (\"return d\");\r\n if (!fields.length) return gen\r\n (\"return new this.ctor\");\r\n gen\r\n (\"var m=new this.ctor\");\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n prop = util.safeProp(field.name);\r\n\r\n // Map fields\r\n if (field.map) { gen\r\n (\"if(d%s){\", prop)\r\n (\"if(typeof d%s!==\\\"object\\\")\", prop)\r\n (\"throw TypeError(%j)\", field.fullName + \": object expected\")\r\n (\"m%s={}\", prop)\r\n (\"for(var ks=Object.keys(d%s),i=0;i>>0,m%s.high>>>0).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\r\n break;\r\n case \"bytes\": gen\r\n (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\r\n break;\r\n default: gen\r\n (\"d%s=m%s\", prop, prop);\r\n break;\r\n }\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a runtime message to plain object converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.toObject = function toObject(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var fields = mtype.fieldsArray.slice().sort(util.compareFieldsById);\r\n if (!fields.length)\r\n return util.codegen()(\"return {}\");\r\n var gen = util.codegen([\"m\", \"o\"], mtype.name + \"$toObject\")\r\n (\"if(!o)\")\r\n (\"o={}\")\r\n (\"var d={}\");\r\n\r\n var repeatedFields = [],\r\n mapFields = [],\r\n normalFields = [],\r\n i = 0;\r\n for (; i < fields.length; ++i)\r\n if (!fields[i].partOf)\r\n ( fields[i].resolve().repeated ? repeatedFields\r\n : fields[i].map ? mapFields\r\n : normalFields).push(fields[i]);\r\n\r\n if (repeatedFields.length) { gen\r\n (\"if(o.arrays||o.defaults){\");\r\n for (i = 0; i < repeatedFields.length; ++i) gen\r\n (\"d%s=[]\", util.safeProp(repeatedFields[i].name));\r\n gen\r\n (\"}\");\r\n }\r\n\r\n if (mapFields.length) { gen\r\n (\"if(o.objects||o.defaults){\");\r\n for (i = 0; i < mapFields.length; ++i) gen\r\n (\"d%s={}\", util.safeProp(mapFields[i].name));\r\n gen\r\n (\"}\");\r\n }\r\n\r\n if (normalFields.length) { gen\r\n (\"if(o.defaults){\");\r\n for (i = 0; i < normalFields.length; ++i) {\r\n var field = normalFields[i],\r\n prop = util.safeProp(field.name);\r\n if (field.resolvedType instanceof Enum) gen\r\n (\"d%s=o.enums===String?%j:%j\", prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\r\n else if (field.long) gen\r\n (\"if(util.Long){\")\r\n (\"var n=new util.Long(%i,%i,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\r\n (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", prop)\r\n (\"}else\")\r\n (\"d%s=o.longs===String?%j:%i\", prop, field.typeDefault.toString(), field.typeDefault.toNumber());\r\n else if (field.bytes) gen\r\n (\"d%s=o.bytes===String?%j:%s\", prop, String.fromCharCode.apply(String, field.typeDefault), \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\");\r\n else gen\r\n (\"d%s=%j\", prop, field.typeDefault); // also messages (=null)\r\n } gen\r\n (\"}\");\r\n }\r\n var hasKs2 = false;\r\n for (i = 0; i < fields.length; ++i) {\r\n var field = fields[i],\r\n index = mtype._fieldsArray.indexOf(field),\r\n prop = util.safeProp(field.name);\r\n if (field.map) {\r\n if (!hasKs2) { hasKs2 = true; gen\r\n (\"var ks2\");\r\n } gen\r\n (\"if(m%s&&(ks2=Object.keys(m%s)).length){\", prop, prop)\r\n (\"d%s={}\", prop)\r\n (\"for(var j=0;j}\r\n * @const\r\n */\r\nvar wrappers = exports;\r\n\r\nvar Message = require(\"./message\");\r\n\r\n/**\r\n * From object converter part of an {@link IWrapper}.\r\n * @typedef WrapperFromObjectConverter\r\n * @type {function}\r\n * @param {Object.} object Plain object\r\n * @returns {Message<{}>} Message instance\r\n * @this Type\r\n */\r\n\r\n/**\r\n * To object converter part of an {@link IWrapper}.\r\n * @typedef WrapperToObjectConverter\r\n * @type {function}\r\n * @param {Message<{}>} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n * @this Type\r\n */\r\n\r\n/**\r\n * Common type wrapper part of {@link wrappers}.\r\n * @interface IWrapper\r\n * @property {WrapperFromObjectConverter} [fromObject] From object converter\r\n * @property {WrapperToObjectConverter} [toObject] To object converter\r\n */\r\n\r\n// Custom wrapper for Any\r\nwrappers[\".google.protobuf.Any\"] = {\r\n\r\n fromObject: function(object) {\r\n\r\n // unwrap value type if mapped\r\n if (object && object[\"@type\"]) {\r\n var type = this.lookup(object[\"@type\"]);\r\n /* istanbul ignore else */\r\n if (type) {\r\n // type_url does not accept leading \".\"\r\n var type_url = object[\"@type\"].charAt(0) === \".\" ?\r\n object[\"@type\"].substr(1) : object[\"@type\"];\r\n // type_url prefix is optional, but path seperator is required\r\n return this.create({\r\n type_url: \"/\" + type_url,\r\n value: type.encode(type.fromObject(object)).finish()\r\n });\r\n }\r\n }\r\n\r\n return this.fromObject(object);\r\n },\r\n\r\n toObject: function(message, options) {\r\n\r\n // decode value if requested and unmapped\r\n if (options && options.json && message.type_url && message.value) {\r\n // Only use fully qualified type name after the last '/'\r\n var name = message.type_url.substring(message.type_url.lastIndexOf(\"/\") + 1);\r\n var type = this.lookup(name);\r\n /* istanbul ignore else */\r\n if (type)\r\n message = type.decode(message.value);\r\n }\r\n\r\n // wrap value if unmapped\r\n if (!(message instanceof this.ctor) && message instanceof Message) {\r\n var object = message.$type.toObject(message, options);\r\n object[\"@type\"] = message.$type.fullName;\r\n return object;\r\n }\r\n\r\n return this.toObject(message, options);\r\n }\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/wrappers.js\n// module id = 29\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Root;\r\n\r\n// extends Namespace\r\nvar Namespace = require(\"./namespace\");\r\n((Root.prototype = Object.create(Namespace.prototype)).constructor = Root).className = \"Root\";\r\n\r\nvar Field = require(\"./field\"),\r\n Enum = require(\"./enum\"),\r\n OneOf = require(\"./oneof\"),\r\n util = require(\"./util\");\r\n\r\nvar Type, // cyclic\r\n parse, // might be excluded\r\n common; // \"\r\n\r\n/**\r\n * Constructs a new root namespace instance.\r\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {Object.} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n Namespace.call(this, \"\", options);\r\n\r\n /**\r\n * Deferred extension fields.\r\n * @type {Field[]}\r\n */\r\n this.deferred = [];\r\n\r\n /**\r\n * Resolved file names of loaded files.\r\n * @type {string[]}\r\n */\r\n this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a namespace descriptor into a root namespace.\r\n * @param {INamespace} json Nameespace descriptor\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\r\n * @returns {Root} Root namespace\r\n */\r\nRoot.fromJSON = function fromJSON(json, root) {\r\n if (!root)\r\n root = new Root();\r\n if (json.options)\r\n root.setOptions(json.options);\r\n return root.addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Resolves the path of an imported file, relative to the importing origin.\r\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\r\n * @function\r\n * @param {string} origin The file name of the importing file\r\n * @param {string} target The file name being imported\r\n * @returns {string|null} Resolved path to `target` or `null` to skip the file\r\n */\r\nRoot.prototype.resolvePath = util.path.resolve;\r\n\r\n// A symbol-like function to safely signal synchronous loading\r\n/* istanbul ignore next */\r\nfunction SYNC() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} options Parse options\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nRoot.prototype.load = function load(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = undefined;\r\n }\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(load, self, filename, options);\r\n\r\n var sync = callback === SYNC; // undocumented\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n /* istanbul ignore if */\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n if (sync)\r\n throw err;\r\n cb(err, root);\r\n }\r\n\r\n // Processes a single file\r\n function process(filename, source) {\r\n try {\r\n if (util.isString(source) && source.charAt(0) === \"{\")\r\n source = JSON.parse(source);\r\n if (!util.isString(source))\r\n self.setOptions(source.options).addJSON(source.nested);\r\n else {\r\n parse.filename = filename;\r\n var parsed = parse(source, self, options),\r\n resolved,\r\n i = 0;\r\n if (parsed.imports)\r\n for (; i < parsed.imports.length; ++i)\r\n if (resolved = self.resolvePath(filename, parsed.imports[i]))\r\n fetch(resolved);\r\n if (parsed.weakImports)\r\n for (i = 0; i < parsed.weakImports.length; ++i)\r\n if (resolved = self.resolvePath(filename, parsed.weakImports[i]))\r\n fetch(resolved, true);\r\n }\r\n } catch (err) {\r\n finish(err);\r\n }\r\n if (!sync && !queued)\r\n finish(null, self); // only once anyway\r\n }\r\n\r\n // Fetches a single file\r\n function fetch(filename, weak) {\r\n\r\n // Strip path if this file references a bundled definition\r\n var idx = filename.lastIndexOf(\"google/protobuf/\");\r\n if (idx > -1) {\r\n var altname = filename.substring(idx);\r\n if (altname in common)\r\n filename = altname;\r\n }\r\n\r\n // Skip if already loaded / attempted\r\n if (self.files.indexOf(filename) > -1)\r\n return;\r\n self.files.push(filename);\r\n\r\n // Shortcut bundled definitions\r\n if (filename in common) {\r\n if (sync)\r\n process(filename, common[filename]);\r\n else {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n }\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n if (sync) {\r\n var source;\r\n try {\r\n source = util.fs.readFileSync(filename).toString(\"utf8\");\r\n } catch (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n } else {\r\n ++queued;\r\n util.fetch(filename, function(err, source) {\r\n --queued;\r\n /* istanbul ignore if */\r\n if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n /* istanbul ignore else */\r\n if (!weak)\r\n finish(err);\r\n else if (!queued) // can't be covered reliably\r\n finish(null, self);\r\n return;\r\n }\r\n process(filename, source);\r\n });\r\n }\r\n }\r\n var queued = 0;\r\n\r\n // Assembling the root namespace doesn't require working type\r\n // references anymore, so we can load everything in parallel\r\n if (util.isString(filename))\r\n filename = [ filename ];\r\n for (var i = 0, resolved; i < filename.length; ++i)\r\n if (resolved = self.resolvePath(\"\", filename[i]))\r\n fetch(resolved);\r\n\r\n if (sync)\r\n return self;\r\n if (!queued)\r\n finish(null, self);\r\n return undefined;\r\n};\r\n// function load(filename:string, options:IParseOptions, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\r\n * @function Root#load\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\r\n * @function Root#load\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:IParseOptions]):Promise\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only).\r\n * @function Root#loadSync\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\nRoot.prototype.loadSync = function loadSync(filename, options) {\r\n if (!util.isNode)\r\n throw Error(\"not supported\");\r\n return this.load(filename, options, SYNC);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRoot.prototype.resolveAll = function resolveAll() {\r\n if (this.deferred.length)\r\n throw Error(\"unresolvable extensions: \" + this.deferred.map(function(field) {\r\n return \"'extend \" + field.extend + \"' in \" + field.parent.fullName;\r\n }).join(\", \"));\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\r\n\r\n// only uppercased (and thus conflict-free) children are exposed, see below\r\nvar exposeRe = /^[A-Z]/;\r\n\r\n/**\r\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\r\n * @param {Root} root Root instance\r\n * @param {Field} field Declaring extension field witin the declaring type\r\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\r\n * @inner\r\n * @ignore\r\n */\r\nfunction tryHandleExtension(root, field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options);\r\n sisterField.declaringField = field;\r\n field.extensionField = sisterField;\r\n extendedType.add(sisterField);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRoot.prototype._handleAdd = function _handleAdd(object) {\r\n if (object instanceof Field) {\r\n\r\n if (/* an extension field (implies not part of a oneof) */ object.extend !== undefined && /* not already handled */ !object.extensionField)\r\n if (!tryHandleExtension(this, object))\r\n this.deferred.push(object);\r\n\r\n } else if (object instanceof Enum) {\r\n\r\n if (exposeRe.test(object.name))\r\n object.parent[object.name] = object.values; // expose enum values as property of its parent\r\n\r\n } else if (!(object instanceof OneOf)) /* everything else is a namespace */ {\r\n\r\n if (object instanceof Type) // Try to handle any deferred extensions\r\n for (var i = 0; i < this.deferred.length;)\r\n if (tryHandleExtension(this, this.deferred[i]))\r\n this.deferred.splice(i, 1);\r\n else\r\n ++i;\r\n for (var j = 0; j < /* initializes */ object.nestedArray.length; ++j) // recurse into the namespace\r\n this._handleAdd(object._nestedArray[j]);\r\n if (exposeRe.test(object.name))\r\n object.parent[object.name] = object; // expose namespace as property of its parent\r\n }\r\n\r\n // The above also adds uppercased (and thus conflict-free) nested types, services and enums as\r\n // properties of namespaces just like static code does. This allows using a .d.ts generated for\r\n // a static module with reflection-based solutions where the condition is met.\r\n};\r\n\r\n/**\r\n * Called when any object is removed from this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object removed\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRoot.prototype._handleRemove = function _handleRemove(object) {\r\n if (object instanceof Field) {\r\n\r\n if (/* an extension field */ object.extend !== undefined) {\r\n if (/* already handled */ object.extensionField) { // remove its sister field\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n } else { // cancel the extension\r\n var index = this.deferred.indexOf(object);\r\n /* istanbul ignore else */\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n }\r\n\r\n } else if (object instanceof Enum) {\r\n\r\n if (exposeRe.test(object.name))\r\n delete object.parent[object.name]; // unexpose enum values\r\n\r\n } else if (object instanceof Namespace) {\r\n\r\n for (var i = 0; i < /* initializes */ object.nestedArray.length; ++i) // recurse into the namespace\r\n this._handleRemove(object._nestedArray[i]);\r\n\r\n if (exposeRe.test(object.name))\r\n delete object.parent[object.name]; // unexpose namespaces\r\n\r\n }\r\n};\r\n\r\nRoot._configure = function(Type_, parse_, common_) {\r\n Type = Type_;\r\n parse = parse_;\r\n common = common_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/root.js\n// module id = 30\n// module chunks = 0","import {CentrifugeProtobuf} from './protobuf.js';\nexport default CentrifugeProtobuf;\n\n\n\n// WEBPACK FOOTER //\n// ./src/index_protobuf.js","import {Centrifuge} from './centrifuge.js';\n\nconst protobuf = require('protobufjs/light');\nconst proto = protobuf.Root.fromJSON(require('./client.proto.json'));\n\nconst methodValues = proto.lookupEnum('MethodType').values;\n\nconst protobufMethodType = {\n CONNECT: methodValues.CONNECT,\n SUBSCRIBE: methodValues.SUBSCRIBE,\n UNSUBSCRIBE: methodValues.UNSUBSCRIBE,\n PUBLISH: methodValues.PUBLISH,\n PRESENCE: methodValues.PRESENCE,\n PRESENCE_STATS: methodValues.PRESENCE_STATS,\n HISTORY: methodValues.HISTORY,\n PING: methodValues.PING,\n RPC: methodValues.RPC,\n SEND: methodValues.SEND,\n REFRESH: methodValues.REFRESH,\n SUB_REFRESH: methodValues.SUB_REFRESH\n};\n\nconst methodSchema = {\n CONNECT: [\n proto.lookupType('proto.ConnectRequest'),\n proto.lookupType('proto.ConnectResult')\n ],\n REFRESH: [\n proto.lookupType('proto.RefreshRequest'),\n proto.lookupType('proto.RefreshResult')\n ],\n SUBSCRIBE: [\n proto.lookupType('proto.SubscribeRequest'),\n proto.lookupType('proto.SubscribeResult')\n ],\n SUB_REFRESH: [\n proto.lookupType('proto.SubRefreshRequest'),\n proto.lookupType('proto.SubRefreshResult')\n ],\n UNSUBSCRIBE: [\n proto.lookupType('proto.UnsubscribeRequest'),\n proto.lookupType('proto.UnsubscribeResult')\n ],\n PUBLISH: [\n proto.lookupType('proto.PublishRequest'),\n proto.lookupType('proto.PublishResult')\n ],\n PRESENCE: [\n proto.lookupType('proto.PresenceRequest'),\n proto.lookupType('proto.PresenceResult')\n ],\n PRESENCE_STATS: [\n proto.lookupType('proto.PresenceStatsRequest'),\n proto.lookupType('proto.PresenceStatsResult')\n ],\n HISTORY: [\n proto.lookupType('proto.HistoryRequest'),\n proto.lookupType('proto.HistoryResult')\n ],\n PING: [\n proto.lookupType('proto.PingRequest'),\n proto.lookupType('proto.PingResult')\n ],\n RPC: [\n proto.lookupType('proto.RPCRequest'),\n proto.lookupType('proto.RPCResult')\n ],\n SEND: [\n proto.lookupType('proto.SendRequest'),\n null\n ]\n};\n\nconst protobufPushType = {\n PUBLICATION: proto.lookupEnum('PushType').values.PUBLICATION,\n JOIN: proto.lookupEnum('PushType').values.JOIN,\n LEAVE: proto.lookupEnum('PushType').values.LEAVE,\n UNSUB: proto.lookupEnum('PushType').values.UNSUB,\n MESSAGE: proto.lookupEnum('PushType').values.MESSAGE\n};\n\nconst PushSchema = {\n PUBLICATION: proto.lookupType('proto.Publication'),\n JOIN: proto.lookupType('proto.Join'),\n LEAVE: proto.lookupType('proto.Leave'),\n UNSUB: proto.lookupType('proto.Unsub'),\n MESSAGE: proto.lookupType('proto.Message')\n};\n\nconst Push = proto.lookupType('proto.Push');\nconst Command = proto.lookupType('proto.Command');\nconst Reply = proto.lookupType('proto.Reply');\n\nexport class ProtobufEncoder {\n encodeCommands(commands) {\n const writer = protobuf.Writer.create();\n for (const i in commands) {\n if (commands.hasOwnProperty(i)) {\n const command = Object.assign({}, commands[i]);\n if (command.params) {\n let type;\n if (!command.method) {\n command.method = protobufMethodType.CONNECT;\n };\n switch (command.method) {\n case protobufMethodType.CONNECT:\n type = methodSchema.CONNECT[0];\n break;\n case protobufMethodType.REFRESH:\n type = methodSchema.REFRESH;\n break;\n case protobufMethodType.SUBSCRIBE:\n type = methodSchema.SUBSCRIBE[0];\n break;\n case protobufMethodType.SUB_REFRESH:\n type = methodSchema.SUB_REFRESH[0];\n break;\n case protobufMethodType.UNSUBSCRIBE:\n type = methodSchema.UNSUBSCRIBE[0];\n break;\n case protobufMethodType.PUBLISH:\n type = methodSchema.PUBLISH[0];\n break;\n case protobufMethodType.PRESENCE:\n type = methodSchema.PRESENCE[0];\n break;\n case protobufMethodType.PRESENCE_STATS:\n type = methodSchema.PRESENCE_STATS[0];\n break;\n case protobufMethodType.HISTORY:\n type = methodSchema.HISTORY[0];\n break;\n case protobufMethodType.PING:\n type = methodSchema.PING[0];\n break;\n case protobufMethodType.RPC:\n type = methodSchema.RPC[0];\n break;\n case protobufMethodType.SEND:\n type = methodSchema.SEND[0];\n break;\n }\n command.params = type.encode(command.params).finish();\n }\n Command.encodeDelimited(command, writer);\n }\n }\n return writer.finish();\n }\n}\n\nexport class ProtobufDecoder {\n decodeReplies(data) {\n const replies = [];\n const reader = protobuf.Reader.create(new Uint8Array(data));\n while (reader.pos < reader.len) {\n const reply = Reply.decodeDelimited(reader);\n replies.push(reply);\n }\n return replies;\n }\n\n decodeCommandResult(methodType, data) {\n var type;\n switch (methodType) {\n case protobufMethodType.CONNECT:\n type = methodSchema.CONNECT[1];\n break;\n case protobufMethodType.REFRESH:\n type = methodSchema.REFRESH[1];\n break;\n case protobufMethodType.SUBSCRIBE:\n type = methodSchema.SUBSCRIBE[1];\n break;\n case protobufMethodType.SUB_REFRESH:\n type = methodSchema.SUB_REFRESH[1];\n break;\n case protobufMethodType.UNSUBSCRIBE:\n type = methodSchema.UNSUBSCRIBE[1];\n break;\n case protobufMethodType.PUBLISH:\n type = methodSchema.PUBLISH[1];\n break;\n case protobufMethodType.PRESENCE:\n type = methodSchema.PRESENCE[1];\n break;\n case protobufMethodType.PRESENCE_STATS:\n type = methodSchema.PRESENCE_STATS[1];\n break;\n case protobufMethodType.HISTORY:\n type = methodSchema.HISTORY[1];\n break;\n case protobufMethodType.PING:\n type = methodSchema.PING[1];\n break;\n case protobufMethodType.RPC:\n type = methodSchema.RPC[1];\n break;\n }\n return this._decode(type, data);\n }\n\n decodePush(data) {\n return this._decode(Push, data);\n }\n\n decodePushData(pushType, data) {\n var type;\n switch (pushType) {\n case protobufPushType.PUBLICATION:\n type = PushSchema.PUBLICATION;\n break;\n case protobufPushType.MESSAGE:\n type = PushSchema.MESSAGE;\n break;\n case protobufPushType.JOIN:\n type = PushSchema.JOIN;\n break;\n case protobufPushType.LEAVE:\n type = PushSchema.LEAVE;\n break;\n case protobufPushType.UNSUB:\n type = PushSchema.UNSUB;\n break;\n }\n return this._decode(type, data);\n }\n\n _decode(type, data) {\n let res;\n try {\n res = type.decode(data);\n } catch (err) {\n return null;\n }\n return res;\n }\n}\n\nexport class CentrifugeProtobuf extends Centrifuge {\n _formatOverride(format) {\n if (format === 'protobuf') {\n this._binary = true;\n this._methodType = protobufMethodType;\n this._pushType = protobufPushType;\n this._encoder = new ProtobufEncoder();\n this._decoder = new ProtobufDecoder();\n return true;\n }\n return false;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/protobuf.js","// light library entry point.\r\n\r\n\"use strict\";\r\nmodule.exports = require(\"./src/index-light\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/light.js\n// module id = 34\n// module chunks = 0","\"use strict\";\r\nvar protobuf = module.exports = require(\"./index-minimal\");\r\n\r\nprotobuf.build = \"light\";\r\n\r\n/**\r\n * A node-style callback as used by {@link load} and {@link Root#load}.\r\n * @typedef LoadCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Root} [root] Root, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} root Root namespace, defaults to create a new one if omitted.\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @see {@link Root#load}\r\n */\r\nfunction load(filename, root, callback) {\r\n if (typeof root === \"function\") {\r\n callback = root;\r\n root = new protobuf.Root();\r\n } else if (!root)\r\n root = new protobuf.Root();\r\n return root.load(filename, callback);\r\n}\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @see {@link Root#load}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Promise} Promise\r\n * @see {@link Root#load}\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n * @see {@link Root#loadSync}\r\n */\r\nfunction loadSync(filename, root) {\r\n if (!root)\r\n root = new protobuf.Root();\r\n return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\r\n\r\n// Serialization\r\nprotobuf.encoder = require(\"./encoder\");\r\nprotobuf.decoder = require(\"./decoder\");\r\nprotobuf.verifier = require(\"./verifier\");\r\nprotobuf.converter = require(\"./converter\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Message = require(\"./message\");\r\nprotobuf.wrappers = require(\"./wrappers\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.util = require(\"./util\");\r\n\r\n// Configure reflection\r\nprotobuf.ReflectionObject._configure(protobuf.Root);\r\nprotobuf.Namespace._configure(protobuf.Type, protobuf.Service);\r\nprotobuf.Root._configure(protobuf.Type);\r\nprotobuf.Field._configure(protobuf.Type);\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/index-light.js\n// module id = 35\n// module chunks = 0","\"use strict\";\r\nvar protobuf = exports;\r\n\r\n/**\r\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\r\n * @name build\r\n * @type {string}\r\n * @const\r\n */\r\nprotobuf.build = \"minimal\";\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = require(\"./writer_buffer\");\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = require(\"./reader_buffer\");\r\n\r\n// Utility\r\nprotobuf.util = require(\"./util/minimal\");\r\nprotobuf.rpc = require(\"./rpc\");\r\nprotobuf.roots = require(\"./roots\");\r\nprotobuf.configure = configure;\r\n\r\n/* istanbul ignore next */\r\n/**\r\n * Reconfigures the library according to the environment.\r\n * @returns {undefined}\r\n */\r\nfunction configure() {\r\n protobuf.Reader._configure(protobuf.BufferReader);\r\n protobuf.util._configure();\r\n}\r\n\r\n// Configure serialization\r\nprotobuf.Writer._configure(protobuf.BufferWriter);\r\nconfigure();\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/index-minimal.js\n// module id = 36\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/base64/index.js\n// module id = 37\n// module chunks = 0","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/eventemitter/index.js\n// module id = 38\n// module chunks = 0","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/float/index.js\n// module id = 39\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/utf8/index.js\n// module id = 40\n// module chunks = 0","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/pool/index.js\n// module id = 41\n// module chunks = 0","\"use strict\";\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(\"../util/minimal\");\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low 32 bits, unsigned\r\n * @param {number} hi High 32 bits, unsigned\r\n */\r\nfunction LongBits(lo, hi) {\r\n\r\n // note that the casts below are theoretically unnecessary as of today, but older statically\r\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo >>> 0;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi >>> 0;\r\n}\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = LongBits.zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Zero hash.\r\n * @memberof util.LongBits\r\n * @type {string}\r\n */\r\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n if (sign)\r\n value = -value;\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.from = function from(value) {\r\n if (typeof value === \"number\")\r\n return LongBits.fromNumber(value);\r\n if (util.isString(value)) {\r\n /* istanbul ignore else */\r\n if (util.Long)\r\n value = util.Long.fromString(value);\r\n else\r\n return LongBits.fromNumber(parseInt(value, 10));\r\n }\r\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBits.prototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n var lo = ~this.lo + 1 >>> 0,\r\n hi = ~this.hi >>> 0;\r\n if (!lo)\r\n hi = hi + 1 >>> 0;\r\n return -(lo + hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBits.prototype.toLong = function toLong(unsigned) {\r\n return util.Long\r\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\r\n /* istanbul ignore next */\r\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n if (hash === zeroHash)\r\n return zero;\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBits.prototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 ,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBits.prototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n return part2 === 0\r\n ? part1 === 0\r\n ? part0 < 16384\r\n ? part0 < 128 ? 1 : 2\r\n : part0 < 2097152 ? 3 : 4\r\n : part1 < 16384\r\n ? part1 < 128 ? 5 : 6\r\n : part1 < 2097152 ? 7 : 8\r\n : part2 < 128 ? 9 : 10;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/util/longbits.js\n// module id = 42\n// module chunks = 0","\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\n// extends Writer\r\nvar Writer = require(\"./writer\");\r\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar Buffer = util.Buffer;\r\n\r\n/**\r\n * Constructs a new buffer writer instance.\r\n * @classdesc Wire format writer using node buffers.\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Buffer} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = util._Buffer_allocUnsafe)(size);\r\n};\r\n\r\nvar writeBytesBuffer = Buffer && Buffer.prototype instanceof Uint8Array && Buffer.prototype.set.name === \"set\"\r\n ? function writeBytesBuffer_set(val, buf, pos) {\r\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\r\n // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n if (val.copy) // Buffer values\r\n val.copy(buf, pos, 0, val.length);\r\n else for (var i = 0; i < val.length;) // plain array values\r\n buf[pos++] = val[i++];\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\r\n if (util.isString(value))\r\n value = util._Buffer_from(value, \"base64\");\r\n var len = value.length >>> 0;\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeBytesBuffer, len, value);\r\n return this;\r\n};\r\n\r\nfunction writeStringBuffer(val, buf, pos) {\r\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\r\n util.utf8.write(val, buf, pos);\r\n else\r\n buf.utf8Write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.string = function write_string_buffer(value) {\r\n var len = Buffer.byteLength(value);\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeStringBuffer, len, value);\r\n return this;\r\n};\r\n\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @name BufferWriter#finish\r\n * @function\r\n * @returns {Buffer} Finished buffer\r\n */\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/writer_buffer.js\n// module id = 43\n// module chunks = 0","\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\n// extends Reader\r\nvar Reader = require(\"./reader\");\r\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\n/**\r\n * Constructs a new buffer reader instance.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n Reader.call(this, buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @name BufferReader#buf\r\n * @type {Buffer}\r\n */\r\n}\r\n\r\n/* istanbul ignore else */\r\nif (util.Buffer)\r\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReader.prototype.string = function read_string_buffer() {\r\n var len = this.uint32(); // modifies pos\r\n return this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len));\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @name BufferReader#bytes\r\n * @function\r\n * @returns {Buffer} Value read\r\n */\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/reader_buffer.js\n// module id = 44\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(\"../util/minimal\");\r\n\r\n// Extends EventEmitter\r\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\r\n\r\n/**\r\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\r\n *\r\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\r\n * @typedef rpc.ServiceMethodCallback\r\n * @template TRes extends Message\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {TRes} [response] Response message\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\r\n * @typedef rpc.ServiceMethod\r\n * @template TReq extends Message\r\n * @template TRes extends Message\r\n * @type {function}\r\n * @param {TReq|Properties} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message\r\n * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined`\r\n */\r\n\r\n/**\r\n * Constructs a new RPC service instance.\r\n * @classdesc An RPC service as returned by {@link Service#create}.\r\n * @exports rpc.Service\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n */\r\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\r\n\r\n if (typeof rpcImpl !== \"function\")\r\n throw TypeError(\"rpcImpl must be a function\");\r\n\r\n util.EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {RPCImpl|null}\r\n */\r\n this.rpcImpl = rpcImpl;\r\n\r\n /**\r\n * Whether requests are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.requestDelimited = Boolean(requestDelimited);\r\n\r\n /**\r\n * Whether responses are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.responseDelimited = Boolean(responseDelimited);\r\n}\r\n\r\n/**\r\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\r\n * @param {Method|rpc.ServiceMethod} method Reflected or static method\r\n * @param {Constructor} requestCtor Request constructor\r\n * @param {Constructor} responseCtor Response constructor\r\n * @param {TReq|Properties} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback} callback Service callback\r\n * @returns {undefined}\r\n * @template TReq extends Message\r\n * @template TRes extends Message\r\n */\r\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\r\n\r\n if (!request)\r\n throw TypeError(\"request must be specified\");\r\n\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\r\n\r\n if (!self.rpcImpl) {\r\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\r\n return undefined;\r\n }\r\n\r\n try {\r\n return self.rpcImpl(\r\n method,\r\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\r\n function rpcCallback(err, response) {\r\n\r\n if (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n\r\n if (response === null) {\r\n self.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n\r\n if (!(response instanceof responseCtor)) {\r\n try {\r\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n }\r\n\r\n self.emit(\"data\", response, method);\r\n return callback(null, response);\r\n }\r\n );\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n setTimeout(function() { callback(err); }, 0);\r\n return undefined;\r\n }\r\n};\r\n\r\n/**\r\n * Ends this service and emits the `end` event.\r\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\r\n * @returns {rpc.Service} `this`\r\n */\r\nService.prototype.end = function end(endedByRPC) {\r\n if (this.rpcImpl) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.rpcImpl(null, null, null);\r\n this.rpcImpl = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/rpc/service.js\n// module id = 45\n// module chunks = 0","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @param {string[]} functionParams Function parameter names\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n */\r\nfunction codegen(functionParams, functionName) {\r\n\r\n /* istanbul ignore if */\r\n if (typeof functionParams === \"string\") {\r\n functionName = functionParams;\r\n functionParams = undefined;\r\n }\r\n\r\n var body = [];\r\n\r\n /**\r\n * Appends code to the function's body or finishes generation.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string|Object.} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any\r\n * @param {...*} [formatParams] Format parameters\r\n * @returns {Codegen|Function} Itself or the generated function if finished\r\n * @throws {Error} If format parameter counts do not match\r\n */\r\n\r\n function Codegen(formatStringOrScope) {\r\n // note that explicit array handling below makes this ~50% faster\r\n\r\n // finish the function\r\n if (typeof formatStringOrScope !== \"string\") {\r\n var source = toString();\r\n if (codegen.verbose)\r\n console.log(\"codegen: \" + source); // eslint-disable-line no-console\r\n source = \"return \" + source;\r\n if (formatStringOrScope) {\r\n var scopeKeys = Object.keys(formatStringOrScope),\r\n scopeParams = new Array(scopeKeys.length + 1),\r\n scopeValues = new Array(scopeKeys.length),\r\n scopeOffset = 0;\r\n while (scopeOffset < scopeKeys.length) {\r\n scopeParams[scopeOffset] = scopeKeys[scopeOffset];\r\n scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]];\r\n }\r\n scopeParams[scopeOffset] = source;\r\n return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func\r\n }\r\n return Function(source)(); // eslint-disable-line no-new-func\r\n }\r\n\r\n // otherwise append to body\r\n var formatParams = new Array(arguments.length - 1),\r\n formatOffset = 0;\r\n while (formatOffset < formatParams.length)\r\n formatParams[formatOffset] = arguments[++formatOffset];\r\n formatOffset = 0;\r\n formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) {\r\n var value = formatParams[formatOffset++];\r\n switch ($1) {\r\n case \"d\": case \"f\": return String(Number(value));\r\n case \"i\": return String(Math.floor(value));\r\n case \"j\": return JSON.stringify(value);\r\n case \"s\": return String(value);\r\n }\r\n return \"%\";\r\n });\r\n if (formatOffset !== formatParams.length)\r\n throw Error(\"parameter count mismatch\");\r\n body.push(formatStringOrScope);\r\n return Codegen;\r\n }\r\n\r\n function toString(functionNameOverride) {\r\n return \"function \" + (functionNameOverride || functionName || \"\") + \"(\" + (functionParams && functionParams.join(\",\") || \"\") + \"){\\n \" + body.join(\"\\n \") + \"\\n}\";\r\n }\r\n\r\n Codegen.toString = toString;\r\n return Codegen;\r\n}\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @function codegen\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * When set to `true`, codegen will log generated code to console. Useful for debugging.\r\n * @name util.codegen.verbose\r\n * @type {boolean}\r\n */\r\ncodegen.verbose = false;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/codegen/index.js\n// module id = 46\n// module chunks = 0","\"use strict\";\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = require(\"@protobufjs/aspromise\"),\r\n inquire = require(\"@protobufjs/inquire\");\r\n\r\nvar fs = inquire(\"fs\");\r\n\r\n/**\r\n * Node-style callback as used by {@link util.fetch}.\r\n * @typedef FetchCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {string} [contents] File contents, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Options as used by {@link util.fetch}.\r\n * @typedef FetchOptions\r\n * @type {Object}\r\n * @property {boolean} [binary=false] Whether expecting a binary response\r\n * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} filename File path or url\r\n * @param {FetchOptions} options Fetch options\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nfunction fetch(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = {};\r\n } else if (!options)\r\n options = {};\r\n\r\n if (!callback)\r\n return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this\r\n\r\n // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.\r\n if (!options.xhr && fs && fs.readFile)\r\n return fs.readFile(filename, function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch.xhr(filename, options, callback)\r\n : err\r\n ? callback(err)\r\n : callback(null, options.binary ? contents : contents.toString(\"utf8\"));\r\n });\r\n\r\n // use the XHR version otherwise.\r\n return fetch.xhr(filename, options, callback);\r\n}\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchOptions} [options] Fetch options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n\r\n/**/\r\nfetch.xhr = function fetch_xhr(filename, options, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n\r\n if (xhr.readyState !== 4)\r\n return undefined;\r\n\r\n // local cors security errors return status 0 / empty string, too. afaik this cannot be\r\n // reliably distinguished from an actually empty file for security reasons. feel free\r\n // to send a pull request if you are aware of a solution.\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n\r\n // if binary data is expected, make sure that some sort of array is returned, even if\r\n // ArrayBuffers are not supported. the binary string fallback, however, is unsafe.\r\n if (options.binary) {\r\n var buffer = xhr.response;\r\n if (!buffer) {\r\n buffer = [];\r\n for (var i = 0; i < xhr.responseText.length; ++i)\r\n buffer.push(xhr.responseText.charCodeAt(i) & 255);\r\n }\r\n return callback(null, typeof Uint8Array !== \"undefined\" ? new Uint8Array(buffer) : buffer);\r\n }\r\n return callback(null, xhr.responseText);\r\n };\r\n\r\n if (options.binary) {\r\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers\r\n if (\"overrideMimeType\" in xhr)\r\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\r\n xhr.responseType = \"arraybuffer\";\r\n }\r\n\r\n xhr.open(\"GET\", filename);\r\n xhr.send();\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/fetch/index.js\n// module id = 47\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * A minimal path module to resolve Unix, Windows and URL paths alike.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar path = exports;\r\n\r\nvar isAbsolute =\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\npath.isAbsolute = function isAbsolute(path) {\r\n return /^(?:\\/|\\w+:)/.test(path);\r\n};\r\n\r\nvar normalize =\r\n/**\r\n * Normalizes the specified path.\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\npath.normalize = function normalize(path) {\r\n path = path.replace(/\\\\/g, \"/\")\r\n .replace(/\\/{2,}/g, \"/\");\r\n var parts = path.split(\"/\"),\r\n absolute = isAbsolute(path),\r\n prefix = \"\";\r\n if (absolute)\r\n prefix = parts.shift() + \"/\";\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === \"..\") {\r\n if (i > 0 && parts[i - 1] !== \"..\")\r\n parts.splice(--i, 2);\r\n else if (absolute)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === \".\")\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join(\"/\");\r\n};\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path to the origin file\r\n * @param {string} includePath Include path relative to origin path\r\n * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the include file\r\n */\r\npath.resolve = function resolve(originPath, includePath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n includePath = normalize(includePath);\r\n if (isAbsolute(includePath))\r\n return includePath;\r\n if (!alreadyNormalized)\r\n originPath = normalize(originPath);\r\n return (originPath = originPath.replace(/(?:\\/|^)[^/]+$/, \"\")).length ? normalize(originPath + \"/\" + includePath) : includePath;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/path/index.js\n// module id = 48\n// module chunks = 0","module.exports = {\"nested\":{\"proto\":{\"nested\":{\"Error\":{\"fields\":{\"code\":{\"type\":\"uint32\",\"id\":1},\"message\":{\"type\":\"string\",\"id\":2}}},\"MethodType\":{\"values\":{\"CONNECT\":0,\"SUBSCRIBE\":1,\"UNSUBSCRIBE\":2,\"PUBLISH\":3,\"PRESENCE\":4,\"PRESENCE_STATS\":5,\"HISTORY\":6,\"PING\":7,\"SEND\":8,\"RPC\":9,\"REFRESH\":10,\"SUB_REFRESH\":11}},\"Command\":{\"fields\":{\"id\":{\"type\":\"uint32\",\"id\":1},\"method\":{\"type\":\"MethodType\",\"id\":2},\"params\":{\"type\":\"bytes\",\"id\":3}}},\"Reply\":{\"fields\":{\"id\":{\"type\":\"uint32\",\"id\":1},\"error\":{\"type\":\"Error\",\"id\":2},\"result\":{\"type\":\"bytes\",\"id\":3}}},\"PushType\":{\"values\":{\"PUBLICATION\":0,\"JOIN\":1,\"LEAVE\":2,\"UNSUB\":3,\"MESSAGE\":4}},\"Push\":{\"fields\":{\"type\":{\"type\":\"PushType\",\"id\":1},\"channel\":{\"type\":\"string\",\"id\":2},\"data\":{\"type\":\"bytes\",\"id\":3}}},\"ClientInfo\":{\"fields\":{\"user\":{\"type\":\"string\",\"id\":1},\"client\":{\"type\":\"string\",\"id\":2},\"connInfo\":{\"type\":\"bytes\",\"id\":3},\"chanInfo\":{\"type\":\"bytes\",\"id\":4}}},\"Publication\":{\"fields\":{\"seq\":{\"type\":\"uint32\",\"id\":1},\"gen\":{\"type\":\"uint32\",\"id\":2},\"uid\":{\"type\":\"string\",\"id\":3},\"data\":{\"type\":\"bytes\",\"id\":4},\"info\":{\"type\":\"ClientInfo\",\"id\":5}}},\"Join\":{\"fields\":{\"info\":{\"type\":\"ClientInfo\",\"id\":1}}},\"Leave\":{\"fields\":{\"info\":{\"type\":\"ClientInfo\",\"id\":1}}},\"Unsub\":{\"fields\":{\"resubscribe\":{\"type\":\"bool\",\"id\":1}}},\"Message\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}},\"ConnectRequest\":{\"fields\":{\"token\":{\"type\":\"string\",\"id\":1},\"data\":{\"type\":\"bytes\",\"id\":2}}},\"ConnectResult\":{\"fields\":{\"client\":{\"type\":\"string\",\"id\":1},\"version\":{\"type\":\"string\",\"id\":2},\"expires\":{\"type\":\"bool\",\"id\":3},\"ttl\":{\"type\":\"uint32\",\"id\":4},\"data\":{\"type\":\"bytes\",\"id\":5}}},\"RefreshRequest\":{\"fields\":{\"token\":{\"type\":\"string\",\"id\":1}}},\"RefreshResult\":{\"fields\":{\"client\":{\"type\":\"string\",\"id\":1},\"version\":{\"type\":\"string\",\"id\":2},\"expires\":{\"type\":\"bool\",\"id\":3},\"ttl\":{\"type\":\"uint32\",\"id\":4}}},\"SubscribeRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1},\"token\":{\"type\":\"string\",\"id\":2},\"recover\":{\"type\":\"bool\",\"id\":3},\"seq\":{\"type\":\"uint32\",\"id\":4},\"gen\":{\"type\":\"uint32\",\"id\":5},\"epoch\":{\"type\":\"string\",\"id\":6}}},\"SubscribeResult\":{\"fields\":{\"expires\":{\"type\":\"bool\",\"id\":1},\"ttl\":{\"type\":\"uint32\",\"id\":2},\"recoverable\":{\"type\":\"bool\",\"id\":3},\"seq\":{\"type\":\"uint32\",\"id\":4},\"gen\":{\"type\":\"uint32\",\"id\":5},\"epoch\":{\"type\":\"string\",\"id\":6},\"publications\":{\"rule\":\"repeated\",\"type\":\"Publication\",\"id\":7},\"recovered\":{\"type\":\"bool\",\"id\":8}}},\"SubRefreshRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1},\"token\":{\"type\":\"string\",\"id\":2}}},\"SubRefreshResult\":{\"fields\":{\"expires\":{\"type\":\"bool\",\"id\":1},\"ttl\":{\"type\":\"uint32\",\"id\":2}}},\"UnsubscribeRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"UnsubscribeResult\":{\"fields\":{}},\"PublishRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1},\"data\":{\"type\":\"bytes\",\"id\":2}}},\"PublishResult\":{\"fields\":{}},\"PresenceRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"PresenceResult\":{\"fields\":{\"presence\":{\"keyType\":\"string\",\"type\":\"ClientInfo\",\"id\":1}}},\"PresenceStatsRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"PresenceStatsResult\":{\"fields\":{\"numClients\":{\"type\":\"uint32\",\"id\":1},\"numUsers\":{\"type\":\"uint32\",\"id\":2}}},\"HistoryRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"HistoryResult\":{\"fields\":{\"publications\":{\"rule\":\"repeated\",\"type\":\"Publication\",\"id\":1}}},\"PingRequest\":{\"fields\":{}},\"PingResult\":{\"fields\":{}},\"RPCRequest\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}},\"RPCResult\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}},\"SendRequest\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}}}}}}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/client.proto.json\n// module id = 49\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///centrifuge.protobuf.min.js","webpack:///webpack/bootstrap 888eb561f5375783ac27","webpack:///./node_modules/protobufjs/src/util.js","webpack:///./node_modules/protobufjs/src/enum.js","webpack:///./node_modules/protobufjs/src/util/minimal.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/protobufjs/src/object.js","webpack:///./node_modules/protobufjs/src/field.js","webpack:///./node_modules/events/events.js","webpack:///./src/utils.js","webpack:///./node_modules/protobufjs/src/namespace.js","webpack:///./node_modules/protobufjs/src/types.js","webpack:///./src/centrifuge.js","webpack:///./src/subscription.js","webpack:///./src/json.js","webpack:///./node_modules/protobufjs/src/writer.js","webpack:///./node_modules/protobufjs/src/reader.js","webpack:///./node_modules/protobufjs/src/oneof.js","webpack:///./node_modules/protobufjs/src/message.js","webpack:///./node_modules/@protobufjs/aspromise/index.js","webpack:///./node_modules/@protobufjs/inquire/index.js","webpack:///./node_modules/protobufjs/src/rpc.js","webpack:///./node_modules/protobufjs/src/roots.js","webpack:///./node_modules/protobufjs/src/encoder.js","webpack:///./node_modules/protobufjs/src/type.js","webpack:///./node_modules/protobufjs/src/mapfield.js","webpack:///./node_modules/protobufjs/src/service.js","webpack:///./node_modules/protobufjs/src/method.js","webpack:///./node_modules/protobufjs/src/decoder.js","webpack:///./node_modules/protobufjs/src/verifier.js","webpack:///./node_modules/protobufjs/src/converter.js","webpack:///./node_modules/protobufjs/src/wrappers.js","webpack:///./node_modules/protobufjs/src/root.js","webpack:///./src/index_protobuf.js","webpack:///./src/protobuf.js","webpack:///./node_modules/protobufjs/light.js","webpack:///./node_modules/protobufjs/src/index-light.js","webpack:///./node_modules/protobufjs/src/index-minimal.js","webpack:///./node_modules/@protobufjs/base64/index.js","webpack:///./node_modules/@protobufjs/eventemitter/index.js","webpack:///./node_modules/@protobufjs/float/index.js","webpack:///./node_modules/@protobufjs/utf8/index.js","webpack:///./node_modules/@protobufjs/pool/index.js","webpack:///./node_modules/protobufjs/src/util/longbits.js","webpack:///./node_modules/protobufjs/src/writer_buffer.js","webpack:///./node_modules/protobufjs/src/reader_buffer.js","webpack:///./node_modules/protobufjs/src/rpc/service.js","webpack:///./node_modules/@protobufjs/codegen/index.js","webpack:///./node_modules/@protobufjs/fetch/index.js","webpack:///./node_modules/@protobufjs/path/index.js","webpack:///./src/client.proto.json"],"names":["root","factory","exports","module","define","amd","self","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","Type","Enum","util","roots","codegen","fetch","path","fs","inquire","toArray","keys","array","Array","length","index","toObject","key","val","undefined","safePropBackslashRe","safePropQuoteRe","isReserved","test","safeProp","prop","replace","ucFirst","str","charAt","toUpperCase","substring","camelCaseRe","camelCase","$0","$1","compareFieldsById","a","b","id","decorateType","ctor","typeName","$type","decorateRoot","remove","add","type","value","decorateEnumIndex","decorateEnum","enm","values","options","comment","comments","ReflectionObject","TypeError","valuesById","create","reserved","constructor","className","Namespace","fromJSON","json","toJSON","toJSONOptions","keepComments","Boolean","isString","isInteger","Error","isReservedId","isReservedName","allow_alias","global","merge","dst","src","ifNotSet","newError","CustomError","message","properties","captureStackTrace","stack","toString","asPromise","base64","EventEmitter","float","utf8","pool","LongBits","emptyArray","freeze","emptyObject","isNode","process","versions","node","Number","isFinite","Math","floor","String","isObject","isset","isSet","obj","isArray","Buffer","utf8Write","e","_Buffer_from","_Buffer_allocUnsafe","newBuffer","sizeOrArray","Uint8Array","Long","dcodeIO","key2Re","key32Re","key64Re","longToHash","from","toHash","zeroHash","longFromHash","hash","unsigned","bits","fromHash","fromBits","lo","hi","toNumber","lcFirst","toLowerCase","ProtocolError","oneOfGetter","fieldNames","fieldMap","oneOfSetter","longs","enums","bytes","_configure","encoding","allocUnsafe","size","g","Function","eval","window","parent","resolved","filename","Root","defineProperties","ptr","fullName","unshift","join","onAdd","_handleAdd","onRemove","_handleRemove","resolve","getOption","setOption","setOptions","Root_","Field","rule","extend","ruleRe","required","optional","repeated","map","partOf","typeDefault","defaultValue","long","types","resolvedType","extensionField","declaringField","_packed","defaults","lookupTypeOrEnum","packed","fromNumber","buf","decode","write","fieldId","fieldType","fieldRule","fieldName","default","Type_","_events","_maxListeners","isFunction","arg","isNumber","isUndefined","defaultMaxListeners","setMaxListeners","isNaN","emit","er","handler","len","args","listeners","error","arguments","err","context","slice","apply","addListener","listener","newListener","push","warned","console","trace","on","once","removeListener","fired","list","position","splice","removeAllListeners","listenerCount","evlistener","emitter","startsWith","prefix","lastIndexOf","log","level","logger","backoff","step","min","max","jitter","random","interval","pow","errorExists","data","arrayToJSON","nested","_nestedArray","clearCache","namespace","Service","addJSON","nestedArray","nestedJson","ns","names","fields","methods","getEnum","prev","split","part","shift","resolveAll","lookup","filterTypes","parentAlreadyChecked","found","indexOf","lookupType","lookupEnum","lookupService","Service_","bake","offset","basic","mapKey","_interopRequireDefault","_classCallCheck","instance","Constructor","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","writable","setPrototypeOf","__proto__","Centrifuge","_typeof","Symbol","iterator","_createClass","target","props","descriptor","protoProps","staticProps","_events2","_subscription","_subscription2","_json","_utils","_EventEmitter","url","_this","getPrototypeOf","_url","_sockjs","_isSockjs","_binary","_methodType","_pushType","_encoder","_decoder","_status","_reconnect","_reconnecting","_transport","_transportName","_transportClosed","_messageId","_clientID","_refreshRequired","_subs","_lastSeq","_lastGen","_lastEpoch","_messages","_isBatching","_isSubscribeBatching","_privateChannels","_numRefreshFailed","_refreshTimeout","_pingTimeout","_pongTimeout","_subRefreshTimeouts","_retries","_callbacks","_latency","_latencyStart","_connectData","_token","_xhrID","_xhrs","_config","debug","sockjs","promise","minRetry","maxRetry","timeout","ping","pingInterval","pongWaitTimeout","privateChannelPrefix","onTransportClose","sockjsServer","sockjsTransports","refreshEndpoint","refreshHeaders","refreshParams","refreshData","refreshAttempts","refreshInterval","onRefreshFailed","onRefresh","subscribeEndpoint","subscribeHeaders","subscribeParams","subRefreshInterval","onPrivateSubscribe","token","params","headers","callback","_this2","query","_debug","JSON","stringify","xhr","XMLHttpRequest","ActiveXObject","encodeURIComponent","open","withCredentials","setRequestHeader","headerName","onreadystatechange","readyState","status","parsed","parse","responseText","_log","setTimeout","send","WebSocket","format","_formatOverride","JsonMethodType","JsonPushType","JsonEncoder","JsonDecoder","configuration","assign","_setFormat","SockJS","newStatus","xhrID","abort","reconnect","_stopPing","callbacks","clearTimeout","errback","_createErrorObject","channel","sub","_isSuccess","_triggerUnsubscribe","_recover","_shouldResubscribe","_setSubscribing","_setUnsubscribed","_abortInflightXHRs","_clearSubRefreshTimeout","transport","OPEN","commands","_isTransportOpen","command","encodeCommands","_this3","sockjsOptions","transports","server","_websocketSupported","binaryType","onopen","onheartbeat","_restartPing","msg","Date","_call","then","resolveCtx","_connectResponse","decodeCommandResult","CONNECT","result","next","rejectCtx","code","_disconnect","onerror","onclose","closeEvent","reason","needReconnect","advice","event","_getRetryInterval","_refresh","_connect","onmessage","_dataReceived","_this4","method","RPC","isConnected","Promise","reject","SEND","_transportSend","PUBLISH","_this5","replies","decodeReplies","_dispatchReply","_this6","_addMessage","_registerCall","_setStatus","_setupTransport","shouldReconnect","_isDisconnected","_clearConnectedState","close","_this7","_refreshFailed","clientID","_newXHRID","cb","resp","round","REFRESH","_refreshResponse","_refreshError","_ajax","_this8","_this9","expires","client","_getTTLMilliseconds","ttl","_this10","channelsData","channels","channelData","SUB_REFRESH","_getSub","_subRefreshResponse","_subRefreshError","_this11","subRefreshTimeout","_subRefresh","_this12","isResubscribe","_this13","_setNew","SUBSCRIBE","startSubscribeBatching","_subscribe","stopSubscribeBatching","_needRecover","recover","seq","_getLastSeq","gen","_getLastGen","epoch","_getLastEpoch","_subscribeResponse","_subscribeError","UNSUBSCRIBE","_this14","wasReconnecting","_resetRetry","getTime","startBatching","stopBatching","_startPing","ctx","latency","_this15","_isSubscribing","_setSubscribeError","_this16","recovered","_setSubscribeSuccess","pubs","publications","reverse","_handlePublication","recoverable","_recoverable","reply","leave","unsub","unsubscribe","resubscribe","subscribe","pub","decodePush","PUBLICATION","decodePushData","MESSAGE","_handleMessage","JOIN","_handleJoin","LEAVE","_handleLeave","UNSUB","_handleUnsub","_handleReply","_handlePush","messages","_this17","PING","_pingResponse","lastSeq","lastGen","lastEpoch","_this18","_nextMessageId","_isConnected","_ping","_flush","_this19","authChannels","batch","_ret2","events","currentSub","_setEvents","_isUnsubscribed","_STATE_NEW","Subscription","centrifuge","_centrifuge","_error","_isResubscribe","_ready","_subscriptionPromise","_noResubscribe","_initializePromise","_promises","errContext","_resolve","_reject","knownEvents","ev","successContext","_getSubscribeSuccessContext","to","_getSubscribeErrorContext","noResubscribe","needTrigger","subscribeErrorContext","_unsubscribe","subPromise","_isError","res","rej","_methodCall","PRESENCE","PRESENCE_STATS","HISTORY","encodedCommands","encodedReplies","methodType","pushType","Op","fn","noop","State","writer","head","tail","states","Writer","writeByte","pos","writeVarint32","VarintOp","writeVarint64","writeFixed32","BufferWriter","alloc","subarray","_push","uint32","int32","sint32","uint64","int64","sint64","zzEncode","bool","fixed32","sfixed32","fixed64","sfixed64","writeFloatLE","double","writeDoubleLE","writeBytes","set","string","fork","reset","ldelim","finish","BufferWriter_","indexOutOfRange","reader","writeLength","RangeError","Reader","buffer","readLongVarint","readFixed32_end","end","readFixed64","BufferReader","create_array","isBuffer","_slice","readFloatLE","readDoubleLE","start","read","skip","skipType","wireType","BufferReader_","zzDecode","OneOf","oneof","fieldsArray","addFieldsToParent","field","oneofName","Message","encode","encodeDelimited","decodeDelimited","verify","fromObject","pending","moduleName","mod","genTypePartial","fieldIndex","ref","group","encoder","mtype","sort","_fieldsArray","keyType","oneofs","extensions","_fieldsById","_oneofsArray","_ctor","MapField","decoder","verifier","converter","wrappers","fieldsById","oneofsArray","generateConstructor","ctorProperties","inherited","filter","setup","wrapper","originalThis","bind","resolvedKeyType","fieldKeyType","fieldValueType","_methodsArray","service","Method","rpc","methodsArray","rpcImpl","requestDelimited","responseDelimited","rpcService","methodName","q","resolvedRequestType","resolvedResponseType","requestType","responseType","requestStream","responseStream","missing","rfield","invalid","expected","genVerifyValue","j","genVerifyKey","seenFirstField","oneofProp","genValuePartial_fromObject","isUnsigned","genValuePartial_toObject","repeatedFields","mapFields","normalFields","low","high","fromCharCode","hasKs2","type_url","substr","deferred","files","SYNC","tryHandleExtension","extendedType","sisterField","common","resolvePath","load","sync","source","imports","weakImports","queued","weak","idx","altname","readFileSync","loadSync","exposeRe","parse_","common_","_protobuf","CentrifugeProtobuf","ProtobufDecoder","ProtobufEncoder","protobuf","proto","methodValues","protobufMethodType","methodSchema","protobufPushType","PushSchema","Push","Command","Reply","_decode","_Centrifuge","build","configure","ceil","b64","s64","t","parts","chunk","charCodeAt","_listeners","evt","off","Float32Array","writeFloat_f32_cpy","f32","f8b","writeFloat_f32_rev","readFloat_f32_cpy","readFloat_f32_rev","le","writeFloatBE","readFloatBE","writeFloat_ieee754","writeUint","sign","exponent","LN2","mantissa","readFloat_ieee754","readUint","uint","NaN","Infinity","writeUintLE","writeUintBE","readUintLE","readUintBE","Float64Array","writeDouble_f64_cpy","f64","writeDouble_f64_rev","readDouble_f64_cpy","readDouble_f64_rev","writeDoubleBE","readDoubleBE","writeDouble_ieee754","off0","off1","readDouble_ieee754","c1","c2","SIZE","MAX","slab","zero","parseInt","fromString","toLong","mask","part0","part1","part2","writeStringBuffer","writeBytesBuffer","copy","byteLength","utf8Slice","rpcCall","requestCtor","responseCtor","request","response","endedByRPC","functionParams","functionName","Codegen","formatStringOrScope","verbose","scopeKeys","scopeParams","scopeValues","scopeOffset","formatParams","formatOffset","body","functionNameOverride","readFile","contents","binary","overrideMimeType","isAbsolute","normalize","absolute","originPath","includePath","alreadyNormalized","MethodType","PushType","ClientInfo","user","connInfo","chanInfo","Publication","uid","info","Join","Leave","Unsub","ConnectRequest","ConnectResult","version","RefreshRequest","RefreshResult","SubscribeRequest","SubscribeResult","SubRefreshRequest","SubRefreshResult","UnsubscribeRequest","UnsubscribeResult","PublishRequest","PublishResult","PresenceRequest","PresenceResult","presence","PresenceStatsRequest","PresenceStatsResult","numClients","numUsers","HistoryRequest","HistoryResult","PingRequest","PingResult","RPCRequest","RPCResult","SendRequest"],"mappings":"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","file":"centrifuge.protobuf.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Centrifuge\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Centrifuge\"] = factory();\n\telse\n\t\troot[\"Centrifuge\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Centrifuge\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Centrifuge\"] = factory();\n\telse\n\t\troot[\"Centrifuge\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 32);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = __webpack_require__(2);\r\n\r\nvar roots = __webpack_require__(20);\r\n\r\nvar Type, // cyclic\r\n Enum;\r\n\r\nutil.codegen = __webpack_require__(46);\r\nutil.fetch = __webpack_require__(47);\r\nutil.path = __webpack_require__(48);\r\n\r\n/**\r\n * Node's fs module if available.\r\n * @type {Object.}\r\n */\r\nutil.fs = util.inquire(\"fs\");\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (object) {\r\n var keys = Object.keys(object),\r\n array = new Array(keys.length),\r\n index = 0;\r\n while (index < keys.length)\r\n array[index] = object[keys[index++]];\r\n return array;\r\n }\r\n return [];\r\n};\r\n\r\n/**\r\n * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values.\r\n * @param {Array.<*>} array Array to convert\r\n * @returns {Object.} Converted object\r\n */\r\nutil.toObject = function toObject(array) {\r\n var object = {},\r\n index = 0;\r\n while (index < array.length) {\r\n var key = array[index++],\r\n val = array[index++];\r\n if (val !== undefined)\r\n object[key] = val;\r\n }\r\n return object;\r\n};\r\n\r\nvar safePropBackslashRe = /\\\\/g,\r\n safePropQuoteRe = /\"/g;\r\n\r\n/**\r\n * Tests whether the specified name is a reserved word in JS.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nutil.isReserved = function isReserved(name) {\r\n return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test(name);\r\n};\r\n\r\n/**\r\n * Returns a safe property accessor for the specified property name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n if (!/^[$\\w_]+$/.test(prop) || util.isReserved(prop))\r\n return \"[\\\"\" + prop.replace(safePropBackslashRe, \"\\\\\\\\\").replace(safePropQuoteRe, \"\\\\\\\"\") + \"\\\"]\";\r\n return \".\" + prop;\r\n};\r\n\r\n/**\r\n * Converts the first character of a string to upper case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.ucFirst = function ucFirst(str) {\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\nvar camelCaseRe = /_([a-z])/g;\r\n\r\n/**\r\n * Converts a string to camel case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.camelCase = function camelCase(str) {\r\n return str.substring(0, 1)\r\n + str.substring(1)\r\n .replace(camelCaseRe, function($0, $1) { return $1.toUpperCase(); });\r\n};\r\n\r\n/**\r\n * Compares reflected fields by id.\r\n * @param {Field} a First field\r\n * @param {Field} b Second field\r\n * @returns {number} Comparison value\r\n */\r\nutil.compareFieldsById = function compareFieldsById(a, b) {\r\n return a.id - b.id;\r\n};\r\n\r\n/**\r\n * Decorator helper for types (TypeScript).\r\n * @param {Constructor} ctor Constructor function\r\n * @param {string} [typeName] Type name, defaults to the constructor's name\r\n * @returns {Type} Reflected type\r\n * @template T extends Message\r\n * @property {Root} root Decorators root\r\n */\r\nutil.decorateType = function decorateType(ctor, typeName) {\r\n\r\n /* istanbul ignore if */\r\n if (ctor.$type) {\r\n if (typeName && ctor.$type.name !== typeName) {\r\n util.decorateRoot.remove(ctor.$type);\r\n ctor.$type.name = typeName;\r\n util.decorateRoot.add(ctor.$type);\r\n }\r\n return ctor.$type;\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = __webpack_require__(22);\r\n\r\n var type = new Type(typeName || ctor.name);\r\n util.decorateRoot.add(type);\r\n type.ctor = ctor; // sets up .encode, .decode etc.\r\n Object.defineProperty(ctor, \"$type\", { value: type, enumerable: false });\r\n Object.defineProperty(ctor.prototype, \"$type\", { value: type, enumerable: false });\r\n return type;\r\n};\r\n\r\nvar decorateEnumIndex = 0;\r\n\r\n/**\r\n * Decorator helper for enums (TypeScript).\r\n * @param {Object} object Enum object\r\n * @returns {Enum} Reflected enum\r\n */\r\nutil.decorateEnum = function decorateEnum(object) {\r\n\r\n /* istanbul ignore if */\r\n if (object.$type)\r\n return object.$type;\r\n\r\n /* istanbul ignore next */\r\n if (!Enum)\r\n Enum = __webpack_require__(1);\r\n\r\n var enm = new Enum(\"Enum\" + decorateEnumIndex++, object);\r\n util.decorateRoot.add(enm);\r\n Object.defineProperty(object, \"$type\", { value: enm, enumerable: false });\r\n return enm;\r\n};\r\n\r\n/**\r\n * Decorator root (TypeScript).\r\n * @name util.decorateRoot\r\n * @type {Root}\r\n * @readonly\r\n */\r\nObject.defineProperty(util, \"decorateRoot\", {\r\n get: function() {\r\n return roots[\"decorated\"] || (roots[\"decorated\"] = new (__webpack_require__(30))());\r\n }\r\n});\r\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Enum;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = __webpack_require__(4);\r\n((Enum.prototype = Object.create(ReflectionObject.prototype)).constructor = Enum).className = \"Enum\";\r\n\r\nvar Namespace = __webpack_require__(8),\r\n util = __webpack_require__(0);\r\n\r\n/**\r\n * Constructs a new enum instance.\r\n * @classdesc Reflected enum.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {Object.} [values] Enum values as an object, by name\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] The comment for this enum\r\n * @param {Object.} [comments] The value comments for this enum\r\n */\r\nfunction Enum(name, values, options, comment, comments) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n if (values && typeof values !== \"object\")\r\n throw TypeError(\"values must be an object\");\r\n\r\n /**\r\n * Enum values by id.\r\n * @type {Object.}\r\n */\r\n this.valuesById = {};\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = Object.create(this.valuesById); // toJSON, marker\r\n\r\n /**\r\n * Enum comment text.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n\r\n /**\r\n * Value comment texts, if any.\r\n * @type {Object.}\r\n */\r\n this.comments = comments || {};\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {Array.}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n // Note that values inherit valuesById on their prototype which makes them a TypeScript-\r\n // compatible enum. This is used by pbts to write actual enum definitions that work for\r\n // static and reflection code alike instead of emitting generic object definitions.\r\n\r\n if (values)\r\n for (var keys = Object.keys(values), i = 0; i < keys.length; ++i)\r\n if (typeof values[keys[i]] === \"number\") // use forward entries only\r\n this.valuesById[ this.values[keys[i]] = values[keys[i]] ] = keys[i];\r\n}\r\n\r\n/**\r\n * Enum descriptor.\r\n * @interface IEnum\r\n * @property {Object.} values Enum values\r\n * @property {Object.} [options] Enum options\r\n */\r\n\r\n/**\r\n * Constructs an enum from an enum descriptor.\r\n * @param {string} name Enum name\r\n * @param {IEnum} json Enum descriptor\r\n * @returns {Enum} Created enum\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nEnum.fromJSON = function fromJSON(name, json) {\r\n var enm = new Enum(name, json.values, json.options, json.comment, json.comments);\r\n enm.reserved = json.reserved;\r\n return enm;\r\n};\r\n\r\n/**\r\n * Converts this enum to an enum descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IEnum} Enum descriptor\r\n */\r\nEnum.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"values\" , this.values,\r\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\r\n \"comment\" , keepComments ? this.comment : undefined,\r\n \"comments\" , keepComments ? this.comments : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds a value to this enum.\r\n * @param {string} name Value name\r\n * @param {number} id Value id\r\n * @param {string} [comment] Comment, if any\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnum.prototype.add = function add(name, id, comment) {\r\n // utilized by the parser but not by .fromJSON\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n if (!util.isInteger(id))\r\n throw TypeError(\"id must be an integer\");\r\n\r\n if (this.values[name] !== undefined)\r\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\r\n\r\n if (this.isReservedId(id))\r\n throw Error(\"id \" + id + \" is reserved in \" + this);\r\n\r\n if (this.isReservedName(name))\r\n throw Error(\"name '\" + name + \"' is reserved in \" + this);\r\n\r\n if (this.valuesById[id] !== undefined) {\r\n if (!(this.options && this.options.allow_alias))\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this.values[name] = id;\r\n } else\r\n this.valuesById[this.values[name] = id] = name;\r\n\r\n this.comments[name] = comment || null;\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnum.prototype.remove = function remove(name) {\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n var val = this.values[name];\r\n if (val == null)\r\n throw Error(\"name '\" + name + \"' does not exist in \" + this);\r\n\r\n delete this.valuesById[val];\r\n delete this.values[name];\r\n delete this.comments[name];\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nEnum.prototype.isReservedId = function isReservedId(id) {\r\n return Namespace.isReservedId(this.reserved, id);\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nEnum.prototype.isReservedName = function isReservedName(name) {\r\n return Namespace.isReservedName(this.reserved, name);\r\n};\r\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\r\nvar util = exports;\r\n\r\n// used to return a Promise where callback is omitted\r\nutil.asPromise = __webpack_require__(17);\r\n\r\n// converts to / from base64 encoded strings\r\nutil.base64 = __webpack_require__(37);\r\n\r\n// base class of rpc.Service\r\nutil.EventEmitter = __webpack_require__(38);\r\n\r\n// float handling accross browsers\r\nutil.float = __webpack_require__(39);\r\n\r\n// requires modules optionally and hides the call from bundlers\r\nutil.inquire = __webpack_require__(18);\r\n\r\n// converts to / from utf8 encoded strings\r\nutil.utf8 = __webpack_require__(40);\r\n\r\n// provides a node-like buffer pool in the browser\r\nutil.pool = __webpack_require__(41);\r\n\r\n// utility to work with the low and high bits of a 64 bit value\r\nutil.LongBits = __webpack_require__(42);\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n * @const\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n * @const\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n * @const\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\r\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nutil.isString = function isString(value) {\r\n return typeof value === \"string\" || value instanceof String;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return value && typeof value === \"object\";\r\n};\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * This is an alias of {@link util.isSet}.\r\n * @function\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isset =\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isSet = function isSet(obj, prop) {\r\n var value = obj[prop];\r\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\r\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\r\n return false;\r\n};\r\n\r\n/**\r\n * Any compatible Buffer instance.\r\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\r\n * @interface Buffer\r\n * @extends Uint8Array\r\n */\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {Constructor}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\r\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\r\n } catch (e) {\r\n /* istanbul ignore next */\r\n return null;\r\n }\r\n})();\r\n\r\n// Internal alias of or polyfull for Buffer.from.\r\nutil._Buffer_from = null;\r\n\r\n// Internal alias of or polyfill for Buffer.allocUnsafe.\r\nutil._Buffer_allocUnsafe = null;\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array|Buffer} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n /* istanbul ignore next */\r\n return typeof sizeOrArray === \"number\"\r\n ? util.Buffer\r\n ? util._Buffer_allocUnsafe(sizeOrArray)\r\n : new util.Array(sizeOrArray)\r\n : util.Buffer\r\n ? util._Buffer_from(sizeOrArray)\r\n : typeof Uint8Array === \"undefined\"\r\n ? sizeOrArray\r\n : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {Constructor}\r\n */\r\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\r\n * @interface Long\r\n * @property {number} low Low bits\r\n * @property {number} high High bits\r\n * @property {boolean} unsigned Whether unsigned or not\r\n */\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {Constructor}\r\n */\r\nutil.Long = /* istanbul ignore next */ global.dcodeIO && /* istanbul ignore next */ global.dcodeIO.Long || util.inquire(\"long\");\r\n\r\n/**\r\n * Regular expression used to verify 2 bit (`bool`) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key2Re = /^true|false|0|1$/;\r\n\r\n/**\r\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\r\n\r\n/**\r\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? util.LongBits.from(value).toHash()\r\n : util.LongBits.zeroHash;\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = util.LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @memberof util\r\n * @param {Object.} dst Destination object\r\n * @param {Object.} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.} Destination object\r\n */\r\nfunction merge(dst, src, ifNotSet) { // used by converters\r\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n return dst;\r\n}\r\n\r\nutil.merge = merge;\r\n\r\n/**\r\n * Converts the first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a custom error constructor.\r\n * @memberof util\r\n * @param {string} name Error name\r\n * @returns {Constructor} Custom error constructor\r\n */\r\nfunction newError(name) {\r\n\r\n function CustomError(message, properties) {\r\n\r\n if (!(this instanceof CustomError))\r\n return new CustomError(message, properties);\r\n\r\n // Error.call(this, message);\r\n // ^ just returns a new error instance because the ctor can be called as a function\r\n\r\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\r\n\r\n /* istanbul ignore next */\r\n if (Error.captureStackTrace) // node\r\n Error.captureStackTrace(this, CustomError);\r\n else\r\n Object.defineProperty(this, \"stack\", { value: (new Error()).stack || \"\" });\r\n\r\n if (properties)\r\n merge(this, properties);\r\n }\r\n\r\n (CustomError.prototype = Object.create(Error.prototype)).constructor = CustomError;\r\n\r\n Object.defineProperty(CustomError.prototype, \"name\", { get: function() { return name; } });\r\n\r\n CustomError.prototype.toString = function toString() {\r\n return this.name + \": \" + this.message;\r\n };\r\n\r\n return CustomError;\r\n}\r\n\r\nutil.newError = newError;\r\n\r\n/**\r\n * Constructs a new protocol error.\r\n * @classdesc Error subclass indicating a protocol specifc error.\r\n * @memberof util\r\n * @extends Error\r\n * @template T extends Message\r\n * @constructor\r\n * @param {string} message Error message\r\n * @param {Object.} [properties] Additional properties\r\n * @example\r\n * try {\r\n * MyMessage.decode(someBuffer); // throws if required fields are missing\r\n * } catch (e) {\r\n * if (e instanceof ProtocolError && e.instance)\r\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\r\n * }\r\n */\r\nutil.ProtocolError = newError(\"ProtocolError\");\r\n\r\n/**\r\n * So far decoded message instance.\r\n * @name util.ProtocolError#instance\r\n * @type {Message}\r\n */\r\n\r\n/**\r\n * A OneOf getter as returned by {@link util.oneOfGetter}.\r\n * @typedef OneOfGetter\r\n * @type {function}\r\n * @returns {string|undefined} Set field name, if any\r\n */\r\n\r\n/**\r\n * Builds a getter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfGetter} Unbound getter\r\n */\r\nutil.oneOfGetter = function getOneOf(fieldNames) {\r\n var fieldMap = {};\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n fieldMap[fieldNames[i]] = 1;\r\n\r\n /**\r\n * @returns {string|undefined} Set field name, if any\r\n * @this Object\r\n * @ignore\r\n */\r\n return function() { // eslint-disable-line consistent-return\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\r\n return keys[i];\r\n };\r\n};\r\n\r\n/**\r\n * A OneOf setter as returned by {@link util.oneOfSetter}.\r\n * @typedef OneOfSetter\r\n * @type {function}\r\n * @param {string|undefined} value Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Builds a setter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfSetter} Unbound setter\r\n */\r\nutil.oneOfSetter = function setOneOf(fieldNames) {\r\n\r\n /**\r\n * @param {string} name Field name\r\n * @returns {undefined}\r\n * @this Object\r\n * @ignore\r\n */\r\n return function(name) {\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n if (fieldNames[i] !== name)\r\n delete this[fieldNames[i]];\r\n };\r\n};\r\n\r\n/**\r\n * Default conversion options used for {@link Message#toJSON} implementations.\r\n *\r\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\r\n *\r\n * - Longs become strings\r\n * - Enums become string keys\r\n * - Bytes become base64 encoded strings\r\n * - (Sub-)Messages become plain objects\r\n * - Maps become plain objects with all string keys\r\n * - Repeated fields become arrays\r\n * - NaN and Infinity for float and double fields become strings\r\n *\r\n * @type {IConversionOptions}\r\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\r\n */\r\nutil.toJSONOptions = {\r\n longs: String,\r\n enums: String,\r\n bytes: String,\r\n json: true\r\n};\r\n\r\nutil._configure = function() {\r\n var Buffer = util.Buffer;\r\n /* istanbul ignore if */\r\n if (!Buffer) {\r\n util._Buffer_from = util._Buffer_allocUnsafe = null;\r\n return;\r\n }\r\n // because node 4.x buffers are incompatible & immutable\r\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\r\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\r\n /* istanbul ignore next */\r\n function Buffer_from(value, encoding) {\r\n return new Buffer(value, encoding);\r\n };\r\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\r\n /* istanbul ignore next */\r\n function Buffer_allocUnsafe(size) {\r\n return new Buffer(size);\r\n };\r\n};\r\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)))\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = ReflectionObject;\r\n\r\nReflectionObject.className = \"ReflectionObject\";\r\n\r\nvar util = __webpack_require__(0);\r\n\r\nvar Root; // cyclic\r\n\r\n/**\r\n * Constructs a new reflection object instance.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object.} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n if (options && !util.isObject(options))\r\n throw TypeError(\"options must be an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|undefined}\r\n */\r\n this.options = options; // toJSON\r\n\r\n /**\r\n * Unique name within its namespace.\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Parent namespace.\r\n * @type {Namespace|null}\r\n */\r\n this.parent = null;\r\n\r\n /**\r\n * Whether already resolved or not.\r\n * @type {boolean}\r\n */\r\n this.resolved = false;\r\n\r\n /**\r\n * Comment text, if any.\r\n * @type {string|null}\r\n */\r\n this.comment = null;\r\n\r\n /**\r\n * Defining file name.\r\n * @type {string|null}\r\n */\r\n this.filename = null;\r\n}\r\n\r\nObject.defineProperties(ReflectionObject.prototype, {\r\n\r\n /**\r\n * Reference to the root namespace.\r\n * @name ReflectionObject#root\r\n * @type {Root}\r\n * @readonly\r\n */\r\n root: {\r\n get: function() {\r\n var ptr = this;\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n return ptr;\r\n }\r\n },\r\n\r\n /**\r\n * Full name including leading dot.\r\n * @name ReflectionObject#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: function() {\r\n var path = [ this.name ],\r\n ptr = this.parent;\r\n while (ptr) {\r\n path.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n }\r\n return path.join(\".\");\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Converts this reflection object to its descriptor representation.\r\n * @returns {Object.} Descriptor\r\n * @abstract\r\n */\r\nReflectionObject.prototype.toJSON = /* istanbul ignore next */ function toJSON() {\r\n throw Error(); // not implemented, shouldn't happen\r\n};\r\n\r\n/**\r\n * Called when this object is added to a parent.\r\n * @param {ReflectionObject} parent Parent added to\r\n * @returns {undefined}\r\n */\r\nReflectionObject.prototype.onAdd = function onAdd(parent) {\r\n if (this.parent && this.parent !== parent)\r\n this.parent.remove(this);\r\n this.parent = parent;\r\n this.resolved = false;\r\n var root = parent.root;\r\n if (root instanceof Root)\r\n root._handleAdd(this);\r\n};\r\n\r\n/**\r\n * Called when this object is removed from a parent.\r\n * @param {ReflectionObject} parent Parent removed from\r\n * @returns {undefined}\r\n */\r\nReflectionObject.prototype.onRemove = function onRemove(parent) {\r\n var root = parent.root;\r\n if (root instanceof Root)\r\n root._handleRemove(this);\r\n this.parent = null;\r\n this.resolved = false;\r\n};\r\n\r\n/**\r\n * Resolves this objects type references.\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n if (this.root instanceof Root)\r\n this.resolved = true; // only if part of a root\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\nReflectionObject.prototype.getOption = function getOption(name) {\r\n if (this.options)\r\n return this.options[name];\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Sets an option.\r\n * @param {string} name Option name\r\n * @param {*} value Option value\r\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (!ifNotSet || !this.options || this.options[name] === undefined)\r\n (this.options || (this.options = {}))[name] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets multiple options.\r\n * @param {Object.} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n for (var keys = Object.keys(options), i = 0; i < keys.length; ++i)\r\n this.setOption(keys[i], options[keys[i]], ifNotSet);\r\n return this;\r\n};\r\n\r\n/**\r\n * Converts this instance to its string representation.\r\n * @returns {string} Class name[, space, full name]\r\n */\r\nReflectionObject.prototype.toString = function toString() {\r\n var className = this.constructor.className,\r\n fullName = this.fullName;\r\n if (fullName.length)\r\n return className + \" \" + fullName;\r\n return className;\r\n};\r\n\r\nReflectionObject._configure = function(Root_) {\r\n Root = Root_;\r\n};\r\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Field;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = __webpack_require__(4);\r\n((Field.prototype = Object.create(ReflectionObject.prototype)).constructor = Field).className = \"Field\";\r\n\r\nvar Enum = __webpack_require__(1),\r\n types = __webpack_require__(9),\r\n util = __webpack_require__(0);\r\n\r\nvar Type; // cyclic\r\n\r\nvar ruleRe = /^required|optional|repeated$/;\r\n\r\n/**\r\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\r\n * @name Field\r\n * @classdesc Reflected message field.\r\n * @extends FieldBase\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string|Object.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n */\r\n\r\n/**\r\n * Constructs a field from a field descriptor.\r\n * @param {string} name Field name\r\n * @param {IField} json Field descriptor\r\n * @returns {Field} Created field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nField.fromJSON = function fromJSON(name, json) {\r\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Not an actual constructor. Use {@link Field} instead.\r\n * @classdesc Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports FieldBase\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string|Object.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction Field(name, id, type, rule, extend, options, comment) {\r\n\r\n if (util.isObject(rule)) {\r\n comment = extend;\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n comment = options;\r\n options = extend;\r\n extend = undefined;\r\n }\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id must be a non-negative integer\");\r\n\r\n if (!util.isString(type))\r\n throw TypeError(\"type must be a string\");\r\n\r\n if (rule !== undefined && !ruleRe.test(rule = rule.toString().toLowerCase()))\r\n throw TypeError(\"rule must be a string rule\");\r\n\r\n if (extend !== undefined && !util.isString(extend))\r\n throw TypeError(\"extend must be a string\");\r\n\r\n /**\r\n * Field rule, if any.\r\n * @type {string|undefined}\r\n */\r\n this.rule = rule && rule !== \"optional\" ? rule : undefined; // toJSON\r\n\r\n /**\r\n * Field type.\r\n * @type {string}\r\n */\r\n this.type = type; // toJSON\r\n\r\n /**\r\n * Unique field id.\r\n * @type {number}\r\n */\r\n this.id = id; // toJSON, marker\r\n\r\n /**\r\n * Extended type if different from parent.\r\n * @type {string|undefined}\r\n */\r\n this.extend = extend || undefined; // toJSON\r\n\r\n /**\r\n * Whether this field is required.\r\n * @type {boolean}\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Whether this field is optional.\r\n * @type {boolean}\r\n */\r\n this.optional = !this.required;\r\n\r\n /**\r\n * Whether this field is repeated.\r\n * @type {boolean}\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Whether this field is a map or not.\r\n * @type {boolean}\r\n */\r\n this.map = false;\r\n\r\n /**\r\n * Message this field belongs to.\r\n * @type {Type|null}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {OneOf|null}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field type's default value.\r\n * @type {*}\r\n */\r\n this.typeDefault = null;\r\n\r\n /**\r\n * The field's default value on prototypes.\r\n * @type {*}\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Whether this field's value should be treated as a long.\r\n * @type {boolean}\r\n */\r\n this.long = util.Long ? types.long[type] !== undefined : /* istanbul ignore next */ false;\r\n\r\n /**\r\n * Whether this field's value is a buffer.\r\n * @type {boolean}\r\n */\r\n this.bytes = type === \"bytes\";\r\n\r\n /**\r\n * Resolved type if not a basic type.\r\n * @type {Type|Enum|null}\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Sister-field within the extended type if a declaring extension field.\r\n * @type {Field|null}\r\n */\r\n this.extensionField = null;\r\n\r\n /**\r\n * Sister-field within the declaring namespace if an extended field.\r\n * @type {Field|null}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {boolean|null}\r\n * @private\r\n */\r\n this._packed = null;\r\n\r\n /**\r\n * Comment for this field.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\nObject.defineProperty(Field.prototype, \"packed\", {\r\n get: function() {\r\n // defaults to packed=true if not explicity set to false\r\n if (this._packed === null)\r\n this._packed = this.getOption(\"packed\") !== false;\r\n return this._packed;\r\n }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nField.prototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\") // clear cached before setting\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Field descriptor.\r\n * @interface IField\r\n * @property {string} [rule=\"optional\"] Field rule\r\n * @property {string} type Field type\r\n * @property {number} id Field id\r\n * @property {Object.} [options] Field options\r\n */\r\n\r\n/**\r\n * Extension field descriptor.\r\n * @interface IExtensionField\r\n * @extends IField\r\n * @property {string} extend Extended type\r\n */\r\n\r\n/**\r\n * Converts this field to a field descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IField} Field descriptor\r\n */\r\nField.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"rule\" , this.rule !== \"optional\" && this.rule || undefined,\r\n \"type\" , this.type,\r\n \"id\" , this.id,\r\n \"extend\" , this.extend,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Resolves this field's type references.\r\n * @returns {Field} `this`\r\n * @throws {Error} If any reference cannot be resolved\r\n */\r\nField.prototype.resolve = function resolve() {\r\n\r\n if (this.resolved)\r\n return this;\r\n\r\n if ((this.typeDefault = types.defaults[this.type]) === undefined) { // if not a basic type, resolve it\r\n this.resolvedType = (this.declaringField ? this.declaringField.parent : this.parent).lookupTypeOrEnum(this.type);\r\n if (this.resolvedType instanceof Type)\r\n this.typeDefault = null;\r\n else // instanceof Enum\r\n this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\r\n }\r\n\r\n // use explicitly set default value if present\r\n if (this.options && this.options[\"default\"] != null) {\r\n this.typeDefault = this.options[\"default\"];\r\n if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\r\n this.typeDefault = this.resolvedType.values[this.typeDefault];\r\n }\r\n\r\n // remove unnecessary options\r\n if (this.options) {\r\n if (this.options.packed === true || this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum))\r\n delete this.options.packed;\r\n if (!Object.keys(this.options).length)\r\n this.options = undefined;\r\n }\r\n\r\n // convert to internal data type if necesssary\r\n if (this.long) {\r\n this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\r\n\r\n /* istanbul ignore else */\r\n if (Object.freeze)\r\n Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n\r\n } else if (this.bytes && typeof this.typeDefault === \"string\") {\r\n var buf;\r\n if (util.base64.test(this.typeDefault))\r\n util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\r\n else\r\n util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\r\n this.typeDefault = buf;\r\n }\r\n\r\n // take special care of maps and repeated fields\r\n if (this.map)\r\n this.defaultValue = util.emptyObject;\r\n else if (this.repeated)\r\n this.defaultValue = util.emptyArray;\r\n else\r\n this.defaultValue = this.typeDefault;\r\n\r\n // ensure proper value on prototype\r\n if (this.parent instanceof Type)\r\n this.parent.ctor.prototype[this.name] = this.defaultValue;\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript).\r\n * @typedef FieldDecorator\r\n * @type {function}\r\n * @param {Object} prototype Target prototype\r\n * @param {string} fieldName Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Field decorator (TypeScript).\r\n * @name Field.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"string\"|\"bool\"|\"bytes\"|Object} fieldType Field type\r\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\r\n * @param {T} [defaultValue] Default value\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[]\r\n */\r\nField.d = function decorateField(fieldId, fieldType, fieldRule, defaultValue) {\r\n\r\n // submessage: decorate the submessage and use its name as the type\r\n if (typeof fieldType === \"function\")\r\n fieldType = util.decorateType(fieldType).name;\r\n\r\n // enum reference: create a reflected copy of the enum and keep reuseing it\r\n else if (fieldType && typeof fieldType === \"object\")\r\n fieldType = util.decorateEnum(fieldType).name;\r\n\r\n return function fieldDecorator(prototype, fieldName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new Field(fieldName, fieldId, fieldType, fieldRule, { \"default\": defaultValue }));\r\n };\r\n};\r\n\r\n/**\r\n * Field decorator (TypeScript).\r\n * @name Field.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {Constructor|string} fieldType Field type\r\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends Message\r\n * @variation 2\r\n */\r\n// like Field.d but without a default value\r\n\r\nField._configure = function configure(Type_) {\r\n Type = Type_;\r\n};\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.startsWith = startsWith;\nexports.isFunction = isFunction;\nexports.log = log;\nexports.backoff = backoff;\nexports.errorExists = errorExists;\nfunction startsWith(value, prefix) {\n return value.lastIndexOf(prefix, 0) === 0;\n};\n\nfunction isFunction(value) {\n if (value === undefined || value === null) {\n return false;\n }\n return typeof value === 'function';\n};\n\nfunction log(level, args) {\n if (global.console) {\n var logger = global.console[level];\n\n if (isFunction(logger)) {\n logger.apply(global.console, args);\n }\n }\n};\n\nfunction backoff(step, min, max) {\n var jitter = 0.5 * Math.random();\n var interval = Math.min(max, min * Math.pow(2, step + 1));\n\n return Math.floor((1 - jitter) * interval);\n};\n\nfunction errorExists(data) {\n return 'error' in data && data.error !== null;\n};\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)))\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Namespace;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = __webpack_require__(4);\r\n((Namespace.prototype = Object.create(ReflectionObject.prototype)).constructor = Namespace).className = \"Namespace\";\r\n\r\nvar Enum = __webpack_require__(1),\r\n Field = __webpack_require__(5),\r\n util = __webpack_require__(0);\r\n\r\nvar Type, // cyclic\r\n Service; // \"\r\n\r\n/**\r\n * Constructs a new namespace instance.\r\n * @name Namespace\r\n * @classdesc Reflected namespace.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\r\n */\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @memberof Namespace\r\n * @function\r\n * @param {string} name Namespace name\r\n * @param {Object.} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array, toJSONOptions) {\r\n if (!(array && array.length))\r\n return undefined;\r\n var obj = {};\r\n for (var i = 0; i < array.length; ++i)\r\n obj[array[i].name] = array[i].toJSON(toJSONOptions);\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {Array.|undefined} reserved Array of reserved ranges and names\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nNamespace.isReservedId = function isReservedId(reserved, id) {\r\n if (reserved)\r\n for (var i = 0; i < reserved.length; ++i)\r\n if (typeof reserved[i] !== \"string\" && reserved[i][0] <= id && reserved[i][1] >= id)\r\n return true;\r\n return false;\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {Array.|undefined} reserved Array of reserved ranges and names\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nNamespace.isReservedName = function isReservedName(reserved, name) {\r\n if (reserved)\r\n for (var i = 0; i < reserved.length; ++i)\r\n if (reserved[i] === name)\r\n return true;\r\n return false;\r\n};\r\n\r\n/**\r\n * Not an actual constructor. Use {@link Namespace} instead.\r\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports NamespaceBase\r\n * @extends ReflectionObject\r\n * @abstract\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\r\n * @see {@link Namespace}\r\n */\r\nfunction Namespace(name, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Nested objects by name.\r\n * @type {Object.|undefined}\r\n */\r\n this.nested = undefined; // toJSON\r\n\r\n /**\r\n * Cached nested objects as an array.\r\n * @type {ReflectionObject[]|null}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n return namespace;\r\n}\r\n\r\n/**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name NamespaceBase#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(Namespace.prototype, \"nestedArray\", {\r\n get: function() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n});\r\n\r\n/**\r\n * Namespace descriptor.\r\n * @interface INamespace\r\n * @property {Object.} [options] Namespace options\r\n * @property {Object.} [nested] Nested object descriptors\r\n */\r\n\r\n/**\r\n * Any extension field descriptor.\r\n * @typedef AnyExtensionField\r\n * @type {IExtensionField|IExtensionMapField}\r\n */\r\n\r\n/**\r\n * Any nested object descriptor.\r\n * @typedef AnyNestedObject\r\n * @type {IEnum|IType|IService|AnyExtensionField|INamespace}\r\n */\r\n// ^ BEWARE: VSCode hangs forever when using more than 5 types (that's why AnyExtensionField exists in the first place)\r\n\r\n/**\r\n * Converts this namespace to a namespace descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {INamespace} Namespace descriptor\r\n */\r\nNamespace.prototype.toJSON = function toJSON(toJSONOptions) {\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"nested\" , arrayToJSON(this.nestedArray, toJSONOptions)\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds nested objects to this namespace from nested object descriptors.\r\n * @param {Object.} nestedJson Any nested object descriptors\r\n * @returns {Namespace} `this`\r\n */\r\nNamespace.prototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n /* istanbul ignore else */\r\n if (nestedJson) {\r\n for (var names = Object.keys(nestedJson), i = 0, nested; i < names.length; ++i) {\r\n nested = nestedJson[names[i]];\r\n ns.add( // most to least likely\r\n ( nested.fields !== undefined\r\n ? Type.fromJSON\r\n : nested.values !== undefined\r\n ? Enum.fromJSON\r\n : nested.methods !== undefined\r\n ? Service.fromJSON\r\n : nested.id !== undefined\r\n ? Field.fromJSON\r\n : Namespace.fromJSON )(names[i], nested)\r\n );\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets the nested object of the specified name.\r\n * @param {string} name Nested object name\r\n * @returns {ReflectionObject|null} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespace.prototype.get = function get(name) {\r\n return this.nested && this.nested[name]\r\n || null;\r\n};\r\n\r\n/**\r\n * Gets the values of the nested {@link Enum|enum} of the specified name.\r\n * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`.\r\n * @param {string} name Nested enum name\r\n * @returns {Object.} Enum values\r\n * @throws {Error} If there is no such enum\r\n */\r\nNamespace.prototype.getEnum = function getEnum(name) {\r\n if (this.nested && this.nested[name] instanceof Enum)\r\n return this.nested[name].values;\r\n throw Error(\"no such enum: \" + name);\r\n};\r\n\r\n/**\r\n * Adds a nested object to this namespace.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name\r\n */\r\nNamespace.prototype.add = function add(object) {\r\n\r\n if (!(object instanceof Field && object.extend !== undefined || object instanceof Type || object instanceof Enum || object instanceof Service || object instanceof Namespace))\r\n throw TypeError(\"object must be a valid nested object\");\r\n\r\n if (!this.nested)\r\n this.nested = {};\r\n else {\r\n var prev = this.get(object.name);\r\n if (prev) {\r\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\r\n // replace plain namespace but keep existing nested elements and options\r\n var nested = prev.nestedArray;\r\n for (var i = 0; i < nested.length; ++i)\r\n object.add(nested[i]);\r\n this.remove(prev);\r\n if (!this.nested)\r\n this.nested = {};\r\n object.setOptions(prev.options, true);\r\n\r\n } else\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n }\r\n }\r\n this.nested[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this namespace.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this namespace\r\n */\r\nNamespace.prototype.remove = function remove(object) {\r\n\r\n if (!(object instanceof ReflectionObject))\r\n throw TypeError(\"object must be a ReflectionObject\");\r\n if (object.parent !== this)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.nested[object.name];\r\n if (!Object.keys(this.nested).length)\r\n this.nested = undefined;\r\n\r\n object.onRemove(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Defines additial namespaces within this one if not yet existing.\r\n * @param {string|string[]} path Path to create\r\n * @param {*} [json] Nested types to create from JSON\r\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\r\n */\r\nNamespace.prototype.define = function define(path, json) {\r\n\r\n if (util.isString(path))\r\n path = path.split(\".\");\r\n else if (!Array.isArray(path))\r\n throw TypeError(\"illegal path\");\r\n if (path && path.length && path[0] === \"\")\r\n throw Error(\"path must be relative\");\r\n\r\n var ptr = this;\r\n while (path.length > 0) {\r\n var part = path.shift();\r\n if (ptr.nested && ptr.nested[part]) {\r\n ptr = ptr.nested[part];\r\n if (!(ptr instanceof Namespace))\r\n throw Error(\"path conflicts with non-namespace objects\");\r\n } else\r\n ptr.add(ptr = new Namespace(part));\r\n }\r\n if (json)\r\n ptr.addJSON(json);\r\n return ptr;\r\n};\r\n\r\n/**\r\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespace.prototype.resolveAll = function resolveAll() {\r\n var nested = this.nestedArray, i = 0;\r\n while (i < nested.length)\r\n if (nested[i] instanceof Namespace)\r\n nested[i++].resolveAll();\r\n else\r\n nested[i++].resolve();\r\n return this.resolve();\r\n};\r\n\r\n/**\r\n * Recursively looks up the reflection object matching the specified path in the scope of this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {*|Array.<*>} filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc.\r\n * @param {boolean} [parentAlreadyChecked=false] If known, whether the parent has already been checked\r\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\r\n */\r\nNamespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChecked) {\r\n\r\n /* istanbul ignore next */\r\n if (typeof filterTypes === \"boolean\") {\r\n parentAlreadyChecked = filterTypes;\r\n filterTypes = undefined;\r\n } else if (filterTypes && !Array.isArray(filterTypes))\r\n filterTypes = [ filterTypes ];\r\n\r\n if (util.isString(path) && path.length) {\r\n if (path === \".\")\r\n return this.root;\r\n path = path.split(\".\");\r\n } else if (!path.length)\r\n return this;\r\n\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.root.lookup(path.slice(1), filterTypes);\r\n\r\n // Test if the first part matches any nested object, and if so, traverse if path contains more\r\n var found = this.get(path[0]);\r\n if (found) {\r\n if (path.length === 1) {\r\n if (!filterTypes || filterTypes.indexOf(found.constructor) > -1)\r\n return found;\r\n } else if (found instanceof Namespace && (found = found.lookup(path.slice(1), filterTypes, true)))\r\n return found;\r\n\r\n // Otherwise try each nested namespace\r\n } else\r\n for (var i = 0; i < this.nestedArray.length; ++i)\r\n if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i].lookup(path, filterTypes, true)))\r\n return found;\r\n\r\n // If there hasn't been a match, try again at the parent\r\n if (this.parent === null || parentAlreadyChecked)\r\n return null;\r\n return this.parent.lookup(path, filterTypes);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @name NamespaceBase#lookup\r\n * @function\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\r\n * @variation 2\r\n */\r\n// lookup(path: string, [parentAlreadyChecked: boolean])\r\n\r\n/**\r\n * Looks up the {@link Type|type} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Type} Looked up type\r\n * @throws {Error} If `path` does not point to a type\r\n */\r\nNamespace.prototype.lookupType = function lookupType(path) {\r\n var found = this.lookup(path, [ Type ]);\r\n if (!found)\r\n throw Error(\"no such type: \" + path);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Enum} Looked up enum\r\n * @throws {Error} If `path` does not point to an enum\r\n */\r\nNamespace.prototype.lookupEnum = function lookupEnum(path) {\r\n var found = this.lookup(path, [ Enum ]);\r\n if (!found)\r\n throw Error(\"no such Enum '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Type} Looked up type or enum\r\n * @throws {Error} If `path` does not point to a type or enum\r\n */\r\nNamespace.prototype.lookupTypeOrEnum = function lookupTypeOrEnum(path) {\r\n var found = this.lookup(path, [ Type, Enum ]);\r\n if (!found)\r\n throw Error(\"no such Type or Enum '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the {@link Service|service} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Service} Looked up service\r\n * @throws {Error} If `path` does not point to a service\r\n */\r\nNamespace.prototype.lookupService = function lookupService(path) {\r\n var found = this.lookup(path, [ Service ]);\r\n if (!found)\r\n throw Error(\"no such Service '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\nNamespace._configure = function(Type_, Service_) {\r\n Type = Type_;\r\n Service = Service_;\r\n};\r\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = exports;\r\n\r\nvar util = __webpack_require__(0);\r\n\r\nvar s = [\r\n \"double\", // 0\r\n \"float\", // 1\r\n \"int32\", // 2\r\n \"uint32\", // 3\r\n \"sint32\", // 4\r\n \"fixed32\", // 5\r\n \"sfixed32\", // 6\r\n \"int64\", // 7\r\n \"uint64\", // 8\r\n \"sint64\", // 9\r\n \"fixed64\", // 10\r\n \"sfixed64\", // 11\r\n \"bool\", // 12\r\n \"string\", // 13\r\n \"bytes\" // 14\r\n];\r\n\r\nfunction bake(values, offset) {\r\n var i = 0, o = {};\r\n offset |= 0;\r\n while (i < values.length) o[s[i + offset]] = values[i++];\r\n return o;\r\n}\r\n\r\n/**\r\n * Basic type wire types.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n * @property {number} bytes=2 Ldelim wire type\r\n */\r\ntypes.basic = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2,\r\n /* bytes */ 2\r\n]);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=0 Double default\r\n * @property {number} float=0 Float default\r\n * @property {number} int32=0 Int32 default\r\n * @property {number} uint32=0 Uint32 default\r\n * @property {number} sint32=0 Sint32 default\r\n * @property {number} fixed32=0 Fixed32 default\r\n * @property {number} sfixed32=0 Sfixed32 default\r\n * @property {number} int64=0 Int64 default\r\n * @property {number} uint64=0 Uint64 default\r\n * @property {number} sint64=0 Sint32 default\r\n * @property {number} fixed64=0 Fixed64 default\r\n * @property {number} sfixed64=0 Sfixed64 default\r\n * @property {boolean} bool=false Bool default\r\n * @property {string} string=\"\" String default\r\n * @property {Array.} bytes=Array(0) Bytes default\r\n * @property {null} message=null Message default\r\n */\r\ntypes.defaults = bake([\r\n /* double */ 0,\r\n /* float */ 0,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 0,\r\n /* sfixed32 */ 0,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 0,\r\n /* sfixed64 */ 0,\r\n /* bool */ false,\r\n /* string */ \"\",\r\n /* bytes */ util.emptyArray,\r\n /* message */ null\r\n]);\r\n\r\n/**\r\n * Basic long type wire types.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n */\r\ntypes.long = bake([\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n */\r\ntypes.mapKey = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n */\r\ntypes.packed = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0\r\n]);\r\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Centrifuge = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\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 _events = __webpack_require__(6);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _subscription = __webpack_require__(11);\n\nvar _subscription2 = _interopRequireDefault(_subscription);\n\nvar _json = __webpack_require__(12);\n\nvar _utils = __webpack_require__(7);\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 _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\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 _errorTimeout = 'timeout';\nvar _errorConnectionClosed = 'connection closed';\n\nvar Centrifuge = exports.Centrifuge = function (_EventEmitter) {\n _inherits(Centrifuge, _EventEmitter);\n\n function Centrifuge(url, options) {\n _classCallCheck(this, Centrifuge);\n\n var _this = _possibleConstructorReturn(this, (Centrifuge.__proto__ || Object.getPrototypeOf(Centrifuge)).call(this));\n\n _this._url = url;\n _this._sockjs = null;\n _this._isSockjs = false;\n _this._binary = false;\n _this._methodType = null;\n _this._pushType = null;\n _this._encoder = null;\n _this._decoder = null;\n _this._status = 'disconnected';\n _this._reconnect = true;\n _this._reconnecting = false;\n _this._transport = null;\n _this._transportName = null;\n _this._transportClosed = true;\n _this._messageId = 0;\n _this._clientID = null;\n _this._refreshRequired = false;\n _this._subs = {};\n _this._lastSeq = {};\n _this._lastGen = {};\n _this._lastEpoch = {};\n _this._messages = [];\n _this._isBatching = false;\n _this._isSubscribeBatching = false;\n _this._privateChannels = {};\n _this._numRefreshFailed = 0;\n _this._refreshTimeout = null;\n _this._pingTimeout = null;\n _this._pongTimeout = null;\n _this._subRefreshTimeouts = {};\n _this._retries = 0;\n _this._callbacks = {};\n _this._latency = null;\n _this._latencyStart = null;\n _this._connectData = null;\n _this._token = null;\n _this._xhrID = 0;\n _this._xhrs = {};\n _this._config = {\n debug: false,\n sockjs: null,\n promise: null,\n minRetry: 1000,\n maxRetry: 20000,\n timeout: 5000,\n ping: true,\n pingInterval: 25000,\n pongWaitTimeout: 5000,\n privateChannelPrefix: '$',\n onTransportClose: null,\n sockjsServer: null,\n sockjsTransports: ['websocket', 'xdr-streaming', 'xhr-streaming', 'eventsource', 'iframe-eventsource', 'iframe-htmlfile', 'xdr-polling', 'xhr-polling', 'iframe-xhr-polling', 'jsonp-polling'],\n refreshEndpoint: '/centrifuge/refresh',\n refreshHeaders: {},\n refreshParams: {},\n refreshData: {},\n refreshAttempts: null,\n refreshInterval: 1000,\n onRefreshFailed: null,\n onRefresh: null,\n subscribeEndpoint: '/centrifuge/subscribe',\n subscribeHeaders: {},\n subscribeParams: {},\n subRefreshInterval: 1000,\n onPrivateSubscribe: null\n };\n _this._configure(options);\n return _this;\n }\n\n _createClass(Centrifuge, [{\n key: 'setToken',\n value: function setToken(token) {\n this._token = token;\n }\n }, {\n key: 'setConnectData',\n value: function setConnectData(data) {\n this._connectData = data;\n }\n }, {\n key: '_ajax',\n value: function _ajax(url, params, headers, data, callback) {\n var _this2 = this;\n\n var query = '';\n this._debug('sending AJAX request to', url, 'with data', JSON.stringify(data));\n\n var xhr = global.XMLHttpRequest ? new global.XMLHttpRequest() : new global.ActiveXObject('Microsoft.XMLHTTP');\n\n for (var i in params) {\n if (params.hasOwnProperty(i)) {\n if (query.length > 0) {\n query += '&';\n }\n query += encodeURIComponent(i) + '=' + encodeURIComponent(params[i]);\n }\n }\n if (query.length > 0) {\n query = '?' + query;\n }\n xhr.open('POST', url + query, true);\n if ('withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr.setRequestHeader('Content-Type', 'application/json');\n for (var headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n xhr.setRequestHeader(headerName, headers[headerName]);\n }\n }\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n var _data = void 0,\n parsed = false;\n try {\n _data = JSON.parse(xhr.responseText);\n parsed = true;\n } catch (e) {\n callback({\n error: 'Invalid JSON. Data was: ' + xhr.responseText,\n status: 200,\n data: null\n });\n }\n if (parsed) {\n // prevents double execution.\n callback({\n data: _data,\n status: 200\n });\n }\n } else {\n _this2._log('wrong status code in AJAX response', xhr.status);\n callback({\n status: xhr.status,\n data: null\n });\n }\n }\n };\n setTimeout(function () {\n return xhr.send(JSON.stringify(data));\n }, 20);\n return xhr;\n }\n }, {\n key: '_log',\n value: function _log() {\n (0, _utils.log)('info', arguments);\n }\n }, {\n key: '_debug',\n value: function _debug() {\n if (this._config.debug === true) {\n (0, _utils.log)('debug', arguments);\n }\n }\n }, {\n key: '_websocketSupported',\n value: function _websocketSupported() {\n return !(typeof WebSocket !== 'function' && (typeof WebSocket === 'undefined' ? 'undefined' : _typeof(WebSocket)) !== 'object');\n }\n }, {\n key: '_setFormat',\n value: function _setFormat(format) {\n if (this._formatOverride(format)) {\n return;\n }\n if (format === 'protobuf') {\n throw new Error('not implemented by JSON only Centrifuge client – use client with Protobuf');\n }\n this._binary = false;\n this._methodType = _json.JsonMethodType;\n this._pushType = _json.JsonPushType;\n this._encoder = new _json.JsonEncoder();\n this._decoder = new _json.JsonDecoder();\n }\n }, {\n key: '_formatOverride',\n value: function _formatOverride(format) {\n return false;\n }\n }, {\n key: '_configure',\n value: function _configure(configuration) {\n if (!('Promise' in global)) {\n throw new Error('Promise polyfill required');\n }\n\n Object.assign(this._config, configuration || {});\n this._debug('centrifuge config', this._config);\n\n if (!this._url) {\n throw new Error('url required');\n }\n\n if ((0, _utils.startsWith)(this._url, 'ws') && this._url.indexOf('format=protobuf') > -1) {\n this._setFormat('protobuf');\n } else {\n this._setFormat('json');\n }\n\n if ((0, _utils.startsWith)(this._url, 'http')) {\n this._debug('client will try to connect to SockJS endpoint');\n if (this._config.sockjs !== null) {\n this._debug('SockJS explicitly provided in options');\n this._sockjs = this._config.sockjs;\n } else {\n if (typeof global.SockJS === 'undefined') {\n throw new Error('SockJS not found, use ws:// in url or include SockJS');\n }\n this._debug('use globally defined SockJS');\n this._sockjs = global.SockJS;\n }\n } else {\n this._debug('client will connect to websocket endpoint');\n }\n }\n }, {\n key: '_setStatus',\n value: function _setStatus(newStatus) {\n if (this._status !== newStatus) {\n this._debug('Status', this._status, '->', newStatus);\n this._status = newStatus;\n }\n }\n }, {\n key: '_isDisconnected',\n value: function _isDisconnected() {\n return this._status === 'disconnected';\n }\n }, {\n key: '_isConnecting',\n value: function _isConnecting() {\n return this._status === 'connecting';\n }\n }, {\n key: '_isConnected',\n value: function _isConnected() {\n return this._status === 'connected';\n }\n }, {\n key: '_nextMessageId',\n value: function _nextMessageId() {\n return ++this._messageId;\n }\n }, {\n key: '_resetRetry',\n value: function _resetRetry() {\n this._debug('reset retries count to 0');\n this._retries = 0;\n }\n }, {\n key: '_getRetryInterval',\n value: function _getRetryInterval() {\n var interval = (0, _utils.backoff)(this._retries, this._config.minRetry, this._config.maxRetry);\n\n this._retries += 1;\n return interval;\n }\n }, {\n key: '_abortInflightXHRs',\n value: function _abortInflightXHRs() {\n for (var xhrID in this._xhrs) {\n try {\n this._xhrs[xhrID].abort();\n } catch (e) {\n this._debug('error aborting xhr', e);\n }\n delete this._xhrs[xhrID];\n }\n }\n }, {\n key: '_clearConnectedState',\n value: function _clearConnectedState(reconnect) {\n this._clientID = null;\n this._stopPing();\n\n // fire errbacks of registered outgoing calls.\n for (var id in this._callbacks) {\n if (this._callbacks.hasOwnProperty(id)) {\n var callbacks = this._callbacks[id];\n clearTimeout(callbacks.timeout);\n var errback = callbacks.errback;\n if (!errback) {\n continue;\n }\n errback({ error: this._createErrorObject('disconnected') });\n }\n }\n this._callbacks = {};\n\n // fire unsubscribe events\n for (var channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n var sub = this._subs[channel];\n\n if (reconnect) {\n if (sub._isSuccess()) {\n sub._triggerUnsubscribe();\n sub._recover = true;\n }\n if (sub._shouldResubscribe()) {\n sub._setSubscribing();\n }\n } else {\n sub._setUnsubscribed();\n }\n }\n }\n\n this._abortInflightXHRs();\n\n // clear refresh timer\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n // clear sub refresh timers\n for (var _channel in this._subRefreshTimeouts) {\n if (this._subRefreshTimeouts.hasOwnProperty(_channel) && this._subRefreshTimeouts[_channel]) {\n this._clearSubRefreshTimeout(_channel);\n }\n }\n this._subRefreshTimeouts = {};\n\n if (!this._reconnect) {\n // completely clear subscriptions\n this._subs = {};\n }\n }\n }, {\n key: '_isTransportOpen',\n value: function _isTransportOpen() {\n if (this._isSockjs) {\n return this._transport && this._transport.transport && this._transport.transport.readyState === this._transport.transport.OPEN;\n }\n return this._transport && this._transport.readyState === this._transport.OPEN;\n }\n }, {\n key: '_transportSend',\n value: function _transportSend(commands) {\n if (!commands.length) {\n return true;\n }\n\n if (!this._isTransportOpen()) {\n // resolve pending commands with error if transport is not open\n for (var command in commands) {\n var id = command.id;\n if (!(id in this._callbacks)) {\n continue;\n }\n var callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n var errback = callbacks.errback;\n errback({ error: this._createErrorObject(_errorConnectionClosed, 0) });\n }\n return false;\n }\n this._transport.send(this._encoder.encodeCommands(commands));\n return true;\n }\n }, {\n key: '_setupTransport',\n value: function _setupTransport() {\n var _this3 = this;\n\n this._isSockjs = false;\n\n // detect transport to use - SockJS or Websocket\n if (this._sockjs !== null) {\n var sockjsOptions = {\n transports: this._config.sockjsTransports\n };\n\n if (this._config.sockjsServer !== null) {\n sockjsOptions.server = this._config.sockjsServer;\n }\n this._isSockjs = true;\n this._transport = new this._sockjs(this._url, null, sockjsOptions);\n } else {\n if (!this._websocketSupported()) {\n this._debug('No Websocket support and no SockJS configured, can not connect');\n return;\n }\n this._transport = new WebSocket(this._url);\n if (this._binary === true) {\n this._transport.binaryType = 'arraybuffer';\n }\n }\n\n this._transport.onopen = function () {\n _this3._transportClosed = false;\n\n if (_this3._isSockjs) {\n _this3._transportName = 'sockjs-' + _this3._transport.transport;\n _this3._transport.onheartbeat = function () {\n return _this3._restartPing();\n };\n } else {\n _this3._transportName = 'websocket';\n }\n\n // Can omit method here due to zero value.\n var msg = {\n // method: this._methodType.CONNECT\n };\n\n if (_this3._token || _this3._connectData) {\n msg.params = {};\n }\n\n if (_this3._token) {\n msg.params.token = _this3._token;\n }\n\n if (_this3._connectData) {\n msg.params.data = _this3._connectData;\n }\n\n _this3._latencyStart = new Date();\n _this3._call(msg).then(function (resolveCtx) {\n _this3._connectResponse(_this3._decoder.decodeCommandResult(_this3._methodType.CONNECT, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n var err = rejectCtx.error;\n if (err.code === 109) {\n // token expired.\n _this3._refreshRequired = true;\n }\n _this3._disconnect('connect error', true);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n this._transport.onerror = function (error) {\n _this3._debug('transport level error', error);\n };\n\n this._transport.onclose = function (closeEvent) {\n _this3._transportClosed = true;\n var reason = _errorConnectionClosed;\n var needReconnect = true;\n\n if (closeEvent && 'reason' in closeEvent && closeEvent.reason) {\n try {\n var advice = JSON.parse(closeEvent.reason);\n _this3._debug('reason is an advice object', advice);\n reason = advice.reason;\n needReconnect = advice.reconnect;\n } catch (e) {\n reason = closeEvent.reason;\n _this3._debug('reason is a plain string', reason);\n }\n }\n\n // onTransportClose callback should be executed every time transport was closed.\n // This can be helpful to catch failed connection events (because our disconnect\n // event only called once and every future attempts to connect do not fire disconnect\n // event again).\n if (_this3._config.onTransportClose !== null) {\n _this3._config.onTransportClose({\n event: closeEvent,\n reason: reason,\n reconnect: needReconnect\n });\n }\n\n _this3._disconnect(reason, needReconnect);\n\n if (_this3._reconnect === true) {\n _this3._reconnecting = true;\n var interval = _this3._getRetryInterval();\n\n _this3._debug('reconnect after ' + interval + ' milliseconds');\n setTimeout(function () {\n if (_this3._reconnect === true) {\n if (_this3._refreshRequired) {\n _this3._refresh();\n } else {\n _this3._connect();\n }\n }\n }, interval);\n }\n };\n\n this._transport.onmessage = function (event) {\n _this3._dataReceived(event.data);\n };\n }\n }, {\n key: 'rpc',\n value: function rpc(data) {\n var _this4 = this;\n\n var msg = {\n method: this._methodType.RPC,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(function (resolveCtx) {\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n return _this4._decoder.decodeCommandResult(_this4._methodType.RPC, resolveCtx.result);\n }, function (rejectCtx) {\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n return rejectCtx.error;\n });\n }\n }, {\n key: 'send',\n value: function send(data) {\n var msg = {\n method: this._methodType.SEND,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n var sent = this._transportSend([msg]); // can send async message to server without id set\n if (!sent) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n };\n return Promise.resolve({});\n }\n }, {\n key: 'publish',\n value: function publish(channel, data) {\n var msg = {\n method: this._methodType.PUBLISH,\n params: {\n channel: channel,\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(function (result) {\n if (result.next) {\n result.next();\n }\n return {};\n });\n }\n }, {\n key: '_dataReceived',\n value: function _dataReceived(data) {\n var _this5 = this;\n\n var replies = this._decoder.decodeReplies(data);\n // we have to guarantee order of events in replies processing - i.e. start processing\n // next reply only when we finished processing of current one. Without syncing things in\n // this way we could get wrong publication events order as reply promises resolve\n // on next loop tick so for loop continues before we finished emitting all reply events.\n var p = Promise.resolve();\n\n var _loop = function _loop(i) {\n if (replies.hasOwnProperty(i)) {\n p = p.then(function () {\n return _this5._dispatchReply(replies[i]);\n });\n }\n };\n\n for (var i in replies) {\n _loop(i);\n }\n this._restartPing();\n }\n }, {\n key: '_call',\n value: function _call(msg) {\n var _this6 = this;\n\n return new Promise(function (resolve, reject) {\n var id = _this6._addMessage(msg);\n _this6._registerCall(id, resolve, reject);\n });\n }\n }, {\n key: '_connect',\n value: function _connect() {\n if (this.isConnected()) {\n this._debug('connect called when already connected');\n return;\n }\n if (this._status === 'connecting') {\n return;\n }\n\n this._debug('start connecting');\n this._setStatus('connecting');\n this._clientID = null;\n this._reconnect = true;\n this._setupTransport();\n }\n }, {\n key: '_disconnect',\n value: function _disconnect(reason, shouldReconnect) {\n\n if (this._isDisconnected()) {\n return;\n }\n\n this._debug('disconnected:', reason, shouldReconnect);\n\n var reconnect = shouldReconnect || false;\n\n if (reconnect === false) {\n this._reconnect = false;\n }\n\n this._clearConnectedState(reconnect);\n\n if (!this._isDisconnected()) {\n this._setStatus('disconnected');\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._reconnecting === false) {\n this.emit('disconnect', {\n reason: reason,\n reconnect: reconnect\n });\n }\n }\n\n if (!this._transportClosed) {\n this._transport.close();\n }\n }\n }, {\n key: '_refreshFailed',\n value: function _refreshFailed() {\n this._numRefreshFailed = 0;\n if (!this._isDisconnected()) {\n this._disconnect('refresh failed', false);\n }\n if (this._config.onRefreshFailed !== null) {\n this._config.onRefreshFailed();\n }\n }\n }, {\n key: '_refresh',\n value: function _refresh() {\n var _this7 = this;\n\n // ask application for new connection token.\n this._debug('refresh token');\n\n if (this._config.refreshAttempts === 0) {\n this._debug('refresh attempts set to 0, do not send refresh request at all');\n this._refreshFailed();\n return;\n }\n\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n var clientID = this._clientID;\n var xhrID = this._newXHRID();\n\n var cb = function cb(resp) {\n if (xhrID in _this7._xhrs) {\n delete _this7._xhrs[xhrID];\n }\n if (_this7._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n // We don't perform any connection status related actions here as we are\n // relying on server that must close connection eventually.\n if (resp.error) {\n _this7._debug('error refreshing connection token', resp.error);\n } else {\n _this7._debug('error refreshing connection token: wrong status code', resp.status);\n }\n _this7._numRefreshFailed++;\n if (_this7._refreshTimeout !== null) {\n clearTimeout(_this7._refreshTimeout);\n _this7._refreshTimeout = null;\n }\n if (_this7._config.refreshAttempts !== null && _this7._numRefreshFailed >= _this7._config.refreshAttempts) {\n _this7._refreshFailed();\n return;\n }\n var jitter = Math.round(Math.random() * 1000 * Math.max(_this7._numRefreshFailed, 20));\n var interval = _this7._config.refreshInterval + jitter;\n _this7._refreshTimeout = setTimeout(function () {\n return _this7._refresh();\n }, interval);\n return;\n }\n _this7._numRefreshFailed = 0;\n _this7._token = resp.data.token;\n if (!_this7._token) {\n _this7._refreshFailed();\n return;\n }\n if (_this7._isDisconnected() && _this7._reconnect) {\n _this7._debug('token refreshed, connect from scratch');\n _this7._connect();\n } else {\n _this7._debug('send refreshed token');\n var msg = {\n method: _this7._methodType.REFRESH,\n params: {\n token: _this7._token\n }\n };\n _this7._call(msg).then(function (resolveCtx) {\n _this7._refreshResponse(_this7._decoder.decodeCommandResult(_this7._methodType.REFRESH, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this7._refreshError(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n if (this._config.onRefresh !== null) {\n var context = {};\n this._config.onRefresh(context, cb);\n } else {\n var xhr = this._ajax(this._config.refreshEndpoint, this._config.refreshParams, this._config.refreshHeaders, this._config.refreshData, cb);\n this._xhrs[xhrID] = xhr;\n }\n }\n }, {\n key: '_refreshError',\n value: function _refreshError(err) {\n var _this8 = this;\n\n this._debug('refresh error', err);\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n var interval = this._config.refreshInterval + Math.round(Math.random() * 1000);\n this._refreshTimeout = setTimeout(function () {\n return _this8._refresh();\n }, interval);\n }\n }, {\n key: '_refreshResponse',\n value: function _refreshResponse(result) {\n var _this9 = this;\n\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (result.expires) {\n this._clientID = result.client;\n this._refreshTimeout = setTimeout(function () {\n return _this9._refresh();\n }, this._getTTLMilliseconds(result.ttl));\n }\n }\n }, {\n key: '_newXHRID',\n value: function _newXHRID() {\n this._xhrID++;\n return this._xhrID;\n }\n }, {\n key: '_subRefresh',\n value: function _subRefresh(channel) {\n var _this10 = this;\n\n this._debug('refresh subscription token for channel', channel);\n\n if (this._subRefreshTimeouts[channel] !== undefined) {\n this._clearSubRefreshTimeout(channel);\n } else {\n return;\n }\n\n var clientID = this._clientID;\n var xhrID = this._newXHRID();\n\n var cb = function cb(resp) {\n if (xhrID in _this10._xhrs) {\n delete _this10._xhrs[xhrID];\n }\n if (resp.error || resp.status !== 200 || _this10._clientID !== clientID) {\n return;\n }\n var channelsData = {};\n if (resp.data.channels) {\n for (var i in data.channels) {\n var channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n var token = channelsData[channel];\n if (!token) {\n return;\n }\n var msg = {\n method: _this10._methodType.SUB_REFRESH,\n params: {\n channel: channel,\n token: token\n }\n };\n\n var sub = _this10._getSub(channel);\n if (sub === null) {\n return;\n }\n\n _this10._call(msg).then(function (resolveCtx) {\n _this10._subRefreshResponse(channel, _this10._decoder.decodeCommandResult(_this10._methodType.SUB_REFRESH, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this10._subRefreshError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n var data = {\n client: this._clientID,\n channels: [channel]\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n var xhr = this._ajax(this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n }\n }, {\n key: '_clearSubRefreshTimeout',\n value: function _clearSubRefreshTimeout(channel) {\n if (this._subRefreshTimeouts[channel] !== undefined) {\n clearTimeout(this._subRefreshTimeouts[channel]);\n delete this._subRefreshTimeouts[channel];\n }\n }\n }, {\n key: '_subRefreshError',\n value: function _subRefreshError(channel, err) {\n var _this11 = this;\n\n this._debug('subscription refresh error', channel, err);\n this._clearSubRefreshTimeout(channel);\n var sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n var jitter = Math.round(Math.random() * 1000);\n var subRefreshTimeout = setTimeout(function () {\n return _this11._subRefresh(channel);\n }, this._config.subRefreshInterval + jitter);\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n return;\n }\n }, {\n key: '_subRefreshResponse',\n value: function _subRefreshResponse(channel, result) {\n var _this12 = this;\n\n this._debug('subscription refresh success', channel);\n this._clearSubRefreshTimeout(channel);\n var sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n if (result.expires === true) {\n var subRefreshTimeout = setTimeout(function () {\n return _this12._subRefresh(channel);\n }, this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n return;\n }\n }, {\n key: '_subscribe',\n value: function _subscribe(sub, isResubscribe) {\n var _this13 = this;\n\n this._debug('subscribing on', sub.channel);\n var channel = sub.channel;\n\n if (!(channel in this._subs)) {\n this._subs[channel] = sub;\n }\n\n if (!this.isConnected()) {\n // subscribe will be called later\n sub._setNew();\n return;\n }\n\n sub._setSubscribing(isResubscribe);\n\n var msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel\n }\n };\n\n // If channel name does not start with privateChannelPrefix - then we\n // can just send subscription message to Centrifuge. If channel name\n // starts with privateChannelPrefix - then this is a private channel\n // and we should ask web application backend for permission first.\n if ((0, _utils.startsWith)(channel, this._config.privateChannelPrefix)) {\n // private channel.\n if (this._isSubscribeBatching) {\n this._privateChannels[channel] = true;\n } else {\n this.startSubscribeBatching();\n this._subscribe(sub);\n this.stopSubscribeBatching();\n }\n } else {\n var recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n var seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n var gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n var epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n\n this._call(msg).then(function (resolveCtx) {\n _this13._subscribeResponse(channel, _this13._decoder.decodeCommandResult(_this13._methodType.SUBSCRIBE, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this13._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }\n }, {\n key: '_unsubscribe',\n value: function _unsubscribe(sub) {\n if (this.isConnected()) {\n // No need to unsubscribe in disconnected state - i.e. client already unsubscribed.\n this._addMessage({\n method: this._methodType.UNSUBSCRIBE,\n params: {\n channel: sub.channel\n }\n });\n }\n }\n }, {\n key: '_getTTLMilliseconds',\n value: function _getTTLMilliseconds(ttl) {\n // https://stackoverflow.com/questions/12633405/what-is-the-maximum-delay-for-setinterval\n return Math.min(ttl * 1000, 2147483647);\n }\n }, {\n key: 'getSub',\n value: function getSub(channel) {\n return this._getSub(channel);\n }\n }, {\n key: '_getSub',\n value: function _getSub(channel) {\n var sub = this._subs[channel];\n if (!sub) {\n return null;\n }\n return sub;\n }\n }, {\n key: '_connectResponse',\n value: function _connectResponse(result) {\n var _this14 = this;\n\n var wasReconnecting = this._reconnecting;\n this._reconnecting = false;\n this._resetRetry();\n this._refreshRequired = false;\n\n if (this.isConnected()) {\n return;\n }\n\n if (this._latencyStart !== null) {\n this._latency = new Date().getTime() - this._latencyStart.getTime();\n this._latencyStart = null;\n }\n\n this._clientID = result.client;\n this._setStatus('connected');\n\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n }\n\n if (result.expires) {\n this._refreshTimeout = setTimeout(function () {\n return _this14._refresh();\n }, this._getTTLMilliseconds(result.ttl));\n }\n\n this.startBatching();\n this.startSubscribeBatching();\n for (var channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n var sub = this._subs[channel];\n if (sub._shouldResubscribe()) {\n this._subscribe(sub, wasReconnecting);\n }\n }\n }\n this.stopSubscribeBatching();\n this.stopBatching();\n\n this._startPing();\n\n var ctx = {\n client: result.client,\n transport: this._transportName,\n latency: this._latency\n };\n if (result.data) {\n ctx.data = result.data;\n }\n\n this.emit('connect', ctx);\n }\n }, {\n key: '_stopPing',\n value: function _stopPing() {\n if (this._pongTimeout !== null) {\n clearTimeout(this._pongTimeout);\n this._pongTimeout = null;\n }\n if (this._pingTimeout !== null) {\n clearTimeout(this._pingTimeout);\n this._pingTimeout = null;\n }\n }\n }, {\n key: '_startPing',\n value: function _startPing() {\n var _this15 = this;\n\n if (this._config.ping !== true || this._config.pingInterval <= 0) {\n return;\n }\n if (!this.isConnected()) {\n return;\n }\n\n this._pingTimeout = setTimeout(function () {\n if (!_this15.isConnected()) {\n _this15._stopPing();\n return;\n }\n _this15.ping();\n _this15._pongTimeout = setTimeout(function () {\n _this15._disconnect('no ping', true);\n }, _this15._config.pongWaitTimeout);\n }, this._config.pingInterval);\n }\n }, {\n key: '_restartPing',\n value: function _restartPing() {\n this._stopPing();\n this._startPing();\n }\n }, {\n key: '_subscribeError',\n value: function _subscribeError(channel, error) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n if (error.code === 0 && error.message === _errorTimeout) {\n // client side timeout.\n this._disconnect('timeout', true);\n return;\n }\n sub._setSubscribeError(error);\n }\n }, {\n key: '_subscribeResponse',\n value: function _subscribeResponse(channel, result) {\n var _this16 = this;\n\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n\n var recovered = false;\n if ('recovered' in result) {\n recovered = result.recovered;\n }\n sub._setSubscribeSuccess(recovered);\n\n var pubs = result.publications;\n\n if (pubs && pubs.length > 0) {\n // handle missed pubs.\n pubs = pubs.reverse();\n for (var i in pubs) {\n if (pubs.hasOwnProperty(i)) {\n this._handlePublication(channel, pubs[i]);\n }\n }\n } else {\n if (result.recoverable) {\n this._lastSeq[channel] = result.seq || 0;\n this._lastGen[channel] = result.gen || 0;\n }\n }\n\n this._lastEpoch[channel] = result.epoch || '';\n\n if (result.recoverable) {\n sub._recoverable = true;\n }\n\n if (result.expires === true) {\n var subRefreshTimeout = setTimeout(function () {\n return _this16._subRefresh(channel);\n }, this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n }\n }, {\n key: '_handleReply',\n value: function _handleReply(reply, next) {\n var id = reply.id;\n var result = reply.result;\n\n if (!(id in this._callbacks)) {\n next();\n return;\n }\n var callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n\n if (!(0, _utils.errorExists)(reply)) {\n var callback = callbacks.callback;\n if (!callback) {\n return;\n }\n callback({ result: result, next: next });\n } else {\n var errback = callbacks.errback;\n if (!errback) {\n next();\n return;\n }\n var error = reply.error;\n errback({ error: error, next: next });\n }\n }\n }, {\n key: '_handleJoin',\n value: function _handleJoin(channel, join) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('join', join);\n }\n }, {\n key: '_handleLeave',\n value: function _handleLeave(channel, leave) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('leave', leave);\n }\n }, {\n key: '_handleUnsub',\n value: function _handleUnsub(channel, unsub) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.unsubscribe();\n if (unsub.resubscribe === true) {\n sub.subscribe();\n }\n }\n }, {\n key: '_handlePublication',\n value: function _handlePublication(channel, pub) {\n var sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (pub.seq !== undefined) {\n this._lastSeq[channel] = pub.seq;\n }\n if (pub.gen !== undefined) {\n this._lastGen[channel] = pub.gen;\n }\n sub.emit('publish', pub);\n }\n }, {\n key: '_handleMessage',\n value: function _handleMessage(message) {\n this.emit('message', message.data);\n }\n }, {\n key: '_handlePush',\n value: function _handlePush(data, next) {\n var push = this._decoder.decodePush(data);\n var type = 0;\n if ('type' in push) {\n type = push['type'];\n }\n var channel = push.channel;\n\n if (type === this._pushType.PUBLICATION) {\n var pub = this._decoder.decodePushData(this._pushType.PUBLICATION, push.data);\n this._handlePublication(channel, pub);\n } else if (type === this._pushType.MESSAGE) {\n var message = this._decoder.decodePushData(this._pushType.MESSAGE, push.data);\n this._handleMessage(message);\n } else if (type === this._pushType.JOIN) {\n var join = this._decoder.decodePushData(this._pushType.JOIN, push.data);\n this._handleJoin(channel, join);\n } else if (type === this._pushType.LEAVE) {\n var leave = this._decoder.decodePushData(this._pushType.LEAVE, push.data);\n this._handleLeave(channel, leave);\n } else if (type === this._pushType.UNSUB) {\n var unsub = this._decoder.decodePushData(this._pushType.UNSUB, push.data);\n this._handleUnsub(channel, unsub);\n }\n next();\n }\n }, {\n key: '_dispatchReply',\n value: function _dispatchReply(reply) {\n var next;\n var p = new Promise(function (resolve) {\n next = resolve;\n });\n\n if (reply === undefined || reply === null) {\n this._debug('dispatch: got undefined or null reply');\n next();\n return p;\n }\n\n var id = reply.id;\n\n if (id && id > 0) {\n this._handleReply(reply, next);\n } else {\n this._handlePush(reply.result, next);\n }\n\n return p;\n }\n }, {\n key: '_flush',\n value: function _flush() {\n var messages = this._messages.slice(0);\n this._messages = [];\n this._transportSend(messages);\n }\n }, {\n key: '_ping',\n value: function _ping() {\n var _this17 = this;\n\n var msg = {\n method: this._methodType.PING\n };\n this._call(msg).then(function (resolveCtx) {\n _this17._pingResponse(_this17._decoder.decodeCommandResult(_this17._methodType.PING, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this17._debug('ping error', rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }, {\n key: '_pingResponse',\n value: function _pingResponse(result) {\n if (!this.isConnected()) {\n return;\n }\n this._stopPing();\n this._startPing();\n }\n }, {\n key: '_getLastSeq',\n value: function _getLastSeq(channel) {\n var lastSeq = this._lastSeq[channel];\n if (lastSeq) {\n return lastSeq;\n }\n return 0;\n }\n }, {\n key: '_getLastGen',\n value: function _getLastGen(channel) {\n var lastGen = this._lastGen[channel];\n if (lastGen) {\n return lastGen;\n }\n return 0;\n }\n }, {\n key: '_getLastEpoch',\n value: function _getLastEpoch(channel) {\n var lastEpoch = this._lastEpoch[channel];\n if (lastEpoch) {\n return lastEpoch;\n }\n return '';\n }\n }, {\n key: '_createErrorObject',\n value: function _createErrorObject(message, code) {\n var errObject = {\n message: message,\n code: code || 0\n };\n\n return errObject;\n }\n }, {\n key: '_registerCall',\n value: function _registerCall(id, callback, errback) {\n var _this18 = this;\n\n this._callbacks[id] = {\n callback: callback,\n errback: errback,\n timeout: null\n };\n this._callbacks[id].timeout = setTimeout(function () {\n delete _this18._callbacks[id];\n if ((0, _utils.isFunction)(errback)) {\n errback({ error: _this18._createErrorObject(_errorTimeout) });\n }\n }, this._config.timeout);\n }\n }, {\n key: '_addMessage',\n value: function _addMessage(message) {\n var id = this._nextMessageId();\n message.id = id;\n if (this._isBatching === true) {\n this._messages.push(message);\n } else {\n this._transportSend([message]);\n }\n return id;\n }\n }, {\n key: 'isConnected',\n value: function isConnected() {\n return this._isConnected();\n }\n }, {\n key: 'connect',\n value: function connect() {\n this._connect();\n }\n }, {\n key: 'disconnect',\n value: function disconnect() {\n this._disconnect('client', false);\n }\n }, {\n key: 'ping',\n value: function ping() {\n return this._ping();\n }\n }, {\n key: 'startBatching',\n value: function startBatching() {\n // start collecting messages without sending them to Centrifuge until flush\n // method called\n this._isBatching = true;\n }\n }, {\n key: 'stopBatching',\n value: function stopBatching() {\n this._isBatching = false;\n this._flush();\n }\n }, {\n key: 'startSubscribeBatching',\n value: function startSubscribeBatching() {\n // start collecting private channels to create bulk authentication\n // request to subscribeEndpoint when stopSubscribeBatching will be called\n this._isSubscribeBatching = true;\n }\n }, {\n key: 'stopSubscribeBatching',\n value: function stopSubscribeBatching() {\n var _this19 = this;\n\n // create request to subscribeEndpoint with collected private channels\n // to ask if this client can subscribe on each channel\n this._isSubscribeBatching = false;\n var authChannels = this._privateChannels;\n this._privateChannels = {};\n\n var channels = [];\n\n for (var channel in authChannels) {\n if (authChannels.hasOwnProperty(channel)) {\n var sub = this._getSub(channel);\n if (!sub) {\n continue;\n }\n channels.push(channel);\n }\n }\n\n if (channels.length === 0) {\n this._debug('no private channels found, no need to make request');\n return;\n }\n\n var data = {\n client: this._clientID,\n channels: channels\n };\n\n var clientID = this._clientID;\n var xhrID = this._newXHRID();\n\n var cb = function cb(resp) {\n if (xhrID in _this19._xhrs) {\n delete _this19._xhrs[xhrID];\n }\n if (_this19._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n _this19._debug('authorization request failed');\n for (var i in channels) {\n if (channels.hasOwnProperty(i)) {\n var _channel2 = channels[i];\n _this19._subscribeError(_channel2, _this19._createErrorObject('authorization request failed'));\n }\n }\n return;\n }\n\n var channelsData = {};\n if (resp.data.channels) {\n for (var _i in resp.data.channels) {\n var channelData = resp.data.channels[_i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n // try to send all subscriptions in one request.\n var batch = false;\n\n if (!_this19._isBatching) {\n _this19.startBatching();\n batch = true;\n }\n\n for (var _i2 in channels) {\n if (channels.hasOwnProperty(_i2)) {\n var _ret2 = function () {\n var channel = channels[_i2];\n var token = channelsData[channel];\n\n if (!token) {\n // subscription:error\n _this19._subscribeError(channel, _this19._createErrorObject('permission denied', 103));\n return 'continue';\n } else {\n var msg = {\n method: _this19._methodType.SUBSCRIBE,\n params: {\n channel: channel,\n token: token\n }\n };\n\n var _sub = _this19._getSub(channel);\n if (_sub === null) {\n return 'continue';\n }\n\n var recover = _sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n var seq = _this19._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n var gen = _this19._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n var epoch = _this19._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n _this19._call(msg).then(function (resolveCtx) {\n _this19._subscribeResponse(channel, _this19._decoder.decodeCommandResult(_this19._methodType.SUBSCRIBE, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n _this19._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }();\n\n if (_ret2 === 'continue') continue;\n }\n }\n\n if (batch) {\n _this19.stopBatching();\n }\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n var xhr = this._ajax(this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n }\n }, {\n key: 'subscribe',\n value: function subscribe(channel, events) {\n var currentSub = this._getSub(channel);\n if (currentSub !== null) {\n currentSub._setEvents(events);\n if (currentSub._isUnsubscribed()) {\n currentSub.subscribe();\n }\n return currentSub;\n }\n var sub = new _subscription2.default(this, channel, events);\n this._subs[channel] = sub;\n sub.subscribe();\n return sub;\n }\n }]);\n\n return Centrifuge;\n}(_events2.default);\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3)))\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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 _events = __webpack_require__(6);\n\nvar _events2 = _interopRequireDefault(_events);\n\nvar _utils = __webpack_require__(7);\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 _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\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 _STATE_NEW = 0;\nvar _STATE_SUBSCRIBING = 1;\nvar _STATE_SUCCESS = 2;\nvar _STATE_ERROR = 3;\nvar _STATE_UNSUBSCRIBED = 4;\n\nvar Subscription = function (_EventEmitter) {\n _inherits(Subscription, _EventEmitter);\n\n function Subscription(centrifuge, channel, events) {\n _classCallCheck(this, Subscription);\n\n var _this = _possibleConstructorReturn(this, (Subscription.__proto__ || Object.getPrototypeOf(Subscription)).call(this));\n\n _this.channel = channel;\n _this._centrifuge = centrifuge;\n _this._status = _STATE_NEW;\n _this._error = null;\n _this._isResubscribe = false;\n _this._ready = false;\n _this._subscriptionPromise = null;\n _this._noResubscribe = false;\n _this._recoverable = false;\n _this._recover = false;\n _this._setEvents(events);\n _this._initializePromise();\n _this._promises = {};\n _this.on('error', function (errContext) {\n this._centrifuge._debug('subscription error', errContext);\n });\n return _this;\n }\n\n _createClass(Subscription, [{\n key: '_initializePromise',\n value: function _initializePromise() {\n var _this2 = this;\n\n // this helps us to wait until subscription will successfully\n // subscribe and call actions such as presence, history etc in\n // synchronous way.\n this._ready = false;\n\n this._subscriptionPromise = new Promise(function (resolve, reject) {\n _this2._resolve = function (value) {\n _this2._ready = true;\n resolve(value);\n };\n _this2._reject = function (err) {\n _this2._ready = true;\n reject(err);\n };\n }).then(function () {}, function () {});\n }\n }, {\n key: '_needRecover',\n value: function _needRecover() {\n return this._recoverable === true && this._recover === true;\n }\n }, {\n key: '_setEvents',\n value: function _setEvents(events) {\n if (!events) {\n return;\n }\n if ((0, _utils.isFunction)(events)) {\n // events is just a function to handle publication received from channel.\n this.on('publish', events);\n } else if (Object.prototype.toString.call(events) === Object.prototype.toString.call({})) {\n var knownEvents = ['publish', 'join', 'leave', 'unsubscribe', 'subscribe', 'error'];\n for (var i = 0, l = knownEvents.length; i < l; i++) {\n var ev = knownEvents[i];\n if (ev in events) {\n this.on(ev, events[ev]);\n }\n }\n }\n }\n }, {\n key: '_isNew',\n value: function _isNew() {\n return this._status === _STATE_NEW;\n }\n }, {\n key: '_isUnsubscribed',\n value: function _isUnsubscribed() {\n return this._status === _STATE_UNSUBSCRIBED;\n }\n }, {\n key: '_isSubscribing',\n value: function _isSubscribing() {\n return this._status === _STATE_SUBSCRIBING;\n }\n }, {\n key: '_isReady',\n value: function _isReady() {\n return this._status === _STATE_SUCCESS || this._status === _STATE_ERROR;\n }\n }, {\n key: '_isSuccess',\n value: function _isSuccess() {\n return this._status === _STATE_SUCCESS;\n }\n }, {\n key: '_isError',\n value: function _isError() {\n return this._status === _STATE_ERROR;\n }\n }, {\n key: '_setNew',\n value: function _setNew() {\n this._status = _STATE_NEW;\n }\n }, {\n key: '_setSubscribing',\n value: function _setSubscribing(isResubscribe) {\n this._isResubscribe = isResubscribe || false;\n if (this._ready === true) {\n // new promise for this subscription\n this._initializePromise();\n }\n this._status = _STATE_SUBSCRIBING;\n }\n }, {\n key: '_setSubscribeSuccess',\n value: function _setSubscribeSuccess(recovered) {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._status = _STATE_SUCCESS;\n var successContext = this._getSubscribeSuccessContext(recovered);\n\n this._recover = false;\n this.emit('subscribe', successContext);\n this._resolve(successContext);\n for (var to in this._promises) {\n clearTimeout(to);\n this._promises[to].resolve();\n delete this._promises[to];\n }\n }\n }, {\n key: '_setSubscribeError',\n value: function _setSubscribeError(err) {\n if (this._status === _STATE_ERROR) {\n return;\n }\n this._status = _STATE_ERROR;\n this._error = err;\n var errContext = this._getSubscribeErrorContext();\n this.emit('error', errContext);\n this._reject(errContext);\n for (var to in this._promises) {\n clearTimeout(to);\n this._promises[to].reject(err);\n delete this._promises[to];\n }\n }\n }, {\n key: '_triggerUnsubscribe',\n value: function _triggerUnsubscribe() {\n this.emit('unsubscribe', {\n channel: this.channel\n });\n }\n }, {\n key: '_setUnsubscribed',\n value: function _setUnsubscribed(noResubscribe) {\n this._centrifuge._clearSubRefreshTimeout(this.channel);\n if (this._status === _STATE_UNSUBSCRIBED) {\n return;\n }\n var needTrigger = this._status === _STATE_SUCCESS;\n this._status = _STATE_UNSUBSCRIBED;\n if (noResubscribe === true) {\n this._recover = false;\n this._noResubscribe = true;\n delete this._centrifuge._lastSeq[this.channel];\n delete this._centrifuge._lastGen[this.channel];\n delete this._centrifuge._lastEpoch[this.channel];\n }\n if (needTrigger) {\n this._triggerUnsubscribe();\n }\n }\n }, {\n key: '_shouldResubscribe',\n value: function _shouldResubscribe() {\n return !this._noResubscribe;\n }\n }, {\n key: '_getSubscribeSuccessContext',\n value: function _getSubscribeSuccessContext(recovered) {\n return {\n channel: this.channel,\n isResubscribe: this._isResubscribe,\n recovered: recovered\n };\n }\n }, {\n key: '_getSubscribeErrorContext',\n value: function _getSubscribeErrorContext() {\n var subscribeErrorContext = this._error;\n subscribeErrorContext.channel = this.channel;\n subscribeErrorContext.isResubscribe = this._isResubscribe;\n return subscribeErrorContext;\n }\n }, {\n key: 'ready',\n value: function ready(callback, errback) {\n if (this._ready) {\n if (this._isSuccess()) {\n callback(this._getSubscribeSuccessContext());\n } else {\n errback(this._getSubscribeErrorContext());\n }\n }\n }\n }, {\n key: 'subscribe',\n value: function subscribe() {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._noResubscribe = false;\n this._centrifuge._subscribe(this);\n }\n }, {\n key: 'unsubscribe',\n value: function unsubscribe() {\n this._setUnsubscribed(true);\n this._centrifuge._unsubscribe(this);\n }\n }, {\n key: '_methodCall',\n value: function _methodCall(message, type) {\n var _this3 = this;\n\n var methodCallPromise = new Promise(function (resolve, reject) {\n var subPromise = void 0;\n if (_this3._isSuccess()) {\n subPromise = Promise.resolve();\n } else if (_this3._isError()) {\n subPromise = Promise.reject(_this3._error);\n } else {\n subPromise = new Promise(function (res, rej) {\n var timeout = setTimeout(function () {\n rej({ 'code': 0, 'message': 'timeout' });\n }, _this3._centrifuge._config.timeout);\n _this3._promises[timeout] = {\n resolve: res,\n reject: rej\n };\n });\n }\n subPromise.then(function () {\n return _this3._centrifuge._call(message).then(function (resolveCtx) {\n resolve(_this3._centrifuge._decoder.decodeCommandResult(type, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, function (rejectCtx) {\n reject(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }, function (error) {\n reject(error);\n });\n });\n return methodCallPromise;\n }\n }, {\n key: 'publish',\n value: function publish(data) {\n return this._methodCall({\n method: this._centrifuge._methodType.PUBLISH,\n params: {\n channel: this.channel,\n data: data\n }\n }, this._centrifuge._methodType.PUBLISH);\n }\n }, {\n key: 'presence',\n value: function presence() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE);\n }\n }, {\n key: 'presenceStats',\n value: function presenceStats() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE_STATS,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE_STATS);\n }\n }, {\n key: 'history',\n value: function history() {\n return this._methodCall({\n method: this._centrifuge._methodType.HISTORY,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.HISTORY);\n }\n }]);\n\n return Subscription;\n}(_events2.default);\n\nexports.default = Subscription;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar JsonMethodType = exports.JsonMethodType = {\n CONNECT: 0,\n SUBSCRIBE: 1,\n UNSUBSCRIBE: 2,\n PUBLISH: 3,\n PRESENCE: 4,\n PRESENCE_STATS: 5,\n HISTORY: 6,\n PING: 7,\n SEND: 8,\n RPC: 9,\n REFRESH: 10,\n SUB_REFRESH: 11\n};\n\nvar JsonPushType = exports.JsonPushType = {\n PUBLICATION: 0,\n JOIN: 1,\n LEAVE: 2,\n UNSUB: 3,\n MESSAGE: 4\n};\n\nvar JsonEncoder = exports.JsonEncoder = function () {\n function JsonEncoder() {\n _classCallCheck(this, JsonEncoder);\n }\n\n _createClass(JsonEncoder, [{\n key: 'encodeCommands',\n value: function encodeCommands(commands) {\n var encodedCommands = [];\n for (var i in commands) {\n if (commands.hasOwnProperty(i)) {\n encodedCommands.push(JSON.stringify(commands[i]));\n }\n }\n return encodedCommands.join('\\n');\n }\n }]);\n\n return JsonEncoder;\n}();\n\nvar JsonDecoder = exports.JsonDecoder = function () {\n function JsonDecoder() {\n _classCallCheck(this, JsonDecoder);\n }\n\n _createClass(JsonDecoder, [{\n key: 'decodeReplies',\n value: function decodeReplies(data) {\n var replies = [];\n var encodedReplies = data.split('\\n');\n for (var i in encodedReplies) {\n if (encodedReplies.hasOwnProperty(i)) {\n if (!encodedReplies[i]) {\n continue;\n }\n var reply = JSON.parse(encodedReplies[i]);\n replies.push(reply);\n }\n }\n return replies;\n }\n }, {\n key: 'decodeCommandResult',\n value: function decodeCommandResult(methodType, data) {\n return data;\n }\n }, {\n key: 'decodePush',\n value: function decodePush(data) {\n return data;\n }\n }, {\n key: 'decodePushData',\n value: function decodePushData(pushType, data) {\n return data;\n }\n }]);\n\n return JsonDecoder;\n}();\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Writer;\r\n\r\nvar util = __webpack_require__(2);\r\n\r\nvar BufferWriter; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n base64 = util.base64,\r\n utf8 = util.utf8;\r\n\r\n/**\r\n * Constructs a new writer operation instance.\r\n * @classdesc Scheduled writer operation.\r\n * @constructor\r\n * @param {function(*, Uint8Array, number)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {*} val Value to write\r\n * @ignore\r\n */\r\nfunction Op(fn, len, val) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(Uint8Array, number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {Writer.Op|undefined}\r\n */\r\n this.next = undefined;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val; // type varies\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state instance.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n\r\n /**\r\n * Next state.\r\n * @type {State|null}\r\n */\r\n this.next = writer.states;\r\n}\r\n\r\n/**\r\n * Constructs a new writer instance.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * Linked forked states.\r\n * @type {Object|null}\r\n */\r\n this.states = null;\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling operations with already prepared values.\r\n}\r\n\r\n/**\r\n * Creates a new writer.\r\n * @function\r\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\r\n */\r\nWriter.create = util.Buffer\r\n ? function create_buffer_setup() {\r\n return (Writer.create = function create_buffer() {\r\n return new BufferWriter();\r\n })();\r\n }\r\n /* istanbul ignore next */\r\n : function create_array() {\r\n return new Writer();\r\n };\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nWriter.alloc = function alloc(size) {\r\n return new util.Array(size);\r\n};\r\n\r\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\r\n/* istanbul ignore else */\r\nif (util.Array !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n * @private\r\n */\r\nWriter.prototype._push = function push(fn, len, val) {\r\n this.tail = this.tail.next = new Op(fn, len, val);\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(val, buf, pos) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\nfunction writeVarint32(val, buf, pos) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Constructs a new varint writer operation instance.\r\n * @classdesc Scheduled varint writer operation.\r\n * @extends Op\r\n * @constructor\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @ignore\r\n */\r\nfunction VarintOp(len, val) {\r\n this.len = len;\r\n this.next = undefined;\r\n this.val = val;\r\n}\r\n\r\nVarintOp.prototype = Object.create(Op.prototype);\r\nVarintOp.prototype.fn = writeVarint32;\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.uint32 = function write_uint32(value) {\r\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\r\n // uint32 is by far the most frequently used operation and benefits significantly from this.\r\n this.len += (this.tail = this.tail.next = new VarintOp(\r\n (value = value >>> 0)\r\n < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5,\r\n value)).len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sint32 = function write_sint32(value) {\r\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\r\n};\r\n\r\nfunction writeVarint64(val, buf, pos) {\r\n while (val.hi) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n while (val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = val.lo >>> 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.int64 = Writer.prototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sint64 = function write_sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bool = function write_bool(value) {\r\n return this._push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fixed32 = function write_fixed32(value) {\r\n return this._push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as fixed 32 bits.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as fixed 64 bits.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.float = function write_float(value) {\r\n return this._push(util.float.writeFloatLE, 4, value);\r\n};\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.double = function write_double(value) {\r\n return this._push(util.float.writeDoubleLE, 8, value);\r\n};\r\n\r\nvar writeBytes = util.Array.prototype.set\r\n ? function writeBytes_set(val, buf, pos) {\r\n buf.set(val, pos); // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytes_for(val, buf, pos) {\r\n for (var i = 0; i < val.length; ++i)\r\n buf[pos + i] = val[i];\r\n };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (!len)\r\n return this._push(writeByte, 1, 0);\r\n if (util.isString(value)) {\r\n var buf = Writer.alloc(len = base64.length(value));\r\n base64.decode(value, buf, 0);\r\n value = buf;\r\n }\r\n return this.uint32(len)._push(writeBytes, len, value);\r\n};\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.string = function write_string(value) {\r\n var len = utf8.length(value);\r\n return len\r\n ? this.uint32(len)._push(utf8.write, len, value)\r\n : this._push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fork = function fork() {\r\n this.states = new State(this);\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.reset = function reset() {\r\n if (this.states) {\r\n this.head = this.states.head;\r\n this.tail = this.states.tail;\r\n this.len = this.states.len;\r\n this.states = this.states.next;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset().uint32(len);\r\n if (len) {\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriter.prototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = this.constructor.alloc(this.len),\r\n pos = 0;\r\n while (head) {\r\n head.fn(head.val, buf, pos);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n // this.head = this.tail = null;\r\n return buf;\r\n};\r\n\r\nWriter._configure = function(BufferWriter_) {\r\n BufferWriter = BufferWriter_;\r\n};\r\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Reader;\r\n\r\nvar util = __webpack_require__(2);\r\n\r\nvar BufferReader; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n utf8 = util.utf8;\r\n\r\n/* istanbul ignore next */\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader instance using the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n\r\n /**\r\n * Read buffer.\r\n * @type {Uint8Array}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\nvar create_array = typeof Uint8Array !== \"undefined\"\r\n ? function create_typed_array(buffer) {\r\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n if (Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n };\r\n\r\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array|Buffer} buffer Buffer to read from\r\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n * @throws {Error} If `buffer` is not a valid buffer\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n return (Reader.create = function create_buffer(buffer) {\r\n return util.Buffer.isBuffer(buffer)\r\n ? new BufferReader(buffer)\r\n /* istanbul ignore next */\r\n : create_array(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : create_array;\r\n\r\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.uint32 = (function read_uint32_setup() {\r\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\r\n return function read_uint32() {\r\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n\r\n /* istanbul ignore if */\r\n if ((this.pos += 5) > this.len) {\r\n this.pos = this.len;\r\n throw indexOutOfRange(this, 10);\r\n }\r\n return value;\r\n };\r\n})();\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.int32 = function read_int32() {\r\n return this.uint32() | 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sint32 = function read_sint32() {\r\n var value = this.uint32();\r\n return value >>> 1 ^ -(value & 1) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readLongVarint() {\r\n // tends to deopt with local vars for octet etc.\r\n var bits = new LongBits(0, 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (; i < 4; ++i) {\r\n // 1st..4th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 5th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n i = 0;\r\n } else {\r\n for (; i < 3; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 1st..3th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 4th\r\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\r\n return bits;\r\n }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (; i < 5; ++i) {\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n } else {\r\n for (; i < 5; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n }\r\n /* istanbul ignore next */\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @name Reader#int64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @name Reader#uint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @name Reader#sint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReader.prototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\r\n return (buf[end - 4]\r\n | buf[end - 3] << 8\r\n | buf[end - 2] << 16\r\n | buf[end - 1] << 24) >>> 0;\r\n}\r\n\r\n/**\r\n * Reads fixed 32 bits as an unsigned 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a signed 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sfixed32 = function read_sfixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @name Reader#fixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @name Reader#sfixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.float = function read_float() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readFloatLE(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.double = function read_double() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readDoubleLE(this.buf, this.pos);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReader.prototype.bytes = function read_bytes() {\r\n var length = this.uint32(),\r\n start = this.pos,\r\n end = this.pos + length;\r\n\r\n /* istanbul ignore if */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\r\n if (Array.isArray(this.buf)) // plain array\r\n return this.buf.slice(start, end);\r\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n ? new this.buf.constructor(0)\r\n : this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReader.prototype.string = function read_string() {\r\n var bytes = this.bytes();\r\n return utf8.read(bytes, 0, bytes.length);\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore if */\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n } else {\r\n do {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n do { // eslint-disable-line no-constant-condition\r\n if ((wireType = this.uint32() & 7) === 4)\r\n break;\r\n this.skipType(wireType);\r\n } while (true);\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\r\n }\r\n return this;\r\n};\r\n\r\nReader._configure = function(BufferReader_) {\r\n BufferReader = BufferReader_;\r\n\r\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\r\n util.merge(Reader.prototype, {\r\n\r\n int64: function read_int64() {\r\n return readLongVarint.call(this)[fn](false);\r\n },\r\n\r\n uint64: function read_uint64() {\r\n return readLongVarint.call(this)[fn](true);\r\n },\r\n\r\n sint64: function read_sint64() {\r\n return readLongVarint.call(this).zzDecode()[fn](false);\r\n },\r\n\r\n fixed64: function read_fixed64() {\r\n return readFixed64.call(this)[fn](true);\r\n },\r\n\r\n sfixed64: function read_sfixed64() {\r\n return readFixed64.call(this)[fn](false);\r\n }\r\n\r\n });\r\n};\r\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = OneOf;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = __webpack_require__(4);\r\n((OneOf.prototype = Object.create(ReflectionObject.prototype)).constructor = OneOf).className = \"OneOf\";\r\n\r\nvar Field = __webpack_require__(5),\r\n util = __webpack_require__(0);\r\n\r\n/**\r\n * Constructs a new oneof instance.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]|Object.} [fieldNames] Field names\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction OneOf(name, fieldNames, options, comment) {\r\n if (!Array.isArray(fieldNames)) {\r\n options = fieldNames;\r\n fieldNames = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n\r\n /* istanbul ignore if */\r\n if (!(fieldNames === undefined || Array.isArray(fieldNames)))\r\n throw TypeError(\"fieldNames must be an Array\");\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {string[]}\r\n */\r\n this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n /**\r\n * Fields that belong to this oneof as an array for iteration.\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n this.fieldsArray = []; // declared readonly for conformance, possibly not yet added to parent\r\n\r\n /**\r\n * Comment for this field.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Oneof descriptor.\r\n * @interface IOneOf\r\n * @property {Array.} oneof Oneof field names\r\n * @property {Object.} [options] Oneof options\r\n */\r\n\r\n/**\r\n * Constructs a oneof from a oneof descriptor.\r\n * @param {string} name Oneof name\r\n * @param {IOneOf} json Oneof descriptor\r\n * @returns {OneOf} Created oneof\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nOneOf.fromJSON = function fromJSON(name, json) {\r\n return new OneOf(name, json.oneof, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this oneof to a oneof descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IOneOf} Oneof descriptor\r\n */\r\nOneOf.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"oneof\" , this.oneof,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds the fields of the specified oneof to the parent if not already done so.\r\n * @param {OneOf} oneof The oneof\r\n * @returns {undefined}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction addFieldsToParent(oneof) {\r\n if (oneof.parent)\r\n for (var i = 0; i < oneof.fieldsArray.length; ++i)\r\n if (!oneof.fieldsArray[i].parent)\r\n oneof.parent.add(oneof.fieldsArray[i]);\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof and removes it from its current parent, if any.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOf.prototype.add = function add(field) {\r\n\r\n /* istanbul ignore if */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field must be a Field\");\r\n\r\n if (field.parent && field.parent !== this.parent)\r\n field.parent.remove(field);\r\n this.oneof.push(field.name);\r\n this.fieldsArray.push(field);\r\n field.partOf = this; // field.parent remains null\r\n addFieldsToParent(this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a field from this oneof and puts it back to the oneof's parent.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOf.prototype.remove = function remove(field) {\r\n\r\n /* istanbul ignore if */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field must be a Field\");\r\n\r\n var index = this.fieldsArray.indexOf(field);\r\n\r\n /* istanbul ignore if */\r\n if (index < 0)\r\n throw Error(field + \" is not a member of \" + this);\r\n\r\n this.fieldsArray.splice(index, 1);\r\n index = this.oneof.indexOf(field.name);\r\n\r\n /* istanbul ignore else */\r\n if (index > -1) // theoretical\r\n this.oneof.splice(index, 1);\r\n\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOf.prototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n var self = this;\r\n // Collect present fields\r\n for (var i = 0; i < this.oneof.length; ++i) {\r\n var field = parent.get(this.oneof[i]);\r\n if (field && !field.partOf) {\r\n field.partOf = self;\r\n self.fieldsArray.push(field);\r\n }\r\n }\r\n // Add not yet present fields\r\n addFieldsToParent(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOf.prototype.onRemove = function onRemove(parent) {\r\n for (var i = 0, field; i < this.fieldsArray.length; ++i)\r\n if ((field = this.fieldsArray[i]).parent)\r\n field.parent.remove(field);\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link OneOf.d} (TypeScript).\r\n * @typedef OneOfDecorator\r\n * @type {function}\r\n * @param {Object} prototype Target prototype\r\n * @param {string} oneofName OneOf name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * OneOf decorator (TypeScript).\r\n * @function\r\n * @param {...string} fieldNames Field names\r\n * @returns {OneOfDecorator} Decorator function\r\n * @template T extends string\r\n */\r\nOneOf.d = function decorateOneOf() {\r\n var fieldNames = new Array(arguments.length),\r\n index = 0;\r\n while (index < arguments.length)\r\n fieldNames[index] = arguments[index++];\r\n return function oneOfDecorator(prototype, oneofName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new OneOf(oneofName, fieldNames));\r\n Object.defineProperty(prototype, oneofName, {\r\n get: util.oneOfGetter(fieldNames),\r\n set: util.oneOfSetter(fieldNames)\r\n });\r\n };\r\n};\r\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Message;\r\n\r\nvar util = __webpack_require__(2);\r\n\r\n/**\r\n * Constructs a new message instance.\r\n * @classdesc Abstract runtime message.\r\n * @constructor\r\n * @param {Properties} [properties] Properties to set\r\n * @template T extends object\r\n */\r\nfunction Message(properties) {\r\n // not used internally\r\n if (properties)\r\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\r\n this[keys[i]] = properties[keys[i]];\r\n}\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/*eslint-disable valid-jsdoc*/\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message} Message instance\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.create = function create(properties) {\r\n return this.$type.create(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {T|Object.} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.encode = function encode(message, writer) {\r\n return this.$type.encode(message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @param {T|Object.} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Message.decode\r\n * @function\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\r\n * @returns {T} Decoded message\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.decode = function decode(reader) {\r\n return this.$type.decode(reader);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Message.decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\r\n * @returns {T} Decoded message\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(reader) {\r\n return this.$type.decodeDelimited(reader);\r\n};\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Message.verify\r\n * @function\r\n * @param {Object.} message Plain object to verify\r\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\r\n */\r\nMessage.verify = function verify(message) {\r\n return this.$type.verify(message);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.} object Plain object\r\n * @returns {T} Message instance\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.fromObject = function fromObject(object) {\r\n return this.$type.fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {T} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.toObject = function toObject(message, options) {\r\n return this.$type.toObject(message, options);\r\n};\r\n\r\n/**\r\n * Converts this message to JSON.\r\n * @returns {Object.} JSON object\r\n */\r\nMessage.prototype.toJSON = function toJSON() {\r\n return this.$type.toObject(this, util.toJSONOptions);\r\n};\r\n\r\n/*eslint-enable valid-jsdoc*/\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\n/**\r\n * Streaming RPC helpers.\r\n * @namespace\r\n */\r\nvar rpc = exports;\r\n\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @type {function}\r\n * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCImplCallback} callback Callback function\r\n * @returns {undefined}\r\n * @example\r\n * function rpcImpl(method, requestData, callback) {\r\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\r\n * throw Error(\"no such method\");\r\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\r\n * callback(err, responseData);\r\n * });\r\n * }\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCImplCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\nrpc.Service = __webpack_require__(45);\r\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = {};\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available accross modules.\r\n * @name roots\r\n * @type {Object.}\r\n * @example\r\n * // pbjs -r myroot -o compiled.js ...\r\n *\r\n * // in another module:\r\n * require(\"./compiled.js\");\r\n *\r\n * // in any subsequent module:\r\n * var root = protobuf.roots[\"myroot\"];\r\n */\r\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = encoder;\r\n\r\nvar Enum = __webpack_require__(1),\r\n types = __webpack_require__(9),\r\n util = __webpack_require__(0);\r\n\r\n/**\r\n * Generates a partial message type encoder.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genTypePartial(gen, field, fieldIndex, ref) {\r\n return field.resolvedType.group\r\n ? gen(\"types[%i].encode(%s,w.uint32(%i)).uint32(%i)\", fieldIndex, ref, (field.id << 3 | 3) >>> 0, (field.id << 3 | 4) >>> 0)\r\n : gen(\"types[%i].encode(%s,w.uint32(%i).fork()).ldelim()\", fieldIndex, ref, (field.id << 3 | 2) >>> 0);\r\n}\r\n\r\n/**\r\n * Generates an encoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction encoder(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var gen = util.codegen([\"m\", \"w\"], mtype.name + \"$encode\")\r\n (\"if(!w)\")\r\n (\"w=Writer.create()\");\r\n\r\n var i, ref;\r\n\r\n // \"when a message is serialized its known fields should be written sequentially by field number\"\r\n var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById);\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n index = mtype._fieldsArray.indexOf(field),\r\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\r\n wireType = types.basic[type];\r\n ref = \"m\" + util.safeProp(field.name);\r\n\r\n // Map fields\r\n if (field.map) {\r\n gen\r\n (\"if(%s!=null&&m.hasOwnProperty(%j)){\", ref, field.name) // !== undefined && !== null\r\n (\"for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[field.keyType], field.keyType);\r\n if (wireType === undefined) gen\r\n (\"types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", index, ref); // can't be groups\r\n else gen\r\n (\".uint32(%i).%s(%s[ks[i]]).ldelim()\", 16 | wireType, type, ref);\r\n gen\r\n (\"}\")\r\n (\"}\");\r\n\r\n // Repeated fields\r\n } else if (field.repeated) { gen\r\n (\"if(%s!=null&&%s.length){\", ref, ref); // !== undefined && !== null\r\n\r\n // Packed repeated\r\n if (field.packed && types.packed[type] !== undefined) { gen\r\n\r\n (\"w.uint32(%i).fork()\", (field.id << 3 | 2) >>> 0)\r\n (\"for(var i=0;i<%s.length;++i)\", ref)\r\n (\"w.%s(%s[i])\", type, ref)\r\n (\"w.ldelim()\");\r\n\r\n // Non-packed\r\n } else { gen\r\n\r\n (\"for(var i=0;i<%s.length;++i)\", ref);\r\n if (wireType === undefined)\r\n genTypePartial(gen, field, index, ref + \"[i]\");\r\n else gen\r\n (\"w.uint32(%i).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n } gen\r\n (\"}\");\r\n\r\n // Non-repeated\r\n } else {\r\n if (field.optional) gen\r\n (\"if(%s!=null&&m.hasOwnProperty(%j))\", ref, field.name); // !== undefined && !== null\r\n\r\n if (wireType === undefined)\r\n genTypePartial(gen, field, index, ref);\r\n else gen\r\n (\"w.uint32(%i).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n }\r\n\r\n return gen\r\n (\"return w\");\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Type;\r\n\r\n// extends Namespace\r\nvar Namespace = __webpack_require__(8);\r\n((Type.prototype = Object.create(Namespace.prototype)).constructor = Type).className = \"Type\";\r\n\r\nvar Enum = __webpack_require__(1),\r\n OneOf = __webpack_require__(15),\r\n Field = __webpack_require__(5),\r\n MapField = __webpack_require__(23),\r\n Service = __webpack_require__(24),\r\n Message = __webpack_require__(16),\r\n Reader = __webpack_require__(14),\r\n Writer = __webpack_require__(13),\r\n util = __webpack_require__(0),\r\n encoder = __webpack_require__(21),\r\n decoder = __webpack_require__(26),\r\n verifier = __webpack_require__(27),\r\n converter = __webpack_require__(28),\r\n wrappers = __webpack_require__(29);\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Message fields.\r\n * @type {Object.}\r\n */\r\n this.fields = {}; // toJSON, marker\r\n\r\n /**\r\n * Oneofs declared within this namespace, if any.\r\n * @type {Object.}\r\n */\r\n this.oneofs = undefined; // toJSON\r\n\r\n /**\r\n * Extension ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.extensions = undefined; // toJSON\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {Array.}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n /*?\r\n * Whether this type is a legacy group.\r\n * @type {boolean|undefined}\r\n */\r\n this.group = undefined; // toJSON\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {Object.|null}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields as an array.\r\n * @type {Field[]|null}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {OneOf[]|null}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {Constructor<{}>}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nObject.defineProperties(Type.prototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: function() {\r\n\r\n /* istanbul ignore if */\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n\r\n this._fieldsById = {};\r\n for (var names = Object.keys(this.fields), i = 0; i < names.length; ++i) {\r\n var field = this.fields[names[i]],\r\n id = field.id;\r\n\r\n /* istanbul ignore if */\r\n if (this._fieldsById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n\r\n this._fieldsById[id] = field;\r\n }\r\n return this._fieldsById;\r\n }\r\n },\r\n\r\n /**\r\n * Fields of this message as an array for iteration.\r\n * @name Type#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: function() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Oneofs of this message as an array for iteration.\r\n * @name Type#oneofsArray\r\n * @type {OneOf[]}\r\n * @readonly\r\n */\r\n oneofsArray: {\r\n get: function() {\r\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n }\r\n },\r\n\r\n /**\r\n * The registered constructor, if any registered, otherwise a generic constructor.\r\n * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor.\r\n * @name Type#ctor\r\n * @type {Constructor<{}>}\r\n */\r\n ctor: {\r\n get: function() {\r\n return this._ctor || (this.ctor = Type.generateConstructor(this)());\r\n },\r\n set: function(ctor) {\r\n\r\n // Ensure proper prototype\r\n var prototype = ctor.prototype;\r\n if (!(prototype instanceof Message)) {\r\n (ctor.prototype = new Message()).constructor = ctor;\r\n util.merge(ctor.prototype, prototype);\r\n }\r\n\r\n // Classes and messages reference their reflected type\r\n ctor.$type = ctor.prototype.$type = this;\r\n\r\n // Mix in static methods\r\n util.merge(ctor, Message, true);\r\n\r\n this._ctor = ctor;\r\n\r\n // Messages have non-enumerable default values on their prototype\r\n var i = 0;\r\n for (; i < /* initializes */ this.fieldsArray.length; ++i)\r\n this._fieldsArray[i].resolve(); // ensures a proper value\r\n\r\n // Messages have non-enumerable getters and setters for each virtual oneof field\r\n var ctorProperties = {};\r\n for (i = 0; i < /* initializes */ this.oneofsArray.length; ++i)\r\n ctorProperties[this._oneofsArray[i].resolve().name] = {\r\n get: util.oneOfGetter(this._oneofsArray[i].oneof),\r\n set: util.oneOfSetter(this._oneofsArray[i].oneof)\r\n };\r\n if (i)\r\n Object.defineProperties(ctor.prototype, ctorProperties);\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Generates a constructor function for the specified type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nType.generateConstructor = function generateConstructor(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var gen = util.codegen([\"p\"], mtype.name);\r\n // explicitly initialize mutable object/array fields so that these aren't just inherited from the prototype\r\n for (var i = 0, field; i < mtype.fieldsArray.length; ++i)\r\n if ((field = mtype._fieldsArray[i]).map) gen\r\n (\"this%s={}\", util.safeProp(field.name));\r\n else if (field.repeated) gen\r\n (\"this%s=[]\", util.safeProp(field.name));\r\n return gen\r\n (\"if(p)for(var ks=Object.keys(p),i=0;i} [oneofs] Oneof descriptors\r\n * @property {Object.} fields Field descriptors\r\n * @property {number[][]} [extensions] Extension ranges\r\n * @property {number[][]} [reserved] Reserved ranges\r\n * @property {boolean} [group=false] Whether a legacy group or not\r\n */\r\n\r\n/**\r\n * Creates a message type from a message type descriptor.\r\n * @param {string} name Message name\r\n * @param {IType} json Message type descriptor\r\n * @returns {Type} Created message type\r\n */\r\nType.fromJSON = function fromJSON(name, json) {\r\n var type = new Type(name, json.options);\r\n type.extensions = json.extensions;\r\n type.reserved = json.reserved;\r\n var names = Object.keys(json.fields),\r\n i = 0;\r\n for (; i < names.length; ++i)\r\n type.add(\r\n ( typeof json.fields[names[i]].keyType !== \"undefined\"\r\n ? MapField.fromJSON\r\n : Field.fromJSON )(names[i], json.fields[names[i]])\r\n );\r\n if (json.oneofs)\r\n for (names = Object.keys(json.oneofs), i = 0; i < names.length; ++i)\r\n type.add(OneOf.fromJSON(names[i], json.oneofs[names[i]]));\r\n if (json.nested)\r\n for (names = Object.keys(json.nested), i = 0; i < names.length; ++i) {\r\n var nested = json.nested[names[i]];\r\n type.add( // most to least likely\r\n ( nested.id !== undefined\r\n ? Field.fromJSON\r\n : nested.fields !== undefined\r\n ? Type.fromJSON\r\n : nested.values !== undefined\r\n ? Enum.fromJSON\r\n : nested.methods !== undefined\r\n ? Service.fromJSON\r\n : Namespace.fromJSON )(names[i], nested)\r\n );\r\n }\r\n if (json.extensions && json.extensions.length)\r\n type.extensions = json.extensions;\r\n if (json.reserved && json.reserved.length)\r\n type.reserved = json.reserved;\r\n if (json.group)\r\n type.group = true;\r\n if (json.comment)\r\n type.comment = json.comment;\r\n return type;\r\n};\r\n\r\n/**\r\n * Converts this message type to a message type descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IType} Message type descriptor\r\n */\r\nType.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , inherited && inherited.options || undefined,\r\n \"oneofs\" , Namespace.arrayToJSON(this.oneofsArray, toJSONOptions),\r\n \"fields\" , Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; }), toJSONOptions) || {},\r\n \"extensions\" , this.extensions && this.extensions.length ? this.extensions : undefined,\r\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\r\n \"group\" , this.group || undefined,\r\n \"nested\" , inherited && inherited.nested || undefined,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nType.prototype.resolveAll = function resolveAll() {\r\n var fields = this.fieldsArray, i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.oneofsArray; i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nType.prototype.get = function get(name) {\r\n return this.fields[name]\r\n || this.oneofs && this.oneofs[name]\r\n || this.nested && this.nested[name]\r\n || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this type.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\r\n */\r\nType.prototype.add = function add(object) {\r\n\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n\r\n if (object instanceof Field && object.extend === undefined) {\r\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\r\n // The root object takes care of adding distinct sister-fields to the respective extended\r\n // type instead.\r\n\r\n // avoids calling the getter if not absolutely necessary because it's called quite frequently\r\n if (this._fieldsById ? /* istanbul ignore next */ this._fieldsById[object.id] : this.fieldsById[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\r\n if (this.isReservedId(object.id))\r\n throw Error(\"id \" + object.id + \" is reserved in \" + this);\r\n if (this.isReservedName(object.name))\r\n throw Error(\"name '\" + object.name + \"' is reserved in \" + this);\r\n\r\n if (object.parent)\r\n object.parent.remove(object);\r\n this.fields[object.name] = object;\r\n object.message = this;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n if (!this.oneofs)\r\n this.oneofs = {};\r\n this.oneofs[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this type.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this type\r\n */\r\nType.prototype.remove = function remove(object) {\r\n if (object instanceof Field && object.extend === undefined) {\r\n // See Type#add for the reason why extension fields are excluded here.\r\n\r\n /* istanbul ignore if */\r\n if (!this.fields || this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.fields[object.name];\r\n object.parent = null;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n\r\n /* istanbul ignore if */\r\n if (!this.oneofs || this.oneofs[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.oneofs[object.name];\r\n object.parent = null;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nType.prototype.isReservedId = function isReservedId(id) {\r\n return Namespace.isReservedId(this.reserved, id);\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nType.prototype.isReservedName = function isReservedName(name) {\r\n return Namespace.isReservedName(this.reserved, name);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message<{}>} Message instance\r\n */\r\nType.prototype.create = function create(properties) {\r\n return new this.ctor(properties);\r\n};\r\n\r\n/**\r\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\r\n * @returns {Type} `this`\r\n */\r\nType.prototype.setup = function setup() {\r\n // Sets up everything at once so that the prototype chain does not have to be re-evaluated\r\n // multiple times (V8, soft-deopt prototype-check).\r\n\r\n var fullName = this.fullName,\r\n types = [];\r\n for (var i = 0; i < /* initializes */ this.fieldsArray.length; ++i)\r\n types.push(this._fieldsArray[i].resolve().resolvedType);\r\n\r\n // Replace setup methods with type-specific generated functions\r\n this.encode = encoder(this)({\r\n Writer : Writer,\r\n types : types,\r\n util : util\r\n });\r\n this.decode = decoder(this)({\r\n Reader : Reader,\r\n types : types,\r\n util : util\r\n });\r\n this.verify = verifier(this)({\r\n types : types,\r\n util : util\r\n });\r\n this.fromObject = converter.fromObject(this)({\r\n types : types,\r\n util : util\r\n });\r\n this.toObject = converter.toObject(this)({\r\n types : types,\r\n util : util\r\n });\r\n\r\n // Inject custom wrappers for common types\r\n var wrapper = wrappers[fullName];\r\n if (wrapper) {\r\n var originalThis = Object.create(this);\r\n // if (wrapper.fromObject) {\r\n originalThis.fromObject = this.fromObject;\r\n this.fromObject = wrapper.fromObject.bind(originalThis);\r\n // }\r\n // if (wrapper.toObject) {\r\n originalThis.toObject = this.toObject;\r\n this.toObject = wrapper.toObject.bind(originalThis);\r\n // }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages.\r\n * @param {Message<{}>|Object.} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nType.prototype.encode = function encode_setup(message, writer) {\r\n return this.setup().encode(message, writer); // overrides this method\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages.\r\n * @param {Message<{}>|Object.} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nType.prototype.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim();\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Message<{}>} Decoded message\r\n * @throws {Error} If the payload is not a reader or valid buffer\r\n * @throws {util.ProtocolError<{}>} If required fields are missing\r\n */\r\nType.prototype.decode = function decode_setup(reader, length) {\r\n return this.setup().decode(reader, length); // overrides this method\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\r\n * @returns {Message<{}>} Decoded message\r\n * @throws {Error} If the payload is not a reader or valid buffer\r\n * @throws {util.ProtocolError} If required fields are missing\r\n */\r\nType.prototype.decodeDelimited = function decodeDelimited(reader) {\r\n if (!(reader instanceof Reader))\r\n reader = Reader.create(reader);\r\n return this.decode(reader, reader.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that field values are valid and that required fields are present.\r\n * @param {Object.} message Plain object to verify\r\n * @returns {null|string} `null` if valid, otherwise the reason why it is not\r\n */\r\nType.prototype.verify = function verify_setup(message) {\r\n return this.setup().verify(message); // overrides this method\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.} object Plain object to convert\r\n * @returns {Message<{}>} Message instance\r\n */\r\nType.prototype.fromObject = function fromObject(object) {\r\n return this.setup().fromObject(object);\r\n};\r\n\r\n/**\r\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\r\n * @interface IConversionOptions\r\n * @property {Function} [longs] Long conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\r\n * @property {Function} [enums] Enum value conversion type.\r\n * Only valid value is `String` (the global type).\r\n * Defaults to copy the present value, which is the numeric id.\r\n * @property {Function} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\r\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\r\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\r\n * @property {boolean} [oneofs=false] Includes virtual oneof properties set to the present field's name, if any\r\n * @property {boolean} [json=false] Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message<{}>} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n */\r\nType.prototype.toObject = function toObject(message, options) {\r\n return this.setup().toObject(message, options);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link Type.d} (TypeScript).\r\n * @typedef TypeDecorator\r\n * @type {function}\r\n * @param {Constructor} target Target constructor\r\n * @returns {undefined}\r\n * @template T extends Message\r\n */\r\n\r\n/**\r\n * Type decorator (TypeScript).\r\n * @param {string} [typeName] Type name, defaults to the constructor's name\r\n * @returns {TypeDecorator} Decorator function\r\n * @template T extends Message\r\n */\r\nType.d = function decorateType(typeName) {\r\n return function typeDecorator(target) {\r\n util.decorateType(target, typeName);\r\n };\r\n};\r\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = MapField;\r\n\r\n// extends Field\r\nvar Field = __webpack_require__(5);\r\n((MapField.prototype = Object.create(Field.prototype)).constructor = MapField).className = \"MapField\";\r\n\r\nvar types = __webpack_require__(9),\r\n util = __webpack_require__(0);\r\n\r\n/**\r\n * Constructs a new map field instance.\r\n * @classdesc Reflected map field.\r\n * @extends FieldBase\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} keyType Key type\r\n * @param {string} type Value type\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction MapField(name, id, keyType, type, options, comment) {\r\n Field.call(this, name, id, type, undefined, undefined, options, comment);\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(keyType))\r\n throw TypeError(\"keyType must be a string\");\r\n\r\n /**\r\n * Key type.\r\n * @type {string}\r\n */\r\n this.keyType = keyType; // toJSON, marker\r\n\r\n /**\r\n * Resolved key type if not a basic type.\r\n * @type {ReflectionObject|null}\r\n */\r\n this.resolvedKeyType = null;\r\n\r\n // Overrides Field#map\r\n this.map = true;\r\n}\r\n\r\n/**\r\n * Map field descriptor.\r\n * @interface IMapField\r\n * @extends {IField}\r\n * @property {string} keyType Key type\r\n */\r\n\r\n/**\r\n * Extension map field descriptor.\r\n * @interface IExtensionMapField\r\n * @extends IMapField\r\n * @property {string} extend Extended type\r\n */\r\n\r\n/**\r\n * Constructs a map field from a map field descriptor.\r\n * @param {string} name Field name\r\n * @param {IMapField} json Map field descriptor\r\n * @returns {MapField} Created map field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMapField.fromJSON = function fromJSON(name, json) {\r\n return new MapField(name, json.id, json.keyType, json.type, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this map field to a map field descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IMapField} Map field descriptor\r\n */\r\nMapField.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"keyType\" , this.keyType,\r\n \"type\" , this.type,\r\n \"id\" , this.id,\r\n \"extend\" , this.extend,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapField.prototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n // Besides a value type, map fields have a key type that may be \"any scalar type except for floating point types and bytes\"\r\n if (types.mapKey[this.keyType] === undefined)\r\n throw Error(\"invalid key type: \" + this.keyType);\r\n\r\n return Field.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Map field decorator (TypeScript).\r\n * @name MapField.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"} fieldKeyType Field key type\r\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"|\"bytes\"|Object|Constructor<{}>} fieldValueType Field value type\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> }\r\n */\r\nMapField.d = function decorateMapField(fieldId, fieldKeyType, fieldValueType) {\r\n\r\n // submessage value: decorate the submessage and use its name as the type\r\n if (typeof fieldValueType === \"function\")\r\n fieldValueType = util.decorateType(fieldValueType).name;\r\n\r\n // enum reference value: create a reflected copy of the enum and keep reuseing it\r\n else if (fieldValueType && typeof fieldValueType === \"object\")\r\n fieldValueType = util.decorateEnum(fieldValueType).name;\r\n\r\n return function mapFieldDecorator(prototype, fieldName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new MapField(fieldName, fieldId, fieldKeyType, fieldValueType));\r\n };\r\n};\r\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Service;\r\n\r\n// extends Namespace\r\nvar Namespace = __webpack_require__(8);\r\n((Service.prototype = Object.create(Namespace.prototype)).constructor = Service).className = \"Service\";\r\n\r\nvar Method = __webpack_require__(25),\r\n util = __webpack_require__(0),\r\n rpc = __webpack_require__(19);\r\n\r\n/**\r\n * Constructs a new service instance.\r\n * @classdesc Reflected service.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Service methods.\r\n * @type {Object.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {Method[]|null}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\n/**\r\n * Service descriptor.\r\n * @interface IService\r\n * @extends INamespace\r\n * @property {Object.} methods Method descriptors\r\n */\r\n\r\n/**\r\n * Constructs a service from a service descriptor.\r\n * @param {string} name Service name\r\n * @param {IService} json Service descriptor\r\n * @returns {Service} Created service\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nService.fromJSON = function fromJSON(name, json) {\r\n var service = new Service(name, json.options);\r\n /* istanbul ignore else */\r\n if (json.methods)\r\n for (var names = Object.keys(json.methods), i = 0; i < names.length; ++i)\r\n service.add(Method.fromJSON(names[i], json.methods[names[i]]));\r\n if (json.nested)\r\n service.addJSON(json.nested);\r\n service.comment = json.comment;\r\n return service;\r\n};\r\n\r\n/**\r\n * Converts this service to a service descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IService} Service descriptor\r\n */\r\nService.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , inherited && inherited.options || undefined,\r\n \"methods\" , Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ {},\r\n \"nested\" , inherited && inherited.nested || undefined,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(Service.prototype, \"methodsArray\", {\r\n get: function() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n});\r\n\r\nfunction clearCache(service) {\r\n service._methodsArray = null;\r\n return service;\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.get = function get(name) {\r\n return this.methods[name]\r\n || Namespace.prototype.get.call(this, name);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.resolveAll = function resolveAll() {\r\n var methods = this.methodsArray;\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return Namespace.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.add = function add(object) {\r\n\r\n /* istanbul ignore if */\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n\r\n if (object instanceof Method) {\r\n this.methods[object.name] = object;\r\n object.parent = this;\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n\r\n /* istanbul ignore if */\r\n if (this.methods[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.methods[object.name];\r\n object.parent = null;\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n * @returns {rpc.Service} RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nService.prototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl, requestDelimited, responseDelimited);\r\n for (var i = 0, method; i < /* initializes */ this.methodsArray.length; ++i) {\r\n var methodName = util.lcFirst((method = this._methodsArray[i]).resolve().name).replace(/[^$\\w_]/g, \"\");\r\n rpcService[methodName] = util.codegen([\"r\",\"c\"], util.isReserved(methodName) ? methodName + \"_\" : methodName)(\"return this.rpcCall(m,q,s,r,c)\")({\r\n m: method,\r\n q: method.resolvedRequestType.ctor,\r\n s: method.resolvedResponseType.ctor\r\n });\r\n }\r\n return rpcService;\r\n};\r\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Method;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = __webpack_require__(4);\r\n((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = \"Method\";\r\n\r\nvar util = __webpack_require__(0);\r\n\r\n/**\r\n * Constructs a new service method instance.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean|Object.} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.} [responseStream] Whether the response is streamed\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] The comment for this method\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options, comment) {\r\n\r\n /* istanbul ignore next */\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n\r\n /* istanbul ignore if */\r\n if (!(type === undefined || util.isString(type)))\r\n throw TypeError(\"type must be a string\");\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(requestType))\r\n throw TypeError(\"requestType must be a string\");\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(responseType))\r\n throw TypeError(\"responseType must be a string\");\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Method type.\r\n * @type {string}\r\n */\r\n this.type = type || \"rpc\"; // toJSON\r\n\r\n /**\r\n * Request type.\r\n * @type {string}\r\n */\r\n this.requestType = requestType; // toJSON, marker\r\n\r\n /**\r\n * Whether requests are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Response type.\r\n * @type {string}\r\n */\r\n this.responseType = responseType; // toJSON\r\n\r\n /**\r\n * Whether responses are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Resolved request type.\r\n * @type {Type|null}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {Type|null}\r\n */\r\n this.resolvedResponseType = null;\r\n\r\n /**\r\n * Comment for this method\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Method descriptor.\r\n * @interface IMethod\r\n * @property {string} [type=\"rpc\"] Method type\r\n * @property {string} requestType Request type\r\n * @property {string} responseType Response type\r\n * @property {boolean} [requestStream=false] Whether requests are streamed\r\n * @property {boolean} [responseStream=false] Whether responses are streamed\r\n * @property {Object.} [options] Method options\r\n */\r\n\r\n/**\r\n * Constructs a method from a method descriptor.\r\n * @param {string} name Method name\r\n * @param {IMethod} json Method descriptor\r\n * @returns {Method} Created method\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMethod.fromJSON = function fromJSON(name, json) {\r\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this method to a method descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IMethod} Method descriptor\r\n */\r\nMethod.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"type\" , this.type !== \"rpc\" && /* istanbul ignore next */ this.type || undefined,\r\n \"requestType\" , this.requestType,\r\n \"requestStream\" , this.requestStream,\r\n \"responseType\" , this.responseType,\r\n \"responseStream\" , this.responseStream,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethod.prototype.resolve = function resolve() {\r\n\r\n /* istanbul ignore if */\r\n if (this.resolved)\r\n return this;\r\n\r\n this.resolvedRequestType = this.parent.lookupType(this.requestType);\r\n this.resolvedResponseType = this.parent.lookupType(this.responseType);\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = decoder;\r\n\r\nvar Enum = __webpack_require__(1),\r\n types = __webpack_require__(9),\r\n util = __webpack_require__(0);\r\n\r\nfunction missing(field) {\r\n return \"missing required '\" + field.name + \"'\";\r\n}\r\n\r\n/**\r\n * Generates a decoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction decoder(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var gen = util.codegen([\"r\", \"l\"], mtype.name + \"$decode\")\r\n (\"if(!(r instanceof Reader))\")\r\n (\"r=Reader.create(r)\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new this.ctor\" + (mtype.fieldsArray.filter(function(field) { return field.map; }).length ? \",k\" : \"\"))\r\n (\"while(r.pos>>3){\");\r\n\r\n var i = 0;\r\n for (; i < /* initializes */ mtype.fieldsArray.length; ++i) {\r\n var field = mtype._fieldsArray[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\r\n ref = \"m\" + util.safeProp(field.name); gen\r\n (\"case %i:\", field.id);\r\n\r\n // Map fields\r\n if (field.map) { gen\r\n (\"r.skip().pos++\") // assumes id 1 + key wireType\r\n (\"if(%s===util.emptyObject)\", ref)\r\n (\"%s={}\", ref)\r\n (\"k=r.%s()\", field.keyType)\r\n (\"r.pos++\"); // assumes id 2 + value wireType\r\n if (types.long[field.keyType] !== undefined) {\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=types[%i].decode(r,r.uint32())\", ref, i); // can't be groups\r\n else gen\r\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=r.%s()\", ref, type);\r\n } else {\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[k]=types[%i].decode(r,r.uint32())\", ref, i); // can't be groups\r\n else gen\r\n (\"%s[k]=r.%s()\", ref, type);\r\n }\r\n\r\n // Repeated fields\r\n } else if (field.repeated) { gen\r\n\r\n (\"if(!(%s&&%s.length))\", ref, ref)\r\n (\"%s=[]\", ref);\r\n\r\n // Packable (always check for forward and backward compatiblity)\r\n if (types.packed[type] !== undefined) gen\r\n (\"if((t&7)===2){\")\r\n (\"var c2=r.uint32()+r.pos\")\r\n (\"while(r.pos>>0\", prop, prop);\r\n break;\r\n case \"int32\":\r\n case \"sint32\":\r\n case \"sfixed32\": gen\r\n (\"m%s=d%s|0\", prop, prop);\r\n break;\r\n case \"uint64\":\r\n isUnsigned = true;\r\n // eslint-disable-line no-fallthrough\r\n case \"int64\":\r\n case \"sint64\":\r\n case \"fixed64\":\r\n case \"sfixed64\": gen\r\n (\"if(util.Long)\")\r\n (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\r\n (\"else if(typeof d%s===\\\"string\\\")\", prop)\r\n (\"m%s=parseInt(d%s,10)\", prop, prop)\r\n (\"else if(typeof d%s===\\\"number\\\")\", prop)\r\n (\"m%s=d%s\", prop, prop)\r\n (\"else if(typeof d%s===\\\"object\\\")\", prop)\r\n (\"m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\r\n break;\r\n case \"bytes\": gen\r\n (\"if(typeof d%s===\\\"string\\\")\", prop)\r\n (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop)\r\n (\"else if(d%s.length)\", prop)\r\n (\"m%s=d%s\", prop, prop);\r\n break;\r\n case \"string\": gen\r\n (\"m%s=String(d%s)\", prop, prop);\r\n break;\r\n case \"bool\": gen\r\n (\"m%s=Boolean(d%s)\", prop, prop);\r\n break;\r\n /* default: gen\r\n (\"m%s=d%s\", prop, prop);\r\n break; */\r\n }\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a plain object to runtime message converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.fromObject = function fromObject(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var fields = mtype.fieldsArray;\r\n var gen = util.codegen([\"d\"], mtype.name + \"$fromObject\")\r\n (\"if(d instanceof this.ctor)\")\r\n (\"return d\");\r\n if (!fields.length) return gen\r\n (\"return new this.ctor\");\r\n gen\r\n (\"var m=new this.ctor\");\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n prop = util.safeProp(field.name);\r\n\r\n // Map fields\r\n if (field.map) { gen\r\n (\"if(d%s){\", prop)\r\n (\"if(typeof d%s!==\\\"object\\\")\", prop)\r\n (\"throw TypeError(%j)\", field.fullName + \": object expected\")\r\n (\"m%s={}\", prop)\r\n (\"for(var ks=Object.keys(d%s),i=0;i>>0,m%s.high>>>0).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\r\n break;\r\n case \"bytes\": gen\r\n (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\r\n break;\r\n default: gen\r\n (\"d%s=m%s\", prop, prop);\r\n break;\r\n }\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a runtime message to plain object converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.toObject = function toObject(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var fields = mtype.fieldsArray.slice().sort(util.compareFieldsById);\r\n if (!fields.length)\r\n return util.codegen()(\"return {}\");\r\n var gen = util.codegen([\"m\", \"o\"], mtype.name + \"$toObject\")\r\n (\"if(!o)\")\r\n (\"o={}\")\r\n (\"var d={}\");\r\n\r\n var repeatedFields = [],\r\n mapFields = [],\r\n normalFields = [],\r\n i = 0;\r\n for (; i < fields.length; ++i)\r\n if (!fields[i].partOf)\r\n ( fields[i].resolve().repeated ? repeatedFields\r\n : fields[i].map ? mapFields\r\n : normalFields).push(fields[i]);\r\n\r\n if (repeatedFields.length) { gen\r\n (\"if(o.arrays||o.defaults){\");\r\n for (i = 0; i < repeatedFields.length; ++i) gen\r\n (\"d%s=[]\", util.safeProp(repeatedFields[i].name));\r\n gen\r\n (\"}\");\r\n }\r\n\r\n if (mapFields.length) { gen\r\n (\"if(o.objects||o.defaults){\");\r\n for (i = 0; i < mapFields.length; ++i) gen\r\n (\"d%s={}\", util.safeProp(mapFields[i].name));\r\n gen\r\n (\"}\");\r\n }\r\n\r\n if (normalFields.length) { gen\r\n (\"if(o.defaults){\");\r\n for (i = 0; i < normalFields.length; ++i) {\r\n var field = normalFields[i],\r\n prop = util.safeProp(field.name);\r\n if (field.resolvedType instanceof Enum) gen\r\n (\"d%s=o.enums===String?%j:%j\", prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\r\n else if (field.long) gen\r\n (\"if(util.Long){\")\r\n (\"var n=new util.Long(%i,%i,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\r\n (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", prop)\r\n (\"}else\")\r\n (\"d%s=o.longs===String?%j:%i\", prop, field.typeDefault.toString(), field.typeDefault.toNumber());\r\n else if (field.bytes) gen\r\n (\"d%s=o.bytes===String?%j:%s\", prop, String.fromCharCode.apply(String, field.typeDefault), \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\");\r\n else gen\r\n (\"d%s=%j\", prop, field.typeDefault); // also messages (=null)\r\n } gen\r\n (\"}\");\r\n }\r\n var hasKs2 = false;\r\n for (i = 0; i < fields.length; ++i) {\r\n var field = fields[i],\r\n index = mtype._fieldsArray.indexOf(field),\r\n prop = util.safeProp(field.name);\r\n if (field.map) {\r\n if (!hasKs2) { hasKs2 = true; gen\r\n (\"var ks2\");\r\n } gen\r\n (\"if(m%s&&(ks2=Object.keys(m%s)).length){\", prop, prop)\r\n (\"d%s={}\", prop)\r\n (\"for(var j=0;j}\r\n * @const\r\n */\r\nvar wrappers = exports;\r\n\r\nvar Message = __webpack_require__(16);\r\n\r\n/**\r\n * From object converter part of an {@link IWrapper}.\r\n * @typedef WrapperFromObjectConverter\r\n * @type {function}\r\n * @param {Object.} object Plain object\r\n * @returns {Message<{}>} Message instance\r\n * @this Type\r\n */\r\n\r\n/**\r\n * To object converter part of an {@link IWrapper}.\r\n * @typedef WrapperToObjectConverter\r\n * @type {function}\r\n * @param {Message<{}>} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n * @this Type\r\n */\r\n\r\n/**\r\n * Common type wrapper part of {@link wrappers}.\r\n * @interface IWrapper\r\n * @property {WrapperFromObjectConverter} [fromObject] From object converter\r\n * @property {WrapperToObjectConverter} [toObject] To object converter\r\n */\r\n\r\n// Custom wrapper for Any\r\nwrappers[\".google.protobuf.Any\"] = {\r\n\r\n fromObject: function(object) {\r\n\r\n // unwrap value type if mapped\r\n if (object && object[\"@type\"]) {\r\n var type = this.lookup(object[\"@type\"]);\r\n /* istanbul ignore else */\r\n if (type) {\r\n // type_url does not accept leading \".\"\r\n var type_url = object[\"@type\"].charAt(0) === \".\" ?\r\n object[\"@type\"].substr(1) : object[\"@type\"];\r\n // type_url prefix is optional, but path seperator is required\r\n return this.create({\r\n type_url: \"/\" + type_url,\r\n value: type.encode(type.fromObject(object)).finish()\r\n });\r\n }\r\n }\r\n\r\n return this.fromObject(object);\r\n },\r\n\r\n toObject: function(message, options) {\r\n\r\n // decode value if requested and unmapped\r\n if (options && options.json && message.type_url && message.value) {\r\n // Only use fully qualified type name after the last '/'\r\n var name = message.type_url.substring(message.type_url.lastIndexOf(\"/\") + 1);\r\n var type = this.lookup(name);\r\n /* istanbul ignore else */\r\n if (type)\r\n message = type.decode(message.value);\r\n }\r\n\r\n // wrap value if unmapped\r\n if (!(message instanceof this.ctor) && message instanceof Message) {\r\n var object = message.$type.toObject(message, options);\r\n object[\"@type\"] = message.$type.fullName;\r\n return object;\r\n }\r\n\r\n return this.toObject(message, options);\r\n }\r\n};\r\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Root;\r\n\r\n// extends Namespace\r\nvar Namespace = __webpack_require__(8);\r\n((Root.prototype = Object.create(Namespace.prototype)).constructor = Root).className = \"Root\";\r\n\r\nvar Field = __webpack_require__(5),\r\n Enum = __webpack_require__(1),\r\n OneOf = __webpack_require__(15),\r\n util = __webpack_require__(0);\r\n\r\nvar Type, // cyclic\r\n parse, // might be excluded\r\n common; // \"\r\n\r\n/**\r\n * Constructs a new root namespace instance.\r\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {Object.} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n Namespace.call(this, \"\", options);\r\n\r\n /**\r\n * Deferred extension fields.\r\n * @type {Field[]}\r\n */\r\n this.deferred = [];\r\n\r\n /**\r\n * Resolved file names of loaded files.\r\n * @type {string[]}\r\n */\r\n this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a namespace descriptor into a root namespace.\r\n * @param {INamespace} json Nameespace descriptor\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\r\n * @returns {Root} Root namespace\r\n */\r\nRoot.fromJSON = function fromJSON(json, root) {\r\n if (!root)\r\n root = new Root();\r\n if (json.options)\r\n root.setOptions(json.options);\r\n return root.addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Resolves the path of an imported file, relative to the importing origin.\r\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\r\n * @function\r\n * @param {string} origin The file name of the importing file\r\n * @param {string} target The file name being imported\r\n * @returns {string|null} Resolved path to `target` or `null` to skip the file\r\n */\r\nRoot.prototype.resolvePath = util.path.resolve;\r\n\r\n// A symbol-like function to safely signal synchronous loading\r\n/* istanbul ignore next */\r\nfunction SYNC() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} options Parse options\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nRoot.prototype.load = function load(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = undefined;\r\n }\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(load, self, filename, options);\r\n\r\n var sync = callback === SYNC; // undocumented\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n /* istanbul ignore if */\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n if (sync)\r\n throw err;\r\n cb(err, root);\r\n }\r\n\r\n // Processes a single file\r\n function process(filename, source) {\r\n try {\r\n if (util.isString(source) && source.charAt(0) === \"{\")\r\n source = JSON.parse(source);\r\n if (!util.isString(source))\r\n self.setOptions(source.options).addJSON(source.nested);\r\n else {\r\n parse.filename = filename;\r\n var parsed = parse(source, self, options),\r\n resolved,\r\n i = 0;\r\n if (parsed.imports)\r\n for (; i < parsed.imports.length; ++i)\r\n if (resolved = self.resolvePath(filename, parsed.imports[i]))\r\n fetch(resolved);\r\n if (parsed.weakImports)\r\n for (i = 0; i < parsed.weakImports.length; ++i)\r\n if (resolved = self.resolvePath(filename, parsed.weakImports[i]))\r\n fetch(resolved, true);\r\n }\r\n } catch (err) {\r\n finish(err);\r\n }\r\n if (!sync && !queued)\r\n finish(null, self); // only once anyway\r\n }\r\n\r\n // Fetches a single file\r\n function fetch(filename, weak) {\r\n\r\n // Strip path if this file references a bundled definition\r\n var idx = filename.lastIndexOf(\"google/protobuf/\");\r\n if (idx > -1) {\r\n var altname = filename.substring(idx);\r\n if (altname in common)\r\n filename = altname;\r\n }\r\n\r\n // Skip if already loaded / attempted\r\n if (self.files.indexOf(filename) > -1)\r\n return;\r\n self.files.push(filename);\r\n\r\n // Shortcut bundled definitions\r\n if (filename in common) {\r\n if (sync)\r\n process(filename, common[filename]);\r\n else {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n }\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n if (sync) {\r\n var source;\r\n try {\r\n source = util.fs.readFileSync(filename).toString(\"utf8\");\r\n } catch (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n } else {\r\n ++queued;\r\n util.fetch(filename, function(err, source) {\r\n --queued;\r\n /* istanbul ignore if */\r\n if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n /* istanbul ignore else */\r\n if (!weak)\r\n finish(err);\r\n else if (!queued) // can't be covered reliably\r\n finish(null, self);\r\n return;\r\n }\r\n process(filename, source);\r\n });\r\n }\r\n }\r\n var queued = 0;\r\n\r\n // Assembling the root namespace doesn't require working type\r\n // references anymore, so we can load everything in parallel\r\n if (util.isString(filename))\r\n filename = [ filename ];\r\n for (var i = 0, resolved; i < filename.length; ++i)\r\n if (resolved = self.resolvePath(\"\", filename[i]))\r\n fetch(resolved);\r\n\r\n if (sync)\r\n return self;\r\n if (!queued)\r\n finish(null, self);\r\n return undefined;\r\n};\r\n// function load(filename:string, options:IParseOptions, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\r\n * @function Root#load\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\r\n * @function Root#load\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:IParseOptions]):Promise\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only).\r\n * @function Root#loadSync\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\nRoot.prototype.loadSync = function loadSync(filename, options) {\r\n if (!util.isNode)\r\n throw Error(\"not supported\");\r\n return this.load(filename, options, SYNC);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRoot.prototype.resolveAll = function resolveAll() {\r\n if (this.deferred.length)\r\n throw Error(\"unresolvable extensions: \" + this.deferred.map(function(field) {\r\n return \"'extend \" + field.extend + \"' in \" + field.parent.fullName;\r\n }).join(\", \"));\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\r\n\r\n// only uppercased (and thus conflict-free) children are exposed, see below\r\nvar exposeRe = /^[A-Z]/;\r\n\r\n/**\r\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\r\n * @param {Root} root Root instance\r\n * @param {Field} field Declaring extension field witin the declaring type\r\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\r\n * @inner\r\n * @ignore\r\n */\r\nfunction tryHandleExtension(root, field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options);\r\n sisterField.declaringField = field;\r\n field.extensionField = sisterField;\r\n extendedType.add(sisterField);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRoot.prototype._handleAdd = function _handleAdd(object) {\r\n if (object instanceof Field) {\r\n\r\n if (/* an extension field (implies not part of a oneof) */ object.extend !== undefined && /* not already handled */ !object.extensionField)\r\n if (!tryHandleExtension(this, object))\r\n this.deferred.push(object);\r\n\r\n } else if (object instanceof Enum) {\r\n\r\n if (exposeRe.test(object.name))\r\n object.parent[object.name] = object.values; // expose enum values as property of its parent\r\n\r\n } else if (!(object instanceof OneOf)) /* everything else is a namespace */ {\r\n\r\n if (object instanceof Type) // Try to handle any deferred extensions\r\n for (var i = 0; i < this.deferred.length;)\r\n if (tryHandleExtension(this, this.deferred[i]))\r\n this.deferred.splice(i, 1);\r\n else\r\n ++i;\r\n for (var j = 0; j < /* initializes */ object.nestedArray.length; ++j) // recurse into the namespace\r\n this._handleAdd(object._nestedArray[j]);\r\n if (exposeRe.test(object.name))\r\n object.parent[object.name] = object; // expose namespace as property of its parent\r\n }\r\n\r\n // The above also adds uppercased (and thus conflict-free) nested types, services and enums as\r\n // properties of namespaces just like static code does. This allows using a .d.ts generated for\r\n // a static module with reflection-based solutions where the condition is met.\r\n};\r\n\r\n/**\r\n * Called when any object is removed from this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object removed\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRoot.prototype._handleRemove = function _handleRemove(object) {\r\n if (object instanceof Field) {\r\n\r\n if (/* an extension field */ object.extend !== undefined) {\r\n if (/* already handled */ object.extensionField) { // remove its sister field\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n } else { // cancel the extension\r\n var index = this.deferred.indexOf(object);\r\n /* istanbul ignore else */\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n }\r\n\r\n } else if (object instanceof Enum) {\r\n\r\n if (exposeRe.test(object.name))\r\n delete object.parent[object.name]; // unexpose enum values\r\n\r\n } else if (object instanceof Namespace) {\r\n\r\n for (var i = 0; i < /* initializes */ object.nestedArray.length; ++i) // recurse into the namespace\r\n this._handleRemove(object._nestedArray[i]);\r\n\r\n if (exposeRe.test(object.name))\r\n delete object.parent[object.name]; // unexpose namespaces\r\n\r\n }\r\n};\r\n\r\nRoot._configure = function(Type_, parse_, common_) {\r\n Type = Type_;\r\n parse = parse_;\r\n common = common_;\r\n};\r\n\n\n/***/ }),\n/* 31 */,\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _protobuf = __webpack_require__(33);\n\nexports.default = _protobuf.CentrifugeProtobuf;\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CentrifugeProtobuf = exports.ProtobufDecoder = exports.ProtobufEncoder = undefined;\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 _centrifuge = __webpack_require__(10);\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar protobuf = __webpack_require__(34);\nvar proto = protobuf.Root.fromJSON(__webpack_require__(49));\n\nvar methodValues = proto.lookupEnum('MethodType').values;\n\nvar protobufMethodType = {\n CONNECT: methodValues.CONNECT,\n SUBSCRIBE: methodValues.SUBSCRIBE,\n UNSUBSCRIBE: methodValues.UNSUBSCRIBE,\n PUBLISH: methodValues.PUBLISH,\n PRESENCE: methodValues.PRESENCE,\n PRESENCE_STATS: methodValues.PRESENCE_STATS,\n HISTORY: methodValues.HISTORY,\n PING: methodValues.PING,\n RPC: methodValues.RPC,\n SEND: methodValues.SEND,\n REFRESH: methodValues.REFRESH,\n SUB_REFRESH: methodValues.SUB_REFRESH\n};\n\nvar methodSchema = {\n CONNECT: [proto.lookupType('proto.ConnectRequest'), proto.lookupType('proto.ConnectResult')],\n REFRESH: [proto.lookupType('proto.RefreshRequest'), proto.lookupType('proto.RefreshResult')],\n SUBSCRIBE: [proto.lookupType('proto.SubscribeRequest'), proto.lookupType('proto.SubscribeResult')],\n SUB_REFRESH: [proto.lookupType('proto.SubRefreshRequest'), proto.lookupType('proto.SubRefreshResult')],\n UNSUBSCRIBE: [proto.lookupType('proto.UnsubscribeRequest'), proto.lookupType('proto.UnsubscribeResult')],\n PUBLISH: [proto.lookupType('proto.PublishRequest'), proto.lookupType('proto.PublishResult')],\n PRESENCE: [proto.lookupType('proto.PresenceRequest'), proto.lookupType('proto.PresenceResult')],\n PRESENCE_STATS: [proto.lookupType('proto.PresenceStatsRequest'), proto.lookupType('proto.PresenceStatsResult')],\n HISTORY: [proto.lookupType('proto.HistoryRequest'), proto.lookupType('proto.HistoryResult')],\n PING: [proto.lookupType('proto.PingRequest'), proto.lookupType('proto.PingResult')],\n RPC: [proto.lookupType('proto.RPCRequest'), proto.lookupType('proto.RPCResult')],\n SEND: [proto.lookupType('proto.SendRequest'), null]\n};\n\nvar protobufPushType = {\n PUBLICATION: proto.lookupEnum('PushType').values.PUBLICATION,\n JOIN: proto.lookupEnum('PushType').values.JOIN,\n LEAVE: proto.lookupEnum('PushType').values.LEAVE,\n UNSUB: proto.lookupEnum('PushType').values.UNSUB,\n MESSAGE: proto.lookupEnum('PushType').values.MESSAGE\n};\n\nvar PushSchema = {\n PUBLICATION: proto.lookupType('proto.Publication'),\n JOIN: proto.lookupType('proto.Join'),\n LEAVE: proto.lookupType('proto.Leave'),\n UNSUB: proto.lookupType('proto.Unsub'),\n MESSAGE: proto.lookupType('proto.Message')\n};\n\nvar Push = proto.lookupType('proto.Push');\nvar Command = proto.lookupType('proto.Command');\nvar Reply = proto.lookupType('proto.Reply');\n\nvar ProtobufEncoder = exports.ProtobufEncoder = function () {\n function ProtobufEncoder() {\n _classCallCheck(this, ProtobufEncoder);\n }\n\n _createClass(ProtobufEncoder, [{\n key: 'encodeCommands',\n value: function encodeCommands(commands) {\n var writer = protobuf.Writer.create();\n for (var i in commands) {\n if (commands.hasOwnProperty(i)) {\n var command = Object.assign({}, commands[i]);\n if (command.params) {\n var type = void 0;\n if (!command.method) {\n command.method = protobufMethodType.CONNECT;\n };\n switch (command.method) {\n case protobufMethodType.CONNECT:\n type = methodSchema.CONNECT[0];\n break;\n case protobufMethodType.REFRESH:\n type = methodSchema.REFRESH;\n break;\n case protobufMethodType.SUBSCRIBE:\n type = methodSchema.SUBSCRIBE[0];\n break;\n case protobufMethodType.SUB_REFRESH:\n type = methodSchema.SUB_REFRESH[0];\n break;\n case protobufMethodType.UNSUBSCRIBE:\n type = methodSchema.UNSUBSCRIBE[0];\n break;\n case protobufMethodType.PUBLISH:\n type = methodSchema.PUBLISH[0];\n break;\n case protobufMethodType.PRESENCE:\n type = methodSchema.PRESENCE[0];\n break;\n case protobufMethodType.PRESENCE_STATS:\n type = methodSchema.PRESENCE_STATS[0];\n break;\n case protobufMethodType.HISTORY:\n type = methodSchema.HISTORY[0];\n break;\n case protobufMethodType.PING:\n type = methodSchema.PING[0];\n break;\n case protobufMethodType.RPC:\n type = methodSchema.RPC[0];\n break;\n case protobufMethodType.SEND:\n type = methodSchema.SEND[0];\n break;\n }\n command.params = type.encode(command.params).finish();\n }\n Command.encodeDelimited(command, writer);\n }\n }\n return writer.finish();\n }\n }]);\n\n return ProtobufEncoder;\n}();\n\nvar ProtobufDecoder = exports.ProtobufDecoder = function () {\n function ProtobufDecoder() {\n _classCallCheck(this, ProtobufDecoder);\n }\n\n _createClass(ProtobufDecoder, [{\n key: 'decodeReplies',\n value: function decodeReplies(data) {\n var replies = [];\n var reader = protobuf.Reader.create(new Uint8Array(data));\n while (reader.pos < reader.len) {\n var reply = Reply.decodeDelimited(reader);\n replies.push(reply);\n }\n return replies;\n }\n }, {\n key: 'decodeCommandResult',\n value: function decodeCommandResult(methodType, data) {\n var type;\n switch (methodType) {\n case protobufMethodType.CONNECT:\n type = methodSchema.CONNECT[1];\n break;\n case protobufMethodType.REFRESH:\n type = methodSchema.REFRESH[1];\n break;\n case protobufMethodType.SUBSCRIBE:\n type = methodSchema.SUBSCRIBE[1];\n break;\n case protobufMethodType.SUB_REFRESH:\n type = methodSchema.SUB_REFRESH[1];\n break;\n case protobufMethodType.UNSUBSCRIBE:\n type = methodSchema.UNSUBSCRIBE[1];\n break;\n case protobufMethodType.PUBLISH:\n type = methodSchema.PUBLISH[1];\n break;\n case protobufMethodType.PRESENCE:\n type = methodSchema.PRESENCE[1];\n break;\n case protobufMethodType.PRESENCE_STATS:\n type = methodSchema.PRESENCE_STATS[1];\n break;\n case protobufMethodType.HISTORY:\n type = methodSchema.HISTORY[1];\n break;\n case protobufMethodType.PING:\n type = methodSchema.PING[1];\n break;\n case protobufMethodType.RPC:\n type = methodSchema.RPC[1];\n break;\n }\n return this._decode(type, data);\n }\n }, {\n key: 'decodePush',\n value: function decodePush(data) {\n return this._decode(Push, data);\n }\n }, {\n key: 'decodePushData',\n value: function decodePushData(pushType, data) {\n var type;\n switch (pushType) {\n case protobufPushType.PUBLICATION:\n type = PushSchema.PUBLICATION;\n break;\n case protobufPushType.MESSAGE:\n type = PushSchema.MESSAGE;\n break;\n case protobufPushType.JOIN:\n type = PushSchema.JOIN;\n break;\n case protobufPushType.LEAVE:\n type = PushSchema.LEAVE;\n break;\n case protobufPushType.UNSUB:\n type = PushSchema.UNSUB;\n break;\n }\n return this._decode(type, data);\n }\n }, {\n key: '_decode',\n value: function _decode(type, data) {\n var res = void 0;\n try {\n res = type.decode(data);\n } catch (err) {\n return null;\n }\n return res;\n }\n }]);\n\n return ProtobufDecoder;\n}();\n\nvar CentrifugeProtobuf = exports.CentrifugeProtobuf = function (_Centrifuge) {\n _inherits(CentrifugeProtobuf, _Centrifuge);\n\n function CentrifugeProtobuf() {\n _classCallCheck(this, CentrifugeProtobuf);\n\n return _possibleConstructorReturn(this, (CentrifugeProtobuf.__proto__ || Object.getPrototypeOf(CentrifugeProtobuf)).apply(this, arguments));\n }\n\n _createClass(CentrifugeProtobuf, [{\n key: '_formatOverride',\n value: function _formatOverride(format) {\n if (format === 'protobuf') {\n this._binary = true;\n this._methodType = protobufMethodType;\n this._pushType = protobufPushType;\n this._encoder = new ProtobufEncoder();\n this._decoder = new ProtobufDecoder();\n return true;\n }\n return false;\n }\n }]);\n\n return CentrifugeProtobuf;\n}(_centrifuge.Centrifuge);\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// light library entry point.\r\n\r\n\r\nmodule.exports = __webpack_require__(35);\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar protobuf = module.exports = __webpack_require__(36);\r\n\r\nprotobuf.build = \"light\";\r\n\r\n/**\r\n * A node-style callback as used by {@link load} and {@link Root#load}.\r\n * @typedef LoadCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Root} [root] Root, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} root Root namespace, defaults to create a new one if omitted.\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @see {@link Root#load}\r\n */\r\nfunction load(filename, root, callback) {\r\n if (typeof root === \"function\") {\r\n callback = root;\r\n root = new protobuf.Root();\r\n } else if (!root)\r\n root = new protobuf.Root();\r\n return root.load(filename, callback);\r\n}\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @see {@link Root#load}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Promise} Promise\r\n * @see {@link Root#load}\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n * @see {@link Root#loadSync}\r\n */\r\nfunction loadSync(filename, root) {\r\n if (!root)\r\n root = new protobuf.Root();\r\n return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\r\n\r\n// Serialization\r\nprotobuf.encoder = __webpack_require__(21);\r\nprotobuf.decoder = __webpack_require__(26);\r\nprotobuf.verifier = __webpack_require__(27);\r\nprotobuf.converter = __webpack_require__(28);\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = __webpack_require__(4);\r\nprotobuf.Namespace = __webpack_require__(8);\r\nprotobuf.Root = __webpack_require__(30);\r\nprotobuf.Enum = __webpack_require__(1);\r\nprotobuf.Type = __webpack_require__(22);\r\nprotobuf.Field = __webpack_require__(5);\r\nprotobuf.OneOf = __webpack_require__(15);\r\nprotobuf.MapField = __webpack_require__(23);\r\nprotobuf.Service = __webpack_require__(24);\r\nprotobuf.Method = __webpack_require__(25);\r\n\r\n// Runtime\r\nprotobuf.Message = __webpack_require__(16);\r\nprotobuf.wrappers = __webpack_require__(29);\r\n\r\n// Utility\r\nprotobuf.types = __webpack_require__(9);\r\nprotobuf.util = __webpack_require__(0);\r\n\r\n// Configure reflection\r\nprotobuf.ReflectionObject._configure(protobuf.Root);\r\nprotobuf.Namespace._configure(protobuf.Type, protobuf.Service);\r\nprotobuf.Root._configure(protobuf.Type);\r\nprotobuf.Field._configure(protobuf.Type);\r\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar protobuf = exports;\r\n\r\n/**\r\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\r\n * @name build\r\n * @type {string}\r\n * @const\r\n */\r\nprotobuf.build = \"minimal\";\r\n\r\n// Serialization\r\nprotobuf.Writer = __webpack_require__(13);\r\nprotobuf.BufferWriter = __webpack_require__(43);\r\nprotobuf.Reader = __webpack_require__(14);\r\nprotobuf.BufferReader = __webpack_require__(44);\r\n\r\n// Utility\r\nprotobuf.util = __webpack_require__(2);\r\nprotobuf.rpc = __webpack_require__(19);\r\nprotobuf.roots = __webpack_require__(20);\r\nprotobuf.configure = configure;\r\n\r\n/* istanbul ignore next */\r\n/**\r\n * Reconfigures the library according to the environment.\r\n * @returns {undefined}\r\n */\r\nfunction configure() {\r\n protobuf.Reader._configure(protobuf.BufferReader);\r\n protobuf.util._configure();\r\n}\r\n\r\n// Configure serialization\r\nprotobuf.Writer._configure(protobuf.BufferWriter);\r\nconfigure();\r\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = LongBits;\r\n\r\nvar util = __webpack_require__(2);\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low 32 bits, unsigned\r\n * @param {number} hi High 32 bits, unsigned\r\n */\r\nfunction LongBits(lo, hi) {\r\n\r\n // note that the casts below are theoretically unnecessary as of today, but older statically\r\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo >>> 0;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi >>> 0;\r\n}\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = LongBits.zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Zero hash.\r\n * @memberof util.LongBits\r\n * @type {string}\r\n */\r\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n if (sign)\r\n value = -value;\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.from = function from(value) {\r\n if (typeof value === \"number\")\r\n return LongBits.fromNumber(value);\r\n if (util.isString(value)) {\r\n /* istanbul ignore else */\r\n if (util.Long)\r\n value = util.Long.fromString(value);\r\n else\r\n return LongBits.fromNumber(parseInt(value, 10));\r\n }\r\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBits.prototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n var lo = ~this.lo + 1 >>> 0,\r\n hi = ~this.hi >>> 0;\r\n if (!lo)\r\n hi = hi + 1 >>> 0;\r\n return -(lo + hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBits.prototype.toLong = function toLong(unsigned) {\r\n return util.Long\r\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\r\n /* istanbul ignore next */\r\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n if (hash === zeroHash)\r\n return zero;\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBits.prototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 ,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBits.prototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n return part2 === 0\r\n ? part1 === 0\r\n ? part0 < 16384\r\n ? part0 < 128 ? 1 : 2\r\n : part0 < 2097152 ? 3 : 4\r\n : part1 < 16384\r\n ? part1 < 128 ? 5 : 6\r\n : part1 < 2097152 ? 7 : 8\r\n : part2 < 128 ? 9 : 10;\r\n};\r\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = BufferWriter;\r\n\r\n// extends Writer\r\nvar Writer = __webpack_require__(13);\r\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\r\n\r\nvar util = __webpack_require__(2);\r\n\r\nvar Buffer = util.Buffer;\r\n\r\n/**\r\n * Constructs a new buffer writer instance.\r\n * @classdesc Wire format writer using node buffers.\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Buffer} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = util._Buffer_allocUnsafe)(size);\r\n};\r\n\r\nvar writeBytesBuffer = Buffer && Buffer.prototype instanceof Uint8Array && Buffer.prototype.set.name === \"set\"\r\n ? function writeBytesBuffer_set(val, buf, pos) {\r\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\r\n // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n if (val.copy) // Buffer values\r\n val.copy(buf, pos, 0, val.length);\r\n else for (var i = 0; i < val.length;) // plain array values\r\n buf[pos++] = val[i++];\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\r\n if (util.isString(value))\r\n value = util._Buffer_from(value, \"base64\");\r\n var len = value.length >>> 0;\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeBytesBuffer, len, value);\r\n return this;\r\n};\r\n\r\nfunction writeStringBuffer(val, buf, pos) {\r\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\r\n util.utf8.write(val, buf, pos);\r\n else\r\n buf.utf8Write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.string = function write_string_buffer(value) {\r\n var len = Buffer.byteLength(value);\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeStringBuffer, len, value);\r\n return this;\r\n};\r\n\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @name BufferWriter#finish\r\n * @function\r\n * @returns {Buffer} Finished buffer\r\n */\r\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = BufferReader;\r\n\r\n// extends Reader\r\nvar Reader = __webpack_require__(14);\r\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\r\n\r\nvar util = __webpack_require__(2);\r\n\r\n/**\r\n * Constructs a new buffer reader instance.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n Reader.call(this, buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @name BufferReader#buf\r\n * @type {Buffer}\r\n */\r\n}\r\n\r\n/* istanbul ignore else */\r\nif (util.Buffer)\r\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReader.prototype.string = function read_string_buffer() {\r\n var len = this.uint32(); // modifies pos\r\n return this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len));\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @name BufferReader#bytes\r\n * @function\r\n * @returns {Buffer} Value read\r\n */\r\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = Service;\r\n\r\nvar util = __webpack_require__(2);\r\n\r\n// Extends EventEmitter\r\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\r\n\r\n/**\r\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\r\n *\r\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\r\n * @typedef rpc.ServiceMethodCallback\r\n * @template TRes extends Message\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {TRes} [response] Response message\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\r\n * @typedef rpc.ServiceMethod\r\n * @template TReq extends Message\r\n * @template TRes extends Message\r\n * @type {function}\r\n * @param {TReq|Properties} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message\r\n * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined`\r\n */\r\n\r\n/**\r\n * Constructs a new RPC service instance.\r\n * @classdesc An RPC service as returned by {@link Service#create}.\r\n * @exports rpc.Service\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n */\r\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\r\n\r\n if (typeof rpcImpl !== \"function\")\r\n throw TypeError(\"rpcImpl must be a function\");\r\n\r\n util.EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {RPCImpl|null}\r\n */\r\n this.rpcImpl = rpcImpl;\r\n\r\n /**\r\n * Whether requests are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.requestDelimited = Boolean(requestDelimited);\r\n\r\n /**\r\n * Whether responses are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.responseDelimited = Boolean(responseDelimited);\r\n}\r\n\r\n/**\r\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\r\n * @param {Method|rpc.ServiceMethod} method Reflected or static method\r\n * @param {Constructor} requestCtor Request constructor\r\n * @param {Constructor} responseCtor Response constructor\r\n * @param {TReq|Properties} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback} callback Service callback\r\n * @returns {undefined}\r\n * @template TReq extends Message\r\n * @template TRes extends Message\r\n */\r\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\r\n\r\n if (!request)\r\n throw TypeError(\"request must be specified\");\r\n\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\r\n\r\n if (!self.rpcImpl) {\r\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\r\n return undefined;\r\n }\r\n\r\n try {\r\n return self.rpcImpl(\r\n method,\r\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\r\n function rpcCallback(err, response) {\r\n\r\n if (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n\r\n if (response === null) {\r\n self.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n\r\n if (!(response instanceof responseCtor)) {\r\n try {\r\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n }\r\n\r\n self.emit(\"data\", response, method);\r\n return callback(null, response);\r\n }\r\n );\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n setTimeout(function() { callback(err); }, 0);\r\n return undefined;\r\n }\r\n};\r\n\r\n/**\r\n * Ends this service and emits the `end` event.\r\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\r\n * @returns {rpc.Service} `this`\r\n */\r\nService.prototype.end = function end(endedByRPC) {\r\n if (this.rpcImpl) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.rpcImpl(null, null, null);\r\n this.rpcImpl = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = codegen;\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @param {string[]} functionParams Function parameter names\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n */\r\nfunction codegen(functionParams, functionName) {\r\n\r\n /* istanbul ignore if */\r\n if (typeof functionParams === \"string\") {\r\n functionName = functionParams;\r\n functionParams = undefined;\r\n }\r\n\r\n var body = [];\r\n\r\n /**\r\n * Appends code to the function's body or finishes generation.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string|Object.} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any\r\n * @param {...*} [formatParams] Format parameters\r\n * @returns {Codegen|Function} Itself or the generated function if finished\r\n * @throws {Error} If format parameter counts do not match\r\n */\r\n\r\n function Codegen(formatStringOrScope) {\r\n // note that explicit array handling below makes this ~50% faster\r\n\r\n // finish the function\r\n if (typeof formatStringOrScope !== \"string\") {\r\n var source = toString();\r\n if (codegen.verbose)\r\n console.log(\"codegen: \" + source); // eslint-disable-line no-console\r\n source = \"return \" + source;\r\n if (formatStringOrScope) {\r\n var scopeKeys = Object.keys(formatStringOrScope),\r\n scopeParams = new Array(scopeKeys.length + 1),\r\n scopeValues = new Array(scopeKeys.length),\r\n scopeOffset = 0;\r\n while (scopeOffset < scopeKeys.length) {\r\n scopeParams[scopeOffset] = scopeKeys[scopeOffset];\r\n scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]];\r\n }\r\n scopeParams[scopeOffset] = source;\r\n return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func\r\n }\r\n return Function(source)(); // eslint-disable-line no-new-func\r\n }\r\n\r\n // otherwise append to body\r\n var formatParams = new Array(arguments.length - 1),\r\n formatOffset = 0;\r\n while (formatOffset < formatParams.length)\r\n formatParams[formatOffset] = arguments[++formatOffset];\r\n formatOffset = 0;\r\n formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) {\r\n var value = formatParams[formatOffset++];\r\n switch ($1) {\r\n case \"d\": case \"f\": return String(Number(value));\r\n case \"i\": return String(Math.floor(value));\r\n case \"j\": return JSON.stringify(value);\r\n case \"s\": return String(value);\r\n }\r\n return \"%\";\r\n });\r\n if (formatOffset !== formatParams.length)\r\n throw Error(\"parameter count mismatch\");\r\n body.push(formatStringOrScope);\r\n return Codegen;\r\n }\r\n\r\n function toString(functionNameOverride) {\r\n return \"function \" + (functionNameOverride || functionName || \"\") + \"(\" + (functionParams && functionParams.join(\",\") || \"\") + \"){\\n \" + body.join(\"\\n \") + \"\\n}\";\r\n }\r\n\r\n Codegen.toString = toString;\r\n return Codegen;\r\n}\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @function codegen\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * When set to `true`, codegen will log generated code to console. Useful for debugging.\r\n * @name util.codegen.verbose\r\n * @type {boolean}\r\n */\r\ncodegen.verbose = false;\r\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = __webpack_require__(17),\r\n inquire = __webpack_require__(18);\r\n\r\nvar fs = inquire(\"fs\");\r\n\r\n/**\r\n * Node-style callback as used by {@link util.fetch}.\r\n * @typedef FetchCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {string} [contents] File contents, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Options as used by {@link util.fetch}.\r\n * @typedef FetchOptions\r\n * @type {Object}\r\n * @property {boolean} [binary=false] Whether expecting a binary response\r\n * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} filename File path or url\r\n * @param {FetchOptions} options Fetch options\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nfunction fetch(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = {};\r\n } else if (!options)\r\n options = {};\r\n\r\n if (!callback)\r\n return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this\r\n\r\n // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.\r\n if (!options.xhr && fs && fs.readFile)\r\n return fs.readFile(filename, function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch.xhr(filename, options, callback)\r\n : err\r\n ? callback(err)\r\n : callback(null, options.binary ? contents : contents.toString(\"utf8\"));\r\n });\r\n\r\n // use the XHR version otherwise.\r\n return fetch.xhr(filename, options, callback);\r\n}\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchOptions} [options] Fetch options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n\r\n/**/\r\nfetch.xhr = function fetch_xhr(filename, options, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n\r\n if (xhr.readyState !== 4)\r\n return undefined;\r\n\r\n // local cors security errors return status 0 / empty string, too. afaik this cannot be\r\n // reliably distinguished from an actually empty file for security reasons. feel free\r\n // to send a pull request if you are aware of a solution.\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n\r\n // if binary data is expected, make sure that some sort of array is returned, even if\r\n // ArrayBuffers are not supported. the binary string fallback, however, is unsafe.\r\n if (options.binary) {\r\n var buffer = xhr.response;\r\n if (!buffer) {\r\n buffer = [];\r\n for (var i = 0; i < xhr.responseText.length; ++i)\r\n buffer.push(xhr.responseText.charCodeAt(i) & 255);\r\n }\r\n return callback(null, typeof Uint8Array !== \"undefined\" ? new Uint8Array(buffer) : buffer);\r\n }\r\n return callback(null, xhr.responseText);\r\n };\r\n\r\n if (options.binary) {\r\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers\r\n if (\"overrideMimeType\" in xhr)\r\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\r\n xhr.responseType = \"arraybuffer\";\r\n }\r\n\r\n xhr.open(\"GET\", filename);\r\n xhr.send();\r\n};\r\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n\r\n/**\r\n * A minimal path module to resolve Unix, Windows and URL paths alike.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar path = exports;\r\n\r\nvar isAbsolute =\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\npath.isAbsolute = function isAbsolute(path) {\r\n return /^(?:\\/|\\w+:)/.test(path);\r\n};\r\n\r\nvar normalize =\r\n/**\r\n * Normalizes the specified path.\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\npath.normalize = function normalize(path) {\r\n path = path.replace(/\\\\/g, \"/\")\r\n .replace(/\\/{2,}/g, \"/\");\r\n var parts = path.split(\"/\"),\r\n absolute = isAbsolute(path),\r\n prefix = \"\";\r\n if (absolute)\r\n prefix = parts.shift() + \"/\";\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === \"..\") {\r\n if (i > 0 && parts[i - 1] !== \"..\")\r\n parts.splice(--i, 2);\r\n else if (absolute)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === \".\")\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join(\"/\");\r\n};\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path to the origin file\r\n * @param {string} includePath Include path relative to origin path\r\n * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the include file\r\n */\r\npath.resolve = function resolve(originPath, includePath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n includePath = normalize(includePath);\r\n if (isAbsolute(includePath))\r\n return includePath;\r\n if (!alreadyNormalized)\r\n originPath = normalize(originPath);\r\n return (originPath = originPath.replace(/(?:\\/|^)[^/]+$/, \"\")).length ? normalize(originPath + \"/\" + includePath) : includePath;\r\n};\r\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports) {\n\nmodule.exports = {\"nested\":{\"proto\":{\"nested\":{\"Error\":{\"fields\":{\"code\":{\"type\":\"uint32\",\"id\":1},\"message\":{\"type\":\"string\",\"id\":2}}},\"MethodType\":{\"values\":{\"CONNECT\":0,\"SUBSCRIBE\":1,\"UNSUBSCRIBE\":2,\"PUBLISH\":3,\"PRESENCE\":4,\"PRESENCE_STATS\":5,\"HISTORY\":6,\"PING\":7,\"SEND\":8,\"RPC\":9,\"REFRESH\":10,\"SUB_REFRESH\":11}},\"Command\":{\"fields\":{\"id\":{\"type\":\"uint32\",\"id\":1},\"method\":{\"type\":\"MethodType\",\"id\":2},\"params\":{\"type\":\"bytes\",\"id\":3}}},\"Reply\":{\"fields\":{\"id\":{\"type\":\"uint32\",\"id\":1},\"error\":{\"type\":\"Error\",\"id\":2},\"result\":{\"type\":\"bytes\",\"id\":3}}},\"PushType\":{\"values\":{\"PUBLICATION\":0,\"JOIN\":1,\"LEAVE\":2,\"UNSUB\":3,\"MESSAGE\":4}},\"Push\":{\"fields\":{\"type\":{\"type\":\"PushType\",\"id\":1},\"channel\":{\"type\":\"string\",\"id\":2},\"data\":{\"type\":\"bytes\",\"id\":3}}},\"ClientInfo\":{\"fields\":{\"user\":{\"type\":\"string\",\"id\":1},\"client\":{\"type\":\"string\",\"id\":2},\"connInfo\":{\"type\":\"bytes\",\"id\":3},\"chanInfo\":{\"type\":\"bytes\",\"id\":4}}},\"Publication\":{\"fields\":{\"seq\":{\"type\":\"uint32\",\"id\":1},\"gen\":{\"type\":\"uint32\",\"id\":2},\"uid\":{\"type\":\"string\",\"id\":3},\"data\":{\"type\":\"bytes\",\"id\":4},\"info\":{\"type\":\"ClientInfo\",\"id\":5}}},\"Join\":{\"fields\":{\"info\":{\"type\":\"ClientInfo\",\"id\":1}}},\"Leave\":{\"fields\":{\"info\":{\"type\":\"ClientInfo\",\"id\":1}}},\"Unsub\":{\"fields\":{\"resubscribe\":{\"type\":\"bool\",\"id\":1}}},\"Message\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}},\"ConnectRequest\":{\"fields\":{\"token\":{\"type\":\"string\",\"id\":1},\"data\":{\"type\":\"bytes\",\"id\":2}}},\"ConnectResult\":{\"fields\":{\"client\":{\"type\":\"string\",\"id\":1},\"version\":{\"type\":\"string\",\"id\":2},\"expires\":{\"type\":\"bool\",\"id\":3},\"ttl\":{\"type\":\"uint32\",\"id\":4},\"data\":{\"type\":\"bytes\",\"id\":5}}},\"RefreshRequest\":{\"fields\":{\"token\":{\"type\":\"string\",\"id\":1}}},\"RefreshResult\":{\"fields\":{\"client\":{\"type\":\"string\",\"id\":1},\"version\":{\"type\":\"string\",\"id\":2},\"expires\":{\"type\":\"bool\",\"id\":3},\"ttl\":{\"type\":\"uint32\",\"id\":4}}},\"SubscribeRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1},\"token\":{\"type\":\"string\",\"id\":2},\"recover\":{\"type\":\"bool\",\"id\":3},\"seq\":{\"type\":\"uint32\",\"id\":4},\"gen\":{\"type\":\"uint32\",\"id\":5},\"epoch\":{\"type\":\"string\",\"id\":6}}},\"SubscribeResult\":{\"fields\":{\"expires\":{\"type\":\"bool\",\"id\":1},\"ttl\":{\"type\":\"uint32\",\"id\":2},\"recoverable\":{\"type\":\"bool\",\"id\":3},\"seq\":{\"type\":\"uint32\",\"id\":4},\"gen\":{\"type\":\"uint32\",\"id\":5},\"epoch\":{\"type\":\"string\",\"id\":6},\"publications\":{\"rule\":\"repeated\",\"type\":\"Publication\",\"id\":7},\"recovered\":{\"type\":\"bool\",\"id\":8}}},\"SubRefreshRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1},\"token\":{\"type\":\"string\",\"id\":2}}},\"SubRefreshResult\":{\"fields\":{\"expires\":{\"type\":\"bool\",\"id\":1},\"ttl\":{\"type\":\"uint32\",\"id\":2}}},\"UnsubscribeRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"UnsubscribeResult\":{\"fields\":{}},\"PublishRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1},\"data\":{\"type\":\"bytes\",\"id\":2}}},\"PublishResult\":{\"fields\":{}},\"PresenceRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"PresenceResult\":{\"fields\":{\"presence\":{\"keyType\":\"string\",\"type\":\"ClientInfo\",\"id\":1}}},\"PresenceStatsRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"PresenceStatsResult\":{\"fields\":{\"numClients\":{\"type\":\"uint32\",\"id\":1},\"numUsers\":{\"type\":\"uint32\",\"id\":2}}},\"HistoryRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"HistoryResult\":{\"fields\":{\"publications\":{\"rule\":\"repeated\",\"type\":\"Publication\",\"id\":1}}},\"PingRequest\":{\"fields\":{}},\"PingResult\":{\"fields\":{}},\"RPCRequest\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}},\"RPCResult\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}},\"SendRequest\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}}}}}}\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// centrifuge.protobuf.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 32);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 888eb561f5375783ac27","\"use strict\";\r\n\r\n/**\r\n * Various utility functions.\r\n * @namespace\r\n */\r\nvar util = module.exports = require(\"./util/minimal\");\r\n\r\nvar roots = require(\"./roots\");\r\n\r\nvar Type, // cyclic\r\n Enum;\r\n\r\nutil.codegen = require(\"@protobufjs/codegen\");\r\nutil.fetch = require(\"@protobufjs/fetch\");\r\nutil.path = require(\"@protobufjs/path\");\r\n\r\n/**\r\n * Node's fs module if available.\r\n * @type {Object.}\r\n */\r\nutil.fs = util.inquire(\"fs\");\r\n\r\n/**\r\n * Converts an object's values to an array.\r\n * @param {Object.} object Object to convert\r\n * @returns {Array.<*>} Converted array\r\n */\r\nutil.toArray = function toArray(object) {\r\n if (object) {\r\n var keys = Object.keys(object),\r\n array = new Array(keys.length),\r\n index = 0;\r\n while (index < keys.length)\r\n array[index] = object[keys[index++]];\r\n return array;\r\n }\r\n return [];\r\n};\r\n\r\n/**\r\n * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values.\r\n * @param {Array.<*>} array Array to convert\r\n * @returns {Object.} Converted object\r\n */\r\nutil.toObject = function toObject(array) {\r\n var object = {},\r\n index = 0;\r\n while (index < array.length) {\r\n var key = array[index++],\r\n val = array[index++];\r\n if (val !== undefined)\r\n object[key] = val;\r\n }\r\n return object;\r\n};\r\n\r\nvar safePropBackslashRe = /\\\\/g,\r\n safePropQuoteRe = /\"/g;\r\n\r\n/**\r\n * Tests whether the specified name is a reserved word in JS.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nutil.isReserved = function isReserved(name) {\r\n return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test(name);\r\n};\r\n\r\n/**\r\n * Returns a safe property accessor for the specified property name.\r\n * @param {string} prop Property name\r\n * @returns {string} Safe accessor\r\n */\r\nutil.safeProp = function safeProp(prop) {\r\n if (!/^[$\\w_]+$/.test(prop) || util.isReserved(prop))\r\n return \"[\\\"\" + prop.replace(safePropBackslashRe, \"\\\\\\\\\").replace(safePropQuoteRe, \"\\\\\\\"\") + \"\\\"]\";\r\n return \".\" + prop;\r\n};\r\n\r\n/**\r\n * Converts the first character of a string to upper case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.ucFirst = function ucFirst(str) {\r\n return str.charAt(0).toUpperCase() + str.substring(1);\r\n};\r\n\r\nvar camelCaseRe = /_([a-z])/g;\r\n\r\n/**\r\n * Converts a string to camel case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.camelCase = function camelCase(str) {\r\n return str.substring(0, 1)\r\n + str.substring(1)\r\n .replace(camelCaseRe, function($0, $1) { return $1.toUpperCase(); });\r\n};\r\n\r\n/**\r\n * Compares reflected fields by id.\r\n * @param {Field} a First field\r\n * @param {Field} b Second field\r\n * @returns {number} Comparison value\r\n */\r\nutil.compareFieldsById = function compareFieldsById(a, b) {\r\n return a.id - b.id;\r\n};\r\n\r\n/**\r\n * Decorator helper for types (TypeScript).\r\n * @param {Constructor} ctor Constructor function\r\n * @param {string} [typeName] Type name, defaults to the constructor's name\r\n * @returns {Type} Reflected type\r\n * @template T extends Message\r\n * @property {Root} root Decorators root\r\n */\r\nutil.decorateType = function decorateType(ctor, typeName) {\r\n\r\n /* istanbul ignore if */\r\n if (ctor.$type) {\r\n if (typeName && ctor.$type.name !== typeName) {\r\n util.decorateRoot.remove(ctor.$type);\r\n ctor.$type.name = typeName;\r\n util.decorateRoot.add(ctor.$type);\r\n }\r\n return ctor.$type;\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (!Type)\r\n Type = require(\"./type\");\r\n\r\n var type = new Type(typeName || ctor.name);\r\n util.decorateRoot.add(type);\r\n type.ctor = ctor; // sets up .encode, .decode etc.\r\n Object.defineProperty(ctor, \"$type\", { value: type, enumerable: false });\r\n Object.defineProperty(ctor.prototype, \"$type\", { value: type, enumerable: false });\r\n return type;\r\n};\r\n\r\nvar decorateEnumIndex = 0;\r\n\r\n/**\r\n * Decorator helper for enums (TypeScript).\r\n * @param {Object} object Enum object\r\n * @returns {Enum} Reflected enum\r\n */\r\nutil.decorateEnum = function decorateEnum(object) {\r\n\r\n /* istanbul ignore if */\r\n if (object.$type)\r\n return object.$type;\r\n\r\n /* istanbul ignore next */\r\n if (!Enum)\r\n Enum = require(\"./enum\");\r\n\r\n var enm = new Enum(\"Enum\" + decorateEnumIndex++, object);\r\n util.decorateRoot.add(enm);\r\n Object.defineProperty(object, \"$type\", { value: enm, enumerable: false });\r\n return enm;\r\n};\r\n\r\n/**\r\n * Decorator root (TypeScript).\r\n * @name util.decorateRoot\r\n * @type {Root}\r\n * @readonly\r\n */\r\nObject.defineProperty(util, \"decorateRoot\", {\r\n get: function() {\r\n return roots[\"decorated\"] || (roots[\"decorated\"] = new (require(\"./root\"))());\r\n }\r\n});\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/util.js\n// module id = 0\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Enum;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Enum.prototype = Object.create(ReflectionObject.prototype)).constructor = Enum).className = \"Enum\";\r\n\r\nvar Namespace = require(\"./namespace\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new enum instance.\r\n * @classdesc Reflected enum.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {Object.} [values] Enum values as an object, by name\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] The comment for this enum\r\n * @param {Object.} [comments] The value comments for this enum\r\n */\r\nfunction Enum(name, values, options, comment, comments) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n if (values && typeof values !== \"object\")\r\n throw TypeError(\"values must be an object\");\r\n\r\n /**\r\n * Enum values by id.\r\n * @type {Object.}\r\n */\r\n this.valuesById = {};\r\n\r\n /**\r\n * Enum values by name.\r\n * @type {Object.}\r\n */\r\n this.values = Object.create(this.valuesById); // toJSON, marker\r\n\r\n /**\r\n * Enum comment text.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n\r\n /**\r\n * Value comment texts, if any.\r\n * @type {Object.}\r\n */\r\n this.comments = comments || {};\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {Array.}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n // Note that values inherit valuesById on their prototype which makes them a TypeScript-\r\n // compatible enum. This is used by pbts to write actual enum definitions that work for\r\n // static and reflection code alike instead of emitting generic object definitions.\r\n\r\n if (values)\r\n for (var keys = Object.keys(values), i = 0; i < keys.length; ++i)\r\n if (typeof values[keys[i]] === \"number\") // use forward entries only\r\n this.valuesById[ this.values[keys[i]] = values[keys[i]] ] = keys[i];\r\n}\r\n\r\n/**\r\n * Enum descriptor.\r\n * @interface IEnum\r\n * @property {Object.} values Enum values\r\n * @property {Object.} [options] Enum options\r\n */\r\n\r\n/**\r\n * Constructs an enum from an enum descriptor.\r\n * @param {string} name Enum name\r\n * @param {IEnum} json Enum descriptor\r\n * @returns {Enum} Created enum\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nEnum.fromJSON = function fromJSON(name, json) {\r\n var enm = new Enum(name, json.values, json.options, json.comment, json.comments);\r\n enm.reserved = json.reserved;\r\n return enm;\r\n};\r\n\r\n/**\r\n * Converts this enum to an enum descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IEnum} Enum descriptor\r\n */\r\nEnum.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"values\" , this.values,\r\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\r\n \"comment\" , keepComments ? this.comment : undefined,\r\n \"comments\" , keepComments ? this.comments : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds a value to this enum.\r\n * @param {string} name Value name\r\n * @param {number} id Value id\r\n * @param {string} [comment] Comment, if any\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a value with this name or id\r\n */\r\nEnum.prototype.add = function add(name, id, comment) {\r\n // utilized by the parser but not by .fromJSON\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n if (!util.isInteger(id))\r\n throw TypeError(\"id must be an integer\");\r\n\r\n if (this.values[name] !== undefined)\r\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\r\n\r\n if (this.isReservedId(id))\r\n throw Error(\"id \" + id + \" is reserved in \" + this);\r\n\r\n if (this.isReservedName(name))\r\n throw Error(\"name '\" + name + \"' is reserved in \" + this);\r\n\r\n if (this.valuesById[id] !== undefined) {\r\n if (!(this.options && this.options.allow_alias))\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n this.values[name] = id;\r\n } else\r\n this.valuesById[this.values[name] = id] = name;\r\n\r\n this.comments[name] = comment || null;\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a value from this enum\r\n * @param {string} name Value name\r\n * @returns {Enum} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `name` is not a name of this enum\r\n */\r\nEnum.prototype.remove = function remove(name) {\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n var val = this.values[name];\r\n if (val == null)\r\n throw Error(\"name '\" + name + \"' does not exist in \" + this);\r\n\r\n delete this.valuesById[val];\r\n delete this.values[name];\r\n delete this.comments[name];\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nEnum.prototype.isReservedId = function isReservedId(id) {\r\n return Namespace.isReservedId(this.reserved, id);\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nEnum.prototype.isReservedName = function isReservedName(name) {\r\n return Namespace.isReservedName(this.reserved, name);\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/enum.js\n// module id = 1\n// module chunks = 0","\"use strict\";\r\nvar util = exports;\r\n\r\n// used to return a Promise where callback is omitted\r\nutil.asPromise = require(\"@protobufjs/aspromise\");\r\n\r\n// converts to / from base64 encoded strings\r\nutil.base64 = require(\"@protobufjs/base64\");\r\n\r\n// base class of rpc.Service\r\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\r\n\r\n// float handling accross browsers\r\nutil.float = require(\"@protobufjs/float\");\r\n\r\n// requires modules optionally and hides the call from bundlers\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\n\r\n// converts to / from utf8 encoded strings\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\n\r\n// provides a node-like buffer pool in the browser\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n// utility to work with the low and high bits of a 64 bit value\r\nutil.LongBits = require(\"./longbits\");\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n * @const\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n * @const\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n * @const\r\n */\r\nutil.isNode = Boolean(global.process && global.process.versions && global.process.versions.node);\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\r\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nutil.isString = function isString(value) {\r\n return typeof value === \"string\" || value instanceof String;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return value && typeof value === \"object\";\r\n};\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * This is an alias of {@link util.isSet}.\r\n * @function\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isset =\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isSet = function isSet(obj, prop) {\r\n var value = obj[prop];\r\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\r\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\r\n return false;\r\n};\r\n\r\n/**\r\n * Any compatible Buffer instance.\r\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\r\n * @interface Buffer\r\n * @extends Uint8Array\r\n */\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {Constructor}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\r\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\r\n } catch (e) {\r\n /* istanbul ignore next */\r\n return null;\r\n }\r\n})();\r\n\r\n// Internal alias of or polyfull for Buffer.from.\r\nutil._Buffer_from = null;\r\n\r\n// Internal alias of or polyfill for Buffer.allocUnsafe.\r\nutil._Buffer_allocUnsafe = null;\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array|Buffer} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n /* istanbul ignore next */\r\n return typeof sizeOrArray === \"number\"\r\n ? util.Buffer\r\n ? util._Buffer_allocUnsafe(sizeOrArray)\r\n : new util.Array(sizeOrArray)\r\n : util.Buffer\r\n ? util._Buffer_from(sizeOrArray)\r\n : typeof Uint8Array === \"undefined\"\r\n ? sizeOrArray\r\n : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {Constructor}\r\n */\r\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\r\n * @interface Long\r\n * @property {number} low Low bits\r\n * @property {number} high High bits\r\n * @property {boolean} unsigned Whether unsigned or not\r\n */\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {Constructor}\r\n */\r\nutil.Long = /* istanbul ignore next */ global.dcodeIO && /* istanbul ignore next */ global.dcodeIO.Long || util.inquire(\"long\");\r\n\r\n/**\r\n * Regular expression used to verify 2 bit (`bool`) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key2Re = /^true|false|0|1$/;\r\n\r\n/**\r\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\r\n\r\n/**\r\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? util.LongBits.from(value).toHash()\r\n : util.LongBits.zeroHash;\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = util.LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @memberof util\r\n * @param {Object.} dst Destination object\r\n * @param {Object.} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.} Destination object\r\n */\r\nfunction merge(dst, src, ifNotSet) { // used by converters\r\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n return dst;\r\n}\r\n\r\nutil.merge = merge;\r\n\r\n/**\r\n * Converts the first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a custom error constructor.\r\n * @memberof util\r\n * @param {string} name Error name\r\n * @returns {Constructor} Custom error constructor\r\n */\r\nfunction newError(name) {\r\n\r\n function CustomError(message, properties) {\r\n\r\n if (!(this instanceof CustomError))\r\n return new CustomError(message, properties);\r\n\r\n // Error.call(this, message);\r\n // ^ just returns a new error instance because the ctor can be called as a function\r\n\r\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\r\n\r\n /* istanbul ignore next */\r\n if (Error.captureStackTrace) // node\r\n Error.captureStackTrace(this, CustomError);\r\n else\r\n Object.defineProperty(this, \"stack\", { value: (new Error()).stack || \"\" });\r\n\r\n if (properties)\r\n merge(this, properties);\r\n }\r\n\r\n (CustomError.prototype = Object.create(Error.prototype)).constructor = CustomError;\r\n\r\n Object.defineProperty(CustomError.prototype, \"name\", { get: function() { return name; } });\r\n\r\n CustomError.prototype.toString = function toString() {\r\n return this.name + \": \" + this.message;\r\n };\r\n\r\n return CustomError;\r\n}\r\n\r\nutil.newError = newError;\r\n\r\n/**\r\n * Constructs a new protocol error.\r\n * @classdesc Error subclass indicating a protocol specifc error.\r\n * @memberof util\r\n * @extends Error\r\n * @template T extends Message\r\n * @constructor\r\n * @param {string} message Error message\r\n * @param {Object.} [properties] Additional properties\r\n * @example\r\n * try {\r\n * MyMessage.decode(someBuffer); // throws if required fields are missing\r\n * } catch (e) {\r\n * if (e instanceof ProtocolError && e.instance)\r\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\r\n * }\r\n */\r\nutil.ProtocolError = newError(\"ProtocolError\");\r\n\r\n/**\r\n * So far decoded message instance.\r\n * @name util.ProtocolError#instance\r\n * @type {Message}\r\n */\r\n\r\n/**\r\n * A OneOf getter as returned by {@link util.oneOfGetter}.\r\n * @typedef OneOfGetter\r\n * @type {function}\r\n * @returns {string|undefined} Set field name, if any\r\n */\r\n\r\n/**\r\n * Builds a getter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfGetter} Unbound getter\r\n */\r\nutil.oneOfGetter = function getOneOf(fieldNames) {\r\n var fieldMap = {};\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n fieldMap[fieldNames[i]] = 1;\r\n\r\n /**\r\n * @returns {string|undefined} Set field name, if any\r\n * @this Object\r\n * @ignore\r\n */\r\n return function() { // eslint-disable-line consistent-return\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\r\n return keys[i];\r\n };\r\n};\r\n\r\n/**\r\n * A OneOf setter as returned by {@link util.oneOfSetter}.\r\n * @typedef OneOfSetter\r\n * @type {function}\r\n * @param {string|undefined} value Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Builds a setter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfSetter} Unbound setter\r\n */\r\nutil.oneOfSetter = function setOneOf(fieldNames) {\r\n\r\n /**\r\n * @param {string} name Field name\r\n * @returns {undefined}\r\n * @this Object\r\n * @ignore\r\n */\r\n return function(name) {\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n if (fieldNames[i] !== name)\r\n delete this[fieldNames[i]];\r\n };\r\n};\r\n\r\n/**\r\n * Default conversion options used for {@link Message#toJSON} implementations.\r\n *\r\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\r\n *\r\n * - Longs become strings\r\n * - Enums become string keys\r\n * - Bytes become base64 encoded strings\r\n * - (Sub-)Messages become plain objects\r\n * - Maps become plain objects with all string keys\r\n * - Repeated fields become arrays\r\n * - NaN and Infinity for float and double fields become strings\r\n *\r\n * @type {IConversionOptions}\r\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\r\n */\r\nutil.toJSONOptions = {\r\n longs: String,\r\n enums: String,\r\n bytes: String,\r\n json: true\r\n};\r\n\r\nutil._configure = function() {\r\n var Buffer = util.Buffer;\r\n /* istanbul ignore if */\r\n if (!Buffer) {\r\n util._Buffer_from = util._Buffer_allocUnsafe = null;\r\n return;\r\n }\r\n // because node 4.x buffers are incompatible & immutable\r\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\r\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\r\n /* istanbul ignore next */\r\n function Buffer_from(value, encoding) {\r\n return new Buffer(value, encoding);\r\n };\r\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\r\n /* istanbul ignore next */\r\n function Buffer_allocUnsafe(size) {\r\n return new Buffer(size);\r\n };\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/util/minimal.js\n// module id = 2\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 3\n// module chunks = 0 1","\"use strict\";\r\nmodule.exports = ReflectionObject;\r\n\r\nReflectionObject.className = \"ReflectionObject\";\r\n\r\nvar util = require(\"./util\");\r\n\r\nvar Root; // cyclic\r\n\r\n/**\r\n * Constructs a new reflection object instance.\r\n * @classdesc Base class of all reflection objects.\r\n * @constructor\r\n * @param {string} name Object name\r\n * @param {Object.} [options] Declared options\r\n * @abstract\r\n */\r\nfunction ReflectionObject(name, options) {\r\n\r\n if (!util.isString(name))\r\n throw TypeError(\"name must be a string\");\r\n\r\n if (options && !util.isObject(options))\r\n throw TypeError(\"options must be an object\");\r\n\r\n /**\r\n * Options.\r\n * @type {Object.|undefined}\r\n */\r\n this.options = options; // toJSON\r\n\r\n /**\r\n * Unique name within its namespace.\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Parent namespace.\r\n * @type {Namespace|null}\r\n */\r\n this.parent = null;\r\n\r\n /**\r\n * Whether already resolved or not.\r\n * @type {boolean}\r\n */\r\n this.resolved = false;\r\n\r\n /**\r\n * Comment text, if any.\r\n * @type {string|null}\r\n */\r\n this.comment = null;\r\n\r\n /**\r\n * Defining file name.\r\n * @type {string|null}\r\n */\r\n this.filename = null;\r\n}\r\n\r\nObject.defineProperties(ReflectionObject.prototype, {\r\n\r\n /**\r\n * Reference to the root namespace.\r\n * @name ReflectionObject#root\r\n * @type {Root}\r\n * @readonly\r\n */\r\n root: {\r\n get: function() {\r\n var ptr = this;\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n return ptr;\r\n }\r\n },\r\n\r\n /**\r\n * Full name including leading dot.\r\n * @name ReflectionObject#fullName\r\n * @type {string}\r\n * @readonly\r\n */\r\n fullName: {\r\n get: function() {\r\n var path = [ this.name ],\r\n ptr = this.parent;\r\n while (ptr) {\r\n path.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n }\r\n return path.join(\".\");\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Converts this reflection object to its descriptor representation.\r\n * @returns {Object.} Descriptor\r\n * @abstract\r\n */\r\nReflectionObject.prototype.toJSON = /* istanbul ignore next */ function toJSON() {\r\n throw Error(); // not implemented, shouldn't happen\r\n};\r\n\r\n/**\r\n * Called when this object is added to a parent.\r\n * @param {ReflectionObject} parent Parent added to\r\n * @returns {undefined}\r\n */\r\nReflectionObject.prototype.onAdd = function onAdd(parent) {\r\n if (this.parent && this.parent !== parent)\r\n this.parent.remove(this);\r\n this.parent = parent;\r\n this.resolved = false;\r\n var root = parent.root;\r\n if (root instanceof Root)\r\n root._handleAdd(this);\r\n};\r\n\r\n/**\r\n * Called when this object is removed from a parent.\r\n * @param {ReflectionObject} parent Parent removed from\r\n * @returns {undefined}\r\n */\r\nReflectionObject.prototype.onRemove = function onRemove(parent) {\r\n var root = parent.root;\r\n if (root instanceof Root)\r\n root._handleRemove(this);\r\n this.parent = null;\r\n this.resolved = false;\r\n};\r\n\r\n/**\r\n * Resolves this objects type references.\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n if (this.root instanceof Root)\r\n this.resolved = true; // only if part of a root\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets an option value.\r\n * @param {string} name Option name\r\n * @returns {*} Option value or `undefined` if not set\r\n */\r\nReflectionObject.prototype.getOption = function getOption(name) {\r\n if (this.options)\r\n return this.options[name];\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Sets an option.\r\n * @param {string} name Option name\r\n * @param {*} value Option value\r\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (!ifNotSet || !this.options || this.options[name] === undefined)\r\n (this.options || (this.options = {}))[name] = value;\r\n return this;\r\n};\r\n\r\n/**\r\n * Sets multiple options.\r\n * @param {Object.} options Options to set\r\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\r\n * @returns {ReflectionObject} `this`\r\n */\r\nReflectionObject.prototype.setOptions = function setOptions(options, ifNotSet) {\r\n if (options)\r\n for (var keys = Object.keys(options), i = 0; i < keys.length; ++i)\r\n this.setOption(keys[i], options[keys[i]], ifNotSet);\r\n return this;\r\n};\r\n\r\n/**\r\n * Converts this instance to its string representation.\r\n * @returns {string} Class name[, space, full name]\r\n */\r\nReflectionObject.prototype.toString = function toString() {\r\n var className = this.constructor.className,\r\n fullName = this.fullName;\r\n if (fullName.length)\r\n return className + \" \" + fullName;\r\n return className;\r\n};\r\n\r\nReflectionObject._configure = function(Root_) {\r\n Root = Root_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/object.js\n// module id = 4\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Field;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Field.prototype = Object.create(ReflectionObject.prototype)).constructor = Field).className = \"Field\";\r\n\r\nvar Enum = require(\"./enum\"),\r\n types = require(\"./types\"),\r\n util = require(\"./util\");\r\n\r\nvar Type; // cyclic\r\n\r\nvar ruleRe = /^required|optional|repeated$/;\r\n\r\n/**\r\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\r\n * @name Field\r\n * @classdesc Reflected message field.\r\n * @extends FieldBase\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string|Object.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n */\r\n\r\n/**\r\n * Constructs a field from a field descriptor.\r\n * @param {string} name Field name\r\n * @param {IField} json Field descriptor\r\n * @returns {Field} Created field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nField.fromJSON = function fromJSON(name, json) {\r\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Not an actual constructor. Use {@link Field} instead.\r\n * @classdesc Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports FieldBase\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} type Value type\r\n * @param {string|Object.} [rule=\"optional\"] Field rule\r\n * @param {string|Object.} [extend] Extended type if different from parent\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction Field(name, id, type, rule, extend, options, comment) {\r\n\r\n if (util.isObject(rule)) {\r\n comment = extend;\r\n options = rule;\r\n rule = extend = undefined;\r\n } else if (util.isObject(extend)) {\r\n comment = options;\r\n options = extend;\r\n extend = undefined;\r\n }\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n if (!util.isInteger(id) || id < 0)\r\n throw TypeError(\"id must be a non-negative integer\");\r\n\r\n if (!util.isString(type))\r\n throw TypeError(\"type must be a string\");\r\n\r\n if (rule !== undefined && !ruleRe.test(rule = rule.toString().toLowerCase()))\r\n throw TypeError(\"rule must be a string rule\");\r\n\r\n if (extend !== undefined && !util.isString(extend))\r\n throw TypeError(\"extend must be a string\");\r\n\r\n /**\r\n * Field rule, if any.\r\n * @type {string|undefined}\r\n */\r\n this.rule = rule && rule !== \"optional\" ? rule : undefined; // toJSON\r\n\r\n /**\r\n * Field type.\r\n * @type {string}\r\n */\r\n this.type = type; // toJSON\r\n\r\n /**\r\n * Unique field id.\r\n * @type {number}\r\n */\r\n this.id = id; // toJSON, marker\r\n\r\n /**\r\n * Extended type if different from parent.\r\n * @type {string|undefined}\r\n */\r\n this.extend = extend || undefined; // toJSON\r\n\r\n /**\r\n * Whether this field is required.\r\n * @type {boolean}\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Whether this field is optional.\r\n * @type {boolean}\r\n */\r\n this.optional = !this.required;\r\n\r\n /**\r\n * Whether this field is repeated.\r\n * @type {boolean}\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Whether this field is a map or not.\r\n * @type {boolean}\r\n */\r\n this.map = false;\r\n\r\n /**\r\n * Message this field belongs to.\r\n * @type {Type|null}\r\n */\r\n this.message = null;\r\n\r\n /**\r\n * OneOf this field belongs to, if any,\r\n * @type {OneOf|null}\r\n */\r\n this.partOf = null;\r\n\r\n /**\r\n * The field type's default value.\r\n * @type {*}\r\n */\r\n this.typeDefault = null;\r\n\r\n /**\r\n * The field's default value on prototypes.\r\n * @type {*}\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Whether this field's value should be treated as a long.\r\n * @type {boolean}\r\n */\r\n this.long = util.Long ? types.long[type] !== undefined : /* istanbul ignore next */ false;\r\n\r\n /**\r\n * Whether this field's value is a buffer.\r\n * @type {boolean}\r\n */\r\n this.bytes = type === \"bytes\";\r\n\r\n /**\r\n * Resolved type if not a basic type.\r\n * @type {Type|Enum|null}\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Sister-field within the extended type if a declaring extension field.\r\n * @type {Field|null}\r\n */\r\n this.extensionField = null;\r\n\r\n /**\r\n * Sister-field within the declaring namespace if an extended field.\r\n * @type {Field|null}\r\n */\r\n this.declaringField = null;\r\n\r\n /**\r\n * Internally remembers whether this field is packed.\r\n * @type {boolean|null}\r\n * @private\r\n */\r\n this._packed = null;\r\n\r\n /**\r\n * Comment for this field.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\r\n * @name Field#packed\r\n * @type {boolean}\r\n * @readonly\r\n */\r\nObject.defineProperty(Field.prototype, \"packed\", {\r\n get: function() {\r\n // defaults to packed=true if not explicity set to false\r\n if (this._packed === null)\r\n this._packed = this.getOption(\"packed\") !== false;\r\n return this._packed;\r\n }\r\n});\r\n\r\n/**\r\n * @override\r\n */\r\nField.prototype.setOption = function setOption(name, value, ifNotSet) {\r\n if (name === \"packed\") // clear cached before setting\r\n this._packed = null;\r\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\r\n};\r\n\r\n/**\r\n * Field descriptor.\r\n * @interface IField\r\n * @property {string} [rule=\"optional\"] Field rule\r\n * @property {string} type Field type\r\n * @property {number} id Field id\r\n * @property {Object.} [options] Field options\r\n */\r\n\r\n/**\r\n * Extension field descriptor.\r\n * @interface IExtensionField\r\n * @extends IField\r\n * @property {string} extend Extended type\r\n */\r\n\r\n/**\r\n * Converts this field to a field descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IField} Field descriptor\r\n */\r\nField.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"rule\" , this.rule !== \"optional\" && this.rule || undefined,\r\n \"type\" , this.type,\r\n \"id\" , this.id,\r\n \"extend\" , this.extend,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Resolves this field's type references.\r\n * @returns {Field} `this`\r\n * @throws {Error} If any reference cannot be resolved\r\n */\r\nField.prototype.resolve = function resolve() {\r\n\r\n if (this.resolved)\r\n return this;\r\n\r\n if ((this.typeDefault = types.defaults[this.type]) === undefined) { // if not a basic type, resolve it\r\n this.resolvedType = (this.declaringField ? this.declaringField.parent : this.parent).lookupTypeOrEnum(this.type);\r\n if (this.resolvedType instanceof Type)\r\n this.typeDefault = null;\r\n else // instanceof Enum\r\n this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\r\n }\r\n\r\n // use explicitly set default value if present\r\n if (this.options && this.options[\"default\"] != null) {\r\n this.typeDefault = this.options[\"default\"];\r\n if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\r\n this.typeDefault = this.resolvedType.values[this.typeDefault];\r\n }\r\n\r\n // remove unnecessary options\r\n if (this.options) {\r\n if (this.options.packed === true || this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum))\r\n delete this.options.packed;\r\n if (!Object.keys(this.options).length)\r\n this.options = undefined;\r\n }\r\n\r\n // convert to internal data type if necesssary\r\n if (this.long) {\r\n this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\r\n\r\n /* istanbul ignore else */\r\n if (Object.freeze)\r\n Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\r\n\r\n } else if (this.bytes && typeof this.typeDefault === \"string\") {\r\n var buf;\r\n if (util.base64.test(this.typeDefault))\r\n util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\r\n else\r\n util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\r\n this.typeDefault = buf;\r\n }\r\n\r\n // take special care of maps and repeated fields\r\n if (this.map)\r\n this.defaultValue = util.emptyObject;\r\n else if (this.repeated)\r\n this.defaultValue = util.emptyArray;\r\n else\r\n this.defaultValue = this.typeDefault;\r\n\r\n // ensure proper value on prototype\r\n if (this.parent instanceof Type)\r\n this.parent.ctor.prototype[this.name] = this.defaultValue;\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript).\r\n * @typedef FieldDecorator\r\n * @type {function}\r\n * @param {Object} prototype Target prototype\r\n * @param {string} fieldName Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Field decorator (TypeScript).\r\n * @name Field.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"string\"|\"bool\"|\"bytes\"|Object} fieldType Field type\r\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\r\n * @param {T} [defaultValue] Default value\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[]\r\n */\r\nField.d = function decorateField(fieldId, fieldType, fieldRule, defaultValue) {\r\n\r\n // submessage: decorate the submessage and use its name as the type\r\n if (typeof fieldType === \"function\")\r\n fieldType = util.decorateType(fieldType).name;\r\n\r\n // enum reference: create a reflected copy of the enum and keep reuseing it\r\n else if (fieldType && typeof fieldType === \"object\")\r\n fieldType = util.decorateEnum(fieldType).name;\r\n\r\n return function fieldDecorator(prototype, fieldName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new Field(fieldName, fieldId, fieldType, fieldRule, { \"default\": defaultValue }));\r\n };\r\n};\r\n\r\n/**\r\n * Field decorator (TypeScript).\r\n * @name Field.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {Constructor|string} fieldType Field type\r\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends Message\r\n * @variation 2\r\n */\r\n// like Field.d but without a default value\r\n\r\nField._configure = function configure(Type_) {\r\n Type = Type_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/field.js\n// module id = 5\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/events/events.js\n// module id = 6\n// module chunks = 0 1","export function startsWith(value, prefix) {\n return value.lastIndexOf(prefix, 0) === 0;\n};\n\nexport function isFunction(value) {\n if (value === undefined || value === null) {\n return false;\n }\n return typeof value === 'function';\n};\n\nexport function log(level, args) {\n if (global.console) {\n const logger = global.console[level];\n\n if (isFunction(logger)) {\n logger.apply(global.console, args);\n }\n }\n};\n\nexport function backoff(step, min, max) {\n const jitter = 0.5 * Math.random();\n const interval = Math.min(max, min * Math.pow(2, step + 1));\n\n return Math.floor((1 - jitter) * interval);\n};\n\nexport function errorExists(data) {\n return 'error' in data && data.error !== null;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js","\"use strict\";\r\nmodule.exports = Namespace;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Namespace.prototype = Object.create(ReflectionObject.prototype)).constructor = Namespace).className = \"Namespace\";\r\n\r\nvar Enum = require(\"./enum\"),\r\n Field = require(\"./field\"),\r\n util = require(\"./util\");\r\n\r\nvar Type, // cyclic\r\n Service; // \"\r\n\r\n/**\r\n * Constructs a new namespace instance.\r\n * @name Namespace\r\n * @classdesc Reflected namespace.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\r\n */\r\n\r\n/**\r\n * Constructs a namespace from JSON.\r\n * @memberof Namespace\r\n * @function\r\n * @param {string} name Namespace name\r\n * @param {Object.} json JSON object\r\n * @returns {Namespace} Created namespace\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nNamespace.fromJSON = function fromJSON(name, json) {\r\n return new Namespace(name, json.options).addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Converts an array of reflection objects to JSON.\r\n * @memberof Namespace\r\n * @param {ReflectionObject[]} array Object array\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {Object.|undefined} JSON object or `undefined` when array is empty\r\n */\r\nfunction arrayToJSON(array, toJSONOptions) {\r\n if (!(array && array.length))\r\n return undefined;\r\n var obj = {};\r\n for (var i = 0; i < array.length; ++i)\r\n obj[array[i].name] = array[i].toJSON(toJSONOptions);\r\n return obj;\r\n}\r\n\r\nNamespace.arrayToJSON = arrayToJSON;\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {Array.|undefined} reserved Array of reserved ranges and names\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nNamespace.isReservedId = function isReservedId(reserved, id) {\r\n if (reserved)\r\n for (var i = 0; i < reserved.length; ++i)\r\n if (typeof reserved[i] !== \"string\" && reserved[i][0] <= id && reserved[i][1] >= id)\r\n return true;\r\n return false;\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {Array.|undefined} reserved Array of reserved ranges and names\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nNamespace.isReservedName = function isReservedName(reserved, name) {\r\n if (reserved)\r\n for (var i = 0; i < reserved.length; ++i)\r\n if (reserved[i] === name)\r\n return true;\r\n return false;\r\n};\r\n\r\n/**\r\n * Not an actual constructor. Use {@link Namespace} instead.\r\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\r\n * @exports NamespaceBase\r\n * @extends ReflectionObject\r\n * @abstract\r\n * @constructor\r\n * @param {string} name Namespace name\r\n * @param {Object.} [options] Declared options\r\n * @see {@link Namespace}\r\n */\r\nfunction Namespace(name, options) {\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Nested objects by name.\r\n * @type {Object.|undefined}\r\n */\r\n this.nested = undefined; // toJSON\r\n\r\n /**\r\n * Cached nested objects as an array.\r\n * @type {ReflectionObject[]|null}\r\n * @private\r\n */\r\n this._nestedArray = null;\r\n}\r\n\r\nfunction clearCache(namespace) {\r\n namespace._nestedArray = null;\r\n return namespace;\r\n}\r\n\r\n/**\r\n * Nested objects of this namespace as an array for iteration.\r\n * @name NamespaceBase#nestedArray\r\n * @type {ReflectionObject[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(Namespace.prototype, \"nestedArray\", {\r\n get: function() {\r\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\r\n }\r\n});\r\n\r\n/**\r\n * Namespace descriptor.\r\n * @interface INamespace\r\n * @property {Object.} [options] Namespace options\r\n * @property {Object.} [nested] Nested object descriptors\r\n */\r\n\r\n/**\r\n * Any extension field descriptor.\r\n * @typedef AnyExtensionField\r\n * @type {IExtensionField|IExtensionMapField}\r\n */\r\n\r\n/**\r\n * Any nested object descriptor.\r\n * @typedef AnyNestedObject\r\n * @type {IEnum|IType|IService|AnyExtensionField|INamespace}\r\n */\r\n// ^ BEWARE: VSCode hangs forever when using more than 5 types (that's why AnyExtensionField exists in the first place)\r\n\r\n/**\r\n * Converts this namespace to a namespace descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {INamespace} Namespace descriptor\r\n */\r\nNamespace.prototype.toJSON = function toJSON(toJSONOptions) {\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"nested\" , arrayToJSON(this.nestedArray, toJSONOptions)\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds nested objects to this namespace from nested object descriptors.\r\n * @param {Object.} nestedJson Any nested object descriptors\r\n * @returns {Namespace} `this`\r\n */\r\nNamespace.prototype.addJSON = function addJSON(nestedJson) {\r\n var ns = this;\r\n /* istanbul ignore else */\r\n if (nestedJson) {\r\n for (var names = Object.keys(nestedJson), i = 0, nested; i < names.length; ++i) {\r\n nested = nestedJson[names[i]];\r\n ns.add( // most to least likely\r\n ( nested.fields !== undefined\r\n ? Type.fromJSON\r\n : nested.values !== undefined\r\n ? Enum.fromJSON\r\n : nested.methods !== undefined\r\n ? Service.fromJSON\r\n : nested.id !== undefined\r\n ? Field.fromJSON\r\n : Namespace.fromJSON )(names[i], nested)\r\n );\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Gets the nested object of the specified name.\r\n * @param {string} name Nested object name\r\n * @returns {ReflectionObject|null} The reflection object or `null` if it doesn't exist\r\n */\r\nNamespace.prototype.get = function get(name) {\r\n return this.nested && this.nested[name]\r\n || null;\r\n};\r\n\r\n/**\r\n * Gets the values of the nested {@link Enum|enum} of the specified name.\r\n * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`.\r\n * @param {string} name Nested enum name\r\n * @returns {Object.} Enum values\r\n * @throws {Error} If there is no such enum\r\n */\r\nNamespace.prototype.getEnum = function getEnum(name) {\r\n if (this.nested && this.nested[name] instanceof Enum)\r\n return this.nested[name].values;\r\n throw Error(\"no such enum: \" + name);\r\n};\r\n\r\n/**\r\n * Adds a nested object to this namespace.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name\r\n */\r\nNamespace.prototype.add = function add(object) {\r\n\r\n if (!(object instanceof Field && object.extend !== undefined || object instanceof Type || object instanceof Enum || object instanceof Service || object instanceof Namespace))\r\n throw TypeError(\"object must be a valid nested object\");\r\n\r\n if (!this.nested)\r\n this.nested = {};\r\n else {\r\n var prev = this.get(object.name);\r\n if (prev) {\r\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\r\n // replace plain namespace but keep existing nested elements and options\r\n var nested = prev.nestedArray;\r\n for (var i = 0; i < nested.length; ++i)\r\n object.add(nested[i]);\r\n this.remove(prev);\r\n if (!this.nested)\r\n this.nested = {};\r\n object.setOptions(prev.options, true);\r\n\r\n } else\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n }\r\n }\r\n this.nested[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this namespace.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Namespace} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this namespace\r\n */\r\nNamespace.prototype.remove = function remove(object) {\r\n\r\n if (!(object instanceof ReflectionObject))\r\n throw TypeError(\"object must be a ReflectionObject\");\r\n if (object.parent !== this)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.nested[object.name];\r\n if (!Object.keys(this.nested).length)\r\n this.nested = undefined;\r\n\r\n object.onRemove(this);\r\n return clearCache(this);\r\n};\r\n\r\n/**\r\n * Defines additial namespaces within this one if not yet existing.\r\n * @param {string|string[]} path Path to create\r\n * @param {*} [json] Nested types to create from JSON\r\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\r\n */\r\nNamespace.prototype.define = function define(path, json) {\r\n\r\n if (util.isString(path))\r\n path = path.split(\".\");\r\n else if (!Array.isArray(path))\r\n throw TypeError(\"illegal path\");\r\n if (path && path.length && path[0] === \"\")\r\n throw Error(\"path must be relative\");\r\n\r\n var ptr = this;\r\n while (path.length > 0) {\r\n var part = path.shift();\r\n if (ptr.nested && ptr.nested[part]) {\r\n ptr = ptr.nested[part];\r\n if (!(ptr instanceof Namespace))\r\n throw Error(\"path conflicts with non-namespace objects\");\r\n } else\r\n ptr.add(ptr = new Namespace(part));\r\n }\r\n if (json)\r\n ptr.addJSON(json);\r\n return ptr;\r\n};\r\n\r\n/**\r\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost.\r\n * @returns {Namespace} `this`\r\n */\r\nNamespace.prototype.resolveAll = function resolveAll() {\r\n var nested = this.nestedArray, i = 0;\r\n while (i < nested.length)\r\n if (nested[i] instanceof Namespace)\r\n nested[i++].resolveAll();\r\n else\r\n nested[i++].resolve();\r\n return this.resolve();\r\n};\r\n\r\n/**\r\n * Recursively looks up the reflection object matching the specified path in the scope of this namespace.\r\n * @param {string|string[]} path Path to look up\r\n * @param {*|Array.<*>} filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc.\r\n * @param {boolean} [parentAlreadyChecked=false] If known, whether the parent has already been checked\r\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\r\n */\r\nNamespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChecked) {\r\n\r\n /* istanbul ignore next */\r\n if (typeof filterTypes === \"boolean\") {\r\n parentAlreadyChecked = filterTypes;\r\n filterTypes = undefined;\r\n } else if (filterTypes && !Array.isArray(filterTypes))\r\n filterTypes = [ filterTypes ];\r\n\r\n if (util.isString(path) && path.length) {\r\n if (path === \".\")\r\n return this.root;\r\n path = path.split(\".\");\r\n } else if (!path.length)\r\n return this;\r\n\r\n // Start at root if path is absolute\r\n if (path[0] === \"\")\r\n return this.root.lookup(path.slice(1), filterTypes);\r\n\r\n // Test if the first part matches any nested object, and if so, traverse if path contains more\r\n var found = this.get(path[0]);\r\n if (found) {\r\n if (path.length === 1) {\r\n if (!filterTypes || filterTypes.indexOf(found.constructor) > -1)\r\n return found;\r\n } else if (found instanceof Namespace && (found = found.lookup(path.slice(1), filterTypes, true)))\r\n return found;\r\n\r\n // Otherwise try each nested namespace\r\n } else\r\n for (var i = 0; i < this.nestedArray.length; ++i)\r\n if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i].lookup(path, filterTypes, true)))\r\n return found;\r\n\r\n // If there hasn't been a match, try again at the parent\r\n if (this.parent === null || parentAlreadyChecked)\r\n return null;\r\n return this.parent.lookup(path, filterTypes);\r\n};\r\n\r\n/**\r\n * Looks up the reflection object at the specified path, relative to this namespace.\r\n * @name NamespaceBase#lookup\r\n * @function\r\n * @param {string|string[]} path Path to look up\r\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\r\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\r\n * @variation 2\r\n */\r\n// lookup(path: string, [parentAlreadyChecked: boolean])\r\n\r\n/**\r\n * Looks up the {@link Type|type} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Type} Looked up type\r\n * @throws {Error} If `path` does not point to a type\r\n */\r\nNamespace.prototype.lookupType = function lookupType(path) {\r\n var found = this.lookup(path, [ Type ]);\r\n if (!found)\r\n throw Error(\"no such type: \" + path);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Enum} Looked up enum\r\n * @throws {Error} If `path` does not point to an enum\r\n */\r\nNamespace.prototype.lookupEnum = function lookupEnum(path) {\r\n var found = this.lookup(path, [ Enum ]);\r\n if (!found)\r\n throw Error(\"no such Enum '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Type} Looked up type or enum\r\n * @throws {Error} If `path` does not point to a type or enum\r\n */\r\nNamespace.prototype.lookupTypeOrEnum = function lookupTypeOrEnum(path) {\r\n var found = this.lookup(path, [ Type, Enum ]);\r\n if (!found)\r\n throw Error(\"no such Type or Enum '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\n/**\r\n * Looks up the {@link Service|service} at the specified path, relative to this namespace.\r\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\r\n * @param {string|string[]} path Path to look up\r\n * @returns {Service} Looked up service\r\n * @throws {Error} If `path` does not point to a service\r\n */\r\nNamespace.prototype.lookupService = function lookupService(path) {\r\n var found = this.lookup(path, [ Service ]);\r\n if (!found)\r\n throw Error(\"no such Service '\" + path + \"' in \" + this);\r\n return found;\r\n};\r\n\r\nNamespace._configure = function(Type_, Service_) {\r\n Type = Type_;\r\n Service = Service_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/namespace.js\n// module id = 8\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * Common type constants.\r\n * @namespace\r\n */\r\nvar types = exports;\r\n\r\nvar util = require(\"./util\");\r\n\r\nvar s = [\r\n \"double\", // 0\r\n \"float\", // 1\r\n \"int32\", // 2\r\n \"uint32\", // 3\r\n \"sint32\", // 4\r\n \"fixed32\", // 5\r\n \"sfixed32\", // 6\r\n \"int64\", // 7\r\n \"uint64\", // 8\r\n \"sint64\", // 9\r\n \"fixed64\", // 10\r\n \"sfixed64\", // 11\r\n \"bool\", // 12\r\n \"string\", // 13\r\n \"bytes\" // 14\r\n];\r\n\r\nfunction bake(values, offset) {\r\n var i = 0, o = {};\r\n offset |= 0;\r\n while (i < values.length) o[s[i + offset]] = values[i++];\r\n return o;\r\n}\r\n\r\n/**\r\n * Basic type wire types.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n * @property {number} bytes=2 Ldelim wire type\r\n */\r\ntypes.basic = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2,\r\n /* bytes */ 2\r\n]);\r\n\r\n/**\r\n * Basic type defaults.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=0 Double default\r\n * @property {number} float=0 Float default\r\n * @property {number} int32=0 Int32 default\r\n * @property {number} uint32=0 Uint32 default\r\n * @property {number} sint32=0 Sint32 default\r\n * @property {number} fixed32=0 Fixed32 default\r\n * @property {number} sfixed32=0 Sfixed32 default\r\n * @property {number} int64=0 Int64 default\r\n * @property {number} uint64=0 Uint64 default\r\n * @property {number} sint64=0 Sint32 default\r\n * @property {number} fixed64=0 Fixed64 default\r\n * @property {number} sfixed64=0 Sfixed64 default\r\n * @property {boolean} bool=false Bool default\r\n * @property {string} string=\"\" String default\r\n * @property {Array.} bytes=Array(0) Bytes default\r\n * @property {null} message=null Message default\r\n */\r\ntypes.defaults = bake([\r\n /* double */ 0,\r\n /* float */ 0,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 0,\r\n /* sfixed32 */ 0,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 0,\r\n /* sfixed64 */ 0,\r\n /* bool */ false,\r\n /* string */ \"\",\r\n /* bytes */ util.emptyArray,\r\n /* message */ null\r\n]);\r\n\r\n/**\r\n * Basic long type wire types.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n */\r\ntypes.long = bake([\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1\r\n], 7);\r\n\r\n/**\r\n * Allowed types for map keys with their associated wire type.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n * @property {number} string=2 Ldelim wire type\r\n */\r\ntypes.mapKey = bake([\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0,\r\n /* string */ 2\r\n], 2);\r\n\r\n/**\r\n * Allowed types for packed repeated fields with their associated wire type.\r\n * @type {Object.}\r\n * @const\r\n * @property {number} double=1 Fixed64 wire type\r\n * @property {number} float=5 Fixed32 wire type\r\n * @property {number} int32=0 Varint wire type\r\n * @property {number} uint32=0 Varint wire type\r\n * @property {number} sint32=0 Varint wire type\r\n * @property {number} fixed32=5 Fixed32 wire type\r\n * @property {number} sfixed32=5 Fixed32 wire type\r\n * @property {number} int64=0 Varint wire type\r\n * @property {number} uint64=0 Varint wire type\r\n * @property {number} sint64=0 Varint wire type\r\n * @property {number} fixed64=1 Fixed64 wire type\r\n * @property {number} sfixed64=1 Fixed64 wire type\r\n * @property {number} bool=0 Varint wire type\r\n */\r\ntypes.packed = bake([\r\n /* double */ 1,\r\n /* float */ 5,\r\n /* int32 */ 0,\r\n /* uint32 */ 0,\r\n /* sint32 */ 0,\r\n /* fixed32 */ 5,\r\n /* sfixed32 */ 5,\r\n /* int64 */ 0,\r\n /* uint64 */ 0,\r\n /* sint64 */ 0,\r\n /* fixed64 */ 1,\r\n /* sfixed64 */ 1,\r\n /* bool */ 0\r\n]);\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/types.js\n// module id = 9\n// module chunks = 0","import EventEmitter from 'events';\nimport Subscription from './subscription';\n\nimport {\n JsonEncoder,\n JsonDecoder,\n JsonMethodType,\n JsonPushType\n} from './json';\n\nimport {\n isFunction,\n log,\n startsWith,\n errorExists,\n backoff\n} from './utils';\n\nconst _errorTimeout = 'timeout';\nconst _errorConnectionClosed = 'connection closed';\n\nexport class Centrifuge extends EventEmitter {\n\n constructor(url, options) {\n super();\n this._url = url;\n this._sockjs = null;\n this._isSockjs = false;\n this._binary = false;\n this._methodType = null;\n this._pushType = null;\n this._encoder = null;\n this._decoder = null;\n this._status = 'disconnected';\n this._reconnect = true;\n this._reconnecting = false;\n this._transport = null;\n this._transportName = null;\n this._transportClosed = true;\n this._messageId = 0;\n this._clientID = null;\n this._refreshRequired = false;\n this._subs = {};\n this._lastSeq = {};\n this._lastGen = {};\n this._lastEpoch = {};\n this._messages = [];\n this._isBatching = false;\n this._isSubscribeBatching = false;\n this._privateChannels = {};\n this._numRefreshFailed = 0;\n this._refreshTimeout = null;\n this._pingTimeout = null;\n this._pongTimeout = null;\n this._subRefreshTimeouts = {};\n this._retries = 0;\n this._callbacks = {};\n this._latency = null;\n this._latencyStart = null;\n this._connectData = null;\n this._token = null;\n this._xhrID = 0;\n this._xhrs = {};\n this._config = {\n debug: false,\n sockjs: null,\n promise: null,\n minRetry: 1000,\n maxRetry: 20000,\n timeout: 5000,\n ping: true,\n pingInterval: 25000,\n pongWaitTimeout: 5000,\n privateChannelPrefix: '$',\n onTransportClose: null,\n sockjsServer: null,\n sockjsTransports: [\n 'websocket',\n 'xdr-streaming',\n 'xhr-streaming',\n 'eventsource',\n 'iframe-eventsource',\n 'iframe-htmlfile',\n 'xdr-polling',\n 'xhr-polling',\n 'iframe-xhr-polling',\n 'jsonp-polling'\n ],\n refreshEndpoint: '/centrifuge/refresh',\n refreshHeaders: {},\n refreshParams: {},\n refreshData: {},\n refreshAttempts: null,\n refreshInterval: 1000,\n onRefreshFailed: null,\n onRefresh: null,\n subscribeEndpoint: '/centrifuge/subscribe',\n subscribeHeaders: {},\n subscribeParams: {},\n subRefreshInterval: 1000,\n onPrivateSubscribe: null\n };\n this._configure(options);\n }\n\n setToken(token) {\n this._token = token;\n }\n\n setConnectData(data) {\n this._connectData = data;\n }\n\n _ajax(url, params, headers, data, callback) {\n let query = '';\n this._debug('sending AJAX request to', url, 'with data', JSON.stringify(data));\n\n const xhr = (global.XMLHttpRequest ? new global.XMLHttpRequest() : new global.ActiveXObject('Microsoft.XMLHTTP'));\n\n for (const i in params) {\n if (params.hasOwnProperty(i)) {\n if (query.length > 0) {\n query += '&';\n }\n query += encodeURIComponent(i) + '=' + encodeURIComponent(params[i]);\n }\n }\n if (query.length > 0) {\n query = '?' + query;\n }\n xhr.open('POST', url + query, true);\n if ('withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n xhr.setRequestHeader('Content-Type', 'application/json');\n for (const headerName in headers) {\n if (headers.hasOwnProperty(headerName)) {\n xhr.setRequestHeader(headerName, headers[headerName]);\n }\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n let data, parsed = false;\n try {\n data = JSON.parse(xhr.responseText);\n parsed = true;\n } catch (e) {\n callback({\n error: 'Invalid JSON. Data was: ' + xhr.responseText,\n status: 200,\n data: null\n });\n }\n if (parsed) { // prevents double execution.\n callback({\n data: data,\n status: 200\n });\n }\n } else {\n this._log('wrong status code in AJAX response', xhr.status);\n callback({\n status: xhr.status,\n data: null\n });\n }\n }\n };\n setTimeout(() => xhr.send(JSON.stringify(data)), 20);\n return xhr;\n };\n\n _log() {\n log('info', arguments);\n };\n\n _debug() {\n if (this._config.debug === true) {\n log('debug', arguments);\n }\n };\n\n _websocketSupported() {\n return !(typeof WebSocket !== 'function' && typeof WebSocket !== 'object');\n };\n\n _setFormat(format) {\n if (this._formatOverride(format)) {\n return;\n }\n if (format === 'protobuf') {\n throw new Error('not implemented by JSON only Centrifuge client – use client with Protobuf');\n }\n this._binary = false;\n this._methodType = JsonMethodType;\n this._pushType = JsonPushType;\n this._encoder = new JsonEncoder();\n this._decoder = new JsonDecoder();\n }\n\n _formatOverride(format) {\n return false;\n }\n\n _configure(configuration) {\n if (!('Promise' in global)) {\n throw new Error('Promise polyfill required');\n }\n\n Object.assign(this._config, configuration || {});\n this._debug('centrifuge config', this._config);\n\n if (!this._url) {\n throw new Error('url required');\n }\n\n if (startsWith(this._url, 'ws') && this._url.indexOf('format=protobuf') > -1) {\n this._setFormat('protobuf');\n } else {\n this._setFormat('json');\n }\n\n if (startsWith(this._url, 'http')) {\n this._debug('client will try to connect to SockJS endpoint');\n if (this._config.sockjs !== null) {\n this._debug('SockJS explicitly provided in options');\n this._sockjs = this._config.sockjs;\n } else {\n if (typeof global.SockJS === 'undefined') {\n throw new Error('SockJS not found, use ws:// in url or include SockJS');\n }\n this._debug('use globally defined SockJS');\n this._sockjs = global.SockJS;\n }\n } else {\n this._debug('client will connect to websocket endpoint');\n }\n };\n\n _setStatus(newStatus) {\n if (this._status !== newStatus) {\n this._debug('Status', this._status, '->', newStatus);\n this._status = newStatus;\n }\n };\n\n _isDisconnected() {\n return this._status === 'disconnected';\n };\n\n _isConnecting() {\n return this._status === 'connecting';\n };\n\n _isConnected() {\n return this._status === 'connected';\n };\n\n _nextMessageId() {\n return ++this._messageId;\n };\n\n _resetRetry() {\n this._debug('reset retries count to 0');\n this._retries = 0;\n };\n\n _getRetryInterval() {\n const interval = backoff(this._retries, this._config.minRetry, this._config.maxRetry);\n\n this._retries += 1;\n return interval;\n };\n\n _abortInflightXHRs() {\n for (const xhrID in this._xhrs) {\n try {\n this._xhrs[xhrID].abort();\n } catch (e) {\n this._debug('error aborting xhr', e);\n }\n delete this._xhrs[xhrID];\n }\n };\n\n _clearConnectedState(reconnect) {\n this._clientID = null;\n this._stopPing();\n\n // fire errbacks of registered outgoing calls.\n for (const id in this._callbacks) {\n if (this._callbacks.hasOwnProperty(id)) {\n const callbacks = this._callbacks[id];\n clearTimeout(callbacks.timeout);\n const errback = callbacks.errback;\n if (!errback) {\n continue;\n }\n errback({error: this._createErrorObject('disconnected')});\n }\n }\n this._callbacks = {};\n\n // fire unsubscribe events\n for (const channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n const sub = this._subs[channel];\n\n if (reconnect) {\n if (sub._isSuccess()) {\n sub._triggerUnsubscribe();\n sub._recover = true;\n }\n if (sub._shouldResubscribe()) {\n sub._setSubscribing();\n }\n } else {\n sub._setUnsubscribed();\n }\n }\n }\n\n this._abortInflightXHRs();\n\n // clear refresh timer\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n // clear sub refresh timers\n for (const channel in this._subRefreshTimeouts) {\n if (this._subRefreshTimeouts.hasOwnProperty(channel) && this._subRefreshTimeouts[channel]) {\n this._clearSubRefreshTimeout(channel);\n }\n }\n this._subRefreshTimeouts = {};\n\n if (!this._reconnect) {\n // completely clear subscriptions\n this._subs = {};\n }\n };\n\n _isTransportOpen() {\n if (this._isSockjs) {\n return this._transport &&\n this._transport.transport &&\n this._transport.transport.readyState === this._transport.transport.OPEN;\n }\n return this._transport && this._transport.readyState === this._transport.OPEN;\n };\n\n _transportSend(commands) {\n if (!commands.length) {\n return true;\n }\n\n if (!this._isTransportOpen()) {\n // resolve pending commands with error if transport is not open\n for (let command in commands) {\n let id = command.id;\n if (!(id in this._callbacks)) {\n continue;\n }\n const callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n const errback = callbacks.errback;\n errback({error: this._createErrorObject(_errorConnectionClosed, 0)});\n }\n return false;\n }\n this._transport.send(this._encoder.encodeCommands(commands));\n return true;\n }\n\n _setupTransport() {\n this._isSockjs = false;\n\n // detect transport to use - SockJS or Websocket\n if (this._sockjs !== null) {\n const sockjsOptions = {\n transports: this._config.sockjsTransports\n };\n\n if (this._config.sockjsServer !== null) {\n sockjsOptions.server = this._config.sockjsServer;\n }\n this._isSockjs = true;\n this._transport = new this._sockjs(this._url, null, sockjsOptions);\n } else {\n if (!this._websocketSupported()) {\n this._debug('No Websocket support and no SockJS configured, can not connect');\n return;\n }\n this._transport = new WebSocket(this._url);\n if (this._binary === true) {\n this._transport.binaryType = 'arraybuffer';\n }\n }\n\n this._transport.onopen = () => {\n this._transportClosed = false;\n\n if (this._isSockjs) {\n this._transportName = 'sockjs-' + this._transport.transport;\n this._transport.onheartbeat = () => this._restartPing();\n } else {\n this._transportName = 'websocket';\n }\n\n // Can omit method here due to zero value.\n const msg = {\n // method: this._methodType.CONNECT\n };\n\n if (this._token || this._connectData) {\n msg.params = {};\n }\n\n if (this._token) {\n msg.params.token = this._token;\n }\n\n if (this._connectData) {\n msg.params.data = this._connectData;\n }\n\n this._latencyStart = new Date();\n this._call(msg).then(resolveCtx => {\n this._connectResponse(this._decoder.decodeCommandResult(this._methodType.CONNECT, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n const err = rejectCtx.error;\n if (err.code === 109) { // token expired.\n this._refreshRequired = true;\n }\n this._disconnect('connect error', true);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n this._transport.onerror = error => {\n this._debug('transport level error', error);\n };\n\n this._transport.onclose = closeEvent => {\n this._transportClosed = true;\n let reason = _errorConnectionClosed;\n let needReconnect = true;\n\n if (closeEvent && 'reason' in closeEvent && closeEvent.reason) {\n try {\n const advice = JSON.parse(closeEvent.reason);\n this._debug('reason is an advice object', advice);\n reason = advice.reason;\n needReconnect = advice.reconnect;\n } catch (e) {\n reason = closeEvent.reason;\n this._debug('reason is a plain string', reason);\n }\n }\n\n // onTransportClose callback should be executed every time transport was closed.\n // This can be helpful to catch failed connection events (because our disconnect\n // event only called once and every future attempts to connect do not fire disconnect\n // event again).\n if (this._config.onTransportClose !== null) {\n this._config.onTransportClose({\n event: closeEvent,\n reason: reason,\n reconnect: needReconnect\n });\n }\n\n this._disconnect(reason, needReconnect);\n\n if (this._reconnect === true) {\n this._reconnecting = true;\n const interval = this._getRetryInterval();\n\n this._debug('reconnect after ' + interval + ' milliseconds');\n setTimeout(() => {\n if (this._reconnect === true) {\n if (this._refreshRequired) {\n this._refresh();\n } else {\n this._connect();\n }\n }\n }, interval);\n }\n };\n\n this._transport.onmessage = event => {\n this._dataReceived(event.data);\n };\n };\n\n rpc(data) {\n const msg = {\n method: this._methodType.RPC,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(resolveCtx => {\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n return this._decoder.decodeCommandResult(this._methodType.RPC, resolveCtx.result);\n }, rejectCtx => {\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n return rejectCtx.error;\n });\n }\n\n send(data) {\n const msg = {\n method: this._methodType.SEND,\n params: {\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n const sent = this._transportSend([msg]); // can send async message to server without id set\n if (!sent) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n };\n return Promise.resolve({});\n }\n\n publish(channel, data) {\n const msg = {\n method: this._methodType.PUBLISH,\n params: {\n channel: channel,\n data: data\n }\n };\n\n if (!this.isConnected()) {\n return Promise.reject(this._createErrorObject(_errorConnectionClosed, 0));\n }\n\n return this._call(msg).then(result => {\n if (result.next) {\n result.next();\n }\n return {};\n });\n }\n\n _dataReceived(data) {\n const replies = this._decoder.decodeReplies(data);\n // we have to guarantee order of events in replies processing - i.e. start processing\n // next reply only when we finished processing of current one. Without syncing things in\n // this way we could get wrong publication events order as reply promises resolve\n // on next loop tick so for loop continues before we finished emitting all reply events.\n let p = Promise.resolve();\n for (const i in replies) {\n if (replies.hasOwnProperty(i)) {\n p = p.then(() => {\n return this._dispatchReply(replies[i]);\n });\n }\n }\n this._restartPing();\n }\n\n _call(msg) {\n return new Promise((resolve, reject) => {\n const id = this._addMessage(msg);\n this._registerCall(id, resolve, reject);\n });\n }\n\n _connect() {\n if (this.isConnected()) {\n this._debug('connect called when already connected');\n return;\n }\n if (this._status === 'connecting') {\n return;\n }\n\n this._debug('start connecting');\n this._setStatus('connecting');\n this._clientID = null;\n this._reconnect = true;\n this._setupTransport();\n };\n\n _disconnect(reason, shouldReconnect) {\n\n if (this._isDisconnected()) {\n return;\n }\n\n this._debug('disconnected:', reason, shouldReconnect);\n\n const reconnect = shouldReconnect || false;\n\n if (reconnect === false) {\n this._reconnect = false;\n }\n\n this._clearConnectedState(reconnect);\n\n if (!this._isDisconnected()) {\n this._setStatus('disconnected');\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._reconnecting === false) {\n this.emit('disconnect', {\n reason: reason,\n reconnect: reconnect\n });\n }\n }\n\n if (!this._transportClosed) {\n this._transport.close();\n }\n };\n\n _refreshFailed() {\n this._numRefreshFailed = 0;\n if (!this._isDisconnected()) {\n this._disconnect('refresh failed', false);\n }\n if (this._config.onRefreshFailed !== null) {\n this._config.onRefreshFailed();\n }\n };\n\n _refresh() {\n // ask application for new connection token.\n this._debug('refresh token');\n\n if (this._config.refreshAttempts === 0) {\n this._debug('refresh attempts set to 0, do not send refresh request at all');\n this._refreshFailed();\n return;\n }\n\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (this._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n // We don't perform any connection status related actions here as we are\n // relying on server that must close connection eventually.\n if (resp.error) {\n this._debug('error refreshing connection token', resp.error);\n } else {\n this._debug('error refreshing connection token: wrong status code', resp.status);\n }\n this._numRefreshFailed++;\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (this._config.refreshAttempts !== null && this._numRefreshFailed >= this._config.refreshAttempts) {\n this._refreshFailed();\n return;\n }\n const jitter = Math.round(Math.random() * 1000 * Math.max(this._numRefreshFailed, 20));\n const interval = this._config.refreshInterval + jitter;\n this._refreshTimeout = setTimeout(() => this._refresh(), interval);\n return;\n }\n this._numRefreshFailed = 0;\n this._token = resp.data.token;\n if (!this._token) {\n this._refreshFailed();\n return;\n }\n if (this._isDisconnected() && this._reconnect) {\n this._debug('token refreshed, connect from scratch');\n this._connect();\n } else {\n this._debug('send refreshed token');\n const msg = {\n method: this._methodType.REFRESH,\n params: {\n token: this._token\n }\n };\n this._call(msg).then(resolveCtx => {\n this._refreshResponse(this._decoder.decodeCommandResult(this._methodType.REFRESH, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._refreshError(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n if (this._config.onRefresh !== null) {\n const context = {};\n this._config.onRefresh(context, cb);\n } else {\n const xhr = this._ajax(\n this._config.refreshEndpoint,\n this._config.refreshParams,\n this._config.refreshHeaders,\n this._config.refreshData,\n cb\n );\n this._xhrs[xhrID] = xhr;\n }\n };\n\n _refreshError(err) {\n this._debug('refresh error', err);\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n const interval = this._config.refreshInterval + Math.round(Math.random() * 1000);\n this._refreshTimeout = setTimeout(() => this._refresh(), interval);\n }\n\n _refreshResponse(result) {\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (result.expires) {\n this._clientID = result.client;\n this._refreshTimeout = setTimeout(() => this._refresh(), this._getTTLMilliseconds(result.ttl));\n }\n };\n\n _newXHRID() {\n this._xhrID++;\n return this._xhrID;\n }\n\n _subRefresh(channel) {\n this._debug('refresh subscription token for channel', channel);\n\n if (this._subRefreshTimeouts[channel] !== undefined) {\n this._clearSubRefreshTimeout(channel);\n } else {\n return;\n }\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (resp.error || resp.status !== 200 || this._clientID !== clientID) {\n return;\n }\n let channelsData = {};\n if (resp.data.channels) {\n for (const i in data.channels) {\n const channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n const token = channelsData[channel];\n if (!token) {\n return;\n }\n const msg = {\n method: this._methodType.SUB_REFRESH,\n params: {\n channel: channel,\n token: token\n }\n };\n\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n\n this._call(msg).then(resolveCtx => {\n this._subRefreshResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUB_REFRESH, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subRefreshError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n const data = {\n client: this._clientID,\n channels: [channel]\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n const xhr = this._ajax(\n this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n };\n\n _clearSubRefreshTimeout(channel) {\n if (this._subRefreshTimeouts[channel] !== undefined) {\n clearTimeout(this._subRefreshTimeouts[channel]);\n delete this._subRefreshTimeouts[channel];\n }\n }\n\n _subRefreshError(channel, err) {\n this._debug('subscription refresh error', channel, err);\n this._clearSubRefreshTimeout(channel);\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n const jitter = Math.round(Math.random() * 1000);\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._config.subRefreshInterval + jitter);\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n return;\n }\n\n _subRefreshResponse(channel, result) {\n this._debug('subscription refresh success', channel);\n this._clearSubRefreshTimeout(channel);\n const sub = this._getSub(channel);\n if (sub === null) {\n return;\n }\n if (result.expires === true) {\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n return;\n };\n\n _subscribe(sub, isResubscribe) {\n this._debug('subscribing on', sub.channel);\n const channel = sub.channel;\n\n if (!(channel in this._subs)) {\n this._subs[channel] = sub;\n }\n\n if (!this.isConnected()) {\n // subscribe will be called later\n sub._setNew();\n return;\n }\n\n sub._setSubscribing(isResubscribe);\n\n const msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel\n }\n };\n\n // If channel name does not start with privateChannelPrefix - then we\n // can just send subscription message to Centrifuge. If channel name\n // starts with privateChannelPrefix - then this is a private channel\n // and we should ask web application backend for permission first.\n if (startsWith(channel, this._config.privateChannelPrefix)) {\n // private channel.\n if (this._isSubscribeBatching) {\n this._privateChannels[channel] = true;\n } else {\n this.startSubscribeBatching();\n this._subscribe(sub);\n this.stopSubscribeBatching();\n }\n } else {\n const recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n const seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n const gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n const epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n\n this._call(msg).then(resolveCtx => {\n this._subscribeResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUBSCRIBE, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n };\n\n _unsubscribe(sub) {\n if (this.isConnected()) {\n // No need to unsubscribe in disconnected state - i.e. client already unsubscribed.\n this._addMessage({\n method: this._methodType.UNSUBSCRIBE,\n params: {\n channel: sub.channel\n }\n });\n }\n };\n\n _getTTLMilliseconds(ttl) {\n // https://stackoverflow.com/questions/12633405/what-is-the-maximum-delay-for-setinterval\n return Math.min(ttl * 1000, 2147483647);\n }\n\n getSub(channel) {\n return this._getSub(channel);\n }\n\n _getSub(channel) {\n const sub = this._subs[channel];\n if (!sub) {\n return null;\n }\n return sub;\n };\n\n _connectResponse(result) {\n const wasReconnecting = this._reconnecting;\n this._reconnecting = false;\n this._resetRetry();\n this._refreshRequired = false;\n\n if (this.isConnected()) {\n return;\n }\n\n if (this._latencyStart !== null) {\n this._latency = (new Date()).getTime() - this._latencyStart.getTime();\n this._latencyStart = null;\n }\n\n this._clientID = result.client;\n this._setStatus('connected');\n\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n }\n\n if (result.expires) {\n this._refreshTimeout = setTimeout(() => this._refresh(), this._getTTLMilliseconds(result.ttl));\n }\n\n this.startBatching();\n this.startSubscribeBatching();\n for (const channel in this._subs) {\n if (this._subs.hasOwnProperty(channel)) {\n const sub = this._subs[channel];\n if (sub._shouldResubscribe()) {\n this._subscribe(sub, wasReconnecting);\n }\n }\n }\n this.stopSubscribeBatching();\n this.stopBatching();\n\n this._startPing();\n\n const ctx = {\n client: result.client,\n transport: this._transportName,\n latency: this._latency\n };\n if (result.data) {\n ctx.data = result.data;\n }\n\n this.emit('connect', ctx);\n };\n\n _stopPing() {\n if (this._pongTimeout !== null) {\n clearTimeout(this._pongTimeout);\n this._pongTimeout = null;\n }\n if (this._pingTimeout !== null) {\n clearTimeout(this._pingTimeout);\n this._pingTimeout = null;\n }\n };\n\n _startPing() {\n if (this._config.ping !== true || this._config.pingInterval <= 0) {\n return;\n }\n if (!this.isConnected()) {\n return;\n }\n\n this._pingTimeout = setTimeout(() => {\n if (!this.isConnected()) {\n this._stopPing();\n return;\n }\n this.ping();\n this._pongTimeout = setTimeout(() => {\n this._disconnect('no ping', true);\n }, this._config.pongWaitTimeout);\n }, this._config.pingInterval);\n };\n\n _restartPing() {\n this._stopPing();\n this._startPing();\n };\n\n _subscribeError(channel, error) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n if (error.code === 0 && error.message === _errorTimeout) { // client side timeout.\n this._disconnect('timeout', true);\n return;\n }\n sub._setSubscribeError(error);\n };\n\n _subscribeResponse(channel, result) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (!sub._isSubscribing()) {\n return;\n }\n\n let recovered = false;\n if ('recovered' in result) {\n recovered = result.recovered;\n }\n sub._setSubscribeSuccess(recovered);\n\n let pubs = result.publications;\n\n if (pubs && pubs.length > 0) {\n // handle missed pubs.\n pubs = pubs.reverse();\n for (let i in pubs) {\n if (pubs.hasOwnProperty(i)) {\n this._handlePublication(channel, pubs[i]);\n }\n }\n } else {\n if (result.recoverable) {\n this._lastSeq[channel] = result.seq || 0;\n this._lastGen[channel] = result.gen || 0;\n }\n }\n\n this._lastEpoch[channel] = result.epoch || '';\n\n if (result.recoverable) {\n sub._recoverable = true;\n }\n\n if (result.expires === true) {\n let subRefreshTimeout = setTimeout(() => this._subRefresh(channel), this._getTTLMilliseconds(result.ttl));\n this._subRefreshTimeouts[channel] = subRefreshTimeout;\n }\n };\n\n _handleReply(reply, next) {\n const id = reply.id;\n const result = reply.result;\n\n if (!(id in this._callbacks)) {\n next();\n return;\n }\n const callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n\n if (!errorExists(reply)) {\n const callback = callbacks.callback;\n if (!callback) {\n return;\n }\n callback({result, next});\n } else {\n const errback = callbacks.errback;\n if (!errback) {\n next();\n return;\n }\n const error = reply.error;\n errback({error, next});\n }\n }\n\n _handleJoin(channel, join) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('join', join);\n };\n\n _handleLeave(channel, leave) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.emit('leave', leave);\n };\n\n _handleUnsub(channel, unsub) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n sub.unsubscribe();\n if (unsub.resubscribe === true) {\n sub.subscribe();\n }\n };\n\n _handlePublication(channel, pub) {\n const sub = this._getSub(channel);\n if (!sub) {\n return;\n }\n if (pub.seq !== undefined) {\n this._lastSeq[channel] = pub.seq;\n }\n if (pub.gen !== undefined) {\n this._lastGen[channel] = pub.gen;\n }\n sub.emit('publish', pub);\n };\n\n _handleMessage(message) {\n this.emit('message', message.data);\n };\n\n _handlePush(data, next) {\n const push = this._decoder.decodePush(data);\n let type = 0;\n if ('type' in push) {\n type = push['type'];\n }\n const channel = push.channel;\n\n if (type === this._pushType.PUBLICATION) {\n const pub = this._decoder.decodePushData(this._pushType.PUBLICATION, push.data);\n this._handlePublication(channel, pub);\n } else if (type === this._pushType.MESSAGE) {\n const message = this._decoder.decodePushData(this._pushType.MESSAGE, push.data);\n this._handleMessage(message);\n } else if (type === this._pushType.JOIN) {\n const join = this._decoder.decodePushData(this._pushType.JOIN, push.data);\n this._handleJoin(channel, join);\n } else if (type === this._pushType.LEAVE) {\n const leave = this._decoder.decodePushData(this._pushType.LEAVE, push.data);\n this._handleLeave(channel, leave);\n } else if (type === this._pushType.UNSUB) {\n const unsub = this._decoder.decodePushData(this._pushType.UNSUB, push.data);\n this._handleUnsub(channel, unsub);\n }\n next();\n }\n\n _dispatchReply(reply) {\n var next;\n const p = new Promise(resolve =>{\n next = resolve;\n });\n\n if (reply === undefined || reply === null) {\n this._debug('dispatch: got undefined or null reply');\n next();\n return p;\n }\n\n const id = reply.id;\n\n if (id && id > 0) {\n this._handleReply(reply, next);\n } else {\n this._handlePush(reply.result, next);\n }\n\n return p;\n };\n\n _flush() {\n const messages = this._messages.slice(0);\n this._messages = [];\n this._transportSend(messages);\n };\n\n _ping() {\n const msg = {\n method: this._methodType.PING\n };\n this._call(msg).then(resolveCtx => {\n this._pingResponse(this._decoder.decodeCommandResult(this._methodType.PING, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._debug('ping error', rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n };\n\n _pingResponse(result) {\n if (!this.isConnected()) {\n return;\n }\n this._stopPing();\n this._startPing();\n }\n\n _getLastSeq(channel) {\n const lastSeq = this._lastSeq[channel];\n if (lastSeq) {\n return lastSeq;\n }\n return 0;\n };\n\n _getLastGen(channel) {\n const lastGen = this._lastGen[channel];\n if (lastGen) {\n return lastGen;\n }\n return 0;\n };\n\n _getLastEpoch(channel) {\n const lastEpoch = this._lastEpoch[channel];\n if (lastEpoch) {\n return lastEpoch;\n }\n return '';\n };\n\n _createErrorObject(message, code) {\n const errObject = {\n message: message,\n code: code || 0\n };\n\n return errObject;\n };\n\n _registerCall(id, callback, errback) {\n this._callbacks[id] = {\n callback: callback,\n errback: errback,\n timeout: null\n };\n this._callbacks[id].timeout = setTimeout(() => {\n delete this._callbacks[id];\n if (isFunction(errback)) {\n errback({error: this._createErrorObject(_errorTimeout)});\n }\n }, this._config.timeout);\n };\n\n _addMessage(message) {\n let id = this._nextMessageId();\n message.id = id;\n if (this._isBatching === true) {\n this._messages.push(message);\n } else {\n this._transportSend([message]);\n }\n return id;\n };\n\n isConnected() {\n return this._isConnected();\n }\n\n connect() {\n this._connect();\n };\n\n disconnect() {\n this._disconnect('client', false);\n };\n\n ping() {\n return this._ping();\n }\n\n startBatching() {\n // start collecting messages without sending them to Centrifuge until flush\n // method called\n this._isBatching = true;\n };\n\n stopBatching() {\n this._isBatching = false;\n this._flush();\n };\n\n startSubscribeBatching() {\n // start collecting private channels to create bulk authentication\n // request to subscribeEndpoint when stopSubscribeBatching will be called\n this._isSubscribeBatching = true;\n };\n\n stopSubscribeBatching() {\n // create request to subscribeEndpoint with collected private channels\n // to ask if this client can subscribe on each channel\n this._isSubscribeBatching = false;\n const authChannels = this._privateChannels;\n this._privateChannels = {};\n\n const channels = [];\n\n for (const channel in authChannels) {\n if (authChannels.hasOwnProperty(channel)) {\n const sub = this._getSub(channel);\n if (!sub) {\n continue;\n }\n channels.push(channel);\n }\n }\n\n if (channels.length === 0) {\n this._debug('no private channels found, no need to make request');\n return;\n }\n\n const data = {\n client: this._clientID,\n channels: channels\n };\n\n const clientID = this._clientID;\n const xhrID = this._newXHRID();\n\n const cb = (resp) => {\n if (xhrID in this._xhrs) {\n delete this._xhrs[xhrID];\n }\n if (this._clientID !== clientID) {\n return;\n }\n if (resp.error || resp.status !== 200) {\n this._debug('authorization request failed');\n for (const i in channels) {\n if (channels.hasOwnProperty(i)) {\n const channel = channels[i];\n this._subscribeError(channel, this._createErrorObject('authorization request failed'));\n }\n }\n return;\n }\n\n let channelsData = {};\n if (resp.data.channels) {\n for (const i in resp.data.channels) {\n const channelData = resp.data.channels[i];\n if (!channelData.channel) {\n continue;\n }\n channelsData[channelData.channel] = channelData.token;\n }\n }\n\n // try to send all subscriptions in one request.\n let batch = false;\n\n if (!this._isBatching) {\n this.startBatching();\n batch = true;\n }\n\n for (const i in channels) {\n if (channels.hasOwnProperty(i)) {\n const channel = channels[i];\n const token = channelsData[channel];\n\n if (!token) {\n // subscription:error\n this._subscribeError(channel, this._createErrorObject('permission denied', 103));\n continue;\n } else {\n const msg = {\n method: this._methodType.SUBSCRIBE,\n params: {\n channel: channel,\n token: token\n }\n };\n\n const sub = this._getSub(channel);\n if (sub === null) {\n continue;\n }\n\n const recover = sub._needRecover();\n\n if (recover === true) {\n msg.params.recover = true;\n const seq = this._getLastSeq(channel);\n if (seq) {\n msg.params.seq = seq;\n }\n const gen = this._getLastGen(channel);\n if (gen) {\n msg.params.gen = gen;\n }\n const epoch = this._getLastEpoch(channel);\n if (epoch) {\n msg.params.epoch = epoch;\n }\n }\n this._call(msg).then(resolveCtx => {\n this._subscribeResponse(\n channel,\n this._decoder.decodeCommandResult(this._methodType.SUBSCRIBE, resolveCtx.result)\n );\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._subscribeError(channel, rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }\n }\n }\n\n if (batch) {\n this.stopBatching();\n }\n\n };\n\n if (this._config.onPrivateSubscribe !== null) {\n this._config.onPrivateSubscribe({\n data: data\n }, cb);\n } else {\n const xhr = this._ajax(\n this._config.subscribeEndpoint, this._config.subscribeParams, this._config.subscribeHeaders, data, cb);\n this._xhrs[xhrID] = xhr;\n }\n };\n\n subscribe(channel, events) {\n const currentSub = this._getSub(channel);\n if (currentSub !== null) {\n currentSub._setEvents(events);\n if (currentSub._isUnsubscribed()) {\n currentSub.subscribe();\n }\n return currentSub;\n }\n const sub = new Subscription(this, channel, events);\n this._subs[channel] = sub;\n sub.subscribe();\n return sub;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/centrifuge.js","import EventEmitter from 'events';\n\nimport {\n isFunction\n} from './utils';\n\nconst _STATE_NEW = 0;\nconst _STATE_SUBSCRIBING = 1;\nconst _STATE_SUCCESS = 2;\nconst _STATE_ERROR = 3;\nconst _STATE_UNSUBSCRIBED = 4;\n\nexport default class Subscription extends EventEmitter {\n constructor(centrifuge, channel, events) {\n super();\n this.channel = channel;\n this._centrifuge = centrifuge;\n this._status = _STATE_NEW;\n this._error = null;\n this._isResubscribe = false;\n this._ready = false;\n this._subscriptionPromise = null;\n this._noResubscribe = false;\n this._recoverable = false;\n this._recover = false;\n this._setEvents(events);\n this._initializePromise();\n this._promises = {};\n this.on('error', function (errContext) {\n this._centrifuge._debug('subscription error', errContext);\n });\n }\n\n _initializePromise() {\n // this helps us to wait until subscription will successfully\n // subscribe and call actions such as presence, history etc in\n // synchronous way.\n this._ready = false;\n\n this._subscriptionPromise = new Promise((resolve, reject) => {\n this._resolve = value => {\n this._ready = true;\n resolve(value);\n };\n this._reject = err => {\n this._ready = true;\n reject(err);\n };\n }).then(function () {}, function () {});\n };\n\n _needRecover() {\n return this._recoverable === true && this._recover === true;\n };\n\n _setEvents(events) {\n if (!events) {\n return;\n }\n if (isFunction(events)) {\n // events is just a function to handle publication received from channel.\n this.on('publish', events);\n } else if (Object.prototype.toString.call(events) === Object.prototype.toString.call({})) {\n const knownEvents = ['publish', 'join', 'leave', 'unsubscribe', 'subscribe', 'error'];\n for (let i = 0, l = knownEvents.length; i < l; i++) {\n const ev = knownEvents[i];\n if (ev in events) {\n this.on(ev, events[ev]);\n }\n }\n }\n };\n\n _isNew() {\n return this._status === _STATE_NEW;\n };\n\n _isUnsubscribed() {\n return this._status === _STATE_UNSUBSCRIBED;\n };\n\n _isSubscribing() {\n return this._status === _STATE_SUBSCRIBING;\n };\n\n _isReady() {\n return this._status === _STATE_SUCCESS || this._status === _STATE_ERROR;\n };\n\n _isSuccess() {\n return this._status === _STATE_SUCCESS;\n };\n\n _isError() {\n return this._status === _STATE_ERROR;\n };\n\n _setNew() {\n this._status = _STATE_NEW;\n };\n\n _setSubscribing(isResubscribe) {\n this._isResubscribe = isResubscribe || false;\n if (this._ready === true) {\n // new promise for this subscription\n this._initializePromise();\n }\n this._status = _STATE_SUBSCRIBING;\n };\n\n _setSubscribeSuccess(recovered) {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._status = _STATE_SUCCESS;\n const successContext = this._getSubscribeSuccessContext(recovered);\n\n this._recover = false;\n this.emit('subscribe', successContext);\n this._resolve(successContext);\n for (const to in this._promises) {\n clearTimeout(to);\n this._promises[to].resolve();\n delete this._promises[to];\n }\n };\n\n _setSubscribeError(err) {\n if (this._status === _STATE_ERROR) {\n return;\n }\n this._status = _STATE_ERROR;\n this._error = err;\n const errContext = this._getSubscribeErrorContext();\n this.emit('error', errContext);\n this._reject(errContext);\n for (const to in this._promises) {\n clearTimeout(to);\n this._promises[to].reject(err);\n delete this._promises[to];\n }\n };\n\n _triggerUnsubscribe() {\n this.emit('unsubscribe', {\n channel: this.channel\n });\n };\n\n _setUnsubscribed(noResubscribe) {\n this._centrifuge._clearSubRefreshTimeout(this.channel);\n if (this._status === _STATE_UNSUBSCRIBED) {\n return;\n }\n const needTrigger = this._status === _STATE_SUCCESS;\n this._status = _STATE_UNSUBSCRIBED;\n if (noResubscribe === true) {\n this._recover = false;\n this._noResubscribe = true;\n delete this._centrifuge._lastSeq[this.channel];\n delete this._centrifuge._lastGen[this.channel];\n delete this._centrifuge._lastEpoch[this.channel];\n }\n if (needTrigger) {\n this._triggerUnsubscribe();\n }\n };\n\n _shouldResubscribe() {\n return !this._noResubscribe;\n };\n\n _getSubscribeSuccessContext(recovered) {\n return {\n channel: this.channel,\n isResubscribe: this._isResubscribe,\n recovered: recovered\n };\n };\n\n _getSubscribeErrorContext() {\n const subscribeErrorContext = this._error;\n subscribeErrorContext.channel = this.channel;\n subscribeErrorContext.isResubscribe = this._isResubscribe;\n return subscribeErrorContext;\n };\n\n ready(callback, errback) {\n if (this._ready) {\n if (this._isSuccess()) {\n callback(this._getSubscribeSuccessContext());\n } else {\n errback(this._getSubscribeErrorContext());\n }\n }\n };\n\n subscribe() {\n if (this._status === _STATE_SUCCESS) {\n return;\n }\n this._noResubscribe = false;\n this._centrifuge._subscribe(this);\n };\n\n unsubscribe() {\n this._setUnsubscribed(true);\n this._centrifuge._unsubscribe(this);\n };\n\n _methodCall(message, type) {\n const methodCallPromise = new Promise((resolve, reject) => {\n let subPromise;\n if (this._isSuccess()) {\n subPromise = Promise.resolve();\n } else if (this._isError()) {\n subPromise = Promise.reject(this._error);\n } else {\n subPromise = new Promise((res, rej) => {\n const timeout = setTimeout(function () {\n rej({'code': 0, 'message': 'timeout'});\n }, this._centrifuge._config.timeout);\n this._promises[timeout] = {\n resolve: res,\n reject: rej\n };\n });\n }\n subPromise.then(\n () => {\n return this._centrifuge._call(message).then(\n resolveCtx => {\n resolve(this._centrifuge._decoder.decodeCommandResult(type, resolveCtx.result));\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n },\n rejectCtx => {\n reject(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n }\n );\n },\n error => {\n reject(error);\n }\n );\n });\n return methodCallPromise;\n }\n\n publish(data) {\n return this._methodCall({\n method: this._centrifuge._methodType.PUBLISH,\n params: {\n channel: this.channel,\n data: data\n }\n }, this._centrifuge._methodType.PUBLISH);\n };\n\n presence() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE);\n };\n\n presenceStats() {\n return this._methodCall({\n method: this._centrifuge._methodType.PRESENCE_STATS,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.PRESENCE_STATS);\n };\n\n history() {\n return this._methodCall({\n method: this._centrifuge._methodType.HISTORY,\n params: {\n channel: this.channel\n }\n }, this._centrifuge._methodType.HISTORY);\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/subscription.js","export const JsonMethodType = {\n CONNECT: 0,\n SUBSCRIBE: 1,\n UNSUBSCRIBE: 2,\n PUBLISH: 3,\n PRESENCE: 4,\n PRESENCE_STATS: 5,\n HISTORY: 6,\n PING: 7,\n SEND: 8,\n RPC: 9,\n REFRESH: 10,\n SUB_REFRESH: 11\n};\n\nexport const JsonPushType = {\n PUBLICATION: 0,\n JOIN: 1,\n LEAVE: 2,\n UNSUB: 3,\n MESSAGE: 4\n};\n\nexport class JsonEncoder {\n encodeCommands(commands) {\n const encodedCommands = [];\n for (const i in commands) {\n if (commands.hasOwnProperty(i)) {\n encodedCommands.push(JSON.stringify(commands[i]));\n }\n }\n return encodedCommands.join('\\n');\n }\n}\n\nexport class JsonDecoder {\n decodeReplies(data) {\n const replies = [];\n const encodedReplies = data.split('\\n');\n for (const i in encodedReplies) {\n if (encodedReplies.hasOwnProperty(i)) {\n if (!encodedReplies[i]) {\n continue;\n }\n const reply = JSON.parse(encodedReplies[i]);\n replies.push(reply);\n }\n }\n return replies;\n }\n\n decodeCommandResult(methodType, data) {\n return data;\n }\n\n decodePush(data) {\n return data;\n }\n\n decodePushData(pushType, data) {\n return data;\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/json.js","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar BufferWriter; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n base64 = util.base64,\r\n utf8 = util.utf8;\r\n\r\n/**\r\n * Constructs a new writer operation instance.\r\n * @classdesc Scheduled writer operation.\r\n * @constructor\r\n * @param {function(*, Uint8Array, number)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {*} val Value to write\r\n * @ignore\r\n */\r\nfunction Op(fn, len, val) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(Uint8Array, number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {Writer.Op|undefined}\r\n */\r\n this.next = undefined;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val; // type varies\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state instance.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n\r\n /**\r\n * Next state.\r\n * @type {State|null}\r\n */\r\n this.next = writer.states;\r\n}\r\n\r\n/**\r\n * Constructs a new writer instance.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * Linked forked states.\r\n * @type {Object|null}\r\n */\r\n this.states = null;\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling operations with already prepared values.\r\n}\r\n\r\n/**\r\n * Creates a new writer.\r\n * @function\r\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\r\n */\r\nWriter.create = util.Buffer\r\n ? function create_buffer_setup() {\r\n return (Writer.create = function create_buffer() {\r\n return new BufferWriter();\r\n })();\r\n }\r\n /* istanbul ignore next */\r\n : function create_array() {\r\n return new Writer();\r\n };\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nWriter.alloc = function alloc(size) {\r\n return new util.Array(size);\r\n};\r\n\r\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\r\n/* istanbul ignore else */\r\nif (util.Array !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n * @private\r\n */\r\nWriter.prototype._push = function push(fn, len, val) {\r\n this.tail = this.tail.next = new Op(fn, len, val);\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(val, buf, pos) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\nfunction writeVarint32(val, buf, pos) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Constructs a new varint writer operation instance.\r\n * @classdesc Scheduled varint writer operation.\r\n * @extends Op\r\n * @constructor\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @ignore\r\n */\r\nfunction VarintOp(len, val) {\r\n this.len = len;\r\n this.next = undefined;\r\n this.val = val;\r\n}\r\n\r\nVarintOp.prototype = Object.create(Op.prototype);\r\nVarintOp.prototype.fn = writeVarint32;\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.uint32 = function write_uint32(value) {\r\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\r\n // uint32 is by far the most frequently used operation and benefits significantly from this.\r\n this.len += (this.tail = this.tail.next = new VarintOp(\r\n (value = value >>> 0)\r\n < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5,\r\n value)).len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sint32 = function write_sint32(value) {\r\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\r\n};\r\n\r\nfunction writeVarint64(val, buf, pos) {\r\n while (val.hi) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n while (val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = val.lo >>> 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.int64 = Writer.prototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sint64 = function write_sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bool = function write_bool(value) {\r\n return this._push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fixed32 = function write_fixed32(value) {\r\n return this._push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as fixed 32 bits.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as fixed 64 bits.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.float = function write_float(value) {\r\n return this._push(util.float.writeFloatLE, 4, value);\r\n};\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.double = function write_double(value) {\r\n return this._push(util.float.writeDoubleLE, 8, value);\r\n};\r\n\r\nvar writeBytes = util.Array.prototype.set\r\n ? function writeBytes_set(val, buf, pos) {\r\n buf.set(val, pos); // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytes_for(val, buf, pos) {\r\n for (var i = 0; i < val.length; ++i)\r\n buf[pos + i] = val[i];\r\n };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (!len)\r\n return this._push(writeByte, 1, 0);\r\n if (util.isString(value)) {\r\n var buf = Writer.alloc(len = base64.length(value));\r\n base64.decode(value, buf, 0);\r\n value = buf;\r\n }\r\n return this.uint32(len)._push(writeBytes, len, value);\r\n};\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.string = function write_string(value) {\r\n var len = utf8.length(value);\r\n return len\r\n ? this.uint32(len)._push(utf8.write, len, value)\r\n : this._push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fork = function fork() {\r\n this.states = new State(this);\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.reset = function reset() {\r\n if (this.states) {\r\n this.head = this.states.head;\r\n this.tail = this.states.tail;\r\n this.len = this.states.len;\r\n this.states = this.states.next;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset().uint32(len);\r\n if (len) {\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriter.prototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = this.constructor.alloc(this.len),\r\n pos = 0;\r\n while (head) {\r\n head.fn(head.val, buf, pos);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n // this.head = this.tail = null;\r\n return buf;\r\n};\r\n\r\nWriter._configure = function(BufferWriter_) {\r\n BufferWriter = BufferWriter_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/writer.js\n// module id = 13\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar BufferReader; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n utf8 = util.utf8;\r\n\r\n/* istanbul ignore next */\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader instance using the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n\r\n /**\r\n * Read buffer.\r\n * @type {Uint8Array}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\nvar create_array = typeof Uint8Array !== \"undefined\"\r\n ? function create_typed_array(buffer) {\r\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n if (Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n };\r\n\r\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array|Buffer} buffer Buffer to read from\r\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n * @throws {Error} If `buffer` is not a valid buffer\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n return (Reader.create = function create_buffer(buffer) {\r\n return util.Buffer.isBuffer(buffer)\r\n ? new BufferReader(buffer)\r\n /* istanbul ignore next */\r\n : create_array(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : create_array;\r\n\r\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.uint32 = (function read_uint32_setup() {\r\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\r\n return function read_uint32() {\r\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n\r\n /* istanbul ignore if */\r\n if ((this.pos += 5) > this.len) {\r\n this.pos = this.len;\r\n throw indexOutOfRange(this, 10);\r\n }\r\n return value;\r\n };\r\n})();\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.int32 = function read_int32() {\r\n return this.uint32() | 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sint32 = function read_sint32() {\r\n var value = this.uint32();\r\n return value >>> 1 ^ -(value & 1) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readLongVarint() {\r\n // tends to deopt with local vars for octet etc.\r\n var bits = new LongBits(0, 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (; i < 4; ++i) {\r\n // 1st..4th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 5th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n i = 0;\r\n } else {\r\n for (; i < 3; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 1st..3th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 4th\r\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\r\n return bits;\r\n }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (; i < 5; ++i) {\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n } else {\r\n for (; i < 5; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n }\r\n /* istanbul ignore next */\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @name Reader#int64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @name Reader#uint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @name Reader#sint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReader.prototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\r\n return (buf[end - 4]\r\n | buf[end - 3] << 8\r\n | buf[end - 2] << 16\r\n | buf[end - 1] << 24) >>> 0;\r\n}\r\n\r\n/**\r\n * Reads fixed 32 bits as an unsigned 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a signed 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sfixed32 = function read_sfixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @name Reader#fixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @name Reader#sfixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.float = function read_float() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readFloatLE(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.double = function read_double() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readDoubleLE(this.buf, this.pos);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReader.prototype.bytes = function read_bytes() {\r\n var length = this.uint32(),\r\n start = this.pos,\r\n end = this.pos + length;\r\n\r\n /* istanbul ignore if */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\r\n if (Array.isArray(this.buf)) // plain array\r\n return this.buf.slice(start, end);\r\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n ? new this.buf.constructor(0)\r\n : this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReader.prototype.string = function read_string() {\r\n var bytes = this.bytes();\r\n return utf8.read(bytes, 0, bytes.length);\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore if */\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n } else {\r\n do {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n do { // eslint-disable-line no-constant-condition\r\n if ((wireType = this.uint32() & 7) === 4)\r\n break;\r\n this.skipType(wireType);\r\n } while (true);\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\r\n }\r\n return this;\r\n};\r\n\r\nReader._configure = function(BufferReader_) {\r\n BufferReader = BufferReader_;\r\n\r\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\r\n util.merge(Reader.prototype, {\r\n\r\n int64: function read_int64() {\r\n return readLongVarint.call(this)[fn](false);\r\n },\r\n\r\n uint64: function read_uint64() {\r\n return readLongVarint.call(this)[fn](true);\r\n },\r\n\r\n sint64: function read_sint64() {\r\n return readLongVarint.call(this).zzDecode()[fn](false);\r\n },\r\n\r\n fixed64: function read_fixed64() {\r\n return readFixed64.call(this)[fn](true);\r\n },\r\n\r\n sfixed64: function read_sfixed64() {\r\n return readFixed64.call(this)[fn](false);\r\n }\r\n\r\n });\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/reader.js\n// module id = 14\n// module chunks = 0","\"use strict\";\r\nmodule.exports = OneOf;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((OneOf.prototype = Object.create(ReflectionObject.prototype)).constructor = OneOf).className = \"OneOf\";\r\n\r\nvar Field = require(\"./field\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new oneof instance.\r\n * @classdesc Reflected oneof.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Oneof name\r\n * @param {string[]|Object.} [fieldNames] Field names\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction OneOf(name, fieldNames, options, comment) {\r\n if (!Array.isArray(fieldNames)) {\r\n options = fieldNames;\r\n fieldNames = undefined;\r\n }\r\n ReflectionObject.call(this, name, options);\r\n\r\n /* istanbul ignore if */\r\n if (!(fieldNames === undefined || Array.isArray(fieldNames)))\r\n throw TypeError(\"fieldNames must be an Array\");\r\n\r\n /**\r\n * Field names that belong to this oneof.\r\n * @type {string[]}\r\n */\r\n this.oneof = fieldNames || []; // toJSON, marker\r\n\r\n /**\r\n * Fields that belong to this oneof as an array for iteration.\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n this.fieldsArray = []; // declared readonly for conformance, possibly not yet added to parent\r\n\r\n /**\r\n * Comment for this field.\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Oneof descriptor.\r\n * @interface IOneOf\r\n * @property {Array.} oneof Oneof field names\r\n * @property {Object.} [options] Oneof options\r\n */\r\n\r\n/**\r\n * Constructs a oneof from a oneof descriptor.\r\n * @param {string} name Oneof name\r\n * @param {IOneOf} json Oneof descriptor\r\n * @returns {OneOf} Created oneof\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nOneOf.fromJSON = function fromJSON(name, json) {\r\n return new OneOf(name, json.oneof, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this oneof to a oneof descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IOneOf} Oneof descriptor\r\n */\r\nOneOf.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , this.options,\r\n \"oneof\" , this.oneof,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Adds the fields of the specified oneof to the parent if not already done so.\r\n * @param {OneOf} oneof The oneof\r\n * @returns {undefined}\r\n * @inner\r\n * @ignore\r\n */\r\nfunction addFieldsToParent(oneof) {\r\n if (oneof.parent)\r\n for (var i = 0; i < oneof.fieldsArray.length; ++i)\r\n if (!oneof.fieldsArray[i].parent)\r\n oneof.parent.add(oneof.fieldsArray[i]);\r\n}\r\n\r\n/**\r\n * Adds a field to this oneof and removes it from its current parent, if any.\r\n * @param {Field} field Field to add\r\n * @returns {OneOf} `this`\r\n */\r\nOneOf.prototype.add = function add(field) {\r\n\r\n /* istanbul ignore if */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field must be a Field\");\r\n\r\n if (field.parent && field.parent !== this.parent)\r\n field.parent.remove(field);\r\n this.oneof.push(field.name);\r\n this.fieldsArray.push(field);\r\n field.partOf = this; // field.parent remains null\r\n addFieldsToParent(this);\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes a field from this oneof and puts it back to the oneof's parent.\r\n * @param {Field} field Field to remove\r\n * @returns {OneOf} `this`\r\n */\r\nOneOf.prototype.remove = function remove(field) {\r\n\r\n /* istanbul ignore if */\r\n if (!(field instanceof Field))\r\n throw TypeError(\"field must be a Field\");\r\n\r\n var index = this.fieldsArray.indexOf(field);\r\n\r\n /* istanbul ignore if */\r\n if (index < 0)\r\n throw Error(field + \" is not a member of \" + this);\r\n\r\n this.fieldsArray.splice(index, 1);\r\n index = this.oneof.indexOf(field.name);\r\n\r\n /* istanbul ignore else */\r\n if (index > -1) // theoretical\r\n this.oneof.splice(index, 1);\r\n\r\n field.partOf = null;\r\n return this;\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOf.prototype.onAdd = function onAdd(parent) {\r\n ReflectionObject.prototype.onAdd.call(this, parent);\r\n var self = this;\r\n // Collect present fields\r\n for (var i = 0; i < this.oneof.length; ++i) {\r\n var field = parent.get(this.oneof[i]);\r\n if (field && !field.partOf) {\r\n field.partOf = self;\r\n self.fieldsArray.push(field);\r\n }\r\n }\r\n // Add not yet present fields\r\n addFieldsToParent(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nOneOf.prototype.onRemove = function onRemove(parent) {\r\n for (var i = 0, field; i < this.fieldsArray.length; ++i)\r\n if ((field = this.fieldsArray[i]).parent)\r\n field.parent.remove(field);\r\n ReflectionObject.prototype.onRemove.call(this, parent);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link OneOf.d} (TypeScript).\r\n * @typedef OneOfDecorator\r\n * @type {function}\r\n * @param {Object} prototype Target prototype\r\n * @param {string} oneofName OneOf name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * OneOf decorator (TypeScript).\r\n * @function\r\n * @param {...string} fieldNames Field names\r\n * @returns {OneOfDecorator} Decorator function\r\n * @template T extends string\r\n */\r\nOneOf.d = function decorateOneOf() {\r\n var fieldNames = new Array(arguments.length),\r\n index = 0;\r\n while (index < arguments.length)\r\n fieldNames[index] = arguments[index++];\r\n return function oneOfDecorator(prototype, oneofName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new OneOf(oneofName, fieldNames));\r\n Object.defineProperty(prototype, oneofName, {\r\n get: util.oneOfGetter(fieldNames),\r\n set: util.oneOfSetter(fieldNames)\r\n });\r\n };\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/oneof.js\n// module id = 15\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Message;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\n/**\r\n * Constructs a new message instance.\r\n * @classdesc Abstract runtime message.\r\n * @constructor\r\n * @param {Properties} [properties] Properties to set\r\n * @template T extends object\r\n */\r\nfunction Message(properties) {\r\n // not used internally\r\n if (properties)\r\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\r\n this[keys[i]] = properties[keys[i]];\r\n}\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message.$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/**\r\n * Reference to the reflected type.\r\n * @name Message#$type\r\n * @type {Type}\r\n * @readonly\r\n */\r\n\r\n/*eslint-disable valid-jsdoc*/\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message} Message instance\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.create = function create(properties) {\r\n return this.$type.create(properties);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type.\r\n * @param {T|Object.} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.encode = function encode(message, writer) {\r\n return this.$type.encode(message, writer);\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its length as a varint.\r\n * @param {T|Object.} message Message to encode\r\n * @param {Writer} [writer] Writer to use\r\n * @returns {Writer} Writer\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.$type.encodeDelimited(message, writer);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @name Message.decode\r\n * @function\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\r\n * @returns {T} Decoded message\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.decode = function decode(reader) {\r\n return this.$type.decode(reader);\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its length as a varint.\r\n * @name Message.decodeDelimited\r\n * @function\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\r\n * @returns {T} Decoded message\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.decodeDelimited = function decodeDelimited(reader) {\r\n return this.$type.decodeDelimited(reader);\r\n};\r\n\r\n/**\r\n * Verifies a message of this type.\r\n * @name Message.verify\r\n * @function\r\n * @param {Object.} message Plain object to verify\r\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\r\n */\r\nMessage.verify = function verify(message) {\r\n return this.$type.verify(message);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.} object Plain object\r\n * @returns {T} Message instance\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.fromObject = function fromObject(object) {\r\n return this.$type.fromObject(object);\r\n};\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {T} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n * @template T extends Message\r\n * @this Constructor\r\n */\r\nMessage.toObject = function toObject(message, options) {\r\n return this.$type.toObject(message, options);\r\n};\r\n\r\n/**\r\n * Converts this message to JSON.\r\n * @returns {Object.} JSON object\r\n */\r\nMessage.prototype.toJSON = function toJSON() {\r\n return this.$type.toObject(this, util.toJSONOptions);\r\n};\r\n\r\n/*eslint-enable valid-jsdoc*/\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/message.js\n// module id = 16\n// module chunks = 0","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/aspromise/index.js\n// module id = 17\n// module chunks = 0","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/inquire/index.js\n// module id = 18\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * Streaming RPC helpers.\r\n * @namespace\r\n */\r\nvar rpc = exports;\r\n\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @type {function}\r\n * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCImplCallback} callback Callback function\r\n * @returns {undefined}\r\n * @example\r\n * function rpcImpl(method, requestData, callback) {\r\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\r\n * throw Error(\"no such method\");\r\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\r\n * callback(err, responseData);\r\n * });\r\n * }\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCImplCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\nrpc.Service = require(\"./rpc/service\");\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/rpc.js\n// module id = 19\n// module chunks = 0","\"use strict\";\r\nmodule.exports = {};\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available accross modules.\r\n * @name roots\r\n * @type {Object.}\r\n * @example\r\n * // pbjs -r myroot -o compiled.js ...\r\n *\r\n * // in another module:\r\n * require(\"./compiled.js\");\r\n *\r\n * // in any subsequent module:\r\n * var root = protobuf.roots[\"myroot\"];\r\n */\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/roots.js\n// module id = 20\n// module chunks = 0","\"use strict\";\r\nmodule.exports = encoder;\r\n\r\nvar Enum = require(\"./enum\"),\r\n types = require(\"./types\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Generates a partial message type encoder.\r\n * @param {Codegen} gen Codegen instance\r\n * @param {Field} field Reflected field\r\n * @param {number} fieldIndex Field index\r\n * @param {string} ref Variable reference\r\n * @returns {Codegen} Codegen instance\r\n * @ignore\r\n */\r\nfunction genTypePartial(gen, field, fieldIndex, ref) {\r\n return field.resolvedType.group\r\n ? gen(\"types[%i].encode(%s,w.uint32(%i)).uint32(%i)\", fieldIndex, ref, (field.id << 3 | 3) >>> 0, (field.id << 3 | 4) >>> 0)\r\n : gen(\"types[%i].encode(%s,w.uint32(%i).fork()).ldelim()\", fieldIndex, ref, (field.id << 3 | 2) >>> 0);\r\n}\r\n\r\n/**\r\n * Generates an encoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction encoder(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var gen = util.codegen([\"m\", \"w\"], mtype.name + \"$encode\")\r\n (\"if(!w)\")\r\n (\"w=Writer.create()\");\r\n\r\n var i, ref;\r\n\r\n // \"when a message is serialized its known fields should be written sequentially by field number\"\r\n var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById);\r\n\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n index = mtype._fieldsArray.indexOf(field),\r\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\r\n wireType = types.basic[type];\r\n ref = \"m\" + util.safeProp(field.name);\r\n\r\n // Map fields\r\n if (field.map) {\r\n gen\r\n (\"if(%s!=null&&m.hasOwnProperty(%j)){\", ref, field.name) // !== undefined && !== null\r\n (\"for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[field.keyType], field.keyType);\r\n if (wireType === undefined) gen\r\n (\"types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", index, ref); // can't be groups\r\n else gen\r\n (\".uint32(%i).%s(%s[ks[i]]).ldelim()\", 16 | wireType, type, ref);\r\n gen\r\n (\"}\")\r\n (\"}\");\r\n\r\n // Repeated fields\r\n } else if (field.repeated) { gen\r\n (\"if(%s!=null&&%s.length){\", ref, ref); // !== undefined && !== null\r\n\r\n // Packed repeated\r\n if (field.packed && types.packed[type] !== undefined) { gen\r\n\r\n (\"w.uint32(%i).fork()\", (field.id << 3 | 2) >>> 0)\r\n (\"for(var i=0;i<%s.length;++i)\", ref)\r\n (\"w.%s(%s[i])\", type, ref)\r\n (\"w.ldelim()\");\r\n\r\n // Non-packed\r\n } else { gen\r\n\r\n (\"for(var i=0;i<%s.length;++i)\", ref);\r\n if (wireType === undefined)\r\n genTypePartial(gen, field, index, ref + \"[i]\");\r\n else gen\r\n (\"w.uint32(%i).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n } gen\r\n (\"}\");\r\n\r\n // Non-repeated\r\n } else {\r\n if (field.optional) gen\r\n (\"if(%s!=null&&m.hasOwnProperty(%j))\", ref, field.name); // !== undefined && !== null\r\n\r\n if (wireType === undefined)\r\n genTypePartial(gen, field, index, ref);\r\n else gen\r\n (\"w.uint32(%i).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\r\n\r\n }\r\n }\r\n\r\n return gen\r\n (\"return w\");\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/encoder.js\n// module id = 21\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Type;\r\n\r\n// extends Namespace\r\nvar Namespace = require(\"./namespace\");\r\n((Type.prototype = Object.create(Namespace.prototype)).constructor = Type).className = \"Type\";\r\n\r\nvar Enum = require(\"./enum\"),\r\n OneOf = require(\"./oneof\"),\r\n Field = require(\"./field\"),\r\n MapField = require(\"./mapfield\"),\r\n Service = require(\"./service\"),\r\n Message = require(\"./message\"),\r\n Reader = require(\"./reader\"),\r\n Writer = require(\"./writer\"),\r\n util = require(\"./util\"),\r\n encoder = require(\"./encoder\"),\r\n decoder = require(\"./decoder\"),\r\n verifier = require(\"./verifier\"),\r\n converter = require(\"./converter\"),\r\n wrappers = require(\"./wrappers\");\r\n\r\n/**\r\n * Constructs a new reflected message type instance.\r\n * @classdesc Reflected message type.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Message name\r\n * @param {Object.} [options] Declared options\r\n */\r\nfunction Type(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Message fields.\r\n * @type {Object.}\r\n */\r\n this.fields = {}; // toJSON, marker\r\n\r\n /**\r\n * Oneofs declared within this namespace, if any.\r\n * @type {Object.}\r\n */\r\n this.oneofs = undefined; // toJSON\r\n\r\n /**\r\n * Extension ranges, if any.\r\n * @type {number[][]}\r\n */\r\n this.extensions = undefined; // toJSON\r\n\r\n /**\r\n * Reserved ranges, if any.\r\n * @type {Array.}\r\n */\r\n this.reserved = undefined; // toJSON\r\n\r\n /*?\r\n * Whether this type is a legacy group.\r\n * @type {boolean|undefined}\r\n */\r\n this.group = undefined; // toJSON\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {Object.|null}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields as an array.\r\n * @type {Field[]|null}\r\n * @private\r\n */\r\n this._fieldsArray = null;\r\n\r\n /**\r\n * Cached oneofs as an array.\r\n * @type {OneOf[]|null}\r\n * @private\r\n */\r\n this._oneofsArray = null;\r\n\r\n /**\r\n * Cached constructor.\r\n * @type {Constructor<{}>}\r\n * @private\r\n */\r\n this._ctor = null;\r\n}\r\n\r\nObject.defineProperties(Type.prototype, {\r\n\r\n /**\r\n * Message fields by id.\r\n * @name Type#fieldsById\r\n * @type {Object.}\r\n * @readonly\r\n */\r\n fieldsById: {\r\n get: function() {\r\n\r\n /* istanbul ignore if */\r\n if (this._fieldsById)\r\n return this._fieldsById;\r\n\r\n this._fieldsById = {};\r\n for (var names = Object.keys(this.fields), i = 0; i < names.length; ++i) {\r\n var field = this.fields[names[i]],\r\n id = field.id;\r\n\r\n /* istanbul ignore if */\r\n if (this._fieldsById[id])\r\n throw Error(\"duplicate id \" + id + \" in \" + this);\r\n\r\n this._fieldsById[id] = field;\r\n }\r\n return this._fieldsById;\r\n }\r\n },\r\n\r\n /**\r\n * Fields of this message as an array for iteration.\r\n * @name Type#fieldsArray\r\n * @type {Field[]}\r\n * @readonly\r\n */\r\n fieldsArray: {\r\n get: function() {\r\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\r\n }\r\n },\r\n\r\n /**\r\n * Oneofs of this message as an array for iteration.\r\n * @name Type#oneofsArray\r\n * @type {OneOf[]}\r\n * @readonly\r\n */\r\n oneofsArray: {\r\n get: function() {\r\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\r\n }\r\n },\r\n\r\n /**\r\n * The registered constructor, if any registered, otherwise a generic constructor.\r\n * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor.\r\n * @name Type#ctor\r\n * @type {Constructor<{}>}\r\n */\r\n ctor: {\r\n get: function() {\r\n return this._ctor || (this.ctor = Type.generateConstructor(this)());\r\n },\r\n set: function(ctor) {\r\n\r\n // Ensure proper prototype\r\n var prototype = ctor.prototype;\r\n if (!(prototype instanceof Message)) {\r\n (ctor.prototype = new Message()).constructor = ctor;\r\n util.merge(ctor.prototype, prototype);\r\n }\r\n\r\n // Classes and messages reference their reflected type\r\n ctor.$type = ctor.prototype.$type = this;\r\n\r\n // Mix in static methods\r\n util.merge(ctor, Message, true);\r\n\r\n this._ctor = ctor;\r\n\r\n // Messages have non-enumerable default values on their prototype\r\n var i = 0;\r\n for (; i < /* initializes */ this.fieldsArray.length; ++i)\r\n this._fieldsArray[i].resolve(); // ensures a proper value\r\n\r\n // Messages have non-enumerable getters and setters for each virtual oneof field\r\n var ctorProperties = {};\r\n for (i = 0; i < /* initializes */ this.oneofsArray.length; ++i)\r\n ctorProperties[this._oneofsArray[i].resolve().name] = {\r\n get: util.oneOfGetter(this._oneofsArray[i].oneof),\r\n set: util.oneOfSetter(this._oneofsArray[i].oneof)\r\n };\r\n if (i)\r\n Object.defineProperties(ctor.prototype, ctorProperties);\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Generates a constructor function for the specified type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nType.generateConstructor = function generateConstructor(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var gen = util.codegen([\"p\"], mtype.name);\r\n // explicitly initialize mutable object/array fields so that these aren't just inherited from the prototype\r\n for (var i = 0, field; i < mtype.fieldsArray.length; ++i)\r\n if ((field = mtype._fieldsArray[i]).map) gen\r\n (\"this%s={}\", util.safeProp(field.name));\r\n else if (field.repeated) gen\r\n (\"this%s=[]\", util.safeProp(field.name));\r\n return gen\r\n (\"if(p)for(var ks=Object.keys(p),i=0;i} [oneofs] Oneof descriptors\r\n * @property {Object.} fields Field descriptors\r\n * @property {number[][]} [extensions] Extension ranges\r\n * @property {number[][]} [reserved] Reserved ranges\r\n * @property {boolean} [group=false] Whether a legacy group or not\r\n */\r\n\r\n/**\r\n * Creates a message type from a message type descriptor.\r\n * @param {string} name Message name\r\n * @param {IType} json Message type descriptor\r\n * @returns {Type} Created message type\r\n */\r\nType.fromJSON = function fromJSON(name, json) {\r\n var type = new Type(name, json.options);\r\n type.extensions = json.extensions;\r\n type.reserved = json.reserved;\r\n var names = Object.keys(json.fields),\r\n i = 0;\r\n for (; i < names.length; ++i)\r\n type.add(\r\n ( typeof json.fields[names[i]].keyType !== \"undefined\"\r\n ? MapField.fromJSON\r\n : Field.fromJSON )(names[i], json.fields[names[i]])\r\n );\r\n if (json.oneofs)\r\n for (names = Object.keys(json.oneofs), i = 0; i < names.length; ++i)\r\n type.add(OneOf.fromJSON(names[i], json.oneofs[names[i]]));\r\n if (json.nested)\r\n for (names = Object.keys(json.nested), i = 0; i < names.length; ++i) {\r\n var nested = json.nested[names[i]];\r\n type.add( // most to least likely\r\n ( nested.id !== undefined\r\n ? Field.fromJSON\r\n : nested.fields !== undefined\r\n ? Type.fromJSON\r\n : nested.values !== undefined\r\n ? Enum.fromJSON\r\n : nested.methods !== undefined\r\n ? Service.fromJSON\r\n : Namespace.fromJSON )(names[i], nested)\r\n );\r\n }\r\n if (json.extensions && json.extensions.length)\r\n type.extensions = json.extensions;\r\n if (json.reserved && json.reserved.length)\r\n type.reserved = json.reserved;\r\n if (json.group)\r\n type.group = true;\r\n if (json.comment)\r\n type.comment = json.comment;\r\n return type;\r\n};\r\n\r\n/**\r\n * Converts this message type to a message type descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IType} Message type descriptor\r\n */\r\nType.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , inherited && inherited.options || undefined,\r\n \"oneofs\" , Namespace.arrayToJSON(this.oneofsArray, toJSONOptions),\r\n \"fields\" , Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; }), toJSONOptions) || {},\r\n \"extensions\" , this.extensions && this.extensions.length ? this.extensions : undefined,\r\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\r\n \"group\" , this.group || undefined,\r\n \"nested\" , inherited && inherited.nested || undefined,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nType.prototype.resolveAll = function resolveAll() {\r\n var fields = this.fieldsArray, i = 0;\r\n while (i < fields.length)\r\n fields[i++].resolve();\r\n var oneofs = this.oneofsArray; i = 0;\r\n while (i < oneofs.length)\r\n oneofs[i++].resolve();\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nType.prototype.get = function get(name) {\r\n return this.fields[name]\r\n || this.oneofs && this.oneofs[name]\r\n || this.nested && this.nested[name]\r\n || null;\r\n};\r\n\r\n/**\r\n * Adds a nested object to this type.\r\n * @param {ReflectionObject} object Nested object to add\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\r\n */\r\nType.prototype.add = function add(object) {\r\n\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n\r\n if (object instanceof Field && object.extend === undefined) {\r\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\r\n // The root object takes care of adding distinct sister-fields to the respective extended\r\n // type instead.\r\n\r\n // avoids calling the getter if not absolutely necessary because it's called quite frequently\r\n if (this._fieldsById ? /* istanbul ignore next */ this._fieldsById[object.id] : this.fieldsById[object.id])\r\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\r\n if (this.isReservedId(object.id))\r\n throw Error(\"id \" + object.id + \" is reserved in \" + this);\r\n if (this.isReservedName(object.name))\r\n throw Error(\"name '\" + object.name + \"' is reserved in \" + this);\r\n\r\n if (object.parent)\r\n object.parent.remove(object);\r\n this.fields[object.name] = object;\r\n object.message = this;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n if (!this.oneofs)\r\n this.oneofs = {};\r\n this.oneofs[object.name] = object;\r\n object.onAdd(this);\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * Removes a nested object from this type.\r\n * @param {ReflectionObject} object Nested object to remove\r\n * @returns {Type} `this`\r\n * @throws {TypeError} If arguments are invalid\r\n * @throws {Error} If `object` is not a member of this type\r\n */\r\nType.prototype.remove = function remove(object) {\r\n if (object instanceof Field && object.extend === undefined) {\r\n // See Type#add for the reason why extension fields are excluded here.\r\n\r\n /* istanbul ignore if */\r\n if (!this.fields || this.fields[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.fields[object.name];\r\n object.parent = null;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n }\r\n if (object instanceof OneOf) {\r\n\r\n /* istanbul ignore if */\r\n if (!this.oneofs || this.oneofs[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.oneofs[object.name];\r\n object.parent = null;\r\n object.onRemove(this);\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Tests if the specified id is reserved.\r\n * @param {number} id Id to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nType.prototype.isReservedId = function isReservedId(id) {\r\n return Namespace.isReservedId(this.reserved, id);\r\n};\r\n\r\n/**\r\n * Tests if the specified name is reserved.\r\n * @param {string} name Name to test\r\n * @returns {boolean} `true` if reserved, otherwise `false`\r\n */\r\nType.prototype.isReservedName = function isReservedName(name) {\r\n return Namespace.isReservedName(this.reserved, name);\r\n};\r\n\r\n/**\r\n * Creates a new message of this type using the specified properties.\r\n * @param {Object.} [properties] Properties to set\r\n * @returns {Message<{}>} Message instance\r\n */\r\nType.prototype.create = function create(properties) {\r\n return new this.ctor(properties);\r\n};\r\n\r\n/**\r\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\r\n * @returns {Type} `this`\r\n */\r\nType.prototype.setup = function setup() {\r\n // Sets up everything at once so that the prototype chain does not have to be re-evaluated\r\n // multiple times (V8, soft-deopt prototype-check).\r\n\r\n var fullName = this.fullName,\r\n types = [];\r\n for (var i = 0; i < /* initializes */ this.fieldsArray.length; ++i)\r\n types.push(this._fieldsArray[i].resolve().resolvedType);\r\n\r\n // Replace setup methods with type-specific generated functions\r\n this.encode = encoder(this)({\r\n Writer : Writer,\r\n types : types,\r\n util : util\r\n });\r\n this.decode = decoder(this)({\r\n Reader : Reader,\r\n types : types,\r\n util : util\r\n });\r\n this.verify = verifier(this)({\r\n types : types,\r\n util : util\r\n });\r\n this.fromObject = converter.fromObject(this)({\r\n types : types,\r\n util : util\r\n });\r\n this.toObject = converter.toObject(this)({\r\n types : types,\r\n util : util\r\n });\r\n\r\n // Inject custom wrappers for common types\r\n var wrapper = wrappers[fullName];\r\n if (wrapper) {\r\n var originalThis = Object.create(this);\r\n // if (wrapper.fromObject) {\r\n originalThis.fromObject = this.fromObject;\r\n this.fromObject = wrapper.fromObject.bind(originalThis);\r\n // }\r\n // if (wrapper.toObject) {\r\n originalThis.toObject = this.toObject;\r\n this.toObject = wrapper.toObject.bind(originalThis);\r\n // }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages.\r\n * @param {Message<{}>|Object.} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nType.prototype.encode = function encode_setup(message, writer) {\r\n return this.setup().encode(message, writer); // overrides this method\r\n};\r\n\r\n/**\r\n * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages.\r\n * @param {Message<{}>|Object.} message Message instance or plain object\r\n * @param {Writer} [writer] Writer to encode to\r\n * @returns {Writer} writer\r\n */\r\nType.prototype.encodeDelimited = function encodeDelimited(message, writer) {\r\n return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim();\r\n};\r\n\r\n/**\r\n * Decodes a message of this type.\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\r\n * @param {number} [length] Length of the message, if known beforehand\r\n * @returns {Message<{}>} Decoded message\r\n * @throws {Error} If the payload is not a reader or valid buffer\r\n * @throws {util.ProtocolError<{}>} If required fields are missing\r\n */\r\nType.prototype.decode = function decode_setup(reader, length) {\r\n return this.setup().decode(reader, length); // overrides this method\r\n};\r\n\r\n/**\r\n * Decodes a message of this type preceeded by its byte length as a varint.\r\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\r\n * @returns {Message<{}>} Decoded message\r\n * @throws {Error} If the payload is not a reader or valid buffer\r\n * @throws {util.ProtocolError} If required fields are missing\r\n */\r\nType.prototype.decodeDelimited = function decodeDelimited(reader) {\r\n if (!(reader instanceof Reader))\r\n reader = Reader.create(reader);\r\n return this.decode(reader, reader.uint32());\r\n};\r\n\r\n/**\r\n * Verifies that field values are valid and that required fields are present.\r\n * @param {Object.} message Plain object to verify\r\n * @returns {null|string} `null` if valid, otherwise the reason why it is not\r\n */\r\nType.prototype.verify = function verify_setup(message) {\r\n return this.setup().verify(message); // overrides this method\r\n};\r\n\r\n/**\r\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\r\n * @param {Object.} object Plain object to convert\r\n * @returns {Message<{}>} Message instance\r\n */\r\nType.prototype.fromObject = function fromObject(object) {\r\n return this.setup().fromObject(object);\r\n};\r\n\r\n/**\r\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\r\n * @interface IConversionOptions\r\n * @property {Function} [longs] Long conversion type.\r\n * Valid values are `String` and `Number` (the global types).\r\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\r\n * @property {Function} [enums] Enum value conversion type.\r\n * Only valid value is `String` (the global type).\r\n * Defaults to copy the present value, which is the numeric id.\r\n * @property {Function} [bytes] Bytes value conversion type.\r\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\r\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\r\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\r\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\r\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\r\n * @property {boolean} [oneofs=false] Includes virtual oneof properties set to the present field's name, if any\r\n * @property {boolean} [json=false] Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings\r\n */\r\n\r\n/**\r\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\r\n * @param {Message<{}>} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n */\r\nType.prototype.toObject = function toObject(message, options) {\r\n return this.setup().toObject(message, options);\r\n};\r\n\r\n/**\r\n * Decorator function as returned by {@link Type.d} (TypeScript).\r\n * @typedef TypeDecorator\r\n * @type {function}\r\n * @param {Constructor} target Target constructor\r\n * @returns {undefined}\r\n * @template T extends Message\r\n */\r\n\r\n/**\r\n * Type decorator (TypeScript).\r\n * @param {string} [typeName] Type name, defaults to the constructor's name\r\n * @returns {TypeDecorator} Decorator function\r\n * @template T extends Message\r\n */\r\nType.d = function decorateType(typeName) {\r\n return function typeDecorator(target) {\r\n util.decorateType(target, typeName);\r\n };\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/type.js\n// module id = 22\n// module chunks = 0","\"use strict\";\r\nmodule.exports = MapField;\r\n\r\n// extends Field\r\nvar Field = require(\"./field\");\r\n((MapField.prototype = Object.create(Field.prototype)).constructor = MapField).className = \"MapField\";\r\n\r\nvar types = require(\"./types\"),\r\n util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new map field instance.\r\n * @classdesc Reflected map field.\r\n * @extends FieldBase\r\n * @constructor\r\n * @param {string} name Unique name within its namespace\r\n * @param {number} id Unique id within its namespace\r\n * @param {string} keyType Key type\r\n * @param {string} type Value type\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] Comment associated with this field\r\n */\r\nfunction MapField(name, id, keyType, type, options, comment) {\r\n Field.call(this, name, id, type, undefined, undefined, options, comment);\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(keyType))\r\n throw TypeError(\"keyType must be a string\");\r\n\r\n /**\r\n * Key type.\r\n * @type {string}\r\n */\r\n this.keyType = keyType; // toJSON, marker\r\n\r\n /**\r\n * Resolved key type if not a basic type.\r\n * @type {ReflectionObject|null}\r\n */\r\n this.resolvedKeyType = null;\r\n\r\n // Overrides Field#map\r\n this.map = true;\r\n}\r\n\r\n/**\r\n * Map field descriptor.\r\n * @interface IMapField\r\n * @extends {IField}\r\n * @property {string} keyType Key type\r\n */\r\n\r\n/**\r\n * Extension map field descriptor.\r\n * @interface IExtensionMapField\r\n * @extends IMapField\r\n * @property {string} extend Extended type\r\n */\r\n\r\n/**\r\n * Constructs a map field from a map field descriptor.\r\n * @param {string} name Field name\r\n * @param {IMapField} json Map field descriptor\r\n * @returns {MapField} Created map field\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMapField.fromJSON = function fromJSON(name, json) {\r\n return new MapField(name, json.id, json.keyType, json.type, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this map field to a map field descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IMapField} Map field descriptor\r\n */\r\nMapField.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"keyType\" , this.keyType,\r\n \"type\" , this.type,\r\n \"id\" , this.id,\r\n \"extend\" , this.extend,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMapField.prototype.resolve = function resolve() {\r\n if (this.resolved)\r\n return this;\r\n\r\n // Besides a value type, map fields have a key type that may be \"any scalar type except for floating point types and bytes\"\r\n if (types.mapKey[this.keyType] === undefined)\r\n throw Error(\"invalid key type: \" + this.keyType);\r\n\r\n return Field.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * Map field decorator (TypeScript).\r\n * @name MapField.d\r\n * @function\r\n * @param {number} fieldId Field id\r\n * @param {\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"} fieldKeyType Field key type\r\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"|\"bytes\"|Object|Constructor<{}>} fieldValueType Field value type\r\n * @returns {FieldDecorator} Decorator function\r\n * @template T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> }\r\n */\r\nMapField.d = function decorateMapField(fieldId, fieldKeyType, fieldValueType) {\r\n\r\n // submessage value: decorate the submessage and use its name as the type\r\n if (typeof fieldValueType === \"function\")\r\n fieldValueType = util.decorateType(fieldValueType).name;\r\n\r\n // enum reference value: create a reflected copy of the enum and keep reuseing it\r\n else if (fieldValueType && typeof fieldValueType === \"object\")\r\n fieldValueType = util.decorateEnum(fieldValueType).name;\r\n\r\n return function mapFieldDecorator(prototype, fieldName) {\r\n util.decorateType(prototype.constructor)\r\n .add(new MapField(fieldName, fieldId, fieldKeyType, fieldValueType));\r\n };\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/mapfield.js\n// module id = 23\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Service;\r\n\r\n// extends Namespace\r\nvar Namespace = require(\"./namespace\");\r\n((Service.prototype = Object.create(Namespace.prototype)).constructor = Service).className = \"Service\";\r\n\r\nvar Method = require(\"./method\"),\r\n util = require(\"./util\"),\r\n rpc = require(\"./rpc\");\r\n\r\n/**\r\n * Constructs a new service instance.\r\n * @classdesc Reflected service.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {string} name Service name\r\n * @param {Object.} [options] Service options\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nfunction Service(name, options) {\r\n Namespace.call(this, name, options);\r\n\r\n /**\r\n * Service methods.\r\n * @type {Object.}\r\n */\r\n this.methods = {}; // toJSON, marker\r\n\r\n /**\r\n * Cached methods as an array.\r\n * @type {Method[]|null}\r\n * @private\r\n */\r\n this._methodsArray = null;\r\n}\r\n\r\n/**\r\n * Service descriptor.\r\n * @interface IService\r\n * @extends INamespace\r\n * @property {Object.} methods Method descriptors\r\n */\r\n\r\n/**\r\n * Constructs a service from a service descriptor.\r\n * @param {string} name Service name\r\n * @param {IService} json Service descriptor\r\n * @returns {Service} Created service\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nService.fromJSON = function fromJSON(name, json) {\r\n var service = new Service(name, json.options);\r\n /* istanbul ignore else */\r\n if (json.methods)\r\n for (var names = Object.keys(json.methods), i = 0; i < names.length; ++i)\r\n service.add(Method.fromJSON(names[i], json.methods[names[i]]));\r\n if (json.nested)\r\n service.addJSON(json.nested);\r\n service.comment = json.comment;\r\n return service;\r\n};\r\n\r\n/**\r\n * Converts this service to a service descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IService} Service descriptor\r\n */\r\nService.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"options\" , inherited && inherited.options || undefined,\r\n \"methods\" , Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ {},\r\n \"nested\" , inherited && inherited.nested || undefined,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * Methods of this service as an array for iteration.\r\n * @name Service#methodsArray\r\n * @type {Method[]}\r\n * @readonly\r\n */\r\nObject.defineProperty(Service.prototype, \"methodsArray\", {\r\n get: function() {\r\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\r\n }\r\n});\r\n\r\nfunction clearCache(service) {\r\n service._methodsArray = null;\r\n return service;\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.get = function get(name) {\r\n return this.methods[name]\r\n || Namespace.prototype.get.call(this, name);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.resolveAll = function resolveAll() {\r\n var methods = this.methodsArray;\r\n for (var i = 0; i < methods.length; ++i)\r\n methods[i].resolve();\r\n return Namespace.prototype.resolve.call(this);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.add = function add(object) {\r\n\r\n /* istanbul ignore if */\r\n if (this.get(object.name))\r\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\r\n\r\n if (object instanceof Method) {\r\n this.methods[object.name] = object;\r\n object.parent = this;\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.add.call(this, object);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nService.prototype.remove = function remove(object) {\r\n if (object instanceof Method) {\r\n\r\n /* istanbul ignore if */\r\n if (this.methods[object.name] !== object)\r\n throw Error(object + \" is not a member of \" + this);\r\n\r\n delete this.methods[object.name];\r\n object.parent = null;\r\n return clearCache(this);\r\n }\r\n return Namespace.prototype.remove.call(this, object);\r\n};\r\n\r\n/**\r\n * Creates a runtime service using the specified rpc implementation.\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n * @returns {rpc.Service} RPC service. Useful where requests and/or responses are streamed.\r\n */\r\nService.prototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\r\n var rpcService = new rpc.Service(rpcImpl, requestDelimited, responseDelimited);\r\n for (var i = 0, method; i < /* initializes */ this.methodsArray.length; ++i) {\r\n var methodName = util.lcFirst((method = this._methodsArray[i]).resolve().name).replace(/[^$\\w_]/g, \"\");\r\n rpcService[methodName] = util.codegen([\"r\",\"c\"], util.isReserved(methodName) ? methodName + \"_\" : methodName)(\"return this.rpcCall(m,q,s,r,c)\")({\r\n m: method,\r\n q: method.resolvedRequestType.ctor,\r\n s: method.resolvedResponseType.ctor\r\n });\r\n }\r\n return rpcService;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/service.js\n// module id = 24\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Method;\r\n\r\n// extends ReflectionObject\r\nvar ReflectionObject = require(\"./object\");\r\n((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = \"Method\";\r\n\r\nvar util = require(\"./util\");\r\n\r\n/**\r\n * Constructs a new service method instance.\r\n * @classdesc Reflected service method.\r\n * @extends ReflectionObject\r\n * @constructor\r\n * @param {string} name Method name\r\n * @param {string|undefined} type Method type, usually `\"rpc\"`\r\n * @param {string} requestType Request message type\r\n * @param {string} responseType Response message type\r\n * @param {boolean|Object.} [requestStream] Whether the request is streamed\r\n * @param {boolean|Object.} [responseStream] Whether the response is streamed\r\n * @param {Object.} [options] Declared options\r\n * @param {string} [comment] The comment for this method\r\n */\r\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options, comment) {\r\n\r\n /* istanbul ignore next */\r\n if (util.isObject(requestStream)) {\r\n options = requestStream;\r\n requestStream = responseStream = undefined;\r\n } else if (util.isObject(responseStream)) {\r\n options = responseStream;\r\n responseStream = undefined;\r\n }\r\n\r\n /* istanbul ignore if */\r\n if (!(type === undefined || util.isString(type)))\r\n throw TypeError(\"type must be a string\");\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(requestType))\r\n throw TypeError(\"requestType must be a string\");\r\n\r\n /* istanbul ignore if */\r\n if (!util.isString(responseType))\r\n throw TypeError(\"responseType must be a string\");\r\n\r\n ReflectionObject.call(this, name, options);\r\n\r\n /**\r\n * Method type.\r\n * @type {string}\r\n */\r\n this.type = type || \"rpc\"; // toJSON\r\n\r\n /**\r\n * Request type.\r\n * @type {string}\r\n */\r\n this.requestType = requestType; // toJSON, marker\r\n\r\n /**\r\n * Whether requests are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.requestStream = requestStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Response type.\r\n * @type {string}\r\n */\r\n this.responseType = responseType; // toJSON\r\n\r\n /**\r\n * Whether responses are streamed or not.\r\n * @type {boolean|undefined}\r\n */\r\n this.responseStream = responseStream ? true : undefined; // toJSON\r\n\r\n /**\r\n * Resolved request type.\r\n * @type {Type|null}\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response type.\r\n * @type {Type|null}\r\n */\r\n this.resolvedResponseType = null;\r\n\r\n /**\r\n * Comment for this method\r\n * @type {string|null}\r\n */\r\n this.comment = comment;\r\n}\r\n\r\n/**\r\n * Method descriptor.\r\n * @interface IMethod\r\n * @property {string} [type=\"rpc\"] Method type\r\n * @property {string} requestType Request type\r\n * @property {string} responseType Response type\r\n * @property {boolean} [requestStream=false] Whether requests are streamed\r\n * @property {boolean} [responseStream=false] Whether responses are streamed\r\n * @property {Object.} [options] Method options\r\n */\r\n\r\n/**\r\n * Constructs a method from a method descriptor.\r\n * @param {string} name Method name\r\n * @param {IMethod} json Method descriptor\r\n * @returns {Method} Created method\r\n * @throws {TypeError} If arguments are invalid\r\n */\r\nMethod.fromJSON = function fromJSON(name, json) {\r\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment);\r\n};\r\n\r\n/**\r\n * Converts this method to a method descriptor.\r\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\r\n * @returns {IMethod} Method descriptor\r\n */\r\nMethod.prototype.toJSON = function toJSON(toJSONOptions) {\r\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\r\n return util.toObject([\r\n \"type\" , this.type !== \"rpc\" && /* istanbul ignore next */ this.type || undefined,\r\n \"requestType\" , this.requestType,\r\n \"requestStream\" , this.requestStream,\r\n \"responseType\" , this.responseType,\r\n \"responseStream\" , this.responseStream,\r\n \"options\" , this.options,\r\n \"comment\" , keepComments ? this.comment : undefined\r\n ]);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nMethod.prototype.resolve = function resolve() {\r\n\r\n /* istanbul ignore if */\r\n if (this.resolved)\r\n return this;\r\n\r\n this.resolvedRequestType = this.parent.lookupType(this.requestType);\r\n this.resolvedResponseType = this.parent.lookupType(this.responseType);\r\n\r\n return ReflectionObject.prototype.resolve.call(this);\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/method.js\n// module id = 25\n// module chunks = 0","\"use strict\";\r\nmodule.exports = decoder;\r\n\r\nvar Enum = require(\"./enum\"),\r\n types = require(\"./types\"),\r\n util = require(\"./util\");\r\n\r\nfunction missing(field) {\r\n return \"missing required '\" + field.name + \"'\";\r\n}\r\n\r\n/**\r\n * Generates a decoder specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nfunction decoder(mtype) {\r\n /* eslint-disable no-unexpected-multiline */\r\n var gen = util.codegen([\"r\", \"l\"], mtype.name + \"$decode\")\r\n (\"if(!(r instanceof Reader))\")\r\n (\"r=Reader.create(r)\")\r\n (\"var c=l===undefined?r.len:r.pos+l,m=new this.ctor\" + (mtype.fieldsArray.filter(function(field) { return field.map; }).length ? \",k\" : \"\"))\r\n (\"while(r.pos>>3){\");\r\n\r\n var i = 0;\r\n for (; i < /* initializes */ mtype.fieldsArray.length; ++i) {\r\n var field = mtype._fieldsArray[i].resolve(),\r\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\r\n ref = \"m\" + util.safeProp(field.name); gen\r\n (\"case %i:\", field.id);\r\n\r\n // Map fields\r\n if (field.map) { gen\r\n (\"r.skip().pos++\") // assumes id 1 + key wireType\r\n (\"if(%s===util.emptyObject)\", ref)\r\n (\"%s={}\", ref)\r\n (\"k=r.%s()\", field.keyType)\r\n (\"r.pos++\"); // assumes id 2 + value wireType\r\n if (types.long[field.keyType] !== undefined) {\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=types[%i].decode(r,r.uint32())\", ref, i); // can't be groups\r\n else gen\r\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=r.%s()\", ref, type);\r\n } else {\r\n if (types.basic[type] === undefined) gen\r\n (\"%s[k]=types[%i].decode(r,r.uint32())\", ref, i); // can't be groups\r\n else gen\r\n (\"%s[k]=r.%s()\", ref, type);\r\n }\r\n\r\n // Repeated fields\r\n } else if (field.repeated) { gen\r\n\r\n (\"if(!(%s&&%s.length))\", ref, ref)\r\n (\"%s=[]\", ref);\r\n\r\n // Packable (always check for forward and backward compatiblity)\r\n if (types.packed[type] !== undefined) gen\r\n (\"if((t&7)===2){\")\r\n (\"var c2=r.uint32()+r.pos\")\r\n (\"while(r.pos>>0\", prop, prop);\r\n break;\r\n case \"int32\":\r\n case \"sint32\":\r\n case \"sfixed32\": gen\r\n (\"m%s=d%s|0\", prop, prop);\r\n break;\r\n case \"uint64\":\r\n isUnsigned = true;\r\n // eslint-disable-line no-fallthrough\r\n case \"int64\":\r\n case \"sint64\":\r\n case \"fixed64\":\r\n case \"sfixed64\": gen\r\n (\"if(util.Long)\")\r\n (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\r\n (\"else if(typeof d%s===\\\"string\\\")\", prop)\r\n (\"m%s=parseInt(d%s,10)\", prop, prop)\r\n (\"else if(typeof d%s===\\\"number\\\")\", prop)\r\n (\"m%s=d%s\", prop, prop)\r\n (\"else if(typeof d%s===\\\"object\\\")\", prop)\r\n (\"m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\r\n break;\r\n case \"bytes\": gen\r\n (\"if(typeof d%s===\\\"string\\\")\", prop)\r\n (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop)\r\n (\"else if(d%s.length)\", prop)\r\n (\"m%s=d%s\", prop, prop);\r\n break;\r\n case \"string\": gen\r\n (\"m%s=String(d%s)\", prop, prop);\r\n break;\r\n case \"bool\": gen\r\n (\"m%s=Boolean(d%s)\", prop, prop);\r\n break;\r\n /* default: gen\r\n (\"m%s=d%s\", prop, prop);\r\n break; */\r\n }\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a plain object to runtime message converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.fromObject = function fromObject(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var fields = mtype.fieldsArray;\r\n var gen = util.codegen([\"d\"], mtype.name + \"$fromObject\")\r\n (\"if(d instanceof this.ctor)\")\r\n (\"return d\");\r\n if (!fields.length) return gen\r\n (\"return new this.ctor\");\r\n gen\r\n (\"var m=new this.ctor\");\r\n for (var i = 0; i < fields.length; ++i) {\r\n var field = fields[i].resolve(),\r\n prop = util.safeProp(field.name);\r\n\r\n // Map fields\r\n if (field.map) { gen\r\n (\"if(d%s){\", prop)\r\n (\"if(typeof d%s!==\\\"object\\\")\", prop)\r\n (\"throw TypeError(%j)\", field.fullName + \": object expected\")\r\n (\"m%s={}\", prop)\r\n (\"for(var ks=Object.keys(d%s),i=0;i>>0,m%s.high>>>0).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\r\n break;\r\n case \"bytes\": gen\r\n (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\r\n break;\r\n default: gen\r\n (\"d%s=m%s\", prop, prop);\r\n break;\r\n }\r\n }\r\n return gen;\r\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n}\r\n\r\n/**\r\n * Generates a runtime message to plain object converter specific to the specified message type.\r\n * @param {Type} mtype Message type\r\n * @returns {Codegen} Codegen instance\r\n */\r\nconverter.toObject = function toObject(mtype) {\r\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\r\n var fields = mtype.fieldsArray.slice().sort(util.compareFieldsById);\r\n if (!fields.length)\r\n return util.codegen()(\"return {}\");\r\n var gen = util.codegen([\"m\", \"o\"], mtype.name + \"$toObject\")\r\n (\"if(!o)\")\r\n (\"o={}\")\r\n (\"var d={}\");\r\n\r\n var repeatedFields = [],\r\n mapFields = [],\r\n normalFields = [],\r\n i = 0;\r\n for (; i < fields.length; ++i)\r\n if (!fields[i].partOf)\r\n ( fields[i].resolve().repeated ? repeatedFields\r\n : fields[i].map ? mapFields\r\n : normalFields).push(fields[i]);\r\n\r\n if (repeatedFields.length) { gen\r\n (\"if(o.arrays||o.defaults){\");\r\n for (i = 0; i < repeatedFields.length; ++i) gen\r\n (\"d%s=[]\", util.safeProp(repeatedFields[i].name));\r\n gen\r\n (\"}\");\r\n }\r\n\r\n if (mapFields.length) { gen\r\n (\"if(o.objects||o.defaults){\");\r\n for (i = 0; i < mapFields.length; ++i) gen\r\n (\"d%s={}\", util.safeProp(mapFields[i].name));\r\n gen\r\n (\"}\");\r\n }\r\n\r\n if (normalFields.length) { gen\r\n (\"if(o.defaults){\");\r\n for (i = 0; i < normalFields.length; ++i) {\r\n var field = normalFields[i],\r\n prop = util.safeProp(field.name);\r\n if (field.resolvedType instanceof Enum) gen\r\n (\"d%s=o.enums===String?%j:%j\", prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\r\n else if (field.long) gen\r\n (\"if(util.Long){\")\r\n (\"var n=new util.Long(%i,%i,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\r\n (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", prop)\r\n (\"}else\")\r\n (\"d%s=o.longs===String?%j:%i\", prop, field.typeDefault.toString(), field.typeDefault.toNumber());\r\n else if (field.bytes) gen\r\n (\"d%s=o.bytes===String?%j:%s\", prop, String.fromCharCode.apply(String, field.typeDefault), \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\");\r\n else gen\r\n (\"d%s=%j\", prop, field.typeDefault); // also messages (=null)\r\n } gen\r\n (\"}\");\r\n }\r\n var hasKs2 = false;\r\n for (i = 0; i < fields.length; ++i) {\r\n var field = fields[i],\r\n index = mtype._fieldsArray.indexOf(field),\r\n prop = util.safeProp(field.name);\r\n if (field.map) {\r\n if (!hasKs2) { hasKs2 = true; gen\r\n (\"var ks2\");\r\n } gen\r\n (\"if(m%s&&(ks2=Object.keys(m%s)).length){\", prop, prop)\r\n (\"d%s={}\", prop)\r\n (\"for(var j=0;j}\r\n * @const\r\n */\r\nvar wrappers = exports;\r\n\r\nvar Message = require(\"./message\");\r\n\r\n/**\r\n * From object converter part of an {@link IWrapper}.\r\n * @typedef WrapperFromObjectConverter\r\n * @type {function}\r\n * @param {Object.} object Plain object\r\n * @returns {Message<{}>} Message instance\r\n * @this Type\r\n */\r\n\r\n/**\r\n * To object converter part of an {@link IWrapper}.\r\n * @typedef WrapperToObjectConverter\r\n * @type {function}\r\n * @param {Message<{}>} message Message instance\r\n * @param {IConversionOptions} [options] Conversion options\r\n * @returns {Object.} Plain object\r\n * @this Type\r\n */\r\n\r\n/**\r\n * Common type wrapper part of {@link wrappers}.\r\n * @interface IWrapper\r\n * @property {WrapperFromObjectConverter} [fromObject] From object converter\r\n * @property {WrapperToObjectConverter} [toObject] To object converter\r\n */\r\n\r\n// Custom wrapper for Any\r\nwrappers[\".google.protobuf.Any\"] = {\r\n\r\n fromObject: function(object) {\r\n\r\n // unwrap value type if mapped\r\n if (object && object[\"@type\"]) {\r\n var type = this.lookup(object[\"@type\"]);\r\n /* istanbul ignore else */\r\n if (type) {\r\n // type_url does not accept leading \".\"\r\n var type_url = object[\"@type\"].charAt(0) === \".\" ?\r\n object[\"@type\"].substr(1) : object[\"@type\"];\r\n // type_url prefix is optional, but path seperator is required\r\n return this.create({\r\n type_url: \"/\" + type_url,\r\n value: type.encode(type.fromObject(object)).finish()\r\n });\r\n }\r\n }\r\n\r\n return this.fromObject(object);\r\n },\r\n\r\n toObject: function(message, options) {\r\n\r\n // decode value if requested and unmapped\r\n if (options && options.json && message.type_url && message.value) {\r\n // Only use fully qualified type name after the last '/'\r\n var name = message.type_url.substring(message.type_url.lastIndexOf(\"/\") + 1);\r\n var type = this.lookup(name);\r\n /* istanbul ignore else */\r\n if (type)\r\n message = type.decode(message.value);\r\n }\r\n\r\n // wrap value if unmapped\r\n if (!(message instanceof this.ctor) && message instanceof Message) {\r\n var object = message.$type.toObject(message, options);\r\n object[\"@type\"] = message.$type.fullName;\r\n return object;\r\n }\r\n\r\n return this.toObject(message, options);\r\n }\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/wrappers.js\n// module id = 29\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Root;\r\n\r\n// extends Namespace\r\nvar Namespace = require(\"./namespace\");\r\n((Root.prototype = Object.create(Namespace.prototype)).constructor = Root).className = \"Root\";\r\n\r\nvar Field = require(\"./field\"),\r\n Enum = require(\"./enum\"),\r\n OneOf = require(\"./oneof\"),\r\n util = require(\"./util\");\r\n\r\nvar Type, // cyclic\r\n parse, // might be excluded\r\n common; // \"\r\n\r\n/**\r\n * Constructs a new root namespace instance.\r\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\r\n * @extends NamespaceBase\r\n * @constructor\r\n * @param {Object.} [options] Top level options\r\n */\r\nfunction Root(options) {\r\n Namespace.call(this, \"\", options);\r\n\r\n /**\r\n * Deferred extension fields.\r\n * @type {Field[]}\r\n */\r\n this.deferred = [];\r\n\r\n /**\r\n * Resolved file names of loaded files.\r\n * @type {string[]}\r\n */\r\n this.files = [];\r\n}\r\n\r\n/**\r\n * Loads a namespace descriptor into a root namespace.\r\n * @param {INamespace} json Nameespace descriptor\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\r\n * @returns {Root} Root namespace\r\n */\r\nRoot.fromJSON = function fromJSON(json, root) {\r\n if (!root)\r\n root = new Root();\r\n if (json.options)\r\n root.setOptions(json.options);\r\n return root.addJSON(json.nested);\r\n};\r\n\r\n/**\r\n * Resolves the path of an imported file, relative to the importing origin.\r\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\r\n * @function\r\n * @param {string} origin The file name of the importing file\r\n * @param {string} target The file name being imported\r\n * @returns {string|null} Resolved path to `target` or `null` to skip the file\r\n */\r\nRoot.prototype.resolvePath = util.path.resolve;\r\n\r\n// A symbol-like function to safely signal synchronous loading\r\n/* istanbul ignore next */\r\nfunction SYNC() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} options Parse options\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nRoot.prototype.load = function load(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = undefined;\r\n }\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(load, self, filename, options);\r\n\r\n var sync = callback === SYNC; // undocumented\r\n\r\n // Finishes loading by calling the callback (exactly once)\r\n function finish(err, root) {\r\n /* istanbul ignore if */\r\n if (!callback)\r\n return;\r\n var cb = callback;\r\n callback = null;\r\n if (sync)\r\n throw err;\r\n cb(err, root);\r\n }\r\n\r\n // Processes a single file\r\n function process(filename, source) {\r\n try {\r\n if (util.isString(source) && source.charAt(0) === \"{\")\r\n source = JSON.parse(source);\r\n if (!util.isString(source))\r\n self.setOptions(source.options).addJSON(source.nested);\r\n else {\r\n parse.filename = filename;\r\n var parsed = parse(source, self, options),\r\n resolved,\r\n i = 0;\r\n if (parsed.imports)\r\n for (; i < parsed.imports.length; ++i)\r\n if (resolved = self.resolvePath(filename, parsed.imports[i]))\r\n fetch(resolved);\r\n if (parsed.weakImports)\r\n for (i = 0; i < parsed.weakImports.length; ++i)\r\n if (resolved = self.resolvePath(filename, parsed.weakImports[i]))\r\n fetch(resolved, true);\r\n }\r\n } catch (err) {\r\n finish(err);\r\n }\r\n if (!sync && !queued)\r\n finish(null, self); // only once anyway\r\n }\r\n\r\n // Fetches a single file\r\n function fetch(filename, weak) {\r\n\r\n // Strip path if this file references a bundled definition\r\n var idx = filename.lastIndexOf(\"google/protobuf/\");\r\n if (idx > -1) {\r\n var altname = filename.substring(idx);\r\n if (altname in common)\r\n filename = altname;\r\n }\r\n\r\n // Skip if already loaded / attempted\r\n if (self.files.indexOf(filename) > -1)\r\n return;\r\n self.files.push(filename);\r\n\r\n // Shortcut bundled definitions\r\n if (filename in common) {\r\n if (sync)\r\n process(filename, common[filename]);\r\n else {\r\n ++queued;\r\n setTimeout(function() {\r\n --queued;\r\n process(filename, common[filename]);\r\n });\r\n }\r\n return;\r\n }\r\n\r\n // Otherwise fetch from disk or network\r\n if (sync) {\r\n var source;\r\n try {\r\n source = util.fs.readFileSync(filename).toString(\"utf8\");\r\n } catch (err) {\r\n if (!weak)\r\n finish(err);\r\n return;\r\n }\r\n process(filename, source);\r\n } else {\r\n ++queued;\r\n util.fetch(filename, function(err, source) {\r\n --queued;\r\n /* istanbul ignore if */\r\n if (!callback)\r\n return; // terminated meanwhile\r\n if (err) {\r\n /* istanbul ignore else */\r\n if (!weak)\r\n finish(err);\r\n else if (!queued) // can't be covered reliably\r\n finish(null, self);\r\n return;\r\n }\r\n process(filename, source);\r\n });\r\n }\r\n }\r\n var queued = 0;\r\n\r\n // Assembling the root namespace doesn't require working type\r\n // references anymore, so we can load everything in parallel\r\n if (util.isString(filename))\r\n filename = [ filename ];\r\n for (var i = 0, resolved; i < filename.length; ++i)\r\n if (resolved = self.resolvePath(\"\", filename[i]))\r\n fetch(resolved);\r\n\r\n if (sync)\r\n return self;\r\n if (!queued)\r\n finish(null, self);\r\n return undefined;\r\n};\r\n// function load(filename:string, options:IParseOptions, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\r\n * @function Root#load\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\r\n * @function Root#load\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n// function load(filename:string, [options:IParseOptions]):Promise\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only).\r\n * @function Root#loadSync\r\n * @param {string|string[]} filename Names of one or multiple files to load\r\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n */\r\nRoot.prototype.loadSync = function loadSync(filename, options) {\r\n if (!util.isNode)\r\n throw Error(\"not supported\");\r\n return this.load(filename, options, SYNC);\r\n};\r\n\r\n/**\r\n * @override\r\n */\r\nRoot.prototype.resolveAll = function resolveAll() {\r\n if (this.deferred.length)\r\n throw Error(\"unresolvable extensions: \" + this.deferred.map(function(field) {\r\n return \"'extend \" + field.extend + \"' in \" + field.parent.fullName;\r\n }).join(\", \"));\r\n return Namespace.prototype.resolveAll.call(this);\r\n};\r\n\r\n// only uppercased (and thus conflict-free) children are exposed, see below\r\nvar exposeRe = /^[A-Z]/;\r\n\r\n/**\r\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\r\n * @param {Root} root Root instance\r\n * @param {Field} field Declaring extension field witin the declaring type\r\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\r\n * @inner\r\n * @ignore\r\n */\r\nfunction tryHandleExtension(root, field) {\r\n var extendedType = field.parent.lookup(field.extend);\r\n if (extendedType) {\r\n var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options);\r\n sisterField.declaringField = field;\r\n field.extensionField = sisterField;\r\n extendedType.add(sisterField);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Called when any object is added to this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object added\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRoot.prototype._handleAdd = function _handleAdd(object) {\r\n if (object instanceof Field) {\r\n\r\n if (/* an extension field (implies not part of a oneof) */ object.extend !== undefined && /* not already handled */ !object.extensionField)\r\n if (!tryHandleExtension(this, object))\r\n this.deferred.push(object);\r\n\r\n } else if (object instanceof Enum) {\r\n\r\n if (exposeRe.test(object.name))\r\n object.parent[object.name] = object.values; // expose enum values as property of its parent\r\n\r\n } else if (!(object instanceof OneOf)) /* everything else is a namespace */ {\r\n\r\n if (object instanceof Type) // Try to handle any deferred extensions\r\n for (var i = 0; i < this.deferred.length;)\r\n if (tryHandleExtension(this, this.deferred[i]))\r\n this.deferred.splice(i, 1);\r\n else\r\n ++i;\r\n for (var j = 0; j < /* initializes */ object.nestedArray.length; ++j) // recurse into the namespace\r\n this._handleAdd(object._nestedArray[j]);\r\n if (exposeRe.test(object.name))\r\n object.parent[object.name] = object; // expose namespace as property of its parent\r\n }\r\n\r\n // The above also adds uppercased (and thus conflict-free) nested types, services and enums as\r\n // properties of namespaces just like static code does. This allows using a .d.ts generated for\r\n // a static module with reflection-based solutions where the condition is met.\r\n};\r\n\r\n/**\r\n * Called when any object is removed from this root or its sub-namespaces.\r\n * @param {ReflectionObject} object Object removed\r\n * @returns {undefined}\r\n * @private\r\n */\r\nRoot.prototype._handleRemove = function _handleRemove(object) {\r\n if (object instanceof Field) {\r\n\r\n if (/* an extension field */ object.extend !== undefined) {\r\n if (/* already handled */ object.extensionField) { // remove its sister field\r\n object.extensionField.parent.remove(object.extensionField);\r\n object.extensionField = null;\r\n } else { // cancel the extension\r\n var index = this.deferred.indexOf(object);\r\n /* istanbul ignore else */\r\n if (index > -1)\r\n this.deferred.splice(index, 1);\r\n }\r\n }\r\n\r\n } else if (object instanceof Enum) {\r\n\r\n if (exposeRe.test(object.name))\r\n delete object.parent[object.name]; // unexpose enum values\r\n\r\n } else if (object instanceof Namespace) {\r\n\r\n for (var i = 0; i < /* initializes */ object.nestedArray.length; ++i) // recurse into the namespace\r\n this._handleRemove(object._nestedArray[i]);\r\n\r\n if (exposeRe.test(object.name))\r\n delete object.parent[object.name]; // unexpose namespaces\r\n\r\n }\r\n};\r\n\r\nRoot._configure = function(Type_, parse_, common_) {\r\n Type = Type_;\r\n parse = parse_;\r\n common = common_;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/root.js\n// module id = 30\n// module chunks = 0","import {CentrifugeProtobuf} from './protobuf.js';\nexport default CentrifugeProtobuf;\n\n\n\n// WEBPACK FOOTER //\n// ./src/index_protobuf.js","import {Centrifuge} from './centrifuge.js';\n\nconst protobuf = require('protobufjs/light');\nconst proto = protobuf.Root.fromJSON(require('./client.proto.json'));\n\nconst methodValues = proto.lookupEnum('MethodType').values;\n\nconst protobufMethodType = {\n CONNECT: methodValues.CONNECT,\n SUBSCRIBE: methodValues.SUBSCRIBE,\n UNSUBSCRIBE: methodValues.UNSUBSCRIBE,\n PUBLISH: methodValues.PUBLISH,\n PRESENCE: methodValues.PRESENCE,\n PRESENCE_STATS: methodValues.PRESENCE_STATS,\n HISTORY: methodValues.HISTORY,\n PING: methodValues.PING,\n RPC: methodValues.RPC,\n SEND: methodValues.SEND,\n REFRESH: methodValues.REFRESH,\n SUB_REFRESH: methodValues.SUB_REFRESH\n};\n\nconst methodSchema = {\n CONNECT: [\n proto.lookupType('proto.ConnectRequest'),\n proto.lookupType('proto.ConnectResult')\n ],\n REFRESH: [\n proto.lookupType('proto.RefreshRequest'),\n proto.lookupType('proto.RefreshResult')\n ],\n SUBSCRIBE: [\n proto.lookupType('proto.SubscribeRequest'),\n proto.lookupType('proto.SubscribeResult')\n ],\n SUB_REFRESH: [\n proto.lookupType('proto.SubRefreshRequest'),\n proto.lookupType('proto.SubRefreshResult')\n ],\n UNSUBSCRIBE: [\n proto.lookupType('proto.UnsubscribeRequest'),\n proto.lookupType('proto.UnsubscribeResult')\n ],\n PUBLISH: [\n proto.lookupType('proto.PublishRequest'),\n proto.lookupType('proto.PublishResult')\n ],\n PRESENCE: [\n proto.lookupType('proto.PresenceRequest'),\n proto.lookupType('proto.PresenceResult')\n ],\n PRESENCE_STATS: [\n proto.lookupType('proto.PresenceStatsRequest'),\n proto.lookupType('proto.PresenceStatsResult')\n ],\n HISTORY: [\n proto.lookupType('proto.HistoryRequest'),\n proto.lookupType('proto.HistoryResult')\n ],\n PING: [\n proto.lookupType('proto.PingRequest'),\n proto.lookupType('proto.PingResult')\n ],\n RPC: [\n proto.lookupType('proto.RPCRequest'),\n proto.lookupType('proto.RPCResult')\n ],\n SEND: [\n proto.lookupType('proto.SendRequest'),\n null\n ]\n};\n\nconst protobufPushType = {\n PUBLICATION: proto.lookupEnum('PushType').values.PUBLICATION,\n JOIN: proto.lookupEnum('PushType').values.JOIN,\n LEAVE: proto.lookupEnum('PushType').values.LEAVE,\n UNSUB: proto.lookupEnum('PushType').values.UNSUB,\n MESSAGE: proto.lookupEnum('PushType').values.MESSAGE\n};\n\nconst PushSchema = {\n PUBLICATION: proto.lookupType('proto.Publication'),\n JOIN: proto.lookupType('proto.Join'),\n LEAVE: proto.lookupType('proto.Leave'),\n UNSUB: proto.lookupType('proto.Unsub'),\n MESSAGE: proto.lookupType('proto.Message')\n};\n\nconst Push = proto.lookupType('proto.Push');\nconst Command = proto.lookupType('proto.Command');\nconst Reply = proto.lookupType('proto.Reply');\n\nexport class ProtobufEncoder {\n encodeCommands(commands) {\n const writer = protobuf.Writer.create();\n for (const i in commands) {\n if (commands.hasOwnProperty(i)) {\n const command = Object.assign({}, commands[i]);\n if (command.params) {\n let type;\n if (!command.method) {\n command.method = protobufMethodType.CONNECT;\n };\n switch (command.method) {\n case protobufMethodType.CONNECT:\n type = methodSchema.CONNECT[0];\n break;\n case protobufMethodType.REFRESH:\n type = methodSchema.REFRESH;\n break;\n case protobufMethodType.SUBSCRIBE:\n type = methodSchema.SUBSCRIBE[0];\n break;\n case protobufMethodType.SUB_REFRESH:\n type = methodSchema.SUB_REFRESH[0];\n break;\n case protobufMethodType.UNSUBSCRIBE:\n type = methodSchema.UNSUBSCRIBE[0];\n break;\n case protobufMethodType.PUBLISH:\n type = methodSchema.PUBLISH[0];\n break;\n case protobufMethodType.PRESENCE:\n type = methodSchema.PRESENCE[0];\n break;\n case protobufMethodType.PRESENCE_STATS:\n type = methodSchema.PRESENCE_STATS[0];\n break;\n case protobufMethodType.HISTORY:\n type = methodSchema.HISTORY[0];\n break;\n case protobufMethodType.PING:\n type = methodSchema.PING[0];\n break;\n case protobufMethodType.RPC:\n type = methodSchema.RPC[0];\n break;\n case protobufMethodType.SEND:\n type = methodSchema.SEND[0];\n break;\n }\n command.params = type.encode(command.params).finish();\n }\n Command.encodeDelimited(command, writer);\n }\n }\n return writer.finish();\n }\n}\n\nexport class ProtobufDecoder {\n decodeReplies(data) {\n const replies = [];\n const reader = protobuf.Reader.create(new Uint8Array(data));\n while (reader.pos < reader.len) {\n const reply = Reply.decodeDelimited(reader);\n replies.push(reply);\n }\n return replies;\n }\n\n decodeCommandResult(methodType, data) {\n var type;\n switch (methodType) {\n case protobufMethodType.CONNECT:\n type = methodSchema.CONNECT[1];\n break;\n case protobufMethodType.REFRESH:\n type = methodSchema.REFRESH[1];\n break;\n case protobufMethodType.SUBSCRIBE:\n type = methodSchema.SUBSCRIBE[1];\n break;\n case protobufMethodType.SUB_REFRESH:\n type = methodSchema.SUB_REFRESH[1];\n break;\n case protobufMethodType.UNSUBSCRIBE:\n type = methodSchema.UNSUBSCRIBE[1];\n break;\n case protobufMethodType.PUBLISH:\n type = methodSchema.PUBLISH[1];\n break;\n case protobufMethodType.PRESENCE:\n type = methodSchema.PRESENCE[1];\n break;\n case protobufMethodType.PRESENCE_STATS:\n type = methodSchema.PRESENCE_STATS[1];\n break;\n case protobufMethodType.HISTORY:\n type = methodSchema.HISTORY[1];\n break;\n case protobufMethodType.PING:\n type = methodSchema.PING[1];\n break;\n case protobufMethodType.RPC:\n type = methodSchema.RPC[1];\n break;\n }\n return this._decode(type, data);\n }\n\n decodePush(data) {\n return this._decode(Push, data);\n }\n\n decodePushData(pushType, data) {\n var type;\n switch (pushType) {\n case protobufPushType.PUBLICATION:\n type = PushSchema.PUBLICATION;\n break;\n case protobufPushType.MESSAGE:\n type = PushSchema.MESSAGE;\n break;\n case protobufPushType.JOIN:\n type = PushSchema.JOIN;\n break;\n case protobufPushType.LEAVE:\n type = PushSchema.LEAVE;\n break;\n case protobufPushType.UNSUB:\n type = PushSchema.UNSUB;\n break;\n }\n return this._decode(type, data);\n }\n\n _decode(type, data) {\n let res;\n try {\n res = type.decode(data);\n } catch (err) {\n return null;\n }\n return res;\n }\n}\n\nexport class CentrifugeProtobuf extends Centrifuge {\n _formatOverride(format) {\n if (format === 'protobuf') {\n this._binary = true;\n this._methodType = protobufMethodType;\n this._pushType = protobufPushType;\n this._encoder = new ProtobufEncoder();\n this._decoder = new ProtobufDecoder();\n return true;\n }\n return false;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/protobuf.js","// light library entry point.\r\n\r\n\"use strict\";\r\nmodule.exports = require(\"./src/index-light\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/light.js\n// module id = 34\n// module chunks = 0","\"use strict\";\r\nvar protobuf = module.exports = require(\"./index-minimal\");\r\n\r\nprotobuf.build = \"light\";\r\n\r\n/**\r\n * A node-style callback as used by {@link load} and {@link Root#load}.\r\n * @typedef LoadCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Root} [root] Root, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} root Root namespace, defaults to create a new one if omitted.\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @see {@link Root#load}\r\n */\r\nfunction load(filename, root, callback) {\r\n if (typeof root === \"function\") {\r\n callback = root;\r\n root = new protobuf.Root();\r\n } else if (!root)\r\n root = new protobuf.Root();\r\n return root.load(filename, callback);\r\n}\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {LoadCallback} callback Callback function\r\n * @returns {undefined}\r\n * @see {@link Root#load}\r\n * @variation 2\r\n */\r\n// function load(filename:string, callback:LoadCallback):undefined\r\n\r\n/**\r\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\r\n * @name load\r\n * @function\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Promise} Promise\r\n * @see {@link Root#load}\r\n * @variation 3\r\n */\r\n// function load(filename:string, [root:Root]):Promise\r\n\r\nprotobuf.load = load;\r\n\r\n/**\r\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\r\n * @param {string|string[]} filename One or multiple files to load\r\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\r\n * @returns {Root} Root namespace\r\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\r\n * @see {@link Root#loadSync}\r\n */\r\nfunction loadSync(filename, root) {\r\n if (!root)\r\n root = new protobuf.Root();\r\n return root.loadSync(filename);\r\n}\r\n\r\nprotobuf.loadSync = loadSync;\r\n\r\n// Serialization\r\nprotobuf.encoder = require(\"./encoder\");\r\nprotobuf.decoder = require(\"./decoder\");\r\nprotobuf.verifier = require(\"./verifier\");\r\nprotobuf.converter = require(\"./converter\");\r\n\r\n// Reflection\r\nprotobuf.ReflectionObject = require(\"./object\");\r\nprotobuf.Namespace = require(\"./namespace\");\r\nprotobuf.Root = require(\"./root\");\r\nprotobuf.Enum = require(\"./enum\");\r\nprotobuf.Type = require(\"./type\");\r\nprotobuf.Field = require(\"./field\");\r\nprotobuf.OneOf = require(\"./oneof\");\r\nprotobuf.MapField = require(\"./mapfield\");\r\nprotobuf.Service = require(\"./service\");\r\nprotobuf.Method = require(\"./method\");\r\n\r\n// Runtime\r\nprotobuf.Message = require(\"./message\");\r\nprotobuf.wrappers = require(\"./wrappers\");\r\n\r\n// Utility\r\nprotobuf.types = require(\"./types\");\r\nprotobuf.util = require(\"./util\");\r\n\r\n// Configure reflection\r\nprotobuf.ReflectionObject._configure(protobuf.Root);\r\nprotobuf.Namespace._configure(protobuf.Type, protobuf.Service);\r\nprotobuf.Root._configure(protobuf.Type);\r\nprotobuf.Field._configure(protobuf.Type);\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/index-light.js\n// module id = 35\n// module chunks = 0","\"use strict\";\r\nvar protobuf = exports;\r\n\r\n/**\r\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\r\n * @name build\r\n * @type {string}\r\n * @const\r\n */\r\nprotobuf.build = \"minimal\";\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = require(\"./writer_buffer\");\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = require(\"./reader_buffer\");\r\n\r\n// Utility\r\nprotobuf.util = require(\"./util/minimal\");\r\nprotobuf.rpc = require(\"./rpc\");\r\nprotobuf.roots = require(\"./roots\");\r\nprotobuf.configure = configure;\r\n\r\n/* istanbul ignore next */\r\n/**\r\n * Reconfigures the library according to the environment.\r\n * @returns {undefined}\r\n */\r\nfunction configure() {\r\n protobuf.Reader._configure(protobuf.BufferReader);\r\n protobuf.util._configure();\r\n}\r\n\r\n// Configure serialization\r\nprotobuf.Writer._configure(protobuf.BufferWriter);\r\nconfigure();\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/index-minimal.js\n// module id = 36\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/base64/index.js\n// module id = 37\n// module chunks = 0","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/eventemitter/index.js\n// module id = 38\n// module chunks = 0","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/float/index.js\n// module id = 39\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/utf8/index.js\n// module id = 40\n// module chunks = 0","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/pool/index.js\n// module id = 41\n// module chunks = 0","\"use strict\";\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(\"../util/minimal\");\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low 32 bits, unsigned\r\n * @param {number} hi High 32 bits, unsigned\r\n */\r\nfunction LongBits(lo, hi) {\r\n\r\n // note that the casts below are theoretically unnecessary as of today, but older statically\r\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo >>> 0;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi >>> 0;\r\n}\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = LongBits.zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Zero hash.\r\n * @memberof util.LongBits\r\n * @type {string}\r\n */\r\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n if (sign)\r\n value = -value;\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.from = function from(value) {\r\n if (typeof value === \"number\")\r\n return LongBits.fromNumber(value);\r\n if (util.isString(value)) {\r\n /* istanbul ignore else */\r\n if (util.Long)\r\n value = util.Long.fromString(value);\r\n else\r\n return LongBits.fromNumber(parseInt(value, 10));\r\n }\r\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBits.prototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n var lo = ~this.lo + 1 >>> 0,\r\n hi = ~this.hi >>> 0;\r\n if (!lo)\r\n hi = hi + 1 >>> 0;\r\n return -(lo + hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBits.prototype.toLong = function toLong(unsigned) {\r\n return util.Long\r\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\r\n /* istanbul ignore next */\r\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n if (hash === zeroHash)\r\n return zero;\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBits.prototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 ,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBits.prototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n return part2 === 0\r\n ? part1 === 0\r\n ? part0 < 16384\r\n ? part0 < 128 ? 1 : 2\r\n : part0 < 2097152 ? 3 : 4\r\n : part1 < 16384\r\n ? part1 < 128 ? 5 : 6\r\n : part1 < 2097152 ? 7 : 8\r\n : part2 < 128 ? 9 : 10;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/util/longbits.js\n// module id = 42\n// module chunks = 0","\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\n// extends Writer\r\nvar Writer = require(\"./writer\");\r\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar Buffer = util.Buffer;\r\n\r\n/**\r\n * Constructs a new buffer writer instance.\r\n * @classdesc Wire format writer using node buffers.\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Buffer} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = util._Buffer_allocUnsafe)(size);\r\n};\r\n\r\nvar writeBytesBuffer = Buffer && Buffer.prototype instanceof Uint8Array && Buffer.prototype.set.name === \"set\"\r\n ? function writeBytesBuffer_set(val, buf, pos) {\r\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\r\n // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n if (val.copy) // Buffer values\r\n val.copy(buf, pos, 0, val.length);\r\n else for (var i = 0; i < val.length;) // plain array values\r\n buf[pos++] = val[i++];\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\r\n if (util.isString(value))\r\n value = util._Buffer_from(value, \"base64\");\r\n var len = value.length >>> 0;\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeBytesBuffer, len, value);\r\n return this;\r\n};\r\n\r\nfunction writeStringBuffer(val, buf, pos) {\r\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\r\n util.utf8.write(val, buf, pos);\r\n else\r\n buf.utf8Write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.string = function write_string_buffer(value) {\r\n var len = Buffer.byteLength(value);\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeStringBuffer, len, value);\r\n return this;\r\n};\r\n\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @name BufferWriter#finish\r\n * @function\r\n * @returns {Buffer} Finished buffer\r\n */\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/writer_buffer.js\n// module id = 43\n// module chunks = 0","\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\n// extends Reader\r\nvar Reader = require(\"./reader\");\r\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\n/**\r\n * Constructs a new buffer reader instance.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n Reader.call(this, buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @name BufferReader#buf\r\n * @type {Buffer}\r\n */\r\n}\r\n\r\n/* istanbul ignore else */\r\nif (util.Buffer)\r\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReader.prototype.string = function read_string_buffer() {\r\n var len = this.uint32(); // modifies pos\r\n return this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len));\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @name BufferReader#bytes\r\n * @function\r\n * @returns {Buffer} Value read\r\n */\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/reader_buffer.js\n// module id = 44\n// module chunks = 0","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(\"../util/minimal\");\r\n\r\n// Extends EventEmitter\r\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\r\n\r\n/**\r\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\r\n *\r\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\r\n * @typedef rpc.ServiceMethodCallback\r\n * @template TRes extends Message\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {TRes} [response] Response message\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\r\n * @typedef rpc.ServiceMethod\r\n * @template TReq extends Message\r\n * @template TRes extends Message\r\n * @type {function}\r\n * @param {TReq|Properties} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message\r\n * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined`\r\n */\r\n\r\n/**\r\n * Constructs a new RPC service instance.\r\n * @classdesc An RPC service as returned by {@link Service#create}.\r\n * @exports rpc.Service\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n */\r\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\r\n\r\n if (typeof rpcImpl !== \"function\")\r\n throw TypeError(\"rpcImpl must be a function\");\r\n\r\n util.EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {RPCImpl|null}\r\n */\r\n this.rpcImpl = rpcImpl;\r\n\r\n /**\r\n * Whether requests are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.requestDelimited = Boolean(requestDelimited);\r\n\r\n /**\r\n * Whether responses are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.responseDelimited = Boolean(responseDelimited);\r\n}\r\n\r\n/**\r\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\r\n * @param {Method|rpc.ServiceMethod} method Reflected or static method\r\n * @param {Constructor} requestCtor Request constructor\r\n * @param {Constructor} responseCtor Response constructor\r\n * @param {TReq|Properties} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback} callback Service callback\r\n * @returns {undefined}\r\n * @template TReq extends Message\r\n * @template TRes extends Message\r\n */\r\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\r\n\r\n if (!request)\r\n throw TypeError(\"request must be specified\");\r\n\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\r\n\r\n if (!self.rpcImpl) {\r\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\r\n return undefined;\r\n }\r\n\r\n try {\r\n return self.rpcImpl(\r\n method,\r\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\r\n function rpcCallback(err, response) {\r\n\r\n if (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n\r\n if (response === null) {\r\n self.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n\r\n if (!(response instanceof responseCtor)) {\r\n try {\r\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n }\r\n\r\n self.emit(\"data\", response, method);\r\n return callback(null, response);\r\n }\r\n );\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n setTimeout(function() { callback(err); }, 0);\r\n return undefined;\r\n }\r\n};\r\n\r\n/**\r\n * Ends this service and emits the `end` event.\r\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\r\n * @returns {rpc.Service} `this`\r\n */\r\nService.prototype.end = function end(endedByRPC) {\r\n if (this.rpcImpl) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.rpcImpl(null, null, null);\r\n this.rpcImpl = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/src/rpc/service.js\n// module id = 45\n// module chunks = 0","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @param {string[]} functionParams Function parameter names\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n */\r\nfunction codegen(functionParams, functionName) {\r\n\r\n /* istanbul ignore if */\r\n if (typeof functionParams === \"string\") {\r\n functionName = functionParams;\r\n functionParams = undefined;\r\n }\r\n\r\n var body = [];\r\n\r\n /**\r\n * Appends code to the function's body or finishes generation.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string|Object.} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any\r\n * @param {...*} [formatParams] Format parameters\r\n * @returns {Codegen|Function} Itself or the generated function if finished\r\n * @throws {Error} If format parameter counts do not match\r\n */\r\n\r\n function Codegen(formatStringOrScope) {\r\n // note that explicit array handling below makes this ~50% faster\r\n\r\n // finish the function\r\n if (typeof formatStringOrScope !== \"string\") {\r\n var source = toString();\r\n if (codegen.verbose)\r\n console.log(\"codegen: \" + source); // eslint-disable-line no-console\r\n source = \"return \" + source;\r\n if (formatStringOrScope) {\r\n var scopeKeys = Object.keys(formatStringOrScope),\r\n scopeParams = new Array(scopeKeys.length + 1),\r\n scopeValues = new Array(scopeKeys.length),\r\n scopeOffset = 0;\r\n while (scopeOffset < scopeKeys.length) {\r\n scopeParams[scopeOffset] = scopeKeys[scopeOffset];\r\n scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]];\r\n }\r\n scopeParams[scopeOffset] = source;\r\n return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func\r\n }\r\n return Function(source)(); // eslint-disable-line no-new-func\r\n }\r\n\r\n // otherwise append to body\r\n var formatParams = new Array(arguments.length - 1),\r\n formatOffset = 0;\r\n while (formatOffset < formatParams.length)\r\n formatParams[formatOffset] = arguments[++formatOffset];\r\n formatOffset = 0;\r\n formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) {\r\n var value = formatParams[formatOffset++];\r\n switch ($1) {\r\n case \"d\": case \"f\": return String(Number(value));\r\n case \"i\": return String(Math.floor(value));\r\n case \"j\": return JSON.stringify(value);\r\n case \"s\": return String(value);\r\n }\r\n return \"%\";\r\n });\r\n if (formatOffset !== formatParams.length)\r\n throw Error(\"parameter count mismatch\");\r\n body.push(formatStringOrScope);\r\n return Codegen;\r\n }\r\n\r\n function toString(functionNameOverride) {\r\n return \"function \" + (functionNameOverride || functionName || \"\") + \"(\" + (functionParams && functionParams.join(\",\") || \"\") + \"){\\n \" + body.join(\"\\n \") + \"\\n}\";\r\n }\r\n\r\n Codegen.toString = toString;\r\n return Codegen;\r\n}\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @function codegen\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * When set to `true`, codegen will log generated code to console. Useful for debugging.\r\n * @name util.codegen.verbose\r\n * @type {boolean}\r\n */\r\ncodegen.verbose = false;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/codegen/index.js\n// module id = 46\n// module chunks = 0","\"use strict\";\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = require(\"@protobufjs/aspromise\"),\r\n inquire = require(\"@protobufjs/inquire\");\r\n\r\nvar fs = inquire(\"fs\");\r\n\r\n/**\r\n * Node-style callback as used by {@link util.fetch}.\r\n * @typedef FetchCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {string} [contents] File contents, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Options as used by {@link util.fetch}.\r\n * @typedef FetchOptions\r\n * @type {Object}\r\n * @property {boolean} [binary=false] Whether expecting a binary response\r\n * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} filename File path or url\r\n * @param {FetchOptions} options Fetch options\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nfunction fetch(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = {};\r\n } else if (!options)\r\n options = {};\r\n\r\n if (!callback)\r\n return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this\r\n\r\n // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.\r\n if (!options.xhr && fs && fs.readFile)\r\n return fs.readFile(filename, function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch.xhr(filename, options, callback)\r\n : err\r\n ? callback(err)\r\n : callback(null, options.binary ? contents : contents.toString(\"utf8\"));\r\n });\r\n\r\n // use the XHR version otherwise.\r\n return fetch.xhr(filename, options, callback);\r\n}\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchOptions} [options] Fetch options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n\r\n/**/\r\nfetch.xhr = function fetch_xhr(filename, options, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n\r\n if (xhr.readyState !== 4)\r\n return undefined;\r\n\r\n // local cors security errors return status 0 / empty string, too. afaik this cannot be\r\n // reliably distinguished from an actually empty file for security reasons. feel free\r\n // to send a pull request if you are aware of a solution.\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n\r\n // if binary data is expected, make sure that some sort of array is returned, even if\r\n // ArrayBuffers are not supported. the binary string fallback, however, is unsafe.\r\n if (options.binary) {\r\n var buffer = xhr.response;\r\n if (!buffer) {\r\n buffer = [];\r\n for (var i = 0; i < xhr.responseText.length; ++i)\r\n buffer.push(xhr.responseText.charCodeAt(i) & 255);\r\n }\r\n return callback(null, typeof Uint8Array !== \"undefined\" ? new Uint8Array(buffer) : buffer);\r\n }\r\n return callback(null, xhr.responseText);\r\n };\r\n\r\n if (options.binary) {\r\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers\r\n if (\"overrideMimeType\" in xhr)\r\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\r\n xhr.responseType = \"arraybuffer\";\r\n }\r\n\r\n xhr.open(\"GET\", filename);\r\n xhr.send();\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/fetch/index.js\n// module id = 47\n// module chunks = 0","\"use strict\";\r\n\r\n/**\r\n * A minimal path module to resolve Unix, Windows and URL paths alike.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar path = exports;\r\n\r\nvar isAbsolute =\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\npath.isAbsolute = function isAbsolute(path) {\r\n return /^(?:\\/|\\w+:)/.test(path);\r\n};\r\n\r\nvar normalize =\r\n/**\r\n * Normalizes the specified path.\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\npath.normalize = function normalize(path) {\r\n path = path.replace(/\\\\/g, \"/\")\r\n .replace(/\\/{2,}/g, \"/\");\r\n var parts = path.split(\"/\"),\r\n absolute = isAbsolute(path),\r\n prefix = \"\";\r\n if (absolute)\r\n prefix = parts.shift() + \"/\";\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === \"..\") {\r\n if (i > 0 && parts[i - 1] !== \"..\")\r\n parts.splice(--i, 2);\r\n else if (absolute)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === \".\")\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join(\"/\");\r\n};\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path to the origin file\r\n * @param {string} includePath Include path relative to origin path\r\n * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the include file\r\n */\r\npath.resolve = function resolve(originPath, includePath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n includePath = normalize(includePath);\r\n if (isAbsolute(includePath))\r\n return includePath;\r\n if (!alreadyNormalized)\r\n originPath = normalize(originPath);\r\n return (originPath = originPath.replace(/(?:\\/|^)[^/]+$/, \"\")).length ? normalize(originPath + \"/\" + includePath) : includePath;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@protobufjs/path/index.js\n// module id = 48\n// module chunks = 0","module.exports = {\"nested\":{\"proto\":{\"nested\":{\"Error\":{\"fields\":{\"code\":{\"type\":\"uint32\",\"id\":1},\"message\":{\"type\":\"string\",\"id\":2}}},\"MethodType\":{\"values\":{\"CONNECT\":0,\"SUBSCRIBE\":1,\"UNSUBSCRIBE\":2,\"PUBLISH\":3,\"PRESENCE\":4,\"PRESENCE_STATS\":5,\"HISTORY\":6,\"PING\":7,\"SEND\":8,\"RPC\":9,\"REFRESH\":10,\"SUB_REFRESH\":11}},\"Command\":{\"fields\":{\"id\":{\"type\":\"uint32\",\"id\":1},\"method\":{\"type\":\"MethodType\",\"id\":2},\"params\":{\"type\":\"bytes\",\"id\":3}}},\"Reply\":{\"fields\":{\"id\":{\"type\":\"uint32\",\"id\":1},\"error\":{\"type\":\"Error\",\"id\":2},\"result\":{\"type\":\"bytes\",\"id\":3}}},\"PushType\":{\"values\":{\"PUBLICATION\":0,\"JOIN\":1,\"LEAVE\":2,\"UNSUB\":3,\"MESSAGE\":4}},\"Push\":{\"fields\":{\"type\":{\"type\":\"PushType\",\"id\":1},\"channel\":{\"type\":\"string\",\"id\":2},\"data\":{\"type\":\"bytes\",\"id\":3}}},\"ClientInfo\":{\"fields\":{\"user\":{\"type\":\"string\",\"id\":1},\"client\":{\"type\":\"string\",\"id\":2},\"connInfo\":{\"type\":\"bytes\",\"id\":3},\"chanInfo\":{\"type\":\"bytes\",\"id\":4}}},\"Publication\":{\"fields\":{\"seq\":{\"type\":\"uint32\",\"id\":1},\"gen\":{\"type\":\"uint32\",\"id\":2},\"uid\":{\"type\":\"string\",\"id\":3},\"data\":{\"type\":\"bytes\",\"id\":4},\"info\":{\"type\":\"ClientInfo\",\"id\":5}}},\"Join\":{\"fields\":{\"info\":{\"type\":\"ClientInfo\",\"id\":1}}},\"Leave\":{\"fields\":{\"info\":{\"type\":\"ClientInfo\",\"id\":1}}},\"Unsub\":{\"fields\":{\"resubscribe\":{\"type\":\"bool\",\"id\":1}}},\"Message\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}},\"ConnectRequest\":{\"fields\":{\"token\":{\"type\":\"string\",\"id\":1},\"data\":{\"type\":\"bytes\",\"id\":2}}},\"ConnectResult\":{\"fields\":{\"client\":{\"type\":\"string\",\"id\":1},\"version\":{\"type\":\"string\",\"id\":2},\"expires\":{\"type\":\"bool\",\"id\":3},\"ttl\":{\"type\":\"uint32\",\"id\":4},\"data\":{\"type\":\"bytes\",\"id\":5}}},\"RefreshRequest\":{\"fields\":{\"token\":{\"type\":\"string\",\"id\":1}}},\"RefreshResult\":{\"fields\":{\"client\":{\"type\":\"string\",\"id\":1},\"version\":{\"type\":\"string\",\"id\":2},\"expires\":{\"type\":\"bool\",\"id\":3},\"ttl\":{\"type\":\"uint32\",\"id\":4}}},\"SubscribeRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1},\"token\":{\"type\":\"string\",\"id\":2},\"recover\":{\"type\":\"bool\",\"id\":3},\"seq\":{\"type\":\"uint32\",\"id\":4},\"gen\":{\"type\":\"uint32\",\"id\":5},\"epoch\":{\"type\":\"string\",\"id\":6}}},\"SubscribeResult\":{\"fields\":{\"expires\":{\"type\":\"bool\",\"id\":1},\"ttl\":{\"type\":\"uint32\",\"id\":2},\"recoverable\":{\"type\":\"bool\",\"id\":3},\"seq\":{\"type\":\"uint32\",\"id\":4},\"gen\":{\"type\":\"uint32\",\"id\":5},\"epoch\":{\"type\":\"string\",\"id\":6},\"publications\":{\"rule\":\"repeated\",\"type\":\"Publication\",\"id\":7},\"recovered\":{\"type\":\"bool\",\"id\":8}}},\"SubRefreshRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1},\"token\":{\"type\":\"string\",\"id\":2}}},\"SubRefreshResult\":{\"fields\":{\"expires\":{\"type\":\"bool\",\"id\":1},\"ttl\":{\"type\":\"uint32\",\"id\":2}}},\"UnsubscribeRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"UnsubscribeResult\":{\"fields\":{}},\"PublishRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1},\"data\":{\"type\":\"bytes\",\"id\":2}}},\"PublishResult\":{\"fields\":{}},\"PresenceRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"PresenceResult\":{\"fields\":{\"presence\":{\"keyType\":\"string\",\"type\":\"ClientInfo\",\"id\":1}}},\"PresenceStatsRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"PresenceStatsResult\":{\"fields\":{\"numClients\":{\"type\":\"uint32\",\"id\":1},\"numUsers\":{\"type\":\"uint32\",\"id\":2}}},\"HistoryRequest\":{\"fields\":{\"channel\":{\"type\":\"string\",\"id\":1}}},\"HistoryResult\":{\"fields\":{\"publications\":{\"rule\":\"repeated\",\"type\":\"Publication\",\"id\":1}}},\"PingRequest\":{\"fields\":{}},\"PingResult\":{\"fields\":{}},\"RPCRequest\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}},\"RPCResult\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}},\"SendRequest\":{\"fields\":{\"data\":{\"type\":\"bytes\",\"id\":1}}}}}}}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/client.proto.json\n// module id = 49\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index edcf0993..de9aea60 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "centrifuge", - "version": "2.1.5", + "version": "2.1.6", "description": "Centrifuge and Centrifugo client for NodeJS and browser", "main": "dist/centrifuge.js", "scripts": {