Completed
Branch master (92b72b)
by Florin
05:55
created
controller/friends.php 3 patches
Unused Use Statements   -4 removed lines patch added patch discarded remove patch
@@ -2,10 +2,6 @@
 block discarded – undo
2 2
 
3 3
 namespace florinp\messenger\controller;
4 4
 
5
-use Symfony\Component\HttpFoundation\Response;
6
-use Symfony\Component\HttpFoundation\JsonResponse;
7
-use Symfony\Component\HttpFoundation\Request;
8
-
9 5
 class friends {
10 6
 
11 7
 	protected $config;
Please login to merge, or discard this patch.
Spacing   +16 added lines, -16 removed lines patch added patch discarded remove patch
@@ -33,7 +33,7 @@  discard block
 block discarded – undo
33 33
 	{
34 34
 		$friends = $this->model->getFriends();
35 35
 		$i = 0;
36
-		foreach($friends as $friend)
36
+		foreach ($friends as $friend)
37 37
 		{
38 38
 			$i = $i + 1;
39 39
 			$user_loader = $this->user_loader->load_users(array(
@@ -57,7 +57,7 @@  discard block
 block discarded – undo
57 57
 	{
58 58
 		$requests = $this->model->get_friends_requests();
59 59
 		$i = 0;
60
-		foreach($requests as $request)
60
+		foreach ($requests as $request)
61 61
 		{
62 62
 			$i = $i + 1;
63 63
 			$user_loader = $this->user_loader->load_users(array(
@@ -80,9 +80,9 @@  discard block
 block discarded – undo
80 80
 
81 81
 	public function delete_request($requests_id)
82 82
 	{
83
-		if(is_array($requests_id))
83
+		if (is_array($requests_id))
84 84
 		{
85
-			foreach($requests_id as $id)
85
+			foreach ($requests_id as $id)
86 86
 			{
87 87
 				$this->model->delete_friend_request($id);
88 88
 			}
@@ -95,12 +95,12 @@  discard block
 block discarded – undo
95 95
 
96 96
 	public function approve_request($requests_id)
97 97
 	{
98
-		if(is_array($requests_id))
98
+		if (is_array($requests_id))
99 99
 		{
100
-			foreach($requests_id as $id)
100
+			foreach ($requests_id as $id)
101 101
 			{
102 102
 				$request_data = $this->model->get_friend_request($id);
103
-				if($request_data)
103
+				if ($request_data)
104 104
 				{
105 105
 					$this->model->add_friend(array(
106 106
 						'user_id' => $request_data['user_id'],
@@ -122,26 +122,26 @@  discard block
 block discarded – undo
122 122
 	}
123 123
 
124 124
 	public function send_request($user_id) {
125
-		$user_id = ( int ) $user_id;
125
+		$user_id = (int)$user_id;
126 126
 		$sender_id = $this->user->data ['user_id'];
127 127
 
128
-		$insert = array (
128
+		$insert = array(
129 129
 				'user_id' => $user_id,
130 130
 				'sender_id' => $sender_id
131 131
 		);
132 132
 
133
-		if ($request_id = $this->model->insert_friends_request ( $insert )) {
133
+		if ($request_id = $this->model->insert_friends_request($insert)) {
134 134
 
135
-			$notification_data = array (
135
+			$notification_data = array(
136 136
 					'request_id' => $request_id,
137 137
 					'sender_id' => $sender_id,
138 138
 					'sender_username' => $this->user->data ['username'],
139 139
 					'user_id' => $user_id
140 140
 			);
141 141
 
142
-			$this->notification_manager->add_notifications ( array (
142
+			$this->notification_manager->add_notifications(array(
143 143
 					'florinp.messenger.notification.type.friend_request'
144
-			), $notification_data );
144
+			), $notification_data);
145 145
 
146 146
 			return true;
147 147
 		}
@@ -151,9 +151,9 @@  discard block
 block discarded – undo
151 151
 	
152 152
 	public function remove_friend($user_id) {
153 153
 		
154
-		if(is_array($user_id))
154
+		if (is_array($user_id))
155 155
 		{
156
-			foreach($user_id as $id)
156
+			foreach ($user_id as $id)
157 157
 			{
158 158
 				$this->model->remove_friend($id);
159 159
 			}
@@ -161,7 +161,7 @@  discard block
 block discarded – undo
161 161
 		}
162 162
 		else
163 163
 		{
164
-			if($user_id > 1)
164
+			if ($user_id > 1)
165 165
 			{
166 166
 				$this->model->remove_friend($user_id);
167 167
 				return true;
Please login to merge, or discard this patch.
Braces   +3 added lines, -6 removed lines patch added patch discarded remove patch
@@ -86,8 +86,7 @@  discard block
 block discarded – undo
86 86
 			{
87 87
 				$this->model->delete_friend_request($id);
88 88
 			}
89
-		}
90
-		else
89
+		} else
91 90
 		{
92 91
 			$this->model->delete_friend_request($requests_id);
93 92
 		}
@@ -109,8 +108,7 @@  discard block
 block discarded – undo
109 108
 				}
110 109
 				
111 110
 			}
112
-		}
113
-		else
111
+		} else
114 112
 		{
115 113
 			$this->model->approve_friend_request($requests_id);
116 114
 			$request_data = $this->model->get_friend_request($requests_id);
@@ -158,8 +156,7 @@  discard block
 block discarded – undo
158 156
 				$this->model->remove_friend($id);
159 157
 			}
160 158
 			return true;
161
-		}
162
-		else
159
+		} else
163 160
 		{
164 161
 			if($user_id > 1)
165 162
 			{
Please login to merge, or discard this patch.
controller/main.php 2 patches
Unused Use Statements   -1 removed lines patch added patch discarded remove patch
@@ -4,7 +4,6 @@
 block discarded – undo
4 4
 
5 5
 use Symfony\Component\HttpFoundation\Response;
6 6
 use Symfony\Component\HttpFoundation\JsonResponse;
7
-use Symfony\Component\HttpFoundation\Request;
8 7
 
9 8
 class main
10 9
 {
Please login to merge, or discard this patch.
Spacing   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -18,7 +18,7 @@  discard block
 block discarded – undo
18 18
 	protected $notification_manager;
19 19
 	protected $emojione;
20 20
 
21
-	public function __construct(\phpbb\config\config $config, \phpbb\controller\helper $helper, \phpbb\template\template $template, \phpbb\request\request $request ,\phpbb\user $user, \florinp\messenger\models\main_model $model, \phpbb\notification\manager $notification_manager, \florinp\messenger\libs\emojione $emojione)
21
+	public function __construct(\phpbb\config\config $config, \phpbb\controller\helper $helper, \phpbb\template\template $template, \phpbb\request\request $request, \phpbb\user $user, \florinp\messenger\models\main_model $model, \phpbb\notification\manager $notification_manager, \florinp\messenger\libs\emojione $emojione)
22 22
 	{
23 23
 		$this->config = $config;
24 24
 		$this->helper = $helper;
@@ -43,7 +43,7 @@  discard block
 block discarded – undo
43 43
 	{
44 44
 		/* AJAX check  */
45 45
 		$http_request = $this->request->server('HTTP_X_REQUESTED_WITH');
46
-		if(empty($http_request) && strtolower($http_request) != 'xmlhttprequest') {
46
+		if (empty($http_request) && strtolower($http_request) != 'xmlhttprequest') {
47 47
 			return new Response("The request is invalid", 500);
48 48
 		}
49 49
 
@@ -52,7 +52,7 @@  discard block
 block discarded – undo
52 52
 		$sender_id = $this->user->data['user_id'];
53 53
 
54 54
 
55
-		if($receiver_id != 0 && trim($text) != '')
55
+		if ($receiver_id != 0 && trim($text) != '')
56 56
 		{
57 57
 			$text = htmlspecialchars($text);
58 58
 			$text = str_replace(array("\n", "\r"), '', $text);
@@ -64,7 +64,7 @@  discard block
 block discarded – undo
64 64
 				'sentAt' => time()
65 65
 			);
66 66
 
67
-			if($id = $this->model->sendMessage($message))
67
+			if ($id = $this->model->sendMessage($message))
68 68
 			{
69 69
 				$lastMessage = $this->model->getMessageById($id);
70 70
 				$response = array('success' => true, 'message' => $lastMessage);
@@ -82,14 +82,14 @@  discard block
 block discarded – undo
82 82
 	public function getFile($id)
83 83
 	{
84 84
 			global $phpbb_root_path;
85
-			$uploadDir = $phpbb_root_path . 'store/messenger/files';
85
+			$uploadDir = $phpbb_root_path.'store/messenger/files';
86 86
 			$id = explode('_', $id)[1];
87 87
 			$file = $this->model->getFileById($id);
88
-			if($file && is_file($uploadDir.'/'.$file['file'])) {
88
+			if ($file && is_file($uploadDir.'/'.$file['file'])) {
89 89
 				header('Content-Type: application/csv');
90
-				header('Content-Disposition: attachment; filename=' . $file['file']);
90
+				header('Content-Disposition: attachment; filename='.$file['file']);
91 91
 				header('Pragma: no-cache');
92
-				readfile($uploadDir . '/' . $file['file']);
92
+				readfile($uploadDir.'/'.$file['file']);
93 93
 			} else {
94 94
 				return new Response("The request is invalid", 500);
95 95
 			}
@@ -102,16 +102,16 @@  discard block
 block discarded – undo
102 102
 		$receiver_id = $this->request->variable('receiver_id', 0);
103 103
 		$sender_id = $this->user->data['user_id'];
104 104
 
105
-		$uploadDir = $phpbb_root_path . 'store/messenger/files';
105
+		$uploadDir = $phpbb_root_path.'store/messenger/files';
106 106
 		$file = $this->request->file('file');
107
-		if($receiver_id != 0 && !empty($file)) {
108
-			if($file['error'] == 0) {
107
+		if ($receiver_id != 0 && !empty($file)) {
108
+			if ($file['error'] == 0) {
109 109
 				$extension = pathinfo($file['name'], PATHINFO_EXTENSION);
110 110
 				$fileName = $file['name'];
111 111
 				$newName = md5(time().''.$fileName).'.'.$extension;
112 112
 				$type = $file['type'];
113 113
 
114
-				if(move_uploaded_file($file['tmp_name'], $uploadDir . '/' . $newName)) {
114
+				if (move_uploaded_file($file['tmp_name'], $uploadDir.'/'.$newName)) {
115 115
 					$data = array(
116 116
 						'sender_id' => $sender_id,
117 117
 						'receiver_id' => $receiver_id,
@@ -119,7 +119,7 @@  discard block
 block discarded – undo
119 119
 						'file' => $newName,
120 120
 						'type' => $type
121 121
 					);
122
-					if($id = $this->model->sendFile($data)) {
122
+					if ($id = $this->model->sendFile($data)) {
123 123
 						$lastFile = $this->model->getFileById($id);
124 124
 						$response = array('success' => true, 'file' => $lastFile);
125 125
 					} else {
@@ -154,13 +154,13 @@  discard block
 block discarded – undo
154 154
 	{
155 155
 		/* AJAX check  */
156 156
 		$http_request = $this->request->server('HTTP_X_REQUESTED_WITH');
157
-		if(empty($http_request) && strtolower($http_request) != 'xmlhttprequest') {
157
+		if (empty($http_request) && strtolower($http_request) != 'xmlhttprequest') {
158 158
 			return new Response("The request is invalid", 500);
159 159
 		}
160 160
 
161 161
 		$friend_id = $this->request->variable('friend_id', 0);
162 162
 
163
-		if($friend_id > 0) {
163
+		if ($friend_id > 0) {
164 164
 			$messages = $this->model->getMessages($friend_id);
165 165
 			return new JsonResponse($messages, 200);
166 166
 		}
@@ -171,12 +171,12 @@  discard block
 block discarded – undo
171 171
 	{
172 172
 		/* AJAX check  */
173 173
 		$http_request = $this->request->server('HTTP_X_REQUESTED_WITH');
174
-		if(empty($http_request) && strtolower($http_request) != 'xmlhttprequest') {
174
+		if (empty($http_request) && strtolower($http_request) != 'xmlhttprequest') {
175 175
 			return new Response("The request is invalid", 500);
176 176
 		}
177 177
 
178 178
 		$friend_id = $this->request->variable('friend_id', 0);
179
-		if($friend_id > 0)
179
+		if ($friend_id > 0)
180 180
 		{
181 181
 			$newVal = $this->model->updateMessagesStatus($friend_id);
182 182
 			return new JsonResponse(array('success' => true, 'newVal' => $newVal), 200);
@@ -188,12 +188,12 @@  discard block
 block discarded – undo
188 188
 	{
189 189
 		/* AJAX check  */
190 190
 		$http_request = $this->request->server('HTTP_X_REQUESTED_WITH');
191
-		if(empty($http_request) && strtolower($http_request) != 'xmlhttprequest') {
191
+		if (empty($http_request) && strtolower($http_request) != 'xmlhttprequest') {
192 192
 			return new Response("The request is invalid", 500);
193 193
 		}
194 194
 
195 195
 		$friend_id = $this->request->variable('friend_id', 0);
196
-		if($friend_id > 0)
196
+		if ($friend_id > 0)
197 197
 		{
198 198
 			$messages = $this->model->getInboxFromId($friend_id);
199 199
 			return new JsonResponse(array('success' => true, 'messages' => $messages), 200);
@@ -205,12 +205,12 @@  discard block
 block discarded – undo
205 205
 	{
206 206
 		/* AJAX check  */
207 207
 		$http_request = $this->request->server('HTTP_X_REQUESTED_WITH');
208
-		if(empty($http_request) && strtolower($http_request) != 'xmlhttprequest') {
208
+		if (empty($http_request) && strtolower($http_request) != 'xmlhttprequest') {
209 209
 			return new Response("The request is invalid", 500);
210 210
 		}
211 211
 
212 212
 		$friends = $this->model->getFriends();
213
-		$friends_online = array_filter($friends, function($friend){
213
+		$friends_online = array_filter($friends, function($friend) {
214 214
 			return $friend['user_status'] != 0;
215 215
 		});
216 216
 
@@ -226,12 +226,12 @@  discard block
 block discarded – undo
226 226
 	{
227 227
 		$emoticons = \florinp\messenger\libs\emojione::$ascii_replace;
228 228
 		$eicons = array();
229
-		foreach($emoticons as $code => $value) {
229
+		foreach ($emoticons as $code => $value) {
230 230
 			$eicons[$value] = $code;
231 231
 		}
232 232
 
233 233
 		$response = array();
234
-		foreach($eicons as $emoticon) {
234
+		foreach ($eicons as $emoticon) {
235 235
 			$item = array();
236 236
 			$item['code'] = $emoticon;
237 237
 			$item['image'] = $this->emojione->toImage($emoticon);
Please login to merge, or discard this patch.
libs/database.php 2 patches
Doc Comments   +6 added lines patch added patch discarded remove patch
@@ -17,6 +17,9 @@  discard block
 block discarded – undo
17 17
 		parent::setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
18 18
 	}
19 19
 
20
+	/**
21
+	 * @param string $sql
22
+	 */
20 23
 	public function select($sql, $array = array(), $fetchMode = PDO::FETCH_ASSOC)
21 24
 	{
22 25
 		$sth = $this->prepare($sql);
@@ -29,6 +32,9 @@  discard block
 block discarded – undo
29 32
 		return $sth->fetchAll($fetchMode);
30 33
 	}
31 34
 
35
+	/**
36
+	 * @param string $table
37
+	 */
32 38
 	public function insert($table, $data)
33 39
 	{
34 40
 		//ksort($data);
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -12,7 +12,7 @@  discard block
 block discarded – undo
12 12
 	{
13 13
 		global $phpbb_root_path;
14 14
 
15
-		$database = $phpbb_root_path . 'store/messenger.db';
15
+		$database = $phpbb_root_path.'store/messenger.db';
16 16
 		parent::__construct('sqlite:'.$database);
17 17
 		parent::setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
18 18
 	}
@@ -20,7 +20,7 @@  discard block
 block discarded – undo
20 20
 	public function select($sql, $array = array(), $fetchMode = PDO::FETCH_ASSOC)
21 21
 	{
22 22
 		$sth = $this->prepare($sql);
23
-		foreach($array as $key => $value)
23
+		foreach ($array as $key => $value)
24 24
 		{
25 25
 			$sth->bindValue("$key", $value);
26 26
 		}
@@ -38,7 +38,7 @@  discard block
 block discarded – undo
38 38
 
39 39
 		$sth = $this->prepare("INSERT INTO $table (`$fieldNames`) VALUES ($fieldValues)");
40 40
 
41
-		foreach($data as $key => $value)
41
+		foreach ($data as $key => $value)
42 42
 		{
43 43
 			$sth->bindValue(":$key", $value);
44 44
 		}
@@ -51,7 +51,7 @@  discard block
 block discarded – undo
51 51
 		ksort($data);
52 52
 
53 53
 		$fieldDetails = NULL;
54
-		foreach($data as $key=> $value) {
54
+		foreach ($data as $key=> $value) {
55 55
 			$fieldDetails .= "`$key`=:$key,";
56 56
 		}
57 57
 		$fieldDetails = rtrim($fieldDetails, ',');
Please login to merge, or discard this patch.
event/main_listener.php 3 patches
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -11,7 +11,7 @@  discard block
 block discarded – undo
11 11
 	static public function getSubscribedEvents()
12 12
 	{
13 13
 		return array(
14
-            'core.user_setup' => 'load_language_on_setup',
14
+			'core.user_setup' => 'load_language_on_setup',
15 15
 			'core.page_footer' => 'friends_list',
16 16
 			'core.page_header' => 'check_login',
17 17
 			'core.memberlist_view_profile' => 'check_friends'
@@ -109,8 +109,8 @@  discard block
 block discarded – undo
109 109
 		}
110 110
 		
111 111
 		$user_id = $event['member']['user_id'];
112
-        $sender_id = $this->user->data['user_id'];
113
-        $request = $this->friends_model->get_request_by_sender_id($sender_id);
112
+		$sender_id = $this->user->data['user_id'];
113
+		$request = $this->friends_model->get_request_by_sender_id($sender_id);
114 114
 		$check_friend = $this->friends_model->check_friend(array(
115 115
 			'user_id' => $this->user->data['user_id'],
116 116
 			'friend_id' => $user_id,
@@ -131,7 +131,7 @@  discard block
 block discarded – undo
131 131
 			'U_CHECK_REQUEST' => $check_request,
132 132
 			'U_CHECK_REQUEST_CONFIRM' => $check_request_confirm,
133 133
 			'U_CHECK_WIDGET' => $check_widget,
134
-            'U_REQUEST_ID' => $request['request_id'],
134
+			'U_REQUEST_ID' => $request['request_id'],
135 135
 			'BASE_URL' => $baseUrl
136 136
 		));
137 137
 	}
Please login to merge, or discard this patch.
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -46,21 +46,21 @@  discard block
 block discarded – undo
46 46
 	{
47 47
 		$context = new RequestContext();
48 48
 		$context->fromRequest($this->symfony_request);
49
-		$baseUrl = generate_board_url(true) . $context->getBaseUrl();
49
+		$baseUrl = generate_board_url(true).$context->getBaseUrl();
50 50
 		
51 51
 		$scriptName = $this->symfony_request->getScriptName();
52 52
 		$scriptName = substr($scriptName, -1, 1) == '/' ? '' : utf8_basename($scriptName);
53 53
 		
54
-		if($scriptName != '') {
54
+		if ($scriptName != '') {
55 55
 			$baseUrl = str_replace('/'.$scriptName, '', $baseUrl);
56 56
 		}
57 57
 		
58 58
 		$friends = $this->model->getFriends();
59
-		$friends_online = array_filter($friends, function($friend){
59
+		$friends_online = array_filter($friends, function($friend) {
60 60
 			return $friend['user_status'] != 0;
61 61
 		});
62 62
 		$this->template->assign_var('S_COUNT_FRIENDS', count($friends_online));
63
-		foreach($friends as $friend)
63
+		foreach ($friends as $friend)
64 64
 		{
65 65
 			$this->template->assign_block_vars('chat_friends', array(
66 66
 				'U_USERID' => $friend['user_id'],
@@ -88,7 +88,7 @@  discard block
 block discarded – undo
88 88
 	public function check_login()
89 89
 	{
90 90
 		$s_enable_messenger = 0;
91
-		if(in_array($this->user->data['user_type'], array(USER_NORMAL, USER_FOUNDER)))
91
+		if (in_array($this->user->data['user_type'], array(USER_NORMAL, USER_FOUNDER)))
92 92
 		{
93 93
 			$s_enable_messenger = 1;
94 94
 		}
@@ -99,12 +99,12 @@  discard block
 block discarded – undo
99 99
 	{
100 100
 		$context = new RequestContext();
101 101
 		$context->fromRequest($this->symfony_request);
102
-		$baseUrl = generate_board_url(true) . $context->getBaseUrl();
102
+		$baseUrl = generate_board_url(true).$context->getBaseUrl();
103 103
 		
104 104
 		$scriptName = $this->symfony_request->getScriptName();
105 105
 		$scriptName = substr($scriptName, -1, 1) == '/' ? '' : utf8_basename($scriptName);
106 106
 		
107
-		if($scriptName != '') {
107
+		if ($scriptName != '') {
108 108
 			$baseUrl = str_replace('/'.$scriptName, '', $baseUrl);
109 109
 		}
110 110
 		
@@ -124,7 +124,7 @@  discard block
 block discarded – undo
124 124
 			'sender_id' => $user_id
125 125
 		));
126 126
 		$check_widget = true;
127
-		if($user_id == $this->user->data['user_id']) $check_widget = false;
127
+		if ($user_id == $this->user->data['user_id']) $check_widget = false;
128 128
 		$this->template->assign_vars(array(
129 129
 			'U_USER_ID' => $user_id,
130 130
 			'U_CHECK_FRIEND' => $check_friend,
Please login to merge, or discard this patch.
Braces   +3 added lines, -1 removed lines patch added patch discarded remove patch
@@ -124,7 +124,9 @@
 block discarded – undo
124 124
 			'sender_id' => $user_id
125 125
 		));
126 126
 		$check_widget = true;
127
-		if($user_id == $this->user->data['user_id']) $check_widget = false;
127
+		if($user_id == $this->user->data['user_id']) {
128
+			$check_widget = false;
129
+		}
128 130
 		$this->template->assign_vars(array(
129 131
 			'U_USER_ID' => $user_id,
130 132
 			'U_CHECK_FRIEND' => $check_friend,
Please login to merge, or discard this patch.
ext.php 3 patches
Indentation   +60 added lines, -60 removed lines patch added patch discarded remove patch
@@ -8,13 +8,13 @@  discard block
 block discarded – undo
8 8
 
9 9
   public function enable_step($old_state)
10 10
   {
11
-    global $phpbb_root_path;
11
+	global $phpbb_root_path;
12 12
 
13
-    switch($old_state)
14
-    {
15
-      case '':
16
-        $db = new \florinp\messenger\libs\database();
17
-        $db->exec("
13
+	switch($old_state)
14
+	{
15
+	  case '':
16
+		$db = new \florinp\messenger\libs\database();
17
+		$db->exec("
18 18
           CREATE TABLE IF NOT EXISTS messages (
19 19
             `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
20 20
             `sender_id` INTEGER NOT NULL,
@@ -34,69 +34,69 @@  discard block
 block discarded – undo
34 34
           );
35 35
         ");
36 36
 
37
-        $messengerDir = $phpbb_root_path . 'store/messenger';
38
-        if(!is_dir($messengerDir)) {
39
-          mkdir($messengerDir, 0777);
40
-          $filesDir = $messengerDir . '/files';
41
-          if(!is_dir($filesDir)) {
42
-            mkdir($filesDir, 0777);
43
-          }
44
-        }
45
-        return 'notifications';
46
-      break;
47
-
48
-      case 'notifications':
49
-        $phpbb_notifications = $this->container->get('notification_manager');
50
-        $phpbb_notifications->enable_notifications('florinp.messenger.notification.type.friend_request');
51
-        return 'step2';
52
-      break;
53
-
54
-      default:
55
-        return parent::enable_step($old_state);
56
-      break;
57
-    }
37
+		$messengerDir = $phpbb_root_path . 'store/messenger';
38
+		if(!is_dir($messengerDir)) {
39
+		  mkdir($messengerDir, 0777);
40
+		  $filesDir = $messengerDir . '/files';
41
+		  if(!is_dir($filesDir)) {
42
+			mkdir($filesDir, 0777);
43
+		  }
44
+		}
45
+		return 'notifications';
46
+	  break;
47
+
48
+	  case 'notifications':
49
+		$phpbb_notifications = $this->container->get('notification_manager');
50
+		$phpbb_notifications->enable_notifications('florinp.messenger.notification.type.friend_request');
51
+		return 'step2';
52
+	  break;
53
+
54
+	  default:
55
+		return parent::enable_step($old_state);
56
+	  break;
57
+	}
58 58
 
59 59
   }
60 60
 
61 61
   public function disable_step($old_state)
62 62
   {
63
-    switch($old_state)
64
-    {
65
-      case '':
66
-        $phpbb_notifications = $this->container->get('notification_manager');
67
-        $phpbb_notifications->disable_notifications('florinp.messenger.notification.type.friend_request');
68
-        return 'notifications';
69
-      break;
70
-
71
-      default:
72
-
73
-        return parent::disable_step($old_state);
74
-      break;
75
-    }
63
+	switch($old_state)
64
+	{
65
+	  case '':
66
+		$phpbb_notifications = $this->container->get('notification_manager');
67
+		$phpbb_notifications->disable_notifications('florinp.messenger.notification.type.friend_request');
68
+		return 'notifications';
69
+	  break;
70
+
71
+	  default:
72
+
73
+		return parent::disable_step($old_state);
74
+	  break;
75
+	}
76 76
   }
77 77
 
78 78
   public function purge_step($old_state)
79 79
   {
80
-    global $phpbb_root_path;
81
-
82
-    $database = $phpbb_root_path . 'store/messenger.db';
83
-    if(is_file($database)) {
84
-      unlink($database);
85
-    }
86
-
87
-    $messengerDir = $phpbb_root_path . 'store/messenger';
88
-    if(is_dir($messengerDir)) {
89
-      $objects = scandir($messengerDir);
90
-      foreach($objects as $object) {
91
-        if($object != '.' && $object != '..') {
92
-          if (filetype($messengerDir."/".$object) == "dir") rmdir($messengerDir."/".$object); else unlink($messengerDir."/".$object);
93
-        }
94
-      }
95
-      reset($objects);
96
-      rmdir($messengerDir);
97
-    }
98
-
99
-    return parent::purge_step($old_state);
80
+	global $phpbb_root_path;
81
+
82
+	$database = $phpbb_root_path . 'store/messenger.db';
83
+	if(is_file($database)) {
84
+	  unlink($database);
85
+	}
86
+
87
+	$messengerDir = $phpbb_root_path . 'store/messenger';
88
+	if(is_dir($messengerDir)) {
89
+	  $objects = scandir($messengerDir);
90
+	  foreach($objects as $object) {
91
+		if($object != '.' && $object != '..') {
92
+		  if (filetype($messengerDir."/".$object) == "dir") rmdir($messengerDir."/".$object); else unlink($messengerDir."/".$object);
93
+		}
94
+	  }
95
+	  reset($objects);
96
+	  rmdir($messengerDir);
97
+	}
98
+
99
+	return parent::purge_step($old_state);
100 100
 
101 101
   }
102 102
 
Please login to merge, or discard this patch.
Spacing   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -10,7 +10,7 @@  discard block
 block discarded – undo
10 10
   {
11 11
     global $phpbb_root_path;
12 12
 
13
-    switch($old_state)
13
+    switch ($old_state)
14 14
     {
15 15
       case '':
16 16
         $db = new \florinp\messenger\libs\database();
@@ -34,11 +34,11 @@  discard block
 block discarded – undo
34 34
           );
35 35
         ");
36 36
 
37
-        $messengerDir = $phpbb_root_path . 'store/messenger';
38
-        if(!is_dir($messengerDir)) {
37
+        $messengerDir = $phpbb_root_path.'store/messenger';
38
+        if (!is_dir($messengerDir)) {
39 39
           mkdir($messengerDir, 0777);
40
-          $filesDir = $messengerDir . '/files';
41
-          if(!is_dir($filesDir)) {
40
+          $filesDir = $messengerDir.'/files';
41
+          if (!is_dir($filesDir)) {
42 42
             mkdir($filesDir, 0777);
43 43
           }
44 44
         }
@@ -60,7 +60,7 @@  discard block
 block discarded – undo
60 60
 
61 61
   public function disable_step($old_state)
62 62
   {
63
-    switch($old_state)
63
+    switch ($old_state)
64 64
     {
65 65
       case '':
66 66
         $phpbb_notifications = $this->container->get('notification_manager');
@@ -79,16 +79,16 @@  discard block
 block discarded – undo
79 79
   {
80 80
     global $phpbb_root_path;
81 81
 
82
-    $database = $phpbb_root_path . 'store/messenger.db';
83
-    if(is_file($database)) {
82
+    $database = $phpbb_root_path.'store/messenger.db';
83
+    if (is_file($database)) {
84 84
       unlink($database);
85 85
     }
86 86
 
87
-    $messengerDir = $phpbb_root_path . 'store/messenger';
88
-    if(is_dir($messengerDir)) {
87
+    $messengerDir = $phpbb_root_path.'store/messenger';
88
+    if (is_dir($messengerDir)) {
89 89
       $objects = scandir($messengerDir);
90
-      foreach($objects as $object) {
91
-        if($object != '.' && $object != '..') {
90
+      foreach ($objects as $object) {
91
+        if ($object != '.' && $object != '..') {
92 92
           if (filetype($messengerDir."/".$object) == "dir") rmdir($messengerDir."/".$object); else unlink($messengerDir."/".$object);
93 93
         }
94 94
       }
Please login to merge, or discard this patch.
Braces   +5 added lines, -1 removed lines patch added patch discarded remove patch
@@ -89,7 +89,11 @@
 block discarded – undo
89 89
       $objects = scandir($messengerDir);
90 90
       foreach($objects as $object) {
91 91
         if($object != '.' && $object != '..') {
92
-          if (filetype($messengerDir."/".$object) == "dir") rmdir($messengerDir."/".$object); else unlink($messengerDir."/".$object);
92
+          if (filetype($messengerDir."/".$object) == "dir") {
93
+          	rmdir($messengerDir."/".$object);
94
+          } else {
95
+          	unlink($messengerDir."/".$object);
96
+          }
93 97
         }
94 98
       }
95 99
       reset($objects);
Please login to merge, or discard this patch.
libs/emojione.php 3 patches
Indentation   +2571 added lines, -2571 removed lines patch added patch discarded remove patch
@@ -5,2604 +5,2604 @@
 block discarded – undo
5 5
 class emojione {
6 6
     
7 7
     
8
-    static $ascii = true; // convert ascii smileys?
9
-    static $unicodeAlt = true; // use the unicode char as the alt attribute (makes copy and pasting the resulting text better)
10
-    static $imageType = 'png';
11
-    static $cacheBustParam = '?v=1.2.4';
12
-    static $sprites = false;
13
-    static $imagePathPNG = '//cdn.jsdelivr.net/emojione/assets/png/';
14
-    static $imagePathSVG = '//cdn.jsdelivr.net/emojione/assets/svg/';
15
-    static $imagePathSVGSprites = './../../assets/sprites/emojione.sprites.svg';
16
-    static $unicode_replaceWith = false;
17
-    static $ignoredRegexp = '<object[^>]*>.*?<\/object>|<span[^>]*>.*?<\/span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>';
18
-    static $unicodeRegexp = '([#0-9](?>\\xEF\\xB8\\x8F)?\\xE2\\x83\\xA3|\\xC2[\\xA9\\xAE]|\\xE2..(?>\\xEF\\xB8\\x8F)?|\\xE3(?>\\x80[\\xB0\\xBD]|\\x8A[\\x97\\x99])(?>\\xEF\\xB8\\x8F)?|\\xF0\\x9F(?>[\\x80-\\x86].(?>\\xEF\\xB8\\x8F)?|\\x87.\\xF0\\x9F\\x87.|..))';
19
-    static $shortcodeRegexp = ':([-+\\w]+):';
8
+	static $ascii = true; // convert ascii smileys?
9
+	static $unicodeAlt = true; // use the unicode char as the alt attribute (makes copy and pasting the resulting text better)
10
+	static $imageType = 'png';
11
+	static $cacheBustParam = '?v=1.2.4';
12
+	static $sprites = false;
13
+	static $imagePathPNG = '//cdn.jsdelivr.net/emojione/assets/png/';
14
+	static $imagePathSVG = '//cdn.jsdelivr.net/emojione/assets/svg/';
15
+	static $imagePathSVGSprites = './../../assets/sprites/emojione.sprites.svg';
16
+	static $unicode_replaceWith = false;
17
+	static $ignoredRegexp = '<object[^>]*>.*?<\/object>|<span[^>]*>.*?<\/span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>';
18
+	static $unicodeRegexp = '([#0-9](?>\\xEF\\xB8\\x8F)?\\xE2\\x83\\xA3|\\xC2[\\xA9\\xAE]|\\xE2..(?>\\xEF\\xB8\\x8F)?|\\xE3(?>\\x80[\\xB0\\xBD]|\\x8A[\\x97\\x99])(?>\\xEF\\xB8\\x8F)?|\\xF0\\x9F(?>[\\x80-\\x86].(?>\\xEF\\xB8\\x8F)?|\\x87.\\xF0\\x9F\\x87.|..))';
19
+	static $shortcodeRegexp = ':([-+\\w]+):';
20 20
 
21
-    static $shortcode_replace = Array(
22
-        ':hash:' => '0023-20e3',
23
-        ':zero:' => '0030-20e3',
24
-        ':one:' => '0031-20e3',
25
-        ':two:' => '0032-20e3',
26
-        ':three:' => '0033-20e3',
27
-        ':four:' => '0034-20e3',
28
-        ':five:' => '0035-20e3',
29
-        ':six:' => '0036-20e3',
30
-        ':seven:' => '0037-20e3',
31
-        ':eight:' => '0038-20e3',
32
-        ':nine:' => '0039-20e3',
33
-        ':copyright:' => '00a9',
34
-        ':registered:' => '00ae',
35
-        ':bangbang:' => '203c',
36
-        ':interrobang:' => '2049',
37
-        ':tm:' => '2122',
38
-        ':information_source:' => '2139',
39
-        ':left_right_arrow:' => '2194',
40
-        ':arrow_up_down:' => '2195',
41
-        ':arrow_upper_left:' => '2196',
42
-        ':arrow_upper_right:' => '2197',
43
-        ':arrow_lower_right:' => '2198',
44
-        ':arrow_lower_left:' => '2199',
45
-        ':leftwards_arrow_with_hook:' => '21a9',
46
-        ':arrow_right_hook:' => '21aa',
47
-        ':watch:' => '231a',
48
-        ':hourglass:' => '231b',
49
-        ':fast_forward:' => '23e9',
50
-        ':rewind:' => '23ea',
51
-        ':arrow_double_up:' => '23eb',
52
-        ':arrow_double_down:' => '23ec',
53
-        ':alarm_clock:' => '23f0',
54
-        ':hourglass_flowing_sand:' => '23f3',
55
-        ':m:' => '24c2',
56
-        ':black_small_square:' => '25aa',
57
-        ':white_small_square:' => '25ab',
58
-        ':arrow_forward:' => '25b6',
59
-        ':arrow_backward:' => '25c0',
60
-        ':white_medium_square:' => '25fb',
61
-        ':black_medium_square:' => '25fc',
62
-        ':white_medium_small_square:' => '25fd',
63
-        ':black_medium_small_square:' => '25fe',
64
-        ':sunny:' => '2600',
65
-        ':cloud:' => '2601',
66
-        ':telephone:' => '260e',
67
-        ':ballot_box_with_check:' => '2611',
68
-        ':umbrella:' => '2614',
69
-        ':coffee:' => '2615',
70
-        ':point_up:' => '261d',
71
-        ':relaxed:' => '263a',
72
-        ':aries:' => '2648',
73
-        ':taurus:' => '2649',
74
-        ':gemini:' => '264a',
75
-        ':cancer:' => '264b',
76
-        ':leo:' => '264c',
77
-        ':virgo:' => '264d',
78
-        ':libra:' => '264e',
79
-        ':scorpius:' => '264f',
80
-        ':sagittarius:' => '2650',
81
-        ':capricorn:' => '2651',
82
-        ':aquarius:' => '2652',
83
-        ':pisces:' => '2653',
84
-        ':spades:' => '2660',
85
-        ':clubs:' => '2663',
86
-        ':hearts:' => '2665',
87
-        ':diamonds:' => '2666',
88
-        ':hotsprings:' => '2668',
89
-        ':recycle:' => '267b',
90
-        ':wheelchair:' => '267f',
91
-        ':anchor:' => '2693',
92
-        ':warning:' => '26a0',
93
-        ':zap:' => '26a1',
94
-        ':white_circle:' => '26aa',
95
-        ':black_circle:' => '26ab',
96
-        ':soccer:' => '26bd',
97
-        ':baseball:' => '26be',
98
-        ':snowman:' => '26c4',
99
-        ':partly_sunny:' => '26c5',
100
-        ':ophiuchus:' => '26ce',
101
-        ':no_entry:' => '26d4',
102
-        ':church:' => '26ea',
103
-        ':fountain:' => '26f2',
104
-        ':golf:' => '26f3',
105
-        ':sailboat:' => '26f5',
106
-        ':tent:' => '26fa',
107
-        ':fuelpump:' => '26fd',
108
-        ':scissors:' => '2702',
109
-        ':white_check_mark:' => '2705',
110
-        ':airplane:' => '2708',
111
-        ':envelope:' => '2709',
112
-        ':fist:' => '270a',
113
-        ':raised_hand:' => '270b',
114
-        ':v:' => '270c',
115
-        ':pencil2:' => '270f',
116
-        ':black_nib:' => '2712',
117
-        ':heavy_check_mark:' => '2714',
118
-        ':heavy_multiplication_x:' => '2716',
119
-        ':sparkles:' => '2728',
120
-        ':eight_spoked_asterisk:' => '2733',
121
-        ':eight_pointed_black_star:' => '2734',
122
-        ':snowflake:' => '2744',
123
-        ':sparkle:' => '2747',
124
-        ':x:' => '274c',
125
-        ':negative_squared_cross_mark:' => '274e',
126
-        ':question:' => '2753',
127
-        ':grey_question:' => '2754',
128
-        ':grey_exclamation:' => '2755',
129
-        ':exclamation:' => '2757',
130
-        ':heart:' => '2764',
131
-        ':heavy_plus_sign:' => '2795',
132
-        ':heavy_minus_sign:' => '2796',
133
-        ':heavy_division_sign:' => '2797',
134
-        ':arrow_right:' => '27a1',
135
-        ':curly_loop:' => '27b0',
136
-        ':arrow_heading_up:' => '2934',
137
-        ':arrow_heading_down:' => '2935',
138
-        ':arrow_left:' => '2b05',
139
-        ':arrow_up:' => '2b06',
140
-        ':arrow_down:' => '2b07',
141
-        ':black_large_square:' => '2b1b',
142
-        ':white_large_square:' => '2b1c',
143
-        ':star:' => '2b50',
144
-        ':o:' => '2b55',
145
-        ':wavy_dash:' => '3030',
146
-        ':part_alternation_mark:' => '303d',
147
-        ':congratulations:' => '3297',
148
-        ':secret:' => '3299',
149
-        ':mahjong:' => '1f004',
150
-        ':black_joker:' => '1f0cf',
151
-        ':a:' => '1f170',
152
-        ':b:' => '1f171',
153
-        ':o2:' => '1f17e',
154
-        ':parking:' => '1f17f',
155
-        ':ab:' => '1f18e',
156
-        ':cl:' => '1f191',
157
-        ':cool:' => '1f192',
158
-        ':free:' => '1f193',
159
-        ':id:' => '1f194',
160
-        ':new:' => '1f195',
161
-        ':ng:' => '1f196',
162
-        ':ok:' => '1f197',
163
-        ':sos:' => '1f198',
164
-        ':up:' => '1f199',
165
-        ':vs:' => '1f19a',
166
-        ':cn:' => '1f1e8-1f1f3',
167
-        ':de:' => '1f1e9-1f1ea',
168
-        ':es:' => '1f1ea-1f1f8',
169
-        ':fr:' => '1f1eb-1f1f7',
170
-        ':gb:' => '1f1ec-1f1e7',
171
-        ':it:' => '1f1ee-1f1f9',
172
-        ':jp:' => '1f1ef-1f1f5',
173
-        ':kr:' => '1f1f0-1f1f7',
174
-        ':us:' => '1f1fa-1f1f8',
175
-        ':ru:' => '1f1f7-1f1fa',
176
-        ':koko:' => '1f201',
177
-        ':sa:' => '1f202',
178
-        ':u7121:' => '1f21a',
179
-        ':u6307:' => '1f22f',
180
-        ':u7981:' => '1f232',
181
-        ':u7a7a:' => '1f233',
182
-        ':u5408:' => '1f234',
183
-        ':u6e80:' => '1f235',
184
-        ':u6709:' => '1f236',
185
-        ':u6708:' => '1f237',
186
-        ':u7533:' => '1f238',
187
-        ':u5272:' => '1f239',
188
-        ':u55b6:' => '1f23a',
189
-        ':ideograph_advantage:' => '1f250',
190
-        ':accept:' => '1f251',
191
-        ':cyclone:' => '1f300',
192
-        ':foggy:' => '1f301',
193
-        ':closed_umbrella:' => '1f302',
194
-        ':night_with_stars:' => '1f303',
195
-        ':sunrise_over_mountains:' => '1f304',
196
-        ':sunrise:' => '1f305',
197
-        ':city_dusk:' => '1f306',
198
-        ':city_sunset:' => '1f307',
199
-        ':city_sunrise:' => '1f307',
200
-        ':rainbow:' => '1f308',
201
-        ':bridge_at_night:' => '1f309',
202
-        ':ocean:' => '1f30a',
203
-        ':volcano:' => '1f30b',
204
-        ':milky_way:' => '1f30c',
205
-        ':earth_asia:' => '1f30f',
206
-        ':new_moon:' => '1f311',
207
-        ':first_quarter_moon:' => '1f313',
208
-        ':waxing_gibbous_moon:' => '1f314',
209
-        ':full_moon:' => '1f315',
210
-        ':crescent_moon:' => '1f319',
211
-        ':first_quarter_moon_with_face:' => '1f31b',
212
-        ':star2:' => '1f31f',
213
-        ':stars:' => '1f320',
214
-        ':chestnut:' => '1f330',
215
-        ':seedling:' => '1f331',
216
-        ':palm_tree:' => '1f334',
217
-        ':cactus:' => '1f335',
218
-        ':tulip:' => '1f337',
219
-        ':cherry_blossom:' => '1f338',
220
-        ':rose:' => '1f339',
221
-        ':hibiscus:' => '1f33a',
222
-        ':sunflower:' => '1f33b',
223
-        ':blossom:' => '1f33c',
224
-        ':corn:' => '1f33d',
225
-        ':ear_of_rice:' => '1f33e',
226
-        ':herb:' => '1f33f',
227
-        ':four_leaf_clover:' => '1f340',
228
-        ':maple_leaf:' => '1f341',
229
-        ':fallen_leaf:' => '1f342',
230
-        ':leaves:' => '1f343',
231
-        ':mushroom:' => '1f344',
232
-        ':tomato:' => '1f345',
233
-        ':eggplant:' => '1f346',
234
-        ':grapes:' => '1f347',
235
-        ':melon:' => '1f348',
236
-        ':watermelon:' => '1f349',
237
-        ':tangerine:' => '1f34a',
238
-        ':banana:' => '1f34c',
239
-        ':pineapple:' => '1f34d',
240
-        ':apple:' => '1f34e',
241
-        ':green_apple:' => '1f34f',
242
-        ':peach:' => '1f351',
243
-        ':cherries:' => '1f352',
244
-        ':strawberry:' => '1f353',
245
-        ':hamburger:' => '1f354',
246
-        ':pizza:' => '1f355',
247
-        ':meat_on_bone:' => '1f356',
248
-        ':poultry_leg:' => '1f357',
249
-        ':rice_cracker:' => '1f358',
250
-        ':rice_ball:' => '1f359',
251
-        ':rice:' => '1f35a',
252
-        ':curry:' => '1f35b',
253
-        ':ramen:' => '1f35c',
254
-        ':spaghetti:' => '1f35d',
255
-        ':bread:' => '1f35e',
256
-        ':fries:' => '1f35f',
257
-        ':sweet_potato:' => '1f360',
258
-        ':dango:' => '1f361',
259
-        ':oden:' => '1f362',
260
-        ':sushi:' => '1f363',
261
-        ':fried_shrimp:' => '1f364',
262
-        ':fish_cake:' => '1f365',
263
-        ':icecream:' => '1f366',
264
-        ':shaved_ice:' => '1f367',
265
-        ':ice_cream:' => '1f368',
266
-        ':doughnut:' => '1f369',
267
-        ':cookie:' => '1f36a',
268
-        ':chocolate_bar:' => '1f36b',
269
-        ':candy:' => '1f36c',
270
-        ':lollipop:' => '1f36d',
271
-        ':custard:' => '1f36e',
272
-        ':honey_pot:' => '1f36f',
273
-        ':cake:' => '1f370',
274
-        ':bento:' => '1f371',
275
-        ':stew:' => '1f372',
276
-        ':egg:' => '1f373',
277
-        ':fork_and_knife:' => '1f374',
278
-        ':tea:' => '1f375',
279
-        ':sake:' => '1f376',
280
-        ':wine_glass:' => '1f377',
281
-        ':cocktail:' => '1f378',
282
-        ':tropical_drink:' => '1f379',
283
-        ':beer:' => '1f37a',
284
-        ':beers:' => '1f37b',
285
-        ':ribbon:' => '1f380',
286
-        ':gift:' => '1f381',
287
-        ':birthday:' => '1f382',
288
-        ':jack_o_lantern:' => '1f383',
289
-        ':christmas_tree:' => '1f384',
290
-        ':santa:' => '1f385',
291
-        ':fireworks:' => '1f386',
292
-        ':sparkler:' => '1f387',
293
-        ':balloon:' => '1f388',
294
-        ':tada:' => '1f389',
295
-        ':confetti_ball:' => '1f38a',
296
-        ':tanabata_tree:' => '1f38b',
297
-        ':crossed_flags:' => '1f38c',
298
-        ':bamboo:' => '1f38d',
299
-        ':dolls:' => '1f38e',
300
-        ':flags:' => '1f38f',
301
-        ':wind_chime:' => '1f390',
302
-        ':rice_scene:' => '1f391',
303
-        ':school_satchel:' => '1f392',
304
-        ':mortar_board:' => '1f393',
305
-        ':carousel_horse:' => '1f3a0',
306
-        ':ferris_wheel:' => '1f3a1',
307
-        ':roller_coaster:' => '1f3a2',
308
-        ':fishing_pole_and_fish:' => '1f3a3',
309
-        ':microphone:' => '1f3a4',
310
-        ':movie_camera:' => '1f3a5',
311
-        ':cinema:' => '1f3a6',
312
-        ':headphones:' => '1f3a7',
313
-        ':art:' => '1f3a8',
314
-        ':tophat:' => '1f3a9',
315
-        ':circus_tent:' => '1f3aa',
316
-        ':ticket:' => '1f3ab',
317
-        ':clapper:' => '1f3ac',
318
-        ':performing_arts:' => '1f3ad',
319
-        ':video_game:' => '1f3ae',
320
-        ':dart:' => '1f3af',
321
-        ':slot_machine:' => '1f3b0',
322
-        ':8ball:' => '1f3b1',
323
-        ':game_die:' => '1f3b2',
324
-        ':bowling:' => '1f3b3',
325
-        ':flower_playing_cards:' => '1f3b4',
326
-        ':musical_note:' => '1f3b5',
327
-        ':notes:' => '1f3b6',
328
-        ':saxophone:' => '1f3b7',
329
-        ':guitar:' => '1f3b8',
330
-        ':musical_keyboard:' => '1f3b9',
331
-        ':trumpet:' => '1f3ba',
332
-        ':violin:' => '1f3bb',
333
-        ':musical_score:' => '1f3bc',
334
-        ':running_shirt_with_sash:' => '1f3bd',
335
-        ':tennis:' => '1f3be',
336
-        ':ski:' => '1f3bf',
337
-        ':basketball:' => '1f3c0',
338
-        ':checkered_flag:' => '1f3c1',
339
-        ':snowboarder:' => '1f3c2',
340
-        ':runner:' => '1f3c3',
341
-        ':surfer:' => '1f3c4',
342
-        ':trophy:' => '1f3c6',
343
-        ':football:' => '1f3c8',
344
-        ':swimmer:' => '1f3ca',
345
-        ':house:' => '1f3e0',
346
-        ':house_with_garden:' => '1f3e1',
347
-        ':office:' => '1f3e2',
348
-        ':post_office:' => '1f3e3',
349
-        ':hospital:' => '1f3e5',
350
-        ':bank:' => '1f3e6',
351
-        ':atm:' => '1f3e7',
352
-        ':hotel:' => '1f3e8',
353
-        ':love_hotel:' => '1f3e9',
354
-        ':convenience_store:' => '1f3ea',
355
-        ':school:' => '1f3eb',
356
-        ':department_store:' => '1f3ec',
357
-        ':factory:' => '1f3ed',
358
-        ':izakaya_lantern:' => '1f3ee',
359
-        ':japanese_castle:' => '1f3ef',
360
-        ':european_castle:' => '1f3f0',
361
-        ':snail:' => '1f40c',
362
-        ':snake:' => '1f40d',
363
-        ':racehorse:' => '1f40e',
364
-        ':sheep:' => '1f411',
365
-        ':monkey:' => '1f412',
366
-        ':chicken:' => '1f414',
367
-        ':boar:' => '1f417',
368
-        ':elephant:' => '1f418',
369
-        ':octopus:' => '1f419',
370
-        ':shell:' => '1f41a',
371
-        ':bug:' => '1f41b',
372
-        ':ant:' => '1f41c',
373
-        ':bee:' => '1f41d',
374
-        ':beetle:' => '1f41e',
375
-        ':fish:' => '1f41f',
376
-        ':tropical_fish:' => '1f420',
377
-        ':blowfish:' => '1f421',
378
-        ':turtle:' => '1f422',
379
-        ':hatching_chick:' => '1f423',
380
-        ':baby_chick:' => '1f424',
381
-        ':hatched_chick:' => '1f425',
382
-        ':bird:' => '1f426',
383
-        ':penguin:' => '1f427',
384
-        ':koala:' => '1f428',
385
-        ':poodle:' => '1f429',
386
-        ':camel:' => '1f42b',
387
-        ':dolphin:' => '1f42c',
388
-        ':mouse:' => '1f42d',
389
-        ':cow:' => '1f42e',
390
-        ':tiger:' => '1f42f',
391
-        ':rabbit:' => '1f430',
392
-        ':cat:' => '1f431',
393
-        ':dragon_face:' => '1f432',
394
-        ':whale:' => '1f433',
395
-        ':horse:' => '1f434',
396
-        ':monkey_face:' => '1f435',
397
-        ':dog:' => '1f436',
398
-        ':pig:' => '1f437',
399
-        ':frog:' => '1f438',
400
-        ':hamster:' => '1f439',
401
-        ':wolf:' => '1f43a',
402
-        ':bear:' => '1f43b',
403
-        ':panda_face:' => '1f43c',
404
-        ':pig_nose:' => '1f43d',
405
-        ':feet:' => '1f43e',
406
-        ':eyes:' => '1f440',
407
-        ':ear:' => '1f442',
408
-        ':nose:' => '1f443',
409
-        ':lips:' => '1f444',
410
-        ':tongue:' => '1f445',
411
-        ':point_up_2:' => '1f446',
412
-        ':point_down:' => '1f447',
413
-        ':point_left:' => '1f448',
414
-        ':point_right:' => '1f449',
415
-        ':punch:' => '1f44a',
416
-        ':wave:' => '1f44b',
417
-        ':ok_hand:' => '1f44c',
418
-        ':thumbsup:' => '1f44d',
419
-        ':+1:' => '1f44d',
420
-        ':thumbsdown:' => '1f44e',
421
-        ':-1:' => '1f44e',
422
-        ':clap:' => '1f44f',
423
-        ':open_hands:' => '1f450',
424
-        ':crown:' => '1f451',
425
-        ':womans_hat:' => '1f452',
426
-        ':eyeglasses:' => '1f453',
427
-        ':necktie:' => '1f454',
428
-        ':shirt:' => '1f455',
429
-        ':jeans:' => '1f456',
430
-        ':dress:' => '1f457',
431
-        ':kimono:' => '1f458',
432
-        ':bikini:' => '1f459',
433
-        ':womans_clothes:' => '1f45a',
434
-        ':purse:' => '1f45b',
435
-        ':handbag:' => '1f45c',
436
-        ':pouch:' => '1f45d',
437
-        ':mans_shoe:' => '1f45e',
438
-        ':athletic_shoe:' => '1f45f',
439
-        ':high_heel:' => '1f460',
440
-        ':sandal:' => '1f461',
441
-        ':boot:' => '1f462',
442
-        ':footprints:' => '1f463',
443
-        ':bust_in_silhouette:' => '1f464',
444
-        ':boy:' => '1f466',
445
-        ':girl:' => '1f467',
446
-        ':man:' => '1f468',
447
-        ':woman:' => '1f469',
448
-        ':family:' => '1f46a',
449
-        ':couple:' => '1f46b',
450
-        ':cop:' => '1f46e',
451
-        ':dancers:' => '1f46f',
452
-        ':bride_with_veil:' => '1f470',
453
-        ':person_with_blond_hair:' => '1f471',
454
-        ':man_with_gua_pi_mao:' => '1f472',
455
-        ':man_with_turban:' => '1f473',
456
-        ':older_man:' => '1f474',
457
-        ':older_woman:' => '1f475',
458
-        ':grandma:' => '1f475',
459
-        ':baby:' => '1f476',
460
-        ':construction_worker:' => '1f477',
461
-        ':princess:' => '1f478',
462
-        ':japanese_ogre:' => '1f479',
463
-        ':japanese_goblin:' => '1f47a',
464
-        ':ghost:' => '1f47b',
465
-        ':angel:' => '1f47c',
466
-        ':alien:' => '1f47d',
467
-        ':space_invader:' => '1f47e',
468
-        ':imp:' => '1f47f',
469
-        ':skull:' => '1f480',
470
-        ':skeleton:' => '1f480',
471
-        ':card_index:' => '1f4c7',
472
-        ':information_desk_person:' => '1f481',
473
-        ':guardsman:' => '1f482',
474
-        ':dancer:' => '1f483',
475
-        ':lipstick:' => '1f484',
476
-        ':nail_care:' => '1f485',
477
-        ':ledger:' => '1f4d2',
478
-        ':massage:' => '1f486',
479
-        ':notebook:' => '1f4d3',
480
-        ':haircut:' => '1f487',
481
-        ':notebook_with_decorative_cover:' => '1f4d4',
482
-        ':barber:' => '1f488',
483
-        ':closed_book:' => '1f4d5',
484
-        ':syringe:' => '1f489',
485
-        ':book:' => '1f4d6',
486
-        ':pill:' => '1f48a',
487
-        ':green_book:' => '1f4d7',
488
-        ':kiss:' => '1f48b',
489
-        ':blue_book:' => '1f4d8',
490
-        ':love_letter:' => '1f48c',
491
-        ':orange_book:' => '1f4d9',
492
-        ':ring:' => '1f48d',
493
-        ':books:' => '1f4da',
494
-        ':gem:' => '1f48e',
495
-        ':name_badge:' => '1f4db',
496
-        ':couplekiss:' => '1f48f',
497
-        ':scroll:' => '1f4dc',
498
-        ':bouquet:' => '1f490',
499
-        ':pencil:' => '1f4dd',
500
-        ':couple_with_heart:' => '1f491',
501
-        ':telephone_receiver:' => '1f4de',
502
-        ':wedding:' => '1f492',
503
-        ':pager:' => '1f4df',
504
-        ':fax:' => '1f4e0',
505
-        ':heartbeat:' => '1f493',
506
-        ':satellite:' => '1f4e1',
507
-        ':loudspeaker:' => '1f4e2',
508
-        ':broken_heart:' => '1f494',
509
-        ':mega:' => '1f4e3',
510
-        ':outbox_tray:' => '1f4e4',
511
-        ':two_hearts:' => '1f495',
512
-        ':inbox_tray:' => '1f4e5',
513
-        ':package:' => '1f4e6',
514
-        ':sparkling_heart:' => '1f496',
515
-        ':e-mail:' => '1f4e7',
516
-        ':email:' => '1f4e7',
517
-        ':incoming_envelope:' => '1f4e8',
518
-        ':heartpulse:' => '1f497',
519
-        ':envelope_with_arrow:' => '1f4e9',
520
-        ':mailbox_closed:' => '1f4ea',
521
-        ':cupid:' => '1f498',
522
-        ':mailbox:' => '1f4eb',
523
-        ':postbox:' => '1f4ee',
524
-        ':blue_heart:' => '1f499',
525
-        ':newspaper:' => '1f4f0',
526
-        ':iphone:' => '1f4f1',
527
-        ':green_heart:' => '1f49a',
528
-        ':calling:' => '1f4f2',
529
-        ':vibration_mode:' => '1f4f3',
530
-        ':yellow_heart:' => '1f49b',
531
-        ':mobile_phone_off:' => '1f4f4',
532
-        ':signal_strength:' => '1f4f6',
533
-        ':purple_heart:' => '1f49c',
534
-        ':camera:' => '1f4f7',
535
-        ':video_camera:' => '1f4f9',
536
-        ':gift_heart:' => '1f49d',
537
-        ':tv:' => '1f4fa',
538
-        ':radio:' => '1f4fb',
539
-        ':revolving_hearts:' => '1f49e',
540
-        ':vhs:' => '1f4fc',
541
-        ':arrows_clockwise:' => '1f503',
542
-        ':heart_decoration:' => '1f49f',
543
-        ':loud_sound:' => '1f50a',
544
-        ':battery:' => '1f50b',
545
-        ':diamond_shape_with_a_dot_inside:' => '1f4a0',
546
-        ':electric_plug:' => '1f50c',
547
-        ':mag:' => '1f50d',
548
-        ':bulb:' => '1f4a1',
549
-        ':mag_right:' => '1f50e',
550
-        ':lock_with_ink_pen:' => '1f50f',
551
-        ':anger:' => '1f4a2',
552
-        ':closed_lock_with_key:' => '1f510',
553
-        ':key:' => '1f511',
554
-        ':bomb:' => '1f4a3',
555
-        ':lock:' => '1f512',
556
-        ':unlock:' => '1f513',
557
-        ':zzz:' => '1f4a4',
558
-        ':bell:' => '1f514',
559
-        ':bookmark:' => '1f516',
560
-        ':boom:' => '1f4a5',
561
-        ':link:' => '1f517',
562
-        ':radio_button:' => '1f518',
563
-        ':sweat_drops:' => '1f4a6',
564
-        ':back:' => '1f519',
565
-        ':end:' => '1f51a',
566
-        ':droplet:' => '1f4a7',
567
-        ':on:' => '1f51b',
568
-        ':soon:' => '1f51c',
569
-        ':dash:' => '1f4a8',
570
-        ':top:' => '1f51d',
571
-        ':underage:' => '1f51e',
572
-        ':poop:' => '1f4a9',
573
-        ':shit:' => '1f4a9',
574
-        ':hankey:' => '1f4a9',
575
-        ':poo:' => '1f4a9',
576
-        ':keycap_ten:' => '1f51f',
577
-        ':muscle:' => '1f4aa',
578
-        ':capital_abcd:' => '1f520',
579
-        ':abcd:' => '1f521',
580
-        ':dizzy:' => '1f4ab',
581
-        ':1234:' => '1f522',
582
-        ':symbols:' => '1f523',
583
-        ':speech_balloon:' => '1f4ac',
584
-        ':abc:' => '1f524',
585
-        ':fire:' => '1f525',
586
-        ':flame:' => '1f525',
587
-        ':white_flower:' => '1f4ae',
588
-        ':flashlight:' => '1f526',
589
-        ':wrench:' => '1f527',
590
-        ':100:' => '1f4af',
591
-        ':hammer:' => '1f528',
592
-        ':nut_and_bolt:' => '1f529',
593
-        ':moneybag:' => '1f4b0',
594
-        ':knife:' => '1f52a',
595
-        ':gun:' => '1f52b',
596
-        ':currency_exchange:' => '1f4b1',
597
-        ':crystal_ball:' => '1f52e',
598
-        ':heavy_dollar_sign:' => '1f4b2',
599
-        ':six_pointed_star:' => '1f52f',
600
-        ':credit_card:' => '1f4b3',
601
-        ':beginner:' => '1f530',
602
-        ':trident:' => '1f531',
603
-        ':yen:' => '1f4b4',
604
-        ':black_square_button:' => '1f532',
605
-        ':white_square_button:' => '1f533',
606
-        ':dollar:' => '1f4b5',
607
-        ':red_circle:' => '1f534',
608
-        ':large_blue_circle:' => '1f535',
609
-        ':money_with_wings:' => '1f4b8',
610
-        ':large_orange_diamond:' => '1f536',
611
-        ':large_blue_diamond:' => '1f537',
612
-        ':chart:' => '1f4b9',
613
-        ':small_orange_diamond:' => '1f538',
614
-        ':small_blue_diamond:' => '1f539',
615
-        ':seat:' => '1f4ba',
616
-        ':small_red_triangle:' => '1f53a',
617
-        ':small_red_triangle_down:' => '1f53b',
618
-        ':computer:' => '1f4bb',
619
-        ':arrow_up_small:' => '1f53c',
620
-        ':briefcase:' => '1f4bc',
621
-        ':arrow_down_small:' => '1f53d',
622
-        ':clock1:' => '1f550',
623
-        ':minidisc:' => '1f4bd',
624
-        ':clock2:' => '1f551',
625
-        ':floppy_disk:' => '1f4be',
626
-        ':clock3:' => '1f552',
627
-        ':cd:' => '1f4bf',
628
-        ':clock4:' => '1f553',
629
-        ':dvd:' => '1f4c0',
630
-        ':clock5:' => '1f554',
631
-        ':clock6:' => '1f555',
632
-        ':file_folder:' => '1f4c1',
633
-        ':clock7:' => '1f556',
634
-        ':clock8:' => '1f557',
635
-        ':open_file_folder:' => '1f4c2',
636
-        ':clock9:' => '1f558',
637
-        ':clock10:' => '1f559',
638
-        ':page_with_curl:' => '1f4c3',
639
-        ':clock11:' => '1f55a',
640
-        ':clock12:' => '1f55b',
641
-        ':page_facing_up:' => '1f4c4',
642
-        ':mount_fuji:' => '1f5fb',
643
-        ':tokyo_tower:' => '1f5fc',
644
-        ':date:' => '1f4c5',
645
-        ':statue_of_liberty:' => '1f5fd',
646
-        ':japan:' => '1f5fe',
647
-        ':calendar:' => '1f4c6',
648
-        ':moyai:' => '1f5ff',
649
-        ':grin:' => '1f601',
650
-        ':joy:' => '1f602',
651
-        ':smiley:' => '1f603',
652
-        ':chart_with_upwards_trend:' => '1f4c8',
653
-        ':smile:' => '1f604',
654
-        ':sweat_smile:' => '1f605',
655
-        ':chart_with_downwards_trend:' => '1f4c9',
656
-        ':laughing:' => '1f606',
657
-        ':satisfied:' => '1f606',
658
-        ':wink:' => '1f609',
659
-        ':bar_chart:' => '1f4ca',
660
-        ':blush:' => '1f60a',
661
-        ':yum:' => '1f60b',
662
-        ':clipboard:' => '1f4cb',
663
-        ':relieved:' => '1f60c',
664
-        ':heart_eyes:' => '1f60d',
665
-        ':pushpin:' => '1f4cc',
666
-        ':smirk:' => '1f60f',
667
-        ':unamused:' => '1f612',
668
-        ':round_pushpin:' => '1f4cd',
669
-        ':sweat:' => '1f613',
670
-        ':pensive:' => '1f614',
671
-        ':paperclip:' => '1f4ce',
672
-        ':confounded:' => '1f616',
673
-        ':kissing_heart:' => '1f618',
674
-        ':straight_ruler:' => '1f4cf',
675
-        ':kissing_closed_eyes:' => '1f61a',
676
-        ':stuck_out_tongue_winking_eye:' => '1f61c',
677
-        ':triangular_ruler:' => '1f4d0',
678
-        ':stuck_out_tongue_closed_eyes:' => '1f61d',
679
-        ':disappointed:' => '1f61e',
680
-        ':bookmark_tabs:' => '1f4d1',
681
-        ':angry:' => '1f620',
682
-        ':rage:' => '1f621',
683
-        ':cry:' => '1f622',
684
-        ':persevere:' => '1f623',
685
-        ':triumph:' => '1f624',
686
-        ':disappointed_relieved:' => '1f625',
687
-        ':fearful:' => '1f628',
688
-        ':weary:' => '1f629',
689
-        ':sleepy:' => '1f62a',
690
-        ':tired_face:' => '1f62b',
691
-        ':sob:' => '1f62d',
692
-        ':cold_sweat:' => '1f630',
693
-        ':scream:' => '1f631',
694
-        ':astonished:' => '1f632',
695
-        ':flushed:' => '1f633',
696
-        ':dizzy_face:' => '1f635',
697
-        ':mask:' => '1f637',
698
-        ':smile_cat:' => '1f638',
699
-        ':joy_cat:' => '1f639',
700
-        ':smiley_cat:' => '1f63a',
701
-        ':heart_eyes_cat:' => '1f63b',
702
-        ':smirk_cat:' => '1f63c',
703
-        ':kissing_cat:' => '1f63d',
704
-        ':pouting_cat:' => '1f63e',
705
-        ':crying_cat_face:' => '1f63f',
706
-        ':scream_cat:' => '1f640',
707
-        ':no_good:' => '1f645',
708
-        ':ok_woman:' => '1f646',
709
-        ':bow:' => '1f647',
710
-        ':see_no_evil:' => '1f648',
711
-        ':hear_no_evil:' => '1f649',
712
-        ':speak_no_evil:' => '1f64a',
713
-        ':raising_hand:' => '1f64b',
714
-        ':raised_hands:' => '1f64c',
715
-        ':person_frowning:' => '1f64d',
716
-        ':person_with_pouting_face:' => '1f64e',
717
-        ':pray:' => '1f64f',
718
-        ':rocket:' => '1f680',
719
-        ':railway_car:' => '1f683',
720
-        ':bullettrain_side:' => '1f684',
721
-        ':bullettrain_front:' => '1f685',
722
-        ':metro:' => '1f687',
723
-        ':station:' => '1f689',
724
-        ':bus:' => '1f68c',
725
-        ':busstop:' => '1f68f',
726
-        ':ambulance:' => '1f691',
727
-        ':fire_engine:' => '1f692',
728
-        ':police_car:' => '1f693',
729
-        ':taxi:' => '1f695',
730
-        ':red_car:' => '1f697',
731
-        ':blue_car:' => '1f699',
732
-        ':truck:' => '1f69a',
733
-        ':ship:' => '1f6a2',
734
-        ':speedboat:' => '1f6a4',
735
-        ':traffic_light:' => '1f6a5',
736
-        ':construction:' => '1f6a7',
737
-        ':rotating_light:' => '1f6a8',
738
-        ':triangular_flag_on_post:' => '1f6a9',
739
-        ':door:' => '1f6aa',
740
-        ':no_entry_sign:' => '1f6ab',
741
-        ':smoking:' => '1f6ac',
742
-        ':no_smoking:' => '1f6ad',
743
-        ':bike:' => '1f6b2',
744
-        ':walking:' => '1f6b6',
745
-        ':mens:' => '1f6b9',
746
-        ':womens:' => '1f6ba',
747
-        ':restroom:' => '1f6bb',
748
-        ':baby_symbol:' => '1f6bc',
749
-        ':toilet:' => '1f6bd',
750
-        ':wc:' => '1f6be',
751
-        ':bath:' => '1f6c0',
752
-        ':grinning:' => '1f600',
753
-        ':innocent:' => '1f607',
754
-        ':smiling_imp:' => '1f608',
755
-        ':sunglasses:' => '1f60e',
756
-        ':neutral_face:' => '1f610',
757
-        ':expressionless:' => '1f611',
758
-        ':confused:' => '1f615',
759
-        ':kissing:' => '1f617',
760
-        ':kissing_smiling_eyes:' => '1f619',
761
-        ':stuck_out_tongue:' => '1f61b',
762
-        ':worried:' => '1f61f',
763
-        ':frowning:' => '1f626',
764
-        ':anguished:' => '1f627',
765
-        ':grimacing:' => '1f62c',
766
-        ':open_mouth:' => '1f62e',
767
-        ':hushed:' => '1f62f',
768
-        ':sleeping:' => '1f634',
769
-        ':no_mouth:' => '1f636',
770
-        ':helicopter:' => '1f681',
771
-        ':steam_locomotive:' => '1f682',
772
-        ':train2:' => '1f686',
773
-        ':light_rail:' => '1f688',
774
-        ':tram:' => '1f68a',
775
-        ':oncoming_bus:' => '1f68d',
776
-        ':trolleybus:' => '1f68e',
777
-        ':minibus:' => '1f690',
778
-        ':oncoming_police_car:' => '1f694',
779
-        ':oncoming_taxi:' => '1f696',
780
-        ':oncoming_automobile:' => '1f698',
781
-        ':articulated_lorry:' => '1f69b',
782
-        ':tractor:' => '1f69c',
783
-        ':monorail:' => '1f69d',
784
-        ':mountain_railway:' => '1f69e',
785
-        ':suspension_railway:' => '1f69f',
786
-        ':mountain_cableway:' => '1f6a0',
787
-        ':aerial_tramway:' => '1f6a1',
788
-        ':rowboat:' => '1f6a3',
789
-        ':vertical_traffic_light:' => '1f6a6',
790
-        ':put_litter_in_its_place:' => '1f6ae',
791
-        ':do_not_litter:' => '1f6af',
792
-        ':potable_water:' => '1f6b0',
793
-        ':non-potable_water:' => '1f6b1',
794
-        ':no_bicycles:' => '1f6b3',
795
-        ':bicyclist:' => '1f6b4',
796
-        ':mountain_bicyclist:' => '1f6b5',
797
-        ':no_pedestrians:' => '1f6b7',
798
-        ':children_crossing:' => '1f6b8',
799
-        ':shower:' => '1f6bf',
800
-        ':bathtub:' => '1f6c1',
801
-        ':passport_control:' => '1f6c2',
802
-        ':customs:' => '1f6c3',
803
-        ':baggage_claim:' => '1f6c4',
804
-        ':left_luggage:' => '1f6c5',
805
-        ':earth_africa:' => '1f30d',
806
-        ':earth_americas:' => '1f30e',
807
-        ':globe_with_meridians:' => '1f310',
808
-        ':waxing_crescent_moon:' => '1f312',
809
-        ':waning_gibbous_moon:' => '1f316',
810
-        ':last_quarter_moon:' => '1f317',
811
-        ':waning_crescent_moon:' => '1f318',
812
-        ':new_moon_with_face:' => '1f31a',
813
-        ':last_quarter_moon_with_face:' => '1f31c',
814
-        ':full_moon_with_face:' => '1f31d',
815
-        ':sun_with_face:' => '1f31e',
816
-        ':evergreen_tree:' => '1f332',
817
-        ':deciduous_tree:' => '1f333',
818
-        ':lemon:' => '1f34b',
819
-        ':pear:' => '1f350',
820
-        ':baby_bottle:' => '1f37c',
821
-        ':horse_racing:' => '1f3c7',
822
-        ':rugby_football:' => '1f3c9',
823
-        ':european_post_office:' => '1f3e4',
824
-        ':rat:' => '1f400',
825
-        ':mouse2:' => '1f401',
826
-        ':ox:' => '1f402',
827
-        ':water_buffalo:' => '1f403',
828
-        ':cow2:' => '1f404',
829
-        ':tiger2:' => '1f405',
830
-        ':leopard:' => '1f406',
831
-        ':rabbit2:' => '1f407',
832
-        ':cat2:' => '1f408',
833
-        ':dragon:' => '1f409',
834
-        ':crocodile:' => '1f40a',
835
-        ':whale2:' => '1f40b',
836
-        ':ram:' => '1f40f',
837
-        ':goat:' => '1f410',
838
-        ':rooster:' => '1f413',
839
-        ':dog2:' => '1f415',
840
-        ':pig2:' => '1f416',
841
-        ':dromedary_camel:' => '1f42a',
842
-        ':busts_in_silhouette:' => '1f465',
843
-        ':two_men_holding_hands:' => '1f46c',
844
-        ':two_women_holding_hands:' => '1f46d',
845
-        ':thought_balloon:' => '1f4ad',
846
-        ':euro:' => '1f4b6',
847
-        ':pound:' => '1f4b7',
848
-        ':mailbox_with_mail:' => '1f4ec',
849
-        ':mailbox_with_no_mail:' => '1f4ed',
850
-        ':postal_horn:' => '1f4ef',
851
-        ':no_mobile_phones:' => '1f4f5',
852
-        ':twisted_rightwards_arrows:' => '1f500',
853
-        ':repeat:' => '1f501',
854
-        ':repeat_one:' => '1f502',
855
-        ':arrows_counterclockwise:' => '1f504',
856
-        ':low_brightness:' => '1f505',
857
-        ':high_brightness:' => '1f506',
858
-        ':mute:' => '1f507',
859
-        ':sound:' => '1f509',
860
-        ':no_bell:' => '1f515',
861
-        ':microscope:' => '1f52c',
862
-        ':telescope:' => '1f52d',
863
-        ':clock130:' => '1f55c',
864
-        ':clock230:' => '1f55d',
865
-        ':clock330:' => '1f55e',
866
-        ':clock430:' => '1f55f',
867
-        ':clock530:' => '1f560',
868
-        ':clock630:' => '1f561',
869
-        ':clock730:' => '1f562',
870
-        ':clock830:' => '1f563',
871
-        ':clock930:' => '1f564',
872
-        ':clock1030:' => '1f565',
873
-        ':clock1130:' => '1f566',
874
-        ':clock1230:' => '1f567',
875
-        ':speaker:' => '1f508',
876
-        ':train:' => '1f68b',
877
-        ':loop:' => '27bf',
878
-        ':af:' => '1f1e6-1f1eb',
879
-        ':al:' => '1f1e6-1f1f1',
880
-        ':dz:' => '1f1e9-1f1ff',
881
-        ':ad:' => '1f1e6-1f1e9',
882
-        ':ao:' => '1f1e6-1f1f4',
883
-        ':ag:' => '1f1e6-1f1ec',
884
-        ':ar:' => '1f1e6-1f1f7',
885
-        ':am:' => '1f1e6-1f1f2',
886
-        ':au:' => '1f1e6-1f1fa',
887
-        ':at:' => '1f1e6-1f1f9',
888
-        ':az:' => '1f1e6-1f1ff',
889
-        ':bs:' => '1f1e7-1f1f8',
890
-        ':bh:' => '1f1e7-1f1ed',
891
-        ':bd:' => '1f1e7-1f1e9',
892
-        ':bb:' => '1f1e7-1f1e7',
893
-        ':by:' => '1f1e7-1f1fe',
894
-        ':be:' => '1f1e7-1f1ea',
895
-        ':bz:' => '1f1e7-1f1ff',
896
-        ':bj:' => '1f1e7-1f1ef',
897
-        ':bt:' => '1f1e7-1f1f9',
898
-        ':bo:' => '1f1e7-1f1f4',
899
-        ':ba:' => '1f1e7-1f1e6',
900
-        ':bw:' => '1f1e7-1f1fc',
901
-        ':br:' => '1f1e7-1f1f7',
902
-        ':bn:' => '1f1e7-1f1f3',
903
-        ':bg:' => '1f1e7-1f1ec',
904
-        ':bf:' => '1f1e7-1f1eb',
905
-        ':bi:' => '1f1e7-1f1ee',
906
-        ':kh:' => '1f1f0-1f1ed',
907
-        ':cm:' => '1f1e8-1f1f2',
908
-        ':ca:' => '1f1e8-1f1e6',
909
-        ':cv:' => '1f1e8-1f1fb',
910
-        ':cf:' => '1f1e8-1f1eb',
911
-        ':td:' => '1f1f9-1f1e9',
912
-        ':chile:' => '1f1e8-1f1f1',
913
-        ':co:' => '1f1e8-1f1f4',
914
-        ':km:' => '1f1f0-1f1f2',
915
-        ':cr:' => '1f1e8-1f1f7',
916
-        ':ci:' => '1f1e8-1f1ee',
917
-        ':hr:' => '1f1ed-1f1f7',
918
-        ':cu:' => '1f1e8-1f1fa',
919
-        ':cy:' => '1f1e8-1f1fe',
920
-        ':cz:' => '1f1e8-1f1ff',
921
-        ':congo:' => '1f1e8-1f1e9',
922
-        ':dk:' => '1f1e9-1f1f0',
923
-        ':dj:' => '1f1e9-1f1ef',
924
-        ':dm:' => '1f1e9-1f1f2',
925
-        ':do:' => '1f1e9-1f1f4',
926
-        ':tl:' => '1f1f9-1f1f1',
927
-        ':ec:' => '1f1ea-1f1e8',
928
-        ':eg:' => '1f1ea-1f1ec',
929
-        ':sv:' => '1f1f8-1f1fb',
930
-        ':gq:' => '1f1ec-1f1f6',
931
-        ':er:' => '1f1ea-1f1f7',
932
-        ':ee:' => '1f1ea-1f1ea',
933
-        ':et:' => '1f1ea-1f1f9',
934
-        ':fj:' => '1f1eb-1f1ef',
935
-        ':fi:' => '1f1eb-1f1ee',
936
-        ':ga:' => '1f1ec-1f1e6',
937
-        ':gm:' => '1f1ec-1f1f2',
938
-        ':ge:' => '1f1ec-1f1ea',
939
-        ':gh:' => '1f1ec-1f1ed',
940
-        ':gr:' => '1f1ec-1f1f7',
941
-        ':gd:' => '1f1ec-1f1e9',
942
-        ':gt:' => '1f1ec-1f1f9',
943
-        ':gn:' => '1f1ec-1f1f3',
944
-        ':gw:' => '1f1ec-1f1fc',
945
-        ':gy:' => '1f1ec-1f1fe',
946
-        ':ht:' => '1f1ed-1f1f9',
947
-        ':hn:' => '1f1ed-1f1f3',
948
-        ':hu:' => '1f1ed-1f1fa',
949
-        ':is:' => '1f1ee-1f1f8',
950
-        ':in:' => '1f1ee-1f1f3',
951
-        ':indonesia:' => '1f1ee-1f1e9',
952
-        ':ir:' => '1f1ee-1f1f7',
953
-        ':iq:' => '1f1ee-1f1f6',
954
-        ':ie:' => '1f1ee-1f1ea',
955
-        ':il:' => '1f1ee-1f1f1',
956
-        ':jm:' => '1f1ef-1f1f2',
957
-        ':jo:' => '1f1ef-1f1f4',
958
-        ':kz:' => '1f1f0-1f1ff',
959
-        ':ke:' => '1f1f0-1f1ea',
960
-        ':ki:' => '1f1f0-1f1ee',
961
-        ':xk:' => '1f1fd-1f1f0',
962
-        ':kw:' => '1f1f0-1f1fc',
963
-        ':kg:' => '1f1f0-1f1ec',
964
-        ':la:' => '1f1f1-1f1e6',
965
-        ':lv:' => '1f1f1-1f1fb',
966
-        ':lb:' => '1f1f1-1f1e7',
967
-        ':ls:' => '1f1f1-1f1f8',
968
-        ':lr:' => '1f1f1-1f1f7',
969
-        ':ly:' => '1f1f1-1f1fe',
970
-        ':li:' => '1f1f1-1f1ee',
971
-        ':lt:' => '1f1f1-1f1f9',
972
-        ':lu:' => '1f1f1-1f1fa',
973
-        ':mk:' => '1f1f2-1f1f0',
974
-        ':mg:' => '1f1f2-1f1ec',
975
-        ':mw:' => '1f1f2-1f1fc',
976
-        ':my:' => '1f1f2-1f1fe',
977
-        ':mv:' => '1f1f2-1f1fb',
978
-        ':ml:' => '1f1f2-1f1f1',
979
-        ':mt:' => '1f1f2-1f1f9',
980
-        ':mh:' => '1f1f2-1f1ed',
981
-        ':mr:' => '1f1f2-1f1f7',
982
-        ':mu:' => '1f1f2-1f1fa',
983
-        ':mx:' => '1f1f2-1f1fd',
984
-        ':fm:' => '1f1eb-1f1f2',
985
-        ':md:' => '1f1f2-1f1e9',
986
-        ':mc:' => '1f1f2-1f1e8',
987
-        ':mn:' => '1f1f2-1f1f3',
988
-        ':me:' => '1f1f2-1f1ea',
989
-        ':ma:' => '1f1f2-1f1e6',
990
-        ':mz:' => '1f1f2-1f1ff',
991
-        ':mm:' => '1f1f2-1f1f2',
992
-        ':na:' => '1f1f3-1f1e6',
993
-        ':nr:' => '1f1f3-1f1f7',
994
-        ':np:' => '1f1f3-1f1f5',
995
-        ':nl:' => '1f1f3-1f1f1',
996
-        ':nz:' => '1f1f3-1f1ff',
997
-        ':ni:' => '1f1f3-1f1ee',
998
-        ':ne:' => '1f1f3-1f1ea',
999
-        ':nigeria:' => '1f1f3-1f1ec',
1000
-        ':kp:' => '1f1f0-1f1f5',
1001
-        ':no:' => '1f1f3-1f1f4',
1002
-        ':om:' => '1f1f4-1f1f2',
1003
-        ':pk:' => '1f1f5-1f1f0',
1004
-        ':pw:' => '1f1f5-1f1fc',
1005
-        ':pa:' => '1f1f5-1f1e6',
1006
-        ':pg:' => '1f1f5-1f1ec',
1007
-        ':py:' => '1f1f5-1f1fe',
1008
-        ':pe:' => '1f1f5-1f1ea',
1009
-        ':ph:' => '1f1f5-1f1ed',
1010
-        ':pl:' => '1f1f5-1f1f1',
1011
-        ':pt:' => '1f1f5-1f1f9',
1012
-        ':qa:' => '1f1f6-1f1e6',
1013
-        ':tw:' => '1f1f9-1f1fc',
1014
-        ':cg:' => '1f1e8-1f1ec',
1015
-        ':ro:' => '1f1f7-1f1f4',
1016
-        ':rw:' => '1f1f7-1f1fc',
1017
-        ':kn:' => '1f1f0-1f1f3',
1018
-        ':lc:' => '1f1f1-1f1e8',
1019
-        ':vc:' => '1f1fb-1f1e8',
1020
-        ':ws:' => '1f1fc-1f1f8',
1021
-        ':sm:' => '1f1f8-1f1f2',
1022
-        ':st:' => '1f1f8-1f1f9',
1023
-        ':saudiarabia:' => '1f1f8-1f1e6',
1024
-        ':saudi:' => '1f1f8-1f1e6',
1025
-        ':sn:' => '1f1f8-1f1f3',
1026
-        ':rs:' => '1f1f7-1f1f8',
1027
-        ':sc:' => '1f1f8-1f1e8',
1028
-        ':sl:' => '1f1f8-1f1f1',
1029
-        ':sg:' => '1f1f8-1f1ec',
1030
-        ':sk:' => '1f1f8-1f1f0',
1031
-        ':si:' => '1f1f8-1f1ee',
1032
-        ':sb:' => '1f1f8-1f1e7',
1033
-        ':so:' => '1f1f8-1f1f4',
1034
-        ':za:' => '1f1ff-1f1e6',
1035
-        ':lk:' => '1f1f1-1f1f0',
1036
-        ':sd:' => '1f1f8-1f1e9',
1037
-        ':sr:' => '1f1f8-1f1f7',
1038
-        ':sz:' => '1f1f8-1f1ff',
1039
-        ':se:' => '1f1f8-1f1ea',
1040
-        ':ch:' => '1f1e8-1f1ed',
1041
-        ':sy:' => '1f1f8-1f1fe',
1042
-        ':tj:' => '1f1f9-1f1ef',
1043
-        ':tz:' => '1f1f9-1f1ff',
1044
-        ':th:' => '1f1f9-1f1ed',
1045
-        ':tg:' => '1f1f9-1f1ec',
1046
-        ':to:' => '1f1f9-1f1f4',
1047
-        ':tt:' => '1f1f9-1f1f9',
1048
-        ':tn:' => '1f1f9-1f1f3',
1049
-        ':tr:' => '1f1f9-1f1f7',
1050
-        ':turkmenistan:' => '1f1f9-1f1f2',
1051
-        ':tuvalu:' => '1f1f9-1f1fb',
1052
-        ':ug:' => '1f1fa-1f1ec',
1053
-        ':ua:' => '1f1fa-1f1e6',
1054
-        ':ae:' => '1f1e6-1f1ea',
1055
-        ':uy:' => '1f1fa-1f1fe',
1056
-        ':uz:' => '1f1fa-1f1ff',
1057
-        ':vu:' => '1f1fb-1f1fa',
1058
-        ':va:' => '1f1fb-1f1e6',
1059
-        ':ve:' => '1f1fb-1f1ea',
1060
-        ':vn:' => '1f1fb-1f1f3',
1061
-        ':eh:' => '1f1ea-1f1ed',
1062
-        ':ye:' => '1f1fe-1f1ea',
1063
-        ':zm:' => '1f1ff-1f1f2',
1064
-        ':zw:' => '1f1ff-1f1fc',
1065
-        ':pr:' => '1f1f5-1f1f7',
1066
-        ':ky:' => '1f1f0-1f1fe',
1067
-        ':bm:' => '1f1e7-1f1f2',
1068
-        ':pf:' => '1f1f5-1f1eb',
1069
-        ':ps:' => '1f1f5-1f1f8',
1070
-        ':nc:' => '1f1f3-1f1e8',
1071
-        ':sh:' => '1f1f8-1f1ed',
1072
-        ':aw:' => '1f1e6-1f1fc',
1073
-        ':vi:' => '1f1fb-1f1ee',
1074
-        ':hk:' => '1f1ed-1f1f0',
1075
-        ':ac:' => '1f1e6-1f1e8',
1076
-        ':ms:' => '1f1f2-1f1f8',
1077
-        ':gu:' => '1f1ec-1f1fa',
1078
-        ':gl:' => '1f1ec-1f1f1',
1079
-        ':nu:' => '1f1f3-1f1fa',
1080
-        ':wf:' => '1f1fc-1f1eb',
1081
-        ':mo:' => '1f1f2-1f1f4',
1082
-        ':fo:' => '1f1eb-1f1f4',
1083
-        ':fk:' => '1f1eb-1f1f0',
1084
-        ':je:' => '1f1ef-1f1ea',
1085
-        ':ai:' => '1f1e6-1f1ee',
1086
-        ':gi:' => '1f1ec-1f1ee'
1087
-    );
1088
-    static $ascii_replace = Array(
1089
-        '<3' => '2764',
1090
-        '</3' => '1f494',
1091
-        ':\')' => '1f602',
1092
-        ':\'-)' => '1f602',
1093
-        ':D' => '1f603',
1094
-        ':-D' => '1f603',
1095
-        '=D' => '1f603',
1096
-        ':)' => '1f604',
1097
-        ':-)' => '1f604',
1098
-        '=]' => '1f604',
1099
-        '=)' => '1f604',
1100
-        ':]' => '1f604',
1101
-        '\':)' => '1f605',
1102
-        '\':-)' => '1f605',
1103
-        '\'=)' => '1f605',
1104
-        '\':D' => '1f605',
1105
-        '\':-D' => '1f605',
1106
-        '\'=D' => '1f605',
1107
-        '>:)' => '1f606',
1108
-        '>;)' => '1f606',
1109
-        '>:-)' => '1f606',
1110
-        '>=)' => '1f606',
1111
-        ';)' => '1f609',
1112
-        ';-)' => '1f609',
1113
-        '*-)' => '1f609',
1114
-        '*)' => '1f609',
1115
-        ';-]' => '1f609',
1116
-        ';]' => '1f609',
1117
-        ';D' => '1f609',
1118
-        ';^)' => '1f609',
1119
-        '\':(' => '1f613',
1120
-        '\':-(' => '1f613',
1121
-        '\'=(' => '1f613',
1122
-        ':*' => '1f618',
1123
-        ':-*' => '1f618',
1124
-        '=*' => '1f618',
1125
-        ':^*' => '1f618',
1126
-        '>:P' => '1f61c',
1127
-        'X-P' => '1f61c',
1128
-        'x-p' => '1f61c',
1129
-        '>:[' => '1f61e',
1130
-        ':-(' => '1f61e',
1131
-        ':(' => '1f61e',
1132
-        ':-[' => '1f61e',
1133
-        ':[' => '1f61e',
1134
-        '=(' => '1f61e',
1135
-        '>:(' => '1f620',
1136
-        '>:-(' => '1f620',
1137
-        ':@' => '1f620',
1138
-        ':\'(' => '1f622',
1139
-        ':\'-(' => '1f622',
1140
-        ';(' => '1f622',
1141
-        ';-(' => '1f622',
1142
-        '>.<' => '1f623',
1143
-        ':$' => '1f633',
1144
-        '=$' => '1f633',
1145
-        '#-)' => '1f635',
1146
-        '#)' => '1f635',
1147
-        '%-)' => '1f635',
1148
-        '%)' => '1f635',
1149
-        'X)' => '1f635',
1150
-        'X-)' => '1f635',
1151
-        '*\\0/*' => '1f646',
1152
-        '\\0/' => '1f646',
1153
-        '*\\O/*' => '1f646',
1154
-        '\\O/' => '1f646',
1155
-        'O:-)' => '1f607',
1156
-        '0:-3' => '1f607',
1157
-        '0:3' => '1f607',
1158
-        '0:-)' => '1f607',
1159
-        '0:)' => '1f607',
1160
-        '0;^)' => '1f607',
1161
-        'O:-)' => '1f607',
1162
-        'O:)' => '1f607',
1163
-        'O;-)' => '1f607',
1164
-        'O=)' => '1f607',
1165
-        '0;-)' => '1f607',
1166
-        'O:-3' => '1f607',
1167
-        'O:3' => '1f607',
1168
-        'B-)' => '1f60e',
1169
-        'B)' => '1f60e',
1170
-        '8)' => '1f60e',
1171
-        '8-)' => '1f60e',
1172
-        'B-D' => '1f60e',
1173
-        '8-D' => '1f60e',
1174
-        '-_-' => '1f611',
1175
-        '-__-' => '1f611',
1176
-        '-___-' => '1f611',
1177
-        '>:\\' => '1f615',
1178
-        '>:/' => '1f615',
1179
-        ':-/' => '1f615',
1180
-        ':-.' => '1f615',
1181
-        ':/' => '1f615',
1182
-        ':\\' => '1f615',
1183
-        '=/' => '1f615',
1184
-        '=\\' => '1f615',
1185
-        ':L' => '1f615',
1186
-        '=L' => '1f615',
1187
-        ':P' => '1f61b',
1188
-        ':-P' => '1f61b',
1189
-        '=P' => '1f61b',
1190
-        ':-p' => '1f61b',
1191
-        ':p' => '1f61b',
1192
-        '=p' => '1f61b',
1193
-        ':-Þ' => '1f61b',
1194
-        ':Þ' => '1f61b',
1195
-        ':þ' => '1f61b',
1196
-        ':-þ' => '1f61b',
1197
-        ':-b' => '1f61b',
1198
-        ':b' => '1f61b',
1199
-        'd:' => '1f61b',
1200
-        ':-O' => '1f62e',
1201
-        ':O' => '1f62e',
1202
-        ':-o' => '1f62e',
1203
-        ':o' => '1f62e',
1204
-        'O_O' => '1f62e',
1205
-        '>:O' => '1f62e',
1206
-        ':-X' => '1f636',
1207
-        ':X' => '1f636',
1208
-        ':-#' => '1f636',
1209
-        ':#' => '1f636',
1210
-        '=X' => '1f636',
1211
-        '=x' => '1f636',
1212
-        ':x' => '1f636',
1213
-        ':-x' => '1f636',
1214
-        '=#' => '1f636'
1215
-    );
1216
-    static $unicode_replace = Array(
1217
-        "\x23\xEF\xB8\x8F\xE2\x83\xA3" => ':hash:',
1218
-        "\x23\xE2\x83\xA3" => ':hash:',
1219
-        "\x30\xEF\xB8\x8F\xE2\x83\xA3" => ':zero:',
1220
-        "\x30\xE2\x83\xA3" => ':zero:',
1221
-        "\x31\xEF\xB8\x8F\xE2\x83\xA3" => ':one:',
1222
-        "\x31\xE2\x83\xA3" => ':one:',
1223
-        "\x32\xEF\xB8\x8F\xE2\x83\xA3" => ':two:',
1224
-        "\x32\xE2\x83\xA3" => ':two:',
1225
-        "\x33\xEF\xB8\x8F\xE2\x83\xA3" => ':three:',
1226
-        "\x33\xE2\x83\xA3" => ':three:',
1227
-        "\x34\xEF\xB8\x8F\xE2\x83\xA3" => ':four:',
1228
-        "\x34\xE2\x83\xA3" => ':four:',
1229
-        "\x35\xEF\xB8\x8F\xE2\x83\xA3" => ':five:',
1230
-        "\x35\xE2\x83\xA3" => ':five:',
1231
-        "\x36\xEF\xB8\x8F\xE2\x83\xA3" => ':six:',
1232
-        "\x36\xE2\x83\xA3" => ':six:',
1233
-        "\x37\xEF\xB8\x8F\xE2\x83\xA3" => ':seven:',
1234
-        "\x37\xE2\x83\xA3" => ':seven:',
1235
-        "\x38\xEF\xB8\x8F\xE2\x83\xA3" => ':eight:',
1236
-        "\x38\xE2\x83\xA3" => ':eight:',
1237
-        "\x39\xEF\xB8\x8F\xE2\x83\xA3" => ':nine:',
1238
-        "\x39\xE2\x83\xA3" => ':nine:',
1239
-        "\xC2\xA9" => ':copyright:',
1240
-        "\xC2\xAE" => ':registered:',
1241
-        "\xE2\x80\xBC\xEF\xB8\x8F" => ':bangbang:',
1242
-        "\xE2\x80\xBC" => ':bangbang:',
1243
-        "\xE2\x81\x89\xEF\xB8\x8F" => ':interrobang:',
1244
-        "\xE2\x81\x89" => ':interrobang:',
1245
-        "\xE2\x84\xA2" => ':tm:',
1246
-        "\xE2\x84\xB9\xEF\xB8\x8F" => ':information_source:',
1247
-        "\xE2\x84\xB9" => ':information_source:',
1248
-        "\xE2\x86\x94\xEF\xB8\x8F" => ':left_right_arrow:',
1249
-        "\xE2\x86\x94" => ':left_right_arrow:',
1250
-        "\xE2\x86\x95\xEF\xB8\x8F" => ':arrow_up_down:',
1251
-        "\xE2\x86\x95" => ':arrow_up_down:',
1252
-        "\xE2\x86\x96\xEF\xB8\x8F" => ':arrow_upper_left:',
1253
-        "\xE2\x86\x96" => ':arrow_upper_left:',
1254
-        "\xE2\x86\x97\xEF\xB8\x8F" => ':arrow_upper_right:',
1255
-        "\xE2\x86\x97" => ':arrow_upper_right:',
1256
-        "\xE2\x86\x98\xEF\xB8\x8F" => ':arrow_lower_right:',
1257
-        "\xE2\x86\x98" => ':arrow_lower_right:',
1258
-        "\xE2\x86\x99\xEF\xB8\x8F" => ':arrow_lower_left:',
1259
-        "\xE2\x86\x99" => ':arrow_lower_left:',
1260
-        "\xE2\x86\xA9\xEF\xB8\x8F" => ':leftwards_arrow_with_hook:',
1261
-        "\xE2\x86\xA9" => ':leftwards_arrow_with_hook:',
1262
-        "\xE2\x86\xAA\xEF\xB8\x8F" => ':arrow_right_hook:',
1263
-        "\xE2\x86\xAA" => ':arrow_right_hook:',
1264
-        "\xE2\x8C\x9A\xEF\xB8\x8F" => ':watch:',
1265
-        "\xE2\x8C\x9A" => ':watch:',
1266
-        "\xE2\x8C\x9B\xEF\xB8\x8F" => ':hourglass:',
1267
-        "\xE2\x8C\x9B" => ':hourglass:',
1268
-        "\xE2\x8F\xA9" => ':fast_forward:',
1269
-        "\xE2\x8F\xAA" => ':rewind:',
1270
-        "\xE2\x8F\xAB" => ':arrow_double_up:',
1271
-        "\xE2\x8F\xAC" => ':arrow_double_down:',
1272
-        "\xE2\x8F\xB0" => ':alarm_clock:',
1273
-        "\xE2\x8F\xB3" => ':hourglass_flowing_sand:',
1274
-        "\xE2\x93\x82\xEF\xB8\x8F" => ':m:',
1275
-        "\xE2\x93\x82" => ':m:',
1276
-        "\xE2\x96\xAA\xEF\xB8\x8F" => ':black_small_square:',
1277
-        "\xE2\x96\xAA" => ':black_small_square:',
1278
-        "\xE2\x96\xAB\xEF\xB8\x8F" => ':white_small_square:',
1279
-        "\xE2\x96\xAB" => ':white_small_square:',
1280
-        "\xE2\x96\xB6\xEF\xB8\x8F" => ':arrow_forward:',
1281
-        "\xE2\x96\xB6" => ':arrow_forward:',
1282
-        "\xE2\x97\x80\xEF\xB8\x8F" => ':arrow_backward:',
1283
-        "\xE2\x97\x80" => ':arrow_backward:',
1284
-        "\xE2\x97\xBB\xEF\xB8\x8F" => ':white_medium_square:',
1285
-        "\xE2\x97\xBB" => ':white_medium_square:',
1286
-        "\xE2\x97\xBC\xEF\xB8\x8F" => ':black_medium_square:',
1287
-        "\xE2\x97\xBC" => ':black_medium_square:',
1288
-        "\xE2\x97\xBD\xEF\xB8\x8F" => ':white_medium_small_square:',
1289
-        "\xE2\x97\xBD" => ':white_medium_small_square:',
1290
-        "\xE2\x97\xBE\xEF\xB8\x8F" => ':black_medium_small_square:',
1291
-        "\xE2\x97\xBE" => ':black_medium_small_square:',
1292
-        "\xE2\x98\x80\xEF\xB8\x8F" => ':sunny:',
1293
-        "\xE2\x98\x80" => ':sunny:',
1294
-        "\xE2\x98\x81\xEF\xB8\x8F" => ':cloud:',
1295
-        "\xE2\x98\x81" => ':cloud:',
1296
-        "\xE2\x98\x8E\xEF\xB8\x8F" => ':telephone:',
1297
-        "\xE2\x98\x8E" => ':telephone:',
1298
-        "\xE2\x98\x91\xEF\xB8\x8F" => ':ballot_box_with_check:',
1299
-        "\xE2\x98\x91" => ':ballot_box_with_check:',
1300
-        "\xE2\x98\x94\xEF\xB8\x8F" => ':umbrella:',
1301
-        "\xE2\x98\x94" => ':umbrella:',
1302
-        "\xE2\x98\x95\xEF\xB8\x8F" => ':coffee:',
1303
-        "\xE2\x98\x95" => ':coffee:',
1304
-        "\xE2\x98\x9D\xEF\xB8\x8F" => ':point_up:',
1305
-        "\xE2\x98\x9D" => ':point_up:',
1306
-        "\xE2\x98\xBA\xEF\xB8\x8F" => ':relaxed:',
1307
-        "\xE2\x98\xBA" => ':relaxed:',
1308
-        "\xE2\x99\x88\xEF\xB8\x8F" => ':aries:',
1309
-        "\xE2\x99\x88" => ':aries:',
1310
-        "\xE2\x99\x89\xEF\xB8\x8F" => ':taurus:',
1311
-        "\xE2\x99\x89" => ':taurus:',
1312
-        "\xE2\x99\x8A\xEF\xB8\x8F" => ':gemini:',
1313
-        "\xE2\x99\x8A" => ':gemini:',
1314
-        "\xE2\x99\x8B\xEF\xB8\x8F" => ':cancer:',
1315
-        "\xE2\x99\x8B" => ':cancer:',
1316
-        "\xE2\x99\x8C\xEF\xB8\x8F" => ':leo:',
1317
-        "\xE2\x99\x8C" => ':leo:',
1318
-        "\xE2\x99\x8D\xEF\xB8\x8F" => ':virgo:',
1319
-        "\xE2\x99\x8D" => ':virgo:',
1320
-        "\xE2\x99\x8E\xEF\xB8\x8F" => ':libra:',
1321
-        "\xE2\x99\x8E" => ':libra:',
1322
-        "\xE2\x99\x8F\xEF\xB8\x8F" => ':scorpius:',
1323
-        "\xE2\x99\x8F" => ':scorpius:',
1324
-        "\xE2\x99\x90\xEF\xB8\x8F" => ':sagittarius:',
1325
-        "\xE2\x99\x90" => ':sagittarius:',
1326
-        "\xE2\x99\x91\xEF\xB8\x8F" => ':capricorn:',
1327
-        "\xE2\x99\x91" => ':capricorn:',
1328
-        "\xE2\x99\x92\xEF\xB8\x8F" => ':aquarius:',
1329
-        "\xE2\x99\x92" => ':aquarius:',
1330
-        "\xE2\x99\x93\xEF\xB8\x8F" => ':pisces:',
1331
-        "\xE2\x99\x93" => ':pisces:',
1332
-        "\xE2\x99\xA0\xEF\xB8\x8F" => ':spades:',
1333
-        "\xE2\x99\xA0" => ':spades:',
1334
-        "\xE2\x99\xA3\xEF\xB8\x8F" => ':clubs:',
1335
-        "\xE2\x99\xA3" => ':clubs:',
1336
-        "\xE2\x99\xA5\xEF\xB8\x8F" => ':hearts:',
1337
-        "\xE2\x99\xA5" => ':hearts:',
1338
-        "\xE2\x99\xA6\xEF\xB8\x8F" => ':diamonds:',
1339
-        "\xE2\x99\xA6" => ':diamonds:',
1340
-        "\xE2\x99\xA8\xEF\xB8\x8F" => ':hotsprings:',
1341
-        "\xE2\x99\xA8" => ':hotsprings:',
1342
-        "\xE2\x99\xBB\xEF\xB8\x8F" => ':recycle:',
1343
-        "\xE2\x99\xBB" => ':recycle:',
1344
-        "\xE2\x99\xBF\xEF\xB8\x8F" => ':wheelchair:',
1345
-        "\xE2\x99\xBF" => ':wheelchair:',
1346
-        "\xE2\x9A\x93\xEF\xB8\x8F" => ':anchor:',
1347
-        "\xE2\x9A\x93" => ':anchor:',
1348
-        "\xE2\x9A\xA0\xEF\xB8\x8F" => ':warning:',
1349
-        "\xE2\x9A\xA0" => ':warning:',
1350
-        "\xE2\x9A\xA1\xEF\xB8\x8F" => ':zap:',
1351
-        "\xE2\x9A\xA1" => ':zap:',
1352
-        "\xE2\x9A\xAA\xEF\xB8\x8F" => ':white_circle:',
1353
-        "\xE2\x9A\xAA" => ':white_circle:',
1354
-        "\xE2\x9A\xAB\xEF\xB8\x8F" => ':black_circle:',
1355
-        "\xE2\x9A\xAB" => ':black_circle:',
1356
-        "\xE2\x9A\xBD\xEF\xB8\x8F" => ':soccer:',
1357
-        "\xE2\x9A\xBD" => ':soccer:',
1358
-        "\xE2\x9A\xBE\xEF\xB8\x8F" => ':baseball:',
1359
-        "\xE2\x9A\xBE" => ':baseball:',
1360
-        "\xE2\x9B\x84\xEF\xB8\x8F" => ':snowman:',
1361
-        "\xE2\x9B\x84" => ':snowman:',
1362
-        "\xE2\x9B\x85\xEF\xB8\x8F" => ':partly_sunny:',
1363
-        "\xE2\x9B\x85" => ':partly_sunny:',
1364
-        "\xE2\x9B\x8E" => ':ophiuchus:',
1365
-        "\xE2\x9B\x94\xEF\xB8\x8F" => ':no_entry:',
1366
-        "\xE2\x9B\x94" => ':no_entry:',
1367
-        "\xE2\x9B\xAA\xEF\xB8\x8F" => ':church:',
1368
-        "\xE2\x9B\xAA" => ':church:',
1369
-        "\xE2\x9B\xB2\xEF\xB8\x8F" => ':fountain:',
1370
-        "\xE2\x9B\xB2" => ':fountain:',
1371
-        "\xE2\x9B\xB3\xEF\xB8\x8F" => ':golf:',
1372
-        "\xE2\x9B\xB3" => ':golf:',
1373
-        "\xE2\x9B\xB5\xEF\xB8\x8F" => ':sailboat:',
1374
-        "\xE2\x9B\xB5" => ':sailboat:',
1375
-        "\xE2\x9B\xBA\xEF\xB8\x8F" => ':tent:',
1376
-        "\xE2\x9B\xBA" => ':tent:',
1377
-        "\xE2\x9B\xBD\xEF\xB8\x8F" => ':fuelpump:',
1378
-        "\xE2\x9B\xBD" => ':fuelpump:',
1379
-        "\xE2\x9C\x82\xEF\xB8\x8F" => ':scissors:',
1380
-        "\xE2\x9C\x82" => ':scissors:',
1381
-        "\xE2\x9C\x85" => ':white_check_mark:',
1382
-        "\xE2\x9C\x88\xEF\xB8\x8F" => ':airplane:',
1383
-        "\xE2\x9C\x88" => ':airplane:',
1384
-        "\xE2\x9C\x89\xEF\xB8\x8F" => ':envelope:',
1385
-        "\xE2\x9C\x89" => ':envelope:',
1386
-        "\xE2\x9C\x8A" => ':fist:',
1387
-        "\xE2\x9C\x8B" => ':raised_hand:',
1388
-        "\xE2\x9C\x8C\xEF\xB8\x8F" => ':v:',
1389
-        "\xE2\x9C\x8C" => ':v:',
1390
-        "\xE2\x9C\x8F\xEF\xB8\x8F" => ':pencil2:',
1391
-        "\xE2\x9C\x8F" => ':pencil2:',
1392
-        "\xE2\x9C\x92\xEF\xB8\x8F" => ':black_nib:',
1393
-        "\xE2\x9C\x92" => ':black_nib:',
1394
-        "\xE2\x9C\x94\xEF\xB8\x8F" => ':heavy_check_mark:',
1395
-        "\xE2\x9C\x94" => ':heavy_check_mark:',
1396
-        "\xE2\x9C\x96\xEF\xB8\x8F" => ':heavy_multiplication_x:',
1397
-        "\xE2\x9C\x96" => ':heavy_multiplication_x:',
1398
-        "\xE2\x9C\xA8" => ':sparkles:',
1399
-        "\xE2\x9C\xB3\xEF\xB8\x8F" => ':eight_spoked_asterisk:',
1400
-        "\xE2\x9C\xB3" => ':eight_spoked_asterisk:',
1401
-        "\xE2\x9C\xB4\xEF\xB8\x8F" => ':eight_pointed_black_star:',
1402
-        "\xE2\x9C\xB4" => ':eight_pointed_black_star:',
1403
-        "\xE2\x9D\x84\xEF\xB8\x8F" => ':snowflake:',
1404
-        "\xE2\x9D\x84" => ':snowflake:',
1405
-        "\xE2\x9D\x87\xEF\xB8\x8F" => ':sparkle:',
1406
-        "\xE2\x9D\x87" => ':sparkle:',
1407
-        "\xE2\x9D\x8C" => ':x:',
1408
-        "\xE2\x9D\x8E" => ':negative_squared_cross_mark:',
1409
-        "\xE2\x9D\x93" => ':question:',
1410
-        "\xE2\x9D\x94" => ':grey_question:',
1411
-        "\xE2\x9D\x95" => ':grey_exclamation:',
1412
-        "\xE2\x9D\x97\xEF\xB8\x8F" => ':exclamation:',
1413
-        "\xE2\x9D\x97" => ':exclamation:',
1414
-        "\xE2\x9D\xA4\xEF\xB8\x8F" => ':heart:',
1415
-        "\xE2\x9D\xA4" => ':heart:',
1416
-        "\xE2\x9E\x95" => ':heavy_plus_sign:',
1417
-        "\xE2\x9E\x96" => ':heavy_minus_sign:',
1418
-        "\xE2\x9E\x97" => ':heavy_division_sign:',
1419
-        "\xE2\x9E\xA1\xEF\xB8\x8F" => ':arrow_right:',
1420
-        "\xE2\x9E\xA1" => ':arrow_right:',
1421
-        "\xE2\x9E\xB0" => ':curly_loop:',
1422
-        "\xE2\xA4\xB4\xEF\xB8\x8F" => ':arrow_heading_up:',
1423
-        "\xE2\xA4\xB4" => ':arrow_heading_up:',
1424
-        "\xE2\xA4\xB5\xEF\xB8\x8F" => ':arrow_heading_down:',
1425
-        "\xE2\xA4\xB5" => ':arrow_heading_down:',
1426
-        "\xE2\xAC\x85\xEF\xB8\x8F" => ':arrow_left:',
1427
-        "\xE2\xAC\x85" => ':arrow_left:',
1428
-        "\xE2\xAC\x86\xEF\xB8\x8F" => ':arrow_up:',
1429
-        "\xE2\xAC\x86" => ':arrow_up:',
1430
-        "\xE2\xAC\x87\xEF\xB8\x8F" => ':arrow_down:',
1431
-        "\xE2\xAC\x87" => ':arrow_down:',
1432
-        "\xE2\xAC\x9B\xEF\xB8\x8F" => ':black_large_square:',
1433
-        "\xE2\xAC\x9B" => ':black_large_square:',
1434
-        "\xE2\xAC\x9C\xEF\xB8\x8F" => ':white_large_square:',
1435
-        "\xE2\xAC\x9C" => ':white_large_square:',
1436
-        "\xE2\xAD\x90\xEF\xB8\x8F" => ':star:',
1437
-        "\xE2\xAD\x90" => ':star:',
1438
-        "\xE2\xAD\x95\xEF\xB8\x8F" => ':o:',
1439
-        "\xE2\xAD\x95" => ':o:',
1440
-        "\xE3\x80\xB0" => ':wavy_dash:',
1441
-        "\xE3\x80\xBD\xEF\xB8\x8F" => ':part_alternation_mark:',
1442
-        "\xE3\x80\xBD" => ':part_alternation_mark:',
1443
-        "\xE3\x8A\x97\xEF\xB8\x8F" => ':congratulations:',
1444
-        "\xE3\x8A\x97" => ':congratulations:',
1445
-        "\xE3\x8A\x99\xEF\xB8\x8F" => ':secret:',
1446
-        "\xE3\x8A\x99" => ':secret:',
1447
-        "\xF0\x9F\x80\x84\xEF\xB8\x8F" => ':mahjong:',
1448
-        "\xF0\x9F\x80\x84" => ':mahjong:',
1449
-        "\xF0\x9F\x83\x8F" => ':black_joker:',
1450
-        "\xF0\x9F\x85\xB0" => ':a:',
1451
-        "\xF0\x9F\x85\xB1" => ':b:',
1452
-        "\xF0\x9F\x85\xBE" => ':o2:',
1453
-        "\xF0\x9F\x85\xBF\xEF\xB8\x8F" => ':parking:',
1454
-        "\xF0\x9F\x85\xBF" => ':parking:',
1455
-        "\xF0\x9F\x86\x8E" => ':ab:',
1456
-        "\xF0\x9F\x86\x91" => ':cl:',
1457
-        "\xF0\x9F\x86\x92" => ':cool:',
1458
-        "\xF0\x9F\x86\x93" => ':free:',
1459
-        "\xF0\x9F\x86\x94" => ':id:',
1460
-        "\xF0\x9F\x86\x95" => ':new:',
1461
-        "\xF0\x9F\x86\x96" => ':ng:',
1462
-        "\xF0\x9F\x86\x97" => ':ok:',
1463
-        "\xF0\x9F\x86\x98" => ':sos:',
1464
-        "\xF0\x9F\x86\x99" => ':up:',
1465
-        "\xF0\x9F\x86\x9A" => ':vs:',
1466
-        "\xF0\x9F\x87\xA8\xF0\x9F\x87\xB3" => ':cn:',
1467
-        "\xF0\x9F\x87\xA9\xF0\x9F\x87\xAA" => ':de:',
1468
-        "\xF0\x9F\x87\xAA\xF0\x9F\x87\xB8" => ':es:',
1469
-        "\xF0\x9F\x87\xAB\xF0\x9F\x87\xB7" => ':fr:',
1470
-        "\xF0\x9F\x87\xAC\xF0\x9F\x87\xA7" => ':gb:',
1471
-        "\xF0\x9F\x87\xAE\xF0\x9F\x87\xB9" => ':it:',
1472
-        "\xF0\x9F\x87\xAF\xF0\x9F\x87\xB5" => ':jp:',
1473
-        "\xF0\x9F\x87\xB0\xF0\x9F\x87\xB7" => ':kr:',
1474
-        "\xF0\x9F\x87\xBA\xF0\x9F\x87\xB8" => ':us:',
1475
-        "\xF0\x9F\x87\xB7\xF0\x9F\x87\xBA" => ':ru:',
1476
-        "\xF0\x9F\x88\x81" => ':koko:',
1477
-        "\xF0\x9F\x88\x82" => ':sa:',
1478
-        "\xF0\x9F\x88\x9A\xEF\xB8\x8F" => ':u7121:',
1479
-        "\xF0\x9F\x88\x9A" => ':u7121:',
1480
-        "\xF0\x9F\x88\xAF\xEF\xB8\x8F" => ':u6307:',
1481
-        "\xF0\x9F\x88\xAF" => ':u6307:',
1482
-        "\xF0\x9F\x88\xB2" => ':u7981:',
1483
-        "\xF0\x9F\x88\xB3" => ':u7a7a:',
1484
-        "\xF0\x9F\x88\xB4" => ':u5408:',
1485
-        "\xF0\x9F\x88\xB5" => ':u6e80:',
1486
-        "\xF0\x9F\x88\xB6" => ':u6709:',
1487
-        "\xF0\x9F\x88\xB7" => ':u6708:',
1488
-        "\xF0\x9F\x88\xB8" => ':u7533:',
1489
-        "\xF0\x9F\x88\xB9" => ':u5272:',
1490
-        "\xF0\x9F\x88\xBA" => ':u55b6:',
1491
-        "\xF0\x9F\x89\x90" => ':ideograph_advantage:',
1492
-        "\xF0\x9F\x89\x91" => ':accept:',
1493
-        "\xF0\x9F\x8C\x80" => ':cyclone:',
1494
-        "\xF0\x9F\x8C\x81" => ':foggy:',
1495
-        "\xF0\x9F\x8C\x82" => ':closed_umbrella:',
1496
-        "\xF0\x9F\x8C\x83" => ':night_with_stars:',
1497
-        "\xF0\x9F\x8C\x84" => ':sunrise_over_mountains:',
1498
-        "\xF0\x9F\x8C\x85" => ':sunrise:',
1499
-        "\xF0\x9F\x8C\x86" => ':city_dusk:',
1500
-        "\xF0\x9F\x8C\x87" => ':city_sunset:',
1501
-        "\xF0\x9F\x8C\x88" => ':rainbow:',
1502
-        "\xF0\x9F\x8C\x89" => ':bridge_at_night:',
1503
-        "\xF0\x9F\x8C\x8A" => ':ocean:',
1504
-        "\xF0\x9F\x8C\x8B" => ':volcano:',
1505
-        "\xF0\x9F\x8C\x8C" => ':milky_way:',
1506
-        "\xF0\x9F\x8C\x8F" => ':earth_asia:',
1507
-        "\xF0\x9F\x8C\x91" => ':new_moon:',
1508
-        "\xF0\x9F\x8C\x93" => ':first_quarter_moon:',
1509
-        "\xF0\x9F\x8C\x94" => ':waxing_gibbous_moon:',
1510
-        "\xF0\x9F\x8C\x95" => ':full_moon:',
1511
-        "\xF0\x9F\x8C\x99" => ':crescent_moon:',
1512
-        "\xF0\x9F\x8C\x9B" => ':first_quarter_moon_with_face:',
1513
-        "\xF0\x9F\x8C\x9F" => ':star2:',
1514
-        "\xF0\x9F\x8C\xA0" => ':stars:',
1515
-        "\xF0\x9F\x8C\xB0" => ':chestnut:',
1516
-        "\xF0\x9F\x8C\xB1" => ':seedling:',
1517
-        "\xF0\x9F\x8C\xB4" => ':palm_tree:',
1518
-        "\xF0\x9F\x8C\xB5" => ':cactus:',
1519
-        "\xF0\x9F\x8C\xB7" => ':tulip:',
1520
-        "\xF0\x9F\x8C\xB8" => ':cherry_blossom:',
1521
-        "\xF0\x9F\x8C\xB9" => ':rose:',
1522
-        "\xF0\x9F\x8C\xBA" => ':hibiscus:',
1523
-        "\xF0\x9F\x8C\xBB" => ':sunflower:',
1524
-        "\xF0\x9F\x8C\xBC" => ':blossom:',
1525
-        "\xF0\x9F\x8C\xBD" => ':corn:',
1526
-        "\xF0\x9F\x8C\xBE" => ':ear_of_rice:',
1527
-        "\xF0\x9F\x8C\xBF" => ':herb:',
1528
-        "\xF0\x9F\x8D\x80" => ':four_leaf_clover:',
1529
-        "\xF0\x9F\x8D\x81" => ':maple_leaf:',
1530
-        "\xF0\x9F\x8D\x82" => ':fallen_leaf:',
1531
-        "\xF0\x9F\x8D\x83" => ':leaves:',
1532
-        "\xF0\x9F\x8D\x84" => ':mushroom:',
1533
-        "\xF0\x9F\x8D\x85" => ':tomato:',
1534
-        "\xF0\x9F\x8D\x86" => ':eggplant:',
1535
-        "\xF0\x9F\x8D\x87" => ':grapes:',
1536
-        "\xF0\x9F\x8D\x88" => ':melon:',
1537
-        "\xF0\x9F\x8D\x89" => ':watermelon:',
1538
-        "\xF0\x9F\x8D\x8A" => ':tangerine:',
1539
-        "\xF0\x9F\x8D\x8C" => ':banana:',
1540
-        "\xF0\x9F\x8D\x8D" => ':pineapple:',
1541
-        "\xF0\x9F\x8D\x8E" => ':apple:',
1542
-        "\xF0\x9F\x8D\x8F" => ':green_apple:',
1543
-        "\xF0\x9F\x8D\x91" => ':peach:',
1544
-        "\xF0\x9F\x8D\x92" => ':cherries:',
1545
-        "\xF0\x9F\x8D\x93" => ':strawberry:',
1546
-        "\xF0\x9F\x8D\x94" => ':hamburger:',
1547
-        "\xF0\x9F\x8D\x95" => ':pizza:',
1548
-        "\xF0\x9F\x8D\x96" => ':meat_on_bone:',
1549
-        "\xF0\x9F\x8D\x97" => ':poultry_leg:',
1550
-        "\xF0\x9F\x8D\x98" => ':rice_cracker:',
1551
-        "\xF0\x9F\x8D\x99" => ':rice_ball:',
1552
-        "\xF0\x9F\x8D\x9A" => ':rice:',
1553
-        "\xF0\x9F\x8D\x9B" => ':curry:',
1554
-        "\xF0\x9F\x8D\x9C" => ':ramen:',
1555
-        "\xF0\x9F\x8D\x9D" => ':spaghetti:',
1556
-        "\xF0\x9F\x8D\x9E" => ':bread:',
1557
-        "\xF0\x9F\x8D\x9F" => ':fries:',
1558
-        "\xF0\x9F\x8D\xA0" => ':sweet_potato:',
1559
-        "\xF0\x9F\x8D\xA1" => ':dango:',
1560
-        "\xF0\x9F\x8D\xA2" => ':oden:',
1561
-        "\xF0\x9F\x8D\xA3" => ':sushi:',
1562
-        "\xF0\x9F\x8D\xA4" => ':fried_shrimp:',
1563
-        "\xF0\x9F\x8D\xA5" => ':fish_cake:',
1564
-        "\xF0\x9F\x8D\xA6" => ':icecream:',
1565
-        "\xF0\x9F\x8D\xA7" => ':shaved_ice:',
1566
-        "\xF0\x9F\x8D\xA8" => ':ice_cream:',
1567
-        "\xF0\x9F\x8D\xA9" => ':doughnut:',
1568
-        "\xF0\x9F\x8D\xAA" => ':cookie:',
1569
-        "\xF0\x9F\x8D\xAB" => ':chocolate_bar:',
1570
-        "\xF0\x9F\x8D\xAC" => ':candy:',
1571
-        "\xF0\x9F\x8D\xAD" => ':lollipop:',
1572
-        "\xF0\x9F\x8D\xAE" => ':custard:',
1573
-        "\xF0\x9F\x8D\xAF" => ':honey_pot:',
1574
-        "\xF0\x9F\x8D\xB0" => ':cake:',
1575
-        "\xF0\x9F\x8D\xB1" => ':bento:',
1576
-        "\xF0\x9F\x8D\xB2" => ':stew:',
1577
-        "\xF0\x9F\x8D\xB3" => ':egg:',
1578
-        "\xF0\x9F\x8D\xB4" => ':fork_and_knife:',
1579
-        "\xF0\x9F\x8D\xB5" => ':tea:',
1580
-        "\xF0\x9F\x8D\xB6" => ':sake:',
1581
-        "\xF0\x9F\x8D\xB7" => ':wine_glass:',
1582
-        "\xF0\x9F\x8D\xB8" => ':cocktail:',
1583
-        "\xF0\x9F\x8D\xB9" => ':tropical_drink:',
1584
-        "\xF0\x9F\x8D\xBA" => ':beer:',
1585
-        "\xF0\x9F\x8D\xBB" => ':beers:',
1586
-        "\xF0\x9F\x8E\x80" => ':ribbon:',
1587
-        "\xF0\x9F\x8E\x81" => ':gift:',
1588
-        "\xF0\x9F\x8E\x82" => ':birthday:',
1589
-        "\xF0\x9F\x8E\x83" => ':jack_o_lantern:',
1590
-        "\xF0\x9F\x8E\x84" => ':christmas_tree:',
1591
-        "\xF0\x9F\x8E\x85" => ':santa:',
1592
-        "\xF0\x9F\x8E\x86" => ':fireworks:',
1593
-        "\xF0\x9F\x8E\x87" => ':sparkler:',
1594
-        "\xF0\x9F\x8E\x88" => ':balloon:',
1595
-        "\xF0\x9F\x8E\x89" => ':tada:',
1596
-        "\xF0\x9F\x8E\x8A" => ':confetti_ball:',
1597
-        "\xF0\x9F\x8E\x8B" => ':tanabata_tree:',
1598
-        "\xF0\x9F\x8E\x8C" => ':crossed_flags:',
1599
-        "\xF0\x9F\x8E\x8D" => ':bamboo:',
1600
-        "\xF0\x9F\x8E\x8E" => ':dolls:',
1601
-        "\xF0\x9F\x8E\x8F" => ':flags:',
1602
-        "\xF0\x9F\x8E\x90" => ':wind_chime:',
1603
-        "\xF0\x9F\x8E\x91" => ':rice_scene:',
1604
-        "\xF0\x9F\x8E\x92" => ':school_satchel:',
1605
-        "\xF0\x9F\x8E\x93" => ':mortar_board:',
1606
-        "\xF0\x9F\x8E\xA0" => ':carousel_horse:',
1607
-        "\xF0\x9F\x8E\xA1" => ':ferris_wheel:',
1608
-        "\xF0\x9F\x8E\xA2" => ':roller_coaster:',
1609
-        "\xF0\x9F\x8E\xA3" => ':fishing_pole_and_fish:',
1610
-        "\xF0\x9F\x8E\xA4" => ':microphone:',
1611
-        "\xF0\x9F\x8E\xA5" => ':movie_camera:',
1612
-        "\xF0\x9F\x8E\xA6" => ':cinema:',
1613
-        "\xF0\x9F\x8E\xA7" => ':headphones:',
1614
-        "\xF0\x9F\x8E\xA8" => ':art:',
1615
-        "\xF0\x9F\x8E\xA9" => ':tophat:',
1616
-        "\xF0\x9F\x8E\xAA" => ':circus_tent:',
1617
-        "\xF0\x9F\x8E\xAB" => ':ticket:',
1618
-        "\xF0\x9F\x8E\xAC" => ':clapper:',
1619
-        "\xF0\x9F\x8E\xAD" => ':performing_arts:',
1620
-        "\xF0\x9F\x8E\xAE" => ':video_game:',
1621
-        "\xF0\x9F\x8E\xAF" => ':dart:',
1622
-        "\xF0\x9F\x8E\xB0" => ':slot_machine:',
1623
-        "\xF0\x9F\x8E\xB1" => ':8ball:',
1624
-        "\xF0\x9F\x8E\xB2" => ':game_die:',
1625
-        "\xF0\x9F\x8E\xB3" => ':bowling:',
1626
-        "\xF0\x9F\x8E\xB4" => ':flower_playing_cards:',
1627
-        "\xF0\x9F\x8E\xB5" => ':musical_note:',
1628
-        "\xF0\x9F\x8E\xB6" => ':notes:',
1629
-        "\xF0\x9F\x8E\xB7" => ':saxophone:',
1630
-        "\xF0\x9F\x8E\xB8" => ':guitar:',
1631
-        "\xF0\x9F\x8E\xB9" => ':musical_keyboard:',
1632
-        "\xF0\x9F\x8E\xBA" => ':trumpet:',
1633
-        "\xF0\x9F\x8E\xBB" => ':violin:',
1634
-        "\xF0\x9F\x8E\xBC" => ':musical_score:',
1635
-        "\xF0\x9F\x8E\xBD" => ':running_shirt_with_sash:',
1636
-        "\xF0\x9F\x8E\xBE" => ':tennis:',
1637
-        "\xF0\x9F\x8E\xBF" => ':ski:',
1638
-        "\xF0\x9F\x8F\x80" => ':basketball:',
1639
-        "\xF0\x9F\x8F\x81" => ':checkered_flag:',
1640
-        "\xF0\x9F\x8F\x82" => ':snowboarder:',
1641
-        "\xF0\x9F\x8F\x83" => ':runner:',
1642
-        "\xF0\x9F\x8F\x84" => ':surfer:',
1643
-        "\xF0\x9F\x8F\x86" => ':trophy:',
1644
-        "\xF0\x9F\x8F\x88" => ':football:',
1645
-        "\xF0\x9F\x8F\x8A" => ':swimmer:',
1646
-        "\xF0\x9F\x8F\xA0" => ':house:',
1647
-        "\xF0\x9F\x8F\xA1" => ':house_with_garden:',
1648
-        "\xF0\x9F\x8F\xA2" => ':office:',
1649
-        "\xF0\x9F\x8F\xA3" => ':post_office:',
1650
-        "\xF0\x9F\x8F\xA5" => ':hospital:',
1651
-        "\xF0\x9F\x8F\xA6" => ':bank:',
1652
-        "\xF0\x9F\x8F\xA7" => ':atm:',
1653
-        "\xF0\x9F\x8F\xA8" => ':hotel:',
1654
-        "\xF0\x9F\x8F\xA9" => ':love_hotel:',
1655
-        "\xF0\x9F\x8F\xAA" => ':convenience_store:',
1656
-        "\xF0\x9F\x8F\xAB" => ':school:',
1657
-        "\xF0\x9F\x8F\xAC" => ':department_store:',
1658
-        "\xF0\x9F\x8F\xAD" => ':factory:',
1659
-        "\xF0\x9F\x8F\xAE" => ':izakaya_lantern:',
1660
-        "\xF0\x9F\x8F\xAF" => ':japanese_castle:',
1661
-        "\xF0\x9F\x8F\xB0" => ':european_castle:',
1662
-        "\xF0\x9F\x90\x8C" => ':snail:',
1663
-        "\xF0\x9F\x90\x8D" => ':snake:',
1664
-        "\xF0\x9F\x90\x8E" => ':racehorse:',
1665
-        "\xF0\x9F\x90\x91" => ':sheep:',
1666
-        "\xF0\x9F\x90\x92" => ':monkey:',
1667
-        "\xF0\x9F\x90\x94" => ':chicken:',
1668
-        "\xF0\x9F\x90\x97" => ':boar:',
1669
-        "\xF0\x9F\x90\x98" => ':elephant:',
1670
-        "\xF0\x9F\x90\x99" => ':octopus:',
1671
-        "\xF0\x9F\x90\x9A" => ':shell:',
1672
-        "\xF0\x9F\x90\x9B" => ':bug:',
1673
-        "\xF0\x9F\x90\x9C" => ':ant:',
1674
-        "\xF0\x9F\x90\x9D" => ':bee:',
1675
-        "\xF0\x9F\x90\x9E" => ':beetle:',
1676
-        "\xF0\x9F\x90\x9F" => ':fish:',
1677
-        "\xF0\x9F\x90\xA0" => ':tropical_fish:',
1678
-        "\xF0\x9F\x90\xA1" => ':blowfish:',
1679
-        "\xF0\x9F\x90\xA2" => ':turtle:',
1680
-        "\xF0\x9F\x90\xA3" => ':hatching_chick:',
1681
-        "\xF0\x9F\x90\xA4" => ':baby_chick:',
1682
-        "\xF0\x9F\x90\xA5" => ':hatched_chick:',
1683
-        "\xF0\x9F\x90\xA6" => ':bird:',
1684
-        "\xF0\x9F\x90\xA7" => ':penguin:',
1685
-        "\xF0\x9F\x90\xA8" => ':koala:',
1686
-        "\xF0\x9F\x90\xA9" => ':poodle:',
1687
-        "\xF0\x9F\x90\xAB" => ':camel:',
1688
-        "\xF0\x9F\x90\xAC" => ':dolphin:',
1689
-        "\xF0\x9F\x90\xAD" => ':mouse:',
1690
-        "\xF0\x9F\x90\xAE" => ':cow:',
1691
-        "\xF0\x9F\x90\xAF" => ':tiger:',
1692
-        "\xF0\x9F\x90\xB0" => ':rabbit:',
1693
-        "\xF0\x9F\x90\xB1" => ':cat:',
1694
-        "\xF0\x9F\x90\xB2" => ':dragon_face:',
1695
-        "\xF0\x9F\x90\xB3" => ':whale:',
1696
-        "\xF0\x9F\x90\xB4" => ':horse:',
1697
-        "\xF0\x9F\x90\xB5" => ':monkey_face:',
1698
-        "\xF0\x9F\x90\xB6" => ':dog:',
1699
-        "\xF0\x9F\x90\xB7" => ':pig:',
1700
-        "\xF0\x9F\x90\xB8" => ':frog:',
1701
-        "\xF0\x9F\x90\xB9" => ':hamster:',
1702
-        "\xF0\x9F\x90\xBA" => ':wolf:',
1703
-        "\xF0\x9F\x90\xBB" => ':bear:',
1704
-        "\xF0\x9F\x90\xBC" => ':panda_face:',
1705
-        "\xF0\x9F\x90\xBD" => ':pig_nose:',
1706
-        "\xF0\x9F\x90\xBE" => ':feet:',
1707
-        "\xF0\x9F\x91\x80" => ':eyes:',
1708
-        "\xF0\x9F\x91\x82" => ':ear:',
1709
-        "\xF0\x9F\x91\x83" => ':nose:',
1710
-        "\xF0\x9F\x91\x84" => ':lips:',
1711
-        "\xF0\x9F\x91\x85" => ':tongue:',
1712
-        "\xF0\x9F\x91\x86" => ':point_up_2:',
1713
-        "\xF0\x9F\x91\x87" => ':point_down:',
1714
-        "\xF0\x9F\x91\x88" => ':point_left:',
1715
-        "\xF0\x9F\x91\x89" => ':point_right:',
1716
-        "\xF0\x9F\x91\x8A" => ':punch:',
1717
-        "\xF0\x9F\x91\x8B" => ':wave:',
1718
-        "\xF0\x9F\x91\x8C" => ':ok_hand:',
1719
-        "\xF0\x9F\x91\x8D" => ':thumbsup:',
1720
-        "\xF0\x9F\x91\x8E" => ':thumbsdown:',
1721
-        "\xF0\x9F\x91\x8F" => ':clap:',
1722
-        "\xF0\x9F\x91\x90" => ':open_hands:',
1723
-        "\xF0\x9F\x91\x91" => ':crown:',
1724
-        "\xF0\x9F\x91\x92" => ':womans_hat:',
1725
-        "\xF0\x9F\x91\x93" => ':eyeglasses:',
1726
-        "\xF0\x9F\x91\x94" => ':necktie:',
1727
-        "\xF0\x9F\x91\x95" => ':shirt:',
1728
-        "\xF0\x9F\x91\x96" => ':jeans:',
1729
-        "\xF0\x9F\x91\x97" => ':dress:',
1730
-        "\xF0\x9F\x91\x98" => ':kimono:',
1731
-        "\xF0\x9F\x91\x99" => ':bikini:',
1732
-        "\xF0\x9F\x91\x9A" => ':womans_clothes:',
1733
-        "\xF0\x9F\x91\x9B" => ':purse:',
1734
-        "\xF0\x9F\x91\x9C" => ':handbag:',
1735
-        "\xF0\x9F\x91\x9D" => ':pouch:',
1736
-        "\xF0\x9F\x91\x9E" => ':mans_shoe:',
1737
-        "\xF0\x9F\x91\x9F" => ':athletic_shoe:',
1738
-        "\xF0\x9F\x91\xA0" => ':high_heel:',
1739
-        "\xF0\x9F\x91\xA1" => ':sandal:',
1740
-        "\xF0\x9F\x91\xA2" => ':boot:',
1741
-        "\xF0\x9F\x91\xA3" => ':footprints:',
1742
-        "\xF0\x9F\x91\xA4" => ':bust_in_silhouette:',
1743
-        "\xF0\x9F\x91\xA6" => ':boy:',
1744
-        "\xF0\x9F\x91\xA7" => ':girl:',
1745
-        "\xF0\x9F\x91\xA8" => ':man:',
1746
-        "\xF0\x9F\x91\xA9" => ':woman:',
1747
-        "\xF0\x9F\x91\xAA" => ':family:',
1748
-        "\xF0\x9F\x91\xAB" => ':couple:',
1749
-        "\xF0\x9F\x91\xAE" => ':cop:',
1750
-        "\xF0\x9F\x91\xAF" => ':dancers:',
1751
-        "\xF0\x9F\x91\xB0" => ':bride_with_veil:',
1752
-        "\xF0\x9F\x91\xB1" => ':person_with_blond_hair:',
1753
-        "\xF0\x9F\x91\xB2" => ':man_with_gua_pi_mao:',
1754
-        "\xF0\x9F\x91\xB3" => ':man_with_turban:',
1755
-        "\xF0\x9F\x91\xB4" => ':older_man:',
1756
-        "\xF0\x9F\x91\xB5" => ':older_woman:',
1757
-        "\xF0\x9F\x91\xB6" => ':baby:',
1758
-        "\xF0\x9F\x91\xB7" => ':construction_worker:',
1759
-        "\xF0\x9F\x91\xB8" => ':princess:',
1760
-        "\xF0\x9F\x91\xB9" => ':japanese_ogre:',
1761
-        "\xF0\x9F\x91\xBA" => ':japanese_goblin:',
1762
-        "\xF0\x9F\x91\xBB" => ':ghost:',
1763
-        "\xF0\x9F\x91\xBC" => ':angel:',
1764
-        "\xF0\x9F\x91\xBD" => ':alien:',
1765
-        "\xF0\x9F\x91\xBE" => ':space_invader:',
1766
-        "\xF0\x9F\x91\xBF" => ':imp:',
1767
-        "\xF0\x9F\x92\x80" => ':skull:',
1768
-        "\xF0\x9F\x93\x87" => ':card_index:',
1769
-        "\xF0\x9F\x92\x81" => ':information_desk_person:',
1770
-        "\xF0\x9F\x92\x82" => ':guardsman:',
1771
-        "\xF0\x9F\x92\x83" => ':dancer:',
1772
-        "\xF0\x9F\x92\x84" => ':lipstick:',
1773
-        "\xF0\x9F\x92\x85" => ':nail_care:',
1774
-        "\xF0\x9F\x93\x92" => ':ledger:',
1775
-        "\xF0\x9F\x92\x86" => ':massage:',
1776
-        "\xF0\x9F\x93\x93" => ':notebook:',
1777
-        "\xF0\x9F\x92\x87" => ':haircut:',
1778
-        "\xF0\x9F\x93\x94" => ':notebook_with_decorative_cover:',
1779
-        "\xF0\x9F\x92\x88" => ':barber:',
1780
-        "\xF0\x9F\x93\x95" => ':closed_book:',
1781
-        "\xF0\x9F\x92\x89" => ':syringe:',
1782
-        "\xF0\x9F\x93\x96" => ':book:',
1783
-        "\xF0\x9F\x92\x8A" => ':pill:',
1784
-        "\xF0\x9F\x93\x97" => ':green_book:',
1785
-        "\xF0\x9F\x92\x8B" => ':kiss:',
1786
-        "\xF0\x9F\x93\x98" => ':blue_book:',
1787
-        "\xF0\x9F\x92\x8C" => ':love_letter:',
1788
-        "\xF0\x9F\x93\x99" => ':orange_book:',
1789
-        "\xF0\x9F\x92\x8D" => ':ring:',
1790
-        "\xF0\x9F\x93\x9A" => ':books:',
1791
-        "\xF0\x9F\x92\x8E" => ':gem:',
1792
-        "\xF0\x9F\x93\x9B" => ':name_badge:',
1793
-        "\xF0\x9F\x92\x8F" => ':couplekiss:',
1794
-        "\xF0\x9F\x93\x9C" => ':scroll:',
1795
-        "\xF0\x9F\x92\x90" => ':bouquet:',
1796
-        "\xF0\x9F\x93\x9D" => ':pencil:',
1797
-        "\xF0\x9F\x92\x91" => ':couple_with_heart:',
1798
-        "\xF0\x9F\x93\x9E" => ':telephone_receiver:',
1799
-        "\xF0\x9F\x92\x92" => ':wedding:',
1800
-        "\xF0\x9F\x93\x9F" => ':pager:',
1801
-        "\xF0\x9F\x93\xA0" => ':fax:',
1802
-        "\xF0\x9F\x92\x93" => ':heartbeat:',
1803
-        "\xF0\x9F\x93\xA1" => ':satellite:',
1804
-        "\xF0\x9F\x93\xA2" => ':loudspeaker:',
1805
-        "\xF0\x9F\x92\x94" => ':broken_heart:',
1806
-        "\xF0\x9F\x93\xA3" => ':mega:',
1807
-        "\xF0\x9F\x93\xA4" => ':outbox_tray:',
1808
-        "\xF0\x9F\x92\x95" => ':two_hearts:',
1809
-        "\xF0\x9F\x93\xA5" => ':inbox_tray:',
1810
-        "\xF0\x9F\x93\xA6" => ':package:',
1811
-        "\xF0\x9F\x92\x96" => ':sparkling_heart:',
1812
-        "\xF0\x9F\x93\xA7" => ':e-mail:',
1813
-        "\xF0\x9F\x93\xA8" => ':incoming_envelope:',
1814
-        "\xF0\x9F\x92\x97" => ':heartpulse:',
1815
-        "\xF0\x9F\x93\xA9" => ':envelope_with_arrow:',
1816
-        "\xF0\x9F\x93\xAA" => ':mailbox_closed:',
1817
-        "\xF0\x9F\x92\x98" => ':cupid:',
1818
-        "\xF0\x9F\x93\xAB" => ':mailbox:',
1819
-        "\xF0\x9F\x93\xAE" => ':postbox:',
1820
-        "\xF0\x9F\x92\x99" => ':blue_heart:',
1821
-        "\xF0\x9F\x93\xB0" => ':newspaper:',
1822
-        "\xF0\x9F\x93\xB1" => ':iphone:',
1823
-        "\xF0\x9F\x92\x9A" => ':green_heart:',
1824
-        "\xF0\x9F\x93\xB2" => ':calling:',
1825
-        "\xF0\x9F\x93\xB3" => ':vibration_mode:',
1826
-        "\xF0\x9F\x92\x9B" => ':yellow_heart:',
1827
-        "\xF0\x9F\x93\xB4" => ':mobile_phone_off:',
1828
-        "\xF0\x9F\x93\xB6" => ':signal_strength:',
1829
-        "\xF0\x9F\x92\x9C" => ':purple_heart:',
1830
-        "\xF0\x9F\x93\xB7" => ':camera:',
1831
-        "\xF0\x9F\x93\xB9" => ':video_camera:',
1832
-        "\xF0\x9F\x92\x9D" => ':gift_heart:',
1833
-        "\xF0\x9F\x93\xBA" => ':tv:',
1834
-        "\xF0\x9F\x93\xBB" => ':radio:',
1835
-        "\xF0\x9F\x92\x9E" => ':revolving_hearts:',
1836
-        "\xF0\x9F\x93\xBC" => ':vhs:',
1837
-        "\xF0\x9F\x94\x83" => ':arrows_clockwise:',
1838
-        "\xF0\x9F\x92\x9F" => ':heart_decoration:',
1839
-        "\xF0\x9F\x94\x8A" => ':loud_sound:',
1840
-        "\xF0\x9F\x94\x8B" => ':battery:',
1841
-        "\xF0\x9F\x92\xA0" => ':diamond_shape_with_a_dot_inside:',
1842
-        "\xF0\x9F\x94\x8C" => ':electric_plug:',
1843
-        "\xF0\x9F\x94\x8D" => ':mag:',
1844
-        "\xF0\x9F\x92\xA1" => ':bulb:',
1845
-        "\xF0\x9F\x94\x8E" => ':mag_right:',
1846
-        "\xF0\x9F\x94\x8F" => ':lock_with_ink_pen:',
1847
-        "\xF0\x9F\x92\xA2" => ':anger:',
1848
-        "\xF0\x9F\x94\x90" => ':closed_lock_with_key:',
1849
-        "\xF0\x9F\x94\x91" => ':key:',
1850
-        "\xF0\x9F\x92\xA3" => ':bomb:',
1851
-        "\xF0\x9F\x94\x92" => ':lock:',
1852
-        "\xF0\x9F\x94\x93" => ':unlock:',
1853
-        "\xF0\x9F\x92\xA4" => ':zzz:',
1854
-        "\xF0\x9F\x94\x94" => ':bell:',
1855
-        "\xF0\x9F\x94\x96" => ':bookmark:',
1856
-        "\xF0\x9F\x92\xA5" => ':boom:',
1857
-        "\xF0\x9F\x94\x97" => ':link:',
1858
-        "\xF0\x9F\x94\x98" => ':radio_button:',
1859
-        "\xF0\x9F\x92\xA6" => ':sweat_drops:',
1860
-        "\xF0\x9F\x94\x99" => ':back:',
1861
-        "\xF0\x9F\x94\x9A" => ':end:',
1862
-        "\xF0\x9F\x92\xA7" => ':droplet:',
1863
-        "\xF0\x9F\x94\x9B" => ':on:',
1864
-        "\xF0\x9F\x94\x9C" => ':soon:',
1865
-        "\xF0\x9F\x92\xA8" => ':dash:',
1866
-        "\xF0\x9F\x94\x9D" => ':top:',
1867
-        "\xF0\x9F\x94\x9E" => ':underage:',
1868
-        "\xF0\x9F\x92\xA9" => ':poop:',
1869
-        "\xF0\x9F\x94\x9F" => ':keycap_ten:',
1870
-        "\xF0\x9F\x92\xAA" => ':muscle:',
1871
-        "\xF0\x9F\x94\xA0" => ':capital_abcd:',
1872
-        "\xF0\x9F\x94\xA1" => ':abcd:',
1873
-        "\xF0\x9F\x92\xAB" => ':dizzy:',
1874
-        "\xF0\x9F\x94\xA2" => ':1234:',
1875
-        "\xF0\x9F\x94\xA3" => ':symbols:',
1876
-        "\xF0\x9F\x92\xAC" => ':speech_balloon:',
1877
-        "\xF0\x9F\x94\xA4" => ':abc:',
1878
-        "\xF0\x9F\x94\xA5" => ':fire:',
1879
-        "\xF0\x9F\x92\xAE" => ':white_flower:',
1880
-        "\xF0\x9F\x94\xA6" => ':flashlight:',
1881
-        "\xF0\x9F\x94\xA7" => ':wrench:',
1882
-        "\xF0\x9F\x92\xAF" => ':100:',
1883
-        "\xF0\x9F\x94\xA8" => ':hammer:',
1884
-        "\xF0\x9F\x94\xA9" => ':nut_and_bolt:',
1885
-        "\xF0\x9F\x92\xB0" => ':moneybag:',
1886
-        "\xF0\x9F\x94\xAA" => ':knife:',
1887
-        "\xF0\x9F\x94\xAB" => ':gun:',
1888
-        "\xF0\x9F\x92\xB1" => ':currency_exchange:',
1889
-        "\xF0\x9F\x94\xAE" => ':crystal_ball:',
1890
-        "\xF0\x9F\x92\xB2" => ':heavy_dollar_sign:',
1891
-        "\xF0\x9F\x94\xAF" => ':six_pointed_star:',
1892
-        "\xF0\x9F\x92\xB3" => ':credit_card:',
1893
-        "\xF0\x9F\x94\xB0" => ':beginner:',
1894
-        "\xF0\x9F\x94\xB1" => ':trident:',
1895
-        "\xF0\x9F\x92\xB4" => ':yen:',
1896
-        "\xF0\x9F\x94\xB2" => ':black_square_button:',
1897
-        "\xF0\x9F\x94\xB3" => ':white_square_button:',
1898
-        "\xF0\x9F\x92\xB5" => ':dollar:',
1899
-        "\xF0\x9F\x94\xB4" => ':red_circle:',
1900
-        "\xF0\x9F\x94\xB5" => ':large_blue_circle:',
1901
-        "\xF0\x9F\x92\xB8" => ':money_with_wings:',
1902
-        "\xF0\x9F\x94\xB6" => ':large_orange_diamond:',
1903
-        "\xF0\x9F\x94\xB7" => ':large_blue_diamond:',
1904
-        "\xF0\x9F\x92\xB9" => ':chart:',
1905
-        "\xF0\x9F\x94\xB8" => ':small_orange_diamond:',
1906
-        "\xF0\x9F\x94\xB9" => ':small_blue_diamond:',
1907
-        "\xF0\x9F\x92\xBA" => ':seat:',
1908
-        "\xF0\x9F\x94\xBA" => ':small_red_triangle:',
1909
-        "\xF0\x9F\x94\xBB" => ':small_red_triangle_down:',
1910
-        "\xF0\x9F\x92\xBB" => ':computer:',
1911
-        "\xF0\x9F\x94\xBC" => ':arrow_up_small:',
1912
-        "\xF0\x9F\x92\xBC" => ':briefcase:',
1913
-        "\xF0\x9F\x94\xBD" => ':arrow_down_small:',
1914
-        "\xF0\x9F\x95\x90" => ':clock1:',
1915
-        "\xF0\x9F\x92\xBD" => ':minidisc:',
1916
-        "\xF0\x9F\x95\x91" => ':clock2:',
1917
-        "\xF0\x9F\x92\xBE" => ':floppy_disk:',
1918
-        "\xF0\x9F\x95\x92" => ':clock3:',
1919
-        "\xF0\x9F\x92\xBF" => ':cd:',
1920
-        "\xF0\x9F\x95\x93" => ':clock4:',
1921
-        "\xF0\x9F\x93\x80" => ':dvd:',
1922
-        "\xF0\x9F\x95\x94" => ':clock5:',
1923
-        "\xF0\x9F\x95\x95" => ':clock6:',
1924
-        "\xF0\x9F\x93\x81" => ':file_folder:',
1925
-        "\xF0\x9F\x95\x96" => ':clock7:',
1926
-        "\xF0\x9F\x95\x97" => ':clock8:',
1927
-        "\xF0\x9F\x93\x82" => ':open_file_folder:',
1928
-        "\xF0\x9F\x95\x98" => ':clock9:',
1929
-        "\xF0\x9F\x95\x99" => ':clock10:',
1930
-        "\xF0\x9F\x93\x83" => ':page_with_curl:',
1931
-        "\xF0\x9F\x95\x9A" => ':clock11:',
1932
-        "\xF0\x9F\x95\x9B" => ':clock12:',
1933
-        "\xF0\x9F\x93\x84" => ':page_facing_up:',
1934
-        "\xF0\x9F\x97\xBB" => ':mount_fuji:',
1935
-        "\xF0\x9F\x97\xBC" => ':tokyo_tower:',
1936
-        "\xF0\x9F\x93\x85" => ':date:',
1937
-        "\xF0\x9F\x97\xBD" => ':statue_of_liberty:',
1938
-        "\xF0\x9F\x97\xBE" => ':japan:',
1939
-        "\xF0\x9F\x93\x86" => ':calendar:',
1940
-        "\xF0\x9F\x97\xBF" => ':moyai:',
1941
-        "\xF0\x9F\x98\x81" => ':grin:',
1942
-        "\xF0\x9F\x98\x82" => ':joy:',
1943
-        "\xF0\x9F\x98\x83" => ':smiley:',
1944
-        "\xF0\x9F\x93\x88" => ':chart_with_upwards_trend:',
1945
-        "\xF0\x9F\x98\x84" => ':smile:',
1946
-        "\xF0\x9F\x98\x85" => ':sweat_smile:',
1947
-        "\xF0\x9F\x93\x89" => ':chart_with_downwards_trend:',
1948
-        "\xF0\x9F\x98\x86" => ':laughing:',
1949
-        "\xF0\x9F\x98\x89" => ':wink:',
1950
-        "\xF0\x9F\x93\x8A" => ':bar_chart:',
1951
-        "\xF0\x9F\x98\x8A" => ':blush:',
1952
-        "\xF0\x9F\x98\x8B" => ':yum:',
1953
-        "\xF0\x9F\x93\x8B" => ':clipboard:',
1954
-        "\xF0\x9F\x98\x8C" => ':relieved:',
1955
-        "\xF0\x9F\x98\x8D" => ':heart_eyes:',
1956
-        "\xF0\x9F\x93\x8C" => ':pushpin:',
1957
-        "\xF0\x9F\x98\x8F" => ':smirk:',
1958
-        "\xF0\x9F\x98\x92" => ':unamused:',
1959
-        "\xF0\x9F\x93\x8D" => ':round_pushpin:',
1960
-        "\xF0\x9F\x98\x93" => ':sweat:',
1961
-        "\xF0\x9F\x98\x94" => ':pensive:',
1962
-        "\xF0\x9F\x93\x8E" => ':paperclip:',
1963
-        "\xF0\x9F\x98\x96" => ':confounded:',
1964
-        "\xF0\x9F\x98\x98" => ':kissing_heart:',
1965
-        "\xF0\x9F\x93\x8F" => ':straight_ruler:',
1966
-        "\xF0\x9F\x98\x9A" => ':kissing_closed_eyes:',
1967
-        "\xF0\x9F\x98\x9C" => ':stuck_out_tongue_winking_eye:',
1968
-        "\xF0\x9F\x93\x90" => ':triangular_ruler:',
1969
-        "\xF0\x9F\x98\x9D" => ':stuck_out_tongue_closed_eyes:',
1970
-        "\xF0\x9F\x98\x9E" => ':disappointed:',
1971
-        "\xF0\x9F\x93\x91" => ':bookmark_tabs:',
1972
-        "\xF0\x9F\x98\xA0" => ':angry:',
1973
-        "\xF0\x9F\x98\xA1" => ':rage:',
1974
-        "\xF0\x9F\x98\xA2" => ':cry:',
1975
-        "\xF0\x9F\x98\xA3" => ':persevere:',
1976
-        "\xF0\x9F\x98\xA4" => ':triumph:',
1977
-        "\xF0\x9F\x98\xA5" => ':disappointed_relieved:',
1978
-        "\xF0\x9F\x98\xA8" => ':fearful:',
1979
-        "\xF0\x9F\x98\xA9" => ':weary:',
1980
-        "\xF0\x9F\x98\xAA" => ':sleepy:',
1981
-        "\xF0\x9F\x98\xAB" => ':tired_face:',
1982
-        "\xF0\x9F\x98\xAD" => ':sob:',
1983
-        "\xF0\x9F\x98\xB0" => ':cold_sweat:',
1984
-        "\xF0\x9F\x98\xB1" => ':scream:',
1985
-        "\xF0\x9F\x98\xB2" => ':astonished:',
1986
-        "\xF0\x9F\x98\xB3" => ':flushed:',
1987
-        "\xF0\x9F\x98\xB5" => ':dizzy_face:',
1988
-        "\xF0\x9F\x98\xB7" => ':mask:',
1989
-        "\xF0\x9F\x98\xB8" => ':smile_cat:',
1990
-        "\xF0\x9F\x98\xB9" => ':joy_cat:',
1991
-        "\xF0\x9F\x98\xBA" => ':smiley_cat:',
1992
-        "\xF0\x9F\x98\xBB" => ':heart_eyes_cat:',
1993
-        "\xF0\x9F\x98\xBC" => ':smirk_cat:',
1994
-        "\xF0\x9F\x98\xBD" => ':kissing_cat:',
1995
-        "\xF0\x9F\x98\xBE" => ':pouting_cat:',
1996
-        "\xF0\x9F\x98\xBF" => ':crying_cat_face:',
1997
-        "\xF0\x9F\x99\x80" => ':scream_cat:',
1998
-        "\xF0\x9F\x99\x85" => ':no_good:',
1999
-        "\xF0\x9F\x99\x86" => ':ok_woman:',
2000
-        "\xF0\x9F\x99\x87" => ':bow:',
2001
-        "\xF0\x9F\x99\x88" => ':see_no_evil:',
2002
-        "\xF0\x9F\x99\x89" => ':hear_no_evil:',
2003
-        "\xF0\x9F\x99\x8A" => ':speak_no_evil:',
2004
-        "\xF0\x9F\x99\x8B" => ':raising_hand:',
2005
-        "\xF0\x9F\x99\x8C" => ':raised_hands:',
2006
-        "\xF0\x9F\x99\x8D" => ':person_frowning:',
2007
-        "\xF0\x9F\x99\x8E" => ':person_with_pouting_face:',
2008
-        "\xF0\x9F\x99\x8F" => ':pray:',
2009
-        "\xF0\x9F\x9A\x80" => ':rocket:',
2010
-        "\xF0\x9F\x9A\x83" => ':railway_car:',
2011
-        "\xF0\x9F\x9A\x84" => ':bullettrain_side:',
2012
-        "\xF0\x9F\x9A\x85" => ':bullettrain_front:',
2013
-        "\xF0\x9F\x9A\x87" => ':metro:',
2014
-        "\xF0\x9F\x9A\x89" => ':station:',
2015
-        "\xF0\x9F\x9A\x8C" => ':bus:',
2016
-        "\xF0\x9F\x9A\x8F" => ':busstop:',
2017
-        "\xF0\x9F\x9A\x91" => ':ambulance:',
2018
-        "\xF0\x9F\x9A\x92" => ':fire_engine:',
2019
-        "\xF0\x9F\x9A\x93" => ':police_car:',
2020
-        "\xF0\x9F\x9A\x95" => ':taxi:',
2021
-        "\xF0\x9F\x9A\x97" => ':red_car:',
2022
-        "\xF0\x9F\x9A\x99" => ':blue_car:',
2023
-        "\xF0\x9F\x9A\x9A" => ':truck:',
2024
-        "\xF0\x9F\x9A\xA2" => ':ship:',
2025
-        "\xF0\x9F\x9A\xA4" => ':speedboat:',
2026
-        "\xF0\x9F\x9A\xA5" => ':traffic_light:',
2027
-        "\xF0\x9F\x9A\xA7" => ':construction:',
2028
-        "\xF0\x9F\x9A\xA8" => ':rotating_light:',
2029
-        "\xF0\x9F\x9A\xA9" => ':triangular_flag_on_post:',
2030
-        "\xF0\x9F\x9A\xAA" => ':door:',
2031
-        "\xF0\x9F\x9A\xAB" => ':no_entry_sign:',
2032
-        "\xF0\x9F\x9A\xAC" => ':smoking:',
2033
-        "\xF0\x9F\x9A\xAD" => ':no_smoking:',
2034
-        "\xF0\x9F\x9A\xB2" => ':bike:',
2035
-        "\xF0\x9F\x9A\xB6" => ':walking:',
2036
-        "\xF0\x9F\x9A\xB9" => ':mens:',
2037
-        "\xF0\x9F\x9A\xBA" => ':womens:',
2038
-        "\xF0\x9F\x9A\xBB" => ':restroom:',
2039
-        "\xF0\x9F\x9A\xBC" => ':baby_symbol:',
2040
-        "\xF0\x9F\x9A\xBD" => ':toilet:',
2041
-        "\xF0\x9F\x9A\xBE" => ':wc:',
2042
-        "\xF0\x9F\x9B\x80" => ':bath:',
2043
-        "\xF0\x9F\x98\x80" => ':grinning:',
2044
-        "\xF0\x9F\x98\x87" => ':innocent:',
2045
-        "\xF0\x9F\x98\x88" => ':smiling_imp:',
2046
-        "\xF0\x9F\x98\x8E" => ':sunglasses:',
2047
-        "\xF0\x9F\x98\x90" => ':neutral_face:',
2048
-        "\xF0\x9F\x98\x91" => ':expressionless:',
2049
-        "\xF0\x9F\x98\x95" => ':confused:',
2050
-        "\xF0\x9F\x98\x97" => ':kissing:',
2051
-        "\xF0\x9F\x98\x99" => ':kissing_smiling_eyes:',
2052
-        "\xF0\x9F\x98\x9B" => ':stuck_out_tongue:',
2053
-        "\xF0\x9F\x98\x9F" => ':worried:',
2054
-        "\xF0\x9F\x98\xA6" => ':frowning:',
2055
-        "\xF0\x9F\x98\xA7" => ':anguished:',
2056
-        "\xF0\x9F\x98\xAC" => ':grimacing:',
2057
-        "\xF0\x9F\x98\xAE" => ':open_mouth:',
2058
-        "\xF0\x9F\x98\xAF" => ':hushed:',
2059
-        "\xF0\x9F\x98\xB4" => ':sleeping:',
2060
-        "\xF0\x9F\x98\xB6" => ':no_mouth:',
2061
-        "\xF0\x9F\x9A\x81" => ':helicopter:',
2062
-        "\xF0\x9F\x9A\x82" => ':steam_locomotive:',
2063
-        "\xF0\x9F\x9A\x86" => ':train2:',
2064
-        "\xF0\x9F\x9A\x88" => ':light_rail:',
2065
-        "\xF0\x9F\x9A\x8A" => ':tram:',
2066
-        "\xF0\x9F\x9A\x8D" => ':oncoming_bus:',
2067
-        "\xF0\x9F\x9A\x8E" => ':trolleybus:',
2068
-        "\xF0\x9F\x9A\x90" => ':minibus:',
2069
-        "\xF0\x9F\x9A\x94" => ':oncoming_police_car:',
2070
-        "\xF0\x9F\x9A\x96" => ':oncoming_taxi:',
2071
-        "\xF0\x9F\x9A\x98" => ':oncoming_automobile:',
2072
-        "\xF0\x9F\x9A\x9B" => ':articulated_lorry:',
2073
-        "\xF0\x9F\x9A\x9C" => ':tractor:',
2074
-        "\xF0\x9F\x9A\x9D" => ':monorail:',
2075
-        "\xF0\x9F\x9A\x9E" => ':mountain_railway:',
2076
-        "\xF0\x9F\x9A\x9F" => ':suspension_railway:',
2077
-        "\xF0\x9F\x9A\xA0" => ':mountain_cableway:',
2078
-        "\xF0\x9F\x9A\xA1" => ':aerial_tramway:',
2079
-        "\xF0\x9F\x9A\xA3" => ':rowboat:',
2080
-        "\xF0\x9F\x9A\xA6" => ':vertical_traffic_light:',
2081
-        "\xF0\x9F\x9A\xAE" => ':put_litter_in_its_place:',
2082
-        "\xF0\x9F\x9A\xAF" => ':do_not_litter:',
2083
-        "\xF0\x9F\x9A\xB0" => ':potable_water:',
2084
-        "\xF0\x9F\x9A\xB1" => ':non-potable_water:',
2085
-        "\xF0\x9F\x9A\xB3" => ':no_bicycles:',
2086
-        "\xF0\x9F\x9A\xB4" => ':bicyclist:',
2087
-        "\xF0\x9F\x9A\xB5" => ':mountain_bicyclist:',
2088
-        "\xF0\x9F\x9A\xB7" => ':no_pedestrians:',
2089
-        "\xF0\x9F\x9A\xB8" => ':children_crossing:',
2090
-        "\xF0\x9F\x9A\xBF" => ':shower:',
2091
-        "\xF0\x9F\x9B\x81" => ':bathtub:',
2092
-        "\xF0\x9F\x9B\x82" => ':passport_control:',
2093
-        "\xF0\x9F\x9B\x83" => ':customs:',
2094
-        "\xF0\x9F\x9B\x84" => ':baggage_claim:',
2095
-        "\xF0\x9F\x9B\x85" => ':left_luggage:',
2096
-        "\xF0\x9F\x8C\x8D" => ':earth_africa:',
2097
-        "\xF0\x9F\x8C\x8E" => ':earth_americas:',
2098
-        "\xF0\x9F\x8C\x90" => ':globe_with_meridians:',
2099
-        "\xF0\x9F\x8C\x92" => ':waxing_crescent_moon:',
2100
-        "\xF0\x9F\x8C\x96" => ':waning_gibbous_moon:',
2101
-        "\xF0\x9F\x8C\x97" => ':last_quarter_moon:',
2102
-        "\xF0\x9F\x8C\x98" => ':waning_crescent_moon:',
2103
-        "\xF0\x9F\x8C\x9A" => ':new_moon_with_face:',
2104
-        "\xF0\x9F\x8C\x9C" => ':last_quarter_moon_with_face:',
2105
-        "\xF0\x9F\x8C\x9D" => ':full_moon_with_face:',
2106
-        "\xF0\x9F\x8C\x9E" => ':sun_with_face:',
2107
-        "\xF0\x9F\x8C\xB2" => ':evergreen_tree:',
2108
-        "\xF0\x9F\x8C\xB3" => ':deciduous_tree:',
2109
-        "\xF0\x9F\x8D\x8B" => ':lemon:',
2110
-        "\xF0\x9F\x8D\x90" => ':pear:',
2111
-        "\xF0\x9F\x8D\xBC" => ':baby_bottle:',
2112
-        "\xF0\x9F\x8F\x87" => ':horse_racing:',
2113
-        "\xF0\x9F\x8F\x89" => ':rugby_football:',
2114
-        "\xF0\x9F\x8F\xA4" => ':european_post_office:',
2115
-        "\xF0\x9F\x90\x80" => ':rat:',
2116
-        "\xF0\x9F\x90\x81" => ':mouse2:',
2117
-        "\xF0\x9F\x90\x82" => ':ox:',
2118
-        "\xF0\x9F\x90\x83" => ':water_buffalo:',
2119
-        "\xF0\x9F\x90\x84" => ':cow2:',
2120
-        "\xF0\x9F\x90\x85" => ':tiger2:',
2121
-        "\xF0\x9F\x90\x86" => ':leopard:',
2122
-        "\xF0\x9F\x90\x87" => ':rabbit2:',
2123
-        "\xF0\x9F\x90\x88" => ':cat2:',
2124
-        "\xF0\x9F\x90\x89" => ':dragon:',
2125
-        "\xF0\x9F\x90\x8A" => ':crocodile:',
2126
-        "\xF0\x9F\x90\x8B" => ':whale2:',
2127
-        "\xF0\x9F\x90\x8F" => ':ram:',
2128
-        "\xF0\x9F\x90\x90" => ':goat:',
2129
-        "\xF0\x9F\x90\x93" => ':rooster:',
2130
-        "\xF0\x9F\x90\x95" => ':dog2:',
2131
-        "\xF0\x9F\x90\x96" => ':pig2:',
2132
-        "\xF0\x9F\x90\xAA" => ':dromedary_camel:',
2133
-        "\xF0\x9F\x91\xA5" => ':busts_in_silhouette:',
2134
-        "\xF0\x9F\x91\xAC" => ':two_men_holding_hands:',
2135
-        "\xF0\x9F\x91\xAD" => ':two_women_holding_hands:',
2136
-        "\xF0\x9F\x92\xAD" => ':thought_balloon:',
2137
-        "\xF0\x9F\x92\xB6" => ':euro:',
2138
-        "\xF0\x9F\x92\xB7" => ':pound:',
2139
-        "\xF0\x9F\x93\xAC" => ':mailbox_with_mail:',
2140
-        "\xF0\x9F\x93\xAD" => ':mailbox_with_no_mail:',
2141
-        "\xF0\x9F\x93\xAF" => ':postal_horn:',
2142
-        "\xF0\x9F\x93\xB5" => ':no_mobile_phones:',
2143
-        "\xF0\x9F\x94\x80" => ':twisted_rightwards_arrows:',
2144
-        "\xF0\x9F\x94\x81" => ':repeat:',
2145
-        "\xF0\x9F\x94\x82" => ':repeat_one:',
2146
-        "\xF0\x9F\x94\x84" => ':arrows_counterclockwise:',
2147
-        "\xF0\x9F\x94\x85" => ':low_brightness:',
2148
-        "\xF0\x9F\x94\x86" => ':high_brightness:',
2149
-        "\xF0\x9F\x94\x87" => ':mute:',
2150
-        "\xF0\x9F\x94\x89" => ':sound:',
2151
-        "\xF0\x9F\x94\x95" => ':no_bell:',
2152
-        "\xF0\x9F\x94\xAC" => ':microscope:',
2153
-        "\xF0\x9F\x94\xAD" => ':telescope:',
2154
-        "\xF0\x9F\x95\x9C" => ':clock130:',
2155
-        "\xF0\x9F\x95\x9D" => ':clock230:',
2156
-        "\xF0\x9F\x95\x9E" => ':clock330:',
2157
-        "\xF0\x9F\x95\x9F" => ':clock430:',
2158
-        "\xF0\x9F\x95\xA0" => ':clock530:',
2159
-        "\xF0\x9F\x95\xA1" => ':clock630:',
2160
-        "\xF0\x9F\x95\xA2" => ':clock730:',
2161
-        "\xF0\x9F\x95\xA3" => ':clock830:',
2162
-        "\xF0\x9F\x95\xA4" => ':clock930:',
2163
-        "\xF0\x9F\x95\xA5" => ':clock1030:',
2164
-        "\xF0\x9F\x95\xA6" => ':clock1130:',
2165
-        "\xF0\x9F\x95\xA7" => ':clock1230:',
2166
-        "\xF0\x9F\x94\x88" => ':speaker:',
2167
-        "\xF0\x9F\x9A\x8B" => ':train:',
2168
-        "\xE2\x9E\xBF" => ':loop:',
2169
-        "\xF0\x9F\x87\xA6\xF0\x9F\x87\xAB" => ':af:',
2170
-        "\xF0\x9F\x87\xA6\xF0\x9F\x87\xB1" => ':al:',
2171
-        "\xF0\x9F\x87\xA9\xF0\x9F\x87\xBF" => ':dz:',
2172
-        "\xF0\x9F\x87\xA6\xF0\x9F\x87\xA9" => ':ad:',
2173
-        "\xF0\x9F\x87\xA6\xF0\x9F\x87\xB4" => ':ao:',
2174
-        "\xF0\x9F\x87\xA6\xF0\x9F\x87\xAC" => ':ag:',
2175
-        "\xF0\x9F\x87\xA6\xF0\x9F\x87\xB7" => ':ar:',
2176
-        "\xF0\x9F\x87\xA6\xF0\x9F\x87\xB2" => ':am:',
2177
-        "\xF0\x9F\x87\xA6\xF0\x9F\x87\xBA" => ':au:',
2178
-        "\xF0\x9F\x87\xA6\xF0\x9F\x87\xB9" => ':at:',
2179
-        "\xF0\x9F\x87\xA6\xF0\x9F\x87\xBF" => ':az:',
2180
-        "\xF0\x9F\x87\xA7\xF0\x9F\x87\xB8" => ':bs:',
2181
-        "\xF0\x9F\x87\xA7\xF0\x9F\x87\xAD" => ':bh:',
2182
-        "\xF0\x9F\x87\xA7\xF0\x9F\x87\xA9" => ':bd:',
2183
-        "\xF0\x9F\x87\xA7\xF0\x9F\x87\xA7" => ':bb:',
2184
-        "\xF0\x9F\x87\xA7\xF0\x9F\x87\xBE" => ':by:',
2185
-        "\xF0\x9F\x87\xA7\xF0\x9F\x87\xAA" => ':be:',
2186
-        "\xF0\x9F\x87\xA7\xF0\x9F\x87\xBF" => ':bz:',
2187
-        "\xF0\x9F\x87\xA7\xF0\x9F\x87\xAF" => ':bj:',
2188
-        "\xF0\x9F\x87\xA7\xF0\x9F\x87\xB9" => ':bt:',
2189
-        "\xF0\x9F\x87\xA7\xF0\x9F\x87\xB4" => ':bo:',
2190
-        "\xF0\x9F\x87\xA7\xF0\x9F\x87\xA6" => ':ba:',
2191
-        "\xF0\x9F\x87\xA7\xF0\x9F\x87\xBC" => ':bw:',
2192
-        "\xF0\x9F\x87\xA7\xF0\x9F\x87\xB7" => ':br:',
2193
-        "\xF0\x9F\x87\xA7\xF0\x9F\x87\xB3" => ':bn:',
2194
-        "\xF0\x9F\x87\xA7\xF0\x9F\x87\xAC" => ':bg:',
2195
-        "\xF0\x9F\x87\xA7\xF0\x9F\x87\xAB" => ':bf:',
2196
-        "\xF0\x9F\x87\xA7\xF0\x9F\x87\xAE" => ':bi:',
2197
-        "\xF0\x9F\x87\xB0\xF0\x9F\x87\xAD" => ':kh:',
2198
-        "\xF0\x9F\x87\xA8\xF0\x9F\x87\xB2" => ':cm:',
2199
-        "\xF0\x9F\x87\xA8\xF0\x9F\x87\xA6" => ':ca:',
2200
-        "\xF0\x9F\x87\xA8\xF0\x9F\x87\xBB" => ':cv:',
2201
-        "\xF0\x9F\x87\xA8\xF0\x9F\x87\xAB" => ':cf:',
2202
-        "\xF0\x9F\x87\xB9\xF0\x9F\x87\xA9" => ':td:',
2203
-        "\xF0\x9F\x87\xA8\xF0\x9F\x87\xB1" => ':chile:',
2204
-        "\xF0\x9F\x87\xA8\xF0\x9F\x87\xB4" => ':co:',
2205
-        "\xF0\x9F\x87\xB0\xF0\x9F\x87\xB2" => ':km:',
2206
-        "\xF0\x9F\x87\xA8\xF0\x9F\x87\xB7" => ':cr:',
2207
-        "\xF0\x9F\x87\xA8\xF0\x9F\x87\xAE" => ':ci:',
2208
-        "\xF0\x9F\x87\xAD\xF0\x9F\x87\xB7" => ':hr:',
2209
-        "\xF0\x9F\x87\xA8\xF0\x9F\x87\xBA" => ':cu:',
2210
-        "\xF0\x9F\x87\xA8\xF0\x9F\x87\xBE" => ':cy:',
2211
-        "\xF0\x9F\x87\xA8\xF0\x9F\x87\xBF" => ':cz:',
2212
-        "\xF0\x9F\x87\xA8\xF0\x9F\x87\xA9" => ':congo:',
2213
-        "\xF0\x9F\x87\xA9\xF0\x9F\x87\xB0" => ':dk:',
2214
-        "\xF0\x9F\x87\xA9\xF0\x9F\x87\xAF" => ':dj:',
2215
-        "\xF0\x9F\x87\xA9\xF0\x9F\x87\xB2" => ':dm:',
2216
-        "\xF0\x9F\x87\xA9\xF0\x9F\x87\xB4" => ':do:',
2217
-        "\xF0\x9F\x87\xB9\xF0\x9F\x87\xB1" => ':tl:',
2218
-        "\xF0\x9F\x87\xAA\xF0\x9F\x87\xA8" => ':ec:',
2219
-        "\xF0\x9F\x87\xAA\xF0\x9F\x87\xAC" => ':eg:',
2220
-        "\xF0\x9F\x87\xB8\xF0\x9F\x87\xBB" => ':sv:',
2221
-        "\xF0\x9F\x87\xAC\xF0\x9F\x87\xB6" => ':gq:',
2222
-        "\xF0\x9F\x87\xAA\xF0\x9F\x87\xB7" => ':er:',
2223
-        "\xF0\x9F\x87\xAA\xF0\x9F\x87\xAA" => ':ee:',
2224
-        "\xF0\x9F\x87\xAA\xF0\x9F\x87\xB9" => ':et:',
2225
-        "\xF0\x9F\x87\xAB\xF0\x9F\x87\xAF" => ':fj:',
2226
-        "\xF0\x9F\x87\xAB\xF0\x9F\x87\xAE" => ':fi:',
2227
-        "\xF0\x9F\x87\xAC\xF0\x9F\x87\xA6" => ':ga:',
2228
-        "\xF0\x9F\x87\xAC\xF0\x9F\x87\xB2" => ':gm:',
2229
-        "\xF0\x9F\x87\xAC\xF0\x9F\x87\xAA" => ':ge:',
2230
-        "\xF0\x9F\x87\xAC\xF0\x9F\x87\xAD" => ':gh:',
2231
-        "\xF0\x9F\x87\xAC\xF0\x9F\x87\xB7" => ':gr:',
2232
-        "\xF0\x9F\x87\xAC\xF0\x9F\x87\xA9" => ':gd:',
2233
-        "\xF0\x9F\x87\xAC\xF0\x9F\x87\xB9" => ':gt:',
2234
-        "\xF0\x9F\x87\xAC\xF0\x9F\x87\xB3" => ':gn:',
2235
-        "\xF0\x9F\x87\xAC\xF0\x9F\x87\xBC" => ':gw:',
2236
-        "\xF0\x9F\x87\xAC\xF0\x9F\x87\xBE" => ':gy:',
2237
-        "\xF0\x9F\x87\xAD\xF0\x9F\x87\xB9" => ':ht:',
2238
-        "\xF0\x9F\x87\xAD\xF0\x9F\x87\xB3" => ':hn:',
2239
-        "\xF0\x9F\x87\xAD\xF0\x9F\x87\xBA" => ':hu:',
2240
-        "\xF0\x9F\x87\xAE\xF0\x9F\x87\xB8" => ':is:',
2241
-        "\xF0\x9F\x87\xAE\xF0\x9F\x87\xB3" => ':in:',
2242
-        "\xF0\x9F\x87\xAE\xF0\x9F\x87\xA9" => ':indonesia:',
2243
-        "\xF0\x9F\x87\xAE\xF0\x9F\x87\xB7" => ':ir:',
2244
-        "\xF0\x9F\x87\xAE\xF0\x9F\x87\xB6" => ':iq:',
2245
-        "\xF0\x9F\x87\xAE\xF0\x9F\x87\xAA" => ':ie:',
2246
-        "\xF0\x9F\x87\xAE\xF0\x9F\x87\xB1" => ':il:',
2247
-        "\xF0\x9F\x87\xAF\xF0\x9F\x87\xB2" => ':jm:',
2248
-        "\xF0\x9F\x87\xAF\xF0\x9F\x87\xB4" => ':jo:',
2249
-        "\xF0\x9F\x87\xB0\xF0\x9F\x87\xBF" => ':kz:',
2250
-        "\xF0\x9F\x87\xB0\xF0\x9F\x87\xAA" => ':ke:',
2251
-        "\xF0\x9F\x87\xB0\xF0\x9F\x87\xAE" => ':ki:',
2252
-        "\xF0\x9F\x87\xBD\xF0\x9F\x87\xB0" => ':xk:',
2253
-        "\xF0\x9F\x87\xB0\xF0\x9F\x87\xBC" => ':kw:',
2254
-        "\xF0\x9F\x87\xB0\xF0\x9F\x87\xAC" => ':kg:',
2255
-        "\xF0\x9F\x87\xB1\xF0\x9F\x87\xA6" => ':la:',
2256
-        "\xF0\x9F\x87\xB1\xF0\x9F\x87\xBB" => ':lv:',
2257
-        "\xF0\x9F\x87\xB1\xF0\x9F\x87\xA7" => ':lb:',
2258
-        "\xF0\x9F\x87\xB1\xF0\x9F\x87\xB8" => ':ls:',
2259
-        "\xF0\x9F\x87\xB1\xF0\x9F\x87\xB7" => ':lr:',
2260
-        "\xF0\x9F\x87\xB1\xF0\x9F\x87\xBE" => ':ly:',
2261
-        "\xF0\x9F\x87\xB1\xF0\x9F\x87\xAE" => ':li:',
2262
-        "\xF0\x9F\x87\xB1\xF0\x9F\x87\xB9" => ':lt:',
2263
-        "\xF0\x9F\x87\xB1\xF0\x9F\x87\xBA" => ':lu:',
2264
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xB0" => ':mk:',
2265
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xAC" => ':mg:',
2266
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xBC" => ':mw:',
2267
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xBE" => ':my:',
2268
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xBB" => ':mv:',
2269
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xB1" => ':ml:',
2270
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xB9" => ':mt:',
2271
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xAD" => ':mh:',
2272
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xB7" => ':mr:',
2273
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xBA" => ':mu:',
2274
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xBD" => ':mx:',
2275
-        "\xF0\x9F\x87\xAB\xF0\x9F\x87\xB2" => ':fm:',
2276
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xA9" => ':md:',
2277
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xA8" => ':mc:',
2278
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xB3" => ':mn:',
2279
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xAA" => ':me:',
2280
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xA6" => ':ma:',
2281
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xBF" => ':mz:',
2282
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xB2" => ':mm:',
2283
-        "\xF0\x9F\x87\xB3\xF0\x9F\x87\xA6" => ':na:',
2284
-        "\xF0\x9F\x87\xB3\xF0\x9F\x87\xB7" => ':nr:',
2285
-        "\xF0\x9F\x87\xB3\xF0\x9F\x87\xB5" => ':np:',
2286
-        "\xF0\x9F\x87\xB3\xF0\x9F\x87\xB1" => ':nl:',
2287
-        "\xF0\x9F\x87\xB3\xF0\x9F\x87\xBF" => ':nz:',
2288
-        "\xF0\x9F\x87\xB3\xF0\x9F\x87\xAE" => ':ni:',
2289
-        "\xF0\x9F\x87\xB3\xF0\x9F\x87\xAA" => ':ne:',
2290
-        "\xF0\x9F\x87\xB3\xF0\x9F\x87\xAC" => ':nigeria:',
2291
-        "\xF0\x9F\x87\xB0\xF0\x9F\x87\xB5" => ':kp:',
2292
-        "\xF0\x9F\x87\xB3\xF0\x9F\x87\xB4" => ':no:',
2293
-        "\xF0\x9F\x87\xB4\xF0\x9F\x87\xB2" => ':om:',
2294
-        "\xF0\x9F\x87\xB5\xF0\x9F\x87\xB0" => ':pk:',
2295
-        "\xF0\x9F\x87\xB5\xF0\x9F\x87\xBC" => ':pw:',
2296
-        "\xF0\x9F\x87\xB5\xF0\x9F\x87\xA6" => ':pa:',
2297
-        "\xF0\x9F\x87\xB5\xF0\x9F\x87\xAC" => ':pg:',
2298
-        "\xF0\x9F\x87\xB5\xF0\x9F\x87\xBE" => ':py:',
2299
-        "\xF0\x9F\x87\xB5\xF0\x9F\x87\xAA" => ':pe:',
2300
-        "\xF0\x9F\x87\xB5\xF0\x9F\x87\xAD" => ':ph:',
2301
-        "\xF0\x9F\x87\xB5\xF0\x9F\x87\xB1" => ':pl:',
2302
-        "\xF0\x9F\x87\xB5\xF0\x9F\x87\xB9" => ':pt:',
2303
-        "\xF0\x9F\x87\xB6\xF0\x9F\x87\xA6" => ':qa:',
2304
-        "\xF0\x9F\x87\xB9\xF0\x9F\x87\xBC" => ':tw:',
2305
-        "\xF0\x9F\x87\xA8\xF0\x9F\x87\xAC" => ':cg:',
2306
-        "\xF0\x9F\x87\xB7\xF0\x9F\x87\xB4" => ':ro:',
2307
-        "\xF0\x9F\x87\xB7\xF0\x9F\x87\xBC" => ':rw:',
2308
-        "\xF0\x9F\x87\xB0\xF0\x9F\x87\xB3" => ':kn:',
2309
-        "\xF0\x9F\x87\xB1\xF0\x9F\x87\xA8" => ':lc:',
2310
-        "\xF0\x9F\x87\xBB\xF0\x9F\x87\xA8" => ':vc:',
2311
-        "\xF0\x9F\x87\xBC\xF0\x9F\x87\xB8" => ':ws:',
2312
-        "\xF0\x9F\x87\xB8\xF0\x9F\x87\xB2" => ':sm:',
2313
-        "\xF0\x9F\x87\xB8\xF0\x9F\x87\xB9" => ':st:',
2314
-        "\xF0\x9F\x87\xB8\xF0\x9F\x87\xA6" => ':saudiarabia:',
2315
-        "\xF0\x9F\x87\xB8\xF0\x9F\x87\xB3" => ':sn:',
2316
-        "\xF0\x9F\x87\xB7\xF0\x9F\x87\xB8" => ':rs:',
2317
-        "\xF0\x9F\x87\xB8\xF0\x9F\x87\xA8" => ':sc:',
2318
-        "\xF0\x9F\x87\xB8\xF0\x9F\x87\xB1" => ':sl:',
2319
-        "\xF0\x9F\x87\xB8\xF0\x9F\x87\xAC" => ':sg:',
2320
-        "\xF0\x9F\x87\xB8\xF0\x9F\x87\xB0" => ':sk:',
2321
-        "\xF0\x9F\x87\xB8\xF0\x9F\x87\xAE" => ':si:',
2322
-        "\xF0\x9F\x87\xB8\xF0\x9F\x87\xA7" => ':sb:',
2323
-        "\xF0\x9F\x87\xB8\xF0\x9F\x87\xB4" => ':so:',
2324
-        "\xF0\x9F\x87\xBF\xF0\x9F\x87\xA6" => ':za:',
2325
-        "\xF0\x9F\x87\xB1\xF0\x9F\x87\xB0" => ':lk:',
2326
-        "\xF0\x9F\x87\xB8\xF0\x9F\x87\xA9" => ':sd:',
2327
-        "\xF0\x9F\x87\xB8\xF0\x9F\x87\xB7" => ':sr:',
2328
-        "\xF0\x9F\x87\xB8\xF0\x9F\x87\xBF" => ':sz:',
2329
-        "\xF0\x9F\x87\xB8\xF0\x9F\x87\xAA" => ':se:',
2330
-        "\xF0\x9F\x87\xA8\xF0\x9F\x87\xAD" => ':ch:',
2331
-        "\xF0\x9F\x87\xB8\xF0\x9F\x87\xBE" => ':sy:',
2332
-        "\xF0\x9F\x87\xB9\xF0\x9F\x87\xAF" => ':tj:',
2333
-        "\xF0\x9F\x87\xB9\xF0\x9F\x87\xBF" => ':tz:',
2334
-        "\xF0\x9F\x87\xB9\xF0\x9F\x87\xAD" => ':th:',
2335
-        "\xF0\x9F\x87\xB9\xF0\x9F\x87\xAC" => ':tg:',
2336
-        "\xF0\x9F\x87\xB9\xF0\x9F\x87\xB4" => ':to:',
2337
-        "\xF0\x9F\x87\xB9\xF0\x9F\x87\xB9" => ':tt:',
2338
-        "\xF0\x9F\x87\xB9\xF0\x9F\x87\xB3" => ':tn:',
2339
-        "\xF0\x9F\x87\xB9\xF0\x9F\x87\xB7" => ':tr:',
2340
-        "\xF0\x9F\x87\xB9\xF0\x9F\x87\xB2" => ':turkmenistan:',
2341
-        "\xF0\x9F\x87\xB9\xF0\x9F\x87\xBB" => ':tuvalu:',
2342
-        "\xF0\x9F\x87\xBA\xF0\x9F\x87\xAC" => ':ug:',
2343
-        "\xF0\x9F\x87\xBA\xF0\x9F\x87\xA6" => ':ua:',
2344
-        "\xF0\x9F\x87\xA6\xF0\x9F\x87\xAA" => ':ae:',
2345
-        "\xF0\x9F\x87\xBA\xF0\x9F\x87\xBE" => ':uy:',
2346
-        "\xF0\x9F\x87\xBA\xF0\x9F\x87\xBF" => ':uz:',
2347
-        "\xF0\x9F\x87\xBB\xF0\x9F\x87\xBA" => ':vu:',
2348
-        "\xF0\x9F\x87\xBB\xF0\x9F\x87\xA6" => ':va:',
2349
-        "\xF0\x9F\x87\xBB\xF0\x9F\x87\xAA" => ':ve:',
2350
-        "\xF0\x9F\x87\xBB\xF0\x9F\x87\xB3" => ':vn:',
2351
-        "\xF0\x9F\x87\xAA\xF0\x9F\x87\xAD" => ':eh:',
2352
-        "\xF0\x9F\x87\xBE\xF0\x9F\x87\xAA" => ':ye:',
2353
-        "\xF0\x9F\x87\xBF\xF0\x9F\x87\xB2" => ':zm:',
2354
-        "\xF0\x9F\x87\xBF\xF0\x9F\x87\xBC" => ':zw:',
2355
-        "\xF0\x9F\x87\xB5\xF0\x9F\x87\xB7" => ':pr:',
2356
-        "\xF0\x9F\x87\xB0\xF0\x9F\x87\xBE" => ':ky:',
2357
-        "\xF0\x9F\x87\xA7\xF0\x9F\x87\xB2" => ':bm:',
2358
-        "\xF0\x9F\x87\xB5\xF0\x9F\x87\xAB" => ':pf:',
2359
-        "\xF0\x9F\x87\xB5\xF0\x9F\x87\xB8" => ':ps:',
2360
-        "\xF0\x9F\x87\xB3\xF0\x9F\x87\xA8" => ':nc:',
2361
-        "\xF0\x9F\x87\xB8\xF0\x9F\x87\xAD" => ':sh:',
2362
-        "\xF0\x9F\x87\xA6\xF0\x9F\x87\xBC" => ':aw:',
2363
-        "\xF0\x9F\x87\xBB\xF0\x9F\x87\xAE" => ':vi:',
2364
-        "\xF0\x9F\x87\xAD\xF0\x9F\x87\xB0" => ':hk:',
2365
-        "\xF0\x9F\x87\xA6\xF0\x9F\x87\xA8" => ':ac:',
2366
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xB8" => ':ms:',
2367
-        "\xF0\x9F\x87\xAC\xF0\x9F\x87\xBA" => ':gu:',
2368
-        "\xF0\x9F\x87\xAC\xF0\x9F\x87\xB1" => ':gl:',
2369
-        "\xF0\x9F\x87\xB3\xF0\x9F\x87\xBA" => ':nu:',
2370
-        "\xF0\x9F\x87\xBC\xF0\x9F\x87\xAB" => ':wf:',
2371
-        "\xF0\x9F\x87\xB2\xF0\x9F\x87\xB4" => ':mo:',
2372
-        "\xF0\x9F\x87\xAB\xF0\x9F\x87\xB4" => ':fo:',
2373
-        "\xF0\x9F\x87\xAB\xF0\x9F\x87\xB0" => ':fk:',
2374
-        "\xF0\x9F\x87\xAF\xF0\x9F\x87\xAA" => ':je:',
2375
-        "\xF0\x9F\x87\xA6\xF0\x9F\x87\xAE" => ':ai:',
2376
-        "\xF0\x9F\x87\xAC\xF0\x9F\x87\xAE" => ':gi:'
2377
-    );
2378
-    static $asciiRegexp = '(\\<3|&lt;3|\\<\\/3|&lt;\\/3|\\:\'\\)|\\:\'\\-\\)|\\:D|\\:\\-D|\\=D|\\:\\)|\\:\\-\\)|\\=\\]|\\=\\)|\\:\\]|\'\\:\\)|\'\\:\\-\\)|\'\\=\\)|\'\\:D|\'\\:\\-D|\'\\=D|\\>\\:\\)|&gt;\\:\\)|\\>;\\)|&gt;;\\)|\\>\\:\\-\\)|&gt;\\:\\-\\)|\\>\\=\\)|&gt;\\=\\)|;\\)|;\\-\\)|\\*\\-\\)|\\*\\)|;\\-\\]|;\\]|;D|;\\^\\)|\'\\:\\(|\'\\:\\-\\(|\'\\=\\(|\\:\\*|\\:\\-\\*|\\=\\*|\\:\\^\\*|\\>\\:P|&gt;\\:P|X\\-P|x\\-p|\\>\\:\\[|&gt;\\:\\[|\\:\\-\\(|\\:\\(|\\:\\-\\[|\\:\\[|\\=\\(|\\>\\:\\(|&gt;\\:\\(|\\>\\:\\-\\(|&gt;\\:\\-\\(|\\:@|\\:\'\\(|\\:\'\\-\\(|;\\(|;\\-\\(|\\>\\.\\<|&gt;\\.&lt;|\\:\\$|\\=\\$|#\\-\\)|#\\)|%\\-\\)|%\\)|X\\)|X\\-\\)|\\*\\\\0\\/\\*|\\\\0\\/|\\*\\\\O\\/\\*|\\\\O\\/|O\\:\\-\\)|0\\:\\-3|0\\:3|0\\:\\-\\)|0\\:\\)|0;\\^\\)|O\\:\\-\\)|O\\:\\)|O;\\-\\)|O\\=\\)|0;\\-\\)|O\\:\\-3|O\\:3|B\\-\\)|B\\)|8\\)|8\\-\\)|B\\-D|8\\-D|\\-_\\-|\\-__\\-|\\-___\\-|\\>\\:\\\\|&gt;\\:\\\\|\\>\\:\\/|&gt;\\:\\/|\\:\\-\\/|\\:\\-\\.|\\:\\/|\\:\\\\|\\=\\/|\\=\\\\|\\:L|\\=L|\\:P|\\:\\-P|\\=P|\\:\\-p|\\:p|\\=p|\\:\\-Þ|\\:\\-&THORN;|\\:Þ|\\:&THORN;|\\:þ|\\:&thorn;|\\:\\-þ|\\:\\-&thorn;|\\:\\-b|\\:b|d\\:|\\:\\-O|\\:O|\\:\\-o|\\:o|O_O|\\>\\:O|&gt;\\:O|\\:\\-X|\\:X|\\:\\-#|\\:#|\\=X|\\=x|\\:x|\\:\\-x|\\=#)';
21
+	static $shortcode_replace = Array(
22
+		':hash:' => '0023-20e3',
23
+		':zero:' => '0030-20e3',
24
+		':one:' => '0031-20e3',
25
+		':two:' => '0032-20e3',
26
+		':three:' => '0033-20e3',
27
+		':four:' => '0034-20e3',
28
+		':five:' => '0035-20e3',
29
+		':six:' => '0036-20e3',
30
+		':seven:' => '0037-20e3',
31
+		':eight:' => '0038-20e3',
32
+		':nine:' => '0039-20e3',
33
+		':copyright:' => '00a9',
34
+		':registered:' => '00ae',
35
+		':bangbang:' => '203c',
36
+		':interrobang:' => '2049',
37
+		':tm:' => '2122',
38
+		':information_source:' => '2139',
39
+		':left_right_arrow:' => '2194',
40
+		':arrow_up_down:' => '2195',
41
+		':arrow_upper_left:' => '2196',
42
+		':arrow_upper_right:' => '2197',
43
+		':arrow_lower_right:' => '2198',
44
+		':arrow_lower_left:' => '2199',
45
+		':leftwards_arrow_with_hook:' => '21a9',
46
+		':arrow_right_hook:' => '21aa',
47
+		':watch:' => '231a',
48
+		':hourglass:' => '231b',
49
+		':fast_forward:' => '23e9',
50
+		':rewind:' => '23ea',
51
+		':arrow_double_up:' => '23eb',
52
+		':arrow_double_down:' => '23ec',
53
+		':alarm_clock:' => '23f0',
54
+		':hourglass_flowing_sand:' => '23f3',
55
+		':m:' => '24c2',
56
+		':black_small_square:' => '25aa',
57
+		':white_small_square:' => '25ab',
58
+		':arrow_forward:' => '25b6',
59
+		':arrow_backward:' => '25c0',
60
+		':white_medium_square:' => '25fb',
61
+		':black_medium_square:' => '25fc',
62
+		':white_medium_small_square:' => '25fd',
63
+		':black_medium_small_square:' => '25fe',
64
+		':sunny:' => '2600',
65
+		':cloud:' => '2601',
66
+		':telephone:' => '260e',
67
+		':ballot_box_with_check:' => '2611',
68
+		':umbrella:' => '2614',
69
+		':coffee:' => '2615',
70
+		':point_up:' => '261d',
71
+		':relaxed:' => '263a',
72
+		':aries:' => '2648',
73
+		':taurus:' => '2649',
74
+		':gemini:' => '264a',
75
+		':cancer:' => '264b',
76
+		':leo:' => '264c',
77
+		':virgo:' => '264d',
78
+		':libra:' => '264e',
79
+		':scorpius:' => '264f',
80
+		':sagittarius:' => '2650',
81
+		':capricorn:' => '2651',
82
+		':aquarius:' => '2652',
83
+		':pisces:' => '2653',
84
+		':spades:' => '2660',
85
+		':clubs:' => '2663',
86
+		':hearts:' => '2665',
87
+		':diamonds:' => '2666',
88
+		':hotsprings:' => '2668',
89
+		':recycle:' => '267b',
90
+		':wheelchair:' => '267f',
91
+		':anchor:' => '2693',
92
+		':warning:' => '26a0',
93
+		':zap:' => '26a1',
94
+		':white_circle:' => '26aa',
95
+		':black_circle:' => '26ab',
96
+		':soccer:' => '26bd',
97
+		':baseball:' => '26be',
98
+		':snowman:' => '26c4',
99
+		':partly_sunny:' => '26c5',
100
+		':ophiuchus:' => '26ce',
101
+		':no_entry:' => '26d4',
102
+		':church:' => '26ea',
103
+		':fountain:' => '26f2',
104
+		':golf:' => '26f3',
105
+		':sailboat:' => '26f5',
106
+		':tent:' => '26fa',
107
+		':fuelpump:' => '26fd',
108
+		':scissors:' => '2702',
109
+		':white_check_mark:' => '2705',
110
+		':airplane:' => '2708',
111
+		':envelope:' => '2709',
112
+		':fist:' => '270a',
113
+		':raised_hand:' => '270b',
114
+		':v:' => '270c',
115
+		':pencil2:' => '270f',
116
+		':black_nib:' => '2712',
117
+		':heavy_check_mark:' => '2714',
118
+		':heavy_multiplication_x:' => '2716',
119
+		':sparkles:' => '2728',
120
+		':eight_spoked_asterisk:' => '2733',
121
+		':eight_pointed_black_star:' => '2734',
122
+		':snowflake:' => '2744',
123
+		':sparkle:' => '2747',
124
+		':x:' => '274c',
125
+		':negative_squared_cross_mark:' => '274e',
126
+		':question:' => '2753',
127
+		':grey_question:' => '2754',
128
+		':grey_exclamation:' => '2755',
129
+		':exclamation:' => '2757',
130
+		':heart:' => '2764',
131
+		':heavy_plus_sign:' => '2795',
132
+		':heavy_minus_sign:' => '2796',
133
+		':heavy_division_sign:' => '2797',
134
+		':arrow_right:' => '27a1',
135
+		':curly_loop:' => '27b0',
136
+		':arrow_heading_up:' => '2934',
137
+		':arrow_heading_down:' => '2935',
138
+		':arrow_left:' => '2b05',
139
+		':arrow_up:' => '2b06',
140
+		':arrow_down:' => '2b07',
141
+		':black_large_square:' => '2b1b',
142
+		':white_large_square:' => '2b1c',
143
+		':star:' => '2b50',
144
+		':o:' => '2b55',
145
+		':wavy_dash:' => '3030',
146
+		':part_alternation_mark:' => '303d',
147
+		':congratulations:' => '3297',
148
+		':secret:' => '3299',
149
+		':mahjong:' => '1f004',
150
+		':black_joker:' => '1f0cf',
151
+		':a:' => '1f170',
152
+		':b:' => '1f171',
153
+		':o2:' => '1f17e',
154
+		':parking:' => '1f17f',
155
+		':ab:' => '1f18e',
156
+		':cl:' => '1f191',
157
+		':cool:' => '1f192',
158
+		':free:' => '1f193',
159
+		':id:' => '1f194',
160
+		':new:' => '1f195',
161
+		':ng:' => '1f196',
162
+		':ok:' => '1f197',
163
+		':sos:' => '1f198',
164
+		':up:' => '1f199',
165
+		':vs:' => '1f19a',
166
+		':cn:' => '1f1e8-1f1f3',
167
+		':de:' => '1f1e9-1f1ea',
168
+		':es:' => '1f1ea-1f1f8',
169
+		':fr:' => '1f1eb-1f1f7',
170
+		':gb:' => '1f1ec-1f1e7',
171
+		':it:' => '1f1ee-1f1f9',
172
+		':jp:' => '1f1ef-1f1f5',
173
+		':kr:' => '1f1f0-1f1f7',
174
+		':us:' => '1f1fa-1f1f8',
175
+		':ru:' => '1f1f7-1f1fa',
176
+		':koko:' => '1f201',
177
+		':sa:' => '1f202',
178
+		':u7121:' => '1f21a',
179
+		':u6307:' => '1f22f',
180
+		':u7981:' => '1f232',
181
+		':u7a7a:' => '1f233',
182
+		':u5408:' => '1f234',
183
+		':u6e80:' => '1f235',
184
+		':u6709:' => '1f236',
185
+		':u6708:' => '1f237',
186
+		':u7533:' => '1f238',
187
+		':u5272:' => '1f239',
188
+		':u55b6:' => '1f23a',
189
+		':ideograph_advantage:' => '1f250',
190
+		':accept:' => '1f251',
191
+		':cyclone:' => '1f300',
192
+		':foggy:' => '1f301',
193
+		':closed_umbrella:' => '1f302',
194
+		':night_with_stars:' => '1f303',
195
+		':sunrise_over_mountains:' => '1f304',
196
+		':sunrise:' => '1f305',
197
+		':city_dusk:' => '1f306',
198
+		':city_sunset:' => '1f307',
199
+		':city_sunrise:' => '1f307',
200
+		':rainbow:' => '1f308',
201
+		':bridge_at_night:' => '1f309',
202
+		':ocean:' => '1f30a',
203
+		':volcano:' => '1f30b',
204
+		':milky_way:' => '1f30c',
205
+		':earth_asia:' => '1f30f',
206
+		':new_moon:' => '1f311',
207
+		':first_quarter_moon:' => '1f313',
208
+		':waxing_gibbous_moon:' => '1f314',
209
+		':full_moon:' => '1f315',
210
+		':crescent_moon:' => '1f319',
211
+		':first_quarter_moon_with_face:' => '1f31b',
212
+		':star2:' => '1f31f',
213
+		':stars:' => '1f320',
214
+		':chestnut:' => '1f330',
215
+		':seedling:' => '1f331',
216
+		':palm_tree:' => '1f334',
217
+		':cactus:' => '1f335',
218
+		':tulip:' => '1f337',
219
+		':cherry_blossom:' => '1f338',
220
+		':rose:' => '1f339',
221
+		':hibiscus:' => '1f33a',
222
+		':sunflower:' => '1f33b',
223
+		':blossom:' => '1f33c',
224
+		':corn:' => '1f33d',
225
+		':ear_of_rice:' => '1f33e',
226
+		':herb:' => '1f33f',
227
+		':four_leaf_clover:' => '1f340',
228
+		':maple_leaf:' => '1f341',
229
+		':fallen_leaf:' => '1f342',
230
+		':leaves:' => '1f343',
231
+		':mushroom:' => '1f344',
232
+		':tomato:' => '1f345',
233
+		':eggplant:' => '1f346',
234
+		':grapes:' => '1f347',
235
+		':melon:' => '1f348',
236
+		':watermelon:' => '1f349',
237
+		':tangerine:' => '1f34a',
238
+		':banana:' => '1f34c',
239
+		':pineapple:' => '1f34d',
240
+		':apple:' => '1f34e',
241
+		':green_apple:' => '1f34f',
242
+		':peach:' => '1f351',
243
+		':cherries:' => '1f352',
244
+		':strawberry:' => '1f353',
245
+		':hamburger:' => '1f354',
246
+		':pizza:' => '1f355',
247
+		':meat_on_bone:' => '1f356',
248
+		':poultry_leg:' => '1f357',
249
+		':rice_cracker:' => '1f358',
250
+		':rice_ball:' => '1f359',
251
+		':rice:' => '1f35a',
252
+		':curry:' => '1f35b',
253
+		':ramen:' => '1f35c',
254
+		':spaghetti:' => '1f35d',
255
+		':bread:' => '1f35e',
256
+		':fries:' => '1f35f',
257
+		':sweet_potato:' => '1f360',
258
+		':dango:' => '1f361',
259
+		':oden:' => '1f362',
260
+		':sushi:' => '1f363',
261
+		':fried_shrimp:' => '1f364',
262
+		':fish_cake:' => '1f365',
263
+		':icecream:' => '1f366',
264
+		':shaved_ice:' => '1f367',
265
+		':ice_cream:' => '1f368',
266
+		':doughnut:' => '1f369',
267
+		':cookie:' => '1f36a',
268
+		':chocolate_bar:' => '1f36b',
269
+		':candy:' => '1f36c',
270
+		':lollipop:' => '1f36d',
271
+		':custard:' => '1f36e',
272
+		':honey_pot:' => '1f36f',
273
+		':cake:' => '1f370',
274
+		':bento:' => '1f371',
275
+		':stew:' => '1f372',
276
+		':egg:' => '1f373',
277
+		':fork_and_knife:' => '1f374',
278
+		':tea:' => '1f375',
279
+		':sake:' => '1f376',
280
+		':wine_glass:' => '1f377',
281
+		':cocktail:' => '1f378',
282
+		':tropical_drink:' => '1f379',
283
+		':beer:' => '1f37a',
284
+		':beers:' => '1f37b',
285
+		':ribbon:' => '1f380',
286
+		':gift:' => '1f381',
287
+		':birthday:' => '1f382',
288
+		':jack_o_lantern:' => '1f383',
289
+		':christmas_tree:' => '1f384',
290
+		':santa:' => '1f385',
291
+		':fireworks:' => '1f386',
292
+		':sparkler:' => '1f387',
293
+		':balloon:' => '1f388',
294
+		':tada:' => '1f389',
295
+		':confetti_ball:' => '1f38a',
296
+		':tanabata_tree:' => '1f38b',
297
+		':crossed_flags:' => '1f38c',
298
+		':bamboo:' => '1f38d',
299
+		':dolls:' => '1f38e',
300
+		':flags:' => '1f38f',
301
+		':wind_chime:' => '1f390',
302
+		':rice_scene:' => '1f391',
303
+		':school_satchel:' => '1f392',
304
+		':mortar_board:' => '1f393',
305
+		':carousel_horse:' => '1f3a0',
306
+		':ferris_wheel:' => '1f3a1',
307
+		':roller_coaster:' => '1f3a2',
308
+		':fishing_pole_and_fish:' => '1f3a3',
309
+		':microphone:' => '1f3a4',
310
+		':movie_camera:' => '1f3a5',
311
+		':cinema:' => '1f3a6',
312
+		':headphones:' => '1f3a7',
313
+		':art:' => '1f3a8',
314
+		':tophat:' => '1f3a9',
315
+		':circus_tent:' => '1f3aa',
316
+		':ticket:' => '1f3ab',
317
+		':clapper:' => '1f3ac',
318
+		':performing_arts:' => '1f3ad',
319
+		':video_game:' => '1f3ae',
320
+		':dart:' => '1f3af',
321
+		':slot_machine:' => '1f3b0',
322
+		':8ball:' => '1f3b1',
323
+		':game_die:' => '1f3b2',
324
+		':bowling:' => '1f3b3',
325
+		':flower_playing_cards:' => '1f3b4',
326
+		':musical_note:' => '1f3b5',
327
+		':notes:' => '1f3b6',
328
+		':saxophone:' => '1f3b7',
329
+		':guitar:' => '1f3b8',
330
+		':musical_keyboard:' => '1f3b9',
331
+		':trumpet:' => '1f3ba',
332
+		':violin:' => '1f3bb',
333
+		':musical_score:' => '1f3bc',
334
+		':running_shirt_with_sash:' => '1f3bd',
335
+		':tennis:' => '1f3be',
336
+		':ski:' => '1f3bf',
337
+		':basketball:' => '1f3c0',
338
+		':checkered_flag:' => '1f3c1',
339
+		':snowboarder:' => '1f3c2',
340
+		':runner:' => '1f3c3',
341
+		':surfer:' => '1f3c4',
342
+		':trophy:' => '1f3c6',
343
+		':football:' => '1f3c8',
344
+		':swimmer:' => '1f3ca',
345
+		':house:' => '1f3e0',
346
+		':house_with_garden:' => '1f3e1',
347
+		':office:' => '1f3e2',
348
+		':post_office:' => '1f3e3',
349
+		':hospital:' => '1f3e5',
350
+		':bank:' => '1f3e6',
351
+		':atm:' => '1f3e7',
352
+		':hotel:' => '1f3e8',
353
+		':love_hotel:' => '1f3e9',
354
+		':convenience_store:' => '1f3ea',
355
+		':school:' => '1f3eb',
356
+		':department_store:' => '1f3ec',
357
+		':factory:' => '1f3ed',
358
+		':izakaya_lantern:' => '1f3ee',
359
+		':japanese_castle:' => '1f3ef',
360
+		':european_castle:' => '1f3f0',
361
+		':snail:' => '1f40c',
362
+		':snake:' => '1f40d',
363
+		':racehorse:' => '1f40e',
364
+		':sheep:' => '1f411',
365
+		':monkey:' => '1f412',
366
+		':chicken:' => '1f414',
367
+		':boar:' => '1f417',
368
+		':elephant:' => '1f418',
369
+		':octopus:' => '1f419',
370
+		':shell:' => '1f41a',
371
+		':bug:' => '1f41b',
372
+		':ant:' => '1f41c',
373
+		':bee:' => '1f41d',
374
+		':beetle:' => '1f41e',
375
+		':fish:' => '1f41f',
376
+		':tropical_fish:' => '1f420',
377
+		':blowfish:' => '1f421',
378
+		':turtle:' => '1f422',
379
+		':hatching_chick:' => '1f423',
380
+		':baby_chick:' => '1f424',
381
+		':hatched_chick:' => '1f425',
382
+		':bird:' => '1f426',
383
+		':penguin:' => '1f427',
384
+		':koala:' => '1f428',
385
+		':poodle:' => '1f429',
386
+		':camel:' => '1f42b',
387
+		':dolphin:' => '1f42c',
388
+		':mouse:' => '1f42d',
389
+		':cow:' => '1f42e',
390
+		':tiger:' => '1f42f',
391
+		':rabbit:' => '1f430',
392
+		':cat:' => '1f431',
393
+		':dragon_face:' => '1f432',
394
+		':whale:' => '1f433',
395
+		':horse:' => '1f434',
396
+		':monkey_face:' => '1f435',
397
+		':dog:' => '1f436',
398
+		':pig:' => '1f437',
399
+		':frog:' => '1f438',
400
+		':hamster:' => '1f439',
401
+		':wolf:' => '1f43a',
402
+		':bear:' => '1f43b',
403
+		':panda_face:' => '1f43c',
404
+		':pig_nose:' => '1f43d',
405
+		':feet:' => '1f43e',
406
+		':eyes:' => '1f440',
407
+		':ear:' => '1f442',
408
+		':nose:' => '1f443',
409
+		':lips:' => '1f444',
410
+		':tongue:' => '1f445',
411
+		':point_up_2:' => '1f446',
412
+		':point_down:' => '1f447',
413
+		':point_left:' => '1f448',
414
+		':point_right:' => '1f449',
415
+		':punch:' => '1f44a',
416
+		':wave:' => '1f44b',
417
+		':ok_hand:' => '1f44c',
418
+		':thumbsup:' => '1f44d',
419
+		':+1:' => '1f44d',
420
+		':thumbsdown:' => '1f44e',
421
+		':-1:' => '1f44e',
422
+		':clap:' => '1f44f',
423
+		':open_hands:' => '1f450',
424
+		':crown:' => '1f451',
425
+		':womans_hat:' => '1f452',
426
+		':eyeglasses:' => '1f453',
427
+		':necktie:' => '1f454',
428
+		':shirt:' => '1f455',
429
+		':jeans:' => '1f456',
430
+		':dress:' => '1f457',
431
+		':kimono:' => '1f458',
432
+		':bikini:' => '1f459',
433
+		':womans_clothes:' => '1f45a',
434
+		':purse:' => '1f45b',
435
+		':handbag:' => '1f45c',
436
+		':pouch:' => '1f45d',
437
+		':mans_shoe:' => '1f45e',
438
+		':athletic_shoe:' => '1f45f',
439
+		':high_heel:' => '1f460',
440
+		':sandal:' => '1f461',
441
+		':boot:' => '1f462',
442
+		':footprints:' => '1f463',
443
+		':bust_in_silhouette:' => '1f464',
444
+		':boy:' => '1f466',
445
+		':girl:' => '1f467',
446
+		':man:' => '1f468',
447
+		':woman:' => '1f469',
448
+		':family:' => '1f46a',
449
+		':couple:' => '1f46b',
450
+		':cop:' => '1f46e',
451
+		':dancers:' => '1f46f',
452
+		':bride_with_veil:' => '1f470',
453
+		':person_with_blond_hair:' => '1f471',
454
+		':man_with_gua_pi_mao:' => '1f472',
455
+		':man_with_turban:' => '1f473',
456
+		':older_man:' => '1f474',
457
+		':older_woman:' => '1f475',
458
+		':grandma:' => '1f475',
459
+		':baby:' => '1f476',
460
+		':construction_worker:' => '1f477',
461
+		':princess:' => '1f478',
462
+		':japanese_ogre:' => '1f479',
463
+		':japanese_goblin:' => '1f47a',
464
+		':ghost:' => '1f47b',
465
+		':angel:' => '1f47c',
466
+		':alien:' => '1f47d',
467
+		':space_invader:' => '1f47e',
468
+		':imp:' => '1f47f',
469
+		':skull:' => '1f480',
470
+		':skeleton:' => '1f480',
471
+		':card_index:' => '1f4c7',
472
+		':information_desk_person:' => '1f481',
473
+		':guardsman:' => '1f482',
474
+		':dancer:' => '1f483',
475
+		':lipstick:' => '1f484',
476
+		':nail_care:' => '1f485',
477
+		':ledger:' => '1f4d2',
478
+		':massage:' => '1f486',
479
+		':notebook:' => '1f4d3',
480
+		':haircut:' => '1f487',
481
+		':notebook_with_decorative_cover:' => '1f4d4',
482
+		':barber:' => '1f488',
483
+		':closed_book:' => '1f4d5',
484
+		':syringe:' => '1f489',
485
+		':book:' => '1f4d6',
486
+		':pill:' => '1f48a',
487
+		':green_book:' => '1f4d7',
488
+		':kiss:' => '1f48b',
489
+		':blue_book:' => '1f4d8',
490
+		':love_letter:' => '1f48c',
491
+		':orange_book:' => '1f4d9',
492
+		':ring:' => '1f48d',
493
+		':books:' => '1f4da',
494
+		':gem:' => '1f48e',
495
+		':name_badge:' => '1f4db',
496
+		':couplekiss:' => '1f48f',
497
+		':scroll:' => '1f4dc',
498
+		':bouquet:' => '1f490',
499
+		':pencil:' => '1f4dd',
500
+		':couple_with_heart:' => '1f491',
501
+		':telephone_receiver:' => '1f4de',
502
+		':wedding:' => '1f492',
503
+		':pager:' => '1f4df',
504
+		':fax:' => '1f4e0',
505
+		':heartbeat:' => '1f493',
506
+		':satellite:' => '1f4e1',
507
+		':loudspeaker:' => '1f4e2',
508
+		':broken_heart:' => '1f494',
509
+		':mega:' => '1f4e3',
510
+		':outbox_tray:' => '1f4e4',
511
+		':two_hearts:' => '1f495',
512
+		':inbox_tray:' => '1f4e5',
513
+		':package:' => '1f4e6',
514
+		':sparkling_heart:' => '1f496',
515
+		':e-mail:' => '1f4e7',
516
+		':email:' => '1f4e7',
517
+		':incoming_envelope:' => '1f4e8',
518
+		':heartpulse:' => '1f497',
519
+		':envelope_with_arrow:' => '1f4e9',
520
+		':mailbox_closed:' => '1f4ea',
521
+		':cupid:' => '1f498',
522
+		':mailbox:' => '1f4eb',
523
+		':postbox:' => '1f4ee',
524
+		':blue_heart:' => '1f499',
525
+		':newspaper:' => '1f4f0',
526
+		':iphone:' => '1f4f1',
527
+		':green_heart:' => '1f49a',
528
+		':calling:' => '1f4f2',
529
+		':vibration_mode:' => '1f4f3',
530
+		':yellow_heart:' => '1f49b',
531
+		':mobile_phone_off:' => '1f4f4',
532
+		':signal_strength:' => '1f4f6',
533
+		':purple_heart:' => '1f49c',
534
+		':camera:' => '1f4f7',
535
+		':video_camera:' => '1f4f9',
536
+		':gift_heart:' => '1f49d',
537
+		':tv:' => '1f4fa',
538
+		':radio:' => '1f4fb',
539
+		':revolving_hearts:' => '1f49e',
540
+		':vhs:' => '1f4fc',
541
+		':arrows_clockwise:' => '1f503',
542
+		':heart_decoration:' => '1f49f',
543
+		':loud_sound:' => '1f50a',
544
+		':battery:' => '1f50b',
545
+		':diamond_shape_with_a_dot_inside:' => '1f4a0',
546
+		':electric_plug:' => '1f50c',
547
+		':mag:' => '1f50d',
548
+		':bulb:' => '1f4a1',
549
+		':mag_right:' => '1f50e',
550
+		':lock_with_ink_pen:' => '1f50f',
551
+		':anger:' => '1f4a2',
552
+		':closed_lock_with_key:' => '1f510',
553
+		':key:' => '1f511',
554
+		':bomb:' => '1f4a3',
555
+		':lock:' => '1f512',
556
+		':unlock:' => '1f513',
557
+		':zzz:' => '1f4a4',
558
+		':bell:' => '1f514',
559
+		':bookmark:' => '1f516',
560
+		':boom:' => '1f4a5',
561
+		':link:' => '1f517',
562
+		':radio_button:' => '1f518',
563
+		':sweat_drops:' => '1f4a6',
564
+		':back:' => '1f519',
565
+		':end:' => '1f51a',
566
+		':droplet:' => '1f4a7',
567
+		':on:' => '1f51b',
568
+		':soon:' => '1f51c',
569
+		':dash:' => '1f4a8',
570
+		':top:' => '1f51d',
571
+		':underage:' => '1f51e',
572
+		':poop:' => '1f4a9',
573
+		':shit:' => '1f4a9',
574
+		':hankey:' => '1f4a9',
575
+		':poo:' => '1f4a9',
576
+		':keycap_ten:' => '1f51f',
577
+		':muscle:' => '1f4aa',
578
+		':capital_abcd:' => '1f520',
579
+		':abcd:' => '1f521',
580
+		':dizzy:' => '1f4ab',
581
+		':1234:' => '1f522',
582
+		':symbols:' => '1f523',
583
+		':speech_balloon:' => '1f4ac',
584
+		':abc:' => '1f524',
585
+		':fire:' => '1f525',
586
+		':flame:' => '1f525',
587
+		':white_flower:' => '1f4ae',
588
+		':flashlight:' => '1f526',
589
+		':wrench:' => '1f527',
590
+		':100:' => '1f4af',
591
+		':hammer:' => '1f528',
592
+		':nut_and_bolt:' => '1f529',
593
+		':moneybag:' => '1f4b0',
594
+		':knife:' => '1f52a',
595
+		':gun:' => '1f52b',
596
+		':currency_exchange:' => '1f4b1',
597
+		':crystal_ball:' => '1f52e',
598
+		':heavy_dollar_sign:' => '1f4b2',
599
+		':six_pointed_star:' => '1f52f',
600
+		':credit_card:' => '1f4b3',
601
+		':beginner:' => '1f530',
602
+		':trident:' => '1f531',
603
+		':yen:' => '1f4b4',
604
+		':black_square_button:' => '1f532',
605
+		':white_square_button:' => '1f533',
606
+		':dollar:' => '1f4b5',
607
+		':red_circle:' => '1f534',
608
+		':large_blue_circle:' => '1f535',
609
+		':money_with_wings:' => '1f4b8',
610
+		':large_orange_diamond:' => '1f536',
611
+		':large_blue_diamond:' => '1f537',
612
+		':chart:' => '1f4b9',
613
+		':small_orange_diamond:' => '1f538',
614
+		':small_blue_diamond:' => '1f539',
615
+		':seat:' => '1f4ba',
616
+		':small_red_triangle:' => '1f53a',
617
+		':small_red_triangle_down:' => '1f53b',
618
+		':computer:' => '1f4bb',
619
+		':arrow_up_small:' => '1f53c',
620
+		':briefcase:' => '1f4bc',
621
+		':arrow_down_small:' => '1f53d',
622
+		':clock1:' => '1f550',
623
+		':minidisc:' => '1f4bd',
624
+		':clock2:' => '1f551',
625
+		':floppy_disk:' => '1f4be',
626
+		':clock3:' => '1f552',
627
+		':cd:' => '1f4bf',
628
+		':clock4:' => '1f553',
629
+		':dvd:' => '1f4c0',
630
+		':clock5:' => '1f554',
631
+		':clock6:' => '1f555',
632
+		':file_folder:' => '1f4c1',
633
+		':clock7:' => '1f556',
634
+		':clock8:' => '1f557',
635
+		':open_file_folder:' => '1f4c2',
636
+		':clock9:' => '1f558',
637
+		':clock10:' => '1f559',
638
+		':page_with_curl:' => '1f4c3',
639
+		':clock11:' => '1f55a',
640
+		':clock12:' => '1f55b',
641
+		':page_facing_up:' => '1f4c4',
642
+		':mount_fuji:' => '1f5fb',
643
+		':tokyo_tower:' => '1f5fc',
644
+		':date:' => '1f4c5',
645
+		':statue_of_liberty:' => '1f5fd',
646
+		':japan:' => '1f5fe',
647
+		':calendar:' => '1f4c6',
648
+		':moyai:' => '1f5ff',
649
+		':grin:' => '1f601',
650
+		':joy:' => '1f602',
651
+		':smiley:' => '1f603',
652
+		':chart_with_upwards_trend:' => '1f4c8',
653
+		':smile:' => '1f604',
654
+		':sweat_smile:' => '1f605',
655
+		':chart_with_downwards_trend:' => '1f4c9',
656
+		':laughing:' => '1f606',
657
+		':satisfied:' => '1f606',
658
+		':wink:' => '1f609',
659
+		':bar_chart:' => '1f4ca',
660
+		':blush:' => '1f60a',
661
+		':yum:' => '1f60b',
662
+		':clipboard:' => '1f4cb',
663
+		':relieved:' => '1f60c',
664
+		':heart_eyes:' => '1f60d',
665
+		':pushpin:' => '1f4cc',
666
+		':smirk:' => '1f60f',
667
+		':unamused:' => '1f612',
668
+		':round_pushpin:' => '1f4cd',
669
+		':sweat:' => '1f613',
670
+		':pensive:' => '1f614',
671
+		':paperclip:' => '1f4ce',
672
+		':confounded:' => '1f616',
673
+		':kissing_heart:' => '1f618',
674
+		':straight_ruler:' => '1f4cf',
675
+		':kissing_closed_eyes:' => '1f61a',
676
+		':stuck_out_tongue_winking_eye:' => '1f61c',
677
+		':triangular_ruler:' => '1f4d0',
678
+		':stuck_out_tongue_closed_eyes:' => '1f61d',
679
+		':disappointed:' => '1f61e',
680
+		':bookmark_tabs:' => '1f4d1',
681
+		':angry:' => '1f620',
682
+		':rage:' => '1f621',
683
+		':cry:' => '1f622',
684
+		':persevere:' => '1f623',
685
+		':triumph:' => '1f624',
686
+		':disappointed_relieved:' => '1f625',
687
+		':fearful:' => '1f628',
688
+		':weary:' => '1f629',
689
+		':sleepy:' => '1f62a',
690
+		':tired_face:' => '1f62b',
691
+		':sob:' => '1f62d',
692
+		':cold_sweat:' => '1f630',
693
+		':scream:' => '1f631',
694
+		':astonished:' => '1f632',
695
+		':flushed:' => '1f633',
696
+		':dizzy_face:' => '1f635',
697
+		':mask:' => '1f637',
698
+		':smile_cat:' => '1f638',
699
+		':joy_cat:' => '1f639',
700
+		':smiley_cat:' => '1f63a',
701
+		':heart_eyes_cat:' => '1f63b',
702
+		':smirk_cat:' => '1f63c',
703
+		':kissing_cat:' => '1f63d',
704
+		':pouting_cat:' => '1f63e',
705
+		':crying_cat_face:' => '1f63f',
706
+		':scream_cat:' => '1f640',
707
+		':no_good:' => '1f645',
708
+		':ok_woman:' => '1f646',
709
+		':bow:' => '1f647',
710
+		':see_no_evil:' => '1f648',
711
+		':hear_no_evil:' => '1f649',
712
+		':speak_no_evil:' => '1f64a',
713
+		':raising_hand:' => '1f64b',
714
+		':raised_hands:' => '1f64c',
715
+		':person_frowning:' => '1f64d',
716
+		':person_with_pouting_face:' => '1f64e',
717
+		':pray:' => '1f64f',
718
+		':rocket:' => '1f680',
719
+		':railway_car:' => '1f683',
720
+		':bullettrain_side:' => '1f684',
721
+		':bullettrain_front:' => '1f685',
722
+		':metro:' => '1f687',
723
+		':station:' => '1f689',
724
+		':bus:' => '1f68c',
725
+		':busstop:' => '1f68f',
726
+		':ambulance:' => '1f691',
727
+		':fire_engine:' => '1f692',
728
+		':police_car:' => '1f693',
729
+		':taxi:' => '1f695',
730
+		':red_car:' => '1f697',
731
+		':blue_car:' => '1f699',
732
+		':truck:' => '1f69a',
733
+		':ship:' => '1f6a2',
734
+		':speedboat:' => '1f6a4',
735
+		':traffic_light:' => '1f6a5',
736
+		':construction:' => '1f6a7',
737
+		':rotating_light:' => '1f6a8',
738
+		':triangular_flag_on_post:' => '1f6a9',
739
+		':door:' => '1f6aa',
740
+		':no_entry_sign:' => '1f6ab',
741
+		':smoking:' => '1f6ac',
742
+		':no_smoking:' => '1f6ad',
743
+		':bike:' => '1f6b2',
744
+		':walking:' => '1f6b6',
745
+		':mens:' => '1f6b9',
746
+		':womens:' => '1f6ba',
747
+		':restroom:' => '1f6bb',
748
+		':baby_symbol:' => '1f6bc',
749
+		':toilet:' => '1f6bd',
750
+		':wc:' => '1f6be',
751
+		':bath:' => '1f6c0',
752
+		':grinning:' => '1f600',
753
+		':innocent:' => '1f607',
754
+		':smiling_imp:' => '1f608',
755
+		':sunglasses:' => '1f60e',
756
+		':neutral_face:' => '1f610',
757
+		':expressionless:' => '1f611',
758
+		':confused:' => '1f615',
759
+		':kissing:' => '1f617',
760
+		':kissing_smiling_eyes:' => '1f619',
761
+		':stuck_out_tongue:' => '1f61b',
762
+		':worried:' => '1f61f',
763
+		':frowning:' => '1f626',
764
+		':anguished:' => '1f627',
765
+		':grimacing:' => '1f62c',
766
+		':open_mouth:' => '1f62e',
767
+		':hushed:' => '1f62f',
768
+		':sleeping:' => '1f634',
769
+		':no_mouth:' => '1f636',
770
+		':helicopter:' => '1f681',
771
+		':steam_locomotive:' => '1f682',
772
+		':train2:' => '1f686',
773
+		':light_rail:' => '1f688',
774
+		':tram:' => '1f68a',
775
+		':oncoming_bus:' => '1f68d',
776
+		':trolleybus:' => '1f68e',
777
+		':minibus:' => '1f690',
778
+		':oncoming_police_car:' => '1f694',
779
+		':oncoming_taxi:' => '1f696',
780
+		':oncoming_automobile:' => '1f698',
781
+		':articulated_lorry:' => '1f69b',
782
+		':tractor:' => '1f69c',
783
+		':monorail:' => '1f69d',
784
+		':mountain_railway:' => '1f69e',
785
+		':suspension_railway:' => '1f69f',
786
+		':mountain_cableway:' => '1f6a0',
787
+		':aerial_tramway:' => '1f6a1',
788
+		':rowboat:' => '1f6a3',
789
+		':vertical_traffic_light:' => '1f6a6',
790
+		':put_litter_in_its_place:' => '1f6ae',
791
+		':do_not_litter:' => '1f6af',
792
+		':potable_water:' => '1f6b0',
793
+		':non-potable_water:' => '1f6b1',
794
+		':no_bicycles:' => '1f6b3',
795
+		':bicyclist:' => '1f6b4',
796
+		':mountain_bicyclist:' => '1f6b5',
797
+		':no_pedestrians:' => '1f6b7',
798
+		':children_crossing:' => '1f6b8',
799
+		':shower:' => '1f6bf',
800
+		':bathtub:' => '1f6c1',
801
+		':passport_control:' => '1f6c2',
802
+		':customs:' => '1f6c3',
803
+		':baggage_claim:' => '1f6c4',
804
+		':left_luggage:' => '1f6c5',
805
+		':earth_africa:' => '1f30d',
806
+		':earth_americas:' => '1f30e',
807
+		':globe_with_meridians:' => '1f310',
808
+		':waxing_crescent_moon:' => '1f312',
809
+		':waning_gibbous_moon:' => '1f316',
810
+		':last_quarter_moon:' => '1f317',
811
+		':waning_crescent_moon:' => '1f318',
812
+		':new_moon_with_face:' => '1f31a',
813
+		':last_quarter_moon_with_face:' => '1f31c',
814
+		':full_moon_with_face:' => '1f31d',
815
+		':sun_with_face:' => '1f31e',
816
+		':evergreen_tree:' => '1f332',
817
+		':deciduous_tree:' => '1f333',
818
+		':lemon:' => '1f34b',
819
+		':pear:' => '1f350',
820
+		':baby_bottle:' => '1f37c',
821
+		':horse_racing:' => '1f3c7',
822
+		':rugby_football:' => '1f3c9',
823
+		':european_post_office:' => '1f3e4',
824
+		':rat:' => '1f400',
825
+		':mouse2:' => '1f401',
826
+		':ox:' => '1f402',
827
+		':water_buffalo:' => '1f403',
828
+		':cow2:' => '1f404',
829
+		':tiger2:' => '1f405',
830
+		':leopard:' => '1f406',
831
+		':rabbit2:' => '1f407',
832
+		':cat2:' => '1f408',
833
+		':dragon:' => '1f409',
834
+		':crocodile:' => '1f40a',
835
+		':whale2:' => '1f40b',
836
+		':ram:' => '1f40f',
837
+		':goat:' => '1f410',
838
+		':rooster:' => '1f413',
839
+		':dog2:' => '1f415',
840
+		':pig2:' => '1f416',
841
+		':dromedary_camel:' => '1f42a',
842
+		':busts_in_silhouette:' => '1f465',
843
+		':two_men_holding_hands:' => '1f46c',
844
+		':two_women_holding_hands:' => '1f46d',
845
+		':thought_balloon:' => '1f4ad',
846
+		':euro:' => '1f4b6',
847
+		':pound:' => '1f4b7',
848
+		':mailbox_with_mail:' => '1f4ec',
849
+		':mailbox_with_no_mail:' => '1f4ed',
850
+		':postal_horn:' => '1f4ef',
851
+		':no_mobile_phones:' => '1f4f5',
852
+		':twisted_rightwards_arrows:' => '1f500',
853
+		':repeat:' => '1f501',
854
+		':repeat_one:' => '1f502',
855
+		':arrows_counterclockwise:' => '1f504',
856
+		':low_brightness:' => '1f505',
857
+		':high_brightness:' => '1f506',
858
+		':mute:' => '1f507',
859
+		':sound:' => '1f509',
860
+		':no_bell:' => '1f515',
861
+		':microscope:' => '1f52c',
862
+		':telescope:' => '1f52d',
863
+		':clock130:' => '1f55c',
864
+		':clock230:' => '1f55d',
865
+		':clock330:' => '1f55e',
866
+		':clock430:' => '1f55f',
867
+		':clock530:' => '1f560',
868
+		':clock630:' => '1f561',
869
+		':clock730:' => '1f562',
870
+		':clock830:' => '1f563',
871
+		':clock930:' => '1f564',
872
+		':clock1030:' => '1f565',
873
+		':clock1130:' => '1f566',
874
+		':clock1230:' => '1f567',
875
+		':speaker:' => '1f508',
876
+		':train:' => '1f68b',
877
+		':loop:' => '27bf',
878
+		':af:' => '1f1e6-1f1eb',
879
+		':al:' => '1f1e6-1f1f1',
880
+		':dz:' => '1f1e9-1f1ff',
881
+		':ad:' => '1f1e6-1f1e9',
882
+		':ao:' => '1f1e6-1f1f4',
883
+		':ag:' => '1f1e6-1f1ec',
884
+		':ar:' => '1f1e6-1f1f7',
885
+		':am:' => '1f1e6-1f1f2',
886
+		':au:' => '1f1e6-1f1fa',
887
+		':at:' => '1f1e6-1f1f9',
888
+		':az:' => '1f1e6-1f1ff',
889
+		':bs:' => '1f1e7-1f1f8',
890
+		':bh:' => '1f1e7-1f1ed',
891
+		':bd:' => '1f1e7-1f1e9',
892
+		':bb:' => '1f1e7-1f1e7',
893
+		':by:' => '1f1e7-1f1fe',
894
+		':be:' => '1f1e7-1f1ea',
895
+		':bz:' => '1f1e7-1f1ff',
896
+		':bj:' => '1f1e7-1f1ef',
897
+		':bt:' => '1f1e7-1f1f9',
898
+		':bo:' => '1f1e7-1f1f4',
899
+		':ba:' => '1f1e7-1f1e6',
900
+		':bw:' => '1f1e7-1f1fc',
901
+		':br:' => '1f1e7-1f1f7',
902
+		':bn:' => '1f1e7-1f1f3',
903
+		':bg:' => '1f1e7-1f1ec',
904
+		':bf:' => '1f1e7-1f1eb',
905
+		':bi:' => '1f1e7-1f1ee',
906
+		':kh:' => '1f1f0-1f1ed',
907
+		':cm:' => '1f1e8-1f1f2',
908
+		':ca:' => '1f1e8-1f1e6',
909
+		':cv:' => '1f1e8-1f1fb',
910
+		':cf:' => '1f1e8-1f1eb',
911
+		':td:' => '1f1f9-1f1e9',
912
+		':chile:' => '1f1e8-1f1f1',
913
+		':co:' => '1f1e8-1f1f4',
914
+		':km:' => '1f1f0-1f1f2',
915
+		':cr:' => '1f1e8-1f1f7',
916
+		':ci:' => '1f1e8-1f1ee',
917
+		':hr:' => '1f1ed-1f1f7',
918
+		':cu:' => '1f1e8-1f1fa',
919
+		':cy:' => '1f1e8-1f1fe',
920
+		':cz:' => '1f1e8-1f1ff',
921
+		':congo:' => '1f1e8-1f1e9',
922
+		':dk:' => '1f1e9-1f1f0',
923
+		':dj:' => '1f1e9-1f1ef',
924
+		':dm:' => '1f1e9-1f1f2',
925
+		':do:' => '1f1e9-1f1f4',
926
+		':tl:' => '1f1f9-1f1f1',
927
+		':ec:' => '1f1ea-1f1e8',
928
+		':eg:' => '1f1ea-1f1ec',
929
+		':sv:' => '1f1f8-1f1fb',
930
+		':gq:' => '1f1ec-1f1f6',
931
+		':er:' => '1f1ea-1f1f7',
932
+		':ee:' => '1f1ea-1f1ea',
933
+		':et:' => '1f1ea-1f1f9',
934
+		':fj:' => '1f1eb-1f1ef',
935
+		':fi:' => '1f1eb-1f1ee',
936
+		':ga:' => '1f1ec-1f1e6',
937
+		':gm:' => '1f1ec-1f1f2',
938
+		':ge:' => '1f1ec-1f1ea',
939
+		':gh:' => '1f1ec-1f1ed',
940
+		':gr:' => '1f1ec-1f1f7',
941
+		':gd:' => '1f1ec-1f1e9',
942
+		':gt:' => '1f1ec-1f1f9',
943
+		':gn:' => '1f1ec-1f1f3',
944
+		':gw:' => '1f1ec-1f1fc',
945
+		':gy:' => '1f1ec-1f1fe',
946
+		':ht:' => '1f1ed-1f1f9',
947
+		':hn:' => '1f1ed-1f1f3',
948
+		':hu:' => '1f1ed-1f1fa',
949
+		':is:' => '1f1ee-1f1f8',
950
+		':in:' => '1f1ee-1f1f3',
951
+		':indonesia:' => '1f1ee-1f1e9',
952
+		':ir:' => '1f1ee-1f1f7',
953
+		':iq:' => '1f1ee-1f1f6',
954
+		':ie:' => '1f1ee-1f1ea',
955
+		':il:' => '1f1ee-1f1f1',
956
+		':jm:' => '1f1ef-1f1f2',
957
+		':jo:' => '1f1ef-1f1f4',
958
+		':kz:' => '1f1f0-1f1ff',
959
+		':ke:' => '1f1f0-1f1ea',
960
+		':ki:' => '1f1f0-1f1ee',
961
+		':xk:' => '1f1fd-1f1f0',
962
+		':kw:' => '1f1f0-1f1fc',
963
+		':kg:' => '1f1f0-1f1ec',
964
+		':la:' => '1f1f1-1f1e6',
965
+		':lv:' => '1f1f1-1f1fb',
966
+		':lb:' => '1f1f1-1f1e7',
967
+		':ls:' => '1f1f1-1f1f8',
968
+		':lr:' => '1f1f1-1f1f7',
969
+		':ly:' => '1f1f1-1f1fe',
970
+		':li:' => '1f1f1-1f1ee',
971
+		':lt:' => '1f1f1-1f1f9',
972
+		':lu:' => '1f1f1-1f1fa',
973
+		':mk:' => '1f1f2-1f1f0',
974
+		':mg:' => '1f1f2-1f1ec',
975
+		':mw:' => '1f1f2-1f1fc',
976
+		':my:' => '1f1f2-1f1fe',
977
+		':mv:' => '1f1f2-1f1fb',
978
+		':ml:' => '1f1f2-1f1f1',
979
+		':mt:' => '1f1f2-1f1f9',
980
+		':mh:' => '1f1f2-1f1ed',
981
+		':mr:' => '1f1f2-1f1f7',
982
+		':mu:' => '1f1f2-1f1fa',
983
+		':mx:' => '1f1f2-1f1fd',
984
+		':fm:' => '1f1eb-1f1f2',
985
+		':md:' => '1f1f2-1f1e9',
986
+		':mc:' => '1f1f2-1f1e8',
987
+		':mn:' => '1f1f2-1f1f3',
988
+		':me:' => '1f1f2-1f1ea',
989
+		':ma:' => '1f1f2-1f1e6',
990
+		':mz:' => '1f1f2-1f1ff',
991
+		':mm:' => '1f1f2-1f1f2',
992
+		':na:' => '1f1f3-1f1e6',
993
+		':nr:' => '1f1f3-1f1f7',
994
+		':np:' => '1f1f3-1f1f5',
995
+		':nl:' => '1f1f3-1f1f1',
996
+		':nz:' => '1f1f3-1f1ff',
997
+		':ni:' => '1f1f3-1f1ee',
998
+		':ne:' => '1f1f3-1f1ea',
999
+		':nigeria:' => '1f1f3-1f1ec',
1000
+		':kp:' => '1f1f0-1f1f5',
1001
+		':no:' => '1f1f3-1f1f4',
1002
+		':om:' => '1f1f4-1f1f2',
1003
+		':pk:' => '1f1f5-1f1f0',
1004
+		':pw:' => '1f1f5-1f1fc',
1005
+		':pa:' => '1f1f5-1f1e6',
1006
+		':pg:' => '1f1f5-1f1ec',
1007
+		':py:' => '1f1f5-1f1fe',
1008
+		':pe:' => '1f1f5-1f1ea',
1009
+		':ph:' => '1f1f5-1f1ed',
1010
+		':pl:' => '1f1f5-1f1f1',
1011
+		':pt:' => '1f1f5-1f1f9',
1012
+		':qa:' => '1f1f6-1f1e6',
1013
+		':tw:' => '1f1f9-1f1fc',
1014
+		':cg:' => '1f1e8-1f1ec',
1015
+		':ro:' => '1f1f7-1f1f4',
1016
+		':rw:' => '1f1f7-1f1fc',
1017
+		':kn:' => '1f1f0-1f1f3',
1018
+		':lc:' => '1f1f1-1f1e8',
1019
+		':vc:' => '1f1fb-1f1e8',
1020
+		':ws:' => '1f1fc-1f1f8',
1021
+		':sm:' => '1f1f8-1f1f2',
1022
+		':st:' => '1f1f8-1f1f9',
1023
+		':saudiarabia:' => '1f1f8-1f1e6',
1024
+		':saudi:' => '1f1f8-1f1e6',
1025
+		':sn:' => '1f1f8-1f1f3',
1026
+		':rs:' => '1f1f7-1f1f8',
1027
+		':sc:' => '1f1f8-1f1e8',
1028
+		':sl:' => '1f1f8-1f1f1',
1029
+		':sg:' => '1f1f8-1f1ec',
1030
+		':sk:' => '1f1f8-1f1f0',
1031
+		':si:' => '1f1f8-1f1ee',
1032
+		':sb:' => '1f1f8-1f1e7',
1033
+		':so:' => '1f1f8-1f1f4',
1034
+		':za:' => '1f1ff-1f1e6',
1035
+		':lk:' => '1f1f1-1f1f0',
1036
+		':sd:' => '1f1f8-1f1e9',
1037
+		':sr:' => '1f1f8-1f1f7',
1038
+		':sz:' => '1f1f8-1f1ff',
1039
+		':se:' => '1f1f8-1f1ea',
1040
+		':ch:' => '1f1e8-1f1ed',
1041
+		':sy:' => '1f1f8-1f1fe',
1042
+		':tj:' => '1f1f9-1f1ef',
1043
+		':tz:' => '1f1f9-1f1ff',
1044
+		':th:' => '1f1f9-1f1ed',
1045
+		':tg:' => '1f1f9-1f1ec',
1046
+		':to:' => '1f1f9-1f1f4',
1047
+		':tt:' => '1f1f9-1f1f9',
1048
+		':tn:' => '1f1f9-1f1f3',
1049
+		':tr:' => '1f1f9-1f1f7',
1050
+		':turkmenistan:' => '1f1f9-1f1f2',
1051
+		':tuvalu:' => '1f1f9-1f1fb',
1052
+		':ug:' => '1f1fa-1f1ec',
1053
+		':ua:' => '1f1fa-1f1e6',
1054
+		':ae:' => '1f1e6-1f1ea',
1055
+		':uy:' => '1f1fa-1f1fe',
1056
+		':uz:' => '1f1fa-1f1ff',
1057
+		':vu:' => '1f1fb-1f1fa',
1058
+		':va:' => '1f1fb-1f1e6',
1059
+		':ve:' => '1f1fb-1f1ea',
1060
+		':vn:' => '1f1fb-1f1f3',
1061
+		':eh:' => '1f1ea-1f1ed',
1062
+		':ye:' => '1f1fe-1f1ea',
1063
+		':zm:' => '1f1ff-1f1f2',
1064
+		':zw:' => '1f1ff-1f1fc',
1065
+		':pr:' => '1f1f5-1f1f7',
1066
+		':ky:' => '1f1f0-1f1fe',
1067
+		':bm:' => '1f1e7-1f1f2',
1068
+		':pf:' => '1f1f5-1f1eb',
1069
+		':ps:' => '1f1f5-1f1f8',
1070
+		':nc:' => '1f1f3-1f1e8',
1071
+		':sh:' => '1f1f8-1f1ed',
1072
+		':aw:' => '1f1e6-1f1fc',
1073
+		':vi:' => '1f1fb-1f1ee',
1074
+		':hk:' => '1f1ed-1f1f0',
1075
+		':ac:' => '1f1e6-1f1e8',
1076
+		':ms:' => '1f1f2-1f1f8',
1077
+		':gu:' => '1f1ec-1f1fa',
1078
+		':gl:' => '1f1ec-1f1f1',
1079
+		':nu:' => '1f1f3-1f1fa',
1080
+		':wf:' => '1f1fc-1f1eb',
1081
+		':mo:' => '1f1f2-1f1f4',
1082
+		':fo:' => '1f1eb-1f1f4',
1083
+		':fk:' => '1f1eb-1f1f0',
1084
+		':je:' => '1f1ef-1f1ea',
1085
+		':ai:' => '1f1e6-1f1ee',
1086
+		':gi:' => '1f1ec-1f1ee'
1087
+	);
1088
+	static $ascii_replace = Array(
1089
+		'<3' => '2764',
1090
+		'</3' => '1f494',
1091
+		':\')' => '1f602',
1092
+		':\'-)' => '1f602',
1093
+		':D' => '1f603',
1094
+		':-D' => '1f603',
1095
+		'=D' => '1f603',
1096
+		':)' => '1f604',
1097
+		':-)' => '1f604',
1098
+		'=]' => '1f604',
1099
+		'=)' => '1f604',
1100
+		':]' => '1f604',
1101
+		'\':)' => '1f605',
1102
+		'\':-)' => '1f605',
1103
+		'\'=)' => '1f605',
1104
+		'\':D' => '1f605',
1105
+		'\':-D' => '1f605',
1106
+		'\'=D' => '1f605',
1107
+		'>:)' => '1f606',
1108
+		'>;)' => '1f606',
1109
+		'>:-)' => '1f606',
1110
+		'>=)' => '1f606',
1111
+		';)' => '1f609',
1112
+		';-)' => '1f609',
1113
+		'*-)' => '1f609',
1114
+		'*)' => '1f609',
1115
+		';-]' => '1f609',
1116
+		';]' => '1f609',
1117
+		';D' => '1f609',
1118
+		';^)' => '1f609',
1119
+		'\':(' => '1f613',
1120
+		'\':-(' => '1f613',
1121
+		'\'=(' => '1f613',
1122
+		':*' => '1f618',
1123
+		':-*' => '1f618',
1124
+		'=*' => '1f618',
1125
+		':^*' => '1f618',
1126
+		'>:P' => '1f61c',
1127
+		'X-P' => '1f61c',
1128
+		'x-p' => '1f61c',
1129
+		'>:[' => '1f61e',
1130
+		':-(' => '1f61e',
1131
+		':(' => '1f61e',
1132
+		':-[' => '1f61e',
1133
+		':[' => '1f61e',
1134
+		'=(' => '1f61e',
1135
+		'>:(' => '1f620',
1136
+		'>:-(' => '1f620',
1137
+		':@' => '1f620',
1138
+		':\'(' => '1f622',
1139
+		':\'-(' => '1f622',
1140
+		';(' => '1f622',
1141
+		';-(' => '1f622',
1142
+		'>.<' => '1f623',
1143
+		':$' => '1f633',
1144
+		'=$' => '1f633',
1145
+		'#-)' => '1f635',
1146
+		'#)' => '1f635',
1147
+		'%-)' => '1f635',
1148
+		'%)' => '1f635',
1149
+		'X)' => '1f635',
1150
+		'X-)' => '1f635',
1151
+		'*\\0/*' => '1f646',
1152
+		'\\0/' => '1f646',
1153
+		'*\\O/*' => '1f646',
1154
+		'\\O/' => '1f646',
1155
+		'O:-)' => '1f607',
1156
+		'0:-3' => '1f607',
1157
+		'0:3' => '1f607',
1158
+		'0:-)' => '1f607',
1159
+		'0:)' => '1f607',
1160
+		'0;^)' => '1f607',
1161
+		'O:-)' => '1f607',
1162
+		'O:)' => '1f607',
1163
+		'O;-)' => '1f607',
1164
+		'O=)' => '1f607',
1165
+		'0;-)' => '1f607',
1166
+		'O:-3' => '1f607',
1167
+		'O:3' => '1f607',
1168
+		'B-)' => '1f60e',
1169
+		'B)' => '1f60e',
1170
+		'8)' => '1f60e',
1171
+		'8-)' => '1f60e',
1172
+		'B-D' => '1f60e',
1173
+		'8-D' => '1f60e',
1174
+		'-_-' => '1f611',
1175
+		'-__-' => '1f611',
1176
+		'-___-' => '1f611',
1177
+		'>:\\' => '1f615',
1178
+		'>:/' => '1f615',
1179
+		':-/' => '1f615',
1180
+		':-.' => '1f615',
1181
+		':/' => '1f615',
1182
+		':\\' => '1f615',
1183
+		'=/' => '1f615',
1184
+		'=\\' => '1f615',
1185
+		':L' => '1f615',
1186
+		'=L' => '1f615',
1187
+		':P' => '1f61b',
1188
+		':-P' => '1f61b',
1189
+		'=P' => '1f61b',
1190
+		':-p' => '1f61b',
1191
+		':p' => '1f61b',
1192
+		'=p' => '1f61b',
1193
+		':-Þ' => '1f61b',
1194
+		':Þ' => '1f61b',
1195
+		':þ' => '1f61b',
1196
+		':-þ' => '1f61b',
1197
+		':-b' => '1f61b',
1198
+		':b' => '1f61b',
1199
+		'd:' => '1f61b',
1200
+		':-O' => '1f62e',
1201
+		':O' => '1f62e',
1202
+		':-o' => '1f62e',
1203
+		':o' => '1f62e',
1204
+		'O_O' => '1f62e',
1205
+		'>:O' => '1f62e',
1206
+		':-X' => '1f636',
1207
+		':X' => '1f636',
1208
+		':-#' => '1f636',
1209
+		':#' => '1f636',
1210
+		'=X' => '1f636',
1211
+		'=x' => '1f636',
1212
+		':x' => '1f636',
1213
+		':-x' => '1f636',
1214
+		'=#' => '1f636'
1215
+	);
1216
+	static $unicode_replace = Array(
1217
+		"\x23\xEF\xB8\x8F\xE2\x83\xA3" => ':hash:',
1218
+		"\x23\xE2\x83\xA3" => ':hash:',
1219
+		"\x30\xEF\xB8\x8F\xE2\x83\xA3" => ':zero:',
1220
+		"\x30\xE2\x83\xA3" => ':zero:',
1221
+		"\x31\xEF\xB8\x8F\xE2\x83\xA3" => ':one:',
1222
+		"\x31\xE2\x83\xA3" => ':one:',
1223
+		"\x32\xEF\xB8\x8F\xE2\x83\xA3" => ':two:',
1224
+		"\x32\xE2\x83\xA3" => ':two:',
1225
+		"\x33\xEF\xB8\x8F\xE2\x83\xA3" => ':three:',
1226
+		"\x33\xE2\x83\xA3" => ':three:',
1227
+		"\x34\xEF\xB8\x8F\xE2\x83\xA3" => ':four:',
1228
+		"\x34\xE2\x83\xA3" => ':four:',
1229
+		"\x35\xEF\xB8\x8F\xE2\x83\xA3" => ':five:',
1230
+		"\x35\xE2\x83\xA3" => ':five:',
1231
+		"\x36\xEF\xB8\x8F\xE2\x83\xA3" => ':six:',
1232
+		"\x36\xE2\x83\xA3" => ':six:',
1233
+		"\x37\xEF\xB8\x8F\xE2\x83\xA3" => ':seven:',
1234
+		"\x37\xE2\x83\xA3" => ':seven:',
1235
+		"\x38\xEF\xB8\x8F\xE2\x83\xA3" => ':eight:',
1236
+		"\x38\xE2\x83\xA3" => ':eight:',
1237
+		"\x39\xEF\xB8\x8F\xE2\x83\xA3" => ':nine:',
1238
+		"\x39\xE2\x83\xA3" => ':nine:',
1239
+		"\xC2\xA9" => ':copyright:',
1240
+		"\xC2\xAE" => ':registered:',
1241
+		"\xE2\x80\xBC\xEF\xB8\x8F" => ':bangbang:',
1242
+		"\xE2\x80\xBC" => ':bangbang:',
1243
+		"\xE2\x81\x89\xEF\xB8\x8F" => ':interrobang:',
1244
+		"\xE2\x81\x89" => ':interrobang:',
1245
+		"\xE2\x84\xA2" => ':tm:',
1246
+		"\xE2\x84\xB9\xEF\xB8\x8F" => ':information_source:',
1247
+		"\xE2\x84\xB9" => ':information_source:',
1248
+		"\xE2\x86\x94\xEF\xB8\x8F" => ':left_right_arrow:',
1249
+		"\xE2\x86\x94" => ':left_right_arrow:',
1250
+		"\xE2\x86\x95\xEF\xB8\x8F" => ':arrow_up_down:',
1251
+		"\xE2\x86\x95" => ':arrow_up_down:',
1252
+		"\xE2\x86\x96\xEF\xB8\x8F" => ':arrow_upper_left:',
1253
+		"\xE2\x86\x96" => ':arrow_upper_left:',
1254
+		"\xE2\x86\x97\xEF\xB8\x8F" => ':arrow_upper_right:',
1255
+		"\xE2\x86\x97" => ':arrow_upper_right:',
1256
+		"\xE2\x86\x98\xEF\xB8\x8F" => ':arrow_lower_right:',
1257
+		"\xE2\x86\x98" => ':arrow_lower_right:',
1258
+		"\xE2\x86\x99\xEF\xB8\x8F" => ':arrow_lower_left:',
1259
+		"\xE2\x86\x99" => ':arrow_lower_left:',
1260
+		"\xE2\x86\xA9\xEF\xB8\x8F" => ':leftwards_arrow_with_hook:',
1261
+		"\xE2\x86\xA9" => ':leftwards_arrow_with_hook:',
1262
+		"\xE2\x86\xAA\xEF\xB8\x8F" => ':arrow_right_hook:',
1263
+		"\xE2\x86\xAA" => ':arrow_right_hook:',
1264
+		"\xE2\x8C\x9A\xEF\xB8\x8F" => ':watch:',
1265
+		"\xE2\x8C\x9A" => ':watch:',
1266
+		"\xE2\x8C\x9B\xEF\xB8\x8F" => ':hourglass:',
1267
+		"\xE2\x8C\x9B" => ':hourglass:',
1268
+		"\xE2\x8F\xA9" => ':fast_forward:',
1269
+		"\xE2\x8F\xAA" => ':rewind:',
1270
+		"\xE2\x8F\xAB" => ':arrow_double_up:',
1271
+		"\xE2\x8F\xAC" => ':arrow_double_down:',
1272
+		"\xE2\x8F\xB0" => ':alarm_clock:',
1273
+		"\xE2\x8F\xB3" => ':hourglass_flowing_sand:',
1274
+		"\xE2\x93\x82\xEF\xB8\x8F" => ':m:',
1275
+		"\xE2\x93\x82" => ':m:',
1276
+		"\xE2\x96\xAA\xEF\xB8\x8F" => ':black_small_square:',
1277
+		"\xE2\x96\xAA" => ':black_small_square:',
1278
+		"\xE2\x96\xAB\xEF\xB8\x8F" => ':white_small_square:',
1279
+		"\xE2\x96\xAB" => ':white_small_square:',
1280
+		"\xE2\x96\xB6\xEF\xB8\x8F" => ':arrow_forward:',
1281
+		"\xE2\x96\xB6" => ':arrow_forward:',
1282
+		"\xE2\x97\x80\xEF\xB8\x8F" => ':arrow_backward:',
1283
+		"\xE2\x97\x80" => ':arrow_backward:',
1284
+		"\xE2\x97\xBB\xEF\xB8\x8F" => ':white_medium_square:',
1285
+		"\xE2\x97\xBB" => ':white_medium_square:',
1286
+		"\xE2\x97\xBC\xEF\xB8\x8F" => ':black_medium_square:',
1287
+		"\xE2\x97\xBC" => ':black_medium_square:',
1288
+		"\xE2\x97\xBD\xEF\xB8\x8F" => ':white_medium_small_square:',
1289
+		"\xE2\x97\xBD" => ':white_medium_small_square:',
1290
+		"\xE2\x97\xBE\xEF\xB8\x8F" => ':black_medium_small_square:',
1291
+		"\xE2\x97\xBE" => ':black_medium_small_square:',
1292
+		"\xE2\x98\x80\xEF\xB8\x8F" => ':sunny:',
1293
+		"\xE2\x98\x80" => ':sunny:',
1294
+		"\xE2\x98\x81\xEF\xB8\x8F" => ':cloud:',
1295
+		"\xE2\x98\x81" => ':cloud:',
1296
+		"\xE2\x98\x8E\xEF\xB8\x8F" => ':telephone:',
1297
+		"\xE2\x98\x8E" => ':telephone:',
1298
+		"\xE2\x98\x91\xEF\xB8\x8F" => ':ballot_box_with_check:',
1299
+		"\xE2\x98\x91" => ':ballot_box_with_check:',
1300
+		"\xE2\x98\x94\xEF\xB8\x8F" => ':umbrella:',
1301
+		"\xE2\x98\x94" => ':umbrella:',
1302
+		"\xE2\x98\x95\xEF\xB8\x8F" => ':coffee:',
1303
+		"\xE2\x98\x95" => ':coffee:',
1304
+		"\xE2\x98\x9D\xEF\xB8\x8F" => ':point_up:',
1305
+		"\xE2\x98\x9D" => ':point_up:',
1306
+		"\xE2\x98\xBA\xEF\xB8\x8F" => ':relaxed:',
1307
+		"\xE2\x98\xBA" => ':relaxed:',
1308
+		"\xE2\x99\x88\xEF\xB8\x8F" => ':aries:',
1309
+		"\xE2\x99\x88" => ':aries:',
1310
+		"\xE2\x99\x89\xEF\xB8\x8F" => ':taurus:',
1311
+		"\xE2\x99\x89" => ':taurus:',
1312
+		"\xE2\x99\x8A\xEF\xB8\x8F" => ':gemini:',
1313
+		"\xE2\x99\x8A" => ':gemini:',
1314
+		"\xE2\x99\x8B\xEF\xB8\x8F" => ':cancer:',
1315
+		"\xE2\x99\x8B" => ':cancer:',
1316
+		"\xE2\x99\x8C\xEF\xB8\x8F" => ':leo:',
1317
+		"\xE2\x99\x8C" => ':leo:',
1318
+		"\xE2\x99\x8D\xEF\xB8\x8F" => ':virgo:',
1319
+		"\xE2\x99\x8D" => ':virgo:',
1320
+		"\xE2\x99\x8E\xEF\xB8\x8F" => ':libra:',
1321
+		"\xE2\x99\x8E" => ':libra:',
1322
+		"\xE2\x99\x8F\xEF\xB8\x8F" => ':scorpius:',
1323
+		"\xE2\x99\x8F" => ':scorpius:',
1324
+		"\xE2\x99\x90\xEF\xB8\x8F" => ':sagittarius:',
1325
+		"\xE2\x99\x90" => ':sagittarius:',
1326
+		"\xE2\x99\x91\xEF\xB8\x8F" => ':capricorn:',
1327
+		"\xE2\x99\x91" => ':capricorn:',
1328
+		"\xE2\x99\x92\xEF\xB8\x8F" => ':aquarius:',
1329
+		"\xE2\x99\x92" => ':aquarius:',
1330
+		"\xE2\x99\x93\xEF\xB8\x8F" => ':pisces:',
1331
+		"\xE2\x99\x93" => ':pisces:',
1332
+		"\xE2\x99\xA0\xEF\xB8\x8F" => ':spades:',
1333
+		"\xE2\x99\xA0" => ':spades:',
1334
+		"\xE2\x99\xA3\xEF\xB8\x8F" => ':clubs:',
1335
+		"\xE2\x99\xA3" => ':clubs:',
1336
+		"\xE2\x99\xA5\xEF\xB8\x8F" => ':hearts:',
1337
+		"\xE2\x99\xA5" => ':hearts:',
1338
+		"\xE2\x99\xA6\xEF\xB8\x8F" => ':diamonds:',
1339
+		"\xE2\x99\xA6" => ':diamonds:',
1340
+		"\xE2\x99\xA8\xEF\xB8\x8F" => ':hotsprings:',
1341
+		"\xE2\x99\xA8" => ':hotsprings:',
1342
+		"\xE2\x99\xBB\xEF\xB8\x8F" => ':recycle:',
1343
+		"\xE2\x99\xBB" => ':recycle:',
1344
+		"\xE2\x99\xBF\xEF\xB8\x8F" => ':wheelchair:',
1345
+		"\xE2\x99\xBF" => ':wheelchair:',
1346
+		"\xE2\x9A\x93\xEF\xB8\x8F" => ':anchor:',
1347
+		"\xE2\x9A\x93" => ':anchor:',
1348
+		"\xE2\x9A\xA0\xEF\xB8\x8F" => ':warning:',
1349
+		"\xE2\x9A\xA0" => ':warning:',
1350
+		"\xE2\x9A\xA1\xEF\xB8\x8F" => ':zap:',
1351
+		"\xE2\x9A\xA1" => ':zap:',
1352
+		"\xE2\x9A\xAA\xEF\xB8\x8F" => ':white_circle:',
1353
+		"\xE2\x9A\xAA" => ':white_circle:',
1354
+		"\xE2\x9A\xAB\xEF\xB8\x8F" => ':black_circle:',
1355
+		"\xE2\x9A\xAB" => ':black_circle:',
1356
+		"\xE2\x9A\xBD\xEF\xB8\x8F" => ':soccer:',
1357
+		"\xE2\x9A\xBD" => ':soccer:',
1358
+		"\xE2\x9A\xBE\xEF\xB8\x8F" => ':baseball:',
1359
+		"\xE2\x9A\xBE" => ':baseball:',
1360
+		"\xE2\x9B\x84\xEF\xB8\x8F" => ':snowman:',
1361
+		"\xE2\x9B\x84" => ':snowman:',
1362
+		"\xE2\x9B\x85\xEF\xB8\x8F" => ':partly_sunny:',
1363
+		"\xE2\x9B\x85" => ':partly_sunny:',
1364
+		"\xE2\x9B\x8E" => ':ophiuchus:',
1365
+		"\xE2\x9B\x94\xEF\xB8\x8F" => ':no_entry:',
1366
+		"\xE2\x9B\x94" => ':no_entry:',
1367
+		"\xE2\x9B\xAA\xEF\xB8\x8F" => ':church:',
1368
+		"\xE2\x9B\xAA" => ':church:',
1369
+		"\xE2\x9B\xB2\xEF\xB8\x8F" => ':fountain:',
1370
+		"\xE2\x9B\xB2" => ':fountain:',
1371
+		"\xE2\x9B\xB3\xEF\xB8\x8F" => ':golf:',
1372
+		"\xE2\x9B\xB3" => ':golf:',
1373
+		"\xE2\x9B\xB5\xEF\xB8\x8F" => ':sailboat:',
1374
+		"\xE2\x9B\xB5" => ':sailboat:',
1375
+		"\xE2\x9B\xBA\xEF\xB8\x8F" => ':tent:',
1376
+		"\xE2\x9B\xBA" => ':tent:',
1377
+		"\xE2\x9B\xBD\xEF\xB8\x8F" => ':fuelpump:',
1378
+		"\xE2\x9B\xBD" => ':fuelpump:',
1379
+		"\xE2\x9C\x82\xEF\xB8\x8F" => ':scissors:',
1380
+		"\xE2\x9C\x82" => ':scissors:',
1381
+		"\xE2\x9C\x85" => ':white_check_mark:',
1382
+		"\xE2\x9C\x88\xEF\xB8\x8F" => ':airplane:',
1383
+		"\xE2\x9C\x88" => ':airplane:',
1384
+		"\xE2\x9C\x89\xEF\xB8\x8F" => ':envelope:',
1385
+		"\xE2\x9C\x89" => ':envelope:',
1386
+		"\xE2\x9C\x8A" => ':fist:',
1387
+		"\xE2\x9C\x8B" => ':raised_hand:',
1388
+		"\xE2\x9C\x8C\xEF\xB8\x8F" => ':v:',
1389
+		"\xE2\x9C\x8C" => ':v:',
1390
+		"\xE2\x9C\x8F\xEF\xB8\x8F" => ':pencil2:',
1391
+		"\xE2\x9C\x8F" => ':pencil2:',
1392
+		"\xE2\x9C\x92\xEF\xB8\x8F" => ':black_nib:',
1393
+		"\xE2\x9C\x92" => ':black_nib:',
1394
+		"\xE2\x9C\x94\xEF\xB8\x8F" => ':heavy_check_mark:',
1395
+		"\xE2\x9C\x94" => ':heavy_check_mark:',
1396
+		"\xE2\x9C\x96\xEF\xB8\x8F" => ':heavy_multiplication_x:',
1397
+		"\xE2\x9C\x96" => ':heavy_multiplication_x:',
1398
+		"\xE2\x9C\xA8" => ':sparkles:',
1399
+		"\xE2\x9C\xB3\xEF\xB8\x8F" => ':eight_spoked_asterisk:',
1400
+		"\xE2\x9C\xB3" => ':eight_spoked_asterisk:',
1401
+		"\xE2\x9C\xB4\xEF\xB8\x8F" => ':eight_pointed_black_star:',
1402
+		"\xE2\x9C\xB4" => ':eight_pointed_black_star:',
1403
+		"\xE2\x9D\x84\xEF\xB8\x8F" => ':snowflake:',
1404
+		"\xE2\x9D\x84" => ':snowflake:',
1405
+		"\xE2\x9D\x87\xEF\xB8\x8F" => ':sparkle:',
1406
+		"\xE2\x9D\x87" => ':sparkle:',
1407
+		"\xE2\x9D\x8C" => ':x:',
1408
+		"\xE2\x9D\x8E" => ':negative_squared_cross_mark:',
1409
+		"\xE2\x9D\x93" => ':question:',
1410
+		"\xE2\x9D\x94" => ':grey_question:',
1411
+		"\xE2\x9D\x95" => ':grey_exclamation:',
1412
+		"\xE2\x9D\x97\xEF\xB8\x8F" => ':exclamation:',
1413
+		"\xE2\x9D\x97" => ':exclamation:',
1414
+		"\xE2\x9D\xA4\xEF\xB8\x8F" => ':heart:',
1415
+		"\xE2\x9D\xA4" => ':heart:',
1416
+		"\xE2\x9E\x95" => ':heavy_plus_sign:',
1417
+		"\xE2\x9E\x96" => ':heavy_minus_sign:',
1418
+		"\xE2\x9E\x97" => ':heavy_division_sign:',
1419
+		"\xE2\x9E\xA1\xEF\xB8\x8F" => ':arrow_right:',
1420
+		"\xE2\x9E\xA1" => ':arrow_right:',
1421
+		"\xE2\x9E\xB0" => ':curly_loop:',
1422
+		"\xE2\xA4\xB4\xEF\xB8\x8F" => ':arrow_heading_up:',
1423
+		"\xE2\xA4\xB4" => ':arrow_heading_up:',
1424
+		"\xE2\xA4\xB5\xEF\xB8\x8F" => ':arrow_heading_down:',
1425
+		"\xE2\xA4\xB5" => ':arrow_heading_down:',
1426
+		"\xE2\xAC\x85\xEF\xB8\x8F" => ':arrow_left:',
1427
+		"\xE2\xAC\x85" => ':arrow_left:',
1428
+		"\xE2\xAC\x86\xEF\xB8\x8F" => ':arrow_up:',
1429
+		"\xE2\xAC\x86" => ':arrow_up:',
1430
+		"\xE2\xAC\x87\xEF\xB8\x8F" => ':arrow_down:',
1431
+		"\xE2\xAC\x87" => ':arrow_down:',
1432
+		"\xE2\xAC\x9B\xEF\xB8\x8F" => ':black_large_square:',
1433
+		"\xE2\xAC\x9B" => ':black_large_square:',
1434
+		"\xE2\xAC\x9C\xEF\xB8\x8F" => ':white_large_square:',
1435
+		"\xE2\xAC\x9C" => ':white_large_square:',
1436
+		"\xE2\xAD\x90\xEF\xB8\x8F" => ':star:',
1437
+		"\xE2\xAD\x90" => ':star:',
1438
+		"\xE2\xAD\x95\xEF\xB8\x8F" => ':o:',
1439
+		"\xE2\xAD\x95" => ':o:',
1440
+		"\xE3\x80\xB0" => ':wavy_dash:',
1441
+		"\xE3\x80\xBD\xEF\xB8\x8F" => ':part_alternation_mark:',
1442
+		"\xE3\x80\xBD" => ':part_alternation_mark:',
1443
+		"\xE3\x8A\x97\xEF\xB8\x8F" => ':congratulations:',
1444
+		"\xE3\x8A\x97" => ':congratulations:',
1445
+		"\xE3\x8A\x99\xEF\xB8\x8F" => ':secret:',
1446
+		"\xE3\x8A\x99" => ':secret:',
1447
+		"\xF0\x9F\x80\x84\xEF\xB8\x8F" => ':mahjong:',
1448
+		"\xF0\x9F\x80\x84" => ':mahjong:',
1449
+		"\xF0\x9F\x83\x8F" => ':black_joker:',
1450
+		"\xF0\x9F\x85\xB0" => ':a:',
1451
+		"\xF0\x9F\x85\xB1" => ':b:',
1452
+		"\xF0\x9F\x85\xBE" => ':o2:',
1453
+		"\xF0\x9F\x85\xBF\xEF\xB8\x8F" => ':parking:',
1454
+		"\xF0\x9F\x85\xBF" => ':parking:',
1455
+		"\xF0\x9F\x86\x8E" => ':ab:',
1456
+		"\xF0\x9F\x86\x91" => ':cl:',
1457
+		"\xF0\x9F\x86\x92" => ':cool:',
1458
+		"\xF0\x9F\x86\x93" => ':free:',
1459
+		"\xF0\x9F\x86\x94" => ':id:',
1460
+		"\xF0\x9F\x86\x95" => ':new:',
1461
+		"\xF0\x9F\x86\x96" => ':ng:',
1462
+		"\xF0\x9F\x86\x97" => ':ok:',
1463
+		"\xF0\x9F\x86\x98" => ':sos:',
1464
+		"\xF0\x9F\x86\x99" => ':up:',
1465
+		"\xF0\x9F\x86\x9A" => ':vs:',
1466
+		"\xF0\x9F\x87\xA8\xF0\x9F\x87\xB3" => ':cn:',
1467
+		"\xF0\x9F\x87\xA9\xF0\x9F\x87\xAA" => ':de:',
1468
+		"\xF0\x9F\x87\xAA\xF0\x9F\x87\xB8" => ':es:',
1469
+		"\xF0\x9F\x87\xAB\xF0\x9F\x87\xB7" => ':fr:',
1470
+		"\xF0\x9F\x87\xAC\xF0\x9F\x87\xA7" => ':gb:',
1471
+		"\xF0\x9F\x87\xAE\xF0\x9F\x87\xB9" => ':it:',
1472
+		"\xF0\x9F\x87\xAF\xF0\x9F\x87\xB5" => ':jp:',
1473
+		"\xF0\x9F\x87\xB0\xF0\x9F\x87\xB7" => ':kr:',
1474
+		"\xF0\x9F\x87\xBA\xF0\x9F\x87\xB8" => ':us:',
1475
+		"\xF0\x9F\x87\xB7\xF0\x9F\x87\xBA" => ':ru:',
1476
+		"\xF0\x9F\x88\x81" => ':koko:',
1477
+		"\xF0\x9F\x88\x82" => ':sa:',
1478
+		"\xF0\x9F\x88\x9A\xEF\xB8\x8F" => ':u7121:',
1479
+		"\xF0\x9F\x88\x9A" => ':u7121:',
1480
+		"\xF0\x9F\x88\xAF\xEF\xB8\x8F" => ':u6307:',
1481
+		"\xF0\x9F\x88\xAF" => ':u6307:',
1482
+		"\xF0\x9F\x88\xB2" => ':u7981:',
1483
+		"\xF0\x9F\x88\xB3" => ':u7a7a:',
1484
+		"\xF0\x9F\x88\xB4" => ':u5408:',
1485
+		"\xF0\x9F\x88\xB5" => ':u6e80:',
1486
+		"\xF0\x9F\x88\xB6" => ':u6709:',
1487
+		"\xF0\x9F\x88\xB7" => ':u6708:',
1488
+		"\xF0\x9F\x88\xB8" => ':u7533:',
1489
+		"\xF0\x9F\x88\xB9" => ':u5272:',
1490
+		"\xF0\x9F\x88\xBA" => ':u55b6:',
1491
+		"\xF0\x9F\x89\x90" => ':ideograph_advantage:',
1492
+		"\xF0\x9F\x89\x91" => ':accept:',
1493
+		"\xF0\x9F\x8C\x80" => ':cyclone:',
1494
+		"\xF0\x9F\x8C\x81" => ':foggy:',
1495
+		"\xF0\x9F\x8C\x82" => ':closed_umbrella:',
1496
+		"\xF0\x9F\x8C\x83" => ':night_with_stars:',
1497
+		"\xF0\x9F\x8C\x84" => ':sunrise_over_mountains:',
1498
+		"\xF0\x9F\x8C\x85" => ':sunrise:',
1499
+		"\xF0\x9F\x8C\x86" => ':city_dusk:',
1500
+		"\xF0\x9F\x8C\x87" => ':city_sunset:',
1501
+		"\xF0\x9F\x8C\x88" => ':rainbow:',
1502
+		"\xF0\x9F\x8C\x89" => ':bridge_at_night:',
1503
+		"\xF0\x9F\x8C\x8A" => ':ocean:',
1504
+		"\xF0\x9F\x8C\x8B" => ':volcano:',
1505
+		"\xF0\x9F\x8C\x8C" => ':milky_way:',
1506
+		"\xF0\x9F\x8C\x8F" => ':earth_asia:',
1507
+		"\xF0\x9F\x8C\x91" => ':new_moon:',
1508
+		"\xF0\x9F\x8C\x93" => ':first_quarter_moon:',
1509
+		"\xF0\x9F\x8C\x94" => ':waxing_gibbous_moon:',
1510
+		"\xF0\x9F\x8C\x95" => ':full_moon:',
1511
+		"\xF0\x9F\x8C\x99" => ':crescent_moon:',
1512
+		"\xF0\x9F\x8C\x9B" => ':first_quarter_moon_with_face:',
1513
+		"\xF0\x9F\x8C\x9F" => ':star2:',
1514
+		"\xF0\x9F\x8C\xA0" => ':stars:',
1515
+		"\xF0\x9F\x8C\xB0" => ':chestnut:',
1516
+		"\xF0\x9F\x8C\xB1" => ':seedling:',
1517
+		"\xF0\x9F\x8C\xB4" => ':palm_tree:',
1518
+		"\xF0\x9F\x8C\xB5" => ':cactus:',
1519
+		"\xF0\x9F\x8C\xB7" => ':tulip:',
1520
+		"\xF0\x9F\x8C\xB8" => ':cherry_blossom:',
1521
+		"\xF0\x9F\x8C\xB9" => ':rose:',
1522
+		"\xF0\x9F\x8C\xBA" => ':hibiscus:',
1523
+		"\xF0\x9F\x8C\xBB" => ':sunflower:',
1524
+		"\xF0\x9F\x8C\xBC" => ':blossom:',
1525
+		"\xF0\x9F\x8C\xBD" => ':corn:',
1526
+		"\xF0\x9F\x8C\xBE" => ':ear_of_rice:',
1527
+		"\xF0\x9F\x8C\xBF" => ':herb:',
1528
+		"\xF0\x9F\x8D\x80" => ':four_leaf_clover:',
1529
+		"\xF0\x9F\x8D\x81" => ':maple_leaf:',
1530
+		"\xF0\x9F\x8D\x82" => ':fallen_leaf:',
1531
+		"\xF0\x9F\x8D\x83" => ':leaves:',
1532
+		"\xF0\x9F\x8D\x84" => ':mushroom:',
1533
+		"\xF0\x9F\x8D\x85" => ':tomato:',
1534
+		"\xF0\x9F\x8D\x86" => ':eggplant:',
1535
+		"\xF0\x9F\x8D\x87" => ':grapes:',
1536
+		"\xF0\x9F\x8D\x88" => ':melon:',
1537
+		"\xF0\x9F\x8D\x89" => ':watermelon:',
1538
+		"\xF0\x9F\x8D\x8A" => ':tangerine:',
1539
+		"\xF0\x9F\x8D\x8C" => ':banana:',
1540
+		"\xF0\x9F\x8D\x8D" => ':pineapple:',
1541
+		"\xF0\x9F\x8D\x8E" => ':apple:',
1542
+		"\xF0\x9F\x8D\x8F" => ':green_apple:',
1543
+		"\xF0\x9F\x8D\x91" => ':peach:',
1544
+		"\xF0\x9F\x8D\x92" => ':cherries:',
1545
+		"\xF0\x9F\x8D\x93" => ':strawberry:',
1546
+		"\xF0\x9F\x8D\x94" => ':hamburger:',
1547
+		"\xF0\x9F\x8D\x95" => ':pizza:',
1548
+		"\xF0\x9F\x8D\x96" => ':meat_on_bone:',
1549
+		"\xF0\x9F\x8D\x97" => ':poultry_leg:',
1550
+		"\xF0\x9F\x8D\x98" => ':rice_cracker:',
1551
+		"\xF0\x9F\x8D\x99" => ':rice_ball:',
1552
+		"\xF0\x9F\x8D\x9A" => ':rice:',
1553
+		"\xF0\x9F\x8D\x9B" => ':curry:',
1554
+		"\xF0\x9F\x8D\x9C" => ':ramen:',
1555
+		"\xF0\x9F\x8D\x9D" => ':spaghetti:',
1556
+		"\xF0\x9F\x8D\x9E" => ':bread:',
1557
+		"\xF0\x9F\x8D\x9F" => ':fries:',
1558
+		"\xF0\x9F\x8D\xA0" => ':sweet_potato:',
1559
+		"\xF0\x9F\x8D\xA1" => ':dango:',
1560
+		"\xF0\x9F\x8D\xA2" => ':oden:',
1561
+		"\xF0\x9F\x8D\xA3" => ':sushi:',
1562
+		"\xF0\x9F\x8D\xA4" => ':fried_shrimp:',
1563
+		"\xF0\x9F\x8D\xA5" => ':fish_cake:',
1564
+		"\xF0\x9F\x8D\xA6" => ':icecream:',
1565
+		"\xF0\x9F\x8D\xA7" => ':shaved_ice:',
1566
+		"\xF0\x9F\x8D\xA8" => ':ice_cream:',
1567
+		"\xF0\x9F\x8D\xA9" => ':doughnut:',
1568
+		"\xF0\x9F\x8D\xAA" => ':cookie:',
1569
+		"\xF0\x9F\x8D\xAB" => ':chocolate_bar:',
1570
+		"\xF0\x9F\x8D\xAC" => ':candy:',
1571
+		"\xF0\x9F\x8D\xAD" => ':lollipop:',
1572
+		"\xF0\x9F\x8D\xAE" => ':custard:',
1573
+		"\xF0\x9F\x8D\xAF" => ':honey_pot:',
1574
+		"\xF0\x9F\x8D\xB0" => ':cake:',
1575
+		"\xF0\x9F\x8D\xB1" => ':bento:',
1576
+		"\xF0\x9F\x8D\xB2" => ':stew:',
1577
+		"\xF0\x9F\x8D\xB3" => ':egg:',
1578
+		"\xF0\x9F\x8D\xB4" => ':fork_and_knife:',
1579
+		"\xF0\x9F\x8D\xB5" => ':tea:',
1580
+		"\xF0\x9F\x8D\xB6" => ':sake:',
1581
+		"\xF0\x9F\x8D\xB7" => ':wine_glass:',
1582
+		"\xF0\x9F\x8D\xB8" => ':cocktail:',
1583
+		"\xF0\x9F\x8D\xB9" => ':tropical_drink:',
1584
+		"\xF0\x9F\x8D\xBA" => ':beer:',
1585
+		"\xF0\x9F\x8D\xBB" => ':beers:',
1586
+		"\xF0\x9F\x8E\x80" => ':ribbon:',
1587
+		"\xF0\x9F\x8E\x81" => ':gift:',
1588
+		"\xF0\x9F\x8E\x82" => ':birthday:',
1589
+		"\xF0\x9F\x8E\x83" => ':jack_o_lantern:',
1590
+		"\xF0\x9F\x8E\x84" => ':christmas_tree:',
1591
+		"\xF0\x9F\x8E\x85" => ':santa:',
1592
+		"\xF0\x9F\x8E\x86" => ':fireworks:',
1593
+		"\xF0\x9F\x8E\x87" => ':sparkler:',
1594
+		"\xF0\x9F\x8E\x88" => ':balloon:',
1595
+		"\xF0\x9F\x8E\x89" => ':tada:',
1596
+		"\xF0\x9F\x8E\x8A" => ':confetti_ball:',
1597
+		"\xF0\x9F\x8E\x8B" => ':tanabata_tree:',
1598
+		"\xF0\x9F\x8E\x8C" => ':crossed_flags:',
1599
+		"\xF0\x9F\x8E\x8D" => ':bamboo:',
1600
+		"\xF0\x9F\x8E\x8E" => ':dolls:',
1601
+		"\xF0\x9F\x8E\x8F" => ':flags:',
1602
+		"\xF0\x9F\x8E\x90" => ':wind_chime:',
1603
+		"\xF0\x9F\x8E\x91" => ':rice_scene:',
1604
+		"\xF0\x9F\x8E\x92" => ':school_satchel:',
1605
+		"\xF0\x9F\x8E\x93" => ':mortar_board:',
1606
+		"\xF0\x9F\x8E\xA0" => ':carousel_horse:',
1607
+		"\xF0\x9F\x8E\xA1" => ':ferris_wheel:',
1608
+		"\xF0\x9F\x8E\xA2" => ':roller_coaster:',
1609
+		"\xF0\x9F\x8E\xA3" => ':fishing_pole_and_fish:',
1610
+		"\xF0\x9F\x8E\xA4" => ':microphone:',
1611
+		"\xF0\x9F\x8E\xA5" => ':movie_camera:',
1612
+		"\xF0\x9F\x8E\xA6" => ':cinema:',
1613
+		"\xF0\x9F\x8E\xA7" => ':headphones:',
1614
+		"\xF0\x9F\x8E\xA8" => ':art:',
1615
+		"\xF0\x9F\x8E\xA9" => ':tophat:',
1616
+		"\xF0\x9F\x8E\xAA" => ':circus_tent:',
1617
+		"\xF0\x9F\x8E\xAB" => ':ticket:',
1618
+		"\xF0\x9F\x8E\xAC" => ':clapper:',
1619
+		"\xF0\x9F\x8E\xAD" => ':performing_arts:',
1620
+		"\xF0\x9F\x8E\xAE" => ':video_game:',
1621
+		"\xF0\x9F\x8E\xAF" => ':dart:',
1622
+		"\xF0\x9F\x8E\xB0" => ':slot_machine:',
1623
+		"\xF0\x9F\x8E\xB1" => ':8ball:',
1624
+		"\xF0\x9F\x8E\xB2" => ':game_die:',
1625
+		"\xF0\x9F\x8E\xB3" => ':bowling:',
1626
+		"\xF0\x9F\x8E\xB4" => ':flower_playing_cards:',
1627
+		"\xF0\x9F\x8E\xB5" => ':musical_note:',
1628
+		"\xF0\x9F\x8E\xB6" => ':notes:',
1629
+		"\xF0\x9F\x8E\xB7" => ':saxophone:',
1630
+		"\xF0\x9F\x8E\xB8" => ':guitar:',
1631
+		"\xF0\x9F\x8E\xB9" => ':musical_keyboard:',
1632
+		"\xF0\x9F\x8E\xBA" => ':trumpet:',
1633
+		"\xF0\x9F\x8E\xBB" => ':violin:',
1634
+		"\xF0\x9F\x8E\xBC" => ':musical_score:',
1635
+		"\xF0\x9F\x8E\xBD" => ':running_shirt_with_sash:',
1636
+		"\xF0\x9F\x8E\xBE" => ':tennis:',
1637
+		"\xF0\x9F\x8E\xBF" => ':ski:',
1638
+		"\xF0\x9F\x8F\x80" => ':basketball:',
1639
+		"\xF0\x9F\x8F\x81" => ':checkered_flag:',
1640
+		"\xF0\x9F\x8F\x82" => ':snowboarder:',
1641
+		"\xF0\x9F\x8F\x83" => ':runner:',
1642
+		"\xF0\x9F\x8F\x84" => ':surfer:',
1643
+		"\xF0\x9F\x8F\x86" => ':trophy:',
1644
+		"\xF0\x9F\x8F\x88" => ':football:',
1645
+		"\xF0\x9F\x8F\x8A" => ':swimmer:',
1646
+		"\xF0\x9F\x8F\xA0" => ':house:',
1647
+		"\xF0\x9F\x8F\xA1" => ':house_with_garden:',
1648
+		"\xF0\x9F\x8F\xA2" => ':office:',
1649
+		"\xF0\x9F\x8F\xA3" => ':post_office:',
1650
+		"\xF0\x9F\x8F\xA5" => ':hospital:',
1651
+		"\xF0\x9F\x8F\xA6" => ':bank:',
1652
+		"\xF0\x9F\x8F\xA7" => ':atm:',
1653
+		"\xF0\x9F\x8F\xA8" => ':hotel:',
1654
+		"\xF0\x9F\x8F\xA9" => ':love_hotel:',
1655
+		"\xF0\x9F\x8F\xAA" => ':convenience_store:',
1656
+		"\xF0\x9F\x8F\xAB" => ':school:',
1657
+		"\xF0\x9F\x8F\xAC" => ':department_store:',
1658
+		"\xF0\x9F\x8F\xAD" => ':factory:',
1659
+		"\xF0\x9F\x8F\xAE" => ':izakaya_lantern:',
1660
+		"\xF0\x9F\x8F\xAF" => ':japanese_castle:',
1661
+		"\xF0\x9F\x8F\xB0" => ':european_castle:',
1662
+		"\xF0\x9F\x90\x8C" => ':snail:',
1663
+		"\xF0\x9F\x90\x8D" => ':snake:',
1664
+		"\xF0\x9F\x90\x8E" => ':racehorse:',
1665
+		"\xF0\x9F\x90\x91" => ':sheep:',
1666
+		"\xF0\x9F\x90\x92" => ':monkey:',
1667
+		"\xF0\x9F\x90\x94" => ':chicken:',
1668
+		"\xF0\x9F\x90\x97" => ':boar:',
1669
+		"\xF0\x9F\x90\x98" => ':elephant:',
1670
+		"\xF0\x9F\x90\x99" => ':octopus:',
1671
+		"\xF0\x9F\x90\x9A" => ':shell:',
1672
+		"\xF0\x9F\x90\x9B" => ':bug:',
1673
+		"\xF0\x9F\x90\x9C" => ':ant:',
1674
+		"\xF0\x9F\x90\x9D" => ':bee:',
1675
+		"\xF0\x9F\x90\x9E" => ':beetle:',
1676
+		"\xF0\x9F\x90\x9F" => ':fish:',
1677
+		"\xF0\x9F\x90\xA0" => ':tropical_fish:',
1678
+		"\xF0\x9F\x90\xA1" => ':blowfish:',
1679
+		"\xF0\x9F\x90\xA2" => ':turtle:',
1680
+		"\xF0\x9F\x90\xA3" => ':hatching_chick:',
1681
+		"\xF0\x9F\x90\xA4" => ':baby_chick:',
1682
+		"\xF0\x9F\x90\xA5" => ':hatched_chick:',
1683
+		"\xF0\x9F\x90\xA6" => ':bird:',
1684
+		"\xF0\x9F\x90\xA7" => ':penguin:',
1685
+		"\xF0\x9F\x90\xA8" => ':koala:',
1686
+		"\xF0\x9F\x90\xA9" => ':poodle:',
1687
+		"\xF0\x9F\x90\xAB" => ':camel:',
1688
+		"\xF0\x9F\x90\xAC" => ':dolphin:',
1689
+		"\xF0\x9F\x90\xAD" => ':mouse:',
1690
+		"\xF0\x9F\x90\xAE" => ':cow:',
1691
+		"\xF0\x9F\x90\xAF" => ':tiger:',
1692
+		"\xF0\x9F\x90\xB0" => ':rabbit:',
1693
+		"\xF0\x9F\x90\xB1" => ':cat:',
1694
+		"\xF0\x9F\x90\xB2" => ':dragon_face:',
1695
+		"\xF0\x9F\x90\xB3" => ':whale:',
1696
+		"\xF0\x9F\x90\xB4" => ':horse:',
1697
+		"\xF0\x9F\x90\xB5" => ':monkey_face:',
1698
+		"\xF0\x9F\x90\xB6" => ':dog:',
1699
+		"\xF0\x9F\x90\xB7" => ':pig:',
1700
+		"\xF0\x9F\x90\xB8" => ':frog:',
1701
+		"\xF0\x9F\x90\xB9" => ':hamster:',
1702
+		"\xF0\x9F\x90\xBA" => ':wolf:',
1703
+		"\xF0\x9F\x90\xBB" => ':bear:',
1704
+		"\xF0\x9F\x90\xBC" => ':panda_face:',
1705
+		"\xF0\x9F\x90\xBD" => ':pig_nose:',
1706
+		"\xF0\x9F\x90\xBE" => ':feet:',
1707
+		"\xF0\x9F\x91\x80" => ':eyes:',
1708
+		"\xF0\x9F\x91\x82" => ':ear:',
1709
+		"\xF0\x9F\x91\x83" => ':nose:',
1710
+		"\xF0\x9F\x91\x84" => ':lips:',
1711
+		"\xF0\x9F\x91\x85" => ':tongue:',
1712
+		"\xF0\x9F\x91\x86" => ':point_up_2:',
1713
+		"\xF0\x9F\x91\x87" => ':point_down:',
1714
+		"\xF0\x9F\x91\x88" => ':point_left:',
1715
+		"\xF0\x9F\x91\x89" => ':point_right:',
1716
+		"\xF0\x9F\x91\x8A" => ':punch:',
1717
+		"\xF0\x9F\x91\x8B" => ':wave:',
1718
+		"\xF0\x9F\x91\x8C" => ':ok_hand:',
1719
+		"\xF0\x9F\x91\x8D" => ':thumbsup:',
1720
+		"\xF0\x9F\x91\x8E" => ':thumbsdown:',
1721
+		"\xF0\x9F\x91\x8F" => ':clap:',
1722
+		"\xF0\x9F\x91\x90" => ':open_hands:',
1723
+		"\xF0\x9F\x91\x91" => ':crown:',
1724
+		"\xF0\x9F\x91\x92" => ':womans_hat:',
1725
+		"\xF0\x9F\x91\x93" => ':eyeglasses:',
1726
+		"\xF0\x9F\x91\x94" => ':necktie:',
1727
+		"\xF0\x9F\x91\x95" => ':shirt:',
1728
+		"\xF0\x9F\x91\x96" => ':jeans:',
1729
+		"\xF0\x9F\x91\x97" => ':dress:',
1730
+		"\xF0\x9F\x91\x98" => ':kimono:',
1731
+		"\xF0\x9F\x91\x99" => ':bikini:',
1732
+		"\xF0\x9F\x91\x9A" => ':womans_clothes:',
1733
+		"\xF0\x9F\x91\x9B" => ':purse:',
1734
+		"\xF0\x9F\x91\x9C" => ':handbag:',
1735
+		"\xF0\x9F\x91\x9D" => ':pouch:',
1736
+		"\xF0\x9F\x91\x9E" => ':mans_shoe:',
1737
+		"\xF0\x9F\x91\x9F" => ':athletic_shoe:',
1738
+		"\xF0\x9F\x91\xA0" => ':high_heel:',
1739
+		"\xF0\x9F\x91\xA1" => ':sandal:',
1740
+		"\xF0\x9F\x91\xA2" => ':boot:',
1741
+		"\xF0\x9F\x91\xA3" => ':footprints:',
1742
+		"\xF0\x9F\x91\xA4" => ':bust_in_silhouette:',
1743
+		"\xF0\x9F\x91\xA6" => ':boy:',
1744
+		"\xF0\x9F\x91\xA7" => ':girl:',
1745
+		"\xF0\x9F\x91\xA8" => ':man:',
1746
+		"\xF0\x9F\x91\xA9" => ':woman:',
1747
+		"\xF0\x9F\x91\xAA" => ':family:',
1748
+		"\xF0\x9F\x91\xAB" => ':couple:',
1749
+		"\xF0\x9F\x91\xAE" => ':cop:',
1750
+		"\xF0\x9F\x91\xAF" => ':dancers:',
1751
+		"\xF0\x9F\x91\xB0" => ':bride_with_veil:',
1752
+		"\xF0\x9F\x91\xB1" => ':person_with_blond_hair:',
1753
+		"\xF0\x9F\x91\xB2" => ':man_with_gua_pi_mao:',
1754
+		"\xF0\x9F\x91\xB3" => ':man_with_turban:',
1755
+		"\xF0\x9F\x91\xB4" => ':older_man:',
1756
+		"\xF0\x9F\x91\xB5" => ':older_woman:',
1757
+		"\xF0\x9F\x91\xB6" => ':baby:',
1758
+		"\xF0\x9F\x91\xB7" => ':construction_worker:',
1759
+		"\xF0\x9F\x91\xB8" => ':princess:',
1760
+		"\xF0\x9F\x91\xB9" => ':japanese_ogre:',
1761
+		"\xF0\x9F\x91\xBA" => ':japanese_goblin:',
1762
+		"\xF0\x9F\x91\xBB" => ':ghost:',
1763
+		"\xF0\x9F\x91\xBC" => ':angel:',
1764
+		"\xF0\x9F\x91\xBD" => ':alien:',
1765
+		"\xF0\x9F\x91\xBE" => ':space_invader:',
1766
+		"\xF0\x9F\x91\xBF" => ':imp:',
1767
+		"\xF0\x9F\x92\x80" => ':skull:',
1768
+		"\xF0\x9F\x93\x87" => ':card_index:',
1769
+		"\xF0\x9F\x92\x81" => ':information_desk_person:',
1770
+		"\xF0\x9F\x92\x82" => ':guardsman:',
1771
+		"\xF0\x9F\x92\x83" => ':dancer:',
1772
+		"\xF0\x9F\x92\x84" => ':lipstick:',
1773
+		"\xF0\x9F\x92\x85" => ':nail_care:',
1774
+		"\xF0\x9F\x93\x92" => ':ledger:',
1775
+		"\xF0\x9F\x92\x86" => ':massage:',
1776
+		"\xF0\x9F\x93\x93" => ':notebook:',
1777
+		"\xF0\x9F\x92\x87" => ':haircut:',
1778
+		"\xF0\x9F\x93\x94" => ':notebook_with_decorative_cover:',
1779
+		"\xF0\x9F\x92\x88" => ':barber:',
1780
+		"\xF0\x9F\x93\x95" => ':closed_book:',
1781
+		"\xF0\x9F\x92\x89" => ':syringe:',
1782
+		"\xF0\x9F\x93\x96" => ':book:',
1783
+		"\xF0\x9F\x92\x8A" => ':pill:',
1784
+		"\xF0\x9F\x93\x97" => ':green_book:',
1785
+		"\xF0\x9F\x92\x8B" => ':kiss:',
1786
+		"\xF0\x9F\x93\x98" => ':blue_book:',
1787
+		"\xF0\x9F\x92\x8C" => ':love_letter:',
1788
+		"\xF0\x9F\x93\x99" => ':orange_book:',
1789
+		"\xF0\x9F\x92\x8D" => ':ring:',
1790
+		"\xF0\x9F\x93\x9A" => ':books:',
1791
+		"\xF0\x9F\x92\x8E" => ':gem:',
1792
+		"\xF0\x9F\x93\x9B" => ':name_badge:',
1793
+		"\xF0\x9F\x92\x8F" => ':couplekiss:',
1794
+		"\xF0\x9F\x93\x9C" => ':scroll:',
1795
+		"\xF0\x9F\x92\x90" => ':bouquet:',
1796
+		"\xF0\x9F\x93\x9D" => ':pencil:',
1797
+		"\xF0\x9F\x92\x91" => ':couple_with_heart:',
1798
+		"\xF0\x9F\x93\x9E" => ':telephone_receiver:',
1799
+		"\xF0\x9F\x92\x92" => ':wedding:',
1800
+		"\xF0\x9F\x93\x9F" => ':pager:',
1801
+		"\xF0\x9F\x93\xA0" => ':fax:',
1802
+		"\xF0\x9F\x92\x93" => ':heartbeat:',
1803
+		"\xF0\x9F\x93\xA1" => ':satellite:',
1804
+		"\xF0\x9F\x93\xA2" => ':loudspeaker:',
1805
+		"\xF0\x9F\x92\x94" => ':broken_heart:',
1806
+		"\xF0\x9F\x93\xA3" => ':mega:',
1807
+		"\xF0\x9F\x93\xA4" => ':outbox_tray:',
1808
+		"\xF0\x9F\x92\x95" => ':two_hearts:',
1809
+		"\xF0\x9F\x93\xA5" => ':inbox_tray:',
1810
+		"\xF0\x9F\x93\xA6" => ':package:',
1811
+		"\xF0\x9F\x92\x96" => ':sparkling_heart:',
1812
+		"\xF0\x9F\x93\xA7" => ':e-mail:',
1813
+		"\xF0\x9F\x93\xA8" => ':incoming_envelope:',
1814
+		"\xF0\x9F\x92\x97" => ':heartpulse:',
1815
+		"\xF0\x9F\x93\xA9" => ':envelope_with_arrow:',
1816
+		"\xF0\x9F\x93\xAA" => ':mailbox_closed:',
1817
+		"\xF0\x9F\x92\x98" => ':cupid:',
1818
+		"\xF0\x9F\x93\xAB" => ':mailbox:',
1819
+		"\xF0\x9F\x93\xAE" => ':postbox:',
1820
+		"\xF0\x9F\x92\x99" => ':blue_heart:',
1821
+		"\xF0\x9F\x93\xB0" => ':newspaper:',
1822
+		"\xF0\x9F\x93\xB1" => ':iphone:',
1823
+		"\xF0\x9F\x92\x9A" => ':green_heart:',
1824
+		"\xF0\x9F\x93\xB2" => ':calling:',
1825
+		"\xF0\x9F\x93\xB3" => ':vibration_mode:',
1826
+		"\xF0\x9F\x92\x9B" => ':yellow_heart:',
1827
+		"\xF0\x9F\x93\xB4" => ':mobile_phone_off:',
1828
+		"\xF0\x9F\x93\xB6" => ':signal_strength:',
1829
+		"\xF0\x9F\x92\x9C" => ':purple_heart:',
1830
+		"\xF0\x9F\x93\xB7" => ':camera:',
1831
+		"\xF0\x9F\x93\xB9" => ':video_camera:',
1832
+		"\xF0\x9F\x92\x9D" => ':gift_heart:',
1833
+		"\xF0\x9F\x93\xBA" => ':tv:',
1834
+		"\xF0\x9F\x93\xBB" => ':radio:',
1835
+		"\xF0\x9F\x92\x9E" => ':revolving_hearts:',
1836
+		"\xF0\x9F\x93\xBC" => ':vhs:',
1837
+		"\xF0\x9F\x94\x83" => ':arrows_clockwise:',
1838
+		"\xF0\x9F\x92\x9F" => ':heart_decoration:',
1839
+		"\xF0\x9F\x94\x8A" => ':loud_sound:',
1840
+		"\xF0\x9F\x94\x8B" => ':battery:',
1841
+		"\xF0\x9F\x92\xA0" => ':diamond_shape_with_a_dot_inside:',
1842
+		"\xF0\x9F\x94\x8C" => ':electric_plug:',
1843
+		"\xF0\x9F\x94\x8D" => ':mag:',
1844
+		"\xF0\x9F\x92\xA1" => ':bulb:',
1845
+		"\xF0\x9F\x94\x8E" => ':mag_right:',
1846
+		"\xF0\x9F\x94\x8F" => ':lock_with_ink_pen:',
1847
+		"\xF0\x9F\x92\xA2" => ':anger:',
1848
+		"\xF0\x9F\x94\x90" => ':closed_lock_with_key:',
1849
+		"\xF0\x9F\x94\x91" => ':key:',
1850
+		"\xF0\x9F\x92\xA3" => ':bomb:',
1851
+		"\xF0\x9F\x94\x92" => ':lock:',
1852
+		"\xF0\x9F\x94\x93" => ':unlock:',
1853
+		"\xF0\x9F\x92\xA4" => ':zzz:',
1854
+		"\xF0\x9F\x94\x94" => ':bell:',
1855
+		"\xF0\x9F\x94\x96" => ':bookmark:',
1856
+		"\xF0\x9F\x92\xA5" => ':boom:',
1857
+		"\xF0\x9F\x94\x97" => ':link:',
1858
+		"\xF0\x9F\x94\x98" => ':radio_button:',
1859
+		"\xF0\x9F\x92\xA6" => ':sweat_drops:',
1860
+		"\xF0\x9F\x94\x99" => ':back:',
1861
+		"\xF0\x9F\x94\x9A" => ':end:',
1862
+		"\xF0\x9F\x92\xA7" => ':droplet:',
1863
+		"\xF0\x9F\x94\x9B" => ':on:',
1864
+		"\xF0\x9F\x94\x9C" => ':soon:',
1865
+		"\xF0\x9F\x92\xA8" => ':dash:',
1866
+		"\xF0\x9F\x94\x9D" => ':top:',
1867
+		"\xF0\x9F\x94\x9E" => ':underage:',
1868
+		"\xF0\x9F\x92\xA9" => ':poop:',
1869
+		"\xF0\x9F\x94\x9F" => ':keycap_ten:',
1870
+		"\xF0\x9F\x92\xAA" => ':muscle:',
1871
+		"\xF0\x9F\x94\xA0" => ':capital_abcd:',
1872
+		"\xF0\x9F\x94\xA1" => ':abcd:',
1873
+		"\xF0\x9F\x92\xAB" => ':dizzy:',
1874
+		"\xF0\x9F\x94\xA2" => ':1234:',
1875
+		"\xF0\x9F\x94\xA3" => ':symbols:',
1876
+		"\xF0\x9F\x92\xAC" => ':speech_balloon:',
1877
+		"\xF0\x9F\x94\xA4" => ':abc:',
1878
+		"\xF0\x9F\x94\xA5" => ':fire:',
1879
+		"\xF0\x9F\x92\xAE" => ':white_flower:',
1880
+		"\xF0\x9F\x94\xA6" => ':flashlight:',
1881
+		"\xF0\x9F\x94\xA7" => ':wrench:',
1882
+		"\xF0\x9F\x92\xAF" => ':100:',
1883
+		"\xF0\x9F\x94\xA8" => ':hammer:',
1884
+		"\xF0\x9F\x94\xA9" => ':nut_and_bolt:',
1885
+		"\xF0\x9F\x92\xB0" => ':moneybag:',
1886
+		"\xF0\x9F\x94\xAA" => ':knife:',
1887
+		"\xF0\x9F\x94\xAB" => ':gun:',
1888
+		"\xF0\x9F\x92\xB1" => ':currency_exchange:',
1889
+		"\xF0\x9F\x94\xAE" => ':crystal_ball:',
1890
+		"\xF0\x9F\x92\xB2" => ':heavy_dollar_sign:',
1891
+		"\xF0\x9F\x94\xAF" => ':six_pointed_star:',
1892
+		"\xF0\x9F\x92\xB3" => ':credit_card:',
1893
+		"\xF0\x9F\x94\xB0" => ':beginner:',
1894
+		"\xF0\x9F\x94\xB1" => ':trident:',
1895
+		"\xF0\x9F\x92\xB4" => ':yen:',
1896
+		"\xF0\x9F\x94\xB2" => ':black_square_button:',
1897
+		"\xF0\x9F\x94\xB3" => ':white_square_button:',
1898
+		"\xF0\x9F\x92\xB5" => ':dollar:',
1899
+		"\xF0\x9F\x94\xB4" => ':red_circle:',
1900
+		"\xF0\x9F\x94\xB5" => ':large_blue_circle:',
1901
+		"\xF0\x9F\x92\xB8" => ':money_with_wings:',
1902
+		"\xF0\x9F\x94\xB6" => ':large_orange_diamond:',
1903
+		"\xF0\x9F\x94\xB7" => ':large_blue_diamond:',
1904
+		"\xF0\x9F\x92\xB9" => ':chart:',
1905
+		"\xF0\x9F\x94\xB8" => ':small_orange_diamond:',
1906
+		"\xF0\x9F\x94\xB9" => ':small_blue_diamond:',
1907
+		"\xF0\x9F\x92\xBA" => ':seat:',
1908
+		"\xF0\x9F\x94\xBA" => ':small_red_triangle:',
1909
+		"\xF0\x9F\x94\xBB" => ':small_red_triangle_down:',
1910
+		"\xF0\x9F\x92\xBB" => ':computer:',
1911
+		"\xF0\x9F\x94\xBC" => ':arrow_up_small:',
1912
+		"\xF0\x9F\x92\xBC" => ':briefcase:',
1913
+		"\xF0\x9F\x94\xBD" => ':arrow_down_small:',
1914
+		"\xF0\x9F\x95\x90" => ':clock1:',
1915
+		"\xF0\x9F\x92\xBD" => ':minidisc:',
1916
+		"\xF0\x9F\x95\x91" => ':clock2:',
1917
+		"\xF0\x9F\x92\xBE" => ':floppy_disk:',
1918
+		"\xF0\x9F\x95\x92" => ':clock3:',
1919
+		"\xF0\x9F\x92\xBF" => ':cd:',
1920
+		"\xF0\x9F\x95\x93" => ':clock4:',
1921
+		"\xF0\x9F\x93\x80" => ':dvd:',
1922
+		"\xF0\x9F\x95\x94" => ':clock5:',
1923
+		"\xF0\x9F\x95\x95" => ':clock6:',
1924
+		"\xF0\x9F\x93\x81" => ':file_folder:',
1925
+		"\xF0\x9F\x95\x96" => ':clock7:',
1926
+		"\xF0\x9F\x95\x97" => ':clock8:',
1927
+		"\xF0\x9F\x93\x82" => ':open_file_folder:',
1928
+		"\xF0\x9F\x95\x98" => ':clock9:',
1929
+		"\xF0\x9F\x95\x99" => ':clock10:',
1930
+		"\xF0\x9F\x93\x83" => ':page_with_curl:',
1931
+		"\xF0\x9F\x95\x9A" => ':clock11:',
1932
+		"\xF0\x9F\x95\x9B" => ':clock12:',
1933
+		"\xF0\x9F\x93\x84" => ':page_facing_up:',
1934
+		"\xF0\x9F\x97\xBB" => ':mount_fuji:',
1935
+		"\xF0\x9F\x97\xBC" => ':tokyo_tower:',
1936
+		"\xF0\x9F\x93\x85" => ':date:',
1937
+		"\xF0\x9F\x97\xBD" => ':statue_of_liberty:',
1938
+		"\xF0\x9F\x97\xBE" => ':japan:',
1939
+		"\xF0\x9F\x93\x86" => ':calendar:',
1940
+		"\xF0\x9F\x97\xBF" => ':moyai:',
1941
+		"\xF0\x9F\x98\x81" => ':grin:',
1942
+		"\xF0\x9F\x98\x82" => ':joy:',
1943
+		"\xF0\x9F\x98\x83" => ':smiley:',
1944
+		"\xF0\x9F\x93\x88" => ':chart_with_upwards_trend:',
1945
+		"\xF0\x9F\x98\x84" => ':smile:',
1946
+		"\xF0\x9F\x98\x85" => ':sweat_smile:',
1947
+		"\xF0\x9F\x93\x89" => ':chart_with_downwards_trend:',
1948
+		"\xF0\x9F\x98\x86" => ':laughing:',
1949
+		"\xF0\x9F\x98\x89" => ':wink:',
1950
+		"\xF0\x9F\x93\x8A" => ':bar_chart:',
1951
+		"\xF0\x9F\x98\x8A" => ':blush:',
1952
+		"\xF0\x9F\x98\x8B" => ':yum:',
1953
+		"\xF0\x9F\x93\x8B" => ':clipboard:',
1954
+		"\xF0\x9F\x98\x8C" => ':relieved:',
1955
+		"\xF0\x9F\x98\x8D" => ':heart_eyes:',
1956
+		"\xF0\x9F\x93\x8C" => ':pushpin:',
1957
+		"\xF0\x9F\x98\x8F" => ':smirk:',
1958
+		"\xF0\x9F\x98\x92" => ':unamused:',
1959
+		"\xF0\x9F\x93\x8D" => ':round_pushpin:',
1960
+		"\xF0\x9F\x98\x93" => ':sweat:',
1961
+		"\xF0\x9F\x98\x94" => ':pensive:',
1962
+		"\xF0\x9F\x93\x8E" => ':paperclip:',
1963
+		"\xF0\x9F\x98\x96" => ':confounded:',
1964
+		"\xF0\x9F\x98\x98" => ':kissing_heart:',
1965
+		"\xF0\x9F\x93\x8F" => ':straight_ruler:',
1966
+		"\xF0\x9F\x98\x9A" => ':kissing_closed_eyes:',
1967
+		"\xF0\x9F\x98\x9C" => ':stuck_out_tongue_winking_eye:',
1968
+		"\xF0\x9F\x93\x90" => ':triangular_ruler:',
1969
+		"\xF0\x9F\x98\x9D" => ':stuck_out_tongue_closed_eyes:',
1970
+		"\xF0\x9F\x98\x9E" => ':disappointed:',
1971
+		"\xF0\x9F\x93\x91" => ':bookmark_tabs:',
1972
+		"\xF0\x9F\x98\xA0" => ':angry:',
1973
+		"\xF0\x9F\x98\xA1" => ':rage:',
1974
+		"\xF0\x9F\x98\xA2" => ':cry:',
1975
+		"\xF0\x9F\x98\xA3" => ':persevere:',
1976
+		"\xF0\x9F\x98\xA4" => ':triumph:',
1977
+		"\xF0\x9F\x98\xA5" => ':disappointed_relieved:',
1978
+		"\xF0\x9F\x98\xA8" => ':fearful:',
1979
+		"\xF0\x9F\x98\xA9" => ':weary:',
1980
+		"\xF0\x9F\x98\xAA" => ':sleepy:',
1981
+		"\xF0\x9F\x98\xAB" => ':tired_face:',
1982
+		"\xF0\x9F\x98\xAD" => ':sob:',
1983
+		"\xF0\x9F\x98\xB0" => ':cold_sweat:',
1984
+		"\xF0\x9F\x98\xB1" => ':scream:',
1985
+		"\xF0\x9F\x98\xB2" => ':astonished:',
1986
+		"\xF0\x9F\x98\xB3" => ':flushed:',
1987
+		"\xF0\x9F\x98\xB5" => ':dizzy_face:',
1988
+		"\xF0\x9F\x98\xB7" => ':mask:',
1989
+		"\xF0\x9F\x98\xB8" => ':smile_cat:',
1990
+		"\xF0\x9F\x98\xB9" => ':joy_cat:',
1991
+		"\xF0\x9F\x98\xBA" => ':smiley_cat:',
1992
+		"\xF0\x9F\x98\xBB" => ':heart_eyes_cat:',
1993
+		"\xF0\x9F\x98\xBC" => ':smirk_cat:',
1994
+		"\xF0\x9F\x98\xBD" => ':kissing_cat:',
1995
+		"\xF0\x9F\x98\xBE" => ':pouting_cat:',
1996
+		"\xF0\x9F\x98\xBF" => ':crying_cat_face:',
1997
+		"\xF0\x9F\x99\x80" => ':scream_cat:',
1998
+		"\xF0\x9F\x99\x85" => ':no_good:',
1999
+		"\xF0\x9F\x99\x86" => ':ok_woman:',
2000
+		"\xF0\x9F\x99\x87" => ':bow:',
2001
+		"\xF0\x9F\x99\x88" => ':see_no_evil:',
2002
+		"\xF0\x9F\x99\x89" => ':hear_no_evil:',
2003
+		"\xF0\x9F\x99\x8A" => ':speak_no_evil:',
2004
+		"\xF0\x9F\x99\x8B" => ':raising_hand:',
2005
+		"\xF0\x9F\x99\x8C" => ':raised_hands:',
2006
+		"\xF0\x9F\x99\x8D" => ':person_frowning:',
2007
+		"\xF0\x9F\x99\x8E" => ':person_with_pouting_face:',
2008
+		"\xF0\x9F\x99\x8F" => ':pray:',
2009
+		"\xF0\x9F\x9A\x80" => ':rocket:',
2010
+		"\xF0\x9F\x9A\x83" => ':railway_car:',
2011
+		"\xF0\x9F\x9A\x84" => ':bullettrain_side:',
2012
+		"\xF0\x9F\x9A\x85" => ':bullettrain_front:',
2013
+		"\xF0\x9F\x9A\x87" => ':metro:',
2014
+		"\xF0\x9F\x9A\x89" => ':station:',
2015
+		"\xF0\x9F\x9A\x8C" => ':bus:',
2016
+		"\xF0\x9F\x9A\x8F" => ':busstop:',
2017
+		"\xF0\x9F\x9A\x91" => ':ambulance:',
2018
+		"\xF0\x9F\x9A\x92" => ':fire_engine:',
2019
+		"\xF0\x9F\x9A\x93" => ':police_car:',
2020
+		"\xF0\x9F\x9A\x95" => ':taxi:',
2021
+		"\xF0\x9F\x9A\x97" => ':red_car:',
2022
+		"\xF0\x9F\x9A\x99" => ':blue_car:',
2023
+		"\xF0\x9F\x9A\x9A" => ':truck:',
2024
+		"\xF0\x9F\x9A\xA2" => ':ship:',
2025
+		"\xF0\x9F\x9A\xA4" => ':speedboat:',
2026
+		"\xF0\x9F\x9A\xA5" => ':traffic_light:',
2027
+		"\xF0\x9F\x9A\xA7" => ':construction:',
2028
+		"\xF0\x9F\x9A\xA8" => ':rotating_light:',
2029
+		"\xF0\x9F\x9A\xA9" => ':triangular_flag_on_post:',
2030
+		"\xF0\x9F\x9A\xAA" => ':door:',
2031
+		"\xF0\x9F\x9A\xAB" => ':no_entry_sign:',
2032
+		"\xF0\x9F\x9A\xAC" => ':smoking:',
2033
+		"\xF0\x9F\x9A\xAD" => ':no_smoking:',
2034
+		"\xF0\x9F\x9A\xB2" => ':bike:',
2035
+		"\xF0\x9F\x9A\xB6" => ':walking:',
2036
+		"\xF0\x9F\x9A\xB9" => ':mens:',
2037
+		"\xF0\x9F\x9A\xBA" => ':womens:',
2038
+		"\xF0\x9F\x9A\xBB" => ':restroom:',
2039
+		"\xF0\x9F\x9A\xBC" => ':baby_symbol:',
2040
+		"\xF0\x9F\x9A\xBD" => ':toilet:',
2041
+		"\xF0\x9F\x9A\xBE" => ':wc:',
2042
+		"\xF0\x9F\x9B\x80" => ':bath:',
2043
+		"\xF0\x9F\x98\x80" => ':grinning:',
2044
+		"\xF0\x9F\x98\x87" => ':innocent:',
2045
+		"\xF0\x9F\x98\x88" => ':smiling_imp:',
2046
+		"\xF0\x9F\x98\x8E" => ':sunglasses:',
2047
+		"\xF0\x9F\x98\x90" => ':neutral_face:',
2048
+		"\xF0\x9F\x98\x91" => ':expressionless:',
2049
+		"\xF0\x9F\x98\x95" => ':confused:',
2050
+		"\xF0\x9F\x98\x97" => ':kissing:',
2051
+		"\xF0\x9F\x98\x99" => ':kissing_smiling_eyes:',
2052
+		"\xF0\x9F\x98\x9B" => ':stuck_out_tongue:',
2053
+		"\xF0\x9F\x98\x9F" => ':worried:',
2054
+		"\xF0\x9F\x98\xA6" => ':frowning:',
2055
+		"\xF0\x9F\x98\xA7" => ':anguished:',
2056
+		"\xF0\x9F\x98\xAC" => ':grimacing:',
2057
+		"\xF0\x9F\x98\xAE" => ':open_mouth:',
2058
+		"\xF0\x9F\x98\xAF" => ':hushed:',
2059
+		"\xF0\x9F\x98\xB4" => ':sleeping:',
2060
+		"\xF0\x9F\x98\xB6" => ':no_mouth:',
2061
+		"\xF0\x9F\x9A\x81" => ':helicopter:',
2062
+		"\xF0\x9F\x9A\x82" => ':steam_locomotive:',
2063
+		"\xF0\x9F\x9A\x86" => ':train2:',
2064
+		"\xF0\x9F\x9A\x88" => ':light_rail:',
2065
+		"\xF0\x9F\x9A\x8A" => ':tram:',
2066
+		"\xF0\x9F\x9A\x8D" => ':oncoming_bus:',
2067
+		"\xF0\x9F\x9A\x8E" => ':trolleybus:',
2068
+		"\xF0\x9F\x9A\x90" => ':minibus:',
2069
+		"\xF0\x9F\x9A\x94" => ':oncoming_police_car:',
2070
+		"\xF0\x9F\x9A\x96" => ':oncoming_taxi:',
2071
+		"\xF0\x9F\x9A\x98" => ':oncoming_automobile:',
2072
+		"\xF0\x9F\x9A\x9B" => ':articulated_lorry:',
2073
+		"\xF0\x9F\x9A\x9C" => ':tractor:',
2074
+		"\xF0\x9F\x9A\x9D" => ':monorail:',
2075
+		"\xF0\x9F\x9A\x9E" => ':mountain_railway:',
2076
+		"\xF0\x9F\x9A\x9F" => ':suspension_railway:',
2077
+		"\xF0\x9F\x9A\xA0" => ':mountain_cableway:',
2078
+		"\xF0\x9F\x9A\xA1" => ':aerial_tramway:',
2079
+		"\xF0\x9F\x9A\xA3" => ':rowboat:',
2080
+		"\xF0\x9F\x9A\xA6" => ':vertical_traffic_light:',
2081
+		"\xF0\x9F\x9A\xAE" => ':put_litter_in_its_place:',
2082
+		"\xF0\x9F\x9A\xAF" => ':do_not_litter:',
2083
+		"\xF0\x9F\x9A\xB0" => ':potable_water:',
2084
+		"\xF0\x9F\x9A\xB1" => ':non-potable_water:',
2085
+		"\xF0\x9F\x9A\xB3" => ':no_bicycles:',
2086
+		"\xF0\x9F\x9A\xB4" => ':bicyclist:',
2087
+		"\xF0\x9F\x9A\xB5" => ':mountain_bicyclist:',
2088
+		"\xF0\x9F\x9A\xB7" => ':no_pedestrians:',
2089
+		"\xF0\x9F\x9A\xB8" => ':children_crossing:',
2090
+		"\xF0\x9F\x9A\xBF" => ':shower:',
2091
+		"\xF0\x9F\x9B\x81" => ':bathtub:',
2092
+		"\xF0\x9F\x9B\x82" => ':passport_control:',
2093
+		"\xF0\x9F\x9B\x83" => ':customs:',
2094
+		"\xF0\x9F\x9B\x84" => ':baggage_claim:',
2095
+		"\xF0\x9F\x9B\x85" => ':left_luggage:',
2096
+		"\xF0\x9F\x8C\x8D" => ':earth_africa:',
2097
+		"\xF0\x9F\x8C\x8E" => ':earth_americas:',
2098
+		"\xF0\x9F\x8C\x90" => ':globe_with_meridians:',
2099
+		"\xF0\x9F\x8C\x92" => ':waxing_crescent_moon:',
2100
+		"\xF0\x9F\x8C\x96" => ':waning_gibbous_moon:',
2101
+		"\xF0\x9F\x8C\x97" => ':last_quarter_moon:',
2102
+		"\xF0\x9F\x8C\x98" => ':waning_crescent_moon:',
2103
+		"\xF0\x9F\x8C\x9A" => ':new_moon_with_face:',
2104
+		"\xF0\x9F\x8C\x9C" => ':last_quarter_moon_with_face:',
2105
+		"\xF0\x9F\x8C\x9D" => ':full_moon_with_face:',
2106
+		"\xF0\x9F\x8C\x9E" => ':sun_with_face:',
2107
+		"\xF0\x9F\x8C\xB2" => ':evergreen_tree:',
2108
+		"\xF0\x9F\x8C\xB3" => ':deciduous_tree:',
2109
+		"\xF0\x9F\x8D\x8B" => ':lemon:',
2110
+		"\xF0\x9F\x8D\x90" => ':pear:',
2111
+		"\xF0\x9F\x8D\xBC" => ':baby_bottle:',
2112
+		"\xF0\x9F\x8F\x87" => ':horse_racing:',
2113
+		"\xF0\x9F\x8F\x89" => ':rugby_football:',
2114
+		"\xF0\x9F\x8F\xA4" => ':european_post_office:',
2115
+		"\xF0\x9F\x90\x80" => ':rat:',
2116
+		"\xF0\x9F\x90\x81" => ':mouse2:',
2117
+		"\xF0\x9F\x90\x82" => ':ox:',
2118
+		"\xF0\x9F\x90\x83" => ':water_buffalo:',
2119
+		"\xF0\x9F\x90\x84" => ':cow2:',
2120
+		"\xF0\x9F\x90\x85" => ':tiger2:',
2121
+		"\xF0\x9F\x90\x86" => ':leopard:',
2122
+		"\xF0\x9F\x90\x87" => ':rabbit2:',
2123
+		"\xF0\x9F\x90\x88" => ':cat2:',
2124
+		"\xF0\x9F\x90\x89" => ':dragon:',
2125
+		"\xF0\x9F\x90\x8A" => ':crocodile:',
2126
+		"\xF0\x9F\x90\x8B" => ':whale2:',
2127
+		"\xF0\x9F\x90\x8F" => ':ram:',
2128
+		"\xF0\x9F\x90\x90" => ':goat:',
2129
+		"\xF0\x9F\x90\x93" => ':rooster:',
2130
+		"\xF0\x9F\x90\x95" => ':dog2:',
2131
+		"\xF0\x9F\x90\x96" => ':pig2:',
2132
+		"\xF0\x9F\x90\xAA" => ':dromedary_camel:',
2133
+		"\xF0\x9F\x91\xA5" => ':busts_in_silhouette:',
2134
+		"\xF0\x9F\x91\xAC" => ':two_men_holding_hands:',
2135
+		"\xF0\x9F\x91\xAD" => ':two_women_holding_hands:',
2136
+		"\xF0\x9F\x92\xAD" => ':thought_balloon:',
2137
+		"\xF0\x9F\x92\xB6" => ':euro:',
2138
+		"\xF0\x9F\x92\xB7" => ':pound:',
2139
+		"\xF0\x9F\x93\xAC" => ':mailbox_with_mail:',
2140
+		"\xF0\x9F\x93\xAD" => ':mailbox_with_no_mail:',
2141
+		"\xF0\x9F\x93\xAF" => ':postal_horn:',
2142
+		"\xF0\x9F\x93\xB5" => ':no_mobile_phones:',
2143
+		"\xF0\x9F\x94\x80" => ':twisted_rightwards_arrows:',
2144
+		"\xF0\x9F\x94\x81" => ':repeat:',
2145
+		"\xF0\x9F\x94\x82" => ':repeat_one:',
2146
+		"\xF0\x9F\x94\x84" => ':arrows_counterclockwise:',
2147
+		"\xF0\x9F\x94\x85" => ':low_brightness:',
2148
+		"\xF0\x9F\x94\x86" => ':high_brightness:',
2149
+		"\xF0\x9F\x94\x87" => ':mute:',
2150
+		"\xF0\x9F\x94\x89" => ':sound:',
2151
+		"\xF0\x9F\x94\x95" => ':no_bell:',
2152
+		"\xF0\x9F\x94\xAC" => ':microscope:',
2153
+		"\xF0\x9F\x94\xAD" => ':telescope:',
2154
+		"\xF0\x9F\x95\x9C" => ':clock130:',
2155
+		"\xF0\x9F\x95\x9D" => ':clock230:',
2156
+		"\xF0\x9F\x95\x9E" => ':clock330:',
2157
+		"\xF0\x9F\x95\x9F" => ':clock430:',
2158
+		"\xF0\x9F\x95\xA0" => ':clock530:',
2159
+		"\xF0\x9F\x95\xA1" => ':clock630:',
2160
+		"\xF0\x9F\x95\xA2" => ':clock730:',
2161
+		"\xF0\x9F\x95\xA3" => ':clock830:',
2162
+		"\xF0\x9F\x95\xA4" => ':clock930:',
2163
+		"\xF0\x9F\x95\xA5" => ':clock1030:',
2164
+		"\xF0\x9F\x95\xA6" => ':clock1130:',
2165
+		"\xF0\x9F\x95\xA7" => ':clock1230:',
2166
+		"\xF0\x9F\x94\x88" => ':speaker:',
2167
+		"\xF0\x9F\x9A\x8B" => ':train:',
2168
+		"\xE2\x9E\xBF" => ':loop:',
2169
+		"\xF0\x9F\x87\xA6\xF0\x9F\x87\xAB" => ':af:',
2170
+		"\xF0\x9F\x87\xA6\xF0\x9F\x87\xB1" => ':al:',
2171
+		"\xF0\x9F\x87\xA9\xF0\x9F\x87\xBF" => ':dz:',
2172
+		"\xF0\x9F\x87\xA6\xF0\x9F\x87\xA9" => ':ad:',
2173
+		"\xF0\x9F\x87\xA6\xF0\x9F\x87\xB4" => ':ao:',
2174
+		"\xF0\x9F\x87\xA6\xF0\x9F\x87\xAC" => ':ag:',
2175
+		"\xF0\x9F\x87\xA6\xF0\x9F\x87\xB7" => ':ar:',
2176
+		"\xF0\x9F\x87\xA6\xF0\x9F\x87\xB2" => ':am:',
2177
+		"\xF0\x9F\x87\xA6\xF0\x9F\x87\xBA" => ':au:',
2178
+		"\xF0\x9F\x87\xA6\xF0\x9F\x87\xB9" => ':at:',
2179
+		"\xF0\x9F\x87\xA6\xF0\x9F\x87\xBF" => ':az:',
2180
+		"\xF0\x9F\x87\xA7\xF0\x9F\x87\xB8" => ':bs:',
2181
+		"\xF0\x9F\x87\xA7\xF0\x9F\x87\xAD" => ':bh:',
2182
+		"\xF0\x9F\x87\xA7\xF0\x9F\x87\xA9" => ':bd:',
2183
+		"\xF0\x9F\x87\xA7\xF0\x9F\x87\xA7" => ':bb:',
2184
+		"\xF0\x9F\x87\xA7\xF0\x9F\x87\xBE" => ':by:',
2185
+		"\xF0\x9F\x87\xA7\xF0\x9F\x87\xAA" => ':be:',
2186
+		"\xF0\x9F\x87\xA7\xF0\x9F\x87\xBF" => ':bz:',
2187
+		"\xF0\x9F\x87\xA7\xF0\x9F\x87\xAF" => ':bj:',
2188
+		"\xF0\x9F\x87\xA7\xF0\x9F\x87\xB9" => ':bt:',
2189
+		"\xF0\x9F\x87\xA7\xF0\x9F\x87\xB4" => ':bo:',
2190
+		"\xF0\x9F\x87\xA7\xF0\x9F\x87\xA6" => ':ba:',
2191
+		"\xF0\x9F\x87\xA7\xF0\x9F\x87\xBC" => ':bw:',
2192
+		"\xF0\x9F\x87\xA7\xF0\x9F\x87\xB7" => ':br:',
2193
+		"\xF0\x9F\x87\xA7\xF0\x9F\x87\xB3" => ':bn:',
2194
+		"\xF0\x9F\x87\xA7\xF0\x9F\x87\xAC" => ':bg:',
2195
+		"\xF0\x9F\x87\xA7\xF0\x9F\x87\xAB" => ':bf:',
2196
+		"\xF0\x9F\x87\xA7\xF0\x9F\x87\xAE" => ':bi:',
2197
+		"\xF0\x9F\x87\xB0\xF0\x9F\x87\xAD" => ':kh:',
2198
+		"\xF0\x9F\x87\xA8\xF0\x9F\x87\xB2" => ':cm:',
2199
+		"\xF0\x9F\x87\xA8\xF0\x9F\x87\xA6" => ':ca:',
2200
+		"\xF0\x9F\x87\xA8\xF0\x9F\x87\xBB" => ':cv:',
2201
+		"\xF0\x9F\x87\xA8\xF0\x9F\x87\xAB" => ':cf:',
2202
+		"\xF0\x9F\x87\xB9\xF0\x9F\x87\xA9" => ':td:',
2203
+		"\xF0\x9F\x87\xA8\xF0\x9F\x87\xB1" => ':chile:',
2204
+		"\xF0\x9F\x87\xA8\xF0\x9F\x87\xB4" => ':co:',
2205
+		"\xF0\x9F\x87\xB0\xF0\x9F\x87\xB2" => ':km:',
2206
+		"\xF0\x9F\x87\xA8\xF0\x9F\x87\xB7" => ':cr:',
2207
+		"\xF0\x9F\x87\xA8\xF0\x9F\x87\xAE" => ':ci:',
2208
+		"\xF0\x9F\x87\xAD\xF0\x9F\x87\xB7" => ':hr:',
2209
+		"\xF0\x9F\x87\xA8\xF0\x9F\x87\xBA" => ':cu:',
2210
+		"\xF0\x9F\x87\xA8\xF0\x9F\x87\xBE" => ':cy:',
2211
+		"\xF0\x9F\x87\xA8\xF0\x9F\x87\xBF" => ':cz:',
2212
+		"\xF0\x9F\x87\xA8\xF0\x9F\x87\xA9" => ':congo:',
2213
+		"\xF0\x9F\x87\xA9\xF0\x9F\x87\xB0" => ':dk:',
2214
+		"\xF0\x9F\x87\xA9\xF0\x9F\x87\xAF" => ':dj:',
2215
+		"\xF0\x9F\x87\xA9\xF0\x9F\x87\xB2" => ':dm:',
2216
+		"\xF0\x9F\x87\xA9\xF0\x9F\x87\xB4" => ':do:',
2217
+		"\xF0\x9F\x87\xB9\xF0\x9F\x87\xB1" => ':tl:',
2218
+		"\xF0\x9F\x87\xAA\xF0\x9F\x87\xA8" => ':ec:',
2219
+		"\xF0\x9F\x87\xAA\xF0\x9F\x87\xAC" => ':eg:',
2220
+		"\xF0\x9F\x87\xB8\xF0\x9F\x87\xBB" => ':sv:',
2221
+		"\xF0\x9F\x87\xAC\xF0\x9F\x87\xB6" => ':gq:',
2222
+		"\xF0\x9F\x87\xAA\xF0\x9F\x87\xB7" => ':er:',
2223
+		"\xF0\x9F\x87\xAA\xF0\x9F\x87\xAA" => ':ee:',
2224
+		"\xF0\x9F\x87\xAA\xF0\x9F\x87\xB9" => ':et:',
2225
+		"\xF0\x9F\x87\xAB\xF0\x9F\x87\xAF" => ':fj:',
2226
+		"\xF0\x9F\x87\xAB\xF0\x9F\x87\xAE" => ':fi:',
2227
+		"\xF0\x9F\x87\xAC\xF0\x9F\x87\xA6" => ':ga:',
2228
+		"\xF0\x9F\x87\xAC\xF0\x9F\x87\xB2" => ':gm:',
2229
+		"\xF0\x9F\x87\xAC\xF0\x9F\x87\xAA" => ':ge:',
2230
+		"\xF0\x9F\x87\xAC\xF0\x9F\x87\xAD" => ':gh:',
2231
+		"\xF0\x9F\x87\xAC\xF0\x9F\x87\xB7" => ':gr:',
2232
+		"\xF0\x9F\x87\xAC\xF0\x9F\x87\xA9" => ':gd:',
2233
+		"\xF0\x9F\x87\xAC\xF0\x9F\x87\xB9" => ':gt:',
2234
+		"\xF0\x9F\x87\xAC\xF0\x9F\x87\xB3" => ':gn:',
2235
+		"\xF0\x9F\x87\xAC\xF0\x9F\x87\xBC" => ':gw:',
2236
+		"\xF0\x9F\x87\xAC\xF0\x9F\x87\xBE" => ':gy:',
2237
+		"\xF0\x9F\x87\xAD\xF0\x9F\x87\xB9" => ':ht:',
2238
+		"\xF0\x9F\x87\xAD\xF0\x9F\x87\xB3" => ':hn:',
2239
+		"\xF0\x9F\x87\xAD\xF0\x9F\x87\xBA" => ':hu:',
2240
+		"\xF0\x9F\x87\xAE\xF0\x9F\x87\xB8" => ':is:',
2241
+		"\xF0\x9F\x87\xAE\xF0\x9F\x87\xB3" => ':in:',
2242
+		"\xF0\x9F\x87\xAE\xF0\x9F\x87\xA9" => ':indonesia:',
2243
+		"\xF0\x9F\x87\xAE\xF0\x9F\x87\xB7" => ':ir:',
2244
+		"\xF0\x9F\x87\xAE\xF0\x9F\x87\xB6" => ':iq:',
2245
+		"\xF0\x9F\x87\xAE\xF0\x9F\x87\xAA" => ':ie:',
2246
+		"\xF0\x9F\x87\xAE\xF0\x9F\x87\xB1" => ':il:',
2247
+		"\xF0\x9F\x87\xAF\xF0\x9F\x87\xB2" => ':jm:',
2248
+		"\xF0\x9F\x87\xAF\xF0\x9F\x87\xB4" => ':jo:',
2249
+		"\xF0\x9F\x87\xB0\xF0\x9F\x87\xBF" => ':kz:',
2250
+		"\xF0\x9F\x87\xB0\xF0\x9F\x87\xAA" => ':ke:',
2251
+		"\xF0\x9F\x87\xB0\xF0\x9F\x87\xAE" => ':ki:',
2252
+		"\xF0\x9F\x87\xBD\xF0\x9F\x87\xB0" => ':xk:',
2253
+		"\xF0\x9F\x87\xB0\xF0\x9F\x87\xBC" => ':kw:',
2254
+		"\xF0\x9F\x87\xB0\xF0\x9F\x87\xAC" => ':kg:',
2255
+		"\xF0\x9F\x87\xB1\xF0\x9F\x87\xA6" => ':la:',
2256
+		"\xF0\x9F\x87\xB1\xF0\x9F\x87\xBB" => ':lv:',
2257
+		"\xF0\x9F\x87\xB1\xF0\x9F\x87\xA7" => ':lb:',
2258
+		"\xF0\x9F\x87\xB1\xF0\x9F\x87\xB8" => ':ls:',
2259
+		"\xF0\x9F\x87\xB1\xF0\x9F\x87\xB7" => ':lr:',
2260
+		"\xF0\x9F\x87\xB1\xF0\x9F\x87\xBE" => ':ly:',
2261
+		"\xF0\x9F\x87\xB1\xF0\x9F\x87\xAE" => ':li:',
2262
+		"\xF0\x9F\x87\xB1\xF0\x9F\x87\xB9" => ':lt:',
2263
+		"\xF0\x9F\x87\xB1\xF0\x9F\x87\xBA" => ':lu:',
2264
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xB0" => ':mk:',
2265
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xAC" => ':mg:',
2266
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xBC" => ':mw:',
2267
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xBE" => ':my:',
2268
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xBB" => ':mv:',
2269
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xB1" => ':ml:',
2270
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xB9" => ':mt:',
2271
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xAD" => ':mh:',
2272
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xB7" => ':mr:',
2273
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xBA" => ':mu:',
2274
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xBD" => ':mx:',
2275
+		"\xF0\x9F\x87\xAB\xF0\x9F\x87\xB2" => ':fm:',
2276
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xA9" => ':md:',
2277
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xA8" => ':mc:',
2278
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xB3" => ':mn:',
2279
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xAA" => ':me:',
2280
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xA6" => ':ma:',
2281
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xBF" => ':mz:',
2282
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xB2" => ':mm:',
2283
+		"\xF0\x9F\x87\xB3\xF0\x9F\x87\xA6" => ':na:',
2284
+		"\xF0\x9F\x87\xB3\xF0\x9F\x87\xB7" => ':nr:',
2285
+		"\xF0\x9F\x87\xB3\xF0\x9F\x87\xB5" => ':np:',
2286
+		"\xF0\x9F\x87\xB3\xF0\x9F\x87\xB1" => ':nl:',
2287
+		"\xF0\x9F\x87\xB3\xF0\x9F\x87\xBF" => ':nz:',
2288
+		"\xF0\x9F\x87\xB3\xF0\x9F\x87\xAE" => ':ni:',
2289
+		"\xF0\x9F\x87\xB3\xF0\x9F\x87\xAA" => ':ne:',
2290
+		"\xF0\x9F\x87\xB3\xF0\x9F\x87\xAC" => ':nigeria:',
2291
+		"\xF0\x9F\x87\xB0\xF0\x9F\x87\xB5" => ':kp:',
2292
+		"\xF0\x9F\x87\xB3\xF0\x9F\x87\xB4" => ':no:',
2293
+		"\xF0\x9F\x87\xB4\xF0\x9F\x87\xB2" => ':om:',
2294
+		"\xF0\x9F\x87\xB5\xF0\x9F\x87\xB0" => ':pk:',
2295
+		"\xF0\x9F\x87\xB5\xF0\x9F\x87\xBC" => ':pw:',
2296
+		"\xF0\x9F\x87\xB5\xF0\x9F\x87\xA6" => ':pa:',
2297
+		"\xF0\x9F\x87\xB5\xF0\x9F\x87\xAC" => ':pg:',
2298
+		"\xF0\x9F\x87\xB5\xF0\x9F\x87\xBE" => ':py:',
2299
+		"\xF0\x9F\x87\xB5\xF0\x9F\x87\xAA" => ':pe:',
2300
+		"\xF0\x9F\x87\xB5\xF0\x9F\x87\xAD" => ':ph:',
2301
+		"\xF0\x9F\x87\xB5\xF0\x9F\x87\xB1" => ':pl:',
2302
+		"\xF0\x9F\x87\xB5\xF0\x9F\x87\xB9" => ':pt:',
2303
+		"\xF0\x9F\x87\xB6\xF0\x9F\x87\xA6" => ':qa:',
2304
+		"\xF0\x9F\x87\xB9\xF0\x9F\x87\xBC" => ':tw:',
2305
+		"\xF0\x9F\x87\xA8\xF0\x9F\x87\xAC" => ':cg:',
2306
+		"\xF0\x9F\x87\xB7\xF0\x9F\x87\xB4" => ':ro:',
2307
+		"\xF0\x9F\x87\xB7\xF0\x9F\x87\xBC" => ':rw:',
2308
+		"\xF0\x9F\x87\xB0\xF0\x9F\x87\xB3" => ':kn:',
2309
+		"\xF0\x9F\x87\xB1\xF0\x9F\x87\xA8" => ':lc:',
2310
+		"\xF0\x9F\x87\xBB\xF0\x9F\x87\xA8" => ':vc:',
2311
+		"\xF0\x9F\x87\xBC\xF0\x9F\x87\xB8" => ':ws:',
2312
+		"\xF0\x9F\x87\xB8\xF0\x9F\x87\xB2" => ':sm:',
2313
+		"\xF0\x9F\x87\xB8\xF0\x9F\x87\xB9" => ':st:',
2314
+		"\xF0\x9F\x87\xB8\xF0\x9F\x87\xA6" => ':saudiarabia:',
2315
+		"\xF0\x9F\x87\xB8\xF0\x9F\x87\xB3" => ':sn:',
2316
+		"\xF0\x9F\x87\xB7\xF0\x9F\x87\xB8" => ':rs:',
2317
+		"\xF0\x9F\x87\xB8\xF0\x9F\x87\xA8" => ':sc:',
2318
+		"\xF0\x9F\x87\xB8\xF0\x9F\x87\xB1" => ':sl:',
2319
+		"\xF0\x9F\x87\xB8\xF0\x9F\x87\xAC" => ':sg:',
2320
+		"\xF0\x9F\x87\xB8\xF0\x9F\x87\xB0" => ':sk:',
2321
+		"\xF0\x9F\x87\xB8\xF0\x9F\x87\xAE" => ':si:',
2322
+		"\xF0\x9F\x87\xB8\xF0\x9F\x87\xA7" => ':sb:',
2323
+		"\xF0\x9F\x87\xB8\xF0\x9F\x87\xB4" => ':so:',
2324
+		"\xF0\x9F\x87\xBF\xF0\x9F\x87\xA6" => ':za:',
2325
+		"\xF0\x9F\x87\xB1\xF0\x9F\x87\xB0" => ':lk:',
2326
+		"\xF0\x9F\x87\xB8\xF0\x9F\x87\xA9" => ':sd:',
2327
+		"\xF0\x9F\x87\xB8\xF0\x9F\x87\xB7" => ':sr:',
2328
+		"\xF0\x9F\x87\xB8\xF0\x9F\x87\xBF" => ':sz:',
2329
+		"\xF0\x9F\x87\xB8\xF0\x9F\x87\xAA" => ':se:',
2330
+		"\xF0\x9F\x87\xA8\xF0\x9F\x87\xAD" => ':ch:',
2331
+		"\xF0\x9F\x87\xB8\xF0\x9F\x87\xBE" => ':sy:',
2332
+		"\xF0\x9F\x87\xB9\xF0\x9F\x87\xAF" => ':tj:',
2333
+		"\xF0\x9F\x87\xB9\xF0\x9F\x87\xBF" => ':tz:',
2334
+		"\xF0\x9F\x87\xB9\xF0\x9F\x87\xAD" => ':th:',
2335
+		"\xF0\x9F\x87\xB9\xF0\x9F\x87\xAC" => ':tg:',
2336
+		"\xF0\x9F\x87\xB9\xF0\x9F\x87\xB4" => ':to:',
2337
+		"\xF0\x9F\x87\xB9\xF0\x9F\x87\xB9" => ':tt:',
2338
+		"\xF0\x9F\x87\xB9\xF0\x9F\x87\xB3" => ':tn:',
2339
+		"\xF0\x9F\x87\xB9\xF0\x9F\x87\xB7" => ':tr:',
2340
+		"\xF0\x9F\x87\xB9\xF0\x9F\x87\xB2" => ':turkmenistan:',
2341
+		"\xF0\x9F\x87\xB9\xF0\x9F\x87\xBB" => ':tuvalu:',
2342
+		"\xF0\x9F\x87\xBA\xF0\x9F\x87\xAC" => ':ug:',
2343
+		"\xF0\x9F\x87\xBA\xF0\x9F\x87\xA6" => ':ua:',
2344
+		"\xF0\x9F\x87\xA6\xF0\x9F\x87\xAA" => ':ae:',
2345
+		"\xF0\x9F\x87\xBA\xF0\x9F\x87\xBE" => ':uy:',
2346
+		"\xF0\x9F\x87\xBA\xF0\x9F\x87\xBF" => ':uz:',
2347
+		"\xF0\x9F\x87\xBB\xF0\x9F\x87\xBA" => ':vu:',
2348
+		"\xF0\x9F\x87\xBB\xF0\x9F\x87\xA6" => ':va:',
2349
+		"\xF0\x9F\x87\xBB\xF0\x9F\x87\xAA" => ':ve:',
2350
+		"\xF0\x9F\x87\xBB\xF0\x9F\x87\xB3" => ':vn:',
2351
+		"\xF0\x9F\x87\xAA\xF0\x9F\x87\xAD" => ':eh:',
2352
+		"\xF0\x9F\x87\xBE\xF0\x9F\x87\xAA" => ':ye:',
2353
+		"\xF0\x9F\x87\xBF\xF0\x9F\x87\xB2" => ':zm:',
2354
+		"\xF0\x9F\x87\xBF\xF0\x9F\x87\xBC" => ':zw:',
2355
+		"\xF0\x9F\x87\xB5\xF0\x9F\x87\xB7" => ':pr:',
2356
+		"\xF0\x9F\x87\xB0\xF0\x9F\x87\xBE" => ':ky:',
2357
+		"\xF0\x9F\x87\xA7\xF0\x9F\x87\xB2" => ':bm:',
2358
+		"\xF0\x9F\x87\xB5\xF0\x9F\x87\xAB" => ':pf:',
2359
+		"\xF0\x9F\x87\xB5\xF0\x9F\x87\xB8" => ':ps:',
2360
+		"\xF0\x9F\x87\xB3\xF0\x9F\x87\xA8" => ':nc:',
2361
+		"\xF0\x9F\x87\xB8\xF0\x9F\x87\xAD" => ':sh:',
2362
+		"\xF0\x9F\x87\xA6\xF0\x9F\x87\xBC" => ':aw:',
2363
+		"\xF0\x9F\x87\xBB\xF0\x9F\x87\xAE" => ':vi:',
2364
+		"\xF0\x9F\x87\xAD\xF0\x9F\x87\xB0" => ':hk:',
2365
+		"\xF0\x9F\x87\xA6\xF0\x9F\x87\xA8" => ':ac:',
2366
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xB8" => ':ms:',
2367
+		"\xF0\x9F\x87\xAC\xF0\x9F\x87\xBA" => ':gu:',
2368
+		"\xF0\x9F\x87\xAC\xF0\x9F\x87\xB1" => ':gl:',
2369
+		"\xF0\x9F\x87\xB3\xF0\x9F\x87\xBA" => ':nu:',
2370
+		"\xF0\x9F\x87\xBC\xF0\x9F\x87\xAB" => ':wf:',
2371
+		"\xF0\x9F\x87\xB2\xF0\x9F\x87\xB4" => ':mo:',
2372
+		"\xF0\x9F\x87\xAB\xF0\x9F\x87\xB4" => ':fo:',
2373
+		"\xF0\x9F\x87\xAB\xF0\x9F\x87\xB0" => ':fk:',
2374
+		"\xF0\x9F\x87\xAF\xF0\x9F\x87\xAA" => ':je:',
2375
+		"\xF0\x9F\x87\xA6\xF0\x9F\x87\xAE" => ':ai:',
2376
+		"\xF0\x9F\x87\xAC\xF0\x9F\x87\xAE" => ':gi:'
2377
+	);
2378
+	static $asciiRegexp = '(\\<3|&lt;3|\\<\\/3|&lt;\\/3|\\:\'\\)|\\:\'\\-\\)|\\:D|\\:\\-D|\\=D|\\:\\)|\\:\\-\\)|\\=\\]|\\=\\)|\\:\\]|\'\\:\\)|\'\\:\\-\\)|\'\\=\\)|\'\\:D|\'\\:\\-D|\'\\=D|\\>\\:\\)|&gt;\\:\\)|\\>;\\)|&gt;;\\)|\\>\\:\\-\\)|&gt;\\:\\-\\)|\\>\\=\\)|&gt;\\=\\)|;\\)|;\\-\\)|\\*\\-\\)|\\*\\)|;\\-\\]|;\\]|;D|;\\^\\)|\'\\:\\(|\'\\:\\-\\(|\'\\=\\(|\\:\\*|\\:\\-\\*|\\=\\*|\\:\\^\\*|\\>\\:P|&gt;\\:P|X\\-P|x\\-p|\\>\\:\\[|&gt;\\:\\[|\\:\\-\\(|\\:\\(|\\:\\-\\[|\\:\\[|\\=\\(|\\>\\:\\(|&gt;\\:\\(|\\>\\:\\-\\(|&gt;\\:\\-\\(|\\:@|\\:\'\\(|\\:\'\\-\\(|;\\(|;\\-\\(|\\>\\.\\<|&gt;\\.&lt;|\\:\\$|\\=\\$|#\\-\\)|#\\)|%\\-\\)|%\\)|X\\)|X\\-\\)|\\*\\\\0\\/\\*|\\\\0\\/|\\*\\\\O\\/\\*|\\\\O\\/|O\\:\\-\\)|0\\:\\-3|0\\:3|0\\:\\-\\)|0\\:\\)|0;\\^\\)|O\\:\\-\\)|O\\:\\)|O;\\-\\)|O\\=\\)|0;\\-\\)|O\\:\\-3|O\\:3|B\\-\\)|B\\)|8\\)|8\\-\\)|B\\-D|8\\-D|\\-_\\-|\\-__\\-|\\-___\\-|\\>\\:\\\\|&gt;\\:\\\\|\\>\\:\\/|&gt;\\:\\/|\\:\\-\\/|\\:\\-\\.|\\:\\/|\\:\\\\|\\=\\/|\\=\\\\|\\:L|\\=L|\\:P|\\:\\-P|\\=P|\\:\\-p|\\:p|\\=p|\\:\\-Þ|\\:\\-&THORN;|\\:Þ|\\:&THORN;|\\:þ|\\:&thorn;|\\:\\-þ|\\:\\-&thorn;|\\:\\-b|\\:b|d\\:|\\:\\-O|\\:O|\\:\\-o|\\:o|O_O|\\>\\:O|&gt;\\:O|\\:\\-X|\\:X|\\:\\-#|\\:#|\\=X|\\=x|\\:x|\\:\\-x|\\=#)';
2379 2379
 
2380
-    public function __construct() {
2380
+	public function __construct() {
2381 2381
 
2382
-    }
2382
+	}
2383 2383
 
2384
-    // ##########################################
2385
-    // ######## core methods
2386
-    // ##########################################
2387
-    static function toImage($string) {
2388
-        $string = self::unicodeToImage($string);
2389
-        $string = self::shortnameToImage($string);
2390
-        return $string;
2391
-    }
2392
-    // Uses toShort to transform all unicode into a standard shortname
2393
-    // then transforms the shortname into unicode
2394
-    // This is done for standardization when converting several unicode types
2395
-    static function unifyUnicode($string) {
2396
-        $string = self::toShort($string);
2397
-        $string = self::shortnameToUnicode($string);
2398
-        return $string;
2399
-    }
2400
-    // will output unicode from shortname
2401
-    // useful for sending emojis back to mobile devices
2402
-    static function shortnameToUnicode($string) {
2403
-        $string = preg_replace_callback('/'.self::$ignoredRegexp.'|('.self::$shortcodeRegexp.')/Si', 'static::shortnameToUnicodeCallback', $string);
2404
-        if(self::$ascii) {
2405
-            $string = preg_replace_callback('/'.self::$ignoredRegexp.'|((\\s|^)'.self::$asciiRegexp.'(?=\\s|$|[!,\.]))/S', 'static::asciiToUnicodeCallback', $string);
2406
-        }
2407
-        return $string;
2408
-    }
2409
-    // Replace shortnames (:wink:) with Ascii equivalents ;^)
2410
-    // Useful for systems that dont support unicode nor images
2411
-    static function shortnameToAscii($string) {
2412
-        $string = preg_replace_callback('/'.self::$ignoredRegexp.'|('.self::$shortcodeRegexp.')/Si', 'static::shortnameToAsciiCallback', $string);
2413
-        return $string;
2414
-    }
2415
-    static function shortnameToImage($string) {
2416
-        $string = preg_replace_callback('/'.self::$ignoredRegexp.'|('.self::$shortcodeRegexp.')/Si', 'static::shortnameToImageCallback', $string);
2417
-        if(self::$ascii) {
2418
-            $string = preg_replace_callback('/'.self::$ignoredRegexp.'|((\\s|^)'.self::$asciiRegexp.'(?=\\s|$|[!,\.]))/S', 'static::asciiToImageCallback', $string);
2419
-        }
2420
-        return $string;
2421
-    }
2422
-    static function toShort($string) {
2423
-        return preg_replace_callback('/'.self::$ignoredRegexp.'|'.self::$unicodeRegexp.'/S', 'static::toShortCallback', $string);
2424
-    }
2425
-    static function unicodeToImage($string) {
2426
-        return preg_replace_callback('/'.self::$ignoredRegexp.'|'.self::$unicodeRegexp.'/S', 'static::unicodeToImageCallback', $string);
2427
-    }
2384
+	// ##########################################
2385
+	// ######## core methods
2386
+	// ##########################################
2387
+	static function toImage($string) {
2388
+		$string = self::unicodeToImage($string);
2389
+		$string = self::shortnameToImage($string);
2390
+		return $string;
2391
+	}
2392
+	// Uses toShort to transform all unicode into a standard shortname
2393
+	// then transforms the shortname into unicode
2394
+	// This is done for standardization when converting several unicode types
2395
+	static function unifyUnicode($string) {
2396
+		$string = self::toShort($string);
2397
+		$string = self::shortnameToUnicode($string);
2398
+		return $string;
2399
+	}
2400
+	// will output unicode from shortname
2401
+	// useful for sending emojis back to mobile devices
2402
+	static function shortnameToUnicode($string) {
2403
+		$string = preg_replace_callback('/'.self::$ignoredRegexp.'|('.self::$shortcodeRegexp.')/Si', 'static::shortnameToUnicodeCallback', $string);
2404
+		if(self::$ascii) {
2405
+			$string = preg_replace_callback('/'.self::$ignoredRegexp.'|((\\s|^)'.self::$asciiRegexp.'(?=\\s|$|[!,\.]))/S', 'static::asciiToUnicodeCallback', $string);
2406
+		}
2407
+		return $string;
2408
+	}
2409
+	// Replace shortnames (:wink:) with Ascii equivalents ;^)
2410
+	// Useful for systems that dont support unicode nor images
2411
+	static function shortnameToAscii($string) {
2412
+		$string = preg_replace_callback('/'.self::$ignoredRegexp.'|('.self::$shortcodeRegexp.')/Si', 'static::shortnameToAsciiCallback', $string);
2413
+		return $string;
2414
+	}
2415
+	static function shortnameToImage($string) {
2416
+		$string = preg_replace_callback('/'.self::$ignoredRegexp.'|('.self::$shortcodeRegexp.')/Si', 'static::shortnameToImageCallback', $string);
2417
+		if(self::$ascii) {
2418
+			$string = preg_replace_callback('/'.self::$ignoredRegexp.'|((\\s|^)'.self::$asciiRegexp.'(?=\\s|$|[!,\.]))/S', 'static::asciiToImageCallback', $string);
2419
+		}
2420
+		return $string;
2421
+	}
2422
+	static function toShort($string) {
2423
+		return preg_replace_callback('/'.self::$ignoredRegexp.'|'.self::$unicodeRegexp.'/S', 'static::toShortCallback', $string);
2424
+	}
2425
+	static function unicodeToImage($string) {
2426
+		return preg_replace_callback('/'.self::$ignoredRegexp.'|'.self::$unicodeRegexp.'/S', 'static::unicodeToImageCallback', $string);
2427
+	}
2428 2428
 
2429
-    // ##########################################
2430
-    // ######## preg_replace callbacks
2431
-    // ##########################################
2432
-    static function shortnameToAsciiCallback($m) {
2433
-        if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2434
-            return $m[0];
2435
-        }
2436
-        else {
2437
-            $aflipped = array_flip(self::$ascii_replace);
2429
+	// ##########################################
2430
+	// ######## preg_replace callbacks
2431
+	// ##########################################
2432
+	static function shortnameToAsciiCallback($m) {
2433
+		if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2434
+			return $m[0];
2435
+		}
2436
+		else {
2437
+			$aflipped = array_flip(self::$ascii_replace);
2438 2438
 
2439
-            $shortname = $m[0];
2439
+			$shortname = $m[0];
2440 2440
 
2441
-            if(!isset(self::$shortcode_replace[$shortname])) {
2442
-                return $m[0];
2443
-            }
2441
+			if(!isset(self::$shortcode_replace[$shortname])) {
2442
+				return $m[0];
2443
+			}
2444 2444
 
2445
-            $unicode = strtolower(self::$shortcode_replace[$shortname]);
2445
+			$unicode = strtolower(self::$shortcode_replace[$shortname]);
2446 2446
 
2447
-            return isset($aflipped[$unicode]) ? $aflipped[$unicode] : $m[0];
2448
-        }
2449
-    }
2450
-    static function shortnameToUnicodeCallback($m) {
2451
-        if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2452
-            return $m[0];
2453
-        }
2454
-        else {
2455
-            $flipped = array_flip(self::$unicode_replace);
2447
+			return isset($aflipped[$unicode]) ? $aflipped[$unicode] : $m[0];
2448
+		}
2449
+	}
2450
+	static function shortnameToUnicodeCallback($m) {
2451
+		if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2452
+			return $m[0];
2453
+		}
2454
+		else {
2455
+			$flipped = array_flip(self::$unicode_replace);
2456 2456
 
2457
-            $shortname = $m[1];
2457
+			$shortname = $m[1];
2458 2458
 
2459
-            if(!isset($flipped[$shortname])) {
2460
-                return $m[0];
2461
-            }
2459
+			if(!isset($flipped[$shortname])) {
2460
+				return $m[0];
2461
+			}
2462 2462
 
2463 2463
 
2464
-            $unicode = $flipped[$shortname];
2465
-            return $unicode;
2466
-        }
2467
-    }
2468
-    static function shortnameToImageCallback($m) {
2469
-        if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2470
-            return $m[0];
2471
-        }
2472
-        else {
2473
-            $shortname = $m[1];
2464
+			$unicode = $flipped[$shortname];
2465
+			return $unicode;
2466
+		}
2467
+	}
2468
+	static function shortnameToImageCallback($m) {
2469
+		if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2470
+			return $m[0];
2471
+		}
2472
+		else {
2473
+			$shortname = $m[1];
2474 2474
 
2475
-            if(!isset(self::$shortcode_replace[$shortname])) {
2476
-                return $m[0];
2477
-            }
2475
+			if(!isset(self::$shortcode_replace[$shortname])) {
2476
+				return $m[0];
2477
+			}
2478 2478
 
2479 2479
 
2480
-            $unicode = self::$shortcode_replace[$shortname];
2481
-            $filename = strtoupper($unicode);
2480
+			$unicode = self::$shortcode_replace[$shortname];
2481
+			$filename = strtoupper($unicode);
2482 2482
 
2483
-            if(self::$unicodeAlt) { $alt = self::convert($unicode); }
2484
-            else { $alt = $shortname; }
2483
+			if(self::$unicodeAlt) { $alt = self::convert($unicode); }
2484
+			else { $alt = $shortname; }
2485 2485
 
2486
-            if(self::$imageType == 'png') {
2487
-                if(self::$sprites) {
2488
-                    return '<span class="emojione-'.strtoupper($unicode).'" title="'.htmlspecialchars($shortname).'">'.$alt.'</span>';
2489
-                }
2490
-                else {
2491
-                    return '<img class="emojione" alt="'.$alt.'" src="'.self::$imagePathPNG.$filename.'.png'.self::$cacheBustParam.'"/>';
2492
-                }
2493
-            }
2486
+			if(self::$imageType == 'png') {
2487
+				if(self::$sprites) {
2488
+					return '<span class="emojione-'.strtoupper($unicode).'" title="'.htmlspecialchars($shortname).'">'.$alt.'</span>';
2489
+				}
2490
+				else {
2491
+					return '<img class="emojione" alt="'.$alt.'" src="'.self::$imagePathPNG.$filename.'.png'.self::$cacheBustParam.'"/>';
2492
+				}
2493
+			}
2494 2494
 
2495
-            if(self::$sprites) {
2496
-                return '<svg class="emojione"><description>'.$alt.'</description><use xlink:href="'.self::$imagePathSVGSprites.'#emoji-'.strtoupper($unicode).'"></use></svg>';
2497
-            }
2498
-            else {
2499
-                return '<object class="emojione" data="'.self::$imagePathSVG.$filename.'.svg'.self::$cacheBustParam.'" type="image/svg+xml" standby="'.$alt.'">'.$alt.'</object>';
2500
-            }
2501
-        }
2502
-    }
2503
-    static function asciiToUnicodeCallback($m) {
2504
-        if((!is_array($m)) || (!isset($m[3])) || (empty($m[3]))) {
2505
-            return $m[0];
2506
-        }
2507
-        else {
2508
-            $shortname = $m[3];
2509
-            $unicode = self::$ascii_replace[$shortname];
2510
-            return $m[2].self::convert($unicode);
2511
-        }
2512
-    }
2513
-    static function asciiToImageCallback($m) {
2514
-        if((!is_array($m)) || (!isset($m[3])) || (empty($m[3]))) {
2515
-            return $m[0];
2516
-        }
2517
-        else {
2518
-            $shortname = html_entity_decode($m[3]);
2519
-            $unicode = self::$ascii_replace[$shortname];
2495
+			if(self::$sprites) {
2496
+				return '<svg class="emojione"><description>'.$alt.'</description><use xlink:href="'.self::$imagePathSVGSprites.'#emoji-'.strtoupper($unicode).'"></use></svg>';
2497
+			}
2498
+			else {
2499
+				return '<object class="emojione" data="'.self::$imagePathSVG.$filename.'.svg'.self::$cacheBustParam.'" type="image/svg+xml" standby="'.$alt.'">'.$alt.'</object>';
2500
+			}
2501
+		}
2502
+	}
2503
+	static function asciiToUnicodeCallback($m) {
2504
+		if((!is_array($m)) || (!isset($m[3])) || (empty($m[3]))) {
2505
+			return $m[0];
2506
+		}
2507
+		else {
2508
+			$shortname = $m[3];
2509
+			$unicode = self::$ascii_replace[$shortname];
2510
+			return $m[2].self::convert($unicode);
2511
+		}
2512
+	}
2513
+	static function asciiToImageCallback($m) {
2514
+		if((!is_array($m)) || (!isset($m[3])) || (empty($m[3]))) {
2515
+			return $m[0];
2516
+		}
2517
+		else {
2518
+			$shortname = html_entity_decode($m[3]);
2519
+			$unicode = self::$ascii_replace[$shortname];
2520 2520
 
2521
-            // unicode char or shortname for the alt tag? (unicode is better for copying and pasting the resulting text)
2522
-            if(self::$unicodeAlt) { $alt = self::convert($unicode); }
2523
-            else { $alt = htmlspecialchars($shortname); }
2521
+			// unicode char or shortname for the alt tag? (unicode is better for copying and pasting the resulting text)
2522
+			if(self::$unicodeAlt) { $alt = self::convert($unicode); }
2523
+			else { $alt = htmlspecialchars($shortname); }
2524 2524
 
2525
-            if(self::$imageType == 'png') {
2526
-                if(self::$sprites) {
2527
-                    return $m[2].'<span class="emojione-'.strtoupper($unicode).'" title="'.htmlspecialchars($shortname).'">'.$alt.'</span>';
2528
-                }
2529
-                else {
2530
-                    return $m[2].'<img class="emojione" alt="'.$alt.'" src="'.self::$imagePathPNG.strtoupper($unicode).'.png'.self::$cacheBustParam.'"/>';
2531
-                }
2532
-            }
2525
+			if(self::$imageType == 'png') {
2526
+				if(self::$sprites) {
2527
+					return $m[2].'<span class="emojione-'.strtoupper($unicode).'" title="'.htmlspecialchars($shortname).'">'.$alt.'</span>';
2528
+				}
2529
+				else {
2530
+					return $m[2].'<img class="emojione" alt="'.$alt.'" src="'.self::$imagePathPNG.strtoupper($unicode).'.png'.self::$cacheBustParam.'"/>';
2531
+				}
2532
+			}
2533 2533
 
2534
-            if(self::$sprites) {
2535
-                return $m[2].'<svg class="emojione"><description>'.$alt.'</description><use xlink:href="'.self::$imagePathSVGSprites.'#emoji-'.strtoupper($unicode).'"></use></svg>';
2536
-            }
2537
-            else {
2538
-                return $m[2].'<object class="emojione" data="'.self::$imagePathSVG.strtoupper($unicode).'.svg'.self::$cacheBustParam.'" type="image/svg+xml" standby="'.$alt.'">'.$alt.'</object>';
2539
-            }
2540
-        }
2541
-    }
2542
-    static function toShortCallback($m) {
2543
-        if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2544
-            return $m[0];
2545
-        }
2546
-        else {
2547
-            $unicode = $m[1];
2548
-            if(!isset(self::$unicode_replace[$unicode])) {
2549
-                $unicode = substr($m[1], 0, 4);
2550
-                if(!isset(self::$unicode_replace[$unicode])) {
2551
-                    return $m[0];
2552
-                }
2553
-            }
2534
+			if(self::$sprites) {
2535
+				return $m[2].'<svg class="emojione"><description>'.$alt.'</description><use xlink:href="'.self::$imagePathSVGSprites.'#emoji-'.strtoupper($unicode).'"></use></svg>';
2536
+			}
2537
+			else {
2538
+				return $m[2].'<object class="emojione" data="'.self::$imagePathSVG.strtoupper($unicode).'.svg'.self::$cacheBustParam.'" type="image/svg+xml" standby="'.$alt.'">'.$alt.'</object>';
2539
+			}
2540
+		}
2541
+	}
2542
+	static function toShortCallback($m) {
2543
+		if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2544
+			return $m[0];
2545
+		}
2546
+		else {
2547
+			$unicode = $m[1];
2548
+			if(!isset(self::$unicode_replace[$unicode])) {
2549
+				$unicode = substr($m[1], 0, 4);
2550
+				if(!isset(self::$unicode_replace[$unicode])) {
2551
+					return $m[0];
2552
+				}
2553
+			}
2554 2554
 
2555
-            return self::$unicode_replace[$unicode];
2556
-        }
2557
-    }
2558
-    static function unicodeToImageCallback($m) {
2559
-        if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2560
-            return $m[0];
2561
-        }
2562
-        else {
2563
-            $unicode = $m[1];
2555
+			return self::$unicode_replace[$unicode];
2556
+		}
2557
+	}
2558
+	static function unicodeToImageCallback($m) {
2559
+		if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2560
+			return $m[0];
2561
+		}
2562
+		else {
2563
+			$unicode = $m[1];
2564 2564
 
2565
-            if(!isset(self::$unicode_replace[$unicode])) {
2566
-                $unicode = substr($m[1], 0, 4);
2567
-                if(!isset(self::$unicode_replace[$unicode])) {
2568
-                    return $m[0];
2569
-                }
2570
-            }
2565
+			if(!isset(self::$unicode_replace[$unicode])) {
2566
+				$unicode = substr($m[1], 0, 4);
2567
+				if(!isset(self::$unicode_replace[$unicode])) {
2568
+					return $m[0];
2569
+				}
2570
+			}
2571 2571
 
2572
-            $shortname = self::$unicode_replace[$unicode];
2573
-            $filename = strtoupper(self::$shortcode_replace[$shortname]);
2572
+			$shortname = self::$unicode_replace[$unicode];
2573
+			$filename = strtoupper(self::$shortcode_replace[$shortname]);
2574 2574
 
2575
-            if(self::$unicodeAlt) { $alt = $unicode; }
2576
-            else { $alt = $shortname; }
2575
+			if(self::$unicodeAlt) { $alt = $unicode; }
2576
+			else { $alt = $shortname; }
2577 2577
 
2578
-            if(self::$imageType == 'png') {
2579
-                if(self::$sprites) {
2580
-                    return '<span class="emojione-'.strtoupper($unicode).'" title="'.htmlspecialchars($shortname).'">'.$alt.'</span>';
2581
-                }
2582
-                else {
2583
-                    return '<img class="emojione" alt="'.$alt.'" src="'.self::$imagePathPNG.$filename.'.png'.self::$cacheBustParam.'"/>';
2584
-                }
2585
-            }
2578
+			if(self::$imageType == 'png') {
2579
+				if(self::$sprites) {
2580
+					return '<span class="emojione-'.strtoupper($unicode).'" title="'.htmlspecialchars($shortname).'">'.$alt.'</span>';
2581
+				}
2582
+				else {
2583
+					return '<img class="emojione" alt="'.$alt.'" src="'.self::$imagePathPNG.$filename.'.png'.self::$cacheBustParam.'"/>';
2584
+				}
2585
+			}
2586 2586
 
2587
-            if(self::$sprites) {
2588
-                return '<svg class="emojione"><description>'.$alt.'</description><use xlink:href="'.self::$imagePathSVGSprites.'#emoji-'.strtoupper($unicode).'"></use></svg>';
2589
-            }
2590
-            else {
2591
-                return '<object class="emojione" data="'.self::$imagePathSVG.$filename.'.svg'.self::$cacheBustParam.'" type="image/svg+xml" standby="'.$alt.'">'.$alt.'</object>';
2592
-            }
2593
-        }
2594
-    }
2587
+			if(self::$sprites) {
2588
+				return '<svg class="emojione"><description>'.$alt.'</description><use xlink:href="'.self::$imagePathSVGSprites.'#emoji-'.strtoupper($unicode).'"></use></svg>';
2589
+			}
2590
+			else {
2591
+				return '<object class="emojione" data="'.self::$imagePathSVG.$filename.'.svg'.self::$cacheBustParam.'" type="image/svg+xml" standby="'.$alt.'">'.$alt.'</object>';
2592
+			}
2593
+		}
2594
+	}
2595 2595
 
2596
-    // ##########################################
2597
-    // ######## helper methods
2598
-    // ##########################################
2599
-    static function convert($unicode) {
2600
-        if(stristr($unicode,'-')) {
2601
-            $pairs = explode('-',$unicode);
2602
-            return '&#x'.implode(';&#x',$pairs).';';
2603
-        }
2604
-        else {
2605
-            return '&#x'.$unicode.';';
2606
-        }
2607
-    }
2596
+	// ##########################################
2597
+	// ######## helper methods
2598
+	// ##########################################
2599
+	static function convert($unicode) {
2600
+		if(stristr($unicode,'-')) {
2601
+			$pairs = explode('-',$unicode);
2602
+			return '&#x'.implode(';&#x',$pairs).';';
2603
+		}
2604
+		else {
2605
+			return '&#x'.$unicode.';';
2606
+		}
2607
+	}
2608 2608
 }
Please login to merge, or discard this patch.
Spacing   +31 added lines, -31 removed lines patch added patch discarded remove patch
@@ -2401,7 +2401,7 @@  discard block
 block discarded – undo
2401 2401
     // useful for sending emojis back to mobile devices
2402 2402
     static function shortnameToUnicode($string) {
2403 2403
         $string = preg_replace_callback('/'.self::$ignoredRegexp.'|('.self::$shortcodeRegexp.')/Si', 'static::shortnameToUnicodeCallback', $string);
2404
-        if(self::$ascii) {
2404
+        if (self::$ascii) {
2405 2405
             $string = preg_replace_callback('/'.self::$ignoredRegexp.'|((\\s|^)'.self::$asciiRegexp.'(?=\\s|$|[!,\.]))/S', 'static::asciiToUnicodeCallback', $string);
2406 2406
         }
2407 2407
         return $string;
@@ -2414,7 +2414,7 @@  discard block
 block discarded – undo
2414 2414
     }
2415 2415
     static function shortnameToImage($string) {
2416 2416
         $string = preg_replace_callback('/'.self::$ignoredRegexp.'|('.self::$shortcodeRegexp.')/Si', 'static::shortnameToImageCallback', $string);
2417
-        if(self::$ascii) {
2417
+        if (self::$ascii) {
2418 2418
             $string = preg_replace_callback('/'.self::$ignoredRegexp.'|((\\s|^)'.self::$asciiRegexp.'(?=\\s|$|[!,\.]))/S', 'static::asciiToImageCallback', $string);
2419 2419
         }
2420 2420
         return $string;
@@ -2430,7 +2430,7 @@  discard block
 block discarded – undo
2430 2430
     // ######## preg_replace callbacks
2431 2431
     // ##########################################
2432 2432
     static function shortnameToAsciiCallback($m) {
2433
-        if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2433
+        if ((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2434 2434
             return $m[0];
2435 2435
         }
2436 2436
         else {
@@ -2438,7 +2438,7 @@  discard block
 block discarded – undo
2438 2438
 
2439 2439
             $shortname = $m[0];
2440 2440
 
2441
-            if(!isset(self::$shortcode_replace[$shortname])) {
2441
+            if (!isset(self::$shortcode_replace[$shortname])) {
2442 2442
                 return $m[0];
2443 2443
             }
2444 2444
 
@@ -2448,7 +2448,7 @@  discard block
 block discarded – undo
2448 2448
         }
2449 2449
     }
2450 2450
     static function shortnameToUnicodeCallback($m) {
2451
-        if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2451
+        if ((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2452 2452
             return $m[0];
2453 2453
         }
2454 2454
         else {
@@ -2456,7 +2456,7 @@  discard block
 block discarded – undo
2456 2456
 
2457 2457
             $shortname = $m[1];
2458 2458
 
2459
-            if(!isset($flipped[$shortname])) {
2459
+            if (!isset($flipped[$shortname])) {
2460 2460
                 return $m[0];
2461 2461
             }
2462 2462
 
@@ -2466,13 +2466,13 @@  discard block
 block discarded – undo
2466 2466
         }
2467 2467
     }
2468 2468
     static function shortnameToImageCallback($m) {
2469
-        if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2469
+        if ((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2470 2470
             return $m[0];
2471 2471
         }
2472 2472
         else {
2473 2473
             $shortname = $m[1];
2474 2474
 
2475
-            if(!isset(self::$shortcode_replace[$shortname])) {
2475
+            if (!isset(self::$shortcode_replace[$shortname])) {
2476 2476
                 return $m[0];
2477 2477
             }
2478 2478
 
@@ -2480,11 +2480,11 @@  discard block
 block discarded – undo
2480 2480
             $unicode = self::$shortcode_replace[$shortname];
2481 2481
             $filename = strtoupper($unicode);
2482 2482
 
2483
-            if(self::$unicodeAlt) { $alt = self::convert($unicode); }
2483
+            if (self::$unicodeAlt) { $alt = self::convert($unicode); }
2484 2484
             else { $alt = $shortname; }
2485 2485
 
2486
-            if(self::$imageType == 'png') {
2487
-                if(self::$sprites) {
2486
+            if (self::$imageType == 'png') {
2487
+                if (self::$sprites) {
2488 2488
                     return '<span class="emojione-'.strtoupper($unicode).'" title="'.htmlspecialchars($shortname).'">'.$alt.'</span>';
2489 2489
                 }
2490 2490
                 else {
@@ -2492,7 +2492,7 @@  discard block
 block discarded – undo
2492 2492
                 }
2493 2493
             }
2494 2494
 
2495
-            if(self::$sprites) {
2495
+            if (self::$sprites) {
2496 2496
                 return '<svg class="emojione"><description>'.$alt.'</description><use xlink:href="'.self::$imagePathSVGSprites.'#emoji-'.strtoupper($unicode).'"></use></svg>';
2497 2497
             }
2498 2498
             else {
@@ -2501,7 +2501,7 @@  discard block
 block discarded – undo
2501 2501
         }
2502 2502
     }
2503 2503
     static function asciiToUnicodeCallback($m) {
2504
-        if((!is_array($m)) || (!isset($m[3])) || (empty($m[3]))) {
2504
+        if ((!is_array($m)) || (!isset($m[3])) || (empty($m[3]))) {
2505 2505
             return $m[0];
2506 2506
         }
2507 2507
         else {
@@ -2511,7 +2511,7 @@  discard block
 block discarded – undo
2511 2511
         }
2512 2512
     }
2513 2513
     static function asciiToImageCallback($m) {
2514
-        if((!is_array($m)) || (!isset($m[3])) || (empty($m[3]))) {
2514
+        if ((!is_array($m)) || (!isset($m[3])) || (empty($m[3]))) {
2515 2515
             return $m[0];
2516 2516
         }
2517 2517
         else {
@@ -2519,11 +2519,11 @@  discard block
 block discarded – undo
2519 2519
             $unicode = self::$ascii_replace[$shortname];
2520 2520
 
2521 2521
             // unicode char or shortname for the alt tag? (unicode is better for copying and pasting the resulting text)
2522
-            if(self::$unicodeAlt) { $alt = self::convert($unicode); }
2522
+            if (self::$unicodeAlt) { $alt = self::convert($unicode); }
2523 2523
             else { $alt = htmlspecialchars($shortname); }
2524 2524
 
2525
-            if(self::$imageType == 'png') {
2526
-                if(self::$sprites) {
2525
+            if (self::$imageType == 'png') {
2526
+                if (self::$sprites) {
2527 2527
                     return $m[2].'<span class="emojione-'.strtoupper($unicode).'" title="'.htmlspecialchars($shortname).'">'.$alt.'</span>';
2528 2528
                 }
2529 2529
                 else {
@@ -2531,7 +2531,7 @@  discard block
 block discarded – undo
2531 2531
                 }
2532 2532
             }
2533 2533
 
2534
-            if(self::$sprites) {
2534
+            if (self::$sprites) {
2535 2535
                 return $m[2].'<svg class="emojione"><description>'.$alt.'</description><use xlink:href="'.self::$imagePathSVGSprites.'#emoji-'.strtoupper($unicode).'"></use></svg>';
2536 2536
             }
2537 2537
             else {
@@ -2540,14 +2540,14 @@  discard block
 block discarded – undo
2540 2540
         }
2541 2541
     }
2542 2542
     static function toShortCallback($m) {
2543
-        if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2543
+        if ((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2544 2544
             return $m[0];
2545 2545
         }
2546 2546
         else {
2547 2547
             $unicode = $m[1];
2548
-            if(!isset(self::$unicode_replace[$unicode])) {
2548
+            if (!isset(self::$unicode_replace[$unicode])) {
2549 2549
                 $unicode = substr($m[1], 0, 4);
2550
-                if(!isset(self::$unicode_replace[$unicode])) {
2550
+                if (!isset(self::$unicode_replace[$unicode])) {
2551 2551
                     return $m[0];
2552 2552
                 }
2553 2553
             }
@@ -2556,15 +2556,15 @@  discard block
 block discarded – undo
2556 2556
         }
2557 2557
     }
2558 2558
     static function unicodeToImageCallback($m) {
2559
-        if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2559
+        if ((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2560 2560
             return $m[0];
2561 2561
         }
2562 2562
         else {
2563 2563
             $unicode = $m[1];
2564 2564
 
2565
-            if(!isset(self::$unicode_replace[$unicode])) {
2565
+            if (!isset(self::$unicode_replace[$unicode])) {
2566 2566
                 $unicode = substr($m[1], 0, 4);
2567
-                if(!isset(self::$unicode_replace[$unicode])) {
2567
+                if (!isset(self::$unicode_replace[$unicode])) {
2568 2568
                     return $m[0];
2569 2569
                 }
2570 2570
             }
@@ -2572,11 +2572,11 @@  discard block
 block discarded – undo
2572 2572
             $shortname = self::$unicode_replace[$unicode];
2573 2573
             $filename = strtoupper(self::$shortcode_replace[$shortname]);
2574 2574
 
2575
-            if(self::$unicodeAlt) { $alt = $unicode; }
2575
+            if (self::$unicodeAlt) { $alt = $unicode; }
2576 2576
             else { $alt = $shortname; }
2577 2577
 
2578
-            if(self::$imageType == 'png') {
2579
-                if(self::$sprites) {
2578
+            if (self::$imageType == 'png') {
2579
+                if (self::$sprites) {
2580 2580
                     return '<span class="emojione-'.strtoupper($unicode).'" title="'.htmlspecialchars($shortname).'">'.$alt.'</span>';
2581 2581
                 }
2582 2582
                 else {
@@ -2584,7 +2584,7 @@  discard block
 block discarded – undo
2584 2584
                 }
2585 2585
             }
2586 2586
 
2587
-            if(self::$sprites) {
2587
+            if (self::$sprites) {
2588 2588
                 return '<svg class="emojione"><description>'.$alt.'</description><use xlink:href="'.self::$imagePathSVGSprites.'#emoji-'.strtoupper($unicode).'"></use></svg>';
2589 2589
             }
2590 2590
             else {
@@ -2597,9 +2597,9 @@  discard block
 block discarded – undo
2597 2597
     // ######## helper methods
2598 2598
     // ##########################################
2599 2599
     static function convert($unicode) {
2600
-        if(stristr($unicode,'-')) {
2601
-            $pairs = explode('-',$unicode);
2602
-            return '&#x'.implode(';&#x',$pairs).';';
2600
+        if (stristr($unicode, '-')) {
2601
+            $pairs = explode('-', $unicode);
2602
+            return '&#x'.implode(';&#x', $pairs).';';
2603 2603
         }
2604 2604
         else {
2605 2605
             return '&#x'.$unicode.';';
Please login to merge, or discard this patch.
Braces   +17 added lines, -34 removed lines patch added patch discarded remove patch
@@ -2432,8 +2432,7 @@  discard block
 block discarded – undo
2432 2432
     static function shortnameToAsciiCallback($m) {
2433 2433
         if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2434 2434
             return $m[0];
2435
-        }
2436
-        else {
2435
+        } else {
2437 2436
             $aflipped = array_flip(self::$ascii_replace);
2438 2437
 
2439 2438
             $shortname = $m[0];
@@ -2450,8 +2449,7 @@  discard block
 block discarded – undo
2450 2449
     static function shortnameToUnicodeCallback($m) {
2451 2450
         if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2452 2451
             return $m[0];
2453
-        }
2454
-        else {
2452
+        } else {
2455 2453
             $flipped = array_flip(self::$unicode_replace);
2456 2454
 
2457 2455
             $shortname = $m[1];
@@ -2468,8 +2466,7 @@  discard block
 block discarded – undo
2468 2466
     static function shortnameToImageCallback($m) {
2469 2467
         if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2470 2468
             return $m[0];
2471
-        }
2472
-        else {
2469
+        } else {
2473 2470
             $shortname = $m[1];
2474 2471
 
2475 2472
             if(!isset(self::$shortcode_replace[$shortname])) {
@@ -2480,22 +2477,19 @@  discard block
 block discarded – undo
2480 2477
             $unicode = self::$shortcode_replace[$shortname];
2481 2478
             $filename = strtoupper($unicode);
2482 2479
 
2483
-            if(self::$unicodeAlt) { $alt = self::convert($unicode); }
2484
-            else { $alt = $shortname; }
2480
+            if(self::$unicodeAlt) { $alt = self::convert($unicode); } else { $alt = $shortname; }
2485 2481
 
2486 2482
             if(self::$imageType == 'png') {
2487 2483
                 if(self::$sprites) {
2488 2484
                     return '<span class="emojione-'.strtoupper($unicode).'" title="'.htmlspecialchars($shortname).'">'.$alt.'</span>';
2489
-                }
2490
-                else {
2485
+                } else {
2491 2486
                     return '<img class="emojione" alt="'.$alt.'" src="'.self::$imagePathPNG.$filename.'.png'.self::$cacheBustParam.'"/>';
2492 2487
                 }
2493 2488
             }
2494 2489
 
2495 2490
             if(self::$sprites) {
2496 2491
                 return '<svg class="emojione"><description>'.$alt.'</description><use xlink:href="'.self::$imagePathSVGSprites.'#emoji-'.strtoupper($unicode).'"></use></svg>';
2497
-            }
2498
-            else {
2492
+            } else {
2499 2493
                 return '<object class="emojione" data="'.self::$imagePathSVG.$filename.'.svg'.self::$cacheBustParam.'" type="image/svg+xml" standby="'.$alt.'">'.$alt.'</object>';
2500 2494
             }
2501 2495
         }
@@ -2503,8 +2497,7 @@  discard block
 block discarded – undo
2503 2497
     static function asciiToUnicodeCallback($m) {
2504 2498
         if((!is_array($m)) || (!isset($m[3])) || (empty($m[3]))) {
2505 2499
             return $m[0];
2506
-        }
2507
-        else {
2500
+        } else {
2508 2501
             $shortname = $m[3];
2509 2502
             $unicode = self::$ascii_replace[$shortname];
2510 2503
             return $m[2].self::convert($unicode);
@@ -2513,28 +2506,24 @@  discard block
 block discarded – undo
2513 2506
     static function asciiToImageCallback($m) {
2514 2507
         if((!is_array($m)) || (!isset($m[3])) || (empty($m[3]))) {
2515 2508
             return $m[0];
2516
-        }
2517
-        else {
2509
+        } else {
2518 2510
             $shortname = html_entity_decode($m[3]);
2519 2511
             $unicode = self::$ascii_replace[$shortname];
2520 2512
 
2521 2513
             // unicode char or shortname for the alt tag? (unicode is better for copying and pasting the resulting text)
2522
-            if(self::$unicodeAlt) { $alt = self::convert($unicode); }
2523
-            else { $alt = htmlspecialchars($shortname); }
2514
+            if(self::$unicodeAlt) { $alt = self::convert($unicode); } else { $alt = htmlspecialchars($shortname); }
2524 2515
 
2525 2516
             if(self::$imageType == 'png') {
2526 2517
                 if(self::$sprites) {
2527 2518
                     return $m[2].'<span class="emojione-'.strtoupper($unicode).'" title="'.htmlspecialchars($shortname).'">'.$alt.'</span>';
2528
-                }
2529
-                else {
2519
+                } else {
2530 2520
                     return $m[2].'<img class="emojione" alt="'.$alt.'" src="'.self::$imagePathPNG.strtoupper($unicode).'.png'.self::$cacheBustParam.'"/>';
2531 2521
                 }
2532 2522
             }
2533 2523
 
2534 2524
             if(self::$sprites) {
2535 2525
                 return $m[2].'<svg class="emojione"><description>'.$alt.'</description><use xlink:href="'.self::$imagePathSVGSprites.'#emoji-'.strtoupper($unicode).'"></use></svg>';
2536
-            }
2537
-            else {
2526
+            } else {
2538 2527
                 return $m[2].'<object class="emojione" data="'.self::$imagePathSVG.strtoupper($unicode).'.svg'.self::$cacheBustParam.'" type="image/svg+xml" standby="'.$alt.'">'.$alt.'</object>';
2539 2528
             }
2540 2529
         }
@@ -2542,8 +2531,7 @@  discard block
 block discarded – undo
2542 2531
     static function toShortCallback($m) {
2543 2532
         if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2544 2533
             return $m[0];
2545
-        }
2546
-        else {
2534
+        } else {
2547 2535
             $unicode = $m[1];
2548 2536
             if(!isset(self::$unicode_replace[$unicode])) {
2549 2537
                 $unicode = substr($m[1], 0, 4);
@@ -2558,8 +2546,7 @@  discard block
 block discarded – undo
2558 2546
     static function unicodeToImageCallback($m) {
2559 2547
         if((!is_array($m)) || (!isset($m[1])) || (empty($m[1]))) {
2560 2548
             return $m[0];
2561
-        }
2562
-        else {
2549
+        } else {
2563 2550
             $unicode = $m[1];
2564 2551
 
2565 2552
             if(!isset(self::$unicode_replace[$unicode])) {
@@ -2572,22 +2559,19 @@  discard block
 block discarded – undo
2572 2559
             $shortname = self::$unicode_replace[$unicode];
2573 2560
             $filename = strtoupper(self::$shortcode_replace[$shortname]);
2574 2561
 
2575
-            if(self::$unicodeAlt) { $alt = $unicode; }
2576
-            else { $alt = $shortname; }
2562
+            if(self::$unicodeAlt) { $alt = $unicode; } else { $alt = $shortname; }
2577 2563
 
2578 2564
             if(self::$imageType == 'png') {
2579 2565
                 if(self::$sprites) {
2580 2566
                     return '<span class="emojione-'.strtoupper($unicode).'" title="'.htmlspecialchars($shortname).'">'.$alt.'</span>';
2581
-                }
2582
-                else {
2567
+                } else {
2583 2568
                     return '<img class="emojione" alt="'.$alt.'" src="'.self::$imagePathPNG.$filename.'.png'.self::$cacheBustParam.'"/>';
2584 2569
                 }
2585 2570
             }
2586 2571
 
2587 2572
             if(self::$sprites) {
2588 2573
                 return '<svg class="emojione"><description>'.$alt.'</description><use xlink:href="'.self::$imagePathSVGSprites.'#emoji-'.strtoupper($unicode).'"></use></svg>';
2589
-            }
2590
-            else {
2574
+            } else {
2591 2575
                 return '<object class="emojione" data="'.self::$imagePathSVG.$filename.'.svg'.self::$cacheBustParam.'" type="image/svg+xml" standby="'.$alt.'">'.$alt.'</object>';
2592 2576
             }
2593 2577
         }
@@ -2600,8 +2584,7 @@  discard block
 block discarded – undo
2600 2584
         if(stristr($unicode,'-')) {
2601 2585
             $pairs = explode('-',$unicode);
2602 2586
             return '&#x'.implode(';&#x',$pairs).';';
2603
-        }
2604
-        else {
2587
+        } else {
2605 2588
             return '&#x'.$unicode.';';
2606 2589
         }
2607 2590
     }
Please login to merge, or discard this patch.
migrations/m1_initial_scheme.php 1 patch
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -9,7 +9,7 @@  discard block
 block discarded – undo
9 9
 	{
10 10
 		return array(
11 11
 			'add_tables' => array(
12
-				$this->table_prefix . 'messenger_friends_request' => array(
12
+				$this->table_prefix.'messenger_friends_request' => array(
13 13
 					'COLUMNS' => array(
14 14
 						'request_id' => array('UINT', null, 'auto_increment', 0),
15 15
 						'user_id' => array('UINT', 0),
@@ -19,7 +19,7 @@  discard block
 block discarded – undo
19 19
 					),
20 20
 					'PRIMARY_KEY' => 'request_id'
21 21
 				),
22
-				$this->table_prefix . 'messenger_user_friends' => array(
22
+				$this->table_prefix.'messenger_user_friends' => array(
23 23
 					'COLUMNS' => array(
24 24
 						'user_id' => array('UINT', 0),
25 25
 						'friend_id' => array('UINT', 0)
@@ -33,8 +33,8 @@  discard block
 block discarded – undo
33 33
 	{
34 34
 		return array(
35 35
 			'drop_tables' => array(
36
-				$this->table_prefix . 'messenger_friends_request',
37
-				$this->table_prefix . 'messenger_user_friends'
36
+				$this->table_prefix.'messenger_friends_request',
37
+				$this->table_prefix.'messenger_user_friends'
38 38
 			)
39 39
 		);
40 40
 	}
Please login to merge, or discard this patch.
migrations/m2_add_ucp_permissions.php 1 patch
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -5,20 +5,20 @@
 block discarded – undo
5 5
 class m2_add_ucp_permissions extends \phpbb\db\migration\migration
6 6
 {
7 7
 
8
-    public function update_data()
9
-    {
10
-        return array(
11
-          array('permission.add', array('u_access_messenger')),
12
-          array('permission.permission_set', array('REGISTERED', 'u_access_messenger', 'group'))
13
-        );
14
-    }
8
+	public function update_data()
9
+	{
10
+		return array(
11
+		  array('permission.add', array('u_access_messenger')),
12
+		  array('permission.permission_set', array('REGISTERED', 'u_access_messenger', 'group'))
13
+		);
14
+	}
15 15
 
16
-    public function revert_data()
17
-    {
18
-        return array(
19
-          array('permission.permission_unset', array('REGISTERED', 'u_access_messenger', 'group')),
20
-          array('permission.remove', array('u_access_messenger'))
21
-        );
22
-    }
16
+	public function revert_data()
17
+	{
18
+		return array(
19
+		  array('permission.permission_unset', array('REGISTERED', 'u_access_messenger', 'group')),
20
+		  array('permission.remove', array('u_access_messenger'))
21
+		);
22
+	}
23 23
 
24 24
 }
Please login to merge, or discard this patch.
migrations/m3_ucp_friends_module.php 2 patches
Indentation   +42 added lines, -42 removed lines patch added patch discarded remove patch
@@ -5,49 +5,49 @@
 block discarded – undo
5 5
 class m3_ucp_friends_module extends \phpbb\db\migration\migration
6 6
 {
7 7
 
8
-    public function update_data()
9
-    {
10
-        return array(
11
-            array('module.add', array(
12
-                    'ucp',
13
-                    '',
14
-                    'CHAT_BOX',
15
-                )
16
-            ),
17
-            array('module.add', array(
18
-                    'ucp',
19
-                    'CHAT_BOX',
20
-                    array(
21
-                        'module_basename'   => '\florinp\messenger\ucp\ucp_friends_module',
22
-                        'module_class' => 'ucp_friends_module',
23
-                        'modes' => array('friends','requests'),
24
-                    ),
25
-                )
26
-            ),
27
-        );
28
-    }
8
+	public function update_data()
9
+	{
10
+		return array(
11
+			array('module.add', array(
12
+					'ucp',
13
+					'',
14
+					'CHAT_BOX',
15
+				)
16
+			),
17
+			array('module.add', array(
18
+					'ucp',
19
+					'CHAT_BOX',
20
+					array(
21
+						'module_basename'   => '\florinp\messenger\ucp\ucp_friends_module',
22
+						'module_class' => 'ucp_friends_module',
23
+						'modes' => array('friends','requests'),
24
+					),
25
+				)
26
+			),
27
+		);
28
+	}
29 29
 
30
-    public function revert_data()
31
-    {
32
-        return array(
33
-            array('module.remove', array(
34
-                    'ucp',
35
-                    'CHAT_BOX',
36
-                    array(
37
-                        'module_basename'   => '\florinp\messenger\ucp\ucp_friends_module',
38
-                        'module_class' => 'ucp_friends_module',
39
-                        'modes' => array('friends','requests'),
40
-                    )
41
-                )
42
-            ),
43
-            array('module.remove', array(
44
-                    'ucp',
45
-                    '',
46
-                    'CHAT_BOX'
47
-                )
48
-            ),
49
-        );
30
+	public function revert_data()
31
+	{
32
+		return array(
33
+			array('module.remove', array(
34
+					'ucp',
35
+					'CHAT_BOX',
36
+					array(
37
+						'module_basename'   => '\florinp\messenger\ucp\ucp_friends_module',
38
+						'module_class' => 'ucp_friends_module',
39
+						'modes' => array('friends','requests'),
40
+					)
41
+				)
42
+			),
43
+			array('module.remove', array(
44
+					'ucp',
45
+					'',
46
+					'CHAT_BOX'
47
+				)
48
+			),
49
+		);
50 50
 
51
-    }
51
+	}
52 52
 
53 53
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -20,7 +20,7 @@  discard block
 block discarded – undo
20 20
                     array(
21 21
                         'module_basename'   => '\florinp\messenger\ucp\ucp_friends_module',
22 22
                         'module_class' => 'ucp_friends_module',
23
-                        'modes' => array('friends','requests'),
23
+                        'modes' => array('friends', 'requests'),
24 24
                     ),
25 25
                 )
26 26
             ),
@@ -36,7 +36,7 @@  discard block
 block discarded – undo
36 36
                     array(
37 37
                         'module_basename'   => '\florinp\messenger\ucp\ucp_friends_module',
38 38
                         'module_class' => 'ucp_friends_module',
39
-                        'modes' => array('friends','requests'),
39
+                        'modes' => array('friends', 'requests'),
40 40
                     )
41 41
                 )
42 42
             ),
Please login to merge, or discard this patch.