--- /dev/null
+# This file is based on emoji (https:://github.com/kyokomi/emoji).
+# and (https://github.com/carpedm20/emoji)
+#
+# The MIT License (MIT)
+#
+# Copyright (c) 2014 kyokomi
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions::
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+import re
+
+emojiCodeDict = {
+ "::capricorn::": u"\U00002651",
+ "::end::": u"\U0001f51a",
+ "::no_mobile_phones::": u"\U0001f4f5",
+ "::couple::": u"\U0001f46b",
+ "::snowman::": u"\U000026c4",
+ "::sunrise_over_mountains::": u"\U0001f304",
+ "::suspension_railway::": u"\U0001f69f",
+ "::arrows_counterclockwise::": u"\U0001f504",
+ "::bug::": u"\U0001f41b",
+ "::confused::": u"\U0001f615",
+ "::dress::": u"\U0001f457",
+ "::honeybee::": u"\U0001f41d",
+ "::waning_crescent_moon::": u"\U0001f318",
+ "::balloon::": u"\U0001f388",
+ "::bus::": u"\U0001f68c",
+ "::package::": u"\U0001f4e6",
+ "::pencil2::": u"\U0000270f",
+ "::rage::": u"\U0001f621",
+ "::space_invader::": u"\U0001f47e",
+ "::white_medium_small_square::": u"\U000025fd",
+ "::fast_forward::": u"\U000023e9",
+ "::rice_cracker::": u"\U0001f358",
+ "::incoming_envelope::": u"\U0001f4e8",
+ "::sa::": u"\U0001f202",
+ "::womens::": u"\U0001f6ba",
+ "::arrow_right::": u"\U000027a1",
+ "::construction_worker::": u"\U0001f477",
+ "::notes::": u"\U0001f3b6",
+ "::goat::": u"\U0001f410",
+ "::grey_question::": u"\U00002754",
+ "::lantern::": u"\U0001f3ee",
+ "::rice_scene::": u"\U0001f391",
+ "::running::": u"\U0001f3c3",
+ "::ferris_wheel::": u"\U0001f3a1",
+ "::musical_score::": u"\U0001f3bc",
+ "::sparkle::": u"\U00002747",
+ "::wink::": u"\U0001f609",
+ "::art::": u"\U0001f3a8",
+ "::clock330::": u"\U0001f55e",
+ "::minidisc::": u"\U0001f4bd",
+ "::no_entry_sign::": u"\U0001f6ab",
+ "::wind_chime::": u"\U0001f390",
+ "::cyclone::": u"\U0001f300",
+ "::herb::": u"\U0001f33f",
+ "::leopard::": u"\U0001f406",
+ "::banana::": u"\U0001f34c",
+ "::handbag::": u"\U0001f45c",
+ "::honey_pot::": u"\U0001f36f",
+ "::ok::": u"\U0001f197",
+ "::hearts::": u"\U00002665",
+ "::passport_control::": u"\U0001f6c2",
+ "::moyai::": u"\U0001f5ff",
+ "::smile::": u"\U0001f604",
+ "::tiger2::": u"\U0001f405",
+ "::twisted_rightwards_arrows::": u"\U0001f500",
+ "::children_crossing::": u"\U0001f6b8",
+ "::cow::": u"\U0001f42e",
+ "::point_up::": u"\U0000261d",
+ "::house::": u"\U0001f3e0",
+ "::man_with_turban::": u"\U0001f473",
+ "::mountain_railway::": u"\U0001f69e",
+ "::vibration_mode::": u"\U0001f4f3",
+ "::blowfish::": u"\U0001f421",
+ "::it::": u"\U0001f1ee\U0001f1f9",
+ "::oden::": u"\U0001f362",
+ "::clock3::": u"\U0001f552",
+ "::lollipop::": u"\U0001f36d",
+ "::train::": u"\U0001f68b",
+ "::scissors::": u"\U00002702",
+ "::triangular_ruler::": u"\U0001f4d0",
+ "::wedding::": u"\U0001f492",
+ "::flashlight::": u"\U0001f526",
+ "::secret::": u"\U00003299",
+ "::sushi::": u"\U0001f363",
+ "::blue_car::": u"\U0001f699",
+ "::cd::": u"\U0001f4bf",
+ "::milky_way::": u"\U0001f30c",
+ "::mortar_board::": u"\U0001f393",
+ "::crown::": u"\U0001f451",
+ "::speech_balloon::": u"\U0001f4ac",
+ "::bento::": u"\U0001f371",
+ "::grey_exclamation::": u"\U00002755",
+ "::hotel::": u"\U0001f3e8",
+ "::keycap_ten::": u"\U0001f51f",
+ "::newspaper::": u"\U0001f4f0",
+ "::outbox_tray::": u"\U0001f4e4",
+ "::racehorse::": u"\U0001f40e",
+ "::laughing::": u"\U0001f606",
+ "::black_large_square::": u"\U00002b1b",
+ "::books::": u"\U0001f4da",
+ "::eight_spoked_asterisk::": u"\U00002733",
+ "::heavy_check_mark::": u"\U00002714",
+ "::m::": u"\U000024c2",
+ "::wave::": u"\U0001f44b",
+ "::bicyclist::": u"\U0001f6b4",
+ "::cocktail::": u"\U0001f378",
+ "::european_castle::": u"\U0001f3f0",
+ "::point_down::": u"\U0001f447",
+ "::tokyo_tower::": u"\U0001f5fc",
+ "::battery::": u"\U0001f50b",
+ "::dancer::": u"\U0001f483",
+ "::repeat::": u"\U0001f501",
+ "::ru::": u"\U0001f1f7\U0001f1fa",
+ "::new_moon::": u"\U0001f311",
+ "::church::": u"\U000026ea",
+ "::date::": u"\U0001f4c5",
+ "::earth_americas::": u"\U0001f30e",
+ "::footprints::": u"\U0001f463",
+ "::libra::": u"\U0000264e",
+ "::mountain_cableway::": u"\U0001f6a0",
+ "::small_red_triangle_down::": u"\U0001f53b",
+ "::top::": u"\U0001f51d",
+ "::sunglasses::": u"\U0001f60e",
+ "::abcd::": u"\U0001f521",
+ "::cl::": u"\U0001f191",
+ "::ski::": u"\U0001f3bf",
+ "::book::": u"\U0001f4d6",
+ "::hourglass_flowing_sand::": u"\U000023f3",
+ "::stuck_out_tongue_closed_eyes::": u"\U0001f61d",
+ "::cold_sweat::": u"\U0001f630",
+ "::headphones::": u"\U0001f3a7",
+ "::confetti_ball::": u"\U0001f38a",
+ "::gemini::": u"\U0000264a",
+ "::new::": u"\U0001f195",
+ "::pray::": u"\U0001f64f",
+ "::watch::": u"\U0000231a",
+ "::coffee::": u"\U00002615",
+ "::ghost::": u"\U0001f47b",
+ "::on::": u"\U0001f51b",
+ "::pouch::": u"\U0001f45d",
+ "::taxi::": u"\U0001f695",
+ "::hocho::": u"\U0001f52a",
+ "::yum::": u"\U0001f60b",
+ "::heavy_plus_sign::": u"\U00002795",
+ "::tada::": u"\U0001f389",
+ "::arrow_heading_down::": u"\U00002935",
+ "::clock530::": u"\U0001f560",
+ "::poultry_leg::": u"\U0001f357",
+ "::elephant::": u"\U0001f418",
+ "::gb::": u"\U0001f1ec\U0001f1e7",
+ "::mahjong::": u"\U0001f004",
+ "::rice::": u"\U0001f35a",
+ "::musical_note::": u"\U0001f3b5",
+ "::beginner::": u"\U0001f530",
+ "::small_red_triangle::": u"\U0001f53a",
+ "::tomato::": u"\U0001f345",
+ "::clock1130::": u"\U0001f566",
+ "::japanese_castle::": u"\U0001f3ef",
+ "::sun_with_face::": u"\U0001f31e",
+ "::four::": u"\U00000034\U000020e3",
+ "::microphone::": u"\U0001f3a4",
+ "::tennis::": u"\U0001f3be",
+ "::arrow_up_down::": u"\U00002195",
+ "::cn::": u"\U0001f1e8\U0001f1f3",
+ "::horse_racing::": u"\U0001f3c7",
+ "::no_bicycles::": u"\U0001f6b3",
+ "::snail::": u"\U0001f40c",
+ "::free::": u"\U0001f193",
+ "::beetle::": u"\U0001f41e",
+ "::black_small_square::": u"\U000025aa",
+ "::file_folder::": u"\U0001f4c1",
+ "::hushed::": u"\U0001f62f",
+ "::skull::": u"\U0001f480",
+ "::ab::": u"\U0001f18e",
+ "::rocket::": u"\U0001f680",
+ "::sweet_potato::": u"\U0001f360",
+ "::guitar::": u"\U0001f3b8",
+ "::poodle::": u"\U0001f429",
+ "::tulip::": u"\U0001f337",
+ "::large_orange_diamond::": u"\U0001f536",
+ "::-1::": u"\U0001f44e",
+ "::chart_with_upwards_trend::": u"\U0001f4c8",
+ "::de::": u"\U0001f1e9\U0001f1ea",
+ "::grapes::": u"\U0001f347",
+ "::ideograph_advantage::": u"\U0001f250",
+ "::japanese_ogre::": u"\U0001f479",
+ "::telephone::": u"\U0000260e",
+ "::clock230::": u"\U0001f55d",
+ "::hourglass::": u"\U0000231b",
+ "::leftwards_arrow_with_hook::": u"\U000021a9",
+ "::sparkler::": u"\U0001f387",
+ "::black_joker::": u"\U0001f0cf",
+ "::clock730::": u"\U0001f562",
+ "::first_quarter_moon_with_face::": u"\U0001f31b",
+ "::man::": u"\U0001f468",
+ "::clock4::": u"\U0001f553",
+ "::fishing_pole_and_fish::": u"\U0001f3a3",
+ "::tophat::": u"\U0001f3a9",
+ "::white_medium_square::": u"\U000025fb",
+ "::mega::": u"\U0001f4e3",
+ "::spaghetti::": u"\U0001f35d",
+ "::dart::": u"\U0001f3af",
+ "::girl::": u"\U0001f467",
+ "::womans_hat::": u"\U0001f452",
+ "::bullettrain_front::": u"\U0001f685",
+ "::department_store::": u"\U0001f3ec",
+ "::heartbeat::": u"\U0001f493",
+ "::palm_tree::": u"\U0001f334",
+ "::swimmer::": u"\U0001f3ca",
+ "::yellow_heart::": u"\U0001f49b",
+ "::arrow_upper_right::": u"\U00002197",
+ "::clock2::": u"\U0001f551",
+ "::high_heel::": u"\U0001f460",
+ "::arrow_double_up::": u"\U000023eb",
+ "::cry::": u"\U0001f622",
+ "::dvd::": u"\U0001f4c0",
+ "::e-mail::": u"\U0001f4e7",
+ "::baby_bottle::": u"\U0001f37c",
+ "::cool::": u"\U0001f192",
+ "::floppy_disk::": u"\U0001f4be",
+ "::iphone::": u"\U0001f4f1",
+ "::minibus::": u"\U0001f690",
+ "::rooster::": u"\U0001f413",
+ "::three::": u"\U00000033\U000020e3",
+ "::white_small_square::": u"\U000025ab",
+ "::cancer::": u"\U0000264b",
+ "::question::": u"\U00002753",
+ "::sake::": u"\U0001f376",
+ "::birthday::": u"\U0001f382",
+ "::dog2::": u"\U0001f415",
+ "::loudspeaker::": u"\U0001f4e2",
+ "::arrow_up_small::": u"\U0001f53c",
+ "::camel::": u"\U0001f42b",
+ "::koala::": u"\U0001f428",
+ "::mag_right::": u"\U0001f50e",
+ "::soccer::": u"\U000026bd",
+ "::bike::": u"\U0001f6b2",
+ "::ear_of_rice::": u"\U0001f33e",
+ "::shit::": u"\U0001f4a9",
+ "::u7981::": u"\U0001f232",
+ "::bath::": u"\U0001f6c0",
+ "::baby::": u"\U0001f476",
+ "::lock_with_ink_pen::": u"\U0001f50f",
+ "::necktie::": u"\U0001f454",
+ "::bikini::": u"\U0001f459",
+ "::blush::": u"\U0001f60a",
+ "::heartpulse::": u"\U0001f497",
+ "::pig_nose::": u"\U0001f43d",
+ "::straight_ruler::": u"\U0001f4cf",
+ "::u6e80::": u"\U0001f235",
+ "::gift::": u"\U0001f381",
+ "::traffic_light::": u"\U0001f6a5",
+ "::hibiscus::": u"\U0001f33a",
+ "::couple_with_heart::": u"\U0001f491",
+ "::pushpin::": u"\U0001f4cc",
+ "::u6709::": u"\U0001f236",
+ "::walking::": u"\U0001f6b6",
+ "::grinning::": u"\U0001f600",
+ "::hash::": u"\U00000023\U000020e3",
+ "::radio_button::": u"\U0001f518",
+ "::raised_hand::": u"\U0000270b",
+ "::shaved_ice::": u"\U0001f367",
+ "::barber::": u"\U0001f488",
+ "::cat::": u"\U0001f431",
+ "::heavy_exclamation_mark::": u"\U00002757",
+ "::ice_cream::": u"\U0001f368",
+ "::mask::": u"\U0001f637",
+ "::pig2::": u"\U0001f416",
+ "::triangular_flag_on_post::": u"\U0001f6a9",
+ "::arrow_upper_left::": u"\U00002196",
+ "::bee::": u"\U0001f41d",
+ "::beer::": u"\U0001f37a",
+ "::black_nib::": u"\U00002712",
+ "::exclamation::": u"\U00002757",
+ "::dog::": u"\U0001f436",
+ "::fire::": u"\U0001f525",
+ "::ant::": u"\U0001f41c",
+ "::broken_heart::": u"\U0001f494",
+ "::chart::": u"\U0001f4b9",
+ "::clock1::": u"\U0001f550",
+ "::bomb::": u"\U0001f4a3",
+ "::virgo::": u"\U0000264d",
+ "::a::": u"\U0001f170",
+ "::fork_and_knife::": u"\U0001f374",
+ "::copyright::": u"\U000000a9",
+ "::curly_loop::": u"\U000027b0",
+ "::full_moon::": u"\U0001f315",
+ "::shoe::": u"\U0001f45e",
+ "::european_post_office::": u"\U0001f3e4",
+ "::ng::": u"\U0001f196",
+ "::office::": u"\U0001f3e2",
+ "::raising_hand::": u"\U0001f64b",
+ "::revolving_hearts::": u"\U0001f49e",
+ "::aquarius::": u"\U00002652",
+ "::electric_plug::": u"\U0001f50c",
+ "::meat_on_bone::": u"\U0001f356",
+ "::mens::": u"\U0001f6b9",
+ "::briefcase::": u"\U0001f4bc",
+ "::ship::": u"\U0001f6a2",
+ "::anchor::": u"\U00002693",
+ "::ballot_box_with_check::": u"\U00002611",
+ "::bear::": u"\U0001f43b",
+ "::beers::": u"\U0001f37b",
+ "::dromedary_camel::": u"\U0001f42a",
+ "::nut_and_bolt::": u"\U0001f529",
+ "::construction::": u"\U0001f6a7",
+ "::golf::": u"\U000026f3",
+ "::toilet::": u"\U0001f6bd",
+ "::blue_book::": u"\U0001f4d8",
+ "::boom::": u"\U0001f4a5",
+ "::deciduous_tree::": u"\U0001f333",
+ "::kissing_closed_eyes::": u"\U0001f61a",
+ "::smiley_cat::": u"\U0001f63a",
+ "::fuelpump::": u"\U000026fd",
+ "::kiss::": u"\U0001f48b",
+ "::clock10::": u"\U0001f559",
+ "::sheep::": u"\U0001f411",
+ "::white_flower::": u"\U0001f4ae",
+ "::boar::": u"\U0001f417",
+ "::currency_exchange::": u"\U0001f4b1",
+ "::facepunch::": u"\U0001f44a",
+ "::flower_playing_cards::": u"\U0001f3b4",
+ "::person_frowning::": u"\U0001f64d",
+ "::poop::": u"\U0001f4a9",
+ "::satisfied::": u"\U0001f606",
+ "::8ball::": u"\U0001f3b1",
+ "::disappointed_relieved::": u"\U0001f625",
+ "::panda_face::": u"\U0001f43c",
+ "::ticket::": u"\U0001f3ab",
+ "::us::": u"\U0001f1fa\U0001f1f8",
+ "::waxing_crescent_moon::": u"\U0001f312",
+ "::dragon::": u"\U0001f409",
+ "::gun::": u"\U0001f52b",
+ "::mount_fuji::": u"\U0001f5fb",
+ "::new_moon_with_face::": u"\U0001f31a",
+ "::star2::": u"\U0001f31f",
+ "::grimacing::": u"\U0001f62c",
+ "::confounded::": u"\U0001f616",
+ "::congratulations::": u"\U00003297",
+ "::custard::": u"\U0001f36e",
+ "::frowning::": u"\U0001f626",
+ "::maple_leaf::": u"\U0001f341",
+ "::police_car::": u"\U0001f693",
+ "::cloud::": u"\U00002601",
+ "::jeans::": u"\U0001f456",
+ "::fish::": u"\U0001f41f",
+ "::wavy_dash::": u"\U00003030",
+ "::clock5::": u"\U0001f554",
+ "::santa::": u"\U0001f385",
+ "::japan::": u"\U0001f5fe",
+ "::oncoming_taxi::": u"\U0001f696",
+ "::whale::": u"\U0001f433",
+ "::arrow_forward::": u"\U000025b6",
+ "::kissing_heart::": u"\U0001f618",
+ "::bullettrain_side::": u"\U0001f684",
+ "::fearful::": u"\U0001f628",
+ "::moneybag::": u"\U0001f4b0",
+ "::runner::": u"\U0001f3c3",
+ "::mailbox::": u"\U0001f4eb",
+ "::sandal::": u"\U0001f461",
+ "::zzz::": u"\U0001f4a4",
+ "::apple::": u"\U0001f34e",
+ "::arrow_heading_up::": u"\U00002934",
+ "::family::": u"\U0001f46a",
+ "::heavy_minus_sign::": u"\U00002796",
+ "::saxophone::": u"\U0001f3b7",
+ "::u5272::": u"\U0001f239",
+ "::black_square_button::": u"\U0001f532",
+ "::bouquet::": u"\U0001f490",
+ "::love_letter::": u"\U0001f48c",
+ "::metro::": u"\U0001f687",
+ "::small_blue_diamond::": u"\U0001f539",
+ "::thought_balloon::": u"\U0001f4ad",
+ "::arrow_up::": u"\U00002b06",
+ "::no_pedestrians::": u"\U0001f6b7",
+ "::smirk::": u"\U0001f60f",
+ "::blue_heart::": u"\U0001f499",
+ "::large_blue_diamond::": u"\U0001f537",
+ "::vs::": u"\U0001f19a",
+ "::v::": u"\U0000270c",
+ "::wheelchair::": u"\U0000267f",
+ "::couplekiss::": u"\U0001f48f",
+ "::tent::": u"\U000026fa",
+ "::purple_heart::": u"\U0001f49c",
+ "::relaxed::": u"\U0000263a",
+ "::accept::": u"\U0001f251",
+ "::green_heart::": u"\U0001f49a",
+ "::pouting_cat::": u"\U0001f63e",
+ "::tram::": u"\U0001f68a",
+ "::bangbang::": u"\U0000203c",
+ "::collision::": u"\U0001f4a5",
+ "::convenience_store::": u"\U0001f3ea",
+ "::person_with_blond_hair::": u"\U0001f471",
+ "::uk::": u"\U0001f1ec\U0001f1e7",
+ "::peach::": u"\U0001f351",
+ "::tired_face::": u"\U0001f62b",
+ "::bread::": u"\U0001f35e",
+ "::mailbox_closed::": u"\U0001f4ea",
+ "::open_mouth::": u"\U0001f62e",
+ "::pig::": u"\U0001f437",
+ "::put_litter_in_its_place::": u"\U0001f6ae",
+ "::u7a7a::": u"\U0001f233",
+ "::bulb::": u"\U0001f4a1",
+ "::clock9::": u"\U0001f558",
+ "::envelope_with_arrow::": u"\U0001f4e9",
+ "::pisces::": u"\U00002653",
+ "::baggage_claim::": u"\U0001f6c4",
+ "::egg::": u"\U0001f373",
+ "::sweat_smile::": u"\U0001f605",
+ "::boat::": u"\U000026f5",
+ "::fr::": u"\U0001f1eb\U0001f1f7",
+ "::heavy_division_sign::": u"\U00002797",
+ "::muscle::": u"\U0001f4aa",
+ "::paw_prints::": u"\U0001f43e",
+ "::arrow_left::": u"\U00002b05",
+ "::black_circle::": u"\U000026ab",
+ "::kissing_smiling_eyes::": u"\U0001f619",
+ "::star::": u"\U00002b50",
+ "::steam_locomotive::": u"\U0001f682",
+ "::1234::": u"\U0001f522",
+ "::clock130::": u"\U0001f55c",
+ "::kr::": u"\U0001f1f0\U0001f1f7",
+ "::monorail::": u"\U0001f69d",
+ "::school::": u"\U0001f3eb",
+ "::seven::": u"\U00000037\U000020e3",
+ "::baby_chick::": u"\U0001f424",
+ "::bridge_at_night::": u"\U0001f309",
+ "::hotsprings::": u"\U00002668",
+ "::rose::": u"\U0001f339",
+ "::love_hotel::": u"\U0001f3e9",
+ "::princess::": u"\U0001f478",
+ "::ramen::": u"\U0001f35c",
+ "::scroll::": u"\U0001f4dc",
+ "::tropical_fish::": u"\U0001f420",
+ "::heart_eyes_cat::": u"\U0001f63b",
+ "::information_desk_person::": u"\U0001f481",
+ "::mouse::": u"\U0001f42d",
+ "::no_smoking::": u"\U0001f6ad",
+ "::post_office::": u"\U0001f3e3",
+ "::stars::": u"\U0001f320",
+ "::arrow_double_down::": u"\U000023ec",
+ "::unlock::": u"\U0001f513",
+ "::arrow_backward::": u"\U000025c0",
+ "::hand::": u"\U0000270b",
+ "::hospital::": u"\U0001f3e5",
+ "::ocean::": u"\U0001f30a",
+ "::mountain_bicyclist::": u"\U0001f6b5",
+ "::octopus::": u"\U0001f419",
+ "::sos::": u"\U0001f198",
+ "::dizzy_face::": u"\U0001f635",
+ "::tongue::": u"\U0001f445",
+ "::train2::": u"\U0001f686",
+ "::checkered_flag::": u"\U0001f3c1",
+ "::orange_book::": u"\U0001f4d9",
+ "::sound::": u"\U0001f509",
+ "::aerial_tramway::": u"\U0001f6a1",
+ "::bell::": u"\U0001f514",
+ "::dragon_face::": u"\U0001f432",
+ "::flipper::": u"\U0001f42c",
+ "::ok_woman::": u"\U0001f646",
+ "::performing_arts::": u"\U0001f3ad",
+ "::postal_horn::": u"\U0001f4ef",
+ "::clock1030::": u"\U0001f565",
+ "::email::": u"\U00002709",
+ "::green_book::": u"\U0001f4d7",
+ "::point_up_2::": u"\U0001f446",
+ "::high_brightness::": u"\U0001f506",
+ "::running_shirt_with_sash::": u"\U0001f3bd",
+ "::bookmark::": u"\U0001f516",
+ "::sob::": u"\U0001f62d",
+ "::arrow_lower_right::": u"\U00002198",
+ "::point_left::": u"\U0001f448",
+ "::purse::": u"\U0001f45b",
+ "::sparkles::": u"\U00002728",
+ "::black_medium_small_square::": u"\U000025fe",
+ "::pound::": u"\U0001f4b7",
+ "::rabbit::": u"\U0001f430",
+ "::woman::": u"\U0001f469",
+ "::negative_squared_cross_mark::": u"\U0000274e",
+ "::open_book::": u"\U0001f4d6",
+ "::smiling_imp::": u"\U0001f608",
+ "::spades::": u"\U00002660",
+ "::baseball::": u"\U000026be",
+ "::fountain::": u"\U000026f2",
+ "::joy::": u"\U0001f602",
+ "::lipstick::": u"\U0001f484",
+ "::partly_sunny::": u"\U000026c5",
+ "::ram::": u"\U0001f40f",
+ "::red_circle::": u"\U0001f534",
+ "::cop::": u"\U0001f46e",
+ "::green_apple::": u"\U0001f34f",
+ "::registered::": u"\U000000ae",
+ "::+1::": u"\U0001f44d",
+ "::crying_cat_face::": u"\U0001f63f",
+ "::innocent::": u"\U0001f607",
+ "::mobile_phone_off::": u"\U0001f4f4",
+ "::underage::": u"\U0001f51e",
+ "::dolphin::": u"\U0001f42c",
+ "::busts_in_silhouette::": u"\U0001f465",
+ "::umbrella::": u"\U00002614",
+ "::angel::": u"\U0001f47c",
+ "::small_orange_diamond::": u"\U0001f538",
+ "::sunflower::": u"\U0001f33b",
+ "::link::": u"\U0001f517",
+ "::notebook::": u"\U0001f4d3",
+ "::oncoming_bus::": u"\U0001f68d",
+ "::bookmark_tabs::": u"\U0001f4d1",
+ "::calendar::": u"\U0001f4c6",
+ "::izakaya_lantern::": u"\U0001f3ee",
+ "::mans_shoe::": u"\U0001f45e",
+ "::name_badge::": u"\U0001f4db",
+ "::closed_lock_with_key::": u"\U0001f510",
+ "::fist::": u"\U0000270a",
+ "::id::": u"\U0001f194",
+ "::ambulance::": u"\U0001f691",
+ "::musical_keyboard::": u"\U0001f3b9",
+ "::ribbon::": u"\U0001f380",
+ "::seedling::": u"\U0001f331",
+ "::tv::": u"\U0001f4fa",
+ "::football::": u"\U0001f3c8",
+ "::nail_care::": u"\U0001f485",
+ "::seat::": u"\U0001f4ba",
+ "::alarm_clock::": u"\U000023f0",
+ "::money_with_wings::": u"\U0001f4b8",
+ "::relieved::": u"\U0001f60c",
+ "::womans_clothes::": u"\U0001f45a",
+ "::lips::": u"\U0001f444",
+ "::clubs::": u"\U00002663",
+ "::house_with_garden::": u"\U0001f3e1",
+ "::sunrise::": u"\U0001f305",
+ "::monkey::": u"\U0001f412",
+ "::six::": u"\U00000036\U000020e3",
+ "::smiley::": u"\U0001f603",
+ "::feet::": u"\U0001f43e",
+ "::waning_gibbous_moon::": u"\U0001f316",
+ "::yen::": u"\U0001f4b4",
+ "::baby_symbol::": u"\U0001f6bc",
+ "::signal_strength::": u"\U0001f4f6",
+ "::boy::": u"\U0001f466",
+ "::busstop::": u"\U0001f68f",
+ "::computer::": u"\U0001f4bb",
+ "::night_with_stars::": u"\U0001f303",
+ "::older_woman::": u"\U0001f475",
+ "::parking::": u"\U0001f17f",
+ "::trumpet::": u"\U0001f3ba",
+ "::100::": u"\U0001f4af",
+ "::sweat_drops::": u"\U0001f4a6",
+ "::wc::": u"\U0001f6be",
+ "::b::": u"\U0001f171",
+ "::cupid::": u"\U0001f498",
+ "::five::": u"\U00000035\U000020e3",
+ "::part_alternation_mark::": u"\U0000303d",
+ "::snowboarder::": u"\U0001f3c2",
+ "::warning::": u"\U000026a0",
+ "::white_large_square::": u"\U00002b1c",
+ "::zap::": u"\U000026a1",
+ "::arrow_down_small::": u"\U0001f53d",
+ "::clock430::": u"\U0001f55f",
+ "::expressionless::": u"\U0001f611",
+ "::phone::": u"\U0000260e",
+ "::roller_coaster::": u"\U0001f3a2",
+ "::lemon::": u"\U0001f34b",
+ "::one::": u"\U00000031\U000020e3",
+ "::christmas_tree::": u"\U0001f384",
+ "::hankey::": u"\U0001f4a9",
+ "::hatched_chick::": u"\U0001f425",
+ "::u7533::": u"\U0001f238",
+ "::large_blue_circle::": u"\U0001f535",
+ "::up::": u"\U0001f199",
+ "::wine_glass::": u"\U0001f377",
+ "::x::": u"\U0000274c",
+ "::nose::": u"\U0001f443",
+ "::rewind::": u"\U000023ea",
+ "::two_hearts::": u"\U0001f495",
+ "::envelope::": u"\U00002709",
+ "::oncoming_automobile::": u"\U0001f698",
+ "::ophiuchus::": u"\U000026ce",
+ "::ring::": u"\U0001f48d",
+ "::tropical_drink::": u"\U0001f379",
+ "::turtle::": u"\U0001f422",
+ "::crescent_moon::": u"\U0001f319",
+ "::koko::": u"\U0001f201",
+ "::microscope::": u"\U0001f52c",
+ "::rugby_football::": u"\U0001f3c9",
+ "::smoking::": u"\U0001f6ac",
+ "::anger::": u"\U0001f4a2",
+ "::aries::": u"\U00002648",
+ "::city_sunset::": u"\U0001f306",
+ "::clock1230::": u"\U0001f567",
+ "::mailbox_with_no_mail::": u"\U0001f4ed",
+ "::movie_camera::": u"\U0001f3a5",
+ "::pager::": u"\U0001f4df",
+ "::zero::": u"\U00000030\U000020e3",
+ "::bank::": u"\U0001f3e6",
+ "::eight_pointed_black_star::": u"\U00002734",
+ "::knife::": u"\U0001f52a",
+ "::u7121::": u"\U0001f21a",
+ "::customs::": u"\U0001f6c3",
+ "::melon::": u"\U0001f348",
+ "::rowboat::": u"\U0001f6a3",
+ "::corn::": u"\U0001f33d",
+ "::eggplant::": u"\U0001f346",
+ "::heart_decoration::": u"\U0001f49f",
+ "::rotating_light::": u"\U0001f6a8",
+ "::round_pushpin::": u"\U0001f4cd",
+ "::cat2::": u"\U0001f408",
+ "::chocolate_bar::": u"\U0001f36b",
+ "::no_bell::": u"\U0001f515",
+ "::radio::": u"\U0001f4fb",
+ "::droplet::": u"\U0001f4a7",
+ "::hamburger::": u"\U0001f354",
+ "::fire_engine::": u"\U0001f692",
+ "::heart::": u"\U00002764",
+ "::potable_water::": u"\U0001f6b0",
+ "::telephone_receiver::": u"\U0001f4de",
+ "::dash::": u"\U0001f4a8",
+ "::globe_with_meridians::": u"\U0001f310",
+ "::guardsman::": u"\U0001f482",
+ "::heavy_multiplication_x::": u"\U00002716",
+ "::chart_with_downwards_trend::": u"\U0001f4c9",
+ "::imp::": u"\U0001f47f",
+ "::earth_asia::": u"\U0001f30f",
+ "::mouse2::": u"\U0001f401",
+ "::notebook_with_decorative_cover::": u"\U0001f4d4",
+ "::telescope::": u"\U0001f52d",
+ "::trolleybus::": u"\U0001f68e",
+ "::card_index::": u"\U0001f4c7",
+ "::euro::": u"\U0001f4b6",
+ "::dollar::": u"\U0001f4b5",
+ "::fax::": u"\U0001f4e0",
+ "::mailbox_with_mail::": u"\U0001f4ec",
+ "::raised_hands::": u"\U0001f64c",
+ "::disappointed::": u"\U0001f61e",
+ "::foggy::": u"\U0001f301",
+ "::person_with_pouting_face::": u"\U0001f64e",
+ "::statue_of_liberty::": u"\U0001f5fd",
+ "::dolls::": u"\U0001f38e",
+ "::light_rail::": u"\U0001f688",
+ "::pencil::": u"\U0001f4dd",
+ "::speak_no_evil::": u"\U0001f64a",
+ "::calling::": u"\U0001f4f2",
+ "::clock830::": u"\U0001f563",
+ "::cow2::": u"\U0001f404",
+ "::hear_no_evil::": u"\U0001f649",
+ "::scream_cat::": u"\U0001f640",
+ "::smile_cat::": u"\U0001f638",
+ "::tractor::": u"\U0001f69c",
+ "::clock11::": u"\U0001f55a",
+ "::doughnut::": u"\U0001f369",
+ "::hammer::": u"\U0001f528",
+ "::loop::": u"\U000027bf",
+ "::moon::": u"\U0001f314",
+ "::soon::": u"\U0001f51c",
+ "::cinema::": u"\U0001f3a6",
+ "::factory::": u"\U0001f3ed",
+ "::flushed::": u"\U0001f633",
+ "::mute::": u"\U0001f507",
+ "::neutral_face::": u"\U0001f610",
+ "::scorpius::": u"\U0000264f",
+ "::wolf::": u"\U0001f43a",
+ "::clapper::": u"\U0001f3ac",
+ "::joy_cat::": u"\U0001f639",
+ "::pensive::": u"\U0001f614",
+ "::sleeping::": u"\U0001f634",
+ "::credit_card::": u"\U0001f4b3",
+ "::leo::": u"\U0000264c",
+ "::man_with_gua_pi_mao::": u"\U0001f472",
+ "::open_hands::": u"\U0001f450",
+ "::tea::": u"\U0001f375",
+ "::arrow_down::": u"\U00002b07",
+ "::nine::": u"\U00000039\U000020e3",
+ "::punch::": u"\U0001f44a",
+ "::slot_machine::": u"\U0001f3b0",
+ "::clap::": u"\U0001f44f",
+ "::information_source::": u"\U00002139",
+ "::tiger::": u"\U0001f42f",
+ "::city_sunrise::": u"\U0001f307",
+ "::dango::": u"\U0001f361",
+ "::thumbsdown::": u"\U0001f44e",
+ "::u6307::": u"\U0001f22f",
+ "::curry::": u"\U0001f35b",
+ "::cherries::": u"\U0001f352",
+ "::clock6::": u"\U0001f555",
+ "::clock7::": u"\U0001f556",
+ "::older_man::": u"\U0001f474",
+ "::oncoming_police_car::": u"\U0001f694",
+ "::syringe::": u"\U0001f489",
+ "::heavy_dollar_sign::": u"\U0001f4b2",
+ "::open_file_folder::": u"\U0001f4c2",
+ "::arrow_right_hook::": u"\U000021aa",
+ "::articulated_lorry::": u"\U0001f69b",
+ "::dancers::": u"\U0001f46f",
+ "::kissing_cat::": u"\U0001f63d",
+ "::rainbow::": u"\U0001f308",
+ "::u5408::": u"\U0001f234",
+ "::boot::": u"\U0001f462",
+ "::carousel_horse::": u"\U0001f3a0",
+ "::fried_shrimp::": u"\U0001f364",
+ "::lock::": u"\U0001f512",
+ "::non-potable_water::": u"\U0001f6b1",
+ "::o::": u"\U00002b55",
+ "::persevere::": u"\U0001f623",
+ "::diamond_shape_with_a_dot_inside::": u"\U0001f4a0",
+ "::fallen_leaf::": u"\U0001f342",
+ "::massage::": u"\U0001f486",
+ "::volcano::": u"\U0001f30b",
+ "::gem::": u"\U0001f48e",
+ "::shower::": u"\U0001f6bf",
+ "::speaker::": u"\U0001f508",
+ "::last_quarter_moon_with_face::": u"\U0001f31c",
+ "::mag::": u"\U0001f50d",
+ "::anguished::": u"\U0001f627",
+ "::monkey_face::": u"\U0001f435",
+ "::sunny::": u"\U00002600",
+ "::tangerine::": u"\U0001f34a",
+ "::point_right::": u"\U0001f449",
+ "::railway_car::": u"\U0001f683",
+ "::triumph::": u"\U0001f624",
+ "::two::": u"\U00000032\U000020e3",
+ "::gift_heart::": u"\U0001f49d",
+ "::ledger::": u"\U0001f4d2",
+ "::sagittarius::": u"\U00002650",
+ "::snowflake::": u"\U00002744",
+ "::abc::": u"\U0001f524",
+ "::horse::": u"\U0001f434",
+ "::ok_hand::": u"\U0001f44c",
+ "::video_camera::": u"\U0001f4f9",
+ "::sparkling_heart::": u"\U0001f496",
+ "::taurus::": u"\U00002649",
+ "::frog::": u"\U0001f438",
+ "::hamster::": u"\U0001f439",
+ "::helicopter::": u"\U0001f681",
+ "::fries::": u"\U0001f35f",
+ "::mushroom::": u"\U0001f344",
+ "::penguin::": u"\U0001f427",
+ "::truck::": u"\U0001f69a",
+ "::bar_chart::": u"\U0001f4ca",
+ "::evergreen_tree::": u"\U0001f332",
+ "::bow::": u"\U0001f647",
+ "::clock12::": u"\U0001f55b",
+ "::four_leaf_clover::": u"\U0001f340",
+ "::inbox_tray::": u"\U0001f4e5",
+ "::smirk_cat::": u"\U0001f63c",
+ "::two_men_holding_hands::": u"\U0001f46c",
+ "::water_buffalo::": u"\U0001f403",
+ "::alien::": u"\U0001f47d",
+ "::video_game::": u"\U0001f3ae",
+ "::candy::": u"\U0001f36c",
+ "::page_facing_up::": u"\U0001f4c4",
+ "::watermelon::": u"\U0001f349",
+ "::white_check_mark::": u"\U00002705",
+ "::blossom::": u"\U0001f33c",
+ "::crocodile::": u"\U0001f40a",
+ "::no_mouth::": u"\U0001f636",
+ "::o2::": u"\U0001f17e",
+ "::shirt::": u"\U0001f455",
+ "::clock8::": u"\U0001f557",
+ "::eyes::": u"\U0001f440",
+ "::rabbit2::": u"\U0001f407",
+ "::tanabata_tree::": u"\U0001f38b",
+ "::wrench::": u"\U0001f527",
+ "::es::": u"\U0001f1ea\U0001f1f8",
+ "::trophy::": u"\U0001f3c6",
+ "::two_women_holding_hands::": u"\U0001f46d",
+ "::clock630::": u"\U0001f561",
+ "::pineapple::": u"\U0001f34d",
+ "::stuck_out_tongue::": u"\U0001f61b",
+ "::angry::": u"\U0001f620",
+ "::athletic_shoe::": u"\U0001f45f",
+ "::cookie::": u"\U0001f36a",
+ "::flags::": u"\U0001f38f",
+ "::game_die::": u"\U0001f3b2",
+ "::bird::": u"\U0001f426",
+ "::jack_o_lantern::": u"\U0001f383",
+ "::ox::": u"\U0001f402",
+ "::paperclip::": u"\U0001f4ce",
+ "::sleepy::": u"\U0001f62a",
+ "::astonished::": u"\U0001f632",
+ "::back::": u"\U0001f519",
+ "::closed_book::": u"\U0001f4d5",
+ "::hatching_chick::": u"\U0001f423",
+ "::arrows_clockwise::": u"\U0001f503",
+ "::car::": u"\U0001f697",
+ "::ear::": u"\U0001f442",
+ "::haircut::": u"\U0001f487",
+ "::icecream::": u"\U0001f366",
+ "::bust_in_silhouette::": u"\U0001f464",
+ "::diamonds::": u"\U00002666",
+ "::no_good::": u"\U0001f645",
+ "::pizza::": u"\U0001f355",
+ "::chicken::": u"\U0001f414",
+ "::eyeglasses::": u"\U0001f453",
+ "::see_no_evil::": u"\U0001f648",
+ "::earth_africa::": u"\U0001f30d",
+ "::fireworks::": u"\U0001f386",
+ "::page_with_curl::": u"\U0001f4c3",
+ "::rice_ball::": u"\U0001f359",
+ "::white_square_button::": u"\U0001f533",
+ "::cake::": u"\U0001f370",
+ "::red_car::": u"\U0001f697",
+ "::tm::": u"\U00002122",
+ "::unamused::": u"\U0001f612",
+ "::fish_cake::": u"\U0001f365",
+ "::key::": u"\U0001f511",
+ "::speedboat::": u"\U0001f6a4",
+ "::closed_umbrella::": u"\U0001f302",
+ "::pear::": u"\U0001f350",
+ "::satellite::": u"\U0001f4e1",
+ "::scream::": u"\U0001f631",
+ "::first_quarter_moon::": u"\U0001f313",
+ "::jp::": u"\U0001f1ef\U0001f1f5",
+ "::repeat_one::": u"\U0001f502",
+ "::shell::": u"\U0001f41a",
+ "::interrobang::": u"\U00002049",
+ "::trident::": u"\U0001f531",
+ "::u55b6::": u"\U0001f23a",
+ "::atm::": u"\U0001f3e7",
+ "::door::": u"\U0001f6aa",
+ "::kissing::": u"\U0001f617",
+ "::six_pointed_star::": u"\U0001f52f",
+ "::thumbsup::": u"\U0001f44d",
+ "::u6708::": u"\U0001f237",
+ "::do_not_litter::": u"\U0001f6af",
+ "::whale2::": u"\U0001f40b",
+ "::school_satchel::": u"\U0001f392",
+ "::cactus::": u"\U0001f335",
+ "::clipboard::": u"\U0001f4cb",
+ "::dizzy::": u"\U0001f4ab",
+ "::waxing_gibbous_moon::": u"\U0001f314",
+ "::camera::": u"\U0001f4f7",
+ "::capital_abcd::": u"\U0001f520",
+ "::leaves::": u"\U0001f343",
+ "::left_luggage::": u"\U0001f6c5",
+ "::bamboo::": u"\U0001f38d",
+ "::bowling::": u"\U0001f3b3",
+ "::eight::": u"\U00000038\U000020e3",
+ "::kimono::": u"\U0001f458",
+ "::left_right_arrow::": u"\U00002194",
+ "::stuck_out_tongue_winking_eye::": u"\U0001f61c",
+ "::surfer::": u"\U0001f3c4",
+ "::sweat::": u"\U0001f613",
+ "::violin::": u"\U0001f3bb",
+ "::postbox::": u"\U0001f4ee",
+ "::bride_with_veil::": u"\U0001f470",
+ "::recycle::": u"\U0000267b",
+ "::station::": u"\U0001f689",
+ "::vhs::": u"\U0001f4fc",
+ "::crossed_flags::": u"\U0001f38c",
+ "::memo::": u"\U0001f4dd",
+ "::no_entry::": u"\U000026d4",
+ "::white_circle::": u"\U000026aa",
+ "::arrow_lower_left::": u"\U00002199",
+ "::chestnut::": u"\U0001f330",
+ "::crystal_ball::": u"\U0001f52e",
+ "::last_quarter_moon::": u"\U0001f317",
+ "::loud_sound::": u"\U0001f50a",
+ "::strawberry::": u"\U0001f353",
+ "::worried::": u"\U0001f61f",
+ "::circus_tent::": u"\U0001f3aa",
+ "::weary::": u"\U0001f629",
+ "::bathtub::": u"\U0001f6c1",
+ "::snake::": u"\U0001f40d",
+ "::grin::": u"\U0001f601",
+ "::symbols::": u"\U0001f523",
+ "::airplane::": u"\U00002708",
+ "::heart_eyes::": u"\U0001f60d",
+ "::sailboat::": u"\U000026f5",
+ "::stew::": u"\U0001f372",
+ "::tshirt::": u"\U0001f455",
+ "::rat::": u"\U0001f400",
+ "::black_medium_square::": u"\U000025fc",
+ "::clock930::": u"\U0001f564",
+ "::full_moon_with_face::": u"\U0001f31d",
+ "::japanese_goblin::": u"\U0001f47a",
+ "::restroom::": u"\U0001f6bb",
+ "::vertical_traffic_light::": u"\U0001f6a6",
+ "::basketball::": u"\U0001f3c0",
+ "::cherry_blossom::": u"\U0001f338",
+ "::low_brightness::": u"\U0001f505",
+ "::pill::": u"\U0001f48a",
+}
+
+def emojize(text):
+ """
+ Emoji regex
+ """
+ pattern = re.compile('(::[a-z0-9\+\-_]+::)')
+ def emorepl(match):
+ value = match.group(1)
+ if value in emojiCodeDict:
+ return emojiCodeDict[value]
+ return pattern.sub(emorepl, text)