`;
+ } else {
+ // SENSITIVE CONTENT
+ media_views = `
+
";
+ }
+
+ return media_views;
+}
+
+/*----------------------------------
+ Get Timeline UI
+----------------------------------*/
+
+function timeline_template(status) {
+
+ if (status.reblog === null) {
+
+ // What to follow
+ if (
+ status.account.id !== JSON.parse(localStorage.getItem("what_to_follow_0")).id &
+ status.account.id !== JSON.parse(localStorage.getItem("what_to_follow_1")).id &
+ status.account.id !== JSON.parse(localStorage.getItem("what_to_follow_2")).id &
+ status.account.id !== current_id
+ ) {
+ localStorage.setItem("what_to_follow_"+String(Math.floor(Math.random()*3)), JSON.stringify(status.account) );
+ }
+
+ const status_account_link = getRelativeURL(status.account.url, status.account.id),
+ status_datetime = getRelativeDatetime(Date.now(), getConversionedDate(null, status.created_at)),
+ status_attr_datetime = getConversionedDate(null, status.created_at);
+
+ let alart_text = "",
+ article_option = "",
+ toot_reblogs_count = "",
+ toot_favourites_count = "",
+ media_views = "";
+
+ // CONTENT WARNING
+ if ( status.spoiler_text ) {
+ alart_text = "
"+status.spoiler_text+" SHOW MORE ",
+ article_option = "content_warning";
+ }
+
+ // REBLOGS COUNT
+ if (status.reblogs_count) {
+ toot_reblogs_count = status.reblogs_count;
+ }
+
+ // FAVOURITES COUNT
+ if (status.favourites_count) {
+ toot_favourites_count = status.favourites_count;
+ }
+
+ // MEDIA ATTACHMENTS
+ if ( status.media_attachments.length ) {
+ media_views = mediaattachments_template(status);
+ }
+
+ // TEMPLATE
+ const html=(`
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${alart_text}
+
+ ${status.content}
+
+ ${media_views}
+
+
+
+
+
+
+
+ `);
+
+ return $(html)
+
+ } else {
+
+ // What to follow
+ if (
+ status.reblog.account.id !== JSON.parse(localStorage.getItem("what_to_follow_0")).id &
+ status.reblog.account.id !== JSON.parse(localStorage.getItem("what_to_follow_1")).id &
+ status.reblog.account.id !== JSON.parse(localStorage.getItem("what_to_follow_2")).id &
+ status.account.id !== current_id
+ ) {
+ localStorage.setItem("what_to_follow_" + String(Math.floor(Math.random()*3)), JSON.stringify(status.reblog.account));
+ }
+
+ const status_datetime = getRelativeDatetime(Date.now(), getConversionedDate(null, status.reblog.created_at)),
+ status_attr_datetime = getConversionedDate(null, status.reblog.created_at),
+ status_reblog_account_link = getRelativeURL(status.reblog.account.url, status.reblog.account.id),
+ status_account_link = getRelativeURL(status.account.url, status.account.id);
+
+ let alart_text = "",
+ article_option = "",
+ toot_reblogs_count = "",
+ toot_favourites_count = "",
+ media_views = "";
+
+ // CONTENT WARNING
+ if ( status.reblog.spoiler_text ) {
+ alart_text = "
"+status.reblog.spoiler_text+" SHOW MORE ",
+ article_option = "content_warning";
+ }
+
+ // REBLOGS COUNT
+ if (status.reblog.reblogs_count) {
+ toot_reblogs_count = status.reblog.reblogs_count;
+ }
+
+ // FAVOURTITES COUNT
+ if (status.reblog.favourites_count) {
+ toot_favourites_count = status.reblog.favourites_count;
+ }
+
+ // MEDIA ATTACHMENTS
+ if ( status.reblog.media_attachments.length ) {
+ media_views = mediaattachments_template(status.reblog);
+ }
+
+ // TEMPLATE
+ const html = (`
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${alart_text}
+
+ ${status.reblog.content}
+
+ ${media_views}
+
+
+
+
+
+
+
+ `);
+
+ return $(html)
+
+ }
+}
+
+/*----------------------------------
+ Get Notifications UI
+----------------------------------*/
+
+function notifications_template(NotificationObj) {
+
+ // Defined for Fav/Bos/Fol/Men
+ const notice_author_link = getRelativeURL(NotificationObj.account.url, NotificationObj.account.id);
+
+ // Defined for Fav/Bos
+ if ( NotificationObj.type === 'favourite' | NotificationObj.type === 'reblog' ) {
+
+ const toot_author_link = getRelativeURL(NotificationObj.status.account.url, NotificationObj.status.account.id),
+ toot_datetime = getRelativeDatetime(Date.now(), getConversionedDate(null, NotificationObj.status.created_at)),
+ toot_attr_datetime = getConversionedDate(null, NotificationObj.status.created_at);
+
+ if( NotificationObj.type=='favourite' ){
+ const html = (`
+
+
+
+
+
+
+ ${NotificationObj.status.content}
+
+
+
+
+
+ `);
+ return $(html);
+
+ } else if ( NotificationObj.type === 'reblog' ) {
+
+ const sid = NotificationObj.status.id,
+ html = (`
+
+
+
+
+
+
+ ${NotificationObj.status.content}
+
+
+
+
+
+ `);
+ return $(html);
+ }
+
+ } else if ( NotificationObj.type === 'mention' ) {
+
+ const toot_author_link = getRelativeURL(NotificationObj.status.account.url, NotificationObj.status.account.id),
+ toot_datetime = getRelativeDatetime(Date.now(), getConversionedDate(null, NotificationObj.status.created_at)),
+ toot_attr_datetime = getConversionedDate(null, NotificationObj.status.created_at);
+
+ let alart_text = "",
+ article_option = "",
+ toot_reblogs_count = "",
+ toot_favourites_count = "",
+ media_views = "";
+
+ // CONTENT WARNING
+ if (NotificationObj.status.spoiler_text) {
+ alart_text = '
'+NotificationObj.status.spoiler_text+' SHOW MORE ',
+ article_option = 'content_warning';
+ }
+
+ // REBLOGS COUNT
+ if (NotificationObj.status.reblogs_count) {
+ toot_reblogs_count = NotificationObj.status.reblogs_count;
+ }
+
+ // FAVOURTITES COUNT
+ if (NotificationObj.status.favourites_count) {
+ toot_favourites_count = NotificationObj.status.favourites_count;
+ }
+
+ // MEDIA ATTACHMENTS
+ if (NotificationObj.status.media_attachments.length) {
+ media_views = mediaattachments_template(NotificationObj.status);
+ }
+
+ const html=(`
+
+
+
+
+
+
+
+
+
+
+
+
+ ${alart_text}
+
+ ${NotificationObj.status.content}
+
+ ${media_views}
+
+
+
+
+
+
+
+ `);
+ return $(html);
+
+ } else {
+ const html=(`
+
+
+
+ `);
+ return $(html);
+ }
+}
+
+/*----------------------------------
+ Get Follows UI
+----------------------------------*/
+
+function follows_template(AccountObj) {
+
+ const array = AccountObj.url.split('/'),
+ profile_link = '/'+array[array.length-1]+'@'+array[array.length-2]+'?mid='+AccountObj.id+'&';
+
+ const html = (`
+
+
+
+
+
+
+
+
+
+
+
+
+ Follow
+
+
+
+
+
+
+
+
+ `);
+
+ return $(html)
+
+}
+
+/*----------------------------------
+ Get Status UI
+----------------------------------*/
+
+function status_template(status, class_options) {
+
+ if ( status.reblog === null ) {
+
+ const status_account_link = getRelativeURL(status.account.url, status.account.id),
+ status_datetime = getConversionedDate(null, status.created_at),
+ status_attr_datetime = getConversionedDate(null, status.created_at);
+
+ let alart_text = "",
+ article_option = "",
+ toot_reblogs_count = "",
+ toot_favourites_count = "",
+ media_views = "";
+
+ // CONTENT WARNING
+ if (status.spoiler_text) {
+ alart_text = '
'+status.spoiler_text+' SHOW MORE ',
+ article_option = 'content_warning';
+ }
+
+ // REBLOGS COUNT
+ if (status.reblogs_count) {
+ toot_reblogs_count = status.reblogs_count;
+ }
+
+ // FAVOURITES COUNT
+ if (status.favourites_count) {
+ toot_favourites_count = status.favourites_count;
+ }
+
+ // MEDIA ATTACHMENTS
+ if (status.media_attachments.length) {
+ media_views = mediaattachments_template(status);
+ }
+
+ // TEMPLATE
+ const html=(`
+
+
+
+
+
+ ${alart_text}
+
+ ${status.content}
+
+ ${media_views}
+
+ ${status_datetime}
+
+
+
+
+
+
+ `);
+
+ // change URL
+ history.pushState(null, null, getRelativeURL(status.account.url, status.account.id, '/status/'+status.id));
+
+ return $(html)
+
+ } else {
+
+ const status_datetime = getConversionedDate(null, status.reblog.created_at),
+ status_attr_datetime = getConversionedDate(null, status.reblog.created_at),
+ status_reblog_account_link = getRelativeURL(status.reblog.account.url, status.reblog.account.id),
+ status_account_link = getRelativeURL(status.reblog.account.url, status.reblog.account.id);
+
+ let alart_text = "",
+ article_option = "",
+ toot_reblogs_count = "",
+ toot_favourites_count = "",
+ media_views = "";
+
+ // CONTENT WARNING
+ if (status.spoiler_text) {
+ alart_text = '
'+status.reblog.spoiler_text+' SHOW MORE ',
+ article_option = 'content_warning';
+ }
+
+ // REBLOGS COUNT
+ if (status.reblog.reblogs_count) {
+ toot_reblogs_count = status.reblog.reblogs_count;
+ }
+
+ // FAVOURTITES COUNT
+ if (status.reblog.favourites_count) {
+ toot_favourites_count = status.reblog.favourites_count;
+ }
+
+ // MEDIA ATTACHMENTS
+ if(status.reblog.media_attachments.length){
+ media_views = mediaattachments_template(status.reblog);
+ }
+
+ // TEMPLATE
+ const html=(`
+
+
+
+
+
+
+
+
+ ${alart_text}
+
+ ${status.reblog.content}
+
+ ${media_views}
+
+
+ ${status_datetime}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `);
+
+ // change URL
+ history.pushState(null, null, getRelativeURL(status.reblog.account.url, status.reblog.id, '/status/'+status.reblog.id));
+ return $(html)
+
+ }
+}
+
+/*----------------------------------
+ Get Media UI
+----------------------------------*/
+
+function media_template(status, mediaURL) {
+
+ if ( !status ) {
+ const html = (`
+
+ `);
+ return $(html)
+ } else {
+
+ const status_template = timeline_template(status).html(),
+ html = (`
+
+ `);
+ return $(html)
+ }
+
+}
+
+/*----------------------------------
+ Get Context UI
+----------------------------------*/
+
+function context_template(status, class_options) {
+
+ if ( status.reblog === null ) {
+
+ const status_account_link = getRelativeURL(status.account.url, status.account.id),
+ status_datetime = getRelativeDatetime(Date.now(), getConversionedDate(null, status.created_at)),
+ status_attr_datetime = getConversionedDate(null, status.created_at);
+
+ let alart_text = "",
+ article_option = "",
+ toot_reblogs_count = "",
+ toot_favourites_count = "",
+ media_views = "";
+
+ // CONTENT WARNING
+ if ( status.spoiler_text ) {
+ alart_text = '
'+status.spoiler_text+' SHOW MORE ',
+ article_option = 'content_warning';
+ }
+
+ // REBLOGS COUNT
+ if (status.reblogs_count) {
+ toot_reblogs_count = status.reblogs_count;
+ }
+
+ // FAVOURITES COUNT
+ if (status.favourites_count) {
+ toot_favourites_count = status.favourites_count;
+ }
+
+ // MEDIA ATTACHMENTS
+ if( status.media_attachments.length) {
+ media_views = mediaattachments_template(status);
+ }
+
+ // TEMPLATE
+ const html=(`
+
+
+
+
+
+
+
+
+
+
+
+ ${alart_text}
+
+ ${status.content}
+
+ ${media_views}
+
+
+
+
+
+
+
+ `);
+
+ return $(html)
+
+ } else {
+
+ const status_datetime = getRelativeDatetime(Date.now(), getConversionedDate(null, status.reblog.created_at)),
+ status_attr_datetime = getConversionedDate(null, status.reblog.created_at),
+ status_reblog_account_link = getRelativeURL(status.reblog.account.url, status.reblog.account.id),
+ status_account_link = getRelativeURL(status.account.url, status.account.id);
+
+ let alart_text = "",
+ article_option = "",
+ toot_reblogs_count = "",
+ toot_favourites_count = "",
+ media_views = "";
+
+ // CONTENT WARNING
+ if ( status.spoiler_text ) {
+ alart_text = '
'+status.reblog.spoiler_text+' SHOW MORE ',
+ article_option = 'content_warning';
+ }
+
+ // REBLOGS COUNT
+ if (status.reblog.reblogs_count) {
+ toot_reblogs_count = status.reblog.reblogs_count;
+ }
+
+ // FAVOURTITES COUNT
+ if (status.reblog.favourites_count) {
+ toot_favourites_count = status.reblog.favourites_count;
+ }
+
+ // MEDIA ATTACHMENTS
+ if (status.reblog.media_attachments.length) {
+ media_views = mediaattachments_template(status.reblog);
+ }
+
+ // TEMPLATE
+ const html=(`
+
+
+
+
+
+
+
+
+
+
+
+ ${alart_text}
+
+ ${status.reblog.content}
+
+ ${media_views}
+
+
+
+
+
+
+
+ `);
+
+ return $(html)
+
+ }
+}
+
+/*----------------------------------
+ Set Timeline
+----------------------------------*/
+
+function setTimeline(level,load_options) {
+
+ let isSyncing = true;
+
+ if ( load_options === undefined ) {
+ var load_options = [];
+ }
+
+ // Get timeline
+ api.get(level, load_options, function(statuses) {
+
+ let reply_sources = {};
+ for ( let i in statuses ) {
+
+ timeline_template(statuses[i]).appendTo("#js-timeline");
+
+ if (statuses[i].in_reply_to_id && level === "timelines/home" | level === "timelines/public" ) {
+
+ // 同じ返信先が無い場合
+ if (!reply_sources[statuses[i].in_reply_to_id] & !$(".toot_entry[sid='"+statuses[i].in_reply_to_id+"']").length ) {
+ reply_sources[statuses[i].in_reply_to_id] = statuses[i].id;
+ api.get('statuses/'+statuses[i].in_reply_to_id, function(in_reply_statuses) {
+ $("#js-timeline .toot_entry[sid='"+reply_sources[in_reply_statuses.id]+"']").before(context_template(in_reply_statuses, 'ancestors_status default_padding'));
+ replace_emoji();
+ });
+ }
+
+ }
+
+ };
+
+ links = getLinkFromXHRHeader(responce_headers);
+ replaceInternalLink();
+ replace_emoji();
+
+ if (!statuses.length) {
+ $('#js-timeline_footer > i').css({"display":"none"});
+ }
+
+ isSyncing = false;
+
+ });
+
+ // Infinite scroll
+ $(window).scroll(function () {
+
+ // Load before 700px from last
+ if ( $(window).scrollTop()+window.innerHeight >= $(document).height()-700 ) {
+
+ if (!isSyncing) {
+
+ isSyncing = true;
+ load_options.unshift( {name:"max_id",data:links['next'].match(/max_id=(.+)&?/)[1]} );
+
+ api.get(level, load_options, function(statuses) {
+
+ if (statuses.length) {
+
+ let reply_sources = {};
+ for ( let i in statuses ) {
+
+ timeline_template(statuses[i]).appendTo("#js-timeline");
+
+ if (statuses[i].in_reply_to_id && level === "timelines/home" | level === "timelines/public" ) {
+ if (!reply_sources[statuses[i].in_reply_to_id] & !$(".toot_entry[sid='"+statuses[i].in_reply_to_id+"']").length) {
+ reply_sources[statuses[i].in_reply_to_id] = statuses[i].id;
+ api.get('statuses/'+statuses[i].in_reply_to_id, function(in_reply_statuses) {
+ $("#js-timeline .toot_entry[sid='"+reply_sources[in_reply_statuses.id]+"']").before(context_template(in_reply_statuses, 'ancestors_status default_padding'));
+ replace_emoji();
+ });
+ }
+
+ }
+
+ };
+
+ links = getLinkFromXHRHeader(responce_headers);
+ replaceInternalLink();
+ replace_emoji();
+ isSyncing = false;
+
+ } else {
+
+ $('.timeline_footer > i').css({"display":"none"});
+ $('.timeline_footer').append('
');
+ isSyncing = true;
+
+ }
+ });
+
+ load_options.shift();
+
+ };
+
+ };
+
+ });
+
+ // Streaming
+ $(function() {
+
+ if ( level === "timelines/home" ) {
+ var streamscope = "user",
+ scope = "home";
+ } else if ( level === "timelines/public" & load_options.length) {
+ var streamscope = "public:local",
+ scope = "local";
+ } else if ( level === "timelines/public" & !load_options.length) {
+ var streamscope = "public",
+ scope = "federated";
+ }
+
+ let statuses = [];
+ const original_title = $('title').text();
+
+ api.stream(streamscope, function(userstream) {
+
+ if (userstream.event === "update") {
+
+ const streaming_option = localStorage.getItem("setting_post_stream");
+
+ if ( streaming_option === "manual" ) {
+ // Is alredy exist?
+ if ( !$('.toot_entry[sid="'+userstream.payload.id+'"]').length ) {
+
+ $('#js-stream_update').css({'display':'block','height':'auto','padding':'10px'});
+ statuses.unshift(userstream.payload);
+ $('#js-stream_update > button > span').text(statuses.length);
+ $('title').text("("+statuses.length+") "+original_title);
+
+ $('#header .header_nav_list .'+scope+'_badge').removeClass('invisible');
+
+ }
+ } else if ( streaming_option === "auto" ) {
+ // Is not alredy exist
+ if ( !$('.toot_entry[sid="'+userstream.payload.id+'"]').length ) {
+
+ timeline_template(userstream.payload).prependTo("#js-timeline");
+ replaceInternalLink();
+ replace_emoji();
+
+ //context
+ if ( level === "timelines/home" | level === "timelines/public" ) {
+ if (userstream.payload.in_reply_to_id & !$(".toot_entry[sid='"+userstream.in_reply_to_id+"']").length) {
+ let reply_source = userstream.payload.id;
+ api.get('statuses/'+userstream.payload.in_reply_to_id, function(in_reply_statuses) {
+ $("#js-timeline .toot_entry[sid='"+reply_source+"']").before(context_template(in_reply_statuses, 'ancestors_status default_padding'));
+ replaceInternalLink();
+ replace_emoji();
+ });
+ }
+ }
+
+ }
+ }
+ }
+ });
+
+ $(document).on('click','#js-stream_update', function(e) {
+
+ $('#header .header_nav_list .'+scope+'_badge').addClass('invisible');
+ $('#js-stream_update').css({'display':'none','height':'0','padding':'0px'});
+
+ statuses.reverse();
+
+ for ( let i in statuses ) {
+ timeline_template(statuses[i]).prependTo("#js-timeline");
+ replace_emoji();
+
+ // context
+ if ( level === "timelines/home" | level === "timelines/public" ) {
+ if (statuses[i].in_reply_to_id) {
+ const reply_source = statuses[i].id;
+ api.get('statuses/'+statuses[i].in_reply_to_id, function(in_reply_statuses) {
+ $("#js-timeline .toot_entry[sid='"+reply_source+"']").before(context_template(in_reply_statuses, 'ancestors_status default_padding'));
+ replace_emoji();
+ });
+ }
+ }
+
+ $('title').text(original_title);
+ };
+
+ statuses = [];
+
+ });
+
+ });
+
+};
+
+/*----------------------------------
+ Set Other Timeline
+----------------------------------*/
+
+function setOtherTimeline(instance, load_options) {
+
+ let isSyncing = true;
+
+ if ( load_options === undefined ) {
+ var load_options = [];
+ }
+
+ // Get timeline
+ const loadstatus = instance + "timelines/public"
+ api.getOther(loadstatus, load_options, function(statuses) {
+
+ let reply_sources = {};
+ for ( let i in statuses ) {
+
+ timeline_template(statuses[i]).appendTo("#js-timeline");
+
+ if (statuses[i].in_reply_to_id ) {
+ // Is Alredy exist
+ if (!reply_sources[statuses[i].in_reply_to_id]) {
+ reply_sources[statuses[i].in_reply_to_id] = statuses[i].id;
+ api.getOther(instance + 'statuses/'+statuses[i].in_reply_to_id, function(in_reply_statuses) {
+ $("#js-timeline .toot_entry[sid='"+reply_sources[in_reply_statuses.id]+"']").before(context_template(in_reply_statuses, 'ancestors_status default_padding'));
+ replace_emoji();
+ });
+ }
+ }
+
+ };
+
+ $('.toot_entry .toot_footer').addClass('invisible');
+ links = getLinkFromXHRHeader(responce_headers);
+ replaceInternalLink();
+ replace_emoji();
+
+ if (!statuses.length) {
+ $('#js-timeline_footer > i').css({"display":"none"});
+ }
+
+ isSyncing = false;
+
+ });
+
+ // Infinite scroll
+ $(window).scroll(function () {
+
+ // Load before 700px from last
+ if ( $(window).scrollTop()+window.innerHeight >= $(document).height()-700 ) {
+
+ if (!isSyncing) {
+
+ isSyncing = true;
+ load_options.unshift( {name:"max_id",data:links['next'].match(/max_id=(.+)&?/)[1]} );
+
+ api.getOther(loadstatus, load_options, function(statuses) {
+
+ if (statuses.length) {
+
+ let reply_sources = {};
+ for ( let i in statuses ) {
+
+ timeline_template(statuses[i]).appendTo("#js-timeline");
+
+ if (statuses[i].in_reply_to_id ) {
+ // alredy exist
+ if (!reply_sources[statuses[i].in_reply_to_id]) {
+ reply_sources[statuses[i].in_reply_to_id] = statuses[i].id;
+ api.getOther(instance+'statuses/'+statuses[i].in_reply_to_id, function(in_reply_statuses) {
+ $("#js-timeline .toot_entry[sid='"+reply_sources[in_reply_statuses.id]+"']").before(context_template(in_reply_statuses, 'ancestors_status default_padding'));
+ replace_emoji();
+ });
+ }
+ }
+
+ };
+
+ $('.toot_entry .toot_footer').addClass('invisible');
+ links = getLinkFromXHRHeader(responce_headers);
+ replaceInternalLink();
+ replace_emoji();
+ isSyncing = false;
+
+ } else {
+
+ $('.timeline_footer > i').css({"display":"none"});
+ $('.timeline_footer').append('
');
+ isSyncing = true;
+
+ }
+ });
+
+ load_options.shift();
+
+ };
+
+ };
+
+ });
+
+};
+
+/*----------------------------------
+ Set notifications
+----------------------------------*/
+
+function setNotifications(load_options) {
+
+ let isSyncing = true;
+
+ if (load_options === undefined) {
+ var load_options = [];
+ }
+
+ // Get notice
+ api.get('notifications', load_options, function(NotificationObj) {
+
+ for (let i in NotificationObj) {
+ notifications_template(NotificationObj[i]).appendTo("#js-timeline");
+ };
+
+ links = getLinkFromXHRHeader(responce_headers);
+ replaceInternalLink();
+ replace_emoji();
+
+ if (!NotificationObj.length) {
+ $('#js-timeline_footer > i').css({"display":"none"});
+ }
+
+ isSyncing = false;
+
+ });
+
+ // Infinite scroll
+ $(window).scroll(function () {
+
+ // Load before 700px
+ if($(window).scrollTop() + window.innerHeight >= $(document).height()-700) {
+
+ if( !isSyncing ){
+
+ isSyncing = true;
+ // get latest status id
+ load_options.unshift( {name:"max_id",data:links['next'].match(/max_id=(.+)&?/)[1]} );
+
+ api.get('notifications', load_options, function(NotificationObj) {
+
+ if (NotificationObj.length) {
+
+ for (let i in NotificationObj) {
+ notifications_template(NotificationObj[i]).appendTo("#js-timeline");
+ };
+
+ links = getLinkFromXHRHeader(responce_headers);
+ replaceInternalLink();
+ replace_emoji();
+ isSyncing = false;
+
+ } else {
+
+ $('.timeline_footer > i').css({"display":"none"});
+ $('.timeline_footer').append('
');
+ isSyncing = true;
+
+ }
+
+ });
+
+ load_options.shift();
+
+ };
+
+ };
+
+ });
+
+ api.stream("user", function(userstream) {
+ const original_title = $('title').text();
+
+ if (userstream.event === "notification") {
+
+ const streaming_option = localStorage.getItem("setting_post_stream");
+
+ if ( streaming_option === "manual" ) {
+ // todo
+ } else if ( streaming_option === "auto" ) {
+ notifications_template(userstream.payload).prependTo("#js-timeline");
+ replaceInternalLink();
+ replace_emoji();
+ }
+
+ }
+ });
+
+}
+
+/*----------------------------------
+ Set Following/Followers
+----------------------------------*/
+
+function setFollows(mid, param, load_options) {
+
+ let isSyncing = true,
+ followsList = [];
+
+ api.get('accounts/'+mid+'/'+param, load_options, function(follows) {
+
+
+ for (let i in follows) {
+ follows_template(follows[i]).appendTo("#js-follows_profile");
+ followsList.unshift(follows[i].id);
+ };
+
+ api.getArray('accounts/relationships', [{name:'id', data:followsList}], function(RelationshipsObj) {
+ for ( let i in RelationshipsObj ) {
+ if ( RelationshipsObj[i].following ) {
+ const button = $('#js-follows_profile .follow_button[mid="'+RelationshipsObj[i].id+'"]');
+ button.removeClass("follow_button");
+ button.addClass("following_button");
+ button.text('Following');
+ }
+ }
+ });
+
+ links = getLinkFromXHRHeader(responce_headers);
+ replace_emoji();
+
+ $("#js-follows_footer > i").css({"display":"none"});
+ isSyncing = false;
+
+ });
+
+ // Infinite scroll
+ $(window).scroll(function () {
+
+ if ($(window).scrollTop() + window.innerHeight >= $(document).height()-700) {
+
+ if( !isSyncing ){
+ isSyncing = true;
+
+ // get latest id
+ load_options.unshift( {name:"max_id",data:links['next'].match(/max_id=(.+)&?/)[1]} );
+
+ api.get('accounts/'+mid+'/'+param, load_options, function(follows) {
+
+ let followsList = [];
+
+ if (follows.length) {
+
+ for(let i in follows) {
+ follows_template(follows[i]).appendTo("#js-follows_profile");
+ followsList.unshift(follows[i].id);
+ };
+
+ api.getArray('accounts/relationships', [{name:'id', data:followsList}], function(RelationshipsObj) {
+ for ( let i in RelationshipsObj ) {
+ if ( RelationshipsObj[i].following ) {
+ const button = $('#js-follows_profile .follow_button[mid="'+RelationshipsObj[i].id+'"]');
+ button.removeClass("follow_button");
+ button.addClass("following_button");
+ button.text('Following');
+ }
+ }
+ });
+
+ links = getLinkFromXHRHeader(responce_headers);
+ replace_emoji();
+ isSyncing = false;
+
+ } else {
+ isSyncing = true;
+ }
+
+ });
+
+ load_options.shift();
+
+ };
+
+ };
+
+ });
+
+};
+
+/*----------------------------------
+ Set user search
+----------------------------------*/
+
+function setUserSearch(query) {
+
+ api.get('search', [{name:'q',data:query},{name:'resolve',data:'true'}], function(search) {
+
+ for(let i in search.accounts) {
+ follows_template(search.accounts[i]).appendTo("#js-follows_profile");;
+ }
+
+ $("#js-follows_footer > i").css({"display":"none"});
+ replace_emoji();
+
+ });
+
+};
+
+/*----------------------------------
+ Set Relationship
+----------------------------------*/
+
+function setAccount(AccountObj) {
+
+ $("#js_header_image").attr('src', AccountObj.header);
+ $("#js_profile_image").attr('src', AccountObj.avatar);
+ $("#js_toots_count").text(AccountObj.statuses_count);
+ $("#js_following_count").text(AccountObj.following_count);
+ $("#js_followers_count").text(AccountObj.followers_count);
+ $("#js_profile_displayname").text(AccountObj.display_name);
+ $("#js_profile_username").text(AccountObj.acct);
+ $("#js_profile_bio").html(AccountObj.note);
+
+ if( AccountObj.id === current_id ) {
+
+ $(`
+
+
+ Edit profile
+
+ `).appendTo('.profile_button_box');
+
+ $(`
+
+ FAVOURITES
+ Show
+
+ `).appendTo("#js-profile_nav_favourites");
+
+ } else {
+
+ api.get('accounts/relationships', [{name:'id', data:String(AccountObj.id)}], function(RelationshipObj) {
+
+ if (RelationshipObj[0].followed_by) {
+ $('#main .profile_username .profile_followed_by').removeClass('invisible');
+ }
+
+ if (RelationshipObj[0].blocking) {
+ $(`
+
+ Blocking
+
+ `).appendTo('.profile_button_box');
+
+ } else if (RelationshipObj[0].muting) {
+ $(`
+
+ Muting
+
+ `).appendTo('.profile_button_box');
+
+ } else if (RelationshipObj[0].requested) {
+ $(`
+
+
+ Requested
+
+ `).appendTo('.profile_button_box');
+
+ } else if(RelationshipObj[0].following){
+ $(`
+
+ Following
+
+ `).appendTo('.profile_button_box');
+
+ } else {
+ $(`
+
+
+ Follow
+
+ `).appendTo('.profile_button_box');
+ }
+ });
+ };
+
+ replace_emoji();
+
+}
+
+/*----------------------------------
+ Set User recent images
+----------------------------------*/
+
+function setRecentImages(mid) {
+
+ api.get("accounts/"+mid+"/statuses", [{name:'only_media',data:'true'},{name:'limit',data:'6'}], function(statuses) {
+
+ if ( statuses.length ) {
+
+ $('#js_profile_recent_images span').text(`${statuses[0].account.statuses_count} Photos and toots`);
+ $('#js_profile_recent_images a').attr('href', $("#media_link").attr('href'));
+
+ for ( i in statuses ) {
+ $(`
+
+ `).appendTo('#js_profile_recent_images_box');
+ };
+
+ }
+
+ });
+
+};
+
+/*----------------------------------
+ Header tabs badge
+----------------------------------*/
+
+function badges_update(){
+
+ let current_count = Number(localStorage.getItem("notification_count"));
+ if ( current_count ) {
+ $('#header .header_nav_list .notification_badge').removeClass('invisible');
+ $('#header .header_nav_list .notification_badge').text( current_count );
+ }
+
+ api.stream("user", function(userstream) {
+
+ if (userstream.event === "update" & location.pathname !== "/" ) {
+ $('#header .header_nav_list .home_badge').removeClass('invisible');
+ } else if (userstream.event === "notification" & location.pathname !== "/notifications") {
+ current_count += 1;
+ localStorage.setItem("notification_count", current_count );
+ $('#header .header_nav_list .notification_badge').text( current_count );
+ if ( $('#header .header_nav_list .notification_badge').hasClass('invisible') ) {
+ $('#header .header_nav_list .notification_badge').removeClass('invisible')
+ }
+ }
+
+ });
+}
+
+/*----------------------------------
+ [T]Set Overlay status
+----------------------------------*/
+
+function setOverlayStatus(sid) {
+
+ // Check seletcting text or not
+ if ( !window.getSelection().toString() ) {
+
+ // RESET
+ $("#js-overlay_content .temporary_object").empty()
+
+ // If not seletcting text, show status details
+ $('#js-overlay_content_wrap').addClass('view');
+ $('#js-overlay_content_wrap').addClass('black_05');
+
+ api.get('statuses/'+sid+'/', function(status) {
+
+ $('
').appendTo("#js-overlay_content .temporary_object");
+ status_template(status, 'main_status').appendTo('#js-overlay_content .toot_detail_wrap');
+
+ replaceInternalLink();
+ replace_emoji();
+
+ api.get('statuses/'+sid+'/context', function(status) {
+
+ if (status.ancestors.length) {
+ status.ancestors.reverse();
+ for ( let i in status.ancestors ) {
+ context_template(status.ancestors[i], 'ancestors_status').prependTo("#js-overlay_content .temporary_object .toot_detail_wrap");
+ }
+ }
+
+ if (status.descendants.length) {
+ for ( let i in status.descendants) {
+ context_template(status.descendants[i], 'descendants_status').appendTo("#js-overlay_content .temporary_object .toot_detail_wrap");
+ }
+ }
+
+ replaceInternalLink();
+ replace_emoji();
+
+ });
+
+ });
+ }
+
+}
+
+// triger
+$(function() {
+
+ // PREFIX
+ $(document).on('click','.toot_entry.ancestors_status, .toot_entry.descendants_status', function(e) {
+ $("#js-overlay_content .temporary_object").empty();
+ });
+
+ // toot status
+ $(document).on('click','.toot_entry', function(e) {
+ setOverlayStatus($(this).attr('sid'));
+ });
+
+})
+
+/*----------------------------------
+ [T]Set Overlay media
+----------------------------------*/
+
+function setOverlayMedia(sid,url) {
+
+ // RESET
+ $("#js-overlay_content .temporary_object").empty()
+
+ // If not seletcting text, show status details
+ $('#js-overlay_content_wrap').addClass('view');
+ $('#js-overlay_content_wrap').addClass('black_08');
+ $('#js-overlay_content .temporary_object').addClass('visible');
+
+ api.get("statuses/"+sid, function(status) {
+
+ if ( !status.reblog ) {
+ media_template(status, url).appendTo("#js-overlay_content .temporary_object");
+ replaceInternalLink();
+ replace_emoji();
+ } else {
+ media_template(status.reblog, url).appendTo("#js-overlay_content .temporary_object");
+ replaceInternalLink();
+ replace_emoji();
+ }
+
+ });
+
+}
+
+// triger
+$(function() {
+
+ // overlay media
+ $(document).on('click','.media_attachment[otype="image"]', function(e) {
+ // Stop setOverlayStatus()
+ e.stopPropagation();
+ setOverlayMedia($(this).attr('sid'),$(this).attr('url'));
+ $('.media_detail .toot_entry .media_views').addClass('invisible');
+ });
+
+})
+
+/*----------------------------------
+ [T]Set Overlay media without status
+----------------------------------*/
+
+function setOverlayMediaWithoutStatus(url) {
+
+ // RESET
+ $("#js-overlay_content .temporary_object").empty()
+
+ // If not seletcting text, show status details
+ $('#js-overlay_content_wrap').addClass('view');
+ $('#js-overlay_content_wrap').addClass('black_05');
+
+ media_template(null, url).appendTo("#js-overlay_content .temporary_object");
+
+}
+
+// triger
+$(function() {
+
+ // overlay media
+ $(document).on('click','img[mediaaccess="true"]', function(e) {
+ // Stop setOverlayStatus()
+ e.stopPropagation();
+ setOverlayMediaWithoutStatus($(this).attr('src'));
+ });
+
+})
+
+/*-----------------------------------
+ [P]Create status: Overlay
+-----------------------------------*/
+
+$(function() {
+
+ // EXPAND
+ $(document).on('click', '#creat_status', function(e) {
+
+ $('.overlay_status').removeClass('invisible');
+ $("#js-overlay_content_wrap .temporary_object").empty();
+
+ $('#js-overlay_content_wrap').addClass('view');
+ $('#js-overlay_content_wrap').addClass('black_08');
+ $('#overlay_status_form .status_textarea textarea').addClass('focus');
+ $('.overlay_status .submit_status_label').addClass('active_submit_button');
+ $('#overlay_status_form .status_textarea textarea').focus()
+ $('#overlay_status_form input[name="privacy_option"]').val([localStorage.getItem("setting_post_privacy")]);
+ $('#overlay_status_form .expand_privacy_menu_button > i').attr('class', "fa " + localStorage.getItem("setting_post_privacy"));
+
+ });
+
+ // TEXTAREA
+ $(document).on('change keyup','#overlay_status_form textarea, #overlay_status_form .status_spoiler', function(e) {
+
+ if (
+ e.keyCode !== 224 &
+ e.keyCode !== 17 &
+ e.keyCode !== undefined
+ //!$('#overlay_status_form').hasClass('ready')
+ ) {
+
+ const textCount = $('#overlay_status_form textarea').val().length + $('#overlay_status_form .status_spoiler').val().length;
+ let textLen = ( 512 - textCount );
+
+ if ( textLen <= -1 ) {
+ $('#overlay_status_form .character_count').addClass('red');
+ $('#overlay_status_form').addClass('ready');
+ } else if ( textLen === 512 ) {
+ $('#overlay_status_form').addClass('ready');
+ } else {
+ $('#overlay_status_form .character_count').removeClass('red');
+ $('#overlay_status_form').removeClass('ready');
+ }
+
+ $(this).val(replaced_emoji_return($(this).val()));
+ $('#overlay_status_form .character_count').text(textLen);
+
+ }
+
+ });
+
+ // CONTENT WARNING BUTTON
+ $(document).on('click','#overlay_status_form .status_CW', function(e) {
+ $('#overlay_status_form .status_spoiler').toggleClass('invisible');
+ });
+
+ // EXPAND PRIVACY
+ $(document).on('click','#overlay_status_form .expand_privacy_menu_button', function(e) {
+ $('#overlay_status_form .expand_privacy_menu').removeClass('invisible');
+ });
+
+ // SET PRIVACY
+ $(document).on('click','#overlay_status_form .status_privacy.select_privacy', function(e) {
+ e.stopPropagation();
+ $('#overlay_status_form .expand_privacy_menu_button > i').attr('class', $(this).attr('privacyicon'));
+ $('#overlay_status_form .expand_privacy_menu').addClass('invisible');
+ });
+
+ // MEDIA ATTACHMENT
+ $(document).on('change','#overlay_status_media_atta', function(e) {
+
+ $('#overlay_status_form .media_attachments_preview_area').empty();
+ $('#overlay_status_form .status_textarea .media_attachments_preview_area').removeClass('invisible');
+
+ for ( let i = 0, f; f = e.target.files[i]; i++ ) {
+
+ let reader = new FileReader();
+ reader.readAsDataURL(f);
+ reader.onloadend = (function() {
+ return function (e) {
+ const html = (`
+
+ `);
+ $(html).appendTo('#overlay_status_form .media_attachments_preview_area');
+ }
+ })(f);
+
+ }
+ });
+
+ // NOT SAFE FOR WORK
+ $(document).on('click','#overlay_status_form .status_NSFW', function(e) {
+ $('#overlay_status_form .media_attachments_preview_area').toggleClass('nsfw');
+ });
+
+ // TOOT SUBMIT BUTTON
+ $(document).on('click','#overlay_status_form .submit_status_label', function(e) {
+
+ $('#overlay_status_form').addClass('ready');
+ $('#overlay_status_form .status_textarea').addClass('disallow_select');
+ $('#overlay_status_form .character_count').html('
');
+
+ const form = document.forms.overlay_status_form;
+ if ( !$('#overlay_status_media_atta')[0].files.length ) {
+
+ const params = {
+ status : form.status_textarea.value,
+ sensitive : form.status_nsfw.checked,
+ spoiler_text : form.status_spoiler.value,
+ visibility : form.privacy_option.value
+ }
+
+ api.post("statuses", params, function (data) {
+ $('#overlay_status_form .media_attachments_preview_area').empty();
+ $('#overlay_status_form .status_spoiler').addClass('invisible');
+ $('#overlay_status_form .status_textarea .media_attachments_preview_area').addClass('invisible');
+ form.reset();
+ $('#overlay_status_form').removeClass('ready');
+ $('#overlay_status_form .status_textarea').removeClass('disallow_select');
+ $('#overlay_status_form .character_count').html('512');
+ $('.overlay_status .submit_status_label').removeClass('active_submit_button');
+ $('.overlay_status').addClass('invisible');
+ $('#js-overlay_content_wrap').removeClass('view');
+ $('#js-overlay_content_wrap').removeClass('black_05');
+ putMessage('Your Toot was posted!');
+ });
+
+ } else {
+
+ const dummy_form = $('
').append($('#overlay_status_media_atta')),
+ files = dummy_form[0][0].files,
+ filesLen = files.length -1;
+
+ let media_array = [];
+
+ $("#overlay_status_form .status_bottom").append($('
'));
+
+ for (let i=0; i
i').attr('class', $(this).attr('privacyicon'));
+ $('#header_status_form .expand_privacy_menu').addClass('invisible');
+ });
+
+ // EXPAND TEXT AREA
+ $(document).on('click','#header_status_form', function(e) {
+ if(!$('#header_status_form .status_textarea textarea').hasClass('focus')) {
+ $('#header_status_form input[name="privacy_option"]').val([localStorage.getItem("setting_post_privacy")]);
+ $('#header_status_form .expand_privacy_menu_button > i').attr('class', "fa " + localStorage.getItem("setting_post_privacy"));
+ $('#header_status_form .status_textarea textarea').addClass('focus');
+ $('#header_status_form .status_bottom').removeClass('invisible');
+ $('#header_status_form .submit_status_label').addClass('active_submit_button');
+ }
+ });
+
+ // MEDIA ATTACHMENT
+ $(document).on('change','#header_status_media_atta', function(e) {
+
+ $('#header_status_form .media_attachments_preview_area').empty();
+ $('#header_status_form .status_textarea .media_attachments_preview_area').removeClass('invisible');
+
+ for ( let i = 0, f; f = e.target.files[i]; i++ ) {
+
+ let reader = new FileReader();
+ reader.readAsDataURL(f);
+ reader.onloadend = (function() {
+ return function (e) {
+ const html = (`
+
+ `);
+ $(html).appendTo('#header_status_form .media_attachments_preview_area');
+ }
+ })(f);
+
+ }
+ });
+
+ // NOT SAFE FOR WORK
+ $(document).on('click','#header_status_form .status_NSFW', function(e) {
+ $('#header_status_form .media_attachments_preview_area').toggleClass('nsfw');
+ });
+
+ // TOOT SUBMIT BUTTON
+ $(document).on('click','#header_status_form .submit_status_label', function(e) {
+
+ $('#header_status_form').addClass('ready');
+ $('#header_status_form .status_textarea').addClass('disallow_select');
+ $('#header_status_form .character_count').html(' ');
+
+ const form = document.forms.header_status_form;
+ if ( !$('#header_status_media_atta')[0].files.length ) {
+
+ const params = {
+ status : form.status_textarea.value,
+ sensitive : form.status_nsfw.checked,
+ spoiler_text : form.status_spoiler.value,
+ visibility : form.privacy_option.value
+ }
+
+ api.post("statuses", params, function (data) {
+ $('#header_status_form .media_attachments_preview_area').empty();
+ $('#header_status_form .status_spoiler').addClass('invisible');
+ $('#header_status_form .status_textarea .media_attachments_preview_area').addClass('invisible');
+ form.reset();
+ $('#header_status_form').removeClass('ready');
+ $('#header_status_form .status_textarea').removeClass('disallow_select');
+ $('#header_status_form .character_count').html('512');
+ });
+
+ } else {
+
+ // 擬似formに追加。そのあとクローンを元の位置に戻す。
+ const dummy_form = $(' ').append($('#header_status_media_atta')),
+ files = dummy_form[0][0].files,
+ filesLen = files.length -1;
+
+ let media_array = [];
+
+ $("#header_status_form .status_bottom").append($(''));
+
+ for (let i=0; i i').attr('class', "fa " + localStorage.getItem("setting_post_privacy"));
+ }
+ });
+
+ // TEXTAREA
+ $(document).on('change keyup','#reply_status_form textarea, #reply_status_form .status_spoiler', function(e) {
+
+ if (
+ e.keyCode !== 224 &
+ e.keyCode !== 17 &
+ e.keyCode !== undefined
+ //!$('#overlay_status_form').hasClass('ready')
+ ) {
+
+ const textCount = $('#reply_status_form textarea').val().length + $('#reply_status_form .status_spoiler').val().length;
+ let textLen = ( 512 - textCount );
+
+ if ( textLen <= -1 ) {
+ $('#reply_status_form .character_count').addClass('red');
+ $('#reply_status_form').addClass('ready');
+ } else if ( textLen === 512 ) {
+ $('#reply_status_form').addClass('ready');
+ } else {
+ $('#reply_status_form .character_count').removeClass('red');
+ $('#reply_status_form').removeClass('ready');
+ }
+
+ $(this).val(replaced_emoji_return($(this).val()));
+ $('#reply_status_form .character_count').text(textLen);
+
+ }
+
+ });
+
+ // CONTENT WARNING BUTTON
+ $(document).on('click','#reply_status_form .status_CW', function(e) {
+ $('#reply_status_form .status_spoiler').toggleClass('invisible');
+ });
+
+ // EXPAND PRIVACY
+ $(document).on('click','#reply_status_form .expand_privacy_menu_button', function(e) {
+ $('#reply_status_form .expand_privacy_menu').removeClass('invisible');
+ });
+
+ // SET PRIVACY
+ $(document).on('click','#reply_status_form .status_privacy.select_privacy', function(e) {
+ e.stopPropagation();
+ $('#reply_status_form .expand_privacy_menu_button > i').attr('class', $(this).attr('privacyicon'));
+ $('#reply_status_form .expand_privacy_menu').addClass('invisible');
+ });
+
+ // MEDIA ATTACHMENT
+ $(document).on('change','#reply_status_media_atta', function(e) {
+
+ $('#reply_status_form .media_attachments_preview_area').empty();
+ $('#reply_status_form .status_textarea .media_attachments_preview_area').removeClass('invisible');
+
+ for ( let i = 0, f; f = e.target.files[i]; i++ ) {
+
+ let reader = new FileReader();
+ reader.readAsDataURL(f);
+ reader.onloadend = (function() {
+ return function (e) {
+ const html = (`
+
+ `);
+ $(html).appendTo('#reply_status_form .media_attachments_preview_area');
+ }
+ })(f);
+
+ }
+ });
+
+ // NOT SAFE FOR WORK
+ $(document).on('click','#reply_status_form .status_NSFW', function(e) {
+ $('#reply_status_form .media_attachments_preview_area').toggleClass('nsfw');
+ });
+
+ // TOOT SUBMIT BUTTON
+ $(document).on('click','#reply_status_form .submit_status_label', function(e) {
+
+ $('#reply_status_form').addClass('ready');
+ $('#reply_status_form .status_textarea').addClass('disallow_select');
+ $('#reply_status_form .character_count').html(' ');
+
+ let form = document.forms.reply_status_form;
+ if ( !$('#reply_status_media_atta')[0].files.length ) {
+
+ const params = {
+ status : form.status_textarea.value,
+ sensitive : form.status_nsfw.checked,
+ spoiler_text : form.status_spoiler.value,
+ visibility : form.privacy_option.value,
+ in_reply_to_id : $('#reply_status_form').attr('sid')
+ }
+
+ api.post("statuses", params, function (data) {
+ $('#reply_status_form .media_attachments_preview_area').empty();
+ $('#reply_status_form .status_spoiler').addClass('invisible');
+ $('#reply_status_form .status_textarea .media_attachments_preview_area').addClass('invisible');
+ form.reset();
+ $('#reply_status_form').removeClass('ready');
+ $('#reply_status_form .status_textarea').removeClass('disallow_select');
+ $('#reply_status_form .character_count').html('512');
+ $('.reply_status .submit_status_label').removeClass('active_submit_button');
+ context_template(data, 'descendants_status').appendTo("#js-overlay_content .temporary_object .toot_detail_wrap");
+ replace_emoji();
+ putMessage('Your Toot was posted!');
+ });
+
+ } else {
+
+ const dummy_form = $(' ').append($('#reply_status_media_atta')),
+ files = dummy_form[0][0].files,
+ filesLen = files.length -1;
+
+ let media_array = [];
+
+ $('#reply_status_form .status_bottom').append($(' '));
+
+ for (let i=0; i i').attr('class', "fa " + localStorage.getItem("setting_post_privacy"));
+
+ $('#single_reply_status_form').attr('tid',sid);
+ $('.single_reply_status .single_reply_status_header span').text("Reply to "+display_name);
+ $('#single_reply_status_form textarea').val(acct+" ");
+
+ api.get('statuses/'+sid+'/', function(status) {
+ timeline_template(status).appendTo(".single_reply_status .status_preview");
+ replace_emoji();
+ });
+
+ return false;
+
+ });
+
+ // TEXTAREA
+ $(document).on('change keyup','#single_reply_status_form textarea, #single_reply_status_form .status_spoiler', function(e) {
+
+ if (
+ e.keyCode !== 224 &
+ e.keyCode !== 17 &
+ e.keyCode !== undefined
+ //!$('#single_reply_status_form').hasClass('ready')
+ ) {
+
+ const textCount = $('#single_reply_status_form textarea').val().length + $('#single_reply_status_form .status_spoiler').val().length;
+ let textLen = ( 512 - textCount );
+
+ if ( textLen <= -1 ) {
+ $('#single_reply_status_form .character_count').addClass('red');
+ $('#single_reply_status_form').addClass('ready');
+ } else if ( textLen === 512 ) {
+ $('#single_reply_status_form').addClass('ready');
+ } else {
+ $('#single_reply_status_form .character_count').removeClass('red');
+ $('#single_reply_status_form').removeClass('ready');
+ }
+
+ $(this).val(replaced_emoji_return($(this).val()));
+ $('#single_reply_status_form .character_count').text(textLen);
+
+ }
+
+ });
+
+ // CONTENT WARNING BUTTON
+ $(document).on('click','#single_reply_status_form .status_CW', function(e) {
+ $('#single_reply_status_form .status_spoiler').toggleClass('invisible');
+ });
+
+ // EXPAND PRIVACY
+ $(document).on('click','#single_reply_status_form .expand_privacy_menu_button', function(e) {
+ $('#single_reply_status_form .expand_privacy_menu').removeClass('invisible');
+ });
+
+ // SET PRIVACY
+ $(document).on('click','#single_reply_status_form .status_privacy.select_privacy', function(e) {
+ e.stopPropagation();
+ $('#single_reply_status_form .expand_privacy_menu_button > i').attr('class', $(this).attr('privacyicon'));
+ $('#single_reply_status_form .expand_privacy_menu').addClass('invisible');
+ });
+
+ // MEDIA ATTACHMENT
+ $(document).on('change','#single_reply_status_media_atta', function(e) {
+
+ $('#single_reply_status_form .media_attachments_preview_area').empty();
+ $('#single_reply_status_form .status_textarea .media_attachments_preview_area').removeClass('invisible');
+
+ for ( let i = 0, f; f = e.target.files[i]; i++ ) {
+
+ let reader = new FileReader();
+ reader.readAsDataURL(f);
+ reader.onloadend = (function() {
+ return function (e) {
+ const html = (`
+
+ `);
+ $(html).appendTo('#single_reply_status_form .media_attachments_preview_area');
+ }
+ })(f);
+
+ }
+ });
+
+ // NOT SAFE FOR WORK
+ $(document).on('click','#single_reply_status_form .status_NSFW', function(e) {
+ $('#single_reply_status_form .media_attachments_preview_area').toggleClass('nsfw');
+ });
+
+ // TOOT SUBMIT BUTTON
+ $(document).on('click','#single_reply_status_form .submit_status_label', function(e) {
+
+ $('#single_reply_status_form').addClass('ready');
+ $('#single_reply_status_form .status_textarea').addClass('disallow_select');
+ $('#single_reply_status_form .character_count').html(' ');
+
+ let form = document.forms.single_reply_status_form;
+ if ( !$('#single_reply_status_media_atta')[0].files.length ) {
+
+ const params = {
+ status : form.status_textarea.value,
+ sensitive : form.status_nsfw.checked,
+ spoiler_text : form.status_spoiler.value,
+ visibility : form.privacy_option.value,
+ in_reply_to_id : $('#single_reply_status_form').attr('tid')
+ }
+
+ api.post("statuses", params, function (data) {
+ $('#single_reply_status_form .media_attachments_preview_area').empty();
+ $('#single_reply_status_form .status_spoiler').addClass('invisible');
+ $('#single_reply_status_form .status_textarea .media_attachments_preview_area').addClass('invisible');
+ form.reset();
+ $('#single_reply_status_form').removeClass('ready');
+ $('#single_reply_status_form .status_textarea').removeClass('disallow_select');
+ $('#single_reply_status_form .character_count').html('512');
+ $('.single_reply_status .submit_status_label').removeClass('active_submit_button');
+ $('.single_reply_status').addClass('invisible');
+ $('#js-overlay_content_wrap').removeClass('view');
+ $('#js-overlay_content_wrap').removeClass('black_05');
+ $("#js-overlay_content_wrap .single_reply_status .status_preview").empty();
+ putMessage('Your Reply was posted!');
+ });
+
+ } else {
+
+ const dummy_form = $(' ').append($('#single_reply_status_media_atta')),
+ files = dummy_form[0][0].files,
+ filesLen = files.length -1;
+
+ let media_array = [];
+
+ $("#single_reply_status_form .status_bottom").append($(' '));
+
+ for (let i=0; i *, .parmanent_object > *', function(e) {
+ // オーバーレイ最上位子要素で止める感じ
+ e.stopPropagation();
+ });
+
+ // HIDE ALL
+ $(document).on('click','#js-overlay_content_wrap', function(e) {
+
+ // hide myself
+ $(this).removeClass('view');
+
+ // empty here
+ $("#js-overlay_content_wrap .temporary_object").empty();
+ $("#js-overlay_content_wrap .single_reply_status .status_preview").empty();
+
+ // add here
+ $('#js-overlay_content_wrap .overlay_status').addClass('invisible');
+ $('#js-overlay_content_wrap .single_reply_status').addClass('invisible');
+ $('#js-overlay_content_wrap .overlay_copy_link').addClass('invisible');
+
+ // remove here
+ $('#js-overlay_content .temporary_object, #js-overlay_content .parmanent_object').removeClass('visible');
+ $('#js-overlay_content_wrap .overlay_status .submit_status_label').removeClass('active_submit_button');
+ $('#js-overlay_content_wrap .single_reply_status .submit_status_label').removeClass('active_submit_button');
+ $('#js-overlay_content_wrap #reply_status_form .submit_status_label').removeClass('active_submit_button');
+ $('#js-overlay_content_wrap #header_status_form .submit_status_label').removeClass('active_submit_button');
+
+ $('#js-overlay_content_wrap').removeClass('black_05');
+ $('#js-overlay_content_wrap').removeClass('black_08');
+
+ // fix to original link ( using for overlay_status )
+ if ( current_file === "/user" ) {
+ history.pushState(null, null, "/"+location.pathname.split("/")[1]+location.search);
+ } else {
+ history.pushState(null, null, current_file);
+ }
+
+ });
+
+})
+
+/*----------------------------------
+ Stream options menu
+----------------------------------*/
+
+$(function () {
+
+ // EXPAND SIDE STREAM options
+ $(document).on('click','.side_widget.stream_options .form_title button', function(e) {
+
+ $(this).parent().next('.pulldown_form').toggleClass('view');
+
+ if ( $(this).text() === "SHOW" ) {
+ $(this).text("HIDE");
+ } else {
+ $(this).text("SHOW");
+ }
+
+ const html_post_steraming = $(`
+
+ Manual update
+ Auto update
+
+ `)
+
+ const html_post_privacy = $(`
+
+ Public
+ Unlisted
+ Followers-only
+ Direct
+
+ `)
+
+ const html_local_instance = $(`
+
+ `)
+
+ const html_search_filter = $(`
+
+ All instances
+ Local only
+
+ `)
+
+ html_post_steraming.val(localStorage.getItem("setting_post_stream"));
+ html_post_privacy.val(localStorage.getItem("setting_post_privacy"));
+ html_local_instance.val(localStorage.getItem("setting_local_instance"));
+ html_search_filter.val(localStorage.getItem("setting_search_filter"));
+
+ $('.post_steraming_wrap').html(html_post_steraming)
+ $('.post_privacy_wrap').html(html_post_privacy);
+ $('.local_instance_wrap').html(html_local_instance);
+ $('.search_filter_wrap').html(html_search_filter);
+
+ return false;
+ });
+
+ $(document).on('change',".post_steraming_wrap select[name='post_steraming']", function(e) {
+ localStorage.setItem("setting_post_stream", $(this).val() );
+ putMessage("Changed setting to "+$(this).val() );
+ });
+
+ $(document).on('change', ".post_privacy_wrap select[name='post_privacy']", function(e) {
+ localStorage.setItem("setting_post_privacy", $(this).val() );
+ putMessage("Changed setting to "+$(this).val() );
+ });
+
+ $(document).on('change',".search_filter_wrap select[name='search_filter']", function(e) {
+ localStorage.setItem("setting_search_filter", $(this).val() );
+ putMessage("Changed setting to "+$(this).val() );
+ });
+
+ $(document).on('focus',".local_instance_wrap input[name='local_instance']", function(e) {
+ $(this).attr("placeholder","https://"+current_instance);
+ });
+
+ $(document).on('change',".local_instance_wrap input[name='local_instance']", function(e) {
+ if ( $(this).val() ) {
+ localStorage.setItem("setting_local_instance", $(this).val() );
+ } else {
+ localStorage.setItem("setting_local_instance", "default" );
+ }
+ putMessage("Changed setting to "+$(this).val() );
+ });
+
+})
+
+/*----------------------------------
+ Keyboard shortcut
+-----------------------------------*/
+
+$(function() {
+
+ shortcut.add("n",function() {
+ $("#creat_status").click();
+ },{
+ "disable_in_input":true,
+ });
+
+ shortcut.add("/",function() {
+ $("#search_form").focus();
+ },{
+ "disable_in_input":true,
+ 'keycode':191
+ });
+
+ shortcut.add("Meta+Enter",function() {
+ $(".active_submit_button").click();
+ });
+
+ shortcut.add("Ctrl+Enter",function() {
+ $(".active_submit_button").click();
+ });
+
+ shortcut.add(".",function() {
+ $("#js-stream_update").click();
+ },{
+ "disable_in_input":true,
+ });
+
+ shortcut.add("Shift+h",function() {
+ location.href="/home";
+ },{
+ "disable_in_input":true,
+ });
+
+ shortcut.add("Shift+l",function() {
+ location.href="/local";
+ },{
+ "disable_in_input":true,
+ });
+
+ shortcut.add("Shift+f",function() {
+ location.href="/federated";
+ },{
+ "disable_in_input":true,
+ });
+
+ shortcut.add("Shift+n",function() {
+ location.href="/notifications";
+ },{
+ "disable_in_input":true,
+ });
+
+ shortcut.add("Shift+p",function() {
+ location.href=current_url;
+ },{
+ "disable_in_input":true,
+ });
+
+ shortcut.add("Shift+v",function() {
+ location.href=current_favourites_link;
+ },{
+ "disable_in_input":true,
+ });
+
+ shortcut.add("esc",function() {
+ $("#js-overlay_content_wrap").click();
+ });
+
+});
+
+/*----------------------------------
+ Yamada elf
+----------------------------------*/
+
+function setYaruki() {
+ $('.toot_entry_body .icon_box img').attr('src','/assets/images/elf.jpg')
+ $('.toot_content .displayname').text('山田エルフ');
+ $('.toot_content .username').text('©KADOKAWA©ASCIIMediaWorks');
+ putMessage('やる気MAXファイアー!');
+ /* this is a joke function */
+}
diff --git a/public_html/assets/js/jquery-cookie/.DS_Store b/public_html/assets/js/jquery-cookie/.DS_Store
new file mode 100644
index 0000000..d655808
Binary files /dev/null and b/public_html/assets/js/jquery-cookie/.DS_Store differ
diff --git a/public_html/assets/js/jquery-cookie/CHANGELOG.md b/public_html/assets/js/jquery-cookie/CHANGELOG.md
new file mode 100644
index 0000000..59d868f
--- /dev/null
+++ b/public_html/assets/js/jquery-cookie/CHANGELOG.md
@@ -0,0 +1,73 @@
+HEAD
+-----
+
+1.4.1
+-----
+- Added support for CommonJS.
+
+- Added support for package managers: Jam (http://jamjs.org), volo (http://volojs.org), Component (http://component.io), jspm (http://jspm.io).
+
+- The expires option now interpretes fractions of numbers (e.g. days) correctly.
+
+1.4.0
+-----
+- Support for AMD.
+
+- Removed deprecated method `$.cookie('name', null)` for deleting a cookie,
+ use `$.removeCookie('name')`.
+
+- `$.cookie('name')` now returns `undefined` in case such cookie does not exist
+ (was `null`). Because the return value is still falsy, testing for existence
+ of a cookie like `if ( $.cookie('foo') )` keeps working without change.
+
+- Renamed bower package definition (component.json -> bower.json) for usage
+ with up-to-date bower.
+
+- Badly encoded cookies no longer throw exception upon reading but do return
+ undefined (similar to how we handle JSON parse errors with json = true).
+
+- Added conversion function as optional last argument for reading,
+ so that values can be changed to a different representation easily on the fly.
+ Useful for parsing numbers for instance:
+
+ ```javascript
+ $.cookie('foo', '42');
+ $.cookie('foo', Number); // => 42
+ ```
+
+1.3.1
+-----
+- Fixed issue where it was no longer possible to check for an arbitrary cookie,
+ while json is set to true, there was a SyntaxError thrown from JSON.parse.
+
+- Fixed issue where RFC 2068 decoded cookies were not properly read.
+
+1.3.0
+-----
+- Configuration options: `raw`, `json`. Replaces raw option, becomes config:
+
+ ```javascript
+ $.cookie.raw = true; // bypass encoding/decoding the cookie value
+ $.cookie.json = true; // automatically JSON stringify/parse value
+ ```
+
+ Thus the default options now cleanly contain cookie attributes only.
+
+- Removing licensing under GPL Version 2, the plugin is now released under MIT License only
+(keeping it simple and following the jQuery library itself here).
+
+- Bugfix: Properly handle RFC 2068 quoted cookie values.
+
+- Added component.json for bower.
+
+- Added jQuery plugin package manifest.
+
+- `$.cookie()` returns all available cookies.
+
+1.2.0
+-----
+- Adding `$.removeCookie('foo')` for deleting a cookie, using `$.cookie('foo', null)` is now deprecated.
+
+1.1
+---
+- Adding default options.
diff --git a/public_html/assets/js/jquery-cookie/CONTRIBUTING.md b/public_html/assets/js/jquery-cookie/CONTRIBUTING.md
new file mode 100644
index 0000000..608c33e
--- /dev/null
+++ b/public_html/assets/js/jquery-cookie/CONTRIBUTING.md
@@ -0,0 +1,51 @@
+##Issues
+
+- Report issues or feature requests on [GitHub Issues](https://github.com/carhartl/jquery-cookie/issues).
+- If reporting a bug, please add a [simplified example](http://sscce.org/).
+
+##Pull requests
+- Create a new topic branch for every separate change you make.
+- Create a test case if you are fixing a bug or implementing an important feature.
+- Make sure the build runs successfully.
+
+## Development
+
+###Tools
+We use the following tools for development:
+
+- [Qunit](http://qunitjs.com/) for tests.
+- [NodeJS](http://nodejs.org/download/) required to run grunt.
+- [Grunt](http://gruntjs.com/getting-started) for task management.
+
+###Getting started
+Install [NodeJS](http://nodejs.org/).
+Install globally grunt-cli using the following command:
+
+ $ npm install -g grunt-cli
+
+Browse to the project root directory and install the dev dependencies:
+
+ $ npm install -d
+
+To execute the build and tests run the following command in the root of the project:
+
+ $ grunt
+
+You should see a green message in the console:
+
+ Done, without errors.
+
+###Tests
+You can also run the tests in the browser.
+Start a test server from the project root:
+
+ $ grunt connect:tests
+
+This will automatically open the test suite at http://127.0.0.1:9998 in the default browser, with livereload enabled.
+
+_Note: we recommend cleaning all the browser cookies before running the tests, that can avoid false positive failures._
+
+###Automatic build
+You can build automatically after a file change using the following command:
+
+ $ grunt watch
diff --git a/public_html/assets/js/jquery-cookie/Gruntfile.js b/public_html/assets/js/jquery-cookie/Gruntfile.js
new file mode 100644
index 0000000..5ac9db5
--- /dev/null
+++ b/public_html/assets/js/jquery-cookie/Gruntfile.js
@@ -0,0 +1,168 @@
+/*jshint node:true, quotmark:single */
+'use strict';
+
+module.exports = function (grunt) {
+
+ grunt.initConfig({
+ pkg: grunt.file.readJSON('package.json'),
+ qunit: {
+ all: 'test/index.html'
+ },
+ jshint: {
+ options: {
+ jshintrc: true
+ },
+ grunt: 'Gruntfile.js',
+ source: 'src/**/*.js',
+ tests: 'test/**/*.js'
+ },
+ uglify: {
+ options: {
+ banner: '/*! <%= pkg.name %> v<%= pkg.version %> | <%= pkg.license %> */\n'
+ },
+ build: {
+ files: {
+ 'build/jquery.cookie-<%= pkg.version %>.min.js': 'src/jquery.cookie.js'
+ }
+ }
+ },
+ watch: {
+ options: {
+ livereload: true
+ },
+ files: '{src,test}/**/*.js',
+ tasks: 'default'
+ },
+ compare_size: {
+ files: [
+ 'build/jquery.cookie-<%= pkg.version %>.min.js',
+ 'src/jquery.cookie.js'
+ ],
+ options: {
+ compress: {
+ gz: function (fileContents) {
+ return require('gzip-js').zip(fileContents, {}).length;
+ }
+ }
+ }
+ },
+ connect: {
+ saucelabs: {
+ options: {
+ port: 9999,
+ base: ['.', 'test']
+ }
+ },
+ tests: {
+ options: {
+ port: 9998,
+ base: ['.', 'test'],
+ open: 'http://127.0.0.1:9998',
+ keepalive: true,
+ livereload: true
+ }
+ }
+ },
+ 'saucelabs-qunit': {
+ all: {
+ options: {
+ urls: ['http://127.0.0.1:9999'],
+ build: process.env.TRAVIS_JOB_ID,
+ browsers: [
+ // iOS
+ {
+ browserName: 'iphone',
+ platform: 'OS X 10.9',
+ version: '7.1'
+ },
+ {
+ browserName: 'ipad',
+ platform: 'OS X 10.9',
+ version: '7.1'
+ },
+ // Android
+ {
+ browserName: 'android',
+ platform: 'Linux',
+ version: '4.3'
+ },
+ // OS X
+ {
+ browserName: 'safari',
+ platform: 'OS X 10.9',
+ version: '7'
+ },
+ {
+ browserName: 'safari',
+ platform: 'OS X 10.8',
+ version: '6'
+ },
+ {
+ browserName: 'firefox',
+ platform: 'OS X 10.9',
+ version: '28'
+ },
+ // Windows
+ {
+ browserName: 'internet explorer',
+ platform: 'Windows 8.1',
+ version: '11'
+ },
+ {
+ browserName: 'internet explorer',
+ platform: 'Windows 8',
+ version: '10'
+ },
+ {
+ browserName: 'internet explorer',
+ platform: 'Windows 7',
+ version: '11'
+ },
+ {
+ browserName: 'internet explorer',
+ platform: 'Windows 7',
+ version: '10'
+ },
+ {
+ browserName: 'internet explorer',
+ platform: 'Windows 7',
+ version: '9'
+ },
+ {
+ browserName: 'internet explorer',
+ platform: 'Windows 7',
+ version: '8'
+ },
+ {
+ browserName: 'firefox',
+ platform: 'Windows 7',
+ version: '29'
+ },
+ {
+ browserName: 'chrome',
+ platform: 'Windows 7',
+ version: '34'
+ },
+ // Linux
+ {
+ browserName: 'firefox',
+ platform: 'Linux',
+ version: '29'
+ }
+ ]
+ }
+ }
+ }
+ });
+
+ // Loading dependencies
+ for (var key in grunt.file.readJSON('package.json').devDependencies) {
+ if (key !== 'grunt' && key.indexOf('grunt') === 0) {
+ grunt.loadNpmTasks(key);
+ }
+ }
+
+ grunt.registerTask('default', ['jshint', 'qunit', 'uglify', 'compare_size']);
+ grunt.registerTask('saucelabs', ['connect:saucelabs', 'saucelabs-qunit']);
+ grunt.registerTask('ci', ['jshint', 'qunit', 'saucelabs']);
+};
diff --git a/public_html/assets/js/jquery-cookie/MIT-LICENSE.txt b/public_html/assets/js/jquery-cookie/MIT-LICENSE.txt
new file mode 100644
index 0000000..7a631e8
--- /dev/null
+++ b/public_html/assets/js/jquery-cookie/MIT-LICENSE.txt
@@ -0,0 +1,20 @@
+Copyright 2014 Klaus Hartl
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/public_html/assets/js/jquery-cookie/README.md b/public_html/assets/js/jquery-cookie/README.md
new file mode 100644
index 0000000..3100800
--- /dev/null
+++ b/public_html/assets/js/jquery-cookie/README.md
@@ -0,0 +1,162 @@
+# IMPORTANT!
+
+This project was moved to https://github.com/js-cookie/js-cookie, check [the discussion](https://github.com/carhartl/jquery-cookie/issues/349).
+
+New issues should be opened at https://github.com/js-cookie/js-cookie/issues
+
+# jquery.cookie [![Build Status](https://travis-ci.org/carhartl/jquery-cookie.png?branch=master)](https://travis-ci.org/carhartl/jquery-cookie) [![Code Climate](https://codeclimate.com/github/carhartl/jquery-cookie.png)](https://codeclimate.com/github/carhartl/jquery-cookie)
+
+A simple, lightweight jQuery plugin for reading, writing and deleting cookies.
+
+**If you're viewing this, you're reading the documentation for the old repository.
+[View documentation for the latest backwards compatible release (1.5.1).](https://github.com/js-cookie/js-cookie/tree/v1.5.1)**
+
+## Build Status Matrix
+
+[![Selenium Test Status](https://saucelabs.com/browser-matrix/jquery-cookie.svg)](https://saucelabs.com/u/jquery-cookie)
+
+## Installation
+
+Include script *after* the jQuery library (unless you are packaging scripts somehow else):
+
+```html
+
+```
+
+**Do not include the script directly from GitHub (http://raw.github.com/...).** The file is being served as text/plain and as such being blocked
+in Internet Explorer on Windows 7 for instance (because of the wrong MIME type). Bottom line: GitHub is not a CDN.
+
+The plugin can also be loaded as AMD or CommonJS module.
+
+## Usage
+
+Create session cookie:
+
+```javascript
+$.cookie('name', 'value');
+```
+
+Create expiring cookie, 7 days from then:
+
+```javascript
+$.cookie('name', 'value', { expires: 7 });
+```
+
+Create expiring cookie, valid across entire site:
+
+```javascript
+$.cookie('name', 'value', { expires: 7, path: '/' });
+```
+
+Read cookie:
+
+```javascript
+$.cookie('name'); // => "value"
+$.cookie('nothing'); // => undefined
+```
+
+Read all available cookies:
+
+```javascript
+$.cookie(); // => { "name": "value" }
+```
+
+Delete cookie:
+
+```javascript
+// Returns true when cookie was successfully deleted, otherwise false
+$.removeCookie('name'); // => true
+$.removeCookie('nothing'); // => false
+
+// Need to use the same attributes (path, domain) as what the cookie was written with
+$.cookie('name', 'value', { path: '/' });
+// This won't work!
+$.removeCookie('name'); // => false
+// This will work!
+$.removeCookie('name', { path: '/' }); // => true
+```
+
+*Note: when deleting a cookie, you must pass the exact same path, domain and secure options that were used to set the cookie, unless you're relying on the default options that is.*
+
+## Configuration
+
+### raw
+
+By default the cookie value is encoded/decoded when writing/reading, using `encodeURIComponent`/`decodeURIComponent`. Bypass this by setting raw to true:
+
+```javascript
+$.cookie.raw = true;
+```
+
+### json
+
+Turn on automatic storage of JSON objects passed as the cookie value. Assumes `JSON.stringify` and `JSON.parse`:
+
+```javascript
+$.cookie.json = true;
+```
+
+## Cookie Options
+
+Cookie attributes can be set globally by setting properties of the `$.cookie.defaults` object or individually for each call to `$.cookie()` by passing a plain object to the options argument. Per-call options override the default options.
+
+### expires
+
+ expires: 365
+
+Define lifetime of the cookie. Value can be a `Number` which will be interpreted as days from time of creation or a `Date` object. If omitted, the cookie becomes a session cookie.
+
+### path
+
+ path: '/'
+
+Define the path where the cookie is valid. *By default the path of the cookie is the path of the page where the cookie was created (standard browser behavior).* If you want to make it available for instance across the entire domain use `path: '/'`. Default: path of page where the cookie was created.
+
+**Note regarding Internet Explorer:**
+
+> Due to an obscure bug in the underlying WinINET InternetGetCookie implementation, IE’s document.cookie will not return a cookie if it was set with a path attribute containing a filename.
+
+(From [Internet Explorer Cookie Internals (FAQ)](http://blogs.msdn.com/b/ieinternals/archive/2009/08/20/wininet-ie-cookie-internals-faq.aspx))
+
+This means one cannot set a path using `path: window.location.pathname` in case such pathname contains a filename like so: `/check.html` (or at least, such cookie cannot be read correctly).
+
+### domain
+
+ domain: 'example.com'
+
+Define the domain where the cookie is valid. Default: domain of page where the cookie was created.
+
+### secure
+
+ secure: true
+
+If true, the cookie transmission requires a secure protocol (https). Default: `false`.
+
+## Converters
+
+Provide a conversion function as optional last argument for reading, in order to change the cookie's value
+to a different representation on the fly.
+
+Example for parsing a value into a number:
+
+```javascript
+$.cookie('foo', '42');
+$.cookie('foo', Number); // => 42
+```
+
+Dealing with cookies that have been encoded using `escape` (3rd party cookies):
+
+```javascript
+$.cookie.raw = true;
+$.cookie('foo', unescape);
+```
+
+You can pass an arbitrary conversion function.
+
+## Contributing
+
+Check out the [Contributing Guidelines](CONTRIBUTING.md)
+
+## Authors
+
+[Klaus Hartl](https://github.com/carhartl)
diff --git a/public_html/assets/js/jquery-cookie/bower.json b/public_html/assets/js/jquery-cookie/bower.json
new file mode 100644
index 0000000..3862b74
--- /dev/null
+++ b/public_html/assets/js/jquery-cookie/bower.json
@@ -0,0 +1,18 @@
+{
+ "name": "jquery.cookie",
+ "version": "1.4.1",
+ "main": [
+ "src/jquery.cookie.js"
+ ],
+ "dependencies": {
+ "jquery": ">=1.2"
+ },
+ "ignore": [
+ "test",
+ ".*",
+ "*.json",
+ "*.md",
+ "*.txt",
+ "Gruntfile.js"
+ ]
+}
diff --git a/public_html/assets/js/jquery-cookie/component.json b/public_html/assets/js/jquery-cookie/component.json
new file mode 100644
index 0000000..0fad480
--- /dev/null
+++ b/public_html/assets/js/jquery-cookie/component.json
@@ -0,0 +1,14 @@
+{
+ "name": "jquery.cookie",
+ "repo": "carhartl/jquery-cookie",
+ "description": "A simple, lightweight jQuery plugin for reading, writing and deleting cookies",
+ "version": "1.4.1",
+ "keywords": [],
+ "dependencies": {},
+ "development": {},
+ "license": "MIT",
+ "main": "src/jquery.cookie.js",
+ "scripts": [
+ "src/jquery.cookie.js"
+ ]
+}
diff --git a/public_html/assets/js/jquery-cookie/cookie.jquery.json b/public_html/assets/js/jquery-cookie/cookie.jquery.json
new file mode 100644
index 0000000..69d5748
--- /dev/null
+++ b/public_html/assets/js/jquery-cookie/cookie.jquery.json
@@ -0,0 +1,32 @@
+{
+ "name": "cookie",
+ "version": "1.4.1",
+ "title": "jQuery Cookie",
+ "description": "A simple, lightweight jQuery plugin for reading, writing and deleting cookies.",
+ "author": {
+ "name": "Klaus Hartl",
+ "url": "https://github.com/carhartl"
+ },
+ "maintainers": [
+ {
+ "name": "Klaus Hartl",
+ "url": "https://github.com/carhartl"
+ },
+ {
+ "name": "Fagner Martins",
+ "url": "https://github.com/FagnerMartinsBrack"
+ }
+ ],
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "https://raw.github.com/carhartl/jquery-cookie/master/MIT-LICENSE.txt"
+ }
+ ],
+ "dependencies": {
+ "jquery": ">=1.2"
+ },
+ "bugs": "https://github.com/carhartl/jquery-cookie/issues",
+ "homepage": "https://github.com/carhartl/jquery-cookie",
+ "docs": "https://github.com/carhartl/jquery-cookie#readme"
+}
diff --git a/public_html/assets/js/jquery-cookie/package.json b/public_html/assets/js/jquery-cookie/package.json
new file mode 100644
index 0000000..38abffe
--- /dev/null
+++ b/public_html/assets/js/jquery-cookie/package.json
@@ -0,0 +1,50 @@
+{
+ "name": "jquery.cookie",
+ "version": "1.4.1",
+ "description": "A simple, lightweight jQuery plugin for reading, writing and deleting cookies.",
+ "main": "src/jquery.cookie.js",
+ "directories": {
+ "test": "test"
+ },
+ "scripts": {
+ "test": "grunt"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/carhartl/jquery-cookie.git"
+ },
+ "author": "Klaus Hartl",
+ "license": "MIT",
+ "gitHead": "bd3c9713222bace68d25fe2128c0f8633cad1269",
+ "readmeFilename": "README.md",
+ "devDependencies": {
+ "grunt": "~0.4.1",
+ "grunt-contrib-jshint": "~0.10.0",
+ "grunt-contrib-uglify": "~0.2.0",
+ "grunt-contrib-qunit": "~0.2.0",
+ "grunt-contrib-watch": "~0.6.1",
+ "grunt-compare-size": "~0.4.0",
+ "grunt-saucelabs": "~7.0.0",
+ "grunt-contrib-connect": "~0.7.1",
+ "gzip-js": "~0.3.0"
+ },
+ "volo": {
+ "url": "https://raw.github.com/carhartl/jquery-cookie/v{version}/src/jquery.cookie.js"
+ },
+ "jspm": {
+ "main": "jquery.cookie",
+ "files": ["src/jquery.cookie.js"],
+ "buildConfig": {
+ "uglify": true
+ }
+ },
+ "jam": {
+ "dependencies": {
+ "jquery": ">=1.2"
+ },
+ "main": "src/jquery.cookie.js",
+ "include": [
+ "src/jquery.cookie.js"
+ ]
+ }
+}
diff --git a/public_html/assets/js/jquery-cookie/src/.jshintrc b/public_html/assets/js/jquery-cookie/src/.jshintrc
new file mode 100644
index 0000000..241dd9f
--- /dev/null
+++ b/public_html/assets/js/jquery-cookie/src/.jshintrc
@@ -0,0 +1,13 @@
+{
+ "browser": true,
+ "camelcase": true,
+ "jquery": true,
+ "quotmark": "single",
+ "globals": {
+ "define": true,
+ "module": true,
+ "require": true
+ },
+
+ "extends": "../.jshintrc"
+}
diff --git a/public_html/assets/js/jquery-cookie/src/jquery.cookie.js b/public_html/assets/js/jquery-cookie/src/jquery.cookie.js
new file mode 100644
index 0000000..8218817
--- /dev/null
+++ b/public_html/assets/js/jquery-cookie/src/jquery.cookie.js
@@ -0,0 +1,114 @@
+/*!
+ * jQuery Cookie Plugin v1.4.1
+ * https://github.com/carhartl/jquery-cookie
+ *
+ * Copyright 2006, 2014 Klaus Hartl
+ * Released under the MIT license
+ */
+(function (factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD (Register as an anonymous module)
+ define(['jquery'], factory);
+ } else if (typeof exports === 'object') {
+ // Node/CommonJS
+ module.exports = factory(require('jquery'));
+ } else {
+ // Browser globals
+ factory(jQuery);
+ }
+}(function ($) {
+
+ var pluses = /\+/g;
+
+ function encode(s) {
+ return config.raw ? s : encodeURIComponent(s);
+ }
+
+ function decode(s) {
+ return config.raw ? s : decodeURIComponent(s);
+ }
+
+ function stringifyCookieValue(value) {
+ return encode(config.json ? JSON.stringify(value) : String(value));
+ }
+
+ function parseCookieValue(s) {
+ if (s.indexOf('"') === 0) {
+ // This is a quoted cookie as according to RFC2068, unescape...
+ s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
+ }
+
+ try {
+ // Replace server-side written pluses with spaces.
+ // If we can't decode the cookie, ignore it, it's unusable.
+ // If we can't parse the cookie, ignore it, it's unusable.
+ s = decodeURIComponent(s.replace(pluses, ' '));
+ return config.json ? JSON.parse(s) : s;
+ } catch(e) {}
+ }
+
+ function read(s, converter) {
+ var value = config.raw ? s : parseCookieValue(s);
+ return $.isFunction(converter) ? converter(value) : value;
+ }
+
+ var config = $.cookie = function (key, value, options) {
+
+ // Write
+
+ if (arguments.length > 1 && !$.isFunction(value)) {
+ options = $.extend({}, config.defaults, options);
+
+ if (typeof options.expires === 'number') {
+ var days = options.expires, t = options.expires = new Date();
+ t.setMilliseconds(t.getMilliseconds() + days * 864e+5);
+ }
+
+ return (document.cookie = [
+ encode(key), '=', stringifyCookieValue(value),
+ options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
+ options.path ? '; path=' + options.path : '',
+ options.domain ? '; domain=' + options.domain : '',
+ options.secure ? '; secure' : ''
+ ].join(''));
+ }
+
+ // Read
+
+ var result = key ? undefined : {},
+ // To prevent the for loop in the first place assign an empty array
+ // in case there are no cookies at all. Also prevents odd result when
+ // calling $.cookie().
+ cookies = document.cookie ? document.cookie.split('; ') : [],
+ i = 0,
+ l = cookies.length;
+
+ for (; i < l; i++) {
+ var parts = cookies[i].split('='),
+ name = decode(parts.shift()),
+ cookie = parts.join('=');
+
+ if (key === name) {
+ // If second argument (value) is a function it's a converter...
+ result = read(cookie, value);
+ break;
+ }
+
+ // Prevent storing a cookie that we couldn't decode.
+ if (!key && (cookie = read(cookie)) !== undefined) {
+ result[name] = cookie;
+ }
+ }
+
+ return result;
+ };
+
+ config.defaults = {};
+
+ $.removeCookie = function (key, options) {
+ // Must not alter options, thus extending a fresh object...
+ $.cookie(key, '', $.extend({}, options, { expires: -1 }));
+ return !$.cookie(key);
+ };
+
+}));
diff --git a/public_html/assets/js/jquery-cookie/test/.jshintrc b/public_html/assets/js/jquery-cookie/test/.jshintrc
new file mode 100644
index 0000000..bc52b0a
--- /dev/null
+++ b/public_html/assets/js/jquery-cookie/test/.jshintrc
@@ -0,0 +1,9 @@
+{
+ "browser": true,
+ "jquery": true,
+ "qunit": true,
+
+ "-W053": true,
+
+ "extends": "../.jshintrc"
+}
diff --git a/public_html/assets/js/jquery-cookie/test/index.html b/public_html/assets/js/jquery-cookie/test/index.html
new file mode 100644
index 0000000..ade6830
--- /dev/null
+++ b/public_html/assets/js/jquery-cookie/test/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+ jquery.cookie Test Suite
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public_html/assets/js/jquery-cookie/test/malformed_cookie.html b/public_html/assets/js/jquery-cookie/test/malformed_cookie.html
new file mode 100644
index 0000000..74178d4
--- /dev/null
+++ b/public_html/assets/js/jquery-cookie/test/malformed_cookie.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public_html/assets/js/jquery-cookie/test/tests.js b/public_html/assets/js/jquery-cookie/test/tests.js
new file mode 100644
index 0000000..68b47cc
--- /dev/null
+++ b/public_html/assets/js/jquery-cookie/test/tests.js
@@ -0,0 +1,345 @@
+// Required for exposing test results to the Sauce Labs API.
+// Can be removed when the following issue is fixed:
+// https://github.com/axemclion/grunt-saucelabs/issues/84
+QUnit.done(function (details) {
+ window.global_test_results = details;
+});
+
+
+var lifecycle = {
+ teardown: function () {
+ $.cookie.defaults = {};
+ delete $.cookie.raw;
+ delete $.cookie.json;
+ $.each($.cookie(), $.removeCookie);
+ }
+};
+
+
+module('read', lifecycle);
+
+test('simple value', function () {
+ expect(1);
+ document.cookie = 'c=v';
+ strictEqual($.cookie('c'), 'v', 'should return value');
+});
+
+test('empty value', function () {
+ expect(1);
+ // IE saves cookies with empty string as "c; ", e.g. without "=" as opposed to EOMB, which
+ // resulted in a bug while reading such a cookie.
+ $.cookie('c', '');
+ strictEqual($.cookie('c'), '', 'should return value');
+});
+
+test('not existing', function () {
+ expect(1);
+ strictEqual($.cookie('whatever'), undefined, 'return undefined');
+});
+
+test('RFC 2068 quoted string', function () {
+ expect(1);
+ document.cookie = 'c="v@address.com\\"\\\\\\""';
+ strictEqual($.cookie('c'), 'v@address.com"\\"', 'should decode RFC 2068 quoted string');
+});
+
+test('decode', function () {
+ expect(1);
+ document.cookie = encodeURIComponent(' c') + '=' + encodeURIComponent(' v');
+ strictEqual($.cookie(' c'), ' v', 'should decode key and value');
+});
+
+test('decode pluses to space for server side written cookie', function () {
+ expect(1);
+ document.cookie = 'c=foo+bar';
+ strictEqual($.cookie('c'), 'foo bar', 'should convert pluses back to space');
+});
+
+test('raw = true', function () {
+ expect(2);
+ $.cookie.raw = true;
+
+ document.cookie = 'c=%20v';
+ strictEqual($.cookie('c'), '%20v', 'should not decode value');
+
+ // see https://github.com/carhartl/jquery-cookie/issues/50
+ $.cookie('c', 'foo=bar');
+ strictEqual($.cookie('c'), 'foo=bar', 'should include the entire value');
+});
+
+test('json = true', function () {
+ expect(1);
+
+ if ('JSON' in window) {
+ $.cookie.json = true;
+ $.cookie('c', { foo: 'bar' });
+ deepEqual($.cookie('c'), { foo: 'bar' }, 'should parse JSON');
+ } else {
+ ok(true);
+ }
+});
+
+test('not existing with json = true', function () {
+ expect(1);
+
+ if ('JSON' in window) {
+ $.cookie.json = true;
+ strictEqual($.cookie('whatever'), undefined, "won't throw exception");
+ } else {
+ ok(true);
+ }
+});
+
+test('string with json = true', function () {
+ expect(1);
+
+ if ('JSON' in window) {
+ $.cookie.json = true;
+ $.cookie('c', 'v');
+ strictEqual($.cookie('c'), 'v', 'should return value');
+ } else {
+ ok(true);
+ }
+});
+
+test('invalid JSON string with json = true', function () {
+ expect(1);
+
+ if ('JSON' in window) {
+ $.cookie('c', 'v');
+ $.cookie.json = true;
+ strictEqual($.cookie('c'), undefined, "won't throw exception, returns undefined");
+ } else {
+ ok(true);
+ }
+});
+
+test('invalid URL encoding', function () {
+ expect(1);
+ document.cookie = 'bad=foo%';
+ strictEqual($.cookie('bad'), undefined, "won't throw exception, returns undefined");
+ // Delete manually here because it requires raw === true...
+ $.cookie.raw = true;
+ $.removeCookie('bad');
+});
+
+asyncTest('malformed cookie value in IE (#88, #117)', function () {
+ expect(1);
+ // Sandbox in an iframe so that we can poke around with document.cookie.
+ var iframe = $('')[0];
+ $(iframe).on('load', function () {
+ start();
+ if (iframe.contentWindow.ok) {
+ strictEqual(iframe.contentWindow.testValue, 'two', 'reads all cookie values, skipping duplicate occurences of "; "');
+ } else {
+ // Skip the test where we can't stub document.cookie using
+ // Object.defineProperty. Seems to work fine in
+ // Chrome, Firefox and IE 8+.
+ ok(true, 'N/A');
+ }
+ });
+ document.body.appendChild(iframe);
+});
+
+test('Call to read all when there are cookies', function () {
+ $.cookie('c', 'v');
+ $.cookie('foo', 'bar');
+ deepEqual($.cookie(), { c: 'v', foo: 'bar' }, 'returns object containing all cookies');
+});
+
+test('Call to read all when there are no cookies at all', function () {
+ deepEqual($.cookie(), {}, 'returns empty object');
+});
+
+test('Call to read all with json: true', function () {
+ $.cookie.json = true;
+ $.cookie('c', { foo: 'bar' });
+ deepEqual($.cookie(), { c: { foo: 'bar' } }, 'returns JSON parsed cookies');
+});
+
+test('Call to read all with a badly encoded cookie', function () {
+ expect(1);
+ document.cookie = 'bad=foo%';
+ document.cookie = 'good=foo';
+ deepEqual($.cookie(), { good: 'foo' }, 'returns object containing all decodable cookies');
+ // Delete manually here because it requires raw === true...
+ $.cookie.raw = true;
+ $.removeCookie('bad');
+});
+
+
+module('write', lifecycle);
+
+test('String primitive', function () {
+ expect(1);
+ $.cookie('c', 'v');
+ strictEqual($.cookie('c'), 'v', 'should write value');
+});
+
+test('String object', function () {
+ expect(1);
+ $.cookie('c', new String('v'));
+ strictEqual($.cookie('c'), 'v', 'should write value');
+});
+
+test('value "[object Object]"', function () {
+ expect(1);
+ $.cookie('c', '[object Object]');
+ strictEqual($.cookie('c'), '[object Object]', 'should write value');
+});
+
+test('number', function () {
+ expect(1);
+ $.cookie('c', 1234);
+ strictEqual($.cookie('c'), '1234', 'should write value');
+});
+
+test('null', function () {
+ expect(1);
+ $.cookie('c', null);
+ strictEqual($.cookie('c'), 'null', 'should write value');
+});
+
+test('undefined', function () {
+ expect(1);
+ $.cookie('c', undefined);
+ strictEqual($.cookie('c'), 'undefined', 'should write value');
+});
+
+test('expires option as days from now', function () {
+ expect(1);
+ var sevenDaysFromNow = new Date();
+ sevenDaysFromNow.setDate(sevenDaysFromNow.getDate() + 21);
+ strictEqual($.cookie('c', 'v', { expires: 21 }), 'c=v; expires=' + sevenDaysFromNow.toUTCString(),
+ 'should write the cookie string with expires');
+});
+
+test('expires option as fraction of a day', function () {
+ expect(1);
+
+ var now = new Date().getTime();
+ var expires = Date.parse($.cookie('c', 'v', { expires: 0.5 }).replace(/.+expires=/, ''));
+
+ // When we were using Date.setDate() fractions have been ignored
+ // and expires resulted in the current date. Allow 1000 milliseconds
+ // difference for execution time.
+ ok(expires > now + 1000, 'should write expires attribute with the correct date');
+});
+
+test('expires option as Date instance', function () {
+ expect(1);
+ var sevenDaysFromNow = new Date();
+ sevenDaysFromNow.setDate(sevenDaysFromNow.getDate() + 7);
+ strictEqual($.cookie('c', 'v', { expires: sevenDaysFromNow }), 'c=v; expires=' + sevenDaysFromNow.toUTCString(),
+ 'should write the cookie string with expires');
+});
+
+test('return value', function () {
+ expect(1);
+ strictEqual($.cookie('c', 'v'), 'c=v', 'should return written cookie string');
+});
+
+test('defaults', function () {
+ expect(2);
+ $.cookie.defaults.path = '/foo';
+ ok($.cookie('c', 'v').match(/path=\/foo/), 'should use options from defaults');
+ ok($.cookie('c', 'v', { path: '/bar' }).match(/path=\/bar/), 'options argument has precedence');
+});
+
+test('raw = true', function () {
+ expect(1);
+ $.cookie.raw = true;
+ strictEqual($.cookie('c[1]', 'v[1]'), 'c[1]=v[1]', 'should not encode');
+ // Delete manually here because it requires raw === true...
+ $.removeCookie('c[1]');
+});
+
+test('json = true', function () {
+ expect(1);
+ $.cookie.json = true;
+
+ if ('JSON' in window) {
+ $.cookie('c', { foo: 'bar' });
+ strictEqual(document.cookie, 'c=' + encodeURIComponent(JSON.stringify({ foo: 'bar' })), 'should stringify JSON');
+ } else {
+ ok(true);
+ }
+});
+
+
+module('removeCookie', lifecycle);
+
+test('deletion', function () {
+ expect(1);
+ $.cookie('c', 'v');
+ $.removeCookie('c');
+ strictEqual(document.cookie, '', 'should delete the cookie');
+});
+
+test('when sucessfully deleted', function () {
+ expect(1);
+ $.cookie('c', 'v');
+ strictEqual($.removeCookie('c'), true, 'returns true');
+});
+
+test('when cookie does not exist', function () {
+ expect(1);
+ strictEqual($.removeCookie('c'), true, 'returns true');
+});
+
+test('when deletion failed', function () {
+ expect(1);
+ $.cookie('c', 'v');
+
+ var originalCookie = $.cookie;
+ $.cookie = function () {
+ // Stub deletion...
+ if (arguments.length === 1) {
+ return originalCookie.apply(null, arguments);
+ }
+ };
+
+ strictEqual($.removeCookie('c'), false, 'returns false');
+
+ $.cookie = originalCookie;
+});
+
+test('with options', function () {
+ expect(1);
+ var options = { path: '/' };
+ $.cookie('c', 'v', options);
+ $.removeCookie('c', options);
+ strictEqual(document.cookie, '', 'should delete the cookie');
+});
+
+test('passing options reference', function () {
+ expect(1);
+ var options = { path: '/' };
+ $.cookie('c', 'v', options);
+ $.removeCookie('c', options);
+ deepEqual(options, { path: '/' }, "won't alter options object");
+});
+
+test('[] used in name', function () {
+ expect(1);
+ $.cookie.raw = true;
+ document.cookie = 'c[1]=foo';
+ $.removeCookie('c[1]');
+ strictEqual(document.cookie, '', 'delete the cookie');
+});
+
+
+module('conversion', lifecycle);
+
+test('read converter', function() {
+ expect(1);
+ $.cookie('c', '1');
+ strictEqual($.cookie('c', Number), 1, 'converts read value');
+});
+
+test('read converter with raw = true', function() {
+ expect(1);
+ $.cookie.raw = true;
+ $.cookie('c', '1');
+ strictEqual($.cookie('c', Number), 1, 'does not decode, but converts read value');
+});
diff --git a/public_html/assets/js/mastodon.js/.DS_Store b/public_html/assets/js/mastodon.js/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/public_html/assets/js/mastodon.js/.DS_Store differ
diff --git a/public_html/assets/js/mastodon.js/LICENSE b/public_html/assets/js/mastodon.js/LICENSE
new file mode 100644
index 0000000..8dada3e
--- /dev/null
+++ b/public_html/assets/js/mastodon.js/LICENSE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/public_html/assets/js/mastodon.js/README b/public_html/assets/js/mastodon.js/README
new file mode 100644
index 0000000..43c1553
--- /dev/null
+++ b/public_html/assets/js/mastodon.js/README
@@ -0,0 +1,3 @@
+Javascript Mastodon API Client Library for Browser Clients
+
+Check out index.html for a "how-to"
\ No newline at end of file
diff --git a/public_html/assets/js/mastodon.js/index.html b/public_html/assets/js/mastodon.js/index.html
new file mode 100644
index 0000000..76d7668
--- /dev/null
+++ b/public_html/assets/js/mastodon.js/index.html
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public_html/assets/js/mastodon.js/mastodon.js b/public_html/assets/js/mastodon.js/mastodon.js
new file mode 100644
index 0000000..0745836
--- /dev/null
+++ b/public_html/assets/js/mastodon.js/mastodon.js
@@ -0,0 +1,277 @@
+// mastodon javascript lib
+// by @kirschn@pleasehug.me 2017
+// no fucking copyright
+// do whatever you want with it
+// but please don't hurt it (and keep this header)
+
+var MastodonAPI = function(config) {
+ var apiBase = config.instance + "/api/v1/";
+ return {
+ setConfig: function (key, value) {
+ // modify initial config afterwards
+ config[key] = value;
+ },
+ getConfig: function(key) {
+ //get config key
+ return config[key];
+ },
+ get: function (endpoint) {
+ // for GET API calls
+ // can be called with two or three parameters
+ // endpoint, callback
+ // or
+ // endpoint, queryData, callback
+ // where querydata is an object {["paramname1", "paramvalue1], ["paramname2","paramvalue2"]}
+
+ // variables
+ var queryData, callback,
+ queryStringAppend = "?";
+
+ // check with which arguments we're supplied
+ if (typeof arguments[1] === "function") {
+ queryData = {};
+ callback = arguments[1];
+ } else {
+ queryData = arguments[1];
+ callback = arguments[2];
+ }
+ // build queryData Object into a URL Query String
+ for (var i in queryData) {
+ if (queryData.hasOwnProperty(i)) {
+ if (typeof queryData[i] === "string") {
+ queryStringAppend += queryData[i] + "&";
+ } else if (typeof queryData[i] === "object") {
+ queryStringAppend += queryData[i].name + "="+ queryData[i].data + "&";
+ }
+ }
+ }
+ // ajax function
+ $.ajax({
+ url: apiBase + endpoint + queryStringAppend,
+ type: "GET",
+ headers: {"Authorization": "Bearer " + config.api_user_token},
+ success: function(data, textStatus, xhr) {
+
+ //weeey it was successful
+ console.log("Successful GET API request to " +apiBase+endpoint);
+ responce_headers = xhr.getAllResponseHeaders();
+
+ //aaand start the callback
+ //might have to check what "textStatus" actually is, jquery docs are a bit dodgy
+ callback(data,textStatus);
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`);
+ if ( xhr.status === 401 ) {
+ location.href = "/logout"
+ }
+ }
+ });
+ },
+ getArray: function (endpoint) {
+ // for GET API calls
+ // can be called with two or three parameters
+ // endpoint, callback
+ // or
+ // endpoint, queryData, callback
+ // where querydata is an object {["paramname1", "paramvalue1], ["paramname2","paramvalue2"]}
+
+ // variables
+ var queryData, callback,
+ queryStringAppend = "?";
+
+ // check with which arguments we're supplied
+ if (typeof arguments[1] === "function") {
+ queryData = {};
+ callback = arguments[1];
+ } else {
+ queryData = arguments[1];
+ callback = arguments[2];
+ }
+ // build queryData Object into a URL Query String
+ for (var i in queryData) {
+ if (queryData.hasOwnProperty(i)) {
+ if (typeof queryData[i] === "string") {
+ queryStringAppend += queryData[i] + "&";
+ } else if (typeof queryData[i] === "object") {
+ for ( var j in queryData[i].data ){
+ queryStringAppend += queryData[i].name + "[]="+ queryData[i].data[j] + "&";
+ }
+ }
+ }
+ }
+ // ajax function
+ $.ajax({
+ url: apiBase + endpoint + queryStringAppend,
+ type: "GET",
+ headers: {"Authorization": "Bearer " + config.api_user_token},
+ success: function(data, textStatus, xhr) {
+
+ //weeey it was successful
+ console.log("Successful GET API request to " +apiBase+endpoint);
+ responce_headers = xhr.getAllResponseHeaders();
+
+ //aaand start the callback
+ //might have to check what "textStatus" actually is, jquery docs are a bit dodgy
+ callback(data,textStatus);
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`);
+ if ( xhr.status === 401 ) {
+ location.href = "/logout"
+ }
+ }
+ });
+ },
+ getOther: function (domainAndEndpoint) {
+
+ var queryData, callback,
+ queryStringAppend = "?";
+
+ // check with which arguments we're supplied
+ if (typeof arguments[1] === "function") {
+ queryData = {};
+ callback = arguments[1];
+ } else {
+ queryData = arguments[1];
+ callback = arguments[2];
+ }
+ // build queryData Object into a URL Query String
+ for (var i in queryData) {
+ if (queryData.hasOwnProperty(i)) {
+ if (typeof queryData[i] === "string") {
+ queryStringAppend += queryData[i] + "&";
+ } else if (typeof queryData[i] === "object") {
+ queryStringAppend += queryData[i].name + "="+ queryData[i].data + "&";
+ }
+ }
+ }
+ // ajax function
+ $.ajax({
+ url: domainAndEndpoint + queryStringAppend,
+ type: "GET",
+ success: function(data, textStatus, xhr) {
+
+ //weeey it was successful
+ console.log("Successful GET API request to " +domainAndEndpoint);
+ responce_headers = xhr.getAllResponseHeaders();
+
+ //aaand start the callback
+ //might have to check what "textStatus" actually is, jquery docs are a bit dodgy
+ callback(data,textStatus);
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`);
+ if ( xhr.status === 401 ) {
+ location.href = "/logout"
+ }
+ }
+ });
+ },
+ post: function (endpoint) {
+ // for POST API calls
+ var postData, callback;
+ // check with which arguments we're supplied
+ if (typeof arguments[1] === "function") {
+ postData = {};
+ callback = arguments[1];
+ } else {
+ postData = arguments[1];
+ callback = arguments[2];
+ }
+ $.ajax({
+ url: apiBase + endpoint,
+ type: "POST",
+ data: postData,
+ headers: {"Authorization": "Bearer " + config.api_user_token},
+ success: function(data, textStatus) {
+ console.log("Successful POST API request to " +apiBase+endpoint);
+ callback(data,textStatus)
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`);
+ if ( xhr.status === 401 ) {
+ location.href = "/logout"
+ }
+ }
+ });
+ },
+ postMedia: function (endpoint) {
+
+ // for POST API calls
+ var postData, callback;
+ // check with which arguments we're supplied
+ if (typeof arguments[1] === "function") {
+ postData = {};
+ callback = arguments[1];
+ } else {
+ postData = arguments[1];
+ callback = arguments[2];
+ }
+
+ $.ajax({
+ url: apiBase + endpoint,
+ type: "POST",
+ data: postData,
+ contentType: false,
+ processData: false,
+ headers: {"Authorization": "Bearer " + config.api_user_token},
+ success: function(data, textStatus) {
+ console.log("Successful POST API request to " +apiBase+endpoint);
+ callback(data,textStatus)
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`);
+ if ( xhr.status === 401 ) {
+ location.href = "/logout"
+ }
+ }
+ });
+
+ },
+ delete: function (endpoint, callback) {
+ // for DELETE API calls.
+ $.ajax({
+ url: apiBase + endpoint,
+ type: "DELETE",
+ headers: {"Authorization": "Bearer " + config.api_user_token},
+ success: function(data, textStatus) {
+ console.log("Successful DELETE API request to " +apiBase+endpoint);
+ callback(data,textStatus)
+ },
+ error: function(xhr, textStatus, errorThrown) {
+ putMessage(`[${xhr.status}] ${xhr.responseJSON['error']}`);
+ if ( xhr.status === 401 ) {
+ location.href = "/logout"
+ }
+ }
+ });
+ },
+ stream: function (streamType, onData) {
+ // Event Stream Support
+ // websocket streaming is undocumented. i had to reverse engineer the fucking web client.
+ // streamType is either
+ // user for your local home TL and notifications
+ // public for your federated TL
+ // public:local for your home TL
+ // hashtag&tag=fuckdonaldtrump for the stream of #fuckdonaldtrump
+ // callback gets called whenever new data ist recieved
+ // callback { event: (eventtype), payload: {mastodon object as described in the api docs} }
+ // eventtype could be notification (=notification) or update (= new toot in TL)
+ var es = new WebSocket("wss://" + apiBase.substr(8)
+ +"streaming?access_token=" + config.api_user_token + "&stream=" + streamType);
+ var listener = function (event) {
+ console.log("Got Data from Stream " + streamType);
+ event = JSON.parse(event.data);
+ event.payload = JSON.parse(event.payload);
+ onData(event);
+ };
+ es.onmessage = listener;
+
+
+ }
+ };
+};
+
+// node.js
+if (typeof module !== 'undefined') { module.exports = MastodonAPI; };
diff --git a/public_html/assets/js/replace_emoji.js b/public_html/assets/js/replace_emoji.js
new file mode 100644
index 0000000..a7980ca
--- /dev/null
+++ b/public_html/assets/js/replace_emoji.js
@@ -0,0 +1,3475 @@
+const emoji_dict = { ":hash:": "#⃣",
+ ":zero:": "0⃣",
+ ":one:": "1⃣",
+ ":two:": "2⃣",
+ ":three:": "3⃣",
+ ":four:": "4⃣",
+ ":five:": "5⃣",
+ ":six:": "6⃣",
+ ":seven:": "7⃣",
+ ":eight:": "8⃣",
+ ":nine:": "9⃣",
+ ":copyright:": "©",
+ ":registered:": "®",
+ ":bangbang:": "‼",
+ ":interrobang:": "⁉",
+ ":tm:": "™",
+ ":information_source:": "ℹ",
+ ":left_right_arrow:": "↔",
+ ":arrow_up_down:": "↕",
+ ":arrow_upper_left:": "↖",
+ ":third_place:": "🥉",
+ ":third_place_medal:": "🥉",
+ ":arrow_upper_right:": "↗",
+ ":arrow_lower_right:": "↘",
+ ":arrow_lower_left:": "↙",
+ ":second_place:": "🥈",
+ ":second_place_medal:": "🥈",
+ ":leftwards_arrow_with_hook:": "↩",
+ ":arrow_right_hook:": "↪",
+ ":watch:": "⌚",
+ ":hourglass:": "⌛",
+ ":fast_forward:": "⏩",
+ ":rewind:": "⏪",
+ ":arrow_double_up:": "⏫",
+ ":arrow_double_down:": "⏬",
+ ":alarm_clock:": "⏰",
+ ":hourglass_flowing_sand:": "⏳",
+ ":m:": "Ⓜ",
+ ":black_small_square:": "▪",
+ ":white_small_square:": "▫",
+ ":arrow_forward:": "▶",
+ ":arrow_backward:": "◀",
+ ":white_medium_square:": "◻",
+ ":black_medium_square:": "◼",
+ ":white_medium_small_square:": "◽",
+ ":black_medium_small_square:": "◾",
+ ":sunny:": "☀",
+ ":cloud:": "☁",
+ ":telephone:": "☎",
+ ":ballot_box_with_check:": "☑",
+ ":umbrella:": "☔",
+ ":coffee:": "☕",
+ ":point_up:": "☝",
+ ":relaxed:": "☺",
+ ":aries:": "♈",
+ ":first_place:": "🥇",
+ ":first_place_medal:": "🥇",
+ ":taurus:": "♉",
+ ":fencer:": "🤺",
+ ":fencing:": "🤺",
+ ":gemini:": "♊",
+ ":cancer:": "♋",
+ ":goal:": "🥅",
+ ":goal_net:": "🥅",
+ ":leo:": "♌",
+ ":asterisk_symbol:": "*",
+ ":virgo:": "♍",
+ ":handball:": "🤾",
+ ":libra:": "♎",
+ ":regional_indicator_z:": "🇿",
+ ":water_polo:": "🤽",
+ ":scorpius:": "♏",
+ ":sagittarius:": "♐",
+ ":martial_arts_uniform:": "🥋",
+ ":karate_uniform:": "🥋",
+ ":capricorn:": "♑",
+ ":boxing_glove:": "🥊",
+ ":boxing_gloves:": "🥊",
+ ":aquarius:": "♒",
+ ":wrestlers:": "🤼",
+ ":wrestling:": "🤼",
+ ":pisces:": "♓",
+ ":spades:": "♠",
+ ":clubs:": "♣",
+ ":hearts:": "♥",
+ ":diamonds:": "♦",
+ ":hotsprings:": "♨",
+ ":recycle:": "♻",
+ ":juggling:": "🤹",
+ ":juggler:": "🤹",
+ ":wheelchair:": "♿",
+ ":anchor:": "⚓",
+ ":warning:": "⚠",
+ ":zap:": "⚡",
+ ":white_circle:": "⚪",
+ ":black_circle:": "⚫",
+ ":soccer:": "⚽",
+ ":baseball:": "⚾",
+ ":snowman:": "⛄",
+ ":partly_sunny:": "⛅",
+ ":ophiuchus:": "⛎",
+ ":cartwheel:": "🤸",
+ ":person_doing_cartwheel:": "🤸",
+ ":no_entry:": "⛔",
+ ":church:": "⛪",
+ ":fountain:": "⛲",
+ ":canoe:": "🛶",
+ ":kayak:": "🛶",
+ ":golf:": "⛳",
+ ":sailboat:": "⛵",
+ ":tent:": "⛺",
+ ":fuelpump:": "⛽",
+ ":scissors:": "✂",
+ ":white_check_mark:": "✅",
+ ":airplane:": "✈",
+ ":envelope:": "✉",
+ ":fist:": "✊",
+ ":raised_hand:": "✋",
+ ":v:": "✌",
+ ":pencil2:": "✏",
+ ":black_nib:": "✒",
+ ":heavy_check_mark:": "✔",
+ ":heavy_multiplication_x:": "✖",
+ ":sparkles:": "✨",
+ ":eight_spoked_asterisk:": "✳",
+ ":eight_pointed_black_star:": "✴",
+ ":snowflake:": "❄",
+ ":sparkle:": "❇",
+ ":x:": "❌",
+ ":negative_squared_cross_mark:": "❎",
+ ":question:": "❓",
+ ":grey_question:": "❔",
+ ":motor_scooter:": "🛵",
+ ":motorbike:": "🛵",
+ ":grey_exclamation:": "❕",
+ ":exclamation:": "❗",
+ ":heart:": "❤",
+ ":heavy_plus_sign:": "➕",
+ ":heavy_minus_sign:": "➖",
+ ":heavy_division_sign:": "➗",
+ ":arrow_right:": "➡",
+ ":curly_loop:": "➰",
+ ":arrow_heading_up:": "⤴",
+ ":arrow_heading_down:": "⤵",
+ ":arrow_left:": "⬅",
+ ":arrow_up:": "⬆",
+ ":scooter:": "🛴",
+ ":arrow_down:": "⬇",
+ ":black_large_square:": "⬛",
+ ":white_large_square:": "⬜",
+ ":star:": "⭐",
+ ":o:": "⭕",
+ ":wavy_dash:": "〰",
+ ":part_alternation_mark:": "〽",
+ ":congratulations:": "㊗",
+ ":shopping_cart:": "🛒",
+ ":shopping_trolley:": "🛒",
+ ":secret:": "㊙",
+ ":mahjong:": "🀄",
+ ":black_joker:": "🃏",
+ ":a:": "🅰",
+ ":b:": "🅱",
+ ":o2:": "🅾",
+ ":parking:": "🅿",
+ ":octagonal_sign:": "🛑",
+ ":stop_sign:": "🛑",
+ ":ab:": "🆎",
+ ":cl:": "🆑",
+ ":regional_indicator_y:": "🇾",
+ ":cool:": "🆒",
+ ":free:": "🆓",
+ ":id:": "🆔",
+ ":new:": "🆕",
+ ":ng:": "🆖",
+ ":ok:": "🆗",
+ ":sos:": "🆘",
+ ":spoon:": "🥄",
+ ":up:": "🆙",
+ ":vs:": "🆚",
+ ":flag_cn:": "🇨🇳",
+ ":cn:": "🇨🇳",
+ ":flag_de:": "🇩🇪",
+ ":de:": "🇩🇪",
+ ":flag_es:": "🇪🇸",
+ ":es:": "🇪🇸",
+ ":flag_fr:": "🇫🇷",
+ ":fr:": "🇫🇷",
+ ":flag_gb:": "🇬🇧",
+ ":gb:": "🇬🇧",
+ ":champagne_glass:": "🥂",
+ ":clinking_glass:": "🥂",
+ ":tumbler_glass:": "🥃",
+ ":whisky:": "🥃",
+ ":flag_it:": "🇮🇹",
+ ":it:": "🇮🇹",
+ ":flag_jp:": "🇯🇵",
+ ":jp:": "🇯🇵",
+ ":flag_kr:": "🇰🇷",
+ ":kr:": "🇰🇷",
+ ":flag_us:": "🇺🇸",
+ ":us:": "🇺🇸",
+ ":flag_ru:": "🇷🇺",
+ ":ru:": "🇷🇺",
+ ":koko:": "🈁",
+ ":sa:": "🈂",
+ ":u7121:": "🈚",
+ ":u6307:": "🈯",
+ ":stuffed_flatbread:": "🥙",
+ ":stuffed_pita:": "🥙",
+ ":u7981:": "🈲",
+ ":u7a7a:": "🈳",
+ ":u5408:": "🈴",
+ ":u6e80:": "🈵",
+ ":u6709:": "🈶",
+ ":shallow_pan_of_food:": "🥘",
+ ":paella:": "🥘",
+ ":u6708:": "🈷",
+ ":u7533:": "🈸",
+ ":u5272:": "🈹",
+ ":salad:": "🥗",
+ ":green_salad:": "🥗",
+ ":u55b6:": "🈺",
+ ":ideograph_advantage:": "🉐",
+ ":accept:": "🉑",
+ ":cyclone:": "🌀",
+ ":french_bread:": "🥖",
+ ":baguette_bread:": "🥖",
+ ":foggy:": "🌁",
+ ":closed_umbrella:": "🌂",
+ ":night_with_stars:": "🌃",
+ ":sunrise_over_mountains:": "🌄",
+ ":sunrise:": "🌅",
+ ":city_dusk:": "🌆",
+ ":carrot:": "🥕",
+ ":city_sunset:": "🌇",
+ ":city_sunrise:": "🌇",
+ ":rainbow:": "🌈",
+ ":potato:": "🥔",
+ ":bridge_at_night:": "🌉",
+ ":ocean:": "🌊",
+ ":volcano:": "🌋",
+ ":milky_way:": "🌌",
+ ":earth_asia:": "🌏",
+ ":new_moon:": "🌑",
+ ":bacon:": "🥓",
+ ":first_quarter_moon:": "🌓",
+ ":waxing_gibbous_moon:": "🌔",
+ ":full_moon:": "🌕",
+ ":crescent_moon:": "🌙",
+ ":first_quarter_moon_with_face:": "🌛",
+ ":star2:": "🌟",
+ ":cucumber:": "🥒",
+ ":stars:": "🌠",
+ ":chestnut:": "🌰",
+ ":avocado:": "🥑",
+ ":seedling:": "🌱",
+ ":palm_tree:": "🌴",
+ ":cactus:": "🌵",
+ ":tulip:": "🌷",
+ ":cherry_blossom:": "🌸",
+ ":rose:": "🌹",
+ ":hibiscus:": "🌺",
+ ":sunflower:": "🌻",
+ ":blossom:": "🌼",
+ ":corn:": "🌽",
+ ":croissant:": "🥐",
+ ":ear_of_rice:": "🌾",
+ ":herb:": "🌿",
+ ":four_leaf_clover:": "🍀",
+ ":maple_leaf:": "🍁",
+ ":fallen_leaf:": "🍂",
+ ":leaves:": "🍃",
+ ":mushroom:": "🍄",
+ ":tomato:": "🍅",
+ ":eggplant:": "🍆",
+ ":grapes:": "🍇",
+ ":melon:": "🍈",
+ ":watermelon:": "🍉",
+ ":tangerine:": "🍊",
+ ":wilted_rose:": "🥀",
+ ":wilted_flower:": "🥀",
+ ":banana:": "🍌",
+ ":pineapple:": "🍍",
+ ":apple:": "🍎",
+ ":green_apple:": "🍏",
+ ":peach:": "🍑",
+ ":cherries:": "🍒",
+ ":strawberry:": "🍓",
+ ":rhino:": "🦏",
+ ":rhinoceros:": "🦏",
+ ":hamburger:": "🍔",
+ ":pizza:": "🍕",
+ ":meat_on_bone:": "🍖",
+ ":lizard:": "🦎",
+ ":poultry_leg:": "🍗",
+ ":rice_cracker:": "🍘",
+ ":rice_ball:": "🍙",
+ ":gorilla:": "🦍",
+ ":rice:": "🍚",
+ ":curry:": "🍛",
+ ":deer:": "🦌",
+ ":ramen:": "🍜",
+ ":spaghetti:": "🍝",
+ ":bread:": "🍞",
+ ":fries:": "🍟",
+ ":butterfly:": "🦋",
+ ":sweet_potato:": "🍠",
+ ":dango:": "🍡",
+ ":fox:": "🦊",
+ ":fox_face:": "🦊",
+ ":oden:": "🍢",
+ ":sushi:": "🍣",
+ ":owl:": "🦉",
+ ":fried_shrimp:": "🍤",
+ ":fish_cake:": "🍥",
+ ":shark:": "🦈",
+ ":icecream:": "🍦",
+ ":bat:": "🦇",
+ ":shaved_ice:": "🍧",
+ ":regional_indicator_x:": "🇽",
+ ":ice_cream:": "🍨",
+ ":duck:": "🦆",
+ ":doughnut:": "🍩",
+ ":eagle:": "🦅",
+ ":cookie:": "🍪",
+ ":black_heart:": "🖤",
+ ":chocolate_bar:": "🍫",
+ ":candy:": "🍬",
+ ":lollipop:": "🍭",
+ ":custard:": "🍮",
+ ":pudding:": "🍮",
+ ":flan:": "🍮",
+ ":honey_pot:": "🍯",
+ ":fingers_crossed:": "🤞",
+ ":hand_with_index_and_middle_finger_crossed:": "🤞",
+ ":cake:": "🍰",
+ ":bento:": "🍱",
+ ":stew:": "🍲",
+ ":handshake:": "🤝",
+ ":shaking_hands:": "🤝",
+ ":cooking:": "🍳",
+ ":fork_and_knife:": "🍴",
+ ":tea:": "🍵",
+ ":sake:": "🍶",
+ ":wine_glass:": "🍷",
+ ":cocktail:": "🍸",
+ ":tropical_drink:": "🍹",
+ ":beer:": "🍺",
+ ":beers:": "🍻",
+ ":ribbon:": "🎀",
+ ":gift:": "🎁",
+ ":birthday:": "🎂",
+ ":jack_o_lantern:": "🎃",
+ ":left_facing_fist:": "🤛",
+ ":left_fist:": "🤛",
+ ":right_facing_fist:": "🤜",
+ ":right_fist:": "🤜",
+ ":christmas_tree:": "🎄",
+ ":santa:": "🎅",
+ ":fireworks:": "🎆",
+ ":raised_back_of_hand:": "🤚",
+ ":back_of_hand:": "🤚",
+ ":sparkler:": "🎇",
+ ":balloon:": "🎈",
+ ":tada:": "🎉",
+ ":confetti_ball:": "🎊",
+ ":tanabata_tree:": "🎋",
+ ":crossed_flags:": "🎌",
+ ":call_me:": "🤙",
+ ":call_me_hand:": "🤙",
+ ":bamboo:": "🎍",
+ ":man_dancing:": "🕺",
+ ":male_dancer:": "🕺",
+ ":dolls:": "🎎",
+ ":selfie:": "🤳",
+ ":flags:": "🎏",
+ ":pregnant_woman:": "🤰",
+ ":expecting_woman:": "🤰",
+ ":wind_chime:": "🎐",
+ ":face_palm:": "🤦",
+ ":facepalm:": "🤦",
+ ":shrug:": "🤷",
+ ":rice_scene:": "🎑",
+ ":school_satchel:": "🎒",
+ ":mortar_board:": "🎓",
+ ":carousel_horse:": "🎠",
+ ":ferris_wheel:": "🎡",
+ ":roller_coaster:": "🎢",
+ ":fishing_pole_and_fish:": "🎣",
+ ":microphone:": "🎤",
+ ":pound_symbol:": "#",
+ ":movie_camera:": "🎥",
+ ":cinema:": "🎦",
+ ":headphones:": "🎧",
+ ":mrs_claus:": "🤶",
+ ":mother_christmas:": "🤶",
+ ":art:": "🎨",
+ ":man_in_tuxedo:": "🤵",
+ ":tophat:": "🎩",
+ ":circus_tent:": "🎪",
+ ":prince:": "🤴",
+ ":ticket:": "🎫",
+ ":clapper:": "🎬",
+ ":performing_arts:": "🎭",
+ ":sneezing_face:": "🤧",
+ ":sneeze:": "🤧",
+ ":video_game:": "🎮",
+ ":dart:": "🎯",
+ ":slot_machine:": "🎰",
+ ":8ball:": "🎱",
+ ":game_die:": "🎲",
+ ":bowling:": "🎳",
+ ":flower_playing_cards:": "🎴",
+ ":lying_face:": "🤥",
+ ":liar:": "🤥",
+ ":musical_note:": "🎵",
+ ":notes:": "🎶",
+ ":saxophone:": "🎷",
+ ":drooling_face:": "🤤",
+ ":drool:": "🤤",
+ ":guitar:": "🎸",
+ ":musical_keyboard:": "🎹",
+ ":trumpet:": "🎺",
+ ":rofl:": "🤣",
+ ":rolling_on_the_floor_laughing:": "🤣",
+ ":violin:": "🎻",
+ ":musical_score:": "🎼",
+ ":running_shirt_with_sash:": "🎽",
+ ":nauseated_face:": "🤢",
+ ":sick:": "🤢",
+ ":tennis:": "🎾",
+ ":ski:": "🎿",
+ ":basketball:": "🏀",
+ ":checkered_flag:": "🏁",
+ ":clown:": "🤡",
+ ":clown_face:": "🤡",
+ ":snowboarder:": "🏂",
+ ":runner:": "🏃",
+ ":surfer:": "🏄",
+ ":trophy:": "🏆",
+ ":football:": "🏈",
+ ":swimmer:": "🏊",
+ ":house:": "🏠",
+ ":house_with_garden:": "🏡",
+ ":office:": "🏢",
+ ":post_office:": "🏣",
+ ":hospital:": "🏥",
+ ":bank:": "🏦",
+ ":atm:": "🏧",
+ ":hotel:": "🏨",
+ ":love_hotel:": "🏩",
+ ":convenience_store:": "🏪",
+ ":school:": "🏫",
+ ":department_store:": "🏬",
+ ":cowboy:": "🤠",
+ ":face_with_cowboy_hat:": "🤠",
+ ":factory:": "🏭",
+ ":izakaya_lantern:": "🏮",
+ ":japanese_castle:": "🏯",
+ ":european_castle:": "🏰",
+ ":snail:": "🐌",
+ ":snake:": "🐍",
+ ":racehorse:": "🐎",
+ ":sheep:": "🐑",
+ ":monkey:": "🐒",
+ ":chicken:": "🐔",
+ ":boar:": "🐗",
+ ":elephant:": "🐘",
+ ":octopus:": "🐙",
+ ":shell:": "🐚",
+ ":prince_tone1:": "🤴🏻",
+ ":bug:": "🐛",
+ ":ant:": "🐜",
+ ":bee:": "🐝",
+ ":beetle:": "🐞",
+ ":fish:": "🐟",
+ ":tropical_fish:": "🐠",
+ ":blowfish:": "🐡",
+ ":turtle:": "🐢",
+ ":hatching_chick:": "🐣",
+ ":baby_chick:": "🐤",
+ ":hatched_chick:": "🐥",
+ ":bird:": "🐦",
+ ":penguin:": "🐧",
+ ":koala:": "🐨",
+ ":poodle:": "🐩",
+ ":camel:": "🐫",
+ ":dolphin:": "🐬",
+ ":mouse:": "🐭",
+ ":cow:": "🐮",
+ ":tiger:": "🐯",
+ ":rabbit:": "🐰",
+ ":cat:": "🐱",
+ ":dragon_face:": "🐲",
+ ":whale:": "🐳",
+ ":horse:": "🐴",
+ ":monkey_face:": "🐵",
+ ":dog:": "🐶",
+ ":pig:": "🐷",
+ ":frog:": "🐸",
+ ":hamster:": "🐹",
+ ":wolf:": "🐺",
+ ":bear:": "🐻",
+ ":panda_face:": "🐼",
+ ":pig_nose:": "🐽",
+ ":feet:": "🐾",
+ ":paw_prints:": "🐾",
+ ":prince_tone2:": "🤴🏼",
+ ":eyes:": "👀",
+ ":ear:": "👂",
+ ":nose:": "👃",
+ ":lips:": "👄",
+ ":tongue:": "👅",
+ ":prince_tone3:": "🤴🏽",
+ ":point_up_2:": "👆",
+ ":point_down:": "👇",
+ ":point_left:": "👈",
+ ":point_right:": "👉",
+ ":punch:": "👊",
+ ":wave:": "👋",
+ ":ok_hand:": "👌",
+ ":thumbsup:": "👍",
+ ":+1:": "👍",
+ ":thumbup:": "👍",
+ ":thumbsdown:": "👎",
+ ":1:": "👎",
+ ":thumbdown:": "👎",
+ ":clap:": "👏",
+ ":open_hands:": "👐",
+ ":crown:": "👑",
+ ":womans_hat:": "👒",
+ ":eyeglasses:": "👓",
+ ":necktie:": "👔",
+ ":shirt:": "👕",
+ ":prince_tone4:": "🤴🏾",
+ ":jeans:": "👖",
+ ":dress:": "👗",
+ ":kimono:": "👘",
+ ":prince_tone5:": "🤴🏿",
+ ":bikini:": "👙",
+ ":womans_clothes:": "👚",
+ ":purse:": "👛",
+ ":handbag:": "👜",
+ ":pouch:": "👝",
+ ":mans_shoe:": "👞",
+ ":athletic_shoe:": "👟",
+ ":high_heel:": "👠",
+ ":sandal:": "👡",
+ ":boot:": "👢",
+ ":footprints:": "👣",
+ ":bust_in_silhouette:": "👤",
+ ":mrs_claus_tone1:": "🤶🏻",
+ ":mother_christmas_tone1:": "🤶🏻",
+ ":boy:": "👦",
+ ":girl:": "👧",
+ ":man:": "👨",
+ ":woman:": "👩",
+ ":family:": "👪",
+ ":couple:": "👫",
+ ":cop:": "👮",
+ ":dancers:": "👯",
+ ":bride_with_veil:": "👰",
+ ":person_with_blond_hair:": "👱",
+ ":man_with_gua_pi_mao:": "👲",
+ ":man_with_turban:": "👳",
+ ":older_man:": "👴",
+ ":older_woman:": "👵",
+ ":grandma:": "👵",
+ ":baby:": "👶",
+ ":construction_worker:": "👷",
+ ":princess:": "👸",
+ ":japanese_ogre:": "👹",
+ ":mrs_claus_tone2:": "🤶🏼",
+ ":mother_christmas_tone2:": "🤶🏼",
+ ":japanese_goblin:": "👺",
+ ":ghost:": "👻",
+ ":angel:": "👼",
+ ":alien:": "👽",
+ ":space_invader:": "👾",
+ ":mrs_claus_tone3:": "🤶🏽",
+ ":mother_christmas_tone3:": "🤶🏽",
+ ":imp:": "👿",
+ ":skull:": "💀",
+ ":skeleton:": "💀",
+ ":card_index:": "📇",
+ ":information_desk_person:": "💁",
+ ":guardsman:": "💂",
+ ":dancer:": "💃",
+ ":lipstick:": "💄",
+ ":nail_care:": "💅",
+ ":ledger:": "📒",
+ ":massage:": "💆",
+ ":notebook:": "📓",
+ ":haircut:": "💇",
+ ":notebook_with_decorative_cover:": "📔",
+ ":barber:": "💈",
+ ":closed_book:": "📕",
+ ":syringe:": "💉",
+ ":book:": "📖",
+ ":pill:": "💊",
+ ":green_book:": "📗",
+ ":kiss:": "💋",
+ ":blue_book:": "📘",
+ ":love_letter:": "💌",
+ ":orange_book:": "📙",
+ ":ring:": "💍",
+ ":books:": "📚",
+ ":gem:": "💎",
+ ":mrs_claus_tone4:": "🤶🏾",
+ ":mother_christmas_tone4:": "🤶🏾",
+ ":name_badge:": "📛",
+ ":couplekiss:": "💏",
+ ":scroll:": "📜",
+ ":bouquet:": "💐",
+ ":pencil:": "📝",
+ ":mrs_claus_tone5:": "🤶🏿",
+ ":mother_christmas_tone5:": "🤶🏿",
+ ":couple_with_heart:": "💑",
+ ":telephone_receiver:": "📞",
+ ":wedding:": "💒",
+ ":pager:": "📟",
+ ":fax:": "📠",
+ ":heartbeat:": "💓",
+ ":satellite:": "📡",
+ ":loudspeaker:": "📢",
+ ":man_in_tuxedo_tone1:": "🤵🏻",
+ ":tuxedo_tone1:": "🤵🏻",
+ ":broken_heart:": "💔",
+ ":mega:": "📣",
+ ":outbox_tray:": "📤",
+ ":two_hearts:": "💕",
+ ":inbox_tray:": "📥",
+ ":package:": "📦",
+ ":man_in_tuxedo_tone2:": "🤵🏼",
+ ":tuxedo_tone2:": "🤵🏼",
+ ":sparkling_heart:": "💖",
+ ":email:": "📧",
+ ":incoming_envelope:": "📨",
+ ":heartpulse:": "💗",
+ ":man_in_tuxedo_tone3:": "🤵🏽",
+ ":tuxedo_tone3:": "🤵🏽",
+ ":envelope_with_arrow:": "📩",
+ ":mailbox_closed:": "📪",
+ ":cupid:": "💘",
+ ":mailbox:": "📫",
+ ":man_in_tuxedo_tone4:": "🤵🏾",
+ ":tuxedo_tone4:": "🤵🏾",
+ ":postbox:": "📮",
+ ":blue_heart:": "💙",
+ ":newspaper:": "📰",
+ ":man_in_tuxedo_tone5:": "🤵🏿",
+ ":tuxedo_tone5:": "🤵🏿",
+ ":iphone:": "📱",
+ ":green_heart:": "💚",
+ ":shrug_tone1:": "🤷🏻",
+ ":calling:": "📲",
+ ":vibration_mode:": "📳",
+ ":yellow_heart:": "💛",
+ ":shrug_tone2:": "🤷🏼",
+ ":mobile_phone_off:": "📴",
+ ":signal_strength:": "📶",
+ ":shrug_tone3:": "🤷🏽",
+ ":purple_heart:": "💜",
+ ":shrug_tone4:": "🤷🏾",
+ ":camera:": "📷",
+ ":video_camera:": "📹",
+ ":gift_heart:": "💝",
+ ":tv:": "📺",
+ ":shrug_tone5:": "🤷🏿",
+ ":radio:": "📻",
+ ":revolving_hearts:": "💞",
+ ":vhs:": "📼",
+ ":face_palm_tone1:": "🤦🏻",
+ ":facepalm_tone1:": "🤦🏻",
+ ":arrows_clockwise:": "🔃",
+ ":heart_decoration:": "💟",
+ ":loud_sound:": "🔊",
+ ":battery:": "🔋",
+ ":diamond_shape_with_a_dot_inside:": "💠",
+ ":electric_plug:": "🔌",
+ ":mag:": "🔍",
+ ":face_palm_tone2:": "🤦🏼",
+ ":facepalm_tone2:": "🤦🏼",
+ ":bulb:": "💡",
+ ":mag_right:": "🔎",
+ ":lock_with_ink_pen:": "🔏",
+ ":anger:": "💢",
+ ":closed_lock_with_key:": "🔐",
+ ":key:": "🔑",
+ ":bomb:": "💣",
+ ":lock:": "🔒",
+ ":unlock:": "🔓",
+ ":zzz:": "💤",
+ ":bell:": "🔔",
+ ":bookmark:": "🔖",
+ ":boom:": "💥",
+ ":face_palm_tone3:": "🤦🏽",
+ ":facepalm_tone3:": "🤦🏽",
+ ":link:": "🔗",
+ ":radio_button:": "🔘",
+ ":sweat_drops:": "💦",
+ ":back:": "🔙",
+ ":end:": "🔚",
+ ":droplet:": "💧",
+ ":face_palm_tone4:": "🤦🏾",
+ ":facepalm_tone4:": "🤦🏾",
+ ":on:": "🔛",
+ ":soon:": "🔜",
+ ":dash:": "💨",
+ ":top:": "🔝",
+ ":underage:": "🔞",
+ ":poop:": "💩",
+ ":shit:": "💩",
+ ":hankey:": "💩",
+ ":poo:": "💩",
+ ":keycap_ten:": "🔟",
+ ":muscle:": "💪",
+ ":capital_abcd:": "🔠",
+ ":abcd:": "🔡",
+ ":dizzy:": "💫",
+ ":face_palm_tone5:": "🤦🏿",
+ ":facepalm_tone5:": "🤦🏿",
+ ":1234:": "🔢",
+ ":symbols:": "🔣",
+ ":speech_balloon:": "💬",
+ ":abc:": "🔤",
+ ":fire:": "🔥",
+ ":flame:": "🔥",
+ ":white_flower:": "💮",
+ ":flashlight:": "🔦",
+ ":wrench:": "🔧",
+ ":100:": "💯",
+ ":hammer:": "🔨",
+ ":nut_and_bolt:": "🔩",
+ ":moneybag:": "💰",
+ ":knife:": "🔪",
+ ":gun:": "🔫",
+ ":currency_exchange:": "💱",
+ ":pregnant_woman_tone1:": "🤰🏻",
+ ":expecting_woman_tone1:": "🤰🏻",
+ ":crystal_ball:": "🔮",
+ ":heavy_dollar_sign:": "💲",
+ ":six_pointed_star:": "🔯",
+ ":credit_card:": "💳",
+ ":beginner:": "🔰",
+ ":trident:": "🔱",
+ ":yen:": "💴",
+ ":pregnant_woman_tone2:": "🤰🏼",
+ ":expecting_woman_tone2:": "🤰🏼",
+ ":black_square_button:": "🔲",
+ ":white_square_button:": "🔳",
+ ":dollar:": "💵",
+ ":red_circle:": "🔴",
+ ":blue_circle:": "🔵",
+ ":money_with_wings:": "💸",
+ ":large_orange_diamond:": "🔶",
+ ":large_blue_diamond:": "🔷",
+ ":chart:": "💹",
+ ":pregnant_woman_tone3:": "🤰🏽",
+ ":expecting_woman_tone3:": "🤰🏽",
+ ":small_orange_diamond:": "🔸",
+ ":small_blue_diamond:": "🔹",
+ ":seat:": "💺",
+ ":small_red_triangle:": "🔺",
+ ":small_red_triangle_down:": "🔻",
+ ":computer:": "💻",
+ ":arrow_up_small:": "🔼",
+ ":briefcase:": "💼",
+ ":arrow_down_small:": "🔽",
+ ":clock1:": "🕐",
+ ":minidisc:": "💽",
+ ":clock2:": "🕑",
+ ":floppy_disk:": "💾",
+ ":pregnant_woman_tone4:": "🤰🏾",
+ ":expecting_woman_tone4:": "🤰🏾",
+ ":clock3:": "🕒",
+ ":cd:": "💿",
+ ":clock4:": "🕓",
+ ":dvd:": "📀",
+ ":clock5:": "🕔",
+ ":clock6:": "🕕",
+ ":file_folder:": "📁",
+ ":clock7:": "🕖",
+ ":clock8:": "🕗",
+ ":open_file_folder:": "📂",
+ ":clock9:": "🕘",
+ ":clock10:": "🕙",
+ ":page_with_curl:": "📃",
+ ":clock11:": "🕚",
+ ":clock12:": "🕛",
+ ":page_facing_up:": "📄",
+ ":mount_fuji:": "🗻",
+ ":tokyo_tower:": "🗼",
+ ":date:": "📅",
+ ":statue_of_liberty:": "🗽",
+ ":japan:": "🗾",
+ ":calendar:": "📆",
+ ":moyai:": "🗿",
+ ":grin:": "😁",
+ ":joy:": "😂",
+ ":smiley:": "😃",
+ ":chart_with_upwards_trend:": "📈",
+ ":smile:": "😄",
+ ":sweat_smile:": "😅",
+ ":chart_with_downwards_trend:": "📉",
+ ":laughing:": "😆",
+ ":satisfied:": "😆",
+ ":wink:": "😉",
+ ":bar_chart:": "📊",
+ ":blush:": "😊",
+ ":yum:": "😋",
+ ":clipboard:": "📋",
+ ":relieved:": "😌",
+ ":heart_eyes:": "😍",
+ ":pushpin:": "📌",
+ ":smirk:": "😏",
+ ":unamused:": "😒",
+ ":round_pushpin:": "📍",
+ ":sweat:": "😓",
+ ":pensive:": "😔",
+ ":paperclip:": "📎",
+ ":confounded:": "😖",
+ ":kissing_heart:": "😘",
+ ":pregnant_woman_tone5:": "🤰🏿",
+ ":expecting_woman_tone5:": "🤰🏿",
+ ":straight_ruler:": "📏",
+ ":kissing_closed_eyes:": "😚",
+ ":stuck_out_tongue_winking_eye:": "😜",
+ ":triangular_ruler:": "📐",
+ ":stuck_out_tongue_closed_eyes:": "😝",
+ ":disappointed:": "😞",
+ ":bookmark_tabs:": "📑",
+ ":angry:": "😠",
+ ":rage:": "😡",
+ ":cry:": "😢",
+ ":persevere:": "😣",
+ ":triumph:": "😤",
+ ":disappointed_relieved:": "😥",
+ ":fearful:": "😨",
+ ":weary:": "😩",
+ ":sleepy:": "😪",
+ ":tired_face:": "😫",
+ ":sob:": "😭",
+ ":cold_sweat:": "😰",
+ ":scream:": "😱",
+ ":astonished:": "😲",
+ ":flushed:": "😳",
+ ":dizzy_face:": "😵",
+ ":mask:": "😷",
+ ":smile_cat:": "😸",
+ ":joy_cat:": "😹",
+ ":smiley_cat:": "😺",
+ ":heart_eyes_cat:": "😻",
+ ":smirk_cat:": "😼",
+ ":kissing_cat:": "😽",
+ ":pouting_cat:": "😾",
+ ":crying_cat_face:": "😿",
+ ":scream_cat:": "🙀",
+ ":no_good:": "🙅",
+ ":ok_woman:": "🙆",
+ ":bow:": "🙇",
+ ":see_no_evil:": "🙈",
+ ":man_dancing_tone1:": "🕺🏻",
+ ":male_dancer_tone1:": "🕺🏻",
+ ":hear_no_evil:": "🙉",
+ ":speak_no_evil:": "🙊",
+ ":man_dancing_tone2:": "🕺🏼",
+ ":male_dancer_tone2:": "🕺🏼",
+ ":raising_hand:": "🙋",
+ ":raised_hands:": "🙌",
+ ":person_frowning:": "🙍",
+ ":person_with_pouting_face:": "🙎",
+ ":pray:": "🙏",
+ ":rocket:": "🚀",
+ ":railway_car:": "🚃",
+ ":bullettrain_side:": "🚄",
+ ":bullettrain_front:": "🚅",
+ ":metro:": "🚇",
+ ":station:": "🚉",
+ ":bus:": "🚌",
+ ":busstop:": "🚏",
+ ":ambulance:": "🚑",
+ ":fire_engine:": "🚒",
+ ":police_car:": "🚓",
+ ":taxi:": "🚕",
+ ":red_car:": "🚗",
+ ":blue_car:": "🚙",
+ ":truck:": "🚚",
+ ":ship:": "🚢",
+ ":speedboat:": "🚤",
+ ":traffic_light:": "🚥",
+ ":construction:": "🚧",
+ ":rotating_light:": "🚨",
+ ":triangular_flag_on_post:": "🚩",
+ ":door:": "🚪",
+ ":man_dancing_tone3:": "🕺🏽",
+ ":male_dancer_tone3:": "🕺🏽",
+ ":no_entry_sign:": "🚫",
+ ":smoking:": "🚬",
+ ":no_smoking:": "🚭",
+ ":bike:": "🚲",
+ ":walking:": "🚶",
+ ":mens:": "🚹",
+ ":womens:": "🚺",
+ ":man_dancing_tone4:": "🕺🏾",
+ ":male_dancer_tone4:": "🕺🏾",
+ ":restroom:": "🚻",
+ ":baby_symbol:": "🚼",
+ ":man_dancing_tone5:": "🕺🏿",
+ ":male_dancer_tone5:": "🕺🏿",
+ ":toilet:": "🚽",
+ ":wc:": "🚾",
+ ":selfie_tone1:": "🤳🏻",
+ ":bath:": "🛀",
+ ":metal:": "🤘",
+ ":sign_of_the_horns:": "🤘",
+ ":grinning:": "😀",
+ ":innocent:": "😇",
+ ":smiling_imp:": "😈",
+ ":sunglasses:": "😎",
+ ":neutral_face:": "😐",
+ ":expressionless:": "😑",
+ ":confused:": "😕",
+ ":kissing:": "😗",
+ ":selfie_tone2:": "🤳🏼",
+ ":kissing_smiling_eyes:": "😙",
+ ":stuck_out_tongue:": "😛",
+ ":worried:": "😟",
+ ":frowning:": "😦",
+ ":anguished:": "😧",
+ ":grimacing:": "😬",
+ ":open_mouth:": "😮",
+ ":hushed:": "😯",
+ ":sleeping:": "😴",
+ ":no_mouth:": "😶",
+ ":helicopter:": "🚁",
+ ":steam_locomotive:": "🚂",
+ ":train2:": "🚆",
+ ":light_rail:": "🚈",
+ ":tram:": "🚊",
+ ":oncoming_bus:": "🚍",
+ ":trolleybus:": "🚎",
+ ":minibus:": "🚐",
+ ":oncoming_police_car:": "🚔",
+ ":oncoming_taxi:": "🚖",
+ ":oncoming_automobile:": "🚘",
+ ":articulated_lorry:": "🚛",
+ ":selfie_tone3:": "🤳🏽",
+ ":tractor:": "🚜",
+ ":monorail:": "🚝",
+ ":mountain_railway:": "🚞",
+ ":suspension_railway:": "🚟",
+ ":mountain_cableway:": "🚠",
+ ":aerial_tramway:": "🚡",
+ ":rowboat:": "🚣",
+ ":vertical_traffic_light:": "🚦",
+ ":selfie_tone4:": "🤳🏾",
+ ":put_litter_in_its_place:": "🚮",
+ ":do_not_litter:": "🚯",
+ ":selfie_tone5:": "🤳🏿",
+ ":potable_water:": "🚰",
+ ":nonpotable_water:": "🚱",
+ ":no_bicycles:": "🚳",
+ ":fingers_crossed_tone1:": "🤞🏻",
+ ":hand_with_index_and_middle_fingers_crossed_tone1:": "🤞🏻",
+ ":bicyclist:": "🚴",
+ ":mountain_bicyclist:": "🚵",
+ ":no_pedestrians:": "🚷",
+ ":children_crossing:": "🚸",
+ ":shower:": "🚿",
+ ":bathtub:": "🛁",
+ ":passport_control:": "🛂",
+ ":fingers_crossed_tone2:": "🤞🏼",
+ ":hand_with_index_and_middle_fingers_crossed_tone2:": "🤞🏼",
+ ":customs:": "🛃",
+ ":baggage_claim:": "🛄",
+ ":fingers_crossed_tone3:": "🤞🏽",
+ ":hand_with_index_and_middle_fingers_crossed_tone3:": "🤞🏽",
+ ":left_luggage:": "🛅",
+ ":earth_africa:": "🌍",
+ ":earth_americas:": "🌎",
+ ":globe_with_meridians:": "🌐",
+ ":waxing_crescent_moon:": "🌒",
+ ":waning_gibbous_moon:": "🌖",
+ ":last_quarter_moon:": "🌗",
+ ":waning_crescent_moon:": "🌘",
+ ":new_moon_with_face:": "🌚",
+ ":last_quarter_moon_with_face:": "🌜",
+ ":full_moon_with_face:": "🌝",
+ ":sun_with_face:": "🌞",
+ ":evergreen_tree:": "🌲",
+ ":deciduous_tree:": "🌳",
+ ":lemon:": "🍋",
+ ":fingers_crossed_tone4:": "🤞🏾",
+ ":hand_with_index_and_middle_fingers_crossed_tone4:": "🤞🏾",
+ ":pear:": "🍐",
+ ":baby_bottle:": "🍼",
+ ":horse_racing:": "🏇",
+ ":rugby_football:": "🏉",
+ ":european_post_office:": "🏤",
+ ":rat:": "🐀",
+ ":mouse2:": "🐁",
+ ":ox:": "🐂",
+ ":water_buffalo:": "🐃",
+ ":cow2:": "🐄",
+ ":tiger2:": "🐅",
+ ":leopard:": "🐆",
+ ":rabbit2:": "🐇",
+ ":cat2:": "🐈",
+ ":dragon:": "🐉",
+ ":crocodile:": "🐊",
+ ":whale2:": "🐋",
+ ":ram:": "🐏",
+ ":goat:": "🐐",
+ ":rooster:": "🐓",
+ ":dog2:": "🐕",
+ ":pig2:": "🐖",
+ ":fingers_crossed_tone5:": "🤞🏿",
+ ":hand_with_index_and_middle_fingers_crossed_tone5:": "🤞🏿",
+ ":dromedary_camel:": "🐪",
+ ":busts_in_silhouette:": "👥",
+ ":two_men_holding_hands:": "👬",
+ ":two_women_holding_hands:": "👭",
+ ":thought_balloon:": "💭",
+ ":euro:": "💶",
+ ":call_me_tone1:": "🤙🏻",
+ ":call_me_hand_tone1:": "🤙🏻",
+ ":pound:": "💷",
+ ":mailbox_with_mail:": "📬",
+ ":mailbox_with_no_mail:": "📭",
+ ":call_me_tone2:": "🤙🏼",
+ ":call_me_hand_tone2:": "🤙🏼",
+ ":postal_horn:": "📯",
+ ":no_mobile_phones:": "📵",
+ ":twisted_rightwards_arrows:": "🔀",
+ ":repeat:": "🔁",
+ ":repeat_one:": "🔂",
+ ":arrows_counterclockwise:": "🔄",
+ ":call_me_tone3:": "🤙🏽",
+ ":call_me_hand_tone3:": "🤙🏽",
+ ":low_brightness:": "🔅",
+ ":high_brightness:": "🔆",
+ ":mute:": "🔇",
+ ":sound:": "🔉",
+ ":no_bell:": "🔕",
+ ":microscope:": "🔬",
+ ":telescope:": "🔭",
+ ":clock130:": "🕜",
+ ":clock230:": "🕝",
+ ":clock330:": "🕞",
+ ":clock430:": "🕟",
+ ":clock530:": "🕠",
+ ":clock630:": "🕡",
+ ":clock730:": "🕢",
+ ":clock830:": "🕣",
+ ":clock930:": "🕤",
+ ":clock1030:": "🕥",
+ ":clock1130:": "🕦",
+ ":clock1230:": "🕧",
+ ":speaker:": "🔈",
+ ":train:": "🚋",
+ ":loop:": "➿",
+ ":flag_af:": "🇦🇫",
+ ":af:": "🇦🇫",
+ ":flag_al:": "🇦🇱",
+ ":al:": "🇦🇱",
+ ":flag_dz:": "🇩🇿",
+ ":dz:": "🇩🇿",
+ ":flag_ad:": "🇦🇩",
+ ":ad:": "🇦🇩",
+ ":flag_ao:": "🇦🇴",
+ ":ao:": "🇦🇴",
+ ":flag_ag:": "🇦🇬",
+ ":ag:": "🇦🇬",
+ ":flag_ar:": "🇦🇷",
+ ":ar:": "🇦🇷",
+ ":flag_am:": "🇦🇲",
+ ":am:": "🇦🇲",
+ ":flag_au:": "🇦🇺",
+ ":au:": "🇦🇺",
+ ":flag_at:": "🇦🇹",
+ ":at:": "🇦🇹",
+ ":flag_az:": "🇦🇿",
+ ":az:": "🇦🇿",
+ ":flag_bs:": "🇧🇸",
+ ":bs:": "🇧🇸",
+ ":flag_bh:": "🇧🇭",
+ ":bh:": "🇧🇭",
+ ":flag_bd:": "🇧🇩",
+ ":bd:": "🇧🇩",
+ ":flag_bb:": "🇧🇧",
+ ":bb:": "🇧🇧",
+ ":flag_by:": "🇧🇾",
+ ":by:": "🇧🇾",
+ ":flag_be:": "🇧🇪",
+ ":be:": "🇧🇪",
+ ":flag_bz:": "🇧🇿",
+ ":bz:": "🇧🇿",
+ ":flag_bj:": "🇧🇯",
+ ":bj:": "🇧🇯",
+ ":flag_bt:": "🇧🇹",
+ ":bt:": "🇧🇹",
+ ":flag_bo:": "🇧🇴",
+ ":bo:": "🇧🇴",
+ ":flag_ba:": "🇧🇦",
+ ":ba:": "🇧🇦",
+ ":flag_bw:": "🇧🇼",
+ ":bw:": "🇧🇼",
+ ":flag_br:": "🇧🇷",
+ ":br:": "🇧🇷",
+ ":flag_bn:": "🇧🇳",
+ ":bn:": "🇧🇳",
+ ":flag_bg:": "🇧🇬",
+ ":bg:": "🇧🇬",
+ ":flag_bf:": "🇧🇫",
+ ":bf:": "🇧🇫",
+ ":flag_bi:": "🇧🇮",
+ ":bi:": "🇧🇮",
+ ":flag_kh:": "🇰🇭",
+ ":kh:": "🇰🇭",
+ ":flag_cm:": "🇨🇲",
+ ":cm:": "🇨🇲",
+ ":flag_ca:": "🇨🇦",
+ ":ca:": "🇨🇦",
+ ":flag_cv:": "🇨🇻",
+ ":cv:": "🇨🇻",
+ ":call_me_tone4:": "🤙🏾",
+ ":call_me_hand_tone4:": "🤙🏾",
+ ":flag_cf:": "🇨🇫",
+ ":cf:": "🇨🇫",
+ ":flag_td:": "🇹🇩",
+ ":td:": "🇹🇩",
+ ":flag_cl:": "🇨🇱",
+ ":chile:": "🇨🇱",
+ ":flag_co:": "🇨🇴",
+ ":co:": "🇨🇴",
+ ":flag_km:": "🇰🇲",
+ ":km:": "🇰🇲",
+ ":flag_cr:": "🇨🇷",
+ ":cr:": "🇨🇷",
+ ":flag_ci:": "🇨🇮",
+ ":ci:": "🇨🇮",
+ ":flag_hr:": "🇭🇷",
+ ":hr:": "🇭🇷",
+ ":flag_cu:": "🇨🇺",
+ ":cu:": "🇨🇺",
+ ":flag_cy:": "🇨🇾",
+ ":cy:": "🇨🇾",
+ ":flag_cz:": "🇨🇿",
+ ":cz:": "🇨🇿",
+ ":call_me_tone5:": "🤙🏿",
+ ":call_me_hand_tone5:": "🤙🏿",
+ ":flag_cd:": "🇨🇩",
+ ":congo:": "🇨🇩",
+ ":left_facing_fist_tone1:": "🤛🏻",
+ ":left_fist_tone1:": "🤛🏻",
+ ":flag_dk:": "🇩🇰",
+ ":dk:": "🇩🇰",
+ ":flag_dj:": "🇩🇯",
+ ":dj:": "🇩🇯",
+ ":flag_dm:": "🇩🇲",
+ ":dm:": "🇩🇲",
+ ":flag_do:": "🇩🇴",
+ ":do:": "🇩🇴",
+ ":flag_tl:": "🇹🇱",
+ ":tl:": "🇹🇱",
+ ":flag_ec:": "🇪🇨",
+ ":ec:": "🇪🇨",
+ ":flag_eg:": "🇪🇬",
+ ":eg:": "🇪🇬",
+ ":flag_sv:": "🇸🇻",
+ ":sv:": "🇸🇻",
+ ":flag_gq:": "🇬🇶",
+ ":gq:": "🇬🇶",
+ ":flag_er:": "🇪🇷",
+ ":er:": "🇪🇷",
+ ":flag_ee:": "🇪🇪",
+ ":ee:": "🇪🇪",
+ ":flag_et:": "🇪🇹",
+ ":et:": "🇪🇹",
+ ":left_facing_fist_tone2:": "🤛🏼",
+ ":left_fist_tone2:": "🤛🏼",
+ ":flag_fj:": "🇫🇯",
+ ":fj:": "🇫🇯",
+ ":flag_fi:": "🇫🇮",
+ ":fi:": "🇫🇮",
+ ":flag_ga:": "🇬🇦",
+ ":ga:": "🇬🇦",
+ ":flag_gm:": "🇬🇲",
+ ":gm:": "🇬🇲",
+ ":flag_ge:": "🇬🇪",
+ ":ge:": "🇬🇪",
+ ":flag_gh:": "🇬🇭",
+ ":gh:": "🇬🇭",
+ ":flag_gr:": "🇬🇷",
+ ":gr:": "🇬🇷",
+ ":flag_gd:": "🇬🇩",
+ ":gd:": "🇬🇩",
+ ":flag_gt:": "🇬🇹",
+ ":gt:": "🇬🇹",
+ ":flag_gn:": "🇬🇳",
+ ":gn:": "🇬🇳",
+ ":flag_gw:": "🇬🇼",
+ ":gw:": "🇬🇼",
+ ":flag_gy:": "🇬🇾",
+ ":gy:": "🇬🇾",
+ ":flag_ht:": "🇭🇹",
+ ":ht:": "🇭🇹",
+ ":flag_hn:": "🇭🇳",
+ ":hn:": "🇭🇳",
+ ":flag_hu:": "🇭🇺",
+ ":hu:": "🇭🇺",
+ ":flag_is:": "🇮🇸",
+ ":is:": "🇮🇸",
+ ":flag_in:": "🇮🇳",
+ ":in:": "🇮🇳",
+ ":flag_id:": "🇮🇩",
+ ":indonesia:": "🇮🇩",
+ ":flag_ir:": "🇮🇷",
+ ":ir:": "🇮🇷",
+ ":flag_iq:": "🇮🇶",
+ ":iq:": "🇮🇶",
+ ":flag_ie:": "🇮🇪",
+ ":ie:": "🇮🇪",
+ ":flag_il:": "🇮🇱",
+ ":il:": "🇮🇱",
+ ":flag_jm:": "🇯🇲",
+ ":jm:": "🇯🇲",
+ ":flag_jo:": "🇯🇴",
+ ":jo:": "🇯🇴",
+ ":flag_kz:": "🇰🇿",
+ ":kz:": "🇰🇿",
+ ":flag_ke:": "🇰🇪",
+ ":ke:": "🇰🇪",
+ ":flag_ki:": "🇰🇮",
+ ":ki:": "🇰🇮",
+ ":flag_xk:": "🇽🇰",
+ ":xk:": "🇽🇰",
+ ":flag_kw:": "🇰🇼",
+ ":kw:": "🇰🇼",
+ ":flag_kg:": "🇰🇬",
+ ":kg:": "🇰🇬",
+ ":left_facing_fist_tone3:": "🤛🏽",
+ ":left_fist_tone3:": "🤛🏽",
+ ":flag_la:": "🇱🇦",
+ ":la:": "🇱🇦",
+ ":flag_lv:": "🇱🇻",
+ ":lv:": "🇱🇻",
+ ":flag_lb:": "🇱🇧",
+ ":lb:": "🇱🇧",
+ ":flag_ls:": "🇱🇸",
+ ":ls:": "🇱🇸",
+ ":flag_lr:": "🇱🇷",
+ ":lr:": "🇱🇷",
+ ":flag_ly:": "🇱🇾",
+ ":ly:": "🇱🇾",
+ ":flag_li:": "🇱🇮",
+ ":li:": "🇱🇮",
+ ":flag_lt:": "🇱🇹",
+ ":lt:": "🇱🇹",
+ ":flag_lu:": "🇱🇺",
+ ":lu:": "🇱🇺",
+ ":flag_mk:": "🇲🇰",
+ ":mk:": "🇲🇰",
+ ":flag_mg:": "🇲🇬",
+ ":mg:": "🇲🇬",
+ ":flag_mw:": "🇲🇼",
+ ":mw:": "🇲🇼",
+ ":flag_my:": "🇲🇾",
+ ":my:": "🇲🇾",
+ ":flag_mv:": "🇲🇻",
+ ":mv:": "🇲🇻",
+ ":flag_ml:": "🇲🇱",
+ ":ml:": "🇲🇱",
+ ":flag_mt:": "🇲🇹",
+ ":mt:": "🇲🇹",
+ ":flag_mh:": "🇲🇭",
+ ":mh:": "🇲🇭",
+ ":flag_mr:": "🇲🇷",
+ ":mr:": "🇲🇷",
+ ":flag_mu:": "🇲🇺",
+ ":mu:": "🇲🇺",
+ ":flag_mx:": "🇲🇽",
+ ":mx:": "🇲🇽",
+ ":flag_fm:": "🇫🇲",
+ ":fm:": "🇫🇲",
+ ":flag_md:": "🇲🇩",
+ ":md:": "🇲🇩",
+ ":flag_mc:": "🇲🇨",
+ ":mc:": "🇲🇨",
+ ":flag_mn:": "🇲🇳",
+ ":mn:": "🇲🇳",
+ ":flag_me:": "🇲🇪",
+ ":me:": "🇲🇪",
+ ":flag_ma:": "🇲🇦",
+ ":ma:": "🇲🇦",
+ ":flag_mz:": "🇲🇿",
+ ":mz:": "🇲🇿",
+ ":flag_mm:": "🇲🇲",
+ ":mm:": "🇲🇲",
+ ":flag_na:": "🇳🇦",
+ ":na:": "🇳🇦",
+ ":flag_nr:": "🇳🇷",
+ ":nr:": "🇳🇷",
+ ":flag_np:": "🇳🇵",
+ ":np:": "🇳🇵",
+ ":flag_nl:": "🇳🇱",
+ ":nl:": "🇳🇱",
+ ":flag_nz:": "🇳🇿",
+ ":nz:": "🇳🇿",
+ ":flag_ni:": "🇳🇮",
+ ":ni:": "🇳🇮",
+ ":flag_ne:": "🇳🇪",
+ ":ne:": "🇳🇪",
+ ":flag_ng:": "🇳🇬",
+ ":nigeria:": "🇳🇬",
+ ":flag_kp:": "🇰🇵",
+ ":kp:": "🇰🇵",
+ ":flag_no:": "🇳🇴",
+ ":no:": "🇳🇴",
+ ":flag_om:": "🇴🇲",
+ ":om:": "🇴🇲",
+ ":flag_pk:": "🇵🇰",
+ ":pk:": "🇵🇰",
+ ":flag_pw:": "🇵🇼",
+ ":pw:": "🇵🇼",
+ ":flag_pa:": "🇵🇦",
+ ":pa:": "🇵🇦",
+ ":flag_pg:": "🇵🇬",
+ ":pg:": "🇵🇬",
+ ":left_facing_fist_tone4:": "🤛🏾",
+ ":left_fist_tone4:": "🤛🏾",
+ ":flag_py:": "🇵🇾",
+ ":py:": "🇵🇾",
+ ":flag_pe:": "🇵🇪",
+ ":pe:": "🇵🇪",
+ ":flag_ph:": "🇵🇭",
+ ":ph:": "🇵🇭",
+ ":flag_pl:": "🇵🇱",
+ ":pl:": "🇵🇱",
+ ":flag_pt:": "🇵🇹",
+ ":pt:": "🇵🇹",
+ ":flag_qa:": "🇶🇦",
+ ":qa:": "🇶🇦",
+ ":flag_tw:": "🇹🇼",
+ ":tw:": "🇹🇼",
+ ":flag_cg:": "🇨🇬",
+ ":cg:": "🇨🇬",
+ ":flag_ro:": "🇷🇴",
+ ":ro:": "🇷🇴",
+ ":flag_rw:": "🇷🇼",
+ ":rw:": "🇷🇼",
+ ":flag_kn:": "🇰🇳",
+ ":kn:": "🇰🇳",
+ ":flag_lc:": "🇱🇨",
+ ":lc:": "🇱🇨",
+ ":flag_vc:": "🇻🇨",
+ ":vc:": "🇻🇨",
+ ":flag_ws:": "🇼🇸",
+ ":ws:": "🇼🇸",
+ ":flag_sm:": "🇸🇲",
+ ":sm:": "🇸🇲",
+ ":flag_st:": "🇸🇹",
+ ":st:": "🇸🇹",
+ ":flag_sa:": "🇸🇦",
+ ":saudiarabia:": "🇸🇦",
+ ":saudi:": "🇸🇦",
+ ":left_facing_fist_tone5:": "🤛🏿",
+ ":left_fist_tone5:": "🤛🏿",
+ ":flag_sn:": "🇸🇳",
+ ":sn:": "🇸🇳",
+ ":flag_rs:": "🇷🇸",
+ ":rs:": "🇷🇸",
+ ":flag_sc:": "🇸🇨",
+ ":sc:": "🇸🇨",
+ ":flag_sl:": "🇸🇱",
+ ":sl:": "🇸🇱",
+ ":flag_sg:": "🇸🇬",
+ ":sg:": "🇸🇬",
+ ":flag_sk:": "🇸🇰",
+ ":sk:": "🇸🇰",
+ ":flag_si:": "🇸🇮",
+ ":si:": "🇸🇮",
+ ":flag_sb:": "🇸🇧",
+ ":sb:": "🇸🇧",
+ ":flag_so:": "🇸🇴",
+ ":so:": "🇸🇴",
+ ":flag_za:": "🇿🇦",
+ ":za:": "🇿🇦",
+ ":flag_lk:": "🇱🇰",
+ ":lk:": "🇱🇰",
+ ":flag_sd:": "🇸🇩",
+ ":sd:": "🇸🇩",
+ ":flag_sr:": "🇸🇷",
+ ":sr:": "🇸🇷",
+ ":flag_sz:": "🇸🇿",
+ ":sz:": "🇸🇿",
+ ":flag_se:": "🇸🇪",
+ ":se:": "🇸🇪",
+ ":flag_ch:": "🇨🇭",
+ ":ch:": "🇨🇭",
+ ":flag_sy:": "🇸🇾",
+ ":sy:": "🇸🇾",
+ ":flag_tj:": "🇹🇯",
+ ":tj:": "🇹🇯",
+ ":flag_tz:": "🇹🇿",
+ ":tz:": "🇹🇿",
+ ":flag_th:": "🇹🇭",
+ ":th:": "🇹🇭",
+ ":flag_tg:": "🇹🇬",
+ ":tg:": "🇹🇬",
+ ":flag_to:": "🇹🇴",
+ ":to:": "🇹🇴",
+ ":flag_tt:": "🇹🇹",
+ ":tt:": "🇹🇹",
+ ":flag_tn:": "🇹🇳",
+ ":tn:": "🇹🇳",
+ ":flag_tr:": "🇹🇷",
+ ":tr:": "🇹🇷",
+ ":flag_tm:": "🇹🇲",
+ ":turkmenistan:": "🇹🇲",
+ ":flag_tv:": "🇹🇻",
+ ":tuvalu:": "🇹🇻",
+ ":flag_ug:": "🇺🇬",
+ ":ug:": "🇺🇬",
+ ":flag_ua:": "🇺🇦",
+ ":ua:": "🇺🇦",
+ ":flag_ae:": "🇦🇪",
+ ":ae:": "🇦🇪",
+ ":flag_uy:": "🇺🇾",
+ ":uy:": "🇺🇾",
+ ":flag_uz:": "🇺🇿",
+ ":uz:": "🇺🇿",
+ ":flag_vu:": "🇻🇺",
+ ":vu:": "🇻🇺",
+ ":flag_va:": "🇻🇦",
+ ":va:": "🇻🇦",
+ ":flag_ve:": "🇻🇪",
+ ":ve:": "🇻🇪",
+ ":flag_vn:": "🇻🇳",
+ ":vn:": "🇻🇳",
+ ":flag_eh:": "🇪🇭",
+ ":eh:": "🇪🇭",
+ ":right_facing_fist_tone1:": "🤜🏻",
+ ":right_fist_tone1:": "🤜🏻",
+ ":flag_ye:": "🇾🇪",
+ ":ye:": "🇾🇪",
+ ":flag_zm:": "🇿🇲",
+ ":zm:": "🇿🇲",
+ ":flag_zw:": "🇿🇼",
+ ":zw:": "🇿🇼",
+ ":flag_pr:": "🇵🇷",
+ ":pr:": "🇵🇷",
+ ":flag_ky:": "🇰🇾",
+ ":ky:": "🇰🇾",
+ ":flag_bm:": "🇧🇲",
+ ":bm:": "🇧🇲",
+ ":flag_pf:": "🇵🇫",
+ ":pf:": "🇵🇫",
+ ":flag_ps:": "🇵🇸",
+ ":ps:": "🇵🇸",
+ ":flag_nc:": "🇳🇨",
+ ":nc:": "🇳🇨",
+ ":right_facing_fist_tone2:": "🤜🏼",
+ ":right_fist_tone2:": "🤜🏼",
+ ":flag_sh:": "🇸🇭",
+ ":sh:": "🇸🇭",
+ ":flag_aw:": "🇦🇼",
+ ":aw:": "🇦🇼",
+ ":flag_vi:": "🇻🇮",
+ ":vi:": "🇻🇮",
+ ":flag_hk:": "🇭🇰",
+ ":hk:": "🇭🇰",
+ ":flag_ac:": "🇦🇨",
+ ":ac:": "🇦🇨",
+ ":flag_ms:": "🇲🇸",
+ ":ms:": "🇲🇸",
+ ":flag_gu:": "🇬🇺",
+ ":gu:": "🇬🇺",
+ ":flag_gl:": "🇬🇱",
+ ":gl:": "🇬🇱",
+ ":flag_nu:": "🇳🇺",
+ ":nu:": "🇳🇺",
+ ":flag_wf:": "🇼🇫",
+ ":wf:": "🇼🇫",
+ ":flag_mo:": "🇲🇴",
+ ":mo:": "🇲🇴",
+ ":right_facing_fist_tone3:": "🤜🏽",
+ ":right_fist_tone3:": "🤜🏽",
+ ":flag_fo:": "🇫🇴",
+ ":fo:": "🇫🇴",
+ ":flag_fk:": "🇫🇰",
+ ":fk:": "🇫🇰",
+ ":flag_je:": "🇯🇪",
+ ":je:": "🇯🇪",
+ ":flag_ai:": "🇦🇮",
+ ":ai:": "🇦🇮",
+ ":flag_gi:": "🇬🇮",
+ ":gi:": "🇬🇮",
+ ":film_frames:": "🎞",
+ ":tickets:": "🎟",
+ ":admission_tickets:": "🎟",
+ ":medal:": "🏅",
+ ":sports_medal:": "🏅",
+ ":lifter:": "🏋",
+ ":weight_lifter:": "🏋",
+ ":golfer:": "🏌",
+ ":motorcycle:": "🏍",
+ ":racing_motorcycle:": "🏍",
+ ":race_car:": "🏎",
+ ":racing_car:": "🏎",
+ ":military_medal:": "🎖",
+ ":reminder_ribbon:": "🎗",
+ ":hot_pepper:": "🌶",
+ ":right_facing_fist_tone4:": "🤜🏾",
+ ":right_fist_tone4:": "🤜🏾",
+ ":cloud_rain:": "🌧",
+ ":cloud_with_rain:": "🌧",
+ ":cloud_snow:": "🌨",
+ ":cloud_with_snow:": "🌨",
+ ":cloud_lightning:": "🌩",
+ ":cloud_with_lightning:": "🌩",
+ ":cloud_tornado:": "🌪",
+ ":cloud_with_tornado:": "🌪",
+ ":fog:": "🌫",
+ ":wind_blowing_face:": "🌬",
+ ":chipmunk:": "🐿",
+ ":spider:": "🕷",
+ ":spider_web:": "🕸",
+ ":thermometer:": "🌡",
+ ":microphone2:": "🎙",
+ ":studio_microphone:": "🎙",
+ ":level_slider:": "🎚",
+ ":control_knobs:": "🎛",
+ ":flag_white:": "🏳",
+ ":waving_white_flag:": "🏳",
+ ":flag_black:": "🏴",
+ ":waving_black_flag:": "🏴",
+ ":rosette:": "🏵",
+ ":label:": "🏷",
+ ":camera_with_flash:": "📸",
+ ":projector:": "📽",
+ ":film_projector:": "📽",
+ ":cross:": "✝",
+ ":latin_cross:": "✝",
+ ":om_symbol:": "🕉",
+ ":dove:": "🕊",
+ ":dove_of_peace:": "🕊",
+ ":candle:": "🕯",
+ ":clock:": "🕰",
+ ":mantlepiece_clock:": "🕰",
+ ":hole:": "🕳",
+ ":dark_sunglasses:": "🕶",
+ ":joystick:": "🕹",
+ ":paperclips:": "🖇",
+ ":linked_paperclips:": "🖇",
+ ":pen_ballpoint:": "🖊",
+ ":lower_left_ballpoint_pen:": "🖊",
+ ":pen_fountain:": "🖋",
+ ":lower_left_fountain_pen:": "🖋",
+ ":paintbrush:": "🖌",
+ ":lower_left_paintbrush:": "🖌",
+ ":crayon:": "🖍",
+ ":lower_left_crayon:": "🖍",
+ ":desktop:": "🖥",
+ ":desktop_computer:": "🖥",
+ ":printer:": "🖨",
+ ":right_facing_fist_tone5:": "🤜🏿",
+ ":right_fist_tone5:": "🤜🏿",
+ ":keyboard:": "⌨",
+ ":trackball:": "🖲",
+ ":raised_back_of_hand_tone1:": "🤚🏻",
+ ":back_of_hand_tone1:": "🤚🏻",
+ ":frame_photo:": "🖼",
+ ":frame_with_picture:": "🖼",
+ ":dividers:": "🗂",
+ ":card_index_dividers:": "🗂",
+ ":card_box:": "🗃",
+ ":card_file_box:": "🗃",
+ ":file_cabinet:": "🗄",
+ ":wastebasket:": "🗑",
+ ":notepad_spiral:": "🗒",
+ ":spiral_note_pad:": "🗒",
+ ":calendar_spiral:": "🗓",
+ ":spiral_calendar_pad:": "🗓",
+ ":compression:": "🗜",
+ ":key2:": "🗝",
+ ":old_key:": "🗝",
+ ":newspaper2:": "🗞",
+ ":rolled_up_newspaper:": "🗞",
+ ":dagger:": "🗡",
+ ":dagger_knife:": "🗡",
+ ":speaking_head:": "🗣",
+ ":speaking_head_in_silhouette:": "🗣",
+ ":speech_left:": "🗨",
+ ":left_speech_bubble:": "🗨",
+ ":raised_back_of_hand_tone2:": "🤚🏼",
+ ":back_of_hand_tone2:": "🤚🏼",
+ ":anger_right:": "🗯",
+ ":right_anger_bubble:": "🗯",
+ ":raised_back_of_hand_tone3:": "🤚🏽",
+ ":back_of_hand_tone3:": "🤚🏽",
+ ":ballot_box:": "🗳",
+ ":ballot_box_with_ballot:": "🗳",
+ ":map:": "🗺",
+ ":world_map:": "🗺",
+ ":sleeping_accommodation:": "🛌",
+ ":tools:": "🛠",
+ ":hammer_and_wrench:": "🛠",
+ ":shield:": "🛡",
+ ":oil:": "🛢",
+ ":oil_drum:": "🛢",
+ ":satellite_orbital:": "🛰",
+ ":fork_knife_plate:": "🍽",
+ ":fork_and_knife_with_plate:": "🍽",
+ ":eye:": "👁",
+ ":levitate:": "🕴",
+ ":man_in_business_suit_levitating:": "🕴",
+ ":spy:": "🕵",
+ ":sleuth_or_spy:": "🕵",
+ ":writing_hand:": "✍",
+ ":hand_splayed:": "🖐",
+ ":raised_hand_with_fingers_splayed:": "🖐",
+ ":middle_finger:": "🖕",
+ ":reversed_hand_with_middle_finger_extended:": "🖕",
+ ":vulcan:": "🖖",
+ ":raised_hand_with_part_between_middle_and_ring_fingers:": "🖖",
+ ":slight_frown:": "🙁",
+ ":slightly_frowning_face:": "🙁",
+ ":slight_smile:": "🙂",
+ ":slightly_smiling_face:": "🙂",
+ ":mountain_snow:": "🏔",
+ ":snow_capped_mountain:": "🏔",
+ ":camping:": "🏕",
+ ":beach:": "🏖",
+ ":beach_with_umbrella:": "🏖",
+ ":construction_site:": "🏗",
+ ":building_construction:": "🏗",
+ ":homes:": "🏘",
+ ":house_buildings:": "🏘",
+ ":cityscape:": "🏙",
+ ":house_abandoned:": "🏚",
+ ":derelict_house_building:": "🏚",
+ ":classical_building:": "🏛",
+ ":desert:": "🏜",
+ ":island:": "🏝",
+ ":desert_island:": "🏝",
+ ":park:": "🏞",
+ ":national_park:": "🏞",
+ ":stadium:": "🏟",
+ ":couch:": "🛋",
+ ":couch_and_lamp:": "🛋",
+ ":raised_back_of_hand_tone4:": "🤚🏾",
+ ":back_of_hand_tone4:": "🤚🏾",
+ ":shopping_bags:": "🛍",
+ ":bellhop:": "🛎",
+ ":bellhop_bell:": "🛎",
+ ":bed:": "🛏",
+ ":motorway:": "🛣",
+ ":railway_track:": "🛤",
+ ":railroad_track:": "🛤",
+ ":motorboat:": "🛥",
+ ":airplane_small:": "🛩",
+ ":small_airplane:": "🛩",
+ ":airplane_departure:": "🛫",
+ ":airplane_arriving:": "🛬",
+ ":cruise_ship:": "🛳",
+ ":passenger_ship:": "🛳",
+ ":baby_tone1:": "👶🏻",
+ ":baby_tone2:": "👶🏼",
+ ":baby_tone3:": "👶🏽",
+ ":baby_tone4:": "👶🏾",
+ ":baby_tone5:": "👶🏿",
+ ":boy_tone1:": "👦🏻",
+ ":boy_tone2:": "👦🏼",
+ ":boy_tone3:": "👦🏽",
+ ":boy_tone4:": "👦🏾",
+ ":boy_tone5:": "👦🏿",
+ ":girl_tone1:": "👧🏻",
+ ":girl_tone2:": "👧🏼",
+ ":girl_tone3:": "👧🏽",
+ ":girl_tone4:": "👧🏾",
+ ":girl_tone5:": "👧🏿",
+ ":man_tone1:": "👨🏻",
+ ":man_tone2:": "👨🏼",
+ ":man_tone3:": "👨🏽",
+ ":man_tone4:": "👨🏾",
+ ":man_tone5:": "👨🏿",
+ ":woman_tone1:": "👩🏻",
+ ":woman_tone2:": "👩🏼",
+ ":woman_tone3:": "👩🏽",
+ ":woman_tone4:": "👩🏾",
+ ":woman_tone5:": "👩🏿",
+ ":bride_with_veil_tone1:": "👰🏻",
+ ":bride_with_veil_tone2:": "👰🏼",
+ ":raised_back_of_hand_tone5:": "🤚🏿",
+ ":back_of_hand_tone5:": "🤚🏿",
+ ":bride_with_veil_tone3:": "👰🏽",
+ ":bride_with_veil_tone4:": "👰🏾",
+ ":bride_with_veil_tone5:": "👰🏿",
+ ":person_with_blond_hair_tone1:": "👱🏻",
+ ":person_with_blond_hair_tone2:": "👱🏼",
+ ":person_with_blond_hair_tone3:": "👱🏽",
+ ":person_with_blond_hair_tone4:": "👱🏾",
+ ":person_with_blond_hair_tone5:": "👱🏿",
+ ":man_with_gua_pi_mao_tone1:": "👲🏻",
+ ":man_with_gua_pi_mao_tone2:": "👲🏼",
+ ":man_with_gua_pi_mao_tone3:": "👲🏽",
+ ":man_with_gua_pi_mao_tone4:": "👲🏾",
+ ":man_with_gua_pi_mao_tone5:": "👲🏿",
+ ":man_with_turban_tone1:": "👳🏻",
+ ":man_with_turban_tone2:": "👳🏼",
+ ":man_with_turban_tone3:": "👳🏽",
+ ":man_with_turban_tone4:": "👳🏾",
+ ":man_with_turban_tone5:": "👳🏿",
+ ":older_man_tone1:": "👴🏻",
+ ":older_man_tone2:": "👴🏼",
+ ":older_man_tone3:": "👴🏽",
+ ":older_man_tone4:": "👴🏾",
+ ":older_man_tone5:": "👴🏿",
+ ":older_woman_tone1:": "👵🏻",
+ ":grandma_tone1:": "👵🏻",
+ ":older_woman_tone2:": "👵🏼",
+ ":grandma_tone2:": "👵🏼",
+ ":older_woman_tone3:": "👵🏽",
+ ":grandma_tone3:": "👵🏽",
+ ":older_woman_tone4:": "👵🏾",
+ ":grandma_tone4:": "👵🏾",
+ ":older_woman_tone5:": "👵🏿",
+ ":grandma_tone5:": "👵🏿",
+ ":cop_tone1:": "👮🏻",
+ ":cop_tone2:": "👮🏼",
+ ":cop_tone3:": "👮🏽",
+ ":cop_tone4:": "👮🏾",
+ ":cop_tone5:": "👮🏿",
+ ":construction_worker_tone1:": "👷🏻",
+ ":construction_worker_tone2:": "👷🏼",
+ ":construction_worker_tone3:": "👷🏽",
+ ":construction_worker_tone4:": "👷🏾",
+ ":construction_worker_tone5:": "👷🏿",
+ ":princess_tone1:": "👸🏻",
+ ":princess_tone2:": "👸🏼",
+ ":princess_tone3:": "👸🏽",
+ ":princess_tone4:": "👸🏾",
+ ":cartwheel_tone1:": "🤸🏻",
+ ":person_doing_cartwheel_tone1:": "🤸🏻",
+ ":princess_tone5:": "👸🏿",
+ ":guardsman_tone1:": "💂🏻",
+ ":guardsman_tone2:": "💂🏼",
+ ":cartwheel_tone2:": "🤸🏼",
+ ":person_doing_cartwheel_tone2:": "🤸🏼",
+ ":guardsman_tone3:": "💂🏽",
+ ":guardsman_tone4:": "💂🏾",
+ ":guardsman_tone5:": "💂🏿",
+ ":cartwheel_tone3:": "🤸🏽",
+ ":person_doing_cartwheel_tone3:": "🤸🏽",
+ ":angel_tone1:": "👼🏻",
+ ":angel_tone2:": "👼🏼",
+ ":angel_tone3:": "👼🏽",
+ ":angel_tone4:": "👼🏾",
+ ":angel_tone5:": "👼🏿",
+ ":bow_tone1:": "🙇🏻",
+ ":bow_tone2:": "🙇🏼",
+ ":bow_tone3:": "🙇🏽",
+ ":bow_tone4:": "🙇🏾",
+ ":bow_tone5:": "🙇🏿",
+ ":information_desk_person_tone1:": "💁🏻",
+ ":information_desk_person_tone2:": "💁🏼",
+ ":information_desk_person_tone3:": "💁🏽",
+ ":cartwheel_tone4:": "🤸🏾",
+ ":person_doing_cartwheel_tone4:": "🤸🏾",
+ ":information_desk_person_tone4:": "💁🏾",
+ ":information_desk_person_tone5:": "💁🏿",
+ ":no_good_tone1:": "🙅🏻",
+ ":cartwheel_tone5:": "🤸🏿",
+ ":person_doing_cartwheel_tone5:": "🤸🏿",
+ ":no_good_tone2:": "🙅🏼",
+ ":no_good_tone3:": "🙅🏽",
+ ":no_good_tone4:": "🙅🏾",
+ ":no_good_tone5:": "🙅🏿",
+ ":ok_woman_tone1:": "🙆🏻",
+ ":ok_woman_tone2:": "🙆🏼",
+ ":ok_woman_tone3:": "🙆🏽",
+ ":ok_woman_tone4:": "🙆🏾",
+ ":ok_woman_tone5:": "🙆🏿",
+ ":raising_hand_tone1:": "🙋🏻",
+ ":raising_hand_tone2:": "🙋🏼",
+ ":raising_hand_tone3:": "🙋🏽",
+ ":raising_hand_tone4:": "🙋🏾",
+ ":raising_hand_tone5:": "🙋🏿",
+ ":person_with_pouting_face_tone1:": "🙎🏻",
+ ":person_with_pouting_face_tone2:": "🙎🏼",
+ ":person_with_pouting_face_tone3:": "🙎🏽",
+ ":person_with_pouting_face_tone4:": "🙎🏾",
+ ":person_with_pouting_face_tone5:": "🙎🏿",
+ ":person_frowning_tone1:": "🙍🏻",
+ ":person_frowning_tone2:": "🙍🏼",
+ ":person_frowning_tone3:": "🙍🏽",
+ ":person_frowning_tone4:": "🙍🏾",
+ ":person_frowning_tone5:": "🙍🏿",
+ ":massage_tone1:": "💆🏻",
+ ":massage_tone2:": "💆🏼",
+ ":massage_tone3:": "💆🏽",
+ ":massage_tone4:": "💆🏾",
+ ":massage_tone5:": "💆🏿",
+ ":haircut_tone1:": "💇🏻",
+ ":haircut_tone2:": "💇🏼",
+ ":haircut_tone3:": "💇🏽",
+ ":haircut_tone4:": "💇🏾",
+ ":haircut_tone5:": "💇🏿",
+ ":raised_hands_tone1:": "🙌🏻",
+ ":raised_hands_tone2:": "🙌🏼",
+ ":raised_hands_tone3:": "🙌🏽",
+ ":raised_hands_tone4:": "🙌🏾",
+ ":raised_hands_tone5:": "🙌🏿",
+ ":clap_tone1:": "👏🏻",
+ ":clap_tone2:": "👏🏼",
+ ":clap_tone3:": "👏🏽",
+ ":water_polo_tone1:": "🤽🏻",
+ ":clap_tone4:": "👏🏾",
+ ":clap_tone5:": "👏🏿",
+ ":water_polo_tone2:": "🤽🏼",
+ ":ear_tone1:": "👂🏻",
+ ":ear_tone2:": "👂🏼",
+ ":ear_tone3:": "👂🏽",
+ ":ear_tone4:": "👂🏾",
+ ":ear_tone5:": "👂🏿",
+ ":nose_tone1:": "👃🏻",
+ ":nose_tone2:": "👃🏼",
+ ":nose_tone3:": "👃🏽",
+ ":nose_tone4:": "👃🏾",
+ ":nose_tone5:": "👃🏿",
+ ":nail_care_tone1:": "💅🏻",
+ ":nail_care_tone2:": "💅🏼",
+ ":nail_care_tone3:": "💅🏽",
+ ":nail_care_tone4:": "💅🏾",
+ ":nail_care_tone5:": "💅🏿",
+ ":wave_tone1:": "👋🏻",
+ ":wave_tone2:": "👋🏼",
+ ":wave_tone3:": "👋🏽",
+ ":wave_tone4:": "👋🏾",
+ ":wave_tone5:": "👋🏿",
+ ":thumbsup_tone1:": "👍🏻",
+ ":+1_tone1:": "👍🏻",
+ ":thumbup_tone1:": "👍🏻",
+ ":thumbsup_tone2:": "👍🏼",
+ ":+1_tone2:": "👍🏼",
+ ":thumbup_tone2:": "👍🏼",
+ ":thumbsup_tone3:": "👍🏽",
+ ":+1_tone3:": "👍🏽",
+ ":thumbup_tone3:": "👍🏽",
+ ":thumbsup_tone4:": "👍🏾",
+ ":+1_tone4:": "👍🏾",
+ ":thumbup_tone4:": "👍🏾",
+ ":thumbsup_tone5:": "👍🏿",
+ ":+1_tone5:": "👍🏿",
+ ":thumbup_tone5:": "👍🏿",
+ ":thumbsdown_tone1:": "👎🏻",
+ ":1_tone1:": "👎🏻",
+ ":thumbdown_tone1:": "👎🏻",
+ ":thumbsdown_tone2:": "👎🏼",
+ ":1_tone2:": "👎🏼",
+ ":thumbdown_tone2:": "👎🏼",
+ ":thumbsdown_tone3:": "👎🏽",
+ ":1_tone3:": "👎🏽",
+ ":thumbdown_tone3:": "👎🏽",
+ ":thumbsdown_tone4:": "👎🏾",
+ ":1_tone4:": "👎🏾",
+ ":thumbdown_tone4:": "👎🏾",
+ ":thumbsdown_tone5:": "👎🏿",
+ ":1_tone5:": "👎🏿",
+ ":thumbdown_tone5:": "👎🏿",
+ ":point_up_tone1:": "☝🏻",
+ ":point_up_tone2:": "☝🏼",
+ ":point_up_tone3:": "☝🏽",
+ ":point_up_tone4:": "☝🏾",
+ ":point_up_tone5:": "☝🏿",
+ ":point_up_2_tone1:": "👆🏻",
+ ":point_up_2_tone2:": "👆🏼",
+ ":point_up_2_tone3:": "👆🏽",
+ ":point_up_2_tone4:": "👆🏾",
+ ":point_up_2_tone5:": "👆🏿",
+ ":point_down_tone1:": "👇🏻",
+ ":point_down_tone2:": "👇🏼",
+ ":point_down_tone3:": "👇🏽",
+ ":point_down_tone4:": "👇🏾",
+ ":point_down_tone5:": "👇🏿",
+ ":point_left_tone1:": "👈🏻",
+ ":point_left_tone2:": "👈🏼",
+ ":point_left_tone3:": "👈🏽",
+ ":point_left_tone4:": "👈🏾",
+ ":point_left_tone5:": "👈🏿",
+ ":point_right_tone1:": "👉🏻",
+ ":point_right_tone2:": "👉🏼",
+ ":point_right_tone3:": "👉🏽",
+ ":point_right_tone4:": "👉🏾",
+ ":point_right_tone5:": "👉🏿",
+ ":ok_hand_tone1:": "👌🏻",
+ ":ok_hand_tone2:": "👌🏼",
+ ":water_polo_tone3:": "🤽🏽",
+ ":ok_hand_tone3:": "👌🏽",
+ ":ok_hand_tone4:": "👌🏾",
+ ":water_polo_tone4:": "🤽🏾",
+ ":ok_hand_tone5:": "👌🏿",
+ ":v_tone1:": "✌🏻",
+ ":v_tone2:": "✌🏼",
+ ":v_tone3:": "✌🏽",
+ ":v_tone4:": "✌🏾",
+ ":v_tone5:": "✌🏿",
+ ":punch_tone1:": "👊🏻",
+ ":punch_tone2:": "👊🏼",
+ ":punch_tone3:": "👊🏽",
+ ":punch_tone4:": "👊🏾",
+ ":punch_tone5:": "👊🏿",
+ ":fist_tone1:": "✊🏻",
+ ":fist_tone2:": "✊🏼",
+ ":fist_tone3:": "✊🏽",
+ ":fist_tone4:": "✊🏾",
+ ":fist_tone5:": "✊🏿",
+ ":raised_hand_tone1:": "✋🏻",
+ ":raised_hand_tone2:": "✋🏼",
+ ":raised_hand_tone3:": "✋🏽",
+ ":raised_hand_tone4:": "✋🏾",
+ ":raised_hand_tone5:": "✋🏿",
+ ":muscle_tone1:": "💪🏻",
+ ":muscle_tone2:": "💪🏼",
+ ":muscle_tone3:": "💪🏽",
+ ":muscle_tone4:": "💪🏾",
+ ":muscle_tone5:": "💪🏿",
+ ":open_hands_tone1:": "👐🏻",
+ ":open_hands_tone2:": "👐🏼",
+ ":open_hands_tone3:": "👐🏽",
+ ":open_hands_tone4:": "👐🏾",
+ ":open_hands_tone5:": "👐🏿",
+ ":pray_tone1:": "🙏🏻",
+ ":water_polo_tone5:": "🤽🏿",
+ ":pray_tone2:": "🙏🏼",
+ ":pray_tone3:": "🙏🏽",
+ ":handball_tone1:": "🤾🏻",
+ ":pray_tone4:": "🙏🏾",
+ ":pray_tone5:": "🙏🏿",
+ ":handball_tone2:": "🤾🏼",
+ ":runner_tone1:": "🏃🏻",
+ ":runner_tone2:": "🏃🏼",
+ ":runner_tone3:": "🏃🏽",
+ ":runner_tone4:": "🏃🏾",
+ ":handball_tone3:": "🤾🏽",
+ ":runner_tone5:": "🏃🏿",
+ ":walking_tone1:": "🚶🏻",
+ ":walking_tone2:": "🚶🏼",
+ ":walking_tone3:": "🚶🏽",
+ ":walking_tone4:": "🚶🏾",
+ ":walking_tone5:": "🚶🏿",
+ ":dancer_tone1:": "💃🏻",
+ ":handball_tone4:": "🤾🏾",
+ ":dancer_tone2:": "💃🏼",
+ ":dancer_tone3:": "💃🏽",
+ ":handball_tone5:": "🤾🏿",
+ ":dancer_tone4:": "💃🏾",
+ ":dancer_tone5:": "💃🏿",
+ ":juggling_tone1:": "🤹🏻",
+ ":juggler_tone1:": "🤹🏻",
+ ":rowboat_tone1:": "🚣🏻",
+ ":rowboat_tone2:": "🚣🏼",
+ ":rowboat_tone3:": "🚣🏽",
+ ":rowboat_tone4:": "🚣🏾",
+ ":rowboat_tone5:": "🚣🏿",
+ ":swimmer_tone1:": "🏊🏻",
+ ":swimmer_tone2:": "🏊🏼",
+ ":juggling_tone2:": "🤹🏼",
+ ":juggler_tone2:": "🤹🏼",
+ ":swimmer_tone3:": "🏊🏽",
+ ":swimmer_tone4:": "🏊🏾",
+ ":swimmer_tone5:": "🏊🏿",
+ ":juggling_tone3:": "🤹🏽",
+ ":juggler_tone3:": "🤹🏽",
+ ":surfer_tone1:": "🏄🏻",
+ ":surfer_tone2:": "🏄🏼",
+ ":surfer_tone3:": "🏄🏽",
+ ":surfer_tone4:": "🏄🏾",
+ ":surfer_tone5:": "🏄🏿",
+ ":bath_tone1:": "🛀🏻",
+ ":bath_tone2:": "🛀🏼",
+ ":juggling_tone4:": "🤹🏾",
+ ":juggler_tone4:": "🤹🏾",
+ ":bath_tone3:": "🛀🏽",
+ ":bath_tone4:": "🛀🏾",
+ ":bath_tone5:": "🛀🏿",
+ ":juggling_tone5:": "🤹🏿",
+ ":juggler_tone5:": "🤹🏿",
+ ":bicyclist_tone1:": "🚴🏻",
+ ":bicyclist_tone2:": "🚴🏼",
+ ":bicyclist_tone3:": "🚴🏽",
+ ":rainbow_flag:": "🏳🌈",
+ ":gay_pride_flag:": "🏳🌈",
+ ":bicyclist_tone4:": "🚴🏾",
+ ":bicyclist_tone5:": "🚴🏿",
+ ":mountain_bicyclist_tone1:": "🚵🏻",
+ ":mountain_bicyclist_tone2:": "🚵🏼",
+ ":mountain_bicyclist_tone3:": "🚵🏽",
+ ":mountain_bicyclist_tone4:": "🚵🏾",
+ ":mountain_bicyclist_tone5:": "🚵🏿",
+ ":horse_racing_tone1:": "🏇🏻",
+ ":horse_racing_tone2:": "🏇🏼",
+ ":horse_racing_tone3:": "🏇🏽",
+ ":horse_racing_tone4:": "🏇🏾",
+ ":horse_racing_tone5:": "🏇🏿",
+ ":writing_hand_tone1:": "✍🏻",
+ ":writing_hand_tone2:": "✍🏼",
+ ":writing_hand_tone3:": "✍🏽",
+ ":writing_hand_tone4:": "✍🏾",
+ ":writing_hand_tone5:": "✍🏿",
+ ":hand_splayed_tone1:": "🖐🏻",
+ ":raised_hand_with_fingers_splayed_tone1:": "🖐🏻",
+ ":hand_splayed_tone2:": "🖐🏼",
+ ":raised_hand_with_fingers_splayed_tone2:": "🖐🏼",
+ ":hand_splayed_tone3:": "🖐🏽",
+ ":raised_hand_with_fingers_splayed_tone3:": "🖐🏽",
+ ":hand_splayed_tone4:": "🖐🏾",
+ ":raised_hand_with_fingers_splayed_tone4:": "🖐🏾",
+ ":hand_splayed_tone5:": "🖐🏿",
+ ":raised_hand_with_fingers_splayed_tone5:": "🖐🏿",
+ ":middle_finger_tone1:": "🖕🏻",
+ ":reversed_hand_with_middle_finger_extended_tone1:": "🖕🏻",
+ ":middle_finger_tone2:": "🖕🏼",
+ ":reversed_hand_with_middle_finger_extended_tone2:": "🖕🏼",
+ ":middle_finger_tone3:": "🖕🏽",
+ ":reversed_hand_with_middle_finger_extended_tone3:": "🖕🏽",
+ ":middle_finger_tone4:": "🖕🏾",
+ ":reversed_hand_with_middle_finger_extended_tone4:": "🖕🏾",
+ ":middle_finger_tone5:": "🖕🏿",
+ ":reversed_hand_with_middle_finger_extended_tone5:": "🖕🏿",
+ ":vulcan_tone1:": "🖖🏻",
+ ":raised_hand_with_part_between_middle_and_ring_fingers_tone1:": "🖖🏻",
+ ":vulcan_tone2:": "🖖🏼",
+ ":raised_hand_with_part_between_middle_and_ring_fingers_tone2:": "🖖🏼",
+ ":vulcan_tone3:": "🖖🏽",
+ ":raised_hand_with_part_between_middle_and_ring_fingers_tone3:": "🖖🏽",
+ ":vulcan_tone4:": "🖖🏾",
+ ":raised_hand_with_part_between_middle_and_ring_fingers_tone4:": "🖖🏾",
+ ":vulcan_tone5:": "🖖🏿",
+ ":raised_hand_with_part_between_middle_and_ring_fingers_tone5:": "🖖🏿",
+ ":family_mmb:": "👨👨👦",
+ ":family_mmbb:": "👨👨👦👦",
+ ":family_mmg:": "👨👨👧",
+ ":family_mmgb:": "👨👨👧👦",
+ ":family_mmgg:": "👨👨👧👧",
+ ":family_mwbb:": "👨👩👧👦",
+ ":family_mwg:": "👨👩👧",
+ ":family_mwgb:": "👨👩👧👦",
+ ":family_mwgg:": "👨👩👧👧",
+ ":family_wwb:": "👩👩👦",
+ ":family_wwbb:": "👩👩👦👦",
+ ":family_wwg:": "👩👩👧",
+ ":family_wwgb:": "👩👩👧👦",
+ ":family_wwgg:": "👩👩👧👧",
+ ":couple_ww:": "👭",
+ ":couple_with_heart_ww:": "👩❤️👩",
+ ":couple_mm:": "👬",
+ ":couple_with_heart_mm:": "👨❤️👨",
+ ":kiss_ww:": "👩❤️💋👩",
+ ":couplekiss_ww:": "👩❤️💋👩",
+ ":kiss_mm:": "👨❤️💋👨",
+ ":couplekiss_mm:": "👨❤️💋👨",
+ ":tone1:": "🏻",
+ ":tone2:": "🏼",
+ ":tone3:": "🏽",
+ ":tone4:": "🏾",
+ ":tone5:": "🏿",
+ ":asterisk:": "ℍ",
+ ":keycap_asterisk:": "ℍ",
+ ":eject:": "⏏",
+ ":eject_symbol:": "⏏",
+ ":track_next:": "⏭",
+ ":next_track:": "⏭",
+ ":track_previous:": "⏮",
+ ":previous_track:": "⏮",
+ ":play_pause:": "⏯",
+ ":eye_in_speech_bubble:": "👁🗨",
+ ":stopwatch:": "⏱",
+ ":timer:": "⏲",
+ ":timer_clock:": "⏲",
+ ":pause_button:": "⏸",
+ ":double_vertical_bar:": "⏸",
+ ":stop_button:": "⏹",
+ ":record_button:": "⏺",
+ ":umbrella2:": "☂",
+ ":snowman2:": "☃",
+ ":comet:": "☄",
+ ":shamrock:": "☘",
+ ":skull_crossbones:": "☠",
+ ":skull_and_crossbones:": "☠",
+ ":radioactive:": "☢",
+ ":radioactive_sign:": "☢",
+ ":biohazard:": "☣",
+ ":biohazard_sign:": "☣",
+ ":orthodox_cross:": "☦",
+ ":star_and_crescent:": "☪",
+ ":peace:": "☮",
+ ":peace_symbol:": "☮",
+ ":yin_yang:": "☯",
+ ":wheel_of_dharma:": "☸",
+ ":frowning2:": "☹",
+ ":white_frowning_face:": "☹",
+ ":hammer_pick:": "⚒",
+ ":hammer_and_pick:": "⚒",
+ ":crossed_swords:": "⚔",
+ ":scales:": "⚖",
+ ":alembic:": "⚗",
+ ":gear:": "⚙",
+ ":atom:": "⚛",
+ ":atom_symbol:": "⚛",
+ ":fleurdelis:": "⚜",
+ ":coffin:": "⚰",
+ ":urn:": "⚱",
+ ":funeral_urn:": "⚱",
+ ":thunder_cloud_rain:": "⛈",
+ ":thunder_cloud_and_rain:": "⛈",
+ ":pick:": "⛏",
+ ":helmet_with_cross:": "⛑",
+ ":helmet_with_white_cross:": "⛑",
+ ":chains:": "⛓",
+ ":shinto_shrine:": "⛩",
+ ":mountain:": "⛰",
+ ":beach_umbrella:": "⛱",
+ ":umbrella_on_ground:": "⛱",
+ ":ferry:": "⛴",
+ ":skier:": "⛷",
+ ":ice_skate:": "⛸",
+ ":basketball_player:": "⛹",
+ ":person_with_ball:": "⛹",
+ ":star_of_david:": "✡",
+ ":heart_exclamation:": "❣",
+ ":heavy_heart_exclamation_mark_ornament:": "❣",
+ ":white_sun_small_cloud:": "🌤",
+ ":white_sun_with_small_cloud:": "🌤",
+ ":white_sun_cloud:": "🌥",
+ ":white_sun_behind_cloud:": "🌥",
+ ":white_sun_rain_cloud:": "🌦",
+ ":white_sun_behind_cloud_with_rain:": "🌦",
+ ":mouse_three_button:": "🖱",
+ ":three_button_mouse:": "🖱",
+ ":santa_tone1:": "🎅🏻",
+ ":santa_tone2:": "🎅🏼",
+ ":santa_tone3:": "🎅🏽",
+ ":santa_tone4:": "🎅🏾",
+ ":santa_tone5:": "🎅🏿",
+ ":metal_tone1:": "🤘🏻",
+ ":sign_of_the_horns_tone1:": "🤘🏻",
+ ":metal_tone2:": "🤘🏼",
+ ":sign_of_the_horns_tone2:": "🤘🏼",
+ ":metal_tone3:": "🤘🏽",
+ ":sign_of_the_horns_tone3:": "🤘🏽",
+ ":metal_tone4:": "🤘🏾",
+ ":sign_of_the_horns_tone4:": "🤘🏾",
+ ":metal_tone5:": "🤘🏿",
+ ":sign_of_the_horns_tone5:": "🤘🏿",
+ ":lifter_tone1:": "🏋🏻",
+ ":weight_lifter_tone1:": "🏋🏻",
+ ":lifter_tone2:": "🏋🏼",
+ ":weight_lifter_tone2:": "🏋🏼",
+ ":lifter_tone3:": "🏋🏽",
+ ":weight_lifter_tone3:": "🏋🏽",
+ ":lifter_tone4:": "🏋🏾",
+ ":weight_lifter_tone4:": "🏋🏾",
+ ":lifter_tone5:": "🏋🏿",
+ ":weight_lifter_tone5:": "🏋🏿",
+ ":basketball_player_tone1:": "⛹🏻",
+ ":person_with_ball_tone1:": "⛹🏻",
+ ":basketball_player_tone2:": "⛹🏼",
+ ":person_with_ball_tone2:": "⛹🏼",
+ ":basketball_player_tone3:": "⛹🏽",
+ ":person_with_ball_tone3:": "⛹🏽",
+ ":basketball_player_tone4:": "⛹🏾",
+ ":person_with_ball_tone4:": "⛹🏾",
+ ":basketball_player_tone5:": "⛹🏿",
+ ":person_with_ball_tone5:": "⛹🏿",
+ ":upside_down:": "🙃",
+ ":upside_down_face:": "🙃",
+ ":money_mouth:": "🤑",
+ ":money_mouth_face:": "🤑",
+ ":nerd:": "🤓",
+ ":nerd_face:": "🤓",
+ ":hugging:": "🤗",
+ ":hugging_face:": "🤗",
+ ":rolling_eyes:": "🙄",
+ ":face_with_rolling_eyes:": "🙄",
+ ":thinking:": "🤔",
+ ":thinking_face:": "🤔",
+ ":zipper_mouth:": "🤐",
+ ":zipper_mouth_face:": "🤐",
+ ":thermometer_face:": "🤒",
+ ":face_with_thermometer:": "🤒",
+ ":head_bandage:": "🤕",
+ ":face_with_head_bandage:": "🤕",
+ ":robot:": "🤖",
+ ":robot_face:": "🤖",
+ ":lion_face:": "🦁",
+ ":lion:": "🦁",
+ ":unicorn:": "🦄",
+ ":unicorn_face:": "🦄",
+ ":scorpion:": "🦂",
+ ":crab:": "🦀",
+ ":turkey:": "🦃",
+ ":cheese:": "🧀",
+ ":cheese_wedge:": "🧀",
+ ":hotdog:": "🌭",
+ ":hot_dog:": "🌭",
+ ":taco:": "🌮",
+ ":burrito:": "🌯",
+ ":popcorn:": "🍿",
+ ":champagne:": "🍾",
+ ":bottle_with_popping_cork:": "🍾",
+ ":bow_and_arrow:": "🏹",
+ ":archery:": "🏹",
+ ":amphora:": "🏺",
+ ":place_of_worship:": "🛐",
+ ":worship_symbol:": "🛐",
+ ":kaaba:": "🕋",
+ ":mosque:": "🕌",
+ ":synagogue:": "🕍",
+ ":menorah:": "🕎",
+ ":prayer_beads:": "📿",
+ ":cricket:": "🏏",
+ ":cricket_bat_ball:": "🏏",
+ ":volleyball:": "🏐",
+ ":field_hockey:": "🏑",
+ ":hockey:": "🏒",
+ ":ping_pong:": "🏓",
+ ":table_tennis:": "🏓",
+ ":badminton:": "🏸",
+ ":flag_ax:": "🇦🇽",
+ ":ax:": "🇦🇽",
+ ":flag_ta:": "🇹🇦",
+ ":ta:": "🇹🇦",
+ ":flag_io:": "🇮🇴",
+ ":io:": "🇮🇴",
+ ":flag_bq:": "🇧🇶",
+ ":bq:": "🇧🇶",
+ ":flag_cx:": "🇨🇽",
+ ":cx:": "🇨🇽",
+ ":flag_cc:": "🇨🇨",
+ ":cc:": "🇨🇨",
+ ":flag_gg:": "🇬🇬",
+ ":gg:": "🇬🇬",
+ ":flag_im:": "🇮🇲",
+ ":im:": "🇮🇲",
+ ":flag_yt:": "🇾🇹",
+ ":yt:": "🇾🇹",
+ ":flag_nf:": "🇳🇫",
+ ":nf:": "🇳🇫",
+ ":flag_pn:": "🇵🇳",
+ ":pn:": "🇵🇳",
+ ":flag_bl:": "🇧🇱",
+ ":bl:": "🇧🇱",
+ ":flag_pm:": "🇵🇲",
+ ":pm:": "🇵🇲",
+ ":flag_gs:": "🇬🇸",
+ ":gs:": "🇬🇸",
+ ":flag_tk:": "🇹🇰",
+ ":tk:": "🇹🇰",
+ ":flag_bv:": "🇧🇻",
+ ":bv:": "🇧🇻",
+ ":flag_hm:": "🇭🇲",
+ ":hm:": "🇭🇲",
+ ":flag_sj:": "🇸🇯",
+ ":sj:": "🇸🇯",
+ ":flag_um:": "🇺🇲",
+ ":um:": "🇺🇲",
+ ":flag_ic:": "🇮🇨",
+ ":ic:": "🇮🇨",
+ ":flag_ea:": "🇪🇦",
+ ":ea:": "🇪🇦",
+ ":flag_cp:": "🇨🇵",
+ ":cp:": "🇨🇵",
+ ":flag_dg:": "🇩🇬",
+ ":dg:": "🇩🇬",
+ ":flag_as:": "🇦🇸",
+ ":as:": "🇦🇸",
+ ":flag_aq:": "🇦🇶",
+ ":aq:": "🇦🇶",
+ ":flag_vg:": "🇻🇬",
+ ":vg:": "🇻🇬",
+ ":flag_ck:": "🇨🇰",
+ ":ck:": "🇨🇰",
+ ":flag_cw:": "🇨🇼",
+ ":cw:": "🇨🇼",
+ ":flag_eu:": "🇪🇺",
+ ":eu:": "🇪🇺",
+ ":flag_gf:": "🇬🇫",
+ ":gf:": "🇬🇫",
+ ":flag_tf:": "🇹🇫",
+ ":tf:": "🇹🇫",
+ ":flag_gp:": "🇬🇵",
+ ":gp:": "🇬🇵",
+ ":flag_mq:": "🇲🇶",
+ ":mq:": "🇲🇶",
+ ":flag_mp:": "🇲🇵",
+ ":mp:": "🇲🇵",
+ ":flag_re:": "🇷🇪",
+ ":re:": "🇷🇪",
+ ":flag_sx:": "🇸🇽",
+ ":sx:": "🇸🇽",
+ ":flag_ss:": "🇸🇸",
+ ":ss:": "🇸🇸",
+ ":flag_tc:": "🇹🇨",
+ ":tc:": "🇹🇨",
+ ":flag_mf:": "🇲🇫",
+ ":mf:": "🇲🇫",
+ ":spy_tone1:": "🕵🏻",
+ ":sleuth_or_spy_tone1:": "🕵🏻",
+ ":spy_tone2:": "🕵🏼",
+ ":sleuth_or_spy_tone2:": "🕵🏼",
+ ":spy_tone3:": "🕵🏽",
+ ":sleuth_or_spy_tone3:": "🕵🏽",
+ ":spy_tone4:": "🕵🏾",
+ ":sleuth_or_spy_tone4:": "🕵🏾",
+ ":spy_tone5:": "🕵🏿",
+ ":sleuth_or_spy_tone5:": "🕵🏿",
+ ":drum:": "🥁",
+ ":drum_with_drumsticks:": "🥁",
+ ":shrimp:": "🦐",
+ ":squid:": "🦑",
+ ":egg:": "🥚",
+ ":milk:": "🥛",
+ ":glass_of_milk:": "🥛",
+ ":peanuts:": "🥜",
+ ":shelled_peanut:": "🥜",
+ ":kiwi:": "🥝",
+ ":kiwifruit:": "🥝",
+ ":pancakes:": "🥞",
+ ":regional_indicator_w:": "🇼",
+ ":regional_indicator_v:": "🇻",
+ ":regional_indicator_u:": "🇺",
+ ":regional_indicator_t:": "🇹",
+ ":regional_indicator_s:": "🇸",
+ ":regional_indicator_r:": "🇷",
+ ":regional_indicator_q:": "🇶",
+ ":regional_indicator_p:": "🇵",
+ ":regional_indicator_o:": "🇴",
+ ":regional_indicator_n:": "🇳",
+ ":regional_indicator_m:": "🇲",
+ ":regional_indicator_l:": "🇱",
+ ":regional_indicator_k:": "🇰",
+ ":regional_indicator_j:": "🇯",
+ ":regional_indicator_i:": "🇮",
+ ":regional_indicator_h:": "🇭",
+ ":regional_indicator_g:": "🇬",
+ ":regional_indicator_f:": "🇫",
+ ":regional_indicator_e:": "🇪",
+ ":regional_indicator_d:": "🇩",
+ ":regional_indicator_c:": "🇨",
+ ":regional_indicator_b:": "🇧",
+ ":regional_indicator_a:": "🇦",
+ ":digit_nine:": "9",
+ ":digit_eight:": "8",
+ ":digit_seven:": "7",
+ ":digit_six:": "6",
+ ":digit_five:": "5",
+ ":digit_four:": "4",
+ ":digit_three:": "3",
+ ":digit_two:": "2",
+ ":digit_one:": "1",
+ ":digit_zero:": "0",
+ ":men_with_bunny_ears_partying:": "👯",
+ ":women_with_bunny_ears_partying:": "👯",
+ ":snowboarder_tone1:": "🏂🏻",
+ ":snowboarder_light_skin_tone:": "🏂🏻",
+ ":man_golfing:": "🏌",
+ ":man_golfing_tone1:": "🏌🏻",
+ ":man_golfing_light_skin_tone:": "🏌🏻",
+ ":man_golfing_tone2:": "🏌🏼",
+ ":man_golfing_medium_light_skin_tone:": "🏌🏼",
+ ":man_golfing_tone3:": "🏌🏽",
+ ":man_golfing_medium_skin_tone:": "🏌🏽",
+ ":man_golfing_tone4:": "🏌🏾",
+ ":man_golfing_medium_dark_skin_tone:": "🏌🏾",
+ ":man_golfing_tone5:": "🏌🏿",
+ ":man_golfing_dark_skin_tone:": "🏌🏿",
+ ":woman_golfing:": "🏌",
+ ":woman_golfing_tone1:": "🏌🏻",
+ ":woman_golfing_light_skin_tone:": "🏌🏻",
+ ":woman_golfing_tone2:": "🏌🏼",
+ ":woman_golfing_medium_light_skin_tone:": "🏌🏼",
+ ":woman_golfing_tone3:": "🏌🏽",
+ ":woman_golfing_medium_skin_tone:": "🏌🏽",
+ ":woman_golfing_tone4:": "🏌🏾",
+ ":woman_golfing_medium_dark_skin_tone:": "🏌🏾",
+ ":woman_golfing_tone5:": "🏌🏿",
+ ":woman_golfing_dark_skin_tone:": "🏌🏿",
+ ":men_wrestling:": "🤼",
+ ":women_wrestling:": "🤼",
+ ":man_juggling_tone5:": "🤹🏿",
+ ":man_juggling_dark_skin_tone:": "🤹🏿",
+ ":man_juggling_tone4:": "🤹🏾",
+ ":man_juggling_medium_dark_skin_tone:": "🤹🏾",
+ ":man_juggling_tone3:": "🤹🏽",
+ ":man_juggling_medium_skin_tone:": "🤹🏽",
+ ":man_juggling_tone2:": "🤹🏼",
+ ":man_juggling_medium_light_skin_tone:": "🤹🏼",
+ ":man_juggling_tone1:": "🤹🏻",
+ ":man_juggling_light_skin_tone:": "🤹🏻",
+ ":man_juggling:": "🤹",
+ ":woman_juggling_tone5:": "🤹🏿",
+ ":woman_juggling_dark_skin_tone:": "🤹🏿",
+ ":woman_juggling_tone4:": "🤹🏾",
+ ":woman_juggling_medium_dark_skin_tone:": "🤹🏾",
+ ":woman_juggling_tone3:": "🤹🏽",
+ ":woman_juggling_medium_skin_tone:": "🤹🏽",
+ ":woman_juggling_tone2:": "🤹🏼",
+ ":woman_juggling_medium_light_skin_tone:": "🤹🏼",
+ ":woman_juggling_tone1:": "🤹🏻",
+ ":woman_juggling_light_skin_tone:": "🤹🏻",
+ ":woman_juggling:": "🤹",
+ ":man_playing_handball_tone5:": "🤾🏿",
+ ":man_playing_handball_dark_skin_tone:": "🤾🏿",
+ ":man_playing_handball_tone4:": "🤾🏾",
+ ":man_playing_handball_medium_dark_skin_tone:": "🤾🏾",
+ ":man_playing_handball_tone3:": "🤾🏽",
+ ":man_playing_handball_medium_skin_tone:": "🤾🏽",
+ ":man_playing_handball_tone2:": "🤾🏼",
+ ":man_playing_handball_medium_light_skin_tone:": "🤾🏼",
+ ":man_playing_handball_tone1:": "🤾🏻",
+ ":man_playing_handball_light_skin_tone:": "🤾🏻",
+ ":man_playing_handball:": "🤾",
+ ":woman_playing_handball_tone5:": "🤾🏿",
+ ":woman_playing_handball_dark_skin_tone:": "🤾🏿",
+ ":woman_playing_handball_tone4:": "🤾🏾",
+ ":woman_playing_handball_medium_dark_skin_tone:": "🤾🏾",
+ ":woman_playing_handball_tone3:": "🤾🏽",
+ ":woman_playing_handball_medium_skin_tone:": "🤾🏽",
+ ":woman_playing_handball_tone2:": "🤾🏼",
+ ":woman_playing_handball_medium_light_skin_tone:": "🤾🏼",
+ ":woman_playing_handball_tone1:": "🤾🏻",
+ ":woman_playing_handball_light_skin_tone:": "🤾🏻",
+ ":woman_playing_handball:": "🤾",
+ ":man_playing_water_polo_tone5:": "🤽🏿",
+ ":man_playing_water_polo_dark_skin_tone:": "🤽🏿",
+ ":man_playing_water_polo_tone4:": "🤽🏾",
+ ":man_playing_water_polo_medium_dark_skin_tone:": "🤽🏾",
+ ":man_playing_water_polo_tone3:": "🤽🏽",
+ ":man_playing_water_polo_medium_skin_tone:": "🤽🏽",
+ ":man_playing_water_polo_tone2:": "🤽🏼",
+ ":man_playing_water_polo_medium_light_skin_tone:": "🤽🏼",
+ ":man_playing_water_polo_tone1:": "🤽🏻",
+ ":man_playing_water_polo_light_skin_tone:": "🤽🏻",
+ ":man_playing_water_polo:": "🤽",
+ ":woman_playing_water_polo_tone5:": "🤽🏿",
+ ":woman_playing_water_polo_dark_skin_tone:": "🤽🏿",
+ ":woman_playing_water_polo_tone4:": "🤽🏾",
+ ":woman_playing_water_polo_medium_dark_skin_tone:": "🤽🏾",
+ ":woman_playing_water_polo_tone3:": "🤽🏽",
+ ":woman_playing_water_polo_medium_skin_tone:": "🤽🏽",
+ ":woman_playing_water_polo_tone2:": "🤽🏼",
+ ":woman_playing_water_polo_medium_light_skin_tone:": "🤽🏼",
+ ":woman_playing_water_polo_tone1:": "🤽🏻",
+ ":woman_playing_water_polo_light_skin_tone:": "🤽🏻",
+ ":woman_playing_water_polo:": "🤽",
+ ":man_cartwheeling_tone5:": "🤸🏿",
+ ":man_cartwheeling_dark_skin_tone:": "🤸🏿",
+ ":man_cartwheeling_tone4:": "🤸🏾",
+ ":man_cartwheeling_medium_dark_skin_tone:": "🤸🏾",
+ ":man_cartwheeling_tone3:": "🤸🏽",
+ ":man_cartwheeling_medium_skin_tone:": "🤸🏽",
+ ":man_cartwheeling_tone2:": "🤸🏼",
+ ":man_cartwheeling_medium_light_skin_tone:": "🤸🏼",
+ ":man_cartwheeling_tone1:": "🤸🏻",
+ ":man_cartwheeling_light_skin_tone:": "🤸🏻",
+ ":man_cartwheeling:": "🤸",
+ ":woman_cartwheeling_tone5:": "🤸🏿",
+ ":woman_cartwheeling_dark_skin_tone:": "🤸🏿",
+ ":woman_cartwheeling_tone4:": "🤸🏾",
+ ":woman_cartwheeling_medium_dark_skin_tone:": "🤸🏾",
+ ":woman_cartwheeling_tone3:": "🤸🏽",
+ ":woman_cartwheeling_medium_skin_tone:": "🤸🏽",
+ ":woman_cartwheeling_tone2:": "🤸🏼",
+ ":woman_cartwheeling_medium_light_skin_tone:": "🤸🏼",
+ ":woman_cartwheeling_tone1:": "🤸🏻",
+ ":woman_cartwheeling_light_skin_tone:": "🤸🏻",
+ ":woman_cartwheeling:": "🤸",
+ ":man_walking_tone5:": "🚶🏿",
+ ":man_walking_dark_skin_tone:": "🚶🏿",
+ ":man_walking_tone4:": "🚶🏾",
+ ":man_walking_medium_dark_skin_tone:": "🚶🏾",
+ ":man_walking_tone3:": "🚶🏽",
+ ":man_walking_medium_skin_tone:": "🚶🏽",
+ ":man_walking_tone2:": "🚶🏼",
+ ":man_walking_medium_light_skin_tone:": "🚶🏼",
+ ":man_walking_tone1:": "🚶🏻",
+ ":man_walking_light_skin_tone:": "🚶🏻",
+ ":man_walking:": "🚶",
+ ":woman_walking_tone5:": "🚶🏿",
+ ":woman_walking_dark_skin_tone:": "🚶🏿",
+ ":woman_walking_tone4:": "🚶🏾",
+ ":woman_walking_medium_dark_skin_tone:": "🚶🏾",
+ ":woman_walking_tone3:": "🚶🏽",
+ ":woman_walking_medium_skin_tone:": "🚶🏽",
+ ":woman_walking_tone2:": "🚶🏼",
+ ":woman_walking_medium_light_skin_tone:": "🚶🏼",
+ ":woman_walking_tone1:": "🚶🏻",
+ ":woman_walking_light_skin_tone:": "🚶🏻",
+ ":woman_walking:": "🚶",
+ ":man_mountain_biking_tone5:": "🚵🏿",
+ ":man_mountain_biking_dark_skin_tone:": "🚵🏿",
+ ":man_mountain_biking_tone4:": "🚵🏾",
+ ":man_mountain_biking_medium_dark_skin_tone:": "🚵🏾",
+ ":man_mountain_biking_tone3:": "🚵🏽",
+ ":man_mountain_biking_medium_skin_tone:": "🚵🏽",
+ ":man_mountain_biking_tone2:": "🚵🏼",
+ ":man_mountain_biking_medium_light_skin_tone:": "🚵🏼",
+ ":man_mountain_biking_tone1:": "🚵🏻",
+ ":man_mountain_biking_light_skin_tone:": "🚵🏻",
+ ":man_mountain_biking:": "🚵",
+ ":woman_mountain_biking_tone5:": "🚵🏿",
+ ":woman_mountain_biking_dark_skin_tone:": "🚵🏿",
+ ":woman_mountain_biking_tone4:": "🚵🏾",
+ ":woman_mountain_biking_medium_dark_skin_tone:": "🚵🏾",
+ ":woman_mountain_biking_tone3:": "🚵🏽",
+ ":woman_mountain_biking_medium_skin_tone:": "🚵🏽",
+ ":woman_mountain_biking_tone2:": "🚵🏼",
+ ":woman_mountain_biking_medium_light_skin_tone:": "🚵🏼",
+ ":woman_mountain_biking_tone1:": "🚵🏻",
+ ":woman_mountain_biking_light_skin_tone:": "🚵🏻",
+ ":woman_mountain_biking:": "🚵",
+ ":man_biking_tone5:": "🚴🏿",
+ ":man_biking_dark_skin_tone:": "🚴🏿",
+ ":man_biking_tone4:": "🚴🏾",
+ ":man_biking_medium_dark_skin_tone:": "🚴🏾",
+ ":man_biking_tone3:": "🚴🏽",
+ ":man_biking_medium_skin_tone:": "🚴🏽",
+ ":man_biking_tone2:": "🚴🏼",
+ ":man_biking_medium_light_skin_tone:": "🚴🏼",
+ ":man_biking_tone1:": "🚴🏻",
+ ":man_biking_light_skin_tone:": "🚴🏻",
+ ":man_biking:": "🚴",
+ ":woman_biking_tone5:": "🚴🏿",
+ ":woman_biking_dark_skin_tone:": "🚴🏿",
+ ":woman_biking_tone4:": "🚴🏾",
+ ":woman_biking_medium_dark_skin_tone:": "🚴🏾",
+ ":woman_biking_tone3:": "🚴🏽",
+ ":woman_biking_medium_skin_tone:": "🚴🏽",
+ ":woman_biking_tone2:": "🚴🏼",
+ ":woman_biking_medium_light_skin_tone:": "🚴🏼",
+ ":woman_biking_tone1:": "🚴🏻",
+ ":woman_biking_light_skin_tone:": "🚴🏻",
+ ":woman_biking:": "🚴",
+ ":man_rowing_boat_tone5:": "🚣🏿",
+ ":man_rowing_boat_dark_skin_tone:": "🚣🏿",
+ ":man_rowing_boat_tone4:": "🚣🏾",
+ ":man_rowing_boat_medium_dark_skin_tone:": "🚣🏾",
+ ":man_rowing_boat_tone3:": "🚣🏽",
+ ":man_rowing_boat_medium_skin_tone:": "🚣🏽",
+ ":man_rowing_boat_tone2:": "🚣🏼",
+ ":man_rowing_boat_medium_light_skin_tone:": "🚣🏼",
+ ":man_rowing_boat_tone1:": "🚣🏻",
+ ":man_rowing_boat_light_skin_tone:": "🚣🏻",
+ ":man_rowing_boat:": "🚣",
+ ":woman_rowing_boat_tone5:": "🚣🏿",
+ ":woman_rowing_boat_dark_skin_tone:": "🚣🏿",
+ ":woman_rowing_boat_tone4:": "🚣🏾",
+ ":woman_rowing_boat_medium_dark_skin_tone:": "🚣🏾",
+ ":woman_rowing_boat_tone3:": "🚣🏽",
+ ":woman_rowing_boat_medium_skin_tone:": "🚣🏽",
+ ":woman_rowing_boat_tone2:": "🚣🏼",
+ ":woman_rowing_boat_medium_light_skin_tone:": "🚣🏼",
+ ":woman_rowing_boat_tone1:": "🚣🏻",
+ ":woman_rowing_boat_light_skin_tone:": "🚣🏻",
+ ":woman_rowing_boat:": "🚣",
+ ":man_lifting_weights_tone5:": "🏋🏿",
+ ":man_lifting_weights_dark_skin_tone:": "🏋🏿",
+ ":man_lifting_weights_tone4:": "🏋🏾",
+ ":man_lifting_weights_medium_dark_skin_tone:": "🏋🏾",
+ ":man_lifting_weights_tone3:": "🏋🏽",
+ ":man_lifting_weights_medium_skin_tone:": "🏋🏽",
+ ":man_lifting_weights_tone2:": "🏋🏼",
+ ":man_lifting_weights_medium_light_skin_tone:": "🏋🏼",
+ ":man_lifting_weights_tone1:": "🏋🏻",
+ ":man_lifting_weights_light_skin_tone:": "🏋🏻",
+ ":man_lifting_weights:": "🏋",
+ ":woman_lifting_weights_tone5:": "🏋🏿",
+ ":woman_lifting_weights_dark_skin_tone:": "🏋🏿",
+ ":woman_lifting_weights_tone4:": "🏋🏾",
+ ":woman_lifting_weights_medium_dark_skin_tone:": "🏋🏾",
+ ":woman_lifting_weights_tone3:": "🏋🏽",
+ ":woman_lifting_weights_medium_skin_tone:": "🏋🏽",
+ ":woman_lifting_weights_tone2:": "🏋🏼",
+ ":woman_lifting_weights_medium_light_skin_tone:": "🏋🏼",
+ ":woman_lifting_weights_tone1:": "🏋🏻",
+ ":woman_lifting_weights_light_skin_tone:": "🏋🏻",
+ ":woman_lifting_weights:": "🏋",
+ ":man_swimming_tone5:": "🏊🏿",
+ ":man_swimming_dark_skin_tone:": "🏊🏿",
+ ":man_swimming_tone4:": "🏊🏾",
+ ":man_swimming_medium_dark_skin_tone:": "🏊🏾",
+ ":man_swimming_tone3:": "🏊🏽",
+ ":man_swimming_medium_skin_tone:": "🏊🏽",
+ ":man_swimming_tone2:": "🏊🏼",
+ ":man_swimming_medium_light_skin_tone:": "🏊🏼",
+ ":man_swimming_tone1:": "🏊🏻",
+ ":man_swimming_light_skin_tone:": "🏊🏻",
+ ":man_swimming:": "🏊",
+ ":woman_swimming_tone5:": "🏊🏿",
+ ":woman_swimming_dark_skin_tone:": "🏊🏿",
+ ":woman_swimming_tone4:": "🏊🏾",
+ ":woman_swimming_medium_dark_skin_tone:": "🏊🏾",
+ ":woman_swimming_tone3:": "🏊🏽",
+ ":woman_swimming_medium_skin_tone:": "🏊🏽",
+ ":woman_swimming_tone2:": "🏊🏼",
+ ":woman_swimming_medium_light_skin_tone:": "🏊🏼",
+ ":woman_swimming_tone1:": "🏊🏻",
+ ":woman_swimming_light_skin_tone:": "🏊🏻",
+ ":woman_swimming:": "🏊",
+ ":man_surfing_tone5:": "🏄🏿",
+ ":man_surfing_dark_skin_tone:": "🏄🏿",
+ ":man_surfing_tone4:": "🏄🏾",
+ ":man_surfing_medium_dark_skin_tone:": "🏄🏾",
+ ":man_surfing_tone3:": "🏄🏽",
+ ":man_surfing_medium_skin_tone:": "🏄🏽",
+ ":man_surfing_tone2:": "🏄🏼",
+ ":man_surfing_medium_light_skin_tone:": "🏄🏼",
+ ":man_surfing_tone1:": "🏄🏻",
+ ":man_surfing_light_skin_tone:": "🏄🏻",
+ ":man_surfing:": "🏄",
+ ":woman_surfing_tone5:": "🏄🏿",
+ ":woman_surfing_dark_skin_tone:": "🏄🏿",
+ ":woman_surfing_tone4:": "🏄🏾",
+ ":woman_surfing_medium_dark_skin_tone:": "🏄🏾",
+ ":woman_surfing_tone3:": "🏄🏽",
+ ":woman_surfing_medium_skin_tone:": "🏄🏽",
+ ":woman_surfing_tone2:": "🏄🏼",
+ ":woman_surfing_medium_light_skin_tone:": "🏄🏼",
+ ":woman_surfing_tone1:": "🏄🏻",
+ ":woman_surfing_light_skin_tone:": "🏄🏻",
+ ":woman_surfing:": "🏄",
+ ":man_running_tone5:": "🏃🏿",
+ ":man_running_dark_skin_tone:": "🏃🏿",
+ ":man_running_tone4:": "🏃🏾",
+ ":man_running_medium_dark_skin_tone:": "🏃🏾",
+ ":man_running_tone3:": "🏃🏽",
+ ":man_running_medium_skin_tone:": "🏃🏽",
+ ":man_running_tone2:": "🏃🏼",
+ ":man_running_medium_light_skin_tone:": "🏃🏼",
+ ":man_running_tone1:": "🏃🏻",
+ ":man_running_light_skin_tone:": "🏃🏻",
+ ":man_running:": "🏃",
+ ":woman_running_tone5:": "🏃🏿",
+ ":woman_running_dark_skin_tone:": "🏃🏿",
+ ":woman_running_tone4:": "🏃🏾",
+ ":woman_running_medium_dark_skin_tone:": "🏃🏾",
+ ":woman_running_tone3:": "🏃🏽",
+ ":woman_running_medium_skin_tone:": "🏃🏽",
+ ":woman_running_tone2:": "🏃🏼",
+ ":woman_running_medium_light_skin_tone:": "🏃🏼",
+ ":woman_running_tone1:": "🏃🏻",
+ ":woman_running_light_skin_tone:": "🏃🏻",
+ ":woman_running:": "🏃",
+ ":man_bouncing_ball_tone5:": "",
+ ":man_bouncing_ball_dark_skin_tone:": "",
+ ":man_bouncing_ball_tone4:": "",
+ ":man_bouncing_ball_medium_dark_skin_tone:": "",
+ ":man_bouncing_ball_tone3:": "",
+ ":man_bouncing_ball_medium_skin_tone:": "",
+ ":man_bouncing_ball_tone2:": "𐢞",
+ ":man_bouncing_ball_medium_light_skin_tone:": "𐢞",
+ ":man_bouncing_ball_tone1:": "",
+ ":man_bouncing_ball_light_skin_tone:": "",
+ ":man_bouncing_ball:": "䴻",
+ ":woman_bouncing_ball_tone5:": "",
+ ":woman_bouncing_ball_dark_skin_tone:": "",
+ ":woman_bouncing_ball_tone4:": "",
+ ":woman_bouncing_ball_medium_dark_skin_tone:": "",
+ ":woman_bouncing_ball_tone3:": "",
+ ":woman_bouncing_ball_medium_skin_tone:": "",
+ ":woman_bouncing_ball_tone2:": "𐢜",
+ ":woman_bouncing_ball_medium_light_skin_tone:": "𐢜",
+ ":woman_bouncing_ball_tone1:": "",
+ ":woman_bouncing_ball_light_skin_tone:": "",
+ ":woman_bouncing_ball:": "䴹",
+ ":man_shrugging_tone5:": "🤷🏿",
+ ":man_shrugging_dark_skin_tone:": "🤷🏿",
+ ":man_shrugging_tone4:": "🤷🏾",
+ ":man_shrugging_medium_dark_skin_tone:": "🤷🏾",
+ ":man_shrugging_tone3:": "🤷🏽",
+ ":man_shrugging_medium_skin_tone:": "🤷🏽",
+ ":man_shrugging_tone2:": "🤷🏼",
+ ":man_shrugging_medium_light_skin_tone:": "🤷🏼",
+ ":man_shrugging_tone1:": "🤷🏻",
+ ":man_shrugging_light_skin_tone:": "🤷🏻",
+ ":man_shrugging:": "🤷",
+ ":woman_shrugging_tone5:": "🤷🏿",
+ ":woman_shrugging_dark_skin_tone:": "🤷🏿",
+ ":woman_shrugging_tone4:": "🤷🏾",
+ ":woman_shrugging_medium_dark_skin_tone:": "🤷🏾",
+ ":woman_shrugging_tone3:": "🤷🏽",
+ ":woman_shrugging_medium_skin_tone:": "🤷🏽",
+ ":woman_shrugging_tone2:": "🤷🏼",
+ ":woman_shrugging_medium_light_skin_tone:": "🤷🏼",
+ ":woman_shrugging_tone1:": "🤷🏻",
+ ":woman_shrugging_light_skin_tone:": "🤷🏻",
+ ":woman_shrugging:": "🤷",
+ ":man_facepalming_tone5:": "🤦🏿",
+ ":man_facepalming_dark_skin_tone:": "🤦🏿",
+ ":man_facepalming_tone4:": "🤦🏾",
+ ":man_facepalming_medium_dark_skin_tone:": "🤦🏾",
+ ":man_facepalming_tone3:": "🤦🏽",
+ ":man_facepalming_medium_skin_tone:": "🤦🏽",
+ ":man_facepalming_tone2:": "🤦🏼",
+ ":man_facepalming_medium_light_skin_tone:": "🤦🏼",
+ ":man_facepalming_tone1:": "🤦🏻",
+ ":man_facepalming_light_skin_tone:": "🤦🏻",
+ ":man_facepalming:": "🤦",
+ ":woman_facepalming_tone5:": "🤦🏿",
+ ":woman_facepalming_dark_skin_tone:": "🤦🏿",
+ ":woman_facepalming_tone4:": "🤦🏾",
+ ":woman_facepalming_medium_dark_skin_tone:": "🤦🏾",
+ ":woman_facepalming_tone3:": "🤦🏽",
+ ":woman_facepalming_medium_skin_tone:": "🤦🏽",
+ ":woman_facepalming_tone2:": "🤦🏼",
+ ":woman_facepalming_medium_light_skin_tone:": "🤦🏼",
+ ":woman_facepalming_tone1:": "🤦🏻",
+ ":woman_facepalming_light_skin_tone:": "🤦🏻",
+ ":woman_facepalming:": "🤦",
+ ":man_pouting_tone5:": "🙎🏿",
+ ":man_pouting_dark_skin_tone:": "🙎🏿",
+ ":man_pouting_tone4:": "🙎🏾",
+ ":man_pouting_medium_dark_skin_tone:": "🙎🏾",
+ ":man_pouting_tone3:": "🙎🏽",
+ ":man_pouting_medium_skin_tone:": "🙎🏽",
+ ":man_pouting_tone2:": "🙎🏼",
+ ":man_pouting_medium_light_skin_tone:": "🙎🏼",
+ ":man_pouting_tone1:": "🙎🏻",
+ ":man_pouting_light_skin_tone:": "🙎🏻",
+ ":man_pouting:": "🙎",
+ ":woman_pouting_tone5:": "🙎🏿",
+ ":woman_pouting_dark_skin_tone:": "🙎🏿",
+ ":woman_pouting_tone4:": "🙎🏾",
+ ":woman_pouting_medium_dark_skin_tone:": "🙎🏾",
+ ":woman_pouting_tone3:": "🙎🏽",
+ ":woman_pouting_medium_skin_tone:": "🙎🏽",
+ ":woman_pouting_tone2:": "🙎🏼",
+ ":woman_pouting_medium_light_skin_tone:": "🙎🏼",
+ ":woman_pouting_tone1:": "🙎🏻",
+ ":woman_pouting_light_skin_tone:": "🙎🏻",
+ ":woman_pouting:": "🙎",
+ ":man_frowning_tone5:": "🙍🏿",
+ ":man_frowning_dark_skin_tone:": "🙍🏿",
+ ":man_frowning_tone4:": "🙍🏾",
+ ":man_frowning_medium_dark_skin_tone:": "🙍🏾",
+ ":man_frowning_tone3:": "🙍🏽",
+ ":man_frowning_medium_skin_tone:": "🙍🏽",
+ ":man_frowning_tone2:": "🙍🏼",
+ ":man_frowning_medium_light_skin_tone:": "🙍🏼",
+ ":man_frowning_tone1:": "🙍🏻",
+ ":man_frowning_light_skin_tone:": "🙍🏻",
+ ":man_frowning:": "🙍",
+ ":woman_frowning_tone5:": "🙍🏿",
+ ":woman_frowning_dark_skin_tone:": "🙍🏿",
+ ":woman_frowning_tone4:": "🙍🏾",
+ ":woman_frowning_medium_dark_skin_tone:": "🙍🏾",
+ ":woman_frowning_tone3:": "🙍🏽",
+ ":woman_frowning_medium_skin_tone:": "🙍🏽",
+ ":woman_frowning_tone2:": "🙍🏼",
+ ":woman_frowning_medium_light_skin_tone:": "🙍🏼",
+ ":woman_frowning_tone1:": "🙍🏻",
+ ":woman_frowning_light_skin_tone:": "🙍🏻",
+ ":woman_frowning:": "🙍",
+ ":man_raising_hand_tone5:": "🙋🏿",
+ ":man_raising_hand_dark_skin_tone:": "🙋🏿",
+ ":man_raising_hand_tone4:": "🙋🏾",
+ ":man_raising_hand_medium_dark_skin_tone:": "🙋🏾",
+ ":man_raising_hand_tone3:": "🙋🏽",
+ ":man_raising_hand_medium_skin_tone:": "🙋🏽",
+ ":man_raising_hand_tone2:": "🙋🏼",
+ ":man_raising_hand_medium_light_skin_tone:": "🙋🏼",
+ ":man_raising_hand_tone1:": "🙋🏻",
+ ":man_raising_hand_light_skin_tone:": "🙋🏻",
+ ":man_raising_hand:": "🙋",
+ ":woman_raising_hand_tone5:": "🙋🏿",
+ ":woman_raising_hand_dark_skin_tone:": "🙋🏿",
+ ":woman_raising_hand_tone4:": "🙋🏾",
+ ":woman_raising_hand_medium_dark_skin_tone:": "🙋🏾",
+ ":woman_raising_hand_tone3:": "🙋🏽",
+ ":woman_raising_hand_medium_skin_tone:": "🙋🏽",
+ ":woman_raising_hand_tone2:": "🙋🏼",
+ ":woman_raising_hand_medium_light_skin_tone:": "🙋🏼",
+ ":woman_raising_hand_tone1:": "🙋🏻",
+ ":woman_raising_hand_light_skin_tone:": "🙋🏻",
+ ":woman_raising_hand:": "🙋",
+ ":man_bowing_tone5:": "🙇🏿",
+ ":man_bowing_dark_skin_tone:": "🙇🏿",
+ ":man_bowing_tone4:": "🙇🏾",
+ ":man_bowing_medium_dark_skin_tone:": "🙇🏾",
+ ":man_bowing_tone3:": "🙇🏽",
+ ":man_bowing_medium_skin_tone:": "🙇🏽",
+ ":man_bowing_tone2:": "🙇🏼",
+ ":man_bowing_medium_light_skin_tone:": "🙇🏼",
+ ":man_bowing_tone1:": "🙇🏻",
+ ":man_bowing_light_skin_tone:": "🙇🏻",
+ ":man_bowing:": "🙇",
+ ":woman_bowing_tone5:": "🙇🏿",
+ ":woman_bowing_dark_skin_tone:": "🙇🏿",
+ ":woman_bowing_tone4:": "🙇🏾",
+ ":woman_bowing_medium_dark_skin_tone:": "🙇🏾",
+ ":woman_bowing_tone3:": "🙇🏽",
+ ":woman_bowing_medium_skin_tone:": "🙇🏽",
+ ":woman_bowing_tone2:": "🙇🏼",
+ ":woman_bowing_medium_light_skin_tone:": "🙇🏼",
+ ":woman_bowing_tone1:": "🙇🏻",
+ ":woman_bowing_light_skin_tone:": "🙇🏻",
+ ":woman_bowing:": "🙇",
+ ":man_gesturing_ok_tone5:": "🙆🏿",
+ ":man_gesturing_ok_dark_skin_tone:": "🙆🏿",
+ ":man_gesturing_ok_tone4:": "🙆🏾",
+ ":man_gesturing_ok_medium_dark_skin_tone:": "🙆🏾",
+ ":man_gesturing_ok_tone3:": "🙆🏽",
+ ":man_gesturing_ok_medium_skin_tone:": "🙆🏽",
+ ":man_gesturing_ok_tone2:": "🙆🏼",
+ ":man_gesturing_ok_medium_light_skin_tone:": "🙆🏼",
+ ":man_gesturing_ok_tone1:": "🙆🏻",
+ ":man_gesturing_ok_light_skin_tone:": "🙆🏻",
+ ":man_gesturing_ok:": "🙆",
+ ":woman_gesturing_ok_tone5:": "🙆🏿",
+ ":woman_gesturing_ok_dark_skin_tone:": "🙆🏿",
+ ":woman_gesturing_ok_tone4:": "🙆🏾",
+ ":woman_gesturing_ok_medium_dark_skin_tone:": "🙆🏾",
+ ":woman_gesturing_ok_tone3:": "🙆🏽",
+ ":woman_gesturing_ok_medium_skin_tone:": "🙆🏽",
+ ":woman_gesturing_ok_tone2:": "🙆🏼",
+ ":woman_gesturing_ok_medium_light_skin_tone:": "🙆🏼",
+ ":woman_gesturing_ok_tone1:": "🙆🏻",
+ ":woman_gesturing_ok_light_skin_tone:": "🙆🏻",
+ ":woman_gesturing_ok:": "🙆",
+ ":man_gesturing_no_tone5:": "🙅🏿",
+ ":man_gesturing_no_dark_skin_tone:": "🙅🏿",
+ ":man_gesturing_no_tone4:": "🙅🏾",
+ ":man_gesturing_no_medium_dark_skin_tone:": "🙅🏾",
+ ":man_gesturing_no_tone3:": "🙅🏽",
+ ":man_gesturing_no_medium_skin_tone:": "🙅🏽",
+ ":man_gesturing_no_tone2:": "🙅🏼",
+ ":man_gesturing_no_medium_light_skin_tone:": "🙅🏼",
+ ":man_gesturing_no_tone1:": "🙅🏻",
+ ":man_gesturing_no_light_skin_tone:": "🙅🏻",
+ ":man_gesturing_no:": "🙅",
+ ":woman_gesturing_no_tone5:": "🙅🏿",
+ ":woman_gesturing_no_dark_skin_tone:": "🙅🏿",
+ ":woman_gesturing_no_tone4:": "🙅🏾",
+ ":woman_gesturing_no_medium_dark_skin_tone:": "🙅🏾",
+ ":woman_gesturing_no_tone3:": "🙅🏽",
+ ":woman_gesturing_no_medium_skin_tone:": "🙅🏽",
+ ":woman_gesturing_no_tone2:": "🙅🏼",
+ ":woman_gesturing_no_medium_light_skin_tone:": "🙅🏼",
+ ":woman_gesturing_no_tone1:": "🙅🏻",
+ ":woman_gesturing_no_light_skin_tone:": "🙅🏻",
+ ":woman_gesturing_no:": "🙅",
+ ":man_getting_haircut_tone5:": "💇🏿",
+ ":man_getting_haircut_dark_skin_tone:": "💇🏿",
+ ":man_getting_haircut_tone4:": "💇🏾",
+ ":man_getting_haircut_medium_dark_skin_tone:": "💇🏾",
+ ":man_getting_haircut_tone3:": "💇🏽",
+ ":man_getting_haircut_medium_skin_tone:": "💇🏽",
+ ":man_getting_haircut_tone2:": "💇🏼",
+ ":man_getting_haircut_medium_light_skin_tone:": "💇🏼",
+ ":man_getting_haircut_tone1:": "💇🏻",
+ ":man_getting_haircut_light_skin_tone:": "💇🏻",
+ ":man_getting_haircut:": "💇",
+ ":woman_getting_haircut_tone5:": "💇🏿",
+ ":woman_getting_haircut_dark_skin_tone:": "💇🏿",
+ ":woman_getting_haircut_tone4:": "💇🏾",
+ ":woman_getting_haircut_medium_dark_skin_tone:": "💇🏾",
+ ":woman_getting_haircut_tone3:": "💇🏽",
+ ":woman_getting_haircut_medium_skin_tone:": "💇🏽",
+ ":woman_getting_haircut_tone2:": "💇🏼",
+ ":woman_getting_haircut_medium_light_skin_tone:": "💇🏼",
+ ":woman_getting_haircut_tone1:": "💇🏻",
+ ":woman_getting_haircut_light_skin_tone:": "💇🏻",
+ ":woman_getting_haircut:": "💇",
+ ":man_getting_face_massage_tone5:": "💆🏿",
+ ":man_getting_face_massage_dark_skin_tone:": "💆🏿",
+ ":man_getting_face_massage_tone4:": "💆🏾",
+ ":man_getting_face_massage_medium_dark_skin_tone:": "💆🏾",
+ ":man_getting_face_massage_tone3:": "💆🏽",
+ ":man_getting_face_massage_medium_skin_tone:": "💆🏽",
+ ":man_getting_face_massage_tone2:": "💆🏼",
+ ":man_getting_face_massage_medium_light_skin_tone:": "💆🏼",
+ ":man_getting_face_massage_tone1:": "💆🏻",
+ ":man_getting_face_massage_light_skin_tone:": "💆🏻",
+ ":man_getting_face_massage:": "💆",
+ ":woman_getting_face_massage_tone5:": "💆🏿",
+ ":woman_getting_face_massage_dark_skin_tone:": "💆🏿",
+ ":woman_getting_face_massage_tone4:": "💆🏾",
+ ":woman_getting_face_massage_medium_dark_skin_tone:": "💆🏾",
+ ":woman_getting_face_massage_tone3:": "💆🏽",
+ ":woman_getting_face_massage_medium_skin_tone:": "💆🏽",
+ ":woman_getting_face_massage_tone2:": "💆🏼",
+ ":woman_getting_face_massage_medium_light_skin_tone:": "💆🏼",
+ ":woman_getting_face_massage_tone1:": "💆🏻",
+ ":woman_getting_face_massage_light_skin_tone:": "💆🏻",
+ ":woman_getting_face_massage:": "💆",
+ ":man_tipping_hand_tone5:": "💁🏿",
+ ":man_tipping_hand_dark_skin_tone:": "💁🏿",
+ ":man_tipping_hand_tone4:": "💁🏾",
+ ":man_tipping_hand_medium_dark_skin_tone:": "💁🏾",
+ ":man_tipping_hand_tone3:": "💁🏽",
+ ":man_tipping_hand_medium_skin_tone:": "💁🏽",
+ ":man_tipping_hand_tone2:": "💁🏼",
+ ":man_tipping_hand_medium_light_skin_tone:": "💁🏼",
+ ":man_tipping_hand_tone1:": "💁🏻",
+ ":man_tipping_hand_light_skin_tone:": "💁🏻",
+ ":man_tipping_hand:": "💁",
+ ":woman_tipping_hand_tone5:": "💁🏿",
+ ":woman_tipping_hand_dark_skin_tone:": "💁🏿",
+ ":woman_tipping_hand_tone4:": "💁🏾",
+ ":woman_tipping_hand_medium_dark_skin_tone:": "💁🏾",
+ ":woman_tipping_hand_tone3:": "💁🏽",
+ ":woman_tipping_hand_medium_skin_tone:": "💁🏽",
+ ":woman_tipping_hand_tone2:": "💁🏼",
+ ":woman_tipping_hand_medium_light_skin_tone:": "💁🏼",
+ ":woman_tipping_hand_tone1:": "💁🏻",
+ ":woman_tipping_hand_light_skin_tone:": "💁🏻",
+ ":woman_tipping_hand:": "💁",
+ ":blondhaired_man_tone5:": "👱🏿",
+ ":blondhaired_man_dark_skin_tone:": "👱🏿",
+ ":blondhaired_man_tone4:": "👱🏾",
+ ":blondhaired_man_medium_dark_skin_tone:": "👱🏾",
+ ":blondhaired_man_tone3:": "👱🏽",
+ ":blondhaired_man_medium_skin_tone:": "👱🏽",
+ ":blondhaired_man_tone2:": "👱🏼",
+ ":blondhaired_man_medium_light_skin_tone:": "👱🏼",
+ ":blondhaired_man_tone1:": "👱🏻",
+ ":blondhaired_man_light_skin_tone:": "👱🏻",
+ ":blondhaired_man:": "👱",
+ ":blondhaired_woman_tone5:": "👱🏿",
+ ":blondhaired_woman_dark_skin_tone:": "👱🏿",
+ ":blondhaired_woman_tone4:": "👱🏾",
+ ":blondhaired_woman_medium_dark_skin_tone:": "👱🏾",
+ ":blondhaired_woman_tone3:": "👱🏽",
+ ":blondhaired_woman_medium_skin_tone:": "👱🏽",
+ ":blondhaired_woman_tone2:": "👱🏼",
+ ":blondhaired_woman_medium_light_skin_tone:": "👱🏼",
+ ":blondhaired_woman_tone1:": "👱🏻",
+ ":blondhaired_woman_light_skin_tone:": "👱🏻",
+ ":blondhaired_woman:": "👱",
+ ":man_wearing_turban_tone5:": "👳🏿",
+ ":man_wearing_turban_dark_skin_tone:": "👳🏿",
+ ":man_wearing_turban_tone4:": "👳🏾",
+ ":man_wearing_turban_medium_dark_skin_tone:": "👳🏾",
+ ":man_wearing_turban_tone3:": "👳🏽",
+ ":man_wearing_turban_medium_skin_tone:": "👳🏽",
+ ":man_wearing_turban_tone2:": "👳🏼",
+ ":man_wearing_turban_medium_light_skin_tone:": "👳🏼",
+ ":man_wearing_turban_tone1:": "👳🏻",
+ ":man_wearing_turban_light_skin_tone:": "👳🏻",
+ ":man_wearing_turban:": "👳",
+ ":woman_wearing_turban_tone5:": "👳🏿",
+ ":woman_wearing_turban_dark_skin_tone:": "👳🏿",
+ ":woman_wearing_turban_tone4:": "👳🏾",
+ ":woman_wearing_turban_medium_dark_skin_tone:": "👳🏾",
+ ":woman_wearing_turban_tone3:": "👳🏽",
+ ":woman_wearing_turban_medium_skin_tone:": "👳🏽",
+ ":woman_wearing_turban_tone2:": "👳🏼",
+ ":woman_wearing_turban_medium_light_skin_tone:": "👳🏼",
+ ":woman_wearing_turban_tone1:": "👳🏻",
+ ":woman_wearing_turban_light_skin_tone:": "👳🏻",
+ ":woman_wearing_turban:": "👳",
+ ":man_guard_tone5:": "💂🏿",
+ ":man_guard_dark_skin_tone:": "💂🏿",
+ ":man_guard_tone4:": "💂🏾",
+ ":man_guard_medium_dark_skin_tone:": "💂🏾",
+ ":man_guard_tone3:": "💂🏽",
+ ":man_guard_medium_skin_tone:": "💂🏽",
+ ":man_guard_tone2:": "💂🏼",
+ ":man_guard_medium_light_skin_tone:": "💂🏼",
+ ":man_guard_tone1:": "💂🏻",
+ ":man_guard_light_skin_tone:": "💂🏻",
+ ":man_guard:": "💂",
+ ":woman_guard_tone5:": "💂🏿",
+ ":woman_guard_dark_skin_tone:": "💂🏿",
+ ":woman_guard_tone4:": "💂🏾",
+ ":woman_guard_medium_dark_skin_tone:": "💂🏾",
+ ":woman_guard_tone3:": "💂🏽",
+ ":woman_guard_medium_skin_tone:": "💂🏽",
+ ":woman_guard_tone2:": "💂🏼",
+ ":woman_guard_medium_light_skin_tone:": "💂🏼",
+ ":woman_guard_tone1:": "💂🏻",
+ ":woman_guard_light_skin_tone:": "💂🏻",
+ ":woman_guard:": "💂",
+ ":man_detective_tone5:": "🕵🏿",
+ ":man_detective_dark_skin_tone:": "🕵🏿",
+ ":man_detective_tone4:": "🕵🏾",
+ ":man_detective_medium_dark_skin_tone:": "🕵🏾",
+ ":man_detective_tone3:": "🕵🏽",
+ ":man_detective_medium_skin_tone:": "🕵🏽",
+ ":man_detective_tone2:": "🕵🏼",
+ ":man_detective_medium_light_skin_tone:": "🕵🏼",
+ ":man_detective_tone1:": "🕵🏻",
+ ":man_detective_light_skin_tone:": "🕵🏻",
+ ":man_detective:": "🕵",
+ ":woman_detective_tone5:": "🕵🏿",
+ ":woman_detective_dark_skin_tone:": "🕵🏿",
+ ":woman_detective_tone4:": "🕵🏾",
+ ":woman_detective_medium_dark_skin_tone:": "🕵🏾",
+ ":woman_detective_tone3:": "🕵🏽",
+ ":woman_detective_medium_skin_tone:": "🕵🏽",
+ ":woman_detective_tone2:": "🕵🏼",
+ ":woman_detective_medium_light_skin_tone:": "🕵🏼",
+ ":woman_detective_tone1:": "🕵🏻",
+ ":woman_detective_light_skin_tone:": "🕵🏻",
+ ":woman_detective:": "🕵",
+ ":man_construction_worker_tone5:": "👷🏿",
+ ":man_construction_worker_dark_skin_tone:": "👷🏿",
+ ":man_construction_worker_tone4:": "👷🏾",
+ ":man_construction_worker_medium_dark_skin_tone:": "👷🏾",
+ ":man_construction_worker_tone3:": "👷🏽",
+ ":man_construction_worker_medium_skin_tone:": "👷🏽",
+ ":man_construction_worker_tone2:": "👷🏼",
+ ":man_construction_worker_medium_light_skin_tone:": "👷🏼",
+ ":man_construction_worker_tone1:": "👷🏻",
+ ":man_construction_worker_light_skin_tone:": "👷🏻",
+ ":man_construction_worker:": "👷",
+ ":woman_construction_worker_tone5:": "👷🏿",
+ ":woman_construction_worker_dark_skin_tone:": "👷🏿",
+ ":woman_construction_worker_tone4:": "👷🏾",
+ ":woman_construction_worker_medium_dark_skin_tone:": "👷🏾",
+ ":woman_construction_worker_tone3:": "👷🏽",
+ ":woman_construction_worker_medium_skin_tone:": "👷🏽",
+ ":woman_construction_worker_tone2:": "👷🏼",
+ ":woman_construction_worker_medium_light_skin_tone:": "👷🏼",
+ ":woman_construction_worker_tone1:": "👷🏻",
+ ":woman_construction_worker_light_skin_tone:": "👷🏻",
+ ":woman_construction_worker:": "👷",
+ ":man_police_officer_tone5:": "👮🏿",
+ ":man_police_officer_dark_skin_tone:": "👮🏿",
+ ":man_police_officer_tone4:": "👮🏾",
+ ":man_police_officer_medium_dark_skin_tone:": "👮🏾",
+ ":man_police_officer_tone3:": "👮🏽",
+ ":man_police_officer_medium_skin_tone:": "👮🏽",
+ ":man_police_officer_tone2:": "👮🏼",
+ ":man_police_officer_medium_light_skin_tone:": "👮🏼",
+ ":man_police_officer_tone1:": "👮🏻",
+ ":man_police_officer_light_skin_tone:": "👮🏻",
+ ":man_police_officer:": "👮",
+ ":woman_police_officer_tone5:": "👮🏿",
+ ":woman_police_officer_dark_skin_tone:": "👮🏿",
+ ":woman_police_officer_tone4:": "👮🏾",
+ ":woman_police_officer_medium_dark_skin_tone:": "👮🏾",
+ ":woman_police_officer_tone3:": "👮🏽",
+ ":woman_police_officer_medium_skin_tone:": "👮🏽",
+ ":woman_police_officer_tone2:": "👮🏼",
+ ":woman_police_officer_medium_light_skin_tone:": "👮🏼",
+ ":woman_police_officer_tone1:": "👮🏻",
+ ":woman_police_officer_light_skin_tone:": "👮🏻",
+ ":woman_police_officer:": "👮",
+ ":man_technologist_tone5:": "👨🏿💻",
+ ":man_technologist_dark_skin_tone:": "👨🏿💻",
+ ":man_technologist_tone4:": "👨🏾💻",
+ ":man_technologist_medium_dark_skin_tone:": "👨🏾💻",
+ ":man_technologist_tone3:": "👨🏽💻",
+ ":man_technologist_medium_skin_tone:": "👨🏽💻",
+ ":man_technologist_tone2:": "👨🏼💻",
+ ":man_technologist_medium_light_skin_tone:": "👨🏼💻",
+ ":man_technologist_tone1:": "👨🏻💻",
+ ":man_technologist_light_skin_tone:": "👨🏻💻",
+ ":man_technologist:": "👨💻",
+ ":woman_technologist_tone5:": "👩🏿💻",
+ ":woman_technologist_dark_skin_tone:": "👩🏿💻",
+ ":woman_technologist_tone4:": "👩🏾💻",
+ ":woman_technologist_medium_dark_skin_tone:": "👩🏾💻",
+ ":woman_technologist_tone3:": "👩🏽💻",
+ ":woman_technologist_medium_skin_tone:": "👩🏽💻",
+ ":woman_technologist_tone2:": "👩🏼💻",
+ ":woman_technologist_medium_light_skin_tone:": "👩🏼💻",
+ ":woman_technologist_tone1:": "👩🏻💻",
+ ":woman_technologist_light_skin_tone:": "👩🏻💻",
+ ":woman_technologist:": "👩💻",
+ ":man_teacher_tone5:": "👨🏿🏫",
+ ":man_teacher_dark_skin_tone:": "👨🏿🏫",
+ ":man_teacher_tone4:": "👨🏾🏫",
+ ":man_teacher_medium_dark_skin_tone:": "👨🏾🏫",
+ ":man_teacher_tone3:": "👨🏽🏫",
+ ":man_teacher_medium_skin_tone:": "👨🏽🏫",
+ ":man_teacher_tone2:": "👨🏼🏫",
+ ":man_teacher_medium_light_skin_tone:": "👨🏼🏫",
+ ":man_teacher_tone1:": "👨🏻🏫",
+ ":man_teacher_light_skin_tone:": "👨🏻🏫",
+ ":man_teacher:": "👨🏫",
+ ":woman_teacher_tone5:": "👩🏿🏫",
+ ":woman_teacher_dark_skin_tone:": "👩🏿🏫",
+ ":woman_teacher_tone4:": "👩🏾🏫",
+ ":woman_teacher_medium_dark_skin_tone:": "👩🏾🏫",
+ ":woman_teacher_tone3:": "👩🏽🏫",
+ ":woman_teacher_medium_skin_tone:": "👩🏽🏫",
+ ":woman_teacher_tone2:": "👩🏼🏫",
+ ":woman_teacher_medium_light_skin_tone:": "👩🏼🏫",
+ ":woman_teacher_tone1:": "👩🏻🏫",
+ ":woman_teacher_light_skin_tone:": "👩🏻🏫",
+ ":woman_teacher:": "👩🏫",
+ ":man_student_tone5:": "👨🏿🎓",
+ ":man_student_dark_skin_tone:": "👨🏿🎓",
+ ":man_student_tone4:": "👨🏾🎓",
+ ":man_student_medium_dark_skin_tone:": "👨🏾🎓",
+ ":man_student_tone3:": "👨🏽🎓",
+ ":man_student_medium_skin_tone:": "👨🏽🎓",
+ ":man_student_tone2:": "👨🏼🎓",
+ ":man_student_medium_light_skin_tone:": "👨🏼🎓",
+ ":man_student_tone1:": "👨🏻🎓",
+ ":man_student_light_skin_tone:": "👨🏻🎓",
+ ":man_student:": "👨🎓",
+ ":woman_student_tone5:": "👩🏿🎓",
+ ":woman_student_dark_skin_tone:": "👩🏿🎓",
+ ":woman_student_tone4:": "👩🏾🎓",
+ ":woman_student_medium_dark_skin_tone:": "👩🏾🎓",
+ ":woman_student_tone3:": "👩🏽🎓",
+ ":woman_student_medium_skin_tone:": "👩🏽🎓",
+ ":woman_student_tone2:": "👩🏼🎓",
+ ":woman_student_medium_light_skin_tone:": "👩🏼🎓",
+ ":woman_student_tone1:": "👩🏻🎓",
+ ":woman_student_light_skin_tone:": "👩🏻🎓",
+ ":woman_student:": "👩🎓",
+ ":man_singer_tone5:": "👨🏿🎤",
+ ":man_singer_dark_skin_tone:": "👨🏿🎤",
+ ":man_singer_tone4:": "👨🏾🎤",
+ ":man_singer_medium_dark_skin_tone:": "👨🏾🎤",
+ ":man_singer_tone3:": "👨🏽🎤",
+ ":man_singer_medium_skin_tone:": "👨🏽🎤",
+ ":man_singer_tone2:": "👨🏼🎤",
+ ":man_singer_medium_light_skin_tone:": "👨🏼🎤",
+ ":man_singer_tone1:": "👨🏻🎤",
+ ":man_singer_light_skin_tone:": "👨🏻🎤",
+ ":man_singer:": "👨🎤",
+ ":woman_singer_tone5:": "👩🏿🎤",
+ ":woman_singer_dark_skin_tone:": "👩🏿🎤",
+ ":woman_singer_tone4:": "👩🏾🎤",
+ ":woman_singer_medium_dark_skin_tone:": "👩🏾🎤",
+ ":woman_singer_tone3:": "👩🏽🎤",
+ ":woman_singer_medium_skin_tone:": "👩🏽🎤",
+ ":woman_singer_tone2:": "👩🏼🎤",
+ ":woman_singer_medium_light_skin_tone:": "👩🏼🎤",
+ ":woman_singer_tone1:": "👩🏻🎤",
+ ":woman_singer_light_skin_tone:": "👩🏻🎤",
+ ":woman_singer:": "👩🎤",
+ ":man_scientist_tone5:": "👨🏿🔬",
+ ":man_scientist_dark_skin_tone:": "👨🏿🔬",
+ ":man_scientist_tone4:": "👨🏾🔬",
+ ":man_scientist_medium_dark_skin_tone:": "👨🏾🔬",
+ ":man_scientist_tone3:": "👨🏽🔬",
+ ":man_scientist_medium_skin_tone:": "👨🏽🔬",
+ ":man_scientist_tone2:": "👨🏼🔬",
+ ":man_scientist_medium_light_skin_tone:": "👨🏼🔬",
+ ":man_scientist_tone1:": "👨🏻🔬",
+ ":man_scientist_light_skin_tone:": "👨🏻🔬",
+ ":man_scientist:": "👨🔬",
+ ":woman_scientist_tone5:": "👩🏿🔬",
+ ":woman_scientist_dark_skin_tone:": "👩🏿🔬",
+ ":woman_scientist_tone4:": "👩🏾🔬",
+ ":woman_scientist_medium_dark_skin_tone:": "👩🏾🔬",
+ ":woman_scientist_tone3:": "👩🏽🔬",
+ ":woman_scientist_medium_skin_tone:": "👩🏽🔬",
+ ":woman_scientist_tone2:": "👩🏼🔬",
+ ":woman_scientist_medium_light_skin_tone:": "👩🏼🔬",
+ ":woman_scientist_tone1:": "👩🏻🔬",
+ ":woman_scientist_light_skin_tone:": "👩🏻🔬",
+ ":woman_scientist:": "👩🔬",
+ ":man_office_worker_tone5:": "👨🏿💼",
+ ":man_office_worker_dark_skin_tone:": "👨🏿💼",
+ ":man_office_worker_tone4:": "👨🏾💼",
+ ":man_office_worker_medium_dark_skin_tone:": "👨🏾💼",
+ ":man_office_worker_tone3:": "👨🏽💼",
+ ":man_office_worker_medium_skin_tone:": "👨🏽💼",
+ ":man_office_worker_tone2:": "👨🏼💼",
+ ":man_office_worker_medium_light_skin_tone:": "👨🏼💼",
+ ":man_office_worker_tone1:": "👨🏻💼",
+ ":man_office_worker_light_skin_tone:": "👨🏻💼",
+ ":man_office_worker:": "👨💼",
+ ":woman_office_worker_tone5:": "👩🏿💼",
+ ":woman_office_worker_dark_skin_tone:": "👩🏿💼",
+ ":woman_office_worker_tone4:": "👩🏾💼",
+ ":woman_office_worker_medium_dark_skin_tone:": "👩🏾💼",
+ ":woman_office_worker_tone3:": "👩🏽💼",
+ ":woman_office_worker_medium_skin_tone:": "👩🏽💼",
+ ":woman_office_worker_tone2:": "👩🏼💼",
+ ":woman_office_worker_medium_light_skin_tone:": "👩🏼💼",
+ ":woman_office_worker_tone1:": "👩🏻💼",
+ ":woman_office_worker_light_skin_tone:": "👩🏻💼",
+ ":woman_office_worker:": "👩💼",
+ ":man_mechanic_tone5:": "👨🏿🔧",
+ ":man_mechanic_dark_skin_tone:": "👨🏿🔧",
+ ":man_mechanic_tone4:": "👨🏾🔧",
+ ":man_mechanic_medium_dark_skin_tone:": "👨🏾🔧",
+ ":man_mechanic_tone3:": "👨🏽🔧",
+ ":man_mechanic_medium_skin_tone:": "👨🏽🔧",
+ ":man_mechanic_tone2:": "👨🏼🔧",
+ ":man_mechanic_medium_light_skin_tone:": "👨🏼🔧",
+ ":man_mechanic_tone1:": "👨🏻🔧",
+ ":man_mechanic_light_skin_tone:": "👨🏻🔧",
+ ":man_mechanic:": "👨🔧",
+ ":woman_mechanic_tone5:": "👩🏿🔧",
+ ":woman_mechanic_dark_skin_tone:": "👩🏿🔧",
+ ":woman_mechanic_tone4:": "👩🏾🔧",
+ ":woman_mechanic_medium_dark_skin_tone:": "👩🏾🔧",
+ ":woman_mechanic_tone3:": "👩🏽🔧",
+ ":woman_mechanic_medium_skin_tone:": "👩🏽🔧",
+ ":woman_mechanic_tone2:": "👩🏼🔧",
+ ":woman_mechanic_medium_light_skin_tone:": "👩🏼🔧",
+ ":woman_mechanic_tone1:": "👩🏻🔧",
+ ":woman_mechanic_light_skin_tone:": "👩🏻🔧",
+ ":woman_mechanic:": "👩🔧",
+ ":man_health_worker_tone5:": "👨🏿⚕",
+ ":man_health_worker_dark_skin_tone:": "👨🏿⚕",
+ ":man_health_worker_tone4:": "👨🏾⚕",
+ ":man_health_worker_medium_dark_skin_tone:": "👨🏾⚕",
+ ":man_health_worker_tone3:": "👨🏽⚕",
+ ":man_health_worker_medium_skin_tone:": "👨🏽⚕",
+ ":man_health_worker_tone2:": "👨🏼⚕",
+ ":man_health_worker_medium_light_skin_tone:": "👨🏼⚕",
+ ":man_health_worker_tone1:": "👨🏻⚕",
+ ":man_health_worker_light_skin_tone:": "👨🏻⚕",
+ ":man_health_worker:": "👨⚕",
+ ":woman_health_worker_tone5:": "👩🏿⚕",
+ ":woman_health_worker_dark_skin_tone:": "👩🏿⚕",
+ ":woman_health_worker_tone4:": "👩🏾⚕",
+ ":woman_health_worker_medium_dark_skin_tone:": "👩🏾⚕",
+ ":woman_health_worker_tone3:": "👩🏽⚕",
+ ":woman_health_worker_medium_skin_tone:": "👩🏽⚕",
+ ":woman_health_worker_tone2:": "👩🏼⚕",
+ ":woman_health_worker_medium_light_skin_tone:": "👩🏼⚕",
+ ":woman_health_worker_tone1:": "👩🏻⚕",
+ ":woman_health_worker_light_skin_tone:": "👩🏻⚕",
+ ":woman_health_worker:": "👩⚕",
+ ":man_factory_worker_tone5:": "👨🏿🏭",
+ ":man_factory_worker_dark_skin_tone:": "👨🏿🏭",
+ ":man_factory_worker_tone4:": "👨🏾🏭",
+ ":man_factory_worker_medium_dark_skin_tone:": "👨🏾🏭",
+ ":man_factory_worker_tone3:": "👨🏽🏭",
+ ":man_factory_worker_medium_skin_tone:": "👨🏽🏭",
+ ":man_factory_worker_tone2:": "👨🏼🏭",
+ ":man_factory_worker_medium_light_skin_tone:": "👨🏼🏭",
+ ":man_factory_worker_tone1:": "👨🏻🏭",
+ ":man_factory_worker_light_skin_tone:": "👨🏻🏭",
+ ":man_factory_worker:": "👨🏭",
+ ":woman_factory_worker_tone5:": "👩🏿🏭",
+ ":woman_factory_worker_dark_skin_tone:": "👩🏿🏭",
+ ":woman_factory_worker_tone4:": "👩🏾🏭",
+ ":woman_factory_worker_medium_dark_skin_tone:": "👩🏾🏭",
+ ":woman_factory_worker_tone3:": "👩🏽🏭",
+ ":woman_factory_worker_medium_skin_tone:": "👩🏽🏭",
+ ":woman_factory_worker_tone2:": "👩🏼🏭",
+ ":woman_factory_worker_medium_light_skin_tone:": "👩🏼🏭",
+ ":woman_factory_worker_tone1:": "👩🏻🏭",
+ ":woman_factory_worker_light_skin_tone:": "👩🏻🏭",
+ ":woman_factory_worker:": "👩🏭",
+ ":man_cook_tone5:": "👨🏿🍳",
+ ":man_cook_dark_skin_tone:": "👨🏿🍳",
+ ":man_cook_tone4:": "👨🏾🍳",
+ ":man_cook_medium_dark_skin_tone:": "👨🏾🍳",
+ ":man_cook_tone3:": "👨🏽🍳",
+ ":man_cook_medium_skin_tone:": "👨🏽🍳",
+ ":man_cook_tone2:": "👨🏼🍳",
+ ":man_cook_medium_light_skin_tone:": "👨🏼🍳",
+ ":man_cook_tone1:": "👨🏻🍳",
+ ":man_cook_light_skin_tone:": "👨🏻🍳",
+ ":man_cook:": "👨🍳",
+ ":woman_cook_tone5:": "👩🏿🍳",
+ ":woman_cook_dark_skin_tone:": "👩🏿🍳",
+ ":woman_cook_tone4:": "👩🏾🍳",
+ ":woman_cook_medium_dark_skin_tone:": "👩🏾🍳",
+ ":woman_cook_tone3:": "👩🏽🍳",
+ ":woman_cook_medium_skin_tone:": "👩🏽🍳",
+ ":woman_cook_tone2:": "👩🏼🍳",
+ ":woman_cook_medium_light_skin_tone:": "👩🏼🍳",
+ ":woman_cook_tone1:": "👩🏻🍳",
+ ":woman_cook_light_skin_tone:": "👩🏻🍳",
+ ":woman_cook:": "👩🍳",
+ ":man_farmer_tone5:": "👨🏿🌾",
+ ":man_farmer_dark_skin_tone:": "👨🏿🌾",
+ ":man_farmer_tone4:": "👨🏾🌾",
+ ":man_farmer_medium_dark_skin_tone:": "👨🏾🌾",
+ ":man_farmer_tone3:": "👨🏽🌾",
+ ":man_farmer_medium_skin_tone:": "👨🏽🌾",
+ ":man_farmer_tone2:": "👨🏼🌾",
+ ":man_farmer_medium_light_skin_tone:": "👨🏼🌾",
+ ":man_farmer_tone1:": "👨🏻🌾",
+ ":man_farmer_light_skin_tone:": "👨🏻🌾",
+ ":man_farmer:": "👨🌾",
+ ":woman_farmer_tone5:": "👩🏿🌾",
+ ":woman_farmer_dark_skin_tone:": "👩🏿🌾",
+ ":woman_farmer_tone4:": "👩🏾🌾",
+ ":woman_farmer_medium_dark_skin_tone:": "👩🏾🌾",
+ ":woman_farmer_tone3:": "👩🏽🌾",
+ ":woman_farmer_medium_skin_tone:": "👩🏽🌾",
+ ":woman_farmer_tone2:": "👩🏼🌾",
+ ":woman_farmer_medium_light_skin_tone:": "👩🏼🌾",
+ ":woman_farmer_tone1:": "👩🏻🌾",
+ ":woman_farmer_light_skin_tone:": "👩🏻🌾",
+ ":woman_farmer:": "👩🌾",
+ ":man_in_business_suit_levitating_tone1:": "🕴🏻",
+ ":man_in_business_suit_levitating_light_skin_tone:": "🕴🏻",
+ ":man_in_business_suit_levitating_tone2:": "🕴🏼",
+ ":man_in_business_suit_levitating_medium_light_skin_tone:": "🕴🏼",
+ ":man_in_business_suit_levitating_tone3:": "🕴🏽",
+ ":man_in_business_suit_levitating_medium_skin_tone:": "🕴🏽",
+ ":man_in_business_suit_levitating_tone4:": "🕴🏾",
+ ":man_in_business_suit_levitating_medium_dark_skin_tone:": "🕴🏾",
+ ":man_in_business_suit_levitating_tone5:": "🕴🏿",
+ ":man_in_business_suit_levitating_dark_skin_tone:": "🕴🏿",
+ ":person_in_bed_tone1:": "🛌🏻",
+ ":person_in_bed_light_skin_tone:": "🛌🏻",
+ ":person_in_bed_tone2:": "🛌🏼",
+ ":person_in_bed_medium_light_skin_tone:": "🛌🏼",
+ ":person_in_bed_tone3:": "🛌🏽",
+ ":person_in_bed_medium_skin_tone:": "🛌🏽",
+ ":person_in_bed_tone4:": "🛌🏾",
+ ":person_in_bed_medium_dark_skin_tone:": "🛌🏾",
+ ":person_in_bed_tone5:": "🛌🏿",
+ ":person_in_bed_dark_skin_tone:": "🛌🏿",
+ ":family_man_boy:": "👨👦",
+ ":family_man_boy_boy:": "👨👦👦",
+ ":family_man_girl:": "👨👧",
+ ":family_man_girl_boy:": "👨👧👦",
+ ":family_woman_boy:": "👩👦",
+ ":family_woman_boy_boy:": "👩👦👦",
+ ":family_woman_girl:": "👩👧",
+ ":family_woman_girl_boy:": "👩👧👦",
+ ":family_woman_girl_girl:": "👩👧👧",
+ ":man_judge:": "👨⚖",
+ ":man_judge_tone1:": "👨🏻⚖",
+ ":man_judge_light_skin_tone:": "👨🏻⚖",
+ ":man_judge_tone2:": "👨🏼⚖",
+ ":man_judge_medium_light_skin_tone:": "👨🏼⚖",
+ ":man_judge_tone3:": "👨🏽⚖",
+ ":man_judge_medium_skin_tone:": "👨🏽⚖",
+ ":man_judge_tone4:": "👨🏾⚖",
+ ":man_judge_medium_dark_skin_tone:": "👨🏾⚖",
+ ":man_judge_tone5:": "👨🏿⚖",
+ ":man_judge_dark_skin_tone:": "👨🏿⚖",
+ ":woman_judge:": "👩⚖",
+ ":woman_judge_tone1:": "👩🏻⚖",
+ ":woman_judge_light_skin_tone:": "👩🏻⚖",
+ ":woman_judge_tone2:": "👩🏼⚖",
+ ":woman_judge_medium_light_skin_tone:": "👩🏼⚖",
+ ":woman_judge_tone3:": "👩🏽⚖",
+ ":woman_judge_medium_skin_tone:": "👩🏽⚖",
+ ":woman_judge_tone4:": "👩🏾⚖",
+ ":woman_judge_medium_dark_skin_tone:": "👩🏾⚖",
+ ":woman_judge_tone5:": "👩🏿⚖",
+ ":woman_judge_dark_skin_tone:": "👩🏿⚖",
+ ":man_pilot:": "👨✈",
+ ":man_pilot_tone1:": "👨🏻✈",
+ ":man_pilot_light_skin_tone:": "👨🏻✈",
+ ":man_pilot_tone2:": "👨🏼✈",
+ ":man_pilot_medium_light_skin_tone:": "👨🏼✈",
+ ":man_pilot_tone3:": "👨🏽✈",
+ ":man_pilot_medium_skin_tone:": "👨🏽✈",
+ ":man_pilot_tone4:": "👨🏾✈",
+ ":man_pilot_medium_dark_skin_tone:": "👨🏾✈",
+ ":man_pilot_tone5:": "👨🏿✈",
+ ":man_pilot_dark_skin_tone:": "👨🏿✈",
+ ":woman_pilot:": "👩✈",
+ ":woman_pilot_tone1:": "👩🏻✈",
+ ":woman_pilot_light_skin_tone:": "👩🏻✈",
+ ":woman_pilot_tone2:": "👩🏼✈",
+ ":woman_pilot_medium_light_skin_tone:": "👩🏼✈",
+ ":woman_pilot_tone3:": "👩🏽✈",
+ ":woman_pilot_medium_skin_tone:": "👩🏽✈",
+ ":woman_pilot_tone4:": "👩🏾✈",
+ ":woman_pilot_medium_dark_skin_tone:": "👩🏾✈",
+ ":woman_pilot_tone5:": "👩🏿✈",
+ ":woman_pilot_dark_skin_tone:": "👩🏿✈",
+ ":man_artist:": "👨🎨",
+ ":man_artist_tone1:": "👨🏻🎨",
+ ":man_artist_light_skin_tone:": "👨🏻🎨",
+ ":man_artist_tone2:": "👨🏼🎨",
+ ":man_artist_medium_light_skin_tone:": "👨🏼🎨",
+ ":man_artist_tone3:": "👨🏽🎨",
+ ":man_artist_medium_skin_tone:": "👨🏽🎨",
+ ":man_artist_tone4:": "👨🏾🎨",
+ ":man_artist_medium_dark_skin_tone:": "👨🏾🎨",
+ ":man_artist_tone5:": "👨🏿🎨",
+ ":man_artist_dark_skin_tone:": "👨🏿🎨",
+ ":woman_artist:": "👩🎨",
+ ":woman_artist_tone1:": "👩🏻🎨",
+ ":woman_artist_light_skin_tone:": "👩🏻🎨",
+ ":woman_artist_tone2:": "👩🏼🎨",
+ ":woman_artist_medium_light_skin_tone:": "👩🏼🎨",
+ ":woman_artist_tone3:": "👩🏽🎨",
+ ":woman_artist_medium_skin_tone:": "👩🏽🎨",
+ ":woman_artist_tone4:": "👩🏾🎨",
+ ":woman_artist_medium_dark_skin_tone:": "👩🏾🎨",
+ ":woman_artist_tone5:": "👩🏿🎨",
+ ":woman_artist_dark_skin_tone:": "👩🏿🎨",
+ ":man_astronaut:": "👨🚀",
+ ":man_astronaut_tone1:": "👨🏻🚀",
+ ":man_astronaut_light_skin_tone:": "👨🏻🚀",
+ ":man_astronaut_tone2:": "👨🏼🚀",
+ ":man_astronaut_medium_light_skin_tone:": "👨🏼🚀",
+ ":man_astronaut_tone3:": "👨🏽🚀",
+ ":man_astronaut_medium_skin_tone:": "👨🏽🚀",
+ ":man_astronaut_tone4:": "👨🏾🚀",
+ ":man_astronaut_medium_dark_skin_tone:": "👨🏾🚀",
+ ":man_astronaut_tone5:": "👨🏿🚀",
+ ":man_astronaut_dark_skin_tone:": "👨🏿🚀",
+ ":woman_astronaut:": "👩🚀",
+ ":woman_astronaut_tone1:": "👩🏻🚀",
+ ":woman_astronaut_light_skin_tone:": "👩🏻🚀",
+ ":woman_astronaut_tone2:": "👩🏼🚀",
+ ":woman_astronaut_medium_light_skin_tone:": "👩🏼🚀",
+ ":woman_astronaut_tone3:": "👩🏽🚀",
+ ":woman_astronaut_medium_skin_tone:": "👩🏽🚀",
+ ":woman_astronaut_tone4:": "👩🏾🚀",
+ ":woman_astronaut_medium_dark_skin_tone:": "👩🏾🚀",
+ ":woman_astronaut_tone5:": "👩🏿🚀",
+ ":woman_astronaut_dark_skin_tone:": "👩🏿🚀",
+ ":man_firefighter:": "👨🚒",
+ ":man_firefighter_tone1:": "👨🏻🚒",
+ ":man_firefighter_light_skin_tone:": "👨🏻🚒",
+ ":man_firefighter_tone2:": "👨🏼🚒",
+ ":man_firefighter_medium_light_skin_tone:": "👨🏼🚒",
+ ":man_firefighter_tone3:": "👨🏽🚒",
+ ":man_firefighter_medium_skin_tone:": "👨🏽🚒",
+ ":man_firefighter_tone4:": "👨🏾🚒",
+ ":man_firefighter_medium_dark_skin_tone:": "👨🏾🚒",
+ ":man_firefighter_tone5:": "👨🏿🚒",
+ ":man_firefighter_dark_skin_tone:": "👨🏿🚒",
+ ":woman_firefighter:": "👩🚒",
+ ":woman_firefighter_tone1:": "👩🏻🚒",
+ ":woman_firefighter_light_skin_tone:": "👩🏻🚒",
+ ":woman_firefighter_tone2:": "👩🏼🚒",
+ ":woman_firefighter_medium_light_skin_tone:": "👩🏼🚒",
+ ":woman_firefighter_tone3:": "👩🏽🚒",
+ ":woman_firefighter_medium_skin_tone:": "👩🏽🚒",
+ ":woman_firefighter_tone4:": "👩🏾🚒",
+ ":woman_firefighter_medium_dark_skin_tone:": "👩🏾🚒",
+ ":woman_firefighter_tone5:": "👩🏿🚒",
+ ":woman_firefighter_dark_skin_tone:": "👩🏿🚒",
+ ":female_sign:": "♀",
+ ":male_sign:": "♂",
+ ":medical_symbol:": "⚕",
+ ":united_nations:": "🇺🇳",
+ ":snowboarder_tone2:": "🏂🏼",
+ ":snowboarder_medium_light_skin_tone:": "🏂🏼",
+ ":snowboarder_tone3:": "🏂🏽",
+ ":snowboarder_medium_skin_tone:": "🏂🏽",
+ ":snowboarder_tone4:": "🏂🏾",
+ ":snowboarder_medium_dark_skin_tone:": "🏂🏾",
+ ":snowboarder_tone5:": "🏂🏿",
+ ":snowboarder_dark_skin_tone:": "🏂🏿",
+ ":person_golfing_tone1:": "🏌🏻",
+ ":person_golfing_light_skin_tone:": "🏌🏻",
+ ":person_golfing_tone2:": "🏌🏼",
+ ":person_golfing_medium_light_skin_tone:": "🏌🏼",
+ ":person_golfing_tone3:": "🏌🏽",
+}
+
+function replace_emoji() {
+ $('.emoji_poss').each(function(){
+ const emoji = $(this).html().match(/(:.+?:)|✅/g);
+ for(let i in emoji) {
+ if(emoji_dict[emoji[i]]) {
+ $(this).html($(this).html().replace(emoji[i], emoji_dict[emoji[i]]));
+ $(this).removeClass('emoji_poss');
+ }
+ }
+ $(this).html($(this).html().replace("✅", " "));
+ });
+ twemoji.parse(document.body);
+};
+
+function replaced_emoji_return(original) {
+ const emoji = original.match(/(:.+?:)/g);
+ for(let i in emoji) {
+ if(emoji_dict[emoji[i]]) {
+ original = original.replace(emoji[i], emoji_dict[emoji[i]]);
+ }
+ }
+ return original
+};
diff --git a/public_html/assets/js/shortcut.js b/public_html/assets/js/shortcut.js
new file mode 100644
index 0000000..387b00c
--- /dev/null
+++ b/public_html/assets/js/shortcut.js
@@ -0,0 +1,223 @@
+/**
+ * http://www.openjs.com/scripts/events/keyboard_shortcuts/
+ * Version : 2.01.B
+ * By Binny V A
+ * License : BSD
+ */
+shortcut = {
+ 'all_shortcuts':{},//All the shortcuts are stored in this array
+ 'add': function(shortcut_combination,callback,opt) {
+ //Provide a set of default options
+ var default_options = {
+ 'type':'keydown',
+ 'propagate':false,
+ 'disable_in_input':false,
+ 'target':document,
+ 'keycode':false
+ }
+ if(!opt) opt = default_options;
+ else {
+ for(var dfo in default_options) {
+ if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo];
+ }
+ }
+
+ var ele = opt.target;
+ if(typeof opt.target == 'string') ele = document.getElementById(opt.target);
+ var ths = this;
+ shortcut_combination = shortcut_combination.toLowerCase();
+
+ //The function to be called at keypress
+ var func = function(e) {
+ e = e || window.event;
+
+ if(opt['disable_in_input']) { //Don't enable shortcut keys in Input, Textarea fields
+ var element;
+ if(e.target) element=e.target;
+ else if(e.srcElement) element=e.srcElement;
+ if(element.nodeType==3) element=element.parentNode;
+
+ if(element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return;
+ }
+
+ //Find Which key is pressed
+ if (e.keyCode) code = e.keyCode;
+ else if (e.which) code = e.which;
+ var character = String.fromCharCode(code).toLowerCase();
+
+ if(code == 188) character=","; //If the user presses , when the type is onkeydown
+ if(code == 190) character="."; //If the user presses , when the type is onkeydown
+
+ var keys = shortcut_combination.split("+");
+ //Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked
+ var kp = 0;
+
+ //Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken
+ var shift_nums = {
+ "`":"~",
+ "1":"!",
+ "2":"@",
+ "3":"#",
+ "4":"$",
+ "5":"%",
+ "6":"^",
+ "7":"&",
+ "8":"*",
+ "9":"(",
+ "0":")",
+ "-":"_",
+ "=":"+",
+ ";":":",
+ "'":"\"",
+ ",":"<",
+ ".":">",
+ "/":"?",
+ "\\":"|"
+ }
+ //Special Keys - and their codes
+ var special_keys = {
+ 'esc':27,
+ 'escape':27,
+ 'tab':9,
+ 'space':32,
+ 'return':13,
+ 'enter':13,
+ 'backspace':8,
+
+ 'scrolllock':145,
+ 'scroll_lock':145,
+ 'scroll':145,
+ 'capslock':20,
+ 'caps_lock':20,
+ 'caps':20,
+ 'numlock':144,
+ 'num_lock':144,
+ 'num':144,
+
+ 'pause':19,
+ 'break':19,
+
+ 'insert':45,
+ 'home':36,
+ 'delete':46,
+ 'end':35,
+
+ 'pageup':33,
+ 'page_up':33,
+ 'pu':33,
+
+ 'pagedown':34,
+ 'page_down':34,
+ 'pd':34,
+
+ 'left':37,
+ 'up':38,
+ 'right':39,
+ 'down':40,
+
+ 'f1':112,
+ 'f2':113,
+ 'f3':114,
+ 'f4':115,
+ 'f5':116,
+ 'f6':117,
+ 'f7':118,
+ 'f8':119,
+ 'f9':120,
+ 'f10':121,
+ 'f11':122,
+ 'f12':123
+ }
+
+ var modifiers = {
+ shift: { wanted:false, pressed:false},
+ ctrl : { wanted:false, pressed:false},
+ alt : { wanted:false, pressed:false},
+ meta : { wanted:false, pressed:false} //Meta is Mac specific
+ };
+
+ if(e.ctrlKey) modifiers.ctrl.pressed = true;
+ if(e.shiftKey) modifiers.shift.pressed = true;
+ if(e.altKey) modifiers.alt.pressed = true;
+ if(e.metaKey) modifiers.meta.pressed = true;
+
+ for(var i=0; k=keys[i],i 1) { //If it is a special key
+ if(special_keys[k] == code) kp++;
+
+ } else if(opt['keycode']) {
+ if(opt['keycode'] == code) kp++;
+
+ } else { //The special keys did not match
+ if(character == k) kp++;
+ else {
+ if(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase
+ character = shift_nums[character];
+ if(character == k) kp++;
+ }
+ }
+ }
+ }
+
+ if(kp == keys.length &&
+ modifiers.ctrl.pressed == modifiers.ctrl.wanted &&
+ modifiers.shift.pressed == modifiers.shift.wanted &&
+ modifiers.alt.pressed == modifiers.alt.wanted &&
+ modifiers.meta.pressed == modifiers.meta.wanted) {
+ callback(e);
+
+ if(!opt['propagate']) { //Stop the event
+ //e.cancelBubble is supported by IE - this will kill the bubbling process.
+ e.cancelBubble = true;
+ e.returnValue = false;
+
+ //e.stopPropagation works in Firefox.
+ if (e.stopPropagation) {
+ e.stopPropagation();
+ e.preventDefault();
+ }
+ return false;
+ }
+ }
+ }
+ this.all_shortcuts[shortcut_combination] = {
+ 'callback':func,
+ 'target':ele,
+ 'event': opt['type']
+ };
+ //Attach the function with the event
+ if(ele.addEventListener) ele.addEventListener(opt['type'], func, false);
+ else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func);
+ else ele['on'+opt['type']] = func;
+ },
+
+ //Remove the shortcut - just specify the shortcut and I will remove the binding
+ 'remove':function(shortcut_combination) {
+ shortcut_combination = shortcut_combination.toLowerCase();
+ var binding = this.all_shortcuts[shortcut_combination];
+ delete(this.all_shortcuts[shortcut_combination])
+ if(!binding) return;
+ var type = binding['event'];
+ var ele = binding['target'];
+ var callback = binding['callback'];
+
+ if(ele.detachEvent) ele.detachEvent('on'+type, callback);
+ else if(ele.removeEventListener) ele.removeEventListener(type, callback, false);
+ else ele['on'+type] = false;
+ }
+
+}
\ No newline at end of file
diff --git a/public_html/federated.php b/public_html/federated.php
new file mode 100644
index 0000000..ee94a37
--- /dev/null
+++ b/public_html/federated.php
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ View new Toots
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public_html/footer.php b/public_html/footer.php
new file mode 100644
index 0000000..e1bb889
--- /dev/null
+++ b/public_html/footer.php
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+