diff --git a/wechat/render.py b/wechat/render.py index 5a0fc21..6d59732 100644 --- a/wechat/render.py +++ b/wechat/render.py @@ -171,7 +171,7 @@ class HTMLRender(object): def _render_partial_msgs(self, msgs): """ return single html""" - self.smiley.used_smiley_id.clear() + self.smiley.reset() slicer = MessageSlicerByTime() slices = slicer.slice(msgs) diff --git a/wechat/smiley.py b/wechat/smiley.py index ee73f25..5475082 100755 --- a/wechat/smiley.py +++ b/wechat/smiley.py @@ -2,6 +2,7 @@ # -*- coding: UTF-8 -*- import os +import functools import re import json import struct @@ -9,10 +10,7 @@ import struct from common.textutil import get_file_b64 STATIC_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static') - -UNICODE_SMILEY_FILE = os.path.join(STATIC_PATH, 'unicode-smiley.json') TENCENT_SMILEY_FILE = os.path.join(STATIC_PATH, 'tencent-smiley.json') -TENCENT_EXTRASMILEY_FILE = os.path.join(STATIC_PATH, 'tencent-smiley-extra.json') try: UNICODE_SMILEY_RE = re.compile( @@ -37,10 +35,16 @@ HEAD = """.smiley { } """ -TEMPLATE = """.smiley{name} {{ +TEMPLATE = """.{name} {{ background-image: url("data:image/png;base64,{b64}"); + background-size: 24px 24px; }}""" +def _css_class_name(s): + s = s.replace("/", "_") + s = s.replace(".", "_") + return "smiley_" + s + class SmileyProvider(object): def __init__(self, html_replace=True): """ html_replace: replace smileycode by html. @@ -50,74 +54,40 @@ class SmileyProvider(object): if not html_replace: raise NotImplementedError() - # [微笑] -> 0 + # [微笑] -> smiley/0.png self.tencent_smiley = json.load(open(TENCENT_SMILEY_FILE)) + self.used_smileys = set() - # some extra smiley from javascript on wx.qq.com - extra_smiley = json.load(open(TENCENT_EXTRASMILEY_FILE)) - extra_smiley = {u'[' + k + u']': v for k, v in - extra_smiley.items()} - self.tencent_smiley.update(extra_smiley) + def reset(self): + self.used_smileys.clear() - # 1f35c -> "\ue340" - #self.unicode_smiley_code = gUnicodeCodeMap - - # u'\U0001f35c' -> "e340" # for iphone - # u'\ue415' -> 'e415' # for android - unicode_smiley_dict = json.load(open(UNICODE_SMILEY_FILE)) - self.unicode_smiley = {(self.unichar(int(k, 16))): hex(ord(v))[2:] for k, v in - unicode_smiley_dict.items()} - self.unicode_smiley.update({v: hex(ord(v))[2:] for _, v in - unicode_smiley_dict.items()}) - self.used_smiley_id = set() - - def unichar(self, i): - try: - return chr(i) - except ValueError: - return struct.pack('i', i).decode('utf-32') - - def gen_replace_elem(self, smiley_id): - self.used_smiley_id.add(str(smiley_id)) - return ''.format(smiley_id) - - def _replace_unicode(self, msg): - if not UNICODE_SMILEY_RE.findall(msg): - # didn't find the code - return msg - for k, v in self.unicode_smiley.items(): - if k in msg: - msg = msg.replace(k, self.gen_replace_elem(v)) - return msg - - def _replace_tencent(self, msg): - if (not '[' in msg or not ']' in msg) \ - and (not '/:' in msg) and (not '/' in msg): - return msg - for k, v in self.tencent_smiley.items(): - if k in msg: - msg = msg.replace(k, self.gen_replace_elem(v)) - return msg + def gen_replace_elem(self, smiley_path): + self.used_smileys.add(str(smiley_path)) + return ''.format(_css_class_name(smiley_path)) def replace_smileycode(self, msg): """ replace the smiley code in msg return a html """ - msg = self._replace_unicode(msg) - msg = self._replace_tencent(msg) + # pre-filter: + if ('[' not in msg) and ('/' not in msg) and not UNICODE_SMILEY_RE.findall(msg): + return msg + for k, v in self.tencent_smiley.items(): + if k in msg: + msg = msg.replace(k, self.gen_replace_elem(v)) + return msg return msg def gen_used_smiley_css(self): ret = HEAD - for sid in self.used_smiley_id: - fname = os.path.join(STATIC_PATH, 'smileys', '{}.png'.format(sid)) + for path in self.used_smileys: + fname = os.path.join(STATIC_PATH, path) b64 = get_file_b64(fname) - ret = ret + TEMPLATE.format(name=sid, b64=b64) + ret = ret + TEMPLATE.format(name=_css_class_name(path), b64=b64) return ret if __name__ == '__main__': smiley = SmileyProvider() msg = u"[挥手]哈哈呵呵hihi\U0001f684\u2728\u0001 /::<\ue415" msg = smiley.replace_smileycode(msg) - #print msg smiley.gen_used_smiley_css() diff --git a/wechat/static/README.md b/wechat/static/README.md new file mode 100644 index 0000000..b380ca4 --- /dev/null +++ b/wechat/static/README.md @@ -0,0 +1,10 @@ + +Sources: + +* web wechat +* /data/data/com.tencent.mm/files/public/emoji/newemoji + + +Generated file: + +* tencent-smiley.json generated by `parse_tencent_smiley.py` diff --git a/wechat/static/newemoji/2_02.png b/wechat/static/newemoji/2_02.png new file mode 100644 index 0000000..d057bc3 Binary files /dev/null and b/wechat/static/newemoji/2_02.png differ diff --git a/wechat/static/newemoji/2_04.png b/wechat/static/newemoji/2_04.png new file mode 100644 index 0000000..5036759 Binary files /dev/null and b/wechat/static/newemoji/2_04.png differ diff --git a/wechat/static/newemoji/2_05.png b/wechat/static/newemoji/2_05.png new file mode 100644 index 0000000..164783c Binary files /dev/null and b/wechat/static/newemoji/2_05.png differ diff --git a/wechat/static/newemoji/2_06.png b/wechat/static/newemoji/2_06.png new file mode 100644 index 0000000..74df4f4 Binary files /dev/null and b/wechat/static/newemoji/2_06.png differ diff --git a/wechat/static/newemoji/2_07.png b/wechat/static/newemoji/2_07.png new file mode 100644 index 0000000..8d3a492 Binary files /dev/null and b/wechat/static/newemoji/2_07.png differ diff --git a/wechat/static/newemoji/2_09.png b/wechat/static/newemoji/2_09.png new file mode 100644 index 0000000..4a08a21 Binary files /dev/null and b/wechat/static/newemoji/2_09.png differ diff --git a/wechat/static/newemoji/2_10.png b/wechat/static/newemoji/2_10.png new file mode 100644 index 0000000..2b83349 Binary files /dev/null and b/wechat/static/newemoji/2_10.png differ diff --git a/wechat/static/newemoji/2_11.png b/wechat/static/newemoji/2_11.png new file mode 100644 index 0000000..131edf1 Binary files /dev/null and b/wechat/static/newemoji/2_11.png differ diff --git a/wechat/static/newemoji/2_12.png b/wechat/static/newemoji/2_12.png new file mode 100644 index 0000000..1e88d87 Binary files /dev/null and b/wechat/static/newemoji/2_12.png differ diff --git a/wechat/static/newemoji/2_14.png b/wechat/static/newemoji/2_14.png new file mode 100644 index 0000000..64f345a Binary files /dev/null and b/wechat/static/newemoji/2_14.png differ diff --git a/wechat/static/newemoji/2_15.png b/wechat/static/newemoji/2_15.png new file mode 100644 index 0000000..4ae81c9 Binary files /dev/null and b/wechat/static/newemoji/2_15.png differ diff --git a/wechat/static/newemoji/2_16.png b/wechat/static/newemoji/2_16.png new file mode 100644 index 0000000..b0fb515 Binary files /dev/null and b/wechat/static/newemoji/2_16.png differ diff --git a/wechat/static/newemoji/2_17.png b/wechat/static/newemoji/2_17.png new file mode 100644 index 0000000..402f58d Binary files /dev/null and b/wechat/static/newemoji/2_17.png differ diff --git a/wechat/static/newemoji/Addoil.png b/wechat/static/newemoji/Addoil.png new file mode 100644 index 0000000..f543d4e Binary files /dev/null and b/wechat/static/newemoji/Addoil.png differ diff --git a/wechat/static/newemoji/Cold.png b/wechat/static/newemoji/Cold.png new file mode 100644 index 0000000..290889b Binary files /dev/null and b/wechat/static/newemoji/Cold.png differ diff --git a/wechat/static/newemoji/KeepFighting.png b/wechat/static/newemoji/KeepFighting.png new file mode 100644 index 0000000..4a2976e Binary files /dev/null and b/wechat/static/newemoji/KeepFighting.png differ diff --git a/wechat/static/newemoji/NoProb.png b/wechat/static/newemoji/NoProb.png new file mode 100644 index 0000000..60f7a20 Binary files /dev/null and b/wechat/static/newemoji/NoProb.png differ diff --git a/wechat/static/newemoji/Shocked!.png b/wechat/static/newemoji/Shocked!.png new file mode 100644 index 0000000..8e9cc63 Binary files /dev/null and b/wechat/static/newemoji/Shocked!.png differ diff --git a/wechat/static/newemoji/Slap.png b/wechat/static/newemoji/Slap.png new file mode 100644 index 0000000..cedb48a Binary files /dev/null and b/wechat/static/newemoji/Slap.png differ diff --git a/wechat/static/newemoji/Social.png b/wechat/static/newemoji/Social.png new file mode 100644 index 0000000..cc64749 Binary files /dev/null and b/wechat/static/newemoji/Social.png differ diff --git a/wechat/static/newemoji/Sweat.png b/wechat/static/newemoji/Sweat.png new file mode 100644 index 0000000..71cc3aa Binary files /dev/null and b/wechat/static/newemoji/Sweat.png differ diff --git a/wechat/static/newemoji/Watermelon.png b/wechat/static/newemoji/Watermelon.png new file mode 100644 index 0000000..7922ff9 Binary files /dev/null and b/wechat/static/newemoji/Watermelon.png differ diff --git a/wechat/static/newemoji/Wow!.png b/wechat/static/newemoji/Wow!.png new file mode 100644 index 0000000..6077bda Binary files /dev/null and b/wechat/static/newemoji/Wow!.png differ diff --git a/wechat/static/newemoji/Yellowdog.png b/wechat/static/newemoji/Yellowdog.png new file mode 100644 index 0000000..66f721a Binary files /dev/null and b/wechat/static/newemoji/Yellowdog.png differ diff --git a/wechat/static/newemoji/config.conf b/wechat/static/newemoji/config.conf new file mode 100644 index 0000000..aa028ef --- /dev/null +++ b/wechat/static/newemoji/config.conf @@ -0,0 +1,2 @@ +{ + "version": 86} diff --git a/wechat/static/newemoji/newemoji-config.xml b/wechat/static/newemoji/newemoji-config.xml new file mode 100644 index 0000000..5cd2ca0 --- /dev/null +++ b/wechat/static/newemoji/newemoji-config.xml @@ -0,0 +1,275 @@ + + + + + + + + + + + 2_02.png + 2002 + + + + + + + + + 2_04.png + 2004 + + + + + + + + + 2_05.png + 2005 + + + + + + + + + 2_06.png + 2006 + + + + + + + + + 2_07.png + 2007 + + + + + + + + + 2_09.png + 2009 + + + + + + + + + 2_10.png + 2010 + + + + + + + + + 2_11.png + 2011 + + + + + + + + + 2_12.png + 2018 + + + + + + + + + smiley_17b.png + 2013 + + + + + + + + + smiley_83b.png + 2014 + + + + + + + + + 2_14.png + 2015 + + + + + + + + + 2_15.png + 2016 + + + + + + + + + smiley_39b.png + 2017 + + + + + + + + + + 2_16.png + 2019 + + + + + + + + + 2_17.png + 2020 + + + + + + + + + Watermelon.png + 2021 + + + + + + + + + Addoil.png + 2022 + + + + + + + + + Sweat.png + 2023 + + + + + + + + + Shocked!.png + 2025 + + + + + + + + + Cold.png + 2027 + + + + + + + + + Social.png + 2028 + + + + + + + + + Yellowdog.png + 2030 + + + + + + + + + NoProb.png + 2034 + + + + + + + + + Slap.png + 2036 + + + + + + + + + Wow!.png + 2037 + + + + + + + + + KeepFighting.png + 2038 + + \ No newline at end of file diff --git a/wechat/static/newemoji/smiley_17b.png b/wechat/static/newemoji/smiley_17b.png new file mode 100644 index 0000000..7555c1e Binary files /dev/null and b/wechat/static/newemoji/smiley_17b.png differ diff --git a/wechat/static/newemoji/smiley_39b.png b/wechat/static/newemoji/smiley_39b.png new file mode 100644 index 0000000..13fde16 Binary files /dev/null and b/wechat/static/newemoji/smiley_39b.png differ diff --git a/wechat/static/newemoji/smiley_83b.png b/wechat/static/newemoji/smiley_83b.png new file mode 100644 index 0000000..ccf5714 Binary files /dev/null and b/wechat/static/newemoji/smiley_83b.png differ diff --git a/wechat/static/parse_tencent_smiley.py b/wechat/static/parse_tencent_smiley.py index b6d0ce5..9a5986d 100755 --- a/wechat/static/parse_tencent_smiley.py +++ b/wechat/static/parse_tencent_smiley.py @@ -5,14 +5,16 @@ import xml.etree.ElementTree as ET import os import json -tree = ET.parse(os.path.join( - os.path.dirname(os.path.abspath(__file__)), 'smiley.xml')) -root = tree.getroot() -smileys = {} -for child in root: - name = child.attrib['name'] - if 'smiley_values' in name: +def parse_smiley_xml(): + ret = {} + tree = ET.parse('smiley.xml') + root = tree.getroot() + + for child in root: + name = child.attrib['name'] + if 'smiley_values' not in name: + continue if '_th' in name: continue # ignore thailand language lst = [c.text for c in child] @@ -23,9 +25,63 @@ for child in root: v = v.strip('"') v = v.replace('<', '<') v = v.replace('&', '&') - v = v.decode('utf-8') - smileys[v] = idx + ret[v] = os.path.join("smileys", f"{idx}.png") + return ret -with open('tencent-smiley.json', 'w') as f: - json.dump(smileys, f) +def parse_extra_smiley(): + # some extra smiley from javascript on wx.qq.com + with open("tencent-smiley-extra.json") as f: + obj = json.load(f) + extra = {'[' + k + ']': os.path.join("smileys", f"{v}.png") for k, v in obj.items()} + return extra + +def parse_new_emoji(): + ret = {} + xmlfile = "newemoji/newemoji-config.xml" + tree = ET.parse(xmlfile) + root = tree.getroot() + for child in root: + assert child.tag == "emoji" + vals = {k.tag: k.text for k in child} + filename = os.path.join("newemoji", vals["fileName"]) + for k, v in vals.items(): + if "-value" in k: + ret[v] = filename + return ret + +def parse_unicode_smiley(): + # 1f35c -> "\ue340" + #self.unicode_smiley_code = gUnicodeCodeMap + + # u'\U0001f35c' -> "e340" # for iphone + # u'\ue415' -> 'e415' # for android + def unichar(i): + try: + return chr(i) + except ValueError: + return struct.pack('i', i).decode('utf-32') + + ret = {} + with open("unicode-smiley.json") as f: + d = json.load(f) + for k, v in d.items(): + fname = os.path.join("smileys", hex(ord(v))[2:] + ".png") + ret[unichar(int(k, 16))] = fname + ret[v] = fname + return ret + +if __name__ == "__main__": + # parse old smileys + smileys = {} + def add(dic, name): + smileys.update(dic) + print(f"Found {len(dic)} smileys from {name}. Total is {len(smileys)}") + + add(parse_smiley_xml(), "smiley.xml") + add(parse_extra_smiley(), "tencent-smiley-extra.json") + add(parse_new_emoji(), "newemoji") + add(parse_unicode_smiley(), "unicode-smiley.json") + + with open('tencent-smiley.json', 'w') as f: + json.dump(smileys, f) diff --git a/wechat/static/tencent-smiley.json b/wechat/static/tencent-smiley.json index 8d90bda..14e3459 100644 --- a/wechat/static/tencent-smiley.json +++ b/wechat/static/tencent-smiley.json @@ -1 +1 @@ -{"[\u5496\u5561]": 60, "[\u7c43\u7403]": 58, "[Chuckle]": 20, "/\u62f3\u5934": 85, "[\u793c\u7269]": 77, "/\u64e6\u6c57": 40, "[Bomb]": 70, "[Laugh]": 28, "/\u767d\u773c": 22, "[Surrender]": 99, "/\u592a\u9633": 76, "/::-S": 31, "[Meditate]": 101, "/:#-0": 100, "/:>-|": 48, "[\u5de6\u592a\u6975]": 103, "[\u596e\u9b25]": 30, "[Cake]": 68, "/::-O": 47, "[Twirl]": 95, "/::-|": 10, "/\u4fbf\u4fbf": 74, "[\u60ca\u8bb6]": 14, "[\u5de6\u54fc\u54fc]": 45, "/:kn": 71, "[\u5927\u7b11]": 28, "/\u5f97\u610f": 4, "/\u793a\u7231": 65, "/\u70b8\u5f39": 70, "/\u5472\u7259": 13, "[\u9a5a\u8a1d]": 14, "/:gift": 77, "[\u7591\u554f]": 32, "[\u6572\u6253]": 38, "/\u5077\u7b11": 20, "/\u59d4\u5c48": 49, "[\u9634\u9669]": 51, "[\u53f3\u54fc\u54fc]": 46, "/\u4e52\u4e53": 59, "[\u7591\u95ee]": 32, "[Grin]": 13, "[ThumbsUp]": 79, "/:pd": 55, "/\u6d41\u6c57": 27, "[\u8abf\u76ae]": 12, "[\u62f3\u982d]": 85, "/\u8db3\u7403": 72, "/:8-)": 4, "[Ladybug]": 73, "[\u4e52\u4e53]": 59, "[\u54c8\u6b20]": 47, "/:rose": 63, "[\u98de\u543b]": 91, "[Fist]": 85, "/:<&": 103, "/\u53f3\u54fc\u54fc": 46, "[Cry]": 9, "[\u58de\u7b11]": 44, "/:turn": 97, "/\u7231\u5fc3": 66, "/:strong": 79, "/:bad": 86, "/:ladybug": 73, "[Drool]": 2, "/\u53d1\u6012": 11, "[\u4fbf\u4fbf]": 74, "[Moon]": 75, "/:<@": 45, "/\u8857\u821e": 101, "[\u98ef]": 61, "[PingPong]": 59, "[\u5634\u5507]": 65, "[Basketball]": 58, "/\u5bb3\u7f9e": 6, "[\u9589\u5634]": 7, "[\u53d1\u6012]": 11, "[Smooch]": 102, "[Grimace]": 1, "/:fade": 64, "[\u78d5\u982d]": 96, "[\u5f31]": 80, "[Bah\uff01L]": 45, "[\u7f9e\u8fb1]": 43, "[\u6473\u9f3b]": 41, "[Watermelon]": 56, "/\u7231\u4f60": 87, "[TaiChi L]": 103, "[\u5618]": 33, "[Smug]": 23, "[\u5927\u54ed]": 9, "/:weak": 80, "[Scold]": 31, "[\u52dd\u5229]": 82, "[Scowl]": 3, "[\u98db\u543b]": 91, "[\u611b\u60c5]": 90, "/\u8df3\u8df3": 92, "/\u6fc0\u52a8": 100, "/\u6d41\u6cea": 5, "/\u5927\u54ed": 9, "[Shhh]": 33, "[Trick]": 44, "/\u5413": 53, "/\u5410": 19, "[Blowkiss]": 91, "[\u767c\u6012]": 11, "[\u996d]": 61, "[Ruthless]": 16, "[Sun]": 76, "/:showlove": 65, "[Shy]": 6, "/\u5c34\u5c2c": 10, "[Kotow]": 96, "/::,@": 29, "/:love": 90, "[Sleep]": 8, "[Determined]": 30, "/:B-)": 44, "/\u9ab7\u9ac5": 37, "/:bome": 70, "[\u53ef\u601c]": 54, "[\u83dc\u5200]": 55, "/:share": 81, "/\u51cb\u8c22": 64, "[\u5492\u9a82]": 31, "/:8*": 54, "/:shake": 93, "/\u9634\u9669": 51, "/\u86cb\u7cd5": 68, "/\u8c03\u76ae": 12, "[Poop]": 74, "/\u897f\u74dc": 56, "/:no": 88, "[Silent]": 7, "[Waddle]": 92, "/:dig": 41, "[\u5f3a]": 79, "/:!!!": 37, "/\u83dc\u5200": 55, "[\u78d5\u5934]": 96, "[Dagger]": 71, "[Fight]": 83, "[\u9119\u89c6]": 48, "[\u9f13\u638c]": 42, "[\u53d1\u5446]": 3, "[\u56de\u982d]": 97, "[Peace]": 82, "[Heart]": 66, "[\u70b8\u5f39]": 70, "[Puke]": 19, "[\u7d2f]": 25, "/:xx": 38, "[\u6d41\u6c57]": 27, "/\u7761": 8, "[Coffee]": 60, "/:,@!": 36, "[\u6708\u4eae]": 75, "/\u9119\u89c6": 48, "[\u5564\u9152]": 57, "/:skip": 98, "/:,@P": 20, "/\u8df3\u7ef3": 98, "[\u732e\u543b]": 102, "/\u56de\u5934": 97, "[\u5c34\u5c2c]": 10, "/:,@@": 34, "/\u96be\u8fc7": 15, "/:break": 67, "[\u8f6c\u5708]": 95, "/:,@x": 33, "/:,@f": 30, "/\u5f3a": 79, "/:,@o": 23, "/\u5f31": 80, "[\u70b8\u5f48]": 70, "[Cleaver]": 55, "[\u5472\u7259]": 13, "[Soccer]": 72, "[\u62e5\u62b1]": 78, "[\u6109\u5feb]": 21, "[\u7bee\u7403]": 58, "/\u74e2\u866b": 73, "/:kotow": 96, "/:": 56, "[\u9965\u997f]": 24, "/\u56f0": 25, "/:jj": 84, "[\u7532\u87f2]": 73, "[Whimper]": 54, "[Pig]": 62, "[Hooray]": 100, "[\u8c6c\u982d]": 62, "[\u95ed\u5634]": 7, "/\u6293\u72c2": 18, "/\u5492\u9a82": 31, "[\u767d\u773c]": 22, "[\u574f\u7b11]": 44, "[Pooh-pooh]": 48, "[\u6487\u5634]": 1, "/\u61a8\u7b11": 28, "[Hammer]": 38, "[Speechless]": 40, "[\u9ab7\u9acf\u982d]": 37, "[\u8f49\u5708]": 95, "/\u6655": 34, "[\u9951\u9913]": 24, "[RockOn]": 87, "[\u8df3\u8df3]": 92, "[Rose]": 63, "/:": 91, "[Dizzy]": 34, "/\u51b7\u6c57": 17, "[Shocked]": 32, "/\u53d1\u6296": 93, "/:moon": 75, "[\u74e2\u866b]": 73, "[Smile]": 0, "/\u5618": 33, "[Gift]": 77, "/:X-)": 51, "[Wave]": 39, "[Toasted]": 36, "[\u6fc0\u52d5]": 100, "[\u67af\u840e]": 64, "[\u594b\u6597]": 30, "[Hug]": 78, "[\u732a\u5934]": 62, "[Awkward]": 10, "/:jump": 92, "[ThumbsDown]": 80, "/:kiss": 102, "[Commando]": 29, "[\u5687]": 53, "[\u5077\u7b11]": 20, "[Beckon]": 84, "/:P-(": 49, "[\u518d\u898b]": 39, "/\u5927\u5175": 29, "[\u6655]": 34, "/:circle": 95, "[\u5de6\u592a\u6781]": 103, "[\u5410]": 19, "[Lightning]": 69, "/:pig": 62, "/\u6487\u5634": 1, "[\u5bb3\u7f9e]": 6, "/:basketb": 58, "/\u7cd7\u5927\u4e86": 43, "/\u78d5\u5934": 96, "[\u6fc0\u52a8]": 100, "[Hungry]": 24, "[Tormented]": 35, "/:@x": 53, "/:hug": 78, "[Skull]": 37, "[\u64c1\u62b1]": 78, "/:handclap": 42, "/\u996d": 61, "/:coffee": 60, "[\u6004\u706b]": 94, "/:@@": 85, "[\u51cb\u8c22]": 64, "[\u80dc\u5229]": 82, "[\u5feb\u54ed\u4e86]": 50, "/\u9177": 16, "/\u62a0\u9f3b": 41, "/\u73ab\u7470": 63, "/:@)": 83, "[Shake]": 81, "[Scream]": 18, "[\u7761]": 8, "[Sly]": 51, "[\u8c03\u76ae]": 12, "/\u53ef\u7231": 21, "/:@>": 46, "[\u64e6\u6c57]": 40, "[\u62b1\u62f3]": 83, "[Frown]": 15, "[NosePick]": 41, "[\u5dee\u52c1]": 86, "/\u6325\u624b": 99, "/:cake": 68, "/:": 94, "[Nuh-uh]": 88, "/\u518d\u89c1": 39, "/\u95ea\u7535": 69, "[\u4eb2\u4eb2]": 52, "[\u9a5a\u6050]": 26, "/\u53d1\u5446": 3, "[\u7cd7\u5927\u4e86]": 43, "[\u79ae\u7269]": 77, "[NO]": 88, "/\u6708\u4eae": 75, "/\u5fc3\u788e": 67, "/\u8f6c\u5708": 95, "/\u7bee\u7403": 58, "[Pinky]": 86, "[\u62f3\u5934]": 85, "[\u53f3\u592a\u6781]": 104, "/\u732a\u5934": 62, "[\u89aa\u89aa]": 52, "/OK": 89, "[Sob]": 5, "/\u60ca\u8bb6": 14, "/:heart": 66, "[\u767c\u6296]": 93, "/\u54c8\u6b20": 47, "[\u61a8\u7b11]": 28, "/\u5de6\u592a\u6781": 103, "[\u760b\u4e86]": 35, "[\u63e1\u624b]": 81, "[\u5f97\u610f]": 4, "[\u6688]": 34, "/\u5dee\u52b2": 86, "[\u7231\u4f60]": 87, "/\u5feb\u54ed\u4e86": 50, "/\u6572\u6253": 38, "/\u5496\u5561": 60, "[\u7231\u60c5]": 90, "[\u50b2\u6162]": 23, "[Shame]": 43, "[\u60a0\u95f2]": 29, "[\u592a\u967d]": 76, "/\u8870": 36, "/\u98de\u543b": 91, "/\u62e5\u62b1": 78, "/:v": 82, "/:eat": 61, "/\u6298\u78e8": 35, "[Blush]": 17, "[\u60ca\u6050]": 26, "[Rice]": 61, "/:footb": 72, "/\u6004\u706b": 94, "/:li": 69, "/\u7591\u95ee": 32, "[\u9ab7\u9ac5]": 37, "[Wrath]": 53, "[\u5c37\u5c2c]": 10, "[TaiChi R]": 104, "[Bah\uff01R]": 46, "[Panic]": 26, "[\u9670\u96aa]": 51, "[Sweat]": 27, "[\u56de\u5934]": 97, "[Shrunken]": 49, "[\u95ea\u7535]": 69, "[JumpRope]": 98, "[\u5413]": 53, "[\u6295\u964d]": 99, "[Drowsy]": 25, "[CoolGuy]": 4, "/:|-)": 25, "[Lips]": 65, "[Tongue]": 12, "[InLove]": 90, "[\u7231\u5fc3]": 66, "/\u7231\u60c5": 90, "[Yawn]": 47, "[\u51b7\u6c57]": 17, "/:shit": 74, "/:sun": 76, "[\u6293\u72c2]": 18, "/\u95ed\u5634": 7, "[\u897f\u74dc]": 56, "[\u5fae\u7b11]": 0, "[TearingUp]": 50, "[\u611b\u4f60]": 87, "/:wipe": 40, "[\u518d\u89c1]": 39, "[\u6d41\u6dda]": 5, "[\u4e82\u821e]": 101, "[\u5200]": 71, "[\u5fc3\u788e]": 67, "[\u8272]": 2, "[Tremble]": 93, "[\u5674\u706b]": 94, "/::'(": 9, "/\u9965\u997f": 24, "/\u594b\u6597": 30, "/\u4eb2\u4eb2": 52, "/\u5de6\u54fc\u54fc": 45, "[BrokenHeart]": 67, "[Joyful]": 21, "[\u53d1\u6296]": 93, "/::8": 35, "/::<": 5, "[\u8df3\u7ef3]": 98, "/::>": 28, "[\u53f3\u592a\u6975]": 104, "/::)": 0, "/::(": 15, "/::+": 16, "/::*": 52, "/\u53f3\u592a\u6781": 104, "/::!": 26, "/::$": 6, "/::X": 7, "[\u52fe\u5f15]": 84, "/::Z": 8, "[Aaagh!]": 94, "/::Q": 18, "/::P": 12, "/::T": 19, "/::L": 27, "/::O": 14, "/::'|": 50, "/::@": 11, "/::B": 2, "/::D": 13, "[\u592a\u9633]": 76, "/::|": 3, "/::~": 1, "[\u5f37]": 79, "[Surprise]": 14, "[Wilt]": 64, "[\u8db3\u7403]": 72, "/\u53ef\u601c": 54, "/\u5fae\u7b11": 0, "/::d": 22, "/::g": 24, "/:&-(": 43, "/NO": 88, "[\u96be\u8fc7]": 15, "[\u59d4\u5c48]": 49, "[\u73ab\u7470]": 63, "/\u574f\u7b11": 44, "/:?": 32, "[\u62a0\u9f3b]": 41, "/:bye": 39, "/\u60ca\u6050": 26, "[\u5492\u7f75]": 31, "[\u9119\u8996]": 48, "/:--b": 17, "[\u9583\u96fb]": 69, "/\u52fe\u5f15": 84, "/\u732e\u543b": 102, "[\u6d41\u6cea]": 5, "/\u80dc\u5229": 82, "/\u50b2\u6162": 23, "[\u60a0\u9591]": 29, "/\u5564\u9152": 57, "/:hiphot": 101, "/:&>": 104, "/:,@-D": 21, "/:lvu": 87, "[Kiss]": 52, "/\u793c\u7269": 77, "[\u56f0]": 25, "/:oY": 99, "/\u62b1\u62f3": 83, "/\u9f13\u638c": 42, "[\u767c\u5446]": 3, "[\u4e71\u821e]": 101, "[OK]": 89, "/:beer": 57, "[\u9177]": 16, "[\u75af\u4e86]": 35, "/:ok": 89, "[\u8df3\u7e69]": 98, "/:oo": 59, "[Angry]": 11, "/\u8272": 2, "[Dramatic]": 97, "[\u86cb\u7cd5]": 68, "/\u63e1\u624b": 81, "/\u5200": 71, "[\u96e3\u904e]": 15, "[\u611b\u5fc3]": 66, "[\u737b\u543b]": 102, "[\u5653]": 33, "[Slight]": 22, "[\u53ef\u6190]": 54, "[Clap]": 42, "[\u5dee\u52b2]": 86, "[Beer]": 57, "[\u8870]": 36} \ No newline at end of file +{"/::)": "smileys/0.png", "/::~": "smileys/1.png", "/::B": "smileys/2.png", "/::|": "smileys/3.png", "/:8-)": "smileys/4.png", "/::<": "smileys/5.png", "/::$": "smileys/6.png", "/::X": "smileys/7.png", "/::Z": "smileys/8.png", "/::'(": "smileys/9.png", "/::-|": "smileys/10.png", "/::@": "smileys/11.png", "/::P": "smileys/12.png", "/::D": "smileys/13.png", "/::O": "smileys/14.png", "/::(": "smileys/15.png", "/::+": "smileys/16.png", "/:--b": "smileys/17.png", "/::Q": "smileys/18.png", "/::T": "smileys/19.png", "/:,@P": "smileys/20.png", "/:,@-D": "smileys/21.png", "/::d": "smileys/22.png", "/:,@o": "smileys/23.png", "/::g": "smileys/24.png", "/:|-)": "smileys/25.png", "/::!": "smileys/26.png", "/::L": "smileys/27.png", "/::>": "smileys/28.png", "/::,@": "smileys/29.png", "/:,@f": "smileys/30.png", "/::-S": "smileys/31.png", "/:?": "smileys/32.png", "/:,@x": "smileys/33.png", "/:,@@": "smileys/34.png", "/::8": "smileys/35.png", "/:,@!": "smileys/36.png", "/:!!!": "smileys/37.png", "/:xx": "smileys/38.png", "/:bye": "smileys/39.png", "/:wipe": "smileys/40.png", "/:dig": "smileys/41.png", "/:handclap": "smileys/42.png", "/:&-(": "smileys/43.png", "/:B-)": "smileys/44.png", "/:<@": "smileys/45.png", "/:@>": "smileys/46.png", "/::-O": "smileys/47.png", "/:>-|": "smileys/48.png", "/:P-(": "smileys/49.png", "/::'|": "smileys/50.png", "/:X-)": "smileys/51.png", "/::*": "smileys/52.png", "/:@x": "smileys/53.png", "/:8*": "smileys/54.png", "/:pd": "smileys/55.png", "/:": "smileys/56.png", "/:beer": "smileys/57.png", "/:basketb": "smileys/58.png", "/:oo": "smileys/59.png", "/:coffee": "smileys/60.png", "/:eat": "smileys/61.png", "/:pig": "smileys/62.png", "/:rose": "smileys/63.png", "/:fade": "smileys/64.png", "/:showlove": "smileys/65.png", "/:heart": "smileys/66.png", "/:break": "smileys/67.png", "/:cake": "smileys/68.png", "/:li": "smileys/69.png", "/:bome": "smileys/70.png", "/:kn": "smileys/71.png", "/:footb": "smileys/72.png", "/:ladybug": "smileys/73.png", "/:shit": "smileys/74.png", "/:moon": "smileys/75.png", "/:sun": "smileys/76.png", "/:gift": "smileys/77.png", "/:hug": "smileys/78.png", "/:strong": "smileys/79.png", "/:weak": "smileys/80.png", "/:share": "smileys/81.png", "/:v": "smileys/82.png", "/:@)": "smileys/83.png", "/:jj": "smileys/84.png", "/:@@": "smileys/85.png", "/:bad": "smileys/86.png", "/:lvu": "smileys/87.png", "/:no": "smileys/88.png", "/:ok": "smileys/89.png", "/:love": "smileys/90.png", "/:": "smileys/91.png", "/:jump": "smileys/92.png", "/:shake": "smileys/93.png", "/:": "smileys/94.png", "/:circle": "smileys/95.png", "/:kotow": "smileys/96.png", "/:turn": "smileys/97.png", "/:skip": "smileys/98.png", "/:oY": "smileys/99.png", "/:#-0": "smileys/100.png", "/:hiphot": "smileys/101.png", "/:kiss": "smileys/102.png", "/:<&": "smileys/103.png", "/:&>": "smileys/104.png", "/\u5fae\u7b11": "smileys/0.png", "/\u6487\u5634": "smileys/1.png", "/\u8272": "smileys/2.png", "/\u53d1\u5446": "smileys/3.png", "/\u5f97\u610f": "smileys/4.png", "/\u6d41\u6cea": "smileys/5.png", "/\u5bb3\u7f9e": "smileys/6.png", "/\u95ed\u5634": "smileys/7.png", "/\u7761": "smileys/8.png", "/\u5927\u54ed": "smileys/9.png", "/\u5c34\u5c2c": "smileys/10.png", "/\u53d1\u6012": "smileys/11.png", "/\u8c03\u76ae": "smileys/12.png", "/\u5472\u7259": "smileys/13.png", "/\u60ca\u8bb6": "smileys/14.png", "/\u96be\u8fc7": "smileys/15.png", "/\u9177": "smileys/16.png", "/\u51b7\u6c57": "smileys/17.png", "/\u6293\u72c2": "smileys/18.png", "/\u5410": "smileys/19.png", "/\u5077\u7b11": "smileys/20.png", "/\u53ef\u7231": "smileys/21.png", "/\u767d\u773c": "smileys/22.png", "/\u50b2\u6162": "smileys/23.png", "/\u9965\u997f": "smileys/24.png", "/\u56f0": "smileys/25.png", "/\u60ca\u6050": "smileys/26.png", "/\u6d41\u6c57": "smileys/27.png", "/\u61a8\u7b11": "smileys/28.png", "/\u5927\u5175": "smileys/29.png", "/\u594b\u6597": "smileys/30.png", "/\u5492\u9a82": "smileys/31.png", "/\u7591\u95ee": "smileys/32.png", "/\u5618": "smileys/33.png", "/\u6655": "smileys/34.png", "/\u6298\u78e8": "smileys/35.png", "/\u8870": "smileys/36.png", "/\u9ab7\u9ac5": "smileys/37.png", "/\u6572\u6253": "smileys/38.png", "/\u518d\u89c1": "smileys/39.png", "/\u64e6\u6c57": "smileys/40.png", "/\u62a0\u9f3b": "smileys/41.png", "/\u9f13\u638c": "smileys/42.png", "/\u7cd7\u5927\u4e86": "smileys/43.png", "/\u574f\u7b11": "smileys/44.png", "/\u5de6\u54fc\u54fc": "smileys/45.png", "/\u53f3\u54fc\u54fc": "smileys/46.png", "/\u54c8\u6b20": "smileys/47.png", "/\u9119\u89c6": "smileys/48.png", "/\u59d4\u5c48": "smileys/49.png", "/\u5feb\u54ed\u4e86": "smileys/50.png", "/\u9634\u9669": "smileys/51.png", "/\u4eb2\u4eb2": "smileys/52.png", "/\u5413": "smileys/53.png", "/\u53ef\u601c": "smileys/54.png", "/\u83dc\u5200": "smileys/55.png", "/\u897f\u74dc": "smileys/56.png", "/\u5564\u9152": "smileys/57.png", "/\u7bee\u7403": "smileys/58.png", "/\u4e52\u4e53": "smileys/59.png", "/\u5496\u5561": "smileys/60.png", "/\u996d": "smileys/61.png", "/\u732a\u5934": "smileys/62.png", "/\u73ab\u7470": "smileys/63.png", "/\u51cb\u8c22": "smileys/64.png", "/\u793a\u7231": "smileys/65.png", "/\u7231\u5fc3": "smileys/66.png", "/\u5fc3\u788e": "smileys/67.png", "/\u86cb\u7cd5": "smileys/68.png", "/\u95ea\u7535": "smileys/69.png", "/\u70b8\u5f39": "smileys/70.png", "/\u5200": "smileys/71.png", "/\u8db3\u7403": "smileys/72.png", "/\u74e2\u866b": "smileys/73.png", "/\u4fbf\u4fbf": "smileys/74.png", "/\u6708\u4eae": "smileys/75.png", "/\u592a\u9633": "smileys/76.png", "/\u793c\u7269": "smileys/77.png", "/\u62e5\u62b1": "smileys/78.png", "/\u5f3a": "smileys/79.png", "/\u5f31": "smileys/80.png", "/\u63e1\u624b": "smileys/81.png", "/\u80dc\u5229": "smileys/82.png", "/\u62b1\u62f3": "smileys/83.png", "/\u52fe\u5f15": "smileys/84.png", "/\u62f3\u5934": "smileys/85.png", "/\u5dee\u52b2": "smileys/86.png", "/\u7231\u4f60": "smileys/87.png", "/NO": "smileys/88.png", "/OK": "smileys/89.png", "/\u7231\u60c5": "smileys/90.png", "/\u98de\u543b": "smileys/91.png", "/\u8df3\u8df3": "smileys/92.png", "/\u53d1\u6296": "smileys/93.png", "/\u6004\u706b": "smileys/94.png", "/\u8f6c\u5708": "smileys/95.png", "/\u78d5\u5934": "smileys/96.png", "/\u56de\u5934": "smileys/97.png", "/\u8df3\u7ef3": "smileys/98.png", "/\u6325\u624b": "smileys/99.png", "/\u6fc0\u52a8": "smileys/100.png", "/\u8857\u821e": "smileys/101.png", "/\u732e\u543b": "smileys/102.png", "/\u5de6\u592a\u6781": "smileys/103.png", "/\u53f3\u592a\u6781": "smileys/104.png", "[\u5fae\u7b11]": "smileys/0.png", "[\u6487\u5634]": "smileys/1.png", "[\u8272]": "smileys/2.png", "[\u53d1\u5446]": "smileys/3.png", "[\u5f97\u610f]": "smileys/4.png", "[\u6d41\u6cea]": "smileys/5.png", "[\u5bb3\u7f9e]": "smileys/6.png", "[\u95ed\u5634]": "smileys/7.png", "[\u7761]": "smileys/8.png", "[\u5927\u54ed]": "smileys/9.png", "[\u5c34\u5c2c]": "smileys/10.png", "[\u53d1\u6012]": "smileys/11.png", "[\u8c03\u76ae]": "smileys/12.png", "[\u5472\u7259]": "smileys/13.png", "[\u60ca\u8bb6]": "smileys/14.png", "[\u96be\u8fc7]": "smileys/15.png", "[\u9177]": "smileys/16.png", "[\u51b7\u6c57]": "smileys/17.png", "[\u6293\u72c2]": "smileys/18.png", "[\u5410]": "smileys/19.png", "[\u5077\u7b11]": "smileys/20.png", "[\u6109\u5feb]": "smileys/21.png", "[\u767d\u773c]": "smileys/22.png", "[\u50b2\u6162]": "smileys/23.png", "[\u9965\u997f]": "smileys/24.png", "[\u56f0]": "smileys/25.png", "[\u60ca\u6050]": "smileys/26.png", "[\u6d41\u6c57]": "smileys/27.png", "[\u61a8\u7b11]": "smileys/28.png", "[\u60a0\u95f2]": "smileys/29.png", "[\u594b\u6597]": "smileys/30.png", "[\u5492\u9a82]": "smileys/31.png", "[\u7591\u95ee]": "smileys/32.png", "[\u5618]": "smileys/33.png", "[\u6655]": "smileys/34.png", "[\u75af\u4e86]": "smileys/35.png", "[\u8870]": "smileys/36.png", "[\u9ab7\u9ac5]": "smileys/37.png", "[\u6572\u6253]": "smileys/38.png", "[\u518d\u89c1]": "newemoji/smiley_39b.png", "[\u64e6\u6c57]": "smileys/40.png", "[\u62a0\u9f3b]": "smileys/41.png", "[\u9f13\u638c]": "smileys/42.png", "[\u7cd7\u5927\u4e86]": "smileys/43.png", "[\u574f\u7b11]": "smileys/44.png", "[\u5de6\u54fc\u54fc]": "smileys/45.png", "[\u53f3\u54fc\u54fc]": "smileys/46.png", "[\u54c8\u6b20]": "smileys/47.png", "[\u9119\u89c6]": "smileys/48.png", "[\u59d4\u5c48]": "smileys/49.png", "[\u5feb\u54ed\u4e86]": "smileys/50.png", "[\u9634\u9669]": "smileys/51.png", "[\u4eb2\u4eb2]": "smileys/52.png", "[\u5413]": "smileys/53.png", "[\u53ef\u601c]": "smileys/54.png", "[\u83dc\u5200]": "smileys/55.png", "[\u897f\u74dc]": "smileys/56.png", "[\u5564\u9152]": "smileys/57.png", "[\u7bee\u7403]": "smileys/58.png", "[\u4e52\u4e53]": "smileys/59.png", "[\u5496\u5561]": "smileys/60.png", "[\u996d]": "smileys/61.png", "[\u732a\u5934]": "smileys/62.png", "[\u73ab\u7470]": "smileys/63.png", "[\u51cb\u8c22]": "smileys/64.png", "[\u5634\u5507]": "smileys/65.png", "[\u7231\u5fc3]": "smileys/66.png", "[\u5fc3\u788e]": "smileys/67.png", "[\u86cb\u7cd5]": "smileys/68.png", "[\u95ea\u7535]": "smileys/69.png", "[\u70b8\u5f39]": "smileys/70.png", "[\u5200]": "smileys/71.png", "[\u8db3\u7403]": "smileys/72.png", "[\u74e2\u866b]": "smileys/73.png", "[\u4fbf\u4fbf]": "smileys/74.png", "[\u6708\u4eae]": "smileys/75.png", "[\u592a\u9633]": "smileys/76.png", "[\u793c\u7269]": "smileys/77.png", "[\u62e5\u62b1]": "smileys/78.png", "[\u5f3a]": "smileys/79.png", "[\u5f31]": "smileys/80.png", "[\u63e1\u624b]": "smileys/81.png", "[\u80dc\u5229]": "smileys/82.png", "[\u62b1\u62f3]": "newemoji/smiley_83b.png", "[\u52fe\u5f15]": "smileys/84.png", "[\u62f3\u5934]": "smileys/85.png", "[\u5dee\u52b2]": "smileys/86.png", "[\u7231\u4f60]": "smileys/87.png", "[NO]": "smileys/88.png", "[OK]": "smileys/89.png", "[\u7231\u60c5]": "smileys/90.png", "[\u98de\u543b]": "smileys/91.png", "[\u8df3\u8df3]": "smileys/92.png", "[\u53d1\u6296]": "smileys/93.png", "[\u6004\u706b]": "smileys/94.png", "[\u8f6c\u5708]": "smileys/95.png", "[\u78d5\u5934]": "smileys/96.png", "[\u56de\u5934]": "smileys/97.png", "[\u8df3\u7ef3]": "smileys/98.png", "[\u6295\u964d]": "smileys/99.png", "[\u6fc0\u52a8]": "smileys/100.png", "[\u4e71\u821e]": "smileys/101.png", "[\u732e\u543b]": "smileys/102.png", "[\u5de6\u592a\u6781]": "smileys/103.png", "[\u53f3\u592a\u6781]": "smileys/104.png", "[\u767c\u5446]": "smileys/3.png", "[\u6d41\u6dda]": "smileys/5.png", "[\u9589\u5634]": "smileys/7.png", "[\u5c37\u5c2c]": "smileys/10.png", "[\u767c\u6012]": "smileys/11.png", "[\u8abf\u76ae]": "smileys/12.png", "[\u9a5a\u8a1d]": "smileys/14.png", "[\u96e3\u904e]": "smileys/15.png", "[\u9951\u9913]": "smileys/24.png", "[\u7d2f]": "smileys/25.png", "[\u9a5a\u6050]": "smileys/26.png", "[\u5927\u7b11]": "smileys/28.png", "[\u60a0\u9591]": "smileys/29.png", "[\u596e\u9b25]": "smileys/30.png", "[\u5492\u7f75]": "smileys/31.png", "[\u7591\u554f]": "smileys/32.png", "[\u5653]": "smileys/33.png", "[\u6688]": "smileys/34.png", "[\u760b\u4e86]": "smileys/35.png", "[\u9ab7\u9acf\u982d]": "smileys/37.png", "[\u518d\u898b]": "newemoji/smiley_39b.png", "[\u6473\u9f3b]": "smileys/41.png", "[\u7f9e\u8fb1]": "smileys/43.png", "[\u58de\u7b11]": "smileys/44.png", "[\u9119\u8996]": "smileys/48.png", "[\u9670\u96aa]": "smileys/51.png", "[\u89aa\u89aa]": "smileys/52.png", "[\u5687]": "smileys/53.png", "[\u53ef\u6190]": "smileys/54.png", "[\u7c43\u7403]": "smileys/58.png", "[\u98ef]": "smileys/61.png", "[\u8c6c\u982d]": "smileys/62.png", "[\u67af\u840e]": "smileys/64.png", "[\u611b\u5fc3]": "smileys/66.png", "[\u9583\u96fb]": "smileys/69.png", "[\u70b8\u5f48]": "smileys/70.png", "[\u7532\u87f2]": "smileys/73.png", "[\u592a\u967d]": "smileys/76.png", "[\u79ae\u7269]": "smileys/77.png", "[\u64c1\u62b1]": "smileys/78.png", "[\u5f37]": "smileys/79.png", "[\u52dd\u5229]": "smileys/82.png", "[\u62f3\u982d]": "smileys/85.png", "[\u5dee\u52c1]": "smileys/86.png", "[\u611b\u4f60]": "smileys/88.png", "[\u611b\u60c5]": "smileys/90.png", "[\u98db\u543b]": "smileys/91.png", "[\u767c\u6296]": "smileys/93.png", "[\u5674\u706b]": "smileys/94.png", "[\u8f49\u5708]": "smileys/95.png", "[\u78d5\u982d]": "smileys/96.png", "[\u56de\u982d]": "smileys/97.png", "[\u8df3\u7e69]": "smileys/98.png", "[\u6fc0\u52d5]": "smileys/100.png", "[\u4e82\u821e]": "smileys/101.png", "[\u737b\u543b]": "smileys/102.png", "[\u5de6\u592a\u6975]": "smileys/103.png", "[\u53f3\u592a\u6975]": "smileys/104.png", "[Smile]": "smileys/0.png", "[Grimace]": "smileys/1.png", "[Drool]": "smileys/2.png", "[Scowl]": "smileys/3.png", "[CoolGuy]": "smileys/4.png", "[Sob]": "smileys/5.png", "[Shy]": "smileys/6.png", "[Silent]": "smileys/7.png", "[Sleep]": "smileys/8.png", "[Cry]": "smileys/9.png", "[Awkward]": "smileys/10.png", "[Angry]": "smileys/11.png", "[Tongue]": "smileys/12.png", "[Grin]": "smileys/13.png", "[Surprise]": "smileys/14.png", "[Frown]": "smileys/15.png", "[Ruthless]": "smileys/16.png", "[Blush]": "newemoji/smiley_17b.png", "[Scream]": "smileys/18.png", "[Puke]": "smileys/19.png", "[Chuckle]": "smileys/20.png", "[Joyful]": "smileys/21.png", "[Slight]": "smileys/22.png", "[Smug]": "smileys/23.png", "[Hungry]": "smileys/24.png", "[Drowsy]": "smileys/25.png", "[Panic]": "smileys/26.png", "[Sweat]": "smileys/27.png", "[Laugh]": "smileys/28.png", "[Commando]": "smileys/29.png", "[Determined]": "smileys/30.png", "[Scold]": "smileys/31.png", "[Shocked]": "smileys/32.png", "[Shhh]": "smileys/33.png", "[Dizzy]": "smileys/34.png", "[Tormented]": "smileys/35.png", "[Toasted]": "smileys/36.png", "[Skull]": "smileys/37.png", "[Hammer]": "smileys/38.png", "[Wave]": "smileys/39.png", "[Speechless]": "smileys/40.png", "[NosePick]": "smileys/41.png", "[Clap]": "smileys/42.png", "[Shame]": "smileys/43.png", "[Trick]": "smileys/44.png", "[Bah\uff01L]": "smileys/45.png", "[Bah\uff01R]": "smileys/46.png", "[Yawn]": "smileys/47.png", "[Pooh-pooh]": "smileys/48.png", "[Shrunken]": "smileys/49.png", "[TearingUp]": "smileys/50.png", "[Sly]": "smileys/51.png", "[Kiss]": "smileys/52.png", "[Wrath]": "smileys/53.png", "[Whimper]": "smileys/54.png", "[Cleaver]": "smileys/55.png", "[Watermelon]": "smileys/56.png", "[Beer]": "smileys/57.png", "[Basketball]": "smileys/58.png", "[PingPong]": "smileys/59.png", "[Coffee]": "smileys/60.png", "[Rice]": "smileys/61.png", "[Pig]": "smileys/62.png", "[Rose]": "smileys/63.png", "[Wilt]": "smileys/64.png", "[Lips]": "smileys/65.png", "[Heart]": "smileys/66.png", "[BrokenHeart]": "smileys/67.png", "[Cake]": "smileys/68.png", "[Lightning]": "smileys/69.png", "[Bomb]": "smileys/70.png", "[Dagger]": "smileys/71.png", "[Soccer]": "smileys/72.png", "[Ladybug]": "smileys/73.png", "[Poop]": "smileys/74.png", "[Moon]": "smileys/75.png", "[Sun]": "smileys/76.png", "[Gift]": "smileys/77.png", "[Hug]": "smileys/78.png", "[ThumbsUp]": "smileys/79.png", "[ThumbsDown]": "smileys/80.png", "[Shake]": "smileys/81.png", "[Peace]": "smileys/82.png", "[Fight]": "smileys/83.png", "[Beckon]": "smileys/84.png", "[Fist]": "smileys/85.png", "[Pinky]": "smileys/86.png", "[RockOn]": "smileys/87.png", "[Nuh-uh]": "smileys/88.png", "[InLove]": "smileys/90.png", "[Blowkiss]": "smileys/91.png", "[Waddle]": "smileys/92.png", "[Tremble]": "smileys/93.png", "[Aaagh!]": "smileys/94.png", "[Twirl]": "smileys/95.png", "[Kotow]": "smileys/96.png", "[Dramatic]": "smileys/97.png", "[JumpRope]": "smileys/98.png", "[Surrender]": "smileys/99.png", "[Hooray]": "smileys/100.png", "[Meditate]": "smileys/101.png", "[Smooch]": "smileys/102.png", "[TaiChi L]": "smileys/103.png", "[TaiChi R]": "smileys/104.png", "[Lookback]": "smileys/97.png", "[Lookdown]": "smileys/48.png", "[Doubt]": "smileys/32.png", "[\u8857\u821e]": "smileys/101.png", "[Melon]": "smileys/56.png", "[Surprised]": "smileys/14.png", "[Shutup]": "smileys/7.png", "[Weak]": "smileys/80.png", "[Wink]": "smileys/12.png", "[Puling]": "smileys/50.png", "[Cool]": "smileys/16.png", "[BadLuck]": "smileys/36.png", "[Tension]": "smileys/17.png", "[Strive]": "smileys/30.png", "[Pout]": "smileys/11.png", "[Wronged]": "smileys/49.png", "[\u53ef\u7231]": "smileys/21.png", "[Jump]": "smileys/98.png", "[HeyHey]": "smileys/101.png", "[TaiJi L]": "smileys/103.png", "[No]": "smileys/88.png", "[\u793a\u7231]": "smileys/65.png", "[\u6298\u78e8]": "smileys/35.png", "[TaiJi R]": "smileys/104.png", "[Chill]": "smileys/4.png", "[Relief]": "smileys/40.png", "[Crazy]": "smileys/35.png", "[Love]": "smileys/87.png", "[\u6325\u624b]": "smileys/99.png", "[DigNose]": "smileys/41.png", "[Lip]": "smileys/65.png", "[Uh-oh]": "smileys/53.png", "[\u5927\u5175]": "smileys/29.png", "[Admire]": "smileys/83.png", "[Strong]": "smileys/79.png", "[Give-in]": "smileys/99.png", "[Loafer]": "smileys/29.png", "[Victory]": "smileys/82.png", "[\u5978\u7b11]": "newemoji/2_02.png", "[Smirk]": "newemoji/2_02.png", "[\u563f\u54c8]": "newemoji/2_04.png", "[Hey]": "newemoji/2_04.png", "[\u543c\u563f]": "newemoji/2_04.png", "[\u6342\u8138]": "newemoji/2_05.png", "[Facepalm]": "newemoji/2_05.png", "[\u63a9\u9762]": "newemoji/2_05.png", "[\u673a\u667a]": "newemoji/2_06.png", "[Smart]": "newemoji/2_06.png", "[\u6a5f\u667a]": "newemoji/2_06.png", "[\u8336]": "newemoji/2_07.png", "[Tea]": "newemoji/2_07.png", "[\u7ea2\u5305]": "newemoji/2_09.png", "[Packet]": "newemoji/2_09.png", "[\u8721\u70db]": "newemoji/2_10.png", "[Candle]": "newemoji/2_10.png", "[\u881f\u71ed]": "newemoji/2_10.png", "[\u8036]": "newemoji/2_11.png", "[Yeah!]": "newemoji/2_11.png", "[\u6b50\u8036]": "newemoji/2_11.png", "[\u76b1\u7709]": "newemoji/2_12.png", "[Concerned]": "newemoji/2_12.png", "[\u76ba\u7709]": "newemoji/2_12.png", "[\u56e7]": "newemoji/smiley_17b.png", "[Salute]": "newemoji/smiley_83b.png", "[\u9e21]": "newemoji/2_14.png", "[Chick]": "newemoji/2_14.png", "[\u5c0f\u96de]": "newemoji/2_14.png", "[\u798f]": "newemoji/2_15.png", "[Blessing]": "newemoji/2_15.png", "[Bye]": "newemoji/smiley_39b.png", "[\u767c]": "newemoji/2_16.png", "[Rich]": "newemoji/2_16.png", "[\u5c0f\u72d7]": "newemoji/2_17.png", "[Pup]": "newemoji/2_17.png", "[\u5403\u74dc]": "newemoji/Watermelon.png", "[Onlooker]": "newemoji/Watermelon.png", "[\u5403\u897f\u74dc]": "newemoji/Watermelon.png", "[\u52a0\u6cb9]": "newemoji/Addoil.png", "[GoForIt]": "newemoji/Addoil.png", "[\u6c57]": "newemoji/Sweat.png", "[Sweats]": "newemoji/Sweat.png", "[\u5929\u554a]": "newemoji/Shocked!.png", "[OMG]": "newemoji/Shocked!.png", "[Emm]": "newemoji/Cold.png", "[\u4e00\u8a00\u96e3\u76e1]": "newemoji/Cold.png", "[\u793e\u4f1a\u793e\u4f1a]": "newemoji/Social.png", "[Respect]": "newemoji/Social.png", "[\u5931\u656c\u5931\u656c]": "newemoji/Social.png", "[\u65fa\u67f4]": "newemoji/Yellowdog.png", "[Doge]": "newemoji/Yellowdog.png", "[\u597d\u7684]": "newemoji/NoProb.png", "[NoProb]": "newemoji/NoProb.png", "[\u6253\u8138]": "newemoji/Slap.png", "[MyBad]": "newemoji/Slap.png", "[\u6253\u81c9]": "newemoji/Slap.png", "[\u54c7]": "newemoji/Wow!.png", "[Wow]": "newemoji/Wow!.png", "[\u52a0\u6cb9\u52a0\u6cb9]": "newemoji/KeepFighting.png", "[KeepFighting]": "newemoji/KeepFighting.png", "[\u52a0\u6cb9\uff01]": "newemoji/KeepFighting.png", "\ud83c\udf02": "smileys/e43c.png", "\ue43c": "smileys/e43c.png", "\ud83c\udf0a": "smileys/e43e.png", "\ue43e": "smileys/e43e.png", "\ud83c\udf19": "smileys/e04c.png", "\ue04c": "smileys/e04c.png", "\ud83c\udf1f": "smileys/e335.png", "\ue335": "smileys/e335.png", "\ud83c\udf34": "smileys/e307.png", "\ue307": "smileys/e307.png", "\ud83c\udf35": "smileys/e308.png", "\ue308": "smileys/e308.png", "\ud83c\udf39": "smileys/e032.png", "\ue032": "smileys/e032.png", "\ud83c\udf3a": "smileys/e303.png", "\ue303": "smileys/e303.png", "\ud83c\udf4f": "smileys/e345.png", "\ue345": "smileys/e345.png", "\ud83c\udf54": "smileys/e120.png", "\ue120": "smileys/e120.png", "\ud83c\udf5c": "smileys/e340.png", "\ue340": "smileys/e340.png", "\ud83c\udf5d": "smileys/e33f.png", "\ue33f": "smileys/e33f.png", "\ud83c\udf5f": "smileys/e33b.png", "\ue33b": "smileys/e33b.png", "\ud83c\udf63": "smileys/e344.png", "\ue344": "smileys/e344.png", "\ud83c\udf66": "smileys/e33a.png", "\ue33a": "smileys/e33a.png", "\ud83c\udf73": "smileys/e147.png", "\ue147": "smileys/e147.png", "\ud83c\udf77": "smileys/e044.png", "\ue044": "smileys/e044.png", "\ud83c\udf7a": "smileys/e047.png", "\ue047": "smileys/e047.png", "\ud83c\udf7b": "smileys/e30c.png", "\ue30c": "smileys/e30c.png", "\ud83c\udf81": "smileys/e112.png", "\ue112": "smileys/e112.png", "\ud83c\udf82": "smileys/e34b.png", "\ue34b": "smileys/e34b.png", "\ud83c\udf83": "smileys/e445.png", "\ue445": "smileys/e445.png", "\ud83c\udf84": "smileys/e033.png", "\ue033": "smileys/e033.png", "\ud83c\udf85": "smileys/e448.png", "\ue448": "smileys/e448.png", "\ud83c\udf88": "smileys/e310.png", "\ue310": "smileys/e310.png", "\ud83c\udf89": "smileys/e312.png", "\ue312": "smileys/e312.png", "\ud83c\udfa4": "smileys/e03c.png", "\ue03c": "smileys/e03c.png", "\ud83c\udfa5": "smileys/e03d.png", "\ue03d": "smileys/e03d.png", "\ud83c\udfb5": "smileys/e03e.png", "\ue03e": "smileys/e03e.png", "\ud83c\udfb8": "smileys/e041.png", "\ue041": "smileys/e041.png", "\ud83c\udfc0": "smileys/e42a.png", "\ue42a": "smileys/e42a.png", "\ud83c\udfc1": "smileys/e132.png", "\ue132": "smileys/e132.png", "\ud83c\udfc6": "smileys/e131.png", "\ue131": "smileys/e131.png", "\ud83c\udfc8": "smileys/e42b.png", "\ue42b": "smileys/e42b.png", "\ud83d\udc0d": "smileys/e52d.png", "\ue52d": "smileys/e52d.png", "\ud83d\udc14": "smileys/e52e.png", "\ue52e": "smileys/e52e.png", "\ud83d\udc17": "smileys/e52f.png", "\ue52f": "smileys/e52f.png", "\ud83d\udc19": "smileys/e10a.png", "\ue10a": "smileys/e10a.png", "\ud83d\udc1b": "smileys/e525.png", "\ue525": "smileys/e525.png", "\ud83d\udc20": "smileys/e522.png", "\ue522": "smileys/e522.png", "\ud83d\udc26": "smileys/e521.png", "\ue521": "smileys/e521.png", "\ud83d\udc27": "smileys/e055.png", "\ue055": "smileys/e055.png", "\ud83d\udc28": "smileys/e527.png", "\ue527": "smileys/e527.png", "\ud83d\udc29": "smileys/e052.png", "\ue052": "smileys/e052.png", "\ud83d\udc2c": "smileys/e520.png", "\ue520": "smileys/e520.png", "\ud83d\udc2d": "smileys/e053.png", "\ue053": "smileys/e053.png", "\ud83d\udc2e": "smileys/e52b.png", "\ue52b": "smileys/e52b.png", "\ud83d\udc2f": "smileys/e050.png", "\ue050": "smileys/e050.png", "\ud83d\udc30": "smileys/e52c.png", "\ue52c": "smileys/e52c.png", "\ud83d\udc31": "smileys/e04f.png", "\ue04f": "smileys/e04f.png", "\ud83d\udc33": "smileys/e054.png", "\ue054": "smileys/e054.png", "\ud83d\udc34": "smileys/e01a.png", "\ue01a": "smileys/e01a.png", "\ud83d\udc35": "smileys/e109.png", "\ue109": "smileys/e109.png", "\ud83d\udc37": "smileys/e10b.png", "\ue10b": "smileys/e10b.png", "\ud83d\udc38": "smileys/e531.png", "\ue531": "smileys/e531.png", "\ud83d\udc39": "smileys/e524.png", "\ue524": "smileys/e524.png", "\ud83d\udc3a": "smileys/e52a.png", "\ue52a": "smileys/e52a.png", "\ud83d\udc3b": "smileys/e051.png", "\ue051": "smileys/e051.png", "\ud83d\udc45": "smileys/e409.png", "\ue409": "smileys/e409.png", "\ud83d\udc46": "smileys/e22e.png", "\ue22e": "smileys/e22e.png", "\ud83d\udc47": "smileys/e22f.png", "\ue22f": "smileys/e22f.png", "\ud83d\udc48": "smileys/e230.png", "\ue230": "smileys/e230.png", "\ud83d\udc49": "smileys/e231.png", "\ue231": "smileys/e231.png", "\ud83d\udc4a": "smileys/e00d.png", "\ue00d": "smileys/e00d.png", "\ud83d\udc4d": "smileys/e00e.png", "\ue00e": "smileys/e00e.png", "\ud83d\udc4e": "smileys/e421.png", "\ue421": "smileys/e421.png", "\ud83d\udc51": "smileys/e10e.png", "\ue10e": "smileys/e10e.png", "\ud83d\udc59": "smileys/e322.png", "\ue322": "smileys/e322.png", "\ud83d\udc5c": "smileys/e323.png", "\ue323": "smileys/e323.png", "\ud83d\udc66": "smileys/e001.png", "\ue001": "smileys/e001.png", "\ud83d\udc67": "smileys/e002.png", "\ue002": "smileys/e002.png", "\ud83d\udc68": "smileys/e004.png", "\ue004": "smileys/e004.png", "\ud83d\udc69": "smileys/e005.png", "\ue005": "smileys/e005.png", "\ud83d\udc7b": "smileys/e11b.png", "\ue11b": "smileys/e11b.png", "\ud83d\udc7c": "smileys/e04e.png", "\ue04e": "smileys/e04e.png", "\ud83d\udc7d": "smileys/e10c.png", "\ue10c": "smileys/e10c.png", "\ud83d\udc7e": "smileys/e12b.png", "\ue12b": "smileys/e12b.png", "\ud83d\udc7f": "smileys/e11a.png", "\ue11a": "smileys/e11a.png", "\ud83d\udc80": "smileys/e11c.png", "\ue11c": "smileys/e11c.png", "\ud83d\udc84": "smileys/e31c.png", "\ue31c": "smileys/e31c.png", "\ud83d\udc8a": "smileys/e30f.png", "\ue30f": "smileys/e30f.png", "\ud83d\udc8b": "smileys/e003.png", "\ue003": "smileys/e003.png", "\ud83d\udc8d": "smileys/e034.png", "\ue034": "smileys/e034.png", "\ud83d\udc8e": "smileys/e035.png", "\ue035": "smileys/e035.png", "\ud83d\udc8f": "smileys/e111.png", "\ue111": "smileys/e111.png", "\ud83d\udc91": "smileys/e425.png", "\ue425": "smileys/e425.png", "\ud83d\udc94": "smileys/e023.png", "\ue023": "smileys/e023.png", "\ud83d\udc98": "smileys/e329.png", "\ue329": "smileys/e329.png", "\ud83d\udc9d": "smileys/e437.png", "\ue437": "smileys/e437.png", "\ud83d\udca1": "smileys/e10f.png", "\ue10f": "smileys/e10f.png", "\ud83d\udca3": "smileys/e311.png", "\ue311": "smileys/e311.png", "\ud83d\udca4": "smileys/e13c.png", "\ue13c": "smileys/e13c.png", "\ud83d\udca6": "smileys/e331.png", "\ue331": "smileys/e331.png", "\ud83d\udca9": "smileys/e05a.png", "\ue05a": "smileys/e05a.png", "\ud83d\udcaa": "smileys/e14c.png", "\ue14c": "smileys/e14c.png", "\ud83d\udcb2": "smileys/e12f.png", "\ue12f": "smileys/e12f.png", "\ud83d\udcbb": "smileys/e00c.png", "\ue00c": "smileys/e00c.png", "\ud83d\udcbf": "smileys/e126.png", "\ue126": "smileys/e126.png", "\ud83d\udcde": "smileys/e009.png", "\ue009": "smileys/e009.png", "\ud83d\udceb": "smileys/e101.png", "\ue101": "smileys/e101.png", "\ud83d\udcf7": "smileys/e008.png", "\ue008": "smileys/e008.png", "\ud83d\udcfa": "smileys/e12a.png", "\ue12a": "smileys/e12a.png", "\ud83d\udd11": "smileys/e03f.png", "\ue03f": "smileys/e03f.png", "\ud83d\udd12": "smileys/e144.png", "\ue144": "smileys/e144.png", "\ud83d\udd13": "smileys/e145.png", "\ue145": "smileys/e145.png", "\ud83d\udd14": "smileys/e325.png", "\ue325": "smileys/e325.png", "\ud83d\udd25": "smileys/e11d.png", "\ue11d": "smileys/e11d.png", "\ud83d\udd28": "smileys/e116.png", "\ue116": "smileys/e116.png", "\ud83d\udd2b": "smileys/e113.png", "\ue113": "smileys/e113.png", "\ud83d\ude02": "smileys/e412.png", "\ue412": "smileys/e412.png", "\ud83d\ude03": "smileys/e057.png", "\ue057": "smileys/e057.png", "\ud83d\ude04": "smileys/e415.png", "\ue415": "smileys/e415.png", "\ud83d\ude09": "smileys/e405.png", "\ue405": "smileys/e405.png", "\ud83d\ude0a": "smileys/e056.png", "\ue056": "smileys/e056.png", "\ud83d\ude0c": "smileys/e40a.png", "\ue40a": "smileys/e40a.png", "\ud83d\ude0d": "smileys/e106.png", "\ue106": "smileys/e106.png", "\ud83d\ude0f": "smileys/e402.png", "\ue402": "smileys/e402.png", "\ud83d\ude12": "smileys/e40e.png", "\ue40e": "smileys/e40e.png", "\ud83d\ude13": "smileys/e108.png", "\ue108": "smileys/e108.png", "\ud83d\ude16": "smileys/e407.png", "\ue407": "smileys/e407.png", "\ud83d\ude18": "smileys/e418.png", "\ue418": "smileys/e418.png", "\ud83d\ude1a": "smileys/e417.png", "\ue417": "smileys/e417.png", "\ud83d\ude1c": "smileys/e105.png", "\ue105": "smileys/e105.png", "\ud83d\ude1e": "smileys/e058.png", "\ue058": "smileys/e058.png", "\ud83d\ude20": "smileys/e059.png", "\ue059": "smileys/e059.png", "\ud83d\ude22": "smileys/e413.png", "\ue413": "smileys/e413.png", "\ud83d\ude25": "smileys/e401.png", "\ue401": "smileys/e401.png", "\ud83d\ude28": "smileys/e40b.png", "\ue40b": "smileys/e40b.png", "\ud83d\ude2a": "smileys/e408.png", "\ue408": "smileys/e408.png", "\ud83d\ude2b": "smileys/e406.png", "\ue406": "smileys/e406.png", "\ud83d\ude2d": "smileys/e411.png", "\ue411": "smileys/e411.png", "\ud83d\ude30": "smileys/e40f.png", "\ue40f": "smileys/e40f.png", "\ud83d\ude31": "smileys/e107.png", "\ue107": "smileys/e107.png", "\ud83d\ude32": "smileys/e410.png", "\ue410": "smileys/e410.png", "\ud83d\ude33": "smileys/e40d.png", "\ue40d": "smileys/e40d.png", "\ud83d\ude37": "smileys/e40c.png", "\ue40c": "smileys/e40c.png", "\ud83d\ude3c": "smileys/e404.png", "\ue404": "smileys/e404.png", "\ud83d\ude3e": "smileys/e416.png", "\ue416": "smileys/e416.png", "\ud83d\ude40": "smileys/e403.png", "\ue403": "smileys/e403.png", "\ud83d\ude80": "smileys/e10d.png", "\ue10d": "smileys/e10d.png", "\ud83d\ude84": "smileys/e435.png", "\ue435": "smileys/e435.png", "\ud83d\udeb2": "smileys/e136.png", "\ue136": "smileys/e136.png", "\ud83d\udeb9": "smileys/e138.png", "\ue138": "smileys/e138.png", "\ud83d\udeba": "smileys/e139.png", "\ue139": "smileys/e139.png", "\ud83d\udec0": "smileys/e13f.png", "\ue13f": "smileys/e13f.png", "\u2122": "smileys/e537.png", "\ue537": "smileys/e537.png", "\u2600": "smileys/e04a.png", "\ue04a": "smileys/e04a.png", "\u2601": "smileys/e049.png", "\ue049": "smileys/e049.png", "\u2614": "smileys/e04b.png", "\ue04b": "smileys/e04b.png", "\u2615": "smileys/e045.png", "\ue045": "smileys/e045.png", "\u261d": "smileys/e00f.png", "\ue00f": "smileys/e00f.png", "\u263a": "smileys/e414.png", "\ue414": "smileys/e414.png", "\u26a0": "smileys/e252.png", "\ue252": "smileys/e252.png", "\u26a1": "smileys/e13d.png", "\ue13d": "smileys/e13d.png", "\u26bd": "smileys/e018.png", "\ue018": "smileys/e018.png", "\u26be": "smileys/e016.png", "\ue016": "smileys/e016.png", "\u26c4": "smileys/e048.png", "\ue048": "smileys/e048.png", "\u26f3": "smileys/e014.png", "\ue014": "smileys/e014.png", "\u2708": "smileys/e01d.png", "\ue01d": "smileys/e01d.png", "\u270c": "smileys/e011.png", "\ue011": "smileys/e011.png", "\u2728": "smileys/e32e.png", "\ue32e": "smileys/e32e.png", "\u274e": "smileys/e333.png", "\ue333": "smileys/e333.png", "\u2754": "smileys/e336.png", "\ue336": "smileys/e336.png", "\u2755": "smileys/e337.png", "\ue337": "smileys/e337.png", "\u2764": "smileys/e022.png", "\ue022": "smileys/e022.png", "\u2b55": "smileys/e332.png", "\ue332": "smileys/e332.png", "\u00a9": "smileys/e24e.png", "\ue24e": "smileys/e24e.png", "\u00ae": "smileys/e24f.png", "\ue24f": "smileys/e24f.png"} \ No newline at end of file