@banta/sdk 3.2.2 โ†’ 3.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("rxjs"),require("rxjs/operators"),require("@angular/core"),require("@angular/common"),require("@angular/platform-browser"),require("@angular/material/icon"),require("@angular/material/button"),require("@angular/material/form-field"),require("@angular/material/input"),require("@angular/forms"),require("subsink"),require("@angular/material/dialog"),require("@angular/material/menu"),require("@angular/material/progress-spinner"),require("@angular/cdk/text-field"),require("@angular/material/tooltip")):"function"==typeof define&&define.amd?define("@banta/sdk",["exports","rxjs","rxjs/operators","@angular/core","@angular/common","@angular/platform-browser","@angular/material/icon","@angular/material/button","@angular/material/form-field","@angular/material/input","@angular/forms","subsink","@angular/material/dialog","@angular/material/menu","@angular/material/progress-spinner","@angular/cdk/text-field","@angular/material/tooltip"],r):r(((e="undefined"!=typeof globalThis?globalThis:e||self).banta=e.banta||{},e.banta.sdk={}),e.rxjs,e.rxjs.operators,e.ng.core,e.ng.common,e.ng.platformBrowser,e.ng.material.icon,e.ng.material.button,e.ng.material.formField,e.ng.material.input,e.ng.forms,e.subsink,e.ng.material.dialog,e.ng.material.menu,e.ng.material.progressSpinner,e.ng.cdk.textField,e.ng.material.tooltip)}(this,(function(e,r,a,t,o,n,s,c,i,l,d,y,g,u,h,p,m){"use strict";var b=function(){function e(){this._userChanged=new r.BehaviorSubject(null)}return Object.defineProperty(e.prototype,"userChanged",{get:function(){return this._userChanged},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"user",{get:function(){return this._user},set:function(e){this._user=e,this._userChanged.next(e)},enumerable:!1,configurable:!0}),e}();b.decorators=[{type:t.Injectable}];var f=function(){function e(){this.relative="",this.tooltip="",this.updateInterval=null,this.showAbsolute=!1}return e.prototype.ngOnDestroy=function(){this.updateInterval&&clearInterval(this.updateInterval)},Object.defineProperty(e.prototype,"value",{get:function(){return this._value},set:function(e){this._value=e,this.update()},enumerable:!1,configurable:!0}),e.prototype.update=function(){var e=this,r=Date.now()-this.value,a=6e4,t=36e5,o=24*t,n=7*o,s=30*o;this.showAbsolute=!1;var c=0;if(r>31536e6)return this.showAbsolute=!0,void(this.relative="abs");if(r>s){var i=Math.floor(r/s);this.relative=1===i?i+" month ago":i+" months ago"}else if(r>n){var l=Math.floor(r/n);this.relative=1===l?l+" week ago":l+" weeks ago"}else if(r>o){var d=Math.floor(r/o);this.relative=1===d?d+" day ago":d+" days ago"}else if(r>t){var y=Math.floor(r/t);this.relative=1===y?y+" hour ago":y+" hours ago",c=18e5}else if(r>a){var g=Math.floor(r/a);this.relative=1===g?g+" minute ago":g+" minutes ago",c=45e3}else r>3e4?(this.relative="about a minute ago",c=6e4):(this.relative="just now",c=3e4);"undefined"!=typeof window&&(clearInterval(this.updateInterval),c>0&&(this.updateInterval=setInterval((function(){return e.update()}))))},e}();f.decorators=[{type:t.Component,args:[{selector:"banta-timestamp",template:'\n <span *ngIf="showAbsolute" [title]="value | date : \'short\'">\n {{value | date : \'shortDate\'}}\n </span>\n <span *ngIf="!showAbsolute" [title]="value | date : \'short\'">\n {{relative}}\n </span>\n ',styles:[""]}]}],f.propDecorators={value:[{type:t.Input}]};var w=function(){};w.decorators=[{type:t.Injectable}];var k=[f],_=function(){};_.decorators=[{type:t.NgModule,args:[{declarations:k,imports:[o.CommonModule],exports:k}]}];function v(e,r,a,t){return new(a||(a=Promise))((function(o,n){function s(e){try{i(t.next(e))}catch(e){n(e)}}function c(e){try{i(t.throw(e))}catch(e){n(e)}}function i(e){var r;e.done?o(e.value):(r=e.value,r instanceof a?r:new a((function(e){e(r)}))).then(s,c)}i((t=t.apply(e,r||[])).next())}))}function x(e,r){var a,t,o,n,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return n={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(n[Symbol.iterator]=function(){return this}),n;function c(n){return function(c){return function(n){if(a)throw new TypeError("Generator is already executing.");for(;s;)try{if(a=1,t&&(o=2&n[0]?t.return:n[0]?t.throw||((o=t.return)&&o.call(t),0):t.next)&&!(o=o.call(t,n[1])).done)return o;switch(t=0,o&&(n=[2&n[0],o.value]),n[0]){case 0:case 1:o=n;break;case 4:return s.label++,{value:n[1],done:!1};case 5:s.label++,t=n[1],n=[0];continue;case 7:n=s.ops.pop(),s.trys.pop();continue;default:if(!(o=s.trys,(o=o.length>0&&o[o.length-1])||6!==n[0]&&2!==n[0])){s=0;continue}if(3===n[0]&&(!o||n[1]>o[0]&&n[1]<o[3])){s.label=n[1];break}if(6===n[0]&&s.label<o[1]){s.label=o[1],o=n;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(n);break}o[2]&&s.ops.pop(),s.trys.pop();continue}n=r.call(e,s)}catch(e){n=[6,e],t=0}finally{a=o=0}if(5&n[0])throw n[1];return{value:n[0]?n[1]:void 0,done:!0}}([n,c])}}}Object.create;function j(e){var r="function"==typeof Symbol&&Symbol.iterator,a=r&&e[r],t=0;if(a)return a.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}};throw new TypeError(r?"Object is not iterable.":"Symbol.iterator is not defined.")}function M(e,r){var a="function"==typeof Symbol&&e[Symbol.iterator];if(!a)return e;var t,o,n=a.call(e),s=[];try{for(;(void 0===r||r-- >0)&&!(t=n.next()).done;)s.push(t.value)}catch(e){o={error:e}}finally{try{t&&!t.done&&(a=n.return)&&a.call(n)}finally{if(o)throw o.error}}return s}function S(){for(var e=[],r=0;r<arguments.length;r++)e=e.concat(M(arguments[r]));return e}Object.create;var I={grinning:{keywords:["face","smile","happy","joy",":D","grin"],char:"๐Ÿ˜€",category:"people"},grimacing:{keywords:["face","grimace","teeth"],char:"๐Ÿ˜ฌ",category:"people"},grin:{keywords:["face","happy","smile","joy","kawaii"],char:"๐Ÿ˜",category:"people"},joy:{keywords:["face","cry","tears","weep","happy","happytears","haha"],char:"๐Ÿ˜‚",category:"people"},smiley:{keywords:["face","happy","joy","haha",":D",":)","smile","funny"],char:"๐Ÿ˜ƒ",category:"people"},smile:{keywords:["face","happy","joy","funny","haha","laugh","like",":D",":)"],char:"๐Ÿ˜„",category:"people"},sweat_smile:{keywords:["face","hot","happy","laugh","sweat","smile","relief"],char:"๐Ÿ˜…",category:"people"},laughing:{keywords:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],char:"๐Ÿ˜†",category:"people"},innocent:{keywords:["face","angel","heaven","halo"],char:"๐Ÿ˜‡",category:"people"},wink:{keywords:["face","happy","mischievous","secret",";)","smile"],char:"๐Ÿ˜‰",category:"people"},blush:{keywords:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],char:"๐Ÿ˜Š",category:"people"},slightly_smiling:{keywords:["face","smile"],char:"๐Ÿ™‚",category:"people"},upside_down:{keywords:["face","flipped","silly","smile"],char:"๐Ÿ™ƒ",category:"people"},relaxed:{keywords:["face","blush","massage","happiness"],char:"โ˜บ๏ธ",category:"people"},yum:{keywords:["happy","joy","tongue","smile","face","silly","yummy","nom"],char:"๐Ÿ˜‹",category:"people"},relieved:{keywords:["face","relaxed","phew","massage","happiness"],char:"๐Ÿ˜Œ",category:"people"},heart_eyes:{keywords:["face","love","like","affection","valentines","infatuation","crush","heart"],char:"๐Ÿ˜",category:"people"},kissing_heart:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],char:"๐Ÿ˜˜",category:"people"},kissing:{keywords:["love","like","face","3","valentines","infatuation","kiss"],char:"๐Ÿ˜—",category:"people"},kissing_smiling_eyes:{keywords:["face","affection","valentines","infatuation","kiss"],char:"๐Ÿ˜™",category:"people"},kissing_closed_eyes:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],char:"๐Ÿ˜š",category:"people"},stuck_out_tongue_winking_eye:{keywords:["face","prank","childish","playful","mischievous","smile","wink","tongue"],char:"๐Ÿ˜œ",category:"people"},stuck_out_tongue_closed_eyes:{keywords:["face","prank","playful","mischievous","smile","tongue"],char:"๐Ÿ˜",category:"people"},stuck_out_tongue:{keywords:["face","prank","childish","playful","mischievous","smile","tongue"],char:"๐Ÿ˜›",category:"people"},money_mouth:{keywords:["face","rich","dollar","money"],char:"๐Ÿค‘",category:"people"},nerd:{keywords:["face","nerdy","geek","dork"],char:"๐Ÿค“",category:"people"},sunglasses:{keywords:["face","cool","smile","summer","beach","sunglass"],char:"๐Ÿ˜Ž",category:"people"},hugging:{keywords:["face","smile","hug"],char:"๐Ÿค—",category:"people"},smirk:{keywords:["face","smile","mean","prank","smug","sarcasm"],char:"๐Ÿ˜",category:"people"},no_mouth:{keywords:["face","hellokitty"],char:"๐Ÿ˜ถ",category:"people"},neutral_face:{keywords:["indifference","meh",":|","neutral"],char:"๐Ÿ˜",category:"people"},expressionless:{keywords:["face","indifferent","-_-","meh","deadpan"],char:"๐Ÿ˜‘",category:"people"},unamused:{keywords:["indifference","bored","straight face","serious","sarcasm"],char:"๐Ÿ˜’",category:"people"},rolling_eyes:{keywords:["face","eyeroll","frustrated"],char:"๐Ÿ™„",category:"people"},thinking:{keywords:["face","hmmm","think","consider"],char:"๐Ÿค”",category:"people"},flushed:{keywords:["face","blush","shy","flattered"],char:"๐Ÿ˜ณ",category:"people"},disappointed:{keywords:["face","sad","upset","depressed",":("],char:"๐Ÿ˜ž",category:"people"},worried:{keywords:["face","concern","nervous",":("],char:"๐Ÿ˜Ÿ",category:"people"},angry:{keywords:["mad","face","annoyed","frustrated"],char:"๐Ÿ˜ ",category:"people"},rage:{keywords:["angry","mad","hate","despise"],char:"๐Ÿ˜ก",category:"people"},pensive:{keywords:["face","sad","depressed","okay","upset"],char:"๐Ÿ˜”",category:"people"},confused:{keywords:["face","indifference","huh","weird","hmmm",":/"],char:"๐Ÿ˜•",category:"people"},slightly_sad:{keywords:["face","frowning","disappointed","sad","upset"],char:"๐Ÿ™",category:"people"},white_frowning:{keywords:["face","sad","upset","frown"],char:"โ˜น",category:"people"},persevere:{keywords:["face","sick","no","upset","oops"],char:"๐Ÿ˜ฃ",category:"people"},confounded:{keywords:["face","confused","sick","unwell","oops",":S"],char:"๐Ÿ˜–",category:"people"},tired_face:{keywords:["sick","whine","upset","frustrated"],char:"๐Ÿ˜ซ",category:"people"},weary:{keywords:["face","tired","sleepy","sad","frustrated","upset"],char:"๐Ÿ˜ฉ",category:"people"},triumph:{keywords:["face","gas","phew","proud","pride"],char:"๐Ÿ˜ค",category:"people"},open_mouth:{keywords:["face","surprise","impressed","wow","whoa",":O"],char:"๐Ÿ˜ฎ",category:"people"},scream:{keywords:["face","munch","scared","omg"],char:"๐Ÿ˜ฑ",category:"people"},fearful:{keywords:["face","scared","terrified","nervous","oops","huh"],char:"๐Ÿ˜จ",category:"people"},cold_sweat:{keywords:["face","nervous","sweat"],char:"๐Ÿ˜ฐ",category:"people"},hushed:{keywords:["face","woo","shh"],char:"๐Ÿ˜ฏ",category:"people"},frowning:{keywords:["face","aw","what"],char:"๐Ÿ˜ฆ",category:"people"},anguished:{keywords:["face","stunned","nervous"],char:"๐Ÿ˜ง",category:"people"},cry:{keywords:["face","tears","sad","depressed","upset",":'("],char:"๐Ÿ˜ข",category:"people"},disappointed_relieved:{keywords:["face","phew","sweat","nervous"],char:"๐Ÿ˜ฅ",category:"people"},sleepy:{keywords:["face","tired","rest","nap"],char:"๐Ÿ˜ช",category:"people"},sweat:{keywords:["face","hot","sad","tired","exercise"],char:"๐Ÿ˜“",category:"people"},sob:{keywords:["face","cry","tears","sad","upset","depressed"],char:"๐Ÿ˜ญ",category:"people"},dizzy_face:{keywords:["spent","unconscious","xox","dizzy"],char:"๐Ÿ˜ต",category:"people"},astonished:{keywords:["face","xox","surprised","poisoned"],char:"๐Ÿ˜ฒ",category:"people"},zipper_mouth:{keywords:["face","sealed","zipper","secret"],char:"๐Ÿค",category:"people"},mask:{keywords:["face","sick","ill","disease"],char:"๐Ÿ˜ท",category:"people"},thermometer_face:{keywords:["sick","temperature","thermometer","cold"],char:"๐Ÿค’",category:"people"},bandage_face:{keywords:["injured","clumsy","bandage","hurt"],char:"๐Ÿค•",category:"people"},sleeping:{keywords:["face","tired","sleepy","night","zzz"],char:"๐Ÿ˜ด",category:"people"},zzz:{keywords:["sleepy","tired"],char:"๐Ÿ’ค",category:"people"},hankey:{keywords:["poop","shitface","fail","turd","shit"],char:"๐Ÿ’ฉ",category:"people"},smiling_imp:{keywords:["devil","horns"],char:"๐Ÿ˜ˆ",category:"people"},imp:{keywords:["devil","angry","horns"],char:"๐Ÿ‘ฟ",category:"people"},japanese_ogre:{keywords:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],char:"๐Ÿ‘น",category:"people"},japanese_goblin:{keywords:["red","evil","mask","monster","scary","creepy","japanese","goblin"],char:"๐Ÿ‘บ",category:"people"},skull:{keywords:["dead","skeleton","creepy"],char:"๐Ÿ’€",category:"people"},ghost:{keywords:["halloween","spooky","scary"],char:"๐Ÿ‘ป",category:"people"},alien:{keywords:["UFO","paul","weird","outer_space"],char:"๐Ÿ‘ฝ",category:"people"},robot:{keywords:["computer","machine"],char:"๐Ÿค–",category:"people"},smiley_cat:{keywords:["animal","cats","happy","smile"],char:"๐Ÿ˜บ",category:"people"},smile_cat:{keywords:["animal","cats","smile"],char:"๐Ÿ˜ธ",category:"people"},joy_cat:{keywords:["animal","cats","haha","happy","tears"],char:"๐Ÿ˜น",category:"people"},heart_eyes_cat:{keywords:["animal","love","like","affection","cats","valentines","heart"],char:"๐Ÿ˜ป",category:"people"},smirk_cat:{keywords:["animal","cats","smirk"],char:"๐Ÿ˜ผ",category:"people"},kissing_cat:{keywords:["animal","cats","kiss"],char:"๐Ÿ˜ฝ",category:"people"},scream_cat:{keywords:["animal","cats","munch","scared","scream"],char:"๐Ÿ™€",category:"people"},crying_cat_face:{keywords:["animal","tears","weep","sad","cats","upset","cry"],char:"๐Ÿ˜ฟ",category:"people"},pouting_cat:{keywords:["animal","cats"],char:"๐Ÿ˜พ",category:"people"},raised_hands:{keywords:["gesture","hooray","yea","celebration","hands"],char:"๐Ÿ™Œ",category:"people"},clap:{keywords:["hands","praise","applause","congrats","yay"],char:"๐Ÿ‘",category:"people"},wave:{keywords:["hands","gesture","goodbye","solong","farewell","hello","palm"],char:"๐Ÿ‘‹",category:"people"},"+1":{keywords:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],char:"๐Ÿ‘",category:"people"},minus1:{keywords:["thumbsdown","no","dislike","hand"],char:"๐Ÿ‘Ž",category:"people"},facepunch:{keywords:["angry","violence","fist","hit","attack","hand"],char:"๐Ÿ‘Š",category:"people"},fist:{keywords:["fingers","hand","grasp"],char:"โœŠ",category:"people"},v:{keywords:["fingers","ohyeah","hand","peace","victory","two"],char:"โœŒ๏ธ",category:"people"},ok_hand:{keywords:["fingers","limbs","perfect","ok"],char:"๐Ÿ‘Œ",category:"people"},hand:{keywords:["fingers","stop","highfive","palm","ban","raised_hand"],char:"โœ‹",category:"people"},open_hands:{keywords:["fingers","butterfly","hands","open"],char:"๐Ÿ‘",category:"people"},muscle:{keywords:["arm","flex","hand","summer","strong","biceps"],char:"๐Ÿ’ช",category:"people"},pray:{keywords:["please","hope","wish","namaste","highfive"],char:"๐Ÿ™",category:"people"},point_up:{keywords:["hand","fingers","direction","up"],char:"โ˜๏ธ",category:"people"},point_up_2:{keywords:["fingers","hand","direction","up"],char:"๐Ÿ‘†",category:"people"},point_down:{keywords:["fingers","hand","direction","down"],char:"๐Ÿ‘‡",category:"people"},point_left:{keywords:["direction","fingers","hand","left"],char:"๐Ÿ‘ˆ",category:"people"},point_right:{keywords:["fingers","hand","direction","right"],char:"๐Ÿ‘‰",category:"people"},middle_finger:{keywords:["hand","fingers","rude"],char:"๐Ÿ–•",category:"people"},splayed_fingers:{keywords:["hand","fingers","palm"],char:"๐Ÿ–",category:"people"},sign_of_horns:{keywords:["hand","fingers","evil_eye","metal","rock_on"],char:"๐Ÿค˜",category:"people"},vulcan_salute:{keywords:["hand","fingers","spock","star trek"],char:"๐Ÿ––",category:"people"},writing_hand:{keywords:["pen","stationery","write"],char:"โœ",category:"people"},nail_care:{keywords:["beauty","manicure","finger","fashion","nail"],char:"๐Ÿ’…",category:"people"},lips:{keywords:["mouth","kiss"],char:"๐Ÿ‘„",category:"people"},tongue:{keywords:["mouth","playful"],char:"๐Ÿ‘…",category:"people"},ear:{keywords:["face","hear","sound","listen"],char:"๐Ÿ‘‚",category:"people"},nose:{keywords:["smell","sniff"],char:"๐Ÿ‘ƒ",category:"people"},eye:{keywords:["face","look","see","watch","stare"],char:"๐Ÿ‘",category:"people"},eyes:{keywords:["look","watch","stalk","peek","see"],char:"๐Ÿ‘€",category:"people"},bust_in_silhouette:{keywords:["user","person","human"],char:"๐Ÿ‘ค",category:"people"},busts_in_silhouette:{keywords:["user","person","human","group","team"],char:"๐Ÿ‘ฅ",category:"people"},speaking_head:{keywords:["user","person","human"],char:"๐Ÿ—ฃ",category:"people"},baby:{keywords:["child","boy","girl","toddler"],char:"๐Ÿ‘ถ",category:"people"},boy:{keywords:["man","male","guy","teenager"],char:"๐Ÿ‘ฆ",category:"people"},girl:{keywords:["female","woman","teenager"],char:"๐Ÿ‘ง",category:"people"},man:{keywords:["mustache","father","dad","guy","classy","sir","moustache"],char:"๐Ÿ‘จ",category:"people"},woman:{keywords:["female","girls","lady"],char:"๐Ÿ‘ฉ",category:"people"},person_with_blond_hair:{keywords:["man","male","boy","blonde","guy","person"],char:"๐Ÿ‘ฑ",category:"people"},older_man:{keywords:["human","male","men","old","elder","senior"],char:"๐Ÿ‘ด",category:"people"},older_woman:{keywords:["human","female","women","lady","old","elder","senior"],char:"๐Ÿ‘ต",category:"people"},man_with_gua_pi_mao:{keywords:["male","boy","chinese"],char:"๐Ÿ‘ฒ",category:"people"},man_with_turban:{keywords:["male","indian","hinduism","arabs"],char:"๐Ÿ‘ณ",category:"people"},cop:{keywords:["man","police","law","legal","enforcement","arrest","911"],char:"๐Ÿ‘ฎ",category:"people"},construction_worker:{keywords:["male","human","wip","guy","build","construction","worker","labor"],char:"๐Ÿ‘ท",category:"people"},guardsman:{keywords:["uk","gb","british","male","guy","royal"],char:"๐Ÿ’‚",category:"people"},sleuth:{keywords:["human","spy","detective"],char:"๐Ÿ•ต",category:"people"},santa:{keywords:["festival","man","male","xmas","father christmas"],char:"๐ŸŽ…",category:"people"},angel:{keywords:["heaven","wings","halo"],char:"๐Ÿ‘ผ",category:"people"},princess:{keywords:["girl","woman","female","blond","crown","royal","queen"],char:"๐Ÿ‘ธ",category:"people"},bride_with_veil:{keywords:["couple","marriage","wedding","woman","bride"],char:"๐Ÿ‘ฐ",category:"people"},runner:{keywords:["man","walking","exercise","race","running"],char:"๐Ÿƒ",category:"people"},walking:{keywords:["human","feet","steps"],char:"๐Ÿšถ",category:"people"},dancer:{keywords:["female","girl","woman","fun"],char:"๐Ÿ’ƒ",category:"people"},dancers:{keywords:["female","bunny","women","girls"],char:"๐Ÿ‘ฏ",category:"people"},couple:{keywords:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],char:"๐Ÿ‘ซ",category:"people"},two_men_holding_hands:{keywords:["pair","couple","love","like","bromance","friendship","people","human"],char:"๐Ÿ‘ฌ",category:"people"},two_women_holding_hands:{keywords:["pair","friendship","couple","love","like","female","people","human"],char:"๐Ÿ‘ญ",category:"people"},bow:{keywords:["man","male","boy"],char:"๐Ÿ™‡",category:"people"},information_desk_person:{keywords:["female","girl","woman","human","information"],char:"๐Ÿ’",category:"people"},no_good:{keywords:["female","girl","woman","nope"],char:"๐Ÿ™…",category:"people"},ok_woman:{keywords:["women","girl","female","pink","human","woman"],char:"๐Ÿ™†",category:"people"},raising_hand:{keywords:["female","girl","woman"],char:"๐Ÿ™‹",category:"people"},person_with_pouting_face:{keywords:["female","girl","woman"],char:"๐Ÿ™Ž",category:"people"},person_frowning:{keywords:["female","girl","woman","sad","depressed","discouraged","unhappy"],char:"๐Ÿ™",category:"people"},haircut:{keywords:["female","girl","woman"],char:"๐Ÿ’‡",category:"people"},massage:{keywords:["female","girl","woman","head"],char:"๐Ÿ’†",category:"people"},couple_with_heart:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:"๐Ÿ’‘",category:"people"},female_couple_with_heart:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:"๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘ฉ",category:"people"},male_couple_with_heart:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:"๐Ÿ‘จโ€โค๏ธโ€๐Ÿ‘จ",category:"people"},couplekiss:{keywords:["pair","valentines","love","like","dating","marriage"],char:"๐Ÿ’",category:"people"},female_couplekiss:{keywords:["pair","valentines","love","like","dating","marriage"],char:"๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘ฉ",category:"people"},male_couplekiss:{keywords:["pair","valentines","love","like","dating","marriage"],char:"๐Ÿ‘จโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ",category:"people"},family:{keywords:["home","parents","child","mom","dad","father","mother","people","human"],char:"๐Ÿ‘ช",category:"people"},family_man_woman_girl:{keywords:["home","parents","people","human","child"],char:"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง",category:"people"},family_man_woman_girl_boy:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ",category:"people"},family_man_woman_boys:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ",category:"people"},family_man_woman_girls:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง",category:"people"},family_women_boy:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ",category:"people"},family_women_girl:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ง",category:"people"},family_women_girl_boy:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ",category:"people"},family_women_boys:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ",category:"people"},family_women_girls:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง",category:"people"},family_men_boy:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ",category:"people"},family_men_girl:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ง",category:"people"},family_men_girl_boy:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ",category:"people"},family_men_boys:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ",category:"people"},family_men_girls:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง",category:"people"},womans_clothes:{keywords:["fashion","shopping","female"],char:"๐Ÿ‘š",category:"people"},shirt:{keywords:["fashion","cloth","casual","tshirt","tee"],char:"๐Ÿ‘•",category:"people"},jeans:{keywords:["fashion","shopping"],char:"๐Ÿ‘–",category:"people"},necktie:{keywords:["shirt","suitup","formal","fashion","cloth","business"],char:"๐Ÿ‘”",category:"people"},dress:{keywords:["clothes","fashion","shopping"],char:"๐Ÿ‘—",category:"people"},bikini:{keywords:["swimming","female","woman","girl","fashion","beach","summer"],char:"๐Ÿ‘™",category:"people"},kimono:{keywords:["dress","fashion","women","female","japanese"],char:"๐Ÿ‘˜",category:"people"},lipstick:{keywords:["female","girl","fashion","woman"],char:"๐Ÿ’„",category:"people"},kiss:{keywords:["face","lips","love","like","affection","valentines"],char:"๐Ÿ’‹",category:"people"},footprints:{keywords:["feet","tracking","walking","beach"],char:"๐Ÿ‘ฃ",category:"people"},high_heel:{keywords:["fashion","shoes","female","pumps","stiletto"],char:"๐Ÿ‘ ",category:"people"},sandal:{keywords:["shoes","fashion","flip flops"],char:"๐Ÿ‘ก",category:"people"},boot:{keywords:["shoes","fashion"],char:"๐Ÿ‘ข",category:"people"},mans_shoe:{keywords:["fashion","male"],char:"๐Ÿ‘ž",category:"people"},athletic_shoe:{keywords:["shoes","sports","sneakers"],char:"๐Ÿ‘Ÿ",category:"people"},womans_hat:{keywords:["fashion","accessories","female","lady","spring"],char:"๐Ÿ‘’",category:"people"},tophat:{keywords:["magic","gentleman","classy","circus"],char:"๐ŸŽฉ",category:"people"},helmet:{keywords:["construction","build"],char:"โ›‘",category:"people"},mortar_board:{keywords:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],char:"๐ŸŽ“",category:"people"},crown:{keywords:["king","kod","leader","royalty","lord"],char:"๐Ÿ‘‘",category:"people"},school_satchel:{keywords:["student","education","bag","backpack"],char:"๐ŸŽ’",category:"people"},pouch:{keywords:["bag","accessories","shopping"],char:"๐Ÿ‘",category:"people"},purse:{keywords:["fashion","accessories","money","sales","shopping"],char:"๐Ÿ‘›",category:"people"},handbag:{keywords:["fashion","accessory","accessories","shopping"],char:"๐Ÿ‘œ",category:"people"},briefcase:{keywords:["business","documents","work","law","legal"],char:"๐Ÿ’ผ",category:"people"},eyeglasses:{keywords:["fashion","accessories","eyesight","nerdy","dork","geek"],char:"๐Ÿ‘“",category:"people"},dark_sunglasses:{keywords:["face","cool","accessories"],char:"๐Ÿ•ถ",category:"people"},ring:{keywords:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],char:"๐Ÿ’",category:"people"},closed_umbrella:{keywords:["weather","rain","drizzle"],char:"๐ŸŒ‚",category:"people"},dog:{keywords:["animal","friend","nature","woof","puppy","pet","faithful"],char:"๐Ÿถ",category:"animals_and_nature"},cat:{keywords:["animal","meow","nature","pet","kitten"],char:"๐Ÿฑ",category:"animals_and_nature"},mouse:{keywords:["animal","nature","cheese","rodent"],char:"๐Ÿญ",category:"animals_and_nature"},hamster:{keywords:["animal","nature"],char:"๐Ÿน",category:"animals_and_nature"},rabbit:{keywords:["animal","nature","pet","spring","magic","bunny"],char:"๐Ÿฐ",category:"animals_and_nature"},bear:{keywords:["animal","nature","wild"],char:"๐Ÿป",category:"animals_and_nature"},panda_face:{keywords:["animal","nature","panda"],char:"๐Ÿผ",category:"animals_and_nature"},koala:{keywords:["animal","nature"],char:"๐Ÿจ",category:"animals_and_nature"},tiger:{keywords:["animal","cat","danger","wild","nature","roar"],char:"๐Ÿฏ",category:"animals_and_nature"},lion_face:{keywords:["animal","nature"],char:"๐Ÿฆ",category:"animals_and_nature"},cow:{keywords:["beef","ox","animal","nature","moo","milk"],char:"๐Ÿฎ",category:"animals_and_nature"},pig:{keywords:["animal","oink","nature"],char:"๐Ÿท",category:"animals_and_nature"},pig_nose:{keywords:["animal","oink"],char:"๐Ÿฝ",category:"animals_and_nature"},frog:{keywords:["animal","nature","croak","toad"],char:"๐Ÿธ",category:"animals_and_nature"},octopus:{keywords:["animal","creature","ocean","sea","nature","beach"],char:"๐Ÿ™",category:"animals_and_nature"},monkey_face:{keywords:["animal","nature","circus"],char:"๐Ÿต",category:"animals_and_nature"},see_no_evil:{keywords:["monkey","animal","nature","haha"],char:"๐Ÿ™ˆ",category:"animals_and_nature"},hear_no_evil:{keywords:["animal","monkey","nature"],char:"๐Ÿ™‰",category:"animals_and_nature"},speak_no_evil:{keywords:["monkey","animal","nature","omg"],char:"๐Ÿ™Š",category:"animals_and_nature"},monkey:{keywords:["animal","nature","banana","circus"],char:"๐Ÿ’",category:"animals_and_nature"},chicken:{keywords:["animal","cluck","nature","bird"],char:"๐Ÿ”",category:"animals_and_nature"},penguin:{keywords:["animal","nature"],char:"๐Ÿง",category:"animals_and_nature"},bird:{keywords:["animal","nature","fly","tweet","spring"],char:"๐Ÿฆ",category:"animals_and_nature"},baby_chick:{keywords:["animal","chicken","bird"],char:"๐Ÿค",category:"animals_and_nature"},hatching_chick:{keywords:["animal","chicken","egg","born","baby","bird"],char:"๐Ÿฃ",category:"animals_and_nature"},hatched_chick:{keywords:["animal","chicken","baby","bird"],char:"๐Ÿฅ",category:"animals_and_nature"},wolf:{keywords:["animal","nature","wild"],char:"๐Ÿบ",category:"animals_and_nature"},boar:{keywords:["animal","nature"],char:"๐Ÿ—",category:"animals_and_nature"},horse:{keywords:["animal","brown","nature"],char:"๐Ÿด",category:"animals_and_nature"},unicorn_face:{keywords:["animal","nature","mystical"],char:"๐Ÿฆ„",category:"animals_and_nature"},bee:{keywords:["animal","insect","nature","bug","spring","honey"],char:"๐Ÿ",category:"animals_and_nature"},bug:{keywords:["animal","insect","nature","worm"],char:"๐Ÿ›",category:"animals_and_nature"},snail:{keywords:["slow","animal","shell"],char:"๐ŸŒ",category:"animals_and_nature"},beetle:{keywords:["animal","insect","nature","ladybug"],char:"๐Ÿž",category:"animals_and_nature"},ant:{keywords:["animal","insect","nature","bug"],char:"๐Ÿœ",category:"animals_and_nature"},spider:{keywords:["animal","arachnid"],char:"๐Ÿ•ท",category:"animals_and_nature"},scorpion:{keywords:["animal","arachnid"],char:"๐Ÿฆ‚",category:"animals_and_nature"},crab:{keywords:["animal","crustacean"],char:"๐Ÿฆ€",category:"animals_and_nature"},snake:{keywords:["animal","evil","nature","hiss","python"],char:"๐Ÿ",category:"animals_and_nature"},turtle:{keywords:["animal","slow","nature","tortoise"],char:"๐Ÿข",category:"animals_and_nature"},tropical_fish:{keywords:["animal","swim","ocean","beach","nemo"],char:"๐Ÿ ",category:"animals_and_nature"},fish:{keywords:["animal","food","nature"],char:"๐ŸŸ",category:"animals_and_nature"},blowfish:{keywords:["animal","nature","food","sea","ocean"],char:"๐Ÿก",category:"animals_and_nature"},dolphin:{keywords:["animal","nature","fish","sea","ocean","flipper","fins","beach"],char:"๐Ÿฌ",category:"animals_and_nature"},whale:{keywords:["animal","nature","sea","ocean"],char:"๐Ÿณ",category:"animals_and_nature"},whale2:{keywords:["animal","nature","sea","ocean"],char:"๐Ÿ‹",category:"animals_and_nature"},crocodile:{keywords:["animal","nature","reptile","lizard","alligator"],char:"๐ŸŠ",category:"animals_and_nature"},leopard:{keywords:["animal","nature"],char:"๐Ÿ†",category:"animals_and_nature"},tiger2:{keywords:["animal","nature","roar"],char:"๐Ÿ…",category:"animals_and_nature"},water_buffalo:{keywords:["animal","nature","ox","cow"],char:"๐Ÿƒ",category:"animals_and_nature"},ox:{keywords:["animal","cow","beef"],char:"๐Ÿ‚",category:"animals_and_nature"},cow2:{keywords:["beef","ox","animal","nature","moo","milk"],char:"๐Ÿ„",category:"animals_and_nature"},dromedary_camel:{keywords:["animal","hot","desert","hump"],char:"๐Ÿช",category:"animals_and_nature"},camel:{keywords:["animal","nature","hot","desert","hump"],char:"๐Ÿซ",category:"animals_and_nature"},elephant:{keywords:["animal","nature","nose","thailand","circus"],char:"๐Ÿ˜",category:"animals_and_nature"},goat:{keywords:["animal","nature"],char:"๐Ÿ",category:"animals_and_nature"},ram:{keywords:["animal","sheep","nature"],char:"๐Ÿ",category:"animals_and_nature"},sheep:{keywords:["animal","nature","wool","shipit"],char:"๐Ÿ‘",category:"animals_and_nature"},racehorse:{keywords:["animal","gamble","luck"],char:"๐ŸŽ",category:"animals_and_nature"},pig2:{keywords:["animal","nature"],char:"๐Ÿ–",category:"animals_and_nature"},rat:{keywords:["animal","mouse","rodent"],char:"๐Ÿ€",category:"animals_and_nature"},mouse2:{keywords:["animal","nature","rodent"],char:"๐Ÿ",category:"animals_and_nature"},rooster:{keywords:["animal","nature","chicken"],char:"๐Ÿ“",category:"animals_and_nature"},turkey:{keywords:["animal","bird"],char:"๐Ÿฆƒ",category:"animals_and_nature"},dove_of_peace:{keywords:["animal","bird"],char:"๐Ÿ•Š",category:"animals_and_nature"},dog2:{keywords:["animal","nature","friend","doge","pet","faithful"],char:"๐Ÿ•",category:"animals_and_nature"},poodle:{keywords:["dog","animal","101","nature","pet"],char:"๐Ÿฉ",category:"animals_and_nature"},cat2:{keywords:["animal","meow","pet","cats"],char:"๐Ÿˆ",category:"animals_and_nature"},rabbit2:{keywords:["animal","nature","pet","magic","spring"],char:"๐Ÿ‡",category:"animals_and_nature"},chipmunk:{keywords:["animal","nature","rodent","squirrel"],char:"๐Ÿฟ",category:"animals_and_nature"},feet:{keywords:["animal","tracking","footprints","dog","cat","pet","paw_prints"],char:"๐Ÿพ",category:"animals_and_nature"},dragon:{keywords:["animal","myth","nature","chinese","green"],char:"๐Ÿ‰",category:"animals_and_nature"},dragon_face:{keywords:["animal","myth","nature","chinese","green"],char:"๐Ÿฒ",category:"animals_and_nature"},cactus:{keywords:["vegetable","plant","nature"],char:"๐ŸŒต",category:"animals_and_nature"},christmas_tree:{keywords:["festival","vacation","december","xmas","celebration"],char:"๐ŸŽ„",category:"animals_and_nature"},evergreen_tree:{keywords:["plant","nature"],char:"๐ŸŒฒ",category:"animals_and_nature"},deciduous_tree:{keywords:["plant","nature"],char:"๐ŸŒณ",category:"animals_and_nature"},palm_tree:{keywords:["plant","vegetable","nature","summer","beach","mojito","tropical"],char:"๐ŸŒด",category:"animals_and_nature"},seedling:{keywords:["plant","nature","grass","lawn","spring"],char:"๐ŸŒฑ",category:"animals_and_nature"},herb:{keywords:["vegetable","plant","medicine","weed","grass","lawn"],char:"๐ŸŒฟ",category:"animals_and_nature"},shamrock:{keywords:["vegetable","plant","nature","irish","clover"],char:"โ˜˜",category:"animals_and_nature"},four_leaf_clover:{keywords:["vegetable","plant","nature","lucky","irish"],char:"๐Ÿ€",category:"animals_and_nature"},bamboo:{keywords:["plant","nature","vegetable","panda","pine_decoration"],char:"๐ŸŽ",category:"animals_and_nature"},tanabata_tree:{keywords:["plant","nature","branch","summer"],char:"๐ŸŽ‹",category:"animals_and_nature"},leaves:{keywords:["nature","plant","tree","vegetable","grass","lawn","spring"],char:"๐Ÿƒ",category:"animals_and_nature"},fallen_leaf:{keywords:["nature","plant","vegetable","leaves"],char:"๐Ÿ‚",category:"animals_and_nature"},maple_leaf:{keywords:["nature","plant","vegetable","canada","fall"],char:"๐Ÿ",category:"animals_and_nature"},ear_of_rice:{keywords:["nature","plant"],char:"๐ŸŒพ",category:"animals_and_nature"},hibiscus:{keywords:["plant","vegetable","flowers","beach"],char:"๐ŸŒบ",category:"animals_and_nature"},sunflower:{keywords:["nature","plant","fall"],char:"๐ŸŒป",category:"animals_and_nature"},rose:{keywords:["flowers","valentines","love","spring"],char:"๐ŸŒน",category:"animals_and_nature"},tulip:{keywords:["flowers","plant","nature","summer","spring"],char:"๐ŸŒท",category:"animals_and_nature"},blossom:{keywords:["nature","flowers","yellow"],char:"๐ŸŒผ",category:"animals_and_nature"},cherry_blossom:{keywords:["nature","plant","spring","flower"],char:"๐ŸŒธ",category:"animals_and_nature"},bouquet:{keywords:["flowers","nature","spring"],char:"๐Ÿ’",category:"animals_and_nature"},mushroom:{keywords:["plant","vegetable"],char:"๐Ÿ„",category:"animals_and_nature"},chestnut:{keywords:["food","squirrel"],char:"๐ŸŒฐ",category:"animals_and_nature"},jack_o_lantern:{keywords:["halloween","light","pumpkin","creepy","fall"],char:"๐ŸŽƒ",category:"animals_and_nature"},shell:{keywords:["nature","sea","beach"],char:"๐Ÿš",category:"animals_and_nature"},spider_web:{keywords:["animal","insect","arachnid","silk"],char:"๐Ÿ•ธ",category:"animals_and_nature"},earth_americas:{keywords:["globe","world","USA","international"],char:"๐ŸŒŽ",category:"animals_and_nature"},earth_africa:{keywords:["globe","world","international"],char:"๐ŸŒ",category:"animals_and_nature"},earth_asia:{keywords:["globe","world","east","international"],char:"๐ŸŒ",category:"animals_and_nature"},full_moon:{keywords:["nature","yellow","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒ•",category:"animals_and_nature"},waning_gibbous_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],char:"๐ŸŒ–",category:"animals_and_nature"},last_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒ—",category:"animals_and_nature"},waning_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒ˜",category:"animals_and_nature"},new_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒ‘",category:"animals_and_nature"},waxing_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒ’",category:"animals_and_nature"},first_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒ“",category:"animals_and_nature"},moon:{keywords:["nature","night","sky","gray","twilight","planet","space","evening","sleep"],char:"๐ŸŒ”",category:"animals_and_nature"},new_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒš",category:"animals_and_nature"},full_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒ",category:"animals_and_nature"},first_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒ›",category:"animals_and_nature"},last_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒœ",category:"animals_and_nature"},sun_with_face:{keywords:["nature","morning","sky"],char:"๐ŸŒž",category:"animals_and_nature"},crescent_moon:{keywords:["night","sleep","sky","evening","magic"],char:"๐ŸŒ™",category:"animals_and_nature"},star:{keywords:["night","yellow"],char:"โญ",category:"animals_and_nature"},star2:{keywords:["night","sparkle","awesome","good","magic"],char:"๐ŸŒŸ",category:"animals_and_nature"},dizzy:{keywords:["star","sparkle","shoot","magic"],char:"๐Ÿ’ซ",category:"animals_and_nature"},sparkles:{keywords:["stars","shine","shiny","cool","awesome","good","magic"],char:"โœจ",category:"animals_and_nature"},comet:{keywords:["space"],char:"โ˜„",category:"animals_and_nature"},sunny:{keywords:["weather","nature","brightness","summer","beach","spring"],char:"โ˜€๏ธ",category:"animals_and_nature"},white_sun_with_small_cloud:{keywords:["weather"],char:"๐ŸŒค",category:"animals_and_nature"},partly_sunny:{keywords:["weather","nature","cloudy","morning","fall","spring"],char:"โ›…",category:"animals_and_nature"},white_sun_behind_cloud:{keywords:["weather"],char:"๐ŸŒฅ",category:"animals_and_nature"},white_sun_behind_cloud_with_rain:{keywords:["weather"],char:"๐ŸŒฆ",category:"animals_and_nature"},cloud:{keywords:["weather","sky"],char:"โ˜๏ธ",category:"animals_and_nature"},cloud_with_rain:{keywords:["weather"],char:"๐ŸŒง",category:"animals_and_nature"},thunder_cloud_and_rain:{keywords:["weather","lightning"],char:"โ›ˆ",category:"animals_and_nature"},cloud_with_lightning:{keywords:["weather","thunder"],char:"๐ŸŒฉ",category:"animals_and_nature"},zap:{keywords:["thunder","weather","lightning bolt","fast"],char:"โšก",category:"animals_and_nature"},fire:{keywords:["hot","cook","flame"],char:"๐Ÿ”ฅ",category:"animals_and_nature"},boom:{keywords:["bomb","explode","explosion","collision","blown"],char:"๐Ÿ’ฅ",category:"animals_and_nature"},snowflake:{keywords:["winter","season","cold","weather","christmas","xmas"],char:"โ„๏ธ",category:"animals_and_nature"},cloud_with_snow:{keywords:["weather"],char:"๐ŸŒจ",category:"animals_and_nature"},snowman:{keywords:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],char:"โ›„",category:"animals_and_nature"},snowman_with_snow:{keywords:["winter","season","cold","weather","christmas","xmas","frozen"],char:"โ˜ƒ",category:"animals_and_nature"},wind_blowing_face:{keywords:["gust","air"],char:"๐ŸŒฌ",category:"animals_and_nature"},dash:{keywords:["wind","air","fast","shoo","fart","smoke","puff"],char:"๐Ÿ’จ",category:"animals_and_nature"},cloud_with_tornado:{keywords:["weather","cyclone","twister"],char:"๐ŸŒช",category:"animals_and_nature"},fog:{keywords:["weather"],char:"๐ŸŒซ",category:"animals_and_nature"},umbrella_without_rain:{keywords:["weather","spring"],char:"โ˜‚",category:"animals_and_nature"},umbrella:{keywords:["rainy","weather","spring"],char:"โ˜”",category:"animals_and_nature"},droplet:{keywords:["water","drip","faucet","spring"],char:"๐Ÿ’ง",category:"animals_and_nature"},sweat_drops:{keywords:["water","drip","oops"],char:"๐Ÿ’ฆ",category:"animals_and_nature"},ocean:{keywords:["sea","water","wave","nature","tsunami","disaster"],char:"๐ŸŒŠ",category:"animals_and_nature"},green_apple:{keywords:["fruit","nature"],char:"๐Ÿ",category:"food_and_drink"},apple:{keywords:["fruit","mac","school"],char:"๐ŸŽ",category:"food_and_drink"},pear:{keywords:["fruit","nature","food"],char:"๐Ÿ",category:"food_and_drink"},tangerine:{keywords:["food","fruit","nature","orange"],char:"๐ŸŠ",category:"food_and_drink"},lemon:{keywords:["fruit","nature"],char:"๐Ÿ‹",category:"food_and_drink"},banana:{keywords:["fruit","food","monkey"],char:"๐ŸŒ",category:"food_and_drink"},watermelon:{keywords:["fruit","food","picnic","summer"],char:"๐Ÿ‰",category:"food_and_drink"},grapes:{keywords:["fruit","food","wine"],char:"๐Ÿ‡",category:"food_and_drink"},strawberry:{keywords:["fruit","food","nature"],char:"๐Ÿ“",category:"food_and_drink"},melon:{keywords:["fruit","nature","food"],char:"๐Ÿˆ",category:"food_and_drink"},cherries:{keywords:["food","fruit"],char:"๐Ÿ’",category:"food_and_drink"},peach:{keywords:["fruit","nature","food"],char:"๐Ÿ‘",category:"food_and_drink"},pineapple:{keywords:["fruit","nature","food"],char:"๐Ÿ",category:"food_and_drink"},tomato:{keywords:["fruit","vegetable","nature","food"],char:"๐Ÿ…",category:"food_and_drink"},eggplant:{keywords:["vegetable","nature","food","aubergine"],char:"๐Ÿ†",category:"food_and_drink"},hot_pepper:{keywords:["food","spicy","chilli","chili"],char:"๐ŸŒถ",category:"food_and_drink"},corn:{keywords:["food","vegetable","plant"],char:"๐ŸŒฝ",category:"food_and_drink"},sweet_potato:{keywords:["food","nature"],char:"๐Ÿ ",category:"food_and_drink"},honey_pot:{keywords:["bees","sweet","kitchen"],char:"๐Ÿฏ",category:"food_and_drink"},bread:{keywords:["food","wheat","breakfast","toast"],char:"๐Ÿž",category:"food_and_drink"},cheese_wedge:{keywords:["food","chadder"],char:"๐Ÿง€",category:"food_and_drink"},poultry_leg:{keywords:["food","meat","drumstick","bird","chicken","turkey"],char:"๐Ÿ—",category:"food_and_drink"},meat_on_bone:{keywords:["good","food","drumstick"],char:"๐Ÿ–",category:"food_and_drink"},fried_shrimp:{keywords:["food","animal","appetizer","summer"],char:"๐Ÿค",category:"food_and_drink"},egg:{keywords:["food","breakfast","kitchen"],char:"๐Ÿณ",category:"food_and_drink"},hamburger:{keywords:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],char:"๐Ÿ”",category:"food_and_drink"},fries:{keywords:["chips","snack","fast food"],char:"๐ŸŸ",category:"food_and_drink"},hot_dog:{keywords:["food","frankfurter","hotdog"],char:"๐ŸŒญ",category:"food_and_drink"},pizza:{keywords:["food","party"],char:"๐Ÿ•",category:"food_and_drink"},spaghetti:{keywords:["food","italian","noodle"],char:"๐Ÿ",category:"food_and_drink"},taco:{keywords:["food","mexican"],char:"๐ŸŒฎ",category:"food_and_drink"},burrito:{keywords:["food","mexican"],char:"๐ŸŒฏ",category:"food_and_drink"},ramen:{keywords:["food","japanese","noodle","chopsticks"],char:"๐Ÿœ",category:"food_and_drink"},stew:{keywords:["food","meat","soup"],char:"๐Ÿฒ",category:"food_and_drink"},fish_cake:{keywords:["food","japan","sea","beach"],char:"๐Ÿฅ",category:"food_and_drink"},sushi:{keywords:["food","fish","japanese","rice"],char:"๐Ÿฃ",category:"food_and_drink"},bento:{keywords:["food","japanese","box"],char:"๐Ÿฑ",category:"food_and_drink"},curry:{keywords:["food","spicy","hot","indian"],char:"๐Ÿ›",category:"food_and_drink"},rice_ball:{keywords:["food","japanese"],char:"๐Ÿ™",category:"food_and_drink"},rice:{keywords:["food","china","asian"],char:"๐Ÿš",category:"food_and_drink"},rice_cracker:{keywords:["food","japanese"],char:"๐Ÿ˜",category:"food_and_drink"},oden:{keywords:["food","japanese"],char:"๐Ÿข",category:"food_and_drink"},dango:{keywords:["food","dessert","sweet","japanese","barbecue","meat"],char:"๐Ÿก",category:"food_and_drink"},shaved_ice:{keywords:["hot","dessert","summer"],char:"๐Ÿง",category:"food_and_drink"},ice_cream:{keywords:["food","hot","dessert"],char:"๐Ÿจ",category:"food_and_drink"},icecream:{keywords:["food","hot","dessert","summer"],char:"๐Ÿฆ",category:"food_and_drink"},cake:{keywords:["food","dessert"],char:"๐Ÿฐ",category:"food_and_drink"},birthday:{keywords:["food","dessert","cake"],char:"๐ŸŽ‚",category:"food_and_drink"},custard:{keywords:["dessert","food"],char:"๐Ÿฎ",category:"food_and_drink"},candy:{keywords:["snack","dessert","sweet","lolly"],char:"๐Ÿฌ",category:"food_and_drink"},lollipop:{keywords:["food","snack","candy","sweet"],char:"๐Ÿญ",category:"food_and_drink"},chocolate_bar:{keywords:["food","snack","dessert","sweet"],char:"๐Ÿซ",category:"food_and_drink"},popcorn:{keywords:["food","movie theater","films","snack"],char:"๐Ÿฟ",category:"food_and_drink"},doughnut:{keywords:["food","dessert","snack","sweet","donut"],char:"๐Ÿฉ",category:"food_and_drink"},cookie:{keywords:["food","snack","oreo","chocolate","sweet","dessert"],char:"๐Ÿช",category:"food_and_drink"},beer:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],char:"๐Ÿบ",category:"food_and_drink"},beers:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],char:"๐Ÿป",category:"food_and_drink"},wine_glass:{keywords:["drink","beverage","drunk","alcohol","booze"],char:"๐Ÿท",category:"food_and_drink"},cocktail:{keywords:["drink","drunk","alcohol","beverage","booze","mojito"],char:"๐Ÿธ",category:"food_and_drink"},tropical_drink:{keywords:["beverage","cocktail","summer","beach","alcohol","booze","mojito"],char:"๐Ÿน",category:"food_and_drink"},bottle:{keywords:["drink","wine","champagne"],char:"๐Ÿพ",category:"food_and_drink"},sake:{keywords:["wine","drink","drunk","beverage","japanese","alcohol","booze"],char:"๐Ÿถ",category:"food_and_drink"},tea:{keywords:["drink","bowl","breakfast","green","british"],char:"๐Ÿต",category:"food_and_drink"},coffee:{keywords:["beverage","caffeine","latte","espresso"],char:"โ˜•",category:"food_and_drink"},baby_bottle:{keywords:["food","container","milk"],char:"๐Ÿผ",category:"food_and_drink"},fork_and_knife:{keywords:["cutlery","kitchen"],char:"๐Ÿด",category:"food_and_drink"},fork_and_knife_with_plate:{keywords:["food","eat","meal","lunch","dinner","restaurant"],char:"๐Ÿฝ",category:"food_and_drink"},soccer:{keywords:["sports","football"],char:"โšฝ",category:"activity"},basketball:{keywords:["sports","balls","NBA"],char:"๐Ÿ€",category:"activity"},football:{keywords:["sports","balls","NFL"],char:"๐Ÿˆ",category:"activity"},baseball:{keywords:["sports","balls"],char:"โšพ",category:"activity"},tennis:{keywords:["sports","balls","green"],char:"๐ŸŽพ",category:"activity"},volleyball:{keywords:["sports","balls"],char:"๐Ÿ",category:"activity"},rugby_football:{keywords:["sports","team"],char:"๐Ÿ‰",category:"activity"},"8ball":{keywords:["pool","hobby","game","luck","magic"],char:"๐ŸŽฑ",category:"activity"},golf:{keywords:["sports","business","flag","hole","summer"],char:"โ›ณ",category:"activity"},golfer:{keywords:["sports","business"],char:"๐ŸŒ",category:"activity"},table_tennis:{keywords:["sports","pingpong"],char:"๐Ÿ“",category:"activity"},badminton:{keywords:["sports"],char:"๐Ÿธ",category:"activity"},ice_hockey:{keywords:["sports"],char:"๐Ÿ’",category:"activity"},field_hockey:{keywords:["sports"],char:"๐Ÿ‘",category:"activity"},cricket:{keywords:["sports"],char:"๐Ÿ",category:"activity"},ski:{keywords:["sports","winter","cold","snow"],char:"๐ŸŽฟ",category:"activity"},skier:{keywords:["sports","winter","snow"],char:"โ›ท",category:"activity"},snowboarder:{keywords:["sports","winter"],char:"๐Ÿ‚",category:"activity"},ice_skate:{keywords:["sports"],char:"โ›ธ",category:"activity"},bow_and_arrow:{keywords:["sports"],char:"๐Ÿน",category:"activity"},fishing_pole_and_fish:{keywords:["food","hobby","summer"],char:"๐ŸŽฃ",category:"activity"},rowboat:{keywords:["sports","hobby","water","ship"],char:"๐Ÿšฃ",category:"activity"},swimmer:{keywords:["sports","exercise","human","athlete","water","summer"],char:"๐ŸŠ",category:"activity"},surfer:{keywords:["sports","ocean","sea","summer","beach"],char:"๐Ÿ„",category:"activity"},bath:{keywords:["clean","shower","bathroom"],char:"๐Ÿ›€",category:"activity"},person_with_ball:{keywords:["sports","human"],char:"โ›น",category:"activity"},weight_lifter:{keywords:["sports","training","exercise"],char:"๐Ÿ‹",category:"activity"},bicyclist:{keywords:["sports","bike","exercise","hipster"],char:"๐Ÿšด",category:"activity"},mountain_bicyclist:{keywords:["transportation","sports","human","race","bike"],char:"๐Ÿšต",category:"activity"},horse_racing:{keywords:["animal","betting","competition","gambling","luck"],char:"๐Ÿ‡",category:"activity"},man_levitating:{keywords:["suit","business","levitate","hover","jump"],char:"๐Ÿ•ด",category:"activity"},trophy:{keywords:["win","award","contest","place","ftw","ceremony"],char:"๐Ÿ†",category:"activity"},running_shirt_with_sash:{keywords:["play","pageant"],char:"๐ŸŽฝ",category:"activity"},sports_medal:{keywords:["award","winning"],char:"๐Ÿ…",category:"activity"},military_medal:{keywords:["award","winning","army"],char:"๐ŸŽ–",category:"activity"},reminder_ribbon:{keywords:["sports","cause","support","awareness"],char:"๐ŸŽ—",category:"activity"},rosette:{keywords:["flower","decoration","military"],char:"๐Ÿต",category:"activity"},ticket:{keywords:["event","concert","pass"],char:"๐ŸŽซ",category:"activity"},admission_ticket:{keywords:["sports","concert","entrance"],char:"๐ŸŽŸ",category:"activity"},performing_arts:{keywords:["acting","theater","drama"],char:"๐ŸŽญ",category:"activity"},art:{keywords:["design","paint","draw","colors"],char:"๐ŸŽจ",category:"activity"},circus_tent:{keywords:["festival","carnival","party"],char:"๐ŸŽช",category:"activity"},microphone:{keywords:["sound","music","PA"],char:"๐ŸŽค",category:"activity"},headphones:{keywords:["music","score","gadgets"],char:"๐ŸŽง",category:"activity"},musical_score:{keywords:["treble","clef"],char:"๐ŸŽผ",category:"activity"},musical_keyboard:{keywords:["piano","instrument"],char:"๐ŸŽน",category:"activity"},saxophone:{keywords:["music","instrument","jazz","blues"],char:"๐ŸŽท",category:"activity"},trumpet:{keywords:["music","brass"],char:"๐ŸŽบ",category:"activity"},guitar:{keywords:["music","instrument"],char:"๐ŸŽธ",category:"activity"},violin:{keywords:["music","instrument","orchestra","symphony"],char:"๐ŸŽป",category:"activity"},clapper:{keywords:["movie","film","record"],char:"๐ŸŽฌ",category:"activity"},video_game:{keywords:["play","console","PS4","controller"],char:"๐ŸŽฎ",category:"activity"},space_invader:{keywords:["game","arcade","play"],char:"๐Ÿ‘พ",category:"activity"},dart:{keywords:["game","play","bar"],char:"๐ŸŽฏ",category:"activity"},game_die:{keywords:["dice","random","tabletop","play","luck"],char:"๐ŸŽฒ",category:"activity"},slot_machine:{keywords:["bet","gamble","vegas","fruit machine","luck","casino"],char:"๐ŸŽฐ",category:"activity"},bowling:{keywords:["sports","fun","play"],char:"๐ŸŽณ",category:"activity"},car:{keywords:["red","transportation","vehicle"],char:"๐Ÿš—",category:"travel_and_places"},taxi:{keywords:["uber","vehicle","cars","transportation"],char:"๐Ÿš•",category:"travel_and_places"},blue_car:{keywords:["transportation","vehicle"],char:"๐Ÿš™",category:"travel_and_places"},bus:{keywords:["car","vehicle","transportation"],char:"๐ŸšŒ",category:"travel_and_places"},trolleybus:{keywords:["bart","transportation","vehicle"],char:"๐ŸšŽ",category:"travel_and_places"},racing_car:{keywords:["sports","race","fast","formula","f1"],char:"๐ŸŽ",category:"travel_and_places"},police_car:{keywords:["vehicle","cars","transportation","law","legal","enforcement"],char:"๐Ÿš“",category:"travel_and_places"},ambulance:{keywords:["health","911","hospital"],char:"๐Ÿš‘",category:"travel_and_places"},fire_engine:{keywords:["transportation","cars","vehicle"],char:"๐Ÿš’",category:"travel_and_places"},minibus:{keywords:["vehicle","car","transportation"],char:"๐Ÿš",category:"travel_and_places"},truck:{keywords:["cars","transportation"],char:"๐Ÿšš",category:"travel_and_places"},articulated_lorry:{keywords:["vehicle","cars","transportation","express"],char:"๐Ÿš›",category:"travel_and_places"},tractor:{keywords:["vehicle","car","farming","agriculture"],char:"๐Ÿšœ",category:"travel_and_places"},racing_motorcycle:{keywords:["race","sports","fast"],char:"๐Ÿ",category:"travel_and_places"},bike:{keywords:["sports","bicycle","exercise","hipster"],char:"๐Ÿšฒ",category:"travel_and_places"},rotating_light:{keywords:["police","ambulance","911","emergency","alert","error","pinged","law","legal"],char:"๐Ÿšจ",category:"travel_and_places"},oncoming_police_car:{keywords:["vehicle","law","legal","enforcement","911"],char:"๐Ÿš”",category:"travel_and_places"},oncoming_bus:{keywords:["vehicle","transportation"],char:"๐Ÿš",category:"travel_and_places"},oncoming_automobile:{keywords:["car","vehicle","transportation"],char:"๐Ÿš˜",category:"travel_and_places"},oncoming_taxi:{keywords:["vehicle","cars","uber"],char:"๐Ÿš–",category:"travel_and_places"},aerial_tramway:{keywords:["transportation","vehicle","ski"],char:"๐Ÿšก",category:"travel_and_places"},mountain_cableway:{keywords:["transportation","vehicle","ski"],char:"๐Ÿš ",category:"travel_and_places"},suspension_railway:{keywords:["vehicle","transportation"],char:"๐ŸšŸ",category:"travel_and_places"},railway_car:{keywords:["transportation","vehicle"],char:"๐Ÿšƒ",category:"travel_and_places"},train:{keywords:["transportation","vehicle","carriage","public","travel"],char:"๐Ÿš‹",category:"travel_and_places"},monorail:{keywords:["transportation","vehicle"],char:"๐Ÿš",category:"travel_and_places"},bullettrain_side:{keywords:["transportation","vehicle"],char:"๐Ÿš„",category:"travel_and_places"},bullettrain_front:{keywords:["transportation","vehicle","speed","fast","public","travel"],char:"๐Ÿš…",category:"travel_and_places"},light_rail:{keywords:["transportation","vehicle"],char:"๐Ÿšˆ",category:"travel_and_places"},mountain_railway:{keywords:["transportation","vehicle"],char:"๐Ÿšž",category:"travel_and_places"},steam_locomotive:{keywords:["transportation","vehicle","train"],char:"๐Ÿš‚",category:"travel_and_places"},train2:{keywords:["transportation","vehicle"],char:"๐Ÿš†",category:"travel_and_places"},metro:{keywords:["transportation","blue-square","mrt","underground","tube"],char:"๐Ÿš‡",category:"travel_and_places"},tram:{keywords:["transportation","vehicle"],char:"๐ŸšŠ",category:"travel_and_places"},station:{keywords:["transportation","vehicle","public"],char:"๐Ÿš‰",category:"travel_and_places"},helicopter:{keywords:["transportation","vehicle","fly"],char:"๐Ÿš",category:"travel_and_places"},small_airplane:{keywords:["flight","transportation","fly","vehicle"],char:"๐Ÿ›ฉ",category:"travel_and_places"},airplane:{keywords:["vehicle","transportation","flight","fly"],char:"โœˆ๏ธ",category:"travel_and_places"},airplane_departure:{keywords:["airport","flight","landing"],char:"๐Ÿ›ซ",category:"travel_and_places"},airplane_arrival:{keywords:["airport","flight","boarding"],char:"๐Ÿ›ฌ",category:"travel_and_places"},boat:{keywords:["ship","summer","transportation","water","sailing","sailboat"],char:"โ›ต",category:"travel_and_places"},motor_boat:{keywords:["ship"],char:"๐Ÿ›ฅ",category:"travel_and_places"},speedboat:{keywords:["ship","transportation","vehicle","summer"],char:"๐Ÿšค",category:"travel_and_places"},ferry:{keywords:["boat","ship","yacht"],char:"โ›ด",category:"travel_and_places"},passenger_ship:{keywords:["yacht","cruise","ferry"],char:"๐Ÿ›ณ",category:"travel_and_places"},rocket:{keywords:["launch","ship","staffmode","NASA","outer space","outer_space","fly"],char:"๐Ÿš€",category:"travel_and_places"},artificial_satellite:{keywords:["communication","gps","orbit","spaceflight","NASA","ISS"],char:"๐Ÿ›ฐ",category:"travel_and_places"},seat:{keywords:["sit","airplane","transport","bus","flight","fly"],char:"๐Ÿ’บ",category:"travel_and_places"},anchor:{keywords:["ship","ferry","sea","boat"],char:"โš“",category:"travel_and_places"},construction:{keywords:["wip","progress","caution","warning"],char:"๐Ÿšง",category:"travel_and_places"},fuelpump:{keywords:["gas station","petroleum"],char:"โ›ฝ",category:"travel_and_places"},busstop:{keywords:["transportation","wait"],char:"๐Ÿš",category:"travel_and_places"},vertical_traffic_light:{keywords:["transportation","driving"],char:"๐Ÿšฆ",category:"travel_and_places"},traffic_light:{keywords:["transportation","signal"],char:"๐Ÿšฅ",category:"travel_and_places"},checkered_flag:{keywords:["contest","finishline","race","gokart"],char:"๐Ÿ",category:"travel_and_places"},ship:{keywords:["transportation","titanic","deploy"],char:"๐Ÿšข",category:"travel_and_places"},ferris_wheel:{keywords:["photo","carnival","londoneye"],char:"๐ŸŽก",category:"travel_and_places"},roller_coaster:{keywords:["carnival","playground","photo","fun"],char:"๐ŸŽข",category:"travel_and_places"},carousel_horse:{keywords:["photo","carnival"],char:"๐ŸŽ ",category:"travel_and_places"},building_construction:{keywords:["wip","working","progress"],char:"๐Ÿ—",category:"travel_and_places"},foggy:{keywords:["photo","mountain"],char:"๐ŸŒ",category:"travel_and_places"},tokyo_tower:{keywords:["photo","japanese"],char:"๐Ÿ—ผ",category:"travel_and_places"},factory:{keywords:["building","industry","pollution","smoke"],char:"๐Ÿญ",category:"travel_and_places"},fountain:{keywords:["photo","summer","water","fresh"],char:"โ›ฒ",category:"travel_and_places"},rice_scene:{keywords:["photo","japan","asia","tsukimi"],char:"๐ŸŽ‘",category:"travel_and_places"},mountain:{keywords:["photo","nature","environment"],char:"โ›ฐ",category:"travel_and_places"},snow_capped_mountain:{keywords:["photo","nature","environment","winter","cold"],char:"๐Ÿ”",category:"travel_and_places"},mount_fuji:{keywords:["photo","mountain","nature","japanese"],char:"๐Ÿ—ป",category:"travel_and_places"},volcano:{keywords:["photo","nature","disaster"],char:"๐ŸŒ‹",category:"travel_and_places"},japan:{keywords:["nation","country","japanese","asia"],char:"๐Ÿ—พ",category:"travel_and_places"},camping:{keywords:["photo","outdoors","tent"],char:"๐Ÿ•",category:"travel_and_places"},tent:{keywords:["photo","camping","outdoors"],char:"โ›บ",category:"travel_and_places"},national_park:{keywords:["photo","environment","nature"],char:"๐Ÿž",category:"travel_and_places"},motorway:{keywords:["road","cupertino","interstate","highway"],char:"๐Ÿ›ฃ",category:"travel_and_places"},railway_track:{keywords:["train","transportation"],char:"๐Ÿ›ค",category:"travel_and_places"},sunrise:{keywords:["morning","view","vacation","photo"],char:"๐ŸŒ…",category:"travel_and_places"},sunrise_over_mountains:{keywords:["view","vacation","photo"],char:"๐ŸŒ„",category:"travel_and_places"},desert:{keywords:["photo","warm","saharah"],char:"๐Ÿœ",category:"travel_and_places"},beach_with_umbrella:{keywords:["weather","summer","sunny","sand","mojito"],char:"๐Ÿ–",category:"travel_and_places"},desert_island:{keywords:["photo","tropical","mojito"],char:"๐Ÿ",category:"travel_and_places"},city_sunrise:{keywords:["photo","good morning","dawn"],char:"๐ŸŒ‡",category:"travel_and_places"},city_sunset:{keywords:["photo","evening","sky","buildings"],char:"๐ŸŒ†",category:"travel_and_places"},cityscape:{keywords:["photo","night life","urban"],char:"๐Ÿ™",category:"travel_and_places"},night_with_stars:{keywords:["evening","city","downtown"],char:"๐ŸŒƒ",category:"travel_and_places"},bridge_at_night:{keywords:["photo","sanfrancisco"],char:"๐ŸŒ‰",category:"travel_and_places"},milky_way:{keywords:["photo","space","stars"],char:"๐ŸŒŒ",category:"travel_and_places"},stars:{keywords:["night","photo"],char:"๐ŸŒ ",category:"travel_and_places"},sparkler:{keywords:["stars","night","shine"],char:"๐ŸŽ‡",category:"travel_and_places"},fireworks:{keywords:["photo","festival","carnival","congratulations"],char:"๐ŸŽ†",category:"travel_and_places"},rainbow:{keywords:["nature","happy","unicorn","photo","sky","spring"],char:"๐ŸŒˆ",category:"travel_and_places"},buildings:{keywords:["houses","photo"],char:"๐Ÿ˜",category:"travel_and_places"},european_castle:{keywords:["building","royalty","history"],char:"๐Ÿฐ",category:"travel_and_places"},japanese_castle:{keywords:["photo","building"],char:"๐Ÿฏ",category:"travel_and_places"},stadium:{keywords:["photo","place","sports","concert","venue"],char:"๐ŸŸ",category:"travel_and_places"},statue_of_liberty:{keywords:["american","newyork"],char:"๐Ÿ—ฝ",category:"travel_and_places"},house:{keywords:["building","home"],char:"๐Ÿ ",category:"travel_and_places"},house_with_garden:{keywords:["home","plant","nature"],char:"๐Ÿก",category:"travel_and_places"},derelict_house:{keywords:["abandon","evict","broken","building"],char:"๐Ÿš",category:"travel_and_places"},office:{keywords:["building","bureau","work"],char:"๐Ÿข",category:"travel_and_places"},department_store:{keywords:["building","shopping","mall"],char:"๐Ÿฌ",category:"travel_and_places"},post_office:{keywords:["building","email","communication"],char:"๐Ÿฃ",category:"travel_and_places"},european_post_office:{keywords:["building","email"],char:"๐Ÿค",category:"travel_and_places"},hospital:{keywords:["building","health","surgery","doctor"],char:"๐Ÿฅ",category:"travel_and_places"},bank:{keywords:["building","money","sales","cash","business","enterprise"],char:"๐Ÿฆ",category:"travel_and_places"},hotel:{keywords:["building","accomodation","checkin"],char:"๐Ÿจ",category:"travel_and_places"},convenience_store:{keywords:["building","shopping","groceries"],char:"๐Ÿช",category:"travel_and_places"},school:{keywords:["building","student","education","learn","teach"],char:"๐Ÿซ",category:"travel_and_places"},love_hotel:{keywords:["like","affection","dating"],char:"๐Ÿฉ",category:"travel_and_places"},wedding:{keywords:["love","like","affection","couple","marriage","bride","groom"],char:"๐Ÿ’’",category:"travel_and_places"},museum:{keywords:["art","culture","history"],char:"๐Ÿ›",category:"travel_and_places"},church:{keywords:["building","religion","christ"],char:"โ›ช",category:"travel_and_places"},mosque:{keywords:["islam","worship","minaret"],char:"๐Ÿ•Œ",category:"travel_and_places"},synagogue:{keywords:["judaism","worship","temple","jewish"],char:"๐Ÿ•",category:"travel_and_places"},kaaba:{keywords:["mecca","mosque","islam"],char:"๐Ÿ•‹",category:"travel_and_places"},shinto_shrine:{keywords:["temple","japan","kyoto"],char:"โ›ฉ",category:"travel_and_places"},watch:{keywords:["time","accessories"],char:"โŒš",category:"objects"},iphone:{keywords:["technology","apple","gadgets","dial"],char:"๐Ÿ“ฑ",category:"objects"},calling:{keywords:["iphone","incoming"],char:"๐Ÿ“ฒ",category:"objects"},computer:{keywords:["technology","laptop","screen","display","monitor"],char:"๐Ÿ’ป",category:"objects"},keyboard:{keywords:["technology","computer","type","input","text"],char:"โŒจ",category:"objects"},desktop_computer:{keywords:["technology","computing","screen"],char:"๐Ÿ–ฅ",category:"objects"},printer:{keywords:["paper","ink"],char:"๐Ÿ–จ",category:"objects"},three_button_mouse:{keywords:["click"],char:"๐Ÿ–ฑ",category:"objects"},trackball:{keywords:["technology","trackpad"],char:"๐Ÿ–ฒ",category:"objects"},joystick:{keywords:["game","play"],char:"๐Ÿ•น",category:"objects"},compression:{keywords:["tool"],char:"๐Ÿ—œ",category:"objects"},minidisc:{keywords:["technology","record","data","disk","90s"],char:"๐Ÿ’ฝ",category:"objects"},floppy_disk:{keywords:["oldschool","technology","save","90s","80s"],char:"๐Ÿ’พ",category:"objects"},cd:{keywords:["technology","dvd","disk","disc","90s"],char:"๐Ÿ’ฟ",category:"objects"},dvd:{keywords:["cd","disk","disc"],char:"๐Ÿ“€",category:"objects"},vhs:{keywords:["record","video","oldschool","90s","80s"],char:"๐Ÿ“ผ",category:"objects"},camera:{keywords:["gadgets","photography"],char:"๐Ÿ“ท",category:"objects"},camera_with_flash:{keywords:["photography","gadgets"],char:"๐Ÿ“ธ",category:"objects"},video_camera:{keywords:["film","record"],char:"๐Ÿ“น",category:"objects"},movie_camera:{keywords:["film","record"],char:"๐ŸŽฅ",category:"objects"},film_projector:{keywords:["video","tape","record","movie"],char:"๐Ÿ“ฝ",category:"objects"},film_frames:{keywords:["movie"],char:"๐ŸŽž",category:"objects"},telephone_receiver:{keywords:["technology","communication","dial"],char:"๐Ÿ“ž",category:"objects"},phone:{keywords:["technology","communication","dial","telephone"],char:"โ˜Ž๏ธ",category:"objects"},pager:{keywords:["bbcall","oldschool","90s"],char:"๐Ÿ“Ÿ",category:"objects"},fax:{keywords:["communication","technology"],char:"๐Ÿ“ ",category:"objects"},tv:{keywords:["technology","program","oldschool","show","television"],char:"๐Ÿ“บ",category:"objects"},radio:{keywords:["communication","music","podcast","program"],char:"๐Ÿ“ป",category:"objects"},studio_microphone:{keywords:["singer","recording","artist"],char:"๐ŸŽ™",category:"objects"},level_slider:{keywords:["scale"],char:"๐ŸŽš",category:"objects"},control_knobs:{keywords:["dial"],char:"๐ŸŽ›",category:"objects"},stopwatch:{keywords:["time","deadline"],char:"โฑ",category:"objects"},timer_clock:{keywords:["alarm"],char:"โฒ",category:"objects"},alarm_clock:{keywords:["time","wake"],char:"โฐ",category:"objects"},mantelpiece_clock:{keywords:["time"],char:"๐Ÿ•ฐ",category:"objects"},hourglass_flowing_sand:{keywords:["oldschool","time","countdown"],char:"โณ",category:"objects"},hourglass:{keywords:["time","clock","oldschool","limit","exam","quiz","test"],char:"โŒ›",category:"objects"},satellite:{keywords:["communication","future","radio","space"],char:"๐Ÿ“ก",category:"objects"},battery:{keywords:["power","energy","sustain"],char:"๐Ÿ”‹",category:"objects"},electric_plug:{keywords:["charger","power"],char:"๐Ÿ”Œ",category:"objects"},bulb:{keywords:["light","electricity","idea"],char:"๐Ÿ’ก",category:"objects"},flashlight:{keywords:["dark","camping","sight","night"],char:"๐Ÿ”ฆ",category:"objects"},candle:{keywords:["fire","wax"],char:"๐Ÿ•ฏ",category:"objects"},wastebasket:{keywords:["bin","trash","rubbish","garbage","toss"],char:"๐Ÿ—‘",category:"objects"},oil_drum:{keywords:["barrell"],char:"๐Ÿ›ข",category:"objects"},money_with_wings:{keywords:["dollar","bills","payment","sale"],char:"๐Ÿ’ธ",category:"objects"},dollar:{keywords:["money","sales","bill","currency"],char:"๐Ÿ’ต",category:"objects"},yen:{keywords:["money","sales","japanese","dollar","currency"],char:"๐Ÿ’ด",category:"objects"},euro:{keywords:["money","sales","dollar","currency"],char:"๐Ÿ’ถ",category:"objects"},pound:{keywords:["british","sterling","money","sales","bills","uk","england","currency"],char:"๐Ÿ’ท",category:"objects"},moneybag:{keywords:["dollar","payment","coins","sale"],char:"๐Ÿ’ฐ",category:"objects"},credit_card:{keywords:["money","sales","dollar","bill","payment","shopping"],char:"๐Ÿ’ณ",category:"objects"},gem:{keywords:["blue","ruby","diamond","jewelry"],char:"๐Ÿ’Ž",category:"objects"},scales:{keywords:["law","fairness","weight"],char:"โš–",category:"objects"},wrench:{keywords:["tools","diy","ikea","fix","maintainer"],char:"๐Ÿ”ง",category:"objects"},hammer:{keywords:["tools","build","create"],char:"๐Ÿ”จ",category:"objects"},hammer_and_pick:{keywords:["tools","build","create"],char:"โš’",category:"objects"},hammer_and_wrench:{keywords:["tools","build","create"],char:"๐Ÿ› ",category:"objects"},pick:{keywords:["tools","dig"],char:"โ›",category:"objects"},nut_and_bolt:{keywords:["handy","tools","fix"],char:"๐Ÿ”ฉ",category:"objects"},gear:{keywords:["cog"],char:"โš™",category:"objects"},chains:{keywords:["lock","arrest"],char:"โ›“",category:"objects"},gun:{keywords:["violence","weapon","pistol","revolver"],char:"๐Ÿ”ซ",category:"objects"},bomb:{keywords:["boom","explode","explosion","terrorism"],char:"๐Ÿ’ฃ",category:"objects"},hocho:{keywords:["knife","blade","cutlery","kitchen","weapon"],char:"๐Ÿ”ช",category:"objects"},dagger_knife:{keywords:["weapon"],char:"๐Ÿ—ก",category:"objects"},crossed_swords:{keywords:["weapon"],char:"โš”",category:"objects"},shield:{keywords:["protection","security"],char:"๐Ÿ›ก",category:"objects"},smoking:{keywords:["kills","tobacco","cigarette","joint","smoke"],char:"๐Ÿšฌ",category:"objects"},skull_and_crossbones:{keywords:["poison","danger","deadly","scary"],char:"โ˜ ",category:"objects"},coffin:{keywords:["vampire","dead","die","death","rip","graveyard","cemetery"],char:"โšฐ",category:"objects"},funeral_urn:{keywords:["dead","die","death","rip","ashes"],char:"โšฑ",category:"objects"},amphora:{keywords:["vase","jar"],char:"๐Ÿบ",category:"objects"},crystal_ball:{keywords:["disco","party","magic","circus","fortune_teller"],char:"๐Ÿ”ฎ",category:"objects"},prayer_beads:{keywords:["dhikr","religious"],char:"๐Ÿ“ฟ",category:"objects"},barber:{keywords:["hair","salon","style"],char:"๐Ÿ’ˆ",category:"objects"},alembic:{keywords:["distilling","science","experiment"],char:"โš—",category:"objects"},telescope:{keywords:["stars","space","zoom"],char:"๐Ÿ”ญ",category:"objects"},microscope:{keywords:["laboratory","experiment","zoomin","science","study"],char:"๐Ÿ”ฌ",category:"objects"},hole:{keywords:["embarrassing"],char:"๐Ÿ•ณ",category:"objects"},pill:{keywords:["health","medicine","doctor","pharmacy","drug"],char:"๐Ÿ’Š",category:"objects"},syringe:{keywords:["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],char:"๐Ÿ’‰",category:"objects"},thermometer:{keywords:["weather","temperature","hot","cold"],char:"๐ŸŒก",category:"objects"},label:{keywords:["sale","tag"],char:"๐Ÿท",category:"objects"},bookmark:{keywords:["favorite","label","save"],char:"๐Ÿ”–",category:"objects"},toilet:{keywords:["restroom","wc","washroom","bathroom","potty"],char:"๐Ÿšฝ",category:"objects"},shower:{keywords:["clean","water","bathroom"],char:"๐Ÿšฟ",category:"objects"},bathtub:{keywords:["clean","shower","bathroom"],char:"๐Ÿ›",category:"objects"},key:{keywords:["lock","door","password"],char:"๐Ÿ”‘",category:"objects"},old_key:{keywords:["lock","door","password"],char:"๐Ÿ—",category:"objects"},couch_and_lamp:{keywords:["read","chill"],char:"๐Ÿ›‹",category:"objects"},sleeping_accommodation:{keywords:["bed","rest"],char:"๐Ÿ›Œ",category:"objects"},bed:{keywords:["sleep","rest"],char:"๐Ÿ›",category:"objects"},door:{keywords:["house","entry","exit"],char:"๐Ÿšช",category:"objects"},bellhop_bell:{keywords:["service"],char:"๐Ÿ›Ž",category:"objects"},frame_with_picture:{keywords:["photography"],char:"๐Ÿ–ผ",category:"objects"},world_map:{keywords:["location","direction"],char:"๐Ÿ—บ",category:"objects"},umbrella_on_ground:{keywords:["weather","summer"],char:"โ›ฑ",category:"objects"},moyai:{keywords:["rock","easter island","moai"],char:"๐Ÿ—ฟ",category:"objects"},shopping_bags:{keywords:["mall","buy","purchase"],char:"๐Ÿ›",category:"objects"},balloon:{keywords:["party","celebration","birthday","circus"],char:"๐ŸŽˆ",category:"objects"},flags:{keywords:["fish","japanese","koinobori","carp","banner"],char:"๐ŸŽ",category:"objects"},ribbon:{keywords:["decoration","pink","girl","bowtie"],char:"๐ŸŽ€",category:"objects"},gift:{keywords:["present","birthday","christmas","xmas"],char:"๐ŸŽ",category:"objects"},confetti_ball:{keywords:["festival","party","birthday","circus"],char:"๐ŸŽŠ",category:"objects"},tada:{keywords:["party","contulations","birthday","magic","circus"],char:"๐ŸŽ‰",category:"objects"},dolls:{keywords:["japanese","toy","kimono"],char:"๐ŸŽŽ",category:"objects"},wind_chime:{keywords:["nature","ding","spring","bell"],char:"๐ŸŽ",category:"objects"},crossed_flags:{keywords:["japanese","nation","country","border"],char:"๐ŸŽŒ",category:"objects"},izakaya_lantern:{keywords:["light","paper","halloween","spooky"],char:"๐Ÿฎ",category:"objects"},envelope:{keywords:["letter","postal","inbox","communication"],char:"โœ‰๏ธ",category:"objects"},envelope_with_arrow:{keywords:["email","communication"],char:"๐Ÿ“ฉ",category:"objects"},incoming_envelope:{keywords:["email","inbox"],char:"๐Ÿ“จ",category:"objects"},email:{keywords:["communication","inbox"],char:"๐Ÿ“ง",category:"objects"},love_letter:{keywords:["email","like","affection","envelope","valentines"],char:"๐Ÿ’Œ",category:"objects"},postbox:{keywords:["email","letter","envelope"],char:"๐Ÿ“ฎ",category:"objects"},mailbox_closed:{keywords:["email","communication","inbox"],char:"๐Ÿ“ช",category:"objects"},mailbox:{keywords:["email","inbox","communication"],char:"๐Ÿ“ซ",category:"objects"},mailbox_with_mail:{keywords:["email","inbox","communication"],char:"๐Ÿ“ฌ",category:"objects"},mailbox_with_no_mail:{keywords:["email","inbox"],char:"๐Ÿ“ญ",category:"objects"},package:{keywords:["mail","gift","cardboard","box","moving"],char:"๐Ÿ“ฆ",category:"objects"},postal_horn:{keywords:["instrument","music"],char:"๐Ÿ“ฏ",category:"objects"},inbox_tray:{keywords:["email","documents"],char:"๐Ÿ“ฅ",category:"objects"},outbox_tray:{keywords:["inbox","email"],char:"๐Ÿ“ค",category:"objects"},scroll:{keywords:["documents","ancient","history","paper"],char:"๐Ÿ“œ",category:"objects"},page_with_curl:{keywords:["documents","office","paper"],char:"๐Ÿ“ƒ",category:"objects"},bookmark_tabs:{keywords:["favorite","save","order","tidy"],char:"๐Ÿ“‘",category:"objects"},bar_chart:{keywords:["graph","presentation","stats"],char:"๐Ÿ“Š",category:"objects"},chart_with_upwards_trend:{keywords:["graph","presentation","stats","recovery","business","economics","money","sales","good","success"],char:"๐Ÿ“ˆ",category:"objects"},chart_with_downwards_trend:{keywords:["graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],char:"๐Ÿ“‰",category:"objects"},page_facing_up:{keywords:["documents","office","paper","information"],char:"๐Ÿ“„",category:"objects"},date:{keywords:["calendar","schedule"],char:"๐Ÿ“…",category:"objects"},calendar:{keywords:["schedule","date","planning"],char:"๐Ÿ“†",category:"objects"},spiral_calendar_pad:{keywords:["date","schedule","planning"],char:"๐Ÿ—“",category:"objects"},card_index:{keywords:["business","stationery"],char:"๐Ÿ“‡",category:"objects"},card_file_box:{keywords:["business","stationery"],char:"๐Ÿ—ƒ",category:"objects"},ballot_box_with_ballot:{keywords:["election","vote"],char:"๐Ÿ—ณ",category:"objects"},file_cabinet:{keywords:["filing","organizing"],char:"๐Ÿ—„",category:"objects"},clipboard:{keywords:["stationery","documents"],char:"๐Ÿ“‹",category:"objects"},spiral_note_pad:{keywords:["memo","stationery"],char:"๐Ÿ—’",category:"objects"},file_folder:{keywords:["documents","business","office"],char:"๐Ÿ“",category:"objects"},open_file_folder:{keywords:["documents","load"],char:"๐Ÿ“‚",category:"objects"},card_index_dividers:{keywords:["organizing","business","stationery"],char:"๐Ÿ—‚",category:"objects"},rolled_up_newspaper:{keywords:["press","headline"],char:"๐Ÿ—ž",category:"objects"},newspaper:{keywords:["press","headline"],char:"๐Ÿ“ฐ",category:"objects"},notebook:{keywords:["stationery","record","notes","paper","study"],char:"๐Ÿ““",category:"objects"},closed_book:{keywords:["read","library","knowledge","textbook","learn"],char:"๐Ÿ“•",category:"objects"},green_book:{keywords:["read","library","knowledge","study"],char:"๐Ÿ“—",category:"objects"},blue_book:{keywords:["read","library","knowledge","learn","study"],char:"๐Ÿ“˜",category:"objects"},orange_book:{keywords:["read","library","knowledge","textbook","study"],char:"๐Ÿ“™",category:"objects"},notebook_with_decorative_cover:{keywords:["classroom","notes","record","paper","study"],char:"๐Ÿ“”",category:"objects"},ledger:{keywords:["notes","paper"],char:"๐Ÿ“’",category:"objects"},books:{keywords:["literature","library","study"],char:"๐Ÿ“š",category:"objects"},book:{keywords:["open_book","read","library","knowledge","literature","learn","study"],char:"๐Ÿ“–",category:"objects"},link:{keywords:["rings","url"],char:"๐Ÿ”—",category:"objects"},paperclip:{keywords:["documents","stationery"],char:"๐Ÿ“Ž",category:"objects"},linked_paperclips:{keywords:["documents","stationery"],char:"๐Ÿ–‡",category:"objects"},scissors:{keywords:["stationery","cut"],char:"โœ‚๏ธ",category:"objects"},triangular_ruler:{keywords:["stationery","math","architect","sketch"],char:"๐Ÿ“",category:"objects"},straight_ruler:{keywords:["stationery","calculate","length","math","school","drawing","architect","sketch"],char:"๐Ÿ“",category:"objects"},pushpin:{keywords:["stationery","mark","here"],char:"๐Ÿ“Œ",category:"objects"},round_pushpin:{keywords:["stationery","location","map","here"],char:"๐Ÿ“",category:"objects"},triangular_flag_on_post:{keywords:["mark","milestone","place"],char:"๐Ÿšฉ",category:"objects"},waving_white_flag:{keywords:["losing","loser","lost","surrender","give up","fail"],char:"๐Ÿณ",category:"objects"},waving_black_flag:{keywords:["pirate"],char:"๐Ÿด",category:"objects"},closed_lock_with_key:{keywords:["security","privacy"],char:"๐Ÿ”",category:"objects"},lock:{keywords:["security","password","padlock"],char:"๐Ÿ”’",category:"objects"},unlock:{keywords:["privacy","security"],char:"๐Ÿ”“",category:"objects"},lock_with_ink_pen:{keywords:["security","secret"],char:"๐Ÿ”",category:"objects"},lower_left_ballpoint_pen:{keywords:["stationery","writing","write"],char:"๐Ÿ–Š",category:"objects"},lower_left_fountain_pen:{keywords:["stationery","writing","write"],char:"๐Ÿ–‹",category:"objects"},black_nib:{keywords:["pen","stationery","writing","write"],char:"โœ’๏ธ",category:"objects"},memo:{keywords:["write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study"],char:"๐Ÿ“",category:"objects"},pencil2:{keywords:["stationery","write","paper","writing","school","study"],char:"โœ๏ธ",category:"objects"},lower_left_crayon:{keywords:["drawing","creativity"],char:"๐Ÿ–",category:"objects"},lower_left_paintbrush:{keywords:["drawing","creativity","art"],char:"๐Ÿ–Œ",category:"objects"},mag:{keywords:["search","zoom","find","detective"],char:"๐Ÿ”",category:"objects"},mag_right:{keywords:["search","zoom","find","detective"],char:"๐Ÿ”Ž",category:"objects"},heart:{keywords:["love","like","valentines"],char:"โค๏ธ",category:"symbols"},yellow_heart:{keywords:["love","like","affection","valentines"],char:"๐Ÿ’›",category:"symbols"},green_heart:{keywords:["love","like","affection","valentines"],char:"๐Ÿ’š",category:"symbols"},blue_heart:{keywords:["love","like","affection","valentines"],char:"๐Ÿ’™",category:"symbols"},purple_heart:{keywords:["love","like","affection","valentines"],char:"๐Ÿ’œ",category:"symbols"},broken_heart:{keywords:["sad","sorry","break","heart","heartbreak"],char:"๐Ÿ’”",category:"symbols"},heavy_heart_exclamation_mark_ornament:{keywords:["decoration","love"],char:"โฃ",category:"symbols"},two_hearts:{keywords:["love","like","affection","valentines","heart"],char:"๐Ÿ’•",category:"symbols"},revolving_hearts:{keywords:["love","like","affection","valentines"],char:"๐Ÿ’ž",category:"symbols"},heartbeat:{keywords:["love","like","affection","valentines","pink","heart"],char:"๐Ÿ’“",category:"symbols"},heartpulse:{keywords:["like","love","affection","valentines","pink"],char:"๐Ÿ’—",category:"symbols"},sparkling_heart:{keywords:["love","like","affection","valentines"],char:"๐Ÿ’–",category:"symbols"},cupid:{keywords:["love","like","heart","affection","valentines"],char:"๐Ÿ’˜",category:"symbols"},gift_heart:{keywords:["love","valentines"],char:"๐Ÿ’",category:"symbols"},heart_decoration:{keywords:["purple-square","love","like"],char:"๐Ÿ’Ÿ",category:"symbols"},peace_symbol:{keywords:["hippie"],char:"โ˜ฎ",category:"symbols"},latin_cross:{keywords:["christianity"],char:"โœ",category:"symbols"},star_and_crescent:{keywords:["islam"],char:"โ˜ช",category:"symbols"},om_symbol:{keywords:["hinduism","buddhism","sikhism","jainism"],char:"๐Ÿ•‰",category:"symbols"},wheel_of_dharma:{keywords:["hinduism","buddhism","sikhism","jainism"],char:"โ˜ธ",category:"symbols"},star_of_david:{keywords:["judaism"],char:"โœก",category:"symbols"},six_pointed_star:{keywords:["purple-square","religion","jewish","hexagram"],char:"๐Ÿ”ฏ",category:"symbols"},menorah_with_nine_branches:{keywords:["hanukkah","candles","jewish"],char:"๐Ÿ•Ž",category:"symbols"},yin_yang:{keywords:["balance"],char:"โ˜ฏ",category:"symbols"},orthodox_cross:{keywords:["suppedaneum","religion"],char:"โ˜ฆ",category:"symbols"},place_of_worship:{keywords:["religion","church","temple","prayer"],char:"๐Ÿ›",category:"symbols"},ophiuchus:{keywords:["sign","purple-square","constellation","astrology"],char:"โ›Ž",category:"symbols"},aries:{keywords:["sign","purple-square","zodiac","astrology"],char:"โ™ˆ",category:"symbols"},taurus:{keywords:["purple-square","sign","zodiac","astrology"],char:"โ™‰",category:"symbols"},gemini:{keywords:["sign","zodiac","purple-square","astrology"],char:"โ™Š",category:"symbols"},cancer:{keywords:["sign","zodiac","purple-square","astrology"],char:"โ™‹",category:"symbols"},leo:{keywords:["sign","purple-square","zodiac","astrology"],char:"โ™Œ",category:"symbols"},virgo:{keywords:["sign","zodiac","purple-square","astrology"],char:"โ™",category:"symbols"},libra:{keywords:["sign","purple-square","zodiac","astrology"],char:"โ™Ž",category:"symbols"},scorpius:{keywords:["sign","zodiac","purple-square","astrology","scorpio"],char:"โ™",category:"symbols"},sagittarius:{keywords:["sign","zodiac","purple-square","astrology"],char:"โ™",category:"symbols"},capricorn:{keywords:["sign","zodiac","purple-square","astrology"],char:"โ™‘",category:"symbols"},aquarius:{keywords:["sign","purple-square","zodiac","astrology"],char:"โ™’",category:"symbols"},pisces:{keywords:["purple-square","sign","zodiac","astrology"],char:"โ™“",category:"symbols"},id:{keywords:["purple-square","words"],char:"๐Ÿ†”",category:"symbols"},atom_symbol:{keywords:["science"],char:"โš›",category:"symbols"},u7a7a:{keywords:["kanji","japanese","chinese","empty","sky","blue-square"],char:"๐Ÿˆณ",category:"symbols"},u5272:{keywords:["cut","divide","chinese","kanji","pink-square"],char:"๐Ÿˆน",category:"symbols"},radioactive_sign:{keywords:["nuclear","danger"],char:"โ˜ข",category:"symbols"},biohazard_sign:{keywords:["danger"],char:"โ˜ฃ",category:"symbols"},mobile_phone_off:{keywords:["mute","orange-square","silence","quiet"],char:"๐Ÿ“ด",category:"symbols"},vibration_mode:{keywords:["orange-square","phone"],char:"๐Ÿ“ณ",category:"symbols"},u6709:{keywords:["orange-square","chinese","have","kanji"],char:"๐Ÿˆถ",category:"symbols"},u7121:{keywords:["nothing","chinese","kanji","japanese","orange-square"],char:"๐Ÿˆš",category:"symbols"},u7533:{keywords:["chinese","japanese","kanji","orange-square"],char:"๐Ÿˆธ",category:"symbols"},u55b6:{keywords:["japanese","opening hours","orange-square"],char:"๐Ÿˆบ",category:"symbols"},u6708:{keywords:["chinese","month","moon","japanese","orange-square","kanji"],char:"๐Ÿˆท๏ธ",category:"symbols"},eight_pointed_black_star:{keywords:["orange-square","shape","polygon"],char:"โœด๏ธ",category:"symbols"},vs:{keywords:["words","orange-square"],char:"๐Ÿ†š",category:"symbols"},accept:{keywords:["ok","good","chinese","kanji","agree","yes","orange-circle"],char:"๐Ÿ‰‘",category:"symbols"},white_flower:{keywords:["japanese","spring"],char:"๐Ÿ’ฎ",category:"symbols"},ideograph_advantage:{keywords:["chinese","kanji","obtain","get","circle"],char:"๐Ÿ‰",category:"symbols"},secret:{keywords:["privacy","chinese","sshh","kanji","red-circle"],char:"ใŠ™๏ธ",category:"symbols"},congratulations:{keywords:["chinese","kanji","japanese","red-circle"],char:"ใŠ—๏ธ",category:"symbols"},u5408:{keywords:["japanese","chinese","join","kanji","red-square"],char:"๐Ÿˆด",category:"symbols"},u6e80:{keywords:["full","chinese","japanese","red-square","kanji"],char:"๐Ÿˆต",category:"symbols"},u7981:{keywords:["kanji","japanese","chinese","forbidden","limit","restricted","red-square"],char:"๐Ÿˆฒ",category:"symbols"},a:{keywords:["red-square","alphabet","letter"],char:"๐Ÿ…ฐ๏ธ",category:"symbols"},b:{keywords:["red-square","alphabet","letter"],char:"๐Ÿ…ฑ๏ธ",category:"symbols"},ab:{keywords:["red-square","alphabet"],char:"๐Ÿ†Ž",category:"symbols"},cl:{keywords:["alphabet","words","red-square"],char:"๐Ÿ†‘",category:"symbols"},o2:{keywords:["alphabet","red-square","letter"],char:"๐Ÿ…พ๏ธ",category:"symbols"},sos:{keywords:["help","red-square","words","emergency","911"],char:"๐Ÿ†˜",category:"symbols"},no_entry:{keywords:["limit","security","privacy","bad","denied","stop","circle"],char:"โ›”",category:"symbols"},name_badge:{keywords:["fire","forbid"],char:"๐Ÿ“›",category:"symbols"},no_entry_sign:{keywords:["forbid","stop","limit","denied","disallow","circle"],char:"๐Ÿšซ",category:"symbols"},x:{keywords:["no","delete","remove","cancel"],char:"โŒ",category:"symbols"},o:{keywords:["circle","round"],char:"โญ•",category:"symbols"},anger:{keywords:["angry","mad"],char:"๐Ÿ’ข",category:"symbols"},hotsprings:{keywords:["bath","warm","relax"],char:"โ™จ๏ธ",category:"symbols"},no_pedestrians:{keywords:["rules","crossing","walking","circle"],char:"๐Ÿšท",category:"symbols"},do_not_litter:{keywords:["trash","bin","garbage","circle"],char:"๐Ÿšฏ",category:"symbols"},no_bicycles:{keywords:["cyclist","prohibited","circle"],char:"๐Ÿšณ",category:"symbols"},"non-potable_water":{keywords:["drink","faucet","tap","circle"],char:"๐Ÿšฑ",category:"symbols"},underage:{keywords:["18","drink","pub","night","minor","circle"],char:"๐Ÿ”ž",category:"symbols"},no_mobile_phones:{keywords:["iphone","mute","circle"],char:"๐Ÿ“ต",category:"symbols"},exclamation:{keywords:["heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],char:"โ—",category:"symbols"},grey_exclamation:{keywords:["surprise","punctuation","gray","wow","warning"],char:"โ•",category:"symbols"},question:{keywords:["doubt","confused"],char:"โ“",category:"symbols"},grey_question:{keywords:["doubts","gray","huh","confused"],char:"โ”",category:"symbols"},bangbang:{keywords:["exclamation","surprise"],char:"โ€ผ๏ธ",category:"symbols"},interrobang:{keywords:["wat","punctuation","surprise"],char:"โ‰๏ธ",category:"symbols"},100:{keywords:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],char:"๐Ÿ’ฏ",category:"symbols"},low_brightness:{keywords:["sun","afternoon","warm","summer"],char:"๐Ÿ”…",category:"symbols"},high_brightness:{keywords:["sun","light"],char:"๐Ÿ”†",category:"symbols"},trident:{keywords:["weapon","spear"],char:"๐Ÿ”ฑ",category:"symbols"},fleur_de_lis:{keywords:["decorative","scout"],char:"โšœ",category:"symbols"},part_alternation_mark:{keywords:["graph","presentation","stats","business","economics","bad"],char:"ใ€ฝ๏ธ",category:"symbols"},warning:{keywords:["exclamation","wip","alert","error","problem","issue"],char:"โš ๏ธ",category:"symbols"},children_crossing:{keywords:["school","warning","danger","sign","driving","yellow-diamond"],char:"๐Ÿšธ",category:"symbols"},beginner:{keywords:["badge","shield"],char:"๐Ÿ”ฐ",category:"symbols"},recycle:{keywords:["arrow","environment","garbage","trash"],char:"โ™ป๏ธ",category:"symbols"},u6307:{keywords:["chinese","point","green-square","kanji"],char:"๐Ÿˆฏ",category:"symbols"},chart:{keywords:["green-square","graph","presentation","stats"],char:"๐Ÿ’น",category:"symbols"},sparkle:{keywords:["stars","green-square","awesome","good","fireworks"],char:"โ‡๏ธ",category:"symbols"},eight_spoked_asterisk:{keywords:["star","sparkle","green-square"],char:"โœณ๏ธ",category:"symbols"},negative_squared_cross_mark:{keywords:["x","green-square","no","deny"],char:"โŽ",category:"symbols"},white_check_mark:{keywords:["green-square","ok","agree","vote","election","answer"],char:"โœ…",category:"symbols"},diamond_shape_with_a_dot_inside:{keywords:["jewel","blue","gem","crystal","fancy"],char:"๐Ÿ’ ",category:"symbols"},cyclone:{keywords:["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin"],char:"๐ŸŒ€",category:"symbols"},loop:{keywords:["tape","cassette"],char:"โžฟ",category:"symbols"},globe_with_meridians:{keywords:["earth","international","world","internet","interweb","i18n"],char:"๐ŸŒ",category:"symbols"},m:{keywords:["alphabet","blue-circle","letter"],char:"โ“‚๏ธ",category:"symbols"},atm:{keywords:["money","sales","cash","blue-square","payment","bank"],char:"๐Ÿง",category:"symbols"},sa:{keywords:["japanese","blue-square","katakana"],char:"๐Ÿˆ‚๏ธ",category:"symbols"},passport_control:{keywords:["custom","blue-square"],char:"๐Ÿ›‚",category:"symbols"},customs:{keywords:["passport","border","blue-square"],char:"๐Ÿ›ƒ",category:"symbols"},baggage_claim:{keywords:["blue-square","airport","transport"],char:"๐Ÿ›„",category:"symbols"},left_luggage:{keywords:["blue-square","travel"],char:"๐Ÿ›…",category:"symbols"},wheelchair:{keywords:["blue-square","disabled","a11y","accessibility"],char:"โ™ฟ",category:"symbols"},no_smoking:{keywords:["cigarette","blue-square","smell","smoke"],char:"๐Ÿšญ",category:"symbols"},wc:{keywords:["toilet","restroom","blue-square"],char:"๐Ÿšพ",category:"symbols"},parking:{keywords:["cars","blue-square","alphabet","letter"],char:"๐Ÿ…ฟ๏ธ",category:"symbols"},potable_water:{keywords:["blue-square","liquid","restroom","cleaning","faucet"],char:"๐Ÿšฐ",category:"symbols"},mens:{keywords:["toilet","restroom","wc","blue-square","gender","male"],char:"๐Ÿšน",category:"symbols"},womens:{keywords:["purple-square","woman","female","toilet","loo","restroom","gender"],char:"๐Ÿšบ",category:"symbols"},baby_symbol:{keywords:["orange-square","child"],char:"๐Ÿšผ",category:"symbols"},restroom:{keywords:["blue-square","toilet","refresh","wc","gender"],char:"๐Ÿšป",category:"symbols"},put_litter_in_its_place:{keywords:["blue-square","sign","human","info"],char:"๐Ÿšฎ",category:"symbols"},cinema:{keywords:["blue-square","record","film","movie","curtain","stage","theater"],char:"๐ŸŽฆ",category:"symbols"},signal_strength:{keywords:["blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],char:"๐Ÿ“ถ",category:"symbols"},koko:{keywords:["blue-square","here","katakana","japanese","destination"],char:"๐Ÿˆ",category:"symbols"},ng:{keywords:["blue-square","words","shape","icon"],char:"๐Ÿ†–",category:"symbols"},ok:{keywords:["good","agree","yes","blue-square"],char:"๐Ÿ†—",category:"symbols"},up:{keywords:["blue-square","above","high"],char:"๐Ÿ†™",category:"symbols"},cool:{keywords:["words","blue-square"],char:"๐Ÿ†’",category:"symbols"},new:{keywords:["blue-square","words","start"],char:"๐Ÿ†•",category:"symbols"},free:{keywords:["blue-square","words"],char:"๐Ÿ†“",category:"symbols"},zero:{keywords:["0","numbers","blue-square","null"],char:"0๏ธโƒฃ",category:"symbols"},one:{keywords:["blue-square","numbers","1"],char:"1๏ธโƒฃ",category:"symbols"},two:{keywords:["numbers","2","prime","blue-square"],char:"2๏ธโƒฃ",category:"symbols"},three:{keywords:["3","numbers","prime","blue-square"],char:"3๏ธโƒฃ",category:"symbols"},four:{keywords:["4","numbers","blue-square"],char:"4๏ธโƒฃ",category:"symbols"},five:{keywords:["5","numbers","blue-square","prime"],char:"5๏ธโƒฃ",category:"symbols"},six:{keywords:["6","numbers","blue-square"],char:"6๏ธโƒฃ",category:"symbols"},seven:{keywords:["7","numbers","blue-square","prime"],char:"7๏ธโƒฃ",category:"symbols"},eight:{keywords:["8","blue-square","numbers"],char:"8๏ธโƒฃ",category:"symbols"},nine:{keywords:["blue-square","numbers","9"],char:"9๏ธโƒฃ",category:"symbols"},keycap_ten:{keywords:["numbers","10","blue-square"],char:"๐Ÿ”Ÿ",category:"symbols"},keycap_star:{keywords:["asterisk"],char:"*โƒฃ",category:"symbols"},1234:{keywords:["numbers","blue-square"],char:"๐Ÿ”ข",category:"symbols"},arrow_forward:{keywords:["blue-square","right","direction","play"],char:"โ–ถ๏ธ",category:"symbols"},double_vertical_bar:{keywords:["pause","blue-square"],char:"โธ",category:"symbols"},black_right_pointing_triangle_with_double_vertical_bar:{keywords:["forward","next","blue-square"],char:"โญ",category:"symbols"},black_square_for_stop:{keywords:["blue-square"],char:"โน",category:"symbols"},black_circle_for_record:{keywords:["blue-square"],char:"โบ",category:"symbols"},black_right_pointing_double_triangle_with_vertical_bar:{keywords:["blue-square","play","pause"],char:"โฏ",category:"symbols"},black_left_pointing_double_triangle_with_vertical_bar:{keywords:["backward"],char:"โฎ",category:"symbols"},fast_forward:{keywords:["blue-square","play","speed","continue"],char:"โฉ",category:"symbols"},rewind:{keywords:["play","blue-square"],char:"โช",category:"symbols"},twisted_rightwards_arrows:{keywords:["blue-square","shuffle","music","random"],char:"๐Ÿ”€",category:"symbols"},repeat:{keywords:["loop","record"],char:"๐Ÿ”",category:"symbols"},repeat_one:{keywords:["blue-square","loop"],char:"๐Ÿ”‚",category:"symbols"},arrow_backward:{keywords:["blue-square","left","direction"],char:"โ—€๏ธ",category:"symbols"},arrow_up_small:{keywords:["blue-square","triangle","direction","point","forward","top"],char:"๐Ÿ”ผ",category:"symbols"},arrow_down_small:{keywords:["blue-square","direction","bottom"],char:"๐Ÿ”ฝ",category:"symbols"},arrow_double_up:{keywords:["blue-square","direction","top"],char:"โซ",category:"symbols"},arrow_double_down:{keywords:["blue-square","direction","bottom"],char:"โฌ",category:"symbols"},arrow_right:{keywords:["blue-square","next"],char:"โžก๏ธ",category:"symbols"},arrow_left:{keywords:["blue-square","previous","back"],char:"โฌ…๏ธ",category:"symbols"},arrow_up:{keywords:["blue-square","continue","top","direction"],char:"โฌ†๏ธ",category:"symbols"},arrow_down:{keywords:["blue-square","direction","bottom"],char:"โฌ‡๏ธ",category:"symbols"},arrow_upper_right:{keywords:["blue-square","point","direction","diagonal","northeast"],char:"โ†—๏ธ",category:"symbols"},arrow_lower_right:{keywords:["blue-square","direction","diagonal","southeast"],char:"โ†˜๏ธ",category:"symbols"},arrow_lower_left:{keywords:["blue-square","direction","diagonal","southwest"],char:"โ†™๏ธ",category:"symbols"},arrow_upper_left:{keywords:["blue-square","point","direction","diagonal","northwest"],char:"โ†–๏ธ",category:"symbols"},arrow_up_down:{keywords:["blue-square","direction","way","vertical"],char:"โ†•๏ธ",category:"symbols"},left_right_arrow:{keywords:["shape","direction","horizontal","sideways"],char:"โ†”๏ธ",category:"symbols"},arrows_counterclockwise:{keywords:["blue-square","sync","cycle"],char:"๐Ÿ”„",category:"symbols"},arrow_right_hook:{keywords:["blue-square","return","rotate","direction"],char:"โ†ช๏ธ",category:"symbols"},leftwards_arrow_with_hook:{keywords:["back","return","blue-square","undo","enter"],char:"โ†ฉ๏ธ",category:"symbols"},arrow_heading_up:{keywords:["blue-square","direction","top"],char:"โคด๏ธ",category:"symbols"},arrow_heading_down:{keywords:["blue-square","direction","bottom"],char:"โคต๏ธ",category:"symbols"},hash:{keywords:["symbol","blue-square","twitter"],char:"#๏ธโƒฃ",category:"symbols"},information_source:{keywords:["blue-square","alphabet","letter"],char:"โ„น๏ธ",category:"symbols"},abc:{keywords:["blue-square","alphabet"],char:"๐Ÿ”ค",category:"symbols"},abcd:{keywords:["blue-square","alphabet"],char:"๐Ÿ”ก",category:"symbols"},capital_abcd:{keywords:["alphabet","words","blue-square"],char:"๐Ÿ” ",category:"symbols"},symbols:{keywords:["blue-square","music","note","ampersand","percent","glyphs","characters"],char:"๐Ÿ”ฃ",category:"symbols"},musical_note:{keywords:["score","tone","sound"],char:"๐ŸŽต",category:"symbols"},notes:{keywords:["music","score"],char:"๐ŸŽถ",category:"symbols"},wavy_dash:{keywords:["draw","line","moustache","mustache","squiggle","scribble"],char:"ใ€ฐ๏ธ",category:"symbols"},curly_loop:{keywords:["scribble","draw","shape","squiggle"],char:"โžฐ",category:"symbols"},heavy_check_mark:{keywords:["ok","nike","answer","yes","tick"],char:"โœ”๏ธ",category:"symbols"},arrows_clockwise:{keywords:["sync","cycle","round","repeat"],char:"๐Ÿ”ƒ",category:"symbols"},heavy_plus_sign:{keywords:["math","calculation","addition","more","increase"],char:"โž•",category:"symbols"},heavy_minus_sign:{keywords:["math","calculation","subtract","less"],char:"โž–",category:"symbols"},heavy_division_sign:{keywords:["divide","math","calculation"],char:"โž—",category:"symbols"},heavy_multiplication_x:{keywords:["math","calculation"],char:"โœ–๏ธ",category:"symbols"},heavy_dollar_sign:{keywords:["money","sales","payment","currency","buck"],char:"๐Ÿ’ฒ",category:"symbols"},currency_exchange:{keywords:["money","sales","dollar","travel"],char:"๐Ÿ’ฑ",category:"symbols"},copyright:{keywords:["ip","license","circle","law","legal"],char:"ยฉ๏ธ",category:"symbols"},registered:{keywords:["alphabet","circle"],char:"ยฎ๏ธ",category:"symbols"},tm:{keywords:["trademark","brand","law","legal"],char:"โ„ข๏ธ",category:"symbols"},end:{keywords:["words","arrow"],char:"๐Ÿ”š",category:"symbols"},back:{keywords:["arrow","words","return"],char:"๐Ÿ”™",category:"symbols"},on:{keywords:["arrow","words"],char:"๐Ÿ”›",category:"symbols"},top:{keywords:["words","blue-square"],char:"๐Ÿ”",category:"symbols"},soon:{keywords:["arrow","words"],char:"๐Ÿ”œ",category:"symbols"},ballot_box_with_check:{keywords:["ok","agree","confirm","black-square","vote","election","yes"],char:"โ˜‘๏ธ",category:"symbols"},radio_button:{keywords:["input","old","music","circle"],char:"๐Ÿ”˜",category:"symbols"},white_circle:{keywords:["shape","round"],char:"โšช",category:"symbols"},black_circle:{keywords:["shape","button","round"],char:"โšซ",category:"symbols"},red_circle:{keywords:["shape","error","danger"],char:"๐Ÿ”ด",category:"symbols"},large_blue_circle:{keywords:["shape","icon","button"],char:"๐Ÿ”ต",category:"symbols"},small_orange_diamond:{keywords:["shape","jewel","gem"],char:"๐Ÿ”ธ",category:"symbols"},small_blue_diamond:{keywords:["shape","jewel","gem"],char:"๐Ÿ”น",category:"symbols"},large_orange_diamond:{keywords:["shape","jewel","gem"],char:"๐Ÿ”ถ",category:"symbols"},large_blue_diamond:{keywords:["shape","jewel","gem"],char:"๐Ÿ”ท",category:"symbols"},small_red_triangle:{keywords:["shape","direction","up","top"],char:"๐Ÿ”บ",category:"symbols"},black_small_square:{keywords:["shape","icon"],char:"โ–ช๏ธ",category:"symbols"},white_small_square:{keywords:["shape","icon"],char:"โ–ซ๏ธ",category:"symbols"},black_large_square:{keywords:["shape","icon","button"],char:"โฌ›",category:"symbols"},white_large_square:{keywords:["shape","icon","stone","button"],char:"โฌœ",category:"symbols"},small_red_triangle_down:{keywords:["shape","direction","bottom"],char:"๐Ÿ”ป",category:"symbols"},black_medium_square:{keywords:["shape","button","icon"],char:"โ—ผ๏ธ",category:"symbols"},white_medium_square:{keywords:["shape","stone","icon"],char:"โ—ป๏ธ",category:"symbols"},black_medium_small_square:{keywords:["icon","shape","button"],char:"โ—พ",category:"symbols"},white_medium_small_square:{keywords:["shape","stone","icon","button"],char:"โ—ฝ",category:"symbols"},black_square_button:{keywords:["shape","input","frame"],char:"๐Ÿ”ฒ",category:"symbols"},white_square_button:{keywords:["shape","input"],char:"๐Ÿ”ณ",category:"symbols"},speaker:{keywords:["sound","volume","silence","broadcast"],char:"๐Ÿ”ˆ",category:"symbols"},sound:{keywords:["volume","speaker","broadcast"],char:"๐Ÿ”‰",category:"symbols"},loud_sound:{keywords:["volume","noise","noisy","speaker","broadcast"],char:"๐Ÿ”Š",category:"symbols"},mute:{keywords:["sound","volume","silence","quiet"],char:"๐Ÿ”‡",category:"symbols"},mega:{keywords:["sound","speaker","volume"],char:"๐Ÿ“ฃ",category:"symbols"},loudspeaker:{keywords:["volume","sound"],char:"๐Ÿ“ข",category:"symbols"},bell:{keywords:["sound","notification","christmas","xmas","chime"],char:"๐Ÿ””",category:"symbols"},no_bell:{keywords:["sound","volume","mute","quiet","silent"],char:"๐Ÿ”•",category:"symbols"},black_joker:{keywords:["poker","cards","game","play","magic"],char:"๐Ÿƒ",category:"symbols"},mahjong:{keywords:["game","play","chinese","kanji"],char:"๐Ÿ€„",category:"symbols"},spades:{keywords:["poker","cards","suits","magic"],char:"โ™ ๏ธ",category:"symbols"},clubs:{keywords:["poker","cards","magic","suits"],char:"โ™ฃ๏ธ",category:"symbols"},hearts:{keywords:["poker","cards","magic","suits"],char:"โ™ฅ๏ธ",category:"symbols"},diamonds:{keywords:["poker","cards","magic","suits"],char:"โ™ฆ๏ธ",category:"symbols"},flower_playing_cards:{keywords:["game","sunset","red"],char:"๐ŸŽด",category:"symbols"},thought_balloon:{keywords:["bubble","cloud","speech","thinking"],char:"๐Ÿ’ญ",category:"symbols"},right_anger_bubble:{keywords:["caption","speech","thinking","mad"],char:"๐Ÿ—ฏ",category:"symbols"},speech_balloon:{keywords:["bubble","words","message","talk","chatting"],char:"๐Ÿ’ฌ",category:"symbols"},left_speech_bubble:{keywords:["words","message","talk","chatting"],char:"๐Ÿ—จ",category:"symbols"},clock1:{keywords:["time","late","early","schedule"],char:"๐Ÿ•",category:"symbols"},clock2:{keywords:["time","late","early","schedule"],char:"๐Ÿ•‘",category:"symbols"},clock3:{keywords:["time","late","early","schedule"],char:"๐Ÿ•’",category:"symbols"},clock4:{keywords:["time","late","early","schedule"],char:"๐Ÿ•“",category:"symbols"},clock5:{keywords:["time","late","early","schedule"],char:"๐Ÿ•”",category:"symbols"},clock6:{keywords:["time","late","early","schedule","dawn","dusk"],char:"๐Ÿ••",category:"symbols"},clock7:{keywords:["time","late","early","schedule"],char:"๐Ÿ•–",category:"symbols"},clock8:{keywords:["time","late","early","schedule"],char:"๐Ÿ•—",category:"symbols"},clock9:{keywords:["time","late","early","schedule"],char:"๐Ÿ•˜",category:"symbols"},clock10:{keywords:["time","late","early","schedule"],char:"๐Ÿ•™",category:"symbols"},clock11:{keywords:["time","late","early","schedule"],char:"๐Ÿ•š",category:"symbols"},clock12:{keywords:["time","noon","midnight","midday","late","early","schedule"],char:"๐Ÿ•›",category:"symbols"},clock130:{keywords:["time","late","early","schedule"],char:"๐Ÿ•œ",category:"symbols"},clock230:{keywords:["time","late","early","schedule"],char:"๐Ÿ•",category:"symbols"},clock330:{keywords:["time","late","early","schedule"],char:"๐Ÿ•ž",category:"symbols"},clock430:{keywords:["time","late","early","schedule"],char:"๐Ÿ•Ÿ",category:"symbols"},clock530:{keywords:["time","late","early","schedule"],char:"๐Ÿ• ",category:"symbols"},clock630:{keywords:["time","late","early","schedule"],char:"๐Ÿ•ก",category:"symbols"},clock730:{keywords:["time","late","early","schedule"],char:"๐Ÿ•ข",category:"symbols"},clock830:{keywords:["time","late","early","schedule"],char:"๐Ÿ•ฃ",category:"symbols"},clock930:{keywords:["time","late","early","schedule"],char:"๐Ÿ•ค",category:"symbols"},clock1030:{keywords:["time","late","early","schedule"],char:"๐Ÿ•ฅ",category:"symbols"},clock1130:{keywords:["time","late","early","schedule"],char:"๐Ÿ•ฆ",category:"symbols"},clock1230:{keywords:["time","late","early","schedule"],char:"๐Ÿ•ง",category:"symbols"},af:{keywords:["afghanistan","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ซ",category:"flags"},ax:{keywords:["ร…land","islands","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ฝ",category:"flags"},al:{keywords:["albania","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ฑ",category:"flags"},dz:{keywords:["algeria","flag","nation","country","banner"],char:"๐Ÿ‡ฉ๐Ÿ‡ฟ",category:"flags"},as:{keywords:["american","samoa","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ธ",category:"flags"},ad:{keywords:["andorra","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ฉ",category:"flags"},ao:{keywords:["angola","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ด",category:"flags"},ai:{keywords:["anguilla","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ฎ",category:"flags"},aq:{keywords:["antarctica","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ถ",category:"flags"},ag:{keywords:["antigua","barbuda","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ฌ",category:"flags"},ar:{keywords:["argentina","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ท",category:"flags"},am:{keywords:["armenia","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ฒ",category:"flags"},aw:{keywords:["aruba","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ผ",category:"flags"},au:{keywords:["australia","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡บ",category:"flags"},at:{keywords:["austria","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡น",category:"flags"},az:{keywords:["azerbaijan","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ฟ",category:"flags"},bs:{keywords:["bahamas","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ธ",category:"flags"},bh:{keywords:["bahrain","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ญ",category:"flags"},bd:{keywords:["bangladesh","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ฉ",category:"flags"},bb:{keywords:["barbados","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ง",category:"flags"},by:{keywords:["belarus","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡พ",category:"flags"},be:{keywords:["belgium","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ช",category:"flags"},bz:{keywords:["belize","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ฟ",category:"flags"},bj:{keywords:["benin","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ฏ",category:"flags"},bm:{keywords:["bermuda","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ฒ",category:"flags"},bt:{keywords:["bhutan","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡น",category:"flags"},bo:{keywords:["bolivia","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ด",category:"flags"},bq:{keywords:["bonaire","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ถ",category:"flags"},ba:{keywords:["bosnia","herzegovina","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ฆ",category:"flags"},bw:{keywords:["botswana","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ผ",category:"flags"},br:{keywords:["brazil","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ท",category:"flags"},io:{keywords:["british","indian","ocean","territory","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡ด",category:"flags"},vg:{keywords:["british","virgin","islands","bvi","flag","nation","country","banner"],char:"๐Ÿ‡ป๐Ÿ‡ฌ",category:"flags"},bn:{keywords:["brunei","darussalam","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ณ",category:"flags"},bg:{keywords:["bulgaria","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ฌ",category:"flags"},bf:{keywords:["burkina","faso","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ซ",category:"flags"},bi:{keywords:["burundi","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ฎ",category:"flags"},cv:{keywords:["cabo","verde","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ป",category:"flags"},kh:{keywords:["cambodia","flag","nation","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ญ",category:"flags"},cm:{keywords:["cameroon","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ฒ",category:"flags"},ca:{keywords:["canada","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ฆ",category:"flags"},ic:{keywords:["canary","islands","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡จ",category:"flags"},ky:{keywords:["cayman","islands","flag","nation","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡พ",category:"flags"},cf:{keywords:["central","african","republic","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ซ",category:"flags"},td:{keywords:["chad","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ฉ",category:"flags"},chile:{keywords:["flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ฑ",category:"flags"},cn:{keywords:["china","chinese","prc","flag","country","nation","banner"],char:"๐Ÿ‡จ๐Ÿ‡ณ",category:"flags"},cx:{keywords:["christmas","island","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ฝ",category:"flags"},cc:{keywords:["cocos","keeling","islands","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡จ",category:"flags"},co:{keywords:["colombia","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ด",category:"flags"},km:{keywords:["comoros","flag","nation","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ฒ",category:"flags"},cg:{keywords:["congo","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ฌ",category:"flags"},drc:{keywords:["congo","democratic","republic","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ฉ",category:"flags"},ck:{keywords:["cook","islands","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ฐ",category:"flags"},cr:{keywords:["costa","rica","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ท",category:"flags"},hr:{keywords:["croatia","flag","nation","country","banner"],char:"๐Ÿ‡ญ๐Ÿ‡ท",category:"flags"},cu:{keywords:["cuba","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡บ",category:"flags"},cw:{keywords:["curaรงao","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ผ",category:"flags"},cy:{keywords:["cyprus","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡พ",category:"flags"},cz:{keywords:["czech_republic","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ฟ",category:"flags"},dk:{keywords:["denmark","flag","nation","country","banner"],char:"๐Ÿ‡ฉ๐Ÿ‡ฐ",category:"flags"},dj:{keywords:["djibouti","flag","nation","country","banner"],char:"๐Ÿ‡ฉ๐Ÿ‡ฏ",category:"flags"},dm:{keywords:["dominica","flag","nation","country","banner"],char:"๐Ÿ‡ฉ๐Ÿ‡ฒ",category:"flags"},do:{keywords:["dominican","republic","flag","nation","country","banner"],char:"๐Ÿ‡ฉ๐Ÿ‡ด",category:"flags"},ec:{keywords:["ecuador","flag","nation","country","banner"],char:"๐Ÿ‡ช๐Ÿ‡จ",category:"flags"},eg:{keywords:["egypt","flag","nation","country","banner"],char:"๐Ÿ‡ช๐Ÿ‡ฌ",category:"flags"},sv:{keywords:["el","salvador","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ป",category:"flags"},gq:{keywords:["equatorial","guinea","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ถ",category:"flags"},er:{keywords:["eritrea","flag","nation","country","banner"],char:"๐Ÿ‡ช๐Ÿ‡ท",category:"flags"},ee:{keywords:["estonia","flag","nation","country","banner"],char:"๐Ÿ‡ช๐Ÿ‡ช",category:"flags"},et:{keywords:["ethiopia","flag","nation","country","banner"],char:"๐Ÿ‡ช๐Ÿ‡น",category:"flags"},eu:{keywords:["european","union","flag","banner"],char:"๐Ÿ‡ช๐Ÿ‡บ",category:"flags"},fk:{keywords:["falkland","islands","malvinas","flag","nation","country","banner"],char:"๐Ÿ‡ซ๐Ÿ‡ฐ",category:"flags"},fo:{keywords:["faroe","islands","flag","nation","country","banner"],char:"๐Ÿ‡ซ๐Ÿ‡ด",category:"flags"},fj:{keywords:["fiji","flag","nation","country","banner"],char:"๐Ÿ‡ซ๐Ÿ‡ฏ",category:"flags"},fi:{keywords:["finland","flag","nation","country","banner"],char:"๐Ÿ‡ซ๐Ÿ‡ฎ",category:"flags"},fr:{keywords:["banner","flag","nation","france","french","country"],char:"๐Ÿ‡ซ๐Ÿ‡ท",category:"flags"},gf:{keywords:["french","guiana","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ซ",category:"flags"},pf:{keywords:["french","polynesia","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ซ",category:"flags"},tf:{keywords:["french","southern","territories","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ซ",category:"flags"},ga:{keywords:["gabon","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ฆ",category:"flags"},gm:{keywords:["gambia","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ฒ",category:"flags"},ge:{keywords:["georgia","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ช",category:"flags"},de:{keywords:["german","nation","flag","country","banner"],char:"๐Ÿ‡ฉ๐Ÿ‡ช",category:"flags"},gh:{keywords:["ghana","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ญ",category:"flags"},gi:{keywords:["gibraltar","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ฎ",category:"flags"},gr:{keywords:["greece","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ท",category:"flags"},gl:{keywords:["greenland","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ฑ",category:"flags"},gd:{keywords:["grenada","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ฉ",category:"flags"},gp:{keywords:["guadeloupe","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ต",category:"flags"},gu:{keywords:["guam","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡บ",category:"flags"},gt:{keywords:["guatemala","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡น",category:"flags"},gg:{keywords:["guernsey","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ฌ",category:"flags"},gn:{keywords:["guinea","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ณ",category:"flags"},gw:{keywords:["guinea","bissau","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ผ",category:"flags"},gy:{keywords:["guyana","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡พ",category:"flags"},ht:{keywords:["haiti","flag","nation","country","banner"],char:"๐Ÿ‡ญ๐Ÿ‡น",category:"flags"},hn:{keywords:["honduras","flag","nation","country","banner"],char:"๐Ÿ‡ญ๐Ÿ‡ณ",category:"flags"},hk:{keywords:["hong","kong","flag","nation","country","banner"],char:"๐Ÿ‡ญ๐Ÿ‡ฐ",category:"flags"},hu:{keywords:["hungary","flag","nation","country","banner"],char:"๐Ÿ‡ญ๐Ÿ‡บ",category:"flags"},is:{keywords:["iceland","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡ธ",category:"flags"},in:{keywords:["india","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡ณ",category:"flags"},indonesia:{keywords:["flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡ฉ",category:"flags"},ir:{keywords:["iran,","islamic","republic","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡ท",category:"flags"},iq:{keywords:["iraq","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡ถ",category:"flags"},ie:{keywords:["ireland","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡ช",category:"flags"},im:{keywords:["isle","man","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡ฒ",category:"flags"},il:{keywords:["israel","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡ฑ",category:"flags"},it:{keywords:["italy","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡น",category:"flags"},ci:{keywords:["ivory","coast","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ฎ",category:"flags"},jm:{keywords:["jamaica","flag","nation","country","banner"],char:"๐Ÿ‡ฏ๐Ÿ‡ฒ",category:"flags"},jp:{keywords:["japanese","nation","flag","country","banner"],char:"๐Ÿ‡ฏ๐Ÿ‡ต",category:"flags"},je:{keywords:["jersey","flag","nation","country","banner"],char:"๐Ÿ‡ฏ๐Ÿ‡ช",category:"flags"},jo:{keywords:["jordan","flag","nation","country","banner"],char:"๐Ÿ‡ฏ๐Ÿ‡ด",category:"flags"},kz:{keywords:["kazakhstan","flag","nation","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ฟ",category:"flags"},ke:{keywords:["kenya","flag","nation","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ช",category:"flags"},ki:{keywords:["kiribati","flag","nation","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ฎ",category:"flags"},xk:{keywords:["kosovo","flag","nation","country","banner"],char:"๐Ÿ‡ฝ๐Ÿ‡ฐ",category:"flags"},kw:{keywords:["kuwait","flag","nation","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ผ",category:"flags"},kg:{keywords:["kyrgyzstan","flag","nation","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ฌ",category:"flags"},la:{keywords:["lao","democratic","republic","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡ฆ",category:"flags"},lv:{keywords:["latvia","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡ป",category:"flags"},lb:{keywords:["lebanon","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡ง",category:"flags"},ls:{keywords:["lesotho","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡ธ",category:"flags"},lr:{keywords:["liberia","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡ท",category:"flags"},ly:{keywords:["libya","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡พ",category:"flags"},li:{keywords:["liechtenstein","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡ฎ",category:"flags"},lt:{keywords:["lithuania","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡น",category:"flags"},lu:{keywords:["luxembourg","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡บ",category:"flags"},mo:{keywords:["macao","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ด",category:"flags"},mk:{keywords:["macedonia,","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ฐ",category:"flags"},mg:{keywords:["madagascar","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ฌ",category:"flags"},mw:{keywords:["malawi","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ผ",category:"flags"},my:{keywords:["malaysia","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡พ",category:"flags"},mv:{keywords:["maldives","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ป",category:"flags"},ml:{keywords:["mali","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ฑ",category:"flags"},mt:{keywords:["malta","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡น",category:"flags"},mh:{keywords:["marshall","islands","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ญ",category:"flags"},mq:{keywords:["martinique","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ถ",category:"flags"},mr:{keywords:["mauritania","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ท",category:"flags"},mu:{keywords:["mauritius","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡บ",category:"flags"},yt:{keywords:["mayotte","flag","nation","country","banner"],char:"๐Ÿ‡พ๐Ÿ‡น",category:"flags"},mx:{keywords:["mexico","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ฝ",category:"flags"},fm:{keywords:["micronesia,","federated","states","flag","nation","country","banner"],char:"๐Ÿ‡ซ๐Ÿ‡ฒ",category:"flags"},md:{keywords:["moldova,","republic","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ฉ",category:"flags"},mc:{keywords:["monaco","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡จ",category:"flags"},mn:{keywords:["mongolia","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ณ",category:"flags"},me:{keywords:["montenegro","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ช",category:"flags"},ms:{keywords:["montserrat","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ธ",category:"flags"},ma:{keywords:["morocco","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ฆ",category:"flags"},mz:{keywords:["mozambique","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ฟ",category:"flags"},mm:{keywords:["myanmar","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ฒ",category:"flags"},na:{keywords:["namibia","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ฆ",category:"flags"},nr:{keywords:["nauru","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ท",category:"flags"},np:{keywords:["nepal","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ต",category:"flags"},nl:{keywords:["netherlands","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ฑ",category:"flags"},nc:{keywords:["new","caledonia","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡จ",category:"flags"},nz:{keywords:["new","zealand","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ฟ",category:"flags"},ni:{keywords:["nicaragua","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ฎ",category:"flags"},ne:{keywords:["niger","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ช",category:"flags"},nigeria:{keywords:["flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ฌ",category:"flags"},nu:{keywords:["niue","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡บ",category:"flags"},nf:{keywords:["norfolk","island","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ซ",category:"flags"},mp:{keywords:["northern","mariana","islands","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ต",category:"flags"},kp:{keywords:["north","korea","nation","flag","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ต",category:"flags"},no:{keywords:["norway","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ด",category:"flags"},om:{keywords:["oman","flag","nation","country","banner"],char:"๐Ÿ‡ด๐Ÿ‡ฒ",category:"flags"},pk:{keywords:["pakistan","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ฐ",category:"flags"},pw:{keywords:["palau","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ผ",category:"flags"},ps:{keywords:["palestine","palestinian","territories","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ธ",category:"flags"},pa:{keywords:["panama","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ฆ",category:"flags"},pg:{keywords:["papua","new","guinea","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ฌ",category:"flags"},py:{keywords:["paraguay","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡พ",category:"flags"},pe:{keywords:["peru","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ช",category:"flags"},ph:{keywords:["philippines","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ญ",category:"flags"},pn:{keywords:["pitcairn","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ณ",category:"flags"},pl:{keywords:["poland","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ฑ",category:"flags"},pt:{keywords:["portugal","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡น",category:"flags"},pr:{keywords:["puerto","rico","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ท",category:"flags"},qa:{keywords:["qatar","flag","nation","country","banner"],char:"๐Ÿ‡ถ๐Ÿ‡ฆ",category:"flags"},re:{keywords:["rรฉunion","flag","nation","country","banner"],char:"๐Ÿ‡ท๐Ÿ‡ช",category:"flags"},ro:{keywords:["romania","flag","nation","country","banner"],char:"๐Ÿ‡ท๐Ÿ‡ด",category:"flags"},ru:{keywords:["russian","federation","flag","nation","country","banner"],char:"๐Ÿ‡ท๐Ÿ‡บ",category:"flags"},rw:{keywords:["rwanda","flag","nation","country","banner"],char:"๐Ÿ‡ท๐Ÿ‡ผ",category:"flags"},bl:{keywords:["saint","barthรฉlemy","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ฑ",category:"flags"},sh:{keywords:["saint","helena","ascension","tristan","cunha","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ญ",category:"flags"},kn:{keywords:["saint","kitts","nevis","flag","nation","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ณ",category:"flags"},lc:{keywords:["saint","lucia","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡จ",category:"flags"},pm:{keywords:["saint","pierre","miquelon","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ฒ",category:"flags"},vc:{keywords:["saint","vincent","grenadines","flag","nation","country","banner"],char:"๐Ÿ‡ป๐Ÿ‡จ",category:"flags"},ws:{keywords:["samoa","flag","nation","country","banner"],char:"๐Ÿ‡ผ๐Ÿ‡ธ",category:"flags"},sm:{keywords:["san","marino","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ฒ",category:"flags"},st:{keywords:["sao","tome","principe","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡น",category:"flags"},saudi_arabia:{keywords:["flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ฆ",category:"flags"},sn:{keywords:["senegal","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ณ",category:"flags"},rs:{keywords:["serbia","flag","nation","country","banner"],char:"๐Ÿ‡ท๐Ÿ‡ธ",category:"flags"},sc:{keywords:["seychelles","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡จ",category:"flags"},sl:{keywords:["sierra","leone","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ฑ",category:"flags"},sg:{keywords:["singapore","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ฌ",category:"flags"},sx:{keywords:["sint","maarten","dutch","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ฝ",category:"flags"},sk:{keywords:["slovakia","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ฐ",category:"flags"},si:{keywords:["slovenia","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ฎ",category:"flags"},sb:{keywords:["solomon","islands","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ง",category:"flags"},so:{keywords:["somalia","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ด",category:"flags"},za:{keywords:["south","africa","flag","nation","country","banner"],char:"๐Ÿ‡ฟ๐Ÿ‡ฆ",category:"flags"},gs:{keywords:["south","georgia","sandwich","islands","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ธ",category:"flags"},kr:{keywords:["south","korea","nation","flag","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ท",category:"flags"},ss:{keywords:["south","sudan","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ธ",category:"flags"},es:{keywords:["spain","flag","nation","country","banner"],char:"๐Ÿ‡ช๐Ÿ‡ธ",category:"flags"},lk:{keywords:["sri","lanka","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡ฐ",category:"flags"},sd:{keywords:["sudan","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ฉ",category:"flags"},sr:{keywords:["suriname","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ท",category:"flags"},sz:{keywords:["swaziland","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ฟ",category:"flags"},se:{keywords:["sweden","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ช",category:"flags"},ch:{keywords:["switzerland","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ญ",category:"flags"},sy:{keywords:["syrian","arab","republic","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡พ",category:"flags"},tw:{keywords:["taiwan","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ผ",category:"flags"},tj:{keywords:["tajikistan","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ฏ",category:"flags"},tz:{keywords:["tanzania,","united","republic","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ฟ",category:"flags"},th:{keywords:["thailand","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ญ",category:"flags"},tl:{keywords:["timor","leste","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ฑ",category:"flags"},tg:{keywords:["togo","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ฌ",category:"flags"},tk:{keywords:["tokelau","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ฐ",category:"flags"},to:{keywords:["tonga","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ด",category:"flags"},tt:{keywords:["trinidad","tobago","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡น",category:"flags"},tn:{keywords:["tunisia","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ณ",category:"flags"},tr:{keywords:["turkey","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ท",category:"flags"},turkmenistan:{keywords:["flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ฒ",category:"flags"},tc:{keywords:["turks","caicos","islands","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡จ",category:"flags"},tuvalu:{keywords:["flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ป",category:"flags"},ug:{keywords:["uganda","flag","nation","country","banner"],char:"๐Ÿ‡บ๐Ÿ‡ฌ",category:"flags"},ua:{keywords:["ukraine","flag","nation","country","banner"],char:"๐Ÿ‡บ๐Ÿ‡ฆ",category:"flags"},ae:{keywords:["united","arab","emirates","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ช",category:"flags"},gb:{keywords:["united","kingdom","great","britain","northern","ireland","flag","nation","country","banner","british","UK","english","england","union jack"],char:"๐Ÿ‡ฌ๐Ÿ‡ง",category:"flags"},us:{keywords:["united","states","america","flag","nation","country","banner"],char:"๐Ÿ‡บ๐Ÿ‡ธ",category:"flags"},vi:{keywords:["virgin","islands","us","flag","nation","country","banner"],char:"๐Ÿ‡ป๐Ÿ‡ฎ",category:"flags"},uy:{keywords:["uruguay","flag","nation","country","banner"],char:"๐Ÿ‡บ๐Ÿ‡พ",category:"flags"},uz:{keywords:["uzbekistan","flag","nation","country","banner"],char:"๐Ÿ‡บ๐Ÿ‡ฟ",category:"flags"},vu:{keywords:["vanuatu","flag","nation","country","banner"],char:"๐Ÿ‡ป๐Ÿ‡บ",category:"flags"},va:{keywords:["vatican","city","flag","nation","country","banner"],char:"๐Ÿ‡ป๐Ÿ‡ฆ",category:"flags"},ve:{keywords:["venezuela","bolivarian","republic","flag","nation","country","banner"],char:"๐Ÿ‡ป๐Ÿ‡ช",category:"flags"},vn:{keywords:["viet","nam","flag","nation","country","banner"],char:"๐Ÿ‡ป๐Ÿ‡ณ",category:"flags"},wf:{keywords:["wallis","futuna","flag","nation","country","banner"],char:"๐Ÿ‡ผ๐Ÿ‡ซ",category:"flags"},eh:{keywords:["western","sahara","flag","nation","country","banner"],char:"๐Ÿ‡ช๐Ÿ‡ญ",category:"flags"},ye:{keywords:["yemen","flag","nation","country","banner"],char:"๐Ÿ‡พ๐Ÿ‡ช",category:"flags"},zm:{keywords:["zambia","flag","nation","country","banner"],char:"๐Ÿ‡ฟ๐Ÿ‡ฒ",category:"flags"},zw:{keywords:["zimbabwe","flag","nation","country","banner"],char:"๐Ÿ‡ฟ๐Ÿ‡ผ",category:"flags"},octocat:{keywords:["animal","octopus","github","custom_"],char:null,category:"_custom"},shipit:{keywords:["squirrel","detective","animal","sherlock","inspector","custom_"],char:null,category:"_custom"},bowtie:{keywords:["face","formal","fashion","suit","classy","magic","circus"],char:null,category:"_custom"},neckbeard:{keywords:["nerdy","face","custom_"],char:null,category:"_custom"},metal:{keywords:["fingers","rocknroll","concert","band","custom_"],char:null,category:"_custom"},fu:{keywords:["fuck","finger","dislike","thumbsdown","disapprove","no","custom_"],char:null,category:"_custom"},trollface:{keywords:["internet","meme","custom_"],char:null,category:"_custom"},godmode:{keywords:["doom","oldschool"],char:null,category:"_custom"},goberserk:{keywords:["doom","rage","bloody","hurt"],char:null,category:"_custom"},finnadie:{keywords:["doom","oldschool"],char:null,category:"_custom"},feelsgood:{keywords:["doom","oldschool"],char:null,category:"_custom"},rage1:{keywords:["angry","mad","hate","despise"],char:null,category:"_custom"},rage2:{keywords:["angry","mad","hate","despise"],char:null,category:"_custom"},rage3:{keywords:["angry","mad","hate","despise"],char:null,category:"_custom"},rage4:{keywords:["angry","mad","hate","despise"],char:null,category:"_custom"},suspect:{keywords:["mad","custom_"],char:null,category:"_custom"},hurtrealbad:{keywords:["mad","injured","doom","oldschool","custom_"],char:null,category:"_custom"}},q=function(){function e(e){this.sanitizer=e,this.activeCategory="people",this.searchResults=[],this.searchVisible=!1,this.selected=new r.Subject}return Object.defineProperty(e.prototype,"searchQuery",{get:function(){return this._searchQuery},set:function(e){var r=this;this._searchQuery=e,setTimeout((function(){r.searchResults=Object.keys(I).filter((function(r){return r.includes(e)})).map((function(e){return I[e]})),r.searchResults.splice(50,r.searchResults.length),console.log("looking for '"+e+"' => "+r.searchResults.length+" results")}))},enumerable:!1,configurable:!0}),e.prototype.humanize=function(e){return e.replace(/(^| )[a-z]/g,(function(e){return e.toUpperCase()})).replace(/_/g," ")},e.prototype.select=function(e){this.selected.next(e)},e.prototype.pairs=function(e){return Object.keys(e).map((function(r){return[r,e[r]]}))},e.prototype.hideSearch=function(){var e=this;setTimeout((function(){e.searchVisible=!1}))},e.prototype.showSearch=function(){var e=this;setTimeout((function(){e.searchVisible=!0}))},e.prototype.ngOnInit=function(){var e,r,a={},t={symbols:"warning",people:"people",animals_and_nature:"nature",travel_and_places:"location_on",activity:"local_activity",food_and_drink:"restaurant",objects:"computer",flags:"flag"};try{for(var o=j(this.pairs(I)),n=o.next();!n.done;n=o.next()){var s=n.value,c=(s[0],s[1]);a[c.category]||(a[c.category]={name:c.category,icon:t[c.category]||"code",emojis:[]}),c.html=this.sanitizer.bypassSecurityTrustHtml(twemoji.parse(c.char||"")),a[c.category].emojis.push(c)}}catch(r){e={error:r}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(e)throw e.error}}this.categories=this.pairs(a).map((function(e){return e[1]}))},e}();q.decorators=[{type:t.Component,args:[{selector:"emoji-selector-panel",template:'<div class="search-box" *ngIf="searchVisible">\r\n\t<a mat-icon-button href="javascript:;" (click)="hideSearch()">\r\n\t\t<mat-icon>arrow_back</mat-icon>\r\n\t</a>\r\n\t<mat-form-field appearance="outline" floatLabel="always">\r\n\t\t<mat-label>Search for emoji</mat-label>\r\n\t\t<input name="search" type="text" matInput placeholder="Start typing" [(ngModel)]="searchQuery" />\r\n\t</mat-form-field>\r\n</div>\r\n\r\n<div class="selector">\r\n\t<ng-container *ngIf="searchVisible">\r\n\t\t<div class="emoji-list">\r\n\t\t\t<a href="javascript:;" (click)="select(emoji.char)" \r\n\t\t\t\t*ngFor="let emoji of searchResults" [innerHtml]="emoji.html || \'\'">\r\n\t\t\t</a>\r\n\t\t</div>\r\n\t</ng-container>\r\n\t<ng-container *ngIf="!searchVisible">\r\n\t\t<div class="categories">\r\n\t\t\t<ng-container *ngIf="!searchVisible">\r\n\t\t\t\t<a [title]="humanize(category.name)" [class.active]="activeCategory === category.name" mat-icon-button *ngFor="let category of categories" (click)="activeCategory = category.name">\r\n\t\t\t\t\t<mat-icon>{{category.icon}}</mat-icon>\r\n\t\t\t\t</a>\r\n\r\n\t\t\t\t<a title="Search" [class.active] mat-icon-button (click)="showSearch()">\r\n\t\t\t\t\t<mat-icon>search</mat-icon>\r\n\t\t\t\t</a>\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t\t<ng-container *ngFor="let category of categories">\r\n\t\t\t<div class="emoji-list" *ngIf="activeCategory && activeCategory == category.name">\r\n\t\t\t\t<a href="javascript:;" (click)="select(emoji.char)" \r\n\t\t\t\t\t*ngFor="let emoji of category.emojis" [innerHtml]="emoji.html || \'\'">\r\n\t\t\t\t</a>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n</div>',styles:[":host{background:#111;border:1px solid #333;border-radius:5px;color:#fff;max-width:calc(100vw - 1.5em);padding:.5em;width:calc(288px + 9em)}.selector{display:flex;flex-direction:column}.categories a{opacity:.25;transition:opacity .4s ease-in-out}.categories a:hover{opacity:.5}.categories a.active{opacity:1}.emoji-list{flex-grow:1;height:20em;overflow-y:auto}.emoji-list a{background-color:#111;display:inline-block;margin:4px;padding:2px}.emoji-list a ::ng-deep .emoji{height:32px;width:32px}.emoji-list a:hover{background-color:#333}.search-box{align-items:baseline;display:flex}.search-box mat-form-field{flex-grow:1}@media (max-width:500px){.selector{flex-direction:row;height:27em}.emoji-list{height:auto}}"]}]}],q.ctorParameters=function(){return[{type:n.DomSanitizer}]},q.propDecorators={selected:[{type:t.Output}]};var C=function(){function e(){this._selected=new r.Subject,this.showEmojiPanel=!1}return Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected},enumerable:!1,configurable:!0}),e.prototype.ngOnDestroy=function(){this.removeListener(),this.panelElement.nativeElement.remove()},e.prototype.ngAfterViewInit=function(){(document.body.querySelector("[ng-version]")||document.body).appendChild(this.panelElement.nativeElement)},e.prototype.removeListener=function(){document.removeEventListener("click",this.clickListener),window.removeEventListener("resize",this.resizeListener)},e.prototype.place=function(){var e=this.buttonElement.nativeElement.getBoundingClientRect(),r=this.panelElement.nativeElement.getBoundingClientRect(),a=window.scrollX+e.left+e.width-r.width;a<0&&(a=(window.scrollX+window.innerWidth)/2-r.width/2),Object.assign(this.panelElement.nativeElement.style,{top:window.scrollY+e.top+e.height+"px",left:Math.max(0,a)+"px"})},e.prototype.show=function(){var e=this;this.showEmojiPanel?this.showEmojiPanel=!1:(this.showEmojiPanel=!0,this.place(),setTimeout((function(){e.resizeListener=function(){e.showEmojiPanel&&e.place()},e.clickListener=function(r){for(var a=r.target,t=!1;a;)a.matches("emoji-selector-panel")&&(t=!0),a=a.parentElement;t||(e.showEmojiPanel=!1,e.removeListener())},document.addEventListener("click",e.clickListener),window.addEventListener("resize",e.resizeListener)})))},e.prototype.insert=function(e){this._selected.next(e)},e}();C.decorators=[{type:t.Component,args:[{selector:"emoji-selector-button",template:'\n <button #button type="button" mat-icon-button (click)="show()">\n <mat-icon>emoji_emotions</mat-icon>\n </button>\n <emoji-selector-panel \n #panel\n (selected)="insert($event)"\n [class.visible]="showEmojiPanel"\n ></emoji-selector-panel>\n ',styles:["\n :host {\n display: block;\n position: relative;\n }\n\n emoji-selector-panel {\n position: absolute;\n /* bottom: 2.5em;\n right: 0; */\n opacity: 0;\n pointer-events: none;\n z-index: 10;\n }\n\n emoji-selector-panel.visible {\n pointer-events: initial;\n opacity: 1;\n }\n\n button {\n color: #666\n }\n\n /* :host.bottom-left emoji-selector-panel {\n right: auto;\n left: 0;\n }\n\n :host.top-right emoji-selector-panel {\n top: 2.4em;\n bottom: auto;\n }\n\n :host.top-left emoji-selector-panel {\n top: 2.4em;\n bottom: auto;\n left: 0;\n right: auto;\n } */\n "]}]}],C.propDecorators={selected:[{type:t.Output}],panelElement:[{type:t.ViewChild,args:["panel",{read:t.ElementRef}]}],buttonElement:[{type:t.ViewChild,args:["button",{read:t.ElementRef}]}]};var O=[q,C],z=function(){};z.decorators=[{type:t.NgModule,args:[{declarations:O,imports:[o.CommonModule,d.FormsModule,s.MatIconModule,c.MatButtonModule,i.MatFormFieldModule,l.MatInputModule],exports:O}]}];var P=function(){function e(e,a,t){this.banta=e,this.backend=a,this.matDialog=t,this._subs=new y.SubSink,this.auxOpen=!1,this.auxTitle="Notifications",this.auxMode="notifications",this.mobileFocus=null,this.newNotifications=!1,this.chatLabel="Chat",this.commentsLabel="Comments",this._signInSelected=new r.Subject,this.pointOpen=null,this.pointSubChat=null,this.newPointSubMessage={},this.genericAvatarUrl="https://gravatar.com/avatar/915c804e0be607a4ad766ddadea5c48a?s=512&d=https://codepen.io/assets/avatars/user-avatar-512x512-6e240cf350d2f1cc07c2bed234c3a3bb5f1b237023c204c782622e80d6b212ba.png"}return e.prototype.ngOnInit=function(){var e=this;this._subs.add(this.banta.userChanged.subscribe((function(r){return e.currentUser=r})),this.backend.notificationsChanged.subscribe((function(r){return e.notifications=r})),this.backend.newNotification.subscribe((function(r){e.newNotifications=!0})))},e.prototype.sendPointSubMessage=function(){return v(this,void 0,void 0,(function(){var e,r,a;return x(this,(function(t){switch(t.label){case 0:if(e=(this.newPointSubMessage.message||"").trim(),this.newPointSubMessage.message="",""===e)return[2];r={user:null,sentAt:Date.now(),upvotes:0,message:e},t.label=1;case 1:return t.trys.push([1,3,,4]),[4,this.pointSubChat.send(r)];case 2:return t.sent(),[3,4];case 3:return a=t.sent(),console.error("Failed to send point sub-message:"),console.error(a),[3,4];case 4:return[2]}}))}))},e.prototype.goToMessage=function(e){return v(this,void 0,void 0,(function(){var r,a,t,o,n;return x(this,(function(s){switch(s.label){case 0:return r=e,e.parentMessageId?[4,this.backend.getMessage(e.topicId,e.parentMessageId)]:[3,2];case 1:if(!(a=s.sent()))return console.error("Failed to look up parent message "+e.topicId+"/"+e.parentMessageId),console.error("Original message was:"),console.dir(r),[2];e=a,s.label=2;case 2:return"comment"!==(t=this.getViewType(e))?[3,5]:(this.pointSubChat&&(this.pointSubChat.close&&this.pointSubChat.close(),this.pointSubChat=null),this.mobileFocus="points",this.pointOpen=e,o=this,[4,this.backend.getSourceForThread(e.topicId,e.id)]);case 3:return o.pointSubChat=s.sent(),n=this,[4,this.backend.refreshMessage(e)];case 4:return n.pointOpen=s.sent(),this.newPointSubMessage={},[3,6];case 5:"chat"===t&&(this.mobileFocus="firehose",this.firehose.jumpToMessage(e)),s.label=6;case 6:return[2]}}))}))},e.prototype.pointUnfocus=function(){this.pointOpen=null,this.pointSubChat&&(this.pointSubChat.close&&this.pointSubChat.close(),this.pointSubChat=null)},e.prototype.ngOnDestroy=function(){this._subs.unsubscribe()},e.prototype.showAux=function(e,r){this.auxOpen=!0,this.auxTitle=e,this.auxMode=r,this.mobileFocus="aux"},e.prototype.showNotifications=function(){this.showAux("Notifications","notifications")},Object.defineProperty(e.prototype,"topicID",{get:function(){return this._topicID},set:function(e){this._topicID=e,this.close(),this.connectToTopic(this._topicID)},enumerable:!1,configurable:!0}),e.prototype.connectToTopic=function(e){return v(this,void 0,void 0,(function(){var r,a;return x(this,(function(t){switch(t.label){case 0:return r=this,[4,this.backend.getSourceForTopic(e+"_firehose")];case 1:return r.firehoseSource=t.sent(),a=this,[4,this.backend.getSourceForTopic(e+"_thepoint")];case 2:return a.pointSource=t.sent(),[2]}}))}))},Object.defineProperty(e.prototype,"signInSelected",{get:function(){return this._signInSelected},enumerable:!1,configurable:!0}),e.prototype.showSignIn=function(){this._signInSelected.next()},e.prototype.close=function(){this.firehoseSource&&(this.firehoseSource.close&&this.firehoseSource.close(),this.firehoseSource=null),this.pointSource&&(this.pointSource.close&&this.pointSource.close(),this.pointSource=null)},Object.defineProperty(e.prototype,"hasPoint",{get:function(){return null!=this.pointOpen},enumerable:!1,configurable:!0}),e.prototype.closeAux=function(){this.auxOpen=!1,this.mobileFocus="firehose"},e.prototype.getViewType=function(e){return e.topicId.endsWith("_firehose")?"chat":(e.topicId.endsWith("_thepoint"),"comment")},e.prototype.upvoteMessage=function(e){return v(this,void 0,void 0,(function(){return x(this,(function(r){switch(r.label){case 0:return e.parentMessageId?[4,this.backend.upvoteMessage(e.topicId,e.parentMessageId,e.id)]:[3,2];case 1:return r.sent(),[3,4];case 2:return[4,this.backend.upvoteMessage(e.topicId,e.id)];case 3:r.sent(),r.label=4;case 4:return[2]}}))}))},e.prototype.showProfile=function(e){this.profileUser=e,this.showAux("@"+e.username+"'s Profile","profile")},e.prototype.sendReport=function(e){this.auxOpen=!1,alert("would send report")},e.prototype.reportMessage=function(e){this.reportedMessage=e,this.showAux("Report message from @"+e.user.username,"report")},e}();P.decorators=[{type:t.Component,args:[{selector:"banta",template:'\r\n<mat-menu #userMenu="matMenu">\r\n <ng-container *ngIf="currentUser">\r\n <button [disabled]="true" mat-menu-item>{{currentUser.displayName}} (@{{currentUser.username}})</button>\r\n <button mat-menu-item (click)="signOut()">Sign Out</button>\r\n </ng-container>\r\n <ng-container *ngIf="!currentUser">\r\n <button mat-menu-item>Sign In</button>\r\n </ng-container>\r\n <button mat-menu-item>Help</button>\r\n</mat-menu>\r\n\r\n<div class="tabs">\r\n <div>\r\n <a mat-button (click)="mobileFocus = \'chat\'">{{chatLabel}}</a>\r\n <a mat-button (click)="mobileFocus = \'comments\'">{{commentsLabel}}</a>\r\n </div>\r\n <div class="spacer"></div>\r\n <div>\r\n <ng-container *ngIf="currentUser">\r\n <button mat-button [matMenuTriggerFor]="userMenu">\r\n @{{currentUser.username}}\r\n </button>\r\n <button mat-icon-button (click)="showNotifications()">\r\n <mat-icon>notification_important</mat-icon>\r\n </button>\r\n </ng-container>\r\n \r\n <button mat-button *ngIf="!currentUser" (click)="showSignIn()">\r\n Sign In\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div class="firehose" [class.focus]="mobileFocus === \'chat\'">\r\n <header>\r\n <div>\r\n <label (click)="mobileFocus = \'chat\'">{{chatLabel}}</label>\r\n <div class="spacer"></div>\r\n\r\n <ng-container *ngIf="currentUser">\r\n <button mat-button [matMenuTriggerFor]="userMenu">\r\n @{{currentUser.username}}\r\n </button>\r\n <button mat-icon-button (click)="showNotifications()">\r\n <mat-icon>notification_important</mat-icon>\r\n </button>\r\n </ng-container>\r\n \r\n <button mat-button *ngIf="!currentUser" (click)="showSignIn()">\r\n Sign In\r\n </button>\r\n </div>\r\n </header>\r\n <banta-chat \r\n #firehose\r\n [source]="firehoseSource"\r\n (signInSelected)="showSignIn()"\r\n (upvoted)="upvoteMessage($event)"\r\n (userSelected)="showProfile($event.user)"\r\n (reported)="reportMessage($event)"\r\n ></banta-chat>\r\n</div>\r\n\r\n<div class="aux" [class.focus]="mobileFocus === \'aux\'" [class.open]="auxOpen">\r\n <header>\r\n <div>\r\n <label>{{auxTitle}}</label>\r\n <div class="spacer"></div>\r\n <button mat-icon-button (click)="auxOpen = false">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </header>\r\n <div class="aux-contents">\r\n <ng-container *ngIf="auxMode === \'profile\'">\r\n <ng-container *ngIf="profileUser">\r\n\r\n <div>\r\n <strong style="font-size: 125%;">\r\n {{profileUser.displayName}}\r\n </strong>\r\n @{{profileUser.username}}\r\n </div>\r\n\r\n <br/>\r\n <strong>Top Messages</strong>\r\n\r\n <div>\r\n <em>Not yet available</em>\r\n </div>\r\n\r\n <br/>\r\n <strong>Recent Messages</strong>\r\n\r\n <div>\r\n <em>Not yet available</em>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf="auxMode === \'report\'">\r\n <p>Are you sure you want to report this message?</p>\r\n\r\n <banta-live-message [message]="reportedMessage"></banta-live-message>\r\n\r\n <div style="text-align: center;">\r\n <button mat-raised-button color="primary" (click)="sendReport(reportedMessage)">Yes, Report</button>\r\n &nbsp;\r\n <button mat-raised-button color="secondary" (click)="auxOpen = false">No, Cancel</button>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngIf="auxMode === \'notifications\'">\r\n\r\n <div *ngIf="!notifications || notifications.length === 0">\r\n <em>You do not have any notifications yet</em>\r\n </div>\r\n \r\n <div class="notifications">\r\n <div class="notification" *ngFor="let notif of notifications">\r\n <div>\r\n <ng-container *ngIf="notif.type === \'upvote\'">\r\n @{{notif.message?.user?.username}} upvoted your post\r\n \r\n <banta-live-message\r\n [message]="notif.message"\r\n (upvoted)="upvoteMessage(notif.message)"\r\n (reported)="reportMessage(notif.message)"\r\n (selected)="goToMessage(notif.message)">\r\n </banta-live-message>\r\n\r\n </ng-container>\r\n <ng-container *ngIf="notif.type === \'notice\'">\r\n <div>\r\n {{notif.message}}\r\n </div>\r\n <a mat-button target="_blank" href="{{notif.actionUrl}}">\r\n {{notif.actionLabel}}\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf="notif.type === \'mention\'">\r\n You were mentioned by @{{notif.message?.user?.username}}\r\n\r\n <banta-live-message\r\n [message]="notif.message"\r\n (upvoted)="upvoteMessage(notif.message)"\r\n (reported)="reportMessage(notif.message)"\r\n (selected)="goToMessage(notif.message)">\r\n </banta-live-message>\r\n\r\n </ng-container>\r\n <ng-container *ngIf="notif.type === \'reply\'">\r\n @{{notif.replyMessage?.user?.username}} replied to your post\r\n \r\n <banta-live-message\r\n [message]="notif.replyMessage"\r\n (upvoted)="upvoteMessage(notif.replyMessage)"\r\n (reported)="reportMessage(notif.replyMessage)"\r\n (selected)="goToMessage(notif.replyMessage)">\r\n </banta-live-message>\r\n </ng-container>\r\n </div>\r\n\r\n <banta-timestamp [value]="notif.sentAt"></banta-timestamp>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n<div class="points" [class.focus]="mobileFocus === \'points\'">\r\n <header>\r\n <div>\r\n <label>{{commentsLabel}}</label>\r\n </div>\r\n </header>\r\n <div class="point-focus">\r\n <div class="actions">\r\n <button mat-button (click)="pointUnfocus()">\r\n <mat-icon>arrow_back</mat-icon>\r\n Back\r\n </button>\r\n\r\n <div class="spacer"></div>\r\n \r\n <ng-container *ngIf="pointOpen">\r\n <div class="counted-action">\r\n <div class="count-indicator"> \r\n {{pointOpen.upvotes}}\r\n </div>\r\n <button mat-icon-button>\r\n <mat-icon>thumb_up</mat-icon>\r\n </button>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf="!pointSubChat">\r\n Error: No subchat\r\n </div>\r\n \r\n <banta-comment-view\r\n class="subcomments"\r\n *ngIf="pointSubChat"\r\n [newestLast]="true"\r\n [allowReplies]="false"\r\n [source]="pointSubChat"\r\n (upvoted)="upvoteMessage($event)"\r\n (reported)="reportMessage($event)"\r\n (userSelected)="showProfile($event.user)"\r\n >\r\n \r\n <banta-comment\r\n class="focused-comment"\r\n data-before\r\n *ngIf="pointOpen"\r\n (upvoted)="upvoteMessage(pointOpen)"\r\n (userSelected)="showProfile(pointOpen.user)"\r\n (reported)="reportMessage(pointOpen)"\r\n [showReplyAction]="false"\r\n [message]="pointOpen"\r\n ></banta-comment>\r\n \r\n <div class="message reply">\r\n Reply:\r\n <form class="new-message" (submit)="sendPointSubMessage()">\r\n <textarea \r\n name="message" \r\n (keydown)="newPointSubMessageKeyDown($event)"\r\n [(ngModel)]="newPointSubMessage.message"></textarea>\r\n \r\n <div class="actions">\r\n <button [disabled]="!newPointSubMessage.message" \r\n mat-raised-button color="primary">Send</button>\r\n </div>\r\n </form>\r\n </div>\r\n </banta-comment-view>\r\n </div>\r\n <div class="points-section">\r\n <banta-comments\r\n [source]="pointSource"\r\n (signInSelected)="showSignIn()"\r\n (upvoted)="upvoteMessage($event)"\r\n (reported)="reportMessage($event)"\r\n (selected)="goToMessage($event)"\r\n (userSelected)="showProfile($event.user)"\r\n ></banta-comments>\r\n </div>\r\n</div>',styles:[':host{display:flex;flex-direction:row;height:40em;padding:.5em;position:relative}.counted-action{align-items:center;display:flex}.count-indicator{border:1px solid #333;border-radius:3px;font-size:9pt;padding:0 3px}header{margin-bottom:1em;position:relative}header div{align-items:center;display:flex;height:30px}header button{color:#666}header label{color:#333;font-size:12pt;font-weight:100;letter-spacing:2px;margin:0 auto 0 0;overflow-x:hidden;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;z-index:1}header:after,header label{display:block;position:relative}header:after{border:1px solid #ccc;content:"";height:0;width:100%;z-index:0}.points{display:flex;flex-direction:column;max-width:50em}:host.point-focus .points{max-width:50em;width:66%}:host.point-focus .points .points-section{opacity:0;pointer-events:none}:host.point-focus .points .point-focus{opacity:1;pointer-events:auto}:host.point-focus .points .point-focus .actions{display:flex}banta-comments{flex-grow:1}.points{flex-shrink:0;font-size:12pt;margin-left:.5em;max-width:30em;position:relative;transition:width .2s ease-in,max-width .2s ease-in;width:33%}.points .points-section{opacity:1;z-index:2}.points .point-focus,.points .points-section{display:flex;flex-direction:column;flex-grow:1;transition:opacity .2s ease-in}.points .point-focus{bottom:0;left:0;opacity:0;padding:.5em;position:absolute;right:0;top:1.75em;width:100%}.firehose{display:flex;flex-direction:column;flex-grow:1;font-size:10pt}form{align-items:center;display:flex;padding:.5em 0}form textarea{font-size:14pt;min-height:6em}form input[type=text],form textarea{background:#000;border:1px solid #333;color:#fff;width:100%}form input[type=text]{height:1em}form .actions{margin-left:1em}form button{display:block;margin:0 0 0 auto}.subcomments ::ng-deep banta-comment{font-size:10pt}.subcomments ::ng-deep banta-comment.focused-comment{background:#001321;color:#fff;font-size:12pt}.aux{display:flex;flex-direction:column;min-width:0;overflow-x:hidden;transition:width .4s ease-out,min-width .4s ease-out;width:0}.aux.open{min-width:18em;width:30em}.aux .aux-contents{align-items:center;display:flex;flex-direction:column;flex-grow:1;justify-content:center;max-width:100%;min-width:10em;width:30em}.notifications .notification{border-bottom:1px solid #333;padding:1em}.notifications .notification banta-timestamp{color:#999;display:block;font-size:9pt;text-align:right}.message.reply{padding:1em}.tabs{display:none}@media (max-width:1015px){:host{flex-direction:column}.tabs{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:rgba(0,0,0,.5);display:flex;left:0;position:absolute;right:0;top:0;width:100%;z-index:10}.points{margin-left:0;max-width:100%;width:100%}header{display:none}.aux,:host.point-focus .points{max-width:100%;width:100%}.aux{min-width:0}.aux,.firehose,.points{background:#000;bottom:0;left:0;position:absolute;right:0;top:2em;z-index:0}.aux.focus,.firehose.focus,.points.focus{z-index:2}}:host-context(.mat-dark-theme) :host{background:#090909;color:#fff}:host-context(.mat-dark-theme) form textarea{background:#ccc;color:#333}:host-context(.mat-dark-theme) header:after{border-color:#222}:host-context(.mat-dark-theme) header label{color:#aaa}']}]}],P.ctorParameters=function(){return[{type:b},{type:w},{type:g.MatDialog}]},P.propDecorators={firehose:[{type:t.ViewChild,args:["firehose",{static:!0}]}],topicID:[{type:t.Input}],chatLabel:[{type:t.Input}],commentsLabel:[{type:t.Input}],signInSelected:[{type:t.Output}],hasPoint:[{type:t.HostBinding,args:["class.point-focus"]}]};var E=function(){};E.decorators=[{type:t.Component,args:[{selector:"banta-logo",template:"banta",styles:["\n :host {\n font-family: 'Odibee Sans', sans-serif;\n font-size: 40pt;\n }\n\n :host.small {\n font-size: 30pt;\n }\n "]}]}];var L=function(){function e(){this._selected=new r.Subject,this._reported=new r.Subject,this._upvoted=new r.Subject,this._userSelected=new r.Subject}return Object.defineProperty(e.prototype,"userSelected",{get:function(){return this._userSelected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reported",{get:function(){return this._reported},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"upvoted",{get:function(){return this._upvoted},enumerable:!1,configurable:!0}),e.prototype.avatarForUser=function(e){return e&&e.avatarUrl?"url("+e.avatarUrl+")":null},e.prototype.upvote=function(){this._upvoted.next()},e.prototype.report=function(){this._reported.next()},e.prototype.select=function(){this._selected.next()},e.prototype.selectUser=function(){this._userSelected.next()},e}();L.decorators=[{type:t.Component,args:[{selector:"banta-chat-message",template:'<div class="message-content">\r\n <div class="user" (click)="selectUser()">\r\n <div class="avatar" [style.background-image]="avatarForUser(message.user)"></div>\r\n <label>{{message.user.username}}</label>\r\n </div>\r\n <div class="content">\r\n <div (click)="select()">\r\n {{message.message}}\r\n </div>\r\n <div class="status">\r\n <div class="count-indicator" *ngIf="message.upvotes > 0">\r\n {{message.upvotes}} <mat-icon [inline]="true">star</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class="actions">\r\n <button mat-icon-button matTooltip="Upvote" matTooltipPosition="below" (click)="upvote()">\r\n <mat-icon [inline]="true">thumb_up</mat-icon>\r\n </button>\r\n <button mat-icon-button matTooltip="Report" matTooltipPosition="below" (click)="report()">\r\n <mat-icon [inline]="true">report</mat-icon>\r\n </button>\r\n</div>',styles:[':host{align-items:center;background-color:#fff;color:#000;display:flex;flex-direction:row;padding:0 1em;transition:background-color .4s ease-out}:host .message-content .content{color:#111}:host:hover{background-color:#ddd}:host.highlight{background:#00121b}:host.highlight:hover{background:#01324d}:host:nth-child(2n){background-color:#eee}:host:nth-child(2n):hover{background:#ddd}:host:nth-child(2n) .message-content .content{color:#222}:host:nth-child(2n).highlight{background:#001a2a}:host:nth-child(2n).highlight:hover{background:#002b44}:host .message-content{align-items:center;display:flex;flex-direction:row;flex-grow:1}:host .message-content .content{display:flex;flex-direction:row;padding:5px 0}:host .message-content .content .status{align-items:center;display:flex;flex-direction:row;margin-left:1em}:host .message-content .content .status mat-icon{margin-left:.5em}:host .user{align-items:center;color:#999;display:flex;flex-shrink:0;font-weight:400;margin-right:.25em;text-align:right}:host .user .avatar{background-color:#333;background-position:50%;background-size:cover;border-radius:100%;flex-grow:0;flex-shrink:0;height:2em;margin-right:1em;width:2em}:host .user:after{content:":";margin-right:1em}:host .content{flex-grow:1}:host .actions{flex-shrink:0;opacity:0;transition:opacity .4s ease-out;white-space:nowrap}:host:hover .actions{opacity:1}.count-indicator{white-space:nowrap}:host-context(.mat-dark-theme){background-color:#000;color:#fff}:host-context(.mat-dark-theme) .message-content .content{color:#ddd}:host-context(.mat-dark-theme):hover{background-color:#111}:host-context(.mat-dark-theme):nth-child(2n).highlight{background:#001a2a}:host-context(.mat-dark-theme):nth-child(2n).highlight:hover{background:#002b44}:host-context(.mat-dark-theme):nth-child(2n):hover{background-color:#111}:host-context(.mat-dark-theme):nth-child(2n){background-color:#080808}:host-context(.mat-dark-theme):nth-child(2n) .message-content .content{color:#eee}label{margin:0}']}]}],L.propDecorators={message:[{type:t.Input}],userSelected:[{type:t.Output}],selected:[{type:t.Output}],reported:[{type:t.Output}],upvoted:[{type:t.Output}]};var T=function(){function e(e){this.backend=e,this._upvoted=new r.Subject,this._reported=new r.Subject,this._selected=new r.Subject}return Object.defineProperty(e.prototype,"upvoted",{get:function(){return this._upvoted},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reported",{get:function(){return this._reported},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"message",{get:function(){return this._message},set:function(e){var r=this,a=null;this._message&&(a=this._message.id),this._message=e,e&&a===e.id||(this.unsubscribe&&this.unsubscribe(),e&&(this.unsubscribe=this.backend.watchMessage(e,(function(e){return r.message=e}))))},enumerable:!1,configurable:!0}),e.prototype.report=function(){this._reported.next()},e.prototype.upvote=function(){this._upvoted.next()},e.prototype.select=function(){this._selected.next()},e}();T.decorators=[{type:t.Component,args:[{selector:"banta-live-chat-message",template:'\n <banta-chat-message \n *ngIf="message"\n [message]="message"\n (upvoted)="upvote()"\n (reported)="report()"\n (selected)="select()"\n ></banta-chat-message>\n ',styles:[""]}]}],T.ctorParameters=function(){return[{type:w}]},T.propDecorators={upvoted:[{type:t.Output}],reported:[{type:t.Output}],selected:[{type:t.Output}],message:[{type:t.Input}]};var D=function(){function e(e){this.elementRef=e,this._sourceSubs=new y.SubSink,this._selected=new r.Subject,this._reported=new r.Subject,this._upvoted=new r.Subject,this._userSelected=new r.Subject,this.messages=[],this.maxMessages=200}return Object.defineProperty(e.prototype,"source",{get:function(){return this._source},set:function(e){var r=this;this._sourceSubs&&(this._sourceSubs.unsubscribe(),this._sourceSubs=null),this._source=e,this.messages=[],e&&(this._sourceSubs=new y.SubSink,this.messages=e.messages.slice(),console.log("Source set:"),console.dir(e),console.log("Messages loaded:"),console.dir(this.messages),this._sourceSubs.add(this._source.messageReceived.subscribe((function(e){return r.messageReceived(e)})),this._source.messageSent.subscribe((function(e){return r.messageSent(e)}))),this._source.currentUserChanged&&this._sourceSubs.add(this._source.currentUserChanged.subscribe((function(e){return r.currentUser=e}))))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"userSelected",{get:function(){return this._userSelected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reported",{get:function(){return this._reported},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"upvoted",{get:function(){return this._upvoted},enumerable:!1,configurable:!0}),e.prototype.addMessage=function(e){if(this.messages.length>this.maxMessages+1)for(;this.messages.length>this.maxMessages;)this.messages.shift();this.messages.push(e)},e.prototype.messageReceived=function(e){var r=this;this.addMessage(e),this.isScrolledToLatest()&&setTimeout((function(){return r.scrollToLatest()}))},e.prototype.isScrolledToLatest=function(){if(!this.messageContainer)return!1;var e=this.messageContainer.nativeElement;return e.scrollTop>e.scrollHeight-e.offsetHeight-10},e.prototype.messageSent=function(e){var r=this;this.addMessage(e),this.messageContainer&&setTimeout((function(){return r.scrollToLatest()}))},e.prototype.scrollToLatest=function(){if(this.messageContainer){var e=this.messageContainer.nativeElement;e.scrollTop=e.scrollHeight}},e.prototype.jumpTo=function(e){var r=this.elementRef.nativeElement.querySelector('banta-chat-message[data-id="'+e.id+'"]');r?(r.scrollIntoView({behavior:"smooth"}),this.flashMessage(e)):alert("could not find message "+e.id)},e.prototype.flashMessage=function(e){e&&(this.flashedMessageId=e.id)},e.prototype.mentionsMe=function(e){return!!this.currentUser&&!!e.message.includes("@"+this.currentUser.username)},e.prototype.upvoteMessage=function(e){this._upvoted.next(e)},e.prototype.reportMessage=function(e){this._reported.next(e)},e.prototype.selectMessage=function(e){this._selected.next(e)},e.prototype.selectMessageUser=function(e){this._userSelected.next(e)},e.prototype.avatarForUser=function(e){return e&&e.avatarUrl?"url("+e.avatarUrl+")":null},e}();D.decorators=[{type:t.Component,args:[{selector:"banta-chat-view",template:'<div class="message-container" #messageContainer>\r\n <ng-content select="[data-before]"></ng-content>\r\n <banta-chat-message \r\n *ngFor="let message of messages"\r\n [message]="message"\r\n [class.highlight]="mentionsMe(message)" \r\n [class.flash]="message.id === flashedMessageId"\r\n (selected)="selectMessage(message)"\r\n (upvoted)="upvoteMessage(message)"\r\n (reported)="reportMessage(message)"\r\n (userSelected)="selectMessageUser(message)"\r\n [attr.data-id]="message.id"\r\n >\r\n </banta-chat-message>\r\n <ng-content select=":not([data-before])"></ng-content>\r\n</div>',styles:[":host{display:flex;flex-direction:column;flex-grow:1}.message-container{background:#fff;color:#000;flex-grow:1;height:10em;overflow-x:hidden;overflow-y:auto;padding:.5em 1em .5em .5em}.message-container.no-scroll{height:auto;overflow-y:visible}:host-context(.mat-dark-theme) .message-container{background:#000;color:#fff}banta-chat-message.flash{-webkit-animation:flash;-webkit-animation-duration:2.5s;-webkit-animation-iteration-count:1;animation:flash;animation-duration:2.5s;animation-iteration-count:1}@-webkit-keyframes flash{0%{background:#425700;transform:scale(1)}25%{transform:scale(1.05)}50%{transform:scale(1)}75%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes flash{0%{background:#425700;transform:scale(1)}25%{transform:scale(1.05)}50%{transform:scale(1)}75%{transform:scale(1.05)}to{transform:scale(1)}}"]}]}],D.ctorParameters=function(){return[{type:t.ElementRef}]},D.propDecorators={source:[{type:t.Input}],selected:[{type:t.Output}],userSelected:[{type:t.Output}],reported:[{type:t.Output}],upvoted:[{type:t.Output}],messageContainer:[{type:t.ViewChild,args:["messageContainer"]}],maxMessages:[{type:t.Input}]};var A=function(){function e(e,a,t){this.banta=e,this.backend=a,this.elementRef=t,this._subs=new y.SubSink,this.user=null,this.signInLabel="Sign In",this.sendLabel="Send",this.permissionDeniedLabel="Send",this._selected=new r.Subject,this._reported=new r.Subject,this._upvoted=new r.Subject,this._userSelected=new r.Subject,this._signInSelected=new r.Subject,this._permissionDeniedError=new r.Subject,this.showEmojiPanel=!1,this.newMessage={}}return e.prototype.ngOnInit=function(){var e=this;this._subs.add(this.banta.userChanged.subscribe((function(r){return e.user=r})))},e.prototype.ngOnDestroy=function(){this._subs.unsubscribe()},Object.defineProperty(e.prototype,"source",{get:function(){return this._source},set:function(e){this._source=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"topicID",{get:function(){return this._source.identifier},set:function(e){this.setSourceFromTopicID(e)},enumerable:!1,configurable:!0}),e.prototype.setSourceFromTopicID=function(e){return v(this,void 0,void 0,(function(){var r;return x(this,(function(a){switch(a.label){case 0:return this._source&&this._source.close&&this._source.close(),this._source=null,r=this,[4,this.backend.getSourceForTopic(e)];case 1:return r._source=a.sent(),[2]}}))}))},Object.defineProperty(e.prototype,"signInSelected",{get:function(){return this._signInSelected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"permissionDeniedError",{get:function(){return this._permissionDeniedError},enumerable:!1,configurable:!0}),e.prototype.showSignIn=function(){this._signInSelected.next()},e.prototype.sendPermissionError=function(){this._permissionDeniedError.next()},e.prototype.insertEmoji=function(e){var r=this.newMessage.message||"";this.newMessage.message=r+e},e.prototype.onKeyDown=function(e){},e.prototype.jumpToMessage=function(e){this.chatView&&this.chatView.jumpTo(e)},e.prototype.select=function(e){this._selected.next(e)},e.prototype.selectUser=function(e){this._userSelected.next(e)},e.prototype.report=function(e){this._reported.next(e)},e.prototype.upvote=function(e){this._upvoted.next(e)},Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reported",{get:function(){return this._reported},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"upvoted",{get:function(){return this._upvoted},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"userSelected",{get:function(){return this._userSelected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"canChat",{get:function(){var e;return!!this.user&&(!this.user.permissions||(!this.user.permissions.canChat||(null===(e=this.user.permissions)||void 0===e?void 0:e.canChat(this.source))))},enumerable:!1,configurable:!0}),e.prototype.sendMessage=function(){return v(this,void 0,void 0,(function(){var e,r,a;return x(this,(function(t){switch(t.label){case 0:if(!this.source)return[2];if(e=(this.newMessage.message||"").trim(),this.newMessage.message="",""===e)return[2];r={user:null,sentAt:Date.now(),upvotes:0,url:location.href,message:e},t.label=1;case 1:return t.trys.push([1,3,,4]),[4,this.source.send(r)];case 2:return t.sent(),[3,4];case 3:return a=t.sent(),console.error("Failed to send message: ",r),console.error(a),[3,4];case 4:return[2]}}))}))},e}();A.decorators=[{type:t.Component,args:[{selector:"banta-chat",template:'<banta-chat-view \r\n #chatView\r\n [source]="source"\r\n (upvoted)="upvote($event)"\r\n (reported)="report($event)"\r\n (selected)="select($event)"\r\n (userSelected)="selectUser($event)"\r\n ></banta-chat-view>\r\n\r\n<form class="new-message" (submit)="sendMessage()">\r\n \r\n <div class="entry-container">\r\n <input\r\n type="text"\r\n name="message" \r\n (keydown)="onKeyDown($event)"\r\n [(ngModel)]="newMessage.message" />\r\n \r\n <emoji-selector-button\r\n (selected)="insertEmoji($event)"\r\n ></emoji-selector-button>\r\n </div>\r\n\r\n <div class="actions">\r\n\r\n <ng-container *ngIf="!user">\r\n <button type="button" (click)="showSignIn()" mat-raised-button color="primary">{{signInLabel}}</button>\r\n </ng-container>\r\n <ng-container *ngIf="user">\r\n <button *ngIf="canChat" [disabled]="!newMessage.message" mat-raised-button color="primary">{{sendLabel}}</button>\r\n <button *ngIf="!canChat" type="button" (click)="sendPermissionError()" mat-raised-button color="primary">{{permissionDeniedLabel}}</button>\r\n </ng-container>\r\n </div>\r\n</form>',styles:[":host{border-radius:5px;flex-direction:column;font-size:10pt;padding:10px}.entry-container,:host{display:flex;flex-grow:1}.entry-container{flex-direction:row;position:relative}.entry-container emoji-selector-button{position:absolute;right:0;top:.15em}.entry-container input{font-size:12pt;height:2.6em;padding-left:1em}.entry-container input:-webkit-autofill,.entry-container input:-webkit-autofill:focus,.entry-container input:-webkit-autofill:hover{-webkit-box-shadow:0 0 0 1000px #211e07 inset;-webkit-text-fill-color:#9da302;-webkit-transition:background-color 5000s ease-in-out 0s;caret-color:#9da302;outline:1px solid #9da302;transition:background-color 5000s ease-in-out 0s}.entry-container emoji-selector-panel{bottom:3.5em;opacity:0;pointer-events:none;position:absolute;right:0}.entry-container emoji-selector-panel.visible{opacity:1;pointer-events:auto}form{align-items:center;display:flex;padding:.5em 0}form textarea{background:#000;border:1px solid #333;color:#fff;font-size:14pt;min-height:6em;width:100%}form input[type=text]{background:#fff;border:1px solid #ccc;color:#000;height:2.5em;width:100%}form .actions{margin-left:1em}form button{display:block;margin:0 0 0 auto}:host-context(.mat-dark-theme) form input[type=text]{background:#000;border:1px solid #333;color:#fff}"]}]}],A.ctorParameters=function(){return[{type:b},{type:w},{type:t.ElementRef}]},A.propDecorators={source:[{type:t.Input}],topicID:[{type:t.Input}],signInLabel:[{type:t.Input}],sendLabel:[{type:t.Input}],permissionDeniedLabel:[{type:t.Input}],signInSelected:[{type:t.Output}],permissionDeniedError:[{type:t.Output}],chatView:[{type:t.ViewChild,args:["chatView",{static:!0}]}],selected:[{type:t.Output}],reported:[{type:t.Output}],upvoted:[{type:t.Output}],userSelected:[{type:t.Output}]};var U=[L,T,D,A],F=function(){};F.decorators=[{type:t.NgModule,args:[{declarations:U,imports:[o.CommonModule,d.FormsModule,s.MatIconModule,c.MatButtonModule,z],exports:U}]}];var V=function(){function e(){this._upvoted=new r.Subject,this._reported=new r.Subject,this._selected=new r.Subject}return Object.defineProperty(e.prototype,"upvoted",{get:function(){return this._upvoted},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reported",{get:function(){return this._reported},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"message",{get:function(){return this._message},set:function(e){this._message=e,this.viewType=this.getViewType(e)},enumerable:!1,configurable:!0}),e.prototype.getViewType=function(e){return e.topicId.endsWith("_firehose")?"chat":(e.topicId.endsWith("_thepoint"),"comment")},e.prototype.upvote=function(){this._upvoted.next()},e.prototype.report=function(){this._reported.next()},e.prototype.select=function(){this._selected.next()},e}();V.decorators=[{type:t.Component,args:[{selector:"banta-live-message",template:'\n <ng-container *ngIf="message">\n <banta-live-chat-message\n *ngIf="viewType === \'chat\'"\n [message]="message"\n (upvoted)="upvote(message)"\n (reported)="report(message)"\n (selected)="select(message)">\n </banta-live-chat-message>\n\n <banta-live-comment \n *ngIf="viewType === \'comment\'"\n [message]="message"\n (upvoted)="upvote(message)"\n (reported)="report(message)"\n (selected)="select(message)">\n </banta-live-comment>\n </ng-container>\n ',styles:[""]}]}],V.ctorParameters=function(){return[]},V.propDecorators={upvoted:[{type:t.Output}],reported:[{type:t.Output}],selected:[{type:t.Output}],message:[{type:t.Input}]};var R=function(){function e(){this._reported=new r.Subject,this._selected=new r.Subject,this._upvoted=new r.Subject,this._userSelected=new r.Subject,this.isNew=!1,this.visible=!1,this.showReplyAction=!0}return e.prototype.ngOnInit=function(){var e=this,r=0+500*Math.random();setTimeout((function(){e.isNew=!0,e.visible=!0,setTimeout((function(){return e.isNew=!1}),1e3)}),r)},Object.defineProperty(e.prototype,"userSelected",{get:function(){return this._userSelected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reported",{get:function(){return this._reported},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"upvoted",{get:function(){return this._upvoted},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"commentId",{get:function(){var e;return null===(e=this.message)||void 0===e?void 0:e.id},enumerable:!1,configurable:!0}),e.prototype.report=function(){this._reported.next()},e.prototype.upvote=function(){this._upvoted.next()},e.prototype.select=function(){this._selected.next()},e.prototype.selectUser=function(){return this._userSelected.next()},e.prototype.avatarForUser=function(e){return e&&e.avatarUrl?"url("+e.avatarUrl+")":null},e}();R.decorators=[{type:t.Component,args:[{selector:"banta-comment",template:'\r\n<mat-menu #pointItemMenu="matMenu">\r\n <button mat-menu-item (click)="report()">Report</button>\r\n <button mat-menu-item>Help</button>\r\n</mat-menu>\r\n\r\n<div class="message-content">\r\n <div class="user">\r\n <a \r\n href="javascript:;"\r\n class="avatar"\r\n (click)="selectUser()"\r\n [style.background-image]="avatarForUser(message.user)"></a>\r\n <a href="javascript:;" class="display-name" (click)="selectUser()">{{message.user.displayName}}</a>\r\n <a href="javascript:;" class="username" (click)="selectUser()">@{{message.user.username}}</a>\r\n </div>\r\n <div class="content">\r\n {{message.message}}\r\n </div>\r\n \r\n <div class="actions">\r\n <banta-timestamp [value]="message.sentAt"></banta-timestamp>\r\n <div class="spacer"></div>\r\n <div class="counted-action" *ngIf="showReplyAction">\r\n <div class="count-indicator">\r\n {{message.submessages?.length || 0}}\r\n </div>\r\n <button mat-icon-button matTooltip="Comment" matTooltipPosition="below" (click)="select()">\r\n <mat-icon [inline]="true">comment</mat-icon>\r\n </button>\r\n </div>\r\n <div class="counted-action">\r\n <div class="count-indicator"> \r\n {{message.upvotes}}\r\n </div>\r\n <button mat-icon-button matTooltip="Upvote" matTooltipPosition="below" (click)="upvote()">\r\n <mat-icon [inline]="true">thumb_up</mat-icon>\r\n </button>\r\n </div>\r\n \r\n <button mat-icon-button [matMenuTriggerFor]="pointItemMenu">\r\n <mat-icon [inline]="true">more_vert</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n',styles:["@-webkit-keyframes comment-appear{0%{transform:translate(100vw)}to{transform:translate(0)}}@keyframes comment-appear{0%{transform:translate(100vw)}to{transform:translate(0)}}:host{display:flex;flex-direction:column;padding:.5em;position:relative;visibility:hidden}:host.new{-webkit-animation-duration:.4s;-webkit-animation-fill-mode:both;-webkit-animation-name:comment-appear;animation-duration:.4s;animation-fill-mode:both;animation-name:comment-appear}:host.new,:host.visible{visibility:visible}:host:hover{background:#eee}:host .message-content .content{margin-left:60px;margin-right:.5em}:host.abbreviated .message-content .content{max-height:8.5em;overflow-y:hidden;text-overflow:ellipsis}:host .actions{align-items:center;display:flex;margin-left:60px;padding-right:10px}:host .actions button{color:#666}:host .actions banta-timestamp{color:#666;font-size:10pt}.user{align-items:center;display:flex;margin:1em 0 0;position:relative}.user .display-name,.user .username{color:#000;display:block;flex-grow:0;flex-shrink:1;font-size:10pt;margin:0 auto 0 0;max-width:100%;overflow:hidden;padding:0 0 0 1em;position:relative;text-overflow:ellipsis;white-space:nowrap;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;z-index:1}.user .display-name.username,.user .username.username{color:#666;flex-grow:1;flex-shrink:0}.avatar{background-color:#333;background-position:50%;background-size:cover;border-radius:100%;flex-grow:0;flex-shrink:0;height:48px;width:48px}.counted-action{align-items:center;display:flex}.count-indicator{color:#666;font-size:9pt;padding:0 0 0 3px}:host-context(.mat-dark-theme) .count-indicator{border-color:#333}:host-context(.mat-dark-theme):hover{background:#060606}:host-context(.mat-dark-theme) .user .display-name,:host-context(.mat-dark-theme) .user .username{color:#fff}@media (max-width:400px){.avatar{height:32px;width:32px}:host .actions{margin-left:44px}:host .message-content .content{margin-left:44px;margin-right:.5em}}"]}]}],R.propDecorators={isNew:[{type:t.HostBinding,args:["class.new"]}],visible:[{type:t.HostBinding,args:["class.visible"]}],message:[{type:t.Input}],showReplyAction:[{type:t.Input}],userSelected:[{type:t.Output}],reported:[{type:t.Output}],upvoted:[{type:t.Output}],selected:[{type:t.Output}],commentId:[{type:t.HostBinding,args:["attr.data-comment-id"]}]};var B=function(){function e(e){this.backend=e,this._sourceSubs=new y.SubSink,this._selected=new r.Subject,this._upvoted=new r.Subject,this._reported=new r.Subject,this._userSelected=new r.Subject,this.showEmptyState=!0,this.allowReplies=!0,this.menuMessage=null,this.messages=[],this.maxMessages=2e3,this.maxVisibleMessages=200,this.newestLast=!1,this.isViewingMore=!1,this.isLoadingMore=!1,this.hasMore=!1,this.newMessages=[],this.olderMessages=[]}return Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"userSelected",{get:function(){return this._userSelected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reported",{get:function(){return this._reported},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"upvoted",{get:function(){return this._upvoted},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"source",{get:function(){return this._source},set:function(e){var r=this;if(this._sourceSubs&&(this._sourceSubs.unsubscribe(),this._sourceSubs=null),this._source=e,e){var a=(e.messages||[]).slice();this.messages=a,this.olderMessages=a.splice(this.maxVisibleMessages,a.length),this.hasMore=this.olderMessages.length>0,this._sourceSubs=new y.SubSink,this._sourceSubs.add(this._source.messageReceived.subscribe((function(e){return r.messageReceived(e)})),this._source.messageSent.subscribe((function(e){return r.messageSent(e)}))),this._source.currentUserChanged&&this._sourceSubs.add(this._source.currentUserChanged.subscribe((function(e){return r.currentUser=e})))}},enumerable:!1,configurable:!0}),e.prototype.upvoteMessage=function(e){this._upvoted.next(e)},e.prototype.reportMessage=function(e){this._reported.next(e)},e.prototype.selectMessage=function(e){return v(this,void 0,void 0,(function(){return x(this,(function(r){return this._selected.next(e),[2]}))}))},e.prototype.selectMessageUser=function(e){this._userSelected.next(e)},e.prototype.messageIdentity=function(e,r){return r.id},e.prototype.showNew=function(){return v(this,void 0,void 0,(function(){var e;return x(this,(function(r){return this.isViewingMore=!1,this.messages=this.newMessages.splice(0,this.newMessages.length).concat(this.messages),e=this.messages.splice(this.maxVisibleMessages,this.messages.length),this.olderMessages=e.concat(this.olderMessages),this.olderMessages.splice(this.maxMessages-this.maxVisibleMessages,this.olderMessages.length),[2]}))}))},e.prototype.showMore=function(){return v(this,void 0,void 0,(function(){var e,r;return x(this,(function(a){switch(a.label){case 0:return this.isViewingMore=!0,this.olderMessages.length>0?(this.isLoadingMore=!1,this.messages=this.messages.concat(this.olderMessages.splice(0,50)),[3,4]):[3,1];case 1:return this.source.loadAfter?(this.isLoadingMore=!0,e=this.messages[this.messages.length-1],[4,this.source.loadAfter(e,100)]):[3,3];case 2:return r=a.sent(),this.messages=this.messages.concat(r),this.isLoadingMore=!1,0===r.length&&(this.hasMore=!1),[3,4];case 3:this.hasMore=!1,a.label=4;case 4:return[2]}}))}))},e.prototype.addMessage=function(e){var r=this.messages,a=this.olderMessages;if(this.isViewingMore&&(r=this.newMessages,a=null),this.newestLast){r.push(e);var t=r.splice(this.maxVisibleMessages,r.length);null==a||a.push.apply(a,S(t))}else{r.unshift(e);t=r.splice(this.maxVisibleMessages,r.length);null==a||a.unshift.apply(a,S(t))}(null==a?void 0:a.length)>0&&(this.hasMore=!0)},e.prototype.messageReceived=function(e){var r=this;this.addMessage(e),this.isScrolledToLatest()&&setTimeout((function(){return r.scrollToLatest()}))},e.prototype.isScrolledToLatest=function(){if(!this.messageContainer)return!1;var e=this.messageContainer.nativeElement;return e.scrollTop>e.scrollHeight-e.offsetHeight-10},e.prototype.messageSent=function(e){this.addMessage(e),this.messageContainer&&this.scrollToLatest()},e.prototype.scrollToLatest=function(){if(this.messageContainer){var e=this.messageContainer.nativeElement;e.scrollTop=e.scrollHeight}},e.prototype.mentionsMe=function(e){return!!this.currentUser&&!!e.message.includes("@"+this.currentUser.username)},e.prototype.avatarForUser=function(e){var r=this.genericAvatarUrl;return e&&e.avatarUrl&&(r=e.avatarUrl),"url("+r+")"},e}();B.decorators=[{type:t.Component,args:[{selector:"banta-comment-view",template:'<div class="message-container">\r\n <ng-content select="[data-before]"></ng-content>\r\n \r\n <a mat-button class="nav" [class.visible]="isViewingMore" href="javascript:;" (click)="showNew()">\r\n <mat-icon>file_upload</mat-icon>\r\n New\r\n <ng-container *ngIf="newMessages.length >= 1">\r\n ({{newMessages.length}})\r\n </ng-container>\r\n </a>\r\n\r\n <ng-container *ngIf="messages.length === 0">\r\n <div class="empty-state" *ngIf="showEmptyState">\r\n Be the first to comment!\r\n </div>\r\n </ng-container>\r\n <banta-comment \r\n *ngFor="let message of messages; trackBy: messageIdentity"\r\n class="abbreviated"\r\n [message]="message"\r\n (click)="isViewingMore = true"\r\n [showReplyAction]="allowReplies"\r\n (userSelected)="selectMessageUser(message)"\r\n (upvoted)="upvoteMessage(message)"\r\n (reported)="reportMessage(message)"\r\n (selected)="selectMessage(message)"\r\n ></banta-comment>\r\n\r\n <a mat-button class="nav" [class.visible]="hasMore && !isLoadingMore" href="javascript:;" (click)="showMore()">Show more</a>\r\n\r\n <div class="loading-more" *ngIf="isLoadingMore">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n\r\n \x3c!-- <div style="color: #666">\r\n n={{newMessages.length}}, m={{messages.length}}, o={{olderMessages.length}},\r\n v={{maxVisibleMessages}}, M={{maxMessages}}\r\n </div> --\x3e\r\n\r\n <ng-content select=":not([data-before])"></ng-content>\r\n</div>',styles:[":host{display:flex;flex-direction:column;flex-grow:1;opacity:1;transition:opacity .2s ease-in}.message-container{background:#fff;color:#111;flex-grow:1;opacity:1;overflow-x:hidden;padding:.5em 1em 3em .5em;position:relative;transition:opacity .5s ease-in-out}.message-container.no-scroll{height:auto;overflow-y:visible}.message-container.faded{opacity:.25}.message-container .overlay{bottom:0;left:0;position:absolute;right:0;top:0;z-index:10}:host.fixed-height .message-container{overflow-y:auto}:host-context(.mat-dark-theme) .message-container{background:#111;color:#fff}.empty-state{color:#666;margin:3em;text-align:center}:host-context(.mat-dark-theme) .empty-state{color:#666}a.nav{background:#222;border-radius:2em;opacity:0;pointer-events:none;position:absolute;right:.5em;text-align:center;transition:opacity .4s ease-in-out;z-index:10}a.nav.visible{opacity:1;pointer-events:auto}.loading-more{margin:0 auto;padding:2em;text-align:center;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}@media (max-width:400px){.message-container{padding:0 0 3em}}"]}]}],B.ctorParameters=function(){return[{type:w}]},B.propDecorators={showEmptyState:[{type:t.Input}],allowReplies:[{type:t.Input}],fixedHeight:[{type:t.Input},{type:t.HostBinding,args:["class.fixed-height"]}],selected:[{type:t.Output}],userSelected:[{type:t.Output}],reported:[{type:t.Output}],upvoted:[{type:t.Output}],source:[{type:t.Input}],genericAvatarUrl:[{type:t.Input}],messageContainer:[{type:t.ViewChild,args:["messageContainer"]}],maxMessages:[{type:t.Input}],maxVisibleMessages:[{type:t.Input}],newestLast:[{type:t.Input}]};var N=function(){function e(e,a,t){this.banta=e,this.backend=a,this.elementRef=t,this._upvoted=new r.Subject,this._reported=new r.Subject,this._selected=new r.Subject,this._userSelected=new r.Subject,this._subs=new y.SubSink,this.hashtags=[{hashtag:"error",description:"Cause an error"},{hashtag:"timeout",description:"Cause a slow timeout error"},{hashtag:"slow",description:"Be slow when this message is posted"}],this.participants=[],this.signInLabel="Sign In",this.sendLabel="Send",this.replyLabel="Reply",this.sendingLabel="Sending",this.permissionDeniedLabel="Send",this.postCommentLabel="Post a comment",this.postReplyLabel="Post a reply",this._signInSelected=new r.Subject,this._permissionDeniedError=new r.Subject,this._editAvatarSelected=new r.Subject,this.sending=!1,this.expandError=!1,this.selectedMessageVisible=!1}return e.prototype.ngOnInit=function(){var e=this;this._subs.add(this.banta.userChanged.subscribe((function(r){return e.user=r})))},e.prototype.ngOnDestroy=function(){this._subs.unsubscribe()},Object.defineProperty(e.prototype,"source",{get:function(){return this._source},set:function(e){this._source=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"topicID",{get:function(){return this._source.identifier},set:function(e){this.setSourceFromTopicID(e)},enumerable:!1,configurable:!0}),e.prototype.setSourceFromTopicID=function(e){return v(this,void 0,void 0,(function(){var r,a=this;return x(this,(function(t){switch(t.label){case 0:return this._source&&this._source.close&&this._source.close(),this._source=null,r=this,[4,this.backend.getSourceForTopic(e)];case 1:return r._source=t.sent(),this._source.messageReceived.subscribe((function(e){return a.addParticipant(e)})),this._source.messageSent.subscribe((function(e){return a.addParticipant(e)})),this._source.messages.forEach((function(e){return a.addParticipant(e)})),[2]}}))}))},e.prototype.addParticipant=function(e){e&&e.user&&e.user.id&&(this.participants.find((function(r){return r.id===e.user.id}))||this.participants.push(e.user))},e.prototype.showSignIn=function(){this._signInSelected.next()},e.prototype.showEditAvatar=function(){this._editAvatarSelected.next()},Object.defineProperty(e.prototype,"newMessageText",{get:function(){return this._newMessageText},set:function(e){var r=this;this._newMessageText=e,""===this._newMessageText&&this.sendError&&setTimeout((function(){return r.sendError=null}))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"signInSelected",{get:function(){return this._signInSelected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"editAvatarSelected",{get:function(){return this._editAvatarSelected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"permissionDeniedError",{get:function(){return this._permissionDeniedError},enumerable:!1,configurable:!0}),e.prototype.showPermissionDenied=function(){this._permissionDeniedError.next()},Object.defineProperty(e.prototype,"canComment",{get:function(){var e;return!!this.user&&(!this.user.permissions||(!this.user.permissions.canComment||(null===(e=this.user.permissions)||void 0===e?void 0:e.canComment(this.source))))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"upvoted",{get:function(){return this._upvoted},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reported",{get:function(){return this._reported},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"userSelected",{get:function(){return this._userSelected},enumerable:!1,configurable:!0}),e.prototype.onKeyDown=function(e){},e.prototype.insertEmoji=function(e){this.newMessageText+=e},e.prototype.onReplyKeyDown=function(e){},e.prototype.insertReplyEmoji=function(e){this.replyMessage+=e},e.prototype.indicateError=function(e){var r=this;this.sendError=new Error(e),setTimeout((function(){r.expandError=!0,setTimeout((function(){r.expandError=!1}),5e3)}))},e.prototype.upvoteMessage=function(e){return v(this,void 0,void 0,(function(){return x(this,(function(r){switch(r.label){case 0:return this._upvoted.next(e),[4,this.backend.upvoteMessage(e.topicId,e.parentMessageId?e.parentMessageId:e.id,e.parentMessageId?e.id:void 0)];case 1:return r.sent(),[2]}}))}))},e.prototype.reportMessage=function(e){this._reported.next(e)},e.prototype.unselectMessage=function(){return v(this,void 0,void 0,(function(){var e,r=this;return x(this,(function(a){return e=this.selectedMessage,this._selected.next(null),this.selectedMessage=null,this.selectedMessageThread&&(this.selectedMessageThread.close&&this.selectedMessageThread.close(),this.selectedMessageThread=null),e&&setTimeout((function(){return r.scrollToMessage(e)})),[2]}))}))},e.prototype.selectMessage=function(e){return v(this,void 0,void 0,(function(){var r=this;return x(this,(function(a){return this._selected.next(e),this.selectedMessage=e,setTimeout((function(){return r.selectedMessageVisible=!0})),setTimeout((function(){return v(r,void 0,void 0,(function(){var r;return x(this,(function(a){switch(a.label){case 0:return r=this,[4,this.backend.getSourceForThread(this.topicID,e.id)];case 1:return r.selectedMessageThread=a.sent(),[2]}}))}))}),250),[2]}))}))},e.prototype.selectMessageUser=function(e){this._userSelected.next(e)},e.prototype.sendReply=function(){return v(this,void 0,void 0,(function(){return x(this,(function(e){switch(e.label){case 0:return[4,this.selectedMessageThread.send({message:this.replyMessage,parentMessageId:this.selectedMessage.id,upvotes:0,user:this.user,submessages:[],topicId:this.topicID,sentAt:Date.now(),updatedAt:Date.now()})];case 1:return e.sent(),this.replyMessage="",[2]}}))}))},e.prototype.scrollToMessage=function(e){var r=this.elementRef.nativeElement.querySelector('[data-comment-id="'+e.id+'"]');r&&r.scrollIntoView({block:"center",inline:"start"})},e}();N.decorators=[{type:t.Component,args:[{selector:"banta-comments",template:'\r\n<div class="focused" [class.visible]="selectedMessageVisible" *ngIf="selectedMessage">\r\n\r\n <div>\r\n <a mat-button href="javascript:;" (click)="unselectMessage()">\r\n <mat-icon>arrow_back</mat-icon>\r\n Latest Comments\r\n </a>\r\n </div>\r\n\r\n <banta-comment \r\n [message]="selectedMessage"\r\n ></banta-comment>\r\n\r\n <div class="replies">\r\n\r\n <ng-container *ngIf="!selectedMessageThread">\r\n <div class="loading">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf="selectedMessageThread">\r\n <banta-comment-view \r\n [source]="selectedMessageThread"\r\n [allowReplies]="false"\r\n [fixedHeight]="false"\r\n [showEmptyState]="false"\r\n [newestLast]="true"\r\n ></banta-comment-view>\r\n\r\n <banta-comment-field\r\n [sendLabel]="replyLabel"\r\n [sendingLabel]="sendingLabel"\r\n [hashtags]="hashtags"\r\n [participants]="participants"\r\n (signInSelected)="showSignIn()"\r\n (editAvatarSelected)="showEditAvatar()"\r\n [source]="selectedMessageThread"\r\n [canComment]="canComment"\r\n [signInLabel]="signInLabel"\r\n [permissionDeniedLabel]="permissionDeniedLabel"\r\n (permissionDeniedError)="showPermissionDenied()"\r\n [user]="user"\r\n [label]="postReplyLabel"\r\n ></banta-comment-field>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<div class="main" [class.hidden]="selectedMessage">\r\n <banta-comment-field\r\n [source]="source"\r\n [user]="user"\r\n [sendLabel]="sendLabel"\r\n [sendingLabel]="sendingLabel"\r\n [signInLabel]="signInLabel"\r\n [canComment]="canComment"\r\n [hashtags]="hashtags"\r\n [participants]="participants"\r\n [label]="postCommentLabel"\r\n (editAvatarSelected)="showEditAvatar()"\r\n (signInSelected)="showSignIn()"\r\n [permissionDeniedLabel]="permissionDeniedLabel"\r\n (permissionDeniedError)="showPermissionDenied()"\r\n ></banta-comment-field>\r\n\r\n <banta-comment-view \r\n [class.faded]="selectedMessage"\r\n [source]="source"\r\n [fixedHeight]="fixedHeight"\r\n [maxMessages]="maxMessages"\r\n [maxVisibleMessages]="maxVisibleMessages"\r\n [genericAvatarUrl]="genericAvatarUrl"\r\n (userSelected)="selectMessageUser($event)"\r\n (selected)="selectMessage($event)"\r\n (upvoted)="upvoteMessage($event)"\r\n (reported)="reportMessage($event)"\r\n ></banta-comment-view>\r\n</div>',styles:[":host{display:flex;flex-direction:column}@-webkit-keyframes select-comment{0%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes select-comment{0%{transform:scale(1.15)}to{transform:scale(1)}}.focused{-webkit-animation-duration:.4s;-webkit-animation-fill-mode:both;-webkit-animation-name:select-comment;animation-duration:.4s;animation-fill-mode:both;animation-name:select-comment}.focused .replies{margin-left:4em;margin-top:1em}banta-comment-view{opacity:1;transition:opacity .4s ease-in-out}banta-comment-view.faded{opacity:.25}.loading{display:block;margin:0 auto;min-height:16em;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.main.hidden{display:none}@media (max-width:500px){.focused .replies{margin-left:0}}"]}]}],N.ctorParameters=function(){return[{type:b},{type:w},{type:t.ElementRef}]},N.propDecorators={hashtags:[{type:t.Input}],participants:[{type:t.Input}],source:[{type:t.Input}],fixedHeight:[{type:t.Input}],maxMessages:[{type:t.Input}],maxVisibleMessages:[{type:t.Input}],genericAvatarUrl:[{type:t.Input}],topicID:[{type:t.Input}],signInLabel:[{type:t.Input}],sendLabel:[{type:t.Input}],replyLabel:[{type:t.Input}],sendingLabel:[{type:t.Input}],permissionDeniedLabel:[{type:t.Input}],postCommentLabel:[{type:t.Input}],postReplyLabel:[{type:t.Input}],signInSelected:[{type:t.Output}],editAvatarSelected:[{type:t.Output}],permissionDeniedError:[{type:t.Output}],upvoted:[{type:t.Output}],reported:[{type:t.Output}],selected:[{type:t.Output}],userSelected:[{type:t.Output}]};var $=function(){function e(e){this.backend=e,this._upvoted=new r.Subject,this._reported=new r.Subject,this._selected=new r.Subject}return Object.defineProperty(e.prototype,"upvoted",{get:function(){return this._upvoted},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reported",{get:function(){return this._reported},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"message",{get:function(){return this._message},set:function(e){var r=this,a=null;this._message&&(a=this._message.id),this._message=e,e&&a===e.id||(this.unsubscribe&&this.unsubscribe(),e&&(this.unsubscribe=this.backend.watchMessage(e,(function(e){return r.message=e}))))},enumerable:!1,configurable:!0}),e.prototype.report=function(){this._reported.next()},e.prototype.upvote=function(){this._upvoted.next()},e.prototype.select=function(){this._selected.next()},e}();$.decorators=[{type:t.Component,args:[{selector:"banta-live-comment",template:'\n <banta-comment \n *ngIf="message"\n [message]="message"\n (upvoted)="upvote()"\n (reported)="report()"\n (selected)="select()"\n ></banta-comment>\n ',styles:[""]}]}],$.ctorParameters=function(){return[{type:w}]},$.propDecorators={upvoted:[{type:t.Output}],reported:[{type:t.Output}],selected:[{type:t.Output}],message:[{type:t.Input}]};var H=function(){function e(){this.canComment=!0,this.signInSelected=new r.Subject,this.editAvatarSelected=new r.Subject,this.sending=!1,this.expandError=!1,this.text="",this.sendLabel="Send",this.sendingLabel="Sending",this.label="Post a comment",this.permissionDeniedLabel="Unavailable",this.signInLabel="Sign In",this.placeholder="",this.participants=[],this._permissionDeniedError=new r.Subject,this.autocompleteVisible=!1,this.autocompleteOptions=[],this.autoCompleteSelected=0}return Object.defineProperty(e.prototype,"permissionDeniedError",{get:function(){return this._permissionDeniedError},enumerable:!1,configurable:!0}),e.prototype.ngAfterViewInit=function(){(document.body.querySelector("[ng-version]")||document.body).appendChild(this.autocompleteEl.nativeElement)},e.prototype.showPermissionDenied=function(){this._permissionDeniedError.next()},e.prototype.showAutoComplete=function(e){this.autoCompleteSelected=0,this.autocompleteOptions=e;var r=this.autocompleteContainerEl.nativeElement.getBoundingClientRect();this.autocompleteEl.nativeElement.getBoundingClientRect();this.autocompleteEl.nativeElement.style.left=window.scrollX+r.left+"px",this.autocompleteEl.nativeElement.style.top=window.scrollY+r.top+"px",this.autocompleteEl.nativeElement.style.width=r.width+"px",this.autocompleteVisible=!0},e.prototype.activateAutoComplete=function(e){e.action(),this.dismissAutoComplete()},e.prototype.dismissAutoComplete=function(){this.autocompleteVisible=!1,this.completionFunc=null,this.completionPrefix=""},e.prototype.indicateError=function(e){var r=this;this.sendError=new Error(e),setTimeout((function(){r.expandError=!0,setTimeout((function(){r.expandError=!1}),5e3)}))},e.prototype.autocomplete=function(e){return v(this,void 0,void 0,(function(){var r;return x(this,(function(a){return r=this.textareaEl.nativeElement,this.text=this.text.slice(0,r.selectionStart-this.completionPrefix.length)+e+this.text.slice(r.selectionStart),[2]}))}))},e.prototype.insert=function(e){return v(this,void 0,void 0,(function(){var r;return x(this,(function(a){return r=this.textareaEl.nativeElement,this.text=this.text.slice(0,r.selectionStart)+e+this.text.slice(r.selectionStart),[2]}))}))},e.prototype.onKeyDown=function(e){return v(this,void 0,void 0,(function(){var r=this;return x(this,(function(a){switch(a.label){case 0:if(console.log(e.key),this.autocompleteVisible){if("Escape"===e.key)return this.dismissAutoComplete(),[2];if("Shift"===e.key)return[2];if("Enter"===e.key)return this.activateAutoComplete(this.autocompleteOptions[this.autoCompleteSelected]),e.stopPropagation(),e.preventDefault(),[2];if("ArrowUp"===e.key)return 0===this.autoCompleteSelected?this.autoCompleteSelected=this.autocompleteOptions.length-1:this.autoCompleteSelected=this.autoCompleteSelected-1,e.stopPropagation(),e.preventDefault(),[2];if("ArrowDown"===e.key)return this.autoCompleteSelected=(this.autoCompleteSelected+1)%this.autocompleteOptions.length,e.stopPropagation(),e.preventDefault(),[2]}return"Enter"===e.key&&e.ctrlKey?[4,this.sendMessage()]:[3,2];case 1:return a.sent(),[2];case 2:if(this.completionFunc){if("Backspace"===e.key){if(this.completionPrefix=this.completionPrefix.slice(0,this.completionPrefix.length-1),""===this.completionPrefix)return this.dismissAutoComplete(),[2]}else{if(" "===e.key||e.key.length>1)return this.dismissAutoComplete(),[2];this.completionPrefix+=e.key}this.showAutoComplete(this.completionFunc(this.completionPrefix))}else":"===e.key?this.startAutoComplete(e,(function(e){return(e=e.slice(1)).startsWith("-")&&(e=e.slice(1)),Object.keys(I).filter((function(r){return r.includes(e)||I[r].keywords.some((function(r){return r.includes(e)}))})).map((function(e){return{label:I[e].char+" "+e,action:function(){return r.autocomplete(I[e].char)}}})).slice(0,5)})):"@"===e.key?this.startAutoComplete(e,(function(e){return e=e.slice(1),r.participants.filter((function(r){return r.username.includes(e)})).map((function(e){return{label:"@"+e.username+" -- "+e.displayName,action:function(){return r.autocomplete("@"+e.username)}}}))})):"#"===e.key&&this.startAutoComplete(e,(function(e){return e=e.slice(1),r.hashtags.filter((function(r){return r.hashtag.includes(e)})).map((function(e){return{label:"#"+e.hashtag+(e.description?" -- "+e.description:""),action:function(){return r.autocomplete("#"+e.hashtag)}}})).slice(0,5)}));return[2]}}))}))},e.prototype.startAutoComplete=function(e,r){this.completionPrefix=e.key,this.completionFunc=r,this.showAutoComplete(this.completionFunc(this.completionPrefix))},e.prototype.onBlur=function(){var e=this;setTimeout((function(){return e.dismissAutoComplete()}),250)},e.prototype.insertEmoji=function(e){this.text+=e},e.prototype.showSignIn=function(){this.signInSelected.next()},e.prototype.showEditAvatar=function(){this.editAvatarSelected.next()},e.prototype.sendMessage=function(){return v(this,void 0,void 0,(function(){var e,r,a;return x(this,(function(t){switch(t.label){case 0:if(!this.source)return[2];this.sending=!0,this.sendError=null,t.label=1;case 1:if(t.trys.push([1,,6,7]),""===(e=(this.text||"").trim()))return[2];r={user:this.user,sentAt:Date.now(),url:location.href,upvotes:0,message:e},t.label=2;case 2:return t.trys.push([2,4,,5]),[4,this.source.send(r)];case 3:return t.sent(),this.text="",[3,5];case 4:return a=t.sent(),this.indicateError("Could not send: "+a.message),console.error("Failed to send message: ",r),console.error(a),[3,5];case 5:return[3,7];case 6:return this.sending=!1,[7];case 7:return[2]}}))}))},e}();H.decorators=[{type:t.Component,args:[{selector:"banta-comment-field",template:'<form class="new-message" (submit)="sendMessage()">\r\n <div class="avatar-container">\r\n <a href="javascript:;" \r\n class="avatar" \r\n (click)="showEditAvatar()" \r\n [style.background-image]="\'url(\' + user?.avatarUrl + \')\'"\r\n ></a>\r\n </div>\r\n <div class="text-container">\r\n <div class="field-container">\r\n <mat-form-field appearance="outline" floatLabel="always">\r\n <mat-label>{{label}}</mat-label>\r\n <textarea \r\n #textarea\r\n name="message" \r\n [placeholder]="placeholder"\r\n matInput\r\n cdkTextareaAutosize \r\n (keydown)="onKeyDown($event)"\r\n (blur)="onBlur()"\r\n [disabled]="sending"\r\n [(ngModel)]="text"></textarea>\r\n </mat-form-field>\r\n <div #autocompleteContainer class="autocomplete-container">\r\n <div #autocomplete class="autocomplete" [class.visible]="autocompleteVisible">\r\n\r\n <div>\r\n <strong>{{completionPrefix}}</strong>...\r\n </div>\r\n\r\n <a \r\n mat-button \r\n *ngFor="let option of autocompleteOptions; index as index" \r\n (click)="activateAutoComplete(option)"\r\n [class.active]="autoCompleteSelected === index" \r\n >\r\n {{option.label}}\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-spinner *ngIf="sending" class="icon loading" diameter="18" strokeWidth="2"></mat-spinner>\r\n <div *ngIf="sendError" class="error-message" [class.expanded]="expandError">\r\n <mat-icon *ngIf="sendError">error</mat-icon>\r\n {{sendError.message}}\r\n </div>\r\n <emoji-selector-button \r\n class="top-right"\r\n (selected)="insertEmoji($event)"\r\n ></emoji-selector-button>\r\n </div>\r\n <div class="actions">\r\n <ng-container *ngIf="!user">\r\n <button \r\n mat-raised-button \r\n color="primary"\r\n type="button"\r\n (click)="showSignIn()"\r\n >{{signInLabel}}</button>\r\n </ng-container>\r\n <ng-container *ngIf="user">\r\n <button \r\n *ngIf="canComment"\r\n mat-raised-button \r\n class="send"\r\n color="primary"\r\n [disabled]="!text || sending" \r\n >\r\n <mat-icon *ngIf="!sending">chevron_right</mat-icon>\r\n <mat-spinner *ngIf="sending" class="icon" diameter="18" strokeWidth="2"></mat-spinner>\r\n <span class="label">\r\n <ng-container *ngIf="!sending">\r\n {{sendLabel}}\r\n </ng-container>\r\n <ng-container *ngIf="sending">\r\n {{sendingLabel}}\r\n </ng-container>\r\n </span>\r\n\r\n </button>\r\n <button \r\n *ngIf="!canComment"\r\n type="button"\r\n (click)="showPermissionDenied()"\r\n mat-raised-button \r\n color="primary"\r\n >{{permissionDeniedLabel}}</button>\r\n </ng-container>\r\n </div>\r\n</form>\r\n',styles:["@-webkit-keyframes comment-field-appear{0%{opacity:0;transform:translateY(128px)}to{opacity:1;transform:translate(0)}}@keyframes comment-field-appear{0%{opacity:0;transform:translateY(128px)}to{opacity:1;transform:translate(0)}}:host{-webkit-animation-delay:.4s;-webkit-animation-duration:.8s;-webkit-animation-fill-mode:both;-webkit-animation-name:comment-field-appear;animation-delay:.4s;animation-duration:.8s;animation-fill-mode:both;animation-name:comment-field-appear;display:block;margin:0 2em 0 0}.avatar-container{display:flex;justify-content:flex-end;width:calc(48px + 1.75em)}.avatar-container .avatar{background:pink;background-position:50%;background-repeat:no-repeat;background-size:cover;border-radius:100%;height:48px;margin-right:.75em;margin-top:.75em;width:48px}form{align-items:center;display:flex;padding:.5em}form .text-container{display:flex;flex-grow:1;position:relative}form .text-container textarea{font-size:14pt;width:100%}form .text-container textarea[disabled]{opacity:.5}form .text-container mat-form-field{margin-bottom:1em}form .text-container emoji-selector-button{bottom:0;position:absolute;right:0}form .text-container .error-message,form .text-container mat-spinner.loading{bottom:.5em;left:.5em;position:absolute}form .text-container .error-message{color:#683333;max-width:1.5em;overflow-x:hidden;transition:max-width 2s ease-in-out;white-space:nowrap}form .text-container .error-message.expanded,form .text-container .error-message:hover{max-width:100%}form .text-container .error-message mat-icon{vertical-align:middle}form input[type=text]{background:#000;border:1px solid #333;color:#fff;height:1em;width:100%}form .actions{margin-left:1em}form button{display:block;margin:0 0 0 auto}form.new-message{align-items:flex-start;display:flex}form.new-message .field-container{display:flex;flex-direction:column;flex-grow:1}form.new-message mat-form-field{width:100%}form.new-message button{margin:1.25em 0 0}button.send{min-width:9em}textarea{max-height:7em}.autocomplete-container{pointer-events:none;position:relative;top:-2em;width:calc(100% - 2em)}.autocomplete{background:#333;display:flex;flex-direction:column;padding:.5em;pointer-events:none;position:absolute;visibility:hidden;z-index:100}.autocomplete.visible{pointer-events:auto;visibility:visible}.autocomplete a{text-align:left;width:100%}.autocomplete a.active{background:#555}@media (max-width:500px){:host{margin:0}.avatar-container{width:auto}.avatar-container .avatar{height:32px;margin-top:1.5em;width:32px}button.send{margin-top:1.5em;min-width:auto}button.send .label{display:none}}"]}]}],H.propDecorators={source:[{type:t.Input}],user:[{type:t.Input}],canComment:[{type:t.Input}],signInSelected:[{type:t.Output}],editAvatarSelected:[{type:t.Output}],sendLabel:[{type:t.Input}],sendingLabel:[{type:t.Input}],label:[{type:t.Input}],permissionDeniedLabel:[{type:t.Input}],signInLabel:[{type:t.Input}],placeholder:[{type:t.Input}],autocompleteEl:[{type:t.ViewChild,args:["autocomplete"]}],autocompleteContainerEl:[{type:t.ViewChild,args:["autocompleteContainer"]}],textareaEl:[{type:t.ViewChild,args:["textarea"]}],hashtags:[{type:t.Input}],participants:[{type:t.Input}],permissionDeniedError:[{type:t.Output}]};var K=[R,B,N,$,H],W=function(){};W.decorators=[{type:t.NgModule,args:[{declarations:K,imports:[o.CommonModule,p.TextFieldModule,d.FormsModule,s.MatIconModule,i.MatFormFieldModule,l.MatInputModule,c.MatButtonModule,u.MatMenuModule,h.MatProgressSpinnerModule,_,z],exports:K}]}];var Y=function(){function e(){}return e.forRoot=function(){return{ngModule:e,providers:[b]}},e}();Y.decorators=[{type:t.NgModule,args:[{imports:[o.CommonModule,d.FormsModule,_,W,F,z,s.MatIconModule,c.MatButtonModule,m.MatTooltipModule,u.MatMenuModule,g.MatDialogModule,i.MatFormFieldModule,l.MatInputModule,h.MatProgressSpinnerModule],declarations:[P,E,V],exports:[P,E,V,F,W]}]}],e.BantaChatComponent=A,e.BantaCommentsComponent=N,e.BantaCommonModule=_,e.BantaComponent=P,e.BantaLogoComponent=E,e.BantaSdkModule=Y,e.BantaService=b,e.ChatBackendService=w,e.ChatMessageComponent=L,e.ChatModule=F,e.ChatViewComponent=D,e.CommentComponent=R,e.CommentFieldComponent=H,e.CommentViewComponent=B,e.CommentsModule=W,e.EMOJIS=I,e.EmojiModule=z,e.EmojiSelectorButtonComponent=C,e.EmojiSelectorPanelComponent=q,e.LiveChatMessageComponent=T,e.LiveCommentComponent=$,e.LiveMessageComponent=V,e.TimestampComponent=f,e.lazyConnection=function(e){return new r.Observable((function(a){var t=new r.Subject,o=t.subscribe(a);return e.start(t),function(){o.unsubscribe(),e.stop()}})).pipe(a.publish()).refCount()},Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("rxjs"),require("rxjs/operators"),require("@angular/core"),require("@angular/common"),require("@angular/platform-browser"),require("@angular/material/icon"),require("@angular/material/button"),require("@angular/material/form-field"),require("@angular/material/input"),require("@angular/forms"),require("@angular/material/dialog"),require("@angular/material/menu"),require("@angular/material/progress-spinner"),require("@angular/cdk/text-field"),require("@angular/material/tooltip")):"function"==typeof define&&define.amd?define("@banta/sdk",["exports","rxjs","rxjs/operators","@angular/core","@angular/common","@angular/platform-browser","@angular/material/icon","@angular/material/button","@angular/material/form-field","@angular/material/input","@angular/forms","@angular/material/dialog","@angular/material/menu","@angular/material/progress-spinner","@angular/cdk/text-field","@angular/material/tooltip"],r):r(((e="undefined"!=typeof globalThis?globalThis:e||self).banta=e.banta||{},e.banta.sdk={}),e.rxjs,e.rxjs.operators,e.ng.core,e.ng.common,e.ng.platformBrowser,e.ng.material.icon,e.ng.material.button,e.ng.material.formField,e.ng.material.input,e.ng.forms,e.ng.material.dialog,e.ng.material.menu,e.ng.material.progressSpinner,e.ng.cdk.textField,e.ng.material.tooltip)}(this,(function(e,r,a,t,o,n,s,c,i,l,d,y,g,u,h,p){"use strict";var m=function(){function e(){this._userChanged=new r.BehaviorSubject(null)}return Object.defineProperty(e.prototype,"userChanged",{get:function(){return this._userChanged},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"user",{get:function(){return this._user},set:function(e){this._user=e,this._userChanged.next(e)},enumerable:!1,configurable:!0}),e}();m.decorators=[{type:t.Injectable}];var b=function(){function e(){this.relative="",this.tooltip="",this.updateInterval=null,this.showAbsolute=!1}return e.prototype.ngOnDestroy=function(){this.updateInterval&&clearInterval(this.updateInterval)},Object.defineProperty(e.prototype,"value",{get:function(){return this._value},set:function(e){this._value=e,this.update()},enumerable:!1,configurable:!0}),e.prototype.update=function(){var e=this,r=Date.now()-this.value,a=6e4,t=36e5,o=24*t,n=7*o,s=30*o;this.showAbsolute=!1;var c=0;if(r>31536e6)return this.showAbsolute=!0,void(this.relative="abs");if(r>s){var i=Math.floor(r/s);this.relative=1===i?i+" month ago":i+" months ago"}else if(r>n){var l=Math.floor(r/n);this.relative=1===l?l+" week ago":l+" weeks ago"}else if(r>o){var d=Math.floor(r/o);this.relative=1===d?d+" day ago":d+" days ago"}else if(r>t){var y=Math.floor(r/t);this.relative=1===y?y+" hour ago":y+" hours ago",c=18e5}else if(r>a){var g=Math.floor(r/a);this.relative=1===g?g+" minute ago":g+" minutes ago",c=45e3}else r>3e4?(this.relative="about a minute ago",c=6e4):(this.relative="just now",c=3e4);"undefined"!=typeof window&&(clearInterval(this.updateInterval),c>0&&(this.updateInterval=setInterval((function(){return e.update()}))))},e}();b.decorators=[{type:t.Component,args:[{selector:"banta-timestamp",template:'\n <span *ngIf="showAbsolute" [title]="value | date : \'short\'">\n {{value | date : \'shortDate\'}}\n </span>\n <span *ngIf="!showAbsolute" [title]="value | date : \'short\'">\n {{relative}}\n </span>\n ',styles:[""]}]}],b.propDecorators={value:[{type:t.Input}]};var f=function(){};f.decorators=[{type:t.Injectable}];var w=[b],k=function(){};k.decorators=[{type:t.NgModule,args:[{declarations:w,imports:[o.CommonModule],exports:w}]}];function _(e,r,a,t){return new(a||(a=Promise))((function(o,n){function s(e){try{i(t.next(e))}catch(e){n(e)}}function c(e){try{i(t.throw(e))}catch(e){n(e)}}function i(e){var r;e.done?o(e.value):(r=e.value,r instanceof a?r:new a((function(e){e(r)}))).then(s,c)}i((t=t.apply(e,r||[])).next())}))}function v(e,r){var a,t,o,n,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return n={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(n[Symbol.iterator]=function(){return this}),n;function c(n){return function(c){return function(n){if(a)throw new TypeError("Generator is already executing.");for(;s;)try{if(a=1,t&&(o=2&n[0]?t.return:n[0]?t.throw||((o=t.return)&&o.call(t),0):t.next)&&!(o=o.call(t,n[1])).done)return o;switch(t=0,o&&(n=[2&n[0],o.value]),n[0]){case 0:case 1:o=n;break;case 4:return s.label++,{value:n[1],done:!1};case 5:s.label++,t=n[1],n=[0];continue;case 7:n=s.ops.pop(),s.trys.pop();continue;default:if(!(o=s.trys,(o=o.length>0&&o[o.length-1])||6!==n[0]&&2!==n[0])){s=0;continue}if(3===n[0]&&(!o||n[1]>o[0]&&n[1]<o[3])){s.label=n[1];break}if(6===n[0]&&s.label<o[1]){s.label=o[1],o=n;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(n);break}o[2]&&s.ops.pop(),s.trys.pop();continue}n=r.call(e,s)}catch(e){n=[6,e],t=0}finally{a=o=0}if(5&n[0])throw n[1];return{value:n[0]?n[1]:void 0,done:!0}}([n,c])}}}Object.create;function x(e){var r="function"==typeof Symbol&&Symbol.iterator,a=r&&e[r],t=0;if(a)return a.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}};throw new TypeError(r?"Object is not iterable.":"Symbol.iterator is not defined.")}function j(e,r){var a="function"==typeof Symbol&&e[Symbol.iterator];if(!a)return e;var t,o,n=a.call(e),s=[];try{for(;(void 0===r||r-- >0)&&!(t=n.next()).done;)s.push(t.value)}catch(e){o={error:e}}finally{try{t&&!t.done&&(a=n.return)&&a.call(n)}finally{if(o)throw o.error}}return s}function S(){for(var e=[],r=0;r<arguments.length;r++)e=e.concat(j(arguments[r]));return e}Object.create;var M={grinning:{keywords:["face","smile","happy","joy",":D","grin"],char:"๐Ÿ˜€",category:"people"},grimacing:{keywords:["face","grimace","teeth"],char:"๐Ÿ˜ฌ",category:"people"},grin:{keywords:["face","happy","smile","joy","kawaii"],char:"๐Ÿ˜",category:"people"},joy:{keywords:["face","cry","tears","weep","happy","happytears","haha"],char:"๐Ÿ˜‚",category:"people"},smiley:{keywords:["face","happy","joy","haha",":D",":)","smile","funny"],char:"๐Ÿ˜ƒ",category:"people"},smile:{keywords:["face","happy","joy","funny","haha","laugh","like",":D",":)"],char:"๐Ÿ˜„",category:"people"},sweat_smile:{keywords:["face","hot","happy","laugh","sweat","smile","relief"],char:"๐Ÿ˜…",category:"people"},laughing:{keywords:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],char:"๐Ÿ˜†",category:"people"},innocent:{keywords:["face","angel","heaven","halo"],char:"๐Ÿ˜‡",category:"people"},wink:{keywords:["face","happy","mischievous","secret",";)","smile"],char:"๐Ÿ˜‰",category:"people"},blush:{keywords:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],char:"๐Ÿ˜Š",category:"people"},slightly_smiling:{keywords:["face","smile"],char:"๐Ÿ™‚",category:"people"},upside_down:{keywords:["face","flipped","silly","smile"],char:"๐Ÿ™ƒ",category:"people"},relaxed:{keywords:["face","blush","massage","happiness"],char:"โ˜บ๏ธ",category:"people"},yum:{keywords:["happy","joy","tongue","smile","face","silly","yummy","nom"],char:"๐Ÿ˜‹",category:"people"},relieved:{keywords:["face","relaxed","phew","massage","happiness"],char:"๐Ÿ˜Œ",category:"people"},heart_eyes:{keywords:["face","love","like","affection","valentines","infatuation","crush","heart"],char:"๐Ÿ˜",category:"people"},kissing_heart:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],char:"๐Ÿ˜˜",category:"people"},kissing:{keywords:["love","like","face","3","valentines","infatuation","kiss"],char:"๐Ÿ˜—",category:"people"},kissing_smiling_eyes:{keywords:["face","affection","valentines","infatuation","kiss"],char:"๐Ÿ˜™",category:"people"},kissing_closed_eyes:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],char:"๐Ÿ˜š",category:"people"},stuck_out_tongue_winking_eye:{keywords:["face","prank","childish","playful","mischievous","smile","wink","tongue"],char:"๐Ÿ˜œ",category:"people"},stuck_out_tongue_closed_eyes:{keywords:["face","prank","playful","mischievous","smile","tongue"],char:"๐Ÿ˜",category:"people"},stuck_out_tongue:{keywords:["face","prank","childish","playful","mischievous","smile","tongue"],char:"๐Ÿ˜›",category:"people"},money_mouth:{keywords:["face","rich","dollar","money"],char:"๐Ÿค‘",category:"people"},nerd:{keywords:["face","nerdy","geek","dork"],char:"๐Ÿค“",category:"people"},sunglasses:{keywords:["face","cool","smile","summer","beach","sunglass"],char:"๐Ÿ˜Ž",category:"people"},hugging:{keywords:["face","smile","hug"],char:"๐Ÿค—",category:"people"},smirk:{keywords:["face","smile","mean","prank","smug","sarcasm"],char:"๐Ÿ˜",category:"people"},no_mouth:{keywords:["face","hellokitty"],char:"๐Ÿ˜ถ",category:"people"},neutral_face:{keywords:["indifference","meh",":|","neutral"],char:"๐Ÿ˜",category:"people"},expressionless:{keywords:["face","indifferent","-_-","meh","deadpan"],char:"๐Ÿ˜‘",category:"people"},unamused:{keywords:["indifference","bored","straight face","serious","sarcasm"],char:"๐Ÿ˜’",category:"people"},rolling_eyes:{keywords:["face","eyeroll","frustrated"],char:"๐Ÿ™„",category:"people"},thinking:{keywords:["face","hmmm","think","consider"],char:"๐Ÿค”",category:"people"},flushed:{keywords:["face","blush","shy","flattered"],char:"๐Ÿ˜ณ",category:"people"},disappointed:{keywords:["face","sad","upset","depressed",":("],char:"๐Ÿ˜ž",category:"people"},worried:{keywords:["face","concern","nervous",":("],char:"๐Ÿ˜Ÿ",category:"people"},angry:{keywords:["mad","face","annoyed","frustrated"],char:"๐Ÿ˜ ",category:"people"},rage:{keywords:["angry","mad","hate","despise"],char:"๐Ÿ˜ก",category:"people"},pensive:{keywords:["face","sad","depressed","okay","upset"],char:"๐Ÿ˜”",category:"people"},confused:{keywords:["face","indifference","huh","weird","hmmm",":/"],char:"๐Ÿ˜•",category:"people"},slightly_sad:{keywords:["face","frowning","disappointed","sad","upset"],char:"๐Ÿ™",category:"people"},white_frowning:{keywords:["face","sad","upset","frown"],char:"โ˜น",category:"people"},persevere:{keywords:["face","sick","no","upset","oops"],char:"๐Ÿ˜ฃ",category:"people"},confounded:{keywords:["face","confused","sick","unwell","oops",":S"],char:"๐Ÿ˜–",category:"people"},tired_face:{keywords:["sick","whine","upset","frustrated"],char:"๐Ÿ˜ซ",category:"people"},weary:{keywords:["face","tired","sleepy","sad","frustrated","upset"],char:"๐Ÿ˜ฉ",category:"people"},triumph:{keywords:["face","gas","phew","proud","pride"],char:"๐Ÿ˜ค",category:"people"},open_mouth:{keywords:["face","surprise","impressed","wow","whoa",":O"],char:"๐Ÿ˜ฎ",category:"people"},scream:{keywords:["face","munch","scared","omg"],char:"๐Ÿ˜ฑ",category:"people"},fearful:{keywords:["face","scared","terrified","nervous","oops","huh"],char:"๐Ÿ˜จ",category:"people"},cold_sweat:{keywords:["face","nervous","sweat"],char:"๐Ÿ˜ฐ",category:"people"},hushed:{keywords:["face","woo","shh"],char:"๐Ÿ˜ฏ",category:"people"},frowning:{keywords:["face","aw","what"],char:"๐Ÿ˜ฆ",category:"people"},anguished:{keywords:["face","stunned","nervous"],char:"๐Ÿ˜ง",category:"people"},cry:{keywords:["face","tears","sad","depressed","upset",":'("],char:"๐Ÿ˜ข",category:"people"},disappointed_relieved:{keywords:["face","phew","sweat","nervous"],char:"๐Ÿ˜ฅ",category:"people"},sleepy:{keywords:["face","tired","rest","nap"],char:"๐Ÿ˜ช",category:"people"},sweat:{keywords:["face","hot","sad","tired","exercise"],char:"๐Ÿ˜“",category:"people"},sob:{keywords:["face","cry","tears","sad","upset","depressed"],char:"๐Ÿ˜ญ",category:"people"},dizzy_face:{keywords:["spent","unconscious","xox","dizzy"],char:"๐Ÿ˜ต",category:"people"},astonished:{keywords:["face","xox","surprised","poisoned"],char:"๐Ÿ˜ฒ",category:"people"},zipper_mouth:{keywords:["face","sealed","zipper","secret"],char:"๐Ÿค",category:"people"},mask:{keywords:["face","sick","ill","disease"],char:"๐Ÿ˜ท",category:"people"},thermometer_face:{keywords:["sick","temperature","thermometer","cold"],char:"๐Ÿค’",category:"people"},bandage_face:{keywords:["injured","clumsy","bandage","hurt"],char:"๐Ÿค•",category:"people"},sleeping:{keywords:["face","tired","sleepy","night","zzz"],char:"๐Ÿ˜ด",category:"people"},zzz:{keywords:["sleepy","tired"],char:"๐Ÿ’ค",category:"people"},hankey:{keywords:["poop","shitface","fail","turd","shit"],char:"๐Ÿ’ฉ",category:"people"},smiling_imp:{keywords:["devil","horns"],char:"๐Ÿ˜ˆ",category:"people"},imp:{keywords:["devil","angry","horns"],char:"๐Ÿ‘ฟ",category:"people"},japanese_ogre:{keywords:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],char:"๐Ÿ‘น",category:"people"},japanese_goblin:{keywords:["red","evil","mask","monster","scary","creepy","japanese","goblin"],char:"๐Ÿ‘บ",category:"people"},skull:{keywords:["dead","skeleton","creepy"],char:"๐Ÿ’€",category:"people"},ghost:{keywords:["halloween","spooky","scary"],char:"๐Ÿ‘ป",category:"people"},alien:{keywords:["UFO","paul","weird","outer_space"],char:"๐Ÿ‘ฝ",category:"people"},robot:{keywords:["computer","machine"],char:"๐Ÿค–",category:"people"},smiley_cat:{keywords:["animal","cats","happy","smile"],char:"๐Ÿ˜บ",category:"people"},smile_cat:{keywords:["animal","cats","smile"],char:"๐Ÿ˜ธ",category:"people"},joy_cat:{keywords:["animal","cats","haha","happy","tears"],char:"๐Ÿ˜น",category:"people"},heart_eyes_cat:{keywords:["animal","love","like","affection","cats","valentines","heart"],char:"๐Ÿ˜ป",category:"people"},smirk_cat:{keywords:["animal","cats","smirk"],char:"๐Ÿ˜ผ",category:"people"},kissing_cat:{keywords:["animal","cats","kiss"],char:"๐Ÿ˜ฝ",category:"people"},scream_cat:{keywords:["animal","cats","munch","scared","scream"],char:"๐Ÿ™€",category:"people"},crying_cat_face:{keywords:["animal","tears","weep","sad","cats","upset","cry"],char:"๐Ÿ˜ฟ",category:"people"},pouting_cat:{keywords:["animal","cats"],char:"๐Ÿ˜พ",category:"people"},raised_hands:{keywords:["gesture","hooray","yea","celebration","hands"],char:"๐Ÿ™Œ",category:"people"},clap:{keywords:["hands","praise","applause","congrats","yay"],char:"๐Ÿ‘",category:"people"},wave:{keywords:["hands","gesture","goodbye","solong","farewell","hello","palm"],char:"๐Ÿ‘‹",category:"people"},"+1":{keywords:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],char:"๐Ÿ‘",category:"people"},minus1:{keywords:["thumbsdown","no","dislike","hand"],char:"๐Ÿ‘Ž",category:"people"},facepunch:{keywords:["angry","violence","fist","hit","attack","hand"],char:"๐Ÿ‘Š",category:"people"},fist:{keywords:["fingers","hand","grasp"],char:"โœŠ",category:"people"},v:{keywords:["fingers","ohyeah","hand","peace","victory","two"],char:"โœŒ๏ธ",category:"people"},ok_hand:{keywords:["fingers","limbs","perfect","ok"],char:"๐Ÿ‘Œ",category:"people"},hand:{keywords:["fingers","stop","highfive","palm","ban","raised_hand"],char:"โœ‹",category:"people"},open_hands:{keywords:["fingers","butterfly","hands","open"],char:"๐Ÿ‘",category:"people"},muscle:{keywords:["arm","flex","hand","summer","strong","biceps"],char:"๐Ÿ’ช",category:"people"},pray:{keywords:["please","hope","wish","namaste","highfive"],char:"๐Ÿ™",category:"people"},point_up:{keywords:["hand","fingers","direction","up"],char:"โ˜๏ธ",category:"people"},point_up_2:{keywords:["fingers","hand","direction","up"],char:"๐Ÿ‘†",category:"people"},point_down:{keywords:["fingers","hand","direction","down"],char:"๐Ÿ‘‡",category:"people"},point_left:{keywords:["direction","fingers","hand","left"],char:"๐Ÿ‘ˆ",category:"people"},point_right:{keywords:["fingers","hand","direction","right"],char:"๐Ÿ‘‰",category:"people"},middle_finger:{keywords:["hand","fingers","rude"],char:"๐Ÿ–•",category:"people"},splayed_fingers:{keywords:["hand","fingers","palm"],char:"๐Ÿ–",category:"people"},sign_of_horns:{keywords:["hand","fingers","evil_eye","metal","rock_on"],char:"๐Ÿค˜",category:"people"},vulcan_salute:{keywords:["hand","fingers","spock","star trek"],char:"๐Ÿ––",category:"people"},writing_hand:{keywords:["pen","stationery","write"],char:"โœ",category:"people"},nail_care:{keywords:["beauty","manicure","finger","fashion","nail"],char:"๐Ÿ’…",category:"people"},lips:{keywords:["mouth","kiss"],char:"๐Ÿ‘„",category:"people"},tongue:{keywords:["mouth","playful"],char:"๐Ÿ‘…",category:"people"},ear:{keywords:["face","hear","sound","listen"],char:"๐Ÿ‘‚",category:"people"},nose:{keywords:["smell","sniff"],char:"๐Ÿ‘ƒ",category:"people"},eye:{keywords:["face","look","see","watch","stare"],char:"๐Ÿ‘",category:"people"},eyes:{keywords:["look","watch","stalk","peek","see"],char:"๐Ÿ‘€",category:"people"},bust_in_silhouette:{keywords:["user","person","human"],char:"๐Ÿ‘ค",category:"people"},busts_in_silhouette:{keywords:["user","person","human","group","team"],char:"๐Ÿ‘ฅ",category:"people"},speaking_head:{keywords:["user","person","human"],char:"๐Ÿ—ฃ",category:"people"},baby:{keywords:["child","boy","girl","toddler"],char:"๐Ÿ‘ถ",category:"people"},boy:{keywords:["man","male","guy","teenager"],char:"๐Ÿ‘ฆ",category:"people"},girl:{keywords:["female","woman","teenager"],char:"๐Ÿ‘ง",category:"people"},man:{keywords:["mustache","father","dad","guy","classy","sir","moustache"],char:"๐Ÿ‘จ",category:"people"},woman:{keywords:["female","girls","lady"],char:"๐Ÿ‘ฉ",category:"people"},person_with_blond_hair:{keywords:["man","male","boy","blonde","guy","person"],char:"๐Ÿ‘ฑ",category:"people"},older_man:{keywords:["human","male","men","old","elder","senior"],char:"๐Ÿ‘ด",category:"people"},older_woman:{keywords:["human","female","women","lady","old","elder","senior"],char:"๐Ÿ‘ต",category:"people"},man_with_gua_pi_mao:{keywords:["male","boy","chinese"],char:"๐Ÿ‘ฒ",category:"people"},man_with_turban:{keywords:["male","indian","hinduism","arabs"],char:"๐Ÿ‘ณ",category:"people"},cop:{keywords:["man","police","law","legal","enforcement","arrest","911"],char:"๐Ÿ‘ฎ",category:"people"},construction_worker:{keywords:["male","human","wip","guy","build","construction","worker","labor"],char:"๐Ÿ‘ท",category:"people"},guardsman:{keywords:["uk","gb","british","male","guy","royal"],char:"๐Ÿ’‚",category:"people"},sleuth:{keywords:["human","spy","detective"],char:"๐Ÿ•ต",category:"people"},santa:{keywords:["festival","man","male","xmas","father christmas"],char:"๐ŸŽ…",category:"people"},angel:{keywords:["heaven","wings","halo"],char:"๐Ÿ‘ผ",category:"people"},princess:{keywords:["girl","woman","female","blond","crown","royal","queen"],char:"๐Ÿ‘ธ",category:"people"},bride_with_veil:{keywords:["couple","marriage","wedding","woman","bride"],char:"๐Ÿ‘ฐ",category:"people"},runner:{keywords:["man","walking","exercise","race","running"],char:"๐Ÿƒ",category:"people"},walking:{keywords:["human","feet","steps"],char:"๐Ÿšถ",category:"people"},dancer:{keywords:["female","girl","woman","fun"],char:"๐Ÿ’ƒ",category:"people"},dancers:{keywords:["female","bunny","women","girls"],char:"๐Ÿ‘ฏ",category:"people"},couple:{keywords:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],char:"๐Ÿ‘ซ",category:"people"},two_men_holding_hands:{keywords:["pair","couple","love","like","bromance","friendship","people","human"],char:"๐Ÿ‘ฌ",category:"people"},two_women_holding_hands:{keywords:["pair","friendship","couple","love","like","female","people","human"],char:"๐Ÿ‘ญ",category:"people"},bow:{keywords:["man","male","boy"],char:"๐Ÿ™‡",category:"people"},information_desk_person:{keywords:["female","girl","woman","human","information"],char:"๐Ÿ’",category:"people"},no_good:{keywords:["female","girl","woman","nope"],char:"๐Ÿ™…",category:"people"},ok_woman:{keywords:["women","girl","female","pink","human","woman"],char:"๐Ÿ™†",category:"people"},raising_hand:{keywords:["female","girl","woman"],char:"๐Ÿ™‹",category:"people"},person_with_pouting_face:{keywords:["female","girl","woman"],char:"๐Ÿ™Ž",category:"people"},person_frowning:{keywords:["female","girl","woman","sad","depressed","discouraged","unhappy"],char:"๐Ÿ™",category:"people"},haircut:{keywords:["female","girl","woman"],char:"๐Ÿ’‡",category:"people"},massage:{keywords:["female","girl","woman","head"],char:"๐Ÿ’†",category:"people"},couple_with_heart:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:"๐Ÿ’‘",category:"people"},female_couple_with_heart:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:"๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘ฉ",category:"people"},male_couple_with_heart:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:"๐Ÿ‘จโ€โค๏ธโ€๐Ÿ‘จ",category:"people"},couplekiss:{keywords:["pair","valentines","love","like","dating","marriage"],char:"๐Ÿ’",category:"people"},female_couplekiss:{keywords:["pair","valentines","love","like","dating","marriage"],char:"๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘ฉ",category:"people"},male_couplekiss:{keywords:["pair","valentines","love","like","dating","marriage"],char:"๐Ÿ‘จโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ",category:"people"},family:{keywords:["home","parents","child","mom","dad","father","mother","people","human"],char:"๐Ÿ‘ช",category:"people"},family_man_woman_girl:{keywords:["home","parents","people","human","child"],char:"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง",category:"people"},family_man_woman_girl_boy:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ",category:"people"},family_man_woman_boys:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ",category:"people"},family_man_woman_girls:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง",category:"people"},family_women_boy:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ",category:"people"},family_women_girl:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ง",category:"people"},family_women_girl_boy:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ",category:"people"},family_women_boys:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ",category:"people"},family_women_girls:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง",category:"people"},family_men_boy:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ",category:"people"},family_men_girl:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ง",category:"people"},family_men_girl_boy:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ",category:"people"},family_men_boys:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ",category:"people"},family_men_girls:{keywords:["home","parents","people","human","children"],char:"๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง",category:"people"},womans_clothes:{keywords:["fashion","shopping","female"],char:"๐Ÿ‘š",category:"people"},shirt:{keywords:["fashion","cloth","casual","tshirt","tee"],char:"๐Ÿ‘•",category:"people"},jeans:{keywords:["fashion","shopping"],char:"๐Ÿ‘–",category:"people"},necktie:{keywords:["shirt","suitup","formal","fashion","cloth","business"],char:"๐Ÿ‘”",category:"people"},dress:{keywords:["clothes","fashion","shopping"],char:"๐Ÿ‘—",category:"people"},bikini:{keywords:["swimming","female","woman","girl","fashion","beach","summer"],char:"๐Ÿ‘™",category:"people"},kimono:{keywords:["dress","fashion","women","female","japanese"],char:"๐Ÿ‘˜",category:"people"},lipstick:{keywords:["female","girl","fashion","woman"],char:"๐Ÿ’„",category:"people"},kiss:{keywords:["face","lips","love","like","affection","valentines"],char:"๐Ÿ’‹",category:"people"},footprints:{keywords:["feet","tracking","walking","beach"],char:"๐Ÿ‘ฃ",category:"people"},high_heel:{keywords:["fashion","shoes","female","pumps","stiletto"],char:"๐Ÿ‘ ",category:"people"},sandal:{keywords:["shoes","fashion","flip flops"],char:"๐Ÿ‘ก",category:"people"},boot:{keywords:["shoes","fashion"],char:"๐Ÿ‘ข",category:"people"},mans_shoe:{keywords:["fashion","male"],char:"๐Ÿ‘ž",category:"people"},athletic_shoe:{keywords:["shoes","sports","sneakers"],char:"๐Ÿ‘Ÿ",category:"people"},womans_hat:{keywords:["fashion","accessories","female","lady","spring"],char:"๐Ÿ‘’",category:"people"},tophat:{keywords:["magic","gentleman","classy","circus"],char:"๐ŸŽฉ",category:"people"},helmet:{keywords:["construction","build"],char:"โ›‘",category:"people"},mortar_board:{keywords:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],char:"๐ŸŽ“",category:"people"},crown:{keywords:["king","kod","leader","royalty","lord"],char:"๐Ÿ‘‘",category:"people"},school_satchel:{keywords:["student","education","bag","backpack"],char:"๐ŸŽ’",category:"people"},pouch:{keywords:["bag","accessories","shopping"],char:"๐Ÿ‘",category:"people"},purse:{keywords:["fashion","accessories","money","sales","shopping"],char:"๐Ÿ‘›",category:"people"},handbag:{keywords:["fashion","accessory","accessories","shopping"],char:"๐Ÿ‘œ",category:"people"},briefcase:{keywords:["business","documents","work","law","legal"],char:"๐Ÿ’ผ",category:"people"},eyeglasses:{keywords:["fashion","accessories","eyesight","nerdy","dork","geek"],char:"๐Ÿ‘“",category:"people"},dark_sunglasses:{keywords:["face","cool","accessories"],char:"๐Ÿ•ถ",category:"people"},ring:{keywords:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],char:"๐Ÿ’",category:"people"},closed_umbrella:{keywords:["weather","rain","drizzle"],char:"๐ŸŒ‚",category:"people"},dog:{keywords:["animal","friend","nature","woof","puppy","pet","faithful"],char:"๐Ÿถ",category:"animals_and_nature"},cat:{keywords:["animal","meow","nature","pet","kitten"],char:"๐Ÿฑ",category:"animals_and_nature"},mouse:{keywords:["animal","nature","cheese","rodent"],char:"๐Ÿญ",category:"animals_and_nature"},hamster:{keywords:["animal","nature"],char:"๐Ÿน",category:"animals_and_nature"},rabbit:{keywords:["animal","nature","pet","spring","magic","bunny"],char:"๐Ÿฐ",category:"animals_and_nature"},bear:{keywords:["animal","nature","wild"],char:"๐Ÿป",category:"animals_and_nature"},panda_face:{keywords:["animal","nature","panda"],char:"๐Ÿผ",category:"animals_and_nature"},koala:{keywords:["animal","nature"],char:"๐Ÿจ",category:"animals_and_nature"},tiger:{keywords:["animal","cat","danger","wild","nature","roar"],char:"๐Ÿฏ",category:"animals_and_nature"},lion_face:{keywords:["animal","nature"],char:"๐Ÿฆ",category:"animals_and_nature"},cow:{keywords:["beef","ox","animal","nature","moo","milk"],char:"๐Ÿฎ",category:"animals_and_nature"},pig:{keywords:["animal","oink","nature"],char:"๐Ÿท",category:"animals_and_nature"},pig_nose:{keywords:["animal","oink"],char:"๐Ÿฝ",category:"animals_and_nature"},frog:{keywords:["animal","nature","croak","toad"],char:"๐Ÿธ",category:"animals_and_nature"},octopus:{keywords:["animal","creature","ocean","sea","nature","beach"],char:"๐Ÿ™",category:"animals_and_nature"},monkey_face:{keywords:["animal","nature","circus"],char:"๐Ÿต",category:"animals_and_nature"},see_no_evil:{keywords:["monkey","animal","nature","haha"],char:"๐Ÿ™ˆ",category:"animals_and_nature"},hear_no_evil:{keywords:["animal","monkey","nature"],char:"๐Ÿ™‰",category:"animals_and_nature"},speak_no_evil:{keywords:["monkey","animal","nature","omg"],char:"๐Ÿ™Š",category:"animals_and_nature"},monkey:{keywords:["animal","nature","banana","circus"],char:"๐Ÿ’",category:"animals_and_nature"},chicken:{keywords:["animal","cluck","nature","bird"],char:"๐Ÿ”",category:"animals_and_nature"},penguin:{keywords:["animal","nature"],char:"๐Ÿง",category:"animals_and_nature"},bird:{keywords:["animal","nature","fly","tweet","spring"],char:"๐Ÿฆ",category:"animals_and_nature"},baby_chick:{keywords:["animal","chicken","bird"],char:"๐Ÿค",category:"animals_and_nature"},hatching_chick:{keywords:["animal","chicken","egg","born","baby","bird"],char:"๐Ÿฃ",category:"animals_and_nature"},hatched_chick:{keywords:["animal","chicken","baby","bird"],char:"๐Ÿฅ",category:"animals_and_nature"},wolf:{keywords:["animal","nature","wild"],char:"๐Ÿบ",category:"animals_and_nature"},boar:{keywords:["animal","nature"],char:"๐Ÿ—",category:"animals_and_nature"},horse:{keywords:["animal","brown","nature"],char:"๐Ÿด",category:"animals_and_nature"},unicorn_face:{keywords:["animal","nature","mystical"],char:"๐Ÿฆ„",category:"animals_and_nature"},bee:{keywords:["animal","insect","nature","bug","spring","honey"],char:"๐Ÿ",category:"animals_and_nature"},bug:{keywords:["animal","insect","nature","worm"],char:"๐Ÿ›",category:"animals_and_nature"},snail:{keywords:["slow","animal","shell"],char:"๐ŸŒ",category:"animals_and_nature"},beetle:{keywords:["animal","insect","nature","ladybug"],char:"๐Ÿž",category:"animals_and_nature"},ant:{keywords:["animal","insect","nature","bug"],char:"๐Ÿœ",category:"animals_and_nature"},spider:{keywords:["animal","arachnid"],char:"๐Ÿ•ท",category:"animals_and_nature"},scorpion:{keywords:["animal","arachnid"],char:"๐Ÿฆ‚",category:"animals_and_nature"},crab:{keywords:["animal","crustacean"],char:"๐Ÿฆ€",category:"animals_and_nature"},snake:{keywords:["animal","evil","nature","hiss","python"],char:"๐Ÿ",category:"animals_and_nature"},turtle:{keywords:["animal","slow","nature","tortoise"],char:"๐Ÿข",category:"animals_and_nature"},tropical_fish:{keywords:["animal","swim","ocean","beach","nemo"],char:"๐Ÿ ",category:"animals_and_nature"},fish:{keywords:["animal","food","nature"],char:"๐ŸŸ",category:"animals_and_nature"},blowfish:{keywords:["animal","nature","food","sea","ocean"],char:"๐Ÿก",category:"animals_and_nature"},dolphin:{keywords:["animal","nature","fish","sea","ocean","flipper","fins","beach"],char:"๐Ÿฌ",category:"animals_and_nature"},whale:{keywords:["animal","nature","sea","ocean"],char:"๐Ÿณ",category:"animals_and_nature"},whale2:{keywords:["animal","nature","sea","ocean"],char:"๐Ÿ‹",category:"animals_and_nature"},crocodile:{keywords:["animal","nature","reptile","lizard","alligator"],char:"๐ŸŠ",category:"animals_and_nature"},leopard:{keywords:["animal","nature"],char:"๐Ÿ†",category:"animals_and_nature"},tiger2:{keywords:["animal","nature","roar"],char:"๐Ÿ…",category:"animals_and_nature"},water_buffalo:{keywords:["animal","nature","ox","cow"],char:"๐Ÿƒ",category:"animals_and_nature"},ox:{keywords:["animal","cow","beef"],char:"๐Ÿ‚",category:"animals_and_nature"},cow2:{keywords:["beef","ox","animal","nature","moo","milk"],char:"๐Ÿ„",category:"animals_and_nature"},dromedary_camel:{keywords:["animal","hot","desert","hump"],char:"๐Ÿช",category:"animals_and_nature"},camel:{keywords:["animal","nature","hot","desert","hump"],char:"๐Ÿซ",category:"animals_and_nature"},elephant:{keywords:["animal","nature","nose","thailand","circus"],char:"๐Ÿ˜",category:"animals_and_nature"},goat:{keywords:["animal","nature"],char:"๐Ÿ",category:"animals_and_nature"},ram:{keywords:["animal","sheep","nature"],char:"๐Ÿ",category:"animals_and_nature"},sheep:{keywords:["animal","nature","wool","shipit"],char:"๐Ÿ‘",category:"animals_and_nature"},racehorse:{keywords:["animal","gamble","luck"],char:"๐ŸŽ",category:"animals_and_nature"},pig2:{keywords:["animal","nature"],char:"๐Ÿ–",category:"animals_and_nature"},rat:{keywords:["animal","mouse","rodent"],char:"๐Ÿ€",category:"animals_and_nature"},mouse2:{keywords:["animal","nature","rodent"],char:"๐Ÿ",category:"animals_and_nature"},rooster:{keywords:["animal","nature","chicken"],char:"๐Ÿ“",category:"animals_and_nature"},turkey:{keywords:["animal","bird"],char:"๐Ÿฆƒ",category:"animals_and_nature"},dove_of_peace:{keywords:["animal","bird"],char:"๐Ÿ•Š",category:"animals_and_nature"},dog2:{keywords:["animal","nature","friend","doge","pet","faithful"],char:"๐Ÿ•",category:"animals_and_nature"},poodle:{keywords:["dog","animal","101","nature","pet"],char:"๐Ÿฉ",category:"animals_and_nature"},cat2:{keywords:["animal","meow","pet","cats"],char:"๐Ÿˆ",category:"animals_and_nature"},rabbit2:{keywords:["animal","nature","pet","magic","spring"],char:"๐Ÿ‡",category:"animals_and_nature"},chipmunk:{keywords:["animal","nature","rodent","squirrel"],char:"๐Ÿฟ",category:"animals_and_nature"},feet:{keywords:["animal","tracking","footprints","dog","cat","pet","paw_prints"],char:"๐Ÿพ",category:"animals_and_nature"},dragon:{keywords:["animal","myth","nature","chinese","green"],char:"๐Ÿ‰",category:"animals_and_nature"},dragon_face:{keywords:["animal","myth","nature","chinese","green"],char:"๐Ÿฒ",category:"animals_and_nature"},cactus:{keywords:["vegetable","plant","nature"],char:"๐ŸŒต",category:"animals_and_nature"},christmas_tree:{keywords:["festival","vacation","december","xmas","celebration"],char:"๐ŸŽ„",category:"animals_and_nature"},evergreen_tree:{keywords:["plant","nature"],char:"๐ŸŒฒ",category:"animals_and_nature"},deciduous_tree:{keywords:["plant","nature"],char:"๐ŸŒณ",category:"animals_and_nature"},palm_tree:{keywords:["plant","vegetable","nature","summer","beach","mojito","tropical"],char:"๐ŸŒด",category:"animals_and_nature"},seedling:{keywords:["plant","nature","grass","lawn","spring"],char:"๐ŸŒฑ",category:"animals_and_nature"},herb:{keywords:["vegetable","plant","medicine","weed","grass","lawn"],char:"๐ŸŒฟ",category:"animals_and_nature"},shamrock:{keywords:["vegetable","plant","nature","irish","clover"],char:"โ˜˜",category:"animals_and_nature"},four_leaf_clover:{keywords:["vegetable","plant","nature","lucky","irish"],char:"๐Ÿ€",category:"animals_and_nature"},bamboo:{keywords:["plant","nature","vegetable","panda","pine_decoration"],char:"๐ŸŽ",category:"animals_and_nature"},tanabata_tree:{keywords:["plant","nature","branch","summer"],char:"๐ŸŽ‹",category:"animals_and_nature"},leaves:{keywords:["nature","plant","tree","vegetable","grass","lawn","spring"],char:"๐Ÿƒ",category:"animals_and_nature"},fallen_leaf:{keywords:["nature","plant","vegetable","leaves"],char:"๐Ÿ‚",category:"animals_and_nature"},maple_leaf:{keywords:["nature","plant","vegetable","canada","fall"],char:"๐Ÿ",category:"animals_and_nature"},ear_of_rice:{keywords:["nature","plant"],char:"๐ŸŒพ",category:"animals_and_nature"},hibiscus:{keywords:["plant","vegetable","flowers","beach"],char:"๐ŸŒบ",category:"animals_and_nature"},sunflower:{keywords:["nature","plant","fall"],char:"๐ŸŒป",category:"animals_and_nature"},rose:{keywords:["flowers","valentines","love","spring"],char:"๐ŸŒน",category:"animals_and_nature"},tulip:{keywords:["flowers","plant","nature","summer","spring"],char:"๐ŸŒท",category:"animals_and_nature"},blossom:{keywords:["nature","flowers","yellow"],char:"๐ŸŒผ",category:"animals_and_nature"},cherry_blossom:{keywords:["nature","plant","spring","flower"],char:"๐ŸŒธ",category:"animals_and_nature"},bouquet:{keywords:["flowers","nature","spring"],char:"๐Ÿ’",category:"animals_and_nature"},mushroom:{keywords:["plant","vegetable"],char:"๐Ÿ„",category:"animals_and_nature"},chestnut:{keywords:["food","squirrel"],char:"๐ŸŒฐ",category:"animals_and_nature"},jack_o_lantern:{keywords:["halloween","light","pumpkin","creepy","fall"],char:"๐ŸŽƒ",category:"animals_and_nature"},shell:{keywords:["nature","sea","beach"],char:"๐Ÿš",category:"animals_and_nature"},spider_web:{keywords:["animal","insect","arachnid","silk"],char:"๐Ÿ•ธ",category:"animals_and_nature"},earth_americas:{keywords:["globe","world","USA","international"],char:"๐ŸŒŽ",category:"animals_and_nature"},earth_africa:{keywords:["globe","world","international"],char:"๐ŸŒ",category:"animals_and_nature"},earth_asia:{keywords:["globe","world","east","international"],char:"๐ŸŒ",category:"animals_and_nature"},full_moon:{keywords:["nature","yellow","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒ•",category:"animals_and_nature"},waning_gibbous_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],char:"๐ŸŒ–",category:"animals_and_nature"},last_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒ—",category:"animals_and_nature"},waning_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒ˜",category:"animals_and_nature"},new_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒ‘",category:"animals_and_nature"},waxing_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒ’",category:"animals_and_nature"},first_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒ“",category:"animals_and_nature"},moon:{keywords:["nature","night","sky","gray","twilight","planet","space","evening","sleep"],char:"๐ŸŒ”",category:"animals_and_nature"},new_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒš",category:"animals_and_nature"},full_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒ",category:"animals_and_nature"},first_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒ›",category:"animals_and_nature"},last_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"๐ŸŒœ",category:"animals_and_nature"},sun_with_face:{keywords:["nature","morning","sky"],char:"๐ŸŒž",category:"animals_and_nature"},crescent_moon:{keywords:["night","sleep","sky","evening","magic"],char:"๐ŸŒ™",category:"animals_and_nature"},star:{keywords:["night","yellow"],char:"โญ",category:"animals_and_nature"},star2:{keywords:["night","sparkle","awesome","good","magic"],char:"๐ŸŒŸ",category:"animals_and_nature"},dizzy:{keywords:["star","sparkle","shoot","magic"],char:"๐Ÿ’ซ",category:"animals_and_nature"},sparkles:{keywords:["stars","shine","shiny","cool","awesome","good","magic"],char:"โœจ",category:"animals_and_nature"},comet:{keywords:["space"],char:"โ˜„",category:"animals_and_nature"},sunny:{keywords:["weather","nature","brightness","summer","beach","spring"],char:"โ˜€๏ธ",category:"animals_and_nature"},white_sun_with_small_cloud:{keywords:["weather"],char:"๐ŸŒค",category:"animals_and_nature"},partly_sunny:{keywords:["weather","nature","cloudy","morning","fall","spring"],char:"โ›…",category:"animals_and_nature"},white_sun_behind_cloud:{keywords:["weather"],char:"๐ŸŒฅ",category:"animals_and_nature"},white_sun_behind_cloud_with_rain:{keywords:["weather"],char:"๐ŸŒฆ",category:"animals_and_nature"},cloud:{keywords:["weather","sky"],char:"โ˜๏ธ",category:"animals_and_nature"},cloud_with_rain:{keywords:["weather"],char:"๐ŸŒง",category:"animals_and_nature"},thunder_cloud_and_rain:{keywords:["weather","lightning"],char:"โ›ˆ",category:"animals_and_nature"},cloud_with_lightning:{keywords:["weather","thunder"],char:"๐ŸŒฉ",category:"animals_and_nature"},zap:{keywords:["thunder","weather","lightning bolt","fast"],char:"โšก",category:"animals_and_nature"},fire:{keywords:["hot","cook","flame"],char:"๐Ÿ”ฅ",category:"animals_and_nature"},boom:{keywords:["bomb","explode","explosion","collision","blown"],char:"๐Ÿ’ฅ",category:"animals_and_nature"},snowflake:{keywords:["winter","season","cold","weather","christmas","xmas"],char:"โ„๏ธ",category:"animals_and_nature"},cloud_with_snow:{keywords:["weather"],char:"๐ŸŒจ",category:"animals_and_nature"},snowman:{keywords:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],char:"โ›„",category:"animals_and_nature"},snowman_with_snow:{keywords:["winter","season","cold","weather","christmas","xmas","frozen"],char:"โ˜ƒ",category:"animals_and_nature"},wind_blowing_face:{keywords:["gust","air"],char:"๐ŸŒฌ",category:"animals_and_nature"},dash:{keywords:["wind","air","fast","shoo","fart","smoke","puff"],char:"๐Ÿ’จ",category:"animals_and_nature"},cloud_with_tornado:{keywords:["weather","cyclone","twister"],char:"๐ŸŒช",category:"animals_and_nature"},fog:{keywords:["weather"],char:"๐ŸŒซ",category:"animals_and_nature"},umbrella_without_rain:{keywords:["weather","spring"],char:"โ˜‚",category:"animals_and_nature"},umbrella:{keywords:["rainy","weather","spring"],char:"โ˜”",category:"animals_and_nature"},droplet:{keywords:["water","drip","faucet","spring"],char:"๐Ÿ’ง",category:"animals_and_nature"},sweat_drops:{keywords:["water","drip","oops"],char:"๐Ÿ’ฆ",category:"animals_and_nature"},ocean:{keywords:["sea","water","wave","nature","tsunami","disaster"],char:"๐ŸŒŠ",category:"animals_and_nature"},green_apple:{keywords:["fruit","nature"],char:"๐Ÿ",category:"food_and_drink"},apple:{keywords:["fruit","mac","school"],char:"๐ŸŽ",category:"food_and_drink"},pear:{keywords:["fruit","nature","food"],char:"๐Ÿ",category:"food_and_drink"},tangerine:{keywords:["food","fruit","nature","orange"],char:"๐ŸŠ",category:"food_and_drink"},lemon:{keywords:["fruit","nature"],char:"๐Ÿ‹",category:"food_and_drink"},banana:{keywords:["fruit","food","monkey"],char:"๐ŸŒ",category:"food_and_drink"},watermelon:{keywords:["fruit","food","picnic","summer"],char:"๐Ÿ‰",category:"food_and_drink"},grapes:{keywords:["fruit","food","wine"],char:"๐Ÿ‡",category:"food_and_drink"},strawberry:{keywords:["fruit","food","nature"],char:"๐Ÿ“",category:"food_and_drink"},melon:{keywords:["fruit","nature","food"],char:"๐Ÿˆ",category:"food_and_drink"},cherries:{keywords:["food","fruit"],char:"๐Ÿ’",category:"food_and_drink"},peach:{keywords:["fruit","nature","food"],char:"๐Ÿ‘",category:"food_and_drink"},pineapple:{keywords:["fruit","nature","food"],char:"๐Ÿ",category:"food_and_drink"},tomato:{keywords:["fruit","vegetable","nature","food"],char:"๐Ÿ…",category:"food_and_drink"},eggplant:{keywords:["vegetable","nature","food","aubergine"],char:"๐Ÿ†",category:"food_and_drink"},hot_pepper:{keywords:["food","spicy","chilli","chili"],char:"๐ŸŒถ",category:"food_and_drink"},corn:{keywords:["food","vegetable","plant"],char:"๐ŸŒฝ",category:"food_and_drink"},sweet_potato:{keywords:["food","nature"],char:"๐Ÿ ",category:"food_and_drink"},honey_pot:{keywords:["bees","sweet","kitchen"],char:"๐Ÿฏ",category:"food_and_drink"},bread:{keywords:["food","wheat","breakfast","toast"],char:"๐Ÿž",category:"food_and_drink"},cheese_wedge:{keywords:["food","chadder"],char:"๐Ÿง€",category:"food_and_drink"},poultry_leg:{keywords:["food","meat","drumstick","bird","chicken","turkey"],char:"๐Ÿ—",category:"food_and_drink"},meat_on_bone:{keywords:["good","food","drumstick"],char:"๐Ÿ–",category:"food_and_drink"},fried_shrimp:{keywords:["food","animal","appetizer","summer"],char:"๐Ÿค",category:"food_and_drink"},egg:{keywords:["food","breakfast","kitchen"],char:"๐Ÿณ",category:"food_and_drink"},hamburger:{keywords:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],char:"๐Ÿ”",category:"food_and_drink"},fries:{keywords:["chips","snack","fast food"],char:"๐ŸŸ",category:"food_and_drink"},hot_dog:{keywords:["food","frankfurter","hotdog"],char:"๐ŸŒญ",category:"food_and_drink"},pizza:{keywords:["food","party"],char:"๐Ÿ•",category:"food_and_drink"},spaghetti:{keywords:["food","italian","noodle"],char:"๐Ÿ",category:"food_and_drink"},taco:{keywords:["food","mexican"],char:"๐ŸŒฎ",category:"food_and_drink"},burrito:{keywords:["food","mexican"],char:"๐ŸŒฏ",category:"food_and_drink"},ramen:{keywords:["food","japanese","noodle","chopsticks"],char:"๐Ÿœ",category:"food_and_drink"},stew:{keywords:["food","meat","soup"],char:"๐Ÿฒ",category:"food_and_drink"},fish_cake:{keywords:["food","japan","sea","beach"],char:"๐Ÿฅ",category:"food_and_drink"},sushi:{keywords:["food","fish","japanese","rice"],char:"๐Ÿฃ",category:"food_and_drink"},bento:{keywords:["food","japanese","box"],char:"๐Ÿฑ",category:"food_and_drink"},curry:{keywords:["food","spicy","hot","indian"],char:"๐Ÿ›",category:"food_and_drink"},rice_ball:{keywords:["food","japanese"],char:"๐Ÿ™",category:"food_and_drink"},rice:{keywords:["food","china","asian"],char:"๐Ÿš",category:"food_and_drink"},rice_cracker:{keywords:["food","japanese"],char:"๐Ÿ˜",category:"food_and_drink"},oden:{keywords:["food","japanese"],char:"๐Ÿข",category:"food_and_drink"},dango:{keywords:["food","dessert","sweet","japanese","barbecue","meat"],char:"๐Ÿก",category:"food_and_drink"},shaved_ice:{keywords:["hot","dessert","summer"],char:"๐Ÿง",category:"food_and_drink"},ice_cream:{keywords:["food","hot","dessert"],char:"๐Ÿจ",category:"food_and_drink"},icecream:{keywords:["food","hot","dessert","summer"],char:"๐Ÿฆ",category:"food_and_drink"},cake:{keywords:["food","dessert"],char:"๐Ÿฐ",category:"food_and_drink"},birthday:{keywords:["food","dessert","cake"],char:"๐ŸŽ‚",category:"food_and_drink"},custard:{keywords:["dessert","food"],char:"๐Ÿฎ",category:"food_and_drink"},candy:{keywords:["snack","dessert","sweet","lolly"],char:"๐Ÿฌ",category:"food_and_drink"},lollipop:{keywords:["food","snack","candy","sweet"],char:"๐Ÿญ",category:"food_and_drink"},chocolate_bar:{keywords:["food","snack","dessert","sweet"],char:"๐Ÿซ",category:"food_and_drink"},popcorn:{keywords:["food","movie theater","films","snack"],char:"๐Ÿฟ",category:"food_and_drink"},doughnut:{keywords:["food","dessert","snack","sweet","donut"],char:"๐Ÿฉ",category:"food_and_drink"},cookie:{keywords:["food","snack","oreo","chocolate","sweet","dessert"],char:"๐Ÿช",category:"food_and_drink"},beer:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],char:"๐Ÿบ",category:"food_and_drink"},beers:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],char:"๐Ÿป",category:"food_and_drink"},wine_glass:{keywords:["drink","beverage","drunk","alcohol","booze"],char:"๐Ÿท",category:"food_and_drink"},cocktail:{keywords:["drink","drunk","alcohol","beverage","booze","mojito"],char:"๐Ÿธ",category:"food_and_drink"},tropical_drink:{keywords:["beverage","cocktail","summer","beach","alcohol","booze","mojito"],char:"๐Ÿน",category:"food_and_drink"},bottle:{keywords:["drink","wine","champagne"],char:"๐Ÿพ",category:"food_and_drink"},sake:{keywords:["wine","drink","drunk","beverage","japanese","alcohol","booze"],char:"๐Ÿถ",category:"food_and_drink"},tea:{keywords:["drink","bowl","breakfast","green","british"],char:"๐Ÿต",category:"food_and_drink"},coffee:{keywords:["beverage","caffeine","latte","espresso"],char:"โ˜•",category:"food_and_drink"},baby_bottle:{keywords:["food","container","milk"],char:"๐Ÿผ",category:"food_and_drink"},fork_and_knife:{keywords:["cutlery","kitchen"],char:"๐Ÿด",category:"food_and_drink"},fork_and_knife_with_plate:{keywords:["food","eat","meal","lunch","dinner","restaurant"],char:"๐Ÿฝ",category:"food_and_drink"},soccer:{keywords:["sports","football"],char:"โšฝ",category:"activity"},basketball:{keywords:["sports","balls","NBA"],char:"๐Ÿ€",category:"activity"},football:{keywords:["sports","balls","NFL"],char:"๐Ÿˆ",category:"activity"},baseball:{keywords:["sports","balls"],char:"โšพ",category:"activity"},tennis:{keywords:["sports","balls","green"],char:"๐ŸŽพ",category:"activity"},volleyball:{keywords:["sports","balls"],char:"๐Ÿ",category:"activity"},rugby_football:{keywords:["sports","team"],char:"๐Ÿ‰",category:"activity"},"8ball":{keywords:["pool","hobby","game","luck","magic"],char:"๐ŸŽฑ",category:"activity"},golf:{keywords:["sports","business","flag","hole","summer"],char:"โ›ณ",category:"activity"},golfer:{keywords:["sports","business"],char:"๐ŸŒ",category:"activity"},table_tennis:{keywords:["sports","pingpong"],char:"๐Ÿ“",category:"activity"},badminton:{keywords:["sports"],char:"๐Ÿธ",category:"activity"},ice_hockey:{keywords:["sports"],char:"๐Ÿ’",category:"activity"},field_hockey:{keywords:["sports"],char:"๐Ÿ‘",category:"activity"},cricket:{keywords:["sports"],char:"๐Ÿ",category:"activity"},ski:{keywords:["sports","winter","cold","snow"],char:"๐ŸŽฟ",category:"activity"},skier:{keywords:["sports","winter","snow"],char:"โ›ท",category:"activity"},snowboarder:{keywords:["sports","winter"],char:"๐Ÿ‚",category:"activity"},ice_skate:{keywords:["sports"],char:"โ›ธ",category:"activity"},bow_and_arrow:{keywords:["sports"],char:"๐Ÿน",category:"activity"},fishing_pole_and_fish:{keywords:["food","hobby","summer"],char:"๐ŸŽฃ",category:"activity"},rowboat:{keywords:["sports","hobby","water","ship"],char:"๐Ÿšฃ",category:"activity"},swimmer:{keywords:["sports","exercise","human","athlete","water","summer"],char:"๐ŸŠ",category:"activity"},surfer:{keywords:["sports","ocean","sea","summer","beach"],char:"๐Ÿ„",category:"activity"},bath:{keywords:["clean","shower","bathroom"],char:"๐Ÿ›€",category:"activity"},person_with_ball:{keywords:["sports","human"],char:"โ›น",category:"activity"},weight_lifter:{keywords:["sports","training","exercise"],char:"๐Ÿ‹",category:"activity"},bicyclist:{keywords:["sports","bike","exercise","hipster"],char:"๐Ÿšด",category:"activity"},mountain_bicyclist:{keywords:["transportation","sports","human","race","bike"],char:"๐Ÿšต",category:"activity"},horse_racing:{keywords:["animal","betting","competition","gambling","luck"],char:"๐Ÿ‡",category:"activity"},man_levitating:{keywords:["suit","business","levitate","hover","jump"],char:"๐Ÿ•ด",category:"activity"},trophy:{keywords:["win","award","contest","place","ftw","ceremony"],char:"๐Ÿ†",category:"activity"},running_shirt_with_sash:{keywords:["play","pageant"],char:"๐ŸŽฝ",category:"activity"},sports_medal:{keywords:["award","winning"],char:"๐Ÿ…",category:"activity"},military_medal:{keywords:["award","winning","army"],char:"๐ŸŽ–",category:"activity"},reminder_ribbon:{keywords:["sports","cause","support","awareness"],char:"๐ŸŽ—",category:"activity"},rosette:{keywords:["flower","decoration","military"],char:"๐Ÿต",category:"activity"},ticket:{keywords:["event","concert","pass"],char:"๐ŸŽซ",category:"activity"},admission_ticket:{keywords:["sports","concert","entrance"],char:"๐ŸŽŸ",category:"activity"},performing_arts:{keywords:["acting","theater","drama"],char:"๐ŸŽญ",category:"activity"},art:{keywords:["design","paint","draw","colors"],char:"๐ŸŽจ",category:"activity"},circus_tent:{keywords:["festival","carnival","party"],char:"๐ŸŽช",category:"activity"},microphone:{keywords:["sound","music","PA"],char:"๐ŸŽค",category:"activity"},headphones:{keywords:["music","score","gadgets"],char:"๐ŸŽง",category:"activity"},musical_score:{keywords:["treble","clef"],char:"๐ŸŽผ",category:"activity"},musical_keyboard:{keywords:["piano","instrument"],char:"๐ŸŽน",category:"activity"},saxophone:{keywords:["music","instrument","jazz","blues"],char:"๐ŸŽท",category:"activity"},trumpet:{keywords:["music","brass"],char:"๐ŸŽบ",category:"activity"},guitar:{keywords:["music","instrument"],char:"๐ŸŽธ",category:"activity"},violin:{keywords:["music","instrument","orchestra","symphony"],char:"๐ŸŽป",category:"activity"},clapper:{keywords:["movie","film","record"],char:"๐ŸŽฌ",category:"activity"},video_game:{keywords:["play","console","PS4","controller"],char:"๐ŸŽฎ",category:"activity"},space_invader:{keywords:["game","arcade","play"],char:"๐Ÿ‘พ",category:"activity"},dart:{keywords:["game","play","bar"],char:"๐ŸŽฏ",category:"activity"},game_die:{keywords:["dice","random","tabletop","play","luck"],char:"๐ŸŽฒ",category:"activity"},slot_machine:{keywords:["bet","gamble","vegas","fruit machine","luck","casino"],char:"๐ŸŽฐ",category:"activity"},bowling:{keywords:["sports","fun","play"],char:"๐ŸŽณ",category:"activity"},car:{keywords:["red","transportation","vehicle"],char:"๐Ÿš—",category:"travel_and_places"},taxi:{keywords:["uber","vehicle","cars","transportation"],char:"๐Ÿš•",category:"travel_and_places"},blue_car:{keywords:["transportation","vehicle"],char:"๐Ÿš™",category:"travel_and_places"},bus:{keywords:["car","vehicle","transportation"],char:"๐ŸšŒ",category:"travel_and_places"},trolleybus:{keywords:["bart","transportation","vehicle"],char:"๐ŸšŽ",category:"travel_and_places"},racing_car:{keywords:["sports","race","fast","formula","f1"],char:"๐ŸŽ",category:"travel_and_places"},police_car:{keywords:["vehicle","cars","transportation","law","legal","enforcement"],char:"๐Ÿš“",category:"travel_and_places"},ambulance:{keywords:["health","911","hospital"],char:"๐Ÿš‘",category:"travel_and_places"},fire_engine:{keywords:["transportation","cars","vehicle"],char:"๐Ÿš’",category:"travel_and_places"},minibus:{keywords:["vehicle","car","transportation"],char:"๐Ÿš",category:"travel_and_places"},truck:{keywords:["cars","transportation"],char:"๐Ÿšš",category:"travel_and_places"},articulated_lorry:{keywords:["vehicle","cars","transportation","express"],char:"๐Ÿš›",category:"travel_and_places"},tractor:{keywords:["vehicle","car","farming","agriculture"],char:"๐Ÿšœ",category:"travel_and_places"},racing_motorcycle:{keywords:["race","sports","fast"],char:"๐Ÿ",category:"travel_and_places"},bike:{keywords:["sports","bicycle","exercise","hipster"],char:"๐Ÿšฒ",category:"travel_and_places"},rotating_light:{keywords:["police","ambulance","911","emergency","alert","error","pinged","law","legal"],char:"๐Ÿšจ",category:"travel_and_places"},oncoming_police_car:{keywords:["vehicle","law","legal","enforcement","911"],char:"๐Ÿš”",category:"travel_and_places"},oncoming_bus:{keywords:["vehicle","transportation"],char:"๐Ÿš",category:"travel_and_places"},oncoming_automobile:{keywords:["car","vehicle","transportation"],char:"๐Ÿš˜",category:"travel_and_places"},oncoming_taxi:{keywords:["vehicle","cars","uber"],char:"๐Ÿš–",category:"travel_and_places"},aerial_tramway:{keywords:["transportation","vehicle","ski"],char:"๐Ÿšก",category:"travel_and_places"},mountain_cableway:{keywords:["transportation","vehicle","ski"],char:"๐Ÿš ",category:"travel_and_places"},suspension_railway:{keywords:["vehicle","transportation"],char:"๐ŸšŸ",category:"travel_and_places"},railway_car:{keywords:["transportation","vehicle"],char:"๐Ÿšƒ",category:"travel_and_places"},train:{keywords:["transportation","vehicle","carriage","public","travel"],char:"๐Ÿš‹",category:"travel_and_places"},monorail:{keywords:["transportation","vehicle"],char:"๐Ÿš",category:"travel_and_places"},bullettrain_side:{keywords:["transportation","vehicle"],char:"๐Ÿš„",category:"travel_and_places"},bullettrain_front:{keywords:["transportation","vehicle","speed","fast","public","travel"],char:"๐Ÿš…",category:"travel_and_places"},light_rail:{keywords:["transportation","vehicle"],char:"๐Ÿšˆ",category:"travel_and_places"},mountain_railway:{keywords:["transportation","vehicle"],char:"๐Ÿšž",category:"travel_and_places"},steam_locomotive:{keywords:["transportation","vehicle","train"],char:"๐Ÿš‚",category:"travel_and_places"},train2:{keywords:["transportation","vehicle"],char:"๐Ÿš†",category:"travel_and_places"},metro:{keywords:["transportation","blue-square","mrt","underground","tube"],char:"๐Ÿš‡",category:"travel_and_places"},tram:{keywords:["transportation","vehicle"],char:"๐ŸšŠ",category:"travel_and_places"},station:{keywords:["transportation","vehicle","public"],char:"๐Ÿš‰",category:"travel_and_places"},helicopter:{keywords:["transportation","vehicle","fly"],char:"๐Ÿš",category:"travel_and_places"},small_airplane:{keywords:["flight","transportation","fly","vehicle"],char:"๐Ÿ›ฉ",category:"travel_and_places"},airplane:{keywords:["vehicle","transportation","flight","fly"],char:"โœˆ๏ธ",category:"travel_and_places"},airplane_departure:{keywords:["airport","flight","landing"],char:"๐Ÿ›ซ",category:"travel_and_places"},airplane_arrival:{keywords:["airport","flight","boarding"],char:"๐Ÿ›ฌ",category:"travel_and_places"},boat:{keywords:["ship","summer","transportation","water","sailing","sailboat"],char:"โ›ต",category:"travel_and_places"},motor_boat:{keywords:["ship"],char:"๐Ÿ›ฅ",category:"travel_and_places"},speedboat:{keywords:["ship","transportation","vehicle","summer"],char:"๐Ÿšค",category:"travel_and_places"},ferry:{keywords:["boat","ship","yacht"],char:"โ›ด",category:"travel_and_places"},passenger_ship:{keywords:["yacht","cruise","ferry"],char:"๐Ÿ›ณ",category:"travel_and_places"},rocket:{keywords:["launch","ship","staffmode","NASA","outer space","outer_space","fly"],char:"๐Ÿš€",category:"travel_and_places"},artificial_satellite:{keywords:["communication","gps","orbit","spaceflight","NASA","ISS"],char:"๐Ÿ›ฐ",category:"travel_and_places"},seat:{keywords:["sit","airplane","transport","bus","flight","fly"],char:"๐Ÿ’บ",category:"travel_and_places"},anchor:{keywords:["ship","ferry","sea","boat"],char:"โš“",category:"travel_and_places"},construction:{keywords:["wip","progress","caution","warning"],char:"๐Ÿšง",category:"travel_and_places"},fuelpump:{keywords:["gas station","petroleum"],char:"โ›ฝ",category:"travel_and_places"},busstop:{keywords:["transportation","wait"],char:"๐Ÿš",category:"travel_and_places"},vertical_traffic_light:{keywords:["transportation","driving"],char:"๐Ÿšฆ",category:"travel_and_places"},traffic_light:{keywords:["transportation","signal"],char:"๐Ÿšฅ",category:"travel_and_places"},checkered_flag:{keywords:["contest","finishline","race","gokart"],char:"๐Ÿ",category:"travel_and_places"},ship:{keywords:["transportation","titanic","deploy"],char:"๐Ÿšข",category:"travel_and_places"},ferris_wheel:{keywords:["photo","carnival","londoneye"],char:"๐ŸŽก",category:"travel_and_places"},roller_coaster:{keywords:["carnival","playground","photo","fun"],char:"๐ŸŽข",category:"travel_and_places"},carousel_horse:{keywords:["photo","carnival"],char:"๐ŸŽ ",category:"travel_and_places"},building_construction:{keywords:["wip","working","progress"],char:"๐Ÿ—",category:"travel_and_places"},foggy:{keywords:["photo","mountain"],char:"๐ŸŒ",category:"travel_and_places"},tokyo_tower:{keywords:["photo","japanese"],char:"๐Ÿ—ผ",category:"travel_and_places"},factory:{keywords:["building","industry","pollution","smoke"],char:"๐Ÿญ",category:"travel_and_places"},fountain:{keywords:["photo","summer","water","fresh"],char:"โ›ฒ",category:"travel_and_places"},rice_scene:{keywords:["photo","japan","asia","tsukimi"],char:"๐ŸŽ‘",category:"travel_and_places"},mountain:{keywords:["photo","nature","environment"],char:"โ›ฐ",category:"travel_and_places"},snow_capped_mountain:{keywords:["photo","nature","environment","winter","cold"],char:"๐Ÿ”",category:"travel_and_places"},mount_fuji:{keywords:["photo","mountain","nature","japanese"],char:"๐Ÿ—ป",category:"travel_and_places"},volcano:{keywords:["photo","nature","disaster"],char:"๐ŸŒ‹",category:"travel_and_places"},japan:{keywords:["nation","country","japanese","asia"],char:"๐Ÿ—พ",category:"travel_and_places"},camping:{keywords:["photo","outdoors","tent"],char:"๐Ÿ•",category:"travel_and_places"},tent:{keywords:["photo","camping","outdoors"],char:"โ›บ",category:"travel_and_places"},national_park:{keywords:["photo","environment","nature"],char:"๐Ÿž",category:"travel_and_places"},motorway:{keywords:["road","cupertino","interstate","highway"],char:"๐Ÿ›ฃ",category:"travel_and_places"},railway_track:{keywords:["train","transportation"],char:"๐Ÿ›ค",category:"travel_and_places"},sunrise:{keywords:["morning","view","vacation","photo"],char:"๐ŸŒ…",category:"travel_and_places"},sunrise_over_mountains:{keywords:["view","vacation","photo"],char:"๐ŸŒ„",category:"travel_and_places"},desert:{keywords:["photo","warm","saharah"],char:"๐Ÿœ",category:"travel_and_places"},beach_with_umbrella:{keywords:["weather","summer","sunny","sand","mojito"],char:"๐Ÿ–",category:"travel_and_places"},desert_island:{keywords:["photo","tropical","mojito"],char:"๐Ÿ",category:"travel_and_places"},city_sunrise:{keywords:["photo","good morning","dawn"],char:"๐ŸŒ‡",category:"travel_and_places"},city_sunset:{keywords:["photo","evening","sky","buildings"],char:"๐ŸŒ†",category:"travel_and_places"},cityscape:{keywords:["photo","night life","urban"],char:"๐Ÿ™",category:"travel_and_places"},night_with_stars:{keywords:["evening","city","downtown"],char:"๐ŸŒƒ",category:"travel_and_places"},bridge_at_night:{keywords:["photo","sanfrancisco"],char:"๐ŸŒ‰",category:"travel_and_places"},milky_way:{keywords:["photo","space","stars"],char:"๐ŸŒŒ",category:"travel_and_places"},stars:{keywords:["night","photo"],char:"๐ŸŒ ",category:"travel_and_places"},sparkler:{keywords:["stars","night","shine"],char:"๐ŸŽ‡",category:"travel_and_places"},fireworks:{keywords:["photo","festival","carnival","congratulations"],char:"๐ŸŽ†",category:"travel_and_places"},rainbow:{keywords:["nature","happy","unicorn","photo","sky","spring"],char:"๐ŸŒˆ",category:"travel_and_places"},buildings:{keywords:["houses","photo"],char:"๐Ÿ˜",category:"travel_and_places"},european_castle:{keywords:["building","royalty","history"],char:"๐Ÿฐ",category:"travel_and_places"},japanese_castle:{keywords:["photo","building"],char:"๐Ÿฏ",category:"travel_and_places"},stadium:{keywords:["photo","place","sports","concert","venue"],char:"๐ŸŸ",category:"travel_and_places"},statue_of_liberty:{keywords:["american","newyork"],char:"๐Ÿ—ฝ",category:"travel_and_places"},house:{keywords:["building","home"],char:"๐Ÿ ",category:"travel_and_places"},house_with_garden:{keywords:["home","plant","nature"],char:"๐Ÿก",category:"travel_and_places"},derelict_house:{keywords:["abandon","evict","broken","building"],char:"๐Ÿš",category:"travel_and_places"},office:{keywords:["building","bureau","work"],char:"๐Ÿข",category:"travel_and_places"},department_store:{keywords:["building","shopping","mall"],char:"๐Ÿฌ",category:"travel_and_places"},post_office:{keywords:["building","email","communication"],char:"๐Ÿฃ",category:"travel_and_places"},european_post_office:{keywords:["building","email"],char:"๐Ÿค",category:"travel_and_places"},hospital:{keywords:["building","health","surgery","doctor"],char:"๐Ÿฅ",category:"travel_and_places"},bank:{keywords:["building","money","sales","cash","business","enterprise"],char:"๐Ÿฆ",category:"travel_and_places"},hotel:{keywords:["building","accomodation","checkin"],char:"๐Ÿจ",category:"travel_and_places"},convenience_store:{keywords:["building","shopping","groceries"],char:"๐Ÿช",category:"travel_and_places"},school:{keywords:["building","student","education","learn","teach"],char:"๐Ÿซ",category:"travel_and_places"},love_hotel:{keywords:["like","affection","dating"],char:"๐Ÿฉ",category:"travel_and_places"},wedding:{keywords:["love","like","affection","couple","marriage","bride","groom"],char:"๐Ÿ’’",category:"travel_and_places"},museum:{keywords:["art","culture","history"],char:"๐Ÿ›",category:"travel_and_places"},church:{keywords:["building","religion","christ"],char:"โ›ช",category:"travel_and_places"},mosque:{keywords:["islam","worship","minaret"],char:"๐Ÿ•Œ",category:"travel_and_places"},synagogue:{keywords:["judaism","worship","temple","jewish"],char:"๐Ÿ•",category:"travel_and_places"},kaaba:{keywords:["mecca","mosque","islam"],char:"๐Ÿ•‹",category:"travel_and_places"},shinto_shrine:{keywords:["temple","japan","kyoto"],char:"โ›ฉ",category:"travel_and_places"},watch:{keywords:["time","accessories"],char:"โŒš",category:"objects"},iphone:{keywords:["technology","apple","gadgets","dial"],char:"๐Ÿ“ฑ",category:"objects"},calling:{keywords:["iphone","incoming"],char:"๐Ÿ“ฒ",category:"objects"},computer:{keywords:["technology","laptop","screen","display","monitor"],char:"๐Ÿ’ป",category:"objects"},keyboard:{keywords:["technology","computer","type","input","text"],char:"โŒจ",category:"objects"},desktop_computer:{keywords:["technology","computing","screen"],char:"๐Ÿ–ฅ",category:"objects"},printer:{keywords:["paper","ink"],char:"๐Ÿ–จ",category:"objects"},three_button_mouse:{keywords:["click"],char:"๐Ÿ–ฑ",category:"objects"},trackball:{keywords:["technology","trackpad"],char:"๐Ÿ–ฒ",category:"objects"},joystick:{keywords:["game","play"],char:"๐Ÿ•น",category:"objects"},compression:{keywords:["tool"],char:"๐Ÿ—œ",category:"objects"},minidisc:{keywords:["technology","record","data","disk","90s"],char:"๐Ÿ’ฝ",category:"objects"},floppy_disk:{keywords:["oldschool","technology","save","90s","80s"],char:"๐Ÿ’พ",category:"objects"},cd:{keywords:["technology","dvd","disk","disc","90s"],char:"๐Ÿ’ฟ",category:"objects"},dvd:{keywords:["cd","disk","disc"],char:"๐Ÿ“€",category:"objects"},vhs:{keywords:["record","video","oldschool","90s","80s"],char:"๐Ÿ“ผ",category:"objects"},camera:{keywords:["gadgets","photography"],char:"๐Ÿ“ท",category:"objects"},camera_with_flash:{keywords:["photography","gadgets"],char:"๐Ÿ“ธ",category:"objects"},video_camera:{keywords:["film","record"],char:"๐Ÿ“น",category:"objects"},movie_camera:{keywords:["film","record"],char:"๐ŸŽฅ",category:"objects"},film_projector:{keywords:["video","tape","record","movie"],char:"๐Ÿ“ฝ",category:"objects"},film_frames:{keywords:["movie"],char:"๐ŸŽž",category:"objects"},telephone_receiver:{keywords:["technology","communication","dial"],char:"๐Ÿ“ž",category:"objects"},phone:{keywords:["technology","communication","dial","telephone"],char:"โ˜Ž๏ธ",category:"objects"},pager:{keywords:["bbcall","oldschool","90s"],char:"๐Ÿ“Ÿ",category:"objects"},fax:{keywords:["communication","technology"],char:"๐Ÿ“ ",category:"objects"},tv:{keywords:["technology","program","oldschool","show","television"],char:"๐Ÿ“บ",category:"objects"},radio:{keywords:["communication","music","podcast","program"],char:"๐Ÿ“ป",category:"objects"},studio_microphone:{keywords:["singer","recording","artist"],char:"๐ŸŽ™",category:"objects"},level_slider:{keywords:["scale"],char:"๐ŸŽš",category:"objects"},control_knobs:{keywords:["dial"],char:"๐ŸŽ›",category:"objects"},stopwatch:{keywords:["time","deadline"],char:"โฑ",category:"objects"},timer_clock:{keywords:["alarm"],char:"โฒ",category:"objects"},alarm_clock:{keywords:["time","wake"],char:"โฐ",category:"objects"},mantelpiece_clock:{keywords:["time"],char:"๐Ÿ•ฐ",category:"objects"},hourglass_flowing_sand:{keywords:["oldschool","time","countdown"],char:"โณ",category:"objects"},hourglass:{keywords:["time","clock","oldschool","limit","exam","quiz","test"],char:"โŒ›",category:"objects"},satellite:{keywords:["communication","future","radio","space"],char:"๐Ÿ“ก",category:"objects"},battery:{keywords:["power","energy","sustain"],char:"๐Ÿ”‹",category:"objects"},electric_plug:{keywords:["charger","power"],char:"๐Ÿ”Œ",category:"objects"},bulb:{keywords:["light","electricity","idea"],char:"๐Ÿ’ก",category:"objects"},flashlight:{keywords:["dark","camping","sight","night"],char:"๐Ÿ”ฆ",category:"objects"},candle:{keywords:["fire","wax"],char:"๐Ÿ•ฏ",category:"objects"},wastebasket:{keywords:["bin","trash","rubbish","garbage","toss"],char:"๐Ÿ—‘",category:"objects"},oil_drum:{keywords:["barrell"],char:"๐Ÿ›ข",category:"objects"},money_with_wings:{keywords:["dollar","bills","payment","sale"],char:"๐Ÿ’ธ",category:"objects"},dollar:{keywords:["money","sales","bill","currency"],char:"๐Ÿ’ต",category:"objects"},yen:{keywords:["money","sales","japanese","dollar","currency"],char:"๐Ÿ’ด",category:"objects"},euro:{keywords:["money","sales","dollar","currency"],char:"๐Ÿ’ถ",category:"objects"},pound:{keywords:["british","sterling","money","sales","bills","uk","england","currency"],char:"๐Ÿ’ท",category:"objects"},moneybag:{keywords:["dollar","payment","coins","sale"],char:"๐Ÿ’ฐ",category:"objects"},credit_card:{keywords:["money","sales","dollar","bill","payment","shopping"],char:"๐Ÿ’ณ",category:"objects"},gem:{keywords:["blue","ruby","diamond","jewelry"],char:"๐Ÿ’Ž",category:"objects"},scales:{keywords:["law","fairness","weight"],char:"โš–",category:"objects"},wrench:{keywords:["tools","diy","ikea","fix","maintainer"],char:"๐Ÿ”ง",category:"objects"},hammer:{keywords:["tools","build","create"],char:"๐Ÿ”จ",category:"objects"},hammer_and_pick:{keywords:["tools","build","create"],char:"โš’",category:"objects"},hammer_and_wrench:{keywords:["tools","build","create"],char:"๐Ÿ› ",category:"objects"},pick:{keywords:["tools","dig"],char:"โ›",category:"objects"},nut_and_bolt:{keywords:["handy","tools","fix"],char:"๐Ÿ”ฉ",category:"objects"},gear:{keywords:["cog"],char:"โš™",category:"objects"},chains:{keywords:["lock","arrest"],char:"โ›“",category:"objects"},gun:{keywords:["violence","weapon","pistol","revolver"],char:"๐Ÿ”ซ",category:"objects"},bomb:{keywords:["boom","explode","explosion","terrorism"],char:"๐Ÿ’ฃ",category:"objects"},hocho:{keywords:["knife","blade","cutlery","kitchen","weapon"],char:"๐Ÿ”ช",category:"objects"},dagger_knife:{keywords:["weapon"],char:"๐Ÿ—ก",category:"objects"},crossed_swords:{keywords:["weapon"],char:"โš”",category:"objects"},shield:{keywords:["protection","security"],char:"๐Ÿ›ก",category:"objects"},smoking:{keywords:["kills","tobacco","cigarette","joint","smoke"],char:"๐Ÿšฌ",category:"objects"},skull_and_crossbones:{keywords:["poison","danger","deadly","scary"],char:"โ˜ ",category:"objects"},coffin:{keywords:["vampire","dead","die","death","rip","graveyard","cemetery"],char:"โšฐ",category:"objects"},funeral_urn:{keywords:["dead","die","death","rip","ashes"],char:"โšฑ",category:"objects"},amphora:{keywords:["vase","jar"],char:"๐Ÿบ",category:"objects"},crystal_ball:{keywords:["disco","party","magic","circus","fortune_teller"],char:"๐Ÿ”ฎ",category:"objects"},prayer_beads:{keywords:["dhikr","religious"],char:"๐Ÿ“ฟ",category:"objects"},barber:{keywords:["hair","salon","style"],char:"๐Ÿ’ˆ",category:"objects"},alembic:{keywords:["distilling","science","experiment"],char:"โš—",category:"objects"},telescope:{keywords:["stars","space","zoom"],char:"๐Ÿ”ญ",category:"objects"},microscope:{keywords:["laboratory","experiment","zoomin","science","study"],char:"๐Ÿ”ฌ",category:"objects"},hole:{keywords:["embarrassing"],char:"๐Ÿ•ณ",category:"objects"},pill:{keywords:["health","medicine","doctor","pharmacy","drug"],char:"๐Ÿ’Š",category:"objects"},syringe:{keywords:["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],char:"๐Ÿ’‰",category:"objects"},thermometer:{keywords:["weather","temperature","hot","cold"],char:"๐ŸŒก",category:"objects"},label:{keywords:["sale","tag"],char:"๐Ÿท",category:"objects"},bookmark:{keywords:["favorite","label","save"],char:"๐Ÿ”–",category:"objects"},toilet:{keywords:["restroom","wc","washroom","bathroom","potty"],char:"๐Ÿšฝ",category:"objects"},shower:{keywords:["clean","water","bathroom"],char:"๐Ÿšฟ",category:"objects"},bathtub:{keywords:["clean","shower","bathroom"],char:"๐Ÿ›",category:"objects"},key:{keywords:["lock","door","password"],char:"๐Ÿ”‘",category:"objects"},old_key:{keywords:["lock","door","password"],char:"๐Ÿ—",category:"objects"},couch_and_lamp:{keywords:["read","chill"],char:"๐Ÿ›‹",category:"objects"},sleeping_accommodation:{keywords:["bed","rest"],char:"๐Ÿ›Œ",category:"objects"},bed:{keywords:["sleep","rest"],char:"๐Ÿ›",category:"objects"},door:{keywords:["house","entry","exit"],char:"๐Ÿšช",category:"objects"},bellhop_bell:{keywords:["service"],char:"๐Ÿ›Ž",category:"objects"},frame_with_picture:{keywords:["photography"],char:"๐Ÿ–ผ",category:"objects"},world_map:{keywords:["location","direction"],char:"๐Ÿ—บ",category:"objects"},umbrella_on_ground:{keywords:["weather","summer"],char:"โ›ฑ",category:"objects"},moyai:{keywords:["rock","easter island","moai"],char:"๐Ÿ—ฟ",category:"objects"},shopping_bags:{keywords:["mall","buy","purchase"],char:"๐Ÿ›",category:"objects"},balloon:{keywords:["party","celebration","birthday","circus"],char:"๐ŸŽˆ",category:"objects"},flags:{keywords:["fish","japanese","koinobori","carp","banner"],char:"๐ŸŽ",category:"objects"},ribbon:{keywords:["decoration","pink","girl","bowtie"],char:"๐ŸŽ€",category:"objects"},gift:{keywords:["present","birthday","christmas","xmas"],char:"๐ŸŽ",category:"objects"},confetti_ball:{keywords:["festival","party","birthday","circus"],char:"๐ŸŽŠ",category:"objects"},tada:{keywords:["party","contulations","birthday","magic","circus"],char:"๐ŸŽ‰",category:"objects"},dolls:{keywords:["japanese","toy","kimono"],char:"๐ŸŽŽ",category:"objects"},wind_chime:{keywords:["nature","ding","spring","bell"],char:"๐ŸŽ",category:"objects"},crossed_flags:{keywords:["japanese","nation","country","border"],char:"๐ŸŽŒ",category:"objects"},izakaya_lantern:{keywords:["light","paper","halloween","spooky"],char:"๐Ÿฎ",category:"objects"},envelope:{keywords:["letter","postal","inbox","communication"],char:"โœ‰๏ธ",category:"objects"},envelope_with_arrow:{keywords:["email","communication"],char:"๐Ÿ“ฉ",category:"objects"},incoming_envelope:{keywords:["email","inbox"],char:"๐Ÿ“จ",category:"objects"},email:{keywords:["communication","inbox"],char:"๐Ÿ“ง",category:"objects"},love_letter:{keywords:["email","like","affection","envelope","valentines"],char:"๐Ÿ’Œ",category:"objects"},postbox:{keywords:["email","letter","envelope"],char:"๐Ÿ“ฎ",category:"objects"},mailbox_closed:{keywords:["email","communication","inbox"],char:"๐Ÿ“ช",category:"objects"},mailbox:{keywords:["email","inbox","communication"],char:"๐Ÿ“ซ",category:"objects"},mailbox_with_mail:{keywords:["email","inbox","communication"],char:"๐Ÿ“ฌ",category:"objects"},mailbox_with_no_mail:{keywords:["email","inbox"],char:"๐Ÿ“ญ",category:"objects"},package:{keywords:["mail","gift","cardboard","box","moving"],char:"๐Ÿ“ฆ",category:"objects"},postal_horn:{keywords:["instrument","music"],char:"๐Ÿ“ฏ",category:"objects"},inbox_tray:{keywords:["email","documents"],char:"๐Ÿ“ฅ",category:"objects"},outbox_tray:{keywords:["inbox","email"],char:"๐Ÿ“ค",category:"objects"},scroll:{keywords:["documents","ancient","history","paper"],char:"๐Ÿ“œ",category:"objects"},page_with_curl:{keywords:["documents","office","paper"],char:"๐Ÿ“ƒ",category:"objects"},bookmark_tabs:{keywords:["favorite","save","order","tidy"],char:"๐Ÿ“‘",category:"objects"},bar_chart:{keywords:["graph","presentation","stats"],char:"๐Ÿ“Š",category:"objects"},chart_with_upwards_trend:{keywords:["graph","presentation","stats","recovery","business","economics","money","sales","good","success"],char:"๐Ÿ“ˆ",category:"objects"},chart_with_downwards_trend:{keywords:["graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],char:"๐Ÿ“‰",category:"objects"},page_facing_up:{keywords:["documents","office","paper","information"],char:"๐Ÿ“„",category:"objects"},date:{keywords:["calendar","schedule"],char:"๐Ÿ“…",category:"objects"},calendar:{keywords:["schedule","date","planning"],char:"๐Ÿ“†",category:"objects"},spiral_calendar_pad:{keywords:["date","schedule","planning"],char:"๐Ÿ—“",category:"objects"},card_index:{keywords:["business","stationery"],char:"๐Ÿ“‡",category:"objects"},card_file_box:{keywords:["business","stationery"],char:"๐Ÿ—ƒ",category:"objects"},ballot_box_with_ballot:{keywords:["election","vote"],char:"๐Ÿ—ณ",category:"objects"},file_cabinet:{keywords:["filing","organizing"],char:"๐Ÿ—„",category:"objects"},clipboard:{keywords:["stationery","documents"],char:"๐Ÿ“‹",category:"objects"},spiral_note_pad:{keywords:["memo","stationery"],char:"๐Ÿ—’",category:"objects"},file_folder:{keywords:["documents","business","office"],char:"๐Ÿ“",category:"objects"},open_file_folder:{keywords:["documents","load"],char:"๐Ÿ“‚",category:"objects"},card_index_dividers:{keywords:["organizing","business","stationery"],char:"๐Ÿ—‚",category:"objects"},rolled_up_newspaper:{keywords:["press","headline"],char:"๐Ÿ—ž",category:"objects"},newspaper:{keywords:["press","headline"],char:"๐Ÿ“ฐ",category:"objects"},notebook:{keywords:["stationery","record","notes","paper","study"],char:"๐Ÿ““",category:"objects"},closed_book:{keywords:["read","library","knowledge","textbook","learn"],char:"๐Ÿ“•",category:"objects"},green_book:{keywords:["read","library","knowledge","study"],char:"๐Ÿ“—",category:"objects"},blue_book:{keywords:["read","library","knowledge","learn","study"],char:"๐Ÿ“˜",category:"objects"},orange_book:{keywords:["read","library","knowledge","textbook","study"],char:"๐Ÿ“™",category:"objects"},notebook_with_decorative_cover:{keywords:["classroom","notes","record","paper","study"],char:"๐Ÿ“”",category:"objects"},ledger:{keywords:["notes","paper"],char:"๐Ÿ“’",category:"objects"},books:{keywords:["literature","library","study"],char:"๐Ÿ“š",category:"objects"},book:{keywords:["open_book","read","library","knowledge","literature","learn","study"],char:"๐Ÿ“–",category:"objects"},link:{keywords:["rings","url"],char:"๐Ÿ”—",category:"objects"},paperclip:{keywords:["documents","stationery"],char:"๐Ÿ“Ž",category:"objects"},linked_paperclips:{keywords:["documents","stationery"],char:"๐Ÿ–‡",category:"objects"},scissors:{keywords:["stationery","cut"],char:"โœ‚๏ธ",category:"objects"},triangular_ruler:{keywords:["stationery","math","architect","sketch"],char:"๐Ÿ“",category:"objects"},straight_ruler:{keywords:["stationery","calculate","length","math","school","drawing","architect","sketch"],char:"๐Ÿ“",category:"objects"},pushpin:{keywords:["stationery","mark","here"],char:"๐Ÿ“Œ",category:"objects"},round_pushpin:{keywords:["stationery","location","map","here"],char:"๐Ÿ“",category:"objects"},triangular_flag_on_post:{keywords:["mark","milestone","place"],char:"๐Ÿšฉ",category:"objects"},waving_white_flag:{keywords:["losing","loser","lost","surrender","give up","fail"],char:"๐Ÿณ",category:"objects"},waving_black_flag:{keywords:["pirate"],char:"๐Ÿด",category:"objects"},closed_lock_with_key:{keywords:["security","privacy"],char:"๐Ÿ”",category:"objects"},lock:{keywords:["security","password","padlock"],char:"๐Ÿ”’",category:"objects"},unlock:{keywords:["privacy","security"],char:"๐Ÿ”“",category:"objects"},lock_with_ink_pen:{keywords:["security","secret"],char:"๐Ÿ”",category:"objects"},lower_left_ballpoint_pen:{keywords:["stationery","writing","write"],char:"๐Ÿ–Š",category:"objects"},lower_left_fountain_pen:{keywords:["stationery","writing","write"],char:"๐Ÿ–‹",category:"objects"},black_nib:{keywords:["pen","stationery","writing","write"],char:"โœ’๏ธ",category:"objects"},memo:{keywords:["write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study"],char:"๐Ÿ“",category:"objects"},pencil2:{keywords:["stationery","write","paper","writing","school","study"],char:"โœ๏ธ",category:"objects"},lower_left_crayon:{keywords:["drawing","creativity"],char:"๐Ÿ–",category:"objects"},lower_left_paintbrush:{keywords:["drawing","creativity","art"],char:"๐Ÿ–Œ",category:"objects"},mag:{keywords:["search","zoom","find","detective"],char:"๐Ÿ”",category:"objects"},mag_right:{keywords:["search","zoom","find","detective"],char:"๐Ÿ”Ž",category:"objects"},heart:{keywords:["love","like","valentines"],char:"โค๏ธ",category:"symbols"},yellow_heart:{keywords:["love","like","affection","valentines"],char:"๐Ÿ’›",category:"symbols"},green_heart:{keywords:["love","like","affection","valentines"],char:"๐Ÿ’š",category:"symbols"},blue_heart:{keywords:["love","like","affection","valentines"],char:"๐Ÿ’™",category:"symbols"},purple_heart:{keywords:["love","like","affection","valentines"],char:"๐Ÿ’œ",category:"symbols"},broken_heart:{keywords:["sad","sorry","break","heart","heartbreak"],char:"๐Ÿ’”",category:"symbols"},heavy_heart_exclamation_mark_ornament:{keywords:["decoration","love"],char:"โฃ",category:"symbols"},two_hearts:{keywords:["love","like","affection","valentines","heart"],char:"๐Ÿ’•",category:"symbols"},revolving_hearts:{keywords:["love","like","affection","valentines"],char:"๐Ÿ’ž",category:"symbols"},heartbeat:{keywords:["love","like","affection","valentines","pink","heart"],char:"๐Ÿ’“",category:"symbols"},heartpulse:{keywords:["like","love","affection","valentines","pink"],char:"๐Ÿ’—",category:"symbols"},sparkling_heart:{keywords:["love","like","affection","valentines"],char:"๐Ÿ’–",category:"symbols"},cupid:{keywords:["love","like","heart","affection","valentines"],char:"๐Ÿ’˜",category:"symbols"},gift_heart:{keywords:["love","valentines"],char:"๐Ÿ’",category:"symbols"},heart_decoration:{keywords:["purple-square","love","like"],char:"๐Ÿ’Ÿ",category:"symbols"},peace_symbol:{keywords:["hippie"],char:"โ˜ฎ",category:"symbols"},latin_cross:{keywords:["christianity"],char:"โœ",category:"symbols"},star_and_crescent:{keywords:["islam"],char:"โ˜ช",category:"symbols"},om_symbol:{keywords:["hinduism","buddhism","sikhism","jainism"],char:"๐Ÿ•‰",category:"symbols"},wheel_of_dharma:{keywords:["hinduism","buddhism","sikhism","jainism"],char:"โ˜ธ",category:"symbols"},star_of_david:{keywords:["judaism"],char:"โœก",category:"symbols"},six_pointed_star:{keywords:["purple-square","religion","jewish","hexagram"],char:"๐Ÿ”ฏ",category:"symbols"},menorah_with_nine_branches:{keywords:["hanukkah","candles","jewish"],char:"๐Ÿ•Ž",category:"symbols"},yin_yang:{keywords:["balance"],char:"โ˜ฏ",category:"symbols"},orthodox_cross:{keywords:["suppedaneum","religion"],char:"โ˜ฆ",category:"symbols"},place_of_worship:{keywords:["religion","church","temple","prayer"],char:"๐Ÿ›",category:"symbols"},ophiuchus:{keywords:["sign","purple-square","constellation","astrology"],char:"โ›Ž",category:"symbols"},aries:{keywords:["sign","purple-square","zodiac","astrology"],char:"โ™ˆ",category:"symbols"},taurus:{keywords:["purple-square","sign","zodiac","astrology"],char:"โ™‰",category:"symbols"},gemini:{keywords:["sign","zodiac","purple-square","astrology"],char:"โ™Š",category:"symbols"},cancer:{keywords:["sign","zodiac","purple-square","astrology"],char:"โ™‹",category:"symbols"},leo:{keywords:["sign","purple-square","zodiac","astrology"],char:"โ™Œ",category:"symbols"},virgo:{keywords:["sign","zodiac","purple-square","astrology"],char:"โ™",category:"symbols"},libra:{keywords:["sign","purple-square","zodiac","astrology"],char:"โ™Ž",category:"symbols"},scorpius:{keywords:["sign","zodiac","purple-square","astrology","scorpio"],char:"โ™",category:"symbols"},sagittarius:{keywords:["sign","zodiac","purple-square","astrology"],char:"โ™",category:"symbols"},capricorn:{keywords:["sign","zodiac","purple-square","astrology"],char:"โ™‘",category:"symbols"},aquarius:{keywords:["sign","purple-square","zodiac","astrology"],char:"โ™’",category:"symbols"},pisces:{keywords:["purple-square","sign","zodiac","astrology"],char:"โ™“",category:"symbols"},id:{keywords:["purple-square","words"],char:"๐Ÿ†”",category:"symbols"},atom_symbol:{keywords:["science"],char:"โš›",category:"symbols"},u7a7a:{keywords:["kanji","japanese","chinese","empty","sky","blue-square"],char:"๐Ÿˆณ",category:"symbols"},u5272:{keywords:["cut","divide","chinese","kanji","pink-square"],char:"๐Ÿˆน",category:"symbols"},radioactive_sign:{keywords:["nuclear","danger"],char:"โ˜ข",category:"symbols"},biohazard_sign:{keywords:["danger"],char:"โ˜ฃ",category:"symbols"},mobile_phone_off:{keywords:["mute","orange-square","silence","quiet"],char:"๐Ÿ“ด",category:"symbols"},vibration_mode:{keywords:["orange-square","phone"],char:"๐Ÿ“ณ",category:"symbols"},u6709:{keywords:["orange-square","chinese","have","kanji"],char:"๐Ÿˆถ",category:"symbols"},u7121:{keywords:["nothing","chinese","kanji","japanese","orange-square"],char:"๐Ÿˆš",category:"symbols"},u7533:{keywords:["chinese","japanese","kanji","orange-square"],char:"๐Ÿˆธ",category:"symbols"},u55b6:{keywords:["japanese","opening hours","orange-square"],char:"๐Ÿˆบ",category:"symbols"},u6708:{keywords:["chinese","month","moon","japanese","orange-square","kanji"],char:"๐Ÿˆท๏ธ",category:"symbols"},eight_pointed_black_star:{keywords:["orange-square","shape","polygon"],char:"โœด๏ธ",category:"symbols"},vs:{keywords:["words","orange-square"],char:"๐Ÿ†š",category:"symbols"},accept:{keywords:["ok","good","chinese","kanji","agree","yes","orange-circle"],char:"๐Ÿ‰‘",category:"symbols"},white_flower:{keywords:["japanese","spring"],char:"๐Ÿ’ฎ",category:"symbols"},ideograph_advantage:{keywords:["chinese","kanji","obtain","get","circle"],char:"๐Ÿ‰",category:"symbols"},secret:{keywords:["privacy","chinese","sshh","kanji","red-circle"],char:"ใŠ™๏ธ",category:"symbols"},congratulations:{keywords:["chinese","kanji","japanese","red-circle"],char:"ใŠ—๏ธ",category:"symbols"},u5408:{keywords:["japanese","chinese","join","kanji","red-square"],char:"๐Ÿˆด",category:"symbols"},u6e80:{keywords:["full","chinese","japanese","red-square","kanji"],char:"๐Ÿˆต",category:"symbols"},u7981:{keywords:["kanji","japanese","chinese","forbidden","limit","restricted","red-square"],char:"๐Ÿˆฒ",category:"symbols"},a:{keywords:["red-square","alphabet","letter"],char:"๐Ÿ…ฐ๏ธ",category:"symbols"},b:{keywords:["red-square","alphabet","letter"],char:"๐Ÿ…ฑ๏ธ",category:"symbols"},ab:{keywords:["red-square","alphabet"],char:"๐Ÿ†Ž",category:"symbols"},cl:{keywords:["alphabet","words","red-square"],char:"๐Ÿ†‘",category:"symbols"},o2:{keywords:["alphabet","red-square","letter"],char:"๐Ÿ…พ๏ธ",category:"symbols"},sos:{keywords:["help","red-square","words","emergency","911"],char:"๐Ÿ†˜",category:"symbols"},no_entry:{keywords:["limit","security","privacy","bad","denied","stop","circle"],char:"โ›”",category:"symbols"},name_badge:{keywords:["fire","forbid"],char:"๐Ÿ“›",category:"symbols"},no_entry_sign:{keywords:["forbid","stop","limit","denied","disallow","circle"],char:"๐Ÿšซ",category:"symbols"},x:{keywords:["no","delete","remove","cancel"],char:"โŒ",category:"symbols"},o:{keywords:["circle","round"],char:"โญ•",category:"symbols"},anger:{keywords:["angry","mad"],char:"๐Ÿ’ข",category:"symbols"},hotsprings:{keywords:["bath","warm","relax"],char:"โ™จ๏ธ",category:"symbols"},no_pedestrians:{keywords:["rules","crossing","walking","circle"],char:"๐Ÿšท",category:"symbols"},do_not_litter:{keywords:["trash","bin","garbage","circle"],char:"๐Ÿšฏ",category:"symbols"},no_bicycles:{keywords:["cyclist","prohibited","circle"],char:"๐Ÿšณ",category:"symbols"},"non-potable_water":{keywords:["drink","faucet","tap","circle"],char:"๐Ÿšฑ",category:"symbols"},underage:{keywords:["18","drink","pub","night","minor","circle"],char:"๐Ÿ”ž",category:"symbols"},no_mobile_phones:{keywords:["iphone","mute","circle"],char:"๐Ÿ“ต",category:"symbols"},exclamation:{keywords:["heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],char:"โ—",category:"symbols"},grey_exclamation:{keywords:["surprise","punctuation","gray","wow","warning"],char:"โ•",category:"symbols"},question:{keywords:["doubt","confused"],char:"โ“",category:"symbols"},grey_question:{keywords:["doubts","gray","huh","confused"],char:"โ”",category:"symbols"},bangbang:{keywords:["exclamation","surprise"],char:"โ€ผ๏ธ",category:"symbols"},interrobang:{keywords:["wat","punctuation","surprise"],char:"โ‰๏ธ",category:"symbols"},100:{keywords:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],char:"๐Ÿ’ฏ",category:"symbols"},low_brightness:{keywords:["sun","afternoon","warm","summer"],char:"๐Ÿ”…",category:"symbols"},high_brightness:{keywords:["sun","light"],char:"๐Ÿ”†",category:"symbols"},trident:{keywords:["weapon","spear"],char:"๐Ÿ”ฑ",category:"symbols"},fleur_de_lis:{keywords:["decorative","scout"],char:"โšœ",category:"symbols"},part_alternation_mark:{keywords:["graph","presentation","stats","business","economics","bad"],char:"ใ€ฝ๏ธ",category:"symbols"},warning:{keywords:["exclamation","wip","alert","error","problem","issue"],char:"โš ๏ธ",category:"symbols"},children_crossing:{keywords:["school","warning","danger","sign","driving","yellow-diamond"],char:"๐Ÿšธ",category:"symbols"},beginner:{keywords:["badge","shield"],char:"๐Ÿ”ฐ",category:"symbols"},recycle:{keywords:["arrow","environment","garbage","trash"],char:"โ™ป๏ธ",category:"symbols"},u6307:{keywords:["chinese","point","green-square","kanji"],char:"๐Ÿˆฏ",category:"symbols"},chart:{keywords:["green-square","graph","presentation","stats"],char:"๐Ÿ’น",category:"symbols"},sparkle:{keywords:["stars","green-square","awesome","good","fireworks"],char:"โ‡๏ธ",category:"symbols"},eight_spoked_asterisk:{keywords:["star","sparkle","green-square"],char:"โœณ๏ธ",category:"symbols"},negative_squared_cross_mark:{keywords:["x","green-square","no","deny"],char:"โŽ",category:"symbols"},white_check_mark:{keywords:["green-square","ok","agree","vote","election","answer"],char:"โœ…",category:"symbols"},diamond_shape_with_a_dot_inside:{keywords:["jewel","blue","gem","crystal","fancy"],char:"๐Ÿ’ ",category:"symbols"},cyclone:{keywords:["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin"],char:"๐ŸŒ€",category:"symbols"},loop:{keywords:["tape","cassette"],char:"โžฟ",category:"symbols"},globe_with_meridians:{keywords:["earth","international","world","internet","interweb","i18n"],char:"๐ŸŒ",category:"symbols"},m:{keywords:["alphabet","blue-circle","letter"],char:"โ“‚๏ธ",category:"symbols"},atm:{keywords:["money","sales","cash","blue-square","payment","bank"],char:"๐Ÿง",category:"symbols"},sa:{keywords:["japanese","blue-square","katakana"],char:"๐Ÿˆ‚๏ธ",category:"symbols"},passport_control:{keywords:["custom","blue-square"],char:"๐Ÿ›‚",category:"symbols"},customs:{keywords:["passport","border","blue-square"],char:"๐Ÿ›ƒ",category:"symbols"},baggage_claim:{keywords:["blue-square","airport","transport"],char:"๐Ÿ›„",category:"symbols"},left_luggage:{keywords:["blue-square","travel"],char:"๐Ÿ›…",category:"symbols"},wheelchair:{keywords:["blue-square","disabled","a11y","accessibility"],char:"โ™ฟ",category:"symbols"},no_smoking:{keywords:["cigarette","blue-square","smell","smoke"],char:"๐Ÿšญ",category:"symbols"},wc:{keywords:["toilet","restroom","blue-square"],char:"๐Ÿšพ",category:"symbols"},parking:{keywords:["cars","blue-square","alphabet","letter"],char:"๐Ÿ…ฟ๏ธ",category:"symbols"},potable_water:{keywords:["blue-square","liquid","restroom","cleaning","faucet"],char:"๐Ÿšฐ",category:"symbols"},mens:{keywords:["toilet","restroom","wc","blue-square","gender","male"],char:"๐Ÿšน",category:"symbols"},womens:{keywords:["purple-square","woman","female","toilet","loo","restroom","gender"],char:"๐Ÿšบ",category:"symbols"},baby_symbol:{keywords:["orange-square","child"],char:"๐Ÿšผ",category:"symbols"},restroom:{keywords:["blue-square","toilet","refresh","wc","gender"],char:"๐Ÿšป",category:"symbols"},put_litter_in_its_place:{keywords:["blue-square","sign","human","info"],char:"๐Ÿšฎ",category:"symbols"},cinema:{keywords:["blue-square","record","film","movie","curtain","stage","theater"],char:"๐ŸŽฆ",category:"symbols"},signal_strength:{keywords:["blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],char:"๐Ÿ“ถ",category:"symbols"},koko:{keywords:["blue-square","here","katakana","japanese","destination"],char:"๐Ÿˆ",category:"symbols"},ng:{keywords:["blue-square","words","shape","icon"],char:"๐Ÿ†–",category:"symbols"},ok:{keywords:["good","agree","yes","blue-square"],char:"๐Ÿ†—",category:"symbols"},up:{keywords:["blue-square","above","high"],char:"๐Ÿ†™",category:"symbols"},cool:{keywords:["words","blue-square"],char:"๐Ÿ†’",category:"symbols"},new:{keywords:["blue-square","words","start"],char:"๐Ÿ†•",category:"symbols"},free:{keywords:["blue-square","words"],char:"๐Ÿ†“",category:"symbols"},zero:{keywords:["0","numbers","blue-square","null"],char:"0๏ธโƒฃ",category:"symbols"},one:{keywords:["blue-square","numbers","1"],char:"1๏ธโƒฃ",category:"symbols"},two:{keywords:["numbers","2","prime","blue-square"],char:"2๏ธโƒฃ",category:"symbols"},three:{keywords:["3","numbers","prime","blue-square"],char:"3๏ธโƒฃ",category:"symbols"},four:{keywords:["4","numbers","blue-square"],char:"4๏ธโƒฃ",category:"symbols"},five:{keywords:["5","numbers","blue-square","prime"],char:"5๏ธโƒฃ",category:"symbols"},six:{keywords:["6","numbers","blue-square"],char:"6๏ธโƒฃ",category:"symbols"},seven:{keywords:["7","numbers","blue-square","prime"],char:"7๏ธโƒฃ",category:"symbols"},eight:{keywords:["8","blue-square","numbers"],char:"8๏ธโƒฃ",category:"symbols"},nine:{keywords:["blue-square","numbers","9"],char:"9๏ธโƒฃ",category:"symbols"},keycap_ten:{keywords:["numbers","10","blue-square"],char:"๐Ÿ”Ÿ",category:"symbols"},keycap_star:{keywords:["asterisk"],char:"*โƒฃ",category:"symbols"},1234:{keywords:["numbers","blue-square"],char:"๐Ÿ”ข",category:"symbols"},arrow_forward:{keywords:["blue-square","right","direction","play"],char:"โ–ถ๏ธ",category:"symbols"},double_vertical_bar:{keywords:["pause","blue-square"],char:"โธ",category:"symbols"},black_right_pointing_triangle_with_double_vertical_bar:{keywords:["forward","next","blue-square"],char:"โญ",category:"symbols"},black_square_for_stop:{keywords:["blue-square"],char:"โน",category:"symbols"},black_circle_for_record:{keywords:["blue-square"],char:"โบ",category:"symbols"},black_right_pointing_double_triangle_with_vertical_bar:{keywords:["blue-square","play","pause"],char:"โฏ",category:"symbols"},black_left_pointing_double_triangle_with_vertical_bar:{keywords:["backward"],char:"โฎ",category:"symbols"},fast_forward:{keywords:["blue-square","play","speed","continue"],char:"โฉ",category:"symbols"},rewind:{keywords:["play","blue-square"],char:"โช",category:"symbols"},twisted_rightwards_arrows:{keywords:["blue-square","shuffle","music","random"],char:"๐Ÿ”€",category:"symbols"},repeat:{keywords:["loop","record"],char:"๐Ÿ”",category:"symbols"},repeat_one:{keywords:["blue-square","loop"],char:"๐Ÿ”‚",category:"symbols"},arrow_backward:{keywords:["blue-square","left","direction"],char:"โ—€๏ธ",category:"symbols"},arrow_up_small:{keywords:["blue-square","triangle","direction","point","forward","top"],char:"๐Ÿ”ผ",category:"symbols"},arrow_down_small:{keywords:["blue-square","direction","bottom"],char:"๐Ÿ”ฝ",category:"symbols"},arrow_double_up:{keywords:["blue-square","direction","top"],char:"โซ",category:"symbols"},arrow_double_down:{keywords:["blue-square","direction","bottom"],char:"โฌ",category:"symbols"},arrow_right:{keywords:["blue-square","next"],char:"โžก๏ธ",category:"symbols"},arrow_left:{keywords:["blue-square","previous","back"],char:"โฌ…๏ธ",category:"symbols"},arrow_up:{keywords:["blue-square","continue","top","direction"],char:"โฌ†๏ธ",category:"symbols"},arrow_down:{keywords:["blue-square","direction","bottom"],char:"โฌ‡๏ธ",category:"symbols"},arrow_upper_right:{keywords:["blue-square","point","direction","diagonal","northeast"],char:"โ†—๏ธ",category:"symbols"},arrow_lower_right:{keywords:["blue-square","direction","diagonal","southeast"],char:"โ†˜๏ธ",category:"symbols"},arrow_lower_left:{keywords:["blue-square","direction","diagonal","southwest"],char:"โ†™๏ธ",category:"symbols"},arrow_upper_left:{keywords:["blue-square","point","direction","diagonal","northwest"],char:"โ†–๏ธ",category:"symbols"},arrow_up_down:{keywords:["blue-square","direction","way","vertical"],char:"โ†•๏ธ",category:"symbols"},left_right_arrow:{keywords:["shape","direction","horizontal","sideways"],char:"โ†”๏ธ",category:"symbols"},arrows_counterclockwise:{keywords:["blue-square","sync","cycle"],char:"๐Ÿ”„",category:"symbols"},arrow_right_hook:{keywords:["blue-square","return","rotate","direction"],char:"โ†ช๏ธ",category:"symbols"},leftwards_arrow_with_hook:{keywords:["back","return","blue-square","undo","enter"],char:"โ†ฉ๏ธ",category:"symbols"},arrow_heading_up:{keywords:["blue-square","direction","top"],char:"โคด๏ธ",category:"symbols"},arrow_heading_down:{keywords:["blue-square","direction","bottom"],char:"โคต๏ธ",category:"symbols"},hash:{keywords:["symbol","blue-square","twitter"],char:"#๏ธโƒฃ",category:"symbols"},information_source:{keywords:["blue-square","alphabet","letter"],char:"โ„น๏ธ",category:"symbols"},abc:{keywords:["blue-square","alphabet"],char:"๐Ÿ”ค",category:"symbols"},abcd:{keywords:["blue-square","alphabet"],char:"๐Ÿ”ก",category:"symbols"},capital_abcd:{keywords:["alphabet","words","blue-square"],char:"๐Ÿ” ",category:"symbols"},symbols:{keywords:["blue-square","music","note","ampersand","percent","glyphs","characters"],char:"๐Ÿ”ฃ",category:"symbols"},musical_note:{keywords:["score","tone","sound"],char:"๐ŸŽต",category:"symbols"},notes:{keywords:["music","score"],char:"๐ŸŽถ",category:"symbols"},wavy_dash:{keywords:["draw","line","moustache","mustache","squiggle","scribble"],char:"ใ€ฐ๏ธ",category:"symbols"},curly_loop:{keywords:["scribble","draw","shape","squiggle"],char:"โžฐ",category:"symbols"},heavy_check_mark:{keywords:["ok","nike","answer","yes","tick"],char:"โœ”๏ธ",category:"symbols"},arrows_clockwise:{keywords:["sync","cycle","round","repeat"],char:"๐Ÿ”ƒ",category:"symbols"},heavy_plus_sign:{keywords:["math","calculation","addition","more","increase"],char:"โž•",category:"symbols"},heavy_minus_sign:{keywords:["math","calculation","subtract","less"],char:"โž–",category:"symbols"},heavy_division_sign:{keywords:["divide","math","calculation"],char:"โž—",category:"symbols"},heavy_multiplication_x:{keywords:["math","calculation"],char:"โœ–๏ธ",category:"symbols"},heavy_dollar_sign:{keywords:["money","sales","payment","currency","buck"],char:"๐Ÿ’ฒ",category:"symbols"},currency_exchange:{keywords:["money","sales","dollar","travel"],char:"๐Ÿ’ฑ",category:"symbols"},copyright:{keywords:["ip","license","circle","law","legal"],char:"ยฉ๏ธ",category:"symbols"},registered:{keywords:["alphabet","circle"],char:"ยฎ๏ธ",category:"symbols"},tm:{keywords:["trademark","brand","law","legal"],char:"โ„ข๏ธ",category:"symbols"},end:{keywords:["words","arrow"],char:"๐Ÿ”š",category:"symbols"},back:{keywords:["arrow","words","return"],char:"๐Ÿ”™",category:"symbols"},on:{keywords:["arrow","words"],char:"๐Ÿ”›",category:"symbols"},top:{keywords:["words","blue-square"],char:"๐Ÿ”",category:"symbols"},soon:{keywords:["arrow","words"],char:"๐Ÿ”œ",category:"symbols"},ballot_box_with_check:{keywords:["ok","agree","confirm","black-square","vote","election","yes"],char:"โ˜‘๏ธ",category:"symbols"},radio_button:{keywords:["input","old","music","circle"],char:"๐Ÿ”˜",category:"symbols"},white_circle:{keywords:["shape","round"],char:"โšช",category:"symbols"},black_circle:{keywords:["shape","button","round"],char:"โšซ",category:"symbols"},red_circle:{keywords:["shape","error","danger"],char:"๐Ÿ”ด",category:"symbols"},large_blue_circle:{keywords:["shape","icon","button"],char:"๐Ÿ”ต",category:"symbols"},small_orange_diamond:{keywords:["shape","jewel","gem"],char:"๐Ÿ”ธ",category:"symbols"},small_blue_diamond:{keywords:["shape","jewel","gem"],char:"๐Ÿ”น",category:"symbols"},large_orange_diamond:{keywords:["shape","jewel","gem"],char:"๐Ÿ”ถ",category:"symbols"},large_blue_diamond:{keywords:["shape","jewel","gem"],char:"๐Ÿ”ท",category:"symbols"},small_red_triangle:{keywords:["shape","direction","up","top"],char:"๐Ÿ”บ",category:"symbols"},black_small_square:{keywords:["shape","icon"],char:"โ–ช๏ธ",category:"symbols"},white_small_square:{keywords:["shape","icon"],char:"โ–ซ๏ธ",category:"symbols"},black_large_square:{keywords:["shape","icon","button"],char:"โฌ›",category:"symbols"},white_large_square:{keywords:["shape","icon","stone","button"],char:"โฌœ",category:"symbols"},small_red_triangle_down:{keywords:["shape","direction","bottom"],char:"๐Ÿ”ป",category:"symbols"},black_medium_square:{keywords:["shape","button","icon"],char:"โ—ผ๏ธ",category:"symbols"},white_medium_square:{keywords:["shape","stone","icon"],char:"โ—ป๏ธ",category:"symbols"},black_medium_small_square:{keywords:["icon","shape","button"],char:"โ—พ",category:"symbols"},white_medium_small_square:{keywords:["shape","stone","icon","button"],char:"โ—ฝ",category:"symbols"},black_square_button:{keywords:["shape","input","frame"],char:"๐Ÿ”ฒ",category:"symbols"},white_square_button:{keywords:["shape","input"],char:"๐Ÿ”ณ",category:"symbols"},speaker:{keywords:["sound","volume","silence","broadcast"],char:"๐Ÿ”ˆ",category:"symbols"},sound:{keywords:["volume","speaker","broadcast"],char:"๐Ÿ”‰",category:"symbols"},loud_sound:{keywords:["volume","noise","noisy","speaker","broadcast"],char:"๐Ÿ”Š",category:"symbols"},mute:{keywords:["sound","volume","silence","quiet"],char:"๐Ÿ”‡",category:"symbols"},mega:{keywords:["sound","speaker","volume"],char:"๐Ÿ“ฃ",category:"symbols"},loudspeaker:{keywords:["volume","sound"],char:"๐Ÿ“ข",category:"symbols"},bell:{keywords:["sound","notification","christmas","xmas","chime"],char:"๐Ÿ””",category:"symbols"},no_bell:{keywords:["sound","volume","mute","quiet","silent"],char:"๐Ÿ”•",category:"symbols"},black_joker:{keywords:["poker","cards","game","play","magic"],char:"๐Ÿƒ",category:"symbols"},mahjong:{keywords:["game","play","chinese","kanji"],char:"๐Ÿ€„",category:"symbols"},spades:{keywords:["poker","cards","suits","magic"],char:"โ™ ๏ธ",category:"symbols"},clubs:{keywords:["poker","cards","magic","suits"],char:"โ™ฃ๏ธ",category:"symbols"},hearts:{keywords:["poker","cards","magic","suits"],char:"โ™ฅ๏ธ",category:"symbols"},diamonds:{keywords:["poker","cards","magic","suits"],char:"โ™ฆ๏ธ",category:"symbols"},flower_playing_cards:{keywords:["game","sunset","red"],char:"๐ŸŽด",category:"symbols"},thought_balloon:{keywords:["bubble","cloud","speech","thinking"],char:"๐Ÿ’ญ",category:"symbols"},right_anger_bubble:{keywords:["caption","speech","thinking","mad"],char:"๐Ÿ—ฏ",category:"symbols"},speech_balloon:{keywords:["bubble","words","message","talk","chatting"],char:"๐Ÿ’ฌ",category:"symbols"},left_speech_bubble:{keywords:["words","message","talk","chatting"],char:"๐Ÿ—จ",category:"symbols"},clock1:{keywords:["time","late","early","schedule"],char:"๐Ÿ•",category:"symbols"},clock2:{keywords:["time","late","early","schedule"],char:"๐Ÿ•‘",category:"symbols"},clock3:{keywords:["time","late","early","schedule"],char:"๐Ÿ•’",category:"symbols"},clock4:{keywords:["time","late","early","schedule"],char:"๐Ÿ•“",category:"symbols"},clock5:{keywords:["time","late","early","schedule"],char:"๐Ÿ•”",category:"symbols"},clock6:{keywords:["time","late","early","schedule","dawn","dusk"],char:"๐Ÿ••",category:"symbols"},clock7:{keywords:["time","late","early","schedule"],char:"๐Ÿ•–",category:"symbols"},clock8:{keywords:["time","late","early","schedule"],char:"๐Ÿ•—",category:"symbols"},clock9:{keywords:["time","late","early","schedule"],char:"๐Ÿ•˜",category:"symbols"},clock10:{keywords:["time","late","early","schedule"],char:"๐Ÿ•™",category:"symbols"},clock11:{keywords:["time","late","early","schedule"],char:"๐Ÿ•š",category:"symbols"},clock12:{keywords:["time","noon","midnight","midday","late","early","schedule"],char:"๐Ÿ•›",category:"symbols"},clock130:{keywords:["time","late","early","schedule"],char:"๐Ÿ•œ",category:"symbols"},clock230:{keywords:["time","late","early","schedule"],char:"๐Ÿ•",category:"symbols"},clock330:{keywords:["time","late","early","schedule"],char:"๐Ÿ•ž",category:"symbols"},clock430:{keywords:["time","late","early","schedule"],char:"๐Ÿ•Ÿ",category:"symbols"},clock530:{keywords:["time","late","early","schedule"],char:"๐Ÿ• ",category:"symbols"},clock630:{keywords:["time","late","early","schedule"],char:"๐Ÿ•ก",category:"symbols"},clock730:{keywords:["time","late","early","schedule"],char:"๐Ÿ•ข",category:"symbols"},clock830:{keywords:["time","late","early","schedule"],char:"๐Ÿ•ฃ",category:"symbols"},clock930:{keywords:["time","late","early","schedule"],char:"๐Ÿ•ค",category:"symbols"},clock1030:{keywords:["time","late","early","schedule"],char:"๐Ÿ•ฅ",category:"symbols"},clock1130:{keywords:["time","late","early","schedule"],char:"๐Ÿ•ฆ",category:"symbols"},clock1230:{keywords:["time","late","early","schedule"],char:"๐Ÿ•ง",category:"symbols"},af:{keywords:["afghanistan","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ซ",category:"flags"},ax:{keywords:["ร…land","islands","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ฝ",category:"flags"},al:{keywords:["albania","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ฑ",category:"flags"},dz:{keywords:["algeria","flag","nation","country","banner"],char:"๐Ÿ‡ฉ๐Ÿ‡ฟ",category:"flags"},as:{keywords:["american","samoa","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ธ",category:"flags"},ad:{keywords:["andorra","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ฉ",category:"flags"},ao:{keywords:["angola","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ด",category:"flags"},ai:{keywords:["anguilla","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ฎ",category:"flags"},aq:{keywords:["antarctica","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ถ",category:"flags"},ag:{keywords:["antigua","barbuda","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ฌ",category:"flags"},ar:{keywords:["argentina","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ท",category:"flags"},am:{keywords:["armenia","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ฒ",category:"flags"},aw:{keywords:["aruba","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ผ",category:"flags"},au:{keywords:["australia","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡บ",category:"flags"},at:{keywords:["austria","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡น",category:"flags"},az:{keywords:["azerbaijan","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ฟ",category:"flags"},bs:{keywords:["bahamas","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ธ",category:"flags"},bh:{keywords:["bahrain","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ญ",category:"flags"},bd:{keywords:["bangladesh","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ฉ",category:"flags"},bb:{keywords:["barbados","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ง",category:"flags"},by:{keywords:["belarus","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡พ",category:"flags"},be:{keywords:["belgium","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ช",category:"flags"},bz:{keywords:["belize","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ฟ",category:"flags"},bj:{keywords:["benin","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ฏ",category:"flags"},bm:{keywords:["bermuda","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ฒ",category:"flags"},bt:{keywords:["bhutan","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡น",category:"flags"},bo:{keywords:["bolivia","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ด",category:"flags"},bq:{keywords:["bonaire","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ถ",category:"flags"},ba:{keywords:["bosnia","herzegovina","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ฆ",category:"flags"},bw:{keywords:["botswana","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ผ",category:"flags"},br:{keywords:["brazil","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ท",category:"flags"},io:{keywords:["british","indian","ocean","territory","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡ด",category:"flags"},vg:{keywords:["british","virgin","islands","bvi","flag","nation","country","banner"],char:"๐Ÿ‡ป๐Ÿ‡ฌ",category:"flags"},bn:{keywords:["brunei","darussalam","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ณ",category:"flags"},bg:{keywords:["bulgaria","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ฌ",category:"flags"},bf:{keywords:["burkina","faso","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ซ",category:"flags"},bi:{keywords:["burundi","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ฎ",category:"flags"},cv:{keywords:["cabo","verde","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ป",category:"flags"},kh:{keywords:["cambodia","flag","nation","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ญ",category:"flags"},cm:{keywords:["cameroon","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ฒ",category:"flags"},ca:{keywords:["canada","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ฆ",category:"flags"},ic:{keywords:["canary","islands","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡จ",category:"flags"},ky:{keywords:["cayman","islands","flag","nation","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡พ",category:"flags"},cf:{keywords:["central","african","republic","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ซ",category:"flags"},td:{keywords:["chad","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ฉ",category:"flags"},chile:{keywords:["flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ฑ",category:"flags"},cn:{keywords:["china","chinese","prc","flag","country","nation","banner"],char:"๐Ÿ‡จ๐Ÿ‡ณ",category:"flags"},cx:{keywords:["christmas","island","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ฝ",category:"flags"},cc:{keywords:["cocos","keeling","islands","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡จ",category:"flags"},co:{keywords:["colombia","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ด",category:"flags"},km:{keywords:["comoros","flag","nation","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ฒ",category:"flags"},cg:{keywords:["congo","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ฌ",category:"flags"},drc:{keywords:["congo","democratic","republic","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ฉ",category:"flags"},ck:{keywords:["cook","islands","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ฐ",category:"flags"},cr:{keywords:["costa","rica","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ท",category:"flags"},hr:{keywords:["croatia","flag","nation","country","banner"],char:"๐Ÿ‡ญ๐Ÿ‡ท",category:"flags"},cu:{keywords:["cuba","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡บ",category:"flags"},cw:{keywords:["curaรงao","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ผ",category:"flags"},cy:{keywords:["cyprus","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡พ",category:"flags"},cz:{keywords:["czech_republic","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ฟ",category:"flags"},dk:{keywords:["denmark","flag","nation","country","banner"],char:"๐Ÿ‡ฉ๐Ÿ‡ฐ",category:"flags"},dj:{keywords:["djibouti","flag","nation","country","banner"],char:"๐Ÿ‡ฉ๐Ÿ‡ฏ",category:"flags"},dm:{keywords:["dominica","flag","nation","country","banner"],char:"๐Ÿ‡ฉ๐Ÿ‡ฒ",category:"flags"},do:{keywords:["dominican","republic","flag","nation","country","banner"],char:"๐Ÿ‡ฉ๐Ÿ‡ด",category:"flags"},ec:{keywords:["ecuador","flag","nation","country","banner"],char:"๐Ÿ‡ช๐Ÿ‡จ",category:"flags"},eg:{keywords:["egypt","flag","nation","country","banner"],char:"๐Ÿ‡ช๐Ÿ‡ฌ",category:"flags"},sv:{keywords:["el","salvador","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ป",category:"flags"},gq:{keywords:["equatorial","guinea","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ถ",category:"flags"},er:{keywords:["eritrea","flag","nation","country","banner"],char:"๐Ÿ‡ช๐Ÿ‡ท",category:"flags"},ee:{keywords:["estonia","flag","nation","country","banner"],char:"๐Ÿ‡ช๐Ÿ‡ช",category:"flags"},et:{keywords:["ethiopia","flag","nation","country","banner"],char:"๐Ÿ‡ช๐Ÿ‡น",category:"flags"},eu:{keywords:["european","union","flag","banner"],char:"๐Ÿ‡ช๐Ÿ‡บ",category:"flags"},fk:{keywords:["falkland","islands","malvinas","flag","nation","country","banner"],char:"๐Ÿ‡ซ๐Ÿ‡ฐ",category:"flags"},fo:{keywords:["faroe","islands","flag","nation","country","banner"],char:"๐Ÿ‡ซ๐Ÿ‡ด",category:"flags"},fj:{keywords:["fiji","flag","nation","country","banner"],char:"๐Ÿ‡ซ๐Ÿ‡ฏ",category:"flags"},fi:{keywords:["finland","flag","nation","country","banner"],char:"๐Ÿ‡ซ๐Ÿ‡ฎ",category:"flags"},fr:{keywords:["banner","flag","nation","france","french","country"],char:"๐Ÿ‡ซ๐Ÿ‡ท",category:"flags"},gf:{keywords:["french","guiana","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ซ",category:"flags"},pf:{keywords:["french","polynesia","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ซ",category:"flags"},tf:{keywords:["french","southern","territories","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ซ",category:"flags"},ga:{keywords:["gabon","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ฆ",category:"flags"},gm:{keywords:["gambia","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ฒ",category:"flags"},ge:{keywords:["georgia","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ช",category:"flags"},de:{keywords:["german","nation","flag","country","banner"],char:"๐Ÿ‡ฉ๐Ÿ‡ช",category:"flags"},gh:{keywords:["ghana","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ญ",category:"flags"},gi:{keywords:["gibraltar","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ฎ",category:"flags"},gr:{keywords:["greece","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ท",category:"flags"},gl:{keywords:["greenland","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ฑ",category:"flags"},gd:{keywords:["grenada","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ฉ",category:"flags"},gp:{keywords:["guadeloupe","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ต",category:"flags"},gu:{keywords:["guam","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡บ",category:"flags"},gt:{keywords:["guatemala","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡น",category:"flags"},gg:{keywords:["guernsey","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ฌ",category:"flags"},gn:{keywords:["guinea","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ณ",category:"flags"},gw:{keywords:["guinea","bissau","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ผ",category:"flags"},gy:{keywords:["guyana","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡พ",category:"flags"},ht:{keywords:["haiti","flag","nation","country","banner"],char:"๐Ÿ‡ญ๐Ÿ‡น",category:"flags"},hn:{keywords:["honduras","flag","nation","country","banner"],char:"๐Ÿ‡ญ๐Ÿ‡ณ",category:"flags"},hk:{keywords:["hong","kong","flag","nation","country","banner"],char:"๐Ÿ‡ญ๐Ÿ‡ฐ",category:"flags"},hu:{keywords:["hungary","flag","nation","country","banner"],char:"๐Ÿ‡ญ๐Ÿ‡บ",category:"flags"},is:{keywords:["iceland","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡ธ",category:"flags"},in:{keywords:["india","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡ณ",category:"flags"},indonesia:{keywords:["flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡ฉ",category:"flags"},ir:{keywords:["iran,","islamic","republic","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡ท",category:"flags"},iq:{keywords:["iraq","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡ถ",category:"flags"},ie:{keywords:["ireland","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡ช",category:"flags"},im:{keywords:["isle","man","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡ฒ",category:"flags"},il:{keywords:["israel","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡ฑ",category:"flags"},it:{keywords:["italy","flag","nation","country","banner"],char:"๐Ÿ‡ฎ๐Ÿ‡น",category:"flags"},ci:{keywords:["ivory","coast","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ฎ",category:"flags"},jm:{keywords:["jamaica","flag","nation","country","banner"],char:"๐Ÿ‡ฏ๐Ÿ‡ฒ",category:"flags"},jp:{keywords:["japanese","nation","flag","country","banner"],char:"๐Ÿ‡ฏ๐Ÿ‡ต",category:"flags"},je:{keywords:["jersey","flag","nation","country","banner"],char:"๐Ÿ‡ฏ๐Ÿ‡ช",category:"flags"},jo:{keywords:["jordan","flag","nation","country","banner"],char:"๐Ÿ‡ฏ๐Ÿ‡ด",category:"flags"},kz:{keywords:["kazakhstan","flag","nation","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ฟ",category:"flags"},ke:{keywords:["kenya","flag","nation","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ช",category:"flags"},ki:{keywords:["kiribati","flag","nation","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ฎ",category:"flags"},xk:{keywords:["kosovo","flag","nation","country","banner"],char:"๐Ÿ‡ฝ๐Ÿ‡ฐ",category:"flags"},kw:{keywords:["kuwait","flag","nation","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ผ",category:"flags"},kg:{keywords:["kyrgyzstan","flag","nation","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ฌ",category:"flags"},la:{keywords:["lao","democratic","republic","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡ฆ",category:"flags"},lv:{keywords:["latvia","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡ป",category:"flags"},lb:{keywords:["lebanon","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡ง",category:"flags"},ls:{keywords:["lesotho","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡ธ",category:"flags"},lr:{keywords:["liberia","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡ท",category:"flags"},ly:{keywords:["libya","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡พ",category:"flags"},li:{keywords:["liechtenstein","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡ฎ",category:"flags"},lt:{keywords:["lithuania","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡น",category:"flags"},lu:{keywords:["luxembourg","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡บ",category:"flags"},mo:{keywords:["macao","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ด",category:"flags"},mk:{keywords:["macedonia,","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ฐ",category:"flags"},mg:{keywords:["madagascar","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ฌ",category:"flags"},mw:{keywords:["malawi","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ผ",category:"flags"},my:{keywords:["malaysia","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡พ",category:"flags"},mv:{keywords:["maldives","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ป",category:"flags"},ml:{keywords:["mali","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ฑ",category:"flags"},mt:{keywords:["malta","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡น",category:"flags"},mh:{keywords:["marshall","islands","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ญ",category:"flags"},mq:{keywords:["martinique","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ถ",category:"flags"},mr:{keywords:["mauritania","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ท",category:"flags"},mu:{keywords:["mauritius","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡บ",category:"flags"},yt:{keywords:["mayotte","flag","nation","country","banner"],char:"๐Ÿ‡พ๐Ÿ‡น",category:"flags"},mx:{keywords:["mexico","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ฝ",category:"flags"},fm:{keywords:["micronesia,","federated","states","flag","nation","country","banner"],char:"๐Ÿ‡ซ๐Ÿ‡ฒ",category:"flags"},md:{keywords:["moldova,","republic","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ฉ",category:"flags"},mc:{keywords:["monaco","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡จ",category:"flags"},mn:{keywords:["mongolia","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ณ",category:"flags"},me:{keywords:["montenegro","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ช",category:"flags"},ms:{keywords:["montserrat","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ธ",category:"flags"},ma:{keywords:["morocco","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ฆ",category:"flags"},mz:{keywords:["mozambique","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ฟ",category:"flags"},mm:{keywords:["myanmar","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ฒ",category:"flags"},na:{keywords:["namibia","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ฆ",category:"flags"},nr:{keywords:["nauru","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ท",category:"flags"},np:{keywords:["nepal","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ต",category:"flags"},nl:{keywords:["netherlands","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ฑ",category:"flags"},nc:{keywords:["new","caledonia","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡จ",category:"flags"},nz:{keywords:["new","zealand","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ฟ",category:"flags"},ni:{keywords:["nicaragua","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ฎ",category:"flags"},ne:{keywords:["niger","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ช",category:"flags"},nigeria:{keywords:["flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ฌ",category:"flags"},nu:{keywords:["niue","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡บ",category:"flags"},nf:{keywords:["norfolk","island","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ซ",category:"flags"},mp:{keywords:["northern","mariana","islands","flag","nation","country","banner"],char:"๐Ÿ‡ฒ๐Ÿ‡ต",category:"flags"},kp:{keywords:["north","korea","nation","flag","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ต",category:"flags"},no:{keywords:["norway","flag","nation","country","banner"],char:"๐Ÿ‡ณ๐Ÿ‡ด",category:"flags"},om:{keywords:["oman","flag","nation","country","banner"],char:"๐Ÿ‡ด๐Ÿ‡ฒ",category:"flags"},pk:{keywords:["pakistan","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ฐ",category:"flags"},pw:{keywords:["palau","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ผ",category:"flags"},ps:{keywords:["palestine","palestinian","territories","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ธ",category:"flags"},pa:{keywords:["panama","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ฆ",category:"flags"},pg:{keywords:["papua","new","guinea","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ฌ",category:"flags"},py:{keywords:["paraguay","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡พ",category:"flags"},pe:{keywords:["peru","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ช",category:"flags"},ph:{keywords:["philippines","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ญ",category:"flags"},pn:{keywords:["pitcairn","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ณ",category:"flags"},pl:{keywords:["poland","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ฑ",category:"flags"},pt:{keywords:["portugal","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡น",category:"flags"},pr:{keywords:["puerto","rico","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ท",category:"flags"},qa:{keywords:["qatar","flag","nation","country","banner"],char:"๐Ÿ‡ถ๐Ÿ‡ฆ",category:"flags"},re:{keywords:["rรฉunion","flag","nation","country","banner"],char:"๐Ÿ‡ท๐Ÿ‡ช",category:"flags"},ro:{keywords:["romania","flag","nation","country","banner"],char:"๐Ÿ‡ท๐Ÿ‡ด",category:"flags"},ru:{keywords:["russian","federation","flag","nation","country","banner"],char:"๐Ÿ‡ท๐Ÿ‡บ",category:"flags"},rw:{keywords:["rwanda","flag","nation","country","banner"],char:"๐Ÿ‡ท๐Ÿ‡ผ",category:"flags"},bl:{keywords:["saint","barthรฉlemy","flag","nation","country","banner"],char:"๐Ÿ‡ง๐Ÿ‡ฑ",category:"flags"},sh:{keywords:["saint","helena","ascension","tristan","cunha","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ญ",category:"flags"},kn:{keywords:["saint","kitts","nevis","flag","nation","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ณ",category:"flags"},lc:{keywords:["saint","lucia","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡จ",category:"flags"},pm:{keywords:["saint","pierre","miquelon","flag","nation","country","banner"],char:"๐Ÿ‡ต๐Ÿ‡ฒ",category:"flags"},vc:{keywords:["saint","vincent","grenadines","flag","nation","country","banner"],char:"๐Ÿ‡ป๐Ÿ‡จ",category:"flags"},ws:{keywords:["samoa","flag","nation","country","banner"],char:"๐Ÿ‡ผ๐Ÿ‡ธ",category:"flags"},sm:{keywords:["san","marino","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ฒ",category:"flags"},st:{keywords:["sao","tome","principe","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡น",category:"flags"},saudi_arabia:{keywords:["flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ฆ",category:"flags"},sn:{keywords:["senegal","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ณ",category:"flags"},rs:{keywords:["serbia","flag","nation","country","banner"],char:"๐Ÿ‡ท๐Ÿ‡ธ",category:"flags"},sc:{keywords:["seychelles","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡จ",category:"flags"},sl:{keywords:["sierra","leone","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ฑ",category:"flags"},sg:{keywords:["singapore","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ฌ",category:"flags"},sx:{keywords:["sint","maarten","dutch","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ฝ",category:"flags"},sk:{keywords:["slovakia","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ฐ",category:"flags"},si:{keywords:["slovenia","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ฎ",category:"flags"},sb:{keywords:["solomon","islands","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ง",category:"flags"},so:{keywords:["somalia","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ด",category:"flags"},za:{keywords:["south","africa","flag","nation","country","banner"],char:"๐Ÿ‡ฟ๐Ÿ‡ฆ",category:"flags"},gs:{keywords:["south","georgia","sandwich","islands","flag","nation","country","banner"],char:"๐Ÿ‡ฌ๐Ÿ‡ธ",category:"flags"},kr:{keywords:["south","korea","nation","flag","country","banner"],char:"๐Ÿ‡ฐ๐Ÿ‡ท",category:"flags"},ss:{keywords:["south","sudan","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ธ",category:"flags"},es:{keywords:["spain","flag","nation","country","banner"],char:"๐Ÿ‡ช๐Ÿ‡ธ",category:"flags"},lk:{keywords:["sri","lanka","flag","nation","country","banner"],char:"๐Ÿ‡ฑ๐Ÿ‡ฐ",category:"flags"},sd:{keywords:["sudan","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ฉ",category:"flags"},sr:{keywords:["suriname","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ท",category:"flags"},sz:{keywords:["swaziland","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ฟ",category:"flags"},se:{keywords:["sweden","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡ช",category:"flags"},ch:{keywords:["switzerland","flag","nation","country","banner"],char:"๐Ÿ‡จ๐Ÿ‡ญ",category:"flags"},sy:{keywords:["syrian","arab","republic","flag","nation","country","banner"],char:"๐Ÿ‡ธ๐Ÿ‡พ",category:"flags"},tw:{keywords:["taiwan","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ผ",category:"flags"},tj:{keywords:["tajikistan","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ฏ",category:"flags"},tz:{keywords:["tanzania,","united","republic","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ฟ",category:"flags"},th:{keywords:["thailand","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ญ",category:"flags"},tl:{keywords:["timor","leste","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ฑ",category:"flags"},tg:{keywords:["togo","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ฌ",category:"flags"},tk:{keywords:["tokelau","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ฐ",category:"flags"},to:{keywords:["tonga","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ด",category:"flags"},tt:{keywords:["trinidad","tobago","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡น",category:"flags"},tn:{keywords:["tunisia","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ณ",category:"flags"},tr:{keywords:["turkey","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ท",category:"flags"},turkmenistan:{keywords:["flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ฒ",category:"flags"},tc:{keywords:["turks","caicos","islands","flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡จ",category:"flags"},tuvalu:{keywords:["flag","nation","country","banner"],char:"๐Ÿ‡น๐Ÿ‡ป",category:"flags"},ug:{keywords:["uganda","flag","nation","country","banner"],char:"๐Ÿ‡บ๐Ÿ‡ฌ",category:"flags"},ua:{keywords:["ukraine","flag","nation","country","banner"],char:"๐Ÿ‡บ๐Ÿ‡ฆ",category:"flags"},ae:{keywords:["united","arab","emirates","flag","nation","country","banner"],char:"๐Ÿ‡ฆ๐Ÿ‡ช",category:"flags"},gb:{keywords:["united","kingdom","great","britain","northern","ireland","flag","nation","country","banner","british","UK","english","england","union jack"],char:"๐Ÿ‡ฌ๐Ÿ‡ง",category:"flags"},us:{keywords:["united","states","america","flag","nation","country","banner"],char:"๐Ÿ‡บ๐Ÿ‡ธ",category:"flags"},vi:{keywords:["virgin","islands","us","flag","nation","country","banner"],char:"๐Ÿ‡ป๐Ÿ‡ฎ",category:"flags"},uy:{keywords:["uruguay","flag","nation","country","banner"],char:"๐Ÿ‡บ๐Ÿ‡พ",category:"flags"},uz:{keywords:["uzbekistan","flag","nation","country","banner"],char:"๐Ÿ‡บ๐Ÿ‡ฟ",category:"flags"},vu:{keywords:["vanuatu","flag","nation","country","banner"],char:"๐Ÿ‡ป๐Ÿ‡บ",category:"flags"},va:{keywords:["vatican","city","flag","nation","country","banner"],char:"๐Ÿ‡ป๐Ÿ‡ฆ",category:"flags"},ve:{keywords:["venezuela","bolivarian","republic","flag","nation","country","banner"],char:"๐Ÿ‡ป๐Ÿ‡ช",category:"flags"},vn:{keywords:["viet","nam","flag","nation","country","banner"],char:"๐Ÿ‡ป๐Ÿ‡ณ",category:"flags"},wf:{keywords:["wallis","futuna","flag","nation","country","banner"],char:"๐Ÿ‡ผ๐Ÿ‡ซ",category:"flags"},eh:{keywords:["western","sahara","flag","nation","country","banner"],char:"๐Ÿ‡ช๐Ÿ‡ญ",category:"flags"},ye:{keywords:["yemen","flag","nation","country","banner"],char:"๐Ÿ‡พ๐Ÿ‡ช",category:"flags"},zm:{keywords:["zambia","flag","nation","country","banner"],char:"๐Ÿ‡ฟ๐Ÿ‡ฒ",category:"flags"},zw:{keywords:["zimbabwe","flag","nation","country","banner"],char:"๐Ÿ‡ฟ๐Ÿ‡ผ",category:"flags"},octocat:{keywords:["animal","octopus","github","custom_"],char:null,category:"_custom"},shipit:{keywords:["squirrel","detective","animal","sherlock","inspector","custom_"],char:null,category:"_custom"},bowtie:{keywords:["face","formal","fashion","suit","classy","magic","circus"],char:null,category:"_custom"},neckbeard:{keywords:["nerdy","face","custom_"],char:null,category:"_custom"},metal:{keywords:["fingers","rocknroll","concert","band","custom_"],char:null,category:"_custom"},fu:{keywords:["fuck","finger","dislike","thumbsdown","disapprove","no","custom_"],char:null,category:"_custom"},trollface:{keywords:["internet","meme","custom_"],char:null,category:"_custom"},godmode:{keywords:["doom","oldschool"],char:null,category:"_custom"},goberserk:{keywords:["doom","rage","bloody","hurt"],char:null,category:"_custom"},finnadie:{keywords:["doom","oldschool"],char:null,category:"_custom"},feelsgood:{keywords:["doom","oldschool"],char:null,category:"_custom"},rage1:{keywords:["angry","mad","hate","despise"],char:null,category:"_custom"},rage2:{keywords:["angry","mad","hate","despise"],char:null,category:"_custom"},rage3:{keywords:["angry","mad","hate","despise"],char:null,category:"_custom"},rage4:{keywords:["angry","mad","hate","despise"],char:null,category:"_custom"},suspect:{keywords:["mad","custom_"],char:null,category:"_custom"},hurtrealbad:{keywords:["mad","injured","doom","oldschool","custom_"],char:null,category:"_custom"}},I=function(){function e(e){this.sanitizer=e,this.activeCategory="people",this.searchResults=[],this.searchVisible=!1,this.selected=new r.Subject}return Object.defineProperty(e.prototype,"searchQuery",{get:function(){return this._searchQuery},set:function(e){var r=this;this._searchQuery=e,setTimeout((function(){r.searchResults=Object.keys(M).filter((function(r){return r.includes(e)})).map((function(e){return M[e]})),r.searchResults.splice(50,r.searchResults.length),console.log("looking for '"+e+"' => "+r.searchResults.length+" results")}))},enumerable:!1,configurable:!0}),e.prototype.humanize=function(e){return e.replace(/(^| )[a-z]/g,(function(e){return e.toUpperCase()})).replace(/_/g," ")},e.prototype.select=function(e){this.selected.next(e)},e.prototype.pairs=function(e){return Object.keys(e).map((function(r){return[r,e[r]]}))},e.prototype.hideSearch=function(){var e=this;setTimeout((function(){e.searchVisible=!1}))},e.prototype.showSearch=function(){var e=this;setTimeout((function(){e.searchVisible=!0}))},e.prototype.ngOnInit=function(){var e,r,a={},t={symbols:"warning",people:"people",animals_and_nature:"nature",travel_and_places:"location_on",activity:"local_activity",food_and_drink:"restaurant",objects:"computer",flags:"flag"};try{for(var o=x(this.pairs(M)),n=o.next();!n.done;n=o.next()){var s=n.value,c=(s[0],s[1]);a[c.category]||(a[c.category]={name:c.category,icon:t[c.category]||"code",emojis:[]}),c.html=this.sanitizer.bypassSecurityTrustHtml(twemoji.parse(c.char||"")),a[c.category].emojis.push(c)}}catch(r){e={error:r}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(e)throw e.error}}this.categories=this.pairs(a).map((function(e){return e[1]}))},e}();I.decorators=[{type:t.Component,args:[{selector:"emoji-selector-panel",template:'<div class="search-box" *ngIf="searchVisible">\r\n\t<a mat-icon-button href="javascript:;" (click)="hideSearch()">\r\n\t\t<mat-icon>arrow_back</mat-icon>\r\n\t</a>\r\n\t<mat-form-field appearance="outline" floatLabel="always">\r\n\t\t<mat-label>Search for emoji</mat-label>\r\n\t\t<input name="search" type="text" matInput placeholder="Start typing" [(ngModel)]="searchQuery" />\r\n\t</mat-form-field>\r\n</div>\r\n\r\n<div class="selector">\r\n\t<ng-container *ngIf="searchVisible">\r\n\t\t<div class="emoji-list">\r\n\t\t\t<a href="javascript:;" (click)="select(emoji.char)" \r\n\t\t\t\t*ngFor="let emoji of searchResults" [innerHtml]="emoji.html || \'\'">\r\n\t\t\t</a>\r\n\t\t</div>\r\n\t</ng-container>\r\n\t<ng-container *ngIf="!searchVisible">\r\n\t\t<div class="categories">\r\n\t\t\t<ng-container *ngIf="!searchVisible">\r\n\t\t\t\t<a [title]="humanize(category.name)" [class.active]="activeCategory === category.name" mat-icon-button *ngFor="let category of categories" (click)="activeCategory = category.name">\r\n\t\t\t\t\t<mat-icon>{{category.icon}}</mat-icon>\r\n\t\t\t\t</a>\r\n\r\n\t\t\t\t<a title="Search" [class.active] mat-icon-button (click)="showSearch()">\r\n\t\t\t\t\t<mat-icon>search</mat-icon>\r\n\t\t\t\t</a>\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t\t<ng-container *ngFor="let category of categories">\r\n\t\t\t<div class="emoji-list" *ngIf="activeCategory && activeCategory == category.name">\r\n\t\t\t\t<a href="javascript:;" (click)="select(emoji.char)" \r\n\t\t\t\t\t*ngFor="let emoji of category.emojis" [innerHtml]="emoji.html || \'\'">\r\n\t\t\t\t</a>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n</div>',styles:[":host{background:#111;border:1px solid #333;border-radius:5px;color:#fff;max-width:calc(100vw - 1.5em);padding:.5em;width:calc(288px + 9em)}.selector{display:flex;flex-direction:column}.categories a{opacity:.25;transition:opacity .4s ease-in-out}.categories a:hover{opacity:.5}.categories a.active{opacity:1}.emoji-list{flex-grow:1;height:20em;overflow-y:auto}.emoji-list a{background-color:#111;display:inline-block;margin:4px;padding:2px}.emoji-list a ::ng-deep .emoji{height:32px;width:32px}.emoji-list a:hover{background-color:#333}.search-box{align-items:baseline;display:flex}.search-box mat-form-field{flex-grow:1}@media (max-width:500px){.selector{flex-direction:row;height:27em}.emoji-list{height:auto}}"]}]}],I.ctorParameters=function(){return[{type:n.DomSanitizer}]},I.propDecorators={selected:[{type:t.Output}]};var q=function(){function e(){this._selected=new r.Subject,this.showEmojiPanel=!1}return Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected},enumerable:!1,configurable:!0}),e.prototype.ngOnDestroy=function(){this.removeListener(),this.panelElement.nativeElement.remove()},e.prototype.ngAfterViewInit=function(){(document.body.querySelector("[ng-version]")||document.body).appendChild(this.panelElement.nativeElement)},e.prototype.removeListener=function(){document.removeEventListener("click",this.clickListener),window.removeEventListener("resize",this.resizeListener)},e.prototype.place=function(){var e=this.buttonElement.nativeElement.getBoundingClientRect(),r=this.panelElement.nativeElement.getBoundingClientRect(),a=window.scrollX+e.left+e.width-r.width;a<0&&(a=(window.scrollX+window.innerWidth)/2-r.width/2),Object.assign(this.panelElement.nativeElement.style,{top:window.scrollY+e.top+e.height+"px",left:Math.max(0,a)+"px"})},e.prototype.show=function(){var e=this;this.showEmojiPanel?this.showEmojiPanel=!1:(this.showEmojiPanel=!0,this.place(),setTimeout((function(){e.resizeListener=function(){e.showEmojiPanel&&e.place()},e.clickListener=function(r){for(var a=r.target,t=!1;a;)a.matches("emoji-selector-panel")&&(t=!0),a=a.parentElement;t||(e.showEmojiPanel=!1,e.removeListener())},document.addEventListener("click",e.clickListener),window.addEventListener("resize",e.resizeListener)})))},e.prototype.insert=function(e){this._selected.next(e)},e}();q.decorators=[{type:t.Component,args:[{selector:"emoji-selector-button",template:'\n <button #button type="button" mat-icon-button (click)="show()">\n <mat-icon>emoji_emotions</mat-icon>\n </button>\n <emoji-selector-panel \n #panel\n (selected)="insert($event)"\n [class.visible]="showEmojiPanel"\n ></emoji-selector-panel>\n ',styles:["\n :host {\n display: block;\n position: relative;\n }\n\n emoji-selector-panel {\n position: absolute;\n /* bottom: 2.5em;\n right: 0; */\n opacity: 0;\n pointer-events: none;\n z-index: 10;\n }\n\n emoji-selector-panel.visible {\n pointer-events: initial;\n opacity: 1;\n }\n\n button {\n color: #666\n }\n\n /* :host.bottom-left emoji-selector-panel {\n right: auto;\n left: 0;\n }\n\n :host.top-right emoji-selector-panel {\n top: 2.4em;\n bottom: auto;\n }\n\n :host.top-left emoji-selector-panel {\n top: 2.4em;\n bottom: auto;\n left: 0;\n right: auto;\n } */\n "]}]}],q.propDecorators={selected:[{type:t.Output}],panelElement:[{type:t.ViewChild,args:["panel",{read:t.ElementRef}]}],buttonElement:[{type:t.ViewChild,args:["button",{read:t.ElementRef}]}]};var O=[I,q],C=function(){};C.decorators=[{type:t.NgModule,args:[{declarations:O,imports:[o.CommonModule,d.FormsModule,s.MatIconModule,c.MatButtonModule,i.MatFormFieldModule,l.MatInputModule],exports:O}]}];var P=function(){function e(e,a,t){this.banta=e,this.backend=a,this.matDialog=t,this._subs=new r.Subscription,this.auxOpen=!1,this.auxTitle="Notifications",this.auxMode="notifications",this.mobileFocus=null,this.newNotifications=!1,this.chatLabel="Chat",this.commentsLabel="Comments",this._signInSelected=new r.Subject,this.pointOpen=null,this.pointSubChat=null,this.newPointSubMessage={},this.genericAvatarUrl="https://gravatar.com/avatar/915c804e0be607a4ad766ddadea5c48a?s=512&d=https://codepen.io/assets/avatars/user-avatar-512x512-6e240cf350d2f1cc07c2bed234c3a3bb5f1b237023c204c782622e80d6b212ba.png"}return e.prototype.ngOnInit=function(){var e=this;this._subs.add(this.banta.userChanged.subscribe((function(r){return e.currentUser=r}))),this._subs.add(this.backend.notificationsChanged.subscribe((function(r){return e.notifications=r}))),this._subs.add(this.backend.newNotification.subscribe((function(r){e.newNotifications=!0})))},e.prototype.sendPointSubMessage=function(){return _(this,void 0,void 0,(function(){var e,r,a;return v(this,(function(t){switch(t.label){case 0:if(e=(this.newPointSubMessage.message||"").trim(),this.newPointSubMessage.message="",""===e)return[2];r={user:null,sentAt:Date.now(),upvotes:0,message:e},t.label=1;case 1:return t.trys.push([1,3,,4]),[4,this.pointSubChat.send(r)];case 2:return t.sent(),[3,4];case 3:return a=t.sent(),console.error("Failed to send point sub-message:"),console.error(a),[3,4];case 4:return[2]}}))}))},e.prototype.goToMessage=function(e){return _(this,void 0,void 0,(function(){var r,a,t,o,n;return v(this,(function(s){switch(s.label){case 0:return r=e,e.parentMessageId?[4,this.backend.getMessage(e.topicId,e.parentMessageId)]:[3,2];case 1:if(!(a=s.sent()))return console.error("Failed to look up parent message "+e.topicId+"/"+e.parentMessageId),console.error("Original message was:"),console.dir(r),[2];e=a,s.label=2;case 2:return"comment"!==(t=this.getViewType(e))?[3,5]:(this.pointSubChat&&(this.pointSubChat.close&&this.pointSubChat.close(),this.pointSubChat=null),this.mobileFocus="points",this.pointOpen=e,o=this,[4,this.backend.getSourceForThread(e.topicId,e.id)]);case 3:return o.pointSubChat=s.sent(),n=this,[4,this.backend.refreshMessage(e)];case 4:return n.pointOpen=s.sent(),this.newPointSubMessage={},[3,6];case 5:"chat"===t&&(this.mobileFocus="firehose",this.firehose.jumpToMessage(e)),s.label=6;case 6:return[2]}}))}))},e.prototype.pointUnfocus=function(){this.pointOpen=null,this.pointSubChat&&(this.pointSubChat.close&&this.pointSubChat.close(),this.pointSubChat=null)},e.prototype.ngOnDestroy=function(){this._subs.unsubscribe()},e.prototype.showAux=function(e,r){this.auxOpen=!0,this.auxTitle=e,this.auxMode=r,this.mobileFocus="aux"},e.prototype.showNotifications=function(){this.showAux("Notifications","notifications")},Object.defineProperty(e.prototype,"topicID",{get:function(){return this._topicID},set:function(e){this._topicID=e,this.close(),this.connectToTopic(this._topicID)},enumerable:!1,configurable:!0}),e.prototype.connectToTopic=function(e){return _(this,void 0,void 0,(function(){var r,a;return v(this,(function(t){switch(t.label){case 0:return r=this,[4,this.backend.getSourceForTopic(e+"_firehose")];case 1:return r.firehoseSource=t.sent(),a=this,[4,this.backend.getSourceForTopic(e+"_thepoint")];case 2:return a.pointSource=t.sent(),[2]}}))}))},Object.defineProperty(e.prototype,"signInSelected",{get:function(){return this._signInSelected},enumerable:!1,configurable:!0}),e.prototype.showSignIn=function(){this._signInSelected.next()},e.prototype.close=function(){this.firehoseSource&&(this.firehoseSource.close&&this.firehoseSource.close(),this.firehoseSource=null),this.pointSource&&(this.pointSource.close&&this.pointSource.close(),this.pointSource=null)},Object.defineProperty(e.prototype,"hasPoint",{get:function(){return null!=this.pointOpen},enumerable:!1,configurable:!0}),e.prototype.closeAux=function(){this.auxOpen=!1,this.mobileFocus="firehose"},e.prototype.getViewType=function(e){return e.topicId.endsWith("_firehose")?"chat":(e.topicId.endsWith("_thepoint"),"comment")},e.prototype.upvoteMessage=function(e){return _(this,void 0,void 0,(function(){return v(this,(function(r){switch(r.label){case 0:return e.parentMessageId?[4,this.backend.upvoteMessage(e.topicId,e.parentMessageId,e.id)]:[3,2];case 1:return r.sent(),[3,4];case 2:return[4,this.backend.upvoteMessage(e.topicId,e.id)];case 3:r.sent(),r.label=4;case 4:return[2]}}))}))},e.prototype.showProfile=function(e){this.profileUser=e,this.showAux("@"+e.username+"'s Profile","profile")},e.prototype.sendReport=function(e){this.auxOpen=!1,alert("would send report")},e.prototype.reportMessage=function(e){this.reportedMessage=e,this.showAux("Report message from @"+e.user.username,"report")},e}();P.decorators=[{type:t.Component,args:[{selector:"banta",template:'\r\n<mat-menu #userMenu="matMenu">\r\n <ng-container *ngIf="currentUser">\r\n <button [disabled]="true" mat-menu-item>{{currentUser.displayName}} (@{{currentUser.username}})</button>\r\n <button mat-menu-item (click)="signOut()">Sign Out</button>\r\n </ng-container>\r\n <ng-container *ngIf="!currentUser">\r\n <button mat-menu-item>Sign In</button>\r\n </ng-container>\r\n <button mat-menu-item>Help</button>\r\n</mat-menu>\r\n\r\n<div class="tabs">\r\n <div>\r\n <a mat-button (click)="mobileFocus = \'chat\'">{{chatLabel}}</a>\r\n <a mat-button (click)="mobileFocus = \'comments\'">{{commentsLabel}}</a>\r\n </div>\r\n <div class="spacer"></div>\r\n <div>\r\n <ng-container *ngIf="currentUser">\r\n <button mat-button [matMenuTriggerFor]="userMenu">\r\n @{{currentUser.username}}\r\n </button>\r\n <button mat-icon-button (click)="showNotifications()">\r\n <mat-icon>notification_important</mat-icon>\r\n </button>\r\n </ng-container>\r\n \r\n <button mat-button *ngIf="!currentUser" (click)="showSignIn()">\r\n Sign In\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div class="firehose" [class.focus]="mobileFocus === \'chat\'">\r\n <header>\r\n <div>\r\n <label (click)="mobileFocus = \'chat\'">{{chatLabel}}</label>\r\n <div class="spacer"></div>\r\n\r\n <ng-container *ngIf="currentUser">\r\n <button mat-button [matMenuTriggerFor]="userMenu">\r\n @{{currentUser.username}}\r\n </button>\r\n <button mat-icon-button (click)="showNotifications()">\r\n <mat-icon>notification_important</mat-icon>\r\n </button>\r\n </ng-container>\r\n \r\n <button mat-button *ngIf="!currentUser" (click)="showSignIn()">\r\n Sign In\r\n </button>\r\n </div>\r\n </header>\r\n <banta-chat \r\n #firehose\r\n [source]="firehoseSource"\r\n (signInSelected)="showSignIn()"\r\n (upvoted)="upvoteMessage($event)"\r\n (userSelected)="showProfile($event.user)"\r\n (reported)="reportMessage($event)"\r\n ></banta-chat>\r\n</div>\r\n\r\n<div class="aux" [class.focus]="mobileFocus === \'aux\'" [class.open]="auxOpen">\r\n <header>\r\n <div>\r\n <label>{{auxTitle}}</label>\r\n <div class="spacer"></div>\r\n <button mat-icon-button (click)="auxOpen = false">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </header>\r\n <div class="aux-contents">\r\n <ng-container *ngIf="auxMode === \'profile\'">\r\n <ng-container *ngIf="profileUser">\r\n\r\n <div>\r\n <strong style="font-size: 125%;">\r\n {{profileUser.displayName}}\r\n </strong>\r\n @{{profileUser.username}}\r\n </div>\r\n\r\n <br/>\r\n <strong>Top Messages</strong>\r\n\r\n <div>\r\n <em>Not yet available</em>\r\n </div>\r\n\r\n <br/>\r\n <strong>Recent Messages</strong>\r\n\r\n <div>\r\n <em>Not yet available</em>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf="auxMode === \'report\'">\r\n <p>Are you sure you want to report this message?</p>\r\n\r\n <banta-live-message [message]="reportedMessage"></banta-live-message>\r\n\r\n <div style="text-align: center;">\r\n <button mat-raised-button color="primary" (click)="sendReport(reportedMessage)">Yes, Report</button>\r\n &nbsp;\r\n <button mat-raised-button color="secondary" (click)="auxOpen = false">No, Cancel</button>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngIf="auxMode === \'notifications\'">\r\n\r\n <div *ngIf="!notifications || notifications.length === 0">\r\n <em>You do not have any notifications yet</em>\r\n </div>\r\n \r\n <div class="notifications">\r\n <div class="notification" *ngFor="let notif of notifications">\r\n <div>\r\n <ng-container *ngIf="notif.type === \'upvote\'">\r\n @{{notif.message?.user?.username}} upvoted your post\r\n \r\n <banta-live-message\r\n [message]="notif.message"\r\n (upvoted)="upvoteMessage(notif.message)"\r\n (reported)="reportMessage(notif.message)"\r\n (selected)="goToMessage(notif.message)">\r\n </banta-live-message>\r\n\r\n </ng-container>\r\n <ng-container *ngIf="notif.type === \'notice\'">\r\n <div>\r\n {{notif.message}}\r\n </div>\r\n <a mat-button target="_blank" href="{{notif.actionUrl}}">\r\n {{notif.actionLabel}}\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf="notif.type === \'mention\'">\r\n You were mentioned by @{{notif.message?.user?.username}}\r\n\r\n <banta-live-message\r\n [message]="notif.message"\r\n (upvoted)="upvoteMessage(notif.message)"\r\n (reported)="reportMessage(notif.message)"\r\n (selected)="goToMessage(notif.message)">\r\n </banta-live-message>\r\n\r\n </ng-container>\r\n <ng-container *ngIf="notif.type === \'reply\'">\r\n @{{notif.replyMessage?.user?.username}} replied to your post\r\n \r\n <banta-live-message\r\n [message]="notif.replyMessage"\r\n (upvoted)="upvoteMessage(notif.replyMessage)"\r\n (reported)="reportMessage(notif.replyMessage)"\r\n (selected)="goToMessage(notif.replyMessage)">\r\n </banta-live-message>\r\n </ng-container>\r\n </div>\r\n\r\n <banta-timestamp [value]="notif.sentAt"></banta-timestamp>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n<div class="points" [class.focus]="mobileFocus === \'points\'">\r\n <header>\r\n <div>\r\n <label>{{commentsLabel}}</label>\r\n </div>\r\n </header>\r\n <div class="point-focus">\r\n <div class="actions">\r\n <button mat-button (click)="pointUnfocus()">\r\n <mat-icon>arrow_back</mat-icon>\r\n Back\r\n </button>\r\n\r\n <div class="spacer"></div>\r\n \r\n <ng-container *ngIf="pointOpen">\r\n <div class="counted-action">\r\n <div class="count-indicator"> \r\n {{pointOpen.upvotes}}\r\n </div>\r\n <button mat-icon-button>\r\n <mat-icon>thumb_up</mat-icon>\r\n </button>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf="!pointSubChat">\r\n Error: No subchat\r\n </div>\r\n \r\n <banta-comment-view\r\n class="subcomments"\r\n *ngIf="pointSubChat"\r\n [newestLast]="true"\r\n [allowReplies]="false"\r\n [source]="pointSubChat"\r\n (upvoted)="upvoteMessage($event)"\r\n (reported)="reportMessage($event)"\r\n (userSelected)="showProfile($event.user)"\r\n >\r\n \r\n <banta-comment\r\n class="focused-comment"\r\n data-before\r\n *ngIf="pointOpen"\r\n (upvoted)="upvoteMessage(pointOpen)"\r\n (userSelected)="showProfile(pointOpen.user)"\r\n (reported)="reportMessage(pointOpen)"\r\n [showReplyAction]="false"\r\n [message]="pointOpen"\r\n ></banta-comment>\r\n \r\n <div class="message reply">\r\n Reply:\r\n <form class="new-message" (submit)="sendPointSubMessage()">\r\n <textarea \r\n name="message" \r\n (keydown)="newPointSubMessageKeyDown($event)"\r\n [(ngModel)]="newPointSubMessage.message"></textarea>\r\n \r\n <div class="actions">\r\n <button [disabled]="!newPointSubMessage.message" \r\n mat-raised-button color="primary">Send</button>\r\n </div>\r\n </form>\r\n </div>\r\n </banta-comment-view>\r\n </div>\r\n <div class="points-section">\r\n <banta-comments\r\n [source]="pointSource"\r\n (signInSelected)="showSignIn()"\r\n (upvoted)="upvoteMessage($event)"\r\n (reported)="reportMessage($event)"\r\n (selected)="goToMessage($event)"\r\n (userSelected)="showProfile($event.user)"\r\n ></banta-comments>\r\n </div>\r\n</div>',styles:[':host{display:flex;flex-direction:row;height:40em;padding:.5em;position:relative}.counted-action{align-items:center;display:flex}.count-indicator{border:1px solid #333;border-radius:3px;font-size:9pt;padding:0 3px}header{margin-bottom:1em;position:relative}header div{align-items:center;display:flex;height:30px}header button{color:#666}header label{color:#333;font-size:12pt;font-weight:100;letter-spacing:2px;margin:0 auto 0 0;overflow-x:hidden;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;z-index:1}header:after,header label{display:block;position:relative}header:after{border:1px solid #ccc;content:"";height:0;width:100%;z-index:0}.points{display:flex;flex-direction:column;max-width:50em}:host.point-focus .points{max-width:50em;width:66%}:host.point-focus .points .points-section{opacity:0;pointer-events:none}:host.point-focus .points .point-focus{opacity:1;pointer-events:auto}:host.point-focus .points .point-focus .actions{display:flex}banta-comments{flex-grow:1}.points{flex-shrink:0;font-size:12pt;margin-left:.5em;max-width:30em;position:relative;transition:width .2s ease-in,max-width .2s ease-in;width:33%}.points .points-section{opacity:1;z-index:2}.points .point-focus,.points .points-section{display:flex;flex-direction:column;flex-grow:1;transition:opacity .2s ease-in}.points .point-focus{bottom:0;left:0;opacity:0;padding:.5em;position:absolute;right:0;top:1.75em;width:100%}.firehose{display:flex;flex-direction:column;flex-grow:1;font-size:10pt}form{align-items:center;display:flex;padding:.5em 0}form textarea{font-size:14pt;min-height:6em}form input[type=text],form textarea{background:#000;border:1px solid #333;color:#fff;width:100%}form input[type=text]{height:1em}form .actions{margin-left:1em}form button{display:block;margin:0 0 0 auto}.subcomments ::ng-deep banta-comment{font-size:10pt}.subcomments ::ng-deep banta-comment.focused-comment{background:#001321;color:#fff;font-size:12pt}.aux{display:flex;flex-direction:column;min-width:0;overflow-x:hidden;transition:width .4s ease-out,min-width .4s ease-out;width:0}.aux.open{min-width:18em;width:30em}.aux .aux-contents{align-items:center;display:flex;flex-direction:column;flex-grow:1;justify-content:center;max-width:100%;min-width:10em;width:30em}.notifications .notification{border-bottom:1px solid #333;padding:1em}.notifications .notification banta-timestamp{color:#999;display:block;font-size:9pt;text-align:right}.message.reply{padding:1em}.tabs{display:none}@media (max-width:1015px){:host{flex-direction:column}.tabs{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:rgba(0,0,0,.5);display:flex;left:0;position:absolute;right:0;top:0;width:100%;z-index:10}.points{margin-left:0;max-width:100%;width:100%}header{display:none}.aux,:host.point-focus .points{max-width:100%;width:100%}.aux{min-width:0}.aux,.firehose,.points{background:#000;bottom:0;left:0;position:absolute;right:0;top:2em;z-index:0}.aux.focus,.firehose.focus,.points.focus{z-index:2}}:host-context(.mat-dark-theme) :host{background:#090909;color:#fff}:host-context(.mat-dark-theme) form textarea{background:#ccc;color:#333}:host-context(.mat-dark-theme) header:after{border-color:#222}:host-context(.mat-dark-theme) header label{color:#aaa}']}]}],P.ctorParameters=function(){return[{type:m},{type:f},{type:y.MatDialog}]},P.propDecorators={firehose:[{type:t.ViewChild,args:["firehose",{static:!0}]}],topicID:[{type:t.Input}],chatLabel:[{type:t.Input}],commentsLabel:[{type:t.Input}],signInSelected:[{type:t.Output}],hasPoint:[{type:t.HostBinding,args:["class.point-focus"]}]};var z=function(){};z.decorators=[{type:t.Component,args:[{selector:"banta-logo",template:"banta",styles:["\n :host {\n font-family: 'Odibee Sans', sans-serif;\n font-size: 40pt;\n }\n\n :host.small {\n font-size: 30pt;\n }\n "]}]}];var E=function(){function e(){this._selected=new r.Subject,this._reported=new r.Subject,this._upvoted=new r.Subject,this._userSelected=new r.Subject}return Object.defineProperty(e.prototype,"userSelected",{get:function(){return this._userSelected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reported",{get:function(){return this._reported},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"upvoted",{get:function(){return this._upvoted},enumerable:!1,configurable:!0}),e.prototype.avatarForUser=function(e){return e&&e.avatarUrl?"url("+e.avatarUrl+")":null},e.prototype.upvote=function(){this._upvoted.next()},e.prototype.report=function(){this._reported.next()},e.prototype.select=function(){this._selected.next()},e.prototype.selectUser=function(){this._userSelected.next()},e}();E.decorators=[{type:t.Component,args:[{selector:"banta-chat-message",template:'<div class="message-content">\r\n <div class="user" (click)="selectUser()">\r\n <div class="avatar" [style.background-image]="avatarForUser(message.user)"></div>\r\n <label>{{message.user.username}}</label>\r\n </div>\r\n <div class="content">\r\n <div (click)="select()">\r\n {{message.message}}\r\n </div>\r\n <div class="status">\r\n <div class="count-indicator" *ngIf="message.upvotes > 0">\r\n {{message.upvotes}} <mat-icon [inline]="true">star</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class="actions">\r\n <button mat-icon-button matTooltip="Upvote" matTooltipPosition="below" (click)="upvote()">\r\n <mat-icon [inline]="true">thumb_up</mat-icon>\r\n </button>\r\n <button mat-icon-button matTooltip="Report" matTooltipPosition="below" (click)="report()">\r\n <mat-icon [inline]="true">report</mat-icon>\r\n </button>\r\n</div>',styles:[':host{align-items:center;background-color:#fff;color:#000;display:flex;flex-direction:row;padding:0 1em;transition:background-color .4s ease-out}:host .message-content .content{color:#111}:host:hover{background-color:#ddd}:host.highlight{background:#00121b}:host.highlight:hover{background:#01324d}:host:nth-child(2n){background-color:#eee}:host:nth-child(2n):hover{background:#ddd}:host:nth-child(2n) .message-content .content{color:#222}:host:nth-child(2n).highlight{background:#001a2a}:host:nth-child(2n).highlight:hover{background:#002b44}:host .message-content{align-items:center;display:flex;flex-direction:row;flex-grow:1}:host .message-content .content{display:flex;flex-direction:row;padding:5px 0}:host .message-content .content .status{align-items:center;display:flex;flex-direction:row;margin-left:1em}:host .message-content .content .status mat-icon{margin-left:.5em}:host .user{align-items:center;color:#999;display:flex;flex-shrink:0;font-weight:400;margin-right:.25em;text-align:right}:host .user .avatar{background-color:#333;background-position:50%;background-size:cover;border-radius:100%;flex-grow:0;flex-shrink:0;height:2em;margin-right:1em;width:2em}:host .user:after{content:":";margin-right:1em}:host .content{flex-grow:1}:host .actions{flex-shrink:0;opacity:0;transition:opacity .4s ease-out;white-space:nowrap}:host:hover .actions{opacity:1}.count-indicator{white-space:nowrap}:host-context(.mat-dark-theme){background-color:#000;color:#fff}:host-context(.mat-dark-theme) .message-content .content{color:#ddd}:host-context(.mat-dark-theme):hover{background-color:#111}:host-context(.mat-dark-theme):nth-child(2n).highlight{background:#001a2a}:host-context(.mat-dark-theme):nth-child(2n).highlight:hover{background:#002b44}:host-context(.mat-dark-theme):nth-child(2n):hover{background-color:#111}:host-context(.mat-dark-theme):nth-child(2n){background-color:#080808}:host-context(.mat-dark-theme):nth-child(2n) .message-content .content{color:#eee}label{margin:0}']}]}],E.propDecorators={message:[{type:t.Input}],userSelected:[{type:t.Output}],selected:[{type:t.Output}],reported:[{type:t.Output}],upvoted:[{type:t.Output}]};var L=function(){function e(e){this.backend=e,this._upvoted=new r.Subject,this._reported=new r.Subject,this._selected=new r.Subject}return Object.defineProperty(e.prototype,"upvoted",{get:function(){return this._upvoted},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reported",{get:function(){return this._reported},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"message",{get:function(){return this._message},set:function(e){var r=this,a=null;this._message&&(a=this._message.id),this._message=e,e&&a===e.id||(this.unsubscribe&&this.unsubscribe(),e&&(this.unsubscribe=this.backend.watchMessage(e,(function(e){return r.message=e}))))},enumerable:!1,configurable:!0}),e.prototype.report=function(){this._reported.next()},e.prototype.upvote=function(){this._upvoted.next()},e.prototype.select=function(){this._selected.next()},e}();L.decorators=[{type:t.Component,args:[{selector:"banta-live-chat-message",template:'\n <banta-chat-message \n *ngIf="message"\n [message]="message"\n (upvoted)="upvote()"\n (reported)="report()"\n (selected)="select()"\n ></banta-chat-message>\n ',styles:[""]}]}],L.ctorParameters=function(){return[{type:f}]},L.propDecorators={upvoted:[{type:t.Output}],reported:[{type:t.Output}],selected:[{type:t.Output}],message:[{type:t.Input}]};var T=function(){function e(e){this.elementRef=e,this._sourceSubs=new r.Subscription,this._selected=new r.Subject,this._reported=new r.Subject,this._upvoted=new r.Subject,this._userSelected=new r.Subject,this.messages=[],this.maxMessages=200}return Object.defineProperty(e.prototype,"source",{get:function(){return this._source},set:function(e){var a=this;this._sourceSubs&&(this._sourceSubs.unsubscribe(),this._sourceSubs=null),this._source=e,this.messages=[],e&&(this._sourceSubs=new r.Subscription,this.messages=e.messages.slice(),console.log("Source set:"),console.dir(e),console.log("Messages loaded:"),console.dir(this.messages),this._sourceSubs.add(this._source.messageReceived.subscribe((function(e){return a.messageReceived(e)}))),this._sourceSubs.add(this._source.messageSent.subscribe((function(e){return a.messageSent(e)}))),this._source.currentUserChanged&&this._sourceSubs.add(this._source.currentUserChanged.subscribe((function(e){return a.currentUser=e}))))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"userSelected",{get:function(){return this._userSelected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reported",{get:function(){return this._reported},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"upvoted",{get:function(){return this._upvoted},enumerable:!1,configurable:!0}),e.prototype.addMessage=function(e){if(this.messages.length>this.maxMessages+1)for(;this.messages.length>this.maxMessages;)this.messages.shift();this.messages.push(e)},e.prototype.messageReceived=function(e){var r=this;this.addMessage(e),this.isScrolledToLatest()&&setTimeout((function(){return r.scrollToLatest()}))},e.prototype.isScrolledToLatest=function(){if(!this.messageContainer)return!1;var e=this.messageContainer.nativeElement;return e.scrollTop>e.scrollHeight-e.offsetHeight-10},e.prototype.messageSent=function(e){var r=this;this.addMessage(e),this.messageContainer&&setTimeout((function(){return r.scrollToLatest()}))},e.prototype.scrollToLatest=function(){if(this.messageContainer){var e=this.messageContainer.nativeElement;e.scrollTop=e.scrollHeight}},e.prototype.jumpTo=function(e){var r=this.elementRef.nativeElement.querySelector('banta-chat-message[data-id="'+e.id+'"]');r?(r.scrollIntoView({behavior:"smooth"}),this.flashMessage(e)):alert("could not find message "+e.id)},e.prototype.flashMessage=function(e){e&&(this.flashedMessageId=e.id)},e.prototype.mentionsMe=function(e){return!!this.currentUser&&!!e.message.includes("@"+this.currentUser.username)},e.prototype.upvoteMessage=function(e){this._upvoted.next(e)},e.prototype.reportMessage=function(e){this._reported.next(e)},e.prototype.selectMessage=function(e){this._selected.next(e)},e.prototype.selectMessageUser=function(e){this._userSelected.next(e)},e.prototype.avatarForUser=function(e){return e&&e.avatarUrl?"url("+e.avatarUrl+")":null},e}();T.decorators=[{type:t.Component,args:[{selector:"banta-chat-view",template:'<div class="message-container" #messageContainer>\r\n <ng-content select="[data-before]"></ng-content>\r\n <banta-chat-message \r\n *ngFor="let message of messages"\r\n [message]="message"\r\n [class.highlight]="mentionsMe(message)" \r\n [class.flash]="message.id === flashedMessageId"\r\n (selected)="selectMessage(message)"\r\n (upvoted)="upvoteMessage(message)"\r\n (reported)="reportMessage(message)"\r\n (userSelected)="selectMessageUser(message)"\r\n [attr.data-id]="message.id"\r\n >\r\n </banta-chat-message>\r\n <ng-content select=":not([data-before])"></ng-content>\r\n</div>',styles:[":host{display:flex;flex-direction:column;flex-grow:1}.message-container{background:#fff;color:#000;flex-grow:1;height:10em;overflow-x:hidden;overflow-y:auto;padding:.5em 1em .5em .5em}.message-container.no-scroll{height:auto;overflow-y:visible}:host-context(.mat-dark-theme) .message-container{background:#000;color:#fff}banta-chat-message.flash{-webkit-animation:flash;-webkit-animation-duration:2.5s;-webkit-animation-iteration-count:1;animation:flash;animation-duration:2.5s;animation-iteration-count:1}@-webkit-keyframes flash{0%{background:#425700;transform:scale(1)}25%{transform:scale(1.05)}50%{transform:scale(1)}75%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes flash{0%{background:#425700;transform:scale(1)}25%{transform:scale(1.05)}50%{transform:scale(1)}75%{transform:scale(1.05)}to{transform:scale(1)}}"]}]}],T.ctorParameters=function(){return[{type:t.ElementRef}]},T.propDecorators={source:[{type:t.Input}],selected:[{type:t.Output}],userSelected:[{type:t.Output}],reported:[{type:t.Output}],upvoted:[{type:t.Output}],messageContainer:[{type:t.ViewChild,args:["messageContainer"]}],maxMessages:[{type:t.Input}]};var D=function(){function e(e,a,t){this.banta=e,this.backend=a,this.elementRef=t,this._subs=new r.Subscription,this.user=null,this.signInLabel="Sign In",this.sendLabel="Send",this.permissionDeniedLabel="Send",this._selected=new r.Subject,this._reported=new r.Subject,this._upvoted=new r.Subject,this._userSelected=new r.Subject,this._signInSelected=new r.Subject,this._permissionDeniedError=new r.Subject,this.showEmojiPanel=!1,this.newMessage={}}return e.prototype.ngOnInit=function(){var e=this;this._subs.add(this.banta.userChanged.subscribe((function(r){return e.user=r})))},e.prototype.ngOnDestroy=function(){this._subs.unsubscribe()},Object.defineProperty(e.prototype,"source",{get:function(){return this._source},set:function(e){this._source=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"topicID",{get:function(){return this._source.identifier},set:function(e){this.setSourceFromTopicID(e)},enumerable:!1,configurable:!0}),e.prototype.setSourceFromTopicID=function(e){return _(this,void 0,void 0,(function(){var r;return v(this,(function(a){switch(a.label){case 0:return this._source&&this._source.close&&this._source.close(),this._source=null,r=this,[4,this.backend.getSourceForTopic(e)];case 1:return r._source=a.sent(),[2]}}))}))},Object.defineProperty(e.prototype,"signInSelected",{get:function(){return this._signInSelected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"permissionDeniedError",{get:function(){return this._permissionDeniedError},enumerable:!1,configurable:!0}),e.prototype.showSignIn=function(){this._signInSelected.next()},e.prototype.sendPermissionError=function(){this._permissionDeniedError.next()},e.prototype.insertEmoji=function(e){var r=this.newMessage.message||"";this.newMessage.message=r+e},e.prototype.onKeyDown=function(e){},e.prototype.jumpToMessage=function(e){this.chatView&&this.chatView.jumpTo(e)},e.prototype.select=function(e){this._selected.next(e)},e.prototype.selectUser=function(e){this._userSelected.next(e)},e.prototype.report=function(e){this._reported.next(e)},e.prototype.upvote=function(e){this._upvoted.next(e)},Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reported",{get:function(){return this._reported},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"upvoted",{get:function(){return this._upvoted},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"userSelected",{get:function(){return this._userSelected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"canChat",{get:function(){var e;return!!this.user&&(!this.user.permissions||(!this.user.permissions.canChat||(null===(e=this.user.permissions)||void 0===e?void 0:e.canChat(this.source))))},enumerable:!1,configurable:!0}),e.prototype.sendMessage=function(){return _(this,void 0,void 0,(function(){var e,r,a;return v(this,(function(t){switch(t.label){case 0:if(!this.source)return[2];if(e=(this.newMessage.message||"").trim(),this.newMessage.message="",""===e)return[2];r={user:null,sentAt:Date.now(),upvotes:0,url:location.href,message:e},t.label=1;case 1:return t.trys.push([1,3,,4]),[4,this.source.send(r)];case 2:return t.sent(),[3,4];case 3:return a=t.sent(),console.error("Failed to send message: ",r),console.error(a),[3,4];case 4:return[2]}}))}))},e}();D.decorators=[{type:t.Component,args:[{selector:"banta-chat",template:'<banta-chat-view \r\n #chatView\r\n [source]="source"\r\n (upvoted)="upvote($event)"\r\n (reported)="report($event)"\r\n (selected)="select($event)"\r\n (userSelected)="selectUser($event)"\r\n ></banta-chat-view>\r\n\r\n<form class="new-message" (submit)="sendMessage()">\r\n \r\n <div class="entry-container">\r\n <input\r\n type="text"\r\n name="message" \r\n (keydown)="onKeyDown($event)"\r\n [(ngModel)]="newMessage.message" />\r\n \r\n <emoji-selector-button\r\n (selected)="insertEmoji($event)"\r\n ></emoji-selector-button>\r\n </div>\r\n\r\n <div class="actions">\r\n\r\n <ng-container *ngIf="!user">\r\n <button type="button" (click)="showSignIn()" mat-raised-button color="primary">{{signInLabel}}</button>\r\n </ng-container>\r\n <ng-container *ngIf="user">\r\n <button *ngIf="canChat" [disabled]="!newMessage.message" mat-raised-button color="primary">{{sendLabel}}</button>\r\n <button *ngIf="!canChat" type="button" (click)="sendPermissionError()" mat-raised-button color="primary">{{permissionDeniedLabel}}</button>\r\n </ng-container>\r\n </div>\r\n</form>',styles:[":host{border-radius:5px;flex-direction:column;font-size:10pt;padding:10px}.entry-container,:host{display:flex;flex-grow:1}.entry-container{flex-direction:row;position:relative}.entry-container emoji-selector-button{position:absolute;right:0;top:.15em}.entry-container input{font-size:12pt;height:2.6em;padding-left:1em}.entry-container input:-webkit-autofill,.entry-container input:-webkit-autofill:focus,.entry-container input:-webkit-autofill:hover{-webkit-box-shadow:0 0 0 1000px #211e07 inset;-webkit-text-fill-color:#9da302;-webkit-transition:background-color 5000s ease-in-out 0s;caret-color:#9da302;outline:1px solid #9da302;transition:background-color 5000s ease-in-out 0s}.entry-container emoji-selector-panel{bottom:3.5em;opacity:0;pointer-events:none;position:absolute;right:0}.entry-container emoji-selector-panel.visible{opacity:1;pointer-events:auto}form{align-items:center;display:flex;padding:.5em 0}form textarea{background:#000;border:1px solid #333;color:#fff;font-size:14pt;min-height:6em;width:100%}form input[type=text]{background:#fff;border:1px solid #ccc;color:#000;height:2.5em;width:100%}form .actions{margin-left:1em}form button{display:block;margin:0 0 0 auto}:host-context(.mat-dark-theme) form input[type=text]{background:#000;border:1px solid #333;color:#fff}"]}]}],D.ctorParameters=function(){return[{type:m},{type:f},{type:t.ElementRef}]},D.propDecorators={source:[{type:t.Input}],topicID:[{type:t.Input}],signInLabel:[{type:t.Input}],sendLabel:[{type:t.Input}],permissionDeniedLabel:[{type:t.Input}],signInSelected:[{type:t.Output}],permissionDeniedError:[{type:t.Output}],chatView:[{type:t.ViewChild,args:["chatView",{static:!0}]}],selected:[{type:t.Output}],reported:[{type:t.Output}],upvoted:[{type:t.Output}],userSelected:[{type:t.Output}]};var A=[E,L,T,D],U=function(){};U.decorators=[{type:t.NgModule,args:[{declarations:A,imports:[o.CommonModule,d.FormsModule,s.MatIconModule,c.MatButtonModule,C],exports:A}]}];var F=function(){function e(){this._upvoted=new r.Subject,this._reported=new r.Subject,this._selected=new r.Subject}return Object.defineProperty(e.prototype,"upvoted",{get:function(){return this._upvoted},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reported",{get:function(){return this._reported},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"message",{get:function(){return this._message},set:function(e){this._message=e,this.viewType=this.getViewType(e)},enumerable:!1,configurable:!0}),e.prototype.getViewType=function(e){return e.topicId.endsWith("_firehose")?"chat":(e.topicId.endsWith("_thepoint"),"comment")},e.prototype.upvote=function(){this._upvoted.next()},e.prototype.report=function(){this._reported.next()},e.prototype.select=function(){this._selected.next()},e}();F.decorators=[{type:t.Component,args:[{selector:"banta-live-message",template:'\n <ng-container *ngIf="message">\n <banta-live-chat-message\n *ngIf="viewType === \'chat\'"\n [message]="message"\n (upvoted)="upvote(message)"\n (reported)="report(message)"\n (selected)="select(message)">\n </banta-live-chat-message>\n\n <banta-live-comment \n *ngIf="viewType === \'comment\'"\n [message]="message"\n (upvoted)="upvote(message)"\n (reported)="report(message)"\n (selected)="select(message)">\n </banta-live-comment>\n </ng-container>\n ',styles:[""]}]}],F.ctorParameters=function(){return[]},F.propDecorators={upvoted:[{type:t.Output}],reported:[{type:t.Output}],selected:[{type:t.Output}],message:[{type:t.Input}]};var V=function(){function e(){this._reported=new r.Subject,this._selected=new r.Subject,this._upvoted=new r.Subject,this._userSelected=new r.Subject,this._avatarSelected=new r.Subject,this._usernameSelected=new r.Subject,this.isNew=!1,this.visible=!1,this.showReplyAction=!0}return e.prototype.ngOnInit=function(){var e=this,r=0+500*Math.random();setTimeout((function(){e.isNew=!0,e.visible=!0,setTimeout((function(){return e.isNew=!1}),1e3)}),r)},Object.defineProperty(e.prototype,"userSelected",{get:function(){return this._userSelected.asObservable()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"usernameSelected",{get:function(){return this._usernameSelected.asObservable()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"avatarSelected",{get:function(){return this._avatarSelected.asObservable()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reported",{get:function(){return this._reported.asObservable()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"upvoted",{get:function(){return this._upvoted.asObservable()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected.asObservable()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"commentId",{get:function(){var e;return null===(e=this.message)||void 0===e?void 0:e.id},enumerable:!1,configurable:!0}),e.prototype.report=function(){this._reported.next()},e.prototype.upvote=function(){this._upvoted.next()},e.prototype.select=function(){this._selected.next()},e.prototype.selectUser=function(){this._userSelected.next()},e.prototype.selectUsername=function(e){this._usernameSelected.next(e),this.selectUser()},e.prototype.selectAvatar=function(e){this._avatarSelected.next(e),this.selectUser()},e.prototype.avatarForUser=function(e){return e&&e.avatarUrl?"url("+e.avatarUrl+")":null},e}();V.decorators=[{type:t.Component,args:[{selector:"banta-comment",template:'\r\n<mat-menu #pointItemMenu="matMenu">\r\n <button mat-menu-item (click)="report()">Report</button>\r\n <button mat-menu-item>Help</button>\r\n</mat-menu>\r\n\r\n<div class="message-content">\r\n <div class="user">\r\n <a \r\n href="javascript:;"\r\n class="avatar"\r\n (click)="selectAvatar(message.user)"\r\n [style.background-image]="avatarForUser(message.user)"></a>\r\n <a href="javascript:;" class="display-name" (click)="selectUser()">{{message.user.displayName}}</a>\r\n <a href="javascript:;" class="username" (click)="selectUsername(message.user)">@{{message.user.username}}</a>\r\n </div>\r\n <div class="content">\r\n {{message.message}}\r\n </div>\r\n \r\n <div class="actions">\r\n <banta-timestamp [value]="message.sentAt"></banta-timestamp>\r\n <div class="spacer"></div>\r\n <div class="counted-action" *ngIf="showReplyAction">\r\n <div class="count-indicator">\r\n {{message.submessages?.length || 0}}\r\n </div>\r\n <button mat-icon-button matTooltip="Comment" matTooltipPosition="below" (click)="select()">\r\n <mat-icon [inline]="true">comment</mat-icon>\r\n </button>\r\n </div>\r\n <div class="counted-action">\r\n <div class="count-indicator"> \r\n {{message.upvotes}}\r\n </div>\r\n <button mat-icon-button matTooltip="Upvote" matTooltipPosition="below" (click)="upvote()">\r\n <mat-icon [inline]="true">thumb_up</mat-icon>\r\n </button>\r\n </div>\r\n \r\n <button mat-icon-button [matMenuTriggerFor]="pointItemMenu">\r\n <mat-icon [inline]="true">more_vert</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n',styles:["@-webkit-keyframes comment-appear{0%{transform:translate(100vw)}to{transform:translate(0)}}@keyframes comment-appear{0%{transform:translate(100vw)}to{transform:translate(0)}}:host{display:flex;flex-direction:column;padding:.5em;position:relative;visibility:hidden}:host.new{-webkit-animation-duration:.4s;-webkit-animation-fill-mode:both;-webkit-animation-name:comment-appear;animation-duration:.4s;animation-fill-mode:both;animation-name:comment-appear}:host.new,:host.visible{visibility:visible}:host:hover{background:#eee}:host .message-content .content{margin-left:60px;margin-right:.5em}:host.abbreviated .message-content .content{max-height:8.5em;overflow-y:hidden;text-overflow:ellipsis}:host .actions{align-items:center;display:flex;margin-left:60px;padding-right:10px}:host .actions button{color:#666}:host .actions banta-timestamp{color:#666;font-size:10pt}.user{align-items:center;display:flex;margin:1em 0 0;position:relative}.user .display-name,.user .username{color:#000;display:block;flex-grow:0;flex-shrink:1;font-size:10pt;margin:0 auto 0 0;max-width:100%;overflow:hidden;padding:0 0 0 1em;position:relative;text-overflow:ellipsis;white-space:nowrap;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;z-index:1}.user .display-name.username,.user .username.username{color:#666;flex-grow:1;flex-shrink:0}.avatar{background-color:#333;background-position:50%;background-size:cover;border-radius:100%;flex-grow:0;flex-shrink:0;height:48px;width:48px}.counted-action{align-items:center;display:flex}.count-indicator{color:#666;font-size:9pt;padding:0 0 0 3px}:host-context(.mat-dark-theme) .count-indicator{border-color:#333}:host-context(.mat-dark-theme):hover{background:#060606}:host-context(.mat-dark-theme) .user .display-name,:host-context(.mat-dark-theme) .user .username{color:#fff}@media (max-width:400px){.avatar{height:32px;width:32px}:host .actions{margin-left:44px}:host .message-content .content{margin-left:44px;margin-right:.5em}}"]}]}],V.propDecorators={isNew:[{type:t.HostBinding,args:["class.new"]}],visible:[{type:t.HostBinding,args:["class.visible"]}],message:[{type:t.Input}],showReplyAction:[{type:t.Input}],userSelected:[{type:t.Output}],usernameSelected:[{type:t.Output}],avatarSelected:[{type:t.Output}],reported:[{type:t.Output}],upvoted:[{type:t.Output}],selected:[{type:t.Output}],commentId:[{type:t.HostBinding,args:["attr.data-comment-id"]}]};var R=function(){function e(e){this.backend=e,this._sourceSubs=new r.Subscription,this._selected=new r.Subject,this._upvoted=new r.Subject,this._reported=new r.Subject,this._userSelected=new r.Subject,this._usernameSelected=new r.Subject,this._avatarSelected=new r.Subject,this.showEmptyState=!0,this.allowReplies=!0,this.menuMessage=null,this.messages=[],this.maxMessages=2e3,this.maxVisibleMessages=200,this.newestLast=!1,this.isViewingMore=!1,this.isLoadingMore=!1,this.hasMore=!1,this.newMessages=[],this.olderMessages=[]}return Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"userSelected",{get:function(){return this._userSelected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reported",{get:function(){return this._reported},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"upvoted",{get:function(){return this._upvoted},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"usernameSelected",{get:function(){return this._usernameSelected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"avatarSelected",{get:function(){return this._avatarSelected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"source",{get:function(){return this._source},set:function(e){var a=this;if(this._sourceSubs&&(this._sourceSubs.unsubscribe(),this._sourceSubs=null),this._source=e,e){var t=(e.messages||[]).slice();this.messages=t,this.olderMessages=t.splice(this.maxVisibleMessages,t.length),this.hasMore=this.olderMessages.length>0,this._sourceSubs=new r.Subscription,this._sourceSubs.add(this._source.messageReceived.subscribe((function(e){return a.messageReceived(e)}))),this._sourceSubs.add(this._source.messageSent.subscribe((function(e){return a.messageSent(e)}))),this._source.currentUserChanged&&this._sourceSubs.add(this._source.currentUserChanged.subscribe((function(e){return a.currentUser=e})))}},enumerable:!1,configurable:!0}),e.prototype.upvoteMessage=function(e){this._upvoted.next(e)},e.prototype.reportMessage=function(e){this._reported.next(e)},e.prototype.selectMessage=function(e){this._selected.next(e)},e.prototype.selectMessageUser=function(e){this._userSelected.next(e)},e.prototype.selectUsername=function(e){this._usernameSelected.next(e)},e.prototype.selectAvatar=function(e){this._avatarSelected.next(e)},e.prototype.messageIdentity=function(e,r){return r.id},e.prototype.showNew=function(){return _(this,void 0,void 0,(function(){var e;return v(this,(function(r){return this.isViewingMore=!1,this.messages=this.newMessages.splice(0,this.newMessages.length).concat(this.messages),e=this.messages.splice(this.maxVisibleMessages,this.messages.length),this.olderMessages=e.concat(this.olderMessages),this.olderMessages.splice(this.maxMessages-this.maxVisibleMessages,this.olderMessages.length),[2]}))}))},e.prototype.showMore=function(){return _(this,void 0,void 0,(function(){var e,r;return v(this,(function(a){switch(a.label){case 0:return this.isViewingMore=!0,this.olderMessages.length>0?(this.isLoadingMore=!1,this.messages=this.messages.concat(this.olderMessages.splice(0,50)),[3,4]):[3,1];case 1:return this.source.loadAfter?(this.isLoadingMore=!0,e=this.messages[this.messages.length-1],[4,this.source.loadAfter(e,100)]):[3,3];case 2:return r=a.sent(),this.messages=this.messages.concat(r),this.isLoadingMore=!1,0===r.length&&(this.hasMore=!1),[3,4];case 3:this.hasMore=!1,a.label=4;case 4:return[2]}}))}))},e.prototype.addMessage=function(e){var r=this.messages,a=this.olderMessages;if(this.isViewingMore&&(r=this.newMessages,a=null),this.newestLast){r.push(e);var t=r.splice(this.maxVisibleMessages,r.length);null==a||a.push.apply(a,S(t))}else{r.unshift(e);t=r.splice(this.maxVisibleMessages,r.length);null==a||a.unshift.apply(a,S(t))}(null==a?void 0:a.length)>0&&(this.hasMore=!0)},e.prototype.messageReceived=function(e){var r=this;this.addMessage(e),this.isScrolledToLatest()&&setTimeout((function(){return r.scrollToLatest()}))},e.prototype.isScrolledToLatest=function(){if(!this.messageContainer)return!1;var e=this.messageContainer.nativeElement;return e.scrollTop>e.scrollHeight-e.offsetHeight-10},e.prototype.messageSent=function(e){this.addMessage(e),this.messageContainer&&this.scrollToLatest()},e.prototype.scrollToLatest=function(){if(this.messageContainer){var e=this.messageContainer.nativeElement;e.scrollTop=e.scrollHeight}},e.prototype.mentionsMe=function(e){return!!this.currentUser&&!!e.message.includes("@"+this.currentUser.username)},e.prototype.avatarForUser=function(e){var r=this.genericAvatarUrl;return e&&e.avatarUrl&&(r=e.avatarUrl),"url("+r+")"},e}();R.decorators=[{type:t.Component,args:[{selector:"banta-comment-view",template:'<div class="message-container">\r\n <ng-content select="[data-before]"></ng-content>\r\n \r\n <a mat-button class="nav" [class.visible]="isViewingMore" href="javascript:;" (click)="showNew()">\r\n <mat-icon>file_upload</mat-icon>\r\n New\r\n <ng-container *ngIf="newMessages.length >= 1">\r\n ({{newMessages.length}})\r\n </ng-container>\r\n </a>\r\n\r\n <ng-container *ngIf="messages.length === 0">\r\n <div class="empty-state" *ngIf="showEmptyState">\r\n Be the first to comment!\r\n </div>\r\n </ng-container>\r\n <banta-comment \r\n *ngFor="let message of messages; trackBy: messageIdentity"\r\n class="abbreviated"\r\n [message]="message"\r\n (click)="isViewingMore = true"\r\n [showReplyAction]="allowReplies"\r\n\t\t(userSelected)="selectMessageUser(message)"\r\n (avatarSelected)="selectAvatar($event)"\r\n\t\t(usernameSelected)="selectUsername($event)"\r\n (upvoted)="upvoteMessage(message)"\r\n (reported)="reportMessage(message)"\r\n (selected)="selectMessage(message)"\r\n ></banta-comment>\r\n\r\n <a mat-button class="nav" [class.visible]="hasMore && !isLoadingMore" href="javascript:;" (click)="showMore()">Show more</a>\r\n\r\n <div class="loading-more" *ngIf="isLoadingMore">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n\r\n \x3c!-- <div style="color: #666">\r\n n={{newMessages.length}}, m={{messages.length}}, o={{olderMessages.length}},\r\n v={{maxVisibleMessages}}, M={{maxMessages}}\r\n </div> --\x3e\r\n\r\n <ng-content select=":not([data-before])"></ng-content>\r\n</div>',styles:[":host{display:flex;flex-direction:column;flex-grow:1;opacity:1;transition:opacity .2s ease-in}.message-container{background:#fff;color:#111;flex-grow:1;opacity:1;overflow-x:hidden;padding:.5em 1em 3em .5em;position:relative;transition:opacity .5s ease-in-out}.message-container.no-scroll{height:auto;overflow-y:visible}.message-container.faded{opacity:.25}.message-container .overlay{bottom:0;left:0;position:absolute;right:0;top:0;z-index:10}:host.fixed-height .message-container{overflow-y:auto}:host-context(.mat-dark-theme) .message-container{background:#111;color:#fff}.empty-state{color:#666;margin:3em;text-align:center}:host-context(.mat-dark-theme) .empty-state{color:#666}a.nav{background:#222;border-radius:2em;opacity:0;pointer-events:none;position:absolute;right:.5em;text-align:center;transition:opacity .4s ease-in-out;z-index:10}a.nav.visible{opacity:1;pointer-events:auto}.loading-more{margin:0 auto;padding:2em;text-align:center;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}@media (max-width:400px){.message-container{padding:0 0 3em}}"]}]}],R.ctorParameters=function(){return[{type:f}]},R.propDecorators={showEmptyState:[{type:t.Input}],allowReplies:[{type:t.Input}],fixedHeight:[{type:t.Input},{type:t.HostBinding,args:["class.fixed-height"]}],selected:[{type:t.Output}],userSelected:[{type:t.Output}],reported:[{type:t.Output}],upvoted:[{type:t.Output}],usernameSelected:[{type:t.Output}],avatarSelected:[{type:t.Output}],source:[{type:t.Input}],genericAvatarUrl:[{type:t.Input}],messageContainer:[{type:t.ViewChild,args:["messageContainer"]}],maxMessages:[{type:t.Input}],maxVisibleMessages:[{type:t.Input}],newestLast:[{type:t.Input}]};var B=function(){function e(e,a,t){this.banta=e,this.backend=a,this.elementRef=t,this._upvoted=new r.Subject,this._reported=new r.Subject,this._selected=new r.Subject,this._userSelected=new r.Subject,this._usernameSelected=new r.Subject,this._avatarSelected=new r.Subject,this._subs=new r.Subscription,this.hashtags=[{hashtag:"error",description:"Cause an error"},{hashtag:"timeout",description:"Cause a slow timeout error"},{hashtag:"slow",description:"Be slow when this message is posted"}],this.participants=[],this.signInLabel="Sign In",this.sendLabel="Send",this.replyLabel="Reply",this.sendingLabel="Sending",this.permissionDeniedLabel="Send",this.postCommentLabel="Post a comment",this.postReplyLabel="Post a reply",this._signInSelected=new r.Subject,this._permissionDeniedError=new r.Subject,this._editAvatarSelected=new r.Subject,this.sending=!1,this.expandError=!1,this.selectedMessageVisible=!1}return e.prototype.ngOnInit=function(){var e=this;this._subs.add(this.banta.userChanged.subscribe((function(r){return e.user=r})))},e.prototype.ngOnDestroy=function(){this._subs.unsubscribe()},Object.defineProperty(e.prototype,"source",{get:function(){return this._source},set:function(e){this._source=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"topicID",{get:function(){return this._source.identifier},set:function(e){this.setSourceFromTopicID(e)},enumerable:!1,configurable:!0}),e.prototype.setSourceFromTopicID=function(e){return _(this,void 0,void 0,(function(){var r,a=this;return v(this,(function(t){switch(t.label){case 0:return this._source&&this._source.close&&this._source.close(),this._source=null,r=this,[4,this.backend.getSourceForTopic(e)];case 1:return r._source=t.sent(),this._source.messageReceived.subscribe((function(e){return a.addParticipant(e)})),this._source.messageSent.subscribe((function(e){return a.addParticipant(e)})),this._source.messages.forEach((function(e){return a.addParticipant(e)})),[2]}}))}))},e.prototype.addParticipant=function(e){e&&e.user&&e.user.id&&(this.participants.find((function(r){return r.id===e.user.id}))||this.participants.push(e.user))},e.prototype.showSignIn=function(){this._signInSelected.next()},e.prototype.showEditAvatar=function(){this._editAvatarSelected.next()},Object.defineProperty(e.prototype,"newMessageText",{get:function(){return this._newMessageText},set:function(e){var r=this;this._newMessageText=e,""===this._newMessageText&&this.sendError&&setTimeout((function(){return r.sendError=null}))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"signInSelected",{get:function(){return this._signInSelected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"editAvatarSelected",{get:function(){return this._editAvatarSelected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"permissionDeniedError",{get:function(){return this._permissionDeniedError},enumerable:!1,configurable:!0}),e.prototype.showPermissionDenied=function(){this._permissionDeniedError.next()},Object.defineProperty(e.prototype,"canComment",{get:function(){var e;return!!this.user&&(!this.user.permissions||(!this.user.permissions.canComment||(null===(e=this.user.permissions)||void 0===e?void 0:e.canComment(this.source))))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"upvoted",{get:function(){return this._upvoted.asObservable()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reported",{get:function(){return this._reported.asObservable()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected.asObservable()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"userSelected",{get:function(){return this._userSelected.asObservable()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"usernameSelected",{get:function(){return this._usernameSelected.asObservable()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"avatarSelected",{get:function(){return this._avatarSelected.asObservable()},enumerable:!1,configurable:!0}),e.prototype.onKeyDown=function(e){},e.prototype.insertEmoji=function(e){this.newMessageText+=e},e.prototype.onReplyKeyDown=function(e){},e.prototype.insertReplyEmoji=function(e){this.replyMessage+=e},e.prototype.indicateError=function(e){var r=this;this.sendError=new Error(e),setTimeout((function(){r.expandError=!0,setTimeout((function(){r.expandError=!1}),5e3)}))},e.prototype.upvoteMessage=function(e){return _(this,void 0,void 0,(function(){return v(this,(function(r){switch(r.label){case 0:return this._upvoted.next(e),[4,this.backend.upvoteMessage(e.topicId,e.parentMessageId?e.parentMessageId:e.id,e.parentMessageId?e.id:void 0)];case 1:return r.sent(),[2]}}))}))},e.prototype.reportMessage=function(e){this._reported.next(e)},e.prototype.unselectMessage=function(){return _(this,void 0,void 0,(function(){var e,r=this;return v(this,(function(a){return e=this.selectedMessage,this._selected.next(null),this.selectedMessage=null,this.selectedMessageThread&&(this.selectedMessageThread.close&&this.selectedMessageThread.close(),this.selectedMessageThread=null),e&&setTimeout((function(){return r.scrollToMessage(e)})),[2]}))}))},e.prototype.selectMessage=function(e){return _(this,void 0,void 0,(function(){var r=this;return v(this,(function(a){return this._selected.next(e),this.selectedMessage=e,setTimeout((function(){return r.selectedMessageVisible=!0})),setTimeout((function(){return _(r,void 0,void 0,(function(){var r;return v(this,(function(a){switch(a.label){case 0:return r=this,[4,this.backend.getSourceForThread(this.topicID,e.id)];case 1:return r.selectedMessageThread=a.sent(),[2]}}))}))}),250),[2]}))}))},e.prototype.selectMessageUser=function(e){this._userSelected.next(e)},e.prototype.selectUsername=function(e){this._usernameSelected.next(e)},e.prototype.selectAvatar=function(e){this._avatarSelected.next(e)},e.prototype.sendReply=function(){return _(this,void 0,void 0,(function(){return v(this,(function(e){switch(e.label){case 0:return[4,this.selectedMessageThread.send({message:this.replyMessage,parentMessageId:this.selectedMessage.id,upvotes:0,user:this.user,submessages:[],topicId:this.topicID,sentAt:Date.now(),updatedAt:Date.now()})];case 1:return e.sent(),this.replyMessage="",[2]}}))}))},e.prototype.scrollToMessage=function(e){var r=this.elementRef.nativeElement.querySelector('[data-comment-id="'+e.id+'"]');r&&r.scrollIntoView({block:"center",inline:"start"})},e}();B.decorators=[{type:t.Component,args:[{selector:"banta-comments",template:'\r\n<div class="focused" [class.visible]="selectedMessageVisible" *ngIf="selectedMessage">\r\n\r\n <div>\r\n <a mat-button href="javascript:;" (click)="unselectMessage()">\r\n <mat-icon>arrow_back</mat-icon>\r\n Latest Comments\r\n </a>\r\n </div>\r\n\r\n <banta-comment \r\n [message]="selectedMessage"\r\n ></banta-comment>\r\n\r\n <div class="replies">\r\n\r\n <ng-container *ngIf="!selectedMessageThread">\r\n <div class="loading">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf="selectedMessageThread">\r\n <banta-comment-view \r\n [source]="selectedMessageThread"\r\n [allowReplies]="false"\r\n [fixedHeight]="false"\r\n [showEmptyState]="false"\r\n [newestLast]="true"\r\n ></banta-comment-view>\r\n\r\n <banta-comment-field\r\n [sendLabel]="replyLabel"\r\n [sendingLabel]="sendingLabel"\r\n [hashtags]="hashtags"\r\n [participants]="participants"\r\n (signInSelected)="showSignIn()"\r\n (editAvatarSelected)="showEditAvatar()"\r\n [source]="selectedMessageThread"\r\n [canComment]="canComment"\r\n [signInLabel]="signInLabel"\r\n [permissionDeniedLabel]="permissionDeniedLabel"\r\n (permissionDeniedError)="showPermissionDenied()"\r\n [user]="user"\r\n [label]="postReplyLabel"\r\n ></banta-comment-field>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<div class="main" [class.hidden]="selectedMessage">\r\n <banta-comment-field\r\n [source]="source"\r\n [user]="user"\r\n [sendLabel]="sendLabel"\r\n [sendingLabel]="sendingLabel"\r\n [signInLabel]="signInLabel"\r\n [canComment]="canComment"\r\n [hashtags]="hashtags"\r\n [participants]="participants"\r\n [label]="postCommentLabel"\r\n (editAvatarSelected)="showEditAvatar()"\r\n (signInSelected)="showSignIn()"\r\n [permissionDeniedLabel]="permissionDeniedLabel"\r\n (permissionDeniedError)="showPermissionDenied()"\r\n ></banta-comment-field>\r\n\r\n <banta-comment-view \r\n [class.faded]="selectedMessage"\r\n [source]="source"\r\n [fixedHeight]="fixedHeight"\r\n [maxMessages]="maxMessages"\r\n [maxVisibleMessages]="maxVisibleMessages"\r\n [genericAvatarUrl]="genericAvatarUrl"\r\n (userSelected)="selectMessageUser($event)"\r\n (selected)="selectMessage($event)"\r\n (upvoted)="upvoteMessage($event)"\r\n (reported)="reportMessage($event)"\r\n (usernameSelected)="selectUsername($event)"\r\n (avatarSelected)="selectAvatar($event)"\r\n ></banta-comment-view>\r\n</div>\r\n',styles:[":host{display:flex;flex-direction:column}@-webkit-keyframes select-comment{0%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes select-comment{0%{transform:scale(1.15)}to{transform:scale(1)}}.focused{-webkit-animation-duration:.4s;-webkit-animation-fill-mode:both;-webkit-animation-name:select-comment;animation-duration:.4s;animation-fill-mode:both;animation-name:select-comment}.focused .replies{margin-left:4em;margin-top:1em}banta-comment-view{opacity:1;transition:opacity .4s ease-in-out}banta-comment-view.faded{opacity:.25}.loading{display:block;margin:0 auto;min-height:16em;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.main.hidden{display:none}@media (max-width:500px){.focused .replies{margin-left:0}}"]}]}],B.ctorParameters=function(){return[{type:m},{type:f},{type:t.ElementRef}]},B.propDecorators={hashtags:[{type:t.Input}],participants:[{type:t.Input}],source:[{type:t.Input}],fixedHeight:[{type:t.Input}],maxMessages:[{type:t.Input}],maxVisibleMessages:[{type:t.Input}],genericAvatarUrl:[{type:t.Input}],topicID:[{type:t.Input}],signInLabel:[{type:t.Input}],sendLabel:[{type:t.Input}],replyLabel:[{type:t.Input}],sendingLabel:[{type:t.Input}],permissionDeniedLabel:[{type:t.Input}],postCommentLabel:[{type:t.Input}],postReplyLabel:[{type:t.Input}],signInSelected:[{type:t.Output}],editAvatarSelected:[{type:t.Output}],permissionDeniedError:[{type:t.Output}],upvoted:[{type:t.Output}],reported:[{type:t.Output}],selected:[{type:t.Output}],userSelected:[{type:t.Output}],usernameSelected:[{type:t.Output}],avatarSelected:[{type:t.Output}]};var N=function(){function e(e){this.backend=e,this._upvoted=new r.Subject,this._reported=new r.Subject,this._selected=new r.Subject}return Object.defineProperty(e.prototype,"upvoted",{get:function(){return this._upvoted},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"reported",{get:function(){return this._reported},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selected",{get:function(){return this._selected},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"message",{get:function(){return this._message},set:function(e){var r=this,a=null;this._message&&(a=this._message.id),this._message=e,e&&a===e.id||(this.unsubscribe&&this.unsubscribe(),e&&(this.unsubscribe=this.backend.watchMessage(e,(function(e){return r.message=e}))))},enumerable:!1,configurable:!0}),e.prototype.report=function(){this._reported.next()},e.prototype.upvote=function(){this._upvoted.next()},e.prototype.select=function(){this._selected.next()},e}();N.decorators=[{type:t.Component,args:[{selector:"banta-live-comment",template:'\n <banta-comment \n *ngIf="message"\n [message]="message"\n (upvoted)="upvote()"\n (reported)="report()"\n (selected)="select()"\n ></banta-comment>\n ',styles:[""]}]}],N.ctorParameters=function(){return[{type:f}]},N.propDecorators={upvoted:[{type:t.Output}],reported:[{type:t.Output}],selected:[{type:t.Output}],message:[{type:t.Input}]};var $=function(){function e(){this.canComment=!0,this.signInSelected=new r.Subject,this.editAvatarSelected=new r.Subject,this.sending=!1,this.expandError=!1,this.text="",this.sendLabel="Send",this.sendingLabel="Sending",this.label="Post a comment",this.permissionDeniedLabel="Unavailable",this.signInLabel="Sign In",this.placeholder="",this.participants=[],this._permissionDeniedError=new r.Subject,this.autocompleteVisible=!1,this.autocompleteOptions=[],this.autoCompleteSelected=0}return Object.defineProperty(e.prototype,"permissionDeniedError",{get:function(){return this._permissionDeniedError},enumerable:!1,configurable:!0}),e.prototype.ngAfterViewInit=function(){(document.body.querySelector("[ng-version]")||document.body).appendChild(this.autocompleteEl.nativeElement)},e.prototype.showPermissionDenied=function(){this._permissionDeniedError.next()},e.prototype.showAutoComplete=function(e){this.autoCompleteSelected=0,this.autocompleteOptions=e;var r=this.autocompleteContainerEl.nativeElement.getBoundingClientRect();this.autocompleteEl.nativeElement.getBoundingClientRect();this.autocompleteEl.nativeElement.style.left=window.scrollX+r.left+"px",this.autocompleteEl.nativeElement.style.top=window.scrollY+r.top+"px",this.autocompleteEl.nativeElement.style.width=r.width+"px",this.autocompleteVisible=!0},e.prototype.activateAutoComplete=function(e){e.action(),this.dismissAutoComplete()},e.prototype.dismissAutoComplete=function(){this.autocompleteVisible=!1,this.completionFunc=null,this.completionPrefix=""},e.prototype.indicateError=function(e){var r=this;this.sendError=new Error(e),setTimeout((function(){r.expandError=!0,setTimeout((function(){r.expandError=!1}),5e3)}))},e.prototype.autocomplete=function(e){return _(this,void 0,void 0,(function(){var r;return v(this,(function(a){return r=this.textareaEl.nativeElement,this.text=this.text.slice(0,r.selectionStart-this.completionPrefix.length)+e+this.text.slice(r.selectionStart),[2]}))}))},e.prototype.insert=function(e){return _(this,void 0,void 0,(function(){var r;return v(this,(function(a){return r=this.textareaEl.nativeElement,this.text=this.text.slice(0,r.selectionStart)+e+this.text.slice(r.selectionStart),[2]}))}))},e.prototype.onKeyDown=function(e){return _(this,void 0,void 0,(function(){var r=this;return v(this,(function(a){switch(a.label){case 0:if(console.log(e.key),this.autocompleteVisible){if("Escape"===e.key)return this.dismissAutoComplete(),[2];if("Shift"===e.key)return[2];if("Enter"===e.key)return this.activateAutoComplete(this.autocompleteOptions[this.autoCompleteSelected]),e.stopPropagation(),e.preventDefault(),[2];if("ArrowUp"===e.key)return 0===this.autoCompleteSelected?this.autoCompleteSelected=this.autocompleteOptions.length-1:this.autoCompleteSelected=this.autoCompleteSelected-1,e.stopPropagation(),e.preventDefault(),[2];if("ArrowDown"===e.key)return this.autoCompleteSelected=(this.autoCompleteSelected+1)%this.autocompleteOptions.length,e.stopPropagation(),e.preventDefault(),[2]}return"Enter"===e.key&&e.ctrlKey?[4,this.sendMessage()]:[3,2];case 1:return a.sent(),[2];case 2:if(this.completionFunc){if("Backspace"===e.key){if(this.completionPrefix=this.completionPrefix.slice(0,this.completionPrefix.length-1),""===this.completionPrefix)return this.dismissAutoComplete(),[2]}else{if(" "===e.key||e.key.length>1)return this.dismissAutoComplete(),[2];this.completionPrefix+=e.key}this.showAutoComplete(this.completionFunc(this.completionPrefix))}else":"===e.key?this.startAutoComplete(e,(function(e){return(e=e.slice(1)).startsWith("-")&&(e=e.slice(1)),Object.keys(M).filter((function(r){return r.includes(e)||M[r].keywords.some((function(r){return r.includes(e)}))})).map((function(e){return{label:M[e].char+" "+e,action:function(){return r.autocomplete(M[e].char)}}})).slice(0,5)})):"@"===e.key?this.startAutoComplete(e,(function(e){return e=e.slice(1),r.participants.filter((function(r){return r.username.includes(e)})).map((function(e){return{label:"@"+e.username+" -- "+e.displayName,action:function(){return r.autocomplete("@"+e.username)}}}))})):"#"===e.key&&this.startAutoComplete(e,(function(e){return e=e.slice(1),r.hashtags.filter((function(r){return r.hashtag.includes(e)})).map((function(e){return{label:"#"+e.hashtag+(e.description?" -- "+e.description:""),action:function(){return r.autocomplete("#"+e.hashtag)}}})).slice(0,5)}));return[2]}}))}))},e.prototype.startAutoComplete=function(e,r){this.completionPrefix=e.key,this.completionFunc=r,this.showAutoComplete(this.completionFunc(this.completionPrefix))},e.prototype.onBlur=function(){var e=this;setTimeout((function(){return e.dismissAutoComplete()}),250)},e.prototype.insertEmoji=function(e){this.text+=e},e.prototype.showSignIn=function(){this.signInSelected.next()},e.prototype.showEditAvatar=function(){this.editAvatarSelected.next()},e.prototype.sendMessage=function(){return _(this,void 0,void 0,(function(){var e,r,a;return v(this,(function(t){switch(t.label){case 0:if(!this.source)return[2];this.sending=!0,this.sendError=null,t.label=1;case 1:if(t.trys.push([1,,6,7]),""===(e=(this.text||"").trim()))return[2];r={user:this.user,sentAt:Date.now(),url:location.href,upvotes:0,message:e},t.label=2;case 2:return t.trys.push([2,4,,5]),[4,this.source.send(r)];case 3:return t.sent(),this.text="",[3,5];case 4:return a=t.sent(),this.indicateError("Could not send: "+a.message),console.error("Failed to send message: ",r),console.error(a),[3,5];case 5:return[3,7];case 6:return this.sending=!1,[7];case 7:return[2]}}))}))},e}();$.decorators=[{type:t.Component,args:[{selector:"banta-comment-field",template:'<form class="new-message" (submit)="sendMessage()">\r\n <div class="avatar-container">\r\n <a href="javascript:;" \r\n class="avatar" \r\n (click)="showEditAvatar()" \r\n [style.background-image]="\'url(\' + user?.avatarUrl + \')\'"\r\n ></a>\r\n </div>\r\n <div class="text-container">\r\n <div class="field-container">\r\n <mat-form-field appearance="outline" floatLabel="always">\r\n <mat-label>{{label}}</mat-label>\r\n <textarea \r\n #textarea\r\n name="message" \r\n [placeholder]="placeholder"\r\n matInput\r\n cdkTextareaAutosize \r\n (keydown)="onKeyDown($event)"\r\n (blur)="onBlur()"\r\n [disabled]="sending"\r\n [(ngModel)]="text"></textarea>\r\n </mat-form-field>\r\n <div #autocompleteContainer class="autocomplete-container">\r\n <div #autocomplete class="autocomplete" [class.visible]="autocompleteVisible">\r\n\r\n <div>\r\n <strong>{{completionPrefix}}</strong>...\r\n </div>\r\n\r\n <a \r\n mat-button \r\n *ngFor="let option of autocompleteOptions; index as index" \r\n (click)="activateAutoComplete(option)"\r\n [class.active]="autoCompleteSelected === index" \r\n >\r\n {{option.label}}\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <mat-spinner *ngIf="sending" class="icon loading" diameter="18" strokeWidth="2"></mat-spinner>\r\n <div *ngIf="sendError" class="error-message" [class.expanded]="expandError">\r\n <mat-icon *ngIf="sendError">error</mat-icon>\r\n {{sendError.message}}\r\n </div>\r\n <emoji-selector-button \r\n class="top-right"\r\n (selected)="insertEmoji($event)"\r\n ></emoji-selector-button>\r\n </div>\r\n <div class="actions">\r\n <ng-container *ngIf="!user">\r\n <button \r\n mat-raised-button \r\n color="primary"\r\n type="button"\r\n (click)="showSignIn()"\r\n >{{signInLabel}}</button>\r\n </ng-container>\r\n <ng-container *ngIf="user">\r\n <button \r\n *ngIf="canComment"\r\n mat-raised-button \r\n class="send"\r\n color="primary"\r\n [disabled]="!text || sending" \r\n >\r\n <mat-icon *ngIf="!sending">chevron_right</mat-icon>\r\n <mat-spinner *ngIf="sending" class="icon" diameter="18" strokeWidth="2"></mat-spinner>\r\n <span class="label">\r\n <ng-container *ngIf="!sending">\r\n {{sendLabel}}\r\n </ng-container>\r\n <ng-container *ngIf="sending">\r\n {{sendingLabel}}\r\n </ng-container>\r\n </span>\r\n\r\n </button>\r\n <button \r\n *ngIf="!canComment"\r\n type="button"\r\n (click)="showPermissionDenied()"\r\n mat-raised-button \r\n color="primary"\r\n >{{permissionDeniedLabel}}</button>\r\n </ng-container>\r\n </div>\r\n</form>\r\n',styles:["@-webkit-keyframes comment-field-appear{0%{opacity:0;transform:translateY(128px)}to{opacity:1;transform:translate(0)}}@keyframes comment-field-appear{0%{opacity:0;transform:translateY(128px)}to{opacity:1;transform:translate(0)}}:host{-webkit-animation-delay:.4s;-webkit-animation-duration:.8s;-webkit-animation-fill-mode:both;-webkit-animation-name:comment-field-appear;animation-delay:.4s;animation-duration:.8s;animation-fill-mode:both;animation-name:comment-field-appear;display:block;margin:0 2em 0 0}.avatar-container{display:flex;justify-content:flex-end;width:calc(48px + 1.75em)}.avatar-container .avatar{background:pink;background-position:50%;background-repeat:no-repeat;background-size:cover;border-radius:100%;height:48px;margin-right:.75em;margin-top:.75em;width:48px}form{align-items:center;display:flex;padding:.5em}form .text-container{display:flex;flex-grow:1;position:relative}form .text-container textarea{font-size:14pt;width:100%}form .text-container textarea[disabled]{opacity:.5}form .text-container mat-form-field{margin-bottom:1em}form .text-container emoji-selector-button{bottom:0;position:absolute;right:0}form .text-container .error-message,form .text-container mat-spinner.loading{bottom:.5em;left:.5em;position:absolute}form .text-container .error-message{color:#683333;max-width:1.5em;overflow-x:hidden;transition:max-width 2s ease-in-out;white-space:nowrap}form .text-container .error-message.expanded,form .text-container .error-message:hover{max-width:100%}form .text-container .error-message mat-icon{vertical-align:middle}form input[type=text]{background:#000;border:1px solid #333;color:#fff;height:1em;width:100%}form .actions{margin-left:1em}form button{display:block;margin:0 0 0 auto}form.new-message{align-items:flex-start;display:flex}form.new-message .field-container{display:flex;flex-direction:column;flex-grow:1}form.new-message mat-form-field{width:100%}form.new-message button{margin:1.25em 0 0}button.send{min-width:9em}textarea{max-height:7em}.autocomplete-container{pointer-events:none;position:relative;top:-2em;width:calc(100% - 2em)}.autocomplete{background:#333;display:flex;flex-direction:column;padding:.5em;pointer-events:none;position:absolute;visibility:hidden;z-index:100}.autocomplete.visible{pointer-events:auto;visibility:visible}.autocomplete a{text-align:left;width:100%}.autocomplete a.active{background:#555}@media (max-width:500px){:host{margin:0}.avatar-container{width:auto}.avatar-container .avatar{height:32px;margin-top:1.5em;width:32px}button.send{margin-top:1.5em;min-width:auto}button.send .label{display:none}}"]}]}],$.propDecorators={source:[{type:t.Input}],user:[{type:t.Input}],canComment:[{type:t.Input}],signInSelected:[{type:t.Output}],editAvatarSelected:[{type:t.Output}],sendLabel:[{type:t.Input}],sendingLabel:[{type:t.Input}],label:[{type:t.Input}],permissionDeniedLabel:[{type:t.Input}],signInLabel:[{type:t.Input}],placeholder:[{type:t.Input}],autocompleteEl:[{type:t.ViewChild,args:["autocomplete"]}],autocompleteContainerEl:[{type:t.ViewChild,args:["autocompleteContainer"]}],textareaEl:[{type:t.ViewChild,args:["textarea"]}],hashtags:[{type:t.Input}],participants:[{type:t.Input}],permissionDeniedError:[{type:t.Output}]};var H=[V,R,B,N,$],K=function(){};K.decorators=[{type:t.NgModule,args:[{declarations:H,imports:[o.CommonModule,h.TextFieldModule,d.FormsModule,s.MatIconModule,i.MatFormFieldModule,l.MatInputModule,c.MatButtonModule,g.MatMenuModule,u.MatProgressSpinnerModule,k,C],exports:H}]}];var W=function(){function e(){}return e.forRoot=function(){return{ngModule:e,providers:[m]}},e}();W.decorators=[{type:t.NgModule,args:[{imports:[o.CommonModule,d.FormsModule,k,K,U,C,s.MatIconModule,c.MatButtonModule,p.MatTooltipModule,g.MatMenuModule,y.MatDialogModule,i.MatFormFieldModule,l.MatInputModule,u.MatProgressSpinnerModule],declarations:[P,z,F],exports:[P,z,F,U,K]}]}],e.BantaChatComponent=D,e.BantaCommentsComponent=B,e.BantaCommonModule=k,e.BantaComponent=P,e.BantaLogoComponent=z,e.BantaSdkModule=W,e.BantaService=m,e.ChatBackendService=f,e.ChatMessageComponent=E,e.ChatModule=U,e.ChatViewComponent=T,e.CommentComponent=V,e.CommentFieldComponent=$,e.CommentViewComponent=R,e.CommentsModule=K,e.EMOJIS=M,e.EmojiModule=C,e.EmojiSelectorButtonComponent=q,e.EmojiSelectorPanelComponent=I,e.LiveChatMessageComponent=L,e.LiveCommentComponent=N,e.LiveMessageComponent=F,e.TimestampComponent=b,e.lazyConnection=function(e){return new r.Observable((function(a){var t=new r.Subject,o=t.subscribe(a);return e.start(t),function(){o.unsubscribe(),e.stop()}})).pipe(a.publish()).refCount()},Object.defineProperty(e,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=banta-sdk.umd.min.js.map