diff --git a/dist/bundle.js b/dist/bundle.js index 411ca7a..439128e 100644 --- a/dist/bundle.js +++ b/dist/bundle.js @@ -1,19 +1,20 @@ -!function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){window.NATS=n(1)},function(t,e,n){(function(t,r){/*! +!function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="/dist/",e(0)}([function(t,e,n){window.NATS=n(1)},function(t,e,n){(function(t,r){/*! * Nats * Copyright(c) 2012-2016 Apcera Inc. All rights reserved. * Copyright(c) 2011-2014 Derek Collison (derek.collison@gmail.com) * MIT Licensed */ -"use strict";function i(t){f.EventEmitter.call(this),this.parseOptions(t),this.initState(),this.createConnection()}function o(t){for(var e=t.length-1;e>0;e--){var n=Math.floor(Math.random()*(e+1)),r=t[e];t[e]=t[n],t[n]=r}return t}function s(t){this.url=t,this.didConnect=!1,this.reconnects=0}var u=n(8),a=n(13),h=n(14),c=n(9),f=n(12),l=n(21),p="0.6.8",d=4222,g="nats://localhost:",y=g+d,v=512,m=0,b=1,w=2e3,E=10,_=/^MSG\s+([^\s\r\n]+)\s+([^\s\r\n]+)\s+(([^\s\r\n]+)[^\S\r\n]+)?(\d+)\r\n/i,A=/^\+OK\s*\r\n/i,S=/^-ERR\s+('.+')?\r\n/i,O=/^PING\r\n/i,R=/^PONG\r\n/i,T=/^INFO\s+([^\r\n]+)\r\n/i,x=/^SUB\s+([^\r\n]+)\r\n/i,C="\r\n",P=C.length,I=(new t(C),""),U=" ",B="SUB",j="UNSUB",L="CONNECT",k="PING"+C,z="PONG"+C,N="Subject must be supplied",M="Message can't be a function",Y="Reply can't be a function",q="Connection closed",D="Message should be a JSON object",F="User and Token can not both be provided",J=65536;e.version=p;var H=e.createInbox=function(){return"_INBOX."+l.next()};e.connect=function(t){return new i(t)},c.inherits(i,f.EventEmitter),i.prototype.createInbox=H,i.prototype.assignOption=function(t,e,n){void 0===n&&(n=e),void 0!==t[e]&&(this.options[n]=t[e])},i.prototype.parseOptions=function(e){var n=this.options={verbose:!1,pedantic:!1,reconnect:!0,maxReconnectAttempts:E,reconnectTimeWait:w,encoding:"utf8",tls:!1,waitOnFirstConnect:!1};void 0===e?n.url=y:"number"==typeof e?n.url=g+e:"string"==typeof e?n.url=e:"object"==typeof e&&(void 0!==e.port&&(n.url=g+e.port),this.assignOption(e,"url"),this.assignOption(e,"uri","url"),this.assignOption(e,"user"),this.assignOption(e,"pass"),this.assignOption(e,"token"),this.assignOption(e,"password","pass"),this.assignOption(e,"verbose"),this.assignOption(e,"pedantic"),this.assignOption(e,"reconnect"),this.assignOption(e,"maxReconnectAttempts"),this.assignOption(e,"reconnectTimeWait"),this.assignOption(e,"servers"),this.assignOption(e,"urls","servers"),this.assignOption(e,"noRandomize"),this.assignOption(e,"NoRandomize","noRandomize"),this.assignOption(e,"dontRandomize","noRandomize"),this.assignOption(e,"encoding"),this.assignOption(e,"tls"),this.assignOption(e,"secure","tls"),this.assignOption(e,"name"),this.assignOption(e,"client","name"),this.assignOption(e,"yieldTime"),this.assignOption(e,"waitOnFirstConnect"),this.assignOption(e,"json"));var r=this;if(r.user=n.user,r.pass=n.pass,r.token=n.token,r.user&&r.token)throw new Error(F);if(!t.isEncoding(n.encoding))throw new Error("Invalid Encoding:"+n.encoding);r.encoding=n.encoding,r.servers=[],Array.isArray(n.servers)?n.servers.forEach(function(t){r.servers.push(new s(h.parse(t)))}):(void 0===n.url&&(n.url=y),r.servers.push(new s(h.parse(n.url)))),n.noRandomize!==!0&&o(r.servers)},i.prototype.selectServer=function(){var t=this,e=t.servers.shift();if(t.currentServer=e,t.url=e.url,"auth"in e.url&&e.url.auth){var n=e.url.auth.split(":");1!==n.length?(void 0===t.options.user&&(t.user=n[0]),void 0===t.options.pass&&(t.pass=n[1])):void 0===t.options.token&&(t.token=n[0])}t.servers.push(e)},i.prototype.checkTLSMismatch=function(){return this.info.tls_required===!0&&this.options.tls===!1?(this.emit("error","Server requires a secure connection."),this.closeStream(),!0):this.info.tls_required===!1&&this.options.tls!==!1?(this.emit("error","Server does not support a secure connection."),this.closeStream(),!0):this.info.tls_verify===!0&&void 0===this.options.tls.cert&&(this.emit("error","Server requires a client certificate."),this.closeStream(),!0)},i.prototype.connectCB=function(){var t=this.reconnecting,e=t===!0?"reconnect":"connect";this.reconnecting=!1,this.reconnects=0,this.wasConnected=!0,this.currentServer.didConnect=!0,this.emit(e,this),this.flushPending()},i.prototype.setupHandlers=function(){var e=this,n=e.stream;void 0!==n&&(n.on("connect",function(){e.connected=!0}),n.on("close",function(t){e.closeStream(),e.emit("disconnect"),e.closed===!0||e.options.reconnect===!1||e.reconnects>=e.options.maxReconnectAttempts&&e.options.maxReconnectAttempts!==-1?e.emit("close"):e.scheduleReconnect()}),n.on("error",function(t){e.wasConnected===!0&&e.currentServer.didConnect===!0||(e.wasConnected===!1&&e.currentServer.didConnect===!1&&(e.options.waitOnFirstConnect?e.currentServer.didConnect=!0:e.servers.splice(e.servers.length-1,1)),e.wasConnected===!1&&0===e.servers.length&&e.emit("error","Could not connect to server: "+t),e.closeStream())}),n.on("data",function(n){e.inbound?e.inbound=t.concat([e.inbound,n]):e.inbound=n,e.processInbound()}))},i.prototype.sendConnect=function(){var t={lang:"node",version:p,verbose:this.options.verbose,pedantic:this.options.pedantic};void 0!==this.user&&(t.user=this.user,t.pass=this.pass),void 0!==this.token&&(t.auth_token=this.token),void 0!==this.options.name&&(t.name=this.options.name),this.stream.write(L+U+JSON.stringify(t)+C)},i.prototype.createConnection=function(){var e=[],n=[],r=0,i=this;if(null!==i.pending){var o=0;i.pending.forEach(function(s){var u=t.isBuffer(s)?s.length:t.byteLength(s);if(s===k&&null!==i.pongs&&o3&&"P"==s[0]&&"U"==s[1]&&"B"==s[2]&&(n.push(s),r+=u)})}this.pongs=e,this.pending=n,this.pSize=r,this.pstate=m,this.info=null,this.infoReceived=!1,this.selectServer(),this.stream=u.createConnection(this.url),this.setupHandlers()},i.prototype.initState=function(){this.ssid=1,this.subs={},this.reconnects=0,this.connected=!1,this.wasConnected=!1,this.reconnecting=!1,this.server=null,this.pending=[]},i.prototype.close=function(){this.closed=!0,this.removeAllListeners(),this.closeStream(),this.ssid=-1,this.subs=null,this.pstate=-1,this.pongs=null,this.pending=null,this.pSize=0},i.prototype.closeStream=function(){null!==this.stream&&(this.stream.end(),this.stream.destroy(),this.stream=null),this.connected!==!0&&this.closed!==!0||(this.pongs=null,this.pending=null,this.pSize=0,this.connected=!1),this.inbound=null},i.prototype.flushPending=function(){if(this.connected!==!1&&null!==this.pending&&0!==this.pending.length&&this.infoReceived===!0){var e=this,n=function(t){return e.pending=[],e.pSize=0,e.stream.write(t)};if(this.pBufs){for(var r=!0,i=0;iJ&&this.flushPending()},i.prototype.sendSubscriptions=function(){var t="";for(var e in this.subs)if(this.subs.hasOwnProperty(e)){var n,r=this.subs[e];n=r.qgroup?[B,r.subject,r.qgroup,e+C]:[B,r.subject,e+C],t+=n.join(U)}t.length>0&&this.stream.write(t)},i.prototype.processInbound=function(){var e,n,i=this;for(i.stream.resume(),void 0!==i.options.yieldTime&&(n=Date.now());!i.closed&&i.inbound&&i.inbound.length>0;){switch(i.pstate){case m:var o=i.inbound.toString("binary",0,v);if(null!==(e=_.exec(o)))i.payload={subj:e[1],sid:parseInt(e[2],10),reply:e[4],size:parseInt(e[5],10)},i.payload.psize=i.payload.size+P,i.pstate=b;else if(null!==(e=A.exec(o)));else if(null!==(e=S.exec(o)))i.emit("error",e[1]);else if(null!==(e=R.exec(o))){var s=i.pongs&&i.pongs.shift();s&&s()}else if(null!==(e=O.exec(o)))i.sendCommand(z);else{if(null===(e=T.exec(o)))return;if(i.info=JSON.parse(e[1]),i.checkTLSMismatch()===!0)return;if(i.infoReceived===!1){if(i.options.tls!==!1&&i.stream.encrypted!==!0){var u={socket:i.stream};if("object"==typeof i.options.tls)for(var h in i.options.tls)u[h]=i.options.tls[h];i.stream=a.connect(u,function(){i.flushPending()}),i.setupHandlers()}i.sendConnect(),i.sendSubscriptions(),i.pongs.unshift(function(){i.connectCB()}),i.stream.write(k),i.infoReceived=!0,i.stripPendingSubs(),i.flushPending()}}break;case b:if(i.inbound.lengthi.options.yieldTime)return i.stream.pause(),void r(i.processInbound.bind(this))}if(e&&!this.closed){var f=e[0].length;f>=i.inbound.length?i.inbound=null:i.inbound=i.inbound.slice(f)}e=null}},i.prototype.processMsg=function(){var e=this.subs[this.payload.sid];if(void 0!==e&&(e.received+=1,e.timeout&&e.received>=e.expected&&(clearTimeout(e.timeout),e.timeout=null),void 0!==e.max&&(e.received===e.max?(delete this.subs[this.payload.sid],this.emit("unsubscribe",this.payload.sid,e.subject)):e.received>e.max&&(this.unsubscribe(this.payload.sid),e.callback=null)),e.callback)){var n=this.payload.msg;if(this.options.json)try{n=JSON.parse(new t(this.payload.msg,this.options.encoding).toString())}catch(t){n=t}e.callback(n,this.payload.reply,this.payload.subj,this.payload.sid)}},i.prototype.addServer=function(t){this.servers.push(new s(h.parse(t))),this.options.noRandomize!==!0&&o(this.servers)},i.prototype.flush=function(t){if(this.closed){if("function"==typeof t)return void t(new Error(q));throw new Error(q)}this.pongs&&(this.pongs.push(t),this.sendCommand(k),this.flushPending())},i.prototype.publish=function(e,n,r,i){if("function"==typeof e&&(i=e,e=void 0),n||(n=I),!e){if(!i)throw new Error(N);i(new Error(N))}if("function"==typeof n){if(i||r)return void i(new Error(M));i=n,n=I,r=void 0}if("function"==typeof r){if(i)return void i(new Error(Y));i=r,r=void 0}var o;if(o=void 0===r?"PUB "+e+U:"PUB "+e+U+r+U,t.isBuffer(n)){var s=new t(o.length+n.length+2*P+n.length.toString().length),u=s.write(o+n.length+C);n.copy(s,u),s.write(C,u+n.length),this.sendCommand(s)}else{var a=n;if(this.options.json){if("object"!=typeof n||Array.isArray(n))throw new Error(D);try{a=JSON.stringify(n)}catch(t){throw new Error(D)}}this.sendCommand(o+t.byteLength(a)+C+a+C)}if(void 0!==i)this.flush(i);else if(this.closed)throw new Error(q)},i.prototype.subscribe=function(t,e,n){if(this.closed)throw new Error(q);var r,i;"function"==typeof e?(n=e,e=void 0):e&&"object"==typeof e&&(r=e.queue,i=e.max),this.ssid+=1,this.subs[this.ssid]={subject:t,callback:n,received:0};var o;return"string"==typeof r?(this.subs[this.ssid].qgroup=r,o=[B,t,r,this.ssid+C]):o=[B,t,this.ssid+C],this.sendCommand(o.join(U)),this.emit("subscribe",this.ssid,t,e),i&&this.unsubscribe(this.ssid,i),this.ssid},i.prototype.unsubscribe=function(t,e){if(t&&!this.closed){var n;n=e?[j,t,e+C]:[j,t+C],this.sendCommand(n.join(U));var r=this.subs[t];void 0!==r&&(r.max=e,(void 0===r.max||r.received>=r.max)&&(delete this.subs[t],this.emit("unsubscribe",t,r.subject)))}},i.prototype.timeout=function(t,e,n,r){if(t){var i=this.subs[t];null!==i&&(i.expected=n,i.timeout=setTimeout(function(){r(t)},e))}},i.prototype.request=function(t,e,n,r){"function"==typeof e&&(r=e,e=I,n=null),"function"==typeof n&&(r=n,n=null);var i=H(),o=this.subscribe(i,n,function(t,e){r(t,e)});return this.publish(t,e,i),o},i.prototype.numSubscriptions=function(){return Object.keys(this.subs).length},i.prototype.reconnect=function(){this.closed||(this.reconnects+=1,this.createConnection(),this.currentServer.didConnect===!0&&this.emit("reconnecting"))},i.prototype.scheduleReconnect=function(){var t=this;if(0!==t.servers.length){t.wasConnected===!0&&(t.reconnecting=!0);var e=0;t.servers[0].didConnect===!0&&(e=this.options.reconnectTimeWait),setTimeout(function(){t.reconnect()},e)}}}).call(e,n(2).Buffer,n(6).setImmediate)},function(t,e,n){(function(t,r){/*! +"use strict";function i(t){f.EventEmitter.call(this),this.parseOptions(t),this.initState(),this.createConnection()}function o(t){for(var e=t.length-1;e>0;e--){var n=Math.floor(Math.random()*(e+1)),r=t[e];t[e]=t[n],t[n]=r}return t}function s(t){this.url=t,this.didConnect=!1,this.reconnects=0}var a=n(8),u=n(13),h=n(14),c=n(9),f=n(12),l=n(20),p="0.6.8",d=4222,g="nats://localhost:",y=g+d,v=512,m=0,b=1,w=2e3,E=10,_=/^MSG\s+([^\s\r\n]+)\s+([^\s\r\n]+)\s+(([^\s\r\n]+)[^\S\r\n]+)?(\d+)\r\n/i,A=/^\+OK\s*\r\n/i,S=/^-ERR\s+('.+')?\r\n/i,R=/^PING\r\n/i,O=/^PONG\r\n/i,T=/^INFO\s+([^\r\n]+)\r\n/i,x=/^SUB\s+([^\r\n]+)\r\n/i,C="\r\n",P=C.length,I=(new t(C),""),B=" ",U="SUB",j="UNSUB",L="CONNECT",k="PING"+C,z="PONG"+C,M="Subject must be supplied",N="Message can't be a function",Y="Reply can't be a function",D="Connection closed",q="Message should be a JSON object",F="User and Token can not both be provided",J=65536;e.version=p;var H=e.createInbox=function(){return"_INBOX."+l.next()};e.connect=function(t){return new i(t)},c.inherits(i,f.EventEmitter),i.prototype.createInbox=H,i.prototype.assignOption=function(t,e,n){void 0===n&&(n=e),void 0!==t[e]&&(this.options[n]=t[e])},i.prototype.parseOptions=function(e){var n=this.options={verbose:!1,pedantic:!1,reconnect:!0,maxReconnectAttempts:E,reconnectTimeWait:w,encoding:"utf8",tls:!1,waitOnFirstConnect:!1};void 0===e?n.url=y:"number"==typeof e?n.url=g+e:"string"==typeof e?n.url=e:"object"==typeof e&&(void 0!==e.port&&(n.url=g+e.port),this.assignOption(e,"url"),this.assignOption(e,"uri","url"),this.assignOption(e,"user"),this.assignOption(e,"pass"),this.assignOption(e,"token"),this.assignOption(e,"password","pass"),this.assignOption(e,"verbose"),this.assignOption(e,"pedantic"),this.assignOption(e,"reconnect"),this.assignOption(e,"maxReconnectAttempts"),this.assignOption(e,"reconnectTimeWait"),this.assignOption(e,"servers"),this.assignOption(e,"urls","servers"),this.assignOption(e,"noRandomize"),this.assignOption(e,"NoRandomize","noRandomize"),this.assignOption(e,"dontRandomize","noRandomize"),this.assignOption(e,"encoding"),this.assignOption(e,"tls"),this.assignOption(e,"secure","tls"),this.assignOption(e,"name"),this.assignOption(e,"client","name"),this.assignOption(e,"yieldTime"),this.assignOption(e,"waitOnFirstConnect"),this.assignOption(e,"json"));var r=this;if(r.user=n.user,r.pass=n.pass,r.token=n.token,r.user&&r.token)throw new Error(F);if(!t.isEncoding(n.encoding))throw new Error("Invalid Encoding:"+n.encoding);r.encoding=n.encoding,r.servers=[],Array.isArray(n.servers)?n.servers.forEach(function(t){r.servers.push(new s(h.parse(t)))}):(void 0===n.url&&(n.url=y),r.servers.push(new s(h.parse(n.url)))),n.noRandomize!==!0&&o(r.servers)},i.prototype.selectServer=function(){var t=this,e=t.servers.shift();if(t.currentServer=e,t.url=e.url,"auth"in e.url&&e.url.auth){var n=e.url.auth.split(":");1!==n.length?(void 0===t.options.user&&(t.user=n[0]),void 0===t.options.pass&&(t.pass=n[1])):void 0===t.options.token&&(t.token=n[0])}t.servers.push(e)},i.prototype.checkTLSMismatch=function(){return this.info.tls_required===!0&&this.options.tls===!1?(this.emit("error","Server requires a secure connection."),this.closeStream(),!0):this.info.tls_required===!1&&this.options.tls!==!1?(this.emit("error","Server does not support a secure connection."),this.closeStream(),!0):this.info.tls_verify===!0&&void 0===this.options.tls.cert&&(this.emit("error","Server requires a client certificate."),this.closeStream(),!0)},i.prototype.connectCB=function(){var t=this.reconnecting,e=t===!0?"reconnect":"connect";this.reconnecting=!1,this.reconnects=0,this.wasConnected=!0,this.currentServer.didConnect=!0,this.emit(e,this),this.flushPending()},i.prototype.setupHandlers=function(){var e=this,n=e.stream;void 0!==n&&(n.on("connect",function(){e.connected=!0}),n.on("close",function(t){e.closeStream(),e.emit("disconnect"),e.closed===!0||e.options.reconnect===!1||e.reconnects>=e.options.maxReconnectAttempts&&e.options.maxReconnectAttempts!==-1?e.emit("close"):e.scheduleReconnect()}),n.on("error",function(t){e.wasConnected===!0&&e.currentServer.didConnect===!0||(e.wasConnected===!1&&e.currentServer.didConnect===!1&&(e.options.waitOnFirstConnect?e.currentServer.didConnect=!0:e.servers.splice(e.servers.length-1,1)),e.wasConnected===!1&&0===e.servers.length&&e.emit("error","Could not connect to server: "+t),e.closeStream())}),n.on("data",function(n){e.inbound?e.inbound=t.concat([e.inbound,n]):e.inbound=n,e.processInbound()}))},i.prototype.sendConnect=function(){var t={lang:"node",version:p,verbose:this.options.verbose,pedantic:this.options.pedantic};void 0!==this.user&&(t.user=this.user,t.pass=this.pass),void 0!==this.token&&(t.auth_token=this.token),void 0!==this.options.name&&(t.name=this.options.name),this.stream.write(L+B+JSON.stringify(t)+C)},i.prototype.createConnection=function(){var e=[],n=[],r=0,i=this;if(null!==i.pending){var o=0;i.pending.forEach(function(s){var a=t.isBuffer(s)?s.length:t.byteLength(s);if(s===k&&null!==i.pongs&&o3&&"P"==s[0]&&"U"==s[1]&&"B"==s[2]&&(n.push(s),r+=a)})}this.pongs=e,this.pending=n,this.pSize=r,this.pstate=m,this.info=null,this.infoReceived=!1,this.selectServer(),this.stream=a.createConnection(this.url),this.setupHandlers()},i.prototype.initState=function(){this.ssid=1,this.subs={},this.reconnects=0,this.connected=!1,this.wasConnected=!1,this.reconnecting=!1,this.server=null,this.pending=[]},i.prototype.close=function(){this.closed=!0,this.removeAllListeners(),this.closeStream(),this.ssid=-1,this.subs=null,this.pstate=-1,this.pongs=null,this.pending=null,this.pSize=0},i.prototype.closeStream=function(){null!==this.stream&&(this.stream.end(),this.stream.destroy(),this.stream=null),this.connected!==!0&&this.closed!==!0||(this.pongs=null,this.pending=null,this.pSize=0,this.connected=!1),this.inbound=null},i.prototype.flushPending=function(){if(this.connected!==!1&&null!==this.pending&&0!==this.pending.length&&this.infoReceived===!0){var e=this,n=function(t){return e.pending=[],e.pSize=0,e.stream.write(t)};if(this.pBufs){for(var r=!0,i=0;iJ&&this.flushPending()},i.prototype.sendSubscriptions=function(){var t="";for(var e in this.subs)if(this.subs.hasOwnProperty(e)){var n,r=this.subs[e];n=r.qgroup?[U,r.subject,r.qgroup,e+C]:[U,r.subject,e+C],t+=n.join(B)}t.length>0&&this.stream.write(t)},i.prototype.processInbound=function(){var e,n,i=this;for(i.stream.resume(),void 0!==i.options.yieldTime&&(n=Date.now());!i.closed&&i.inbound&&i.inbound.length>0;){switch(i.pstate){case m:var o=i.inbound.toString("binary",0,v);if(null!==(e=_.exec(o)))i.payload={subj:e[1],sid:parseInt(e[2],10),reply:e[4],size:parseInt(e[5],10)},i.payload.psize=i.payload.size+P,i.pstate=b;else if(null!==(e=A.exec(o)));else if(null!==(e=S.exec(o)))i.emit("error",e[1]);else if(null!==(e=O.exec(o))){var s=i.pongs&&i.pongs.shift();s&&s()}else if(null!==(e=R.exec(o)))i.sendCommand(z);else{if(null===(e=T.exec(o)))return;if(i.info=JSON.parse(e[1]),i.checkTLSMismatch()===!0)return;if(i.infoReceived===!1){if(i.options.tls!==!1&&i.stream.encrypted!==!0){var a={socket:i.stream};if("object"==typeof i.options.tls)for(var h in i.options.tls)a[h]=i.options.tls[h];i.stream=u.connect(a,function(){i.flushPending()}),i.setupHandlers()}i.sendConnect(),i.sendSubscriptions(),i.pongs.unshift(function(){i.connectCB()}),i.stream.write(k),i.infoReceived=!0,i.stripPendingSubs(),i.flushPending()}}break;case b:if(i.inbound.lengthi.options.yieldTime)return i.stream.pause(),void r(i.processInbound.bind(this))}if(e&&!this.closed){var f=e[0].length;f>=i.inbound.length?i.inbound=null:i.inbound=i.inbound.slice(f)}e=null}},i.prototype.processMsg=function(){var e=this.subs[this.payload.sid];if(void 0!==e&&(e.received+=1,e.timeout&&e.received>=e.expected&&(clearTimeout(e.timeout),e.timeout=null),void 0!==e.max&&(e.received===e.max?(delete this.subs[this.payload.sid],this.emit("unsubscribe",this.payload.sid,e.subject)):e.received>e.max&&(this.unsubscribe(this.payload.sid),e.callback=null)),e.callback)){var n=this.payload.msg;if(this.options.json)try{n=JSON.parse(new t(this.payload.msg,this.options.encoding).toString())}catch(t){n=t}e.callback(n,this.payload.reply,this.payload.subj,this.payload.sid)}},i.prototype.addServer=function(t){this.servers.push(new s(h.parse(t))),this.options.noRandomize!==!0&&o(this.servers)},i.prototype.flush=function(t){if(this.closed){if("function"==typeof t)return void t(new Error(D));throw new Error(D)}this.pongs&&(this.pongs.push(t),this.sendCommand(k),this.flushPending())},i.prototype.publish=function(e,n,r,i){if("function"==typeof e&&(i=e,e=void 0),n||(n=I),!e){if(!i)throw new Error(M);i(new Error(M))}if("function"==typeof n){if(i||r)return void i(new Error(N));i=n,n=I,r=void 0}if("function"==typeof r){if(i)return void i(new Error(Y));i=r,r=void 0}var o;if(o=void 0===r?"PUB "+e+B:"PUB "+e+B+r+B,"ArrayBuffer"in window&&ArrayBuffer.isView(n)&&(n=t.from(n)),t.isBuffer(n)){var s=new t(o.length+n.length+2*P+n.length.toString().length),a=s.write(o+n.length+C);n.copy(s,a),s.write(C,a+n.length),this.sendCommand(s)}else{var u=n;if(this.options.json){if("object"!=typeof n||Array.isArray(n))throw new Error(q);try{u=JSON.stringify(n)}catch(t){throw new Error(q)}}this.sendCommand(o+t.byteLength(u)+C+u+C)}if(void 0!==i)this.flush(i);else if(this.closed)throw new Error(D)},i.prototype.subscribe=function(t,e,n){if(this.closed)throw new Error(D);var r,i;"function"==typeof e?(n=e,e=void 0):e&&"object"==typeof e&&(r=e.queue,i=e.max),this.ssid+=1,this.subs[this.ssid]={subject:t,callback:n,received:0};var o;return"string"==typeof r?(this.subs[this.ssid].qgroup=r,o=[U,t,r,this.ssid+C]):o=[U,t,this.ssid+C],this.sendCommand(o.join(B)),this.emit("subscribe",this.ssid,t,e),i&&this.unsubscribe(this.ssid,i),this.ssid},i.prototype.unsubscribe=function(t,e){if(t&&!this.closed){var n;n=e?[j,t,e+C]:[j,t+C],this.sendCommand(n.join(B));var r=this.subs[t];void 0!==r&&(r.max=e,(void 0===r.max||r.received>=r.max)&&(delete this.subs[t],this.emit("unsubscribe",t,r.subject)))}},i.prototype.timeout=function(t,e,n,r){if(t){var i=this.subs[t];null!==i&&(i.expected=n,i.timeout=setTimeout(function(){r(t)},e))}},i.prototype.request=function(t,e,n,r){"function"==typeof e&&(r=e,e=I,n=null),"function"==typeof n&&(r=n,n=null);var i=H(),o=this.subscribe(i,n,function(t,e){r(t,e)});return this.publish(t,e,i),o},i.prototype.numSubscriptions=function(){return Object.keys(this.subs).length},i.prototype.reconnect=function(){this.closed||(this.reconnects+=1,this.createConnection(),this.currentServer.didConnect===!0&&this.emit("reconnecting"))},i.prototype.scheduleReconnect=function(){var t=this;if(0!==t.servers.length){t.wasConnected===!0&&(t.reconnecting=!0);var e=0;t.servers[0].didConnect===!0&&(e=this.options.reconnectTimeWait),setTimeout(function(){t.reconnect()},e)}}}).call(e,n(2).Buffer,n(6).setImmediate)},function(t,e,n){(function(t,r){/*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT */ -"use strict";function i(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}function o(){return t.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,n){if(o()=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|t}function y(e){return+e!=e&&(e=0),t.alloc(+e)}function v(e,n){if(t.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var i=!1;;)switch(n){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return H(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return $(e).length;default:if(i)return H(e).length;n=(""+n).toLowerCase(),i=!0}}function m(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if(n>>>=0,e>>>=0,n<=e)return"";for(t||(t="utf8");;)switch(t){case"hex":return B(this,e,n);case"utf8":case"utf-8":return C(this,e,n);case"ascii":return I(this,e,n);case"latin1":case"binary":return U(this,e,n);case"base64":return x(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function b(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function w(e,n,r,i,o){if(0===e.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(o)return-1;r=e.length-1}else if(r<0){if(!o)return-1;r=0}if("string"==typeof n&&(n=t.from(n,i)),t.isBuffer(n))return 0===n.length?-1:E(e,n,r,i,o);if("number"==typeof n)return n&=255,t.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,n,r):Uint8Array.prototype.lastIndexOf.call(e,n,r):E(e,[n],r,i,o);throw new TypeError("val must be string, number or Buffer")}function E(t,e,n,r,i){function o(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}var s=1,u=t.length,a=e.length;if(void 0!==r&&(r=String(r).toLowerCase(),"ucs2"===r||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;s=2,u/=2,a/=2,n/=2}var h;if(i){var c=-1;for(h=n;hu&&(n=u-a),h=n;h>=0;h--){for(var f=!0,l=0;li&&(r=i)):r=i;var o=e.length;if(o%2!==0)throw new TypeError("Invalid hex string");r>o/2&&(r=o/2);for(var s=0;s239?4:o>223?3:o>191?2:1;if(i+u<=n){var a,h,c,f;switch(u){case 1:o<128&&(s=o);break;case 2:a=t[i+1],128===(192&a)&&(f=(31&o)<<6|63&a,f>127&&(s=f));break;case 3:a=t[i+1],h=t[i+2],128===(192&a)&&128===(192&h)&&(f=(15&o)<<12|(63&a)<<6|63&h,f>2047&&(f<55296||f>57343)&&(s=f));break;case 4:a=t[i+1],h=t[i+2],c=t[i+3],128===(192&a)&&128===(192&h)&&128===(192&c)&&(f=(15&o)<<18|(63&a)<<12|(63&h)<<6|63&c,f>65535&&f<1114112&&(s=f))}}null===s?(s=65533,u=1):s>65535&&(s-=65536,r.push(s>>>10&1023|55296),s=56320|1023&s),r.push(s),i+=u}return P(r)}function P(t){var e=t.length;if(e<=tt)return String.fromCharCode.apply(String,t);for(var n="",r=0;rr)&&(n=r);for(var i="",o=e;on)throw new RangeError("Trying to access beyond buffer length")}function k(e,n,r,i,o,s){if(!t.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(n>o||ne.length)throw new RangeError("Index out of range")}function z(t,e,n,r){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-n,2);i>>8*(r?i:1-i)}function N(t,e,n,r){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-n,4);i>>8*(r?i:3-i)&255}function M(t,e,n,r,i,o){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function Y(t,e,n,r,i){return i||M(t,e,n,4,3.4028234663852886e38,-3.4028234663852886e38),X.write(t,e,n,r,23,4),n+4}function q(t,e,n,r,i){return i||M(t,e,n,8,1.7976931348623157e308,-1.7976931348623157e308),X.write(t,e,n,r,52,8),n+8}function D(t){if(t=F(t).replace(et,""),t.length<2)return"";for(;t.length%4!==0;)t+="=";return t}function F(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function J(t){return t<16?"0"+t.toString(16):t.toString(16)}function H(t,e){e=e||1/0;for(var n,r=t.length,i=null,o=[],s=0;s55295&&n<57344){if(!i){if(n>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===r){(e-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(n<56320){(e-=3)>-1&&o.push(239,191,189),i=n;continue}n=(i-55296<<10|n-56320)+65536}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,n<128){if((e-=1)<0)break;o.push(n)}else if(n<2048){if((e-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function G(t){for(var e=[],n=0;n>8,i=n%256,o.push(i),o.push(r);return o}function $(t){return V.toByteArray(D(t))}function Z(t,e,n,r){for(var i=0;i=e.length||i>=t.length);++i)e[i+n]=t[i];return i}function K(t){return t!==t}var V=n(3),X=n(4),Q=n(5);e.Buffer=t,e.SlowBuffer=y,e.INSPECT_MAX_BYTES=50,t.TYPED_ARRAY_SUPPORT=void 0!==r.TYPED_ARRAY_SUPPORT?r.TYPED_ARRAY_SUPPORT:i(),e.kMaxLength=o(),t.poolSize=8192,t._augment=function(e){return e.__proto__=t.prototype,e},t.from=function(t,e,n){return u(null,t,e,n)},t.TYPED_ARRAY_SUPPORT&&(t.prototype.__proto__=Uint8Array.prototype,t.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&t[Symbol.species]===t&&Object.defineProperty(t,Symbol.species,{value:null,configurable:!0})),t.alloc=function(t,e,n){return h(null,t,e,n)},t.allocUnsafe=function(t){return c(null,t)},t.allocUnsafeSlow=function(t){return c(null,t)},t.isBuffer=function(t){return!(null==t||!t._isBuffer)},t.compare=function(e,n){if(!t.isBuffer(e)||!t.isBuffer(n))throw new TypeError("Arguments must be Buffers");if(e===n)return 0;for(var r=e.length,i=n.length,o=0,s=Math.min(r,i);o0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),""},t.prototype.compare=function(e,n,r,i,o){if(!t.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===n&&(n=0),void 0===r&&(r=e?e.length:0),void 0===i&&(i=0),void 0===o&&(o=this.length),n<0||r>e.length||i<0||o>this.length)throw new RangeError("out of range index");if(i>=o&&n>=r)return 0;if(i>=o)return-1;if(n>=r)return 1;if(n>>>=0,r>>>=0,i>>>=0,o>>>=0,this===e)return 0;for(var s=o-i,u=r-n,a=Math.min(s,u),h=this.slice(i,o),c=e.slice(n,r),f=0;fi)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return _(this,t,e,n);case"utf8":case"utf-8":return A(this,t,e,n);case"ascii":return S(this,t,e,n);case"latin1":case"binary":return O(this,t,e,n);case"base64":return R(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,e,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},t.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var tt=4096;t.prototype.slice=function(e,n){var r=this.length;e=~~e,n=void 0===n?r:~~n,e<0?(e+=r,e<0&&(e=0)):e>r&&(e=r),n<0?(n+=r,n<0&&(n=0)):n>r&&(n=r),n0&&(i*=256);)r+=this[t+--e]*i;return r},t.prototype.readUInt8=function(t,e){return e||L(t,1,this.length),this[t]},t.prototype.readUInt16LE=function(t,e){return e||L(t,2,this.length),this[t]|this[t+1]<<8},t.prototype.readUInt16BE=function(t,e){return e||L(t,2,this.length),this[t]<<8|this[t+1]},t.prototype.readUInt32LE=function(t,e){return e||L(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},t.prototype.readUInt32BE=function(t,e){return e||L(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},t.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||L(t,e,this.length);for(var r=this[t],i=1,o=0;++o=i&&(r-=Math.pow(2,8*e)),r},t.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||L(t,e,this.length);for(var r=e,i=1,o=this[t+--r];r>0&&(i*=256);)o+=this[t+--r]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},t.prototype.readInt8=function(t,e){return e||L(t,1,this.length),128&this[t]?(255-this[t]+1)*-1:this[t]},t.prototype.readInt16LE=function(t,e){e||L(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},t.prototype.readInt16BE=function(t,e){e||L(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},t.prototype.readInt32LE=function(t,e){return e||L(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},t.prototype.readInt32BE=function(t,e){return e||L(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},t.prototype.readFloatLE=function(t,e){return e||L(t,4,this.length),X.read(this,t,!0,23,4)},t.prototype.readFloatBE=function(t,e){return e||L(t,4,this.length),X.read(this,t,!1,23,4)},t.prototype.readDoubleLE=function(t,e){return e||L(t,8,this.length),X.read(this,t,!0,52,8)},t.prototype.readDoubleBE=function(t,e){return e||L(t,8,this.length),X.read(this,t,!1,52,8)},t.prototype.writeUIntLE=function(t,e,n,r){if(t=+t,e|=0,n|=0,!r){var i=Math.pow(2,8*n)-1;k(this,t,e,n,i,0)}var o=1,s=0;for(this[e]=255&t;++s=0&&(s*=256);)this[e+o]=t/s&255;return e+n},t.prototype.writeUInt8=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,1,255,0),t.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[n]=255&e,n+1},t.prototype.writeUInt16LE=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,2,65535,0),t.TYPED_ARRAY_SUPPORT?(this[n]=255&e,this[n+1]=e>>>8):z(this,e,n,!0),n+2},t.prototype.writeUInt16BE=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,2,65535,0),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>8,this[n+1]=255&e):z(this,e,n,!1),n+2},t.prototype.writeUInt32LE=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,4,4294967295,0),t.TYPED_ARRAY_SUPPORT?(this[n+3]=e>>>24,this[n+2]=e>>>16,this[n+1]=e>>>8,this[n]=255&e):N(this,e,n,!0),n+4},t.prototype.writeUInt32BE=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,4,4294967295,0),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>24,this[n+1]=e>>>16,this[n+2]=e>>>8,this[n+3]=255&e):N(this,e,n,!1),n+4},t.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);k(this,t,e,n,i-1,-i)}var o=0,s=1,u=0;for(this[e]=255&t;++o>0)-u&255;return e+n},t.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);k(this,t,e,n,i-1,-i)}var o=n-1,s=1,u=0;for(this[e+o]=255&t;--o>=0&&(s*=256);)t<0&&0===u&&0!==this[e+o+1]&&(u=1),this[e+o]=(t/s>>0)-u&255;return e+n},t.prototype.writeInt8=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,1,127,-128),t.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[n]=255&e,n+1},t.prototype.writeInt16LE=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,2,32767,-32768),t.TYPED_ARRAY_SUPPORT?(this[n]=255&e,this[n+1]=e>>>8):z(this,e,n,!0),n+2},t.prototype.writeInt16BE=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,2,32767,-32768),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>8,this[n+1]=255&e):z(this,e,n,!1),n+2},t.prototype.writeInt32LE=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,4,2147483647,-2147483648),t.TYPED_ARRAY_SUPPORT?(this[n]=255&e,this[n+1]=e>>>8,this[n+2]=e>>>16,this[n+3]=e>>>24):N(this,e,n,!0),n+4},t.prototype.writeInt32BE=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>24,this[n+1]=e>>>16,this[n+2]=e>>>8,this[n+3]=255&e):N(this,e,n,!1),n+4},t.prototype.writeFloatLE=function(t,e,n){return Y(this,t,e,!0,n)},t.prototype.writeFloatBE=function(t,e,n){return Y(this,t,e,!1,n)},t.prototype.writeDoubleLE=function(t,e,n){return q(this,t,e,!0,n)},t.prototype.writeDoubleBE=function(t,e,n){return q(this,t,e,!1,n)},t.prototype.copy=function(e,n,r,i){if(r||(r=0),i||0===i||(i=this.length),n>=e.length&&(n=e.length),n||(n=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-n=0;--o)e[o+n]=this[o+r];else if(s<1e3||!t.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,r=void 0===r?this.length:r>>>0,e||(e=0);var s;if("number"==typeof e)for(s=n;s0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function r(t){return 3*t.length/4-n(t)}function i(t){var e,r,i,o,s,u,a=t.length;s=n(t),u=new c(3*a/4-s),i=s>0?a-4:a;var f=0;for(e=0,r=0;e>16&255,u[f++]=o>>8&255,u[f++]=255&o;return 2===s?(o=h[t.charCodeAt(e)]<<2|h[t.charCodeAt(e+1)]>>4,u[f++]=255&o):1===s&&(o=h[t.charCodeAt(e)]<<10|h[t.charCodeAt(e+1)]<<4|h[t.charCodeAt(e+2)]>>2,u[f++]=o>>8&255,u[f++]=255&o),u}function o(t){return a[t>>18&63]+a[t>>12&63]+a[t>>6&63]+a[63&t]}function s(t,e,n){for(var r,i=[],s=e;sc?c:h+u));return 1===r?(e=t[n-1],i+=a[e>>2],i+=a[e<<4&63],i+="=="):2===r&&(e=(t[n-2]<<8)+t[n-1],i+=a[e>>10],i+=a[e>>4&63],i+=a[e<<2&63],i+="="),o.push(i),o.join("")}e.byteLength=r,e.toByteArray=i,e.fromByteArray=u;for(var a=[],h=[],c="undefined"!=typeof Uint8Array?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=0,p=f.length;l>1,c=-7,f=n?i-1:0,l=n?-1:1,p=t[e+f];for(f+=l,o=p&(1<<-c)-1,p>>=-c,c+=u;c>0;o=256*o+t[e+f],f+=l,c-=8);for(s=o&(1<<-c)-1,o>>=-c,c+=r;c>0;s=256*s+t[e+f],f+=l,c-=8);if(0===o)o=1-h;else{if(o===a)return s?NaN:(p?-1:1)*(1/0);s+=Math.pow(2,r),o-=h}return(p?-1:1)*s*Math.pow(2,o-r)},e.write=function(t,e,n,r,i,o){var s,u,a,h=8*o-i-1,c=(1<>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:o-1,d=r?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(u=isNaN(e)?1:0,s=c):(s=Math.floor(Math.log(e)/Math.LN2),e*(a=Math.pow(2,-s))<1&&(s--,a*=2),e+=s+f>=1?l/a:l*Math.pow(2,1-f),e*a>=2&&(s++,a/=2),s+f>=c?(u=0,s=c):s+f>=1?(u=(e*a-1)*Math.pow(2,i),s+=f):(u=e*Math.pow(2,f-1)*Math.pow(2,i),s=0));i>=8;t[n+p]=255&u,p+=d,u/=256,i-=8);for(s=s<0;t[n+p]=255&s,p+=d,s/=256,h-=8);t[n+p-d]|=128*g}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e,n){(function(t,r){function i(t,e){this._id=t,this._clearFn=e}var o=n(7).nextTick,s=Function.prototype.apply,u=Array.prototype.slice,a={},h=0;e.setTimeout=function(){return new i(s.call(setTimeout,window,arguments),clearTimeout)},e.setInterval=function(){return new i(s.call(setInterval,window,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(window,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},e.setImmediate="function"==typeof t?t:function(t){var n=h++,r=!(arguments.length<2)&&u.call(arguments,1);return a[n]=!0,o(function(){a[n]&&(r?t.apply(null,r):t.call(null),e.clearImmediate(n))}),n},e.clearImmediate="function"==typeof r?r:function(t){delete a[t]}}).call(e,n(6).setImmediate,n(6).clearImmediate)},function(t,e){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function i(t){if(c===setTimeout)return setTimeout(t,0);if((c===n||!c)&&setTimeout)return c=setTimeout,setTimeout(t,0);try{return c(t,0)}catch(e){try{return c.call(null,t,0)}catch(e){return c.call(this,t,0)}}}function o(t){if(f===clearTimeout)return clearTimeout(t);if((f===r||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(t);try{return f(t)}catch(e){try{return f.call(null,t)}catch(e){return f.call(this,t)}}}function s(){g&&p&&(g=!1,p.length?d=p.concat(d):y=-1,d.length&&u())}function u(){if(!g){var t=i(s);g=!0;for(var e=d.length;e;){for(p=d,d=[];++y1)for(var n=1;n=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),g(n)?r.showHidden=n:n&&e._extend(r,n),E(r.showHidden)&&(r.showHidden=!1),E(r.depth)&&(r.depth=2),E(r.colors)&&(r.colors=!1),E(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=o),a(r,t,r.depth)}function o(t,e){var n=i.styles[e];return n?"["+i.colors[n][0]+"m"+t+"["+i.colors[n][1]+"m":t}function s(t,e){return t}function u(t){var e={};return t.forEach(function(t,n){e[t]=!0}),e}function a(t,n,r){if(t.customInspect&&n&&R(n.inspect)&&n.inspect!==e.inspect&&(!n.constructor||n.constructor.prototype!==n)){var i=n.inspect(r,t);return b(i)||(i=a(t,i,r)),i}var o=h(t,n);if(o)return o;var s=Object.keys(n),g=u(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(n)),O(n)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return c(n);if(0===s.length){if(R(n)){var y=n.name?": "+n.name:"";return t.stylize("[Function"+y+"]","special")}if(_(n))return t.stylize(RegExp.prototype.toString.call(n),"regexp");if(S(n))return t.stylize(Date.prototype.toString.call(n),"date");if(O(n))return c(n)}var v="",m=!1,w=["{","}"];if(d(n)&&(m=!0,w=["[","]"]),R(n)){var E=n.name?": "+n.name:"";v=" [Function"+E+"]"}if(_(n)&&(v=" "+RegExp.prototype.toString.call(n)),S(n)&&(v=" "+Date.prototype.toUTCString.call(n)),O(n)&&(v=" "+c(n)),0===s.length&&(!m||0==n.length))return w[0]+v+w[1];if(r<0)return _(n)?t.stylize(RegExp.prototype.toString.call(n),"regexp"):t.stylize("[Object]","special");t.seen.push(n);var A;return A=m?f(t,n,r,g,s):s.map(function(e){return l(t,n,r,g,e,m)}),t.seen.pop(),p(A,v,w)}function h(t,e){if(E(e))return t.stylize("undefined","undefined");if(b(e)){var n="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(n,"string")}return m(e)?t.stylize(""+e,"number"):g(e)?t.stylize(""+e,"boolean"):y(e)?t.stylize("null","null"):void 0}function c(t){return"["+Error.prototype.toString.call(t)+"]"}function f(t,e,n,r,i){for(var o=[],s=0,u=e.length;s-1&&(u=o?u.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+u.split("\n").map(function(t){return" "+t}).join("\n"))):u=t.stylize("[Circular]","special")),E(s)){if(o&&i.match(/^\d+$/))return u;s=JSON.stringify(""+i),s.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+u}function p(t,e,n){var r=0,i=t.reduce(function(t,e){return r++,e.indexOf("\n")>=0&&r++,t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?n[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+n[1]:n[0]+e+" "+t.join(", ")+" "+n[1]}function d(t){return Array.isArray(t)}function g(t){return"boolean"==typeof t}function y(t){return null===t}function v(t){return null==t}function m(t){return"number"==typeof t}function b(t){return"string"==typeof t}function w(t){return"symbol"==typeof t}function E(t){return void 0===t}function _(t){return A(t)&&"[object RegExp]"===x(t)}function A(t){return"object"==typeof t&&null!==t}function S(t){return A(t)&&"[object Date]"===x(t)}function O(t){return A(t)&&("[object Error]"===x(t)||t instanceof Error)}function R(t){return"function"==typeof t}function T(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||"undefined"==typeof t}function x(t){return Object.prototype.toString.call(t)}function C(t){return t<10?"0"+t.toString(10):t.toString(10)}function P(){var t=new Date,e=[C(t.getHours()),C(t.getMinutes()),C(t.getSeconds())].join(":");return[t.getDate(),L[t.getMonth()],e].join(" ")}function I(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var U=/%[sdj%]/g;e.format=function(t){if(!b(t)){for(var e=[],n=0;n=o)return t;switch(t){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(t){return"[Circular]"}default:return t}}),u=r[n];n0&&this._events[t].length>i&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace())),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(t,e){function n(){this.removeListener(t,n),i||(i=!0,e.apply(this,arguments))}if(!r(e))throw TypeError("listener must be a function");var i=!1;return n.listener=e,this.on(t,n),this},n.prototype.removeListener=function(t,e){var n,i,s,u;if(!r(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(n=this._events[t],s=n.length,i=-1,n===e||r(n.listener)&&n.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(o(n)){for(u=s;u-- >0;)if(n[u]===e||n[u].listener&&n[u].listener===e){i=u;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[t]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},n.prototype.removeAllListeners=function(t){var e,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[t],r(n))this.removeListener(t,n);else if(n)for(;n.length;)this.removeListener(t,n[n.length-1]);return delete this._events[t],this},n.prototype.listeners=function(t){var e;return e=this._events&&this._events[t]?r(this._events[t])?[this._events[t]]:this._events[t].slice():[]},n.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(r(e))return 1;if(e)return e.length}return 0},n.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e){e.connect=function(t,e){throw"TLS is not supported in the browser. Use WSS instead."}},function(t,e,n){"use strict";function r(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function i(t,e,n){if(t&&h.isObject(t)&&t instanceof r)return t;var i=new r;return i.parse(t,e,n),i}function o(t){return h.isString(t)&&(t=i(t)),t instanceof r?t.format():r.prototype.format.call(t)}function s(t,e){return i(t,!1,!0).resolve(e)}function u(t,e){return t?i(t,!1,!0).resolveObject(e):e}var a=n(15),h=n(17);e.parse=i,e.resolve=s,e.resolveObject=u,e.format=o,e.Url=r;var c=/^([a-z0-9.+-]+:)/i,f=/:[0-9]*$/,l=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,p=["<",">",'"',"`"," ","\r","\n","\t"],d=["{","}","|","\\","^","`"].concat(p),g=["'"].concat(d),y=["%","/","?",";","#"].concat(g),v=["/","?","#"],m=255,b=/^[+a-z0-9A-Z_-]{0,63}$/,w=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,E={javascript:!0,"javascript:":!0},_={javascript:!0,"javascript:":!0},A={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},S=n(18);r.prototype.parse=function(t,e,n){if(!h.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var r=t.indexOf("?"),i=r!==-1&&r127?"x":j[k];if(!L.match(b)){var N=U.slice(0,T),M=U.slice(T+1),Y=j.match(w);Y&&(N.push(Y[1]),M.unshift(Y[2])),M.length&&(u="/"+M.join(".")+u),this.hostname=N.join(".");break}}}this.hostname.length>m?this.hostname="":this.hostname=this.hostname.toLowerCase(),I||(this.hostname=a.toASCII(this.hostname));var q=this.port?":"+this.port:"",D=this.hostname||"";this.host=D+q,this.href+=this.host,I&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==u[0]&&(u="/"+u))}if(!E[d])for(var T=0,B=g.length;T0)&&n.host.split("@");O&&(n.auth=O.shift(),n.host=n.hostname=O.shift())}return n.search=t.search,n.query=t.query,h.isNull(n.pathname)&&h.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!E.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var R=E.slice(-1)[0],T=(n.host||t.host||E.length>1)&&("."===R||".."===R)||""===R,x=0,C=E.length;C>=0;C--)R=E[C],"."===R?E.splice(C,1):".."===R?(E.splice(C,1),x++):x&&(E.splice(C,1),x--);if(!b&&!w)for(;x--;x)E.unshift("..");!b||""===E[0]||E[0]&&"/"===E[0].charAt(0)||E.unshift(""),T&&"/"!==E.join("/").substr(-1)&&E.push("");var P=""===E[0]||E[0]&&"/"===E[0].charAt(0);if(S){n.hostname=n.host=P?"":E.length?E.shift():"";var O=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@");O&&(n.auth=O.shift(),n.host=n.hostname=O.shift())}return b=b||n.host&&E.length,b&&!P&&E.unshift(""),E.length?n.pathname=E.join("/"):(n.pathname=null,n.path=null),h.isNull(n.pathname)&&h.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=t.auth||n.auth,n.slashes=n.slashes||t.slashes,n.href=n.format(),n},r.prototype.parseHost=function(){var t=this.host,e=f.exec(t);e&&(e=e[0],":"!==e&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},function(t,e,n){var r;(function(t,i){!function(o){function s(t){throw RangeError(U[t])}function u(t,e){for(var n=t.length,r=[];n--;)r[n]=e(t[n]);return r}function a(t,e){var n=t.split("@"),r="";n.length>1&&(r=n[0]+"@",t=n[1]),t=t.replace(I,".");var i=t.split("."),o=u(i,e).join(".");return r+o}function h(t){for(var e,n,r=[],i=0,o=t.length;i=55296&&e<=56319&&i65535&&(t-=65536,e+=L(t>>>10&1023|55296),t=56320|1023&t),e+=L(t)}).join("")}function f(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:E}function l(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function p(t,e,n){var r=0;for(t=n?j(t/O):t>>1,t+=j(t/e);t>B*A>>1;r+=E)t=j(t/B);return j(r+(B+1)*t/(t+S))}function d(t){var e,n,r,i,o,u,a,h,l,d,g=[],y=t.length,v=0,m=T,b=R;for(n=t.lastIndexOf(x),n<0&&(n=0),r=0;r=128&&s("not-basic"),g.push(t.charCodeAt(r));for(i=n>0?n+1:0;i=y&&s("invalid-input"),h=f(t.charCodeAt(i++)),(h>=E||h>j((w-v)/u))&&s("overflow"),v+=h*u,l=a<=b?_:a>=b+A?A:a-b,!(hj(w/d)&&s("overflow"),u*=d;e=g.length+1,b=p(v-o,e,0==o),j(v/e)>w-m&&s("overflow"),m+=j(v/e),v%=e,g.splice(v++,0,m)}return c(g)}function g(t){var e,n,r,i,o,u,a,c,f,d,g,y,v,m,b,S=[];for(t=h(t),y=t.length,e=T,n=0,o=R,u=0;u=e&&gj((w-n)/v)&&s("overflow"),n+=(a-e)*v,e=a,u=0;uw&&s("overflow"),g==e){for(c=n,f=E;d=f<=o?_:f>=o+A?A:f-o,!(c= 0x80 (not a basic code point)","invalid-input":"Invalid input"},B=E-_,j=Math.floor,L=String.fromCharCode;b={version:"1.3.2",ucs2:{decode:h,encode:c},decode:d,encode:g,toASCII:v,toUnicode:y},r=function(){return b}.call(e,n,e,t),!(void 0!==r&&(t.exports=r))}(this)}).call(e,n(16)(t),function(){return this}())},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e){"use strict";t.exports={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"==typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},function(t,e,n){"use strict";e.decode=e.parse=n(19),e.encode=e.stringify=n(20)},function(t,e){"use strict";function n(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,r,i){e=e||"&",r=r||"=";var o={};if("string"!=typeof t||0===t.length)return o;var s=/\+/g;t=t.split(e);var u=1e3;i&&"number"==typeof i.maxKeys&&(u=i.maxKeys);var a=t.length;u>0&&a>u&&(a=u);for(var h=0;h=0?(c=d.substr(0,g),f=d.substr(g+1)):(c=d,f=""),l=decodeURIComponent(c),p=decodeURIComponent(f),n(o,l)?Array.isArray(o[l])?o[l].push(p):o[l]=[o[l],p]:o[l]=p}return o}},function(t,e){"use strict";var n=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,r,i){return e=e||"&",r=r||"=",null===t&&(t=void 0),"object"==typeof t?Object.keys(t).map(function(i){var o=encodeURIComponent(n(i))+r;return Array.isArray(t[i])?t[i].map(function(t){return o+encodeURIComponent(n(t))}).join(e):o+encodeURIComponent(n(t[i]))}).join(e):i?encodeURIComponent(n(i))+r+encodeURIComponent(n(t)):""}},function(t,e,n){(function(t){/*! +"use strict";function i(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}function o(){return t.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,n){if(o()=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|t}function y(e){return+e!=e&&(e=0),t.alloc(+e)}function v(e,n){if(t.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var i=!1;;)switch(n){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return H(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return $(e).length;default:if(i)return H(e).length;n=(""+n).toLowerCase(),i=!0}}function m(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if(n>>>=0,e>>>=0,n<=e)return"";for(t||(t="utf8");;)switch(t){case"hex":return U(this,e,n);case"utf8":case"utf-8":return C(this,e,n);case"ascii":return I(this,e,n);case"latin1":case"binary":return B(this,e,n);case"base64":return x(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function b(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function w(e,n,r,i,o){if(0===e.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(o)return-1;r=e.length-1}else if(r<0){if(!o)return-1;r=0}if("string"==typeof n&&(n=t.from(n,i)),t.isBuffer(n))return 0===n.length?-1:E(e,n,r,i,o);if("number"==typeof n)return n&=255,t.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,n,r):Uint8Array.prototype.lastIndexOf.call(e,n,r):E(e,[n],r,i,o);throw new TypeError("val must be string, number or Buffer")}function E(t,e,n,r,i){function o(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}var s=1,a=t.length,u=e.length;if(void 0!==r&&(r=String(r).toLowerCase(),"ucs2"===r||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;s=2,a/=2,u/=2,n/=2}var h;if(i){var c=-1;for(h=n;ha&&(n=a-u),h=n;h>=0;h--){for(var f=!0,l=0;li&&(r=i)):r=i;var o=e.length;if(o%2!==0)throw new TypeError("Invalid hex string");r>o/2&&(r=o/2);for(var s=0;s239?4:o>223?3:o>191?2:1;if(i+a<=n){var u,h,c,f;switch(a){case 1:o<128&&(s=o);break;case 2:u=t[i+1],128===(192&u)&&(f=(31&o)<<6|63&u,f>127&&(s=f));break;case 3:u=t[i+1],h=t[i+2],128===(192&u)&&128===(192&h)&&(f=(15&o)<<12|(63&u)<<6|63&h,f>2047&&(f<55296||f>57343)&&(s=f));break;case 4:u=t[i+1],h=t[i+2],c=t[i+3],128===(192&u)&&128===(192&h)&&128===(192&c)&&(f=(15&o)<<18|(63&u)<<12|(63&h)<<6|63&c,f>65535&&f<1114112&&(s=f))}}null===s?(s=65533,a=1):s>65535&&(s-=65536,r.push(s>>>10&1023|55296),s=56320|1023&s),r.push(s),i+=a}return P(r)}function P(t){var e=t.length;if(e<=tt)return String.fromCharCode.apply(String,t);for(var n="",r=0;rr)&&(n=r);for(var i="",o=e;on)throw new RangeError("Trying to access beyond buffer length")}function k(e,n,r,i,o,s){if(!t.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(n>o||ne.length)throw new RangeError("Index out of range")}function z(t,e,n,r){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-n,2);i>>8*(r?i:1-i)}function M(t,e,n,r){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-n,4);i>>8*(r?i:3-i)&255}function N(t,e,n,r,i,o){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function Y(t,e,n,r,i){return i||N(t,e,n,4,3.4028234663852886e38,-3.4028234663852886e38),X.write(t,e,n,r,23,4),n+4}function D(t,e,n,r,i){return i||N(t,e,n,8,1.7976931348623157e308,-1.7976931348623157e308),X.write(t,e,n,r,52,8),n+8}function q(t){if(t=F(t).replace(et,""),t.length<2)return"";for(;t.length%4!==0;)t+="=";return t}function F(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function J(t){return t<16?"0"+t.toString(16):t.toString(16)}function H(t,e){e=e||1/0;for(var n,r=t.length,i=null,o=[],s=0;s55295&&n<57344){if(!i){if(n>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===r){(e-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(n<56320){(e-=3)>-1&&o.push(239,191,189),i=n;continue}n=(i-55296<<10|n-56320)+65536}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,n<128){if((e-=1)<0)break;o.push(n)}else if(n<2048){if((e-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function G(t){for(var e=[],n=0;n>8,i=n%256,o.push(i),o.push(r);return o}function $(t){return K.toByteArray(q(t))}function Z(t,e,n,r){for(var i=0;i=e.length||i>=t.length);++i)e[i+n]=t[i];return i}function V(t){return t!==t}var K=n(3),X=n(4),Q=n(5);e.Buffer=t,e.SlowBuffer=y,e.INSPECT_MAX_BYTES=50,t.TYPED_ARRAY_SUPPORT=void 0!==r.TYPED_ARRAY_SUPPORT?r.TYPED_ARRAY_SUPPORT:i(),e.kMaxLength=o(),t.poolSize=8192,t._augment=function(e){return e.__proto__=t.prototype,e},t.from=function(t,e,n){return a(null,t,e,n)},t.TYPED_ARRAY_SUPPORT&&(t.prototype.__proto__=Uint8Array.prototype,t.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&t[Symbol.species]===t&&Object.defineProperty(t,Symbol.species,{value:null,configurable:!0})),t.alloc=function(t,e,n){return h(null,t,e,n)},t.allocUnsafe=function(t){return c(null,t)},t.allocUnsafeSlow=function(t){return c(null,t)},t.isBuffer=function(t){return!(null==t||!t._isBuffer)},t.compare=function(e,n){if(!t.isBuffer(e)||!t.isBuffer(n))throw new TypeError("Arguments must be Buffers");if(e===n)return 0;for(var r=e.length,i=n.length,o=0,s=Math.min(r,i);o0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),""},t.prototype.compare=function(e,n,r,i,o){if(!t.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===n&&(n=0),void 0===r&&(r=e?e.length:0),void 0===i&&(i=0),void 0===o&&(o=this.length),n<0||r>e.length||i<0||o>this.length)throw new RangeError("out of range index");if(i>=o&&n>=r)return 0;if(i>=o)return-1;if(n>=r)return 1;if(n>>>=0,r>>>=0,i>>>=0,o>>>=0,this===e)return 0;for(var s=o-i,a=r-n,u=Math.min(s,a),h=this.slice(i,o),c=e.slice(n,r),f=0;fi)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return _(this,t,e,n);case"utf8":case"utf-8":return A(this,t,e,n);case"ascii":return S(this,t,e,n);case"latin1":case"binary":return R(this,t,e,n);case"base64":return O(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,e,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},t.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var tt=4096;t.prototype.slice=function(e,n){var r=this.length;e=~~e,n=void 0===n?r:~~n,e<0?(e+=r,e<0&&(e=0)):e>r&&(e=r),n<0?(n+=r,n<0&&(n=0)):n>r&&(n=r),n0&&(i*=256);)r+=this[t+--e]*i;return r},t.prototype.readUInt8=function(t,e){return e||L(t,1,this.length),this[t]},t.prototype.readUInt16LE=function(t,e){return e||L(t,2,this.length),this[t]|this[t+1]<<8},t.prototype.readUInt16BE=function(t,e){return e||L(t,2,this.length),this[t]<<8|this[t+1]},t.prototype.readUInt32LE=function(t,e){return e||L(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},t.prototype.readUInt32BE=function(t,e){return e||L(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},t.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||L(t,e,this.length);for(var r=this[t],i=1,o=0;++o=i&&(r-=Math.pow(2,8*e)),r},t.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||L(t,e,this.length);for(var r=e,i=1,o=this[t+--r];r>0&&(i*=256);)o+=this[t+--r]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},t.prototype.readInt8=function(t,e){return e||L(t,1,this.length),128&this[t]?(255-this[t]+1)*-1:this[t]},t.prototype.readInt16LE=function(t,e){e||L(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},t.prototype.readInt16BE=function(t,e){e||L(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},t.prototype.readInt32LE=function(t,e){return e||L(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},t.prototype.readInt32BE=function(t,e){return e||L(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},t.prototype.readFloatLE=function(t,e){return e||L(t,4,this.length),X.read(this,t,!0,23,4)},t.prototype.readFloatBE=function(t,e){return e||L(t,4,this.length),X.read(this,t,!1,23,4)},t.prototype.readDoubleLE=function(t,e){return e||L(t,8,this.length),X.read(this,t,!0,52,8)},t.prototype.readDoubleBE=function(t,e){return e||L(t,8,this.length),X.read(this,t,!1,52,8)},t.prototype.writeUIntLE=function(t,e,n,r){if(t=+t,e|=0,n|=0,!r){var i=Math.pow(2,8*n)-1;k(this,t,e,n,i,0)}var o=1,s=0;for(this[e]=255&t;++s=0&&(s*=256);)this[e+o]=t/s&255;return e+n},t.prototype.writeUInt8=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,1,255,0),t.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[n]=255&e,n+1},t.prototype.writeUInt16LE=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,2,65535,0),t.TYPED_ARRAY_SUPPORT?(this[n]=255&e,this[n+1]=e>>>8):z(this,e,n,!0),n+2},t.prototype.writeUInt16BE=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,2,65535,0),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>8,this[n+1]=255&e):z(this,e,n,!1),n+2},t.prototype.writeUInt32LE=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,4,4294967295,0),t.TYPED_ARRAY_SUPPORT?(this[n+3]=e>>>24,this[n+2]=e>>>16,this[n+1]=e>>>8,this[n]=255&e):M(this,e,n,!0),n+4},t.prototype.writeUInt32BE=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,4,4294967295,0),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>24,this[n+1]=e>>>16,this[n+2]=e>>>8,this[n+3]=255&e):M(this,e,n,!1),n+4},t.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);k(this,t,e,n,i-1,-i)}var o=0,s=1,a=0;for(this[e]=255&t;++o>0)-a&255;return e+n},t.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);k(this,t,e,n,i-1,-i)}var o=n-1,s=1,a=0;for(this[e+o]=255&t;--o>=0&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+n},t.prototype.writeInt8=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,1,127,-128),t.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[n]=255&e,n+1},t.prototype.writeInt16LE=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,2,32767,-32768),t.TYPED_ARRAY_SUPPORT?(this[n]=255&e,this[n+1]=e>>>8):z(this,e,n,!0),n+2},t.prototype.writeInt16BE=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,2,32767,-32768),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>8,this[n+1]=255&e):z(this,e,n,!1),n+2},t.prototype.writeInt32LE=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,4,2147483647,-2147483648),t.TYPED_ARRAY_SUPPORT?(this[n]=255&e,this[n+1]=e>>>8,this[n+2]=e>>>16,this[n+3]=e>>>24):M(this,e,n,!0),n+4},t.prototype.writeInt32BE=function(e,n,r){return e=+e,n|=0,r||k(this,e,n,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),t.TYPED_ARRAY_SUPPORT?(this[n]=e>>>24,this[n+1]=e>>>16,this[n+2]=e>>>8,this[n+3]=255&e):M(this,e,n,!1),n+4},t.prototype.writeFloatLE=function(t,e,n){return Y(this,t,e,!0,n)},t.prototype.writeFloatBE=function(t,e,n){return Y(this,t,e,!1,n)},t.prototype.writeDoubleLE=function(t,e,n){return D(this,t,e,!0,n)},t.prototype.writeDoubleBE=function(t,e,n){return D(this,t,e,!1,n)},t.prototype.copy=function(e,n,r,i){if(r||(r=0),i||0===i||(i=this.length),n>=e.length&&(n=e.length),n||(n=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-n=0;--o)e[o+n]=this[o+r];else if(s<1e3||!t.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,r=void 0===r?this.length:r>>>0,e||(e=0);var s;if("number"==typeof e)for(s=n;s0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function r(t){return 3*t.length/4-n(t)}function i(t){var e,r,i,o,s,a,u=t.length;s=n(t),a=new c(3*u/4-s),i=s>0?u-4:u;var f=0;for(e=0,r=0;e>16&255,a[f++]=o>>8&255,a[f++]=255&o;return 2===s?(o=h[t.charCodeAt(e)]<<2|h[t.charCodeAt(e+1)]>>4,a[f++]=255&o):1===s&&(o=h[t.charCodeAt(e)]<<10|h[t.charCodeAt(e+1)]<<4|h[t.charCodeAt(e+2)]>>2,a[f++]=o>>8&255,a[f++]=255&o),a}function o(t){return u[t>>18&63]+u[t>>12&63]+u[t>>6&63]+u[63&t]}function s(t,e,n){for(var r,i=[],s=e;sc?c:h+a));return 1===r?(e=t[n-1],i+=u[e>>2],i+=u[e<<4&63],i+="=="):2===r&&(e=(t[n-2]<<8)+t[n-1],i+=u[e>>10],i+=u[e>>4&63],i+=u[e<<2&63],i+="="),o.push(i),o.join("")}e.byteLength=r,e.toByteArray=i,e.fromByteArray=a;for(var u=[],h=[],c="undefined"!=typeof Uint8Array?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=0,p=f.length;l>1,c=-7,f=n?i-1:0,l=n?-1:1,p=t[e+f];for(f+=l,o=p&(1<<-c)-1,p>>=-c,c+=a;c>0;o=256*o+t[e+f],f+=l,c-=8);for(s=o&(1<<-c)-1,o>>=-c,c+=r;c>0;s=256*s+t[e+f],f+=l,c-=8);if(0===o)o=1-h;else{if(o===u)return s?NaN:(p?-1:1)*(1/0);s+=Math.pow(2,r),o-=h}return(p?-1:1)*s*Math.pow(2,o-r)},e.write=function(t,e,n,r,i,o){var s,a,u,h=8*o-i-1,c=(1<>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:o-1,d=r?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=c):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),e+=s+f>=1?l/u:l*Math.pow(2,1-f),e*u>=2&&(s++,u/=2),s+f>=c?(a=0,s=c):s+f>=1?(a=(e*u-1)*Math.pow(2,i),s+=f):(a=e*Math.pow(2,f-1)*Math.pow(2,i),s=0));i>=8;t[n+p]=255&a,p+=d,a/=256,i-=8);for(s=s<0;t[n+p]=255&s,p+=d,s/=256,h-=8);t[n+p-d]|=128*g}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e,n){(function(t,r){function i(t,e){this._id=t,this._clearFn=e}var o=n(7).nextTick,s=Function.prototype.apply,a=Array.prototype.slice,u={},h=0;e.setTimeout=function(){return new i(s.call(setTimeout,window,arguments),clearTimeout)},e.setInterval=function(){return new i(s.call(setInterval,window,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(window,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},e.setImmediate="function"==typeof t?t:function(t){var n=h++,r=!(arguments.length<2)&&a.call(arguments,1);return u[n]=!0,o(function(){u[n]&&(r?t.apply(null,r):t.call(null),e.clearImmediate(n))}),n},e.clearImmediate="function"==typeof r?r:function(t){delete u[t]}}).call(e,n(6).setImmediate,n(6).clearImmediate)},function(t,e){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function i(t){if(c===setTimeout)return setTimeout(t,0);if((c===n||!c)&&setTimeout)return c=setTimeout,setTimeout(t,0);try{return c(t,0)}catch(e){try{return c.call(null,t,0)}catch(e){return c.call(this,t,0)}}}function o(t){if(f===clearTimeout)return clearTimeout(t);if((f===r||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(t);try{return f(t)}catch(e){try{return f.call(null,t)}catch(e){return f.call(this,t)}}}function s(){g&&p&&(g=!1,p.length?d=p.concat(d):y=-1,d.length&&a())}function a(){if(!g){var t=i(s);g=!0;for(var e=d.length;e;){for(p=d,d=[];++y1)for(var n=1;n=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),g(n)?r.showHidden=n:n&&e._extend(r,n),E(r.showHidden)&&(r.showHidden=!1),E(r.depth)&&(r.depth=2),E(r.colors)&&(r.colors=!1),E(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=o),u(r,t,r.depth)}function o(t,e){var n=i.styles[e];return n?"["+i.colors[n][0]+"m"+t+"["+i.colors[n][1]+"m":t}function s(t,e){return t}function a(t){var e={};return t.forEach(function(t,n){e[t]=!0}),e}function u(t,n,r){if(t.customInspect&&n&&O(n.inspect)&&n.inspect!==e.inspect&&(!n.constructor||n.constructor.prototype!==n)){var i=n.inspect(r,t);return b(i)||(i=u(t,i,r)),i}var o=h(t,n);if(o)return o;var s=Object.keys(n),g=a(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(n)),R(n)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return c(n);if(0===s.length){if(O(n)){var y=n.name?": "+n.name:"";return t.stylize("[Function"+y+"]","special")}if(_(n))return t.stylize(RegExp.prototype.toString.call(n),"regexp");if(S(n))return t.stylize(Date.prototype.toString.call(n),"date");if(R(n))return c(n)}var v="",m=!1,w=["{","}"];if(d(n)&&(m=!0,w=["[","]"]),O(n)){var E=n.name?": "+n.name:"";v=" [Function"+E+"]"}if(_(n)&&(v=" "+RegExp.prototype.toString.call(n)),S(n)&&(v=" "+Date.prototype.toUTCString.call(n)),R(n)&&(v=" "+c(n)),0===s.length&&(!m||0==n.length))return w[0]+v+w[1];if(r<0)return _(n)?t.stylize(RegExp.prototype.toString.call(n),"regexp"):t.stylize("[Object]","special");t.seen.push(n);var A;return A=m?f(t,n,r,g,s):s.map(function(e){return l(t,n,r,g,e,m)}),t.seen.pop(),p(A,v,w)}function h(t,e){if(E(e))return t.stylize("undefined","undefined");if(b(e)){var n="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(n,"string")}return m(e)?t.stylize(""+e,"number"):g(e)?t.stylize(""+e,"boolean"):y(e)?t.stylize("null","null"):void 0}function c(t){return"["+Error.prototype.toString.call(t)+"]"}function f(t,e,n,r,i){for(var o=[],s=0,a=e.length;s-1&&(a=o?a.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+a.split("\n").map(function(t){return" "+t}).join("\n"))):a=t.stylize("[Circular]","special")),E(s)){if(o&&i.match(/^\d+$/))return a;s=JSON.stringify(""+i),s.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function p(t,e,n){var r=0,i=t.reduce(function(t,e){return r++,e.indexOf("\n")>=0&&r++,t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?n[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+n[1]:n[0]+e+" "+t.join(", ")+" "+n[1]}function d(t){return Array.isArray(t)}function g(t){return"boolean"==typeof t}function y(t){return null===t}function v(t){return null==t}function m(t){return"number"==typeof t}function b(t){return"string"==typeof t}function w(t){return"symbol"==typeof t}function E(t){return void 0===t}function _(t){return A(t)&&"[object RegExp]"===x(t)}function A(t){return"object"==typeof t&&null!==t}function S(t){return A(t)&&"[object Date]"===x(t)}function R(t){return A(t)&&("[object Error]"===x(t)||t instanceof Error)}function O(t){return"function"==typeof t}function T(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||"undefined"==typeof t}function x(t){return Object.prototype.toString.call(t)}function C(t){return t<10?"0"+t.toString(10):t.toString(10)}function P(){var t=new Date,e=[C(t.getHours()),C(t.getMinutes()),C(t.getSeconds())].join(":");return[t.getDate(),L[t.getMonth()],e].join(" ")}function I(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var B=/%[sdj%]/g;e.format=function(t){if(!b(t)){for(var e=[],n=0;n=o)return t;switch(t){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(t){return"[Circular]"}default:return t}}),a=r[n];n0&&this._events[t].length>i&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace())),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(t,e){function n(){this.removeListener(t,n),i||(i=!0,e.apply(this,arguments))}if(!r(e))throw TypeError("listener must be a function");var i=!1;return n.listener=e,this.on(t,n),this},n.prototype.removeListener=function(t,e){var n,i,s,a;if(!r(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(n=this._events[t],s=n.length,i=-1,n===e||r(n.listener)&&n.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(o(n)){for(a=s;a-- >0;)if(n[a]===e||n[a].listener&&n[a].listener===e){i=a;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[t]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},n.prototype.removeAllListeners=function(t){var e,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[t],r(n))this.removeListener(t,n);else if(n)for(;n.length;)this.removeListener(t,n[n.length-1]);return delete this._events[t],this},n.prototype.listeners=function(t){var e;return e=this._events&&this._events[t]?r(this._events[t])?[this._events[t]]:this._events[t].slice():[]},n.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(r(e))return 1;if(e)return e.length}return 0},n.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e){e.connect=function(t,e){throw"TLS is not supported in the browser. Use WSS instead."}},function(t,e,n){function r(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function i(t,e,n){if(t&&h(t)&&t instanceof r)return t;var i=new r;return i.parse(t,e,n),i}function o(t){return u(t)&&(t=i(t)),t instanceof r?t.format():r.prototype.format.call(t)}function s(t,e){return i(t,!1,!0).resolve(e)}function a(t,e){return t?i(t,!1,!0).resolveObject(e):e}function u(t){return"string"==typeof t}function h(t){return"object"==typeof t&&null!==t}function c(t){return null===t}function f(t){return null==t}var l=n(15);e.parse=i,e.resolve=s,e.resolveObject=a,e.format=o,e.Url=r;var p=/^([a-z0-9.+-]+:)/i,d=/:[0-9]*$/,g=["<",">",'"',"`"," ","\r","\n","\t"],y=["{","}","|","\\","^","`"].concat(g),v=["'"].concat(y),m=["%","/","?",";","#"].concat(v),b=["/","?","#"],w=255,E=/^[a-z0-9A-Z_-]{0,63}$/,_=/^([a-z0-9A-Z_-]{0,63})(.*)$/,A={javascript:!0,"javascript:":!0},S={javascript:!0,"javascript:":!0},R={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},O=n(17);r.prototype.parse=function(t,e,n){if(!u(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var r=t;r=r.trim();var i=p.exec(r);if(i){i=i[0];var o=i.toLowerCase();this.protocol=o,r=r.substr(i.length)}if(n||i||r.match(/^\/\/[^@\/]+@[^@\/]+/)){var s="//"===r.substr(0,2);!s||i&&S[i]||(r=r.substr(2),this.slashes=!0)}if(!S[i]&&(s||i&&!R[i])){for(var a=-1,h=0;h127?"x":x[P];if(!C.match(E)){var B=y.slice(0,h),U=y.slice(h+1),j=x.match(_);j&&(B.push(j[1]),U.unshift(j[2])),U.length&&(r="/"+U.join(".")+r),this.hostname=B.join(".");break}}}if(this.hostname.length>w?this.hostname="":this.hostname=this.hostname.toLowerCase(),!g){for(var L=this.hostname.split("."),k=[],h=0;h0)&&n.host.split("@");y&&(n.auth=y.shift(),n.host=n.hostname=y.shift())}return n.search=t.search,n.query=t.query,c(n.pathname)&&c(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!d.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var v=d.slice(-1)[0],m=(n.host||t.host)&&("."===v||".."===v)||""===v,b=0,w=d.length;w>=0;w--)v=d[w],"."==v?d.splice(w,1):".."===v?(d.splice(w,1),b++):b&&(d.splice(w,1),b--);if(!l&&!p)for(;b--;b)d.unshift("..");!l||""===d[0]||d[0]&&"/"===d[0].charAt(0)||d.unshift(""),m&&"/"!==d.join("/").substr(-1)&&d.push("");var E=""===d[0]||d[0]&&"/"===d[0].charAt(0);if(g){n.hostname=n.host=E?"":d.length?d.shift():"";var y=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@");y&&(n.auth=y.shift(),n.host=n.hostname=y.shift())}return l=l||n.host&&d.length,l&&!E&&d.unshift(""),d.length?n.pathname=d.join("/"):(n.pathname=null,n.path=null),c(n.pathname)&&c(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=t.auth||n.auth,n.slashes=n.slashes||t.slashes,n.href=n.format(),n},r.prototype.parseHost=function(){var t=this.host,e=d.exec(t);e&&(e=e[0],":"!==e&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},function(t,e,n){var r;(function(t,i){!function(o){function s(t){throw RangeError(B[t])}function a(t,e){for(var n=t.length,r=[];n--;)r[n]=e(t[n]);return r}function u(t,e){var n=t.split("@"),r="";n.length>1&&(r=n[0]+"@",t=n[1]),t=t.replace(I,".");var i=t.split("."),o=a(i,e).join(".");return r+o}function h(t){for(var e,n,r=[],i=0,o=t.length;i=55296&&e<=56319&&i65535&&(t-=65536,e+=L(t>>>10&1023|55296),t=56320|1023&t),e+=L(t)}).join("")}function f(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:E}function l(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function p(t,e,n){var r=0;for(t=n?j(t/R):t>>1,t+=j(t/e);t>U*A>>1;r+=E)t=j(t/U);return j(r+(U+1)*t/(t+S))}function d(t){var e,n,r,i,o,a,u,h,l,d,g=[],y=t.length,v=0,m=T,b=O;for(n=t.lastIndexOf(x),n<0&&(n=0),r=0;r=128&&s("not-basic"),g.push(t.charCodeAt(r));for(i=n>0?n+1:0;i=y&&s("invalid-input"),h=f(t.charCodeAt(i++)),(h>=E||h>j((w-v)/a))&&s("overflow"),v+=h*a,l=u<=b?_:u>=b+A?A:u-b,!(hj(w/d)&&s("overflow"),a*=d;e=g.length+1,b=p(v-o,e,0==o),j(v/e)>w-m&&s("overflow"),m+=j(v/e),v%=e,g.splice(v++,0,m)}return c(g)}function g(t){var e,n,r,i,o,a,u,c,f,d,g,y,v,m,b,S=[];for(t=h(t),y=t.length,e=T,n=0,o=O,a=0;a=e&&gj((w-n)/v)&&s("overflow"),n+=(u-e)*v,e=u,a=0;aw&&s("overflow"),g==e){for(c=n,f=E;d=f<=o?_:f>=o+A?A:f-o,!(c= 0x80 (not a basic code point)","invalid-input":"Invalid input"},U=E-_,j=Math.floor,L=String.fromCharCode;b={version:"1.3.2",ucs2:{decode:h,encode:c},decode:d,encode:g,toASCII:v,toUnicode:y},r=function(){return b}.call(e,n,e,t),!(void 0!==r&&(t.exports=r))}(this)}).call(e,n(16)(t),function(){return this}())},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e,n){"use strict";e.decode=e.parse=n(18),e.encode=e.stringify=n(19)},function(t,e){"use strict";function n(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,r,i){e=e||"&",r=r||"=";var o={};if("string"!=typeof t||0===t.length)return o;var s=/\+/g;t=t.split(e);var a=1e3;i&&"number"==typeof i.maxKeys&&(a=i.maxKeys);var u=t.length;a>0&&u>a&&(u=a);for(var h=0;h=0?(c=d.substr(0,g),f=d.substr(g+1)):(c=d,f=""),l=decodeURIComponent(c),p=decodeURIComponent(f),n(o,l)?Array.isArray(o[l])?o[l].push(p):o[l]=[o[l],p]:o[l]=p}return o}},function(t,e){"use strict";var n=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,r,i){return e=e||"&",r=r||"=",null===t&&(t=void 0),"object"==typeof t?Object.keys(t).map(function(i){var o=encodeURIComponent(n(i))+r;return Array.isArray(t[i])?t[i].map(function(t){return o+encodeURIComponent(n(t))}).join(e):o+encodeURIComponent(n(t[i]))}).join(e):i?encodeURIComponent(n(i))+r+encodeURIComponent(n(t)):""}},function(t,e,n){(function(t){/*! * Nats * Copyright(c) 2016 Apcera Inc. All rights reserved. * MIT Licensed */ -"use strict";function r(){this.buf=new t(p),this.init()}var i=n(22),o="0.6.8",s="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",u=36,a=12,h=10,c=0xcfd41b9100000,f=33,l=333,p=a+h;e.version=o,r.prototype.init=function(){this.setPre(),this.initSeqAndInc(),this.fillSeq()},r.prototype.initSeqAndInc=function(){this.seq=Math.floor(Math.random()*c),this.inc=Math.floor(Math.random()*(l-f)+f)},r.prototype.setPre=function(){for(var t=i.randomBytes(a),e=0;e=a;e--)this.buf[e]=s.charCodeAt(t%u),t=Math.floor(t/u)},r.prototype.next=function(){return this.seq+=this.inc,this.seq>c&&this.setPre(),this.initSeqAndInc(),this.fillSeq(),this.buf.toString("ascii")};var d=new r;e.reset=function(){d.init()},e.next=function(){return d.next()},e._global=d}).call(e,n(2).Buffer)},function(t,e){"use strict";var n=window.crypto||window.msCrypto;e.randomBytes=function(t,e){var r=new Uint8Array(t);return t>0&&n.getRandomValues(r),r}}]); \ No newline at end of file +"use strict";function r(){this.buf=new t(p),this.init()}var i=n(21),o="0.6.8",s="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",a=36,u=12,h=10,c=0xcfd41b9100000,f=33,l=333,p=u+h;e.version=o,r.prototype.init=function(){this.setPre(),this.initSeqAndInc(),this.fillSeq()},r.prototype.initSeqAndInc=function(){this.seq=Math.floor(Math.random()*c),this.inc=Math.floor(Math.random()*(l-f)+f)},r.prototype.setPre=function(){for(var t=i.randomBytes(u),e=0;e=u;e--)this.buf[e]=s.charCodeAt(t%a),t=Math.floor(t/a)},r.prototype.next=function(){return this.seq+=this.inc,this.seq>c&&this.setPre(),this.initSeqAndInc(),this.fillSeq(),this.buf.toString("ascii")};var d=new r;e.reset=function(){d.init()},e.next=function(){return d.next()},e._global=d}).call(e,n(2).Buffer)},function(t,e){"use strict";var n=window.crypto||window.msCrypto;e.randomBytes=function(t,e){var r=new Uint8Array(t);return t>0&&n.getRandomValues(r),r}}]); +//# sourceMappingURL=bundle.js.map \ No newline at end of file diff --git a/dist/bundle.js.map b/dist/bundle.js.map new file mode 100644 index 0000000..4e47411 --- /dev/null +++ b/dist/bundle.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///bundle.js","webpack:///webpack/bootstrap 748a10ac1347bc7acd02","webpack:///./bootstrap.js","webpack:///./lib/nats.js","webpack:///./~/buffer/index.js","webpack:///./~/base64-js/index.js","webpack:///./~/ieee754/index.js","webpack:///./~/isarray/index.js","webpack:///./~/timers-browserify/main.js","webpack:///./~/process/browser.js","webpack:///./lib/net.js","webpack:///./~/util/util.js","webpack:///./~/util/support/isBufferBrowser.js","webpack:///./~/util/~/inherits/inherits_browser.js","webpack:///./~/events/events.js","webpack:///./lib/tls.js","webpack:///./~/url/url.js","webpack:///./~/url/~/punycode/punycode.js","webpack:///(webpack)/buildin/module.js","webpack:///./~/querystring/index.js","webpack:///./~/querystring/decode.js","webpack:///./~/querystring/encode.js","webpack:///./lib/nuid.js","webpack:///./lib/crypto.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","window","NATS","Buffer","setImmediate","Client","opts","events","EventEmitter","this","parseOptions","initState","createConnection","shuffle","array","i","length","j","Math","floor","random","temp","Server","url","didConnect","reconnects","net","tls","util","nuid","VERSION","DEFAULT_PORT","DEFAULT_PRE","DEFAULT_URI","MAX_CONTROL_LINE_SIZE","AWAITING_CONTROL","AWAITING_MSG_PAYLOAD","DEFAULT_RECONNECT_TIME_WAIT","DEFAULT_MAX_RECONNECT_ATTEMPTS","MSG","OK","ERR","PING","PONG","INFO","SUBRE","CR_LF","CR_LF_LEN","EMPTY","SPC","SUB","UNSUB","CONNECT","PING_REQUEST","PONG_RESPONSE","BAD_SUBJECT","BAD_MSG","BAD_REPLY","CONN_CLOSED","BAD_JSON_MSG","BAD_AUTHENTICATION","FLUSH_THRESHOLD","version","createInbox","next","connect","inherits","prototype","assignOption","prop","assign","undefined","options","verbose","pedantic","reconnect","maxReconnectAttempts","reconnectTimeWait","encoding","waitOnFirstConnect","port","client","user","pass","token","Error","isEncoding","servers","Array","isArray","forEach","server","push","parse","noRandomize","selectServer","shift","currentServer","auth","split","checkTLSMismatch","info","tls_required","emit","closeStream","tls_verify","cert","connectCB","wasReconnecting","reconnecting","event","wasConnected","flushPending","setupHandlers","stream","on","connected","hadError","closed","scheduleReconnect","exception","splice","data","inbound","concat","processInbound","sendConnect","cs","lang","auth_token","name","write","JSON","stringify","pong","pend","pSize","pending","pongIndex","cmd","cmdLen","isBuffer","byteLength","pongs","pstate","infoReceived","ssid","subs","close","removeAllListeners","end","destroy","pBufs","allBufs","result","join","stripPendingSubs","test","sendCommand","self","sendSubscriptions","protos","sid","hasOwnProperty","proto","sub","qgroup","subject","start","resume","yieldTime","Date","now","buf","toString","exec","payload","subj","parseInt","reply","size","psize","cb","encrypted","tlsOpts","socket","key","unshift","chunks","slice","mbuf","msg","processMsg","pause","bind","received","timeout","expected","clearTimeout","max","unsubscribe","callback","json","e","addServer","uri","flush","opt_callback","publish","opt_reply","psub","ArrayBuffer","isView","from","b","len","copy","str","subscribe","queue","opt_max","setTimeout","request","opt_msg","opt_options","inbox","s","numSubscriptions","Object","keys","wait","global","typedArraySupport","arr","Uint8Array","__proto__","foo","subarray","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","arg","encodingOrOffset","allocUnsafe","value","TypeError","fromArrayBuffer","fromString","fromObject","assertSize","alloc","fill","checked","string","actual","fromArrayLike","byteOffset","obj","buffer","isnan","type","SlowBuffer","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","bidirectionalIndexOf","val","dir","isNaN","arrayIndexOf","indexOf","lastIndexOf","read","indexSize","readUInt16BE","arrLength","valLength","String","foundIndex","found","hexWrite","offset","Number","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","base64","fromByteArray","min","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","ieee754","writeDouble","base64clean","stringtrim","replace","INVALID_BASE64_RE","trim","units","Infinity","leadSurrogate","charCodeAt","byteArray","hi","lo","toByteArray","src","dst","INSPECT_MAX_BYTES","poolSize","_augment","Symbol","species","defineProperty","configurable","allocUnsafeSlow","_isBuffer","compare","a","x","y","list","pos","swap16","swap32","swap64","arguments","equals","inspect","match","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","code","placeHoldersCount","b64","l","tmp","placeHolders","Arr","L","revLookup","tripletToBase64","num","lookup","encodeChunk","uint8","output","extraBytes","parts","maxChunkLength","len2","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","d","NaN","rt","abs","log","LN2","clearImmediate","Timeout","clearFn","_id","_clearFn","nextTick","Function","immediateIds","nextImmediateId","setInterval","clearInterval","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","fn","args","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","cleanUpNextTick","draining","currentQueue","queueIndex","drainQueue","run","Item","noop","process","title","browser","env","argv","versions","addListener","once","off","removeListener","binding","cwd","chdir","umask","WebSocketProxy","sock","WebSocket","addEventListener","readyState","CONNECTING","OPEN","send","console","warn","format","protocol","slashes","host","hostname","pathname","search","path","query","hash","ctx","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","styleType","style","styles","arrayToHash","idx","recurseTimes","isFunction","constructor","isString","primitive","formatPrimitive","visibleKeys","getOwnPropertyNames","isError","formatError","isRegExp","RegExp","isDate","base","braces","toUTCString","formatArray","map","formatProperty","pop","reduceToSingleString","simple","isNumber","isNull","desc","getOwnPropertyDescriptor","get","line","numLinesEst","reduce","prev","cur","ar","isNullOrUndefined","isSymbol","re","isObject","objectToString","isPrimitive","o","pad","timestamp","time","getHours","getMinutes","getSeconds","getDate","months","getMonth","formatRegExp","f","objects","_","deprecate","deprecated","warned","throwDeprecation","traceDeprecation","trace","error","noDeprecation","debugEnviron","debugs","debuglog","NODE_DEBUG","toUpperCase","pid","bold","italic","underline","inverse","white","grey","black","blue","cyan","green","magenta","red","yellow","special","number","boolean","null","date","regexp","origin","add","create","ctor","superCtor","super_","enumerable","writable","TempCtor","_events","_maxListeners","defaultMaxListeners","setMaxListeners","er","handler","listeners","err","context","listener","newListener","g","fired","position","listenerCount","evlistener","emitter","Url","href","urlParse","parseQueryString","slashesDenoteHost","u","urlFormat","urlResolve","source","relative","resolve","urlResolveObject","resolveObject","punycode","protocolPattern","portPattern","delims","unwise","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","querystring","rest","lowerProto","hostEnd","hec","atSign","decodeURIComponent","parseHost","ipv6Hostname","hostparts","part","newpart","k","validParts","notHost","bit","domainArray","newOut","encode","h","ae","esc","encodeURIComponent","escape","qm","charAt","rel","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","last","hasTrailingSlash","up","isAbsolute","__WEBPACK_AMD_DEFINE_RESULT__","root","errors","mapDomain","regexSeparators","labels","encoded","ucs2decode","extra","counter","ucs2encode","stringFromCharCode","basicToDigit","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","damp","baseMinusTMin","tMax","skew","decode","input","basic","index","oldi","w","t","baseMinusT","inputLength","initialN","bias","initialBias","delimiter","maxInt","tMin","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","toASCII","regexNonASCII","freeGlobal","nodeType","overflow","not-basic","invalid-input","ucs2","webpackPolyfill","paths","children","qs","sep","eq","maxKeys","kstr","vstr","v","stringifyPrimitive","ks","Nuid","totalLen","init","crypto","digits","preLen","seqLen","maxSeq","minInc","maxInc","setPre","initSeqAndInc","fillSeq","seq","inc","cbuf","randomBytes","di","reset","_global","msCrypto","getRandomValues"],"mappings":"CAAS,SAAUA,GCInB,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAE,WACAE,GAAAJ,EACAK,QAAA,EAUA,OANAP,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,GAGAI,EAAAE,QAAA,EAGAF,EAAAD,QAvBA,GAAAD,KAqCA,OATAF,GAAAQ,EAAAT,EAGAC,EAAAS,EAAAP,EAGAF,EAAAU,EAAA,SAGAV,EAAA,KDMM,SAASI,EAAQD,EAASH,GE5ChCW,OAAAC,KAAAZ,EAAA,IFmDM,SAASI,EAAQD,EAASH,IGnDhC,SAAAa,EAAAC;;;;;;AAQA,YAiGA,SAAAC,GAAAC,GACAC,EAAAC,aAAAX,KAAAY,MACAA,KAAAC,aAAAJ,GACAG,KAAAE,YACAF,KAAAG,mBAwCA,QAAAC,GAAAC,GACA,OAAAC,GAAAD,EAAAE,OAAA,EAAgCD,EAAA,EAAOA,IAAA,CACvC,GAAAE,GAAAC,KAAAC,MAAAD,KAAAE,UAAAL,EAAA,IACAM,EAAAP,EAAAC,EACAD,GAAAC,GAAAD,EAAAG,GACAH,EAAAG,GAAAI,EAEA,MAAAP,GAyGA,QAAAQ,GAAAC,GACAd,KAAAc,MACAd,KAAAe,YAAA,EACAf,KAAAgB,WAAA,EA1PA,GAAAC,GAAApC,EAAA,GACAqC,EAAArC,EAAA,IACAiC,EAAAjC,EAAA,IACAsC,EAAAtC,EAAA,GACAiB,EAAAjB,EAAA,IACAuC,EAAAvC,EAAA,IAMAwC,EAAA,QAEAC,EAAA,KACAC,EAAA,oBACAC,EAAAD,EAAAD,EAEAG,EAAA,IAGAC,EAAA,EACAC,EAAA,EAGAC,EAAA,IACAC,EAAA,GAKAC,EAAA,2EACAC,EAAA,gBACAC,EAAA,uBACAC,EAAA,aACAC,EAAA,aACAC,EAAA,0BACAC,EAAA,yBAEAC,EAAA,OACAC,EAAAD,EAAA9B,OAEAgC,GADA,GAAA7C,GAAA2C,GACA,IACAG,EAAA,IAIAC,EAAA,MACAC,EAAA,QACAC,EAAA,UAGAC,EAAA,OAAAP,EACAQ,EAAA,OAAAR,EAGAS,EAAA,2BACAC,EAAA,8BACAC,EAAA,4BACAC,EAAA,oBACAC,EAAA,kCACAC,EAAA,0CAMAC,EAAA,KAMApE,GAAAqE,QAAAhC,CAQA,IAAAiC,GAAAtE,EAAAsE,YAAA,WACA,gBAAAlC,EAAAmC,OA2BAvE,GAAAwE,QAAA,SAAA3D,GACA,UAAAD,GAAAC,IAOAsB,EAAAsC,SAAA7D,EAAAE,EAAAC,cAQAH,EAAA8D,UAAAJ,cAEA1D,EAAA8D,UAAAC,aAAA,SAAA9D,EAAA+D,EAAAC,GACAC,SAAAD,IACAA,EAAAD,GAEAE,SAAAjE,EAAA+D,KACA5D,KAAA+D,QAAAF,GAAAhE,EAAA+D,KAqBAhE,EAAA8D,UAAAzD,aAAA,SAAAJ,GACA,GAAAkE,GAAA/D,KAAA+D,SACAC,SAAA,EACAC,UAAA,EACAC,WAAA,EACAC,qBAAAtC,EACAuC,kBAAAxC,EACAyC,SAAA,OACAnD,KAAA,EACAoD,oBAAA,EAGAR,UAAAjE,EACAkE,EAAAjD,IAAAU,EACG,gBAAA3B,GACHkE,EAAAjD,IAAAS,EAAA1B,EACG,gBAAAA,GACHkE,EAAAjD,IAAAjB,EACG,gBAAAA,KACHiE,SAAAjE,EAAA0E,OACAR,EAAAjD,IAAAS,EAAA1B,EAAA0E,MAGAvE,KAAA2D,aAAA9D,EAAA,OACAG,KAAA2D,aAAA9D,EAAA,aACAG,KAAA2D,aAAA9D,EAAA,QACAG,KAAA2D,aAAA9D,EAAA,QACAG,KAAA2D,aAAA9D,EAAA,SACAG,KAAA2D,aAAA9D,EAAA,mBACAG,KAAA2D,aAAA9D,EAAA,WACAG,KAAA2D,aAAA9D,EAAA,YACAG,KAAA2D,aAAA9D,EAAA,aACAG,KAAA2D,aAAA9D,EAAA,wBACAG,KAAA2D,aAAA9D,EAAA,qBACAG,KAAA2D,aAAA9D,EAAA,WACAG,KAAA2D,aAAA9D,EAAA,kBACAG,KAAA2D,aAAA9D,EAAA,eACAG,KAAA2D,aAAA9D,EAAA,6BACAG,KAAA2D,aAAA9D,EAAA,+BACAG,KAAA2D,aAAA9D,EAAA,YACAG,KAAA2D,aAAA9D,EAAA,OACAG,KAAA2D,aAAA9D,EAAA,gBACAG,KAAA2D,aAAA9D,EAAA,QACAG,KAAA2D,aAAA9D,EAAA,iBACAG,KAAA2D,aAAA9D,EAAA,aACAG,KAAA2D,aAAA9D,EAAA,sBACAG,KAAA2D,aAAA9D,EAAA,QAGA,IAAA2E,GAAAxE,IAUA,IAPAwE,EAAAC,KAAAV,EAAAU,KACAD,EAAAE,KAAAX,EAAAW,KAGAF,EAAAG,MAAAZ,EAAAY,MAGAH,EAAAC,MAAAD,EAAAG,MACA,SAAAC,OAAAzB,EAIA,KAAAzD,EAAAmF,WAAAd,EAAAM,UAGA,SAAAO,OAAA,oBAAAb,EAAAM,SAFAG,GAAAH,SAAAN,EAAAM,SAKAG,EAAAM,WAEAC,MAAAC,QAAAjB,EAAAe,SACAf,EAAAe,QAAAG,QAAA,SAAAC,GACAV,EAAAM,QAAAK,KAAA,GAAAtE,GAAAC,EAAAsE,MAAAF,QAGApB,SAAAC,EAAAjD,MACAiD,EAAAjD,IAAAU,GAEAgD,EAAAM,QAAAK,KAAA,GAAAtE,GAAAC,EAAAsE,MAAArB,EAAAjD,QAIAiD,EAAAsB,eAAA,GACAjF,EAAAoE,EAAAM,UAyBAlF,EAAA8D,UAAA4B,aAAA,WACA,GAAAd,GAAAxE,KACAkF,EAAAV,EAAAM,QAAAS,OAKA,IAFAf,EAAAgB,cAAAN,EACAV,EAAA1D,IAAAoE,EAAApE,IACA,QAAAoE,GAAApE,KAAAoE,EAAApE,IAAA2E,KAAA,CACA,GAAAA,GAAAP,EAAApE,IAAA2E,KAAAC,MAAA,IACA,KAAAD,EAAAlF,QACAuD,SAAAU,EAAAT,QAAAU,OACAD,EAAAC,KAAAgB,EAAA,IAEA3B,SAAAU,EAAAT,QAAAW,OACAF,EAAAE,KAAAe,EAAA,KAGA3B,SAAAU,EAAAT,QAAAY,QACAH,EAAAG,MAAAc,EAAA,IAIAjB,EAAAM,QAAAK,KAAAD,IASAtF,EAAA8D,UAAAiC,iBAAA,WACA,MAAA3F,MAAA4F,KAAAC,gBAAA,GACA7F,KAAA+D,QAAA7C,OAAA,GACAlB,KAAA8F,KAAA,gDACA9F,KAAA+F,eACA,GAGA/F,KAAA4F,KAAAC,gBAAA,GACA7F,KAAA+D,QAAA7C,OAAA,GACAlB,KAAA8F,KAAA,wDACA9F,KAAA+F,eACA,GAGA/F,KAAA4F,KAAAI,cAAA,GACAlC,SAAA9D,KAAA+D,QAAA7C,IAAA+E,OACAjG,KAAA8F,KAAA,iDACA9F,KAAA+F,eACA,IAWAnG,EAAA8D,UAAAwC,UAAA,WACA,GAAAC,GAAAnG,KAAAoG,aACAC,EAAAF,KAAA,uBACAnG,MAAAoG,cAAA,EACApG,KAAAgB,WAAA,EACAhB,KAAAsG,cAAA,EACAtG,KAAAwF,cAAAzE,YAAA,EAEAf,KAAA8F,KAAAO,EAAArG,MAEAA,KAAAuG,gBAUA3G,EAAA8D,UAAA8C,cAAA,WACA,GAAAhC,GAAAxE,KACAyG,EAAAjC,EAAAiC,MAEA3C,UAAA2C,IAIAA,EAAAC,GAAA,qBACAlC,EAAAmC,WAAA,IAGAF,EAAAC,GAAA,iBAAAE,GACApC,EAAAuB,cACAvB,EAAAsB,KAAA,cACAtB,EAAAqC,UAAA,GACArC,EAAAT,QAAAG,aAAA,GACAM,EAAAxD,YAAAwD,EAAAT,QAAAI,sBAAAK,EAAAT,QAAAI,wBAAA,EACAK,EAAAsB,KAAA,SAEAtB,EAAAsC,sBAIAL,EAAAC,GAAA,iBAAAK,GAEAvC,EAAA8B,gBAAA,GAAA9B,EAAAgB,cAAAzE,cAAA,IAOAyD,EAAA8B,gBAAA,GAAA9B,EAAAgB,cAAAzE,cAAA,IAGAyD,EAAAT,QAAAO,mBAEAE,EAAAgB,cAAAzE,YAAA,EAEAyD,EAAAM,QAAAkC,OAAAxC,EAAAM,QAAAvE,OAAA,MAMAiE,EAAA8B,gBAAA,OAAA9B,EAAAM,QAAAvE,QACAiE,EAAAsB,KAAA,wCAAAiB,GAEAvC,EAAAuB,iBAGAU,EAAAC,GAAA,gBAAAO,GAIAzC,EAAA0C,QACA1C,EAAA0C,QAAAxH,EAAAyH,QAAA3C,EAAA0C,QAAAD,IAEAzC,EAAA0C,QAAAD,EAIAzC,EAAA4C,qBAWAxH,EAAA8D,UAAA2D,YAAA,WAEA,GAAAC,IACAC,KAAA,OACAlE,QAAAhC,EACA2C,QAAAhE,KAAA+D,QAAAC,QACAC,SAAAjE,KAAA+D,QAAAE,SAEAH,UAAA9D,KAAAyE,OACA6C,EAAA7C,KAAAzE,KAAAyE,KACA6C,EAAA5C,KAAA1E,KAAA0E,MAEAZ,SAAA9D,KAAA2E,QACA2C,EAAAE,WAAAxH,KAAA2E,OAEAb,SAAA9D,KAAA+D,QAAA0D,OACAH,EAAAG,KAAAzH,KAAA+D,QAAA0D,MAMAzH,KAAAyG,OAAAiB,MAAA/E,EAAAH,EAAAmF,KAAAC,UAAAN,GAAAjF,IASAzC,EAAA8D,UAAAvD,iBAAA,WAWA,GAAA0H,MACAC,KACAC,EAAA,EACAvD,EAAAxE,IACA,WAAAwE,EAAAwD,QAAA,CACA,GAAAC,GAAA,CACAzD,GAAAwD,QAAA/C,QAAA,SAAAiD,GACA,GAAAC,GAAAzI,EAAA0I,SAAAF,KAAA3H,OAAAb,EAAA2I,WAAAH,EACA,IAAAA,IAAAtF,GAAA,OAAA4B,EAAA8D,OAAAL,EAAAzD,EAAA8D,MAAA/H,OAAA,CAEA,GAAAhB,GAAAiF,EAAA8D,MAAAL,IACAnE,UAAAvE,IACAuI,EAAA3C,KAAA+C,GACAH,GAAAI,EACAN,EAAA1C,KAAA5F,QAEO2I,GAAA3H,OAAA,QAAA2H,EAAA,SAAAA,EAAA,SAAAA,EAAA,KACPJ,EAAA3C,KAAA+C,GACAH,GAAAI,KAIAnI,KAAAsI,MAAAT,EACA7H,KAAAgI,QAAAF,EACA9H,KAAA+H,QAEA/H,KAAAuI,OAAA7G,EAGA1B,KAAA4F,KAAA,KACA5F,KAAAwI,cAAA,EAGAxI,KAAAsF,eAEAtF,KAAAyG,OAAAxF,EAAAd,iBAAAH,KAAAc,KAEAd,KAAAwG,iBASA5G,EAAA8D,UAAAxD,UAAA,WACAF,KAAAyI,KAAA,EACAzI,KAAA0I,QACA1I,KAAAgB,WAAA,EACAhB,KAAA2G,WAAA,EACA3G,KAAAsG,cAAA,EACAtG,KAAAoG,cAAA,EACApG,KAAAkF,OAAA,KACAlF,KAAAgI,YASApI,EAAA8D,UAAAiF,MAAA,WACA3I,KAAA6G,QAAA,EACA7G,KAAA4I,qBACA5I,KAAA+F,cACA/F,KAAAyI,MAAA,EACAzI,KAAA0I,KAAA,KACA1I,KAAAuI,QAAA,EACAvI,KAAAsI,MAAA,KACAtI,KAAAgI,QAAA,KACAhI,KAAA+H,MAAA,GASAnI,EAAA8D,UAAAqC,YAAA,WACA,OAAA/F,KAAAyG,SACAzG,KAAAyG,OAAAoC,MACA7I,KAAAyG,OAAAqC,UACA9I,KAAAyG,OAAA,MAEAzG,KAAA2G,aAAA,GAAA3G,KAAA6G,UAAA,IACA7G,KAAAsI,MAAA,KACAtI,KAAAgI,QAAA,KACAhI,KAAA+H,MAAA,EACA/H,KAAA2G,WAAA,GAEA3G,KAAAkH,QAAA,MASAtH,EAAA8D,UAAA6C,aAAA,WACA,GAAAvG,KAAA2G,aAAA,GACA,OAAA3G,KAAAgI,SACA,IAAAhI,KAAAgI,QAAAzH,QACAP,KAAAwI,gBAAA,EAHA,CAOA,GAAAhE,GAAAxE,KACA0H,EAAA,SAAAT,GAGA,MAFAzC,GAAAwD,WACAxD,EAAAuD,MAAA,EACAvD,EAAAiC,OAAAiB,MAAAT,GAEA,IAAAjH,KAAA+I,MAGG,CAGH,OADAC,IAAA,EACA1I,EAAA,EAAiBA,EAAAN,KAAAgI,QAAAzH,OAAyBD,IAC1C,IAAAZ,EAAA0I,SAAApI,KAAAgI,QAAA1H,IAAA,CACA0I,GAAA,CACA,OAIA,GAAAA,EACA,MAAAtB,GAAAhI,EAAAyH,OAAAnH,KAAAgI,QAAAhI,KAAA+H,OAGA,IAAAC,GAAAhI,KAAAgI,OACAhI,MAAAgI,WACAhI,KAAA+H,MAAA,CACA,IAAAkB,IAAA,CACA,KAAA3I,EAAA,EAAeA,EAAA0H,EAAAzH,OAAoBD,IACnC2I,EAAAjJ,KAAAyG,OAAAiB,MAAAM,EAAA1H,KAAA2I,CAEA,OAAAA,GAtBA,MAAAvB,GAAA1H,KAAAgI,QAAAkB,KAAA3G,MAkCA3C,EAAA8D,UAAAyF,iBAAA,WACA,GAAAnB,GAAAhI,KAAAgI,OACAhI,MAAAgI,WACAhI,KAAA+H,MAAA,CACA,QAAAzH,GAAA,EAAeA,EAAA0H,EAAAzH,OAAoBD,IACnC8B,EAAAgH,KAAApB,EAAA1H,KAEAN,KAAAqJ,YAAArB,EAAA1H,KAWAV,EAAA8D,UAAA2F,YAAA,SAAAnB,GAIA,IAAAlI,KAAA6G,QAAA,OAAA7G,KAAAgI,UAEAhI,KAAAgI,QAAA7C,KAAA+C,GACAxI,EAAA0I,SAAAF,IAGAlI,KAAA+H,OAAAG,EAAA3H,OACAP,KAAA+I,OAAA,GAHA/I,KAAA+H,OAAArI,EAAA2I,WAAAH,GAMAlI,KAAA2G,aAAA,GAEA,OAAA3G,KAAAgI,QAAAzH,OAAA,CACA,GAAA+I,GAAAtJ,IACAL,GAAA,WACA2J,EAAA/C,qBAEKvG,MAAA+H,MAAA3E,GAELpD,KAAAuG,gBAWA3G,EAAA8D,UAAA6F,kBAAA,WACA,GAAAC,GAAA,EACA,QAAAC,KAAAzJ,MAAA0I,KACA,GAAA1I,KAAA0I,KAAAgB,eAAAD,GAAA,CACA,GACAE,GADAC,EAAA5J,KAAA0I,KAAAe,EAGAE,GADAC,EAAAC,QACApH,EAAAmH,EAAAE,QAAAF,EAAAC,OAAAJ,EAAApH,IAEAI,EAAAmH,EAAAE,QAAAL,EAAApH,GAEAmH,GAAAG,EAAAT,KAAA1G,GAGAgH,EAAAjJ,OAAA,GACAP,KAAAyG,OAAAiB,MAAA8B,IAUA5J,EAAA8D,UAAA0D,eAAA,WACA,GAGA/H,GAGA0K,EANAvF,EAAAxE,IAkBA,KARAwE,EAAAiC,OAAAuD,SAIAlG,SAAAU,EAAAT,QAAAkG,YACAF,EAAAG,KAAAC,QAGA3F,EAAAqC,QAAArC,EAAA0C,SAAA1C,EAAA0C,QAAA3G,OAAA,IACA,OAAAiE,EAAA+D,QAEA,IAAA7G,GAGA,GAAA0I,GAAA5F,EAAA0C,QAAAmD,SAAA,WAAA5I,EACA,YAAApC,EAAAyC,EAAAwI,KAAAF,IACA5F,EAAA+F,SACAC,KAAAnL,EAAA,GACAoK,IAAAgB,SAAApL,EAAA,OACAqL,MAAArL,EAAA,GACAsL,KAAAF,SAAApL,EAAA,QAEAmF,EAAA+F,QAAAK,MAAApG,EAAA+F,QAAAI,KAAArI,EACAkC,EAAA+D,OAAA5G,MACO,YAAAtC,EAAA0C,EAAAuI,KAAAF,SAEA,YAAA/K,EAAA2C,EAAAsI,KAAAF,IACP5F,EAAAsB,KAAA,QAAAzG,EAAA,QACO,YAAAA,EAAA6C,EAAAoI,KAAAF,IAAA,CACP,GAAAS,GAAArG,EAAA8D,OAAA9D,EAAA8D,MAAA/C,OACAsF,IAAiBA,QACV,YAAAxL,EAAA4C,EAAAqI,KAAAF,IACP5F,EAAA6E,YAAAxG,OACO,YAAAxD,EAAA8C,EAAAmI,KAAAF,IAsCP,MAnCA,IAFA5F,EAAAoB,KAAA+B,KAAAvC,MAAA/F,EAAA,IAEAmF,EAAAmB,sBAAA,EACA,MAGA,IAAAnB,EAAAgE,gBAAA,GAEA,GAAAhE,EAAAT,QAAA7C,OAAA,GACAsD,EAAAiC,OAAAqE,aAAA,GACA,GAAAC,IAAoBC,OAAAxG,EAAAiC,OACpB,oBAAAjC,GAAAT,QAAA7C,IACA,OAAA+J,KAAAzG,GAAAT,QAAA7C,IACA6J,EAAAE,GAAAzG,EAAAT,QAAA7C,IAAA+J,EAGAzG,GAAAiC,OAAAvF,EAAAsC,QAAAuH,EAAA,WACAvG,EAAA+B,iBAEA/B,EAAAgC,gBAIAhC,EAAA6C,cACA7C,EAAA+E,oBAEA/E,EAAA8D,MAAA4C,QAAA,WAAoC1G,EAAA0B,cACpC1B,EAAAiC,OAAAiB,MAAA9E,GAGA4B,EAAAgE,cAAA,EACAhE,EAAA2E,mBACA3E,EAAA+B,gBAOA,KAEA,KAAA5E,GAOA,GAAA6C,EAAA0C,QAAA3G,OAAAiE,EAAA+F,QAAAK,MAOA,MANA9G,UAAAU,EAAA+F,QAAAY,SACA3G,EAAA+F,QAAAY,WAEA3G,EAAA+F,QAAAY,OAAAhG,KAAAX,EAAA0C,SACA1C,EAAA+F,QAAAK,OAAApG,EAAA0C,QAAA3G,YACAiE,EAAA0C,QAAA,KAMA,IAAA1C,EAAA+F,QAAAY,OAAA,CACA3G,EAAA+F,QAAAY,OAAAhG,KAAAX,EAAA0C,QAAAkE,MAAA,EAAA5G,EAAA+F,QAAAK,OACA,IAAAS,GAAA3L,EAAAyH,OAAA3C,EAAA+F,QAAAY,OAAA3G,EAAA+F,QAAAI,KAAArI,EACAkC,GAAA+F,QAAAe,IAAAD,EAAAhB,SAAA7F,EAAAH,SAAA,EAAAG,EAAA+F,QAAAI,UAEAnG,GAAA+F,QAAAe,IAAA9G,EAAA0C,QAAAmD,SAAA7F,EAAAH,SAAA,EAAAG,EAAA+F,QAAAI,KAkBA,IAdAnG,EAAA0C,QAAA3G,SAAAiE,EAAA+F,QAAAK,MACApG,EAAA0C,QAAA,KAEA1C,EAAA0C,QAAA1C,EAAA0C,QAAAkE,MAAA5G,EAAA+F,QAAAK,OAIApG,EAAA+G,aAGA/G,EAAA+D,OAAA7G,EACA8C,EAAA+F,QAAA,KAGAzG,SAAAiG,GACAG,KAAAC,MAAAJ,EAAAvF,EAAAT,QAAAkG,UAGA,MAFAzF,GAAAiC,OAAA+E,YACA7L,GAAA6E,EAAA4C,eAAAqE,KAAAzL,OAQA,GAAAX,IAAAW,KAAA6G,OAAA,CAEA,GAAA+D,GAAAvL,EAAA,GAAAkB,MACAqK,IAAApG,EAAA0C,QAAA3G,OACAiE,EAAA0C,QAAA,KAEA1C,EAAA0C,QAAA1C,EAAA0C,QAAAkE,MAAAR,GAGAvL,EAAA,OAUAO,EAAA8D,UAAA6H,WAAA,WACA,GAAA3B,GAAA5J,KAAA0I,KAAA1I,KAAAuK,QAAAd,IACA,IAAA3F,SAAA8F,IACAA,EAAA8B,UAAA,EAEA9B,EAAA+B,SACA/B,EAAA8B,UAAA9B,EAAAgC,WACAC,aAAAjC,EAAA+B,SACA/B,EAAA+B,QAAA,MAIA7H,SAAA8F,EAAAkC,MACAlC,EAAA8B,WAAA9B,EAAAkC,WACA9L,MAAA0I,KAAA1I,KAAAuK,QAAAd,KACAzJ,KAAA8F,KAAA,cAAA9F,KAAAuK,QAAAd,IAAAG,EAAAE,UACOF,EAAA8B,SAAA9B,EAAAkC,MACP9L,KAAA+L,YAAA/L,KAAAuK,QAAAd,KACAG,EAAAoC,SAAA,OAIApC,EAAAoC,UAAA,CACA,GAAAV,GAAAtL,KAAAuK,QAAAe,GACA,IAAAtL,KAAA+D,QAAAkI,KACA,IACAX,EAAA3D,KAAAvC,MAAA,GAAA1F,GAAAM,KAAAuK,QAAAe,IAAAtL,KAAA+D,QAAAM,UAAAgG,YACS,MAAA6B,GACTZ,EAAAY,EAGAtC,EAAAoC,SAAAV,EAAAtL,KAAAuK,QAAAG,MAAA1K,KAAAuK,QAAAC,KAAAxK,KAAAuK,QAAAd,OAYA7J,EAAA8D,UAAAyI,UAAA,SAAAC,GACApM,KAAA8E,QAAAK,KAAA,GAAAtE,GAAAC,EAAAsE,MAAAgH,KAEApM,KAAA+D,QAAAsB,eAAA,GACAjF,EAAAJ,KAAA8E,UAYAlF,EAAA8D,UAAA2I,MAAA,SAAAC,GACA,GAAAtM,KAAA6G,OAAA,CACA,qBAAAyF,GAEA,WADAA,GAAA,GAAA1H,OAAA3B,GAGA,UAAA2B,OAAA3B,GAGAjD,KAAAsI,QACAtI,KAAAsI,MAAAnD,KAAAmH,GACAtM,KAAAqJ,YAAAzG,GACA5C,KAAAuG,iBAcA3G,EAAA8D,UAAA6I,QAAA,SAAAzC,EAAAwB,EAAAkB,EAAAF,GAOA,GALA,kBAAAxC,KACAwC,EAAAxC,EACAA,EAAAhG,QAEAwH,IAAaA,EAAA/I,IACbuH,EAAA,CACA,IAAAwC,EAGA,SAAA1H,OAAA9B,EAFAwJ,GAAA,GAAA1H,OAAA9B,IAKA,qBAAAwI,GAAA,CACA,GAAAgB,GAAAE,EAEA,WADAF,GAAA,GAAA1H,OAAA7B,GAGAuJ,GAAAhB,EACAA,EAAA/I,EACAiK,EAAA1I,OAEA,qBAAA0I,GAAA,CACA,GAAAF,EAEA,WADAA,GAAA,GAAA1H,OAAA5B,GAGAsJ,GAAAE,EACAA,EAAA1I,OAIA,GAAA2I,EAYA,IAVAA,EADA3I,SAAA0I,EACA,OAAA1C,EAAAtH,EAEA,OAAAsH,EAAAtH,EAAAgK,EAAAhK,EAGA,eAAAhD,SAAAkN,YAAAC,OAAArB,KACAA,EAAA5L,EAAAkN,KAAAtB,IAIA5L,EAAA0I,SAAAkD,GAaG,CACH,GAAAuB,GAAA,GAAAnN,GAAA+M,EAAAlM,OAAA+K,EAAA/K,OAAA,EAAA+B,EAAAgJ,EAAA/K,OAAA8J,WAAA9J,QACAuM,EAAAD,EAAAnF,MAAA+E,EAAAnB,EAAA/K,OAAA8B,EACAiJ,GAAAyB,KAAAF,EAAAC,GACAD,EAAAnF,MAAArF,EAAAyK,EAAAxB,EAAA/K,QACAP,KAAAqJ,YAAAwD,OAlBA,CACA,GAAAG,GAAA1B,CACA,IAAAtL,KAAA+D,QAAAkI,KAAA,CACA,mBAAAX,IAAAvG,MAAAC,QAAAsG,GACA,SAAA1G,OAAA1B,EAEA,KACA8J,EAAArF,KAAAC,UAAA0D,GACO,MAAAY,GACP,SAAAtH,OAAA1B,IAGAlD,KAAAqJ,YAAAoD,EAAA/M,EAAA2I,WAAA2E,GAAA3K,EAAA2K,EAAA3K,GASA,GAAAyB,SAAAwI,EACAtM,KAAAqM,MAAAC,OACG,IAAAtM,KAAA6G,OACH,SAAAjC,OAAA3B,IAeArD,EAAA8D,UAAAuJ,UAAA,SAAAnD,EAAAjK,EAAAmM,GACA,GAAAhM,KAAA6G,OACA,SAAAjC,OAAA3B,EAEA,IAAA4G,GAAAiC,CACA,mBAAAjM,IACAmM,EAAAnM,EACAA,EAAAiE,QACGjE,GAAA,gBAAAA,KAEHgK,EAAAhK,EAAAqN,MACApB,EAAAjM,EAAAiM,KAEA9L,KAAAyI,MAAA,EACAzI,KAAA0I,KAAA1I,KAAAyI,OAA0BqB,UAAAkC,WAAAN,SAAA,EAE1B,IAAA/B,EAcA,OAbA,gBAAAE,IACA7J,KAAA0I,KAAA1I,KAAAyI,MAAAoB,SACAF,GAAAlH,EAAAqH,EAAAD,EAAA7J,KAAAyI,KAAApG,IAEAsH,GAAAlH,EAAAqH,EAAA9J,KAAAyI,KAAApG,GAGArC,KAAAqJ,YAAAM,EAAAT,KAAA1G,IACAxC,KAAA8F,KAAA,YAAA9F,KAAAyI,KAAAqB,EAAAjK,GAEAiM,GACA9L,KAAA+L,YAAA/L,KAAAyI,KAAAqD,GAEA9L,KAAAyI,MAWA7I,EAAA8D,UAAAqI,YAAA,SAAAtC,EAAA0D,GACA,GAAA1D,IAAAzJ,KAAA6G,OAAA,CAEA,GAAA8C,EAEAA,GADAwD,GACAzK,EAAA+G,EAAA0D,EAAA9K,IAEAK,EAAA+G,EAAApH,GAEArC,KAAAqJ,YAAAM,EAAAT,KAAA1G,GAEA,IAAAoH,GAAA5J,KAAA0I,KAAAe,EACA3F,UAAA8F,IAGAA,EAAAkC,IAAAqB,GACArJ,SAAA8F,EAAAkC,KAAAlC,EAAA8B,UAAA9B,EAAAkC,aACA9L,MAAA0I,KAAAe,GACAzJ,KAAA8F,KAAA,cAAA2D,EAAAG,EAAAE,aAaAlK,EAAA8D,UAAAiI,QAAA,SAAAlC,EAAAkC,EAAAC,EAAAI,GACA,GAAAvC,EAAA,CACA,GAAAG,GAAA5J,KAAA0I,KAAAe,EACA,QAAAG,IACAA,EAAAgC,WACAhC,EAAA+B,QAAAyB,WAAA,WAAuCpB,EAAAvC,IAAiBkC,MAkBxD/L,EAAA8D,UAAA2J,QAAA,SAAAvD,EAAAwD,EAAAC,EAAAvB,GACA,kBAAAsB,KACAtB,EAAAsB,EACAA,EAAA/K,EACAgL,EAAA,MAEA,kBAAAA,KACAvB,EAAAuB,EACAA,EAAA,KAEA,IAAAC,GAAAlK,IACAmK,EAAAzN,KAAAiN,UAAAO,EAAAD,EAAA,SAAAjC,EAAAZ,GACAsB,EAAAV,EAAAZ,IAGA,OADA1K,MAAAuM,QAAAzC,EAAAwD,EAAAE,GACAC,GAUA7N,EAAA8D,UAAAgK,iBAAA,WACA,MAAAC,QAAAC,KAAA5N,KAAA0I,MAAAnI,QASAX,EAAA8D,UAAAQ,UAAA,WACAlE,KAAA6G,SACA7G,KAAAgB,YAAA,EACAhB,KAAAG,mBACAH,KAAAwF,cAAAzE,cAAA,GACAf,KAAA8F,KAAA,kBAUAlG,EAAA8D,UAAAoD,kBAAA,WACA,GAAAtC,GAAAxE,IAEA,QAAAwE,EAAAM,QAAAvE,OAAA,CAKAiE,EAAA8B,gBAAA,IACA9B,EAAA4B,cAAA,EAGA,IAAAyH,GAAA,CACArJ,GAAAM,QAAA,GAAA/D,cAAA,IACA8M,EAAA7N,KAAA+D,QAAAK,mBAEAgJ,WAAA,WAAyB5I,EAAAN,aAAsB2J,OHwDjBzO,KAAKJ,EAASH,EAAoB,GAAGa,OAAQb,EAAoB,GAAGc,eAI5F,SAASV,EAAQD,EAASH,IIluChC,SAAAa,EAAAoO;;;;;;AAQA,YA2CA,SAAAC,KACA,IACA,GAAAC,GAAA,GAAAC,YAAA,EAEA,OADAD,GAAAE,WAAqBA,UAAAD,WAAAvK,UAAAyK,IAAA,WAAmD,YACxE,KAAAH,EAAAG,OACA,kBAAAH,GAAAI,UACA,IAAAJ,EAAAI,SAAA,KAAA/F,WACG,MAAA6D,GACH,UAIA,QAAAmC,KACA,MAAA3O,GAAA4O,oBACA,WACA,WAGA,QAAAC,GAAAC,EAAAjO,GACA,GAAA8N,IAAA9N,EACA,SAAAkO,YAAA,6BAcA,OAZA/O,GAAA4O,qBAEAE,EAAA,GAAAP,YAAA1N,GACAiO,EAAAN,UAAAxO,EAAAgE,YAGA,OAAA8K,IACAA,EAAA,GAAA9O,GAAAa,IAEAiO,EAAAjO,UAGAiO,EAaA,QAAA9O,GAAAgP,EAAAC,EAAApO,GACA,KAAAb,EAAA4O,qBAAAtO,eAAAN,IACA,UAAAA,GAAAgP,EAAAC,EAAApO,EAIA,oBAAAmO,GAAA,CACA,mBAAAC,GACA,SAAA/J,OACA,oEAGA,OAAAgK,GAAA5O,KAAA0O,GAEA,MAAA9B,GAAA5M,KAAA0O,EAAAC,EAAApO,GAWA,QAAAqM,GAAA4B,EAAAK,EAAAF,EAAApO,GACA,mBAAAsO,GACA,SAAAC,WAAA,wCAGA,0BAAApC,cAAAmC,YAAAnC,aACAqC,EAAAP,EAAAK,EAAAF,EAAApO,GAGA,gBAAAsO,GACAG,EAAAR,EAAAK,EAAAF,GAGAM,EAAAT,EAAAK,GA4BA,QAAAK,GAAAvE,GACA,mBAAAA,GACA,SAAAmE,WAAA,mCACG,IAAAnE,EAAA,EACH,SAAA8D,YAAA,wCAIA,QAAAU,GAAAX,EAAA7D,EAAAyE,EAAA/K,GAEA,MADA6K,GAAAvE,GACAA,GAAA,EACA4D,EAAAC,EAAA7D,GAEA7G,SAAAsL,EAIA,gBAAA/K,GACAkK,EAAAC,EAAA7D,GAAAyE,OAAA/K,GACAkK,EAAAC,EAAA7D,GAAAyE,QAEAb,EAAAC,EAAA7D,GAWA,QAAAiE,GAAAJ,EAAA7D,GAGA,GAFAuE,EAAAvE,GACA6D,EAAAD,EAAAC,EAAA7D,EAAA,MAAA0E,EAAA1E,KACAjL,EAAA4O,oBACA,OAAAhO,GAAA,EAAmBA,EAAAqK,IAAUrK,EAC7BkO,EAAAlO,GAAA,CAGA,OAAAkO,GAgBA,QAAAQ,GAAAR,EAAAc,EAAAjL,GAKA,GAJA,gBAAAA,IAAA,KAAAA,IACAA,EAAA,SAGA3E,EAAAmF,WAAAR,GACA,SAAAyK,WAAA,6CAGA,IAAAvO,GAAA,EAAA8H,EAAAiH,EAAAjL,EACAmK,GAAAD,EAAAC,EAAAjO,EAEA,IAAAgP,GAAAf,EAAA9G,MAAA4H,EAAAjL,EASA,OAPAkL,KAAAhP,IAIAiO,IAAApD,MAAA,EAAAmE,IAGAf,EAGA,QAAAgB,GAAAhB,EAAAnO,GACA,GAAAE,GAAAF,EAAAE,OAAA,MAAA8O,EAAAhP,EAAAE,OACAiO,GAAAD,EAAAC,EAAAjO,EACA,QAAAD,GAAA,EAAiBA,EAAAC,EAAYD,GAAA,EAC7BkO,EAAAlO,GAAA,IAAAD,EAAAC,EAEA,OAAAkO,GAGA,QAAAO,GAAAP,EAAAnO,EAAAoP,EAAAlP,GAGA,GAFAF,EAAAgI,WAEAoH,EAAA,GAAApP,EAAAgI,WAAAoH,EACA,SAAAhB,YAAA,4BAGA,IAAApO,EAAAgI,WAAAoH,GAAAlP,GAAA,GACA,SAAAkO,YAAA,4BAmBA,OAfApO,GADAyD,SAAA2L,GAAA3L,SAAAvD,EACA,GAAA0N,YAAA5N,GACGyD,SAAAvD,EACH,GAAA0N,YAAA5N,EAAAoP,GAEA,GAAAxB,YAAA5N,EAAAoP,EAAAlP,GAGAb,EAAA4O,qBAEAE,EAAAnO,EACAmO,EAAAN,UAAAxO,EAAAgE,WAGA8K,EAAAgB,EAAAhB,EAAAnO,GAEAmO,EAGA,QAAAS,GAAAT,EAAAkB,GACA,GAAAhQ,EAAA0I,SAAAsH,GAAA,CACA,GAAA5C,GAAA,EAAAuC,EAAAK,EAAAnP,OAGA,OAFAiO,GAAAD,EAAAC,EAAA1B,GAEA,IAAA0B,EAAAjO,OACAiO,GAGAkB,EAAA3C,KAAAyB,EAAA,IAAA1B,GACA0B,GAGA,GAAAkB,EAAA,CACA,sBAAAhD,cACAgD,EAAAC,iBAAAjD,cAAA,UAAAgD,GACA,sBAAAA,GAAAnP,QAAAqP,EAAAF,EAAAnP,QACAgO,EAAAC,EAAA,GAEAgB,EAAAhB,EAAAkB,EAGA,eAAAA,EAAAG,MAAA7K,EAAA0K,EAAAzI,MACA,MAAAuI,GAAAhB,EAAAkB,EAAAzI,MAIA,SAAA6H,WAAA,sFAGA,QAAAO,GAAA9O,GAGA,GAAAA,GAAA8N,IACA,SAAAI,YAAA,0DACAJ,IAAAhE,SAAA,aAEA,UAAA9J,EAGA,QAAAuP,GAAAvP,GAIA,OAHAA,OACAA,EAAA,GAEAb,EAAAyP,OAAA5O,GA+EA,QAAA8H,GAAAiH,EAAAjL,GACA,GAAA3E,EAAA0I,SAAAkH,GACA,MAAAA,GAAA/O,MAEA,uBAAAmM,cAAA,kBAAAA,aAAAC,SACAD,YAAAC,OAAA2C,gBAAA5C,cACA,MAAA4C,GAAAjH,UAEA,iBAAAiH,KACAA,EAAA,GAAAA,EAGA,IAAAxC,GAAAwC,EAAA/O,MACA,QAAAuM,EAAA,QAIA,KADA,GAAAiD,IAAA,IAEA,OAAA1L,GACA,YACA,aACA,aACA,MAAAyI,EACA,YACA,YACA,IAAAhJ,QACA,MAAAkM,GAAAV,GAAA/O,MACA,YACA,YACA,cACA,eACA,SAAAuM,CACA,WACA,MAAAA,KAAA,CACA,cACA,MAAAmD,GAAAX,GAAA/O,MACA,SACA,GAAAwP,EAAA,MAAAC,GAAAV,GAAA/O,MACA8D,IAAA,GAAAA,GAAA6L,cACAH,GAAA,GAMA,QAAAI,GAAA9L,EAAA0F,EAAAlB,GACA,GAAAkH,IAAA,CAcA,KALAjM,SAAAiG,KAAA,KACAA,EAAA,GAIAA,EAAA/J,KAAAO,OACA,QAOA,KAJAuD,SAAA+E,KAAA7I,KAAAO,UACAsI,EAAA7I,KAAAO,QAGAsI,GAAA,EACA,QAOA,IAHAA,KAAA,EACAkB,KAAA,EAEAlB,GAAAkB,EACA,QAKA,KAFA1F,MAAA,UAGA,OAAAA,GACA,UACA,MAAA+L,GAAApQ,KAAA+J,EAAAlB,EAEA,YACA,YACA,MAAAwH,GAAArQ,KAAA+J,EAAAlB,EAEA,aACA,MAAAyH,GAAAtQ,KAAA+J,EAAAlB,EAEA,cACA,aACA,MAAA0H,GAAAvQ,KAAA+J,EAAAlB,EAEA,cACA,MAAA2H,GAAAxQ,KAAA+J,EAAAlB,EAEA,YACA,YACA,cACA,eACA,MAAA4H,GAAAzQ,KAAA+J,EAAAlB,EAEA,SACA,GAAAkH,EAAA,SAAAjB,WAAA,qBAAAzK,EACAA,MAAA,IAAA6L,cACAH,GAAA,GASA,QAAAW,GAAA7D,EAAA8D,EAAAtR,GACA,GAAAiB,GAAAuM,EAAA8D,EACA9D,GAAA8D,GAAA9D,EAAAxN,GACAwN,EAAAxN,GAAAiB,EAmIA,QAAAsQ,GAAAjB,EAAAkB,EAAApB,EAAApL,EAAAyM,GAEA,OAAAnB,EAAApP,OAAA,QAmBA,IAhBA,gBAAAkP,IACApL,EAAAoL,EACAA,EAAA,GACGA,EAAA,WACHA,EAAA,WACGA,GAAA,aACHA,GAAA,YAEAA,KACAsB,MAAAtB,KAEAA,EAAAqB,EAAA,EAAAnB,EAAApP,OAAA,GAIAkP,EAAA,IAAAA,EAAAE,EAAApP,OAAAkP,GACAA,GAAAE,EAAApP,OAAA,CACA,GAAAuQ,EAAA,QACArB,GAAAE,EAAApP,OAAA,MACG,IAAAkP,EAAA,GACH,IAAAqB,EACA,QADArB,GAAA,EAUA,GALA,gBAAAoB,KACAA,EAAAnR,EAAAkN,KAAAiE,EAAAxM,IAIA3E,EAAA0I,SAAAyI,GAEA,WAAAA,EAAAtQ,QACA,EAEAyQ,EAAArB,EAAAkB,EAAApB,EAAApL,EAAAyM,EACG,oBAAAD,GAEH,MADAA,IAAA,IACAnR,EAAA4O,qBACA,kBAAAL,YAAAvK,UAAAuN,QACAH,EACA7C,WAAAvK,UAAAuN,QAAA7R,KAAAuQ,EAAAkB,EAAApB,GAEAxB,WAAAvK,UAAAwN,YAAA9R,KAAAuQ,EAAAkB,EAAApB,GAGAuB,EAAArB,GAAAkB,GAAApB,EAAApL,EAAAyM,EAGA,UAAAhC,WAAA,wCAGA,QAAAkC,GAAAhD,EAAA6C,EAAApB,EAAApL,EAAAyM,GAmBA,QAAAK,GAAA/G,EAAA9J,GACA,WAAA8Q,EACAhH,EAAA9J,GAEA8J,EAAAiH,aAAA/Q,EAAA8Q,GAtBA,GAAAA,GAAA,EACAE,EAAAtD,EAAAzN,OACAgR,EAAAV,EAAAtQ,MAEA,IAAAuD,SAAAO,IACAA,EAAAmN,OAAAnN,GAAA6L,cACA,SAAA7L,GAAA,UAAAA,GACA,YAAAA,GAAA,aAAAA,GAAA,CACA,GAAA2J,EAAAzN,OAAA,GAAAsQ,EAAAtQ,OAAA,EACA,QAEA6Q,GAAA,EACAE,GAAA,EACAC,GAAA,EACA9B,GAAA,EAYA,GAAAnP,EACA,IAAAwQ,EAAA,CACA,GAAAW,IAAA,CACA,KAAAnR,EAAAmP,EAAwBnP,EAAAgR,EAAehR,IACvC,GAAA6Q,EAAAnD,EAAA1N,KAAA6Q,EAAAN,EAAAY,KAAA,IAAAnR,EAAAmR,IAEA,GADAA,KAAA,IAAAA,EAAAnR,GACAA,EAAAmR,EAAA,IAAAF,EAAA,MAAAE,GAAAL,MAEAK,MAAA,IAAAnR,KAAAmR,GACAA,GAAA,MAKA,KADAhC,EAAA8B,EAAAD,IAAA7B,EAAA6B,EAAAC,GACAjR,EAAAmP,EAAwBnP,GAAA,EAAQA,IAAA,CAEhC,OADAoR,IAAA,EACAlR,EAAA,EAAqBA,EAAA+Q,EAAe/Q,IACpC,GAAA2Q,EAAAnD,EAAA1N,EAAAE,KAAA2Q,EAAAN,EAAArQ,GAAA,CACAkR,GAAA,CACA,OAGA,GAAAA,EAAA,MAAApR,GAIA,SAeA,QAAAqR,GAAAvH,EAAAkF,EAAAsC,EAAArR,GACAqR,EAAAC,OAAAD,IAAA,CACA,IAAAE,GAAA1H,EAAA7J,OAAAqR,CACArR,IAGAA,EAAAsR,OAAAtR,GACAA,EAAAuR,IACAvR,EAAAuR,IAJAvR,EAAAuR,CASA,IAAAC,GAAAzC,EAAA/O,MACA,IAAAwR,EAAA,eAAAjD,WAAA,qBAEAvO,GAAAwR,EAAA,IACAxR,EAAAwR,EAAA,EAEA,QAAAzR,GAAA,EAAiBA,EAAAC,IAAYD,EAAA,CAC7B,GAAA0R,GAAAvH,SAAA6E,EAAA2C,OAAA,EAAA3R,EAAA,MACA,IAAAyQ,MAAAiB,GAAA,MAAA1R,EACA8J,GAAAwH,EAAAtR,GAAA0R,EAEA,MAAA1R,GAGA,QAAA4R,GAAA9H,EAAAkF,EAAAsC,EAAArR,GACA,MAAA4R,GAAAnC,EAAAV,EAAAlF,EAAA7J,OAAAqR,GAAAxH,EAAAwH,EAAArR,GAGA,QAAA6R,GAAAhI,EAAAkF,EAAAsC,EAAArR,GACA,MAAA4R,GAAAE,EAAA/C,GAAAlF,EAAAwH,EAAArR,GAGA,QAAA+R,GAAAlI,EAAAkF,EAAAsC,EAAArR,GACA,MAAA6R,GAAAhI,EAAAkF,EAAAsC,EAAArR,GAGA,QAAAgS,GAAAnI,EAAAkF,EAAAsC,EAAArR,GACA,MAAA4R,GAAAlC,EAAAX,GAAAlF,EAAAwH,EAAArR,GAGA,QAAAiS,GAAApI,EAAAkF,EAAAsC,EAAArR,GACA,MAAA4R,GAAAM,EAAAnD,EAAAlF,EAAA7J,OAAAqR,GAAAxH,EAAAwH,EAAArR,GAkFA,QAAAiQ,GAAApG,EAAAL,EAAAlB,GACA,WAAAkB,GAAAlB,IAAAuB,EAAA7J,OACAmS,EAAAC,cAAAvI,GAEAsI,EAAAC,cAAAvI,EAAAgB,MAAArB,EAAAlB,IAIA,QAAAwH,GAAAjG,EAAAL,EAAAlB,GACAA,EAAApI,KAAAmS,IAAAxI,EAAA7J,OAAAsI,EAIA,KAHA,GAAAgK,MAEAvS,EAAAyJ,EACAzJ,EAAAuI,GAAA,CACA,GAAAiK,GAAA1I,EAAA9J,GACAyS,EAAA,KACAC,EAAAF,EAAA,MACAA,EAAA,MACAA,EAAA,MACA,CAEA,IAAAxS,EAAA0S,GAAAnK,EAAA,CACA,GAAAoK,GAAAC,EAAAC,EAAAC,CAEA,QAAAJ,GACA,OACAF,EAAA,MACAC,EAAAD,EAEA,MACA,QACAG,EAAA7I,EAAA9J,EAAA,GACA,WAAA2S,KACAG,GAAA,GAAAN,IAAA,KAAAG,EACAG,EAAA,MACAL,EAAAK,GAGA,MACA,QACAH,EAAA7I,EAAA9J,EAAA,GACA4S,EAAA9I,EAAA9J,EAAA,GACA,WAAA2S,IAAA,WAAAC,KACAE,GAAA,GAAAN,IAAA,OAAAG,IAAA,KAAAC,EACAE,EAAA,OAAAA,EAAA,OAAAA,EAAA,SACAL,EAAAK,GAGA,MACA,QACAH,EAAA7I,EAAA9J,EAAA,GACA4S,EAAA9I,EAAA9J,EAAA,GACA6S,EAAA/I,EAAA9J,EAAA,GACA,WAAA2S,IAAA,WAAAC,IAAA,WAAAC,KACAC,GAAA,GAAAN,IAAA,OAAAG,IAAA,OAAAC,IAAA,KAAAC,EACAC,EAAA,OAAAA,EAAA,UACAL,EAAAK,KAMA,OAAAL,GAGAA,EAAA,MACAC,EAAA,GACKD,EAAA,QAELA,GAAA,MACAF,EAAA1N,KAAA4N,IAAA,eACAA,EAAA,WAAAA,GAGAF,EAAA1N,KAAA4N,GACAzS,GAAA0S,EAGA,MAAAK,GAAAR,GAQA,QAAAQ,GAAAC,GACA,GAAAxG,GAAAwG,EAAA/S,MACA,IAAAuM,GAAAyG,GACA,MAAA/B,QAAAgC,aAAAC,MAAAjC,OAAA8B,EAMA,KAFA,GAAAT,GAAA,GACAvS,EAAA,EACAA,EAAAwM,GACA+F,GAAArB,OAAAgC,aAAAC,MACAjC,OACA8B,EAAAlI,MAAA9K,KAAAiT,IAGA,OAAAV,GAGA,QAAAvC,GAAAlG,EAAAL,EAAAlB,GACA,GAAA6K,GAAA,EACA7K,GAAApI,KAAAmS,IAAAxI,EAAA7J,OAAAsI,EAEA,QAAAvI,GAAAyJ,EAAqBzJ,EAAAuI,IAASvI,EAC9BoT,GAAAlC,OAAAgC,aAAA,IAAApJ,EAAA9J,GAEA,OAAAoT,GAGA,QAAAnD,GAAAnG,EAAAL,EAAAlB,GACA,GAAA6K,GAAA,EACA7K,GAAApI,KAAAmS,IAAAxI,EAAA7J,OAAAsI,EAEA,QAAAvI,GAAAyJ,EAAqBzJ,EAAAuI,IAASvI,EAC9BoT,GAAAlC,OAAAgC,aAAApJ,EAAA9J,GAEA,OAAAoT,GAGA,QAAAtD,GAAAhG,EAAAL,EAAAlB,GACA,GAAAiE,GAAA1C,EAAA7J,SAEAwJ,KAAA,KAAAA,EAAA,KACAlB,KAAA,GAAAA,EAAAiE,KAAAjE,EAAAiE,EAGA,QADA6G,GAAA,GACArT,EAAAyJ,EAAqBzJ,EAAAuI,IAASvI,EAC9BqT,GAAAC,EAAAxJ,EAAA9J,GAEA,OAAAqT,GAGA,QAAAlD,GAAArG,EAAAL,EAAAlB,GAGA,OAFAgL,GAAAzJ,EAAAgB,MAAArB,EAAAlB,GACAgK,EAAA,GACAvS,EAAA,EAAiBA,EAAAuT,EAAAtT,OAAkBD,GAAA,EACnCuS,GAAArB,OAAAgC,aAAAK,EAAAvT,GAAA,IAAAuT,EAAAvT,EAAA,GAEA,OAAAuS,GA0CA,QAAAiB,GAAAlC,EAAAmC,EAAAxT,GACA,GAAAqR,EAAA,OAAAA,EAAA,WAAAnD,YAAA,qBACA,IAAAmD,EAAAmC,EAAAxT,EAAA,SAAAkO,YAAA,yCA+JA,QAAAuF,GAAA5J,EAAAyE,EAAA+C,EAAAmC,EAAAjI,EAAA8G,GACA,IAAAlT,EAAA0I,SAAAgC,GAAA,SAAA0E,WAAA,8CACA,IAAAD,EAAA/C,GAAA+C,EAAA+D,EAAA,SAAAnE,YAAA,oCACA,IAAAmD,EAAAmC,EAAA3J,EAAA7J,OAAA,SAAAkO,YAAA,sBAkDA,QAAAwF,GAAA7J,EAAAyE,EAAA+C,EAAAsC,GACArF,EAAA,IAAAA,EAAA,MAAAA,EAAA,EACA,QAAAvO,GAAA,EAAAE,EAAAC,KAAAmS,IAAAxI,EAAA7J,OAAAqR,EAAA,GAAuDtR,EAAAE,IAAOF,EAC9D8J,EAAAwH,EAAAtR,IAAAuO,EAAA,QAAAqF,EAAA5T,EAAA,EAAAA,MACA,GAAA4T,EAAA5T,EAAA,EAAAA,GA8BA,QAAA6T,GAAA/J,EAAAyE,EAAA+C,EAAAsC,GACArF,EAAA,IAAAA,EAAA,WAAAA,EAAA,EACA,QAAAvO,GAAA,EAAAE,EAAAC,KAAAmS,IAAAxI,EAAA7J,OAAAqR,EAAA,GAAuDtR,EAAAE,IAAOF,EAC9D8J,EAAAwH,EAAAtR,GAAAuO,IAAA,GAAAqF,EAAA5T,EAAA,EAAAA,GAAA,IAmJA,QAAA8T,GAAAhK,EAAAyE,EAAA+C,EAAAmC,EAAAjI,EAAA8G,GACA,GAAAhB,EAAAmC,EAAA3J,EAAA7J,OAAA,SAAAkO,YAAA,qBACA,IAAAmD,EAAA,WAAAnD,YAAA,sBAGA,QAAA4F,GAAAjK,EAAAyE,EAAA+C,EAAAsC,EAAAI,GAKA,MAJAA,IACAF,EAAAhK,EAAAyE,EAAA+C,EAAA,gDAEA2C,EAAA7M,MAAA0C,EAAAyE,EAAA+C,EAAAsC,EAAA,MACAtC,EAAA,EAWA,QAAA4C,GAAApK,EAAAyE,EAAA+C,EAAAsC,EAAAI,GAKA,MAJAA,IACAF,EAAAhK,EAAAyE,EAAA+C,EAAA,kDAEA2C,EAAA7M,MAAA0C,EAAAyE,EAAA+C,EAAAsC,EAAA,MACAtC,EAAA,EAgIA,QAAA6C,GAAAzH,GAIA,GAFAA,EAAA0H,EAAA1H,GAAA2H,QAAAC,GAAA,IAEA5H,EAAAzM,OAAA,UAEA,MAAAyM,EAAAzM,OAAA,OACAyM,GAAA,GAEA,OAAAA,GAGA,QAAA0H,GAAA1H,GACA,MAAAA,GAAA6H,KAAA7H,EAAA6H,OACA7H,EAAA2H,QAAA,iBAGA,QAAAf,GAAAjD,GACA,MAAAA,GAAA,OAAAA,EAAAtG,SAAA,IACAsG,EAAAtG,SAAA,IAGA,QAAA2F,GAAAV,EAAAwF,GACAA,KAAAC,GAMA,QALAhC,GACAxS,EAAA+O,EAAA/O,OACAyU,EAAA,KACAnB,KAEAvT,EAAA,EAAiBA,EAAAC,IAAYD,EAAA,CAI7B,GAHAyS,EAAAzD,EAAA2F,WAAA3U,GAGAyS,EAAA,OAAAA,EAAA,OAEA,IAAAiC,EAAA,CAEA,GAAAjC,EAAA,QAEA+B,GAAA,OAAAjB,EAAA1O,KAAA,YACA,UACS,GAAA7E,EAAA,IAAAC,EAAA,EAETuU,GAAA,OAAAjB,EAAA1O,KAAA,YACA,UAIA6P,EAAAjC,CAEA,UAIA,GAAAA,EAAA,QACA+B,GAAA,OAAAjB,EAAA1O,KAAA,aACA6P,EAAAjC,CACA,UAIAA,GAAAiC,EAAA,UAAAjC,EAAA,iBACKiC,KAELF,GAAA,OAAAjB,EAAA1O,KAAA,YAMA,IAHA6P,EAAA,KAGAjC,EAAA,KACA,IAAA+B,GAAA,UACAjB,GAAA1O,KAAA4N,OACK,IAAAA,EAAA,MACL,IAAA+B,GAAA,UACAjB,GAAA1O,KACA4N,GAAA,MACA,GAAAA,EAAA,SAEK,IAAAA,EAAA,OACL,IAAA+B,GAAA,UACAjB,GAAA1O,KACA4N,GAAA,OACAA,GAAA,SACA,GAAAA,EAAA,SAEK,MAAAA,EAAA,SASL,SAAAnO,OAAA,qBARA,KAAAkQ,GAAA,UACAjB,GAAA1O,KACA4N,GAAA,OACAA,GAAA,UACAA,GAAA,SACA,GAAAA,EAAA,MAOA,MAAAc,GAGA,QAAAxB,GAAArF,GAEA,OADAkI,MACA5U,EAAA,EAAiBA,EAAA0M,EAAAzM,SAAgBD,EAEjC4U,EAAA/P,KAAA,IAAA6H,EAAAiI,WAAA3U,GAEA,OAAA4U,GAGA,QAAAzC,GAAAzF,EAAA8H,GAGA,OAFAxV,GAAA6V,EAAAC,EACAF,KACA5U,EAAA,EAAiBA,EAAA0M,EAAAzM,WACjBuU,GAAA,QADiCxU,EAGjChB,EAAA0N,EAAAiI,WAAA3U,GACA6U,EAAA7V,GAAA,EACA8V,EAAA9V,EAAA,IACA4V,EAAA/P,KAAAiQ,GACAF,EAAA/P,KAAAgQ,EAGA,OAAAD,GAGA,QAAAjF,GAAAjD,GACA,MAAA0F,GAAA2C,YAAAZ,EAAAzH,IAGA,QAAAmF,GAAAmD,EAAAC,EAAA3D,EAAArR,GACA,OAAAD,GAAA,EAAiBA,EAAAC,KACjBD,EAAAsR,GAAA2D,EAAAhV,QAAAD,GAAAgV,EAAA/U,UAD6BD,EAE7BiV,EAAAjV,EAAAsR,GAAA0D,EAAAhV,EAEA,OAAAA,GAGA,QAAAsP,GAAAiB,GACA,MAAAA,OAjvDA,GAAA6B,GAAA7T,EAAA,GACA0V,EAAA1V,EAAA,GACAmG,EAAAnG,EAAA,EAEAG,GAAAU,SACAV,EAAA8Q,aACA9Q,EAAAwW,kBAAA,GA0BA9V,EAAA4O,oBAAAxK,SAAAgK,EAAAQ,oBACAR,EAAAQ,oBACAP,IAKA/O,EAAAqP,eAkEA3O,EAAA+V,SAAA,KAGA/V,EAAAgW,SAAA,SAAA1H,GAEA,MADAA,GAAAE,UAAAxO,EAAAgE,UACAsK,GA2BAtO,EAAAkN,KAAA,SAAAiC,EAAAF,EAAApO,GACA,MAAAqM,GAAA,KAAAiC,EAAAF,EAAApO,IAGAb,EAAA4O,sBACA5O,EAAAgE,UAAAwK,UAAAD,WAAAvK,UACAhE,EAAAwO,UAAAD,WACA,mBAAA0H,gBAAAC,SACAlW,EAAAiW,OAAAC,WAAAlW,GAEAiO,OAAAkI,eAAAnW,EAAAiW,OAAAC,SACA/G,MAAA,KACAiH,cAAA,KAiCApW,EAAAyP,MAAA,SAAAxE,EAAAyE,EAAA/K,GACA,MAAA8K,GAAA,KAAAxE,EAAAyE,EAAA/K,IAiBA3E,EAAAkP,YAAA,SAAAjE,GACA,MAAAiE,GAAA,KAAAjE,IAKAjL,EAAAqW,gBAAA,SAAApL,GACA,MAAAiE,GAAA,KAAAjE,IAiHAjL,EAAA0I,SAAA,SAAAyE,GACA,cAAAA,MAAAmJ,YAGAtW,EAAAuW,QAAA,SAAAC,EAAArJ,GACA,IAAAnN,EAAA0I,SAAA8N,KAAAxW,EAAA0I,SAAAyE,GACA,SAAAiC,WAAA,4BAGA,IAAAoH,IAAArJ,EAAA,QAKA,QAHAsJ,GAAAD,EAAA3V,OACA6V,EAAAvJ,EAAAtM,OAEAD,EAAA,EAAAwM,EAAArM,KAAAmS,IAAAuD,EAAAC,GAAuC9V,EAAAwM,IAASxM,EAChD,GAAA4V,EAAA5V,KAAAuM,EAAAvM,GAAA,CACA6V,EAAAD,EAAA5V,GACA8V,EAAAvJ,EAAAvM,EACA,OAIA,MAAA6V,GAAAC,GAAA,EACAA,EAAAD,EAAA,EACA,GAGAzW,EAAAmF,WAAA,SAAAR,GACA,OAAAmN,OAAAnN,GAAA6L,eACA,UACA,WACA,YACA,YACA,aACA,aACA,aACA,WACA,YACA,cACA,eACA,QACA,SACA,WAIAxQ,EAAAyH,OAAA,SAAAkP,EAAA9V,GACA,IAAAyE,EAAAqR,GACA,SAAAvH,WAAA,8CAGA,QAAAuH,EAAA9V,OACA,MAAAb,GAAAyP,MAAA,EAGA,IAAA7O,EACA,IAAAwD,SAAAvD,EAEA,IADAA,EAAA,EACAD,EAAA,EAAeA,EAAA+V,EAAA9V,SAAiBD,EAChCC,GAAA8V,EAAA/V,GAAAC,MAIA,IAAAoP,GAAAjQ,EAAAkP,YAAArO,GACA+V,EAAA,CACA,KAAAhW,EAAA,EAAaA,EAAA+V,EAAA9V,SAAiBD,EAAA,CAC9B,GAAA8J,GAAAiM,EAAA/V,EACA,KAAAZ,EAAA0I,SAAAgC,GACA,SAAA0E,WAAA,8CAEA1E,GAAA2C,KAAA4C,EAAA2G,GACAA,GAAAlM,EAAA7J,OAEA,MAAAoP,IA8CAjQ,EAAA2I,aA0EA3I,EAAAgE,UAAAsS,WAAA,EAQAtW,EAAAgE,UAAA6S,OAAA,WACA,GAAAzJ,GAAA9M,KAAAO,MACA,IAAAuM,EAAA,MACA,SAAA2B,YAAA,4CAEA,QAAAnO,GAAA,EAAiBA,EAAAwM,EAASxM,GAAA,EAC1BoQ,EAAA1Q,KAAAM,IAAA,EAEA,OAAAN,OAGAN,EAAAgE,UAAA8S,OAAA,WACA,GAAA1J,GAAA9M,KAAAO,MACA,IAAAuM,EAAA,MACA,SAAA2B,YAAA,4CAEA,QAAAnO,GAAA,EAAiBA,EAAAwM,EAASxM,GAAA,EAC1BoQ,EAAA1Q,KAAAM,IAAA,GACAoQ,EAAA1Q,KAAAM,EAAA,EAAAA,EAAA,EAEA,OAAAN,OAGAN,EAAAgE,UAAA+S,OAAA,WACA,GAAA3J,GAAA9M,KAAAO,MACA,IAAAuM,EAAA,MACA,SAAA2B,YAAA,4CAEA,QAAAnO,GAAA,EAAiBA,EAAAwM,EAASxM,GAAA,EAC1BoQ,EAAA1Q,KAAAM,IAAA,GACAoQ,EAAA1Q,KAAAM,EAAA,EAAAA,EAAA,GACAoQ,EAAA1Q,KAAAM,EAAA,EAAAA,EAAA,GACAoQ,EAAA1Q,KAAAM,EAAA,EAAAA,EAAA,EAEA,OAAAN,OAGAN,EAAAgE,UAAA2G,SAAA,WACA,GAAA9J,GAAA,EAAAP,KAAAO,MACA,YAAAA,EAAA,GACA,IAAAmW,UAAAnW,OAAA8P,EAAArQ,KAAA,EAAAO,GACA4P,EAAAsD,MAAAzT,KAAA0W,YAGAhX,EAAAgE,UAAAiT,OAAA,SAAA9J,GACA,IAAAnN,EAAA0I,SAAAyE,GAAA,SAAAiC,WAAA,4BACA,OAAA9O,QAAA6M,GACA,IAAAnN,EAAAuW,QAAAjW,KAAA6M,IAGAnN,EAAAgE,UAAAkT,QAAA,WACA,GAAA5J,GAAA,GACAlB,EAAA9M,EAAAwW,iBAKA,OAJAxV,MAAAO,OAAA,IACAyM,EAAAhN,KAAAqK,SAAA,QAAAyB,GAAA+K,MAAA,SAAkD3N,KAAA,KAClDlJ,KAAAO,OAAAuL,IAAAkB,GAAA,UAEA,WAAAA,EAAA,KAGAtN,EAAAgE,UAAAuS,QAAA,SAAAa,EAAA/M,EAAAlB,EAAAkO,EAAAC,GACA,IAAAtX,EAAA0I,SAAA0O,GACA,SAAAhI,WAAA,4BAgBA,IAbAhL,SAAAiG,IACAA,EAAA,GAEAjG,SAAA+E,IACAA,EAAAiO,IAAAvW,OAAA,GAEAuD,SAAAiT,IACAA,EAAA,GAEAjT,SAAAkT,IACAA,EAAAhX,KAAAO,QAGAwJ,EAAA,GAAAlB,EAAAiO,EAAAvW,QAAAwW,EAAA,GAAAC,EAAAhX,KAAAO,OACA,SAAAkO,YAAA,qBAGA,IAAAsI,GAAAC,GAAAjN,GAAAlB,EACA,QAEA,IAAAkO,GAAAC,EACA,QAEA,IAAAjN,GAAAlB,EACA,QAQA,IALAkB,KAAA,EACAlB,KAAA,EACAkO,KAAA,EACAC,KAAA,EAEAhX,OAAA8W,EAAA,QASA,QAPAX,GAAAa,EAAAD,EACAX,EAAAvN,EAAAkB,EACA+C,EAAArM,KAAAmS,IAAAuD,EAAAC,GAEAa,EAAAjX,KAAAoL,MAAA2L,EAAAC,GACAE,EAAAJ,EAAA1L,MAAArB,EAAAlB,GAEAvI,EAAA,EAAiBA,EAAAwM,IAASxM,EAC1B,GAAA2W,EAAA3W,KAAA4W,EAAA5W,GAAA,CACA6V,EAAAc,EAAA3W,GACA8V,EAAAc,EAAA5W,EACA,OAIA,MAAA6V,GAAAC,GAAA,EACAA,EAAAD,EAAA,EACA,GA6HAzW,EAAAgE,UAAAyT,SAAA,SAAAtG,EAAApB,EAAApL,GACA,MAAArE,MAAAiR,QAAAJ,EAAApB,EAAApL,MAAA,GAGA3E,EAAAgE,UAAAuN,QAAA,SAAAJ,EAAApB,EAAApL,GACA,MAAAuM,GAAA5Q,KAAA6Q,EAAApB,EAAApL,GAAA,IAGA3E,EAAAgE,UAAAwN,YAAA,SAAAL,EAAApB,EAAApL,GACA,MAAAuM,GAAA5Q,KAAA6Q,EAAApB,EAAApL,GAAA,IAkDA3E,EAAAgE,UAAAgE,MAAA,SAAA4H,EAAAsC,EAAArR,EAAA8D,GAEA,GAAAP,SAAA8N,EACAvN,EAAA,OACA9D,EAAAP,KAAAO,OACAqR,EAAA,MAEG,IAAA9N,SAAAvD,GAAA,gBAAAqR,GACHvN,EAAAuN,EACArR,EAAAP,KAAAO,OACAqR,EAAA,MAEG,KAAAwF,SAAAxF,GAWH,SAAAhN,OACA,0EAXAgN,IAAA,EACAwF,SAAA7W,IACAA,GAAA,EACAuD,SAAAO,MAAA,UAEAA,EAAA9D,EACAA,EAAAuD,QASA,GAAAgO,GAAA9R,KAAAO,OAAAqR,CAGA,KAFA9N,SAAAvD,KAAAuR,KAAAvR,EAAAuR,GAEAxC,EAAA/O,OAAA,IAAAA,EAAA,GAAAqR,EAAA,IAAAA,EAAA5R,KAAAO,OACA,SAAAkO,YAAA,yCAGApK,OAAA,OAGA,KADA,GAAA0L,IAAA,IAEA,OAAA1L,GACA,UACA,MAAAsN,GAAA3R,KAAAsP,EAAAsC,EAAArR,EAEA,YACA,YACA,MAAA2R,GAAAlS,KAAAsP,EAAAsC,EAAArR,EAEA,aACA,MAAA6R,GAAApS,KAAAsP,EAAAsC,EAAArR,EAEA,cACA,aACA,MAAA+R,GAAAtS,KAAAsP,EAAAsC,EAAArR,EAEA,cAEA,MAAAgS,GAAAvS,KAAAsP,EAAAsC,EAAArR,EAEA,YACA,YACA,cACA,eACA,MAAAiS,GAAAxS,KAAAsP,EAAAsC,EAAArR,EAEA,SACA,GAAAwP,EAAA,SAAAjB,WAAA,qBAAAzK,EACAA,IAAA,GAAAA,GAAA6L,cACAH,GAAA,IAKArQ,EAAAgE,UAAA2T,OAAA,WACA,OACAxH,KAAA,SACA5I,KAAAlC,MAAArB,UAAA0H,MAAAhM,KAAAY,KAAAsX,MAAAtX,KAAA,IAwFA,IAAAuT,IAAA,IA8DA7T,GAAAgE,UAAA0H,MAAA,SAAArB,EAAAlB,GACA,GAAAiE,GAAA9M,KAAAO,MACAwJ,OACAlB,EAAA/E,SAAA+E,EAAAiE,IAAAjE,EAEAkB,EAAA,GACAA,GAAA+C,EACA/C,EAAA,IAAAA,EAAA,IACGA,EAAA+C,IACH/C,EAAA+C,GAGAjE,EAAA,GACAA,GAAAiE,EACAjE,EAAA,IAAAA,EAAA,IACGA,EAAAiE,IACHjE,EAAAiE,GAGAjE,EAAAkB,IAAAlB,EAAAkB,EAEA,IAAAwN,EACA,IAAA7X,EAAA4O,oBACAiJ,EAAAvX,KAAAoO,SAAArE,EAAAlB,GACA0O,EAAArJ,UAAAxO,EAAAgE,cACG,CACH,GAAA8T,GAAA3O,EAAAkB,CACAwN,GAAA,GAAA7X,GAAA8X,EAAA1T,OACA,QAAAxD,GAAA,EAAmBA,EAAAkX,IAAclX,EACjCiX,EAAAjX,GAAAN,KAAAM,EAAAyJ,GAIA,MAAAwN,IAWA7X,EAAAgE,UAAA+T,WAAA,SAAA7F,EAAAvJ,EAAAiM,GACA1C,GAAA,EACAvJ,GAAA,EACAiM,GAAAR,EAAAlC,EAAAvJ,EAAArI,KAAAO,OAKA,KAHA,GAAAsQ,GAAA7Q,KAAA4R,GACA8F,EAAA,EACApX,EAAA,IACAA,EAAA+H,IAAAqP,GAAA,MACA7G,GAAA7Q,KAAA4R,EAAAtR,GAAAoX,CAGA,OAAA7G,IAGAnR,EAAAgE,UAAAiU,WAAA,SAAA/F,EAAAvJ,EAAAiM,GACA1C,GAAA,EACAvJ,GAAA,EACAiM,GACAR,EAAAlC,EAAAvJ,EAAArI,KAAAO,OAKA,KAFA,GAAAsQ,GAAA7Q,KAAA4R,IAAAvJ,GACAqP,EAAA,EACArP,EAAA,IAAAqP,GAAA,MACA7G,GAAA7Q,KAAA4R,IAAAvJ,GAAAqP,CAGA,OAAA7G,IAGAnR,EAAAgE,UAAAkU,UAAA,SAAAhG,EAAA0C,GAEA,MADAA,IAAAR,EAAAlC,EAAA,EAAA5R,KAAAO,QACAP,KAAA4R,IAGAlS,EAAAgE,UAAAmU,aAAA,SAAAjG,EAAA0C,GAEA,MADAA,IAAAR,EAAAlC,EAAA,EAAA5R,KAAAO,QACAP,KAAA4R,GAAA5R,KAAA4R,EAAA,OAGAlS,EAAAgE,UAAA2N,aAAA,SAAAO,EAAA0C,GAEA,MADAA,IAAAR,EAAAlC,EAAA,EAAA5R,KAAAO,QACAP,KAAA4R,IAAA,EAAA5R,KAAA4R,EAAA,IAGAlS,EAAAgE,UAAAoU,aAAA,SAAAlG,EAAA0C,GAGA,MAFAA,IAAAR,EAAAlC,EAAA,EAAA5R,KAAAO,SAEAP,KAAA4R,GACA5R,KAAA4R,EAAA,MACA5R,KAAA4R,EAAA,QACA,SAAA5R,KAAA4R,EAAA,IAGAlS,EAAAgE,UAAAqU,aAAA,SAAAnG,EAAA0C,GAGA,MAFAA,IAAAR,EAAAlC,EAAA,EAAA5R,KAAAO,QAEA,SAAAP,KAAA4R,IACA5R,KAAA4R,EAAA,OACA5R,KAAA4R,EAAA,MACA5R,KAAA4R,EAAA,KAGAlS,EAAAgE,UAAAsU,UAAA,SAAApG,EAAAvJ,EAAAiM,GACA1C,GAAA,EACAvJ,GAAA,EACAiM,GAAAR,EAAAlC,EAAAvJ,EAAArI,KAAAO,OAKA,KAHA,GAAAsQ,GAAA7Q,KAAA4R,GACA8F,EAAA,EACApX,EAAA,IACAA,EAAA+H,IAAAqP,GAAA,MACA7G,GAAA7Q,KAAA4R,EAAAtR,GAAAoX,CAMA,OAJAA,IAAA,IAEA7G,GAAA6G,IAAA7G,GAAApQ,KAAAwX,IAAA,IAAA5P,IAEAwI,GAGAnR,EAAAgE,UAAAwU,UAAA,SAAAtG,EAAAvJ,EAAAiM,GACA1C,GAAA,EACAvJ,GAAA,EACAiM,GAAAR,EAAAlC,EAAAvJ,EAAArI,KAAAO,OAKA,KAHA,GAAAD,GAAA+H,EACAqP,EAAA,EACA7G,EAAA7Q,KAAA4R,IAAAtR,GACAA,EAAA,IAAAoX,GAAA,MACA7G,GAAA7Q,KAAA4R,IAAAtR,GAAAoX,CAMA,OAJAA,IAAA,IAEA7G,GAAA6G,IAAA7G,GAAApQ,KAAAwX,IAAA,IAAA5P,IAEAwI,GAGAnR,EAAAgE,UAAAyU,SAAA,SAAAvG,EAAA0C,GAEA,MADAA,IAAAR,EAAAlC,EAAA,EAAA5R,KAAAO,QACA,IAAAP,KAAA4R,IACA,IAAA5R,KAAA4R,GAAA,MADA5R,KAAA4R,IAIAlS,EAAAgE,UAAA0U,YAAA,SAAAxG,EAAA0C,GACAA,GAAAR,EAAAlC,EAAA,EAAA5R,KAAAO,OACA,IAAAsQ,GAAA7Q,KAAA4R,GAAA5R,KAAA4R,EAAA,KACA,cAAAf,EAAA,WAAAA,KAGAnR,EAAAgE,UAAA2U,YAAA,SAAAzG,EAAA0C,GACAA,GAAAR,EAAAlC,EAAA,EAAA5R,KAAAO,OACA,IAAAsQ,GAAA7Q,KAAA4R,EAAA,GAAA5R,KAAA4R,IAAA,CACA,cAAAf,EAAA,WAAAA,KAGAnR,EAAAgE,UAAA4U,YAAA,SAAA1G,EAAA0C,GAGA,MAFAA,IAAAR,EAAAlC,EAAA,EAAA5R,KAAAO,QAEAP,KAAA4R,GACA5R,KAAA4R,EAAA,MACA5R,KAAA4R,EAAA,OACA5R,KAAA4R,EAAA,QAGAlS,EAAAgE,UAAA6U,YAAA,SAAA3G,EAAA0C,GAGA,MAFAA,IAAAR,EAAAlC,EAAA,EAAA5R,KAAAO,QAEAP,KAAA4R,IAAA,GACA5R,KAAA4R,EAAA,OACA5R,KAAA4R,EAAA,MACA5R,KAAA4R,EAAA,IAGAlS,EAAAgE,UAAA8U,YAAA,SAAA5G,EAAA0C,GAEA,MADAA,IAAAR,EAAAlC,EAAA,EAAA5R,KAAAO,QACAgU,EAAApD,KAAAnR,KAAA4R,GAAA,SAGAlS,EAAAgE,UAAA+U,YAAA,SAAA7G,EAAA0C,GAEA,MADAA,IAAAR,EAAAlC,EAAA,EAAA5R,KAAAO,QACAgU,EAAApD,KAAAnR,KAAA4R,GAAA,SAGAlS,EAAAgE,UAAAgV,aAAA,SAAA9G,EAAA0C,GAEA,MADAA,IAAAR,EAAAlC,EAAA,EAAA5R,KAAAO,QACAgU,EAAApD,KAAAnR,KAAA4R,GAAA,SAGAlS,EAAAgE,UAAAiV,aAAA,SAAA/G,EAAA0C,GAEA,MADAA,IAAAR,EAAAlC,EAAA,EAAA5R,KAAAO,QACAgU,EAAApD,KAAAnR,KAAA4R,GAAA,SASAlS,EAAAgE,UAAAkV,YAAA,SAAA/J,EAAA+C,EAAAvJ,EAAAiM,GAIA,GAHAzF,KACA+C,GAAA,EACAvJ,GAAA,GACAiM,EAAA,CACA,GAAAuE,GAAApY,KAAAwX,IAAA,IAAA5P,GAAA,CACA2L,GAAAhU,KAAA6O,EAAA+C,EAAAvJ,EAAAwQ,EAAA,GAGA,GAAAnB,GAAA,EACApX,EAAA,CAEA,KADAN,KAAA4R,GAAA,IAAA/C,IACAvO,EAAA+H,IAAAqP,GAAA,MACA1X,KAAA4R,EAAAtR,GAAAuO,EAAA6I,EAAA,GAGA,OAAA9F,GAAAvJ,GAGA3I,EAAAgE,UAAAoV,YAAA,SAAAjK,EAAA+C,EAAAvJ,EAAAiM,GAIA,GAHAzF,KACA+C,GAAA,EACAvJ,GAAA,GACAiM,EAAA,CACA,GAAAuE,GAAApY,KAAAwX,IAAA,IAAA5P,GAAA,CACA2L,GAAAhU,KAAA6O,EAAA+C,EAAAvJ,EAAAwQ,EAAA,GAGA,GAAAvY,GAAA+H,EAAA,EACAqP,EAAA,CAEA,KADA1X,KAAA4R,EAAAtR,GAAA,IAAAuO,IACAvO,GAAA,IAAAoX,GAAA,MACA1X,KAAA4R,EAAAtR,GAAAuO,EAAA6I,EAAA,GAGA,OAAA9F,GAAAvJ,GAGA3I,EAAAgE,UAAAqV,WAAA,SAAAlK,EAAA+C,EAAA0C,GAMA,MALAzF,MACA+C,GAAA,EACA0C,GAAAN,EAAAhU,KAAA6O,EAAA+C,EAAA,SACAlS,EAAA4O,sBAAAO,EAAApO,KAAAC,MAAAmO,IACA7O,KAAA4R,GAAA,IAAA/C,EACA+C,EAAA,GAWAlS,EAAAgE,UAAAsV,cAAA,SAAAnK,EAAA+C,EAAA0C,GAUA,MATAzF,MACA+C,GAAA,EACA0C,GAAAN,EAAAhU,KAAA6O,EAAA+C,EAAA,WACAlS,EAAA4O,qBACAtO,KAAA4R,GAAA,IAAA/C,EACA7O,KAAA4R,EAAA,GAAA/C,IAAA,GAEAoF,EAAAjU,KAAA6O,EAAA+C,GAAA,GAEAA,EAAA,GAGAlS,EAAAgE,UAAAuV,cAAA,SAAApK,EAAA+C,EAAA0C,GAUA,MATAzF,MACA+C,GAAA,EACA0C,GAAAN,EAAAhU,KAAA6O,EAAA+C,EAAA,WACAlS,EAAA4O,qBACAtO,KAAA4R,GAAA/C,IAAA,EACA7O,KAAA4R,EAAA,OAAA/C,GAEAoF,EAAAjU,KAAA6O,EAAA+C,GAAA,GAEAA,EAAA,GAUAlS,EAAAgE,UAAAwV,cAAA,SAAArK,EAAA+C,EAAA0C,GAYA,MAXAzF,MACA+C,GAAA,EACA0C,GAAAN,EAAAhU,KAAA6O,EAAA+C,EAAA,gBACAlS,EAAA4O,qBACAtO,KAAA4R,EAAA,GAAA/C,IAAA,GACA7O,KAAA4R,EAAA,GAAA/C,IAAA,GACA7O,KAAA4R,EAAA,GAAA/C,IAAA,EACA7O,KAAA4R,GAAA,IAAA/C,GAEAsF,EAAAnU,KAAA6O,EAAA+C,GAAA,GAEAA,EAAA,GAGAlS,EAAAgE,UAAAyV,cAAA,SAAAtK,EAAA+C,EAAA0C,GAYA,MAXAzF,MACA+C,GAAA,EACA0C,GAAAN,EAAAhU,KAAA6O,EAAA+C,EAAA,gBACAlS,EAAA4O,qBACAtO,KAAA4R,GAAA/C,IAAA,GACA7O,KAAA4R,EAAA,GAAA/C,IAAA,GACA7O,KAAA4R,EAAA,GAAA/C,IAAA,EACA7O,KAAA4R,EAAA,OAAA/C,GAEAsF,EAAAnU,KAAA6O,EAAA+C,GAAA,GAEAA,EAAA,GAGAlS,EAAAgE,UAAA0V,WAAA,SAAAvK,EAAA+C,EAAAvJ,EAAAiM,GAGA,GAFAzF,KACA+C,GAAA,GACA0C,EAAA,CACA,GAAA+E,GAAA5Y,KAAAwX,IAAA,IAAA5P,EAAA,EAEA2L,GAAAhU,KAAA6O,EAAA+C,EAAAvJ,EAAAgR,EAAA,GAAAA,GAGA,GAAA/Y,GAAA,EACAoX,EAAA,EACA9N,EAAA,CAEA,KADA5J,KAAA4R,GAAA,IAAA/C,IACAvO,EAAA+H,IAAAqP,GAAA,MACA7I,EAAA,OAAAjF,GAAA,IAAA5J,KAAA4R,EAAAtR,EAAA,KACAsJ,EAAA,GAEA5J,KAAA4R,EAAAtR,IAAAuO,EAAA6I,GAAA,GAAA9N,EAAA,GAGA,OAAAgI,GAAAvJ,GAGA3I,EAAAgE,UAAA4V,WAAA,SAAAzK,EAAA+C,EAAAvJ,EAAAiM,GAGA,GAFAzF,KACA+C,GAAA,GACA0C,EAAA,CACA,GAAA+E,GAAA5Y,KAAAwX,IAAA,IAAA5P,EAAA,EAEA2L,GAAAhU,KAAA6O,EAAA+C,EAAAvJ,EAAAgR,EAAA,GAAAA,GAGA,GAAA/Y,GAAA+H,EAAA,EACAqP,EAAA,EACA9N,EAAA,CAEA,KADA5J,KAAA4R,EAAAtR,GAAA,IAAAuO,IACAvO,GAAA,IAAAoX,GAAA,MACA7I,EAAA,OAAAjF,GAAA,IAAA5J,KAAA4R,EAAAtR,EAAA,KACAsJ,EAAA,GAEA5J,KAAA4R,EAAAtR,IAAAuO,EAAA6I,GAAA,GAAA9N,EAAA,GAGA,OAAAgI,GAAAvJ,GAGA3I,EAAAgE,UAAA6V,UAAA,SAAA1K,EAAA+C,EAAA0C,GAOA,MANAzF,MACA+C,GAAA,EACA0C,GAAAN,EAAAhU,KAAA6O,EAAA+C,EAAA,YACAlS,EAAA4O,sBAAAO,EAAApO,KAAAC,MAAAmO,IACAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,GACA7O,KAAA4R,GAAA,IAAA/C,EACA+C,EAAA,GAGAlS,EAAAgE,UAAA8V,aAAA,SAAA3K,EAAA+C,EAAA0C,GAUA,MATAzF,MACA+C,GAAA,EACA0C,GAAAN,EAAAhU,KAAA6O,EAAA+C,EAAA,gBACAlS,EAAA4O,qBACAtO,KAAA4R,GAAA,IAAA/C,EACA7O,KAAA4R,EAAA,GAAA/C,IAAA,GAEAoF,EAAAjU,KAAA6O,EAAA+C,GAAA,GAEAA,EAAA,GAGAlS,EAAAgE,UAAA+V,aAAA,SAAA5K,EAAA+C,EAAA0C,GAUA,MATAzF,MACA+C,GAAA,EACA0C,GAAAN,EAAAhU,KAAA6O,EAAA+C,EAAA,gBACAlS,EAAA4O,qBACAtO,KAAA4R,GAAA/C,IAAA,EACA7O,KAAA4R,EAAA,OAAA/C,GAEAoF,EAAAjU,KAAA6O,EAAA+C,GAAA,GAEAA,EAAA,GAGAlS,EAAAgE,UAAAgW,aAAA,SAAA7K,EAAA+C,EAAA0C,GAYA,MAXAzF,MACA+C,GAAA,EACA0C,GAAAN,EAAAhU,KAAA6O,EAAA+C,EAAA,0BACAlS,EAAA4O,qBACAtO,KAAA4R,GAAA,IAAA/C,EACA7O,KAAA4R,EAAA,GAAA/C,IAAA,EACA7O,KAAA4R,EAAA,GAAA/C,IAAA,GACA7O,KAAA4R,EAAA,GAAA/C,IAAA,IAEAsF,EAAAnU,KAAA6O,EAAA+C,GAAA,GAEAA,EAAA,GAGAlS,EAAAgE,UAAAiW,aAAA,SAAA9K,EAAA+C,EAAA0C,GAaA,MAZAzF,MACA+C,GAAA,EACA0C,GAAAN,EAAAhU,KAAA6O,EAAA+C,EAAA,0BACA/C,EAAA,IAAAA,EAAA,WAAAA,EAAA,GACAnP,EAAA4O,qBACAtO,KAAA4R,GAAA/C,IAAA,GACA7O,KAAA4R,EAAA,GAAA/C,IAAA,GACA7O,KAAA4R,EAAA,GAAA/C,IAAA,EACA7O,KAAA4R,EAAA,OAAA/C,GAEAsF,EAAAnU,KAAA6O,EAAA+C,GAAA,GAEAA,EAAA,GAgBAlS,EAAAgE,UAAAkW,aAAA,SAAA/K,EAAA+C,EAAA0C,GACA,MAAAD,GAAArU,KAAA6O,EAAA+C,GAAA,EAAA0C,IAGA5U,EAAAgE,UAAAmW,aAAA,SAAAhL,EAAA+C,EAAA0C,GACA,MAAAD,GAAArU,KAAA6O,EAAA+C,GAAA,EAAA0C,IAWA5U,EAAAgE,UAAAoW,cAAA,SAAAjL,EAAA+C,EAAA0C,GACA,MAAAE,GAAAxU,KAAA6O,EAAA+C,GAAA,EAAA0C,IAGA5U,EAAAgE,UAAAqW,cAAA,SAAAlL,EAAA+C,EAAA0C,GACA,MAAAE,GAAAxU,KAAA6O,EAAA+C,GAAA,EAAA0C,IAIA5U,EAAAgE,UAAAqJ,KAAA,SAAA+J,EAAAkD,EAAAjQ,EAAAlB,GAQA,GAPAkB,MAAA,GACAlB,GAAA,IAAAA,MAAA7I,KAAAO,QACAyZ,GAAAlD,EAAAvW,SAAAyZ,EAAAlD,EAAAvW,QACAyZ,MAAA,GACAnR,EAAA,GAAAA,EAAAkB,IAAAlB,EAAAkB,GAGAlB,IAAAkB,EAAA,QACA,QAAA+M,EAAAvW,QAAA,IAAAP,KAAAO,OAAA,QAGA,IAAAyZ,EAAA,EACA,SAAAvL,YAAA,4BAEA,IAAA1E,EAAA,GAAAA,GAAA/J,KAAAO,OAAA,SAAAkO,YAAA,4BACA,IAAA5F,EAAA,WAAA4F,YAAA,0BAGA5F,GAAA7I,KAAAO,SAAAsI,EAAA7I,KAAAO,QACAuW,EAAAvW,OAAAyZ,EAAAnR,EAAAkB,IACAlB,EAAAiO,EAAAvW,OAAAyZ,EAAAjQ,EAGA,IACAzJ,GADAwM,EAAAjE,EAAAkB,CAGA,IAAA/J,OAAA8W,GAAA/M,EAAAiQ,KAAAnR,EAEA,IAAAvI,EAAAwM,EAAA,EAAqBxM,GAAA,IAAQA,EAC7BwW,EAAAxW,EAAA0Z,GAAAha,KAAAM,EAAAyJ,OAEG,IAAA+C,EAAA,MAAApN,EAAA4O,oBAEH,IAAAhO,EAAA,EAAeA,EAAAwM,IAASxM,EACxBwW,EAAAxW,EAAA0Z,GAAAha,KAAAM,EAAAyJ,OAGAkE,YAAAvK,UAAAuW,IAAA7a,KACA0X,EACA9W,KAAAoO,SAAArE,IAAA+C,GACAkN,EAIA,OAAAlN,IAOApN,EAAAgE,UAAA0L,KAAA,SAAAyB,EAAA9G,EAAAlB,EAAAxE,GAEA,mBAAAwM,GAAA,CASA,GARA,gBAAA9G,IACA1F,EAAA0F,EACAA,EAAA,EACAlB,EAAA7I,KAAAO,QACK,gBAAAsI,KACLxE,EAAAwE,EACAA,EAAA7I,KAAAO,QAEA,IAAAsQ,EAAAtQ,OAAA,CACA,GAAA2Z,GAAArJ,EAAAoE,WAAA,EACAiF,GAAA,MACArJ,EAAAqJ,GAGA,GAAApW,SAAAO,GAAA,gBAAAA,GACA,SAAAyK,WAAA,4BAEA,oBAAAzK,KAAA3E,EAAAmF,WAAAR,GACA,SAAAyK,WAAA,qBAAAzK,OAEG,gBAAAwM,KACHA,GAAA,IAIA,IAAA9G,EAAA,GAAA/J,KAAAO,OAAAwJ,GAAA/J,KAAAO,OAAAsI,EACA,SAAA4F,YAAA,qBAGA,IAAA5F,GAAAkB,EACA,MAAA/J,KAGA+J,MAAA,EACAlB,EAAA/E,SAAA+E,EAAA7I,KAAAO,OAAAsI,IAAA,EAEAgI,MAAA,EAEA,IAAAvQ,EACA,oBAAAuQ,GACA,IAAAvQ,EAAAyJ,EAAmBzJ,EAAAuI,IAASvI,EAC5BN,KAAAM,GAAAuQ,MAEG,CACH,GAAAgD,GAAAnU,EAAA0I,SAAAyI,GACAA,EACAb,EAAA,GAAAtQ,GAAAmR,EAAAxM,GAAAgG,YACAyC,EAAA+G,EAAAtT,MACA,KAAAD,EAAA,EAAeA,EAAAuI,EAAAkB,IAAiBzJ,EAChCN,KAAAM,EAAAyJ,GAAA8J,EAAAvT,EAAAwM,GAIA,MAAA9M,MAMA,IAAA4U,IAAA,uBJq3C8BxV,KAAKJ,EAASH,EAAoB,GAAGa,OAAS,WAAa,MAAOM,WAI1F,SAASf,EAAQD,GKt+FvB,YAmBA,SAAAmb,GAAAC,GACA,GAAAtN,GAAAsN,EAAA7Z,MACA,IAAAuM,EAAA,IACA,SAAAlI,OAAA,iDAQA,aAAAwV,EAAAtN,EAAA,WAAAsN,EAAAtN,EAAA,OAGA,QAAAzE,GAAA+R,GAEA,SAAAA,EAAA7Z,OAAA,EAAA4Z,EAAAC,GAGA,QAAA/E,GAAA+E,GACA,GAAA9Z,GAAAE,EAAA6Z,EAAAC,EAAAC,EAAAvM,EACAlB,EAAAsN,EAAA7Z,MACAga,GAAAJ,EAAAC,GAEApM,EAAA,GAAAwM,GAAA,EAAA1N,EAAA,EAAAyN,GAGAF,EAAAE,EAAA,EAAAzN,EAAA,EAAAA,CAEA,IAAA2N,GAAA,CAEA,KAAAna,EAAA,EAAAE,EAAA,EAAoBF,EAAA+Z,EAAO/Z,GAAA,EAAAE,GAAA,EAC3B8Z,EAAAI,EAAAN,EAAAnF,WAAA3U,KAAA,GAAAoa,EAAAN,EAAAnF,WAAA3U,EAAA,QAAAoa,EAAAN,EAAAnF,WAAA3U,EAAA,OAAAoa,EAAAN,EAAAnF,WAAA3U,EAAA,IACA0N,EAAAyM,KAAAH,GAAA,OACAtM,EAAAyM,KAAAH,GAAA,MACAtM,EAAAyM,KAAA,IAAAH,CAYA,OATA,KAAAC,GACAD,EAAAI,EAAAN,EAAAnF,WAAA3U,KAAA,EAAAoa,EAAAN,EAAAnF,WAAA3U,EAAA,OACA0N,EAAAyM,KAAA,IAAAH,GACG,IAAAC,IACHD,EAAAI,EAAAN,EAAAnF,WAAA3U,KAAA,GAAAoa,EAAAN,EAAAnF,WAAA3U,EAAA,OAAAoa,EAAAN,EAAAnF,WAAA3U,EAAA,OACA0N,EAAAyM,KAAAH,GAAA,MACAtM,EAAAyM,KAAA,IAAAH,GAGAtM,EAGA,QAAA2M,GAAAC,GACA,MAAAC,GAAAD,GAAA,OAAAC,EAAAD,GAAA,OAAAC,EAAAD,GAAA,MAAAC,EAAA,GAAAD,GAGA,QAAAE,GAAAC,EAAAhR,EAAAlB,GAGA,OAFAyR,GACAU,KACA1a,EAAAyJ,EAAqBzJ,EAAAuI,EAASvI,GAAA,EAC9Bga,GAAAS,EAAAza,IAAA,KAAAya,EAAAza,EAAA,OAAAya,EAAAza,EAAA,GACA0a,EAAA7V,KAAAwV,EAAAL,GAEA,OAAAU,GAAA9R,KAAA,IAGA,QAAAyJ,GAAAoI,GASA,OARAT,GACAxN,EAAAiO,EAAAxa,OACA0a,EAAAnO,EAAA,EACAkO,EAAA,GACAE,KACAC,EAAA,MAGA7a,EAAA,EAAA8a,EAAAtO,EAAAmO,EAA0C3a,EAAA8a,EAAU9a,GAAA6a,EACpDD,EAAA/V,KAAA2V,EAAAC,EAAAza,IAAA6a,EAAAC,IAAA9a,EAAA6a,GAmBA,OAfA,KAAAF,GACAX,EAAAS,EAAAjO,EAAA,GACAkO,GAAAH,EAAAP,GAAA,GACAU,GAAAH,EAAAP,GAAA,MACAU,GAAA,MACG,IAAAC,IACHX,GAAAS,EAAAjO,EAAA,OAAAiO,EAAAjO,EAAA,GACAkO,GAAAH,EAAAP,GAAA,IACAU,GAAAH,EAAAP,GAAA,MACAU,GAAAH,EAAAP,GAAA,MACAU,GAAA,KAGAE,EAAA/V,KAAA6V,GAEAE,EAAAhS,KAAA,IA9GAlK,EAAAqJ,aACArJ,EAAAqW,cACArW,EAAA2T,eAOA,QALAkI,MACAH,KACAF,EAAA,mBAAAvM,uBAAAlJ,MAEAmV,EAAA,mEACA5Z,EAAA,EAAAwM,EAAAoN,EAAA3Z,OAAkCD,EAAAwM,IAASxM,EAC3Cua,EAAAva,GAAA4Z,EAAA5Z,GACAoa,EAAAR,EAAAjF,WAAA3U,KAGAoa,GAAA,IAAAzF,WAAA,OACAyF,EAAA,IAAAzF,WAAA,QL6kGM,SAAShW,EAAQD,GM9lGvBA,EAAAmS,KAAA,SAAAxB,EAAAiC,EAAAyJ,EAAAC,EAAAC,GACA,GAAArP,GAAA7M,EACAmc,EAAA,EAAAD,EAAAD,EAAA,EACAG,GAAA,GAAAD,GAAA,EACAE,EAAAD,GAAA,EACAE,GAAA,EACArb,EAAA+a,EAAAE,EAAA,IACAK,EAAAP,GAAA,IACA5N,EAAAkC,EAAAiC,EAAAtR,EAOA,KALAA,GAAAsb,EAEA1P,EAAAuB,GAAA,IAAAkO,GAAA,EACAlO,KAAAkO,EACAA,GAAAH,EACQG,EAAA,EAAWzP,EAAA,IAAAA,EAAAyD,EAAAiC,EAAAtR,MAAAsb,EAAAD,GAAA,GAKnB,IAHAtc,EAAA6M,GAAA,IAAAyP,GAAA,EACAzP,KAAAyP,EACAA,GAAAL,EACQK,EAAA,EAAWtc,EAAA,IAAAA,EAAAsQ,EAAAiC,EAAAtR,MAAAsb,EAAAD,GAAA,GAEnB,OAAAzP,EACAA,EAAA,EAAAwP,MACG,IAAAxP,IAAAuP,EACH,MAAApc,GAAAwc,KAAApO,GAAA,MAAAsH,IAEA1V,IAAAoB,KAAAwX,IAAA,EAAAqD,GACApP,GAAAwP,EAEA,OAAAjO,GAAA,KAAApO,EAAAoB,KAAAwX,IAAA,EAAA/L,EAAAoP,IAGAtc,EAAA0I,MAAA,SAAAiI,EAAAd,EAAA+C,EAAAyJ,EAAAC,EAAAC,GACA,GAAArP,GAAA7M,EAAAC,EACAkc,EAAA,EAAAD,EAAAD,EAAA,EACAG,GAAA,GAAAD,GAAA,EACAE,EAAAD,GAAA,EACAK,EAAA,KAAAR,EAAA7a,KAAAwX,IAAA,OAAAxX,KAAAwX,IAAA,SACA3X,EAAA+a,EAAA,EAAAE,EAAA,EACAK,EAAAP,EAAA,KACA5N,EAAAoB,EAAA,OAAAA,GAAA,EAAAA,EAAA,KAmCA,KAjCAA,EAAApO,KAAAsb,IAAAlN,GAEAkC,MAAAlC,QAAAkG,KACA1V,EAAA0R,MAAAlC,GAAA,IACA3C,EAAAuP,IAEAvP,EAAAzL,KAAAC,MAAAD,KAAAub,IAAAnN,GAAApO,KAAAwb,KACApN,GAAAvP,EAAAmB,KAAAwX,IAAA,GAAA/L,IAAA,IACAA,IACA5M,GAAA,GAGAuP,GADA3C,EAAAwP,GAAA,EACAI,EAAAxc,EAEAwc,EAAArb,KAAAwX,IAAA,IAAAyD,GAEA7M,EAAAvP,GAAA,IACA4M,IACA5M,GAAA,GAGA4M,EAAAwP,GAAAD,GACApc,EAAA,EACA6M,EAAAuP,GACKvP,EAAAwP,GAAA,GACLrc,GAAAwP,EAAAvP,EAAA,GAAAmB,KAAAwX,IAAA,EAAAqD,GACApP,GAAAwP,IAEArc,EAAAwP,EAAApO,KAAAwX,IAAA,EAAAyD,EAAA,GAAAjb,KAAAwX,IAAA,EAAAqD,GACApP,EAAA,IAIQoP,GAAA,EAAW3L,EAAAiC,EAAAtR,GAAA,IAAAjB,EAAAiB,GAAAsb,EAAAvc,GAAA,IAAAic,GAAA,GAInB,IAFApP,KAAAoP,EAAAjc,EACAmc,GAAAF,EACQE,EAAA,EAAU7L,EAAAiC,EAAAtR,GAAA,IAAA4L,EAAA5L,GAAAsb,EAAA1P,GAAA,IAAAsP,GAAA,GAElB7L,EAAAiC,EAAAtR,EAAAsb,IAAA,IAAAnO,INsmGM,SAASxO,EAAQD,GOxrGvB,GAAAqL,MAAiBA,QAEjBpL,GAAAD,QAAA+F,MAAAC,SAAA,SAAAgJ,GACA,wBAAA3D,EAAAjL,KAAA4O,KPgsGM,SAAS/O,EAAQD,EAASH,IQnsGhC,SAAAc,EAAAuc,GAiBA,QAAAC,GAAAjd,EAAAkd,GACApc,KAAAqc,IAAAnd,EACAc,KAAAsc,SAAAF,EAnBA,GAAAG,GAAA1d,EAAA,GAAA0d,SACA9I,EAAA+I,SAAA9Y,UAAA+P,MACArI,EAAArG,MAAArB,UAAA0H,MACAqR,KACAC,EAAA,CAIA1d,GAAAoO,WAAA,WACA,UAAA+O,GAAA1I,EAAArU,KAAAgO,WAAA5N,OAAAkX,WAAA7K,eAEA7M,EAAA2d,YAAA,WACA,UAAAR,GAAA1I,EAAArU,KAAAud,YAAAnd,OAAAkX,WAAAkG,gBAEA5d,EAAA6M,aACA7M,EAAA4d,cAAA,SAAAjR,GAA2CA,EAAAhD,SAM3CwT,EAAAzY,UAAAmZ,MAAAV,EAAAzY,UAAAoZ,IAAA,aACAX,EAAAzY,UAAAiF,MAAA,WACA3I,KAAAsc,SAAAld,KAAAI,OAAAQ,KAAAqc,MAIArd,EAAA+d,OAAA,SAAAC,EAAAC,GACApR,aAAAmR,EAAAE,gBACAF,EAAAG,aAAAF,GAGAje,EAAAoe,SAAA,SAAAJ,GACAnR,aAAAmR,EAAAE,gBACAF,EAAAG,cAAA,GAGAne,EAAAqe,aAAAre,EAAAse,OAAA,SAAAN,GACAnR,aAAAmR,EAAAE,eAEA,IAAAD,GAAAD,EAAAG,YACAF,IAAA,IACAD,EAAAE,eAAA9P,WAAA,WACA4P,EAAAO,YACAP,EAAAO,cACKN,KAKLje,EAAAW,aAAA,kBAAAA,KAAA,SAAA6d,GACA,GAAAte,GAAAwd,IACAe,IAAA/G,UAAAnW,OAAA,IAAA6K,EAAAhM,KAAAsX,UAAA,EAkBA,OAhBA+F,GAAAvd,IAAA,EAEAqd,EAAA,WACAE,EAAAvd,KAGAue,EACAD,EAAA/J,MAAA,KAAAgK,GAEAD,EAAApe,KAAA,MAGAJ,EAAAkd,eAAAhd,MAIAA,GAGAF,EAAAkd,eAAA,kBAAAA,KAAA,SAAAhd,SACAud,GAAAvd,MRusG8BE,KAAKJ,EAASH,EAAoB,GAAGc,aAAcd,EAAoB,GAAGqd,iBAIlG,SAASjd,EAAQD,GS1wGvB,QAAA0e,KACA,SAAA9Y,OAAA,mCAEA,QAAA+Y,KACA,SAAA/Y,OAAA,qCAsBA,QAAAgZ,GAAAC,GACA,GAAAC,IAAA1Q,WAEA,MAAAA,YAAAyQ,EAAA,EAGA,KAAAC,IAAAJ,IAAAI,IAAA1Q,WAEA,MADA0Q,GAAA1Q,WACAA,WAAAyQ,EAAA,EAEA,KAEA,MAAAC,GAAAD,EAAA,GACK,MAAA3R,GACL,IAEA,MAAA4R,GAAA1e,KAAA,KAAAye,EAAA,GACS,MAAA3R,GAET,MAAA4R,GAAA1e,KAAAY,KAAA6d,EAAA,KAMA,QAAAE,GAAAC,GACA,GAAAC,IAAApS,aAEA,MAAAA,cAAAmS,EAGA,KAAAC,IAAAN,IAAAM,IAAApS,aAEA,MADAoS,GAAApS,aACAA,aAAAmS,EAEA,KAEA,MAAAC,GAAAD,GACK,MAAA9R,GACL,IAEA,MAAA+R,GAAA7e,KAAA,KAAA4e,GACS,MAAA9R,GAGT,MAAA+R,GAAA7e,KAAAY,KAAAge,KAYA,QAAAE,KACAC,GAAAC,IAGAD,GAAA,EACAC,EAAA7d,OACA2M,EAAAkR,EAAAjX,OAAA+F,GAEAmR,GAAA,EAEAnR,EAAA3M,QACA+d,KAIA,QAAAA,KACA,IAAAH,EAAA,CAGA,GAAAxS,GAAAiS,EAAAM,EACAC,IAAA,CAGA,KADA,GAAArR,GAAAI,EAAA3M,OACAuM,GAAA,CAGA,IAFAsR,EAAAlR,EACAA,OACAmR,EAAAvR,GACAsR,GACAA,EAAAC,GAAAE,KAGAF,IAAA,EACAvR,EAAAI,EAAA3M,OAEA6d,EAAA,KACAD,GAAA,EACAJ,EAAApS,IAiBA,QAAA6S,GAAAX,EAAAxd,GACAL,KAAA6d,MACA7d,KAAAK,QAYA,QAAAoe,MAhKA,GAOAX,GACAG,EARAS,EAAAzf,EAAAD,YAgBA,WACA,IAEA8e,EADA,kBAAA1Q,YACAA,WAEAsQ,EAEK,MAAAxR,GACL4R,EAAAJ,EAEA,IAEAO,EADA,kBAAApS,cACAA,aAEA8R,EAEK,MAAAzR,GACL+R,EAAAN,KAuDA,IAEAS,GAFAlR,KACAiR,GAAA,EAEAE,GAAA,CAyCAK,GAAAnC,SAAA,SAAAsB,GACA,GAAAJ,GAAA,GAAA1Y,OAAA2R,UAAAnW,OAAA,EACA,IAAAmW,UAAAnW,OAAA,EACA,OAAAD,GAAA,EAAuBA,EAAAoW,UAAAnW,OAAsBD,IAC7Cmd,EAAAnd,EAAA,GAAAoW,UAAApW,EAGA4M,GAAA/H,KAAA,GAAAqZ,GAAAX,EAAAJ,IACA,IAAAvQ,EAAA3M,QAAA4d,GACAP,EAAAU,IASAE,EAAA9a,UAAA6a,IAAA,WACAve,KAAA6d,IAAApK,MAAA,KAAAzT,KAAAK,QAEAqe,EAAAC,MAAA,UACAD,EAAAE,SAAA,EACAF,EAAAG,OACAH,EAAAI,QACAJ,EAAArb,QAAA,GACAqb,EAAAK,YAIAL,EAAAhY,GAAA+X,EACAC,EAAAM,YAAAP,EACAC,EAAAO,KAAAR,EACAC,EAAAQ,IAAAT,EACAC,EAAAS,eAAAV,EACAC,EAAA9V,mBAAA6V,EACAC,EAAA5Y,KAAA2Y,EAEAC,EAAAU,QAAA,SAAA3X,GACA,SAAA7C,OAAA,qCAGA8Z,EAAAW,IAAA,WAA2B,WAC3BX,EAAAY,MAAA,SAAAxO,GACA,SAAAlM,OAAA,mCAEA8Z,EAAAa,MAAA,WAA4B,WT4xGtB,SAAStgB,EAAQD,EAASH,IU/8GhC,SAAAa,GAAA,YAKA,SAAA8f,GAAA1e,GACA,GAAAwI,GAAAtJ,IACAD,GAAAX,KAAAY,MACAA,KAAAyf,KAAA,GAAAC,WAAA5e,GACAd,KAAAyf,KAAAE,iBAAA,gBAAAzT,GACA5C,EAAAxD,KAAA,aAEA9F,KAAAyf,KAAAE,iBAAA,mBAAAzT,GACA5C,EAAAxD,KAAA,UAAApG,GAAAwM,EAAAjF,SAEAjH,KAAAyf,KAAAE,iBAAA,iBAAAzT,GACA5C,EAAAxD,KAAA,QAAAoG,KAEAlM,KAAAyf,KAAAE,iBAAA,iBAAAzT,GACA5C,EAAAxD,KAAA,WAjBA,GAAA3E,GAAAtC,EAAA,GACAkB,EAAAlB,EAAA,IAAAkB,YAmBAoB,GAAAsC,SAAA+b,EAAAzf,GAEAyf,EAAA9b,UAAAmF,IAAA,WACA7I,KAAA8I,WAGA0W,EAAA9b,UAAAoF,QAAA,WAEA9I,KAAAyf,KAAAG,aAAAF,UAAAG,YACA7f,KAAAyf,KAAAG,aAAAF,UAAAI,MAEA9f,KAAAyf,KAAA9W,SAIA6W,EAAA9b,UAAAgE,MAAA,SAAAT,GACAjH,KAAAyf,KAAAG,aAAAF,UAAAI,MACA9f,KAAAyf,KAAAM,KAAA9Y,IAIAuY,EAAA9b,UAAA8H,MAAA,WACAwU,QAAAC,KAAA,6DAGAT,EAAA9b,UAAAsG,OAAA,aAEAhL,EAAAmB,iBAAA,SAAAW,GAEA,UAAA0e,GAAA1e,EAAAof,QACAC,SAAArf,EAAAqf,SACAC,QAAAtf,EAAAsf,QACAC,KAAAvf,EAAAuf,KACAC,SAAAxf,EAAAwf,SACA/b,KAAAzD,EAAAyD,KACAgc,SAAAzf,EAAAyf,SACAC,OAAA1f,EAAA0f,OACAC,KAAA3f,EAAA2f,KACAC,MAAA5f,EAAA4f,MACAC,KAAA7f,EAAA6f,WVq9G8BvhB,KAAKJ,EAASH,EAAoB,GAAGa,SAI7D,SAAST,EAAQD,EAASH,IWthHhC,SAAAiP,EAAA4Q,GA4HA,QAAA9H,GAAAlH,EAAA7P,GAEA,GAAA+gB,IACAC,QACAC,QAAAC,EAkBA,OAfArK,WAAAnW,QAAA,IAAAqgB,EAAAI,MAAAtK,UAAA,IACAA,UAAAnW,QAAA,IAAAqgB,EAAAK,OAAAvK,UAAA,IACAwK,EAAArhB,GAEA+gB,EAAAO,WAAAthB,EACGA,GAEHb,EAAAoiB,QAAAR,EAAA/gB,GAGAwhB,EAAAT,EAAAO,cAAAP,EAAAO,YAAA,GACAE,EAAAT,EAAAI,SAAAJ,EAAAI,MAAA,GACAK,EAAAT,EAAAK,UAAAL,EAAAK,QAAA,GACAI,EAAAT,EAAAU,iBAAAV,EAAAU,eAAA,GACAV,EAAAK,SAAAL,EAAAE,QAAAS,GACAC,EAAAZ,EAAAlR,EAAAkR,EAAAI,OAoCA,QAAAO,GAAAvU,EAAAyU,GACA,GAAAC,GAAA9K,EAAA+K,OAAAF,EAEA,OAAAC,GACA,KAAA9K,EAAAqK,OAAAS,GAAA,OAAA1U,EACA,KAAA4J,EAAAqK,OAAAS,GAAA,OAEA1U,EAKA,QAAA+T,GAAA/T,EAAAyU,GACA,MAAAzU,GAIA,QAAA4U,GAAAvhB,GACA,GAAAsgB,KAMA,OAJAtgB,GAAA4E,QAAA,SAAA4L,EAAAgR,GACAlB,EAAA9P,IAAA,IAGA8P,EAIA,QAAAa,GAAAZ,EAAA/R,EAAAiT,GAGA,GAAAlB,EAAAU,eACAzS,GACAkT,EAAAlT,EAAA+H,UAEA/H,EAAA+H,UAAA5X,EAAA4X,WAEA/H,EAAAmT,aAAAnT,EAAAmT,YAAAte,YAAAmL,GAAA,CACA,GAAA6E,GAAA7E,EAAA+H,QAAAkL,EAAAlB,EAIA,OAHAqB,GAAAvO,KACAA,EAAA8N,EAAAZ,EAAAlN,EAAAoO,IAEApO,EAIA,GAAAwO,GAAAC,EAAAvB,EAAA/R,EACA,IAAAqT,EACA,MAAAA,EAIA,IAAAtU,GAAAD,OAAAC,KAAAiB,GACAuT,EAAAR,EAAAhU,EAQA,IANAgT,EAAAO,aACAvT,EAAAD,OAAA0U,oBAAAxT,IAKAyT,EAAAzT,KACAjB,EAAAqD,QAAA,eAAArD,EAAAqD,QAAA,mBACA,MAAAsR,GAAA1T,EAIA,QAAAjB,EAAArN,OAAA,CACA,GAAAwhB,EAAAlT,GAAA,CACA,GAAApH,GAAAoH,EAAApH,KAAA,KAAAoH,EAAApH,KAAA,EACA,OAAAmZ,GAAAE,QAAA,YAAArZ,EAAA,eAEA,GAAA+a,EAAA3T,GACA,MAAA+R,GAAAE,QAAA2B,OAAA/e,UAAA2G,SAAAjL,KAAAyP,GAAA,SAEA,IAAA6T,EAAA7T,GACA,MAAA+R,GAAAE,QAAA5W,KAAAxG,UAAA2G,SAAAjL,KAAAyP,GAAA,OAEA,IAAAyT,EAAAzT,GACA,MAAA0T,GAAA1T,GAIA,GAAA8T,GAAA,GAAAtiB,GAAA,EAAAuiB,GAAA,IAA4C,IAS5C,IANA5d,EAAA6J,KACAxO,GAAA,EACAuiB,GAAA,UAIAb,EAAAlT,GAAA,CACA,GAAA8B,GAAA9B,EAAApH,KAAA,KAAAoH,EAAApH,KAAA,EACAkb,GAAA,aAAAhS,EAAA,IAkBA,GAdA6R,EAAA3T,KACA8T,EAAA,IAAAF,OAAA/e,UAAA2G,SAAAjL,KAAAyP,IAIA6T,EAAA7T,KACA8T,EAAA,IAAAzY,KAAAxG,UAAAmf,YAAAzjB,KAAAyP,IAIAyT,EAAAzT,KACA8T,EAAA,IAAAJ,EAAA1T,IAGA,IAAAjB,EAAArN,UAAAF,GAAA,GAAAwO,EAAAtO,QACA,MAAAqiB,GAAA,GAAAD,EAAAC,EAAA,EAGA,IAAAd,EAAA,EACA,MAAAU,GAAA3T,GACA+R,EAAAE,QAAA2B,OAAA/e,UAAA2G,SAAAjL,KAAAyP,GAAA,UAEA+R,EAAAE,QAAA,qBAIAF,GAAAC,KAAA1b,KAAA0J,EAEA,IAAAmM,EAWA,OATAA,GADA3a,EACAyiB,EAAAlC,EAAA/R,EAAAiT,EAAAM,EAAAxU,GAEAA,EAAAmV,IAAA,SAAA9X,GACA,MAAA+X,GAAApC,EAAA/R,EAAAiT,EAAAM,EAAAnX,EAAA5K,KAIAugB,EAAAC,KAAAoC,MAEAC,EAAAlI,EAAA2H,EAAAC,GAIA,QAAAT,GAAAvB,EAAA/R,GACA,GAAAwS,EAAAxS,GACA,MAAA+R,GAAAE,QAAA,wBACA,IAAAmB,EAAApT,GAAA,CACA,GAAAsU,GAAA,IAAAxb,KAAAC,UAAAiH,GAAA8F,QAAA,aACAA,QAAA,YACAA,QAAA,eACA,OAAAiM,GAAAE,QAAAqC,EAAA,UAEA,MAAAC,GAAAvU,GACA+R,EAAAE,QAAA,GAAAjS,EAAA,UACAqS,EAAArS,GACA+R,EAAAE,QAAA,GAAAjS,EAAA,WAEAwU,EAAAxU,GACA+R,EAAAE,QAAA,eADA,OAKA,QAAAyB,GAAA1T,GACA,UAAAjK,MAAAlB,UAAA2G,SAAAjL,KAAAyP,GAAA,IAIA,QAAAiU,GAAAlC,EAAA/R,EAAAiT,EAAAM,EAAAxU,GAEA,OADAoN,MACA1a,EAAA,EAAA+Z,EAAAxL,EAAAtO,OAAmCD,EAAA+Z,IAAO/Z,EAC1CoJ,EAAAmF,EAAA2C,OAAAlR,IACA0a,EAAA7V,KAAA6d,EAAApC,EAAA/R,EAAAiT,EAAAM,EACA5Q,OAAAlR,IAAA,IAEA0a,EAAA7V,KAAA,GASA,OANAyI,GAAA3I,QAAA,SAAAgG,GACAA,EAAA4L,MAAA,UACAmE,EAAA7V,KAAA6d,EAAApC,EAAA/R,EAAAiT,EAAAM,EACAnX,GAAA,MAGA+P,EAIA,QAAAgI,GAAApC,EAAA/R,EAAAiT,EAAAM,EAAAnX,EAAA5K,GACA,GAAAoH,GAAAuF,EAAAsW,CAsCA,IArCAA,EAAA3V,OAAA4V,yBAAA1U,EAAA5D,KAAyD4D,QAAA5D,IACzDqY,EAAAE,IAEAxW,EADAsW,EAAArJ,IACA2G,EAAAE,QAAA,6BAEAF,EAAAE,QAAA,sBAGAwC,EAAArJ,MACAjN,EAAA4T,EAAAE,QAAA,uBAGApX,EAAA0Y,EAAAnX,KACAxD,EAAA,IAAAwD,EAAA,KAEA+B,IACA4T,EAAAC,KAAA5P,QAAAqS,EAAAzU,OAAA,GAEA7B,EADAqW,EAAAvB,GACAN,EAAAZ,EAAA0C,EAAAzU,MAAA,MAEA2S,EAAAZ,EAAA0C,EAAAzU,MAAAiT,EAAA,GAEA9U,EAAAiE,QAAA,WAEAjE,EADA3M,EACA2M,EAAAtH,MAAA,MAAAqd,IAAA,SAAAU,GACA,WAAAA,IACWva,KAAA,MAAA+I,OAAA,GAEX,KAAAjF,EAAAtH,MAAA,MAAAqd,IAAA,SAAAU,GACA,YAAAA,IACWva,KAAA,QAIX8D,EAAA4T,EAAAE,QAAA,yBAGAO,EAAA5Z,GAAA,CACA,GAAApH,GAAA4K,EAAA4L,MAAA,SACA,MAAA7J,EAEAvF,GAAAE,KAAAC,UAAA,GAAAqD,GACAxD,EAAAoP,MAAA,iCACApP,IAAAwK,OAAA,EAAAxK,EAAAlH,OAAA,GACAkH,EAAAmZ,EAAAE,QAAArZ,EAAA,UAEAA,IAAAkN,QAAA,YACAA,QAAA,YACAA,QAAA,gBACAlN,EAAAmZ,EAAAE,QAAArZ,EAAA,WAIA,MAAAA,GAAA,KAAAuF,EAIA,QAAAkW,GAAAlI,EAAA2H,EAAAC,GACA,GAAAc,GAAA,EACAnjB,EAAAya,EAAA2I,OAAA,SAAAC,EAAAC,GAGA,MAFAH,KACAG,EAAA5S,QAAA,UAAAyS,IACAE,EAAAC,EAAAlP,QAAA,sBAAApU,OAAA,GACG,EAEH,OAAAA,GAAA,GACAqiB,EAAA,IACA,KAAAD,EAAA,GAAAA,EAAA,OACA,IACA3H,EAAA9R,KAAA,SACA,IACA0Z,EAAA,GAGAA,EAAA,GAAAD,EAAA,IAAA3H,EAAA9R,KAAA,UAAA0Z,EAAA,GAMA,QAAA5d,GAAA8e,GACA,MAAA/e,OAAAC,QAAA8e,GAIA,QAAA5C,GAAAxS,GACA,uBAAAA,GAIA,QAAA2U,GAAA3U,GACA,cAAAA,EAIA,QAAAqV,GAAArV,GACA,aAAAA,EAIA,QAAA0U,GAAA1U,GACA,sBAAAA,GAIA,QAAAuT,GAAAvT,GACA,sBAAAA,GAIA,QAAAsV,GAAAtV,GACA,sBAAAA,GAIA,QAAA2S,GAAA3S,GACA,gBAAAA,EAIA,QAAA8T,GAAAyB,GACA,MAAAC,GAAAD,IAAA,oBAAAE,EAAAF,GAIA,QAAAC,GAAAxV,GACA,sBAAAA,IAAA,OAAAA,EAIA,QAAAgU,GAAA9G,GACA,MAAAsI,GAAAtI,IAAA,kBAAAuI,EAAAvI,GAIA,QAAA0G,GAAApW,GACA,MAAAgY,GAAAhY,KACA,mBAAAiY,EAAAjY,gBAAAtH,QAIA,QAAAmd,GAAArT,GACA,wBAAAA,GAIA,QAAA0V,GAAA1V,GACA,cAAAA,GACA,iBAAAA,IACA,gBAAAA,IACA,gBAAAA,IACA,gBAAAA,IACA,mBAAAA,GAMA,QAAAyV,GAAAE,GACA,MAAA1W,QAAAjK,UAAA2G,SAAAjL,KAAAilB,GAIA,QAAAC,GAAA3T,GACA,MAAAA,GAAA,OAAAA,EAAAtG,SAAA,IAAAsG,EAAAtG,SAAA,IAQA,QAAAka,KACA,GAAA3I,GAAA,GAAA1R,MACAsa,GAAAF,EAAA1I,EAAA6I,YACAH,EAAA1I,EAAA8I,cACAJ,EAAA1I,EAAA+I,eAAAzb,KAAA,IACA,QAAA0S,EAAAgJ,UAAAC,EAAAjJ,EAAAkJ,YAAAN,GAAAtb,KAAA,KAqCA,QAAAQ,GAAAgG,EAAA9L,GACA,MAAA+J,QAAAjK,UAAAgG,eAAAtK,KAAAsQ,EAAA9L,GAnjBA,GAAAmhB,GAAA,UACA/lB,GAAAkhB,OAAA,SAAA8E,GACA,IAAA/C,EAAA+C,GAAA,CAEA,OADAC,MACA3kB,EAAA,EAAmBA,EAAAoW,UAAAnW,OAAsBD,IACzC2kB,EAAA9f,KAAAyR,EAAAF,UAAApW,IAEA,OAAA2kB,GAAA/b,KAAA,KAsBA,OAnBA5I,GAAA,EACAmd,EAAA/G,UACA5J,EAAA2Q,EAAAld,OACAyM,EAAAwE,OAAAwT,GAAArQ,QAAAoQ,EAAA,SAAA5O,GACA,UAAAA,EAAA,SACA,IAAA7V,GAAAwM,EAAA,MAAAqJ,EACA,QAAAA,GACA,eAAA3E,QAAAiM,EAAAnd,KACA,gBAAAuR,QAAA4L,EAAAnd,KACA,UACA,IACA,MAAAqH,MAAAC,UAAA6V,EAAAnd,MACS,MAAA4kB,GACT,mBAEA,QACA,MAAA/O,MAGAA,EAAAsH,EAAAnd,GAAuBA,EAAAwM,EAASqJ,EAAAsH,IAAAnd,GAEhC0M,GADAqW,EAAAlN,KAAA+N,EAAA/N,GACA,IAAAA,EAEA,IAAAS,EAAAT,EAGA,OAAAnJ,IAOAhO,EAAAmmB,UAAA,SAAA3H,EAAAlS,GAaA,QAAA8Z,KACA,IAAAC,EAAA,CACA,GAAA3G,EAAA4G,iBACA,SAAA1gB,OAAA0G,EACOoT,GAAA6G,iBACPvF,QAAAwF,MAAAla,GAEA0U,QAAAyF,MAAAna,GAEA+Z,GAAA,EAEA,MAAA7H,GAAA/J,MAAAzT,KAAA0W,WAtBA,GAAA2K,EAAAvT,EAAA4Q,SACA,kBACA,MAAA1f,GAAAmmB,UAAA3H,EAAAlS,GAAAmI,MAAAzT,KAAA0W,WAIA,IAAAgI,EAAAgH,iBAAA,EACA,MAAAlI,EAGA,IAAA6H,IAAA,CAeA,OAAAD,GAIA,IACAO,GADAC,IAEA5mB,GAAA6mB,SAAA,SAAA5L,GAIA,GAHAoH,EAAAsE,KACAA,EAAAjH,EAAAG,IAAAiH,YAAA,IACA7L,IAAA8L,eACAH,EAAA3L,GACA,MAAAwI,QAAA,MAAAxI,EAAA,WAAA7Q,KAAAuc,GAAA,CACA,GAAAK,GAAAtH,EAAAsH,GACAJ,GAAA3L,GAAA,WACA,GAAA3O,GAAAtM,EAAAkhB,OAAAzM,MAAAzU,EAAA0X,UACAsJ,SAAAyF,MAAA,YAAAxL,EAAA+L,EAAA1a,QAGAsa,GAAA3L,GAAA,YAGA,OAAA2L,GAAA3L,IAoCAjb,EAAA4X,UAIAA,EAAAqK,QACAgF,MAAA,MACAC,QAAA,MACAC,WAAA,MACAC,SAAA,MACAC,OAAA,OACAC,MAAA,OACAC,OAAA,OACAC,MAAA,OACAC,MAAA,OACAC,OAAA,OACAC,SAAA,OACAC,KAAA,OACAC,QAAA,QAIAjQ,EAAA+K,QACAmF,QAAA,OACAC,OAAA,SACAC,QAAA,SACAljB,UAAA,OACAmjB,KAAA,OACA3X,OAAA,QACA4X,KAAA,UAEAC,OAAA,OAkRAnoB,EAAAgG,UAKAhG,EAAAkiB,YAKAliB,EAAAqkB,SAKArkB,EAAA+kB,oBAKA/kB,EAAAokB,WAKApkB,EAAAijB,WAKAjjB,EAAAglB,WAKAhlB,EAAAqiB,cAKAriB,EAAAwjB,WAKAxjB,EAAAklB,WAKAllB,EAAA0jB,SAMA1jB,EAAAsjB,UAKAtjB,EAAA+iB,aAUA/iB,EAAAolB,cAEAplB,EAAAoJ,SAAAvJ,EAAA,GAYA,IAAAgmB,IAAA,sDACA,kBAaA7lB,GAAAgd,IAAA,WACAgE,QAAAhE,IAAA,UAAAuI,IAAAvlB,EAAAkhB,OAAAzM,MAAAzU,EAAA0X;EAiBA1X,EAAAyE,SAAA5E,EAAA,IAEAG,EAAAoiB,QAAA,SAAAgG,EAAAC,GAEA,IAAAA,IAAAnD,EAAAmD,GAAA,MAAAD,EAIA,KAFA,GAAAxZ,GAAAD,OAAAC,KAAAyZ,GACA/mB,EAAAsN,EAAArN,OACAD,KACA8mB,EAAAxZ,EAAAtN,IAAA+mB,EAAAzZ,EAAAtN,GAEA,OAAA8mB,MX+hH8BhoB,KAAKJ,EAAU,WAAa,MAAOgB,SAAYnB,EAAoB,KAI3F,SAASI,EAAQD,GYvmIvBC,EAAAD,QAAA,SAAA0P,GACA,MAAAA,IAAA,gBAAAA,IACA,kBAAAA,GAAA3B,MACA,kBAAA2B,GAAAU,MACA,kBAAAV,GAAAkJ,YZ8mIM,SAAS3Y,EAAQD,GalnIvB,kBAAA2O,QAAA2Z,OAEAroB,EAAAD,QAAA,SAAAuoB,EAAAC,GACAD,EAAAE,OAAAD,EACAD,EAAA7jB,UAAAiK,OAAA2Z,OAAAE,EAAA9jB,WACAse,aACAnT,MAAA0Y,EACAG,YAAA,EACAC,UAAA,EACA7R,cAAA,MAMA7W,EAAAD,QAAA,SAAAuoB,EAAAC,GACAD,EAAAE,OAAAD,CACA,IAAAI,GAAA,YACAA,GAAAlkB,UAAA8jB,EAAA9jB,UACA6jB,EAAA7jB,UAAA,GAAAkkB,GACAL,EAAA7jB,UAAAse,YAAAuF,Ib2nIM,SAAStoB,EAAQD,Gc1nIvB,QAAAe,KACAC,KAAA6nB,QAAA7nB,KAAA6nB,YACA7nB,KAAA8nB,cAAA9nB,KAAA8nB,eAAAhkB,OAwQA,QAAAie,GAAArT,GACA,wBAAAA,GAGA,QAAA0U,GAAA1U,GACA,sBAAAA,GAGA,QAAAwV,GAAAxV,GACA,sBAAAA,IAAA,OAAAA,EAGA,QAAA2S,GAAA3S,GACA,gBAAAA,EAnRAzP,EAAAD,QAAAe,EAGAA,iBAEAA,EAAA2D,UAAAmkB,QAAA/jB,OACA/D,EAAA2D,UAAAokB,cAAAhkB,OAIA/D,EAAAgoB,oBAAA,GAIAhoB,EAAA2D,UAAAskB,gBAAA,SAAArX,GACA,IAAAyS,EAAAzS,MAAA,GAAAI,MAAAJ,GACA,KAAA7B,WAAA,8BAEA,OADA9O,MAAA8nB,cAAAnX,EACA3Q,MAGAD,EAAA2D,UAAAoC,KAAA,SAAA+J,GACA,GAAAoY,GAAAC,EAAApb,EAAA2Q,EAAAnd,EAAA6nB,CAMA,IAJAnoB,KAAA6nB,UACA7nB,KAAA6nB,YAGA,UAAAhY,KACA7P,KAAA6nB,QAAApC,OACAvB,EAAAlkB,KAAA6nB,QAAApC,SAAAzlB,KAAA6nB,QAAApC,MAAAllB,QAAA,CAEA,GADA0nB,EAAAvR,UAAA,GACAuR,YAAArjB,OACA,KAAAqjB,EAGA,IAAAG,GAAA,GAAAxjB,OAAA,yCAAAqjB,EAAA,IAEA,MADAG,GAAAC,QAAAJ,EACAG,EAOA,GAFAF,EAAAloB,KAAA6nB,QAAAhY,GAEAwR,EAAA6G,GACA,QAEA,IAAAnG,EAAAmG,GACA,OAAAxR,UAAAnW,QAEA,OACA2nB,EAAA9oB,KAAAY,KACA,MACA,QACAkoB,EAAA9oB,KAAAY,KAAA0W,UAAA,GACA,MACA,QACAwR,EAAA9oB,KAAAY,KAAA0W,UAAA,GAAAA,UAAA,GACA,MAEA,SACA+G,EAAA1Y,MAAArB,UAAA0H,MAAAhM,KAAAsX,UAAA,GACAwR,EAAAzU,MAAAzT,KAAAyd,OAEG,IAAAyG,EAAAgE,GAIH,IAHAzK,EAAA1Y,MAAArB,UAAA0H,MAAAhM,KAAAsX,UAAA,GACAyR,EAAAD,EAAA9c,QACA0B,EAAAqb,EAAA5nB,OACAD,EAAA,EAAeA,EAAAwM,EAASxM,IACxB6nB,EAAA7nB,GAAAmT,MAAAzT,KAAAyd,EAGA,WAGA1d,EAAA2D,UAAAsb,YAAA,SAAAnP,EAAAyY,GACA,GAAAjpB,EAEA,KAAA0iB,EAAAuG,GACA,KAAAxZ,WAAA,8BA2CA,OAzCA9O,MAAA6nB,UACA7nB,KAAA6nB,YAIA7nB,KAAA6nB,QAAAU,aACAvoB,KAAA8F,KAAA,cAAA+J,EACAkS,EAAAuG,YACAA,cAEAtoB,KAAA6nB,QAAAhY,GAGAqU,EAAAlkB,KAAA6nB,QAAAhY,IAEA7P,KAAA6nB,QAAAhY,GAAA1K,KAAAmjB,GAGAtoB,KAAA6nB,QAAAhY,IAAA7P,KAAA6nB,QAAAhY,GAAAyY,GANAtoB,KAAA6nB,QAAAhY,GAAAyY,EASApE,EAAAlkB,KAAA6nB,QAAAhY,MAAA7P,KAAA6nB,QAAAhY,GAAAwV,SAIAhmB,EAHAgiB,EAAArhB,KAAA8nB,eAGA/nB,EAAAgoB,oBAFA/nB,KAAA8nB,cAKAzoB,KAAA,GAAAW,KAAA6nB,QAAAhY,GAAAtP,OAAAlB,IACAW,KAAA6nB,QAAAhY,GAAAwV,QAAA,EACArF,QAAAyF,MAAA,mIAGAzlB,KAAA6nB,QAAAhY,GAAAtP,QACA,kBAAAyf,SAAAwF,OAEAxF,QAAAwF,UAKAxlB,MAGAD,EAAA2D,UAAAgD,GAAA3G,EAAA2D,UAAAsb,YAEAjf,EAAA2D,UAAAub,KAAA,SAAApP,EAAAyY,GAMA,QAAAE,KACAxoB,KAAAmf,eAAAtP,EAAA2Y,GAEAC,IACAA,GAAA,EACAH,EAAA7U,MAAAzT,KAAA0W,YAVA,IAAAqL,EAAAuG,GACA,KAAAxZ,WAAA,8BAEA,IAAA2Z,IAAA,CAcA,OAHAD,GAAAF,WACAtoB,KAAA0G,GAAAmJ,EAAA2Y,GAEAxoB,MAIAD,EAAA2D,UAAAyb,eAAA,SAAAtP,EAAAyY,GACA,GAAAjS,GAAAqS,EAAAnoB,EAAAD,CAEA,KAAAyhB,EAAAuG,GACA,KAAAxZ,WAAA,8BAEA,KAAA9O,KAAA6nB,UAAA7nB,KAAA6nB,QAAAhY,GACA,MAAA7P,KAMA,IAJAqW,EAAArW,KAAA6nB,QAAAhY,GACAtP,EAAA8V,EAAA9V,OACAmoB,GAAA,EAEArS,IAAAiS,GACAvG,EAAA1L,EAAAiS,WAAAjS,EAAAiS,mBACAtoB,MAAA6nB,QAAAhY,GACA7P,KAAA6nB,QAAA1I,gBACAnf,KAAA8F,KAAA,iBAAA+J,EAAAyY,OAEG,IAAApE,EAAA7N,GAAA,CACH,IAAA/V,EAAAC,EAAoBD,KAAA,GACpB,GAAA+V,EAAA/V,KAAAgoB,GACAjS,EAAA/V,GAAAgoB,UAAAjS,EAAA/V,GAAAgoB,aAAA,CACAI,EAAApoB,CACA,OAIA,GAAAooB,EAAA,EACA,MAAA1oB,KAEA,KAAAqW,EAAA9V,QACA8V,EAAA9V,OAAA,QACAP,MAAA6nB,QAAAhY,IAEAwG,EAAArP,OAAA0hB,EAAA,GAGA1oB,KAAA6nB,QAAA1I,gBACAnf,KAAA8F,KAAA,iBAAA+J,EAAAyY,GAGA,MAAAtoB,OAGAD,EAAA2D,UAAAkF,mBAAA,SAAAiH,GACA,GAAA5E,GAAAkd,CAEA,KAAAnoB,KAAA6nB,QACA,MAAA7nB,KAGA,KAAAA,KAAA6nB,QAAA1I,eAKA,MAJA,KAAAzI,UAAAnW,OACAP,KAAA6nB,WACA7nB,KAAA6nB,QAAAhY,UACA7P,MAAA6nB,QAAAhY,GACA7P,IAIA,QAAA0W,UAAAnW,OAAA,CACA,IAAA0K,IAAAjL,MAAA6nB,QACA,mBAAA5c,GACAjL,KAAA4I,mBAAAqC,EAIA,OAFAjL,MAAA4I,mBAAA,kBACA5I,KAAA6nB,WACA7nB,KAKA,GAFAmoB,EAAAnoB,KAAA6nB,QAAAhY,GAEAkS,EAAAoG,GACAnoB,KAAAmf,eAAAtP,EAAAsY,OACG,IAAAA,EAEH,KAAAA,EAAA5nB,QACAP,KAAAmf,eAAAtP,EAAAsY,IAAA5nB,OAAA,GAIA,cAFAP,MAAA6nB,QAAAhY,GAEA7P,MAGAD,EAAA2D,UAAAykB,UAAA,SAAAtY,GACA,GAAA6D,EAOA,OAHAA,GAHA1T,KAAA6nB,SAAA7nB,KAAA6nB,QAAAhY,GAEAkS,EAAA/hB,KAAA6nB,QAAAhY,KACA7P,KAAA6nB,QAAAhY,IAEA7P,KAAA6nB,QAAAhY,GAAAzE,YAIArL,EAAA2D,UAAAilB,cAAA,SAAA9Y,GACA,GAAA7P,KAAA6nB,QAAA,CACA,GAAAe,GAAA5oB,KAAA6nB,QAAAhY,EAEA,IAAAkS,EAAA6G,GACA,QACA,IAAAA,EACA,MAAAA,GAAAroB,OAEA,UAGAR,EAAA4oB,cAAA,SAAAE,EAAAhZ,GACA,MAAAgZ,GAAAF,cAAA9Y,KduqIM,SAAS5Q,EAAQD,Gen8IvBA,EAAAwE,QAAA,SAAA3D,EAAAgL,GACA,+Df28IM,SAAS5L,EAAQD,EAASH,GgB96IhC,QAAAiqB,KACA9oB,KAAAmgB,SAAA,KACAngB,KAAAogB,QAAA,KACApgB,KAAAyF,KAAA,KACAzF,KAAAqgB,KAAA,KACArgB,KAAAuE,KAAA,KACAvE,KAAAsgB,SAAA,KACAtgB,KAAA2gB,KAAA,KACA3gB,KAAAwgB,OAAA,KACAxgB,KAAA0gB,MAAA,KACA1gB,KAAAugB,SAAA,KACAvgB,KAAAygB,KAAA,KACAzgB,KAAA+oB,KAAA,KAqDA,QAAAC,GAAAloB,EAAAmoB,EAAAC,GACA,GAAApoB,GAAAojB,EAAApjB,gBAAAgoB,GAAA,MAAAhoB,EAEA,IAAAqoB,GAAA,GAAAL,EAEA,OADAK,GAAA/jB,MAAAtE,EAAAmoB,EAAAC,GACAC,EA6OA,QAAAC,GAAA1Z,GAMA,MADAuS,GAAAvS,OAAAsZ,EAAAtZ,IACAA,YAAAoZ,GACApZ,EAAAwQ,SADA4I,EAAAplB,UAAAwc,OAAA9gB,KAAAsQ,GA4DA,QAAA2Z,GAAAC,EAAAC,GACA,MAAAP,GAAAM,GAAA,MAAAE,QAAAD,GAOA,QAAAE,GAAAH,EAAAC,GACA,MAAAD,GACAN,EAAAM,GAAA,MAAAI,cAAAH,GADAA,EAyRA,QAAAtH,GAAAvT,GACA,sBAAAA,GAGA,QAAAwV,GAAAxV,GACA,sBAAAA,IAAA,OAAAA,EAGA,QAAA2U,GAAA3U,GACA,cAAAA,EAEA,QAAAqV,GAAArV,GACA,aAAAA,EA5qBA,GAAAib,GAAA9qB,EAAA,GAEAG,GAAAoG,MAAA4jB,EACAhqB,EAAAwqB,QAAAH,EACArqB,EAAA0qB,cAAAD,EACAzqB,EAAAkhB,OAAAkJ,EAEApqB,EAAA8pB,KAqBA,IAAAc,GAAA,oBACAC,EAAA,WAIAC,GAAA,oCAGAC,GAAA,IAAgB,IAAK,kBAAA5iB,OAAA2iB,GAGrBE,GAAA,KAAA7iB,OAAA4iB,GAKAE,GAAA,gBAAqC,KAAA9iB,OAAA6iB,GACrCE,GAAA,aACAC,EAAA,IACAC,EAAA,wBACAC,EAAA,8BAEAC,GACAC,YAAA,EACAC,eAAA,GAGAC,GACAF,YAAA,EACAC,eAAA,GAGAE,GACAC,MAAA,EACAC,OAAA,EACAC,KAAA,EACAC,QAAA,EACAC,MAAA,EACAC,SAAA,EACAC,UAAA,EACAC,QAAA,EACAC,WAAA,EACAC,SAAA,GAEAC,EAAAxsB,EAAA,GAUAiqB,GAAAplB,UAAA0B,MAAA,SAAAtE,EAAAmoB,EAAAC,GACA,IAAAjH,EAAAnhB,GACA,SAAAgO,WAAA,+CAAAhO,GAGA,IAAAwqB,GAAAxqB,CAIAwqB,KAAAzW,MAEA,IAAAlL,GAAAigB,EAAAtf,KAAAghB,EACA,IAAA3hB,EAAA,CACAA,IAAA,EACA,IAAA4hB,GAAA5hB,EAAAuG,aACAlQ,MAAAmgB,SAAAoL,EACAD,IAAArZ,OAAAtI,EAAApJ,QAOA,GAAA2oB,GAAAvf,GAAA2hB,EAAAzU,MAAA,yBACA,GAAAuJ,GAAA,OAAAkL,EAAArZ,OAAA,MACAmO,GAAAzW,GAAA8gB,EAAA9gB,KACA2hB,IAAArZ,OAAA,GACAjS,KAAAogB,SAAA,GAIA,IAAAqK,EAAA9gB,KACAyW,GAAAzW,IAAA+gB,EAAA/gB,IAAA,CAmBA,OADA6hB,IAAA,EACAlrB,EAAA,EAAmBA,EAAA4pB,EAAA3pB,OAA4BD,IAAA,CAC/C,GAAAmrB,GAAAH,EAAAra,QAAAiZ,EAAA5pB,GACAmrB,MAAA,IAAAD,KAAA,GAAAC,EAAAD,KACAA,EAAAC,GAKA,GAAAhmB,GAAAimB,CAGAA,GAFAF,KAAA,EAEAF,EAAApa,YAAA,KAIAoa,EAAApa,YAAA,IAAAsa,GAKAE,KAAA,IACAjmB,EAAA6lB,EAAAlgB,MAAA,EAAAsgB,GACAJ,IAAAlgB,MAAAsgB,EAAA,GACA1rB,KAAAyF,KAAAkmB,mBAAAlmB,IAIA+lB,GAAA,CACA,QAAAlrB,GAAA,EAAmBA,EAAA2pB,EAAA1pB,OAAyBD,IAAA,CAC5C,GAAAmrB,GAAAH,EAAAra,QAAAgZ,EAAA3pB,GACAmrB,MAAA,IAAAD,KAAA,GAAAC,EAAAD,KACAA,EAAAC,GAGAD,KAAA,IACAA,EAAAF,EAAA/qB,QAEAP,KAAAqgB,KAAAiL,EAAAlgB,MAAA,EAAAogB,GACAF,IAAAlgB,MAAAogB,GAGAxrB,KAAA4rB,YAIA5rB,KAAAsgB,SAAAtgB,KAAAsgB,UAAA,EAIA,IAAAuL,GAAA,MAAA7rB,KAAAsgB,SAAA,IACA,MAAAtgB,KAAAsgB,SAAAtgB,KAAAsgB,SAAA/f,OAAA,EAGA,KAAAsrB,EAEA,OADAC,GAAA9rB,KAAAsgB,SAAA5a,MAAA,MACApF,EAAA,EAAA+Z,EAAAyR,EAAAvrB,OAA2CD,EAAA+Z,EAAO/Z,IAAA,CAClD,GAAAyrB,GAAAD,EAAAxrB,EACA,IAAAyrB,IACAA,EAAAlV,MAAAuT,GAAA,CAEA,OADA4B,GAAA,GACAxrB,EAAA,EAAAyrB,EAAAF,EAAAxrB,OAA0CC,EAAAyrB,EAAOzrB,IAKjDwrB,GAJAD,EAAA9W,WAAAzU,GAAA,IAIA,IAEAurB,EAAAvrB,EAIA,KAAAwrB,EAAAnV,MAAAuT,GAAA,CACA,GAAA8B,GAAAJ,EAAA1gB,MAAA,EAAA9K,GACA6rB,EAAAL,EAAA1gB,MAAA9K,EAAA,GACA8rB,EAAAL,EAAAlV,MAAAwT,EACA+B,KACAF,EAAA/mB,KAAAinB,EAAA,IACAD,EAAAjhB,QAAAkhB,EAAA,KAEAD,EAAA5rB,SACA+qB,EAAA,IAAAa,EAAAjjB,KAAA,KAAAoiB,GAEAtrB,KAAAsgB,SAAA4L,EAAAhjB,KAAA,IACA,SAaA,GAPAlJ,KAAAsgB,SAAA/f,OAAA4pB,EACAnqB,KAAAsgB,SAAA,GAGAtgB,KAAAsgB,SAAAtgB,KAAAsgB,SAAApQ,eAGA2b,EAAA,CAOA,OAFAQ,GAAArsB,KAAAsgB,SAAA5a,MAAA,KACA4mB,KACAhsB,EAAA,EAAqBA,EAAA+rB,EAAA9rB,SAAwBD,EAAA,CAC7C,GAAAmN,GAAA4e,EAAA/rB,EACAgsB,GAAAnnB,KAAAsI,EAAAoJ,MAAA,kBACA,OAAA8S,EAAA4C,OAAA9e,MAEAzN,KAAAsgB,SAAAgM,EAAApjB,KAAA,KAGA,GAAA3J,GAAAS,KAAAuE,KAAA,IAAAvE,KAAAuE,KAAA,GACAioB,EAAAxsB,KAAAsgB,UAAA,EACAtgB,MAAAqgB,KAAAmM,EAAAjtB,EACAS,KAAA+oB,MAAA/oB,KAAAqgB,KAIAwL,IACA7rB,KAAAsgB,SAAAtgB,KAAAsgB,SAAArO,OAAA,EAAAjS,KAAAsgB,SAAA/f,OAAA,GACA,MAAA+qB,EAAA,KACAA,EAAA,IAAAA,IAOA,IAAAhB,EAAAiB,GAKA,OAAAjrB,GAAA,EAAA+Z,EAAA2P,EAAAzpB,OAA0CD,EAAA+Z,EAAO/Z,IAAA,CACjD,GAAAmsB,GAAAzC,EAAA1pB,GACAosB,EAAAC,mBAAAF,EACAC,KAAAD,IACAC,EAAAE,OAAAH,IAEAnB,IAAA5lB,MAAA+mB,GAAAvjB,KAAAwjB,GAMA,GAAA/L,GAAA2K,EAAAra,QAAA,IACA0P,MAAA,IAEA3gB,KAAA2gB,KAAA2K,EAAArZ,OAAA0O,GACA2K,IAAAlgB,MAAA,EAAAuV,GAEA,IAAAkM,GAAAvB,EAAAra,QAAA,IAoBA,IAnBA4b,KAAA,GACA7sB,KAAAwgB,OAAA8K,EAAArZ,OAAA4a,GACA7sB,KAAA0gB,MAAA4K,EAAArZ,OAAA4a,EAAA,GACA5D,IACAjpB,KAAA0gB,MAAA2K,EAAAjmB,MAAApF,KAAA0gB,QAEA4K,IAAAlgB,MAAA,EAAAyhB,IACG5D,IAEHjpB,KAAAwgB,OAAA,GACAxgB,KAAA0gB,UAEA4K,IAAAtrB,KAAAugB,SAAA+K,GACAZ,EAAAa,IACAvrB,KAAAsgB,WAAAtgB,KAAAugB,WACAvgB,KAAAugB,SAAA,KAIAvgB,KAAAugB,UAAAvgB,KAAAwgB,OAAA,CACA,GAAAjhB,GAAAS,KAAAugB,UAAA,GACA9S,EAAAzN,KAAAwgB,QAAA,EACAxgB,MAAAygB,KAAAlhB,EAAAkO,EAKA,MADAzN,MAAA+oB,KAAA/oB,KAAAkgB,SACAlgB,MAcA8oB,EAAAplB,UAAAwc,OAAA,WACA,GAAAza,GAAAzF,KAAAyF,MAAA,EACAA,KACAA,EAAAknB,mBAAAlnB,GACAA,IAAAkP,QAAA,YACAlP,GAAA,IAGA,IAAA0a,GAAAngB,KAAAmgB,UAAA,GACAI,EAAAvgB,KAAAugB,UAAA,GACAI,EAAA3gB,KAAA2gB,MAAA,GACAN,GAAA,EACAK,EAAA,EAEA1gB,MAAAqgB,KACAA,EAAA5a,EAAAzF,KAAAqgB,KACGrgB,KAAAsgB,WACHD,EAAA5a,GAAAzF,KAAAsgB,SAAArP,QAAA,UACAjR,KAAAsgB,SACA,IAAAtgB,KAAAsgB,SAAA,KACAtgB,KAAAuE,OACA8b,GAAA,IAAArgB,KAAAuE,OAIAvE,KAAA0gB,OACAwD,EAAAlkB,KAAA0gB,QACA/S,OAAAC,KAAA5N,KAAA0gB,OAAAngB,SACAmgB,EAAA2K,EAAAzjB,UAAA5H,KAAA0gB,OAGA,IAAAF,GAAAxgB,KAAAwgB,QAAAE,GAAA,IAAAA,GAAA,EAsBA,OApBAP,IAAA,MAAAA,EAAAlO,QAAA,KAAAkO,GAAA,KAIAngB,KAAAogB,WACAD,GAAAuK,EAAAvK,KAAAE,KAAA,GACAA,EAAA,MAAAA,GAAA,IACAE,GAAA,MAAAA,EAAAuM,OAAA,KAAAvM,EAAA,IAAAA,IACGF,IACHA,EAAA,IAGAM,GAAA,MAAAA,EAAAmM,OAAA,KAAAnM,EAAA,IAAAA,GACAH,GAAA,MAAAA,EAAAsM,OAAA,KAAAtM,EAAA,IAAAA,GAEAD,IAAA5L,QAAA,iBAAAkC,GACA,MAAA8V,oBAAA9V,KAEA2J,IAAA7L,QAAA,WAEAwL,EAAAE,EAAAE,EAAAC,EAAAG,GAOAmI,EAAAplB,UAAA8lB,QAAA,SAAAD,GACA,MAAAvpB,MAAA0pB,cAAAV,EAAAO,GAAA,OAAArJ,UAQA4I,EAAAplB,UAAAgmB,cAAA,SAAAH,GACA,GAAAtH,EAAAsH,GAAA,CACA,GAAAwD,GAAA,GAAAjE,EACAiE,GAAA3nB,MAAAmkB,GAAA,MACAA,EAAAwD,EAGA,GAAA9jB,GAAA,GAAA6f,EAUA,IATAnb,OAAAC,KAAA5N,MAAAiF,QAAA,SAAAgnB,GACAhjB,EAAAgjB,GAAAjsB,KAAAisB,IACGjsB,MAIHiJ,EAAA0X,KAAA4I,EAAA5I,KAGA,KAAA4I,EAAAR,KAEA,MADA9f,GAAA8f,KAAA9f,EAAAiX,SACAjX,CAIA,IAAAsgB,EAAAnJ,UAAAmJ,EAAApJ,SAcA,MAZAxS,QAAAC,KAAA2b,GAAAtkB,QAAA,SAAAgnB,GACA,aAAAA,IACAhjB,EAAAgjB,GAAA1C,EAAA0C,MAIAvB,EAAAzhB,EAAAkX,WACAlX,EAAAqX,WAAArX,EAAAsX,WACAtX,EAAAwX,KAAAxX,EAAAsX,SAAA,KAGAtX,EAAA8f,KAAA9f,EAAAiX,SACAjX,CAGA,IAAAsgB,EAAApJ,UAAAoJ,EAAApJ,WAAAlX,EAAAkX,SAAA,CASA,IAAAuK,EAAAnB,EAAApJ,UAKA,MAJAxS,QAAAC,KAAA2b,GAAAtkB,QAAA,SAAAgnB,GACAhjB,EAAAgjB,GAAA1C,EAAA0C,KAEAhjB,EAAA8f,KAAA9f,EAAAiX,SACAjX,CAIA,IADAA,EAAAkX,SAAAoJ,EAAApJ,SACAoJ,EAAAlJ,MAAAoK,EAAAlB,EAAApJ,UASAlX,EAAAsX,SAAAgJ,EAAAhJ,aATA,CAEA,IADA,GAAAyM,IAAAzD,EAAAhJ,UAAA,IAAA7a,MAAA,KACAsnB,EAAAzsB,UAAAgpB,EAAAlJ,KAAA2M,EAAAznB,WACAgkB,EAAAlJ,OAAAkJ,EAAAlJ,KAAA,IACAkJ,EAAAjJ,WAAAiJ,EAAAjJ,SAAA,IACA,KAAA0M,EAAA,IAAAA,EAAA9hB,QAAA,IACA8hB,EAAAzsB,OAAA,GAAAysB,EAAA9hB,QAAA,IACAjC,EAAAsX,SAAAyM,EAAA9jB,KAAA,KAWA,GAPAD,EAAAuX,OAAA+I,EAAA/I,OACAvX,EAAAyX,MAAA6I,EAAA7I,MACAzX,EAAAoX,KAAAkJ,EAAAlJ,MAAA,GACApX,EAAAxD,KAAA8jB,EAAA9jB,KACAwD,EAAAqX,SAAAiJ,EAAAjJ,UAAAiJ,EAAAlJ,KACApX,EAAA1E,KAAAglB,EAAAhlB,KAEA0E,EAAAsX,UAAAtX,EAAAuX,OAAA,CACA,GAAAjhB,GAAA0J,EAAAsX,UAAA,GACA9S,EAAAxE,EAAAuX,QAAA,EACAvX,GAAAwX,KAAAlhB,EAAAkO,EAIA,MAFAxE,GAAAmX,QAAAnX,EAAAmX,SAAAmJ,EAAAnJ,QACAnX,EAAA8f,KAAA9f,EAAAiX,SACAjX,EAGA,GAAAgkB,GAAAhkB,EAAAsX,UAAA,MAAAtX,EAAAsX,SAAAuM,OAAA,GACAI,EACA3D,EAAAlJ,MACAkJ,EAAAhJ,UAAA,MAAAgJ,EAAAhJ,SAAAuM,OAAA,GAEAK,EAAAD,GAAAD,GACAhkB,EAAAoX,MAAAkJ,EAAAhJ,SACA6M,EAAAD,EACAE,EAAApkB,EAAAsX,UAAAtX,EAAAsX,SAAA7a,MAAA,SACAsnB,EAAAzD,EAAAhJ,UAAAgJ,EAAAhJ,SAAA7a,MAAA,SACA4nB,EAAArkB,EAAAkX,WAAAuK,EAAAzhB,EAAAkX,SA2BA,IApBAmN,IACArkB,EAAAqX,SAAA,GACArX,EAAA1E,KAAA,KACA0E,EAAAoX,OACA,KAAAgN,EAAA,GAAAA,EAAA,GAAApkB,EAAAoX,KACAgN,EAAAniB,QAAAjC,EAAAoX,OAEApX,EAAAoX,KAAA,GACAkJ,EAAApJ,WACAoJ,EAAAjJ,SAAA,KACAiJ,EAAAhlB,KAAA,KACAglB,EAAAlJ,OACA,KAAA2M,EAAA,GAAAA,EAAA,GAAAzD,EAAAlJ,KACA2M,EAAA9hB,QAAAqe,EAAAlJ,OAEAkJ,EAAAlJ,KAAA,MAEA8M,MAAA,KAAAH,EAAA,SAAAK,EAAA,KAGAH,EAEAjkB,EAAAoX,KAAAkJ,EAAAlJ,MAAA,KAAAkJ,EAAAlJ,KACAkJ,EAAAlJ,KAAApX,EAAAoX,KACApX,EAAAqX,SAAAiJ,EAAAjJ,UAAA,KAAAiJ,EAAAjJ,SACAiJ,EAAAjJ,SAAArX,EAAAqX,SACArX,EAAAuX,OAAA+I,EAAA/I,OACAvX,EAAAyX,MAAA6I,EAAA7I,MACA2M,EAAAL,MAEG,IAAAA,EAAAzsB,OAGH8sB,UACAA,EAAApK,MACAoK,IAAAlmB,OAAA6lB,GACA/jB,EAAAuX,OAAA+I,EAAA/I,OACAvX,EAAAyX,MAAA6I,EAAA7I,UACG,KAAAqD,EAAAwF,EAAA/I,QAAA,CAIH,GAAA8M,EAAA,CACArkB,EAAAqX,SAAArX,EAAAoX,KAAAgN,EAAA9nB,OAIA,IAAAgoB,MAAAtkB,EAAAoX,MAAApX,EAAAoX,KAAApP,QAAA,SACAhI,EAAAoX,KAAA3a,MAAA,IACA6nB,KACAtkB,EAAAxD,KAAA8nB,EAAAhoB,QACA0D,EAAAoX,KAAApX,EAAAqX,SAAAiN,EAAAhoB,SAWA,MARA0D,GAAAuX,OAAA+I,EAAA/I,OACAvX,EAAAyX,MAAA6I,EAAA7I,MAEA2C,EAAApa,EAAAsX,WAAA8C,EAAApa,EAAAuX,UACAvX,EAAAwX,MAAAxX,EAAAsX,SAAAtX,EAAAsX,SAAA,KACAtX,EAAAuX,OAAAvX,EAAAuX,OAAA,KAEAvX,EAAA8f,KAAA9f,EAAAiX,SACAjX,EAGA,IAAAokB,EAAA9sB,OAWA,MARA0I,GAAAsX,SAAA,KAEAtX,EAAAuX,OACAvX,EAAAwX,KAAA,IAAAxX,EAAAuX,OAEAvX,EAAAwX,KAAA,KAEAxX,EAAA8f,KAAA9f,EAAAiX,SACAjX,CAcA,QARAukB,GAAAH,EAAAjiB,OAAA,MACAqiB,GACAxkB,EAAAoX,MAAAkJ,EAAAlJ,QAAA,MAAAmN,GAAA,OAAAA,IACA,KAAAA,EAIAE,EAAA,EACAptB,EAAA+sB,EAAA9sB,OAA8BD,GAAA,EAAQA,IACtCktB,EAAAH,EAAA/sB,GACA,KAAAktB,EACAH,EAAArmB,OAAA1G,EAAA,GACK,OAAAktB,GACLH,EAAArmB,OAAA1G,EAAA,GACAotB,KACKA,IACLL,EAAArmB,OAAA1G,EAAA,GACAotB,IAKA,KAAAP,IAAAC,EACA,KAAUM,IAAMA,EAChBL,EAAAniB,QAAA,OAIAiiB,GAAA,KAAAE,EAAA,IACAA,EAAA,UAAAA,EAAA,GAAAP,OAAA,IACAO,EAAAniB,QAAA,IAGAuiB,GAAA,MAAAJ,EAAAnkB,KAAA,KAAA+I,QAAA,IACAob,EAAAloB,KAAA,GAGA,IAAAwoB,GAAA,KAAAN,EAAA,IACAA,EAAA,UAAAA,EAAA,GAAAP,OAAA,EAGA,IAAAQ,EAAA,CACArkB,EAAAqX,SAAArX,EAAAoX,KAAAsN,EAAA,GACAN,EAAA9sB,OAAA8sB,EAAA9nB,QAAA,EAIA,IAAAgoB,MAAAtkB,EAAAoX,MAAApX,EAAAoX,KAAApP,QAAA,SACAhI,EAAAoX,KAAA3a,MAAA,IACA6nB,KACAtkB,EAAAxD,KAAA8nB,EAAAhoB,QACA0D,EAAAoX,KAAApX,EAAAqX,SAAAiN,EAAAhoB,SAyBA,MArBA4nB,MAAAlkB,EAAAoX,MAAAgN,EAAA9sB,OAEA4sB,IAAAQ,GACAN,EAAAniB,QAAA,IAGAmiB,EAAA9sB,OAIA0I,EAAAsX,SAAA8M,EAAAnkB,KAAA,MAHAD,EAAAsX,SAAA,KACAtX,EAAAwX,KAAA,MAMA4C,EAAApa,EAAAsX,WAAA8C,EAAApa,EAAAuX,UACAvX,EAAAwX,MAAAxX,EAAAsX,SAAAtX,EAAAsX,SAAA,KACAtX,EAAAuX,OAAAvX,EAAAuX,OAAA,KAEAvX,EAAAxD,KAAA8jB,EAAA9jB,MAAAwD,EAAAxD,KACAwD,EAAAmX,QAAAnX,EAAAmX,SAAAmJ,EAAAnJ,QACAnX,EAAA8f,KAAA9f,EAAAiX,SACAjX,GAGA6f,EAAAplB,UAAAkoB,UAAA,WACA,GAAAvL,GAAArgB,KAAAqgB,KACA9b,EAAAslB,EAAAvf,KAAA+V,EACA9b,KACAA,IAAA,GACA,MAAAA,IACAvE,KAAAuE,OAAA0N,OAAA,IAEAoO,IAAApO,OAAA,EAAAoO,EAAA9f,OAAAgE,EAAAhE,SAEA8f,IAAArgB,KAAAsgB,SAAAD,KhBm+IM,SAASphB,EAAQD,EAASH,GAE/B,GAAI+uB,IiBvpKL,SAAA3uB,EAAA6O,IACC,SAAA+f,GAgED,QAAApI,GAAA5V,GACA,KAAApB,YAAAqf,EAAAje,IAWA,QAAAkT,GAAA1iB,EAAAmd,GAGA,IAFA,GAAAjd,GAAAF,EAAAE,OACA0I,KACA1I,KACA0I,EAAA1I,GAAAid,EAAAnd,EAAAE,GAEA,OAAA0I,GAaA,QAAA8kB,GAAAze,EAAAkO,GACA,GAAAtC,GAAA5L,EAAA5J,MAAA,KACAuD,EAAA,EACAiS,GAAA3a,OAAA,IAGA0I,EAAAiS,EAAA,OACA5L,EAAA4L,EAAA,IAGA5L,IAAAqF,QAAAqZ,EAAA,IACA,IAAAC,GAAA3e,EAAA5J,MAAA,KACAwoB,EAAAnL,EAAAkL,EAAAzQ,GAAAtU,KAAA,IACA,OAAAD,GAAAilB,EAgBA,QAAAC,GAAA7e,GAMA,IALA,GAGAT,GACAuf,EAJApT,KACAqT,EAAA,EACA9tB,EAAA+O,EAAA/O,OAGA8tB,EAAA9tB,GACAsO,EAAAS,EAAA2F,WAAAoZ,KACAxf,GAAA,OAAAA,GAAA,OAAAwf,EAAA9tB,GAEA6tB,EAAA9e,EAAA2F,WAAAoZ,KACA,cAAAD,GACApT,EAAA7V,OAAA,KAAA0J,IAAA,UAAAuf,GAAA,QAIApT,EAAA7V,KAAA0J,GACAwf,MAGArT,EAAA7V,KAAA0J,EAGA,OAAAmM,GAWA,QAAAsT,GAAAjuB,GACA,MAAA0iB,GAAA1iB,EAAA,SAAAwO,GACA,GAAAmM,GAAA,EAOA,OANAnM,GAAA,QACAA,GAAA,MACAmM,GAAAuT,EAAA1f,IAAA,eACAA,EAAA,WAAAA,GAEAmM,GAAAuT,EAAA1f,KAEG3F,KAAA,IAYH,QAAAslB,GAAAzb,GACA,MAAAA,GAAA,MACAA,EAAA,GAEAA,EAAA,MACAA,EAAA,GAEAA,EAAA,MACAA,EAAA,GAEA4P,EAcA,QAAA8L,GAAAC,EAAAC,GAGA,MAAAD,GAAA,OAAAA,EAAA,SAAAC,IAAA,GAQA,QAAAC,GAAAC,EAAAC,EAAAC,GACA,GAAA9C,GAAA,CAGA,KAFA4C,EAAAE,EAAAruB,EAAAmuB,EAAAG,GAAAH,GAAA,EACAA,GAAAnuB,EAAAmuB,EAAAC,GAC+BD,EAAAI,EAAAC,GAAA,EAAmCjD,GAAAtJ,EAClEkM,EAAAnuB,EAAAmuB,EAAAI,EAEA,OAAAvuB,GAAAurB,GAAAgD,EAAA,GAAAJ,KAAAM,IAUA,QAAAC,GAAAC,GAEA,GAEA1b,GAIA2b,EACA9uB,EACA+uB,EACAC,EACAC,EACAxD,EACAyC,EACAgB,EAEAC,EAfA3U,KACA4U,EAAAP,EAAA9uB,OAEAD,EAAA,EACAqQ,EAAAkf,EACAC,EAAAC,CAqBA,KALAT,EAAAD,EAAAne,YAAA8e,GACAV,EAAA,IACAA,EAAA,GAGA9uB,EAAA,EAAaA,EAAA8uB,IAAW9uB,EAExB6uB,EAAApa,WAAAzU,IAAA,KACAilB,EAAA,aAEAzK,EAAA7V,KAAAkqB,EAAApa,WAAAzU,GAMA,KAAA+uB,EAAAD,EAAA,EAAAA,EAAA,IAAyCC,EAAAK,GAAqB,CAO9D,IAAAJ,EAAAlvB,EAAAmvB,EAAA,EAAAxD,EAAAtJ,EAEA4M,GAAAK,GACAnK,EAAA,iBAGAiJ,EAAAF,EAAAa,EAAApa,WAAAsa,OAEAb,GAAA/L,GAAA+L,EAAAhuB,GAAAuvB,EAAA3vB,GAAAmvB,KACAhK,EAAA,YAGAnlB,GAAAouB,EAAAe,EACAC,EAAAzD,GAAA6D,EAAAI,EAAAjE,GAAA6D,EAAAZ,IAAAjD,EAAA6D,IAEApB,EAAAgB,GAfsDzD,GAAAtJ,EAmBtDgN,EAAAhN,EAAA+M,EACAD,EAAA/uB,EAAAuvB,EAAAN,IACAlK,EAAA,YAGAgK,GAAAE,CAIAhc,GAAAqH,EAAAza,OAAA,EACAuvB,EAAAlB,EAAAtuB,EAAAkvB,EAAA7b,EAAA,GAAA6b,GAIA9uB,EAAAJ,EAAAqT,GAAAsc,EAAAtf,GACA8U,EAAA,YAGA9U,GAAAjQ,EAAAJ,EAAAqT,GACArT,GAAAqT,EAGAqH,EAAAhU,OAAA1G,IAAA,EAAAqQ,GAIA,MAAA2d,GAAAtT,GAUA,QAAAuR,GAAA8C,GACA,GAAA1e,GACAke,EACAsB,EACAC,EACAN,EACAtvB,EACAnB,EACAgxB,EACApE,EACAyD,EACAY,EAGAV,EAEAW,EACAZ,EACAa,EANAxV,IAoBA,KAXAqU,EAAAlB,EAAAkB,GAGAO,EAAAP,EAAA9uB,OAGAoQ,EAAAkf,EACAhB,EAAA,EACAiB,EAAAC,EAGAvvB,EAAA,EAAaA,EAAAovB,IAAiBpvB,EAC9B8vB,EAAAjB,EAAA7uB,GACA8vB,EAAA,KACAtV,EAAA7V,KAAAopB,EAAA+B,GAeA,KAXAH,EAAAC,EAAApV,EAAAza,OAMA6vB,GACApV,EAAA7V,KAAA6qB,GAIAG,EAAAP,GAAA,CAIA,IAAAvwB,EAAA4wB,EAAAzvB,EAAA,EAA0BA,EAAAovB,IAAiBpvB,EAC3C8vB,EAAAjB,EAAA7uB,GACA8vB,GAAA3f,GAAA2f,EAAAjxB,IACAA,EAAAixB,EAcA,KARAC,EAAAJ,EAAA,EACA9wB,EAAAsR,EAAAjQ,GAAAuvB,EAAApB,GAAA0B,IACA9K,EAAA,YAGAoJ,IAAAxvB,EAAAsR,GAAA4f,EACA5f,EAAAtR,EAEAmB,EAAA,EAAcA,EAAAovB,IAAiBpvB,EAO/B,GANA8vB,EAAAjB,EAAA7uB,GAEA8vB,EAAA3f,KAAAke,EAAAoB,GACAxK,EAAA,YAGA6K,GAAA3f,EAAA,CAEA,IAAA0f,EAAAxB,EAAA5C,EAAAtJ,EACA+M,EAAAzD,GAAA6D,EAAAI,EAAAjE,GAAA6D,EAAAZ,IAAAjD,EAAA6D,IACAO,EAAAX,GAFkDzD,GAAAtJ,EAKlD6N,EAAAH,EAAAX,EACAC,EAAAhN,EAAA+M,EACA1U,EAAA7V,KACAopB,EAAAE,EAAAiB,EAAAc,EAAAb,EAAA,KAEAU,EAAA3vB,EAAA8vB,EAAAb,EAGA3U,GAAA7V,KAAAopB,EAAAE,EAAA4B,EAAA,KACAP,EAAAlB,EAAAC,EAAA0B,EAAAJ,GAAAC,GACAvB,EAAA,IACAsB,IAIAtB,IACAle,EAGA,MAAAqK,GAAA9R,KAAA,IAcA,QAAAunB,GAAApB,GACA,MAAAtB,GAAAsB,EAAA,SAAA/f,GACA,MAAAohB,GAAAtnB,KAAAkG,GACA8f,EAAA9f,EAAAlE,MAAA,GAAA8E,eACAZ,IAeA,QAAAqhB,GAAAtB,GACA,MAAAtB,GAAAsB,EAAA,SAAA/f,GACA,MAAAshB,GAAAxnB,KAAAkG,GACA,OAAAid,EAAAjd,GACAA,IAvdA,GAIAuhB,IAJA,gBAAA7xB,QACAA,EAAA8xB,UAAA9xB,EACA,gBAAAC,QACAA,EAAA6xB,UAAA7xB,EACA,gBAAA6O,MAEA+iB,GAAA/iB,SAAA+iB,GACAA,EAAArxB,SAAAqxB,GACAA,EAAAvnB,OAAAunB,IAEAhD,EAAAgD,EAQA,IAAAlH,GAGAsG,EAAA,WAGAtN,EAAA,GACAuN,EAAA,EACAhB,EAAA,GACAC,EAAA,GACAH,EAAA,IACAe,EAAA,GACAF,EAAA,IACAG,EAAA,IAGAU,EAAA,QACAE,EAAA,eACA5C,EAAA,4BAGAF,GACAiD,SAAA,kDACAC,YAAA,iDACAC,gBAAA,iBAIAhC,EAAAtM,EAAAuN,EACAxvB,EAAAD,KAAAC,MACA6tB,EAAA/c,OAAAgC,YA8aAmW,IAMAtmB,QAAA,QAQA6tB,MACA9B,OAAAjB,EACA5B,OAAA+B,GAEAc,SACA7C,SACAoE,UACAF,aAWA7C,EAAA,WACA,MAAAjE,IACGvqB,KAAAJ,EAAAH,EAAAG,EAAAC,KAAA6E,SAAA8pB,IAAA3uB,EAAAD,QAAA4uB,KAaF5tB,QjBupK6BZ,KAAKJ,EAASH,EAAoB,IAAII,GAAU,WAAa,MAAOe,WAI5F,SAASf,EAAQD,GkB5qLvBC,EAAAD,QAAA,SAAAC,GAQA,MAPAA,GAAAkyB,kBACAlyB,EAAAkmB,UAAA,aACAlmB,EAAAmyB,SAEAnyB,EAAAoyB,YACApyB,EAAAkyB,gBAAA,GAEAlyB,IlBorLM,SAASA,EAAQD,EAASH,GmB5rLhC,YAEAG,GAAAowB,OAAApwB,EAAAoG,MAAAvG,EAAA,IACAG,EAAAutB,OAAAvtB,EAAA4I,UAAA/I,EAAA,KnBmsLM,SAASI,EAAQD,GoBjrLvB,YAKA,SAAA0K,GAAAgG,EAAA9L,GACA,MAAA+J,QAAAjK,UAAAgG,eAAAtK,KAAAsQ,EAAA9L,GAGA3E,EAAAD,QAAA,SAAAsyB,EAAAC,EAAAC,EAAAztB,GACAwtB,KAAA,IACAC,KAAA,GACA,IAAA9hB,KAEA,oBAAA4hB,IAAA,IAAAA,EAAA/wB,OACA,MAAAmP,EAGA,IAAAyX,GAAA,KACAmK,KAAA5rB,MAAA6rB,EAEA,IAAAE,GAAA,GACA1tB,IAAA,gBAAAA,GAAA0tB,UACAA,EAAA1tB,EAAA0tB,QAGA,IAAA3kB,GAAAwkB,EAAA/wB,MAEAkxB,GAAA,GAAA3kB,EAAA2kB,IACA3kB,EAAA2kB,EAGA,QAAAnxB,GAAA,EAAiBA,EAAAwM,IAASxM,EAAA,CAC1B,GAEAoxB,GAAAC,EAAA1F,EAAA2F,EAFAzb,EAAAmb,EAAAhxB,GAAAqU,QAAAwS,EAAA,OACAtF,EAAA1L,EAAAlF,QAAAugB,EAGA3P,IAAA,GACA6P,EAAAvb,EAAAlE,OAAA,EAAA4P,GACA8P,EAAAxb,EAAAlE,OAAA4P,EAAA,KAEA6P,EAAAvb,EACAwb,EAAA,IAGA1F,EAAAN,mBAAA+F,GACAE,EAAAjG,mBAAAgG,GAEAjoB,EAAAgG,EAAAuc,GAEKlnB,MAAAC,QAAA0K,EAAAuc,IACLvc,EAAAuc,GAAA9mB,KAAAysB,GAEAliB,EAAAuc,IAAAvc,EAAAuc,GAAA2F,GAJAliB,EAAAuc,GAAA2F,EAQA,MAAAliB,KpB8sLM,SAASzQ,EAAQD,GqBvwLvB,YAEA,IAAA6yB,GAAA,SAAAD,GACA,aAAAA,IACA,aACA,MAAAA,EAEA,eACA,MAAAA,GAAA,cAEA,cACA,MAAAxa,UAAAwa,KAAA,EAEA,SACA,UAIA3yB,GAAAD,QAAA,SAAA0Q,EAAA6hB,EAAAC,EAAA/pB,GAOA,MANA8pB,MAAA,IACAC,KAAA,IACA,OAAA9hB,IACAA,EAAA5L,QAGA,gBAAA4L,GACA/B,OAAAC,KAAA8B,GAAAqT,IAAA,SAAAkJ,GACA,GAAA6F,GAAAnF,mBAAAkF,EAAA5F,IAAAuF,CACA,OAAAzsB,OAAAC,QAAA0K,EAAAuc,IACAvc,EAAAuc,GAAAlJ,IAAA,SAAA6O,GACA,MAAAE,GAAAnF,mBAAAkF,EAAAD,MACS1oB,KAAAqoB,GAETO,EAAAnF,mBAAAkF,EAAAniB,EAAAuc,OAEK/iB,KAAAqoB,GAIL9pB,EACAklB,mBAAAkF,EAAApqB,IAAA+pB,EACA7E,mBAAAkF,EAAAniB,IAFA,KrBsyLM,SAASzQ,EAAQD,EAASH,IsBl2LhC,SAAAa;;;;;AAOA,YA6BA,SAAAqyB,KACA/xB,KAAAoK,IAAA,GAAA1K,GAAAsyB,GACAhyB,KAAAiyB,OAzBA,GAAAC,GAAArzB,EAAA,IAKAwC,EAAA,QACA8wB,EAAA,uCACAxP,EAAA,GACAyP,EAAA,GACAC,EAAA,GACAC,EAAA,gBACAC,EAAA,GACAC,EAAA,IACAR,EAAAI,EAAAC,CAEArzB,GAAAqE,QAAAhC,EAoBA0wB,EAAAruB,UAAAuuB,KAAA,WACAjyB,KAAAyyB,SACAzyB,KAAA0yB,gBACA1yB,KAAA2yB,WASAZ,EAAAruB,UAAAgvB,cAAA,WACA1yB,KAAA4yB,IAAAnyB,KAAAC,MAAAD,KAAAE,SAAA2xB,GACAtyB,KAAA6yB,IAAApyB,KAAAC,MAAAD,KAAAE,UAAA6xB,EAAAD,OASAR,EAAAruB,UAAA+uB,OAAA,WAEA,OADAK,GAAAZ,EAAAa,YAAAX,GACA9xB,EAAA,EAAiBA,EAAA8xB,EAAY9xB,IAAA,CAC7B,GAAA0yB,GAAAF,EAAAxyB,GAAAqiB,CACA3iB,MAAAoK,IAAA9J,GAAA6xB,EAAAld,WAAA+d,KAUAjB,EAAAruB,UAAAivB,QAAA,WAEA,OADAhiB,GAAA3Q,KAAA4yB,IACAtyB,EAAA0xB,EAAA,EAA0B1xB,GAAA8xB,EAAa9xB,IACvCN,KAAAoK,IAAA9J,GAAA6xB,EAAAld,WAAAtE,EAAAgS,GACAhS,EAAAlQ,KAAAC,MAAAiQ,EAAAgS,IAUAoP,EAAAruB,UAAAH,KAAA,WAOA,MANAvD,MAAA4yB,KAAA5yB,KAAA6yB,IACA7yB,KAAA4yB,IAAAN,GACAtyB,KAAAyyB,SAEAzyB,KAAA0yB,gBACA1yB,KAAA2yB,UACA3yB,KAAAoK,IAAAC,SAAA,SAIA,IAAAme,GAAA,GAAAuJ,EASA/yB,GAAAi0B,MAAA,WACAzK,EAAAyJ,QASAjzB,EAAAuE,KAAA,WACA,MAAAilB,GAAAjlB,QAOAvE,EAAAk0B,QAAA1K,ItBw2L8BppB,KAAKJ,EAASH,EAAoB,GAAGa,SAI7D,SAAST,EAAQD,GuBr/LvB,YAEA,IAAAkzB,GAAA1yB,OAAA0yB,QAAA1yB,OAAA2zB,QAEAn0B,GAAA+zB,YAAA,SAAApoB,EAAAE,GACA,GAAAT,GAAA,GAAA6D,YAAAtD,EAIA,OAHAA,GAAA,GACAunB,EAAAkB,gBAAAhpB,GAEAA","file":"bundle.js","sourcesContent":["/******/ (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/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\twindow.NATS = __webpack_require__(1);\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer, setImmediate) {/*!\n\t * Nats\n\t * Copyright(c) 2012-2016 Apcera Inc. All rights reserved.\n\t * Copyright(c) 2011-2014 Derek Collison (derek.collison@gmail.com)\n\t * MIT Licensed\n\t */\n\t\n\t/* jslint node: true */\n\t'use strict';\n\t\n\t/**\n\t * Module Dependencies\n\t */\n\t\n\tvar net = __webpack_require__(8),\n\t tls = __webpack_require__(13),\n\t url = __webpack_require__(14),\n\t util = __webpack_require__(9),\n\t events = __webpack_require__(12),\n\t nuid = __webpack_require__(20);\n\t\n\t/**\n\t * Constants\n\t */\n\t\n\tvar VERSION = '0.6.8',\n\t\n\t DEFAULT_PORT = 4222,\n\t DEFAULT_PRE = 'nats://localhost:',\n\t DEFAULT_URI = DEFAULT_PRE + DEFAULT_PORT,\n\t\n\t MAX_CONTROL_LINE_SIZE = 512,\n\t\n\t // Parser state\n\t AWAITING_CONTROL = 0,\n\t AWAITING_MSG_PAYLOAD = 1,\n\t\n\t // Reconnect Parameters, 2 sec wait, 10 tries\n\t DEFAULT_RECONNECT_TIME_WAIT = 2*1000,\n\t DEFAULT_MAX_RECONNECT_ATTEMPTS = 10,\n\t\n\t // Protocol\n\t //CONTROL_LINE = /^(.*)\\r\\n/, // TODO: remove / never used\n\t\n\t MSG = /^MSG\\s+([^\\s\\r\\n]+)\\s+([^\\s\\r\\n]+)\\s+(([^\\s\\r\\n]+)[^\\S\\r\\n]+)?(\\d+)\\r\\n/i,\n\t OK = /^\\+OK\\s*\\r\\n/i,\n\t ERR = /^-ERR\\s+('.+')?\\r\\n/i,\n\t PING = /^PING\\r\\n/i,\n\t PONG = /^PONG\\r\\n/i,\n\t INFO = /^INFO\\s+([^\\r\\n]+)\\r\\n/i,\n\t SUBRE = /^SUB\\s+([^\\r\\n]+)\\r\\n/i,\n\t\n\t CR_LF = '\\r\\n',\n\t CR_LF_LEN = CR_LF.length,\n\t CR_LF_BUF = new Buffer(CR_LF),\n\t EMPTY = '',\n\t SPC = ' ',\n\t\n\t // Protocol\n\t //PUB = 'PUB', // TODO: remove / never used\n\t SUB = 'SUB',\n\t UNSUB = 'UNSUB',\n\t CONNECT = 'CONNECT',\n\t\n\t // Responses\n\t PING_REQUEST = 'PING' + CR_LF,\n\t PONG_RESPONSE = 'PONG' + CR_LF,\n\t\n\t // Errors\n\t BAD_SUBJECT = 'Subject must be supplied',\n\t BAD_MSG = 'Message can\\'t be a function',\n\t BAD_REPLY = 'Reply can\\'t be a function',\n\t CONN_CLOSED = 'Connection closed',\n\t BAD_JSON_MSG = 'Message should be a JSON object',\n\t BAD_AUTHENTICATION = 'User and Token can not both be provided',\n\t\n\t // Pedantic Mode support\n\t //Q_SUB = /^([^\\.\\*>\\s]+|>$|\\*)(\\.([^\\.\\*>\\s]+|>$|\\*))*$/, // TODO: remove / never used\n\t //Q_SUB_NO_WC = /^([^\\.\\*>\\s]+)(\\.([^\\.\\*>\\s]+))*$/, // TODO: remove / never used\n\t\n\t FLUSH_THRESHOLD = 65536;\n\t\n\t/**\n\t * Library Version\n\t */\n\t\n\texports.version = VERSION;\n\t\n\t/**\n\t * Create a properly formatted inbox subject.\n\t *\n\t * @api public\n\t*/\n\t\n\tvar createInbox = exports.createInbox = function() {\n\t return (\"_INBOX.\" + nuid.next());\n\t};\n\t\n\t/**\n\t * Initialize a client with the appropriate options.\n\t *\n\t * @param {Mixed} opts\n\t * @api public\n\t */\n\t\n\tfunction Client(opts) {\n\t events.EventEmitter.call(this);\n\t this.parseOptions(opts);\n\t this.initState();\n\t this.createConnection();\n\t}\n\t\n\t/**\n\t * Connect to a nats-server and return the client.\n\t * Argument can be a url, or an object with a 'url'\n\t * property and additional options.\n\t *\n\t * @params {Mixed} opts\n\t *\n\t * @api public\n\t */\n\t\n\texports.connect = function(opts) {\n\t return new Client(opts);\n\t};\n\t\n\t/**\n\t * Connected clients are event emitters.\n\t */\n\t\n\tutil.inherits(Client, events.EventEmitter);\n\t\n\t/**\n\t * Allow createInbox to be called on a client.\n\t *\n\t * @api public\n\t */\n\t\n\tClient.prototype.createInbox = createInbox;\n\t\n\tClient.prototype.assignOption = function(opts, prop, assign) {\n\t if (assign === undefined) {\n\t assign = prop;\n\t }\n\t if (opts[prop] !== undefined) {\n\t this.options[assign] = opts[prop];\n\t }\n\t};\n\t\n\tfunction shuffle(array) {\n\t for (var i = array.length - 1; i > 0; i--) {\n\t var j = Math.floor(Math.random() * (i + 1));\n\t var temp = array[i];\n\t array[i] = array[j];\n\t array[j] = temp;\n\t }\n\t return array;\n\t}\n\t\n\t/**\n\t * Parse the conctructor/connect options.\n\t *\n\t * @param {Mixed} opts\n\t * @api private\n\t */\n\t\n\tClient.prototype.parseOptions = function(opts) {\n\t var options = this.options = {\n\t 'verbose' : false,\n\t 'pedantic' : false,\n\t 'reconnect' : true,\n\t 'maxReconnectAttempts' : DEFAULT_MAX_RECONNECT_ATTEMPTS,\n\t 'reconnectTimeWait' : DEFAULT_RECONNECT_TIME_WAIT,\n\t 'encoding' : 'utf8',\n\t 'tls' : false,\n\t 'waitOnFirstConnect' : false,\n\t };\n\t\n\t if (undefined === opts) {\n\t options.url = DEFAULT_URI;\n\t } else if ('number' === typeof opts) {\n\t options.url = DEFAULT_PRE + opts;\n\t } else if ('string' === typeof opts) {\n\t options.url = opts;\n\t } else if ('object' === typeof opts) {\n\t if (opts.port !== undefined) {\n\t options.url = DEFAULT_PRE + opts.port;\n\t }\n\t // Pull out various options here\n\t this.assignOption(opts, 'url');\n\t this.assignOption(opts, 'uri', 'url');\n\t this.assignOption(opts, 'user');\n\t this.assignOption(opts, 'pass');\n\t this.assignOption(opts, 'token');\n\t this.assignOption(opts, 'password', 'pass');\n\t this.assignOption(opts, 'verbose');\n\t this.assignOption(opts, 'pedantic');\n\t this.assignOption(opts, 'reconnect');\n\t this.assignOption(opts, 'maxReconnectAttempts');\n\t this.assignOption(opts, 'reconnectTimeWait');\n\t this.assignOption(opts, 'servers');\n\t this.assignOption(opts, 'urls', 'servers');\n\t this.assignOption(opts, 'noRandomize');\n\t this.assignOption(opts, 'NoRandomize', 'noRandomize');\n\t this.assignOption(opts, 'dontRandomize', 'noRandomize');\n\t this.assignOption(opts, 'encoding');\n\t this.assignOption(opts, 'tls');\n\t this.assignOption(opts, 'secure', 'tls');\n\t this.assignOption(opts, 'name');\n\t this.assignOption(opts, 'client', 'name');\n\t this.assignOption(opts, 'yieldTime');\n\t this.assignOption(opts, 'waitOnFirstConnect');\n\t this.assignOption(opts, 'json');\n\t }\n\t\n\t var client = this;\n\t\n\t // Set user/pass as needed if in options.\n\t client.user = options.user;\n\t client.pass = options.pass;\n\t \n\t // Set token as needed if in options.\n\t client.token = options.token;\n\t\n\t // Authentication - make sure authentication is valid.\n\t if (client.user && client.token) {\n\t throw(new Error(BAD_AUTHENTICATION));\n\t }\n\t\n\t // Encoding - make sure its valid.\n\t if (Buffer.isEncoding(options.encoding)) {\n\t client.encoding = options.encoding;\n\t } else {\n\t throw new Error('Invalid Encoding:' + options.encoding);\n\t }\n\t // For cluster support\n\t client.servers = [];\n\t\n\t if (Array.isArray(options.servers)) {\n\t options.servers.forEach(function(server) {\n\t client.servers.push(new Server(url.parse(server)));\n\t });\n\t } else {\n\t if (undefined === options.url) {\n\t options.url = DEFAULT_URI;\n\t }\n\t client.servers.push(new Server(url.parse(options.url)));\n\t }\n\t\n\t // Randomize if needed\n\t if (options.noRandomize !== true) {\n\t shuffle(client.servers);\n\t }\n\t};\n\t\n\t/**\n\t * Create a new server.\n\t *\n\t * @api private\n\t*/\n\t\n\tfunction Server(url) {\n\t this.url = url;\n\t this.didConnect = false;\n\t this.reconnects = 0;\n\t}\n\t\n\t/**\n\t * Properly select the next server.\n\t * We rotate the server list as we go,\n\t * we also pull auth from urls as needed, or\n\t * if they were set in options use that as override.\n\t *\n\t * @api private\n\t*/\n\t\n\tClient.prototype.selectServer = function() {\n\t var client = this;\n\t var server = client.servers.shift();\n\t\n\t // Place in client context.\n\t client.currentServer = server;\n\t client.url = server.url;\n\t if ('auth' in server.url && !!server.url.auth) {\n\t var auth = server.url.auth.split(':');\n\t if (auth.length !== 1) {\n\t if (client.options.user === undefined) {\n\t client.user = auth[0];\n\t }\n\t if (client.options.pass === undefined) {\n\t client.pass = auth[1];\n\t }\n\t } else {\n\t if (client.options.token === undefined) {\n\t client.token = auth[0];\n\t }\n\t }\n\t }\n\t client.servers.push(server);\n\t};\n\t\n\t/**\n\t * Check for TLS configuration mismatch.\n\t *\n\t * @api private\n\t*/\n\t\n\tClient.prototype.checkTLSMismatch = function() {\n\t if (this.info.tls_required === true &&\n\t this.options.tls === false) {\n\t this.emit('error', 'Server requires a secure connection.');\n\t this.closeStream();\n\t return true;\n\t }\n\t\n\t if (this.info.tls_required === false &&\n\t this.options.tls !== false) {\n\t this.emit('error', 'Server does not support a secure connection.');\n\t this.closeStream();\n\t return true;\n\t }\n\t\n\t if (this.info.tls_verify === true &&\n\t this.options.tls.cert === undefined) {\n\t this.emit('error', 'Server requires a client certificate.');\n\t this.closeStream();\n\t return true;\n\t }\n\t return false;\n\t};\n\t\n\t/**\n\t * Callback for first flush/connect.\n\t *\n\t * @api private\n\t*/\n\t\n\tClient.prototype.connectCB = function() {\n\t var wasReconnecting = this.reconnecting;\n\t var event = (wasReconnecting === true) ? 'reconnect' : 'connect';\n\t this.reconnecting = false;\n\t this.reconnects = 0;\n\t this.wasConnected = true;\n\t this.currentServer.didConnect = true;\n\t\n\t this.emit(event, this);\n\t\n\t this.flushPending();\n\t};\n\t\n\t\n\t/**\n\t * Properly setup a stream event handlers.\n\t *\n\t * @api private\n\t*/\n\t\n\tClient.prototype.setupHandlers = function() {\n\t var client = this;\n\t var stream = client.stream;\n\t\n\t if (undefined === stream) {\n\t return;\n\t }\n\t\n\t stream.on('connect', function() {\n\t client.connected = true;\n\t });\n\t\n\t stream.on('close', function(hadError) {\n\t client.closeStream();\n\t client.emit('disconnect');\n\t if (client.closed === true ||\n\t client.options.reconnect === false ||\n\t ((client.reconnects >= client.options.maxReconnectAttempts) && client.options.maxReconnectAttempts !== -1)) {\n\t client.emit('close');\n\t } else {\n\t client.scheduleReconnect();\n\t }\n\t });\n\t\n\t stream.on('error', function(exception) {\n\t // If we were connected just return, close event will process\n\t if (client.wasConnected === true && client.currentServer.didConnect === true) {\n\t return;\n\t }\n\t\n\t // if the current server did not connect at all, and we in\n\t // general have not connected to any server, remove it from\n\t // this list. Unless overidden\n\t if (client.wasConnected === false && client.currentServer.didConnect === false) {\n\t // We can override this behavior with waitOnFirstConnect, which will\n\t // treat it like a reconnect scenario.\n\t if (client.options.waitOnFirstConnect) {\n\t\t// Pretend to move us into a reconnect state.\n\t\tclient.currentServer.didConnect\t= true;\n\t } else {\n\t\tclient.servers.splice(client.servers.length-1, 1);\n\t }\n\t }\n\t\n\t // Only bubble up error if we never had connected\n\t // to the server and we only have one.\n\t if (client.wasConnected === false && client.servers.length === 0) {\n\t client.emit('error', 'Could not connect to server: ' + exception);\n\t }\n\t client.closeStream();\n\t });\n\t\n\t stream.on('data', function (data) {\n\t // If inbound exists, concat them together. We try to avoid this for split\n\t // messages, so this should only really happen for a split control line.\n\t // Long term answer is hand rolled parser and not regexp.\n\t if (client.inbound) {\n\t client.inbound = Buffer.concat([client.inbound, data]);\n\t } else {\n\t client.inbound = data;\n\t }\n\t\n\t // Process the inbound queue.\n\t client.processInbound();\n\t });\n\t};\n\t\n\t/**\n\t * Send the connect command. This needs to happen after receiving the first\n\t * INFO message and after TLS is established if necessary.\n\t *\n\t * @api private\n\t*/\n\t\n\tClient.prototype.sendConnect = function() {\n\t // Queue the connect command.\n\t var cs = {\n\t 'lang' : 'node',\n\t 'version' : VERSION,\n\t 'verbose' : this.options.verbose,\n\t 'pedantic': this.options.pedantic\n\t };\n\t if (this.user !== undefined) {\n\t cs.user = this.user;\n\t cs.pass = this.pass;\n\t }\n\t if (this.token !== undefined) {\n\t cs.auth_token = this.token;\n\t }\n\t if (this.options.name !== undefined) {\n\t cs.name = this.options.name;\n\t }\n\t\n\t // If we enqueued requests before we received INFO from the server, or we\n\t // reconnected, there be other data pending, write this immediately instead\n\t // of adding it to the queue.\n\t this.stream.write(CONNECT + SPC + JSON.stringify(cs) + CR_LF);\n\t};\n\t\n\t/**\n\t * Properly setup a stream connection with proper events.\n\t *\n\t * @api private\n\t*/\n\t\n\tClient.prototype.createConnection = function() {\n\t // Commands may have been queued during reconnect. Discard everything except:\n\t // 1) ping requests with a pong callback\n\t // 2) publish requests\n\t //\n\t // Rationale: CONNECT and SUBs are written directly upon connecting, any PONG\n\t // response is no longer relevant, and any UNSUB will be accounted for when we\n\t // sync our SUBs. Without this, users of the client may miss state transitions\n\t // via callbacks, would have to track the client's internal connection state,\n\t // and may have to double buffer messages (which we are already doing) if they\n\t // wanted to ensure their messages reach the server.\n\t var pong = [];\n\t var pend = [];\n\t var pSize = 0;\n\t var client = this;\n\t if (client.pending !== null) {\n\t var pongIndex = 0;\n\t client.pending.forEach(function(cmd) {\n\t var cmdLen = Buffer.isBuffer(cmd) ? cmd.length : Buffer.byteLength(cmd);\n\t if (cmd === PING_REQUEST && client.pongs !== null && pongIndex < client.pongs.length) {\n\t // filter out any useless ping requests (no pong callback, nop flush)\n\t var p = client.pongs[pongIndex++];\n\t if (p !== undefined) {\n\t pend.push(cmd);\n\t pSize += cmdLen;\n\t pong.push(p);\n\t }\n\t } else if (cmd.length > 3 && cmd[0] == 'P' && cmd[1] == 'U' && cmd[2] == 'B') {\n\t pend.push(cmd);\n\t pSize += cmdLen;\n\t }\n\t });\n\t }\n\t this.pongs = pong;\n\t this.pending = pend;\n\t this.pSize = pSize;\n\t\n\t this.pstate = AWAITING_CONTROL;\n\t\n\t // Clear info processing.\n\t this.info = null;\n\t this.infoReceived = false;\n\t\n\t // Select a server to connect to.\n\t this.selectServer();\n\t // Create the stream.\n\t this.stream = net.createConnection(this.url);\n\t // Setup the proper handlers.\n\t this.setupHandlers();\n\t};\n\t\n\t/**\n\t * Initialize client state.\n\t *\n\t * @api private\n\t */\n\t\n\tClient.prototype.initState = function() {\n\t this.ssid = 1;\n\t this.subs = {};\n\t this.reconnects = 0;\n\t this.connected = false;\n\t this.wasConnected = false;\n\t this.reconnecting = false;\n\t this.server = null;\n\t this.pending = [];\n\t};\n\t\n\t/**\n\t * Close the connection to the server.\n\t *\n\t * @api public\n\t */\n\t\n\tClient.prototype.close = function() {\n\t this.closed = true;\n\t this.removeAllListeners();\n\t this.closeStream();\n\t this.ssid = -1;\n\t this.subs = null;\n\t this.pstate = -1;\n\t this.pongs = null;\n\t this.pending = null;\n\t this.pSize = 0;\n\t};\n\t\n\t/**\n\t * Close down the stream and clear state.\n\t *\n\t * @api private\n\t */\n\t\n\tClient.prototype.closeStream = function() {\n\t if (this.stream !== null) {\n\t this.stream.end();\n\t this.stream.destroy();\n\t this.stream = null;\n\t }\n\t if (this.connected === true || this.closed === true) {\n\t this.pongs = null;\n\t this.pending = null;\n\t this.pSize = 0;\n\t this.connected = false;\n\t }\n\t this.inbound = null;\n\t};\n\t\n\t/**\n\t * Flush all pending data to the server.\n\t *\n\t * @api private\n\t */\n\t\n\tClient.prototype.flushPending = function() {\n\t if (this.connected === false ||\n\t this.pending === null ||\n\t this.pending.length === 0 ||\n\t this.infoReceived !== true) {\n\t return;\n\t }\n\t\n\t var client = this;\n\t var write = function(data) {\n\t client.pending = [];\n\t client.pSize = 0;\n\t return client.stream.write(data);\n\t };\n\t if (!this.pBufs) {\n\t // All strings, fastest for now.\n\t return write(this.pending.join(EMPTY));\n\t } else {\n\t // We have some or all Buffers. Figure out if we can optimize.\n\t var allBufs = true;\n\t for (var i=0; i < this.pending.length; i++){\n\t if (!Buffer.isBuffer(this.pending[i])) {\n\t\tallBufs = false;\n\t\tbreak;\n\t }\n\t }\n\t // If all buffers, concat together and write once.\n\t if (allBufs) {\n\t return write(Buffer.concat(this.pending, this.pSize));\n\t } else {\n\t // We have a mix, so write each one individually.\n\t var pending = this.pending;\n\t this.pending = [];\n\t this.pSize = 0;\n\t var result = true;\n\t for (i=0; i < pending.length; i++){\n\t\t result = this.stream.write(pending[i]) && result;\n\t }\n\t return result;\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Strips all SUBS commands from pending during initial connection completed since\n\t * we send the subscriptions as a separate operation.\n\t *\n\t * @api private\n\t */\n\t\n\tClient.prototype.stripPendingSubs = function() {\n\t var pending = this.pending;\n\t this.pending = [];\n\t this.pSize = 0;\n\t for (var i=0; i < pending.length; i++){\n\t if (!SUBRE.test(pending[i])) {\n\t // Re-queue the command.\n\t this.sendCommand(pending[i]);\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Send commands to the server or queue them up if connection pending.\n\t *\n\t * @api private\n\t */\n\t\n\tClient.prototype.sendCommand = function(cmd) {\n\t // Buffer to cut down on system calls, increase throughput.\n\t // When receive gets faster, should make this Buffer based..\n\t\n\t if (this.closed || this.pending === null) { return; }\n\t\n\t this.pending.push(cmd);\n\t if (!Buffer.isBuffer(cmd)) {\n\t this.pSize += Buffer.byteLength(cmd);\n\t } else {\n\t this.pSize += cmd.length;\n\t this.pBufs = true;\n\t }\n\t\n\t if (this.connected === true) {\n\t // First one let's setup flush..\n\t if (this.pending.length === 1) {\n\t var self = this;\n\t setImmediate(function() {\n\t self.flushPending();\n\t });\n\t } else if (this.pSize > FLUSH_THRESHOLD) {\n\t // Flush in place when threshold reached..\n\t this.flushPending();\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Sends existing subscriptions to new server after reconnect.\n\t *\n\t * @api private\n\t */\n\t\n\tClient.prototype.sendSubscriptions = function() {\n\t var protos = \"\";\n\t for (var sid in this.subs) {\n\t if (this.subs.hasOwnProperty(sid)) {\n\t var sub = this.subs[sid];\n\t var proto;\n\t if (sub.qgroup) {\n\t\tproto = [SUB, sub.subject, sub.qgroup, sid + CR_LF];\n\t } else {\n\t\tproto = [SUB, sub.subject, sid + CR_LF];\n\t }\n\t protos += proto.join(SPC);\n\t }\n\t }\n\t if (protos.length > 0) {\n\t this.stream.write(protos);\n\t }\n\t};\n\t\n\t/**\n\t * Process the inbound data queue.\n\t *\n\t * @api private\n\t */\n\t\n\tClient.prototype.processInbound = function() {\n\t var client = this;\n\t\n\t // Hold any regex matches.\n\t var m;\n\t\n\t // For optional yield\n\t var start;\n\t\n\t // unpause if needed.\n\t // FIXME(dlc) client.stream.isPaused() causes 0.10 to fail\n\t client.stream.resume();\n\t\n\t /* jshint -W083 */\n\t\n\t if (client.options.yieldTime !== undefined) {\n\t start = Date.now();\n\t }\n\t\n\t while (!client.closed && client.inbound && client.inbound.length > 0) {\n\t switch (client.pstate) {\n\t\n\t case AWAITING_CONTROL:\n\t // Regex only works on strings, so convert once to be more efficient.\n\t // Long term answer is a hand rolled parser, not regex.\n\t var buf = client.inbound.toString('binary', 0, MAX_CONTROL_LINE_SIZE);\n\t if ((m = MSG.exec(buf)) !== null) {\n\t client.payload = {\n\t subj : m[1],\n\t sid : parseInt(m[2], 10),\n\t reply : m[4],\n\t size : parseInt(m[5], 10)\n\t };\n\t\tclient.payload.psize = client.payload.size + CR_LF_LEN;\n\t client.pstate = AWAITING_MSG_PAYLOAD;\n\t } else if ((m = OK.exec(buf)) !== null) {\n\t // Ignore for now..\n\t } else if ((m = ERR.exec(buf)) !== null) {\n\t client.emit('error', m[1]);\n\t } else if ((m = PONG.exec(buf)) !== null) {\n\t var cb = client.pongs && client.pongs.shift();\n\t if (cb) { cb(); } // FIXME: Should we check for exceptions?\n\t } else if ((m = PING.exec(buf)) !== null) {\n\t client.sendCommand(PONG_RESPONSE);\n\t } else if ((m = INFO.exec(buf)) !== null) {\n\t\tclient.info = JSON.parse(m[1]);\n\t\t// Check on TLS mismatch.\n\t\tif (client.checkTLSMismatch() === true) {\n\t\t return;\n\t\t}\n\t\t// Process first INFO\n\t\tif (client.infoReceived === false) {\n\t\t // Switch over to TLS as needed.\n\t\t if (client.options.tls !== false &&\n\t\t client.stream.encrypted !== true) {\n\t\t var tlsOpts = {socket: client.stream};\n\t\t if ('object' === typeof client.options.tls) {\n\t\t for (var key in client.options.tls) {\n\t\t\ttlsOpts[key] = client.options.tls[key];\n\t\t }\n\t\t }\n\t\t client.stream = tls.connect(tlsOpts, function() {\n\t\t client.flushPending();\n\t\t });\n\t\t client.setupHandlers();\n\t\t }\n\t\n\t\t // Send the connect message and subscriptions immediately\n\t\t client.sendConnect();\n\t\t client.sendSubscriptions();\n\t\n\t\t client.pongs.unshift(function() { client.connectCB(); });\n\t\t client.stream.write(PING_REQUEST);\n\t\n\t\t // Mark as received\n\t\t client.infoReceived = true;\n\t\t client.stripPendingSubs();\n\t\t client.flushPending();\n\t\t}\n\t } else {\n\t // FIXME, check line length for something weird.\n\t // Nothing here yet, return\n\t return;\n\t }\n\t break;\n\t\n\t case AWAITING_MSG_PAYLOAD:\n\t\n\t // If we do not have the complete message, hold onto the chunks\n\t // and assemble when we have all we need. This optimizes for\n\t // when we parse a large buffer down to a small number of bytes,\n\t // then we receive a large chunk. This avoids a big copy with a\n\t // simple concat above.\n\t if (client.inbound.length < client.payload.psize) {\n\t\tif (undefined === client.payload.chunks) {\n\t\t client.payload.chunks = [];\n\t\t}\n\t\tclient.payload.chunks.push(client.inbound);\n\t\tclient.payload.psize -= client.inbound.length;\n\t client.inbound = null;\n\t\treturn;\n\t }\n\t\n\t // If we are here we have the complete message.\n\t // Check to see if we have existing chunks\n\t if (client.payload.chunks) {\n\t\tclient.payload.chunks.push(client.inbound.slice(0, client.payload.psize));\n\t\tvar mbuf = Buffer.concat(client.payload.chunks, client.payload.size+CR_LF_LEN);\n\t\tclient.payload.msg = mbuf.toString(client.encoding, 0, client.payload.size);\n\t } else {\n\t\tclient.payload.msg = client.inbound.toString(client.encoding, 0, client.payload.size);\n\t }\n\t\n\t // Eat the size of the inbound that represents the message.\n\t if (client.inbound.length === client.payload.psize) {\n\t client.inbound = null;\n\t } else {\n\t client.inbound = client.inbound.slice(client.payload.psize);\n\t }\n\t\n\t // process the message\n\t client.processMsg();\n\t\n\t // Reset\n\t client.pstate = AWAITING_CONTROL;\n\t client.payload = null;\n\t\n\t // Check to see if we have an option to yield for other events after yieldTime.\n\t if (start !== undefined) {\n\t\tif ((Date.now() - start) > client.options.yieldTime) {\n\t\t client.stream.pause();\n\t\t setImmediate(client.processInbound.bind(this));\n\t\t return;\n\t\t}\n\t }\n\t break;\n\t }\n\t\n\t // This is applicable for a regex match to eat the bytes we used from a control line.\n\t if (m && !this.closed) {\n\t // Chop inbound\n\t var psize = m[0].length;\n\t if (psize >= client.inbound.length) {\n\t client.inbound = null;\n\t } else {\n\t client.inbound = client.inbound.slice(psize);\n\t }\n\t }\n\t m = null;\n\t }\n\t};\n\t\n\t/**\n\t * Process a delivered message and deliver to appropriate subscriber.\n\t *\n\t * @api private\n\t */\n\t\n\tClient.prototype.processMsg = function() {\n\t var sub = this.subs[this.payload.sid];\n\t if (sub !== undefined) {\n\t sub.received += 1;\n\t // Check for a timeout, and cancel if received >= expected\n\t if (sub.timeout) {\n\t if (sub.received >= sub.expected) {\n\t clearTimeout(sub.timeout);\n\t sub.timeout = null;\n\t }\n\t }\n\t // Check for auto-unsubscribe\n\t if (sub.max !== undefined) {\n\t if (sub.received === sub.max) {\n\t delete this.subs[this.payload.sid];\n\t\tthis.emit('unsubscribe', this.payload.sid, sub.subject);\n\t } else if (sub.received > sub.max) {\n\t this.unsubscribe(this.payload.sid);\n\t sub.callback = null;\n\t }\n\t }\n\t\n\t if (sub.callback) {\n\t var msg = this.payload.msg;\n\t if (this.options.json) {\n\t try {\n\t msg = JSON.parse(new Buffer(this.payload.msg, this.options.encoding).toString());\n\t } catch (e) {\n\t msg = e;\n\t }\n\t }\n\t sub.callback(msg, this.payload.reply, this.payload.subj, this.payload.sid);\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Push a new cluster server.\n\t *\n\t * @param {String} uri\n\t * @api public\n\t*/\n\t\n\tClient.prototype.addServer = function(uri) {\n\t this.servers.push(new Server(url.parse(uri)));\n\t\n\t if (this.options.noRandomize !== true) {\n\t shuffle(this.servers);\n\t }\n\t};\n\t\n\t/**\n\t * Flush outbound queue to server and call optional callback when server has processed\n\t * all data.\n\t *\n\t * @param {Function} opt_callback\n\t * @api public\n\t */\n\t\n\tClient.prototype.flush = function(opt_callback) {\n\t if (this.closed) {\n\t if (typeof opt_callback === 'function') {\n\t opt_callback(new Error(CONN_CLOSED));\n\t return;\n\t } else {\n\t throw(new Error(CONN_CLOSED));\n\t }\n\t }\n\t if (this.pongs) {\n\t this.pongs.push(opt_callback);\n\t this.sendCommand(PING_REQUEST);\n\t this.flushPending();\n\t }\n\t};\n\t\n\t/**\n\t * Publish a message to the given subject, with optional reply and callback.\n\t *\n\t * @param {String} subject\n\t * @param {String} opt_msg\n\t * @param {String} opt_reply\n\t * @param {Function} opt_callback\n\t * @api public\n\t */\n\t\n\tClient.prototype.publish = function(subject, msg, opt_reply, opt_callback) {\n\t // They only supplied a callback function.\n\t if (typeof subject === 'function') {\n\t opt_callback = subject;\n\t subject = undefined;\n\t }\n\t if (!msg) { msg = EMPTY; }\n\t if (!subject) {\n\t if (opt_callback) {\n\t opt_callback(new Error(BAD_SUBJECT));\n\t } else {\n\t throw(new Error(BAD_SUBJECT));\n\t }\n\t }\n\t if (typeof msg === 'function') {\n\t if (opt_callback || opt_reply) {\n\t opt_callback(new Error(BAD_MSG));\n\t return;\n\t }\n\t opt_callback = msg;\n\t msg = EMPTY;\n\t opt_reply = undefined;\n\t }\n\t if (typeof opt_reply === 'function') {\n\t if (opt_callback) {\n\t opt_callback(new Error(BAD_REPLY));\n\t return;\n\t }\n\t opt_callback = opt_reply;\n\t opt_reply = undefined;\n\t }\n\t\n\t // Hold PUB SUB [REPLY]\n\t var psub;\n\t if (opt_reply === undefined) {\n\t psub = 'PUB ' + subject + SPC;\n\t } else {\n\t psub = 'PUB ' + subject + SPC + opt_reply + SPC;\n\t }\n\t\n\t if ('ArrayBuffer' in window && ArrayBuffer.isView(msg)) {\n\t msg = Buffer.from(msg);\n\t }\n\t\n\t // Need to treat sending buffers different.\n\t if (!Buffer.isBuffer(msg)) {\n\t var str = msg;\n\t if (this.options.json) {\n\t if (typeof msg !== 'object' || Array.isArray(msg)) {\n\t throw(new Error(BAD_JSON_MSG));\n\t }\n\t try {\n\t str = JSON.stringify(msg);\n\t } catch (e) {\n\t throw(new Error(BAD_JSON_MSG));\n\t }\n\t }\n\t this.sendCommand(psub + Buffer.byteLength(str) + CR_LF + str + CR_LF);\n\t } else {\n\t var b = new Buffer(psub.length + msg.length + (2 * CR_LF_LEN) + msg.length.toString().length);\n\t var len = b.write(psub + msg.length + CR_LF);\n\t msg.copy(b, len);\n\t b.write(CR_LF, len + msg.length);\n\t this.sendCommand(b);\n\t }\n\t\n\t if (opt_callback !== undefined) {\n\t this.flush(opt_callback);\n\t } else if (this.closed) {\n\t throw(new Error(CONN_CLOSED));\n\t }\n\t};\n\t\n\t/**\n\t * Subscribe to a given subject, with optional options and callback. opts can be\n\t * ommitted, even with a callback. The Subscriber Id is returned.\n\t *\n\t * @param {String} subject\n\t * @param {Object} opts\n\t * @param {Function} callback\n\t * @return {Mixed}\n\t * @api public\n\t */\n\t\n\tClient.prototype.subscribe = function(subject, opts, callback) {\n\t if (this.closed) {\n\t throw(new Error(CONN_CLOSED));\n\t }\n\t var qgroup, max;\n\t if (typeof opts === 'function') {\n\t callback = opts;\n\t opts = undefined;\n\t } else if (opts && typeof opts === 'object') {\n\t // FIXME, check exists, error otherwise..\n\t qgroup = opts.queue;\n\t max = opts.max;\n\t }\n\t this.ssid += 1;\n\t this.subs[this.ssid] = { 'subject':subject, 'callback':callback, 'received':0 };\n\t\n\t var proto;\n\t if (typeof qgroup === 'string') {\n\t this.subs[this.ssid].qgroup = qgroup;\n\t proto = [SUB, subject, qgroup, this.ssid + CR_LF];\n\t } else {\n\t proto = [SUB, subject, this.ssid + CR_LF];\n\t }\n\t\n\t this.sendCommand(proto.join(SPC));\n\t this.emit('subscribe', this.ssid, subject, opts);\n\t\n\t if (max) {\n\t this.unsubscribe(this.ssid, max);\n\t }\n\t return this.ssid;\n\t};\n\t\n\t/**\n\t * Unsubscribe to a given Subscriber Id, with optional max parameter.\n\t *\n\t * @param {Mixed} sid\n\t * @param {Number} opt_max\n\t * @api public\n\t */\n\t\n\tClient.prototype.unsubscribe = function(sid, opt_max) {\n\t if (!sid || this.closed) { return; }\n\t\n\t var proto;\n\t if (opt_max) {\n\t proto = [UNSUB, sid, opt_max + CR_LF];\n\t } else {\n\t proto = [UNSUB, sid + CR_LF];\n\t }\n\t this.sendCommand(proto.join(SPC));\n\t\n\t var sub = this.subs[sid];\n\t if (sub === undefined) {\n\t return;\n\t }\n\t sub.max = opt_max;\n\t if (sub.max === undefined || (sub.received >= sub.max)) {\n\t delete this.subs[sid];\n\t this.emit('unsubscribe', sid, sub.subject);\n\t }\n\t};\n\t\n\t/**\n\t * Set a timeout on a subscription.\n\t *\n\t * @param {Mixed} sid\n\t * @param {Number} timeout\n\t * @param {Number} expected\n\t * @api public\n\t */\n\t\n\tClient.prototype.timeout = function(sid, timeout, expected, callback) {\n\t if (!sid) { return; }\n\t var sub = this.subs[sid];\n\t if (sub === null) { return; }\n\t sub.expected = expected;\n\t sub.timeout = setTimeout(function() { callback(sid); }, timeout);\n\t};\n\t\n\t/**\n\t * Publish a message with an implicit inbox listener as the reply. Message is optional.\n\t * This should be treated as a subscription. You can optionally indicate how many\n\t * messages you only want to receive using opt_options = {max:N}. Otherwise you\n\t * will need to unsubscribe to stop the message stream.\n\t * The Subscriber Id is returned.\n\t *\n\t * @param {String} subject\n\t * @param {String} opt_msg\n\t * @param {Object} opt_options\n\t * @param {Function} callback\n\t * @return {Mixed}\n\t * @api public\n\t */\n\t\n\tClient.prototype.request = function(subject, opt_msg, opt_options, callback) {\n\t if (typeof opt_msg === 'function') {\n\t callback = opt_msg;\n\t opt_msg = EMPTY;\n\t opt_options = null;\n\t }\n\t if (typeof opt_options === 'function') {\n\t callback = opt_options;\n\t opt_options = null;\n\t }\n\t var inbox = createInbox();\n\t var s = this.subscribe(inbox, opt_options, function(msg, reply) {\n\t callback(msg, reply);\n\t });\n\t this.publish(subject, opt_msg, inbox);\n\t return s;\n\t};\n\t\n\t/**\n\t * Report number of outstanding subscriptions on this connection.\n\t *\n\t * @return {Number}\n\t * @api public\n\t */\n\t\n\tClient.prototype.numSubscriptions = function() {\n\t return Object.keys(this.subs).length;\n\t};\n\t\n\t/**\n\t * Reconnect to the server.\n\t *\n\t * @api private\n\t */\n\t\n\tClient.prototype.reconnect = function() {\n\t if (this.closed) { return; }\n\t this.reconnects += 1;\n\t this.createConnection();\n\t if (this.currentServer.didConnect === true) {\n\t this.emit('reconnecting');\n\t }\n\t};\n\t\n\t/**\n\t * Setup a timer event to attempt reconnect.\n\t *\n\t * @api private\n\t */\n\t\n\tClient.prototype.scheduleReconnect = function() {\n\t var client = this;\n\t // Just return if no more servers\n\t if (client.servers.length === 0) {\n\t return;\n\t }\n\t // Don't set reconnecting state if we are just trying\n\t // for the first time.\n\t if (client.wasConnected === true) {\n\t client.reconnecting = true;\n\t }\n\t // Only stall if we have connected before.\n\t var wait = 0;\n\t if (client.servers[0].didConnect === true) {\n\t wait = this.options.reconnectTimeWait;\n\t }\n\t setTimeout(function() { client.reconnect(); }, wait);\n\t};\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2).Buffer, __webpack_require__(6).setImmediate))\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer, global) {/*!\n\t * The buffer module from node.js, for the browser.\n\t *\n\t * @author Feross Aboukhadijeh \n\t * @license MIT\n\t */\n\t/* eslint-disable no-proto */\n\t\n\t'use strict'\n\t\n\tvar base64 = __webpack_require__(3)\n\tvar ieee754 = __webpack_require__(4)\n\tvar isArray = __webpack_require__(5)\n\t\n\texports.Buffer = Buffer\n\texports.SlowBuffer = SlowBuffer\n\texports.INSPECT_MAX_BYTES = 50\n\t\n\t/**\n\t * If `Buffer.TYPED_ARRAY_SUPPORT`:\n\t * === true Use Uint8Array implementation (fastest)\n\t * === false Use Object implementation (most compatible, even IE6)\n\t *\n\t * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n\t * Opera 11.6+, iOS 4.2+.\n\t *\n\t * Due to various browser bugs, sometimes the Object implementation will be used even\n\t * when the browser supports typed arrays.\n\t *\n\t * Note:\n\t *\n\t * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n\t * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n\t *\n\t * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n\t *\n\t * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n\t * incorrect length in some situations.\n\t\n\t * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n\t * get the Object implementation, which is slower but behaves correctly.\n\t */\n\tBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n\t ? global.TYPED_ARRAY_SUPPORT\n\t : typedArraySupport()\n\t\n\t/*\n\t * Export kMaxLength after typed array support is determined.\n\t */\n\texports.kMaxLength = kMaxLength()\n\t\n\tfunction typedArraySupport () {\n\t try {\n\t var arr = new Uint8Array(1)\n\t arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n\t return arr.foo() === 42 && // typed array instances can be augmented\n\t typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n\t arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n\t } catch (e) {\n\t return false\n\t }\n\t}\n\t\n\tfunction kMaxLength () {\n\t return Buffer.TYPED_ARRAY_SUPPORT\n\t ? 0x7fffffff\n\t : 0x3fffffff\n\t}\n\t\n\tfunction createBuffer (that, length) {\n\t if (kMaxLength() < length) {\n\t throw new RangeError('Invalid typed array length')\n\t }\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t // Return an augmented `Uint8Array` instance, for best performance\n\t that = new Uint8Array(length)\n\t that.__proto__ = Buffer.prototype\n\t } else {\n\t // Fallback: Return an object instance of the Buffer class\n\t if (that === null) {\n\t that = new Buffer(length)\n\t }\n\t that.length = length\n\t }\n\t\n\t return that\n\t}\n\t\n\t/**\n\t * The Buffer constructor returns instances of `Uint8Array` that have their\n\t * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n\t * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n\t * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n\t * returns a single octet.\n\t *\n\t * The `Uint8Array` prototype remains unmodified.\n\t */\n\t\n\tfunction Buffer (arg, encodingOrOffset, length) {\n\t if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n\t return new Buffer(arg, encodingOrOffset, length)\n\t }\n\t\n\t // Common case.\n\t if (typeof arg === 'number') {\n\t if (typeof encodingOrOffset === 'string') {\n\t throw new Error(\n\t 'If encoding is specified then the first argument must be a string'\n\t )\n\t }\n\t return allocUnsafe(this, arg)\n\t }\n\t return from(this, arg, encodingOrOffset, length)\n\t}\n\t\n\tBuffer.poolSize = 8192 // not used by this implementation\n\t\n\t// TODO: Legacy, not needed anymore. Remove in next major version.\n\tBuffer._augment = function (arr) {\n\t arr.__proto__ = Buffer.prototype\n\t return arr\n\t}\n\t\n\tfunction from (that, value, encodingOrOffset, length) {\n\t if (typeof value === 'number') {\n\t throw new TypeError('\"value\" argument must not be a number')\n\t }\n\t\n\t if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n\t return fromArrayBuffer(that, value, encodingOrOffset, length)\n\t }\n\t\n\t if (typeof value === 'string') {\n\t return fromString(that, value, encodingOrOffset)\n\t }\n\t\n\t return fromObject(that, value)\n\t}\n\t\n\t/**\n\t * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n\t * if value is a number.\n\t * Buffer.from(str[, encoding])\n\t * Buffer.from(array)\n\t * Buffer.from(buffer)\n\t * Buffer.from(arrayBuffer[, byteOffset[, length]])\n\t **/\n\tBuffer.from = function (value, encodingOrOffset, length) {\n\t return from(null, value, encodingOrOffset, length)\n\t}\n\t\n\tif (Buffer.TYPED_ARRAY_SUPPORT) {\n\t Buffer.prototype.__proto__ = Uint8Array.prototype\n\t Buffer.__proto__ = Uint8Array\n\t if (typeof Symbol !== 'undefined' && Symbol.species &&\n\t Buffer[Symbol.species] === Buffer) {\n\t // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n\t Object.defineProperty(Buffer, Symbol.species, {\n\t value: null,\n\t configurable: true\n\t })\n\t }\n\t}\n\t\n\tfunction assertSize (size) {\n\t if (typeof size !== 'number') {\n\t throw new TypeError('\"size\" argument must be a number')\n\t } else if (size < 0) {\n\t throw new RangeError('\"size\" argument must not be negative')\n\t }\n\t}\n\t\n\tfunction alloc (that, size, fill, encoding) {\n\t assertSize(size)\n\t if (size <= 0) {\n\t return createBuffer(that, size)\n\t }\n\t if (fill !== undefined) {\n\t // Only pay attention to encoding if it's a string. This\n\t // prevents accidentally sending in a number that would\n\t // be interpretted as a start offset.\n\t return typeof encoding === 'string'\n\t ? createBuffer(that, size).fill(fill, encoding)\n\t : createBuffer(that, size).fill(fill)\n\t }\n\t return createBuffer(that, size)\n\t}\n\t\n\t/**\n\t * Creates a new filled Buffer instance.\n\t * alloc(size[, fill[, encoding]])\n\t **/\n\tBuffer.alloc = function (size, fill, encoding) {\n\t return alloc(null, size, fill, encoding)\n\t}\n\t\n\tfunction allocUnsafe (that, size) {\n\t assertSize(size)\n\t that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) {\n\t for (var i = 0; i < size; ++i) {\n\t that[i] = 0\n\t }\n\t }\n\t return that\n\t}\n\t\n\t/**\n\t * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n\t * */\n\tBuffer.allocUnsafe = function (size) {\n\t return allocUnsafe(null, size)\n\t}\n\t/**\n\t * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n\t */\n\tBuffer.allocUnsafeSlow = function (size) {\n\t return allocUnsafe(null, size)\n\t}\n\t\n\tfunction fromString (that, string, encoding) {\n\t if (typeof encoding !== 'string' || encoding === '') {\n\t encoding = 'utf8'\n\t }\n\t\n\t if (!Buffer.isEncoding(encoding)) {\n\t throw new TypeError('\"encoding\" must be a valid string encoding')\n\t }\n\t\n\t var length = byteLength(string, encoding) | 0\n\t that = createBuffer(that, length)\n\t\n\t var actual = that.write(string, encoding)\n\t\n\t if (actual !== length) {\n\t // Writing a hex string, for example, that contains invalid characters will\n\t // cause everything after the first invalid character to be ignored. (e.g.\n\t // 'abxxcd' will be treated as 'ab')\n\t that = that.slice(0, actual)\n\t }\n\t\n\t return that\n\t}\n\t\n\tfunction fromArrayLike (that, array) {\n\t var length = array.length < 0 ? 0 : checked(array.length) | 0\n\t that = createBuffer(that, length)\n\t for (var i = 0; i < length; i += 1) {\n\t that[i] = array[i] & 255\n\t }\n\t return that\n\t}\n\t\n\tfunction fromArrayBuffer (that, array, byteOffset, length) {\n\t array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\t\n\t if (byteOffset < 0 || array.byteLength < byteOffset) {\n\t throw new RangeError('\\'offset\\' is out of bounds')\n\t }\n\t\n\t if (array.byteLength < byteOffset + (length || 0)) {\n\t throw new RangeError('\\'length\\' is out of bounds')\n\t }\n\t\n\t if (byteOffset === undefined && length === undefined) {\n\t array = new Uint8Array(array)\n\t } else if (length === undefined) {\n\t array = new Uint8Array(array, byteOffset)\n\t } else {\n\t array = new Uint8Array(array, byteOffset, length)\n\t }\n\t\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t // Return an augmented `Uint8Array` instance, for best performance\n\t that = array\n\t that.__proto__ = Buffer.prototype\n\t } else {\n\t // Fallback: Return an object instance of the Buffer class\n\t that = fromArrayLike(that, array)\n\t }\n\t return that\n\t}\n\t\n\tfunction fromObject (that, obj) {\n\t if (Buffer.isBuffer(obj)) {\n\t var len = checked(obj.length) | 0\n\t that = createBuffer(that, len)\n\t\n\t if (that.length === 0) {\n\t return that\n\t }\n\t\n\t obj.copy(that, 0, 0, len)\n\t return that\n\t }\n\t\n\t if (obj) {\n\t if ((typeof ArrayBuffer !== 'undefined' &&\n\t obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n\t if (typeof obj.length !== 'number' || isnan(obj.length)) {\n\t return createBuffer(that, 0)\n\t }\n\t return fromArrayLike(that, obj)\n\t }\n\t\n\t if (obj.type === 'Buffer' && isArray(obj.data)) {\n\t return fromArrayLike(that, obj.data)\n\t }\n\t }\n\t\n\t throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n\t}\n\t\n\tfunction checked (length) {\n\t // Note: cannot use `length < kMaxLength()` here because that fails when\n\t // length is NaN (which is otherwise coerced to zero.)\n\t if (length >= kMaxLength()) {\n\t throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n\t }\n\t return length | 0\n\t}\n\t\n\tfunction SlowBuffer (length) {\n\t if (+length != length) { // eslint-disable-line eqeqeq\n\t length = 0\n\t }\n\t return Buffer.alloc(+length)\n\t}\n\t\n\tBuffer.isBuffer = function isBuffer (b) {\n\t return !!(b != null && b._isBuffer)\n\t}\n\t\n\tBuffer.compare = function compare (a, b) {\n\t if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n\t throw new TypeError('Arguments must be Buffers')\n\t }\n\t\n\t if (a === b) return 0\n\t\n\t var x = a.length\n\t var y = b.length\n\t\n\t for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n\t if (a[i] !== b[i]) {\n\t x = a[i]\n\t y = b[i]\n\t break\n\t }\n\t }\n\t\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t}\n\t\n\tBuffer.isEncoding = function isEncoding (encoding) {\n\t switch (String(encoding).toLowerCase()) {\n\t case 'hex':\n\t case 'utf8':\n\t case 'utf-8':\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t case 'base64':\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return true\n\t default:\n\t return false\n\t }\n\t}\n\t\n\tBuffer.concat = function concat (list, length) {\n\t if (!isArray(list)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t }\n\t\n\t if (list.length === 0) {\n\t return Buffer.alloc(0)\n\t }\n\t\n\t var i\n\t if (length === undefined) {\n\t length = 0\n\t for (i = 0; i < list.length; ++i) {\n\t length += list[i].length\n\t }\n\t }\n\t\n\t var buffer = Buffer.allocUnsafe(length)\n\t var pos = 0\n\t for (i = 0; i < list.length; ++i) {\n\t var buf = list[i]\n\t if (!Buffer.isBuffer(buf)) {\n\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t }\n\t buf.copy(buffer, pos)\n\t pos += buf.length\n\t }\n\t return buffer\n\t}\n\t\n\tfunction byteLength (string, encoding) {\n\t if (Buffer.isBuffer(string)) {\n\t return string.length\n\t }\n\t if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n\t (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n\t return string.byteLength\n\t }\n\t if (typeof string !== 'string') {\n\t string = '' + string\n\t }\n\t\n\t var len = string.length\n\t if (len === 0) return 0\n\t\n\t // Use a for loop to avoid recursion\n\t var loweredCase = false\n\t for (;;) {\n\t switch (encoding) {\n\t case 'ascii':\n\t case 'latin1':\n\t case 'binary':\n\t return len\n\t case 'utf8':\n\t case 'utf-8':\n\t case undefined:\n\t return utf8ToBytes(string).length\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return len * 2\n\t case 'hex':\n\t return len >>> 1\n\t case 'base64':\n\t return base64ToBytes(string).length\n\t default:\n\t if (loweredCase) return utf8ToBytes(string).length // assume utf8\n\t encoding = ('' + encoding).toLowerCase()\n\t loweredCase = true\n\t }\n\t }\n\t}\n\tBuffer.byteLength = byteLength\n\t\n\tfunction slowToString (encoding, start, end) {\n\t var loweredCase = false\n\t\n\t // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n\t // property of a typed array.\n\t\n\t // This behaves neither like String nor Uint8Array in that we set start/end\n\t // to their upper/lower bounds if the value passed is out of range.\n\t // undefined is handled specially as per ECMA-262 6th Edition,\n\t // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\t if (start === undefined || start < 0) {\n\t start = 0\n\t }\n\t // Return early if start > this.length. Done here to prevent potential uint32\n\t // coercion fail below.\n\t if (start > this.length) {\n\t return ''\n\t }\n\t\n\t if (end === undefined || end > this.length) {\n\t end = this.length\n\t }\n\t\n\t if (end <= 0) {\n\t return ''\n\t }\n\t\n\t // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n\t end >>>= 0\n\t start >>>= 0\n\t\n\t if (end <= start) {\n\t return ''\n\t }\n\t\n\t if (!encoding) encoding = 'utf8'\n\t\n\t while (true) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexSlice(this, start, end)\n\t\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Slice(this, start, end)\n\t\n\t case 'ascii':\n\t return asciiSlice(this, start, end)\n\t\n\t case 'latin1':\n\t case 'binary':\n\t return latin1Slice(this, start, end)\n\t\n\t case 'base64':\n\t return base64Slice(this, start, end)\n\t\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return utf16leSlice(this, start, end)\n\t\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = (encoding + '').toLowerCase()\n\t loweredCase = true\n\t }\n\t }\n\t}\n\t\n\t// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n\t// Buffer instances.\n\tBuffer.prototype._isBuffer = true\n\t\n\tfunction swap (b, n, m) {\n\t var i = b[n]\n\t b[n] = b[m]\n\t b[m] = i\n\t}\n\t\n\tBuffer.prototype.swap16 = function swap16 () {\n\t var len = this.length\n\t if (len % 2 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 16-bits')\n\t }\n\t for (var i = 0; i < len; i += 2) {\n\t swap(this, i, i + 1)\n\t }\n\t return this\n\t}\n\t\n\tBuffer.prototype.swap32 = function swap32 () {\n\t var len = this.length\n\t if (len % 4 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 32-bits')\n\t }\n\t for (var i = 0; i < len; i += 4) {\n\t swap(this, i, i + 3)\n\t swap(this, i + 1, i + 2)\n\t }\n\t return this\n\t}\n\t\n\tBuffer.prototype.swap64 = function swap64 () {\n\t var len = this.length\n\t if (len % 8 !== 0) {\n\t throw new RangeError('Buffer size must be a multiple of 64-bits')\n\t }\n\t for (var i = 0; i < len; i += 8) {\n\t swap(this, i, i + 7)\n\t swap(this, i + 1, i + 6)\n\t swap(this, i + 2, i + 5)\n\t swap(this, i + 3, i + 4)\n\t }\n\t return this\n\t}\n\t\n\tBuffer.prototype.toString = function toString () {\n\t var length = this.length | 0\n\t if (length === 0) return ''\n\t if (arguments.length === 0) return utf8Slice(this, 0, length)\n\t return slowToString.apply(this, arguments)\n\t}\n\t\n\tBuffer.prototype.equals = function equals (b) {\n\t if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t if (this === b) return true\n\t return Buffer.compare(this, b) === 0\n\t}\n\t\n\tBuffer.prototype.inspect = function inspect () {\n\t var str = ''\n\t var max = exports.INSPECT_MAX_BYTES\n\t if (this.length > 0) {\n\t str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n\t if (this.length > max) str += ' ... '\n\t }\n\t return ''\n\t}\n\t\n\tBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n\t if (!Buffer.isBuffer(target)) {\n\t throw new TypeError('Argument must be a Buffer')\n\t }\n\t\n\t if (start === undefined) {\n\t start = 0\n\t }\n\t if (end === undefined) {\n\t end = target ? target.length : 0\n\t }\n\t if (thisStart === undefined) {\n\t thisStart = 0\n\t }\n\t if (thisEnd === undefined) {\n\t thisEnd = this.length\n\t }\n\t\n\t if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n\t throw new RangeError('out of range index')\n\t }\n\t\n\t if (thisStart >= thisEnd && start >= end) {\n\t return 0\n\t }\n\t if (thisStart >= thisEnd) {\n\t return -1\n\t }\n\t if (start >= end) {\n\t return 1\n\t }\n\t\n\t start >>>= 0\n\t end >>>= 0\n\t thisStart >>>= 0\n\t thisEnd >>>= 0\n\t\n\t if (this === target) return 0\n\t\n\t var x = thisEnd - thisStart\n\t var y = end - start\n\t var len = Math.min(x, y)\n\t\n\t var thisCopy = this.slice(thisStart, thisEnd)\n\t var targetCopy = target.slice(start, end)\n\t\n\t for (var i = 0; i < len; ++i) {\n\t if (thisCopy[i] !== targetCopy[i]) {\n\t x = thisCopy[i]\n\t y = targetCopy[i]\n\t break\n\t }\n\t }\n\t\n\t if (x < y) return -1\n\t if (y < x) return 1\n\t return 0\n\t}\n\t\n\t// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n\t// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n\t//\n\t// Arguments:\n\t// - buffer - a Buffer to search\n\t// - val - a string, Buffer, or number\n\t// - byteOffset - an index into `buffer`; will be clamped to an int32\n\t// - encoding - an optional encoding, relevant is val is a string\n\t// - dir - true for indexOf, false for lastIndexOf\n\tfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n\t // Empty buffer means no match\n\t if (buffer.length === 0) return -1\n\t\n\t // Normalize byteOffset\n\t if (typeof byteOffset === 'string') {\n\t encoding = byteOffset\n\t byteOffset = 0\n\t } else if (byteOffset > 0x7fffffff) {\n\t byteOffset = 0x7fffffff\n\t } else if (byteOffset < -0x80000000) {\n\t byteOffset = -0x80000000\n\t }\n\t byteOffset = +byteOffset // Coerce to Number.\n\t if (isNaN(byteOffset)) {\n\t // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n\t byteOffset = dir ? 0 : (buffer.length - 1)\n\t }\n\t\n\t // Normalize byteOffset: negative offsets start from the end of the buffer\n\t if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n\t if (byteOffset >= buffer.length) {\n\t if (dir) return -1\n\t else byteOffset = buffer.length - 1\n\t } else if (byteOffset < 0) {\n\t if (dir) byteOffset = 0\n\t else return -1\n\t }\n\t\n\t // Normalize val\n\t if (typeof val === 'string') {\n\t val = Buffer.from(val, encoding)\n\t }\n\t\n\t // Finally, search either indexOf (if dir is true) or lastIndexOf\n\t if (Buffer.isBuffer(val)) {\n\t // Special case: looking for empty string/buffer always fails\n\t if (val.length === 0) {\n\t return -1\n\t }\n\t return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n\t } else if (typeof val === 'number') {\n\t val = val & 0xFF // Search for a byte value [0-255]\n\t if (Buffer.TYPED_ARRAY_SUPPORT &&\n\t typeof Uint8Array.prototype.indexOf === 'function') {\n\t if (dir) {\n\t return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n\t } else {\n\t return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n\t }\n\t }\n\t return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n\t }\n\t\n\t throw new TypeError('val must be string, number or Buffer')\n\t}\n\t\n\tfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n\t var indexSize = 1\n\t var arrLength = arr.length\n\t var valLength = val.length\n\t\n\t if (encoding !== undefined) {\n\t encoding = String(encoding).toLowerCase()\n\t if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n\t encoding === 'utf16le' || encoding === 'utf-16le') {\n\t if (arr.length < 2 || val.length < 2) {\n\t return -1\n\t }\n\t indexSize = 2\n\t arrLength /= 2\n\t valLength /= 2\n\t byteOffset /= 2\n\t }\n\t }\n\t\n\t function read (buf, i) {\n\t if (indexSize === 1) {\n\t return buf[i]\n\t } else {\n\t return buf.readUInt16BE(i * indexSize)\n\t }\n\t }\n\t\n\t var i\n\t if (dir) {\n\t var foundIndex = -1\n\t for (i = byteOffset; i < arrLength; i++) {\n\t if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n\t if (foundIndex === -1) foundIndex = i\n\t if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n\t } else {\n\t if (foundIndex !== -1) i -= i - foundIndex\n\t foundIndex = -1\n\t }\n\t }\n\t } else {\n\t if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n\t for (i = byteOffset; i >= 0; i--) {\n\t var found = true\n\t for (var j = 0; j < valLength; j++) {\n\t if (read(arr, i + j) !== read(val, j)) {\n\t found = false\n\t break\n\t }\n\t }\n\t if (found) return i\n\t }\n\t }\n\t\n\t return -1\n\t}\n\t\n\tBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n\t return this.indexOf(val, byteOffset, encoding) !== -1\n\t}\n\t\n\tBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n\t return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n\t}\n\t\n\tBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n\t return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n\t}\n\t\n\tfunction hexWrite (buf, string, offset, length) {\n\t offset = Number(offset) || 0\n\t var remaining = buf.length - offset\n\t if (!length) {\n\t length = remaining\n\t } else {\n\t length = Number(length)\n\t if (length > remaining) {\n\t length = remaining\n\t }\n\t }\n\t\n\t // must be an even number of digits\n\t var strLen = string.length\n\t if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\t\n\t if (length > strLen / 2) {\n\t length = strLen / 2\n\t }\n\t for (var i = 0; i < length; ++i) {\n\t var parsed = parseInt(string.substr(i * 2, 2), 16)\n\t if (isNaN(parsed)) return i\n\t buf[offset + i] = parsed\n\t }\n\t return i\n\t}\n\t\n\tfunction utf8Write (buf, string, offset, length) {\n\t return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\t\n\tfunction asciiWrite (buf, string, offset, length) {\n\t return blitBuffer(asciiToBytes(string), buf, offset, length)\n\t}\n\t\n\tfunction latin1Write (buf, string, offset, length) {\n\t return asciiWrite(buf, string, offset, length)\n\t}\n\t\n\tfunction base64Write (buf, string, offset, length) {\n\t return blitBuffer(base64ToBytes(string), buf, offset, length)\n\t}\n\t\n\tfunction ucs2Write (buf, string, offset, length) {\n\t return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\t\n\tBuffer.prototype.write = function write (string, offset, length, encoding) {\n\t // Buffer#write(string)\n\t if (offset === undefined) {\n\t encoding = 'utf8'\n\t length = this.length\n\t offset = 0\n\t // Buffer#write(string, encoding)\n\t } else if (length === undefined && typeof offset === 'string') {\n\t encoding = offset\n\t length = this.length\n\t offset = 0\n\t // Buffer#write(string, offset[, length][, encoding])\n\t } else if (isFinite(offset)) {\n\t offset = offset | 0\n\t if (isFinite(length)) {\n\t length = length | 0\n\t if (encoding === undefined) encoding = 'utf8'\n\t } else {\n\t encoding = length\n\t length = undefined\n\t }\n\t // legacy write(string, encoding, offset, length) - remove in v0.13\n\t } else {\n\t throw new Error(\n\t 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n\t )\n\t }\n\t\n\t var remaining = this.length - offset\n\t if (length === undefined || length > remaining) length = remaining\n\t\n\t if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t throw new RangeError('Attempt to write outside buffer bounds')\n\t }\n\t\n\t if (!encoding) encoding = 'utf8'\n\t\n\t var loweredCase = false\n\t for (;;) {\n\t switch (encoding) {\n\t case 'hex':\n\t return hexWrite(this, string, offset, length)\n\t\n\t case 'utf8':\n\t case 'utf-8':\n\t return utf8Write(this, string, offset, length)\n\t\n\t case 'ascii':\n\t return asciiWrite(this, string, offset, length)\n\t\n\t case 'latin1':\n\t case 'binary':\n\t return latin1Write(this, string, offset, length)\n\t\n\t case 'base64':\n\t // Warning: maxLength not taken into account in base64Write\n\t return base64Write(this, string, offset, length)\n\t\n\t case 'ucs2':\n\t case 'ucs-2':\n\t case 'utf16le':\n\t case 'utf-16le':\n\t return ucs2Write(this, string, offset, length)\n\t\n\t default:\n\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t encoding = ('' + encoding).toLowerCase()\n\t loweredCase = true\n\t }\n\t }\n\t}\n\t\n\tBuffer.prototype.toJSON = function toJSON () {\n\t return {\n\t type: 'Buffer',\n\t data: Array.prototype.slice.call(this._arr || this, 0)\n\t }\n\t}\n\t\n\tfunction base64Slice (buf, start, end) {\n\t if (start === 0 && end === buf.length) {\n\t return base64.fromByteArray(buf)\n\t } else {\n\t return base64.fromByteArray(buf.slice(start, end))\n\t }\n\t}\n\t\n\tfunction utf8Slice (buf, start, end) {\n\t end = Math.min(buf.length, end)\n\t var res = []\n\t\n\t var i = start\n\t while (i < end) {\n\t var firstByte = buf[i]\n\t var codePoint = null\n\t var bytesPerSequence = (firstByte > 0xEF) ? 4\n\t : (firstByte > 0xDF) ? 3\n\t : (firstByte > 0xBF) ? 2\n\t : 1\n\t\n\t if (i + bytesPerSequence <= end) {\n\t var secondByte, thirdByte, fourthByte, tempCodePoint\n\t\n\t switch (bytesPerSequence) {\n\t case 1:\n\t if (firstByte < 0x80) {\n\t codePoint = firstByte\n\t }\n\t break\n\t case 2:\n\t secondByte = buf[i + 1]\n\t if ((secondByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n\t if (tempCodePoint > 0x7F) {\n\t codePoint = tempCodePoint\n\t }\n\t }\n\t break\n\t case 3:\n\t secondByte = buf[i + 1]\n\t thirdByte = buf[i + 2]\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n\t if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n\t codePoint = tempCodePoint\n\t }\n\t }\n\t break\n\t case 4:\n\t secondByte = buf[i + 1]\n\t thirdByte = buf[i + 2]\n\t fourthByte = buf[i + 3]\n\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n\t tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n\t if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n\t codePoint = tempCodePoint\n\t }\n\t }\n\t }\n\t }\n\t\n\t if (codePoint === null) {\n\t // we did not generate a valid codePoint so insert a\n\t // replacement char (U+FFFD) and advance only 1 byte\n\t codePoint = 0xFFFD\n\t bytesPerSequence = 1\n\t } else if (codePoint > 0xFFFF) {\n\t // encode to utf16 (surrogate pair dance)\n\t codePoint -= 0x10000\n\t res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n\t codePoint = 0xDC00 | codePoint & 0x3FF\n\t }\n\t\n\t res.push(codePoint)\n\t i += bytesPerSequence\n\t }\n\t\n\t return decodeCodePointsArray(res)\n\t}\n\t\n\t// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n\t// the lowest limit is Chrome, with 0x10000 args.\n\t// We go 1 magnitude less, for safety\n\tvar MAX_ARGUMENTS_LENGTH = 0x1000\n\t\n\tfunction decodeCodePointsArray (codePoints) {\n\t var len = codePoints.length\n\t if (len <= MAX_ARGUMENTS_LENGTH) {\n\t return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n\t }\n\t\n\t // Decode in chunks to avoid \"call stack size exceeded\".\n\t var res = ''\n\t var i = 0\n\t while (i < len) {\n\t res += String.fromCharCode.apply(\n\t String,\n\t codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n\t )\n\t }\n\t return res\n\t}\n\t\n\tfunction asciiSlice (buf, start, end) {\n\t var ret = ''\n\t end = Math.min(buf.length, end)\n\t\n\t for (var i = start; i < end; ++i) {\n\t ret += String.fromCharCode(buf[i] & 0x7F)\n\t }\n\t return ret\n\t}\n\t\n\tfunction latin1Slice (buf, start, end) {\n\t var ret = ''\n\t end = Math.min(buf.length, end)\n\t\n\t for (var i = start; i < end; ++i) {\n\t ret += String.fromCharCode(buf[i])\n\t }\n\t return ret\n\t}\n\t\n\tfunction hexSlice (buf, start, end) {\n\t var len = buf.length\n\t\n\t if (!start || start < 0) start = 0\n\t if (!end || end < 0 || end > len) end = len\n\t\n\t var out = ''\n\t for (var i = start; i < end; ++i) {\n\t out += toHex(buf[i])\n\t }\n\t return out\n\t}\n\t\n\tfunction utf16leSlice (buf, start, end) {\n\t var bytes = buf.slice(start, end)\n\t var res = ''\n\t for (var i = 0; i < bytes.length; i += 2) {\n\t res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n\t }\n\t return res\n\t}\n\t\n\tBuffer.prototype.slice = function slice (start, end) {\n\t var len = this.length\n\t start = ~~start\n\t end = end === undefined ? len : ~~end\n\t\n\t if (start < 0) {\n\t start += len\n\t if (start < 0) start = 0\n\t } else if (start > len) {\n\t start = len\n\t }\n\t\n\t if (end < 0) {\n\t end += len\n\t if (end < 0) end = 0\n\t } else if (end > len) {\n\t end = len\n\t }\n\t\n\t if (end < start) end = start\n\t\n\t var newBuf\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t newBuf = this.subarray(start, end)\n\t newBuf.__proto__ = Buffer.prototype\n\t } else {\n\t var sliceLen = end - start\n\t newBuf = new Buffer(sliceLen, undefined)\n\t for (var i = 0; i < sliceLen; ++i) {\n\t newBuf[i] = this[i + start]\n\t }\n\t }\n\t\n\t return newBuf\n\t}\n\t\n\t/*\n\t * Need to make sure that buffer isn't trying to write out of bounds.\n\t */\n\tfunction checkOffset (offset, ext, length) {\n\t if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n\t if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n\t}\n\t\n\tBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkOffset(offset, byteLength, this.length)\n\t\n\t var val = this[offset]\n\t var mul = 1\n\t var i = 0\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul\n\t }\n\t\n\t return val\n\t}\n\t\n\tBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) {\n\t checkOffset(offset, byteLength, this.length)\n\t }\n\t\n\t var val = this[offset + --byteLength]\n\t var mul = 1\n\t while (byteLength > 0 && (mul *= 0x100)) {\n\t val += this[offset + --byteLength] * mul\n\t }\n\t\n\t return val\n\t}\n\t\n\tBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 1, this.length)\n\t return this[offset]\n\t}\n\t\n\tBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t return this[offset] | (this[offset + 1] << 8)\n\t}\n\t\n\tBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t return (this[offset] << 8) | this[offset + 1]\n\t}\n\t\n\tBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t\n\t return ((this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16)) +\n\t (this[offset + 3] * 0x1000000)\n\t}\n\t\n\tBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t\n\t return (this[offset] * 0x1000000) +\n\t ((this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t this[offset + 3])\n\t}\n\t\n\tBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkOffset(offset, byteLength, this.length)\n\t\n\t var val = this[offset]\n\t var mul = 1\n\t var i = 0\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t val += this[offset + i] * mul\n\t }\n\t mul *= 0x80\n\t\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\t\n\t return val\n\t}\n\t\n\tBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) checkOffset(offset, byteLength, this.length)\n\t\n\t var i = byteLength\n\t var mul = 1\n\t var val = this[offset + --i]\n\t while (i > 0 && (mul *= 0x100)) {\n\t val += this[offset + --i] * mul\n\t }\n\t mul *= 0x80\n\t\n\t if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\t\n\t return val\n\t}\n\t\n\tBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 1, this.length)\n\t if (!(this[offset] & 0x80)) return (this[offset])\n\t return ((0xff - this[offset] + 1) * -1)\n\t}\n\t\n\tBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t var val = this[offset] | (this[offset + 1] << 8)\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t}\n\t\n\tBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 2, this.length)\n\t var val = this[offset + 1] | (this[offset] << 8)\n\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t}\n\t\n\tBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t\n\t return (this[offset]) |\n\t (this[offset + 1] << 8) |\n\t (this[offset + 2] << 16) |\n\t (this[offset + 3] << 24)\n\t}\n\t\n\tBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t\n\t return (this[offset] << 24) |\n\t (this[offset + 1] << 16) |\n\t (this[offset + 2] << 8) |\n\t (this[offset + 3])\n\t}\n\t\n\tBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t return ieee754.read(this, offset, true, 23, 4)\n\t}\n\t\n\tBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 4, this.length)\n\t return ieee754.read(this, offset, false, 23, 4)\n\t}\n\t\n\tBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 8, this.length)\n\t return ieee754.read(this, offset, true, 52, 8)\n\t}\n\t\n\tBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n\t if (!noAssert) checkOffset(offset, 8, this.length)\n\t return ieee754.read(this, offset, false, 52, 8)\n\t}\n\t\n\tfunction checkInt (buf, value, offset, ext, max, min) {\n\t if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n\t if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t}\n\t\n\tBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) {\n\t var maxBytes = Math.pow(2, 8 * byteLength) - 1\n\t checkInt(this, value, offset, byteLength, maxBytes, 0)\n\t }\n\t\n\t var mul = 1\n\t var i = 0\n\t this[offset] = value & 0xFF\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF\n\t }\n\t\n\t return offset + byteLength\n\t}\n\t\n\tBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t byteLength = byteLength | 0\n\t if (!noAssert) {\n\t var maxBytes = Math.pow(2, 8 * byteLength) - 1\n\t checkInt(this, value, offset, byteLength, maxBytes, 0)\n\t }\n\t\n\t var i = byteLength - 1\n\t var mul = 1\n\t this[offset + i] = value & 0xFF\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t this[offset + i] = (value / mul) & 0xFF\n\t }\n\t\n\t return offset + byteLength\n\t}\n\t\n\tBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n\t this[offset] = (value & 0xff)\n\t return offset + 1\n\t}\n\t\n\tfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n\t if (value < 0) value = 0xffff + value + 1\n\t for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n\t buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n\t (littleEndian ? i : 1 - i) * 8\n\t }\n\t}\n\t\n\tBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value & 0xff)\n\t this[offset + 1] = (value >>> 8)\n\t } else {\n\t objectWriteUInt16(this, value, offset, true)\n\t }\n\t return offset + 2\n\t}\n\t\n\tBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 8)\n\t this[offset + 1] = (value & 0xff)\n\t } else {\n\t objectWriteUInt16(this, value, offset, false)\n\t }\n\t return offset + 2\n\t}\n\t\n\tfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n\t if (value < 0) value = 0xffffffff + value + 1\n\t for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n\t buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n\t }\n\t}\n\t\n\tBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset + 3] = (value >>> 24)\n\t this[offset + 2] = (value >>> 16)\n\t this[offset + 1] = (value >>> 8)\n\t this[offset] = (value & 0xff)\n\t } else {\n\t objectWriteUInt32(this, value, offset, true)\n\t }\n\t return offset + 4\n\t}\n\t\n\tBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 24)\n\t this[offset + 1] = (value >>> 16)\n\t this[offset + 2] = (value >>> 8)\n\t this[offset + 3] = (value & 0xff)\n\t } else {\n\t objectWriteUInt32(this, value, offset, false)\n\t }\n\t return offset + 4\n\t}\n\t\n\tBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) {\n\t var limit = Math.pow(2, 8 * byteLength - 1)\n\t\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit)\n\t }\n\t\n\t var i = 0\n\t var mul = 1\n\t var sub = 0\n\t this[offset] = value & 0xFF\n\t while (++i < byteLength && (mul *= 0x100)) {\n\t if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n\t sub = 1\n\t }\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n\t }\n\t\n\t return offset + byteLength\n\t}\n\t\n\tBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) {\n\t var limit = Math.pow(2, 8 * byteLength - 1)\n\t\n\t checkInt(this, value, offset, byteLength, limit - 1, -limit)\n\t }\n\t\n\t var i = byteLength - 1\n\t var mul = 1\n\t var sub = 0\n\t this[offset + i] = value & 0xFF\n\t while (--i >= 0 && (mul *= 0x100)) {\n\t if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n\t sub = 1\n\t }\n\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n\t }\n\t\n\t return offset + byteLength\n\t}\n\t\n\tBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n\t if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n\t if (value < 0) value = 0xff + value + 1\n\t this[offset] = (value & 0xff)\n\t return offset + 1\n\t}\n\t\n\tBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value & 0xff)\n\t this[offset + 1] = (value >>> 8)\n\t } else {\n\t objectWriteUInt16(this, value, offset, true)\n\t }\n\t return offset + 2\n\t}\n\t\n\tBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 8)\n\t this[offset + 1] = (value & 0xff)\n\t } else {\n\t objectWriteUInt16(this, value, offset, false)\n\t }\n\t return offset + 2\n\t}\n\t\n\tBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value & 0xff)\n\t this[offset + 1] = (value >>> 8)\n\t this[offset + 2] = (value >>> 16)\n\t this[offset + 3] = (value >>> 24)\n\t } else {\n\t objectWriteUInt32(this, value, offset, true)\n\t }\n\t return offset + 4\n\t}\n\t\n\tBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n\t value = +value\n\t offset = offset | 0\n\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n\t if (value < 0) value = 0xffffffff + value + 1\n\t if (Buffer.TYPED_ARRAY_SUPPORT) {\n\t this[offset] = (value >>> 24)\n\t this[offset + 1] = (value >>> 16)\n\t this[offset + 2] = (value >>> 8)\n\t this[offset + 3] = (value & 0xff)\n\t } else {\n\t objectWriteUInt32(this, value, offset, false)\n\t }\n\t return offset + 4\n\t}\n\t\n\tfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t if (offset < 0) throw new RangeError('Index out of range')\n\t}\n\t\n\tfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n\t }\n\t ieee754.write(buf, value, offset, littleEndian, 23, 4)\n\t return offset + 4\n\t}\n\t\n\tBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, true, noAssert)\n\t}\n\t\n\tBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n\t return writeFloat(this, value, offset, false, noAssert)\n\t}\n\t\n\tfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n\t if (!noAssert) {\n\t checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n\t }\n\t ieee754.write(buf, value, offset, littleEndian, 52, 8)\n\t return offset + 8\n\t}\n\t\n\tBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, true, noAssert)\n\t}\n\t\n\tBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n\t return writeDouble(this, value, offset, false, noAssert)\n\t}\n\t\n\t// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t if (!start) start = 0\n\t if (!end && end !== 0) end = this.length\n\t if (targetStart >= target.length) targetStart = target.length\n\t if (!targetStart) targetStart = 0\n\t if (end > 0 && end < start) end = start\n\t\n\t // Copy 0 bytes; we're done\n\t if (end === start) return 0\n\t if (target.length === 0 || this.length === 0) return 0\n\t\n\t // Fatal error conditions\n\t if (targetStart < 0) {\n\t throw new RangeError('targetStart out of bounds')\n\t }\n\t if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n\t if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\t\n\t // Are we oob?\n\t if (end > this.length) end = this.length\n\t if (target.length - targetStart < end - start) {\n\t end = target.length - targetStart + start\n\t }\n\t\n\t var len = end - start\n\t var i\n\t\n\t if (this === target && start < targetStart && targetStart < end) {\n\t // descending copy from end\n\t for (i = len - 1; i >= 0; --i) {\n\t target[i + targetStart] = this[i + start]\n\t }\n\t } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n\t // ascending copy from start\n\t for (i = 0; i < len; ++i) {\n\t target[i + targetStart] = this[i + start]\n\t }\n\t } else {\n\t Uint8Array.prototype.set.call(\n\t target,\n\t this.subarray(start, start + len),\n\t targetStart\n\t )\n\t }\n\t\n\t return len\n\t}\n\t\n\t// Usage:\n\t// buffer.fill(number[, offset[, end]])\n\t// buffer.fill(buffer[, offset[, end]])\n\t// buffer.fill(string[, offset[, end]][, encoding])\n\tBuffer.prototype.fill = function fill (val, start, end, encoding) {\n\t // Handle string cases:\n\t if (typeof val === 'string') {\n\t if (typeof start === 'string') {\n\t encoding = start\n\t start = 0\n\t end = this.length\n\t } else if (typeof end === 'string') {\n\t encoding = end\n\t end = this.length\n\t }\n\t if (val.length === 1) {\n\t var code = val.charCodeAt(0)\n\t if (code < 256) {\n\t val = code\n\t }\n\t }\n\t if (encoding !== undefined && typeof encoding !== 'string') {\n\t throw new TypeError('encoding must be a string')\n\t }\n\t if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n\t throw new TypeError('Unknown encoding: ' + encoding)\n\t }\n\t } else if (typeof val === 'number') {\n\t val = val & 255\n\t }\n\t\n\t // Invalid ranges are not set to a default, so can range check early.\n\t if (start < 0 || this.length < start || this.length < end) {\n\t throw new RangeError('Out of range index')\n\t }\n\t\n\t if (end <= start) {\n\t return this\n\t }\n\t\n\t start = start >>> 0\n\t end = end === undefined ? this.length : end >>> 0\n\t\n\t if (!val) val = 0\n\t\n\t var i\n\t if (typeof val === 'number') {\n\t for (i = start; i < end; ++i) {\n\t this[i] = val\n\t }\n\t } else {\n\t var bytes = Buffer.isBuffer(val)\n\t ? val\n\t : utf8ToBytes(new Buffer(val, encoding).toString())\n\t var len = bytes.length\n\t for (i = 0; i < end - start; ++i) {\n\t this[i + start] = bytes[i % len]\n\t }\n\t }\n\t\n\t return this\n\t}\n\t\n\t// HELPER FUNCTIONS\n\t// ================\n\t\n\tvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\t\n\tfunction base64clean (str) {\n\t // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\t str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n\t // Node converts strings with length < 2 to ''\n\t if (str.length < 2) return ''\n\t // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\t while (str.length % 4 !== 0) {\n\t str = str + '='\n\t }\n\t return str\n\t}\n\t\n\tfunction stringtrim (str) {\n\t if (str.trim) return str.trim()\n\t return str.replace(/^\\s+|\\s+$/g, '')\n\t}\n\t\n\tfunction toHex (n) {\n\t if (n < 16) return '0' + n.toString(16)\n\t return n.toString(16)\n\t}\n\t\n\tfunction utf8ToBytes (string, units) {\n\t units = units || Infinity\n\t var codePoint\n\t var length = string.length\n\t var leadSurrogate = null\n\t var bytes = []\n\t\n\t for (var i = 0; i < length; ++i) {\n\t codePoint = string.charCodeAt(i)\n\t\n\t // is surrogate component\n\t if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t // last char was a lead\n\t if (!leadSurrogate) {\n\t // no lead yet\n\t if (codePoint > 0xDBFF) {\n\t // unexpected trail\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t continue\n\t } else if (i + 1 === length) {\n\t // unpaired lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t continue\n\t }\n\t\n\t // valid lead\n\t leadSurrogate = codePoint\n\t\n\t continue\n\t }\n\t\n\t // 2 leads in a row\n\t if (codePoint < 0xDC00) {\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t leadSurrogate = codePoint\n\t continue\n\t }\n\t\n\t // valid surrogate pair\n\t codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n\t } else if (leadSurrogate) {\n\t // valid bmp char, but last char was a lead\n\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n\t }\n\t\n\t leadSurrogate = null\n\t\n\t // encode utf8\n\t if (codePoint < 0x80) {\n\t if ((units -= 1) < 0) break\n\t bytes.push(codePoint)\n\t } else if (codePoint < 0x800) {\n\t if ((units -= 2) < 0) break\n\t bytes.push(\n\t codePoint >> 0x6 | 0xC0,\n\t codePoint & 0x3F | 0x80\n\t )\n\t } else if (codePoint < 0x10000) {\n\t if ((units -= 3) < 0) break\n\t bytes.push(\n\t codePoint >> 0xC | 0xE0,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t )\n\t } else if (codePoint < 0x110000) {\n\t if ((units -= 4) < 0) break\n\t bytes.push(\n\t codePoint >> 0x12 | 0xF0,\n\t codePoint >> 0xC & 0x3F | 0x80,\n\t codePoint >> 0x6 & 0x3F | 0x80,\n\t codePoint & 0x3F | 0x80\n\t )\n\t } else {\n\t throw new Error('Invalid code point')\n\t }\n\t }\n\t\n\t return bytes\n\t}\n\t\n\tfunction asciiToBytes (str) {\n\t var byteArray = []\n\t for (var i = 0; i < str.length; ++i) {\n\t // Node's code seems to be doing this and not & 0x7F..\n\t byteArray.push(str.charCodeAt(i) & 0xFF)\n\t }\n\t return byteArray\n\t}\n\t\n\tfunction utf16leToBytes (str, units) {\n\t var c, hi, lo\n\t var byteArray = []\n\t for (var i = 0; i < str.length; ++i) {\n\t if ((units -= 2) < 0) break\n\t\n\t c = str.charCodeAt(i)\n\t hi = c >> 8\n\t lo = c % 256\n\t byteArray.push(lo)\n\t byteArray.push(hi)\n\t }\n\t\n\t return byteArray\n\t}\n\t\n\tfunction base64ToBytes (str) {\n\t return base64.toByteArray(base64clean(str))\n\t}\n\t\n\tfunction blitBuffer (src, dst, offset, length) {\n\t for (var i = 0; i < length; ++i) {\n\t if ((i + offset >= dst.length) || (i >= src.length)) break\n\t dst[i + offset] = src[i]\n\t }\n\t return i\n\t}\n\t\n\tfunction isnan (val) {\n\t return val !== val // eslint-disable-line no-self-compare\n\t}\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2).Buffer, (function() { return this; }())))\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\t'use strict'\n\t\n\texports.byteLength = byteLength\n\texports.toByteArray = toByteArray\n\texports.fromByteArray = fromByteArray\n\t\n\tvar lookup = []\n\tvar revLookup = []\n\tvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\t\n\tvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n\tfor (var i = 0, len = code.length; i < len; ++i) {\n\t lookup[i] = code[i]\n\t revLookup[code.charCodeAt(i)] = i\n\t}\n\t\n\trevLookup['-'.charCodeAt(0)] = 62\n\trevLookup['_'.charCodeAt(0)] = 63\n\t\n\tfunction placeHoldersCount (b64) {\n\t var len = b64.length\n\t if (len % 4 > 0) {\n\t throw new Error('Invalid string. Length must be a multiple of 4')\n\t }\n\t\n\t // the number of equal signs (place holders)\n\t // if there are two placeholders, than the two characters before it\n\t // represent one byte\n\t // if there is only one, then the three characters before it represent 2 bytes\n\t // this is just a cheap hack to not do indexOf twice\n\t return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n\t}\n\t\n\tfunction byteLength (b64) {\n\t // base64 is 4/3 + up to two characters of the original data\n\t return b64.length * 3 / 4 - placeHoldersCount(b64)\n\t}\n\t\n\tfunction toByteArray (b64) {\n\t var i, j, l, tmp, placeHolders, arr\n\t var len = b64.length\n\t placeHolders = placeHoldersCount(b64)\n\t\n\t arr = new Arr(len * 3 / 4 - placeHolders)\n\t\n\t // if there are placeholders, only get up to the last complete 4 chars\n\t l = placeHolders > 0 ? len - 4 : len\n\t\n\t var L = 0\n\t\n\t for (i = 0, j = 0; i < l; i += 4, j += 3) {\n\t tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n\t arr[L++] = (tmp >> 16) & 0xFF\n\t arr[L++] = (tmp >> 8) & 0xFF\n\t arr[L++] = tmp & 0xFF\n\t }\n\t\n\t if (placeHolders === 2) {\n\t tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n\t arr[L++] = tmp & 0xFF\n\t } else if (placeHolders === 1) {\n\t tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n\t arr[L++] = (tmp >> 8) & 0xFF\n\t arr[L++] = tmp & 0xFF\n\t }\n\t\n\t return arr\n\t}\n\t\n\tfunction tripletToBase64 (num) {\n\t return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n\t}\n\t\n\tfunction encodeChunk (uint8, start, end) {\n\t var tmp\n\t var output = []\n\t for (var i = start; i < end; i += 3) {\n\t tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n\t output.push(tripletToBase64(tmp))\n\t }\n\t return output.join('')\n\t}\n\t\n\tfunction fromByteArray (uint8) {\n\t var tmp\n\t var len = uint8.length\n\t var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n\t var output = ''\n\t var parts = []\n\t var maxChunkLength = 16383 // must be multiple of 3\n\t\n\t // go through the array every three bytes, we'll deal with trailing stuff later\n\t for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n\t parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n\t }\n\t\n\t // pad the end with zeros, but make sure to not forget the extra bytes\n\t if (extraBytes === 1) {\n\t tmp = uint8[len - 1]\n\t output += lookup[tmp >> 2]\n\t output += lookup[(tmp << 4) & 0x3F]\n\t output += '=='\n\t } else if (extraBytes === 2) {\n\t tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n\t output += lookup[tmp >> 10]\n\t output += lookup[(tmp >> 4) & 0x3F]\n\t output += lookup[(tmp << 2) & 0x3F]\n\t output += '='\n\t }\n\t\n\t parts.push(output)\n\t\n\t return parts.join('')\n\t}\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\texports.read = function (buffer, offset, isLE, mLen, nBytes) {\n\t var e, m\n\t var eLen = nBytes * 8 - mLen - 1\n\t var eMax = (1 << eLen) - 1\n\t var eBias = eMax >> 1\n\t var nBits = -7\n\t var i = isLE ? (nBytes - 1) : 0\n\t var d = isLE ? -1 : 1\n\t var s = buffer[offset + i]\n\t\n\t i += d\n\t\n\t e = s & ((1 << (-nBits)) - 1)\n\t s >>= (-nBits)\n\t nBits += eLen\n\t for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\t\n\t m = e & ((1 << (-nBits)) - 1)\n\t e >>= (-nBits)\n\t nBits += mLen\n\t for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\t\n\t if (e === 0) {\n\t e = 1 - eBias\n\t } else if (e === eMax) {\n\t return m ? NaN : ((s ? -1 : 1) * Infinity)\n\t } else {\n\t m = m + Math.pow(2, mLen)\n\t e = e - eBias\n\t }\n\t return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n\t}\n\t\n\texports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n\t var e, m, c\n\t var eLen = nBytes * 8 - mLen - 1\n\t var eMax = (1 << eLen) - 1\n\t var eBias = eMax >> 1\n\t var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n\t var i = isLE ? 0 : (nBytes - 1)\n\t var d = isLE ? 1 : -1\n\t var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\t\n\t value = Math.abs(value)\n\t\n\t if (isNaN(value) || value === Infinity) {\n\t m = isNaN(value) ? 1 : 0\n\t e = eMax\n\t } else {\n\t e = Math.floor(Math.log(value) / Math.LN2)\n\t if (value * (c = Math.pow(2, -e)) < 1) {\n\t e--\n\t c *= 2\n\t }\n\t if (e + eBias >= 1) {\n\t value += rt / c\n\t } else {\n\t value += rt * Math.pow(2, 1 - eBias)\n\t }\n\t if (value * c >= 2) {\n\t e++\n\t c /= 2\n\t }\n\t\n\t if (e + eBias >= eMax) {\n\t m = 0\n\t e = eMax\n\t } else if (e + eBias >= 1) {\n\t m = (value * c - 1) * Math.pow(2, mLen)\n\t e = e + eBias\n\t } else {\n\t m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n\t e = 0\n\t }\n\t }\n\t\n\t for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\t\n\t e = (e << mLen) | m\n\t eLen += mLen\n\t for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\t\n\t buffer[offset + i - d] |= s * 128\n\t}\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports) {\n\n\tvar toString = {}.toString;\n\t\n\tmodule.exports = Array.isArray || function (arr) {\n\t return toString.call(arr) == '[object Array]';\n\t};\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(setImmediate, clearImmediate) {var nextTick = __webpack_require__(7).nextTick;\n\tvar apply = Function.prototype.apply;\n\tvar slice = Array.prototype.slice;\n\tvar immediateIds = {};\n\tvar nextImmediateId = 0;\n\t\n\t// DOM APIs, for completeness\n\t\n\texports.setTimeout = function() {\n\t return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n\t};\n\texports.setInterval = function() {\n\t return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n\t};\n\texports.clearTimeout =\n\texports.clearInterval = function(timeout) { timeout.close(); };\n\t\n\tfunction Timeout(id, clearFn) {\n\t this._id = id;\n\t this._clearFn = clearFn;\n\t}\n\tTimeout.prototype.unref = Timeout.prototype.ref = function() {};\n\tTimeout.prototype.close = function() {\n\t this._clearFn.call(window, this._id);\n\t};\n\t\n\t// Does not start the time, just sets up the members needed.\n\texports.enroll = function(item, msecs) {\n\t clearTimeout(item._idleTimeoutId);\n\t item._idleTimeout = msecs;\n\t};\n\t\n\texports.unenroll = function(item) {\n\t clearTimeout(item._idleTimeoutId);\n\t item._idleTimeout = -1;\n\t};\n\t\n\texports._unrefActive = exports.active = function(item) {\n\t clearTimeout(item._idleTimeoutId);\n\t\n\t var msecs = item._idleTimeout;\n\t if (msecs >= 0) {\n\t item._idleTimeoutId = setTimeout(function onTimeout() {\n\t if (item._onTimeout)\n\t item._onTimeout();\n\t }, msecs);\n\t }\n\t};\n\t\n\t// That's not how node.js implements it but the exposed api is the same.\n\texports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n\t var id = nextImmediateId++;\n\t var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\t\n\t immediateIds[id] = true;\n\t\n\t nextTick(function onNextTick() {\n\t if (immediateIds[id]) {\n\t // fn.call() is faster so we optimize for the common use-case\n\t // @see http://jsperf.com/call-apply-segu\n\t if (args) {\n\t fn.apply(null, args);\n\t } else {\n\t fn.call(null);\n\t }\n\t // Prevent ids from leaking\n\t exports.clearImmediate(id);\n\t }\n\t });\n\t\n\t return id;\n\t};\n\t\n\texports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n\t delete immediateIds[id];\n\t};\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(6).setImmediate, __webpack_require__(6).clearImmediate))\n\n/***/ },\n/* 7 */\n/***/ function(module, exports) {\n\n\t// shim for using process in browser\n\tvar process = module.exports = {};\n\t\n\t// cached from whatever global is present so that test runners that stub it\n\t// don't break things. But we need to wrap it in a try catch in case it is\n\t// wrapped in strict mode code which doesn't define any globals. It's inside a\n\t// function because try/catches deoptimize in certain engines.\n\t\n\tvar cachedSetTimeout;\n\tvar cachedClearTimeout;\n\t\n\tfunction defaultSetTimout() {\n\t throw new Error('setTimeout has not been defined');\n\t}\n\tfunction defaultClearTimeout () {\n\t throw new Error('clearTimeout has not been defined');\n\t}\n\t(function () {\n\t try {\n\t if (typeof setTimeout === 'function') {\n\t cachedSetTimeout = setTimeout;\n\t } else {\n\t cachedSetTimeout = defaultSetTimout;\n\t }\n\t } catch (e) {\n\t cachedSetTimeout = defaultSetTimout;\n\t }\n\t try {\n\t if (typeof clearTimeout === 'function') {\n\t cachedClearTimeout = clearTimeout;\n\t } else {\n\t cachedClearTimeout = defaultClearTimeout;\n\t }\n\t } catch (e) {\n\t cachedClearTimeout = defaultClearTimeout;\n\t }\n\t} ())\n\tfunction runTimeout(fun) {\n\t if (cachedSetTimeout === setTimeout) {\n\t //normal enviroments in sane situations\n\t return setTimeout(fun, 0);\n\t }\n\t // if setTimeout wasn't available but was latter defined\n\t if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n\t cachedSetTimeout = setTimeout;\n\t return setTimeout(fun, 0);\n\t }\n\t try {\n\t // when when somebody has screwed with setTimeout but no I.E. maddness\n\t return cachedSetTimeout(fun, 0);\n\t } catch(e){\n\t try {\n\t // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n\t return cachedSetTimeout.call(null, fun, 0);\n\t } catch(e){\n\t // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n\t return cachedSetTimeout.call(this, fun, 0);\n\t }\n\t }\n\t\n\t\n\t}\n\tfunction runClearTimeout(marker) {\n\t if (cachedClearTimeout === clearTimeout) {\n\t //normal enviroments in sane situations\n\t return clearTimeout(marker);\n\t }\n\t // if clearTimeout wasn't available but was latter defined\n\t if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n\t cachedClearTimeout = clearTimeout;\n\t return clearTimeout(marker);\n\t }\n\t try {\n\t // when when somebody has screwed with setTimeout but no I.E. maddness\n\t return cachedClearTimeout(marker);\n\t } catch (e){\n\t try {\n\t // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n\t return cachedClearTimeout.call(null, marker);\n\t } catch (e){\n\t // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n\t // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n\t return cachedClearTimeout.call(this, marker);\n\t }\n\t }\n\t\n\t\n\t\n\t}\n\tvar queue = [];\n\tvar draining = false;\n\tvar currentQueue;\n\tvar queueIndex = -1;\n\t\n\tfunction cleanUpNextTick() {\n\t if (!draining || !currentQueue) {\n\t return;\n\t }\n\t draining = false;\n\t if (currentQueue.length) {\n\t queue = currentQueue.concat(queue);\n\t } else {\n\t queueIndex = -1;\n\t }\n\t if (queue.length) {\n\t drainQueue();\n\t }\n\t}\n\t\n\tfunction drainQueue() {\n\t if (draining) {\n\t return;\n\t }\n\t var timeout = runTimeout(cleanUpNextTick);\n\t draining = true;\n\t\n\t var len = queue.length;\n\t while(len) {\n\t currentQueue = queue;\n\t queue = [];\n\t while (++queueIndex < len) {\n\t if (currentQueue) {\n\t currentQueue[queueIndex].run();\n\t }\n\t }\n\t queueIndex = -1;\n\t len = queue.length;\n\t }\n\t currentQueue = null;\n\t draining = false;\n\t runClearTimeout(timeout);\n\t}\n\t\n\tprocess.nextTick = function (fun) {\n\t var args = new Array(arguments.length - 1);\n\t if (arguments.length > 1) {\n\t for (var i = 1; i < arguments.length; i++) {\n\t args[i - 1] = arguments[i];\n\t }\n\t }\n\t queue.push(new Item(fun, args));\n\t if (queue.length === 1 && !draining) {\n\t runTimeout(drainQueue);\n\t }\n\t};\n\t\n\t// v8 likes predictible objects\n\tfunction Item(fun, array) {\n\t this.fun = fun;\n\t this.array = array;\n\t}\n\tItem.prototype.run = function () {\n\t this.fun.apply(null, this.array);\n\t};\n\tprocess.title = 'browser';\n\tprocess.browser = true;\n\tprocess.env = {};\n\tprocess.argv = [];\n\tprocess.version = ''; // empty string to avoid regexp issues\n\tprocess.versions = {};\n\t\n\tfunction noop() {}\n\t\n\tprocess.on = noop;\n\tprocess.addListener = noop;\n\tprocess.once = noop;\n\tprocess.off = noop;\n\tprocess.removeListener = noop;\n\tprocess.removeAllListeners = noop;\n\tprocess.emit = noop;\n\t\n\tprocess.binding = function (name) {\n\t throw new Error('process.binding is not supported');\n\t};\n\t\n\tprocess.cwd = function () { return '/' };\n\tprocess.chdir = function (dir) {\n\t throw new Error('process.chdir is not supported');\n\t};\n\tprocess.umask = function() { return 0; };\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {'use strict';\n\t\n\tvar util = __webpack_require__(9);\n\tvar EventEmitter = __webpack_require__(12).EventEmitter;\n\t\n\tfunction WebSocketProxy(url) {\n\t\tvar self = this;\n\t\tEventEmitter.call(this);\n\t\tthis.sock = new WebSocket(url);\n\t\tthis.sock.addEventListener('open', function(e) {\n\t\t\tself.emit('connect');\n\t\t});\n\t\tthis.sock.addEventListener('message', function(e) {\n\t\t\tself.emit('data', new Buffer(e.data));\n\t\t});\n\t\tthis.sock.addEventListener('error', function(e) {\n\t\t\tself.emit('error', e);\n\t\t});\n\t\tthis.sock.addEventListener('close', function(e) {\n\t\t\tself.emit('close');\n\t\t});\n\t}\n\tutil.inherits(WebSocketProxy, EventEmitter);\n\t\n\tWebSocketProxy.prototype.end = function() {\n\t\tthis.destroy();\n\t}\n\t\n\tWebSocketProxy.prototype.destroy = function() {\n\t\tif (\n\t\t\tthis.sock.readyState === WebSocket.CONNECTING ||\n\t\t\tthis.sock.readyState === WebSocket.OPEN\n\t\t) {\n\t\t\tthis.sock.close();\n\t\t}\n\t}\n\t\n\tWebSocketProxy.prototype.write = function(data) {\n\t\tif (this.sock.readyState === WebSocket.OPEN) {\n\t\t\tthis.sock.send(data);\n\t\t}\n\t}\n\t\n\tWebSocketProxy.prototype.pause = function() {\n\t\tconsole.warn('WebSocketProxy stream pause/resume is not supported yet.');\n\t}\n\t\n\tWebSocketProxy.prototype.resume = function() {}\n\t\n\texports.createConnection = function(url) {\n\t\t// The url is rebuilt to avoid including the auth credentials.\n\t\treturn new WebSocketProxy(url.format({\n\t\t\tprotocol: url.protocol,\n\t\t\tslashes: url.slashes,\n\t\t\thost: url.host,\n\t\t\thostname: url.hostname,\n\t\t\tport: url.port,\n\t\t\tpathname: url.pathname,\n\t\t\tsearch: url.search,\n\t\t\tpath: url.path,\n\t\t\tquery: url.query,\n\t\t\thash: url.hash\n\t\t}));\n\t}\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2).Buffer))\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\t\n\tvar formatRegExp = /%[sdj%]/g;\n\texports.format = function(f) {\n\t if (!isString(f)) {\n\t var objects = [];\n\t for (var i = 0; i < arguments.length; i++) {\n\t objects.push(inspect(arguments[i]));\n\t }\n\t return objects.join(' ');\n\t }\n\t\n\t var i = 1;\n\t var args = arguments;\n\t var len = args.length;\n\t var str = String(f).replace(formatRegExp, function(x) {\n\t if (x === '%%') return '%';\n\t if (i >= len) return x;\n\t switch (x) {\n\t case '%s': return String(args[i++]);\n\t case '%d': return Number(args[i++]);\n\t case '%j':\n\t try {\n\t return JSON.stringify(args[i++]);\n\t } catch (_) {\n\t return '[Circular]';\n\t }\n\t default:\n\t return x;\n\t }\n\t });\n\t for (var x = args[i]; i < len; x = args[++i]) {\n\t if (isNull(x) || !isObject(x)) {\n\t str += ' ' + x;\n\t } else {\n\t str += ' ' + inspect(x);\n\t }\n\t }\n\t return str;\n\t};\n\t\n\t\n\t// Mark that a method should not be used.\n\t// Returns a modified function which warns once by default.\n\t// If --no-deprecation is set, then it is a no-op.\n\texports.deprecate = function(fn, msg) {\n\t // Allow for deprecating things in the process of starting up.\n\t if (isUndefined(global.process)) {\n\t return function() {\n\t return exports.deprecate(fn, msg).apply(this, arguments);\n\t };\n\t }\n\t\n\t if (process.noDeprecation === true) {\n\t return fn;\n\t }\n\t\n\t var warned = false;\n\t function deprecated() {\n\t if (!warned) {\n\t if (process.throwDeprecation) {\n\t throw new Error(msg);\n\t } else if (process.traceDeprecation) {\n\t console.trace(msg);\n\t } else {\n\t console.error(msg);\n\t }\n\t warned = true;\n\t }\n\t return fn.apply(this, arguments);\n\t }\n\t\n\t return deprecated;\n\t};\n\t\n\t\n\tvar debugs = {};\n\tvar debugEnviron;\n\texports.debuglog = function(set) {\n\t if (isUndefined(debugEnviron))\n\t debugEnviron = process.env.NODE_DEBUG || '';\n\t set = set.toUpperCase();\n\t if (!debugs[set]) {\n\t if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n\t var pid = process.pid;\n\t debugs[set] = function() {\n\t var msg = exports.format.apply(exports, arguments);\n\t console.error('%s %d: %s', set, pid, msg);\n\t };\n\t } else {\n\t debugs[set] = function() {};\n\t }\n\t }\n\t return debugs[set];\n\t};\n\t\n\t\n\t/**\n\t * Echos the value of a value. Trys to print the value out\n\t * in the best way possible given the different types.\n\t *\n\t * @param {Object} obj The object to print out.\n\t * @param {Object} opts Optional options object that alters the output.\n\t */\n\t/* legacy: obj, showHidden, depth, colors*/\n\tfunction inspect(obj, opts) {\n\t // default options\n\t var ctx = {\n\t seen: [],\n\t stylize: stylizeNoColor\n\t };\n\t // legacy...\n\t if (arguments.length >= 3) ctx.depth = arguments[2];\n\t if (arguments.length >= 4) ctx.colors = arguments[3];\n\t if (isBoolean(opts)) {\n\t // legacy...\n\t ctx.showHidden = opts;\n\t } else if (opts) {\n\t // got an \"options\" object\n\t exports._extend(ctx, opts);\n\t }\n\t // set default options\n\t if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n\t if (isUndefined(ctx.depth)) ctx.depth = 2;\n\t if (isUndefined(ctx.colors)) ctx.colors = false;\n\t if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n\t if (ctx.colors) ctx.stylize = stylizeWithColor;\n\t return formatValue(ctx, obj, ctx.depth);\n\t}\n\texports.inspect = inspect;\n\t\n\t\n\t// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\n\tinspect.colors = {\n\t 'bold' : [1, 22],\n\t 'italic' : [3, 23],\n\t 'underline' : [4, 24],\n\t 'inverse' : [7, 27],\n\t 'white' : [37, 39],\n\t 'grey' : [90, 39],\n\t 'black' : [30, 39],\n\t 'blue' : [34, 39],\n\t 'cyan' : [36, 39],\n\t 'green' : [32, 39],\n\t 'magenta' : [35, 39],\n\t 'red' : [31, 39],\n\t 'yellow' : [33, 39]\n\t};\n\t\n\t// Don't use 'blue' not visible on cmd.exe\n\tinspect.styles = {\n\t 'special': 'cyan',\n\t 'number': 'yellow',\n\t 'boolean': 'yellow',\n\t 'undefined': 'grey',\n\t 'null': 'bold',\n\t 'string': 'green',\n\t 'date': 'magenta',\n\t // \"name\": intentionally not styling\n\t 'regexp': 'red'\n\t};\n\t\n\t\n\tfunction stylizeWithColor(str, styleType) {\n\t var style = inspect.styles[styleType];\n\t\n\t if (style) {\n\t return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n\t '\\u001b[' + inspect.colors[style][1] + 'm';\n\t } else {\n\t return str;\n\t }\n\t}\n\t\n\t\n\tfunction stylizeNoColor(str, styleType) {\n\t return str;\n\t}\n\t\n\t\n\tfunction arrayToHash(array) {\n\t var hash = {};\n\t\n\t array.forEach(function(val, idx) {\n\t hash[val] = true;\n\t });\n\t\n\t return hash;\n\t}\n\t\n\t\n\tfunction formatValue(ctx, value, recurseTimes) {\n\t // Provide a hook for user-specified inspect functions.\n\t // Check that value is an object with an inspect function on it\n\t if (ctx.customInspect &&\n\t value &&\n\t isFunction(value.inspect) &&\n\t // Filter out the util module, it's inspect function is special\n\t value.inspect !== exports.inspect &&\n\t // Also filter out any prototype objects using the circular check.\n\t !(value.constructor && value.constructor.prototype === value)) {\n\t var ret = value.inspect(recurseTimes, ctx);\n\t if (!isString(ret)) {\n\t ret = formatValue(ctx, ret, recurseTimes);\n\t }\n\t return ret;\n\t }\n\t\n\t // Primitive types cannot have properties\n\t var primitive = formatPrimitive(ctx, value);\n\t if (primitive) {\n\t return primitive;\n\t }\n\t\n\t // Look up the keys of the object.\n\t var keys = Object.keys(value);\n\t var visibleKeys = arrayToHash(keys);\n\t\n\t if (ctx.showHidden) {\n\t keys = Object.getOwnPropertyNames(value);\n\t }\n\t\n\t // IE doesn't make error fields non-enumerable\n\t // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n\t if (isError(value)\n\t && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n\t return formatError(value);\n\t }\n\t\n\t // Some type of object without properties can be shortcutted.\n\t if (keys.length === 0) {\n\t if (isFunction(value)) {\n\t var name = value.name ? ': ' + value.name : '';\n\t return ctx.stylize('[Function' + name + ']', 'special');\n\t }\n\t if (isRegExp(value)) {\n\t return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n\t }\n\t if (isDate(value)) {\n\t return ctx.stylize(Date.prototype.toString.call(value), 'date');\n\t }\n\t if (isError(value)) {\n\t return formatError(value);\n\t }\n\t }\n\t\n\t var base = '', array = false, braces = ['{', '}'];\n\t\n\t // Make Array say that they are Array\n\t if (isArray(value)) {\n\t array = true;\n\t braces = ['[', ']'];\n\t }\n\t\n\t // Make functions say that they are functions\n\t if (isFunction(value)) {\n\t var n = value.name ? ': ' + value.name : '';\n\t base = ' [Function' + n + ']';\n\t }\n\t\n\t // Make RegExps say that they are RegExps\n\t if (isRegExp(value)) {\n\t base = ' ' + RegExp.prototype.toString.call(value);\n\t }\n\t\n\t // Make dates with properties first say the date\n\t if (isDate(value)) {\n\t base = ' ' + Date.prototype.toUTCString.call(value);\n\t }\n\t\n\t // Make error with message first say the error\n\t if (isError(value)) {\n\t base = ' ' + formatError(value);\n\t }\n\t\n\t if (keys.length === 0 && (!array || value.length == 0)) {\n\t return braces[0] + base + braces[1];\n\t }\n\t\n\t if (recurseTimes < 0) {\n\t if (isRegExp(value)) {\n\t return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n\t } else {\n\t return ctx.stylize('[Object]', 'special');\n\t }\n\t }\n\t\n\t ctx.seen.push(value);\n\t\n\t var output;\n\t if (array) {\n\t output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n\t } else {\n\t output = keys.map(function(key) {\n\t return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n\t });\n\t }\n\t\n\t ctx.seen.pop();\n\t\n\t return reduceToSingleString(output, base, braces);\n\t}\n\t\n\t\n\tfunction formatPrimitive(ctx, value) {\n\t if (isUndefined(value))\n\t return ctx.stylize('undefined', 'undefined');\n\t if (isString(value)) {\n\t var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n\t .replace(/'/g, \"\\\\'\")\n\t .replace(/\\\\\"/g, '\"') + '\\'';\n\t return ctx.stylize(simple, 'string');\n\t }\n\t if (isNumber(value))\n\t return ctx.stylize('' + value, 'number');\n\t if (isBoolean(value))\n\t return ctx.stylize('' + value, 'boolean');\n\t // For some reason typeof null is \"object\", so special case here.\n\t if (isNull(value))\n\t return ctx.stylize('null', 'null');\n\t}\n\t\n\t\n\tfunction formatError(value) {\n\t return '[' + Error.prototype.toString.call(value) + ']';\n\t}\n\t\n\t\n\tfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n\t var output = [];\n\t for (var i = 0, l = value.length; i < l; ++i) {\n\t if (hasOwnProperty(value, String(i))) {\n\t output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n\t String(i), true));\n\t } else {\n\t output.push('');\n\t }\n\t }\n\t keys.forEach(function(key) {\n\t if (!key.match(/^\\d+$/)) {\n\t output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n\t key, true));\n\t }\n\t });\n\t return output;\n\t}\n\t\n\t\n\tfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n\t var name, str, desc;\n\t desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n\t if (desc.get) {\n\t if (desc.set) {\n\t str = ctx.stylize('[Getter/Setter]', 'special');\n\t } else {\n\t str = ctx.stylize('[Getter]', 'special');\n\t }\n\t } else {\n\t if (desc.set) {\n\t str = ctx.stylize('[Setter]', 'special');\n\t }\n\t }\n\t if (!hasOwnProperty(visibleKeys, key)) {\n\t name = '[' + key + ']';\n\t }\n\t if (!str) {\n\t if (ctx.seen.indexOf(desc.value) < 0) {\n\t if (isNull(recurseTimes)) {\n\t str = formatValue(ctx, desc.value, null);\n\t } else {\n\t str = formatValue(ctx, desc.value, recurseTimes - 1);\n\t }\n\t if (str.indexOf('\\n') > -1) {\n\t if (array) {\n\t str = str.split('\\n').map(function(line) {\n\t return ' ' + line;\n\t }).join('\\n').substr(2);\n\t } else {\n\t str = '\\n' + str.split('\\n').map(function(line) {\n\t return ' ' + line;\n\t }).join('\\n');\n\t }\n\t }\n\t } else {\n\t str = ctx.stylize('[Circular]', 'special');\n\t }\n\t }\n\t if (isUndefined(name)) {\n\t if (array && key.match(/^\\d+$/)) {\n\t return str;\n\t }\n\t name = JSON.stringify('' + key);\n\t if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n\t name = name.substr(1, name.length - 2);\n\t name = ctx.stylize(name, 'name');\n\t } else {\n\t name = name.replace(/'/g, \"\\\\'\")\n\t .replace(/\\\\\"/g, '\"')\n\t .replace(/(^\"|\"$)/g, \"'\");\n\t name = ctx.stylize(name, 'string');\n\t }\n\t }\n\t\n\t return name + ': ' + str;\n\t}\n\t\n\t\n\tfunction reduceToSingleString(output, base, braces) {\n\t var numLinesEst = 0;\n\t var length = output.reduce(function(prev, cur) {\n\t numLinesEst++;\n\t if (cur.indexOf('\\n') >= 0) numLinesEst++;\n\t return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n\t }, 0);\n\t\n\t if (length > 60) {\n\t return braces[0] +\n\t (base === '' ? '' : base + '\\n ') +\n\t ' ' +\n\t output.join(',\\n ') +\n\t ' ' +\n\t braces[1];\n\t }\n\t\n\t return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n\t}\n\t\n\t\n\t// NOTE: These type checking functions intentionally don't use `instanceof`\n\t// because it is fragile and can be easily faked with `Object.create()`.\n\tfunction isArray(ar) {\n\t return Array.isArray(ar);\n\t}\n\texports.isArray = isArray;\n\t\n\tfunction isBoolean(arg) {\n\t return typeof arg === 'boolean';\n\t}\n\texports.isBoolean = isBoolean;\n\t\n\tfunction isNull(arg) {\n\t return arg === null;\n\t}\n\texports.isNull = isNull;\n\t\n\tfunction isNullOrUndefined(arg) {\n\t return arg == null;\n\t}\n\texports.isNullOrUndefined = isNullOrUndefined;\n\t\n\tfunction isNumber(arg) {\n\t return typeof arg === 'number';\n\t}\n\texports.isNumber = isNumber;\n\t\n\tfunction isString(arg) {\n\t return typeof arg === 'string';\n\t}\n\texports.isString = isString;\n\t\n\tfunction isSymbol(arg) {\n\t return typeof arg === 'symbol';\n\t}\n\texports.isSymbol = isSymbol;\n\t\n\tfunction isUndefined(arg) {\n\t return arg === void 0;\n\t}\n\texports.isUndefined = isUndefined;\n\t\n\tfunction isRegExp(re) {\n\t return isObject(re) && objectToString(re) === '[object RegExp]';\n\t}\n\texports.isRegExp = isRegExp;\n\t\n\tfunction isObject(arg) {\n\t return typeof arg === 'object' && arg !== null;\n\t}\n\texports.isObject = isObject;\n\t\n\tfunction isDate(d) {\n\t return isObject(d) && objectToString(d) === '[object Date]';\n\t}\n\texports.isDate = isDate;\n\t\n\tfunction isError(e) {\n\t return isObject(e) &&\n\t (objectToString(e) === '[object Error]' || e instanceof Error);\n\t}\n\texports.isError = isError;\n\t\n\tfunction isFunction(arg) {\n\t return typeof arg === 'function';\n\t}\n\texports.isFunction = isFunction;\n\t\n\tfunction isPrimitive(arg) {\n\t return arg === null ||\n\t typeof arg === 'boolean' ||\n\t typeof arg === 'number' ||\n\t typeof arg === 'string' ||\n\t typeof arg === 'symbol' || // ES6 symbol\n\t typeof arg === 'undefined';\n\t}\n\texports.isPrimitive = isPrimitive;\n\t\n\texports.isBuffer = __webpack_require__(10);\n\t\n\tfunction objectToString(o) {\n\t return Object.prototype.toString.call(o);\n\t}\n\t\n\t\n\tfunction pad(n) {\n\t return n < 10 ? '0' + n.toString(10) : n.toString(10);\n\t}\n\t\n\t\n\tvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n\t 'Oct', 'Nov', 'Dec'];\n\t\n\t// 26 Feb 16:19:34\n\tfunction timestamp() {\n\t var d = new Date();\n\t var time = [pad(d.getHours()),\n\t pad(d.getMinutes()),\n\t pad(d.getSeconds())].join(':');\n\t return [d.getDate(), months[d.getMonth()], time].join(' ');\n\t}\n\t\n\t\n\t// log is just a thin wrapper to console.log that prepends a timestamp\n\texports.log = function() {\n\t console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n\t};\n\t\n\t\n\t/**\n\t * Inherit the prototype methods from one constructor into another.\n\t *\n\t * The Function.prototype.inherits from lang.js rewritten as a standalone\n\t * function (not on Function.prototype). NOTE: If this file is to be loaded\n\t * during bootstrapping this function needs to be rewritten using some native\n\t * functions as prototype setup using normal JavaScript does not work as\n\t * expected during bootstrapping (see mirror.js in r114903).\n\t *\n\t * @param {function} ctor Constructor function which needs to inherit the\n\t * prototype.\n\t * @param {function} superCtor Constructor function to inherit prototype from.\n\t */\n\texports.inherits = __webpack_require__(11);\n\t\n\texports._extend = function(origin, add) {\n\t // Don't do anything if add isn't an object\n\t if (!add || !isObject(add)) return origin;\n\t\n\t var keys = Object.keys(add);\n\t var i = keys.length;\n\t while (i--) {\n\t origin[keys[i]] = add[keys[i]];\n\t }\n\t return origin;\n\t};\n\t\n\tfunction hasOwnProperty(obj, prop) {\n\t return Object.prototype.hasOwnProperty.call(obj, prop);\n\t}\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(7)))\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function isBuffer(arg) {\n\t return arg && typeof arg === 'object'\n\t && typeof arg.copy === 'function'\n\t && typeof arg.fill === 'function'\n\t && typeof arg.readUInt8 === 'function';\n\t}\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\tif (typeof Object.create === 'function') {\n\t // implementation from standard node.js 'util' module\n\t module.exports = function inherits(ctor, superCtor) {\n\t ctor.super_ = superCtor\n\t ctor.prototype = Object.create(superCtor.prototype, {\n\t constructor: {\n\t value: ctor,\n\t enumerable: false,\n\t writable: true,\n\t configurable: true\n\t }\n\t });\n\t };\n\t} else {\n\t // old school shim for old browsers\n\t module.exports = function inherits(ctor, superCtor) {\n\t ctor.super_ = superCtor\n\t var TempCtor = function () {}\n\t TempCtor.prototype = superCtor.prototype\n\t ctor.prototype = new TempCtor()\n\t ctor.prototype.constructor = ctor\n\t }\n\t}\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\t\n\tfunction EventEmitter() {\n\t this._events = this._events || {};\n\t this._maxListeners = this._maxListeners || undefined;\n\t}\n\tmodule.exports = EventEmitter;\n\t\n\t// Backwards-compat with node 0.10.x\n\tEventEmitter.EventEmitter = EventEmitter;\n\t\n\tEventEmitter.prototype._events = undefined;\n\tEventEmitter.prototype._maxListeners = undefined;\n\t\n\t// By default EventEmitters will print a warning if more than 10 listeners are\n\t// added to it. This is a useful default which helps finding memory leaks.\n\tEventEmitter.defaultMaxListeners = 10;\n\t\n\t// Obviously not all Emitters should be limited to 10. This function allows\n\t// that to be increased. Set to zero for unlimited.\n\tEventEmitter.prototype.setMaxListeners = function(n) {\n\t if (!isNumber(n) || n < 0 || isNaN(n))\n\t throw TypeError('n must be a positive number');\n\t this._maxListeners = n;\n\t return this;\n\t};\n\t\n\tEventEmitter.prototype.emit = function(type) {\n\t var er, handler, len, args, i, listeners;\n\t\n\t if (!this._events)\n\t this._events = {};\n\t\n\t // If there is no 'error' event listener then throw.\n\t if (type === 'error') {\n\t if (!this._events.error ||\n\t (isObject(this._events.error) && !this._events.error.length)) {\n\t er = arguments[1];\n\t if (er instanceof Error) {\n\t throw er; // Unhandled 'error' event\n\t } else {\n\t // At least give some kind of context to the user\n\t var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n\t err.context = er;\n\t throw err;\n\t }\n\t }\n\t }\n\t\n\t handler = this._events[type];\n\t\n\t if (isUndefined(handler))\n\t return false;\n\t\n\t if (isFunction(handler)) {\n\t switch (arguments.length) {\n\t // fast cases\n\t case 1:\n\t handler.call(this);\n\t break;\n\t case 2:\n\t handler.call(this, arguments[1]);\n\t break;\n\t case 3:\n\t handler.call(this, arguments[1], arguments[2]);\n\t break;\n\t // slower\n\t default:\n\t args = Array.prototype.slice.call(arguments, 1);\n\t handler.apply(this, args);\n\t }\n\t } else if (isObject(handler)) {\n\t args = Array.prototype.slice.call(arguments, 1);\n\t listeners = handler.slice();\n\t len = listeners.length;\n\t for (i = 0; i < len; i++)\n\t listeners[i].apply(this, args);\n\t }\n\t\n\t return true;\n\t};\n\t\n\tEventEmitter.prototype.addListener = function(type, listener) {\n\t var m;\n\t\n\t if (!isFunction(listener))\n\t throw TypeError('listener must be a function');\n\t\n\t if (!this._events)\n\t this._events = {};\n\t\n\t // To avoid recursion in the case that type === \"newListener\"! Before\n\t // adding it to the listeners, first emit \"newListener\".\n\t if (this._events.newListener)\n\t this.emit('newListener', type,\n\t isFunction(listener.listener) ?\n\t listener.listener : listener);\n\t\n\t if (!this._events[type])\n\t // Optimize the case of one listener. Don't need the extra array object.\n\t this._events[type] = listener;\n\t else if (isObject(this._events[type]))\n\t // If we've already got an array, just append.\n\t this._events[type].push(listener);\n\t else\n\t // Adding the second element, need to change to array.\n\t this._events[type] = [this._events[type], listener];\n\t\n\t // Check for listener leak\n\t if (isObject(this._events[type]) && !this._events[type].warned) {\n\t if (!isUndefined(this._maxListeners)) {\n\t m = this._maxListeners;\n\t } else {\n\t m = EventEmitter.defaultMaxListeners;\n\t }\n\t\n\t if (m && m > 0 && this._events[type].length > m) {\n\t this._events[type].warned = true;\n\t console.error('(node) warning: possible EventEmitter memory ' +\n\t 'leak detected. %d listeners added. ' +\n\t 'Use emitter.setMaxListeners() to increase limit.',\n\t this._events[type].length);\n\t if (typeof console.trace === 'function') {\n\t // not supported in IE 10\n\t console.trace();\n\t }\n\t }\n\t }\n\t\n\t return this;\n\t};\n\t\n\tEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\t\n\tEventEmitter.prototype.once = function(type, listener) {\n\t if (!isFunction(listener))\n\t throw TypeError('listener must be a function');\n\t\n\t var fired = false;\n\t\n\t function g() {\n\t this.removeListener(type, g);\n\t\n\t if (!fired) {\n\t fired = true;\n\t listener.apply(this, arguments);\n\t }\n\t }\n\t\n\t g.listener = listener;\n\t this.on(type, g);\n\t\n\t return this;\n\t};\n\t\n\t// emits a 'removeListener' event iff the listener was removed\n\tEventEmitter.prototype.removeListener = function(type, listener) {\n\t var list, position, length, i;\n\t\n\t if (!isFunction(listener))\n\t throw TypeError('listener must be a function');\n\t\n\t if (!this._events || !this._events[type])\n\t return this;\n\t\n\t list = this._events[type];\n\t length = list.length;\n\t position = -1;\n\t\n\t if (list === listener ||\n\t (isFunction(list.listener) && list.listener === listener)) {\n\t delete this._events[type];\n\t if (this._events.removeListener)\n\t this.emit('removeListener', type, listener);\n\t\n\t } else if (isObject(list)) {\n\t for (i = length; i-- > 0;) {\n\t if (list[i] === listener ||\n\t (list[i].listener && list[i].listener === listener)) {\n\t position = i;\n\t break;\n\t }\n\t }\n\t\n\t if (position < 0)\n\t return this;\n\t\n\t if (list.length === 1) {\n\t list.length = 0;\n\t delete this._events[type];\n\t } else {\n\t list.splice(position, 1);\n\t }\n\t\n\t if (this._events.removeListener)\n\t this.emit('removeListener', type, listener);\n\t }\n\t\n\t return this;\n\t};\n\t\n\tEventEmitter.prototype.removeAllListeners = function(type) {\n\t var key, listeners;\n\t\n\t if (!this._events)\n\t return this;\n\t\n\t // not listening for removeListener, no need to emit\n\t if (!this._events.removeListener) {\n\t if (arguments.length === 0)\n\t this._events = {};\n\t else if (this._events[type])\n\t delete this._events[type];\n\t return this;\n\t }\n\t\n\t // emit removeListener for all listeners on all events\n\t if (arguments.length === 0) {\n\t for (key in this._events) {\n\t if (key === 'removeListener') continue;\n\t this.removeAllListeners(key);\n\t }\n\t this.removeAllListeners('removeListener');\n\t this._events = {};\n\t return this;\n\t }\n\t\n\t listeners = this._events[type];\n\t\n\t if (isFunction(listeners)) {\n\t this.removeListener(type, listeners);\n\t } else if (listeners) {\n\t // LIFO order\n\t while (listeners.length)\n\t this.removeListener(type, listeners[listeners.length - 1]);\n\t }\n\t delete this._events[type];\n\t\n\t return this;\n\t};\n\t\n\tEventEmitter.prototype.listeners = function(type) {\n\t var ret;\n\t if (!this._events || !this._events[type])\n\t ret = [];\n\t else if (isFunction(this._events[type]))\n\t ret = [this._events[type]];\n\t else\n\t ret = this._events[type].slice();\n\t return ret;\n\t};\n\t\n\tEventEmitter.prototype.listenerCount = function(type) {\n\t if (this._events) {\n\t var evlistener = this._events[type];\n\t\n\t if (isFunction(evlistener))\n\t return 1;\n\t else if (evlistener)\n\t return evlistener.length;\n\t }\n\t return 0;\n\t};\n\t\n\tEventEmitter.listenerCount = function(emitter, type) {\n\t return emitter.listenerCount(type);\n\t};\n\t\n\tfunction isFunction(arg) {\n\t return typeof arg === 'function';\n\t}\n\t\n\tfunction isNumber(arg) {\n\t return typeof arg === 'number';\n\t}\n\t\n\tfunction isObject(arg) {\n\t return typeof arg === 'object' && arg !== null;\n\t}\n\t\n\tfunction isUndefined(arg) {\n\t return arg === void 0;\n\t}\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports) {\n\n\texports.connect = function(opts, cb) {\n\t\tthrow \"TLS is not supported in the browser. Use WSS instead.\";\n\t}\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\t\n\tvar punycode = __webpack_require__(15);\n\t\n\texports.parse = urlParse;\n\texports.resolve = urlResolve;\n\texports.resolveObject = urlResolveObject;\n\texports.format = urlFormat;\n\t\n\texports.Url = Url;\n\t\n\tfunction Url() {\n\t this.protocol = null;\n\t this.slashes = null;\n\t this.auth = null;\n\t this.host = null;\n\t this.port = null;\n\t this.hostname = null;\n\t this.hash = null;\n\t this.search = null;\n\t this.query = null;\n\t this.pathname = null;\n\t this.path = null;\n\t this.href = null;\n\t}\n\t\n\t// Reference: RFC 3986, RFC 1808, RFC 2396\n\t\n\t// define these here so at least they only have to be\n\t// compiled once on the first module load.\n\tvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n\t portPattern = /:[0-9]*$/,\n\t\n\t // RFC 2396: characters reserved for delimiting URLs.\n\t // We actually just auto-escape these.\n\t delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\t\n\t // RFC 2396: characters not allowed for various reasons.\n\t unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\t\n\t // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n\t autoEscape = ['\\''].concat(unwise),\n\t // Characters that are never ever allowed in a hostname.\n\t // Note that any invalid chars are also handled, but these\n\t // are the ones that are *expected* to be seen, so we fast-path\n\t // them.\n\t nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n\t hostEndingChars = ['/', '?', '#'],\n\t hostnameMaxLen = 255,\n\t hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/,\n\t hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/,\n\t // protocols that can allow \"unsafe\" and \"unwise\" chars.\n\t unsafeProtocol = {\n\t 'javascript': true,\n\t 'javascript:': true\n\t },\n\t // protocols that never have a hostname.\n\t hostlessProtocol = {\n\t 'javascript': true,\n\t 'javascript:': true\n\t },\n\t // protocols that always contain a // bit.\n\t slashedProtocol = {\n\t 'http': true,\n\t 'https': true,\n\t 'ftp': true,\n\t 'gopher': true,\n\t 'file': true,\n\t 'http:': true,\n\t 'https:': true,\n\t 'ftp:': true,\n\t 'gopher:': true,\n\t 'file:': true\n\t },\n\t querystring = __webpack_require__(17);\n\t\n\tfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n\t if (url && isObject(url) && url instanceof Url) return url;\n\t\n\t var u = new Url;\n\t u.parse(url, parseQueryString, slashesDenoteHost);\n\t return u;\n\t}\n\t\n\tUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n\t if (!isString(url)) {\n\t throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n\t }\n\t\n\t var rest = url;\n\t\n\t // trim before proceeding.\n\t // This is to support parse stuff like \" http://foo.com \\n\"\n\t rest = rest.trim();\n\t\n\t var proto = protocolPattern.exec(rest);\n\t if (proto) {\n\t proto = proto[0];\n\t var lowerProto = proto.toLowerCase();\n\t this.protocol = lowerProto;\n\t rest = rest.substr(proto.length);\n\t }\n\t\n\t // figure out if it's got a host\n\t // user@server is *always* interpreted as a hostname, and url\n\t // resolution will treat //foo/bar as host=foo,path=bar because that's\n\t // how the browser resolves relative URLs.\n\t if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n\t var slashes = rest.substr(0, 2) === '//';\n\t if (slashes && !(proto && hostlessProtocol[proto])) {\n\t rest = rest.substr(2);\n\t this.slashes = true;\n\t }\n\t }\n\t\n\t if (!hostlessProtocol[proto] &&\n\t (slashes || (proto && !slashedProtocol[proto]))) {\n\t\n\t // there's a hostname.\n\t // the first instance of /, ?, ;, or # ends the host.\n\t //\n\t // If there is an @ in the hostname, then non-host chars *are* allowed\n\t // to the left of the last @ sign, unless some host-ending character\n\t // comes *before* the @-sign.\n\t // URLs are obnoxious.\n\t //\n\t // ex:\n\t // http://a@b@c/ => user:a@b host:c\n\t // http://a@b?@c => user:a host:c path:/?@c\n\t\n\t // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n\t // Review our test case against browsers more comprehensively.\n\t\n\t // find the first instance of any hostEndingChars\n\t var hostEnd = -1;\n\t for (var i = 0; i < hostEndingChars.length; i++) {\n\t var hec = rest.indexOf(hostEndingChars[i]);\n\t if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n\t hostEnd = hec;\n\t }\n\t\n\t // at this point, either we have an explicit point where the\n\t // auth portion cannot go past, or the last @ char is the decider.\n\t var auth, atSign;\n\t if (hostEnd === -1) {\n\t // atSign can be anywhere.\n\t atSign = rest.lastIndexOf('@');\n\t } else {\n\t // atSign must be in auth portion.\n\t // http://a@b/c@d => host:b auth:a path:/c@d\n\t atSign = rest.lastIndexOf('@', hostEnd);\n\t }\n\t\n\t // Now we have a portion which is definitely the auth.\n\t // Pull that off.\n\t if (atSign !== -1) {\n\t auth = rest.slice(0, atSign);\n\t rest = rest.slice(atSign + 1);\n\t this.auth = decodeURIComponent(auth);\n\t }\n\t\n\t // the host is the remaining to the left of the first non-host char\n\t hostEnd = -1;\n\t for (var i = 0; i < nonHostChars.length; i++) {\n\t var hec = rest.indexOf(nonHostChars[i]);\n\t if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n\t hostEnd = hec;\n\t }\n\t // if we still have not hit it, then the entire thing is a host.\n\t if (hostEnd === -1)\n\t hostEnd = rest.length;\n\t\n\t this.host = rest.slice(0, hostEnd);\n\t rest = rest.slice(hostEnd);\n\t\n\t // pull out port.\n\t this.parseHost();\n\t\n\t // we've indicated that there is a hostname,\n\t // so even if it's empty, it has to be present.\n\t this.hostname = this.hostname || '';\n\t\n\t // if hostname begins with [ and ends with ]\n\t // assume that it's an IPv6 address.\n\t var ipv6Hostname = this.hostname[0] === '[' &&\n\t this.hostname[this.hostname.length - 1] === ']';\n\t\n\t // validate a little.\n\t if (!ipv6Hostname) {\n\t var hostparts = this.hostname.split(/\\./);\n\t for (var i = 0, l = hostparts.length; i < l; i++) {\n\t var part = hostparts[i];\n\t if (!part) continue;\n\t if (!part.match(hostnamePartPattern)) {\n\t var newpart = '';\n\t for (var j = 0, k = part.length; j < k; j++) {\n\t if (part.charCodeAt(j) > 127) {\n\t // we replace non-ASCII char with a temporary placeholder\n\t // we need this to make sure size of hostname is not\n\t // broken by replacing non-ASCII by nothing\n\t newpart += 'x';\n\t } else {\n\t newpart += part[j];\n\t }\n\t }\n\t // we test again with ASCII char only\n\t if (!newpart.match(hostnamePartPattern)) {\n\t var validParts = hostparts.slice(0, i);\n\t var notHost = hostparts.slice(i + 1);\n\t var bit = part.match(hostnamePartStart);\n\t if (bit) {\n\t validParts.push(bit[1]);\n\t notHost.unshift(bit[2]);\n\t }\n\t if (notHost.length) {\n\t rest = '/' + notHost.join('.') + rest;\n\t }\n\t this.hostname = validParts.join('.');\n\t break;\n\t }\n\t }\n\t }\n\t }\n\t\n\t if (this.hostname.length > hostnameMaxLen) {\n\t this.hostname = '';\n\t } else {\n\t // hostnames are always lower case.\n\t this.hostname = this.hostname.toLowerCase();\n\t }\n\t\n\t if (!ipv6Hostname) {\n\t // IDNA Support: Returns a puny coded representation of \"domain\".\n\t // It only converts the part of the domain name that\n\t // has non ASCII characters. I.e. it dosent matter if\n\t // you call it with a domain that already is in ASCII.\n\t var domainArray = this.hostname.split('.');\n\t var newOut = [];\n\t for (var i = 0; i < domainArray.length; ++i) {\n\t var s = domainArray[i];\n\t newOut.push(s.match(/[^A-Za-z0-9_-]/) ?\n\t 'xn--' + punycode.encode(s) : s);\n\t }\n\t this.hostname = newOut.join('.');\n\t }\n\t\n\t var p = this.port ? ':' + this.port : '';\n\t var h = this.hostname || '';\n\t this.host = h + p;\n\t this.href += this.host;\n\t\n\t // strip [ and ] from the hostname\n\t // the host field still retains them, though\n\t if (ipv6Hostname) {\n\t this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n\t if (rest[0] !== '/') {\n\t rest = '/' + rest;\n\t }\n\t }\n\t }\n\t\n\t // now rest is set to the post-host stuff.\n\t // chop off any delim chars.\n\t if (!unsafeProtocol[lowerProto]) {\n\t\n\t // First, make 100% sure that any \"autoEscape\" chars get\n\t // escaped, even if encodeURIComponent doesn't think they\n\t // need to be.\n\t for (var i = 0, l = autoEscape.length; i < l; i++) {\n\t var ae = autoEscape[i];\n\t var esc = encodeURIComponent(ae);\n\t if (esc === ae) {\n\t esc = escape(ae);\n\t }\n\t rest = rest.split(ae).join(esc);\n\t }\n\t }\n\t\n\t\n\t // chop off from the tail first.\n\t var hash = rest.indexOf('#');\n\t if (hash !== -1) {\n\t // got a fragment string.\n\t this.hash = rest.substr(hash);\n\t rest = rest.slice(0, hash);\n\t }\n\t var qm = rest.indexOf('?');\n\t if (qm !== -1) {\n\t this.search = rest.substr(qm);\n\t this.query = rest.substr(qm + 1);\n\t if (parseQueryString) {\n\t this.query = querystring.parse(this.query);\n\t }\n\t rest = rest.slice(0, qm);\n\t } else if (parseQueryString) {\n\t // no query string, but parseQueryString still requested\n\t this.search = '';\n\t this.query = {};\n\t }\n\t if (rest) this.pathname = rest;\n\t if (slashedProtocol[lowerProto] &&\n\t this.hostname && !this.pathname) {\n\t this.pathname = '/';\n\t }\n\t\n\t //to support http.request\n\t if (this.pathname || this.search) {\n\t var p = this.pathname || '';\n\t var s = this.search || '';\n\t this.path = p + s;\n\t }\n\t\n\t // finally, reconstruct the href based on what has been validated.\n\t this.href = this.format();\n\t return this;\n\t};\n\t\n\t// format a parsed object into a url string\n\tfunction urlFormat(obj) {\n\t // ensure it's an object, and not a string url.\n\t // If it's an obj, this is a no-op.\n\t // this way, you can call url_format() on strings\n\t // to clean up potentially wonky urls.\n\t if (isString(obj)) obj = urlParse(obj);\n\t if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n\t return obj.format();\n\t}\n\t\n\tUrl.prototype.format = function() {\n\t var auth = this.auth || '';\n\t if (auth) {\n\t auth = encodeURIComponent(auth);\n\t auth = auth.replace(/%3A/i, ':');\n\t auth += '@';\n\t }\n\t\n\t var protocol = this.protocol || '',\n\t pathname = this.pathname || '',\n\t hash = this.hash || '',\n\t host = false,\n\t query = '';\n\t\n\t if (this.host) {\n\t host = auth + this.host;\n\t } else if (this.hostname) {\n\t host = auth + (this.hostname.indexOf(':') === -1 ?\n\t this.hostname :\n\t '[' + this.hostname + ']');\n\t if (this.port) {\n\t host += ':' + this.port;\n\t }\n\t }\n\t\n\t if (this.query &&\n\t isObject(this.query) &&\n\t Object.keys(this.query).length) {\n\t query = querystring.stringify(this.query);\n\t }\n\t\n\t var search = this.search || (query && ('?' + query)) || '';\n\t\n\t if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\t\n\t // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n\t // unless they had them to begin with.\n\t if (this.slashes ||\n\t (!protocol || slashedProtocol[protocol]) && host !== false) {\n\t host = '//' + (host || '');\n\t if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n\t } else if (!host) {\n\t host = '';\n\t }\n\t\n\t if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n\t if (search && search.charAt(0) !== '?') search = '?' + search;\n\t\n\t pathname = pathname.replace(/[?#]/g, function(match) {\n\t return encodeURIComponent(match);\n\t });\n\t search = search.replace('#', '%23');\n\t\n\t return protocol + host + pathname + search + hash;\n\t};\n\t\n\tfunction urlResolve(source, relative) {\n\t return urlParse(source, false, true).resolve(relative);\n\t}\n\t\n\tUrl.prototype.resolve = function(relative) {\n\t return this.resolveObject(urlParse(relative, false, true)).format();\n\t};\n\t\n\tfunction urlResolveObject(source, relative) {\n\t if (!source) return relative;\n\t return urlParse(source, false, true).resolveObject(relative);\n\t}\n\t\n\tUrl.prototype.resolveObject = function(relative) {\n\t if (isString(relative)) {\n\t var rel = new Url();\n\t rel.parse(relative, false, true);\n\t relative = rel;\n\t }\n\t\n\t var result = new Url();\n\t Object.keys(this).forEach(function(k) {\n\t result[k] = this[k];\n\t }, this);\n\t\n\t // hash is always overridden, no matter what.\n\t // even href=\"\" will remove it.\n\t result.hash = relative.hash;\n\t\n\t // if the relative url is empty, then there's nothing left to do here.\n\t if (relative.href === '') {\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t // hrefs like //foo/bar always cut to the protocol.\n\t if (relative.slashes && !relative.protocol) {\n\t // take everything except the protocol from relative\n\t Object.keys(relative).forEach(function(k) {\n\t if (k !== 'protocol')\n\t result[k] = relative[k];\n\t });\n\t\n\t //urlParse appends trailing / to urls like http://www.example.com\n\t if (slashedProtocol[result.protocol] &&\n\t result.hostname && !result.pathname) {\n\t result.path = result.pathname = '/';\n\t }\n\t\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t if (relative.protocol && relative.protocol !== result.protocol) {\n\t // if it's a known url protocol, then changing\n\t // the protocol does weird things\n\t // first, if it's not file:, then we MUST have a host,\n\t // and if there was a path\n\t // to begin with, then we MUST have a path.\n\t // if it is file:, then the host is dropped,\n\t // because that's known to be hostless.\n\t // anything else is assumed to be absolute.\n\t if (!slashedProtocol[relative.protocol]) {\n\t Object.keys(relative).forEach(function(k) {\n\t result[k] = relative[k];\n\t });\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t result.protocol = relative.protocol;\n\t if (!relative.host && !hostlessProtocol[relative.protocol]) {\n\t var relPath = (relative.pathname || '').split('/');\n\t while (relPath.length && !(relative.host = relPath.shift()));\n\t if (!relative.host) relative.host = '';\n\t if (!relative.hostname) relative.hostname = '';\n\t if (relPath[0] !== '') relPath.unshift('');\n\t if (relPath.length < 2) relPath.unshift('');\n\t result.pathname = relPath.join('/');\n\t } else {\n\t result.pathname = relative.pathname;\n\t }\n\t result.search = relative.search;\n\t result.query = relative.query;\n\t result.host = relative.host || '';\n\t result.auth = relative.auth;\n\t result.hostname = relative.hostname || relative.host;\n\t result.port = relative.port;\n\t // to support http.request\n\t if (result.pathname || result.search) {\n\t var p = result.pathname || '';\n\t var s = result.search || '';\n\t result.path = p + s;\n\t }\n\t result.slashes = result.slashes || relative.slashes;\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n\t isRelAbs = (\n\t relative.host ||\n\t relative.pathname && relative.pathname.charAt(0) === '/'\n\t ),\n\t mustEndAbs = (isRelAbs || isSourceAbs ||\n\t (result.host && relative.pathname)),\n\t removeAllDots = mustEndAbs,\n\t srcPath = result.pathname && result.pathname.split('/') || [],\n\t relPath = relative.pathname && relative.pathname.split('/') || [],\n\t psychotic = result.protocol && !slashedProtocol[result.protocol];\n\t\n\t // if the url is a non-slashed url, then relative\n\t // links like ../.. should be able\n\t // to crawl up to the hostname, as well. This is strange.\n\t // result.protocol has already been set by now.\n\t // Later on, put the first path part into the host field.\n\t if (psychotic) {\n\t result.hostname = '';\n\t result.port = null;\n\t if (result.host) {\n\t if (srcPath[0] === '') srcPath[0] = result.host;\n\t else srcPath.unshift(result.host);\n\t }\n\t result.host = '';\n\t if (relative.protocol) {\n\t relative.hostname = null;\n\t relative.port = null;\n\t if (relative.host) {\n\t if (relPath[0] === '') relPath[0] = relative.host;\n\t else relPath.unshift(relative.host);\n\t }\n\t relative.host = null;\n\t }\n\t mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n\t }\n\t\n\t if (isRelAbs) {\n\t // it's absolute.\n\t result.host = (relative.host || relative.host === '') ?\n\t relative.host : result.host;\n\t result.hostname = (relative.hostname || relative.hostname === '') ?\n\t relative.hostname : result.hostname;\n\t result.search = relative.search;\n\t result.query = relative.query;\n\t srcPath = relPath;\n\t // fall through to the dot-handling below.\n\t } else if (relPath.length) {\n\t // it's relative\n\t // throw away the existing file, and take the new path instead.\n\t if (!srcPath) srcPath = [];\n\t srcPath.pop();\n\t srcPath = srcPath.concat(relPath);\n\t result.search = relative.search;\n\t result.query = relative.query;\n\t } else if (!isNullOrUndefined(relative.search)) {\n\t // just pull out the search.\n\t // like href='?foo'.\n\t // Put this after the other two cases because it simplifies the booleans\n\t if (psychotic) {\n\t result.hostname = result.host = srcPath.shift();\n\t //occationaly the auth can get stuck only in host\n\t //this especialy happens in cases like\n\t //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n\t var authInHost = result.host && result.host.indexOf('@') > 0 ?\n\t result.host.split('@') : false;\n\t if (authInHost) {\n\t result.auth = authInHost.shift();\n\t result.host = result.hostname = authInHost.shift();\n\t }\n\t }\n\t result.search = relative.search;\n\t result.query = relative.query;\n\t //to support http.request\n\t if (!isNull(result.pathname) || !isNull(result.search)) {\n\t result.path = (result.pathname ? result.pathname : '') +\n\t (result.search ? result.search : '');\n\t }\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t if (!srcPath.length) {\n\t // no path at all. easy.\n\t // we've already handled the other stuff above.\n\t result.pathname = null;\n\t //to support http.request\n\t if (result.search) {\n\t result.path = '/' + result.search;\n\t } else {\n\t result.path = null;\n\t }\n\t result.href = result.format();\n\t return result;\n\t }\n\t\n\t // if a url ENDs in . or .., then it must get a trailing slash.\n\t // however, if it ends in anything else non-slashy,\n\t // then it must NOT get a trailing slash.\n\t var last = srcPath.slice(-1)[0];\n\t var hasTrailingSlash = (\n\t (result.host || relative.host) && (last === '.' || last === '..') ||\n\t last === '');\n\t\n\t // strip single dots, resolve double dots to parent dir\n\t // if the path tries to go above the root, `up` ends up > 0\n\t var up = 0;\n\t for (var i = srcPath.length; i >= 0; i--) {\n\t last = srcPath[i];\n\t if (last == '.') {\n\t srcPath.splice(i, 1);\n\t } else if (last === '..') {\n\t srcPath.splice(i, 1);\n\t up++;\n\t } else if (up) {\n\t srcPath.splice(i, 1);\n\t up--;\n\t }\n\t }\n\t\n\t // if the path is allowed to go above the root, restore leading ..s\n\t if (!mustEndAbs && !removeAllDots) {\n\t for (; up--; up) {\n\t srcPath.unshift('..');\n\t }\n\t }\n\t\n\t if (mustEndAbs && srcPath[0] !== '' &&\n\t (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n\t srcPath.unshift('');\n\t }\n\t\n\t if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n\t srcPath.push('');\n\t }\n\t\n\t var isAbsolute = srcPath[0] === '' ||\n\t (srcPath[0] && srcPath[0].charAt(0) === '/');\n\t\n\t // put the host back\n\t if (psychotic) {\n\t result.hostname = result.host = isAbsolute ? '' :\n\t srcPath.length ? srcPath.shift() : '';\n\t //occationaly the auth can get stuck only in host\n\t //this especialy happens in cases like\n\t //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n\t var authInHost = result.host && result.host.indexOf('@') > 0 ?\n\t result.host.split('@') : false;\n\t if (authInHost) {\n\t result.auth = authInHost.shift();\n\t result.host = result.hostname = authInHost.shift();\n\t }\n\t }\n\t\n\t mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\t\n\t if (mustEndAbs && !isAbsolute) {\n\t srcPath.unshift('');\n\t }\n\t\n\t if (!srcPath.length) {\n\t result.pathname = null;\n\t result.path = null;\n\t } else {\n\t result.pathname = srcPath.join('/');\n\t }\n\t\n\t //to support request.http\n\t if (!isNull(result.pathname) || !isNull(result.search)) {\n\t result.path = (result.pathname ? result.pathname : '') +\n\t (result.search ? result.search : '');\n\t }\n\t result.auth = relative.auth || result.auth;\n\t result.slashes = result.slashes || relative.slashes;\n\t result.href = result.format();\n\t return result;\n\t};\n\t\n\tUrl.prototype.parseHost = function() {\n\t var host = this.host;\n\t var port = portPattern.exec(host);\n\t if (port) {\n\t port = port[0];\n\t if (port !== ':') {\n\t this.port = port.substr(1);\n\t }\n\t host = host.substr(0, host.length - port.length);\n\t }\n\t if (host) this.hostname = host;\n\t};\n\t\n\tfunction isString(arg) {\n\t return typeof arg === \"string\";\n\t}\n\t\n\tfunction isObject(arg) {\n\t return typeof arg === 'object' && arg !== null;\n\t}\n\t\n\tfunction isNull(arg) {\n\t return arg === null;\n\t}\n\tfunction isNullOrUndefined(arg) {\n\t return arg == null;\n\t}\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(module, global) {/*! https://mths.be/punycode v1.3.2 by @mathias */\n\t;(function(root) {\n\t\n\t\t/** Detect free variables */\n\t\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t\t!exports.nodeType && exports;\n\t\tvar freeModule = typeof module == 'object' && module &&\n\t\t\t!module.nodeType && module;\n\t\tvar freeGlobal = typeof global == 'object' && global;\n\t\tif (\n\t\t\tfreeGlobal.global === freeGlobal ||\n\t\t\tfreeGlobal.window === freeGlobal ||\n\t\t\tfreeGlobal.self === freeGlobal\n\t\t) {\n\t\t\troot = freeGlobal;\n\t\t}\n\t\n\t\t/**\n\t\t * The `punycode` object.\n\t\t * @name punycode\n\t\t * @type Object\n\t\t */\n\t\tvar punycode,\n\t\n\t\t/** Highest positive signed 32-bit float value */\n\t\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\t\n\t\t/** Bootstring parameters */\n\t\tbase = 36,\n\t\ttMin = 1,\n\t\ttMax = 26,\n\t\tskew = 38,\n\t\tdamp = 700,\n\t\tinitialBias = 72,\n\t\tinitialN = 128, // 0x80\n\t\tdelimiter = '-', // '\\x2D'\n\t\n\t\t/** Regular expressions */\n\t\tregexPunycode = /^xn--/,\n\t\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\t\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\t\n\t\t/** Error messages */\n\t\terrors = {\n\t\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t\t'invalid-input': 'Invalid input'\n\t\t},\n\t\n\t\t/** Convenience shortcuts */\n\t\tbaseMinusTMin = base - tMin,\n\t\tfloor = Math.floor,\n\t\tstringFromCharCode = String.fromCharCode,\n\t\n\t\t/** Temporary variable */\n\t\tkey;\n\t\n\t\t/*--------------------------------------------------------------------------*/\n\t\n\t\t/**\n\t\t * A generic error utility function.\n\t\t * @private\n\t\t * @param {String} type The error type.\n\t\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t\t */\n\t\tfunction error(type) {\n\t\t\tthrow RangeError(errors[type]);\n\t\t}\n\t\n\t\t/**\n\t\t * A generic `Array#map` utility function.\n\t\t * @private\n\t\t * @param {Array} array The array to iterate over.\n\t\t * @param {Function} callback The function that gets called for every array\n\t\t * item.\n\t\t * @returns {Array} A new array of values returned by the callback function.\n\t\t */\n\t\tfunction map(array, fn) {\n\t\t\tvar length = array.length;\n\t\t\tvar result = [];\n\t\t\twhile (length--) {\n\t\t\t\tresult[length] = fn(array[length]);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t\n\t\t/**\n\t\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t\t * addresses.\n\t\t * @private\n\t\t * @param {String} domain The domain name or email address.\n\t\t * @param {Function} callback The function that gets called for every\n\t\t * character.\n\t\t * @returns {Array} A new string of characters returned by the callback\n\t\t * function.\n\t\t */\n\t\tfunction mapDomain(string, fn) {\n\t\t\tvar parts = string.split('@');\n\t\t\tvar result = '';\n\t\t\tif (parts.length > 1) {\n\t\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\t\tresult = parts[0] + '@';\n\t\t\t\tstring = parts[1];\n\t\t\t}\n\t\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\t\tvar labels = string.split('.');\n\t\t\tvar encoded = map(labels, fn).join('.');\n\t\t\treturn result + encoded;\n\t\t}\n\t\n\t\t/**\n\t\t * Creates an array containing the numeric code points of each Unicode\n\t\t * character in the string. While JavaScript uses UCS-2 internally,\n\t\t * this function will convert a pair of surrogate halves (each of which\n\t\t * UCS-2 exposes as separate characters) into a single code point,\n\t\t * matching UTF-16.\n\t\t * @see `punycode.ucs2.encode`\n\t\t * @see \n\t\t * @memberOf punycode.ucs2\n\t\t * @name decode\n\t\t * @param {String} string The Unicode input string (UCS-2).\n\t\t * @returns {Array} The new array of code points.\n\t\t */\n\t\tfunction ucs2decode(string) {\n\t\t\tvar output = [],\n\t\t\t counter = 0,\n\t\t\t length = string.length,\n\t\t\t value,\n\t\t\t extra;\n\t\t\twhile (counter < length) {\n\t\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\t\toutput.push(value);\n\t\t\t\t\t\tcounter--;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\toutput.push(value);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\n\t\t/**\n\t\t * Creates a string based on an array of numeric code points.\n\t\t * @see `punycode.ucs2.decode`\n\t\t * @memberOf punycode.ucs2\n\t\t * @name encode\n\t\t * @param {Array} codePoints The array of numeric code points.\n\t\t * @returns {String} The new Unicode string (UCS-2).\n\t\t */\n\t\tfunction ucs2encode(array) {\n\t\t\treturn map(array, function(value) {\n\t\t\t\tvar output = '';\n\t\t\t\tif (value > 0xFFFF) {\n\t\t\t\t\tvalue -= 0x10000;\n\t\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t\t}\n\t\t\t\toutput += stringFromCharCode(value);\n\t\t\t\treturn output;\n\t\t\t}).join('');\n\t\t}\n\t\n\t\t/**\n\t\t * Converts a basic code point into a digit/integer.\n\t\t * @see `digitToBasic()`\n\t\t * @private\n\t\t * @param {Number} codePoint The basic numeric code point value.\n\t\t * @returns {Number} The numeric value of a basic code point (for use in\n\t\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t\t * the code point does not represent a value.\n\t\t */\n\t\tfunction basicToDigit(codePoint) {\n\t\t\tif (codePoint - 48 < 10) {\n\t\t\t\treturn codePoint - 22;\n\t\t\t}\n\t\t\tif (codePoint - 65 < 26) {\n\t\t\t\treturn codePoint - 65;\n\t\t\t}\n\t\t\tif (codePoint - 97 < 26) {\n\t\t\t\treturn codePoint - 97;\n\t\t\t}\n\t\t\treturn base;\n\t\t}\n\t\n\t\t/**\n\t\t * Converts a digit/integer into a basic code point.\n\t\t * @see `basicToDigit()`\n\t\t * @private\n\t\t * @param {Number} digit The numeric value of a basic code point.\n\t\t * @returns {Number} The basic code point whose value (when used for\n\t\t * representing integers) is `digit`, which needs to be in the range\n\t\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t\t * used; else, the lowercase form is used. The behavior is undefined\n\t\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t\t */\n\t\tfunction digitToBasic(digit, flag) {\n\t\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t\t// 26..35 map to ASCII 0..9\n\t\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t\t}\n\t\n\t\t/**\n\t\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t\t * @private\n\t\t */\n\t\tfunction adapt(delta, numPoints, firstTime) {\n\t\t\tvar k = 0;\n\t\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\t\tdelta += floor(delta / numPoints);\n\t\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t\t}\n\t\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t\t}\n\t\n\t\t/**\n\t\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t\t * symbols.\n\t\t * @memberOf punycode\n\t\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t\t * @returns {String} The resulting string of Unicode symbols.\n\t\t */\n\t\tfunction decode(input) {\n\t\t\t// Don't use UCS-2\n\t\t\tvar output = [],\n\t\t\t inputLength = input.length,\n\t\t\t out,\n\t\t\t i = 0,\n\t\t\t n = initialN,\n\t\t\t bias = initialBias,\n\t\t\t basic,\n\t\t\t j,\n\t\t\t index,\n\t\t\t oldi,\n\t\t\t w,\n\t\t\t k,\n\t\t\t digit,\n\t\t\t t,\n\t\t\t /** Cached calculation results */\n\t\t\t baseMinusT;\n\t\n\t\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t\t// the first basic code points to the output.\n\t\n\t\t\tbasic = input.lastIndexOf(delimiter);\n\t\t\tif (basic < 0) {\n\t\t\t\tbasic = 0;\n\t\t\t}\n\t\n\t\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t\t// if it's not a basic code point\n\t\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\t\terror('not-basic');\n\t\t\t\t}\n\t\t\t\toutput.push(input.charCodeAt(j));\n\t\t\t}\n\t\n\t\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t\t// points were copied; start at the beginning otherwise.\n\t\n\t\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\t\n\t\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t\t// value at the end to obtain `delta`.\n\t\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\t\n\t\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\t\terror('invalid-input');\n\t\t\t\t\t}\n\t\n\t\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\t\n\t\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\t\terror('overflow');\n\t\t\t\t\t}\n\t\n\t\t\t\t\ti += digit * w;\n\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\n\t\t\t\t\tif (digit < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\t\terror('overflow');\n\t\t\t\t\t}\n\t\n\t\t\t\t\tw *= baseMinusT;\n\t\n\t\t\t\t}\n\t\n\t\t\t\tout = output.length + 1;\n\t\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\t\n\t\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\t\n\t\t\t\tn += floor(i / out);\n\t\t\t\ti %= out;\n\t\n\t\t\t\t// Insert `n` at position `i` of the output\n\t\t\t\toutput.splice(i++, 0, n);\n\t\n\t\t\t}\n\t\n\t\t\treturn ucs2encode(output);\n\t\t}\n\t\n\t\t/**\n\t\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t\t * Punycode string of ASCII-only symbols.\n\t\t * @memberOf punycode\n\t\t * @param {String} input The string of Unicode symbols.\n\t\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t\t */\n\t\tfunction encode(input) {\n\t\t\tvar n,\n\t\t\t delta,\n\t\t\t handledCPCount,\n\t\t\t basicLength,\n\t\t\t bias,\n\t\t\t j,\n\t\t\t m,\n\t\t\t q,\n\t\t\t k,\n\t\t\t t,\n\t\t\t currentValue,\n\t\t\t output = [],\n\t\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t\t inputLength,\n\t\t\t /** Cached calculation results */\n\t\t\t handledCPCountPlusOne,\n\t\t\t baseMinusT,\n\t\t\t qMinusT;\n\t\n\t\t\t// Convert the input in UCS-2 to Unicode\n\t\t\tinput = ucs2decode(input);\n\t\n\t\t\t// Cache the length\n\t\t\tinputLength = input.length;\n\t\n\t\t\t// Initialize the state\n\t\t\tn = initialN;\n\t\t\tdelta = 0;\n\t\t\tbias = initialBias;\n\t\n\t\t\t// Handle the basic code points\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue < 0x80) {\n\t\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\thandledCPCount = basicLength = output.length;\n\t\n\t\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t\t// `basicLength` is the number of basic code points.\n\t\n\t\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\t\tif (basicLength) {\n\t\t\t\toutput.push(delimiter);\n\t\t\t}\n\t\n\t\t\t// Main encoding loop:\n\t\t\twhile (handledCPCount < inputLength) {\n\t\n\t\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t\t// larger one:\n\t\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\t\tcurrentValue = input[j];\n\t\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\t\tm = currentValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t\t// but guard against overflow\n\t\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\t\n\t\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\t\tn = m;\n\t\n\t\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\t\tcurrentValue = input[j];\n\t\n\t\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\t\terror('overflow');\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\t\tdelta = 0;\n\t\t\t\t\t\t++handledCPCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t++delta;\n\t\t\t\t++n;\n\t\n\t\t\t}\n\t\t\treturn output.join('');\n\t\t}\n\t\n\t\t/**\n\t\t * Converts a Punycode string representing a domain name or an email address\n\t\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t\t * it doesn't matter if you call it on a string that has already been\n\t\t * converted to Unicode.\n\t\t * @memberOf punycode\n\t\t * @param {String} input The Punycoded domain name or email address to\n\t\t * convert to Unicode.\n\t\t * @returns {String} The Unicode representation of the given Punycode\n\t\t * string.\n\t\t */\n\t\tfunction toUnicode(input) {\n\t\t\treturn mapDomain(input, function(string) {\n\t\t\t\treturn regexPunycode.test(string)\n\t\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t\t: string;\n\t\t\t});\n\t\t}\n\t\n\t\t/**\n\t\t * Converts a Unicode string representing a domain name or an email address to\n\t\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t\t * ASCII.\n\t\t * @memberOf punycode\n\t\t * @param {String} input The domain name or email address to convert, as a\n\t\t * Unicode string.\n\t\t * @returns {String} The Punycode representation of the given domain name or\n\t\t * email address.\n\t\t */\n\t\tfunction toASCII(input) {\n\t\t\treturn mapDomain(input, function(string) {\n\t\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t\t: string;\n\t\t\t});\n\t\t}\n\t\n\t\t/*--------------------------------------------------------------------------*/\n\t\n\t\t/** Define the public API */\n\t\tpunycode = {\n\t\t\t/**\n\t\t\t * A string representing the current Punycode.js version number.\n\t\t\t * @memberOf punycode\n\t\t\t * @type String\n\t\t\t */\n\t\t\t'version': '1.3.2',\n\t\t\t/**\n\t\t\t * An object of methods to convert from JavaScript's internal character\n\t\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t\t * @see \n\t\t\t * @memberOf punycode\n\t\t\t * @type Object\n\t\t\t */\n\t\t\t'ucs2': {\n\t\t\t\t'decode': ucs2decode,\n\t\t\t\t'encode': ucs2encode\n\t\t\t},\n\t\t\t'decode': decode,\n\t\t\t'encode': encode,\n\t\t\t'toASCII': toASCII,\n\t\t\t'toUnicode': toUnicode\n\t\t};\n\t\n\t\t/** Expose `punycode` */\n\t\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t\t// like the following:\n\t\tif (\n\t\t\ttrue\n\t\t) {\n\t\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\t\t\t\treturn punycode;\n\t\t\t}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t\t} else if (freeExports && freeModule) {\n\t\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\t\tfreeModule.exports = punycode;\n\t\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\t\tfor (key in punycode) {\n\t\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else { // in Rhino or a web browser\n\t\t\troot.punycode = punycode;\n\t\t}\n\t\n\t}(this));\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(16)(module), (function() { return this; }())))\n\n/***/ },\n/* 16 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(module) {\n\t\tif(!module.webpackPolyfill) {\n\t\t\tmodule.deprecate = function() {};\n\t\t\tmodule.paths = [];\n\t\t\t// module.parent = undefined by default\n\t\t\tmodule.children = [];\n\t\t\tmodule.webpackPolyfill = 1;\n\t\t}\n\t\treturn module;\n\t}\n\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.decode = exports.parse = __webpack_require__(18);\n\texports.encode = exports.stringify = __webpack_require__(19);\n\n\n/***/ },\n/* 18 */\n/***/ function(module, exports) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\t\n\t'use strict';\n\t\n\t// If obj.hasOwnProperty has been overridden, then calling\n\t// obj.hasOwnProperty(prop) will break.\n\t// See: https://github.com/joyent/node/issues/1707\n\tfunction hasOwnProperty(obj, prop) {\n\t return Object.prototype.hasOwnProperty.call(obj, prop);\n\t}\n\t\n\tmodule.exports = function(qs, sep, eq, options) {\n\t sep = sep || '&';\n\t eq = eq || '=';\n\t var obj = {};\n\t\n\t if (typeof qs !== 'string' || qs.length === 0) {\n\t return obj;\n\t }\n\t\n\t var regexp = /\\+/g;\n\t qs = qs.split(sep);\n\t\n\t var maxKeys = 1000;\n\t if (options && typeof options.maxKeys === 'number') {\n\t maxKeys = options.maxKeys;\n\t }\n\t\n\t var len = qs.length;\n\t // maxKeys <= 0 means that we should not limit keys count\n\t if (maxKeys > 0 && len > maxKeys) {\n\t len = maxKeys;\n\t }\n\t\n\t for (var i = 0; i < len; ++i) {\n\t var x = qs[i].replace(regexp, '%20'),\n\t idx = x.indexOf(eq),\n\t kstr, vstr, k, v;\n\t\n\t if (idx >= 0) {\n\t kstr = x.substr(0, idx);\n\t vstr = x.substr(idx + 1);\n\t } else {\n\t kstr = x;\n\t vstr = '';\n\t }\n\t\n\t k = decodeURIComponent(kstr);\n\t v = decodeURIComponent(vstr);\n\t\n\t if (!hasOwnProperty(obj, k)) {\n\t obj[k] = v;\n\t } else if (Array.isArray(obj[k])) {\n\t obj[k].push(v);\n\t } else {\n\t obj[k] = [obj[k], v];\n\t }\n\t }\n\t\n\t return obj;\n\t};\n\n\n/***/ },\n/* 19 */\n/***/ function(module, exports) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\t\n\t'use strict';\n\t\n\tvar stringifyPrimitive = function(v) {\n\t switch (typeof v) {\n\t case 'string':\n\t return v;\n\t\n\t case 'boolean':\n\t return v ? 'true' : 'false';\n\t\n\t case 'number':\n\t return isFinite(v) ? v : '';\n\t\n\t default:\n\t return '';\n\t }\n\t};\n\t\n\tmodule.exports = function(obj, sep, eq, name) {\n\t sep = sep || '&';\n\t eq = eq || '=';\n\t if (obj === null) {\n\t obj = undefined;\n\t }\n\t\n\t if (typeof obj === 'object') {\n\t return Object.keys(obj).map(function(k) {\n\t var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n\t if (Array.isArray(obj[k])) {\n\t return obj[k].map(function(v) {\n\t return ks + encodeURIComponent(stringifyPrimitive(v));\n\t }).join(sep);\n\t } else {\n\t return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n\t }\n\t }).join(sep);\n\t\n\t }\n\t\n\t if (!name) return '';\n\t return encodeURIComponent(stringifyPrimitive(name)) + eq +\n\t encodeURIComponent(stringifyPrimitive(obj));\n\t};\n\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(Buffer) {/*!\n\t * Nats\n\t * Copyright(c) 2016 Apcera Inc. All rights reserved.\n\t * MIT Licensed\n\t */\n\t\n\t/* jslint node: true */\n\t'use strict';\n\t\n\t/**\n\t * Module Dependencies\n\t */\n\t\n\tvar crypto = __webpack_require__(21);\n\t\n\t/**\n\t * Constants\n\t */\n\tvar VERSION = '0.6.8',\n\t digits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',\n\t base = 36,\n\t preLen = 12,\n\t seqLen = 10,\n\t maxSeq = 3656158440062976, // base^seqLen == 36^10\n\t minInc = 33,\n\t maxInc = 333,\n\t totalLen = preLen + seqLen;\n\t\n\texports.version = VERSION;\n\t\n\t/**\n\t * Create and initialize a nuid.\n\t *\n\t * @api private\n\t */\n\t\n\tfunction Nuid() {\n\t this.buf = new Buffer(totalLen);\n\t this.init();\n\t}\n\t\n\t/**\n\t * Initializes a nuid with a crypto random prefix,\n\t * and pseudo-random sequence and increment.\n\t *\n\t * @api private\n\t */\n\t\n\tNuid.prototype.init = function() {\n\t this.setPre();\n\t this.initSeqAndInc();\n\t this.fillSeq();\n\t};\n\t\n\t/**\n\t * Initializes the pseudo randmon sequence number and the increment range.\n\t *\n\t * @api private\n\t */\n\t\n\tNuid.prototype.initSeqAndInc = function() {\n\t this.seq = Math.floor(Math.random()*maxSeq);\n\t this.inc = Math.floor(Math.random()*(maxInc-minInc)+minInc);\n\t};\n\t\n\t/**\n\t * Sets the prefix from crypto random bytes. Converts to base36.\n\t *\n\t * @api private\n\t */\n\t\n\tNuid.prototype.setPre = function() {\n\t var cbuf = crypto.randomBytes(preLen);\n\t for (var i = 0; i < preLen; i++) {\n\t var di = cbuf[i]%base;\n\t this.buf[i] = digits.charCodeAt(di);\n\t }\n\t};\n\t\n\t/**\n\t * Fills the sequence part of the nuid as base36 from this.seq.\n\t *\n\t * @api private\n\t */\n\t\n\tNuid.prototype.fillSeq = function() {\n\t var n = this.seq;\n\t for (var i = totalLen-1; i >= preLen; i--) {\n\t this.buf[i] = digits.charCodeAt(n%base);\n\t n = Math.floor(n/base);\n\t }\n\t};\n\t\n\t/**\n\t * Returns the next nuid.\n\t *\n\t * @api private\n\t */\n\t\n\tNuid.prototype.next = function() {\n\t this.seq += this.inc;\n\t if (this.seq > maxSeq) {\n\t this.setPre();\n\t }\n\t this.initSeqAndInc();\n\t this.fillSeq();\n\t return (this.buf.toString('ascii'));\n\t};\n\t\n\t/* Global Nuid */\n\tvar g = new Nuid();\n\t\n\t/**\n\t * Resets the prefix of the global nuid, as well as the\n\t * pseudo random sequence number and increment amounts.\n\t *\n\t * @api public\n\t */\n\t\n\texports.reset = function() {\n\t g.init();\n\t};\n\t\n\t/**\n\t * Returns the next nuid from the global.\n\t *\n\t * @api public\n\t */\n\t\n\texports.next = function() {\n\t return g.next();\n\t};\n\t\n\t/**\n\t * This here to facilitate testing\n\t * @api private\n\t */\n\texports._global = g;\n\t\n\t\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2).Buffer))\n\n/***/ },\n/* 21 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar crypto = window.crypto || window.msCrypto;\n\t\n\texports.randomBytes = function(size, cb) {\n\t\tvar buf = new Uint8Array(size);\n\t\tif (size > 0) {\n\t\t\tcrypto.getRandomValues(buf);\n\t\t}\n\t\treturn buf;\n\t};\n\n\n/***/ }\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// bundle.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\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 748a10ac1347bc7acd02","window.NATS = require('./lib/nats');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./bootstrap.js\n// module id = 0\n// module chunks = 0","/*!\n * Nats\n * Copyright(c) 2012-2016 Apcera Inc. All rights reserved.\n * Copyright(c) 2011-2014 Derek Collison (derek.collison@gmail.com)\n * MIT Licensed\n */\n\n/* jslint node: true */\n'use strict';\n\n/**\n * Module Dependencies\n */\n\nvar net = require('net'),\n tls = require('tls'),\n url = require('url'),\n util = require('util'),\n events = require('events'),\n nuid = require('nuid');\n\n/**\n * Constants\n */\n\nvar VERSION = '0.6.8',\n\n DEFAULT_PORT = 4222,\n DEFAULT_PRE = 'nats://localhost:',\n DEFAULT_URI = DEFAULT_PRE + DEFAULT_PORT,\n\n MAX_CONTROL_LINE_SIZE = 512,\n\n // Parser state\n AWAITING_CONTROL = 0,\n AWAITING_MSG_PAYLOAD = 1,\n\n // Reconnect Parameters, 2 sec wait, 10 tries\n DEFAULT_RECONNECT_TIME_WAIT = 2*1000,\n DEFAULT_MAX_RECONNECT_ATTEMPTS = 10,\n\n // Protocol\n //CONTROL_LINE = /^(.*)\\r\\n/, // TODO: remove / never used\n\n MSG = /^MSG\\s+([^\\s\\r\\n]+)\\s+([^\\s\\r\\n]+)\\s+(([^\\s\\r\\n]+)[^\\S\\r\\n]+)?(\\d+)\\r\\n/i,\n OK = /^\\+OK\\s*\\r\\n/i,\n ERR = /^-ERR\\s+('.+')?\\r\\n/i,\n PING = /^PING\\r\\n/i,\n PONG = /^PONG\\r\\n/i,\n INFO = /^INFO\\s+([^\\r\\n]+)\\r\\n/i,\n SUBRE = /^SUB\\s+([^\\r\\n]+)\\r\\n/i,\n\n CR_LF = '\\r\\n',\n CR_LF_LEN = CR_LF.length,\n CR_LF_BUF = new Buffer(CR_LF),\n EMPTY = '',\n SPC = ' ',\n\n // Protocol\n //PUB = 'PUB', // TODO: remove / never used\n SUB = 'SUB',\n UNSUB = 'UNSUB',\n CONNECT = 'CONNECT',\n\n // Responses\n PING_REQUEST = 'PING' + CR_LF,\n PONG_RESPONSE = 'PONG' + CR_LF,\n\n // Errors\n BAD_SUBJECT = 'Subject must be supplied',\n BAD_MSG = 'Message can\\'t be a function',\n BAD_REPLY = 'Reply can\\'t be a function',\n CONN_CLOSED = 'Connection closed',\n BAD_JSON_MSG = 'Message should be a JSON object',\n BAD_AUTHENTICATION = 'User and Token can not both be provided',\n\n // Pedantic Mode support\n //Q_SUB = /^([^\\.\\*>\\s]+|>$|\\*)(\\.([^\\.\\*>\\s]+|>$|\\*))*$/, // TODO: remove / never used\n //Q_SUB_NO_WC = /^([^\\.\\*>\\s]+)(\\.([^\\.\\*>\\s]+))*$/, // TODO: remove / never used\n\n FLUSH_THRESHOLD = 65536;\n\n/**\n * Library Version\n */\n\nexports.version = VERSION;\n\n/**\n * Create a properly formatted inbox subject.\n *\n * @api public\n*/\n\nvar createInbox = exports.createInbox = function() {\n return (\"_INBOX.\" + nuid.next());\n};\n\n/**\n * Initialize a client with the appropriate options.\n *\n * @param {Mixed} opts\n * @api public\n */\n\nfunction Client(opts) {\n events.EventEmitter.call(this);\n this.parseOptions(opts);\n this.initState();\n this.createConnection();\n}\n\n/**\n * Connect to a nats-server and return the client.\n * Argument can be a url, or an object with a 'url'\n * property and additional options.\n *\n * @params {Mixed} opts\n *\n * @api public\n */\n\nexports.connect = function(opts) {\n return new Client(opts);\n};\n\n/**\n * Connected clients are event emitters.\n */\n\nutil.inherits(Client, events.EventEmitter);\n\n/**\n * Allow createInbox to be called on a client.\n *\n * @api public\n */\n\nClient.prototype.createInbox = createInbox;\n\nClient.prototype.assignOption = function(opts, prop, assign) {\n if (assign === undefined) {\n assign = prop;\n }\n if (opts[prop] !== undefined) {\n this.options[assign] = opts[prop];\n }\n};\n\nfunction shuffle(array) {\n for (var i = array.length - 1; i > 0; i--) {\n var j = Math.floor(Math.random() * (i + 1));\n var temp = array[i];\n array[i] = array[j];\n array[j] = temp;\n }\n return array;\n}\n\n/**\n * Parse the conctructor/connect options.\n *\n * @param {Mixed} opts\n * @api private\n */\n\nClient.prototype.parseOptions = function(opts) {\n var options = this.options = {\n 'verbose' : false,\n 'pedantic' : false,\n 'reconnect' : true,\n 'maxReconnectAttempts' : DEFAULT_MAX_RECONNECT_ATTEMPTS,\n 'reconnectTimeWait' : DEFAULT_RECONNECT_TIME_WAIT,\n 'encoding' : 'utf8',\n 'tls' : false,\n 'waitOnFirstConnect' : false,\n };\n\n if (undefined === opts) {\n options.url = DEFAULT_URI;\n } else if ('number' === typeof opts) {\n options.url = DEFAULT_PRE + opts;\n } else if ('string' === typeof opts) {\n options.url = opts;\n } else if ('object' === typeof opts) {\n if (opts.port !== undefined) {\n options.url = DEFAULT_PRE + opts.port;\n }\n // Pull out various options here\n this.assignOption(opts, 'url');\n this.assignOption(opts, 'uri', 'url');\n this.assignOption(opts, 'user');\n this.assignOption(opts, 'pass');\n this.assignOption(opts, 'token');\n this.assignOption(opts, 'password', 'pass');\n this.assignOption(opts, 'verbose');\n this.assignOption(opts, 'pedantic');\n this.assignOption(opts, 'reconnect');\n this.assignOption(opts, 'maxReconnectAttempts');\n this.assignOption(opts, 'reconnectTimeWait');\n this.assignOption(opts, 'servers');\n this.assignOption(opts, 'urls', 'servers');\n this.assignOption(opts, 'noRandomize');\n this.assignOption(opts, 'NoRandomize', 'noRandomize');\n this.assignOption(opts, 'dontRandomize', 'noRandomize');\n this.assignOption(opts, 'encoding');\n this.assignOption(opts, 'tls');\n this.assignOption(opts, 'secure', 'tls');\n this.assignOption(opts, 'name');\n this.assignOption(opts, 'client', 'name');\n this.assignOption(opts, 'yieldTime');\n this.assignOption(opts, 'waitOnFirstConnect');\n this.assignOption(opts, 'json');\n }\n\n var client = this;\n\n // Set user/pass as needed if in options.\n client.user = options.user;\n client.pass = options.pass;\n \n // Set token as needed if in options.\n client.token = options.token;\n\n // Authentication - make sure authentication is valid.\n if (client.user && client.token) {\n throw(new Error(BAD_AUTHENTICATION));\n }\n\n // Encoding - make sure its valid.\n if (Buffer.isEncoding(options.encoding)) {\n client.encoding = options.encoding;\n } else {\n throw new Error('Invalid Encoding:' + options.encoding);\n }\n // For cluster support\n client.servers = [];\n\n if (Array.isArray(options.servers)) {\n options.servers.forEach(function(server) {\n client.servers.push(new Server(url.parse(server)));\n });\n } else {\n if (undefined === options.url) {\n options.url = DEFAULT_URI;\n }\n client.servers.push(new Server(url.parse(options.url)));\n }\n\n // Randomize if needed\n if (options.noRandomize !== true) {\n shuffle(client.servers);\n }\n};\n\n/**\n * Create a new server.\n *\n * @api private\n*/\n\nfunction Server(url) {\n this.url = url;\n this.didConnect = false;\n this.reconnects = 0;\n}\n\n/**\n * Properly select the next server.\n * We rotate the server list as we go,\n * we also pull auth from urls as needed, or\n * if they were set in options use that as override.\n *\n * @api private\n*/\n\nClient.prototype.selectServer = function() {\n var client = this;\n var server = client.servers.shift();\n\n // Place in client context.\n client.currentServer = server;\n client.url = server.url;\n if ('auth' in server.url && !!server.url.auth) {\n var auth = server.url.auth.split(':');\n if (auth.length !== 1) {\n if (client.options.user === undefined) {\n client.user = auth[0];\n }\n if (client.options.pass === undefined) {\n client.pass = auth[1];\n }\n } else {\n if (client.options.token === undefined) {\n client.token = auth[0];\n }\n }\n }\n client.servers.push(server);\n};\n\n/**\n * Check for TLS configuration mismatch.\n *\n * @api private\n*/\n\nClient.prototype.checkTLSMismatch = function() {\n if (this.info.tls_required === true &&\n this.options.tls === false) {\n this.emit('error', 'Server requires a secure connection.');\n this.closeStream();\n return true;\n }\n\n if (this.info.tls_required === false &&\n this.options.tls !== false) {\n this.emit('error', 'Server does not support a secure connection.');\n this.closeStream();\n return true;\n }\n\n if (this.info.tls_verify === true &&\n this.options.tls.cert === undefined) {\n this.emit('error', 'Server requires a client certificate.');\n this.closeStream();\n return true;\n }\n return false;\n};\n\n/**\n * Callback for first flush/connect.\n *\n * @api private\n*/\n\nClient.prototype.connectCB = function() {\n var wasReconnecting = this.reconnecting;\n var event = (wasReconnecting === true) ? 'reconnect' : 'connect';\n this.reconnecting = false;\n this.reconnects = 0;\n this.wasConnected = true;\n this.currentServer.didConnect = true;\n\n this.emit(event, this);\n\n this.flushPending();\n};\n\n\n/**\n * Properly setup a stream event handlers.\n *\n * @api private\n*/\n\nClient.prototype.setupHandlers = function() {\n var client = this;\n var stream = client.stream;\n\n if (undefined === stream) {\n return;\n }\n\n stream.on('connect', function() {\n client.connected = true;\n });\n\n stream.on('close', function(hadError) {\n client.closeStream();\n client.emit('disconnect');\n if (client.closed === true ||\n client.options.reconnect === false ||\n ((client.reconnects >= client.options.maxReconnectAttempts) && client.options.maxReconnectAttempts !== -1)) {\n client.emit('close');\n } else {\n client.scheduleReconnect();\n }\n });\n\n stream.on('error', function(exception) {\n // If we were connected just return, close event will process\n if (client.wasConnected === true && client.currentServer.didConnect === true) {\n return;\n }\n\n // if the current server did not connect at all, and we in\n // general have not connected to any server, remove it from\n // this list. Unless overidden\n if (client.wasConnected === false && client.currentServer.didConnect === false) {\n // We can override this behavior with waitOnFirstConnect, which will\n // treat it like a reconnect scenario.\n if (client.options.waitOnFirstConnect) {\n\t// Pretend to move us into a reconnect state.\n\tclient.currentServer.didConnect\t= true;\n } else {\n\tclient.servers.splice(client.servers.length-1, 1);\n }\n }\n\n // Only bubble up error if we never had connected\n // to the server and we only have one.\n if (client.wasConnected === false && client.servers.length === 0) {\n client.emit('error', 'Could not connect to server: ' + exception);\n }\n client.closeStream();\n });\n\n stream.on('data', function (data) {\n // If inbound exists, concat them together. We try to avoid this for split\n // messages, so this should only really happen for a split control line.\n // Long term answer is hand rolled parser and not regexp.\n if (client.inbound) {\n client.inbound = Buffer.concat([client.inbound, data]);\n } else {\n client.inbound = data;\n }\n\n // Process the inbound queue.\n client.processInbound();\n });\n};\n\n/**\n * Send the connect command. This needs to happen after receiving the first\n * INFO message and after TLS is established if necessary.\n *\n * @api private\n*/\n\nClient.prototype.sendConnect = function() {\n // Queue the connect command.\n var cs = {\n 'lang' : 'node',\n 'version' : VERSION,\n 'verbose' : this.options.verbose,\n 'pedantic': this.options.pedantic\n };\n if (this.user !== undefined) {\n cs.user = this.user;\n cs.pass = this.pass;\n }\n if (this.token !== undefined) {\n cs.auth_token = this.token;\n }\n if (this.options.name !== undefined) {\n cs.name = this.options.name;\n }\n\n // If we enqueued requests before we received INFO from the server, or we\n // reconnected, there be other data pending, write this immediately instead\n // of adding it to the queue.\n this.stream.write(CONNECT + SPC + JSON.stringify(cs) + CR_LF);\n};\n\n/**\n * Properly setup a stream connection with proper events.\n *\n * @api private\n*/\n\nClient.prototype.createConnection = function() {\n // Commands may have been queued during reconnect. Discard everything except:\n // 1) ping requests with a pong callback\n // 2) publish requests\n //\n // Rationale: CONNECT and SUBs are written directly upon connecting, any PONG\n // response is no longer relevant, and any UNSUB will be accounted for when we\n // sync our SUBs. Without this, users of the client may miss state transitions\n // via callbacks, would have to track the client's internal connection state,\n // and may have to double buffer messages (which we are already doing) if they\n // wanted to ensure their messages reach the server.\n var pong = [];\n var pend = [];\n var pSize = 0;\n var client = this;\n if (client.pending !== null) {\n var pongIndex = 0;\n client.pending.forEach(function(cmd) {\n var cmdLen = Buffer.isBuffer(cmd) ? cmd.length : Buffer.byteLength(cmd);\n if (cmd === PING_REQUEST && client.pongs !== null && pongIndex < client.pongs.length) {\n // filter out any useless ping requests (no pong callback, nop flush)\n var p = client.pongs[pongIndex++];\n if (p !== undefined) {\n pend.push(cmd);\n pSize += cmdLen;\n pong.push(p);\n }\n } else if (cmd.length > 3 && cmd[0] == 'P' && cmd[1] == 'U' && cmd[2] == 'B') {\n pend.push(cmd);\n pSize += cmdLen;\n }\n });\n }\n this.pongs = pong;\n this.pending = pend;\n this.pSize = pSize;\n\n this.pstate = AWAITING_CONTROL;\n\n // Clear info processing.\n this.info = null;\n this.infoReceived = false;\n\n // Select a server to connect to.\n this.selectServer();\n // Create the stream.\n this.stream = net.createConnection(this.url);\n // Setup the proper handlers.\n this.setupHandlers();\n};\n\n/**\n * Initialize client state.\n *\n * @api private\n */\n\nClient.prototype.initState = function() {\n this.ssid = 1;\n this.subs = {};\n this.reconnects = 0;\n this.connected = false;\n this.wasConnected = false;\n this.reconnecting = false;\n this.server = null;\n this.pending = [];\n};\n\n/**\n * Close the connection to the server.\n *\n * @api public\n */\n\nClient.prototype.close = function() {\n this.closed = true;\n this.removeAllListeners();\n this.closeStream();\n this.ssid = -1;\n this.subs = null;\n this.pstate = -1;\n this.pongs = null;\n this.pending = null;\n this.pSize = 0;\n};\n\n/**\n * Close down the stream and clear state.\n *\n * @api private\n */\n\nClient.prototype.closeStream = function() {\n if (this.stream !== null) {\n this.stream.end();\n this.stream.destroy();\n this.stream = null;\n }\n if (this.connected === true || this.closed === true) {\n this.pongs = null;\n this.pending = null;\n this.pSize = 0;\n this.connected = false;\n }\n this.inbound = null;\n};\n\n/**\n * Flush all pending data to the server.\n *\n * @api private\n */\n\nClient.prototype.flushPending = function() {\n if (this.connected === false ||\n this.pending === null ||\n this.pending.length === 0 ||\n this.infoReceived !== true) {\n return;\n }\n\n var client = this;\n var write = function(data) {\n client.pending = [];\n client.pSize = 0;\n return client.stream.write(data);\n };\n if (!this.pBufs) {\n // All strings, fastest for now.\n return write(this.pending.join(EMPTY));\n } else {\n // We have some or all Buffers. Figure out if we can optimize.\n var allBufs = true;\n for (var i=0; i < this.pending.length; i++){\n if (!Buffer.isBuffer(this.pending[i])) {\n\tallBufs = false;\n\tbreak;\n }\n }\n // If all buffers, concat together and write once.\n if (allBufs) {\n return write(Buffer.concat(this.pending, this.pSize));\n } else {\n // We have a mix, so write each one individually.\n var pending = this.pending;\n this.pending = [];\n this.pSize = 0;\n var result = true;\n for (i=0; i < pending.length; i++){\n\t result = this.stream.write(pending[i]) && result;\n }\n return result;\n }\n }\n};\n\n/**\n * Strips all SUBS commands from pending during initial connection completed since\n * we send the subscriptions as a separate operation.\n *\n * @api private\n */\n\nClient.prototype.stripPendingSubs = function() {\n var pending = this.pending;\n this.pending = [];\n this.pSize = 0;\n for (var i=0; i < pending.length; i++){\n if (!SUBRE.test(pending[i])) {\n // Re-queue the command.\n this.sendCommand(pending[i]);\n }\n }\n};\n\n/**\n * Send commands to the server or queue them up if connection pending.\n *\n * @api private\n */\n\nClient.prototype.sendCommand = function(cmd) {\n // Buffer to cut down on system calls, increase throughput.\n // When receive gets faster, should make this Buffer based..\n\n if (this.closed || this.pending === null) { return; }\n\n this.pending.push(cmd);\n if (!Buffer.isBuffer(cmd)) {\n this.pSize += Buffer.byteLength(cmd);\n } else {\n this.pSize += cmd.length;\n this.pBufs = true;\n }\n\n if (this.connected === true) {\n // First one let's setup flush..\n if (this.pending.length === 1) {\n var self = this;\n setImmediate(function() {\n self.flushPending();\n });\n } else if (this.pSize > FLUSH_THRESHOLD) {\n // Flush in place when threshold reached..\n this.flushPending();\n }\n }\n};\n\n/**\n * Sends existing subscriptions to new server after reconnect.\n *\n * @api private\n */\n\nClient.prototype.sendSubscriptions = function() {\n var protos = \"\";\n for (var sid in this.subs) {\n if (this.subs.hasOwnProperty(sid)) {\n var sub = this.subs[sid];\n var proto;\n if (sub.qgroup) {\n\tproto = [SUB, sub.subject, sub.qgroup, sid + CR_LF];\n } else {\n\tproto = [SUB, sub.subject, sid + CR_LF];\n }\n protos += proto.join(SPC);\n }\n }\n if (protos.length > 0) {\n this.stream.write(protos);\n }\n};\n\n/**\n * Process the inbound data queue.\n *\n * @api private\n */\n\nClient.prototype.processInbound = function() {\n var client = this;\n\n // Hold any regex matches.\n var m;\n\n // For optional yield\n var start;\n\n // unpause if needed.\n // FIXME(dlc) client.stream.isPaused() causes 0.10 to fail\n client.stream.resume();\n\n /* jshint -W083 */\n\n if (client.options.yieldTime !== undefined) {\n start = Date.now();\n }\n\n while (!client.closed && client.inbound && client.inbound.length > 0) {\n switch (client.pstate) {\n\n case AWAITING_CONTROL:\n // Regex only works on strings, so convert once to be more efficient.\n // Long term answer is a hand rolled parser, not regex.\n var buf = client.inbound.toString('binary', 0, MAX_CONTROL_LINE_SIZE);\n if ((m = MSG.exec(buf)) !== null) {\n client.payload = {\n subj : m[1],\n sid : parseInt(m[2], 10),\n reply : m[4],\n size : parseInt(m[5], 10)\n };\n\tclient.payload.psize = client.payload.size + CR_LF_LEN;\n client.pstate = AWAITING_MSG_PAYLOAD;\n } else if ((m = OK.exec(buf)) !== null) {\n // Ignore for now..\n } else if ((m = ERR.exec(buf)) !== null) {\n client.emit('error', m[1]);\n } else if ((m = PONG.exec(buf)) !== null) {\n var cb = client.pongs && client.pongs.shift();\n if (cb) { cb(); } // FIXME: Should we check for exceptions?\n } else if ((m = PING.exec(buf)) !== null) {\n client.sendCommand(PONG_RESPONSE);\n } else if ((m = INFO.exec(buf)) !== null) {\n\tclient.info = JSON.parse(m[1]);\n\t// Check on TLS mismatch.\n\tif (client.checkTLSMismatch() === true) {\n\t return;\n\t}\n\t// Process first INFO\n\tif (client.infoReceived === false) {\n\t // Switch over to TLS as needed.\n\t if (client.options.tls !== false &&\n\t client.stream.encrypted !== true) {\n\t var tlsOpts = {socket: client.stream};\n\t if ('object' === typeof client.options.tls) {\n\t for (var key in client.options.tls) {\n\t\ttlsOpts[key] = client.options.tls[key];\n\t }\n\t }\n\t client.stream = tls.connect(tlsOpts, function() {\n\t client.flushPending();\n\t });\n\t client.setupHandlers();\n\t }\n\n\t // Send the connect message and subscriptions immediately\n\t client.sendConnect();\n\t client.sendSubscriptions();\n\n\t client.pongs.unshift(function() { client.connectCB(); });\n\t client.stream.write(PING_REQUEST);\n\n\t // Mark as received\n\t client.infoReceived = true;\n\t client.stripPendingSubs();\n\t client.flushPending();\n\t}\n } else {\n // FIXME, check line length for something weird.\n // Nothing here yet, return\n return;\n }\n break;\n\n case AWAITING_MSG_PAYLOAD:\n\n // If we do not have the complete message, hold onto the chunks\n // and assemble when we have all we need. This optimizes for\n // when we parse a large buffer down to a small number of bytes,\n // then we receive a large chunk. This avoids a big copy with a\n // simple concat above.\n if (client.inbound.length < client.payload.psize) {\n\tif (undefined === client.payload.chunks) {\n\t client.payload.chunks = [];\n\t}\n\tclient.payload.chunks.push(client.inbound);\n\tclient.payload.psize -= client.inbound.length;\n client.inbound = null;\n\treturn;\n }\n\n // If we are here we have the complete message.\n // Check to see if we have existing chunks\n if (client.payload.chunks) {\n\tclient.payload.chunks.push(client.inbound.slice(0, client.payload.psize));\n\tvar mbuf = Buffer.concat(client.payload.chunks, client.payload.size+CR_LF_LEN);\n\tclient.payload.msg = mbuf.toString(client.encoding, 0, client.payload.size);\n } else {\n\tclient.payload.msg = client.inbound.toString(client.encoding, 0, client.payload.size);\n }\n\n // Eat the size of the inbound that represents the message.\n if (client.inbound.length === client.payload.psize) {\n client.inbound = null;\n } else {\n client.inbound = client.inbound.slice(client.payload.psize);\n }\n\n // process the message\n client.processMsg();\n\n // Reset\n client.pstate = AWAITING_CONTROL;\n client.payload = null;\n\n // Check to see if we have an option to yield for other events after yieldTime.\n if (start !== undefined) {\n\tif ((Date.now() - start) > client.options.yieldTime) {\n\t client.stream.pause();\n\t setImmediate(client.processInbound.bind(this));\n\t return;\n\t}\n }\n break;\n }\n\n // This is applicable for a regex match to eat the bytes we used from a control line.\n if (m && !this.closed) {\n // Chop inbound\n var psize = m[0].length;\n if (psize >= client.inbound.length) {\n client.inbound = null;\n } else {\n client.inbound = client.inbound.slice(psize);\n }\n }\n m = null;\n }\n};\n\n/**\n * Process a delivered message and deliver to appropriate subscriber.\n *\n * @api private\n */\n\nClient.prototype.processMsg = function() {\n var sub = this.subs[this.payload.sid];\n if (sub !== undefined) {\n sub.received += 1;\n // Check for a timeout, and cancel if received >= expected\n if (sub.timeout) {\n if (sub.received >= sub.expected) {\n clearTimeout(sub.timeout);\n sub.timeout = null;\n }\n }\n // Check for auto-unsubscribe\n if (sub.max !== undefined) {\n if (sub.received === sub.max) {\n delete this.subs[this.payload.sid];\n\tthis.emit('unsubscribe', this.payload.sid, sub.subject);\n } else if (sub.received > sub.max) {\n this.unsubscribe(this.payload.sid);\n sub.callback = null;\n }\n }\n\n if (sub.callback) {\n var msg = this.payload.msg;\n if (this.options.json) {\n try {\n msg = JSON.parse(new Buffer(this.payload.msg, this.options.encoding).toString());\n } catch (e) {\n msg = e;\n }\n }\n sub.callback(msg, this.payload.reply, this.payload.subj, this.payload.sid);\n }\n }\n};\n\n/**\n * Push a new cluster server.\n *\n * @param {String} uri\n * @api public\n*/\n\nClient.prototype.addServer = function(uri) {\n this.servers.push(new Server(url.parse(uri)));\n\n if (this.options.noRandomize !== true) {\n shuffle(this.servers);\n }\n};\n\n/**\n * Flush outbound queue to server and call optional callback when server has processed\n * all data.\n *\n * @param {Function} opt_callback\n * @api public\n */\n\nClient.prototype.flush = function(opt_callback) {\n if (this.closed) {\n if (typeof opt_callback === 'function') {\n opt_callback(new Error(CONN_CLOSED));\n return;\n } else {\n throw(new Error(CONN_CLOSED));\n }\n }\n if (this.pongs) {\n this.pongs.push(opt_callback);\n this.sendCommand(PING_REQUEST);\n this.flushPending();\n }\n};\n\n/**\n * Publish a message to the given subject, with optional reply and callback.\n *\n * @param {String} subject\n * @param {String} opt_msg\n * @param {String} opt_reply\n * @param {Function} opt_callback\n * @api public\n */\n\nClient.prototype.publish = function(subject, msg, opt_reply, opt_callback) {\n // They only supplied a callback function.\n if (typeof subject === 'function') {\n opt_callback = subject;\n subject = undefined;\n }\n if (!msg) { msg = EMPTY; }\n if (!subject) {\n if (opt_callback) {\n opt_callback(new Error(BAD_SUBJECT));\n } else {\n throw(new Error(BAD_SUBJECT));\n }\n }\n if (typeof msg === 'function') {\n if (opt_callback || opt_reply) {\n opt_callback(new Error(BAD_MSG));\n return;\n }\n opt_callback = msg;\n msg = EMPTY;\n opt_reply = undefined;\n }\n if (typeof opt_reply === 'function') {\n if (opt_callback) {\n opt_callback(new Error(BAD_REPLY));\n return;\n }\n opt_callback = opt_reply;\n opt_reply = undefined;\n }\n\n // Hold PUB SUB [REPLY]\n var psub;\n if (opt_reply === undefined) {\n psub = 'PUB ' + subject + SPC;\n } else {\n psub = 'PUB ' + subject + SPC + opt_reply + SPC;\n }\n\n if ('ArrayBuffer' in window && ArrayBuffer.isView(msg)) {\n msg = Buffer.from(msg);\n }\n\n // Need to treat sending buffers different.\n if (!Buffer.isBuffer(msg)) {\n var str = msg;\n if (this.options.json) {\n if (typeof msg !== 'object' || Array.isArray(msg)) {\n throw(new Error(BAD_JSON_MSG));\n }\n try {\n str = JSON.stringify(msg);\n } catch (e) {\n throw(new Error(BAD_JSON_MSG));\n }\n }\n this.sendCommand(psub + Buffer.byteLength(str) + CR_LF + str + CR_LF);\n } else {\n var b = new Buffer(psub.length + msg.length + (2 * CR_LF_LEN) + msg.length.toString().length);\n var len = b.write(psub + msg.length + CR_LF);\n msg.copy(b, len);\n b.write(CR_LF, len + msg.length);\n this.sendCommand(b);\n }\n\n if (opt_callback !== undefined) {\n this.flush(opt_callback);\n } else if (this.closed) {\n throw(new Error(CONN_CLOSED));\n }\n};\n\n/**\n * Subscribe to a given subject, with optional options and callback. opts can be\n * ommitted, even with a callback. The Subscriber Id is returned.\n *\n * @param {String} subject\n * @param {Object} opts\n * @param {Function} callback\n * @return {Mixed}\n * @api public\n */\n\nClient.prototype.subscribe = function(subject, opts, callback) {\n if (this.closed) {\n throw(new Error(CONN_CLOSED));\n }\n var qgroup, max;\n if (typeof opts === 'function') {\n callback = opts;\n opts = undefined;\n } else if (opts && typeof opts === 'object') {\n // FIXME, check exists, error otherwise..\n qgroup = opts.queue;\n max = opts.max;\n }\n this.ssid += 1;\n this.subs[this.ssid] = { 'subject':subject, 'callback':callback, 'received':0 };\n\n var proto;\n if (typeof qgroup === 'string') {\n this.subs[this.ssid].qgroup = qgroup;\n proto = [SUB, subject, qgroup, this.ssid + CR_LF];\n } else {\n proto = [SUB, subject, this.ssid + CR_LF];\n }\n\n this.sendCommand(proto.join(SPC));\n this.emit('subscribe', this.ssid, subject, opts);\n\n if (max) {\n this.unsubscribe(this.ssid, max);\n }\n return this.ssid;\n};\n\n/**\n * Unsubscribe to a given Subscriber Id, with optional max parameter.\n *\n * @param {Mixed} sid\n * @param {Number} opt_max\n * @api public\n */\n\nClient.prototype.unsubscribe = function(sid, opt_max) {\n if (!sid || this.closed) { return; }\n\n var proto;\n if (opt_max) {\n proto = [UNSUB, sid, opt_max + CR_LF];\n } else {\n proto = [UNSUB, sid + CR_LF];\n }\n this.sendCommand(proto.join(SPC));\n\n var sub = this.subs[sid];\n if (sub === undefined) {\n return;\n }\n sub.max = opt_max;\n if (sub.max === undefined || (sub.received >= sub.max)) {\n delete this.subs[sid];\n this.emit('unsubscribe', sid, sub.subject);\n }\n};\n\n/**\n * Set a timeout on a subscription.\n *\n * @param {Mixed} sid\n * @param {Number} timeout\n * @param {Number} expected\n * @api public\n */\n\nClient.prototype.timeout = function(sid, timeout, expected, callback) {\n if (!sid) { return; }\n var sub = this.subs[sid];\n if (sub === null) { return; }\n sub.expected = expected;\n sub.timeout = setTimeout(function() { callback(sid); }, timeout);\n};\n\n/**\n * Publish a message with an implicit inbox listener as the reply. Message is optional.\n * This should be treated as a subscription. You can optionally indicate how many\n * messages you only want to receive using opt_options = {max:N}. Otherwise you\n * will need to unsubscribe to stop the message stream.\n * The Subscriber Id is returned.\n *\n * @param {String} subject\n * @param {String} opt_msg\n * @param {Object} opt_options\n * @param {Function} callback\n * @return {Mixed}\n * @api public\n */\n\nClient.prototype.request = function(subject, opt_msg, opt_options, callback) {\n if (typeof opt_msg === 'function') {\n callback = opt_msg;\n opt_msg = EMPTY;\n opt_options = null;\n }\n if (typeof opt_options === 'function') {\n callback = opt_options;\n opt_options = null;\n }\n var inbox = createInbox();\n var s = this.subscribe(inbox, opt_options, function(msg, reply) {\n callback(msg, reply);\n });\n this.publish(subject, opt_msg, inbox);\n return s;\n};\n\n/**\n * Report number of outstanding subscriptions on this connection.\n *\n * @return {Number}\n * @api public\n */\n\nClient.prototype.numSubscriptions = function() {\n return Object.keys(this.subs).length;\n};\n\n/**\n * Reconnect to the server.\n *\n * @api private\n */\n\nClient.prototype.reconnect = function() {\n if (this.closed) { return; }\n this.reconnects += 1;\n this.createConnection();\n if (this.currentServer.didConnect === true) {\n this.emit('reconnecting');\n }\n};\n\n/**\n * Setup a timer event to attempt reconnect.\n *\n * @api private\n */\n\nClient.prototype.scheduleReconnect = function() {\n var client = this;\n // Just return if no more servers\n if (client.servers.length === 0) {\n return;\n }\n // Don't set reconnecting state if we are just trying\n // for the first time.\n if (client.wasConnected === true) {\n client.reconnecting = true;\n }\n // Only stall if we have connected before.\n var wait = 0;\n if (client.servers[0].didConnect === true) {\n wait = this.options.reconnectTimeWait;\n }\n setTimeout(function() { client.reconnect(); }, wait);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/nats.js\n// module id = 1\n// module chunks = 0","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/buffer/index.js\n// module id = 2\n// module chunks = 0","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n var len = b64.length\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n // base64 is 4/3 + up to two characters of the original data\n return b64.length * 3 / 4 - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n var i, j, l, tmp, placeHolders, arr\n var len = b64.length\n placeHolders = placeHoldersCount(b64)\n\n arr = new Arr(len * 3 / 4 - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/base64-js/index.js\n// module id = 3\n// module chunks = 0","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/ieee754/index.js\n// module id = 4\n// module chunks = 0","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/isarray/index.js\n// module id = 5\n// module chunks = 0","var nextTick = require('process/browser.js').nextTick;\nvar apply = Function.prototype.apply;\nvar slice = Array.prototype.slice;\nvar immediateIds = {};\nvar nextImmediateId = 0;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) { timeout.close(); };\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// That's not how node.js implements it but the exposed api is the same.\nexports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n var id = nextImmediateId++;\n var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\n immediateIds[id] = true;\n\n nextTick(function onNextTick() {\n if (immediateIds[id]) {\n // fn.call() is faster so we optimize for the common use-case\n // @see http://jsperf.com/call-apply-segu\n if (args) {\n fn.apply(null, args);\n } else {\n fn.call(null);\n }\n // Prevent ids from leaking\n exports.clearImmediate(id);\n }\n });\n\n return id;\n};\n\nexports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n delete immediateIds[id];\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/timers-browserify/main.js\n// module id = 6\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = 7\n// module chunks = 0","'use strict';\n\nvar util = require('util');\nvar EventEmitter = require('events').EventEmitter;\n\nfunction WebSocketProxy(url) {\n\tvar self = this;\n\tEventEmitter.call(this);\n\tthis.sock = new WebSocket(url);\n\tthis.sock.addEventListener('open', function(e) {\n\t\tself.emit('connect');\n\t});\n\tthis.sock.addEventListener('message', function(e) {\n\t\tself.emit('data', new Buffer(e.data));\n\t});\n\tthis.sock.addEventListener('error', function(e) {\n\t\tself.emit('error', e);\n\t});\n\tthis.sock.addEventListener('close', function(e) {\n\t\tself.emit('close');\n\t});\n}\nutil.inherits(WebSocketProxy, EventEmitter);\n\nWebSocketProxy.prototype.end = function() {\n\tthis.destroy();\n}\n\nWebSocketProxy.prototype.destroy = function() {\n\tif (\n\t\tthis.sock.readyState === WebSocket.CONNECTING ||\n\t\tthis.sock.readyState === WebSocket.OPEN\n\t) {\n\t\tthis.sock.close();\n\t}\n}\n\nWebSocketProxy.prototype.write = function(data) {\n\tif (this.sock.readyState === WebSocket.OPEN) {\n\t\tthis.sock.send(data);\n\t}\n}\n\nWebSocketProxy.prototype.pause = function() {\n\tconsole.warn('WebSocketProxy stream pause/resume is not supported yet.');\n}\n\nWebSocketProxy.prototype.resume = function() {}\n\nexports.createConnection = function(url) {\n\t// The url is rebuilt to avoid including the auth credentials.\n\treturn new WebSocketProxy(url.format({\n\t\tprotocol: url.protocol,\n\t\tslashes: url.slashes,\n\t\thost: url.host,\n\t\thostname: url.hostname,\n\t\tport: url.port,\n\t\tpathname: url.pathname,\n\t\tsearch: url.search,\n\t\tpath: url.path,\n\t\tquery: url.query,\n\t\thash: url.hash\n\t}));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/net.js\n// module id = 8\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\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/util/util.js\n// module id = 9\n// module chunks = 0","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/util/support/isBufferBrowser.js\n// module id = 10\n// module chunks = 0","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/util/~/inherits/inherits_browser.js\n// module id = 11\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// ./~/events/events.js\n// module id = 12\n// module chunks = 0","exports.connect = function(opts, cb) {\n\tthrow \"TLS is not supported in the browser. Use WSS instead.\";\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/tls.js\n// module id = 13\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\nvar punycode = require('punycode');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a puny coded representation of \"domain\".\n // It only converts the part of the domain name that\n // has non ASCII characters. I.e. it dosent matter if\n // you call it with a domain that already is in ASCII.\n var domainArray = this.hostname.split('.');\n var newOut = [];\n for (var i = 0; i < domainArray.length; ++i) {\n var s = domainArray[i];\n newOut.push(s.match(/[^A-Za-z0-9_-]/) ?\n 'xn--' + punycode.encode(s) : s);\n }\n this.hostname = newOut.join('.');\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n Object.keys(this).forEach(function(k) {\n result[k] = this[k];\n }, this);\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n Object.keys(relative).forEach(function(k) {\n if (k !== 'protocol')\n result[k] = relative[k];\n });\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n Object.keys(relative).forEach(function(k) {\n result[k] = relative[k];\n });\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host) && (last === '.' || last === '..') ||\n last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last == '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n\nfunction isString(arg) {\n return typeof arg === \"string\";\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isNull(arg) {\n return arg === null;\n}\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/url/url.js\n// module id = 14\n// module chunks = 0","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/url/~/punycode/punycode.js\n// module id = 15\n// module chunks = 0","module.exports = function(module) {\n\tif(!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tmodule.children = [];\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 16\n// module chunks = 0","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/querystring/index.js\n// module id = 17\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\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/querystring/decode.js\n// module id = 18\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\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/querystring/encode.js\n// module id = 19\n// module chunks = 0","/*!\n * Nats\n * Copyright(c) 2016 Apcera Inc. All rights reserved.\n * MIT Licensed\n */\n\n/* jslint node: true */\n'use strict';\n\n/**\n * Module Dependencies\n */\n\nvar crypto = require('crypto');\n\n/**\n * Constants\n */\nvar VERSION = '0.6.8',\n digits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',\n base = 36,\n preLen = 12,\n seqLen = 10,\n maxSeq = 3656158440062976, // base^seqLen == 36^10\n minInc = 33,\n maxInc = 333,\n totalLen = preLen + seqLen;\n\nexports.version = VERSION;\n\n/**\n * Create and initialize a nuid.\n *\n * @api private\n */\n\nfunction Nuid() {\n this.buf = new Buffer(totalLen);\n this.init();\n}\n\n/**\n * Initializes a nuid with a crypto random prefix,\n * and pseudo-random sequence and increment.\n *\n * @api private\n */\n\nNuid.prototype.init = function() {\n this.setPre();\n this.initSeqAndInc();\n this.fillSeq();\n};\n\n/**\n * Initializes the pseudo randmon sequence number and the increment range.\n *\n * @api private\n */\n\nNuid.prototype.initSeqAndInc = function() {\n this.seq = Math.floor(Math.random()*maxSeq);\n this.inc = Math.floor(Math.random()*(maxInc-minInc)+minInc);\n};\n\n/**\n * Sets the prefix from crypto random bytes. Converts to base36.\n *\n * @api private\n */\n\nNuid.prototype.setPre = function() {\n var cbuf = crypto.randomBytes(preLen);\n for (var i = 0; i < preLen; i++) {\n var di = cbuf[i]%base;\n this.buf[i] = digits.charCodeAt(di);\n }\n};\n\n/**\n * Fills the sequence part of the nuid as base36 from this.seq.\n *\n * @api private\n */\n\nNuid.prototype.fillSeq = function() {\n var n = this.seq;\n for (var i = totalLen-1; i >= preLen; i--) {\n this.buf[i] = digits.charCodeAt(n%base);\n n = Math.floor(n/base);\n }\n};\n\n/**\n * Returns the next nuid.\n *\n * @api private\n */\n\nNuid.prototype.next = function() {\n this.seq += this.inc;\n if (this.seq > maxSeq) {\n this.setPre();\n }\n this.initSeqAndInc();\n this.fillSeq();\n return (this.buf.toString('ascii'));\n};\n\n/* Global Nuid */\nvar g = new Nuid();\n\n/**\n * Resets the prefix of the global nuid, as well as the\n * pseudo random sequence number and increment amounts.\n *\n * @api public\n */\n\nexports.reset = function() {\n g.init();\n};\n\n/**\n * Returns the next nuid from the global.\n *\n * @api public\n */\n\nexports.next = function() {\n return g.next();\n};\n\n/**\n * This here to facilitate testing\n * @api private\n */\nexports._global = g;\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/nuid.js\n// module id = 20\n// module chunks = 0","'use strict';\n\nvar crypto = window.crypto || window.msCrypto;\n\nexports.randomBytes = function(size, cb) {\n\tvar buf = new Uint8Array(size);\n\tif (size > 0) {\n\t\tcrypto.getRandomValues(buf);\n\t}\n\treturn buf;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/crypto.js\n// module id = 21\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/nats.js b/lib/nats.js index b97fc82..357a204 100644 --- a/lib/nats.js +++ b/lib/nats.js @@ -983,6 +983,10 @@ Client.prototype.publish = function(subject, msg, opt_reply, opt_callback) { psub = 'PUB ' + subject + SPC + opt_reply + SPC; } + if ('ArrayBuffer' in window && ArrayBuffer.isView(msg)) { + msg = Buffer.from(msg); + } + // Need to treat sending buffers different. if (!Buffer.isBuffer(msg)) { var str = msg; diff --git a/package.json b/package.json index a91edc4..bf6cfcb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "websocket-nats", - "version": "0.2.4", + "version": "0.2.5", "description": "An in-browser websocket client for [NATS](http://nats.io/), a lightweight, high-performance cloud native messaging system.", "keywords": [ "websocket", @@ -28,8 +28,5 @@ }, "devDependencies": { "webpack": "^1.13.0" - }, - "dependencies": { - "url": "^0.11.0" } } diff --git a/webpack.config.js b/webpack.config.js index 7331a26..50d76f1 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,14 +1,19 @@ -var webpack = require('webpack'); +const path = require('path'); +const webpack = require('webpack'); + module.exports = { entry: './bootstrap.js', output: { - path: './dist', - filename: 'bundle.js', - } + path: path.resolve(__dirname, './dist'), + publicPath: '/dist/', + filename: 'bundle.js' + }, + devtool: '#eval-source-map' }; if (process.env.NODE_ENV === 'prod') { + module.exports.devtool = '#source-map'; module.exports.plugins = (module.exports.plugins || []).concat([ - new webpack.optimize.UglifyJsPlugin({minimize: true}) + new webpack.optimize.UglifyJsPlugin({minimize: true}) ]); }