varu=function(e){vart=l.get("cardInfo.user.id"),n=App.__container__.lookup("controller:chat").get("currentRoom");n.send(-1===e?"/unban "+t:"/timeout "+t+" "+e)},d=function(e,t){varn=document.createElement("button");returnn.className="button",n.innerHTML=e,n.title="Timeout User for "+a.number_commas(t)+" Second"+(1!=t?"s":""),600===t?n.title="(T)"+n.title.substr(1):1===t&&(n.title="(P)urge - "+n.title),jQuery(n).tipsy(),n.addEventListener("click",u.bind(this,t)),n};c.appendChild(d("Purge",1));varh=document.createElement("span");h.className="right",c.appendChild(h);for(varp=0;p<i.length;p++)h.appendChild(d(i[p][0],i[p][1]));t.appendChild(c);varm=document.createElement("button");m.className="unban button glyph-only light",m.innerHTML=r,m.title="(U)nban User",jQuery(m).tipsy(),m.addEventListener("click",u.bind(this,-1));var_=t.querySelector("button.ban");_.setAttribute("title","(B)an User"),jQuery(_).after(m),this.$("button.timeout").remove()}varf=t.querySelector("button.mod");if(f){varg=l.get("cardInfo.isChannelOwner"),v=ffz.get_user();can_op=g||v&&v.is_admin||v&&v.is_staff,can_op||f.parentElement.removeChild(f)}varb=t.querySelector(".interface > button");b&&b.classList.contains("message-button")&&(b.innerHTML=s,b.classList.add("glyph-only"),b.classList.add("message"),b.title="Message User",jQuery(b).tipsy()),this.$().draggable({start:function(){t.focus()}}),t.focus()}catch(y){try{n.error("ModerationCardView didInsertElement: "+y)}catch(y){}}}})},n.chat_commands.purge=n.chat_commands.p=function(e,t){if(!t||!t.length)return"Purge Usage: /p username [more usernames separated by spaces]";if(t.length>10)return"Please only purge up to 10 users at once.";for(varn=0;n<t.length;n++){vara=t[n];a&&e.room.send("/timeout "+a+" 1")}},n.chat_commands.p.enabled=function(){returnthis.settings.enhanced_moderation},n.chat_commands.t=function(e,t){returnt&&t.length?voide.room.send("/timeout "+t.join(" ")):"Timeout Usage: /t username [duration]"},n.chat_commands.t.enabled=function(){returnthis.settings.enhanced_moderation},n.chat_commands.b=function(e,t){if(!t||!t.length)return"Ban Usage: /b username [more usernames separated by spaces]";if(t.length>10)return"Please only ban up to 10 users at once.";for(varn=0;n<t.length;n++){vara=t[n];a&&e.room.send("/ban "+a)}},n.chat_commands.b.enabled=function(){returnthis.settings.enhanced_moderation},n.chat_commands.u=function(e,t){if(!t||!t.length)return"Unban Usage: /u username [more usernames separated by spaces]";if(t.length>10)return"Please only unban up to 10 users at once.";for(varn=0;n<t.length;n++){vara=t[n];a&&e.room.send("/unban "+a)}},n.chat_commands.u.enabled=function(){returnthis.settings.enhanced_moderation}},{"../utils":28}],9:[function(t){varn=e.FrankerFaceZ,a=/\.([\w\-_]+)\s*?\{content:\s*?"([^"]+)";\s*?background-image:\s*?url\("([^"]+)"\);\s*?height:\s*?(\d+)px;\s*?width:\s*?(\d+)px;\s*?margin:([^;}]+);?([^}]*)\}/gm,o=/[^\n}]*\.badges\s+\.moderator\s*{\s*background-image:\s*url\(\s*['"]([^'"]+)['"][^}]+(?:}|$)/,i=/^_([^_]+)_\d+$/,s=t("../constants"),r=t("../utils"),l=function(e){returne.moderator_badge?'.chat-line[data-room="'+e.id+'"] .badges .moderator:not(.ffz-badge-replacement) { background-image:url("'+e.moderator_badge+'") !important; }':""};n.prototype.setup_room=function(){this.rooms={},this.log("Creating room style element.");vare=this._room_style=document.createElement("style");e.id="ffz-room-css",document.head.appendChild(e),this.log("Hooking the Ember Room model.");vart=App.__container__.lookup("controller:room");if(t){varn=t._actions.banUser;t._actions.banUser=function(e){n.bind(this)(e),this.get("model").clearMessages(e.user)}}vara=App.__container__.resolve("model:room");this._modify_room(a);varo=a.instances;for(variino)if(o.hasOwnProperty(i)){vars=o[i];this.add_room(s.id,s),this._modify_room(s)}},n.chat_commands={},n.ffz_commands={},n.prototype.room_message=function(e,t){varn=t.split("\n");if(this.has_bttv)for(vara=0;a<n.length;a++)BetterTTV.chat.handlers.onPrivmsg(e.id,{style:"admin",date:newDate,from:"jtv",message:n[a]});elsefor(
varg=!1;f.querySelector("#ffz-debug-logs").addEventListener("click",function(){g||(g=!0,i._pastebin(i._log_data.join("\n"),function(e){g=!1,e?prompt("Your FrankerFaceZ logs have been uploaded to the URL:",e):alert("There was an error uploading the FrankerFaceZ logs.")}))}),t.appendChild(f)}}},{"../constants":3}],20:[function(t){varn=e.FrankerFaceZ,a=t("../constants");n.settings_info.twitch_chat_dark={type:"boolean",value:!1,visible:!1},n.settings_info.dark_twitch={type:"boolean",value:!1,no_bttv:!0,name:"Dark Twitch",help:"Apply a dark background to channels and other related pages for easier viewing.",on_update:function(t){if(!this.has_bttv){document.body.classList.toggle("ffz-dark",t);varn=e.App?App.__container__.lookup("controller:settings").get("model"):void0;t?(this._load_dark_css(),n&&this.settings.set("twitch_chat_dark",n.get("darkMode")),n&&n.set("darkMode",!0)):n&&n.set("darkMode",this.settings.twitch_chat_dark)}}},n.prototype.setup_dark=function(){this.has_bttv||(document.body.classList.toggle("ffz-dark",this.settings.dark_twitch),this.settings.dark_twitch&&e.App&&App.__container__.lookup("controller:settings").set("model.darkMode",!0),this.settings.dark_twitch&&this._load_dark_css())},n.prototype._load_dark_css=function(){if(!this._dark_style){this.log("Injecting FrankerFaceZ Dark Twitch CSS.");vare=this._dark_style=document.createElement("link");e.id="ffz-dark-css",e.setAttribute("rel","stylesheet"),e.setAttribute("href",a.SERVER+"script/dark.css?_="+Date.now()),document.head.appendChild(e)}}},{"../constants":3}],21:[function(t){varn=e.FrankerFaceZ,a=t("../constants"),o=t("../utils"),i="http://static-cdn.jtvnw.net/emoticons/v1/";n.prototype.setup_menu=function(){this.log("Installing mouse-up event to auto-close menus.");vare=this;jQuery(document).mouseup(function(t){varn,a=e._popup;a&&(a=jQuery(a),n=a.parent(),n.is(t.target)||0!==n.has(t.target).length||(a.remove(),deletee._popup,e._popup_kill&&e._popup_kill(),deletee._popup_kill))}),document.body.classList.toggle("ffz-menu-replace",this.settings.replace_twitch_menu)},n.menu_pages={},n.prototype.build_ui_popup=function(e){vart=this._popup;if(t)returnt.parentElement.removeChild(t),deletethis._popup,this._popup_kill&&this._popup_kill(),voiddeletethis._popup_kill;varo=document.createElement("div"),i=document.createElement("div"),s=document.createElement("ul"),r=this.has_bttv?BetterTTV.settings.get("darkenedMode"):!1;o.className="emoticon-selector chat-menu ffz-ui-popup",i.className="emoticon-selector-box dropmenu",o.appendChild(i),o.classList.toggle("dark",r);varl=document.createElement("div");l.className="ffz-ui-menu-page",i.appendChild(l),s.className="menu clearfix",i.appendChild(s);varc=document.createElement("li");c.className="title",c.innerHTML="<span>"+(a.DEBUG?"[DEV] ":"")+"FrankerFaceZ</span>",s.appendChild(c);varu=[];for(vardinn.menu_pages)if(n.menu_pages.hasOwnProperty(d)){varh=n.menu_pages[d];h&&(!h.hasOwnProperty("visible")||h.visible&&("function"!=typeofh.visible||h.visible.bind(this)()))&&u.push([h.sort_order||0,d,h])}u.sort(function(e,t){if(e[0]<t[0])return1;if(e[0]>t[0])return-1;varn=e[1].toLowerCase(),a=t[1].toLowerCase();returna>n?1:n>a?-1:0});for(varp=0;p<u.length;p++){vard=u[p][1],h=u[p][2],m=document.createElement("li"),_=document.createElement("a");m.className="item",m.id="ffz-menu-page-"+d,_.title=h.name,_.innerHTML=h.icon,jQuery(_).tipsy(),_.addEventListener("click",this._ui_change_page.bind(this,e,i,s,l,d)),m.appendChild(_),s.appendChild(m)}this._ui_change_page(e,i,s,l,this._last_page||"channel"),this._popup=o,l.style.maxHeight=Math.max(200,e.$().height()-172)+"px",e.$(".chat-interface").append(o)},n.prototype._ui_change_page=function(e,t,a,o,i){this._last_page=i,o.innerHTML="",o.setAttribute("data-page",i);vars=document.querySelector(".app-main")||document.querySelector(".ember-chat-container");t.style.maxWidth=!n.menu_pages[i].wide||"function"==typeofn.menu_pages[i].wide&&!n.menu_pages[i].wide.bind(this)()?"":(s.offsetWidth<640?s.offsetWidth-40:600)+"px";for(varr=a.querySelectorAll("li.active"),l=0;l<r.