=0;--J){var ot=this.tryEntries[J];if(ot.finallyLoc===dt)return this.complete(ot.completion,ot.afterLoc),It(ot),K}}return gt}(),catch:function(){function gt(dt){for(var J=this.tryEntries.length-1;J>=0;--J){var ot=this.tryEntries[J];if(ot.tryLoc===dt){var lt=ot.completion;if(lt.type==="throw"){var yt=lt.arg;It(ot)}return yt}}throw new Error("illegal catch attempt")}return gt}(),delegateYield:function(){function gt(dt,J,ot){return this.delegate={iterator:At(dt),resultName:J,nextLoc:ot},this.method==="next"&&(this.arg=T),K}return gt}()},b}function e(T,b,E,S,I,A,N){try{var M=T[A](N),w=M.value}catch(R){E(R);return}M.done?b(w):Promise.resolve(w).then(S,I)}function r(T){return function(){var b=this,E=arguments;return new Promise(function(S,I){var A=T.apply(b,E);function N(w){e(A,S,I,N,M,"next",w)}function M(w){e(A,S,I,N,M,"throw",w)}N(void 0)})}}/**
+ * Browser-agnostic abstraction of key-value web storage.
+ *
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */var o=n.IMPL_MEMORY=0,a=n.IMPL_LOCAL_STORAGE=1,i=n.IMPL_INDEXED_DB=2,d=1,u="tgui",v="storage-v1",l="readonly",s="readwrite",h=function(b){return function(){try{return!!b()}catch(E){return!1}}},c=h(function(){return window.localStorage&&window.localStorage.getItem}),p=h(function(){return(window.indexedDB||window.msIndexedDB)&&(window.IDBTransaction||window.msIDBTransaction)}),f=function(){function T(){this.impl=o,this.store={}}var b=T.prototype;return b.get=function(){function E(S){return this.store[S]}return E}(),b.set=function(){function E(S,I){this.store[S]=I}return E}(),b.remove=function(){function E(S){this.store[S]=void 0}return E}(),b.clear=function(){function E(){this.store={}}return E}(),T}(),g=function(){function T(){this.impl=a}var b=T.prototype;return b.get=function(){function E(S){var I=localStorage.getItem(S);if(typeof I=="string")return JSON.parse(I)}return E}(),b.set=function(){function E(S,I){localStorage.setItem(S,JSON.stringify(I))}return E}(),b.remove=function(){function E(S){localStorage.removeItem(S)}return E}(),b.clear=function(){function E(){localStorage.clear()}return E}(),T}(),m=function(){function T(){this.impl=i,this.dbPromise=new Promise(function(E,S){var I=window.indexedDB||window.msIndexedDB,A=I.open(u,d);A.onupgradeneeded=function(){try{A.result.createObjectStore(v)}catch(N){S(new Error("Failed to upgrade IDB: "+A.error))}},A.onsuccess=function(){return E(A.result)},A.onerror=function(){S(new Error("Failed to open IDB: "+A.error))}})}var b=T.prototype;return b.getStore=function(){function E(S){return this.dbPromise.then(function(I){return I.transaction(v,S).objectStore(v)})}return E}(),b.get=function(){var E=r(t().mark(function(){function I(A){var N;return t().wrap(function(){function M(w){for(;;)switch(w.prev=w.next){case 0:return w.next=2,this.getStore(l);case 2:return N=w.sent,w.abrupt("return",new Promise(function(R,x){var D=N.get(A);D.onsuccess=function(){return R(D.result)},D.onerror=function(){return x(D.error)}}));case 4:case"end":return w.stop()}}return M}(),I,this)}return I}()));function S(I){return E.apply(this,arguments)}return S}(),b.set=function(){var E=r(t().mark(function(){function I(A,N){var M;return t().wrap(function(){function w(R){for(;;)switch(R.prev=R.next){case 0:return N===null&&(N=void 0),R.next=3,this.getStore(s);case 3:M=R.sent,M.put(N,A);case 5:case"end":return R.stop()}}return w}(),I,this)}return I}()));function S(I,A){return E.apply(this,arguments)}return S}(),b.remove=function(){var E=r(t().mark(function(){function I(A){var N;return t().wrap(function(){function M(w){for(;;)switch(w.prev=w.next){case 0:return w.next=2,this.getStore(s);case 2:N=w.sent,N.delete(A);case 4:case"end":return w.stop()}}return M}(),I,this)}return I}()));function S(I){return E.apply(this,arguments)}return S}(),b.clear=function(){var E=r(t().mark(function(){function I(){var A;return t().wrap(function(){function N(M){for(;;)switch(M.prev=M.next){case 0:return M.next=2,this.getStore(s);case 2:A=M.sent,A.clear();case 4:case"end":return M.stop()}}return N}(),I,this)}return I}()));function S(){return E.apply(this,arguments)}return S}(),T}(),C=function(){function T(){this.backendPromise=r(t().mark(function(){function E(){var S;return t().wrap(function(){function I(A){for(;;)switch(A.prev=A.next){case 0:if(!p()){A.next=10;break}return A.prev=1,S=new m,A.next=5,S.dbPromise;case 5:return A.abrupt("return",S);case 8:A.prev=8,A.t0=A.catch(1);case 10:if(!c()){A.next=12;break}return A.abrupt("return",new g);case 12:return A.abrupt("return",new f);case 13:case"end":return A.stop()}}return I}(),E,null,[[1,8]])}return E}()))()}var b=T.prototype;return b.get=function(){var E=r(t().mark(function(){function I(A){var N;return t().wrap(function(){function M(w){for(;;)switch(w.prev=w.next){case 0:return w.next=2,this.backendPromise;case 2:return N=w.sent,w.abrupt("return",N.get(A));case 4:case"end":return w.stop()}}return M}(),I,this)}return I}()));function S(I){return E.apply(this,arguments)}return S}(),b.set=function(){var E=r(t().mark(function(){function I(A,N){var M;return t().wrap(function(){function w(R){for(;;)switch(R.prev=R.next){case 0:return R.next=2,this.backendPromise;case 2:return M=R.sent,R.abrupt("return",M.set(A,N));case 4:case"end":return R.stop()}}return w}(),I,this)}return I}()));function S(I,A){return E.apply(this,arguments)}return S}(),b.remove=function(){var E=r(t().mark(function(){function I(A){var N;return t().wrap(function(){function M(w){for(;;)switch(w.prev=w.next){case 0:return w.next=2,this.backendPromise;case 2:return N=w.sent,w.abrupt("return",N.remove(A));case 4:case"end":return w.stop()}}return M}(),I,this)}return I}()));function S(I){return E.apply(this,arguments)}return S}(),b.clear=function(){var E=r(t().mark(function(){function I(){var A;return t().wrap(function(){function N(M){for(;;)switch(M.prev=M.next){case 0:return M.next=2,this.backendPromise;case 2:return A=M.sent,M.abrupt("return",A.clear());case 4:case"end":return M.stop()}}return N}(),I,this)}return I}()));function S(){return E.apply(this,arguments)}return S}(),T}(),O=n.storage=new C},40946:function(y,n){"use strict";n.__esModule=!0,n.toTitleCase=n.multiline=n.decodeHtmlEntities=n.createSearch=n.createGlobPattern=n.capitalizeFirst=n.capitalizeAll=n.capitalize=n.buildQueryString=void 0;function t(c,p){var f=typeof Symbol!="undefined"&&c[Symbol.iterator]||c["@@iterator"];if(f)return(f=f.call(c)).next.bind(f);if(Array.isArray(c)||(f=e(c))||p&&c&&typeof c.length=="number"){f&&(c=f);var g=0;return function(){return g>=c.length?{done:!0}:{done:!1,value:c[g++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function e(c,p){if(c){if(typeof c=="string")return r(c,p);var f=Object.prototype.toString.call(c).slice(8,-1);if(f==="Object"&&c.constructor&&(f=c.constructor.name),f==="Map"||f==="Set")return Array.from(c);if(f==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(f))return r(c,p)}}function r(c,p){(p==null||p>c.length)&&(p=c.length);for(var f=0,g=new Array(p);f",apos:"'"};return p.replace(/
/gi,"\n").replace(/<\/?[a-z0-9-_]+[^>]*>/gi,"").replace(f,function(m,C){return g[C]}).replace(/?([0-9]+);/gi,function(m,C){var O=parseInt(C,10);return String.fromCharCode(O)}).replace(/?([0-9a-f]+);/gi,function(m,C){var O=parseInt(C,16);return String.fromCharCode(O)})}return c}(),h=n.buildQueryString=function(){function c(p){return Object.keys(p).map(function(f){return encodeURIComponent(f)+"="+encodeURIComponent(p[f])}).join("&")}return c}()},84710:function(y,n){"use strict";n.__esModule=!0,n.throttle=n.sleep=n.debounce=void 0;/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */var t=n.debounce=function(){function o(a,i,d){d===void 0&&(d=!1);var u;return function(){for(var v=arguments.length,l=new Array(v),s=0;s=i)a.apply(null,s),d=c;else{var p;u=setTimeout(function(){return v.apply(void 0,s)},i-(c-((p=d)!=null?p:0)))}}return v}()}return o}(),r=n.sleep=function(){function o(a){return new Promise(function(i){return setTimeout(i,a)})}return o}()},48744:function(y,n){"use strict";n.__esModule=!0,n.createUuid=void 0;/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */var t=n.createUuid=function(){function e(){var r=new Date().getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(o){var a=(r+Math.random()*16)%16|0;return r=Math.floor(r/16),(o==="x"?a:a&3|8).toString(16)})}return e}()},13212:function(y,n,t){"use strict";n.__esModule=!0,n.vecSubtract=n.vecScale=n.vecNormalize=n.vecMultiply=n.vecLength=n.vecInverse=n.vecDivide=n.vecAdd=void 0;var e=t(45445);/**
+ * N-dimensional vector manipulation functions.
+ *
+ * Vectors are plain number arrays, i.e. [x, y, z].
+ *
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */var r=function(g,m){return g+m},o=function(g,m){return g-m},a=function(g,m){return g*m},i=function(g,m){return g/m},d=n.vecAdd=function(){function f(){for(var g=arguments.length,m=new Array(g),C=0;C=0)&&(u[l]=i[l]);return u}var a=n.audioMiddleware=function(){function i(d){var u=new e.AudioPlayer;return u.onPlay(function(){d.dispatch({type:"audio/playing"})}),u.onStop(function(){d.dispatch({type:"audio/stopped"})}),function(v){return function(l){var s=l.type,h=l.payload;if(s==="audio/playMusic"){var c=h.url,p=o(h,r);return u.play(c,p),v(l)}if(s==="audio/stopMusic")return u.stop(),v(l);if(s==="settings/update"||s==="settings/load"){var f=h==null?void 0:h.adminMusicVolume;return typeof f=="number"&&u.setVolume(f),v(l)}return v(l)}}}return i}()},26882:function(y,n,t){"use strict";n.__esModule=!0,n.AudioPlayer=void 0;var e=t(37145);function r(u,v){var l=typeof Symbol!="undefined"&&u[Symbol.iterator]||u["@@iterator"];if(l)return(l=l.call(u)).next.bind(l);if(Array.isArray(u)||(l=o(u))||v&&u&&typeof u.length=="number"){l&&(u=l);var s=0;return function(){return s>=u.length?{done:!0}:{done:!1,value:u[s++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function o(u,v){if(u){if(typeof u=="string")return a(u,v);var l=Object.prototype.toString.call(u).slice(8,-1);if(l==="Object"&&u.constructor&&(l=u.constructor.name),l==="Map"||l==="Set")return Array.from(u);if(l==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l))return a(u,v)}}function a(u,v){(v==null||v>u.length)&&(v=u.length);for(var l=0,s=new Array(v);l0&&l.node.currentTime>=l.options.end;s&&l.stop()}},1e3))}var v=u.prototype;return v.destroy=function(){function l(){this.node&&(this.node.stop(),document.removeChild(this.node),clearInterval(this.playbackInterval))}return l}(),v.play=function(){function l(s,h){h===void 0&&(h={}),this.node&&(i.log("playing",s,h),this.options=h,this.node.src=s)}return l}(),v.stop=function(){function l(){if(this.node){if(this.playing)for(var s=r(this.onStopSubscribers),h;!(h=s()).done;){var c=h.value;c()}i.log("stopping"),this.playing=!1,this.node.src=""}}return l}(),v.setVolume=function(){function l(s){this.node&&(this.volume=s,this.node.volume=s)}return l}(),v.onPlay=function(){function l(s){this.node&&this.onPlaySubscribers.push(s)}return l}(),v.onStop=function(){function l(s){this.node&&this.onStopSubscribers.push(s)}return l}(),u}()},4612:function(y,n){"use strict";n.__esModule=!0,n.audioReducer=void 0;/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */var t={visible:!1,playing:!1,track:null},e=n.audioReducer=function(){function r(o,a){o===void 0&&(o=t);var i=a.type,d=a.payload;return i==="audio/playing"?Object.assign({},o,{visible:!0,playing:!0}):i==="audio/stopped"?Object.assign({},o,{visible:!1,playing:!1}):i==="audio/playMusic"?Object.assign({},o,{meta:d}):i==="audio/stopMusic"?Object.assign({},o,{visible:!1,playing:!1,meta:null}):i==="audio/toggle"?Object.assign({},o,{visible:!o.visible}):o}return r}()},36964:function(y,n){"use strict";n.__esModule=!0,n.selectAudio=void 0;/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */var t=n.selectAudio=function(){function e(r){return r.audio}return e}()},12104:function(y,n,t){"use strict";n.__esModule=!0,n.ChatPageSettings=void 0;var e=t(58734),r=t(32289),o=t(35239),a=t(8719),i=t(6098),d=t(26416);/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */var u=n.ChatPageSettings=function(){function v(l,s){var h=(0,r.useSelector)(s,d.selectCurrentChatPage),c=(0,r.useDispatch)(s);return(0,e.createComponentVNode)(2,o.Section,{children:[(0,e.createComponentVNode)(2,o.Stack,{align:"center",children:[(0,e.createComponentVNode)(2,o.Stack.Item,{grow:1,children:(0,e.createComponentVNode)(2,o.Input,{fluid:!0,value:h.name,onChange:function(){function p(f,g){return c((0,a.updateChatPage)({pageId:h.id,name:g}))}return p}()})}),(0,e.createComponentVNode)(2,o.Stack.Item,{children:(0,e.createComponentVNode)(2,o.Button,{icon:"times",color:"red",onClick:function(){function p(){return c((0,a.removeChatPage)({pageId:h.id}))}return p}(),children:"Remove"})})]}),(0,e.createComponentVNode)(2,o.Divider),(0,e.createComponentVNode)(2,o.Section,{title:"Messages to display",level:2,children:[i.MESSAGE_TYPES.filter(function(p){return!p.important&&!p.admin}).map(function(p){return(0,e.createComponentVNode)(2,o.Button.Checkbox,{checked:h.acceptedTypes[p.type],onClick:function(){function f(){return c((0,a.toggleAcceptedType)({pageId:h.id,type:p.type}))}return f}(),children:p.name},p.type)}),(0,e.createComponentVNode)(2,o.Collapsible,{mt:1,color:"transparent",title:"Admin stuff",children:i.MESSAGE_TYPES.filter(function(p){return!p.important&&p.admin}).map(function(p){return(0,e.createComponentVNode)(2,o.Button.Checkbox,{checked:h.acceptedTypes[p.type],onClick:function(){function f(){return c((0,a.toggleAcceptedType)({pageId:h.id,type:p.type}))}return f}(),children:p.name},p.type)})})]})]})}return v}()},81230:function(y,n,t){"use strict";n.__esModule=!0,n.ChatPanel=void 0;var e=t(58734),r=t(59641),o=t(35239),a=t(54587);function i(v,l){v.prototype=Object.create(l.prototype),v.prototype.constructor=v,d(v,l)}function d(v,l){return d=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(){function s(h,c){return h.__proto__=c,h}return s}(),d(v,l)}/**
+* @file
+* @copyright 2020 Aleksej Komarov
+* @license MIT
+*/var u=n.ChatPanel=function(v){i(l,v);function l(){var h;return h=v.call(this)||this,h.ref=(0,e.createRef)(),h.state={scrollTracking:!0},h.handleScrollTrackingChange=function(c){return h.setState({scrollTracking:c})},h}var s=l.prototype;return s.componentDidMount=function(){function h(){a.chatRenderer.mount(this.ref.current),a.chatRenderer.events.on("scrollTrackingChanged",this.handleScrollTrackingChange),this.componentDidUpdate()}return h}(),s.componentWillUnmount=function(){function h(){a.chatRenderer.events.off("scrollTrackingChanged",this.handleScrollTrackingChange)}return h}(),s.componentDidUpdate=function(){function h(c){requestAnimationFrame(function(){a.chatRenderer.ensureScrollTracking()});var p=!c||(0,r.shallowDiffers)(this.props,c);p&&a.chatRenderer.assignStyle({width:"100%","white-space":"pre-wrap","font-size":this.props.fontSize,"line-height":this.props.lineHeight})}return h}(),s.render=function(){function h(){var c=this.state.scrollTracking;return(0,e.createFragment)([(0,e.createVNode)(1,"div","Chat",null,1,null,null,this.ref),!c&&(0,e.createComponentVNode)(2,o.Button,{className:"Chat__scrollButton",icon:"arrow-down",onClick:function(){function p(){return a.chatRenderer.scrollToBottom()}return p}(),children:"Scroll to bottom"})],0)}return h}(),l}(e.Component)},85896:function(y,n,t){"use strict";n.__esModule=!0,n.ChatTabs=void 0;var e=t(58734),r=t(32289),o=t(35239),a=t(8719),i=t(26416),d=t(93164);/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */var u=function(s){var h=s.value;return(0,e.createComponentVNode)(2,o.Box,{style:{"font-size":"0.7em","border-radius":"0.25em",width:"1.7em","line-height":"1.55em","background-color":"crimson",color:"#fff"},children:Math.min(h,99)})},v=n.ChatTabs=function(){function l(s,h){var c=(0,r.useSelector)(h,i.selectChatPages),p=(0,r.useSelector)(h,i.selectCurrentChatPage),f=(0,r.useDispatch)(h);return(0,e.createComponentVNode)(2,o.Flex,{align:"center",children:[(0,e.createComponentVNode)(2,o.Flex.Item,{children:(0,e.createComponentVNode)(2,o.Tabs,{textAlign:"center",children:c.map(function(g){return(0,e.createComponentVNode)(2,o.Tabs.Tab,{selected:g===p,rightSlot:g.unreadCount>0&&(0,e.createComponentVNode)(2,u,{value:g.unreadCount}),onClick:function(){function m(){return f((0,a.changeChatPage)({pageId:g.id}))}return m}(),children:g.name},g.id)})})}),(0,e.createComponentVNode)(2,o.Flex.Item,{ml:1,children:(0,e.createComponentVNode)(2,o.Button,{color:"transparent",icon:"plus",onClick:function(){function g(){f((0,a.addChatPage)()),f((0,d.openChatSettings)())}return g}()})})]})}return l}()},8719:function(y,n,t){"use strict";n.__esModule=!0,n.updateMessageCount=n.updateChatPage=n.toggleAcceptedType=n.saveChatToDisk=n.removeChatPage=n.rebuildChat=n.purgeChatMessageArchive=n.loadChat=n.changeScrollTracking=n.changeChatPage=n.addChatPage=void 0;var e=t(32289),r=t(64577);/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */var o=n.loadChat=(0,e.createAction)("chat/load"),a=n.rebuildChat=(0,e.createAction)("chat/rebuild"),i=n.updateMessageCount=(0,e.createAction)("chat/updateMessageCount"),d=n.addChatPage=(0,e.createAction)("chat/addPage",function(){return{payload:(0,r.createPage)()}}),u=n.changeChatPage=(0,e.createAction)("chat/changePage"),v=n.updateChatPage=(0,e.createAction)("chat/updatePage"),l=n.toggleAcceptedType=(0,e.createAction)("chat/toggleAcceptedType"),s=n.removeChatPage=(0,e.createAction)("chat/removePage"),h=n.changeScrollTracking=(0,e.createAction)("chat/changeScrollTracking"),c=n.saveChatToDisk=(0,e.createAction)("chat/saveToDisk"),p=n.purgeChatMessageArchive=(0,e.createAction)("chat/purgeMessageArchive")},6098:function(y,n){"use strict";n.__esModule=!0,n.MESSAGE_TYPE_WARNING=n.MESSAGE_TYPE_VORE=n.MESSAGE_TYPE_UNKNOWN=n.MESSAGE_TYPE_SYSTEM=n.MESSAGE_TYPE_RLOOC=n.MESSAGE_TYPE_RADIO=n.MESSAGE_TYPE_PRAYER=n.MESSAGE_TYPE_PLOCALCHAT=n.MESSAGE_TYPE_OOC=n.MESSAGE_TYPE_NPCEMOTE=n.MESSAGE_TYPE_NIF=n.MESSAGE_TYPE_MODCHAT=n.MESSAGE_TYPE_MENTORPM=n.MESSAGE_TYPE_LOOC=n.MESSAGE_TYPE_LOCALCHAT=n.MESSAGE_TYPE_INTERNAL=n.MESSAGE_TYPE_INFO=n.MESSAGE_TYPE_EVENTCHAT=n.MESSAGE_TYPE_DEBUG=n.MESSAGE_TYPE_DEADCHAT=n.MESSAGE_TYPE_COMBAT=n.MESSAGE_TYPE_ATTACKLOG=n.MESSAGE_TYPE_ADMINPM=n.MESSAGE_TYPE_ADMINLOG=n.MESSAGE_TYPE_ADMINCHAT=n.MESSAGE_TYPES=n.MESSAGE_SAVE_INTERVAL=n.MESSAGE_PRUNE_INTERVAL=n.MAX_VISIBLE_MESSAGES=n.MAX_PERSISTED_MESSAGES=n.IMAGE_RETRY_MESSAGE_AGE=n.IMAGE_RETRY_LIMIT=n.IMAGE_RETRY_DELAY=n.COMBINE_MAX_TIME_WINDOW=n.COMBINE_MAX_MESSAGES=void 0;/**
+ * @file
+ * @copyright 2020 Aleksej Komarov
+ * @license MIT
+ */var t=n.MAX_VISIBLE_MESSAGES=2500,e=n.MAX_PERSISTED_MESSAGES=1e3,r=n.MESSAGE_SAVE_INTERVAL=1e4,o=n.MESSAGE_PRUNE_INTERVAL=6e4,a=n.COMBINE_MAX_MESSAGES=5,i=n.COMBINE_MAX_TIME_WINDOW=5e3,d=n.IMAGE_RETRY_DELAY=250,u=n.IMAGE_RETRY_LIMIT=10,v=n.IMAGE_RETRY_MESSAGE_AGE=6e4,l=n.MESSAGE_TYPE_UNKNOWN="unknown",s=n.MESSAGE_TYPE_INTERNAL="internal",h=n.MESSAGE_TYPE_SYSTEM="system",c=n.MESSAGE_TYPE_LOCALCHAT="localchat",p=n.MESSAGE_TYPE_NPCEMOTE="npcemote",f=n.MESSAGE_TYPE_PLOCALCHAT="plocalchat",g=n.MESSAGE_TYPE_VORE="vore",m=n.MESSAGE_TYPE_RADIO="radio",C=n.MESSAGE_TYPE_NIF="nif",O=n.MESSAGE_TYPE_INFO="info",T=n.MESSAGE_TYPE_WARNING="warning",b=n.MESSAGE_TYPE_DEADCHAT="deadchat",E=n.MESSAGE_TYPE_OOC="ooc",S=n.MESSAGE_TYPE_LOOC="looc",I=n.MESSAGE_TYPE_ADMINPM="adminpm",A=n.MESSAGE_TYPE_MENTORPM="mentorpm",N=n.MESSAGE_TYPE_COMBAT="combat",M=n.MESSAGE_TYPE_ADMINCHAT="adminchat",w=n.MESSAGE_TYPE_MODCHAT="modchat",R=n.MESSAGE_TYPE_RLOOC="rlooc",x=n.MESSAGE_TYPE_PRAYER="prayer",D=n.MESSAGE_TYPE_EVENTCHAT="eventchat",V=n.MESSAGE_TYPE_ADMINLOG="adminlog",U=n.MESSAGE_TYPE_ATTACKLOG="attacklog",L=n.MESSAGE_TYPE_DEBUG="debug",F=n.MESSAGE_TYPES=[{type:h,name:"System Messages",description:"Messages from your client, always enabled",selector:".boldannounce",important:!0},{type:c,name:"Local",description:"In-character local messages (say, emote, etc)",selector:".say, .emote, .emotesubtle"},{type:p,name:"NPC Emotes",description:"In-character emotes from NPCs",selector:".npcemote"},{type:f,name:"Local (Pred/Prey)",description:"Messages from / to absorbed or dominated prey",selector:".psay, .pemote"},{type:g,name:"Vorgan Messages",description:"Messages regarding vore interactions",selector:".valert, .vwarning, .vnotice, .vdanger"},{type:m,name:"Radio",description:"All departments of radio messages",selector:".alert, .minorannounce, .syndradio, .centradio, .airadio, .comradio, .secradio, .gangradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .binarysay, .newscaster, .resonate, .abductor, .alien, .changeling"},{type:C,name:"NIF",description:"Messages from the NIF itself and people inside",selector:".nif"},{type:O,name:"Info",description:"Non-urgent messages from the game and items",selector:".notice:not(.pm), .adminnotice, .info, .sinister, .cult, .infoplain, .announce, .hear, .smallnotice, .holoparasite, .boldnotice"},{type:T,name:"Warnings",description:"Urgent messages from the game and items",selector:".warning:not(.pm), .critical, .userdanger, .italics, .alertsyndie, .warningplain"},{type:b,name:"Deadchat",description:"All of deadchat",selector:".deadsay, .ghostalert"},{type:E,name:"OOC",description:"The bluewall of global OOC messages",selector:".ooc, .adminooc, .adminobserverooc, .oocplain"},{type:S,name:"Local OOC",description:"Local OOC messages, always enabled",selector:".looc",important:!0},{type:I,name:"Admin PMs",description:"Messages to/from admins (adminhelp)",selector:".pm, .adminhelp"},{type:A,name:"Mentor PMs",description:"Mentorchat and mentor pms",selector:".mentor_channel, .mentor"},{type:N,name:"Combat Log",description:"Urist McTraitor has stabbed you with a knife!",selector:".danger"},{type:l,name:"Unsorted",description:"Everything we could not sort, always enabled"},{type:M,name:"Admin Chat",description:"ASAY messages",selector:".admin_channel, .adminsay",admin:!0},{type:w,name:"Mod Chat",description:"MSAY messages",selector:".mod_channel",admin:!0},{type:D,name:"Event Chat",description:"ESAY messages",selector:".event_channel",admin:!0},{type:R,name:"Remote LOOC",description:"Remote LOOC messages",selector:".rlooc",admin:!0},{type:x,name:"Prayers",description:"Prayers from players",admin:!0},{type:V,name:"Admin Log",description:"ADMIN LOG: Urist McAdmin has jumped to coordinates X, Y, Z",selector:".log_message",admin:!0},{type:U,name:"Attack Log",description:"Urist McTraitor has shot John Doe",admin:!0},{type:L,name:"Debug Log",description:"DEBUG: SSPlanets subsystem Recover().",admin:!0}]},25457:function(y,n,t){"use strict";n.__esModule=!0,n.chatReducer=n.chatMiddleware=n.ChatTabs=n.ChatPanel=n.ChatPageSettings=void 0;var e=t(12104);n.ChatPageSettings=e.ChatPageSettings;var r=t(81230);n.ChatPanel=r.ChatPanel;var o=t(85896);n.ChatTabs=o.ChatTabs;var a=t(4165);n.chatMiddleware=a.chatMiddleware;var i=t(83547);n.chatReducer=i.chatReducer},4165:function(y,n,t){"use strict";n.__esModule=!0,n.chatMiddleware=void 0;var e=s(t(85964)),r=t(22800),o=t(93164),a=t(14173),i=t(8719),d=t(6098),u=t(64577),v=t(54587),l=t(26416);function s(E){return E&&E.__esModule?E:{default:E}}function h(E,S){var I=typeof Symbol!="undefined"&&E[Symbol.iterator]||E["@@iterator"];if(I)return(I=I.call(E)).next.bind(I);if(Array.isArray(E)||(I=c(E))||S&&E&&typeof E.length=="number"){I&&(E=I);var A=0;return function(){return A>=E.length?{done:!0}:{done:!1,value:E[A++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function c(E,S){if(E){if(typeof E=="string")return p(E,S);var I=Object.prototype.toString.call(E).slice(8,-1);if(I==="Object"&&E.constructor&&(I=E.constructor.name),I==="Map"||I==="Set")return Array.from(E);if(I==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(I))return p(E,S)}}function p(E,S){(S==null||S>E.length)&&(S=E.length);for(var I=0,A=new Array(S);I=0;--nt){var et=this.tryEntries[nt],st=et.completion;if(et.tryLoc==="root")return yt("end");if(et.tryLoc<=this.prev){var k=A.call(et,"catchLoc"),$=A.call(et,"finallyLoc");if(k&&$){if(this.prev=0;--yt){var nt=this.tryEntries[yt];if(nt.tryLoc<=this.prev&&A.call(nt,"finallyLoc")&&this.prev=0;--lt){var yt=this.tryEntries[lt];if(yt.finallyLoc===ot)return this.complete(yt.completion,yt.afterLoc),At(yt),W}}return J}(),catch:function(){function J(ot){for(var lt=this.tryEntries.length-1;lt>=0;--lt){var yt=this.tryEntries[lt];if(yt.tryLoc===ot){var nt=yt.completion;if(nt.type==="throw"){var et=nt.arg;At(yt)}return et}}throw new Error("illegal catch attempt")}return J}(),delegateYield:function(){function J(ot,lt,yt){return this.delegate={iterator:dt(ot),resultName:lt,nextLoc:yt},this.method==="next"&&(this.arg=E),W}return J}()},S}function g(E,S,I,A,N,M,w){try{var R=E[M](w),x=R.value}catch(D){I(D);return}R.done?S(x):Promise.resolve(x).then(A,N)}function m(E){return function(){var S=this,I=arguments;return new Promise(function(A,N){var M=E.apply(S,I);function w(x){g(M,A,N,w,R,"next",x)}function R(x){g(M,A,N,w,R,"throw",x)}w(void 0)})}}/**
+* @file
+* @copyright 2020 Aleksej Komarov
+* @license MIT
+*/var C=["a","iframe","link","video"],O=function(){var E=m(f().mark(function(){function S(I){var A,N,M;return f().wrap(function(){function w(R){for(;;)switch(R.prev=R.next){case 0:A=(0,l.selectChat)(I.getState()),N=Math.max(0,v.chatRenderer.messages.length-d.MAX_PERSISTED_MESSAGES),M=v.chatRenderer.messages.slice(N).map(function(x){return(0,u.serializeMessage)(x)}),r.storage.set("chat-state",A),r.storage.set("chat-messages",M),r.storage.set("chat-messages-archive",v.chatRenderer.archivedMessages.map(function(x){return(0,u.serializeMessage)(x)}));case 6:case"end":return R.stop()}}return w}(),S)}return S}()));return function(){function S(I){return E.apply(this,arguments)}return S}()}(),T=function(){var E=m(f().mark(function(){function S(I){var A,N,M,w,R,x,D,V;return f().wrap(function(){function U(L){for(;;)switch(L.prev=L.next){case 0:return L.next=2,Promise.all([r.storage.get("chat-state"),r.storage.get("chat-messages"),r.storage.get("chat-messages-archive")]);case 2:if(A=L.sent,N=A[0],M=A[1],w=A[2],!(N&&N.version<=4)){L.next=9;break}return I.dispatch((0,i.loadChat)()),L.abrupt("return");case 9:if(M){for(R=h(M);!(x=R()).done;)D=x.value,D.html&&(D.html=e.default.sanitize(D.html,{FORBID_TAGS:C}));V=[].concat(M,[(0,u.createMessage)({type:"internal/reconnected"})]),v.chatRenderer.processBatch(V,{prepend:!0,noarchive:!0})}w&&(v.chatRenderer.archivedMessages=w),I.dispatch((0,i.loadChat)(N));case 12:case"end":return L.stop()}}return U}(),S)}return S}()));return function(){function S(I){return E.apply(this,arguments)}return S}()}(),b=n.chatMiddleware=function(){function E(S){var I=!1,A=!1,N=[],M=[];return v.chatRenderer.events.on("batchProcessed",function(w){A&&S.dispatch((0,i.updateMessageCount)(w))}),v.chatRenderer.events.on("scrollTrackingChanged",function(w){S.dispatch((0,i.changeScrollTracking)(w))}),setInterval(function(){O(S)},d.MESSAGE_SAVE_INTERVAL),function(w){return function(R){var x=R.type,D=R.payload;if(I||(I=!0,T(S)),x==="chat/message"){var V;try{V=JSON.parse(D)}catch(tt){return}var U=V.sequence;if(N.includes(U))return;var L=N.length;t:if(L>0){if(M.includes(U)){M.splice(M.indexOf(U),1);break t}var F=N[L-1]+1;if(U!==F)for(var K=F;K=c.length?{done:!0}:{done:!1,value:c[g++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function a(c,p){if(c){if(typeof c=="string")return i(c,p);var f=Object.prototype.toString.call(c).slice(8,-1);if(f==="Object"&&c.constructor&&(f=c.constructor.name),f==="Map"||f==="Set")return Array.from(c);if(f==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(f))return i(c,p)}}function i(c,p){(p==null||p>c.length)&&(p=c.length);for(var f=0,g=new Array(p);f=0)&&(f[m]=c[m]);return f}function d(c,p){var f=typeof Symbol!="undefined"&&c[Symbol.iterator]||c["@@iterator"];if(f)return(f=f.call(c)).next.bind(f);if(Array.isArray(c)||(f=u(c))||p&&c&&typeof c.length=="number"){f&&(c=f);var g=0;return function(){return g>=c.length?{done:!0}:{done:!1,value:c[g++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function u(c,p){if(c){if(typeof c=="string")return v(c,p);var f=Object.prototype.toString.call(c).slice(8,-1);if(f==="Object"&&c.constructor&&(f=c.constructor.name),f==="Map"||f==="Set")return Array.from(c);if(f==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(f))return v(c,p)}}function v(c,p){(p==null||p>c.length)&&(p=c.length);for(var f=0,g=new Array(p);f
0&&(Y[vt.id]=Object.assign({},vt,{unreadCount:vt.unreadCount+X}))}return Object.assign({},p,{pageById:Y})}if(g===e.addChatPage.type){var ct;return Object.assign({},p,{currentPageId:m.id,pages:[].concat(p.pages,[m.id]),pageById:Object.assign({},p.pageById,(ct={},ct[m.id]=m,ct))})}if(g===e.changeChatPage.type){var pt,It=m.pageId,Mt=Object.assign({},p.pageById[It],{unreadCount:0});return Object.assign({},p,{currentPageId:It,pageById:Object.assign({},p.pageById,(pt={},pt[It]=Mt,pt))})}if(g===e.updateChatPage.type){var At,gt=m.pageId,dt=i(m,o),J=Object.assign({},p.pageById[gt],dt);return Object.assign({},p,{pageById:Object.assign({},p.pageById,(At={},At[gt]=J,At))})}if(g===e.toggleAcceptedType.type){var ot,lt=m.pageId,yt=m.type,nt=Object.assign({},p.pageById[lt]);return nt.acceptedTypes=Object.assign({},nt.acceptedTypes),nt.acceptedTypes[yt]=!nt.acceptedTypes[yt],Object.assign({},p,{pageById:Object.assign({},p.pageById,(ot={},ot[lt]=nt,ot))})}if(g===e.removeChatPage.type){var et=m.pageId,st=Object.assign({},p,{pages:[].concat(p.pages),pageById:Object.assign({},p.pageById)});return delete st.pageById[et],st.pages=st.pages.filter(function(k){return k!==et}),st.pages.length===0&&(st.pages.push(l.id),st.pageById[l.id]=l,st.currentPageId=l.id),(!st.currentPageId||st.currentPageId===et)&&(st.currentPageId=st.pages[0]),st}return p}return c}()},54587:function(y,n,t){"use strict";n.__esModule=!0,n.chatRenderer=n.TGUI_CHAT_COMPONENTS=n.TGUI_CHAT_ATTRIBUTES_TO_PROPS=void 0;var e=t(58734),r=t(20474),o=t(59641),a=t(37145),i=t(6098),d=t(64577),u=t(3517),v=t(35239);function l(A,N){var M=typeof Symbol!="undefined"&&A[Symbol.iterator]||A["@@iterator"];if(M)return(M=M.call(A)).next.bind(M);if(Array.isArray(A)||(M=s(A))||N&&A&&typeof A.length=="number"){M&&(A=M);var w=0;return function(){return w>=A.length?{done:!0}:{done:!1,value:A[w++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(A,N){if(A){if(typeof A=="string")return h(A,N);var M=Object.prototype.toString.call(A).slice(8,-1);if(M==="Object"&&A.constructor&&(M=A.constructor.name),M==="Map"||M==="Set")return Array.from(A);if(M==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(M))return h(A,N)}}function h(A,N){(N==null||N>A.length)&&(N=A.length);for(var M=0,w=new Array(N);M=i.IMAGE_RETRY_LIMIT){c.error("failed to load an image after "+w+" attempts");return}var R=M.src;M.src=null,M.src=R+"#"+w,M.setAttribute("data-reload-n",w+1)},i.IMAGE_RETRY_DELAY)},E=function(N){var M=N.node,w=N.times;if(!(!M||!w)){var R=M.querySelector(".Chat__badge"),x=R||document.createElement("div");x.textContent=w,x.className=(0,o.classes)(["Chat__badge","Chat__badge--animate"]),requestAnimationFrame(function(){x.className="Chat__badge"}),R||M.appendChild(x)}},S=function(){function A(){var M=this;this.loaded=!1,this.rootNode=null,this.queue=[],this.messages=[],this.archivedMessages=[],this.visibleMessages=[],this.page=null,this.events=new r.EventEmitter,this.scrollNode=null,this.scrollTracking=!0,this.handleScroll=function(w){var R=M.scrollNode,x=R.scrollHeight,D=R.scrollTop+R.offsetHeight,V=Math.abs(x-D)0&&(this.processBatch(this.queue),this.queue=[])}return M}(),N.assignStyle=function(){function M(w){w===void 0&&(w={});for(var R=0,x=Object.keys(w);R{}[\]:;'"|~`_\-\\/]/g,tt=String(U).split(",").map(function(At){return At.trim()}).filter(function(At){return At&&At.length>1&&W.test(At)&&((W.lastIndex=0)||!0)}),ft,vt;if(tt.length!==0){for(var X=[],H=l(tt),_;!(_=H()).done;){var at=_.value;if(at.charAt(0)==="/"&&at.charAt(at.length-1)==="/"){var ct=at.substring(1,at.length-1);if(/^(\[.*\]|\\.|.)$/.test(ct))continue;X.push(ct)}else ft||(ft=[]),at=at.replace(Y,"\\$&"),ft.push(at)}var pt=X.join("|"),It="g"+(z?"":"i");try{if(pt)vt=new RegExp("("+pt+")",It);else{var Mt=(K?"\\b":"")+"("+ft.join("|")+")"+(K?"\\b":"");vt=new RegExp(Mt,It)}}catch(At){vt=null}x.highlightParsers||(x.highlightParsers=[]),x.highlightParsers.push({highlightWords:ft,highlightRegex:vt,highlightColor:L,highlightWholeMessage:F})}})}return M}(),N.scrollToBottom=function(){function M(){this.scrollNode.scrollTop=this.scrollNode.scrollHeight}return M}(),N.changePage=function(){function M(w){if(!this.isReady()){this.page=w,this.tryFlushQueue();return}this.page=w,this.rootNode.textContent="",this.visibleMessages=[];for(var R=document.createDocumentFragment(),x,D=l(this.messages),V;!(V=D()).done;){var U=V.value;(0,d.canPageAcceptType)(w,U.type)&&(x=U.node,R.appendChild(x),this.visibleMessages.push(U))}x&&(this.rootNode.appendChild(R),x.scrollIntoView())}return M}(),N.getCombinableMessage=function(){function M(w){for(var R=Date.now(),x=this.visibleMessages.length,D=x-1,V=Math.max(0,x-i.COMBINE_MAX_MESSAGES),U=D;U>=V;U--){var L=this.visibleMessages[U],F=!L.type.startsWith(i.MESSAGE_TYPE_INTERNAL)&&(0,d.isSameMessage)(L,w)&&R0){this.visibleMessages=w.slice(R);for(var x=0;x0&&(this.messages=this.messages.slice(V),c.log("pruned "+V+" stored messages"))}}}return M}(),N.rebuildChat=function(){function M(){if(this.isReady()){for(var w=Math.max(0,this.messages.length-i.MAX_PERSISTED_MESSAGES),R=this.messages.slice(w),x=l(R),D;!(D=x()).done;){var V=D.value;V.node=void 0}this.rootNode.textContent="",this.messages=[],this.visibleMessages=[],this.processBatch(R,{notifyListeners:!1})}}return M}(),N.saveToDisk=function(){function M(){if(!Byond.IS_LTE_IE10){for(var w="",R=document.styleSheets,x=0;x\n\n\n\n'+L+"
\n\n