diff --git a/.prettierignore b/.prettierignore index 80b4c0159e..07f90e4bbd 100644 --- a/.prettierignore +++ b/.prettierignore @@ -63,7 +63,7 @@ docker-compose.override.yml # Ignore emoji map file /app/javascript/mastodon/features/emoji/emoji_map.json -/app/javascript/mastodon/features/emoji/emoji_sheet.json +/app/javascript/mastodon/features/emoji/emoji_data.json # Ignore locale files /app/javascript/mastodon/locales/*.json diff --git a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx index a7d4408d1a..2bd6af4cf4 100644 --- a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx +++ b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx @@ -40,7 +40,7 @@ let EmojiPicker, Emoji; // load asynchronously const listenerOptions = supportsPassiveEvents ? { passive: true, capture: true } : true; -const backgroundImageFn = () => `${assetHost}/emoji/sheet_15.png`; +const backgroundImageFn = () => `${assetHost}/emoji/sheet_15_1.png`; const notFoundFn = () => (
diff --git a/app/javascript/mastodon/features/emoji/emoji_compressed.js b/app/javascript/mastodon/features/emoji/emoji_compressed.js index 5cd3a1317d..7cc1de7087 100644 --- a/app/javascript/mastodon/features/emoji/emoji_compressed.js +++ b/app/javascript/mastodon/features/emoji/emoji_compressed.js @@ -7,94 +7,21 @@ // This version comment should be bumped each time the emoji data is changed // to ensure that the prevaled file is regenerated by Babel -// version: 3 +// version: 4 -// This json file contains the names of the categories. -const emojiMart5LocalesData = require('@emoji-mart/data/i18n/en.json'); -const emojiMart5Data = require('@emoji-mart/data/sets/15/all.json'); +const { NimbleEmojiIndex } = require('emoji-mart'); const { uncompress: emojiMartUncompress } = require('emoji-mart/dist/utils/data'); -const _ = require('lodash'); +let data = require('./emoji_data.json'); const emojiMap = require('./emoji_map.json'); -// This json file is downloaded from https://github.com/iamcal/emoji-data/ -// and is used to correct the sheet coordinates since we're using that repo's sheet -const emojiSheetData = require('./emoji_sheet.json'); const { unicodeToFilename } = require('./unicode_to_filename'); const { unicodeToUnifiedName } = require('./unicode_to_unified_name'); -// Grabbed from `emoji_utils` to avoid circular dependency -function unifiedToNative(unified) { - let unicodes = unified.split('-'), - codePoints = unicodes.map((u) => `0x${u}`); - - return String.fromCodePoint(...codePoints); -} - -let data = { - compressed: true, - categories: emojiMart5Data.categories.map(cat => { - return { - ...cat, - name: emojiMart5LocalesData.categories[cat.id] - }; - }), - aliases: emojiMart5Data.aliases, - emojis: _(emojiMart5Data.emojis).values().map(emoji => { - let skin_variations = {}; - const unified = emoji.skins[0].unified.toUpperCase(); - const emojiFromRawData = emojiSheetData.find(e => e.unified === unified); - - if (!emojiFromRawData) { - return undefined; - } - - if (emoji.skins.length > 1) { - const [, ...nonDefaultSkins] = emoji.skins; - nonDefaultSkins.forEach(skin => { - const [matchingRawCodePoints,matchingRawEmoji] = Object.entries(emojiFromRawData.skin_variations).find((pair) => { - const [, value] = pair; - return value.unified.toLowerCase() === skin.unified; - }); - - if (matchingRawEmoji && matchingRawCodePoints) { - // At the time of writing, the json from `@emoji-mart/data` doesn't have data - // for emoji like `woman-heart-woman` with two different skin tones. - const skinToneCode = matchingRawCodePoints.split('-')[0]; - skin_variations[skinToneCode] = { - unified: matchingRawEmoji.unified.toUpperCase(), - non_qualified: null, - sheet_x: matchingRawEmoji.sheet_x, - sheet_y: matchingRawEmoji.sheet_y, - has_img_twitter: true, - native: unifiedToNative(matchingRawEmoji.unified.toUpperCase()) - }; - } - }); - } - - return { - a: emoji.name, - b: unified, - c: undefined, - f: true, - j: [emoji.id, ...emoji.keywords], - k: [emojiFromRawData.sheet_x, emojiFromRawData.sheet_y], - m: emoji.emoticons?.[0], - l: emoji.emoticons, - o: emoji.version, - id: emoji.id, - skin_variations, - native: unifiedToNative(unified.toUpperCase()) - }; - }).compact().keyBy(e => e.id).mapValues(e => _.omit(e, 'id')).value() -}; - -if (data.compressed) { - emojiMartUncompress(data); -} +emojiMartUncompress(data); const emojiMartData = data; +const emojiIndex = new NimbleEmojiIndex(emojiMartData); const excluded = ['®', '©', '™']; const skinTones = ['🏻', '🏼', '🏽', '🏾', '🏿']; @@ -103,10 +30,15 @@ const shortcodeMap = {}; const shortCodesToEmojiData = {}; const emojisWithoutShortCodes = []; -Object.keys(emojiMart5Data.emojis).forEach(key => { - let emoji = emojiMart5Data.emojis[key]; +Object.keys(emojiIndex.emojis).forEach(key => { + let emoji = emojiIndex.emojis[key]; - shortcodeMap[emoji.skins[0].native] = emoji.id; + // Emojis with skin tone modifiers are stored like this + if (Object.hasOwn(emoji, '1')) { + emoji = emoji['1']; + } + + shortcodeMap[emoji.native] = emoji.id; }); const stripModifiers = unicode => { @@ -150,9 +82,13 @@ Object.keys(emojiMap).forEach(key => { } }); -Object.keys(emojiMartData.emojis).forEach(key => { - let emoji = emojiMartData.emojis[key]; +Object.keys(emojiIndex.emojis).forEach(key => { + let emoji = emojiIndex.emojis[key]; + // Emojis with skin tone modifiers are stored like this + if (Object.hasOwn(emoji, '1')) { + emoji = emoji['1']; + } const { native } = emoji; let { short_names, search, unified } = emojiMartData.emojis[key]; diff --git a/app/javascript/mastodon/features/emoji/emoji_data.json b/app/javascript/mastodon/features/emoji/emoji_data.json new file mode 100644 index 0000000000..4d7a48692b --- /dev/null +++ b/app/javascript/mastodon/features/emoji/emoji_data.json @@ -0,0 +1 @@ +{"compressed":true,"categories":[{"id":"people","name":"Smileys & People","emojis":["grinning","smiley","smile","grin","laughing","sweat_smile","rolling_on_the_floor_laughing","joy","slightly_smiling_face","upside_down_face","melting_face","wink","blush","innocent","smiling_face_with_3_hearts","heart_eyes","star-struck","kissing_heart","kissing","relaxed","kissing_closed_eyes","kissing_smiling_eyes","smiling_face_with_tear","yum","stuck_out_tongue","stuck_out_tongue_winking_eye","zany_face","stuck_out_tongue_closed_eyes","money_mouth_face","hugging_face","face_with_hand_over_mouth","face_with_open_eyes_and_hand_over_mouth","face_with_peeking_eye","shushing_face","thinking_face","saluting_face","zipper_mouth_face","face_with_raised_eyebrow","neutral_face","expressionless","no_mouth","dotted_line_face","face_in_clouds","smirk","unamused","face_with_rolling_eyes","grimacing","face_exhaling","lying_face","shaking_face","head_shaking_horizontally","head_shaking_vertically","relieved","pensive","sleepy","drooling_face","sleeping","mask","face_with_thermometer","face_with_head_bandage","nauseated_face","face_vomiting","sneezing_face","hot_face","cold_face","woozy_face","dizzy_face","face_with_spiral_eyes","exploding_head","face_with_cowboy_hat","partying_face","disguised_face","sunglasses","nerd_face","face_with_monocle","confused","face_with_diagonal_mouth","worried","slightly_frowning_face","white_frowning_face","open_mouth","hushed","astonished","flushed","pleading_face","face_holding_back_tears","frowning","anguished","fearful","cold_sweat","disappointed_relieved","cry","sob","scream","confounded","persevere","disappointed","sweat","weary","tired_face","yawning_face","triumph","rage","angry","face_with_symbols_on_mouth","smiling_imp","imp","skull","skull_and_crossbones","hankey","clown_face","japanese_ogre","japanese_goblin","ghost","alien","space_invader","robot_face","smiley_cat","smile_cat","joy_cat","heart_eyes_cat","smirk_cat","kissing_cat","scream_cat","crying_cat_face","pouting_cat","see_no_evil","hear_no_evil","speak_no_evil","wave","raised_back_of_hand","raised_hand_with_fingers_splayed","hand","spock-hand","rightwards_hand","leftwards_hand","palm_down_hand","palm_up_hand","leftwards_pushing_hand","rightwards_pushing_hand","ok_hand","pinched_fingers","pinching_hand","v","crossed_fingers","hand_with_index_finger_and_thumb_crossed","i_love_you_hand_sign","the_horns","call_me_hand","point_left","point_right","point_up_2","middle_finger","point_down","point_up","index_pointing_at_the_viewer","+1","-1","fist","facepunch","left-facing_fist","right-facing_fist","clap","raised_hands","heart_hands","open_hands","palms_up_together","handshake","pray","writing_hand","nail_care","selfie","muscle","mechanical_arm","mechanical_leg","leg","foot","ear","ear_with_hearing_aid","nose","brain","anatomical_heart","lungs","tooth","bone","eyes","eye","tongue","lips","biting_lip","baby","child","boy","girl","adult","person_with_blond_hair","man","bearded_person","man_with_beard","woman_with_beard","red_haired_man","curly_haired_man","white_haired_man","bald_man","woman","red_haired_woman","red_haired_person","curly_haired_woman","curly_haired_person","white_haired_woman","white_haired_person","bald_woman","bald_person","blond-haired-woman","blond-haired-man","older_adult","older_man","older_woman","person_frowning","man-frowning","woman-frowning","person_with_pouting_face","man-pouting","woman-pouting","no_good","man-gesturing-no","woman-gesturing-no","ok_woman","man-gesturing-ok","woman-gesturing-ok","information_desk_person","man-tipping-hand","woman-tipping-hand","raising_hand","man-raising-hand","woman-raising-hand","deaf_person","deaf_man","deaf_woman","bow","man-bowing","woman-bowing","face_palm","man-facepalming","woman-facepalming","shrug","man-shrugging","woman-shrugging","health_worker","male-doctor","female-doctor","student","male-student","female-student","teacher","male-teacher","female-teacher","judge","male-judge","female-judge","farmer","male-farmer","female-farmer","cook","male-cook","female-cook","mechanic","male-mechanic","female-mechanic","factory_worker","male-factory-worker","female-factory-worker","office_worker","male-office-worker","female-office-worker","scientist","male-scientist","female-scientist","technologist","male-technologist","female-technologist","singer","male-singer","female-singer","artist","male-artist","female-artist","pilot","male-pilot","female-pilot","astronaut","male-astronaut","female-astronaut","firefighter","male-firefighter","female-firefighter","cop","male-police-officer","female-police-officer","sleuth_or_spy","male-detective","female-detective","guardsman","male-guard","female-guard","ninja","construction_worker","male-construction-worker","female-construction-worker","person_with_crown","prince","princess","man_with_turban","man-wearing-turban","woman-wearing-turban","man_with_gua_pi_mao","person_with_headscarf","person_in_tuxedo","man_in_tuxedo","woman_in_tuxedo","bride_with_veil","man_with_veil","woman_with_veil","pregnant_woman","pregnant_man","pregnant_person","breast-feeding","woman_feeding_baby","man_feeding_baby","person_feeding_baby","angel","santa","mrs_claus","mx_claus","superhero","male_superhero","female_superhero","supervillain","male_supervillain","female_supervillain","mage","male_mage","female_mage","fairy","male_fairy","female_fairy","vampire","male_vampire","female_vampire","merperson","merman","mermaid","elf","male_elf","female_elf","genie","male_genie","female_genie","zombie","male_zombie","female_zombie","troll","massage","man-getting-massage","woman-getting-massage","haircut","man-getting-haircut","woman-getting-haircut","walking","man-walking","woman-walking","person_walking_facing_right","woman_walking_facing_right","man_walking_facing_right","standing_person","man_standing","woman_standing","kneeling_person","man_kneeling","woman_kneeling","person_kneeling_facing_right","woman_kneeling_facing_right","man_kneeling_facing_right","person_with_probing_cane","person_with_white_cane_facing_right","man_with_probing_cane","man_with_white_cane_facing_right","woman_with_probing_cane","woman_with_white_cane_facing_right","person_in_motorized_wheelchair","person_in_motorized_wheelchair_facing_right","man_in_motorized_wheelchair","man_in_motorized_wheelchair_facing_right","woman_in_motorized_wheelchair","woman_in_motorized_wheelchair_facing_right","person_in_manual_wheelchair","person_in_manual_wheelchair_facing_right","man_in_manual_wheelchair","man_in_manual_wheelchair_facing_right","woman_in_manual_wheelchair","woman_in_manual_wheelchair_facing_right","runner","man-running","woman-running","person_running_facing_right","woman_running_facing_right","man_running_facing_right","dancer","man_dancing","man_in_business_suit_levitating","dancers","men-with-bunny-ears-partying","women-with-bunny-ears-partying","person_in_steamy_room","man_in_steamy_room","woman_in_steamy_room","person_climbing","man_climbing","woman_climbing","fencer","horse_racing","skier","snowboarder","golfer","man-golfing","woman-golfing","surfer","man-surfing","woman-surfing","rowboat","man-rowing-boat","woman-rowing-boat","swimmer","man-swimming","woman-swimming","person_with_ball","man-bouncing-ball","woman-bouncing-ball","weight_lifter","man-lifting-weights","woman-lifting-weights","bicyclist","man-biking","woman-biking","mountain_bicyclist","man-mountain-biking","woman-mountain-biking","person_doing_cartwheel","man-cartwheeling","woman-cartwheeling","wrestlers","man-wrestling","woman-wrestling","water_polo","man-playing-water-polo","woman-playing-water-polo","handball","man-playing-handball","woman-playing-handball","juggling","man-juggling","woman-juggling","person_in_lotus_position","man_in_lotus_position","woman_in_lotus_position","bath","sleeping_accommodation","people_holding_hands","two_women_holding_hands","man_and_woman_holding_hands","two_men_holding_hands","couplekiss","woman-kiss-man","man-kiss-man","woman-kiss-woman","couple_with_heart","woman-heart-man","man-heart-man","woman-heart-woman","man-woman-boy","man-woman-girl","man-woman-girl-boy","man-woman-boy-boy","man-woman-girl-girl","man-man-boy","man-man-girl","man-man-girl-boy","man-man-boy-boy","man-man-girl-girl","woman-woman-boy","woman-woman-girl","woman-woman-girl-boy","woman-woman-boy-boy","woman-woman-girl-girl","man-boy","man-boy-boy","man-girl","man-girl-boy","man-girl-girl","woman-boy","woman-boy-boy","woman-girl","woman-girl-boy","woman-girl-girl","speaking_head_in_silhouette","bust_in_silhouette","busts_in_silhouette","people_hugging","family","family_adult_adult_child","family_adult_adult_child_child","family_adult_child","family_adult_child_child","footprints","love_letter","cupid","gift_heart","sparkling_heart","heartpulse","heartbeat","revolving_hearts","two_hearts","heart_decoration","heavy_heart_exclamation_mark_ornament","broken_heart","heart_on_fire","mending_heart","heart","pink_heart","orange_heart","yellow_heart","green_heart","blue_heart","light_blue_heart","purple_heart","brown_heart","black_heart","grey_heart","white_heart","kiss","100","anger","boom","dizzy","sweat_drops","dash","hole","speech_balloon","eye-in-speech-bubble","left_speech_bubble","right_anger_bubble","thought_balloon","zzz"]},{"id":"nature","name":"Animals & Nature","emojis":["monkey_face","monkey","gorilla","orangutan","dog","dog2","guide_dog","service_dog","poodle","wolf","fox_face","raccoon","cat","cat2","black_cat","lion_face","tiger","tiger2","leopard","horse","moose","donkey","racehorse","unicorn_face","zebra_face","deer","bison","cow","ox","water_buffalo","cow2","pig","pig2","boar","pig_nose","ram","sheep","goat","dromedary_camel","camel","llama","giraffe_face","elephant","mammoth","rhinoceros","hippopotamus","mouse","mouse2","rat","hamster","rabbit","rabbit2","chipmunk","beaver","hedgehog","bat","bear","polar_bear","koala","panda_face","sloth","otter","skunk","kangaroo","badger","feet","turkey","chicken","rooster","hatching_chick","baby_chick","hatched_chick","bird","penguin","dove_of_peace","eagle","duck","swan","owl","dodo","feather","flamingo","peacock","parrot","wing","black_bird","goose","phoenix","frog","crocodile","turtle","lizard","snake","dragon_face","dragon","sauropod","t-rex","whale","whale2","dolphin","seal","fish","tropical_fish","blowfish","shark","octopus","shell","coral","jellyfish","snail","butterfly","bug","ant","bee","beetle","ladybug","cricket","cockroach","spider","spider_web","scorpion","mosquito","fly","worm","microbe","bouquet","cherry_blossom","white_flower","lotus","rosette","rose","wilted_flower","hibiscus","sunflower","blossom","tulip","hyacinth","seedling","potted_plant","evergreen_tree","deciduous_tree","palm_tree","cactus","ear_of_rice","herb","shamrock","four_leaf_clover","maple_leaf","fallen_leaf","leaves","empty_nest","nest_with_eggs","mushroom"]},{"id":"foods","name":"Food & Drink","emojis":["grapes","melon","watermelon","tangerine","lemon","lime","banana","pineapple","mango","apple","green_apple","pear","peach","cherries","strawberry","blueberries","kiwifruit","tomato","olive","coconut","avocado","eggplant","potato","carrot","corn","hot_pepper","bell_pepper","cucumber","leafy_green","broccoli","garlic","onion","peanuts","beans","chestnut","ginger_root","pea_pod","brown_mushroom","bread","croissant","baguette_bread","flatbread","pretzel","bagel","pancakes","waffle","cheese_wedge","meat_on_bone","poultry_leg","cut_of_meat","bacon","hamburger","fries","pizza","hotdog","sandwich","taco","burrito","tamale","stuffed_flatbread","falafel","egg","fried_egg","shallow_pan_of_food","stew","fondue","bowl_with_spoon","green_salad","popcorn","butter","salt","canned_food","bento","rice_cracker","rice_ball","rice","curry","ramen","spaghetti","sweet_potato","oden","sushi","fried_shrimp","fish_cake","moon_cake","dango","dumpling","fortune_cookie","takeout_box","crab","lobster","shrimp","squid","oyster","icecream","shaved_ice","ice_cream","doughnut","cookie","birthday","cake","cupcake","pie","chocolate_bar","candy","lollipop","custard","honey_pot","baby_bottle","glass_of_milk","coffee","teapot","tea","sake","champagne","wine_glass","cocktail","tropical_drink","beer","beers","clinking_glasses","tumbler_glass","pouring_liquid","cup_with_straw","bubble_tea","beverage_box","mate_drink","ice_cube","chopsticks","knife_fork_plate","fork_and_knife","spoon","hocho","jar","amphora"]},{"id":"activity","name":"Activities","emojis":["jack_o_lantern","christmas_tree","fireworks","sparkler","firecracker","sparkles","balloon","tada","confetti_ball","tanabata_tree","bamboo","dolls","flags","wind_chime","rice_scene","red_envelope","ribbon","gift","reminder_ribbon","admission_tickets","ticket","medal","trophy","sports_medal","first_place_medal","second_place_medal","third_place_medal","soccer","baseball","softball","basketball","volleyball","football","rugby_football","tennis","flying_disc","bowling","cricket_bat_and_ball","field_hockey_stick_and_ball","ice_hockey_stick_and_puck","lacrosse","table_tennis_paddle_and_ball","badminton_racquet_and_shuttlecock","boxing_glove","martial_arts_uniform","goal_net","golf","ice_skate","fishing_pole_and_fish","diving_mask","running_shirt_with_sash","ski","sled","curling_stone","dart","yo-yo","kite","gun","8ball","crystal_ball","magic_wand","video_game","joystick","slot_machine","game_die","jigsaw","teddy_bear","pinata","mirror_ball","nesting_dolls","spades","hearts","diamonds","clubs","chess_pawn","black_joker","mahjong","flower_playing_cards","performing_arts","frame_with_picture","art","thread","sewing_needle","yarn","knot"]},{"id":"places","name":"Travel & Places","emojis":["earth_africa","earth_americas","earth_asia","globe_with_meridians","world_map","japan","compass","snow_capped_mountain","mountain","volcano","mount_fuji","camping","beach_with_umbrella","desert","desert_island","national_park","stadium","classical_building","building_construction","bricks","rock","wood","hut","house_buildings","derelict_house_building","house","house_with_garden","office","post_office","european_post_office","hospital","bank","hotel","love_hotel","convenience_store","school","department_store","factory","japanese_castle","european_castle","wedding","tokyo_tower","statue_of_liberty","church","mosque","hindu_temple","synagogue","shinto_shrine","kaaba","fountain","tent","foggy","night_with_stars","cityscape","sunrise_over_mountains","sunrise","city_sunset","city_sunrise","bridge_at_night","hotsprings","carousel_horse","playground_slide","ferris_wheel","roller_coaster","barber","circus_tent","steam_locomotive","railway_car","bullettrain_side","bullettrain_front","train2","metro","light_rail","station","tram","monorail","mountain_railway","train","bus","oncoming_bus","trolleybus","minibus","ambulance","fire_engine","police_car","oncoming_police_car","taxi","oncoming_taxi","car","oncoming_automobile","blue_car","pickup_truck","truck","articulated_lorry","tractor","racing_car","racing_motorcycle","motor_scooter","manual_wheelchair","motorized_wheelchair","auto_rickshaw","bike","scooter","skateboard","roller_skate","busstop","motorway","railway_track","oil_drum","fuelpump","wheel","rotating_light","traffic_light","vertical_traffic_light","octagonal_sign","construction","anchor","ring_buoy","boat","canoe","speedboat","passenger_ship","ferry","motor_boat","ship","airplane","small_airplane","airplane_departure","airplane_arriving","parachute","seat","helicopter","suspension_railway","mountain_cableway","aerial_tramway","satellite","rocket","flying_saucer","bellhop_bell","luggage","hourglass","hourglass_flowing_sand","watch","alarm_clock","stopwatch","timer_clock","mantelpiece_clock","clock12","clock1230","clock1","clock130","clock2","clock230","clock3","clock330","clock4","clock430","clock5","clock530","clock6","clock630","clock7","clock730","clock8","clock830","clock9","clock930","clock10","clock1030","clock11","clock1130","new_moon","waxing_crescent_moon","first_quarter_moon","moon","full_moon","waning_gibbous_moon","last_quarter_moon","waning_crescent_moon","crescent_moon","new_moon_with_face","first_quarter_moon_with_face","last_quarter_moon_with_face","thermometer","sunny","full_moon_with_face","sun_with_face","ringed_planet","star","star2","stars","milky_way","cloud","partly_sunny","thunder_cloud_and_rain","mostly_sunny","barely_sunny","partly_sunny_rain","rain_cloud","snow_cloud","lightning","tornado","fog","wind_blowing_face","cyclone","rainbow","closed_umbrella","umbrella","umbrella_with_rain_drops","umbrella_on_ground","zap","snowflake","snowman","snowman_without_snow","comet","fire","droplet","ocean"]},{"id":"objects","name":"Objects","emojis":["eyeglasses","dark_sunglasses","goggles","lab_coat","safety_vest","necktie","shirt","jeans","scarf","gloves","coat","socks","dress","kimono","sari","one-piece_swimsuit","briefs","shorts","bikini","womans_clothes","folding_hand_fan","purse","handbag","pouch","shopping_bags","school_satchel","thong_sandal","mans_shoe","athletic_shoe","hiking_boot","womans_flat_shoe","high_heel","sandal","ballet_shoes","boot","hair_pick","crown","womans_hat","tophat","mortar_board","billed_cap","military_helmet","helmet_with_white_cross","prayer_beads","lipstick","ring","gem","mute","speaker","sound","loud_sound","loudspeaker","mega","postal_horn","bell","no_bell","musical_score","musical_note","notes","studio_microphone","level_slider","control_knobs","microphone","headphones","radio","saxophone","accordion","guitar","musical_keyboard","trumpet","violin","banjo","drum_with_drumsticks","long_drum","maracas","flute","iphone","calling","phone","telephone_receiver","pager","fax","battery","low_battery","electric_plug","computer","desktop_computer","printer","keyboard","three_button_mouse","trackball","minidisc","floppy_disk","cd","dvd","abacus","movie_camera","film_frames","film_projector","clapper","tv","camera","camera_with_flash","video_camera","vhs","mag","mag_right","candle","bulb","flashlight","izakaya_lantern","diya_lamp","notebook_with_decorative_cover","closed_book","book","green_book","blue_book","orange_book","books","notebook","ledger","page_with_curl","scroll","page_facing_up","newspaper","rolled_up_newspaper","bookmark_tabs","bookmark","label","moneybag","coin","yen","dollar","euro","pound","money_with_wings","credit_card","receipt","chart","email","e-mail","incoming_envelope","envelope_with_arrow","outbox_tray","inbox_tray","package","mailbox","mailbox_closed","mailbox_with_mail","mailbox_with_no_mail","postbox","ballot_box_with_ballot","pencil2","black_nib","lower_left_fountain_pen","lower_left_ballpoint_pen","lower_left_paintbrush","lower_left_crayon","memo","briefcase","file_folder","open_file_folder","card_index_dividers","date","calendar","spiral_note_pad","spiral_calendar_pad","card_index","chart_with_upwards_trend","chart_with_downwards_trend","bar_chart","clipboard","pushpin","round_pushpin","paperclip","linked_paperclips","straight_ruler","triangular_ruler","scissors","card_file_box","file_cabinet","wastebasket","lock","unlock","lock_with_ink_pen","closed_lock_with_key","key","old_key","hammer","axe","pick","hammer_and_pick","hammer_and_wrench","dagger_knife","crossed_swords","bomb","boomerang","bow_and_arrow","shield","carpentry_saw","wrench","screwdriver","nut_and_bolt","gear","compression","scales","probing_cane","link","broken_chain","chains","hook","toolbox","magnet","ladder","alembic","test_tube","petri_dish","dna","microscope","telescope","satellite_antenna","syringe","drop_of_blood","pill","adhesive_bandage","crutch","stethoscope","x-ray","door","elevator","mirror","window","bed","couch_and_lamp","chair","toilet","plunger","shower","bathtub","mouse_trap","razor","lotion_bottle","safety_pin","broom","basket","roll_of_paper","bucket","soap","bubbles","toothbrush","sponge","fire_extinguisher","shopping_trolley","smoking","coffin","headstone","funeral_urn","nazar_amulet","hamsa","moyai","placard","identification_card"]},{"id":"symbols","name":"Symbols","emojis":["atm","put_litter_in_its_place","potable_water","wheelchair","mens","womens","restroom","baby_symbol","wc","passport_control","customs","baggage_claim","left_luggage","warning","children_crossing","no_entry","no_entry_sign","no_bicycles","no_smoking","do_not_litter","non-potable_water","no_pedestrians","no_mobile_phones","underage","radioactive_sign","biohazard_sign","arrow_up","arrow_upper_right","arrow_right","arrow_lower_right","arrow_down","arrow_lower_left","arrow_left","arrow_upper_left","arrow_up_down","left_right_arrow","leftwards_arrow_with_hook","arrow_right_hook","arrow_heading_up","arrow_heading_down","arrows_clockwise","arrows_counterclockwise","back","end","on","soon","top","place_of_worship","atom_symbol","om_symbol","star_of_david","wheel_of_dharma","yin_yang","latin_cross","orthodox_cross","star_and_crescent","peace_symbol","menorah_with_nine_branches","six_pointed_star","khanda","aries","taurus","gemini","cancer","leo","virgo","libra","scorpius","sagittarius","capricorn","aquarius","pisces","ophiuchus","twisted_rightwards_arrows","repeat","repeat_one","arrow_forward","fast_forward","black_right_pointing_double_triangle_with_vertical_bar","black_right_pointing_triangle_with_double_vertical_bar","arrow_backward","rewind","black_left_pointing_double_triangle_with_vertical_bar","arrow_up_small","arrow_double_up","arrow_down_small","arrow_double_down","double_vertical_bar","black_square_for_stop","black_circle_for_record","eject","cinema","low_brightness","high_brightness","signal_strength","wireless","vibration_mode","mobile_phone_off","female_sign","male_sign","transgender_symbol","heavy_multiplication_x","heavy_plus_sign","heavy_minus_sign","heavy_division_sign","heavy_equals_sign","infinity","bangbang","interrobang","question","grey_question","grey_exclamation","exclamation","wavy_dash","currency_exchange","heavy_dollar_sign","medical_symbol","recycle","fleur_de_lis","trident","name_badge","beginner","o","white_check_mark","ballot_box_with_check","heavy_check_mark","x","negative_squared_cross_mark","curly_loop","loop","part_alternation_mark","eight_spoked_asterisk","eight_pointed_black_star","sparkle","copyright","registered","tm","hash","keycap_star","zero","one","two","three","four","five","six","seven","eight","nine","keycap_ten","capital_abcd","abcd","1234","symbols","abc","a","ab","b","cl","cool","free","information_source","id","m","new","ng","o2","ok","parking","sos","up","vs","koko","sa","u6708","u6709","u6307","ideograph_advantage","u5272","u7121","u7981","accept","u7533","u5408","u7a7a","congratulations","secret","u55b6","u6e80","red_circle","large_orange_circle","large_yellow_circle","large_green_circle","large_blue_circle","large_purple_circle","large_brown_circle","black_circle","white_circle","large_red_square","large_orange_square","large_yellow_square","large_green_square","large_blue_square","large_purple_square","large_brown_square","black_large_square","white_large_square","black_medium_square","white_medium_square","black_medium_small_square","white_medium_small_square","black_small_square","white_small_square","large_orange_diamond","large_blue_diamond","small_orange_diamond","small_blue_diamond","small_red_triangle","small_red_triangle_down","diamond_shape_with_a_dot_inside","radio_button","white_square_button","black_square_button"]},{"id":"flags","name":"Flags","emojis":["checkered_flag","triangular_flag_on_post","crossed_flags","waving_black_flag","waving_white_flag","rainbow-flag","transgender_flag","pirate_flag","flag-ac","flag-ad","flag-ae","flag-af","flag-ag","flag-ai","flag-al","flag-am","flag-ao","flag-aq","flag-ar","flag-as","flag-at","flag-au","flag-aw","flag-ax","flag-az","flag-ba","flag-bb","flag-bd","flag-be","flag-bf","flag-bg","flag-bh","flag-bi","flag-bj","flag-bl","flag-bm","flag-bn","flag-bo","flag-bq","flag-br","flag-bs","flag-bt","flag-bv","flag-bw","flag-by","flag-bz","flag-ca","flag-cc","flag-cd","flag-cf","flag-cg","flag-ch","flag-ci","flag-ck","flag-cl","flag-cm","cn","flag-co","flag-cp","flag-cr","flag-cu","flag-cv","flag-cw","flag-cx","flag-cy","flag-cz","de","flag-dg","flag-dj","flag-dk","flag-dm","flag-do","flag-dz","flag-ea","flag-ec","flag-ee","flag-eg","flag-eh","flag-er","es","flag-et","flag-eu","flag-fi","flag-fj","flag-fk","flag-fm","flag-fo","fr","flag-ga","gb","flag-gd","flag-ge","flag-gf","flag-gg","flag-gh","flag-gi","flag-gl","flag-gm","flag-gn","flag-gp","flag-gq","flag-gr","flag-gs","flag-gt","flag-gu","flag-gw","flag-gy","flag-hk","flag-hm","flag-hn","flag-hr","flag-ht","flag-hu","flag-ic","flag-id","flag-ie","flag-il","flag-im","flag-in","flag-io","flag-iq","flag-ir","flag-is","it","flag-je","flag-jm","flag-jo","jp","flag-ke","flag-kg","flag-kh","flag-ki","flag-km","flag-kn","flag-kp","kr","flag-kw","flag-ky","flag-kz","flag-la","flag-lb","flag-lc","flag-li","flag-lk","flag-lr","flag-ls","flag-lt","flag-lu","flag-lv","flag-ly","flag-ma","flag-mc","flag-md","flag-me","flag-mf","flag-mg","flag-mh","flag-mk","flag-ml","flag-mm","flag-mn","flag-mo","flag-mp","flag-mq","flag-mr","flag-ms","flag-mt","flag-mu","flag-mv","flag-mw","flag-mx","flag-my","flag-mz","flag-na","flag-nc","flag-ne","flag-nf","flag-ng","flag-ni","flag-nl","flag-no","flag-np","flag-nr","flag-nu","flag-nz","flag-om","flag-pa","flag-pe","flag-pf","flag-pg","flag-ph","flag-pk","flag-pl","flag-pm","flag-pn","flag-pr","flag-ps","flag-pt","flag-pw","flag-py","flag-qa","flag-re","flag-ro","flag-rs","ru","flag-rw","flag-sa","flag-sb","flag-sc","flag-sd","flag-se","flag-sg","flag-sh","flag-si","flag-sj","flag-sk","flag-sl","flag-sm","flag-sn","flag-so","flag-sr","flag-ss","flag-st","flag-sv","flag-sx","flag-sy","flag-sz","flag-ta","flag-tc","flag-td","flag-tf","flag-tg","flag-th","flag-tj","flag-tk","flag-tl","flag-tm","flag-tn","flag-to","flag-tr","flag-tt","flag-tv","flag-tw","flag-tz","flag-ua","flag-ug","flag-um","flag-un","us","flag-uy","flag-uz","flag-va","flag-vc","flag-ve","flag-vg","flag-vi","flag-vn","flag-vu","flag-wf","flag-ws","flag-xk","flag-ye","flag-yt","flag-za","flag-zm","flag-zw","flag-england","flag-scotland","flag-wales"]}],"emojis":{"grinning":{"a":"Grinning Face","b":"1F600","f":true,"k":[32,46],"j":["grinning_face","face","smile","happy","joy",":D","grin"],"m":":D"},"smiley":{"a":"Smiling Face with Open Mouth","b":"1F603","f":true,"k":[32,49],"j":["grinning_face_with_big_eyes","face","happy","joy","haha",":D",":)","smile","funny"],"l":["=)","=-)"],"m":":)"},"smile":{"a":"Smiling Face with Open Mouth and Smiling Eyes","b":"1F604","f":true,"k":[32,50],"j":["grinning_face_with_smiling_eyes","face","happy","joy","funny","haha","laugh","like",":D",":)"],"l":["C:","c:",":D",":-D"],"m":":)"},"grin":{"a":"Grinning Face with Smiling Eyes","b":"1F601","f":true,"k":[32,47],"j":["beaming_face_with_smiling_eyes","face","happy","smile","joy","kawaii"]},"laughing":{"a":"Smiling Face with Open Mouth and Tightly-Closed Eyes","b":"1F606","f":true,"k":[32,52],"j":["grinning_squinting_face","happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],"l":[":>",":->"]},"sweat_smile":{"a":"Smiling Face with Open Mouth and Cold Sweat","b":"1F605","f":true,"k":[32,51],"j":["grinning_face_with_sweat","face","hot","happy","laugh","sweat","smile","relief"]},"rolling_on_the_floor_laughing":{"a":"Rolling On the Floor Laughing","b":"1F923","f":true,"k":[40,54],"j":["face","rolling","floor","laughing","lol","haha","rofl"]},"joy":{"a":"Face with Tears Of Joy","b":"1F602","f":true,"k":[32,48],"j":["face_with_tears_of_joy","face","cry","tears","weep","happy","happytears","haha"]},"slightly_smiling_face":{"a":"Slightly Smiling Face","b":"1F642","f":true,"k":[33,55],"j":["face","smile"],"l":[":)","(:",":-)"]},"upside_down_face":{"a":"Upside-Down Face","b":"1F643","f":true,"k":[33,56],"j":["face","flipped","silly","smile"]},"melting_face":{"a":"Melting Face","b":"1FAE0","f":true,"k":[56,30],"j":["melting face","hot","heat"]},"wink":{"a":"Winking Face","b":"1F609","f":true,"k":[32,55],"j":["winking_face","face","happy","mischievous","secret",";)","smile","eye"],"l":[";)",";-)"],"m":";)"},"blush":{"a":"Smiling Face with Smiling Eyes","b":"1F60A","f":true,"k":[32,56],"j":["smiling_face_with_smiling_eyes","face","smile","happy","flushed","crush","embarrassed","shy","joy"],"m":":)"},"innocent":{"a":"Smiling Face with Halo","b":"1F607","f":true,"k":[32,53],"j":["smiling_face_with_halo","face","angel","heaven","halo"]},"smiling_face_with_3_hearts":{"a":"Smiling Face with Smiling Eyes and Three Hearts","b":"1F970","f":true,"k":[44,32],"j":["smiling_face_with_hearts","face","love","like","affection","valentines","infatuation","crush","hearts","adore"]},"heart_eyes":{"a":"Smiling Face with Heart-Shaped Eyes","b":"1F60D","f":true,"k":[32,59],"j":["smiling_face_with_heart_eyes","face","love","like","affection","valentines","infatuation","crush","heart"]},"star-struck":{"a":"Grinning Face with Star Eyes","b":"1F929","f":true,"k":[41,15],"j":["star_struck","face","smile","starry","eyes","grinning"]},"kissing_heart":{"a":"Face Throwing a Kiss","b":"1F618","f":true,"k":[33,8],"j":["face_blowing_a_kiss","face","love","like","affection","valentines","infatuation","kiss"],"l":[":*",":-*"]},"kissing":{"a":"Kissing Face","b":"1F617","f":true,"k":[33,7],"j":["kissing_face","love","like","face","3","valentines","infatuation","kiss"]},"relaxed":{"a":"White Smiling Face","b":"263A-FE0F","f":true,"k":[58,33],"c":"263A"},"kissing_closed_eyes":{"a":"Kissing Face with Closed Eyes","b":"1F61A","f":true,"k":[33,10],"j":["kissing_face_with_closed_eyes","face","love","like","affection","valentines","infatuation","kiss"]},"kissing_smiling_eyes":{"a":"Kissing Face with Smiling Eyes","b":"1F619","f":true,"k":[33,9],"j":["kissing_face_with_smiling_eyes","face","affection","valentines","infatuation","kiss"]},"smiling_face_with_tear":{"a":"Smiling Face with Tear","b":"1F972","f":true,"k":[44,34],"j":["smiling face with tear","sad","cry","pretend"]},"yum":{"a":"Face Savouring Delicious Food","b":"1F60B","f":true,"k":[32,57],"j":["face_savoring_food","happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"]},"stuck_out_tongue":{"a":"Face with Stuck-Out Tongue","b":"1F61B","f":true,"k":[33,11],"j":["face_with_tongue","face","prank","childish","playful","mischievous","smile","tongue"],"l":[":p",":-p",":P",":-P",":b",":-b"],"m":":p"},"stuck_out_tongue_winking_eye":{"a":"Face with Stuck-Out Tongue and Winking Eye","b":"1F61C","f":true,"k":[33,12],"j":["winking_face_with_tongue","face","prank","childish","playful","mischievous","smile","wink","tongue"],"l":[";p",";-p",";b",";-b",";P",";-P"],"m":";p"},"zany_face":{"a":"Grinning Face with One Large and One Small Eye","b":"1F92A","f":true,"k":[41,16],"j":["face","goofy","crazy"]},"stuck_out_tongue_closed_eyes":{"a":"Face with Stuck-Out Tongue and Tightly-Closed Eyes","b":"1F61D","f":true,"k":[33,13],"j":["squinting_face_with_tongue","face","prank","playful","mischievous","smile","tongue"]},"money_mouth_face":{"a":"Money-Mouth Face","b":"1F911","f":true,"k":[39,38],"j":["face","rich","dollar","money"]},"hugging_face":{"a":"Hugging Face","b":"1F917","f":true,"k":[39,44],"j":["face","smile","hug"]},"face_with_hand_over_mouth":{"a":"Smiling Face with Smiling Eyes and Hand Covering Mouth","b":"1F92D","f":true,"k":[41,19],"j":["face","whoops","shock","surprise"]},"face_with_open_eyes_and_hand_over_mouth":{"a":"Face with Open Eyes and Hand Over Mouth","b":"1FAE2","f":true,"k":[56,32],"j":["face with open eyes and hand over mouth","silence","secret","shock","surprise"]},"face_with_peeking_eye":{"a":"Face with Peeking Eye","b":"1FAE3","f":true,"k":[56,33],"j":["face with peeking eye","scared","frightening","embarrassing","shy"]},"shushing_face":{"a":"Face with Finger Covering Closed Lips","b":"1F92B","f":true,"k":[41,17],"j":["face","quiet","shhh"]},"thinking_face":{"a":"Thinking Face","b":"1F914","f":true,"k":[39,41],"j":["face","hmmm","think","consider"]},"saluting_face":{"a":"Saluting Face","b":"1FAE1","f":true,"k":[56,31],"j":["saluting face","respect","salute"]},"zipper_mouth_face":{"a":"Zipper-Mouth Face","b":"1F910","f":true,"k":[39,37],"j":["face","sealed","zipper","secret"]},"face_with_raised_eyebrow":{"a":"Face with One Eyebrow Raised","b":"1F928","f":true,"k":[41,14],"j":["face","distrust","scepticism","disapproval","disbelief","surprise","suspicious"]},"neutral_face":{"a":"Neutral Face","b":"1F610","f":true,"k":[33,0],"j":["indifference","meh",":|","neutral"],"l":[":|",":-|"]},"expressionless":{"a":"Expressionless Face","b":"1F611","f":true,"k":[33,1],"j":["expressionless_face","face","indifferent","-_-","meh","deadpan"]},"no_mouth":{"a":"Face Without Mouth","b":"1F636","f":true,"k":[33,41],"j":["face_without_mouth","face"]},"dotted_line_face":{"a":"Dotted Line Face","b":"1FAE5","f":true,"k":[56,35],"j":["dotted line face","invisible","lonely","isolation","depression"]},"face_in_clouds":{"a":"Face In Clouds","b":"1F636-200D-1F32B-FE0F","f":true,"k":[33,40],"c":"1F636-200D-1F32B","j":["face_without_mouth","face"]},"smirk":{"a":"Smirking Face","b":"1F60F","f":true,"k":[32,61],"j":["smirking_face","face","smile","mean","prank","smug","sarcasm"]},"unamused":{"a":"Unamused Face","b":"1F612","f":true,"k":[33,2],"j":["unamused_face","indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","ugh","side_eye"],"m":":("},"face_with_rolling_eyes":{"a":"Face with Rolling Eyes","b":"1F644","f":true,"k":[33,57],"j":["face","eyeroll","frustrated"]},"grimacing":{"a":"Grimacing Face","b":"1F62C","f":true,"k":[33,28],"j":["grimacing_face","face","grimace","teeth"]},"face_exhaling":{"a":"Face Exhaling","b":"1F62E-200D-1F4A8","f":true,"k":[33,30],"j":["face_with_open_mouth","face","surprise","impressed","wow","whoa",":O"]},"lying_face":{"a":"Lying Face","b":"1F925","f":true,"k":[40,56],"j":["face","lie","pinocchio"]},"shaking_face":{"a":"Shaking Face","b":"1FAE8","f":true,"k":[56,38],"j":["shaking face","dizzy","shock","blurry","earthquake"]},"head_shaking_horizontally":{"a":"Head Shaking Horizontally","b":"1F642-200D-2194-FE0F","f":true,"k":[33,53],"c":"1F642-200D-2194","j":["slightly_smiling_face","face","smile"]},"head_shaking_vertically":{"a":"Head Shaking Vertically","b":"1F642-200D-2195-FE0F","f":true,"k":[33,54],"c":"1F642-200D-2195","j":["slightly_smiling_face","face","smile"]},"relieved":{"a":"Relieved Face","b":"1F60C","f":true,"k":[32,58],"j":["relieved_face","face","relaxed","phew","massage","happiness"]},"pensive":{"a":"Pensive Face","b":"1F614","f":true,"k":[33,4],"j":["pensive_face","face","sad","depressed","upset"]},"sleepy":{"a":"Sleepy Face","b":"1F62A","f":true,"k":[33,26],"j":["sleepy_face","face","tired","rest","nap"]},"drooling_face":{"a":"Drooling Face","b":"1F924","f":true,"k":[40,55],"j":["face"]},"sleeping":{"a":"Sleeping Face","b":"1F634","f":true,"k":[33,37],"j":["sleeping_face","face","tired","sleepy","night","zzz"]},"mask":{"a":"Face with Medical Mask","b":"1F637","f":true,"k":[33,42],"j":["face_with_medical_mask","face","sick","ill","disease","covid"]},"face_with_thermometer":{"a":"Face with Thermometer","b":"1F912","f":true,"k":[39,39],"j":["sick","temperature","thermometer","cold","fever","covid"]},"face_with_head_bandage":{"a":"Face with Head-Bandage","b":"1F915","f":true,"k":[39,42],"j":["injured","clumsy","bandage","hurt"]},"nauseated_face":{"a":"Nauseated Face","b":"1F922","f":true,"k":[40,53],"j":["face","vomit","gross","green","sick","throw up","ill"]},"face_vomiting":{"a":"Face with Open Mouth Vomiting","b":"1F92E","f":true,"k":[41,20],"j":["face","sick"]},"sneezing_face":{"a":"Sneezing Face","b":"1F927","f":true,"k":[41,13],"j":["face","gesundheit","sneeze","sick","allergy"]},"hot_face":{"a":"Overheated Face","b":"1F975","f":true,"k":[44,37],"j":["face","feverish","heat","red","sweating"]},"cold_face":{"a":"Freezing Face","b":"1F976","f":true,"k":[44,38],"j":["face","blue","freezing","frozen","frostbite","icicles"]},"woozy_face":{"a":"Face with Uneven Eyes and Wavy Mouth","b":"1F974","f":true,"k":[44,36],"j":["face","dizzy","intoxicated","tipsy","wavy"]},"dizzy_face":{"a":"Dizzy Face","b":"1F635","f":true,"k":[33,39],"j":["spent","unconscious","xox","dizzy"]},"face_with_spiral_eyes":{"a":"Face with Spiral Eyes","b":"1F635-200D-1F4AB","f":true,"k":[33,38],"j":["dizzy_face","spent","unconscious","xox","dizzy"]},"exploding_head":{"a":"Shocked Face with Exploding Head","b":"1F92F","f":true,"k":[41,21],"j":["face","shocked","mind","blown"]},"face_with_cowboy_hat":{"a":"Face with Cowboy Hat","b":"1F920","f":true,"k":[40,51],"j":["cowboy_hat_face","face","cowgirl","hat"]},"partying_face":{"a":"Face with Party Horn and Party Hat","b":"1F973","f":true,"k":[44,35],"j":["face","celebration","woohoo"]},"disguised_face":{"a":"Disguised Face","b":"1F978","f":true,"k":[44,45],"j":["disguised face","pretent","brows","glasses","moustache"]},"sunglasses":{"a":"Smiling Face with Sunglasses","b":"1F60E","f":true,"k":[32,60],"j":["smiling_face_with_sunglasses","face","cool","smile","summer","beach","sunglass"],"l":["8)"]},"nerd_face":{"a":"Nerd Face","b":"1F913","f":true,"k":[39,40],"j":["face","nerdy","geek","dork"]},"face_with_monocle":{"a":"Face with Monocle","b":"1F9D0","f":true,"k":[47,61],"j":["face","stuffy","wealthy"]},"confused":{"a":"Confused Face","b":"1F615","f":true,"k":[33,5],"j":["confused_face","face","indifference","huh","weird","hmmm",":/"],"l":[":\\",":-\\",":/",":-/"]},"face_with_diagonal_mouth":{"a":"Face with Diagonal Mouth","b":"1FAE4","f":true,"k":[56,34],"j":["face with diagonal mouth","skeptic","confuse","frustrated","indifferent"]},"worried":{"a":"Worried Face","b":"1F61F","f":true,"k":[33,15],"j":["worried_face","face","concern","nervous",":("]},"slightly_frowning_face":{"a":"Slightly Frowning Face","b":"1F641","f":true,"k":[33,52],"j":["face","frowning","disappointed","sad","upset"]},"white_frowning_face":{"a":"Frowning Face","b":"2639-FE0F","f":true,"k":[58,32],"c":"2639"},"open_mouth":{"a":"Face with Open Mouth","b":"1F62E","f":true,"k":[33,31],"j":["face_with_open_mouth","face","surprise","impressed","wow","whoa",":O"],"l":[":o",":-o",":O",":-O"]},"hushed":{"a":"Hushed Face","b":"1F62F","f":true,"k":[33,32],"j":["hushed_face","face","woo","shh"]},"astonished":{"a":"Astonished Face","b":"1F632","f":true,"k":[33,35],"j":["astonished_face","face","xox","surprised","poisoned"]},"flushed":{"a":"Flushed Face","b":"1F633","f":true,"k":[33,36],"j":["flushed_face","face","blush","shy","flattered"]},"pleading_face":{"a":"Face with Pleading Eyes","b":"1F97A","f":true,"k":[44,47],"j":["face","begging","mercy","cry","tears","sad","grievance"]},"face_holding_back_tears":{"a":"Face Holding Back Tears","b":"1F979","f":true,"k":[44,46],"j":["face holding back tears","touched","gratitude","cry"]},"frowning":{"a":"Frowning Face with Open Mouth","b":"1F626","f":true,"k":[33,22],"j":["frowning_face_with_open_mouth","face","aw","what"]},"anguished":{"a":"Anguished Face","b":"1F627","f":true,"k":[33,23],"j":["anguished_face","face","stunned","nervous"],"l":["D:"]},"fearful":{"a":"Fearful Face","b":"1F628","f":true,"k":[33,24],"j":["fearful_face","face","scared","terrified","nervous"]},"cold_sweat":{"a":"Face with Open Mouth and Cold Sweat","b":"1F630","f":true,"k":[33,33],"j":["anxious_face_with_sweat","face","nervous","sweat"]},"disappointed_relieved":{"a":"Disappointed But Relieved Face","b":"1F625","f":true,"k":[33,21],"j":["sad_but_relieved_face","face","phew","sweat","nervous"]},"cry":{"a":"Crying Face","b":"1F622","f":true,"k":[33,18],"j":["crying_face","face","tears","sad","depressed","upset",":'("],"l":[":'("],"m":":'("},"sob":{"a":"Loudly Crying Face","b":"1F62D","f":true,"k":[33,29],"j":["loudly_crying_face","sobbing","face","cry","tears","sad","upset","depressed"],"m":":'("},"scream":{"a":"Face Screaming In Fear","b":"1F631","f":true,"k":[33,34],"j":["face_screaming_in_fear","face","munch","scared","omg"]},"confounded":{"a":"Confounded Face","b":"1F616","f":true,"k":[33,6],"j":["confounded_face","face","confused","sick","unwell","oops",":S"]},"persevere":{"a":"Persevering Face","b":"1F623","f":true,"k":[33,19],"j":["persevering_face","face","sick","no","upset","oops"]},"disappointed":{"a":"Disappointed Face","b":"1F61E","f":true,"k":[33,14],"j":["disappointed_face","face","sad","upset","depressed",":("],"l":["):",":(",":-("],"m":":("},"sweat":{"a":"Face with Cold Sweat","b":"1F613","f":true,"k":[33,3],"j":["downcast_face_with_sweat","face","hot","sad","tired","exercise"]},"weary":{"a":"Weary Face","b":"1F629","f":true,"k":[33,25],"j":["weary_face","face","tired","sleepy","sad","frustrated","upset"]},"tired_face":{"a":"Tired Face","b":"1F62B","f":true,"k":[33,27],"j":["sick","whine","upset","frustrated"]},"yawning_face":{"a":"Yawning Face","b":"1F971","f":true,"k":[44,33],"j":["tired","sleepy"]},"triumph":{"a":"Face with Look Of Triumph","b":"1F624","f":true,"k":[33,20],"j":["face_with_steam_from_nose","face","gas","phew","proud","pride"]},"rage":{"a":"Pouting Face","b":"1F621","f":true,"k":[33,17],"j":["pouting_face","angry","mad","hate","despise"]},"angry":{"a":"Angry Face","b":"1F620","f":true,"k":[33,16],"j":["angry_face","mad","face","annoyed","frustrated"],"l":[">:(",">:-("]},"face_with_symbols_on_mouth":{"a":"Serious Face with Symbols Covering Mouth","b":"1F92C","f":true,"k":[41,18],"j":["face","swearing","cursing","cussing","profanity","expletive"]},"smiling_imp":{"a":"Smiling Face with Horns","b":"1F608","f":true,"k":[32,54],"j":["smiling_face_with_horns","devil","horns"]},"imp":{"a":"Imp","b":"1F47F","f":true,"k":[25,41],"j":["angry_face_with_horns","devil","angry","horns"]},"skull":{"a":"Skull","b":"1F480","f":true,"k":[25,42],"j":["dead","skeleton","creepy","death","dead"]},"skull_and_crossbones":{"a":"Skull and Crossbones","b":"2620-FE0F","f":true,"k":[58,24],"c":"2620"},"hankey":{"a":"Pile Of Poo","b":"1F4A9","f":true,"k":[28,25],"j":["pile_of_poo","shitface","fail","turd","shit"]},"clown_face":{"a":"Clown Face","b":"1F921","f":true,"k":[40,52],"j":["face"]},"japanese_ogre":{"a":"Japanese Ogre","b":"1F479","f":true,"k":[25,30],"j":["ogre","monster","red","mask","halloween","scary","creepy","devil","demon"]},"japanese_goblin":{"a":"Japanese Goblin","b":"1F47A","f":true,"k":[25,31],"j":["goblin","red","evil","mask","monster","scary","creepy"]},"ghost":{"a":"Ghost","b":"1F47B","f":true,"k":[25,32],"j":["halloween","spooky","scary"]},"alien":{"a":"Extraterrestrial Alien","b":"1F47D","f":true,"k":[25,39],"j":["UFO","paul","weird","outer_space"]},"space_invader":{"a":"Alien Monster","b":"1F47E","f":true,"k":[25,40],"j":["alien_monster","game","arcade","play"]},"robot_face":{"a":"Robot Face","b":"1F916","f":true,"k":[39,43],"j":["robot","computer","machine","bot"]},"smiley_cat":{"a":"Smiling Cat Face with Open Mouth","b":"1F63A","f":true,"k":[33,45],"j":["grinning_cat","animal","cats","happy","smile"]},"smile_cat":{"a":"Grinning Cat Face with Smiling Eyes","b":"1F638","f":true,"k":[33,43],"j":["grinning_cat_with_smiling_eyes","animal","cats","smile"]},"joy_cat":{"a":"Cat Face with Tears Of Joy","b":"1F639","f":true,"k":[33,44],"j":["cat_with_tears_of_joy","animal","cats","haha","happy","tears"]},"heart_eyes_cat":{"a":"Smiling Cat Face with Heart-Shaped Eyes","b":"1F63B","f":true,"k":[33,46],"j":["smiling_cat_with_heart_eyes","animal","love","like","affection","cats","valentines","heart"]},"smirk_cat":{"a":"Cat Face with Wry Smile","b":"1F63C","f":true,"k":[33,47],"j":["cat_with_wry_smile","animal","cats","smirk"]},"kissing_cat":{"a":"Kissing Cat Face with Closed Eyes","b":"1F63D","f":true,"k":[33,48],"j":["animal","cats","kiss"]},"scream_cat":{"a":"Weary Cat Face","b":"1F640","f":true,"k":[33,51],"j":["weary_cat","animal","cats","munch","scared","scream"]},"crying_cat_face":{"a":"Crying Cat Face","b":"1F63F","f":true,"k":[33,50],"j":["crying_cat","animal","tears","weep","sad","cats","upset","cry"]},"pouting_cat":{"a":"Pouting Cat Face","b":"1F63E","f":true,"k":[33,49],"j":["animal","cats"]},"see_no_evil":{"a":"See-No-Evil Monkey","b":"1F648","f":true,"k":[34,50],"j":["see_no_evil_monkey","monkey","animal","nature","haha"]},"hear_no_evil":{"a":"Hear-No-Evil Monkey","b":"1F649","f":true,"k":[34,51],"j":["hear_no_evil_monkey","animal","monkey","nature"]},"speak_no_evil":{"a":"Speak-No-Evil Monkey","b":"1F64A","f":true,"k":[34,52],"j":["speak_no_evil_monkey","monkey","animal","nature","omg"]},"love_letter":{"a":"Love Letter","b":"1F48C","f":true,"k":[27,8],"j":["email","like","affection","envelope","valentines"]},"cupid":{"a":"Heart with Arrow","b":"1F498","f":true,"k":[28,8],"j":["heart_with_arrow","love","like","heart","affection","valentines"]},"gift_heart":{"a":"Heart with Ribbon","b":"1F49D","f":true,"k":[28,13],"j":["heart_with_ribbon","love","valentines"]},"sparkling_heart":{"a":"Sparkling Heart","b":"1F496","f":true,"k":[28,6],"j":["love","like","affection","valentines"]},"heartpulse":{"a":"Growing Heart","b":"1F497","f":true,"k":[28,7],"j":["growing_heart","like","love","affection","valentines","pink"]},"heartbeat":{"a":"Beating Heart","b":"1F493","f":true,"k":[28,3],"j":["beating_heart","love","like","affection","valentines","pink","heart"]},"revolving_hearts":{"a":"Revolving Hearts","b":"1F49E","f":true,"k":[28,14],"j":["love","like","affection","valentines"]},"two_hearts":{"a":"Two Hearts","b":"1F495","f":true,"k":[28,5],"j":["love","like","affection","valentines","heart"]},"heart_decoration":{"a":"Heart Decoration","b":"1F49F","f":true,"k":[28,15],"j":["purple-square","love","like"]},"heavy_heart_exclamation_mark_ornament":{"a":"Heart Exclamation","b":"2763-FE0F","f":true,"k":[60,35],"c":"2763"},"broken_heart":{"a":"Broken Heart","b":"1F494","f":true,"k":[28,4],"j":["sad","sorry","break","heart","heartbreak"],"l":[" { + additionalManifestEntries: ['1f602.svg', 'sheet_15_1.png'].map((filename) => { const path = resolve(root, 'public', 'emoji', filename); const body = readFileSync(path); const md5 = createHash('md5'); diff --git a/lib/tasks/emojis.rake b/lib/tasks/emojis.rake index 3b2cf46a13..21c2b2be6a 100644 --- a/lib/tasks/emojis.rake +++ b/lib/tasks/emojis.rake @@ -1,5 +1,7 @@ # frozen_string_literal: true +require 'vips' + def gen_border(codepoint, color) input = Rails.public_path.join('emoji', "#{codepoint}.svg") dest = Rails.public_path.join('emoji', "#{codepoint}_border.svg") @@ -42,10 +44,24 @@ def codepoints_to_unicode(codepoints) end end +def get_image(row, emoji_base, fallback, compressed) + path = emoji_base.join("#{row[compressed ? 'b' : 'unified'].downcase}.svg") + path = emoji_base.join("#{row[compressed ? 'c' : 'non_qualified'].downcase.sub(/^00/, '')}.svg") if !path.exist? && row[compressed ? 'c' : 'non_qualified'] + if path.exist? + Vips::Image.new_from_file(path.to_s, dpi: 64) + else + fallback + end +end + +def titleize(string) + string.humanize.gsub(/\b(? emoji['unified'], - 'sheet_x' => emoji['sheet_x'], - 'sheet_y' => emoji['sheet_y'], - 'skin_variations' => {}, + puts "Downloading keyword data from source... (#{keyword_source})" + res = HTTP.get(keyword_source).to_s + keywords = JSON.parse(res) + + puts 'Generating JSON emoji data...' + + emoji_data = { + compressed: true, + categories: [ + { id: 'smileys', name: 'Smileys & Emotion', emojis: [] }, + { id: 'people', name: 'People & Body', emojis: [] }, + { id: 'nature', name: 'Animals & Nature', emojis: [] }, + { id: 'foods', name: 'Food & Drink', emojis: [] }, + { id: 'activity', name: 'Activities', emojis: [] }, + { id: 'places', name: 'Travel & Places', emojis: [] }, + { id: 'objects', name: 'Objects', emojis: [] }, + { id: 'symbols', name: 'Symbols', emojis: [] }, + { id: 'flags', name: 'Flags', emojis: [] }, + ], + emojis: {}, + aliases: {}, + } + + sorted = data.sort { |a, b| (a['sort_order'] || a['short_name']) - (b['sort_order'] || b['sort_name']) } + category_map = emoji_data[:categories].each_with_index.to_h { |c, i| [c[:name], i] } + + sorted.each do |emoji| + emoji_keywords = keywords[codepoints_to_unicode(emoji['unified'].downcase)] + + single_emoji = { + a: titleize(emoji['name']), # name + b: emoji['unified'], # unified + f: true, # has_img_twitter + k: [emoji['sheet_x'], emoji['sheet_y']], # sheet } - emoji['skin_variations']&.each do |key, variation| - filtered_item['skin_variations'][key] = { - 'unified' => variation['unified'], - 'sheet_x' => variation['sheet_x'], - 'sheet_y' => variation['sheet_y'], - } - end + single_emoji[:c] = emoji['non_qualified'] unless emoji['non_qualified'].nil? # non_qualified + single_emoji[:j] = emoji_keywords.filter { |k| k != emoji['short_name'] } if emoji_keywords.present? # keywords + single_emoji[:l] = emoji['texts'] if emoji['texts'].present? # emoticons + single_emoji[:m] = emoji['text'] if emoji['text'].present? # text + single_emoji[:skin_variations] = emoji['skin_variations'] if emoji['skin_variations'].present? - filtered_item + emoji_data[:emojis][emoji['short_name']] = single_emoji + emoji_data[:categories][category_map[emoji['category']]][:emojis].push(emoji['short_name']) if emoji['category'] != 'Component' + + emoji['short_names'].each do |name| + emoji_data[:aliases][name] = emoji['short_name'] unless name == emoji['short_name'] + end end - File.write(dest, JSON.generate(filtered_data)) + smileys = emoji_data[:categories][0] + people = emoji_data[:categories][1] + smileys_and_people = { id: 'people', name: 'Smileys & People', emojis: [*smileys[:emojis][..128], *people[:emojis], *smileys[:emojis][129..]] } + emoji_data[:categories].unshift(smileys_and_people) + emoji_data[:categories] -= emoji_data[:categories][1, 2] + + File.write(data_dest, JSON.generate(emoji_data)) + end + + desc 'Generate a spritesheet of emojis' + task :generate_emoji_sheet do + src = Rails.root.join('app', 'javascript', 'mastodon', 'features', 'emoji', 'emoji_data.json') + sheet = Oj.load(File.read(src)) + + max = 0 + sheet['emojis'].each_value do |row| + max = [max, row['k'][0], row['k'][1]].max + next if row['skin_variations'].blank? + + row['skin_variations'].each_value do |variation| + max = [max, variation['sheet_x'], variation['sheet_y']].max + end + end + + size = max + 1 + + puts 'Generating spritesheet...' + + emoji_base = Rails.public_path.join('emoji') + fallback = Vips::Image.new_from_file(emoji_base.join('2753.svg').to_s, dpi: 64) + comp = Array.new(size) do + Array.new(size, 0) + end + + sheet['emojis'].each_value do |row| + comp[row['k'][1]][row['k'][0]] = get_image(row, emoji_base, fallback, true) + next if row['skin_variations'].blank? + + row['skin_variations'].each_value do |variation| + comp[variation['sheet_y']][variation['sheet_x']] = get_image(variation, emoji_base, fallback, false) + end + end + + joined = Vips::Image.arrayjoin(comp.flatten, across: size, hspacing: 34, halign: :centre, vspacing: 34, valign: :centre) + joined.write_to_file(emoji_base.join('sheet_15_1.png').to_s, palette: true, dither: 0, Q: 100) end end diff --git a/package.json b/package.json index b0a5382aee..bd83d32690 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,6 @@ "@dnd-kit/core": "^6.1.0", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", - "@emoji-mart/data": "1.2.1", "@formatjs/intl-pluralrules": "^5.4.4", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^2.1.1", diff --git a/public/emoji/1f344-200d-1f7eb.svg b/public/emoji/1f344-200d-1f7eb.svg new file mode 100644 index 0000000000..99b163241c --- /dev/null +++ b/public/emoji/1f344-200d-1f7eb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f34b-200d-1f7e9.svg b/public/emoji/1f34b-200d-1f7e9.svg new file mode 100644 index 0000000000..35e1e46506 --- /dev/null +++ b/public/emoji/1f34b-200d-1f7e9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..3f617a1516 --- /dev/null +++ b/public/emoji/1f3c3-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..3db1c6219b --- /dev/null +++ b/public/emoji/1f3c3-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fb-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fb-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..677b019143 --- /dev/null +++ b/public/emoji/1f3c3-1f3fb-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..b83eae104f --- /dev/null +++ b/public/emoji/1f3c3-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..bbfac670ed --- /dev/null +++ b/public/emoji/1f3c3-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fc-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..1c4f22f590 --- /dev/null +++ b/public/emoji/1f3c3-1f3fc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..44a67a3b50 --- /dev/null +++ b/public/emoji/1f3c3-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..844f3906a9 --- /dev/null +++ b/public/emoji/1f3c3-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fd-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..88bb1b64bb --- /dev/null +++ b/public/emoji/1f3c3-1f3fd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..c585dc5737 --- /dev/null +++ b/public/emoji/1f3c3-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..db2430df70 --- /dev/null +++ b/public/emoji/1f3c3-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fe-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fe-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..77444daa12 --- /dev/null +++ b/public/emoji/1f3c3-1f3fe-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..6b60b57709 --- /dev/null +++ b/public/emoji/1f3c3-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..96b880ab09 --- /dev/null +++ b/public/emoji/1f3c3-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3ff-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3ff-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..17de344617 --- /dev/null +++ b/public/emoji/1f3c3-1f3ff-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..f4b9cee103 --- /dev/null +++ b/public/emoji/1f3c3-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..691ea39a32 --- /dev/null +++ b/public/emoji/1f3c3-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-200d-27a1-fe0f.svg b/public/emoji/1f3c3-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..ef8b45a3ea --- /dev/null +++ b/public/emoji/1f3c3-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f426-200d-1f525.svg b/public/emoji/1f426-200d-1f525.svg new file mode 100644 index 0000000000..4ab5d047ed --- /dev/null +++ b/public/emoji/1f426-200d-1f525.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fb-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fb-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..fb3b9fab56 --- /dev/null +++ b/public/emoji/1f468-1f3fb-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..ce8a73e3a9 --- /dev/null +++ b/public/emoji/1f468-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..7c547a70a3 --- /dev/null +++ b/public/emoji/1f468-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fc-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fc-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..980b1ce170 --- /dev/null +++ b/public/emoji/1f468-1f3fc-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..d9478bb749 --- /dev/null +++ b/public/emoji/1f468-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..1b6ed6be60 --- /dev/null +++ b/public/emoji/1f468-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fd-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fd-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..2317b586de --- /dev/null +++ b/public/emoji/1f468-1f3fd-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..8297e3f781 --- /dev/null +++ b/public/emoji/1f468-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..d92a889c77 --- /dev/null +++ b/public/emoji/1f468-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fe-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fe-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..5216cd4a8e --- /dev/null +++ b/public/emoji/1f468-1f3fe-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..c270710c91 --- /dev/null +++ b/public/emoji/1f468-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..83a08aff38 --- /dev/null +++ b/public/emoji/1f468-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3ff-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3ff-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..924b65efb7 --- /dev/null +++ b/public/emoji/1f468-1f3ff-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..076e8f1f54 --- /dev/null +++ b/public/emoji/1f468-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..e702990717 --- /dev/null +++ b/public/emoji/1f468-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f466-200d-1f466.svg b/public/emoji/1f468-200d-1f466-200d-1f466.svg index 89b3ad3d10..9fe81618ff 100644 --- a/public/emoji/1f468-200d-1f466-200d-1f466.svg +++ b/public/emoji/1f468-200d-1f466-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f466.svg b/public/emoji/1f468-200d-1f466.svg index 26c8de9732..da28199a88 100644 --- a/public/emoji/1f468-200d-1f466.svg +++ b/public/emoji/1f468-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f467-200d-1f466.svg b/public/emoji/1f468-200d-1f467-200d-1f466.svg index a2008f1c63..9fe81618ff 100644 --- a/public/emoji/1f468-200d-1f467-200d-1f466.svg +++ b/public/emoji/1f468-200d-1f467-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f467-200d-1f467.svg b/public/emoji/1f468-200d-1f467-200d-1f467.svg index acb7b7df46..9fe81618ff 100644 --- a/public/emoji/1f468-200d-1f467-200d-1f467.svg +++ b/public/emoji/1f468-200d-1f467-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f467.svg b/public/emoji/1f468-200d-1f467.svg index 4cda75140d..da28199a88 100644 --- a/public/emoji/1f468-200d-1f467.svg +++ b/public/emoji/1f468-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f468-200d-1f466-200d-1f466.svg b/public/emoji/1f468-200d-1f468-200d-1f466-200d-1f466.svg index efa5db97f0..317e600ed1 100644 --- a/public/emoji/1f468-200d-1f468-200d-1f466-200d-1f466.svg +++ b/public/emoji/1f468-200d-1f468-200d-1f466-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f468-200d-1f466.svg b/public/emoji/1f468-200d-1f468-200d-1f466.svg index d3a5877d10..743b7ba469 100644 --- a/public/emoji/1f468-200d-1f468-200d-1f466.svg +++ b/public/emoji/1f468-200d-1f468-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f466.svg b/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f466.svg index 4d12c1a3cb..317e600ed1 100644 --- a/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f466.svg +++ b/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f467.svg b/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f467.svg index a694e42959..317e600ed1 100644 --- a/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f467.svg +++ b/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f468-200d-1f467.svg b/public/emoji/1f468-200d-1f468-200d-1f467.svg index 48c4e73125..743b7ba469 100644 --- a/public/emoji/1f468-200d-1f468-200d-1f467.svg +++ b/public/emoji/1f468-200d-1f468-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f469-200d-1f466-200d-1f466.svg b/public/emoji/1f468-200d-1f469-200d-1f466-200d-1f466.svg index 9c3f3da357..317e600ed1 100644 --- a/public/emoji/1f468-200d-1f469-200d-1f466-200d-1f466.svg +++ b/public/emoji/1f468-200d-1f469-200d-1f466-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f469-200d-1f466.svg b/public/emoji/1f468-200d-1f469-200d-1f466.svg index 8f5fad9f5e..743b7ba469 100644 --- a/public/emoji/1f468-200d-1f469-200d-1f466.svg +++ b/public/emoji/1f468-200d-1f469-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f466.svg b/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f466.svg index 885680769c..317e600ed1 100644 --- a/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f466.svg +++ b/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f467.svg b/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f467.svg index 58111c6b0d..317e600ed1 100644 --- a/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f467.svg +++ b/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f469-200d-1f467.svg b/public/emoji/1f468-200d-1f469-200d-1f467.svg index 22a662f0f5..743b7ba469 100644 --- a/public/emoji/1f468-200d-1f469-200d-1f467.svg +++ b/public/emoji/1f468-200d-1f469-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f468-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..73caf9b0b5 --- /dev/null +++ b/public/emoji/1f468-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f468-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..0364c1214d --- /dev/null +++ b/public/emoji/1f468-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f468-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..d02d61b5d9 --- /dev/null +++ b/public/emoji/1f468-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fb-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fb-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..ce2d666456 --- /dev/null +++ b/public/emoji/1f469-1f3fb-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..109b618b86 --- /dev/null +++ b/public/emoji/1f469-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..8982e6939d --- /dev/null +++ b/public/emoji/1f469-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fc-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fc-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..598b65f782 --- /dev/null +++ b/public/emoji/1f469-1f3fc-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..fcc9404f54 --- /dev/null +++ b/public/emoji/1f469-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..f532afa0a1 --- /dev/null +++ b/public/emoji/1f469-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fd-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fd-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..d80fe830d9 --- /dev/null +++ b/public/emoji/1f469-1f3fd-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..713ec299a3 --- /dev/null +++ b/public/emoji/1f469-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..8eeaf6414c --- /dev/null +++ b/public/emoji/1f469-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fe-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fe-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..c253f451cd --- /dev/null +++ b/public/emoji/1f469-1f3fe-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..72c56875b9 --- /dev/null +++ b/public/emoji/1f469-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..fe1d01ace8 --- /dev/null +++ b/public/emoji/1f469-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3ff-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3ff-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..10bb4774e0 --- /dev/null +++ b/public/emoji/1f469-1f3ff-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..932c2d8020 --- /dev/null +++ b/public/emoji/1f469-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..6725afc0d7 --- /dev/null +++ b/public/emoji/1f469-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f466-200d-1f466.svg b/public/emoji/1f469-200d-1f466-200d-1f466.svg index a10b0190a1..9fe81618ff 100644 --- a/public/emoji/1f469-200d-1f466-200d-1f466.svg +++ b/public/emoji/1f469-200d-1f466-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f466.svg b/public/emoji/1f469-200d-1f466.svg index 6ae66b6494..da28199a88 100644 --- a/public/emoji/1f469-200d-1f466.svg +++ b/public/emoji/1f469-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f467-200d-1f466.svg b/public/emoji/1f469-200d-1f467-200d-1f466.svg index 710fb8e5e2..9fe81618ff 100644 --- a/public/emoji/1f469-200d-1f467-200d-1f466.svg +++ b/public/emoji/1f469-200d-1f467-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f467-200d-1f467.svg b/public/emoji/1f469-200d-1f467-200d-1f467.svg index 88da46ee19..9fe81618ff 100644 --- a/public/emoji/1f469-200d-1f467-200d-1f467.svg +++ b/public/emoji/1f469-200d-1f467-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f467.svg b/public/emoji/1f469-200d-1f467.svg index 43e4333f35..da28199a88 100644 --- a/public/emoji/1f469-200d-1f467.svg +++ b/public/emoji/1f469-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f469-200d-1f466-200d-1f466.svg b/public/emoji/1f469-200d-1f469-200d-1f466-200d-1f466.svg index 8915200c62..317e600ed1 100644 --- a/public/emoji/1f469-200d-1f469-200d-1f466-200d-1f466.svg +++ b/public/emoji/1f469-200d-1f469-200d-1f466-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f469-200d-1f466.svg b/public/emoji/1f469-200d-1f469-200d-1f466.svg index 8cd8bad87b..743b7ba469 100644 --- a/public/emoji/1f469-200d-1f469-200d-1f466.svg +++ b/public/emoji/1f469-200d-1f469-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f466.svg b/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f466.svg index 976e8481d0..317e600ed1 100644 --- a/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f466.svg +++ b/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f467.svg b/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f467.svg index 96e0434e4a..317e600ed1 100644 --- a/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f467.svg +++ b/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f469-200d-1f467.svg b/public/emoji/1f469-200d-1f469-200d-1f467.svg index 9201b66c41..743b7ba469 100644 --- a/public/emoji/1f469-200d-1f469-200d-1f467.svg +++ b/public/emoji/1f469-200d-1f469-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f469-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..d4456dd822 --- /dev/null +++ b/public/emoji/1f469-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f469-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..c3badcd2cc --- /dev/null +++ b/public/emoji/1f469-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f469-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..bb40571660 --- /dev/null +++ b/public/emoji/1f469-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f46a.svg b/public/emoji/1f46a.svg index 945b1a840b..743b7ba469 100644 --- a/public/emoji/1f46a.svg +++ b/public/emoji/1f46a.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f642-200d-2194-fe0f.svg b/public/emoji/1f642-200d-2194-fe0f.svg new file mode 100644 index 0000000000..4b4faf9b71 --- /dev/null +++ b/public/emoji/1f642-200d-2194-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f642-200d-2195-fe0f.svg b/public/emoji/1f642-200d-2195-fe0f.svg new file mode 100644 index 0000000000..4e6f2d9912 --- /dev/null +++ b/public/emoji/1f642-200d-2195-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..aa8a93758c --- /dev/null +++ b/public/emoji/1f6b6-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..aa108d3235 --- /dev/null +++ b/public/emoji/1f6b6-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fb-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fb-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..2b75990689 --- /dev/null +++ b/public/emoji/1f6b6-1f3fb-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..e2a8ad2589 --- /dev/null +++ b/public/emoji/1f6b6-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..83102b5db1 --- /dev/null +++ b/public/emoji/1f6b6-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fc-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..5c3588c067 --- /dev/null +++ b/public/emoji/1f6b6-1f3fc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..96659aac2a --- /dev/null +++ b/public/emoji/1f6b6-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..47ca19a639 --- /dev/null +++ b/public/emoji/1f6b6-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fd-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..a03ce86e47 --- /dev/null +++ b/public/emoji/1f6b6-1f3fd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..78831c758c --- /dev/null +++ b/public/emoji/1f6b6-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..f46c27961d --- /dev/null +++ b/public/emoji/1f6b6-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fe-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fe-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..9ed16312c6 --- /dev/null +++ b/public/emoji/1f6b6-1f3fe-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..6e343a2bae --- /dev/null +++ b/public/emoji/1f6b6-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..3e29c09af0 --- /dev/null +++ b/public/emoji/1f6b6-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3ff-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3ff-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..0a4ee8f499 --- /dev/null +++ b/public/emoji/1f6b6-1f3ff-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..00a260f4cd --- /dev/null +++ b/public/emoji/1f6b6-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..9c24631164 --- /dev/null +++ b/public/emoji/1f6b6-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-200d-27a1-fe0f.svg b/public/emoji/1f6b6-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..44b588d188 --- /dev/null +++ b/public/emoji/1f6b6-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..c7d0280306 --- /dev/null +++ b/public/emoji/1f9ce-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..88655aa153 --- /dev/null +++ b/public/emoji/1f9ce-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fb-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fb-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..5ce1c6cb0e --- /dev/null +++ b/public/emoji/1f9ce-1f3fb-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..8c6fe2dc0f --- /dev/null +++ b/public/emoji/1f9ce-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..0666eb6287 --- /dev/null +++ b/public/emoji/1f9ce-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fc-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..b158ba87d7 --- /dev/null +++ b/public/emoji/1f9ce-1f3fc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..fdf1af6da1 --- /dev/null +++ b/public/emoji/1f9ce-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..81eee1b57f --- /dev/null +++ b/public/emoji/1f9ce-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fd-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..77c6ab60b4 --- /dev/null +++ b/public/emoji/1f9ce-1f3fd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..6061ed091c --- /dev/null +++ b/public/emoji/1f9ce-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..f0cbfadc3d --- /dev/null +++ b/public/emoji/1f9ce-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fe-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fe-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..09e7ed099b --- /dev/null +++ b/public/emoji/1f9ce-1f3fe-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..ad3d3ce818 --- /dev/null +++ b/public/emoji/1f9ce-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..d7949f6c48 --- /dev/null +++ b/public/emoji/1f9ce-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3ff-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3ff-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..36bba79b42 --- /dev/null +++ b/public/emoji/1f9ce-1f3ff-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..d234fee29e --- /dev/null +++ b/public/emoji/1f9ce-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..df257035f1 --- /dev/null +++ b/public/emoji/1f9ce-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-200d-27a1-fe0f.svg b/public/emoji/1f9ce-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..e1f21e61e6 --- /dev/null +++ b/public/emoji/1f9ce-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fb-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fb-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..14dc4174f7 --- /dev/null +++ b/public/emoji/1f9d1-1f3fb-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..559200edf7 --- /dev/null +++ b/public/emoji/1f9d1-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..976fa28272 --- /dev/null +++ b/public/emoji/1f9d1-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fc-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fc-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..828d98dd8c --- /dev/null +++ b/public/emoji/1f9d1-1f3fc-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..fe8198d2d9 --- /dev/null +++ b/public/emoji/1f9d1-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..0690a87f97 --- /dev/null +++ b/public/emoji/1f9d1-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fd-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fd-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..8d1215cdfd --- /dev/null +++ b/public/emoji/1f9d1-1f3fd-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..816b25386e --- /dev/null +++ b/public/emoji/1f9d1-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..bc0fd100b8 --- /dev/null +++ b/public/emoji/1f9d1-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fe-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fe-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..ac01e1ed20 --- /dev/null +++ b/public/emoji/1f9d1-1f3fe-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..b4e76bb908 --- /dev/null +++ b/public/emoji/1f9d1-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..36a9bc02dd --- /dev/null +++ b/public/emoji/1f9d1-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3ff-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3ff-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..95cc631972 --- /dev/null +++ b/public/emoji/1f9d1-1f3ff-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..b22836fb7b --- /dev/null +++ b/public/emoji/1f9d1-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..f76097294d --- /dev/null +++ b/public/emoji/1f9d1-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f9d1-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..7efa589bf7 --- /dev/null +++ b/public/emoji/1f9d1-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f9d1-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..b460c1288f --- /dev/null +++ b/public/emoji/1f9d1-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f9d1-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..9bf865e809 --- /dev/null +++ b/public/emoji/1f9d1-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-200d-1f9d1-200d-1f9d2-200d-1f9d2.svg b/public/emoji/1f9d1-200d-1f9d1-200d-1f9d2-200d-1f9d2.svg new file mode 100644 index 0000000000..317e600ed1 --- /dev/null +++ b/public/emoji/1f9d1-200d-1f9d1-200d-1f9d2-200d-1f9d2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-200d-1f9d1-200d-1f9d2.svg b/public/emoji/1f9d1-200d-1f9d1-200d-1f9d2.svg new file mode 100644 index 0000000000..743b7ba469 --- /dev/null +++ b/public/emoji/1f9d1-200d-1f9d1-200d-1f9d2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-200d-1f9d2-200d-1f9d2.svg b/public/emoji/1f9d1-200d-1f9d2-200d-1f9d2.svg new file mode 100644 index 0000000000..9fe81618ff --- /dev/null +++ b/public/emoji/1f9d1-200d-1f9d2-200d-1f9d2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-200d-1f9d2.svg b/public/emoji/1f9d1-200d-1f9d2.svg new file mode 100644 index 0000000000..da28199a88 --- /dev/null +++ b/public/emoji/1f9d1-200d-1f9d2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/26d3-fe0f-200d-1f4a5.svg b/public/emoji/26d3-fe0f-200d-1f4a5.svg new file mode 100644 index 0000000000..556308f00c --- /dev/null +++ b/public/emoji/26d3-fe0f-200d-1f4a5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/sheet_15.png b/public/emoji/sheet_15.png deleted file mode 100644 index 3d0a679119..0000000000 Binary files a/public/emoji/sheet_15.png and /dev/null differ diff --git a/public/emoji/sheet_15_1.png b/public/emoji/sheet_15_1.png new file mode 100644 index 0000000000..e28f2b7648 Binary files /dev/null and b/public/emoji/sheet_15_1.png differ diff --git a/yarn.lock b/yarn.lock index 9293da3a00..33d4800b61 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2044,13 +2044,6 @@ __metadata: languageName: node linkType: hard -"@emoji-mart/data@npm:1.2.1": - version: 1.2.1 - resolution: "@emoji-mart/data@npm:1.2.1" - checksum: 10c0/6784b97bf49a0d3ff110d8447bbd3b0449fcbc497294be3d1c3a6cb1609308776895c7520200be604cbecaa5e172c76927e47f34419c72ba8a76fd4e5a53674b - languageName: node - linkType: hard - "@emotion/babel-plugin@npm:^11.11.0": version: 11.11.0 resolution: "@emotion/babel-plugin@npm:11.11.0" @@ -2827,7 +2820,6 @@ __metadata: "@dnd-kit/core": "npm:^6.1.0" "@dnd-kit/sortable": "npm:^10.0.0" "@dnd-kit/utilities": "npm:^3.2.2" - "@emoji-mart/data": "npm:1.2.1" "@eslint/js": "npm:^9.23.0" "@formatjs/cli": "npm:^6.1.1" "@formatjs/intl-pluralrules": "npm:^5.4.4"