diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6554bc404..3368ba747 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -4,22 +4,22 @@ plugins { } -import org.jetbrains.kotlin.gradle.dsl.JvmTarget - -kotlin { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_21) - freeCompilerArgs.add("-Xannotation-default-target=param-property") - optIn.addAll( - "androidx.compose.material3.ExperimentalMaterial3Api", - "androidx.compose.material3.ExperimentalMaterial3ExpressiveApi", - "androidx.compose.foundation.ExperimentalFoundationApi", - "androidx.compose.ui.text.ExperimentalTextApi", - "androidx.compose.foundation.ExperimentalFoundationApi", - "androidx.compose.foundation.layout.ExperimentalLayoutApi" - ) - } -} +import org . jetbrains . kotlin . gradle . dsl . JvmTarget + + kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_21) + freeCompilerArgs.add("-Xannotation-default-target=param-property") + optIn.addAll( + "androidx.compose.material3.ExperimentalMaterial3Api", + "androidx.compose.material3.ExperimentalMaterial3ExpressiveApi", + "androidx.compose.foundation.ExperimentalFoundationApi", + "androidx.compose.ui.text.ExperimentalTextApi", + "androidx.compose.foundation.ExperimentalFoundationApi", + "androidx.compose.foundation.layout.ExperimentalLayoutApi" + ) + } + } android { namespace = "com.sameerasw.essentials" @@ -139,7 +139,7 @@ dependencies { implementation(libs.androidx.wear.remote.interactions) implementation(libs.androidx.work.runtime.ktx) implementation(libs.gson) - + // Kotlin Reflect for dynamic sealed class serialization implementation(kotlin("reflect")) diff --git a/app/src/androidTest/java/com/sameerasw/essentials/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/sameerasw/essentials/ExampleInstrumentedTest.kt index 027e0002f..ff984b3f1 100644 --- a/app/src/androidTest/java/com/sameerasw/essentials/ExampleInstrumentedTest.kt +++ b/app/src/androidTest/java/com/sameerasw/essentials/ExampleInstrumentedTest.kt @@ -1,13 +1,11 @@ package com.sameerasw.essentials -import androidx.test.platform.app.InstrumentationRegistry import androidx.test.ext.junit.runners.AndroidJUnit4 - +import androidx.test.platform.app.InstrumentationRegistry +import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith -import org.junit.Assert.* - /** * Instrumented test, which will execute on an Android device. * diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 132d3fe10..f243d312d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,11 +1,18 @@ + - + - + + + @@ -22,38 +29,56 @@ - + - - + + - + - - + + - + + - + + android:icon="@drawable/app_logo" + android:label="@string/perm_external_control_label" /> - + android:icon="@drawable/app_logo" + android:label="@string/perm_external_control_label" + android:permissionGroup="com.sameerasw.essentials.permission-group.EXTERNAL_CONTROL" + android:protectionLevel="dangerous" /> + - + @@ -63,17 +88,19 @@ android:name=".EssentialsApp" android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" + android:enableOnBackInvokedCallback="true" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="Essentials" android:localeConfig="@xml/locales_config" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" - android:enableOnBackInvokedCallback="true" android:theme="@style/Theme.Essentials"> - + + + - + android:exported="true" + android:noHistory="true" + android:theme="@android:style/Theme.Translucent.NoTitleBar"> @@ -127,37 +158,32 @@ android:name=".FeatureSettingsActivity" android:exported="false" android:label="Feature Settings" - android:theme="@style/Theme.Essentials"> - + android:theme="@style/Theme.Essentials"> - + android:theme="@style/Theme.Essentials"> - + android:theme="@style/Theme.Essentials"> - + android:theme="@style/Theme.Essentials"> - + android:theme="@style/Theme.Essentials.Translucent"> + android:targetActivity=".ui.activities.AppFreezingActivity"> @@ -209,31 +235,31 @@ + android:taskAffinity="com.sameerasw.essentials.action" + android:theme="@android:style/Theme.Translucent.NoTitleBar" /> + android:taskAffinity="com.sameerasw.essentials.pixelsearchbar" + android:theme="@android:style/Theme.Translucent.NoTitleBar" /> + android:targetActivity=".ui.activities.ActionShortcutActivity"> @@ -252,8 +278,10 @@ + + @@ -282,24 +310,24 @@ @@ -310,9 +338,9 @@ @@ -324,24 +352,24 @@ @@ -366,8 +394,8 @@ + android:exported="true" + android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"> @@ -378,8 +406,8 @@ + android:exported="true" + android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"> @@ -393,10 +421,12 @@ android:multiprocess="false" android:permission="android.permission.INTERACT_ACROSS_USERS_FULL" /> - - @@ -405,14 +435,17 @@ android:exported="true"> - + + android:exported="true" + android:label="@string/feat_pixel_searchbar_title"> @@ -446,8 +479,8 @@ @@ -458,8 +491,8 @@ + android:exported="true" + android:label="@string/batteries_widget_label"> @@ -480,8 +513,8 @@ + android:exported="true" + android:label="@string/favorites_widget_name"> @@ -501,14 +534,16 @@ - - - - @@ -541,7 +578,8 @@ - @@ -554,7 +592,8 @@ - @@ -567,7 +606,8 @@ - @@ -580,7 +620,8 @@ - @@ -593,7 +634,8 @@ - @@ -606,10 +648,11 @@ - - + - - - - + + android:permission="android.permission.BIND_INPUT_METHOD"> - + - + - + + android:permission="android.permission.BIND_CONDITION_PROVIDER_SERVICE"> @@ -694,27 +743,29 @@ + android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"> - + android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"> - @@ -727,7 +778,8 @@ - @@ -740,7 +792,8 @@ - @@ -753,7 +806,8 @@ - @@ -766,7 +820,8 @@ - @@ -779,10 +834,11 @@ - - + - @@ -806,10 +863,11 @@ - - + - - + - @@ -857,7 +917,8 @@ - @@ -870,7 +931,8 @@ - @@ -884,7 +946,8 @@ - @@ -897,14 +960,15 @@ - + android:exported="true" + android:permission="android.permission.BIND_DEVICE_ADMIN"> @@ -965,7 +1029,7 @@ - + + android:permission="android.permission.BIND_WALLPAPER"> @@ -1019,8 +1083,8 @@ @@ -1030,8 +1094,8 @@ diff --git a/app/src/main/assets/emojis.json b/app/src/main/assets/emojis.json index c72ed1a88..41ec89353 100644 --- a/app/src/main/assets/emojis.json +++ b/app/src/main/assets/emojis.json @@ -1,14674 +1,14674 @@ { - "@version": "16.0.0", - "@author": "Chalda Pnuzig ", - "@copyright": "Chalda Pnuzig 2021-2024", - "@see": "{@link https://github.com/chalda-pnuzig/emojis.json|GitHub}", - "@license": "ISC", - "emojis": { - "Smileys & Emotion": { - "face-smiling": [ - { - "code": [ - "1F600" - ], - "emoji": "😀", - "name": "grinning face" - }, - { - "code": [ - "1F603" - ], - "emoji": "😃", - "name": "grinning face with big eyes" - }, - { - "code": [ - "1F604" - ], - "emoji": "😄", - "name": "grinning face with smiling eyes" - }, - { - "code": [ - "1F601" - ], - "emoji": "😁", - "name": "beaming face with smiling eyes" - }, - { - "code": [ - "1F606" - ], - "emoji": "😆", - "name": "grinning squinting face" - }, - { - "code": [ - "1F605" - ], - "emoji": "😅", - "name": "grinning face with sweat" - }, - { - "code": [ - "1F923" - ], - "emoji": "🤣", - "name": "rolling on the floor laughing" - }, - { - "code": [ - "1F602" - ], - "emoji": "😂", - "name": "face with tears of joy" - }, - { - "code": [ - "1F642" - ], - "emoji": "🙂", - "name": "slightly smiling face" - }, - { - "code": [ - "1F643" - ], - "emoji": "🙃", - "name": "upside-down face" - }, - { - "code": [ - "1FAE0" - ], - "emoji": "🫠", - "name": "melting face" - }, - { - "code": [ - "1F609" - ], - "emoji": "😉", - "name": "winking face" - }, - { - "code": [ - "1F60A" - ], - "emoji": "😊", - "name": "smiling face with smiling eyes" - }, - { - "code": [ - "1F607" - ], - "emoji": "😇", - "name": "smiling face with halo" - } - ], - "face-affection": [ - { - "code": [ - "1F970" - ], - "emoji": "🥰", - "name": "smiling face with hearts" - }, - { - "code": [ - "1F60D" - ], - "emoji": "😍", - "name": "smiling face with heart-eyes" - }, - { - "code": [ - "1F929" - ], - "emoji": "🤩", - "name": "star-struck" - }, - { - "code": [ - "1F618" - ], - "emoji": "😘", - "name": "face blowing a kiss" - }, - { - "code": [ - "1F617" - ], - "emoji": "😗", - "name": "kissing face" - }, - { - "code": [ - "263A" - ], - "emoji": "☺", - "name": "smiling face" - }, - { - "code": [ - "1F61A" - ], - "emoji": "😚", - "name": "kissing face with closed eyes" - }, - { - "code": [ - "1F619" - ], - "emoji": "😙", - "name": "kissing face with smiling eyes" - }, - { - "code": [ - "1F972" - ], - "emoji": "🥲", - "name": "smiling face with tear" - } - ], - "face-tongue": [ - { - "code": [ - "1F60B" - ], - "emoji": "😋", - "name": "face savoring food" - }, - { - "code": [ - "1F61B" - ], - "emoji": "😛", - "name": "face with tongue" - }, - { - "code": [ - "1F61C" - ], - "emoji": "😜", - "name": "winking face with tongue" - }, - { - "code": [ - "1F92A" - ], - "emoji": "🤪", - "name": "zany face" - }, - { - "code": [ - "1F61D" - ], - "emoji": "😝", - "name": "squinting face with tongue" - }, - { - "code": [ - "1F911" - ], - "emoji": "🤑", - "name": "money-mouth face" - } - ], - "face-hand": [ - { - "code": [ - "1F917" - ], - "emoji": "🤗", - "name": "smiling face with open hands" - }, - { - "code": [ - "1F92D" - ], - "emoji": "🤭", - "name": "face with hand over mouth" - }, - { - "code": [ - "1FAE2" - ], - "emoji": "🫢", - "name": "face with open eyes and hand over mouth" - }, - { - "code": [ - "1FAE3" - ], - "emoji": "🫣", - "name": "face with peeking eye" - }, - { - "code": [ - "1F92B" - ], - "emoji": "🤫", - "name": "shushing face" - }, - { - "code": [ - "1F914" - ], - "emoji": "🤔", - "name": "thinking face" - }, - { - "code": [ - "1FAE1" - ], - "emoji": "🫡", - "name": "saluting face" - } - ], - "face-neutral-skeptical": [ - { - "code": [ - "1F910" - ], - "emoji": "🤐", - "name": "zipper-mouth face" - }, - { - "code": [ - "1F928" - ], - "emoji": "🤨", - "name": "face with raised eyebrow" - }, - { - "code": [ - "1F610" - ], - "emoji": "😐", - "name": "neutral face" - }, - { - "code": [ - "1F611" - ], - "emoji": "😑", - "name": "expressionless face" - }, - { - "code": [ - "1F636" - ], - "emoji": "😶", - "name": "face without mouth" - }, - { - "code": [ - "1FAE5" - ], - "emoji": "🫥", - "name": "dotted line face" - }, - { - "code": [ - "1F636", - "200D", - "1F32B", - "FE0F" - ], - "emoji": "😶‍🌫️", - "name": "face in clouds" - }, - { - "code": [ - "1F60F" - ], - "emoji": "😏", - "name": "smirking face" - }, - { - "code": [ - "1F612" - ], - "emoji": "😒", - "name": "unamused face" - }, - { - "code": [ - "1F644" - ], - "emoji": "🙄", - "name": "face with rolling eyes" - }, - { - "code": [ - "1F62C" - ], - "emoji": "😬", - "name": "grimacing face" - }, - { - "code": [ - "1F62E", - "200D", - "1F4A8" - ], - "emoji": "😮‍💨", - "name": "face exhaling" - }, - { - "code": [ - "1F925" - ], - "emoji": "🤥", - "name": "lying face" - }, - { - "code": [ - "1FAE8" - ], - "emoji": "🫨", - "name": "shaking face" - }, - { - "code": [ - "1F642", - "200D", - "2194", - "FE0F" - ], - "emoji": "🙂‍↔️", - "name": "head shaking horizontally" - }, - { - "code": [ - "1F642", - "200D", - "2195", - "FE0F" - ], - "emoji": "🙂‍↕️", - "name": "head shaking vertically" - } - ], - "face-sleepy": [ - { - "code": [ - "1F60C" - ], - "emoji": "😌", - "name": "relieved face" - }, - { - "code": [ - "1F614" - ], - "emoji": "😔", - "name": "pensive face" - }, - { - "code": [ - "1F62A" - ], - "emoji": "😪", - "name": "sleepy face" - }, - { - "code": [ - "1F924" - ], - "emoji": "🤤", - "name": "drooling face" - }, - { - "code": [ - "1F634" - ], - "emoji": "😴", - "name": "sleeping face" - }, - { - "code": [ - "1FAE9" - ], - "emoji": "🫩", - "name": "face with bags under eyes" - } - ], - "face-unwell": [ - { - "code": [ - "1F637" - ], - "emoji": "😷", - "name": "face with medical mask" - }, - { - "code": [ - "1F912" - ], - "emoji": "🤒", - "name": "face with thermometer" - }, - { - "code": [ - "1F915" - ], - "emoji": "🤕", - "name": "face with head-bandage" - }, - { - "code": [ - "1F922" - ], - "emoji": "🤢", - "name": "nauseated face" - }, - { - "code": [ - "1F92E" - ], - "emoji": "🤮", - "name": "face vomiting" - }, - { - "code": [ - "1F927" - ], - "emoji": "🤧", - "name": "sneezing face" - }, - { - "code": [ - "1F975" - ], - "emoji": "🥵", - "name": "hot face" - }, - { - "code": [ - "1F976" - ], - "emoji": "🥶", - "name": "cold face" - }, - { - "code": [ - "1F974" - ], - "emoji": "🥴", - "name": "woozy face" - }, - { - "code": [ - "1F635" - ], - "emoji": "😵", - "name": "face with crossed-out eyes" - }, - { - "code": [ - "1F635", - "200D", - "1F4AB" - ], - "emoji": "😵‍💫", - "name": "face with spiral eyes" - }, - { - "code": [ - "1F92F" - ], - "emoji": "🤯", - "name": "exploding head" - } - ], - "face-hat": [ - { - "code": [ - "1F920" - ], - "emoji": "🤠", - "name": "cowboy hat face" - }, - { - "code": [ - "1F973" - ], - "emoji": "🥳", - "name": "partying face" - }, - { - "code": [ - "1F978" - ], - "emoji": "🥸", - "name": "disguised face" - } - ], - "face-glasses": [ - { - "code": [ - "1F60E" - ], - "emoji": "😎", - "name": "smiling face with sunglasses" - }, - { - "code": [ - "1F913" - ], - "emoji": "🤓", - "name": "nerd face" - }, - { - "code": [ - "1F9D0" - ], - "emoji": "🧐", - "name": "face with monocle" - } - ], - "face-concerned": [ - { - "code": [ - "1F615" - ], - "emoji": "😕", - "name": "confused face" - }, - { - "code": [ - "1FAE4" - ], - "emoji": "🫤", - "name": "face with diagonal mouth" - }, - { - "code": [ - "1F61F" - ], - "emoji": "😟", - "name": "worried face" - }, - { - "code": [ - "1F641" - ], - "emoji": "🙁", - "name": "slightly frowning face" - }, - { - "code": [ - "2639" - ], - "emoji": "☹", - "name": "frowning face" - }, - { - "code": [ - "1F62E" - ], - "emoji": "😮", - "name": "face with open mouth" - }, - { - "code": [ - "1F62F" - ], - "emoji": "😯", - "name": "hushed face" - }, - { - "code": [ - "1F632" - ], - "emoji": "😲", - "name": "astonished face" - }, - { - "code": [ - "1F633" - ], - "emoji": "😳", - "name": "flushed face" - }, - { - "code": [ - "1F97A" - ], - "emoji": "🥺", - "name": "pleading face" - }, - { - "code": [ - "1F979" - ], - "emoji": "🥹", - "name": "face holding back tears" - }, - { - "code": [ - "1F626" - ], - "emoji": "😦", - "name": "frowning face with open mouth" - }, - { - "code": [ - "1F627" - ], - "emoji": "😧", - "name": "anguished face" - }, - { - "code": [ - "1F628" - ], - "emoji": "😨", - "name": "fearful face" - }, - { - "code": [ - "1F630" - ], - "emoji": "😰", - "name": "anxious face with sweat" - }, - { - "code": [ - "1F625" - ], - "emoji": "😥", - "name": "sad but relieved face" - }, - { - "code": [ - "1F622" - ], - "emoji": "😢", - "name": "crying face" - }, - { - "code": [ - "1F62D" - ], - "emoji": "😭", - "name": "loudly crying face" - }, - { - "code": [ - "1F631" - ], - "emoji": "😱", - "name": "face screaming in fear" - }, - { - "code": [ - "1F616" - ], - "emoji": "😖", - "name": "confounded face" - }, - { - "code": [ - "1F623" - ], - "emoji": "😣", - "name": "persevering face" - }, - { - "code": [ - "1F61E" - ], - "emoji": "😞", - "name": "disappointed face" - }, - { - "code": [ - "1F613" - ], - "emoji": "😓", - "name": "downcast face with sweat" - }, - { - "code": [ - "1F629" - ], - "emoji": "😩", - "name": "weary face" - }, - { - "code": [ - "1F62B" - ], - "emoji": "😫", - "name": "tired face" - }, - { - "code": [ - "1F971" - ], - "emoji": "🥱", - "name": "yawning face" - } - ], - "face-negative": [ - { - "code": [ - "1F624" - ], - "emoji": "😤", - "name": "face with steam from nose" - }, - { - "code": [ - "1F621" - ], - "emoji": "😡", - "name": "enraged face" - }, - { - "code": [ - "1F620" - ], - "emoji": "😠", - "name": "angry face" - }, - { - "code": [ - "1F92C" - ], - "emoji": "🤬", - "name": "face with symbols on mouth" - }, - { - "code": [ - "1F608" - ], - "emoji": "😈", - "name": "smiling face with horns" - }, - { - "code": [ - "1F47F" - ], - "emoji": "👿", - "name": "angry face with horns" - }, - { - "code": [ - "1F480" - ], - "emoji": "💀", - "name": "skull" - }, - { - "code": [ - "2620" - ], - "emoji": "☠", - "name": "skull and crossbones" - } - ], - "face-costume": [ - { - "code": [ - "1F4A9" - ], - "emoji": "💩", - "name": "pile of poo" - }, - { - "code": [ - "1F921" - ], - "emoji": "🤡", - "name": "clown face" - }, - { - "code": [ - "1F479" - ], - "emoji": "👹", - "name": "ogre" - }, - { - "code": [ - "1F47A" - ], - "emoji": "👺", - "name": "goblin" - }, - { - "code": [ - "1F47B" - ], - "emoji": "👻", - "name": "ghost" - }, - { - "code": [ - "1F47D" - ], - "emoji": "👽", - "name": "alien" - }, - { - "code": [ - "1F47E" - ], - "emoji": "👾", - "name": "alien monster" - }, - { - "code": [ - "1F916" - ], - "emoji": "🤖", - "name": "robot" - } - ], - "cat-face": [ - { - "code": [ - "1F63A" - ], - "emoji": "😺", - "name": "grinning cat" - }, - { - "code": [ - "1F638" - ], - "emoji": "😸", - "name": "grinning cat with smiling eyes" - }, - { - "code": [ - "1F639" - ], - "emoji": "😹", - "name": "cat with tears of joy" - }, - { - "code": [ - "1F63B" - ], - "emoji": "😻", - "name": "smiling cat with heart-eyes" - }, - { - "code": [ - "1F63C" - ], - "emoji": "😼", - "name": "cat with wry smile" - }, - { - "code": [ - "1F63D" - ], - "emoji": "😽", - "name": "kissing cat" - }, - { - "code": [ - "1F640" - ], - "emoji": "🙀", - "name": "weary cat" - }, - { - "code": [ - "1F63F" - ], - "emoji": "😿", - "name": "crying cat" - }, - { - "code": [ - "1F63E" - ], - "emoji": "😾", - "name": "pouting cat" - } - ], - "monkey-face": [ - { - "code": [ - "1F648" - ], - "emoji": "🙈", - "name": "see-no-evil monkey" - }, - { - "code": [ - "1F649" - ], - "emoji": "🙉", - "name": "hear-no-evil monkey" - }, - { - "code": [ - "1F64A" - ], - "emoji": "🙊", - "name": "speak-no-evil monkey" - } - ], - "heart": [ - { - "code": [ - "1F48C" - ], - "emoji": "💌", - "name": "love letter" - }, - { - "code": [ - "1F498" - ], - "emoji": "💘", - "name": "heart with arrow" - }, - { - "code": [ - "1F49D" - ], - "emoji": "💝", - "name": "heart with ribbon" - }, - { - "code": [ - "1F496" - ], - "emoji": "💖", - "name": "sparkling heart" - }, - { - "code": [ - "1F497" - ], - "emoji": "💗", - "name": "growing heart" - }, - { - "code": [ - "1F493" - ], - "emoji": "💓", - "name": "beating heart" - }, - { - "code": [ - "1F49E" - ], - "emoji": "💞", - "name": "revolving hearts" - }, - { - "code": [ - "1F495" - ], - "emoji": "💕", - "name": "two hearts" - }, - { - "code": [ - "1F49F" - ], - "emoji": "💟", - "name": "heart decoration" - }, - { - "code": [ - "2763" - ], - "emoji": "❣", - "name": "heart exclamation" - }, - { - "code": [ - "1F494" - ], - "emoji": "💔", - "name": "broken heart" - }, - { - "code": [ - "2764", - "FE0F", - "200D", - "1F525" - ], - "emoji": "❤️‍🔥", - "name": "heart on fire" - }, - { - "code": [ - "2764", - "FE0F", - "200D", - "1FA79" - ], - "emoji": "❤️‍🩹", - "name": "mending heart" - }, - { - "code": [ - "2764" - ], - "emoji": "❤", - "name": "red heart" - }, - { - "code": [ - "1FA77" - ], - "emoji": "🩷", - "name": "pink heart" - }, - { - "code": [ - "1F9E1" - ], - "emoji": "🧡", - "name": "orange heart" - }, - { - "code": [ - "1F49B" - ], - "emoji": "💛", - "name": "yellow heart" - }, - { - "code": [ - "1F49A" - ], - "emoji": "💚", - "name": "green heart" - }, - { - "code": [ - "1F499" - ], - "emoji": "💙", - "name": "blue heart" - }, - { - "code": [ - "1FA75" - ], - "emoji": "🩵", - "name": "light blue heart" - }, - { - "code": [ - "1F49C" - ], - "emoji": "💜", - "name": "purple heart" - }, - { - "code": [ - "1F90E" - ], - "emoji": "🤎", - "name": "brown heart" - }, - { - "code": [ - "1F5A4" - ], - "emoji": "🖤", - "name": "black heart" - }, - { - "code": [ - "1FA76" - ], - "emoji": "🩶", - "name": "grey heart" - }, - { - "code": [ - "1F90D" - ], - "emoji": "🤍", - "name": "white heart" - } - ], - "emotion": [ - { - "code": [ - "1F48B" - ], - "emoji": "💋", - "name": "kiss mark" - }, - { - "code": [ - "1F4AF" - ], - "emoji": "💯", - "name": "hundred points" - }, - { - "code": [ - "1F4A2" - ], - "emoji": "💢", - "name": "anger symbol" - }, - { - "code": [ - "1F4A5" - ], - "emoji": "💥", - "name": "collision" - }, - { - "code": [ - "1F4AB" - ], - "emoji": "💫", - "name": "dizzy" - }, - { - "code": [ - "1F4A6" - ], - "emoji": "💦", - "name": "sweat droplets" - }, - { - "code": [ - "1F4A8" - ], - "emoji": "💨", - "name": "dashing away" - }, - { - "code": [ - "1F573" - ], - "emoji": "🕳", - "name": "hole" - }, - { - "code": [ - "1F4AC" - ], - "emoji": "💬", - "name": "speech balloon" - }, - { - "code": [ - "1F441", - "FE0F", - "200D", - "1F5E8", - "FE0F" - ], - "emoji": "👁️‍🗨️", - "name": "eye in speech bubble" - }, - { - "code": [ - "1F5E8" - ], - "emoji": "🗨", - "name": "left speech bubble" - }, - { - "code": [ - "1F5EF" - ], - "emoji": "🗯", - "name": "right anger bubble" - }, - { - "code": [ - "1F4AD" - ], - "emoji": "💭", - "name": "thought balloon" - }, - { - "code": [ - "1F4A4" - ], - "emoji": "💤", - "name": "ZZZ" - } - ] - }, - "People & Body": { - "hand-fingers-open": [ - { - "code": [ - "1F44B" - ], - "emoji": "👋", - "name": "waving hand" - }, - { - "code": [ - "1F91A" - ], - "emoji": "🤚", - "name": "raised back of hand" - }, - { - "code": [ - "1F590" - ], - "emoji": "🖐", - "name": "hand with fingers splayed" - }, - { - "code": [ - "270B" - ], - "emoji": "✋", - "name": "raised hand" - }, - { - "code": [ - "1F596" - ], - "emoji": "🖖", - "name": "vulcan salute" - }, - { - "code": [ - "1FAF1" - ], - "emoji": "🫱", - "name": "rightwards hand" - }, - { - "code": [ - "1FAF2" - ], - "emoji": "🫲", - "name": "leftwards hand" - }, - { - "code": [ - "1FAF3" - ], - "emoji": "🫳", - "name": "palm down hand" - }, - { - "code": [ - "1FAF4" - ], - "emoji": "🫴", - "name": "palm up hand" - }, - { - "code": [ - "1FAF7" - ], - "emoji": "🫷", - "name": "leftwards pushing hand" - }, - { - "code": [ - "1FAF8" - ], - "emoji": "🫸", - "name": "rightwards pushing hand" - } - ], - "hand-fingers-partial": [ - { - "code": [ - "1F44C" - ], - "emoji": "👌", - "name": "OK hand" - }, - { - "code": [ - "1F90C" - ], - "emoji": "🤌", - "name": "pinched fingers" - }, - { - "code": [ - "1F90F" - ], - "emoji": "🤏", - "name": "pinching hand" - }, - { - "code": [ - "270C" - ], - "emoji": "✌", - "name": "victory hand" - }, - { - "code": [ - "1F91E" - ], - "emoji": "🤞", - "name": "crossed fingers" - }, - { - "code": [ - "1FAF0" - ], - "emoji": "🫰", - "name": "hand with index finger and thumb crossed" - }, - { - "code": [ - "1F91F" - ], - "emoji": "🤟", - "name": "love-you gesture" - }, - { - "code": [ - "1F918" - ], - "emoji": "🤘", - "name": "sign of the horns" - }, - { - "code": [ - "1F919" - ], - "emoji": "🤙", - "name": "call me hand" - } - ], - "hand-single-finger": [ - { - "code": [ - "1F448" - ], - "emoji": "👈", - "name": "backhand index pointing left" - }, - { - "code": [ - "1F449" - ], - "emoji": "👉", - "name": "backhand index pointing right" - }, - { - "code": [ - "1F446" - ], - "emoji": "👆", - "name": "backhand index pointing up" - }, - { - "code": [ - "1F595" - ], - "emoji": "🖕", - "name": "middle finger" - }, - { - "code": [ - "1F447" - ], - "emoji": "👇", - "name": "backhand index pointing down" - }, - { - "code": [ - "261D" - ], - "emoji": "☝", - "name": "index pointing up" - }, - { - "code": [ - "1FAF5" - ], - "emoji": "🫵", - "name": "index pointing at the viewer" - } - ], - "hand-fingers-closed": [ - { - "code": [ - "1F44D" - ], - "emoji": "👍", - "name": "thumbs up" - }, - { - "code": [ - "1F44E" - ], - "emoji": "👎", - "name": "thumbs down" - }, - { - "code": [ - "270A" - ], - "emoji": "✊", - "name": "raised fist" - }, - { - "code": [ - "1F44A" - ], - "emoji": "👊", - "name": "oncoming fist" - }, - { - "code": [ - "1F91B" - ], - "emoji": "🤛", - "name": "left-facing fist" - }, - { - "code": [ - "1F91C" - ], - "emoji": "🤜", - "name": "right-facing fist" - } - ], - "hands": [ - { - "code": [ - "1F44F" - ], - "emoji": "👏", - "name": "clapping hands" - }, - { - "code": [ - "1F64C" - ], - "emoji": "🙌", - "name": "raising hands" - }, - { - "code": [ - "1FAF6" - ], - "emoji": "🫶", - "name": "heart hands" - }, - { - "code": [ - "1F450" - ], - "emoji": "👐", - "name": "open hands" - }, - { - "code": [ - "1F932" - ], - "emoji": "🤲", - "name": "palms up together" - }, - { - "code": [ - "1F91D" - ], - "emoji": "🤝", - "name": "handshake" - }, - { - "code": [ - "1F64F" - ], - "emoji": "🙏", - "name": "folded hands" - } - ], - "hand-prop": [ - { - "code": [ - "270D" - ], - "emoji": "✍", - "name": "writing hand" - }, - { - "code": [ - "1F485" - ], - "emoji": "💅", - "name": "nail polish" - }, - { - "code": [ - "1F933" - ], - "emoji": "🤳", - "name": "selfie" - } - ], - "body-parts": [ - { - "code": [ - "1F4AA" - ], - "emoji": "💪", - "name": "flexed biceps" - }, - { - "code": [ - "1F9BE" - ], - "emoji": "🦾", - "name": "mechanical arm" - }, - { - "code": [ - "1F9BF" - ], - "emoji": "🦿", - "name": "mechanical leg" - }, - { - "code": [ - "1F9B5" - ], - "emoji": "🦵", - "name": "leg" - }, - { - "code": [ - "1F9B6" - ], - "emoji": "🦶", - "name": "foot" - }, - { - "code": [ - "1F442" - ], - "emoji": "👂", - "name": "ear" - }, - { - "code": [ - "1F9BB" - ], - "emoji": "🦻", - "name": "ear with hearing aid" - }, - { - "code": [ - "1F443" - ], - "emoji": "👃", - "name": "nose" - }, - { - "code": [ - "1F9E0" - ], - "emoji": "🧠", - "name": "brain" - }, - { - "code": [ - "1FAC0" - ], - "emoji": "🫀", - "name": "anatomical heart" - }, - { - "code": [ - "1FAC1" - ], - "emoji": "🫁", - "name": "lungs" - }, - { - "code": [ - "1F9B7" - ], - "emoji": "🦷", - "name": "tooth" - }, - { - "code": [ - "1F9B4" - ], - "emoji": "🦴", - "name": "bone" - }, - { - "code": [ - "1F440" - ], - "emoji": "👀", - "name": "eyes" - }, - { - "code": [ - "1F441" - ], - "emoji": "👁", - "name": "eye" - }, - { - "code": [ - "1F445" - ], - "emoji": "👅", - "name": "tongue" - }, - { - "code": [ - "1F444" - ], - "emoji": "👄", - "name": "mouth" - }, - { - "code": [ - "1FAE6" - ], - "emoji": "🫦", - "name": "biting lip" - } - ], - "person": [ - { - "code": [ - "1F476" - ], - "emoji": "👶", - "name": "baby" - }, - { - "code": [ - "1F9D2" - ], - "emoji": "🧒", - "name": "child" - }, - { - "code": [ - "1F466" - ], - "emoji": "👦", - "name": "boy" - }, - { - "code": [ - "1F467" - ], - "emoji": "👧", - "name": "girl" - }, - { - "code": [ - "1F9D1" - ], - "emoji": "🧑", - "name": "person" - }, - { - "code": [ - "1F471" - ], - "emoji": "👱", - "name": "person: blond hair" - }, - { - "code": [ - "1F468" - ], - "emoji": "👨", - "name": "man" - }, - { - "code": [ - "1F9D4" - ], - "emoji": "🧔", - "name": "person: beard" - }, - { - "code": [ - "1F9D4", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧔‍♂️", - "name": "man: beard" - }, - { - "code": [ - "1F9D4", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧔‍♀️", - "name": "woman: beard" - }, - { - "code": [ - "1F468", - "200D", - "1F9B0" - ], - "emoji": "👨‍🦰", - "name": "man: red hair" - }, - { - "code": [ - "1F468", - "200D", - "1F9B1" - ], - "emoji": "👨‍🦱", - "name": "man: curly hair" - }, - { - "code": [ - "1F468", - "200D", - "1F9B3" - ], - "emoji": "👨‍🦳", - "name": "man: white hair" - }, - { - "code": [ - "1F468", - "200D", - "1F9B2" - ], - "emoji": "👨‍🦲", - "name": "man: bald" - }, - { - "code": [ - "1F469" - ], - "emoji": "👩", - "name": "woman" - }, - { - "code": [ - "1F469", - "200D", - "1F9B0" - ], - "emoji": "👩‍🦰", - "name": "woman: red hair" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9B0" - ], - "emoji": "🧑‍🦰", - "name": "person: red hair" - }, - { - "code": [ - "1F469", - "200D", - "1F9B1" - ], - "emoji": "👩‍🦱", - "name": "woman: curly hair" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9B1" - ], - "emoji": "🧑‍🦱", - "name": "person: curly hair" - }, - { - "code": [ - "1F469", - "200D", - "1F9B3" - ], - "emoji": "👩‍🦳", - "name": "woman: white hair" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9B3" - ], - "emoji": "🧑‍🦳", - "name": "person: white hair" - }, - { - "code": [ - "1F469", - "200D", - "1F9B2" - ], - "emoji": "👩‍🦲", - "name": "woman: bald" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9B2" - ], - "emoji": "🧑‍🦲", - "name": "person: bald" - }, - { - "code": [ - "1F471", - "200D", - "2640", - "FE0F" - ], - "emoji": "👱‍♀️", - "name": "woman: blond hair" - }, - { - "code": [ - "1F471", - "200D", - "2642", - "FE0F" - ], - "emoji": "👱‍♂️", - "name": "man: blond hair" - }, - { - "code": [ - "1F9D3" - ], - "emoji": "🧓", - "name": "older person" - }, - { - "code": [ - "1F474" - ], - "emoji": "👴", - "name": "old man" - }, - { - "code": [ - "1F475" - ], - "emoji": "👵", - "name": "old woman" - } - ], - "person-gesture": [ - { - "code": [ - "1F64D" - ], - "emoji": "🙍", - "name": "person frowning" - }, - { - "code": [ - "1F64D", - "200D", - "2642", - "FE0F" - ], - "emoji": "🙍‍♂️", - "name": "man frowning" - }, - { - "code": [ - "1F64D", - "200D", - "2640", - "FE0F" - ], - "emoji": "🙍‍♀️", - "name": "woman frowning" - }, - { - "code": [ - "1F64E" - ], - "emoji": "🙎", - "name": "person pouting" - }, - { - "code": [ - "1F64E", - "200D", - "2642", - "FE0F" - ], - "emoji": "🙎‍♂️", - "name": "man pouting" - }, - { - "code": [ - "1F64E", - "200D", - "2640", - "FE0F" - ], - "emoji": "🙎‍♀️", - "name": "woman pouting" - }, - { - "code": [ - "1F645" - ], - "emoji": "🙅", - "name": "person gesturing NO" - }, - { - "code": [ - "1F645", - "200D", - "2642", - "FE0F" - ], - "emoji": "🙅‍♂️", - "name": "man gesturing NO" - }, - { - "code": [ - "1F645", - "200D", - "2640", - "FE0F" - ], - "emoji": "🙅‍♀️", - "name": "woman gesturing NO" - }, - { - "code": [ - "1F646" - ], - "emoji": "🙆", - "name": "person gesturing OK" - }, - { - "code": [ - "1F646", - "200D", - "2642", - "FE0F" - ], - "emoji": "🙆‍♂️", - "name": "man gesturing OK" - }, - { - "code": [ - "1F646", - "200D", - "2640", - "FE0F" - ], - "emoji": "🙆‍♀️", - "name": "woman gesturing OK" - }, - { - "code": [ - "1F481" - ], - "emoji": "💁", - "name": "person tipping hand" - }, - { - "code": [ - "1F481", - "200D", - "2642", - "FE0F" - ], - "emoji": "💁‍♂️", - "name": "man tipping hand" - }, - { - "code": [ - "1F481", - "200D", - "2640", - "FE0F" - ], - "emoji": "💁‍♀️", - "name": "woman tipping hand" - }, - { - "code": [ - "1F64B" - ], - "emoji": "🙋", - "name": "person raising hand" - }, - { - "code": [ - "1F64B", - "200D", - "2642", - "FE0F" - ], - "emoji": "🙋‍♂️", - "name": "man raising hand" - }, - { - "code": [ - "1F64B", - "200D", - "2640", - "FE0F" - ], - "emoji": "🙋‍♀️", - "name": "woman raising hand" - }, - { - "code": [ - "1F9CF" - ], - "emoji": "🧏", - "name": "deaf person" - }, - { - "code": [ - "1F9CF", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧏‍♂️", - "name": "deaf man" - }, - { - "code": [ - "1F9CF", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧏‍♀️", - "name": "deaf woman" - }, - { - "code": [ - "1F647" - ], - "emoji": "🙇", - "name": "person bowing" - }, - { - "code": [ - "1F647", - "200D", - "2642", - "FE0F" - ], - "emoji": "🙇‍♂️", - "name": "man bowing" - }, - { - "code": [ - "1F647", - "200D", - "2640", - "FE0F" - ], - "emoji": "🙇‍♀️", - "name": "woman bowing" - }, - { - "code": [ - "1F926" - ], - "emoji": "🤦", - "name": "person facepalming" - }, - { - "code": [ - "1F926", - "200D", - "2642", - "FE0F" - ], - "emoji": "🤦‍♂️", - "name": "man facepalming" - }, - { - "code": [ - "1F926", - "200D", - "2640", - "FE0F" - ], - "emoji": "🤦‍♀️", - "name": "woman facepalming" - }, - { - "code": [ - "1F937" - ], - "emoji": "🤷", - "name": "person shrugging" - }, - { - "code": [ - "1F937", - "200D", - "2642", - "FE0F" - ], - "emoji": "🤷‍♂️", - "name": "man shrugging" - }, - { - "code": [ - "1F937", - "200D", - "2640", - "FE0F" - ], - "emoji": "🤷‍♀️", - "name": "woman shrugging" - } - ], - "person-role": [ - { - "code": [ - "1F9D1", - "200D", - "2695", - "FE0F" - ], - "emoji": "🧑‍⚕️", - "name": "health worker" - }, - { - "code": [ - "1F468", - "200D", - "2695", - "FE0F" - ], - "emoji": "👨‍⚕️", - "name": "man health worker" - }, - { - "code": [ - "1F469", - "200D", - "2695", - "FE0F" - ], - "emoji": "👩‍⚕️", - "name": "woman health worker" - }, - { - "code": [ - "1F9D1", - "200D", - "1F393" - ], - "emoji": "🧑‍🎓", - "name": "student" - }, - { - "code": [ - "1F468", - "200D", - "1F393" - ], - "emoji": "👨‍🎓", - "name": "man student" - }, - { - "code": [ - "1F469", - "200D", - "1F393" - ], - "emoji": "👩‍🎓", - "name": "woman student" - }, - { - "code": [ - "1F9D1", - "200D", - "1F3EB" - ], - "emoji": "🧑‍🏫", - "name": "teacher" - }, - { - "code": [ - "1F468", - "200D", - "1F3EB" - ], - "emoji": "👨‍🏫", - "name": "man teacher" - }, - { - "code": [ - "1F469", - "200D", - "1F3EB" - ], - "emoji": "👩‍🏫", - "name": "woman teacher" - }, - { - "code": [ - "1F9D1", - "200D", - "2696", - "FE0F" - ], - "emoji": "🧑‍⚖️", - "name": "judge" - }, - { - "code": [ - "1F468", - "200D", - "2696", - "FE0F" - ], - "emoji": "👨‍⚖️", - "name": "man judge" - }, - { - "code": [ - "1F469", - "200D", - "2696", - "FE0F" - ], - "emoji": "👩‍⚖️", - "name": "woman judge" - }, - { - "code": [ - "1F9D1", - "200D", - "1F33E" - ], - "emoji": "🧑‍🌾", - "name": "farmer" - }, - { - "code": [ - "1F468", - "200D", - "1F33E" - ], - "emoji": "👨‍🌾", - "name": "man farmer" - }, - { - "code": [ - "1F469", - "200D", - "1F33E" - ], - "emoji": "👩‍🌾", - "name": "woman farmer" - }, - { - "code": [ - "1F9D1", - "200D", - "1F373" - ], - "emoji": "🧑‍🍳", - "name": "cook" - }, - { - "code": [ - "1F468", - "200D", - "1F373" - ], - "emoji": "👨‍🍳", - "name": "man cook" - }, - { - "code": [ - "1F469", - "200D", - "1F373" - ], - "emoji": "👩‍🍳", - "name": "woman cook" - }, - { - "code": [ - "1F9D1", - "200D", - "1F527" - ], - "emoji": "🧑‍🔧", - "name": "mechanic" - }, - { - "code": [ - "1F468", - "200D", - "1F527" - ], - "emoji": "👨‍🔧", - "name": "man mechanic" - }, - { - "code": [ - "1F469", - "200D", - "1F527" - ], - "emoji": "👩‍🔧", - "name": "woman mechanic" - }, - { - "code": [ - "1F9D1", - "200D", - "1F3ED" - ], - "emoji": "🧑‍🏭", - "name": "factory worker" - }, - { - "code": [ - "1F468", - "200D", - "1F3ED" - ], - "emoji": "👨‍🏭", - "name": "man factory worker" - }, - { - "code": [ - "1F469", - "200D", - "1F3ED" - ], - "emoji": "👩‍🏭", - "name": "woman factory worker" - }, - { - "code": [ - "1F9D1", - "200D", - "1F4BC" - ], - "emoji": "🧑‍💼", - "name": "office worker" - }, - { - "code": [ - "1F468", - "200D", - "1F4BC" - ], - "emoji": "👨‍💼", - "name": "man office worker" - }, - { - "code": [ - "1F469", - "200D", - "1F4BC" - ], - "emoji": "👩‍💼", - "name": "woman office worker" - }, - { - "code": [ - "1F9D1", - "200D", - "1F52C" - ], - "emoji": "🧑‍🔬", - "name": "scientist" - }, - { - "code": [ - "1F468", - "200D", - "1F52C" - ], - "emoji": "👨‍🔬", - "name": "man scientist" - }, - { - "code": [ - "1F469", - "200D", - "1F52C" - ], - "emoji": "👩‍🔬", - "name": "woman scientist" - }, - { - "code": [ - "1F9D1", - "200D", - "1F4BB" - ], - "emoji": "🧑‍💻", - "name": "technologist" - }, - { - "code": [ - "1F468", - "200D", - "1F4BB" - ], - "emoji": "👨‍💻", - "name": "man technologist" - }, - { - "code": [ - "1F469", - "200D", - "1F4BB" - ], - "emoji": "👩‍💻", - "name": "woman technologist" - }, - { - "code": [ - "1F9D1", - "200D", - "1F3A4" - ], - "emoji": "🧑‍🎤", - "name": "singer" - }, - { - "code": [ - "1F468", - "200D", - "1F3A4" - ], - "emoji": "👨‍🎤", - "name": "man singer" - }, - { - "code": [ - "1F469", - "200D", - "1F3A4" - ], - "emoji": "👩‍🎤", - "name": "woman singer" - }, - { - "code": [ - "1F9D1", - "200D", - "1F3A8" - ], - "emoji": "🧑‍🎨", - "name": "artist" - }, - { - "code": [ - "1F468", - "200D", - "1F3A8" - ], - "emoji": "👨‍🎨", - "name": "man artist" - }, - { - "code": [ - "1F469", - "200D", - "1F3A8" - ], - "emoji": "👩‍🎨", - "name": "woman artist" - }, - { - "code": [ - "1F9D1", - "200D", - "2708", - "FE0F" - ], - "emoji": "🧑‍✈️", - "name": "pilot" - }, - { - "code": [ - "1F468", - "200D", - "2708", - "FE0F" - ], - "emoji": "👨‍✈️", - "name": "man pilot" - }, - { - "code": [ - "1F469", - "200D", - "2708", - "FE0F" - ], - "emoji": "👩‍✈️", - "name": "woman pilot" - }, - { - "code": [ - "1F9D1", - "200D", - "1F680" - ], - "emoji": "🧑‍🚀", - "name": "astronaut" - }, - { - "code": [ - "1F468", - "200D", - "1F680" - ], - "emoji": "👨‍🚀", - "name": "man astronaut" - }, - { - "code": [ - "1F469", - "200D", - "1F680" - ], - "emoji": "👩‍🚀", - "name": "woman astronaut" - }, - { - "code": [ - "1F9D1", - "200D", - "1F692" - ], - "emoji": "🧑‍🚒", - "name": "firefighter" - }, - { - "code": [ - "1F468", - "200D", - "1F692" - ], - "emoji": "👨‍🚒", - "name": "man firefighter" - }, - { - "code": [ - "1F469", - "200D", - "1F692" - ], - "emoji": "👩‍🚒", - "name": "woman firefighter" - }, - { - "code": [ - "1F46E" - ], - "emoji": "👮", - "name": "police officer" - }, - { - "code": [ - "1F46E", - "200D", - "2642", - "FE0F" - ], - "emoji": "👮‍♂️", - "name": "man police officer" - }, - { - "code": [ - "1F46E", - "200D", - "2640", - "FE0F" - ], - "emoji": "👮‍♀️", - "name": "woman police officer" - }, - { - "code": [ - "1F575" - ], - "emoji": "🕵", - "name": "detective" - }, - { - "code": [ - "1F575", - "FE0F", - "200D", - "2642", - "FE0F" - ], - "emoji": "🕵️‍♂️", - "name": "man detective" - }, - { - "code": [ - "1F575", - "FE0F", - "200D", - "2640", - "FE0F" - ], - "emoji": "🕵️‍♀️", - "name": "woman detective" - }, - { - "code": [ - "1F482" - ], - "emoji": "💂", - "name": "guard" - }, - { - "code": [ - "1F482", - "200D", - "2642", - "FE0F" - ], - "emoji": "💂‍♂️", - "name": "man guard" - }, - { - "code": [ - "1F482", - "200D", - "2640", - "FE0F" - ], - "emoji": "💂‍♀️", - "name": "woman guard" - }, - { - "code": [ - "1F977" - ], - "emoji": "🥷", - "name": "ninja" - }, - { - "code": [ - "1F477" - ], - "emoji": "👷", - "name": "construction worker" - }, - { - "code": [ - "1F477", - "200D", - "2642", - "FE0F" - ], - "emoji": "👷‍♂️", - "name": "man construction worker" - }, - { - "code": [ - "1F477", - "200D", - "2640", - "FE0F" - ], - "emoji": "👷‍♀️", - "name": "woman construction worker" - }, - { - "code": [ - "1FAC5" - ], - "emoji": "🫅", - "name": "person with crown" - }, - { - "code": [ - "1F934" - ], - "emoji": "🤴", - "name": "prince" - }, - { - "code": [ - "1F478" - ], - "emoji": "👸", - "name": "princess" - }, - { - "code": [ - "1F473" - ], - "emoji": "👳", - "name": "person wearing turban" - }, - { - "code": [ - "1F473", - "200D", - "2642", - "FE0F" - ], - "emoji": "👳‍♂️", - "name": "man wearing turban" - }, - { - "code": [ - "1F473", - "200D", - "2640", - "FE0F" - ], - "emoji": "👳‍♀️", - "name": "woman wearing turban" - }, - { - "code": [ - "1F472" - ], - "emoji": "👲", - "name": "person with skullcap" - }, - { - "code": [ - "1F9D5" - ], - "emoji": "🧕", - "name": "woman with headscarf" - }, - { - "code": [ - "1F935" - ], - "emoji": "🤵", - "name": "person in tuxedo" - }, - { - "code": [ - "1F935", - "200D", - "2642", - "FE0F" - ], - "emoji": "🤵‍♂️", - "name": "man in tuxedo" - }, - { - "code": [ - "1F935", - "200D", - "2640", - "FE0F" - ], - "emoji": "🤵‍♀️", - "name": "woman in tuxedo" - }, - { - "code": [ - "1F470" - ], - "emoji": "👰", - "name": "person with veil" - }, - { - "code": [ - "1F470", - "200D", - "2642", - "FE0F" - ], - "emoji": "👰‍♂️", - "name": "man with veil" - }, - { - "code": [ - "1F470", - "200D", - "2640", - "FE0F" - ], - "emoji": "👰‍♀️", - "name": "woman with veil" - }, - { - "code": [ - "1F930" - ], - "emoji": "🤰", - "name": "pregnant woman" - }, - { - "code": [ - "1FAC3" - ], - "emoji": "🫃", - "name": "pregnant man" - }, - { - "code": [ - "1FAC4" - ], - "emoji": "🫄", - "name": "pregnant person" - }, - { - "code": [ - "1F931" - ], - "emoji": "🤱", - "name": "breast-feeding" - }, - { - "code": [ - "1F469", - "200D", - "1F37C" - ], - "emoji": "👩‍🍼", - "name": "woman feeding baby" - }, - { - "code": [ - "1F468", - "200D", - "1F37C" - ], - "emoji": "👨‍🍼", - "name": "man feeding baby" - }, - { - "code": [ - "1F9D1", - "200D", - "1F37C" - ], - "emoji": "🧑‍🍼", - "name": "person feeding baby" - } - ], - "person-fantasy": [ - { - "code": [ - "1F47C" - ], - "emoji": "👼", - "name": "baby angel" - }, - { - "code": [ - "1F385" - ], - "emoji": "🎅", - "name": "Santa Claus" - }, - { - "code": [ - "1F936" - ], - "emoji": "🤶", - "name": "Mrs. Claus" - }, - { - "code": [ - "1F9D1", - "200D", - "1F384" - ], - "emoji": "🧑‍🎄", - "name": "Mx Claus" - }, - { - "code": [ - "1F9B8" - ], - "emoji": "🦸", - "name": "superhero" - }, - { - "code": [ - "1F9B8", - "200D", - "2642", - "FE0F" - ], - "emoji": "🦸‍♂️", - "name": "man superhero" - }, - { - "code": [ - "1F9B8", - "200D", - "2640", - "FE0F" - ], - "emoji": "🦸‍♀️", - "name": "woman superhero" - }, - { - "code": [ - "1F9B9" - ], - "emoji": "🦹", - "name": "supervillain" - }, - { - "code": [ - "1F9B9", - "200D", - "2642", - "FE0F" - ], - "emoji": "🦹‍♂️", - "name": "man supervillain" - }, - { - "code": [ - "1F9B9", - "200D", - "2640", - "FE0F" - ], - "emoji": "🦹‍♀️", - "name": "woman supervillain" - }, - { - "code": [ - "1F9D9" - ], - "emoji": "🧙", - "name": "mage" - }, - { - "code": [ - "1F9D9", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧙‍♂️", - "name": "man mage" - }, - { - "code": [ - "1F9D9", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧙‍♀️", - "name": "woman mage" - }, - { - "code": [ - "1F9DA" - ], - "emoji": "🧚", - "name": "fairy" - }, - { - "code": [ - "1F9DA", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧚‍♂️", - "name": "man fairy" - }, - { - "code": [ - "1F9DA", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧚‍♀️", - "name": "woman fairy" - }, - { - "code": [ - "1F9DB" - ], - "emoji": "🧛", - "name": "vampire" - }, - { - "code": [ - "1F9DB", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧛‍♂️", - "name": "man vampire" - }, - { - "code": [ - "1F9DB", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧛‍♀️", - "name": "woman vampire" - }, - { - "code": [ - "1F9DC" - ], - "emoji": "🧜", - "name": "merperson" - }, - { - "code": [ - "1F9DC", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧜‍♂️", - "name": "merman" - }, - { - "code": [ - "1F9DC", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧜‍♀️", - "name": "mermaid" - }, - { - "code": [ - "1F9DD" - ], - "emoji": "🧝", - "name": "elf" - }, - { - "code": [ - "1F9DD", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧝‍♂️", - "name": "man elf" - }, - { - "code": [ - "1F9DD", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧝‍♀️", - "name": "woman elf" - }, - { - "code": [ - "1F9DE" - ], - "emoji": "🧞", - "name": "genie" - }, - { - "code": [ - "1F9DE", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧞‍♂️", - "name": "man genie" - }, - { - "code": [ - "1F9DE", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧞‍♀️", - "name": "woman genie" - }, - { - "code": [ - "1F9DF" - ], - "emoji": "🧟", - "name": "zombie" - }, - { - "code": [ - "1F9DF", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧟‍♂️", - "name": "man zombie" - }, - { - "code": [ - "1F9DF", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧟‍♀️", - "name": "woman zombie" - }, - { - "code": [ - "1F9CC" - ], - "emoji": "🧌", - "name": "troll" - } - ], - "person-activity": [ - { - "code": [ - "1F486" - ], - "emoji": "💆", - "name": "person getting massage" - }, - { - "code": [ - "1F486", - "200D", - "2642", - "FE0F" - ], - "emoji": "💆‍♂️", - "name": "man getting massage" - }, - { - "code": [ - "1F486", - "200D", - "2640", - "FE0F" - ], - "emoji": "💆‍♀️", - "name": "woman getting massage" - }, - { - "code": [ - "1F487" - ], - "emoji": "💇", - "name": "person getting haircut" - }, - { - "code": [ - "1F487", - "200D", - "2642", - "FE0F" - ], - "emoji": "💇‍♂️", - "name": "man getting haircut" - }, - { - "code": [ - "1F487", - "200D", - "2640", - "FE0F" - ], - "emoji": "💇‍♀️", - "name": "woman getting haircut" - }, - { - "code": [ - "1F6B6" - ], - "emoji": "🚶", - "name": "person walking" - }, - { - "code": [ - "1F6B6", - "200D", - "2642", - "FE0F" - ], - "emoji": "🚶‍♂️", - "name": "man walking" - }, - { - "code": [ - "1F6B6", - "200D", - "2640", - "FE0F" - ], - "emoji": "🚶‍♀️", - "name": "woman walking" - }, - { - "code": [ - "1F6B6", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🚶‍➡️", - "name": "person walking facing right" - }, - { - "code": [ - "1F6B6", - "200D", - "2640", - "FE0F", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🚶‍♀️‍➡️", - "name": "woman walking facing right" - }, - { - "code": [ - "1F6B6", - "200D", - "2642", - "FE0F", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🚶‍♂️‍➡️", - "name": "man walking facing right" - }, - { - "code": [ - "1F9CD" - ], - "emoji": "🧍", - "name": "person standing" - }, - { - "code": [ - "1F9CD", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧍‍♂️", - "name": "man standing" - }, - { - "code": [ - "1F9CD", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧍‍♀️", - "name": "woman standing" - }, - { - "code": [ - "1F9CE" - ], - "emoji": "🧎", - "name": "person kneeling" - }, - { - "code": [ - "1F9CE", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧎‍♂️", - "name": "man kneeling" - }, - { - "code": [ - "1F9CE", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧎‍♀️", - "name": "woman kneeling" - }, - { - "code": [ - "1F9CE", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🧎‍➡️", - "name": "person kneeling facing right" - }, - { - "code": [ - "1F9CE", - "200D", - "2640", - "FE0F", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🧎‍♀️‍➡️", - "name": "woman kneeling facing right" - }, - { - "code": [ - "1F9CE", - "200D", - "2642", - "FE0F", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🧎‍♂️‍➡️", - "name": "man kneeling facing right" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9AF" - ], - "emoji": "🧑‍🦯", - "name": "person with white cane" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9AF", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🧑‍🦯‍➡️", - "name": "person with white cane facing right" - }, - { - "code": [ - "1F468", - "200D", - "1F9AF" - ], - "emoji": "👨‍🦯", - "name": "man with white cane" - }, - { - "code": [ - "1F468", - "200D", - "1F9AF", - "200D", - "27A1", - "FE0F" - ], - "emoji": "👨‍🦯‍➡️", - "name": "man with white cane facing right" - }, - { - "code": [ - "1F469", - "200D", - "1F9AF" - ], - "emoji": "👩‍🦯", - "name": "woman with white cane" - }, - { - "code": [ - "1F469", - "200D", - "1F9AF", - "200D", - "27A1", - "FE0F" - ], - "emoji": "👩‍🦯‍➡️", - "name": "woman with white cane facing right" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9BC" - ], - "emoji": "🧑‍🦼", - "name": "person in motorized wheelchair" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9BC", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🧑‍🦼‍➡️", - "name": "person in motorized wheelchair facing right" - }, - { - "code": [ - "1F468", - "200D", - "1F9BC" - ], - "emoji": "👨‍🦼", - "name": "man in motorized wheelchair" - }, - { - "code": [ - "1F468", - "200D", - "1F9BC", - "200D", - "27A1", - "FE0F" - ], - "emoji": "👨‍🦼‍➡️", - "name": "man in motorized wheelchair facing right" - }, - { - "code": [ - "1F469", - "200D", - "1F9BC" - ], - "emoji": "👩‍🦼", - "name": "woman in motorized wheelchair" - }, - { - "code": [ - "1F469", - "200D", - "1F9BC", - "200D", - "27A1", - "FE0F" - ], - "emoji": "👩‍🦼‍➡️", - "name": "woman in motorized wheelchair facing right" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9BD" - ], - "emoji": "🧑‍🦽", - "name": "person in manual wheelchair" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9BD", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🧑‍🦽‍➡️", - "name": "person in manual wheelchair facing right" - }, - { - "code": [ - "1F468", - "200D", - "1F9BD" - ], - "emoji": "👨‍🦽", - "name": "man in manual wheelchair" - }, - { - "code": [ - "1F468", - "200D", - "1F9BD", - "200D", - "27A1", - "FE0F" - ], - "emoji": "👨‍🦽‍➡️", - "name": "man in manual wheelchair facing right" - }, - { - "code": [ - "1F469", - "200D", - "1F9BD" - ], - "emoji": "👩‍🦽", - "name": "woman in manual wheelchair" - }, - { - "code": [ - "1F469", - "200D", - "1F9BD", - "200D", - "27A1", - "FE0F" - ], - "emoji": "👩‍🦽‍➡️", - "name": "woman in manual wheelchair facing right" - }, - { - "code": [ - "1F3C3" - ], - "emoji": "🏃", - "name": "person running" - }, - { - "code": [ - "1F3C3", - "200D", - "2642", - "FE0F" - ], - "emoji": "🏃‍♂️", - "name": "man running" - }, - { - "code": [ - "1F3C3", - "200D", - "2640", - "FE0F" - ], - "emoji": "🏃‍♀️", - "name": "woman running" - }, - { - "code": [ - "1F3C3", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🏃‍➡️", - "name": "person running facing right" - }, - { - "code": [ - "1F3C3", - "200D", - "2640", - "FE0F", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🏃‍♀️‍➡️", - "name": "woman running facing right" - }, - { - "code": [ - "1F3C3", - "200D", - "2642", - "FE0F", - "200D", - "27A1", - "FE0F" - ], - "emoji": "🏃‍♂️‍➡️", - "name": "man running facing right" - }, - { - "code": [ - "1F483" - ], - "emoji": "💃", - "name": "woman dancing" - }, - { - "code": [ - "1F57A" - ], - "emoji": "🕺", - "name": "man dancing" - }, - { - "code": [ - "1F574" - ], - "emoji": "🕴", - "name": "person in suit levitating" - }, - { - "code": [ - "1F46F" - ], - "emoji": "👯", - "name": "people with bunny ears" - }, - { - "code": [ - "1F46F", - "200D", - "2642", - "FE0F" - ], - "emoji": "👯‍♂️", - "name": "men with bunny ears" - }, - { - "code": [ - "1F46F", - "200D", - "2640", - "FE0F" - ], - "emoji": "👯‍♀️", - "name": "women with bunny ears" - }, - { - "code": [ - "1F9D6" - ], - "emoji": "🧖", - "name": "person in steamy room" - }, - { - "code": [ - "1F9D6", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧖‍♂️", - "name": "man in steamy room" - }, - { - "code": [ - "1F9D6", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧖‍♀️", - "name": "woman in steamy room" - }, - { - "code": [ - "1F9D7" - ], - "emoji": "🧗", - "name": "person climbing" - }, - { - "code": [ - "1F9D7", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧗‍♂️", - "name": "man climbing" - }, - { - "code": [ - "1F9D7", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧗‍♀️", - "name": "woman climbing" - } - ], - "person-sport": [ - { - "code": [ - "1F93A" - ], - "emoji": "🤺", - "name": "person fencing" - }, - { - "code": [ - "1F3C7" - ], - "emoji": "🏇", - "name": "horse racing" - }, - { - "code": [ - "26F7" - ], - "emoji": "⛷", - "name": "skier" - }, - { - "code": [ - "1F3C2" - ], - "emoji": "🏂", - "name": "snowboarder" - }, - { - "code": [ - "1F3CC" - ], - "emoji": "🏌", - "name": "person golfing" - }, - { - "code": [ - "1F3CC", - "FE0F", - "200D", - "2642", - "FE0F" - ], - "emoji": "🏌️‍♂️", - "name": "man golfing" - }, - { - "code": [ - "1F3CC", - "FE0F", - "200D", - "2640", - "FE0F" - ], - "emoji": "🏌️‍♀️", - "name": "woman golfing" - }, - { - "code": [ - "1F3C4" - ], - "emoji": "🏄", - "name": "person surfing" - }, - { - "code": [ - "1F3C4", - "200D", - "2642", - "FE0F" - ], - "emoji": "🏄‍♂️", - "name": "man surfing" - }, - { - "code": [ - "1F3C4", - "200D", - "2640", - "FE0F" - ], - "emoji": "🏄‍♀️", - "name": "woman surfing" - }, - { - "code": [ - "1F6A3" - ], - "emoji": "🚣", - "name": "person rowing boat" - }, - { - "code": [ - "1F6A3", - "200D", - "2642", - "FE0F" - ], - "emoji": "🚣‍♂️", - "name": "man rowing boat" - }, - { - "code": [ - "1F6A3", - "200D", - "2640", - "FE0F" - ], - "emoji": "🚣‍♀️", - "name": "woman rowing boat" - }, - { - "code": [ - "1F3CA" - ], - "emoji": "🏊", - "name": "person swimming" - }, - { - "code": [ - "1F3CA", - "200D", - "2642", - "FE0F" - ], - "emoji": "🏊‍♂️", - "name": "man swimming" - }, - { - "code": [ - "1F3CA", - "200D", - "2640", - "FE0F" - ], - "emoji": "🏊‍♀️", - "name": "woman swimming" - }, - { - "code": [ - "26F9" - ], - "emoji": "⛹", - "name": "person bouncing ball" - }, - { - "code": [ - "26F9", - "FE0F", - "200D", - "2642", - "FE0F" - ], - "emoji": "⛹️‍♂️", - "name": "man bouncing ball" - }, - { - "code": [ - "26F9", - "FE0F", - "200D", - "2640", - "FE0F" - ], - "emoji": "⛹️‍♀️", - "name": "woman bouncing ball" - }, - { - "code": [ - "1F3CB" - ], - "emoji": "🏋", - "name": "person lifting weights" - }, - { - "code": [ - "1F3CB", - "FE0F", - "200D", - "2642", - "FE0F" - ], - "emoji": "🏋️‍♂️", - "name": "man lifting weights" - }, - { - "code": [ - "1F3CB", - "FE0F", - "200D", - "2640", - "FE0F" - ], - "emoji": "🏋️‍♀️", - "name": "woman lifting weights" - }, - { - "code": [ - "1F6B4" - ], - "emoji": "🚴", - "name": "person biking" - }, - { - "code": [ - "1F6B4", - "200D", - "2642", - "FE0F" - ], - "emoji": "🚴‍♂️", - "name": "man biking" - }, - { - "code": [ - "1F6B4", - "200D", - "2640", - "FE0F" - ], - "emoji": "🚴‍♀️", - "name": "woman biking" - }, - { - "code": [ - "1F6B5" - ], - "emoji": "🚵", - "name": "person mountain biking" - }, - { - "code": [ - "1F6B5", - "200D", - "2642", - "FE0F" - ], - "emoji": "🚵‍♂️", - "name": "man mountain biking" - }, - { - "code": [ - "1F6B5", - "200D", - "2640", - "FE0F" - ], - "emoji": "🚵‍♀️", - "name": "woman mountain biking" - }, - { - "code": [ - "1F938" - ], - "emoji": "🤸", - "name": "person cartwheeling" - }, - { - "code": [ - "1F938", - "200D", - "2642", - "FE0F" - ], - "emoji": "🤸‍♂️", - "name": "man cartwheeling" - }, - { - "code": [ - "1F938", - "200D", - "2640", - "FE0F" - ], - "emoji": "🤸‍♀️", - "name": "woman cartwheeling" - }, - { - "code": [ - "1F93C" - ], - "emoji": "🤼", - "name": "people wrestling" - }, - { - "code": [ - "1F93C", - "200D", - "2642", - "FE0F" - ], - "emoji": "🤼‍♂️", - "name": "men wrestling" - }, - { - "code": [ - "1F93C", - "200D", - "2640", - "FE0F" - ], - "emoji": "🤼‍♀️", - "name": "women wrestling" - }, - { - "code": [ - "1F93D" - ], - "emoji": "🤽", - "name": "person playing water polo" - }, - { - "code": [ - "1F93D", - "200D", - "2642", - "FE0F" - ], - "emoji": "🤽‍♂️", - "name": "man playing water polo" - }, - { - "code": [ - "1F93D", - "200D", - "2640", - "FE0F" - ], - "emoji": "🤽‍♀️", - "name": "woman playing water polo" - }, - { - "code": [ - "1F93E" - ], - "emoji": "🤾", - "name": "person playing handball" - }, - { - "code": [ - "1F93E", - "200D", - "2642", - "FE0F" - ], - "emoji": "🤾‍♂️", - "name": "man playing handball" - }, - { - "code": [ - "1F93E", - "200D", - "2640", - "FE0F" - ], - "emoji": "🤾‍♀️", - "name": "woman playing handball" - }, - { - "code": [ - "1F939" - ], - "emoji": "🤹", - "name": "person juggling" - }, - { - "code": [ - "1F939", - "200D", - "2642", - "FE0F" - ], - "emoji": "🤹‍♂️", - "name": "man juggling" - }, - { - "code": [ - "1F939", - "200D", - "2640", - "FE0F" - ], - "emoji": "🤹‍♀️", - "name": "woman juggling" - } - ], - "person-resting": [ - { - "code": [ - "1F9D8" - ], - "emoji": "🧘", - "name": "person in lotus position" - }, - { - "code": [ - "1F9D8", - "200D", - "2642", - "FE0F" - ], - "emoji": "🧘‍♂️", - "name": "man in lotus position" - }, - { - "code": [ - "1F9D8", - "200D", - "2640", - "FE0F" - ], - "emoji": "🧘‍♀️", - "name": "woman in lotus position" - }, - { - "code": [ - "1F6C0" - ], - "emoji": "🛀", - "name": "person taking bath" - }, - { - "code": [ - "1F6CC" - ], - "emoji": "🛌", - "name": "person in bed" - } - ], - "family": [ - { - "code": [ - "1F9D1", - "200D", - "1F91D", - "200D", - "1F9D1" - ], - "emoji": "🧑‍🤝‍🧑", - "name": "people holding hands" - }, - { - "code": [ - "1F46D" - ], - "emoji": "👭", - "name": "women holding hands" - }, - { - "code": [ - "1F46B" - ], - "emoji": "👫", - "name": "woman and man holding hands" - }, - { - "code": [ - "1F46C" - ], - "emoji": "👬", - "name": "men holding hands" - }, - { - "code": [ - "1F48F" - ], - "emoji": "💏", - "name": "kiss" - }, - { - "code": [ - "1F469", - "200D", - "2764", - "FE0F", - "200D", - "1F48B", - "200D", - "1F468" - ], - "emoji": "👩‍❤️‍💋‍👨", - "name": "kiss: woman, man" - }, - { - "code": [ - "1F468", - "200D", - "2764", - "FE0F", - "200D", - "1F48B", - "200D", - "1F468" - ], - "emoji": "👨‍❤️‍💋‍👨", - "name": "kiss: man, man" - }, - { - "code": [ - "1F469", - "200D", - "2764", - "FE0F", - "200D", - "1F48B", - "200D", - "1F469" - ], - "emoji": "👩‍❤️‍💋‍👩", - "name": "kiss: woman, woman" - }, - { - "code": [ - "1F491" - ], - "emoji": "💑", - "name": "couple with heart" - }, - { - "code": [ - "1F469", - "200D", - "2764", - "FE0F", - "200D", - "1F468" - ], - "emoji": "👩‍❤️‍👨", - "name": "couple with heart: woman, man" - }, - { - "code": [ - "1F468", - "200D", - "2764", - "FE0F", - "200D", - "1F468" - ], - "emoji": "👨‍❤️‍👨", - "name": "couple with heart: man, man" - }, - { - "code": [ - "1F469", - "200D", - "2764", - "FE0F", - "200D", - "1F469" - ], - "emoji": "👩‍❤️‍👩", - "name": "couple with heart: woman, woman" - }, - { - "code": [ - "1F468", - "200D", - "1F469", - "200D", - "1F466" - ], - "emoji": "👨‍👩‍👦", - "name": "family: man, woman, boy" - }, - { - "code": [ - "1F468", - "200D", - "1F469", - "200D", - "1F467" - ], - "emoji": "👨‍👩‍👧", - "name": "family: man, woman, girl" - }, - { - "code": [ - "1F468", - "200D", - "1F469", - "200D", - "1F467", - "200D", - "1F466" - ], - "emoji": "👨‍👩‍👧‍👦", - "name": "family: man, woman, girl, boy" - }, - { - "code": [ - "1F468", - "200D", - "1F469", - "200D", - "1F466", - "200D", - "1F466" - ], - "emoji": "👨‍👩‍👦‍👦", - "name": "family: man, woman, boy, boy" - }, - { - "code": [ - "1F468", - "200D", - "1F469", - "200D", - "1F467", - "200D", - "1F467" - ], - "emoji": "👨‍👩‍👧‍👧", - "name": "family: man, woman, girl, girl" - }, - { - "code": [ - "1F468", - "200D", - "1F468", - "200D", - "1F466" - ], - "emoji": "👨‍👨‍👦", - "name": "family: man, man, boy" - }, - { - "code": [ - "1F468", - "200D", - "1F468", - "200D", - "1F467" - ], - "emoji": "👨‍👨‍👧", - "name": "family: man, man, girl" - }, - { - "code": [ - "1F468", - "200D", - "1F468", - "200D", - "1F467", - "200D", - "1F466" - ], - "emoji": "👨‍👨‍👧‍👦", - "name": "family: man, man, girl, boy" - }, - { - "code": [ - "1F468", - "200D", - "1F468", - "200D", - "1F466", - "200D", - "1F466" - ], - "emoji": "👨‍👨‍👦‍👦", - "name": "family: man, man, boy, boy" - }, - { - "code": [ - "1F468", - "200D", - "1F468", - "200D", - "1F467", - "200D", - "1F467" - ], - "emoji": "👨‍👨‍👧‍👧", - "name": "family: man, man, girl, girl" - }, - { - "code": [ - "1F469", - "200D", - "1F469", - "200D", - "1F466" - ], - "emoji": "👩‍👩‍👦", - "name": "family: woman, woman, boy" - }, - { - "code": [ - "1F469", - "200D", - "1F469", - "200D", - "1F467" - ], - "emoji": "👩‍👩‍👧", - "name": "family: woman, woman, girl" - }, - { - "code": [ - "1F469", - "200D", - "1F469", - "200D", - "1F467", - "200D", - "1F466" - ], - "emoji": "👩‍👩‍👧‍👦", - "name": "family: woman, woman, girl, boy" - }, - { - "code": [ - "1F469", - "200D", - "1F469", - "200D", - "1F466", - "200D", - "1F466" - ], - "emoji": "👩‍👩‍👦‍👦", - "name": "family: woman, woman, boy, boy" - }, - { - "code": [ - "1F469", - "200D", - "1F469", - "200D", - "1F467", - "200D", - "1F467" - ], - "emoji": "👩‍👩‍👧‍👧", - "name": "family: woman, woman, girl, girl" - }, - { - "code": [ - "1F468", - "200D", - "1F466" - ], - "emoji": "👨‍👦", - "name": "family: man, boy" - }, - { - "code": [ - "1F468", - "200D", - "1F466", - "200D", - "1F466" - ], - "emoji": "👨‍👦‍👦", - "name": "family: man, boy, boy" - }, - { - "code": [ - "1F468", - "200D", - "1F467" - ], - "emoji": "👨‍👧", - "name": "family: man, girl" - }, - { - "code": [ - "1F468", - "200D", - "1F467", - "200D", - "1F466" - ], - "emoji": "👨‍👧‍👦", - "name": "family: man, girl, boy" - }, - { - "code": [ - "1F468", - "200D", - "1F467", - "200D", - "1F467" - ], - "emoji": "👨‍👧‍👧", - "name": "family: man, girl, girl" - }, - { - "code": [ - "1F469", - "200D", - "1F466" - ], - "emoji": "👩‍👦", - "name": "family: woman, boy" - }, - { - "code": [ - "1F469", - "200D", - "1F466", - "200D", - "1F466" - ], - "emoji": "👩‍👦‍👦", - "name": "family: woman, boy, boy" - }, - { - "code": [ - "1F469", - "200D", - "1F467" - ], - "emoji": "👩‍👧", - "name": "family: woman, girl" - }, - { - "code": [ - "1F469", - "200D", - "1F467", - "200D", - "1F466" - ], - "emoji": "👩‍👧‍👦", - "name": "family: woman, girl, boy" - }, - { - "code": [ - "1F469", - "200D", - "1F467", - "200D", - "1F467" - ], - "emoji": "👩‍👧‍👧", - "name": "family: woman, girl, girl" - } - ], - "person-symbol": [ - { - "code": [ - "1F5E3" - ], - "emoji": "🗣", - "name": "speaking head" - }, - { - "code": [ - "1F464" - ], - "emoji": "👤", - "name": "bust in silhouette" - }, - { - "code": [ - "1F465" - ], - "emoji": "👥", - "name": "busts in silhouette" - }, - { - "code": [ - "1FAC2" - ], - "emoji": "🫂", - "name": "people hugging" - }, - { - "code": [ - "1F46A" - ], - "emoji": "👪", - "name": "family" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9D1", - "200D", - "1F9D2" - ], - "emoji": "🧑‍🧑‍🧒", - "name": "family: adult, adult, child" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9D1", - "200D", - "1F9D2", - "200D", - "1F9D2" - ], - "emoji": "🧑‍🧑‍🧒‍🧒", - "name": "family: adult, adult, child, child" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9D2" - ], - "emoji": "🧑‍🧒", - "name": "family: adult, child" - }, - { - "code": [ - "1F9D1", - "200D", - "1F9D2", - "200D", - "1F9D2" - ], - "emoji": "🧑‍🧒‍🧒", - "name": "family: adult, child, child" - }, - { - "code": [ - "1F463" - ], - "emoji": "👣", - "name": "footprints" - }, - { - "code": [ - "1FAC6" - ], - "emoji": "🫆", - "name": "fingerprint" - } - ] - }, - "Component": { - "hair-style": [ - { - "code": [ - "1F9B0" - ], - "emoji": "🦰", - "name": "red hair" - }, - { - "code": [ - "1F9B1" - ], - "emoji": "🦱", - "name": "curly hair" - }, - { - "code": [ - "1F9B3" - ], - "emoji": "🦳", - "name": "white hair" - }, - { - "code": [ - "1F9B2" - ], - "emoji": "🦲", - "name": "bald" - } - ] - }, - "Animals & Nature": { - "animal-mammal": [ - { - "code": [ - "1F435" - ], - "emoji": "🐵", - "name": "monkey face" - }, - { - "code": [ - "1F412" - ], - "emoji": "🐒", - "name": "monkey" - }, - { - "code": [ - "1F98D" - ], - "emoji": "🦍", - "name": "gorilla" - }, - { - "code": [ - "1F9A7" - ], - "emoji": "🦧", - "name": "orangutan" - }, - { - "code": [ - "1F436" - ], - "emoji": "🐶", - "name": "dog face" - }, - { - "code": [ - "1F415" - ], - "emoji": "🐕", - "name": "dog" - }, - { - "code": [ - "1F9AE" - ], - "emoji": "🦮", - "name": "guide dog" - }, - { - "code": [ - "1F415", - "200D", - "1F9BA" - ], - "emoji": "🐕‍🦺", - "name": "service dog" - }, - { - "code": [ - "1F429" - ], - "emoji": "🐩", - "name": "poodle" - }, - { - "code": [ - "1F43A" - ], - "emoji": "🐺", - "name": "wolf" - }, - { - "code": [ - "1F98A" - ], - "emoji": "🦊", - "name": "fox" - }, - { - "code": [ - "1F99D" - ], - "emoji": "🦝", - "name": "raccoon" - }, - { - "code": [ - "1F431" - ], - "emoji": "🐱", - "name": "cat face" - }, - { - "code": [ - "1F408" - ], - "emoji": "🐈", - "name": "cat" - }, - { - "code": [ - "1F408", - "200D", - "2B1B" - ], - "emoji": "🐈‍⬛", - "name": "black cat" - }, - { - "code": [ - "1F981" - ], - "emoji": "🦁", - "name": "lion" - }, - { - "code": [ - "1F42F" - ], - "emoji": "🐯", - "name": "tiger face" - }, - { - "code": [ - "1F405" - ], - "emoji": "🐅", - "name": "tiger" - }, - { - "code": [ - "1F406" - ], - "emoji": "🐆", - "name": "leopard" - }, - { - "code": [ - "1F434" - ], - "emoji": "🐴", - "name": "horse face" - }, - { - "code": [ - "1FACE" - ], - "emoji": "🫎", - "name": "moose" - }, - { - "code": [ - "1FACF" - ], - "emoji": "🫏", - "name": "donkey" - }, - { - "code": [ - "1F40E" - ], - "emoji": "🐎", - "name": "horse" - }, - { - "code": [ - "1F984" - ], - "emoji": "🦄", - "name": "unicorn" - }, - { - "code": [ - "1F993" - ], - "emoji": "🦓", - "name": "zebra" - }, - { - "code": [ - "1F98C" - ], - "emoji": "🦌", - "name": "deer" - }, - { - "code": [ - "1F9AC" - ], - "emoji": "🦬", - "name": "bison" - }, - { - "code": [ - "1F42E" - ], - "emoji": "🐮", - "name": "cow face" - }, - { - "code": [ - "1F402" - ], - "emoji": "🐂", - "name": "ox" - }, - { - "code": [ - "1F403" - ], - "emoji": "🐃", - "name": "water buffalo" - }, - { - "code": [ - "1F404" - ], - "emoji": "🐄", - "name": "cow" - }, - { - "code": [ - "1F437" - ], - "emoji": "🐷", - "name": "pig face" - }, - { - "code": [ - "1F416" - ], - "emoji": "🐖", - "name": "pig" - }, - { - "code": [ - "1F417" - ], - "emoji": "🐗", - "name": "boar" - }, - { - "code": [ - "1F43D" - ], - "emoji": "🐽", - "name": "pig nose" - }, - { - "code": [ - "1F40F" - ], - "emoji": "🐏", - "name": "ram" - }, - { - "code": [ - "1F411" - ], - "emoji": "🐑", - "name": "ewe" - }, - { - "code": [ - "1F410" - ], - "emoji": "🐐", - "name": "goat" - }, - { - "code": [ - "1F42A" - ], - "emoji": "🐪", - "name": "camel" - }, - { - "code": [ - "1F42B" - ], - "emoji": "🐫", - "name": "two-hump camel" - }, - { - "code": [ - "1F999" - ], - "emoji": "🦙", - "name": "llama" - }, - { - "code": [ - "1F992" - ], - "emoji": "🦒", - "name": "giraffe" - }, - { - "code": [ - "1F418" - ], - "emoji": "🐘", - "name": "elephant" - }, - { - "code": [ - "1F9A3" - ], - "emoji": "🦣", - "name": "mammoth" - }, - { - "code": [ - "1F98F" - ], - "emoji": "🦏", - "name": "rhinoceros" - }, - { - "code": [ - "1F99B" - ], - "emoji": "🦛", - "name": "hippopotamus" - }, - { - "code": [ - "1F42D" - ], - "emoji": "🐭", - "name": "mouse face" - }, - { - "code": [ - "1F401" - ], - "emoji": "🐁", - "name": "mouse" - }, - { - "code": [ - "1F400" - ], - "emoji": "🐀", - "name": "rat" - }, - { - "code": [ - "1F439" - ], - "emoji": "🐹", - "name": "hamster" - }, - { - "code": [ - "1F430" - ], - "emoji": "🐰", - "name": "rabbit face" - }, - { - "code": [ - "1F407" - ], - "emoji": "🐇", - "name": "rabbit" - }, - { - "code": [ - "1F43F" - ], - "emoji": "🐿", - "name": "chipmunk" - }, - { - "code": [ - "1F9AB" - ], - "emoji": "🦫", - "name": "beaver" - }, - { - "code": [ - "1F994" - ], - "emoji": "🦔", - "name": "hedgehog" - }, - { - "code": [ - "1F987" - ], - "emoji": "🦇", - "name": "bat" - }, - { - "code": [ - "1F43B" - ], - "emoji": "🐻", - "name": "bear" - }, - { - "code": [ - "1F43B", - "200D", - "2744", - "FE0F" - ], - "emoji": "🐻‍❄️", - "name": "polar bear" - }, - { - "code": [ - "1F428" - ], - "emoji": "🐨", - "name": "koala" - }, - { - "code": [ - "1F43C" - ], - "emoji": "🐼", - "name": "panda" - }, - { - "code": [ - "1F9A5" - ], - "emoji": "🦥", - "name": "sloth" - }, - { - "code": [ - "1F9A6" - ], - "emoji": "🦦", - "name": "otter" - }, - { - "code": [ - "1F9A8" - ], - "emoji": "🦨", - "name": "skunk" - }, - { - "code": [ - "1F998" - ], - "emoji": "🦘", - "name": "kangaroo" - }, - { - "code": [ - "1F9A1" - ], - "emoji": "🦡", - "name": "badger" - }, - { - "code": [ - "1F43E" - ], - "emoji": "🐾", - "name": "paw prints" - } - ], - "animal-bird": [ - { - "code": [ - "1F983" - ], - "emoji": "🦃", - "name": "turkey" - }, - { - "code": [ - "1F414" - ], - "emoji": "🐔", - "name": "chicken" - }, - { - "code": [ - "1F413" - ], - "emoji": "🐓", - "name": "rooster" - }, - { - "code": [ - "1F423" - ], - "emoji": "🐣", - "name": "hatching chick" - }, - { - "code": [ - "1F424" - ], - "emoji": "🐤", - "name": "baby chick" - }, - { - "code": [ - "1F425" - ], - "emoji": "🐥", - "name": "front-facing baby chick" - }, - { - "code": [ - "1F426" - ], - "emoji": "🐦", - "name": "bird" - }, - { - "code": [ - "1F427" - ], - "emoji": "🐧", - "name": "penguin" - }, - { - "code": [ - "1F54A" - ], - "emoji": "🕊", - "name": "dove" - }, - { - "code": [ - "1F985" - ], - "emoji": "🦅", - "name": "eagle" - }, - { - "code": [ - "1F986" - ], - "emoji": "🦆", - "name": "duck" - }, - { - "code": [ - "1F9A2" - ], - "emoji": "🦢", - "name": "swan" - }, - { - "code": [ - "1F989" - ], - "emoji": "🦉", - "name": "owl" - }, - { - "code": [ - "1F9A4" - ], - "emoji": "🦤", - "name": "dodo" - }, - { - "code": [ - "1FAB6" - ], - "emoji": "🪶", - "name": "feather" - }, - { - "code": [ - "1F9A9" - ], - "emoji": "🦩", - "name": "flamingo" - }, - { - "code": [ - "1F99A" - ], - "emoji": "🦚", - "name": "peacock" - }, - { - "code": [ - "1F99C" - ], - "emoji": "🦜", - "name": "parrot" - }, - { - "code": [ - "1FABD" - ], - "emoji": "🪽", - "name": "wing" - }, - { - "code": [ - "1F426", - "200D", - "2B1B" - ], - "emoji": "🐦‍⬛", - "name": "black bird" - }, - { - "code": [ - "1FABF" - ], - "emoji": "🪿", - "name": "goose" - }, - { - "code": [ - "1F426", - "200D", - "1F525" - ], - "emoji": "🐦‍🔥", - "name": "phoenix" - } - ], - "animal-amphibian": [ - { - "code": [ - "1F438" - ], - "emoji": "🐸", - "name": "frog" - } - ], - "animal-reptile": [ - { - "code": [ - "1F40A" - ], - "emoji": "🐊", - "name": "crocodile" - }, - { - "code": [ - "1F422" - ], - "emoji": "🐢", - "name": "turtle" - }, - { - "code": [ - "1F98E" - ], - "emoji": "🦎", - "name": "lizard" - }, - { - "code": [ - "1F40D" - ], - "emoji": "🐍", - "name": "snake" - }, - { - "code": [ - "1F432" - ], - "emoji": "🐲", - "name": "dragon face" - }, - { - "code": [ - "1F409" - ], - "emoji": "🐉", - "name": "dragon" - }, - { - "code": [ - "1F995" - ], - "emoji": "🦕", - "name": "sauropod" - }, - { - "code": [ - "1F996" - ], - "emoji": "🦖", - "name": "T-Rex" - } - ], - "animal-marine": [ - { - "code": [ - "1F433" - ], - "emoji": "🐳", - "name": "spouting whale" - }, - { - "code": [ - "1F40B" - ], - "emoji": "🐋", - "name": "whale" - }, - { - "code": [ - "1F42C" - ], - "emoji": "🐬", - "name": "dolphin" - }, - { - "code": [ - "1F9AD" - ], - "emoji": "🦭", - "name": "seal" - }, - { - "code": [ - "1F41F" - ], - "emoji": "🐟", - "name": "fish" - }, - { - "code": [ - "1F420" - ], - "emoji": "🐠", - "name": "tropical fish" - }, - { - "code": [ - "1F421" - ], - "emoji": "🐡", - "name": "blowfish" - }, - { - "code": [ - "1F988" - ], - "emoji": "🦈", - "name": "shark" - }, - { - "code": [ - "1F419" - ], - "emoji": "🐙", - "name": "octopus" - }, - { - "code": [ - "1F41A" - ], - "emoji": "🐚", - "name": "spiral shell" - }, - { - "code": [ - "1FAB8" - ], - "emoji": "🪸", - "name": "coral" - }, - { - "code": [ - "1FABC" - ], - "emoji": "🪼", - "name": "jellyfish" - }, - { - "code": [ - "1F980" - ], - "emoji": "🦀", - "name": "crab" - }, - { - "code": [ - "1F99E" - ], - "emoji": "🦞", - "name": "lobster" - }, - { - "code": [ - "1F990" - ], - "emoji": "🦐", - "name": "shrimp" - }, - { - "code": [ - "1F991" - ], - "emoji": "🦑", - "name": "squid" - }, - { - "code": [ - "1F9AA" - ], - "emoji": "🦪", - "name": "oyster" - } - ], - "animal-bug": [ - { - "code": [ - "1F40C" - ], - "emoji": "🐌", - "name": "snail" - }, - { - "code": [ - "1F98B" - ], - "emoji": "🦋", - "name": "butterfly" - }, - { - "code": [ - "1F41B" - ], - "emoji": "🐛", - "name": "bug" - }, - { - "code": [ - "1F41C" - ], - "emoji": "🐜", - "name": "ant" - }, - { - "code": [ - "1F41D" - ], - "emoji": "🐝", - "name": "honeybee" - }, - { - "code": [ - "1FAB2" - ], - "emoji": "🪲", - "name": "beetle" - }, - { - "code": [ - "1F41E" - ], - "emoji": "🐞", - "name": "lady beetle" - }, - { - "code": [ - "1F997" - ], - "emoji": "🦗", - "name": "cricket" - }, - { - "code": [ - "1FAB3" - ], - "emoji": "🪳", - "name": "cockroach" - }, - { - "code": [ - "1F577" - ], - "emoji": "🕷", - "name": "spider" - }, - { - "code": [ - "1F578" - ], - "emoji": "🕸", - "name": "spider web" - }, - { - "code": [ - "1F982" - ], - "emoji": "🦂", - "name": "scorpion" - }, - { - "code": [ - "1F99F" - ], - "emoji": "🦟", - "name": "mosquito" - }, - { - "code": [ - "1FAB0" - ], - "emoji": "🪰", - "name": "fly" - }, - { - "code": [ - "1FAB1" - ], - "emoji": "🪱", - "name": "worm" - }, - { - "code": [ - "1F9A0" - ], - "emoji": "🦠", - "name": "microbe" - } - ], - "plant-flower": [ - { - "code": [ - "1F490" - ], - "emoji": "💐", - "name": "bouquet" - }, - { - "code": [ - "1F338" - ], - "emoji": "🌸", - "name": "cherry blossom" - }, - { - "code": [ - "1F4AE" - ], - "emoji": "💮", - "name": "white flower" - }, - { - "code": [ - "1FAB7" - ], - "emoji": "🪷", - "name": "lotus" - }, - { - "code": [ - "1F3F5" - ], - "emoji": "🏵", - "name": "rosette" - }, - { - "code": [ - "1F339" - ], - "emoji": "🌹", - "name": "rose" - }, - { - "code": [ - "1F940" - ], - "emoji": "🥀", - "name": "wilted flower" - }, - { - "code": [ - "1F33A" - ], - "emoji": "🌺", - "name": "hibiscus" - }, - { - "code": [ - "1F33B" - ], - "emoji": "🌻", - "name": "sunflower" - }, - { - "code": [ - "1F33C" - ], - "emoji": "🌼", - "name": "blossom" - }, - { - "code": [ - "1F337" - ], - "emoji": "🌷", - "name": "tulip" - }, - { - "code": [ - "1FABB" - ], - "emoji": "🪻", - "name": "hyacinth" - } - ], - "plant-other": [ - { - "code": [ - "1F331" - ], - "emoji": "🌱", - "name": "seedling" - }, - { - "code": [ - "1FAB4" - ], - "emoji": "🪴", - "name": "potted plant" - }, - { - "code": [ - "1F332" - ], - "emoji": "🌲", - "name": "evergreen tree" - }, - { - "code": [ - "1F333" - ], - "emoji": "🌳", - "name": "deciduous tree" - }, - { - "code": [ - "1F334" - ], - "emoji": "🌴", - "name": "palm tree" - }, - { - "code": [ - "1F335" - ], - "emoji": "🌵", - "name": "cactus" - }, - { - "code": [ - "1F33E" - ], - "emoji": "🌾", - "name": "sheaf of rice" - }, - { - "code": [ - "1F33F" - ], - "emoji": "🌿", - "name": "herb" - }, - { - "code": [ - "2618" - ], - "emoji": "☘", - "name": "shamrock" - }, - { - "code": [ - "1F340" - ], - "emoji": "🍀", - "name": "four leaf clover" - }, - { - "code": [ - "1F341" - ], - "emoji": "🍁", - "name": "maple leaf" - }, - { - "code": [ - "1F342" - ], - "emoji": "🍂", - "name": "fallen leaf" - }, - { - "code": [ - "1F343" - ], - "emoji": "🍃", - "name": "leaf fluttering in wind" - }, - { - "code": [ - "1FAB9" - ], - "emoji": "🪹", - "name": "empty nest" - }, - { - "code": [ - "1FABA" - ], - "emoji": "🪺", - "name": "nest with eggs" - }, - { - "code": [ - "1F344" - ], - "emoji": "🍄", - "name": "mushroom" - }, - { - "code": [ - "1FABE" - ], - "emoji": "🪾", - "name": "leafless tree" - } - ] - }, - "Food & Drink": { - "food-fruit": [ - { - "code": [ - "1F347" - ], - "emoji": "🍇", - "name": "grapes" - }, - { - "code": [ - "1F348" - ], - "emoji": "🍈", - "name": "melon" - }, - { - "code": [ - "1F349" - ], - "emoji": "🍉", - "name": "watermelon" - }, - { - "code": [ - "1F34A" - ], - "emoji": "🍊", - "name": "tangerine" - }, - { - "code": [ - "1F34B" - ], - "emoji": "🍋", - "name": "lemon" - }, - { - "code": [ - "1F34B", - "200D", - "1F7E9" - ], - "emoji": "🍋‍🟩", - "name": "lime" - }, - { - "code": [ - "1F34C" - ], - "emoji": "🍌", - "name": "banana" - }, - { - "code": [ - "1F34D" - ], - "emoji": "🍍", - "name": "pineapple" - }, - { - "code": [ - "1F96D" - ], - "emoji": "🥭", - "name": "mango" - }, - { - "code": [ - "1F34E" - ], - "emoji": "🍎", - "name": "red apple" - }, - { - "code": [ - "1F34F" - ], - "emoji": "🍏", - "name": "green apple" - }, - { - "code": [ - "1F350" - ], - "emoji": "🍐", - "name": "pear" - }, - { - "code": [ - "1F351" - ], - "emoji": "🍑", - "name": "peach" - }, - { - "code": [ - "1F352" - ], - "emoji": "🍒", - "name": "cherries" - }, - { - "code": [ - "1F353" - ], - "emoji": "🍓", - "name": "strawberry" - }, - { - "code": [ - "1FAD0" - ], - "emoji": "🫐", - "name": "blueberries" - }, - { - "code": [ - "1F95D" - ], - "emoji": "🥝", - "name": "kiwi fruit" - }, - { - "code": [ - "1F345" - ], - "emoji": "🍅", - "name": "tomato" - }, - { - "code": [ - "1FAD2" - ], - "emoji": "🫒", - "name": "olive" - }, - { - "code": [ - "1F965" - ], - "emoji": "🥥", - "name": "coconut" - } - ], - "food-vegetable": [ - { - "code": [ - "1F951" - ], - "emoji": "🥑", - "name": "avocado" - }, - { - "code": [ - "1F346" - ], - "emoji": "🍆", - "name": "eggplant" - }, - { - "code": [ - "1F954" - ], - "emoji": "🥔", - "name": "potato" - }, - { - "code": [ - "1F955" - ], - "emoji": "🥕", - "name": "carrot" - }, - { - "code": [ - "1F33D" - ], - "emoji": "🌽", - "name": "ear of corn" - }, - { - "code": [ - "1F336" - ], - "emoji": "🌶", - "name": "hot pepper" - }, - { - "code": [ - "1FAD1" - ], - "emoji": "🫑", - "name": "bell pepper" - }, - { - "code": [ - "1F952" - ], - "emoji": "🥒", - "name": "cucumber" - }, - { - "code": [ - "1F96C" - ], - "emoji": "🥬", - "name": "leafy green" - }, - { - "code": [ - "1F966" - ], - "emoji": "🥦", - "name": "broccoli" - }, - { - "code": [ - "1F9C4" - ], - "emoji": "🧄", - "name": "garlic" - }, - { - "code": [ - "1F9C5" - ], - "emoji": "🧅", - "name": "onion" - }, - { - "code": [ - "1F95C" - ], - "emoji": "🥜", - "name": "peanuts" - }, - { - "code": [ - "1FAD8" - ], - "emoji": "🫘", - "name": "beans" - }, - { - "code": [ - "1F330" - ], - "emoji": "🌰", - "name": "chestnut" - }, - { - "code": [ - "1FADA" - ], - "emoji": "🫚", - "name": "ginger root" - }, - { - "code": [ - "1FADB" - ], - "emoji": "🫛", - "name": "pea pod" - }, - { - "code": [ - "1F344", - "200D", - "1F7EB" - ], - "emoji": "🍄‍🟫", - "name": "brown mushroom" - }, - { - "code": [ - "1FADC" - ], - "emoji": "🫜", - "name": "root vegetable" - } - ], - "food-prepared": [ - { - "code": [ - "1F35E" - ], - "emoji": "🍞", - "name": "bread" - }, - { - "code": [ - "1F950" - ], - "emoji": "🥐", - "name": "croissant" - }, - { - "code": [ - "1F956" - ], - "emoji": "🥖", - "name": "baguette bread" - }, - { - "code": [ - "1FAD3" - ], - "emoji": "🫓", - "name": "flatbread" - }, - { - "code": [ - "1F968" - ], - "emoji": "🥨", - "name": "pretzel" - }, - { - "code": [ - "1F96F" - ], - "emoji": "🥯", - "name": "bagel" - }, - { - "code": [ - "1F95E" - ], - "emoji": "🥞", - "name": "pancakes" - }, - { - "code": [ - "1F9C7" - ], - "emoji": "🧇", - "name": "waffle" - }, - { - "code": [ - "1F9C0" - ], - "emoji": "🧀", - "name": "cheese wedge" - }, - { - "code": [ - "1F356" - ], - "emoji": "🍖", - "name": "meat on bone" - }, - { - "code": [ - "1F357" - ], - "emoji": "🍗", - "name": "poultry leg" - }, - { - "code": [ - "1F969" - ], - "emoji": "🥩", - "name": "cut of meat" - }, - { - "code": [ - "1F953" - ], - "emoji": "🥓", - "name": "bacon" - }, - { - "code": [ - "1F354" - ], - "emoji": "🍔", - "name": "hamburger" - }, - { - "code": [ - "1F35F" - ], - "emoji": "🍟", - "name": "french fries" - }, - { - "code": [ - "1F355" - ], - "emoji": "🍕", - "name": "pizza" - }, - { - "code": [ - "1F32D" - ], - "emoji": "🌭", - "name": "hot dog" - }, - { - "code": [ - "1F96A" - ], - "emoji": "🥪", - "name": "sandwich" - }, - { - "code": [ - "1F32E" - ], - "emoji": "🌮", - "name": "taco" - }, - { - "code": [ - "1F32F" - ], - "emoji": "🌯", - "name": "burrito" - }, - { - "code": [ - "1FAD4" - ], - "emoji": "🫔", - "name": "tamale" - }, - { - "code": [ - "1F959" - ], - "emoji": "🥙", - "name": "stuffed flatbread" - }, - { - "code": [ - "1F9C6" - ], - "emoji": "🧆", - "name": "falafel" - }, - { - "code": [ - "1F95A" - ], - "emoji": "🥚", - "name": "egg" - }, - { - "code": [ - "1F373" - ], - "emoji": "🍳", - "name": "cooking" - }, - { - "code": [ - "1F958" - ], - "emoji": "🥘", - "name": "shallow pan of food" - }, - { - "code": [ - "1F372" - ], - "emoji": "🍲", - "name": "pot of food" - }, - { - "code": [ - "1FAD5" - ], - "emoji": "🫕", - "name": "fondue" - }, - { - "code": [ - "1F963" - ], - "emoji": "🥣", - "name": "bowl with spoon" - }, - { - "code": [ - "1F957" - ], - "emoji": "🥗", - "name": "green salad" - }, - { - "code": [ - "1F37F" - ], - "emoji": "🍿", - "name": "popcorn" - }, - { - "code": [ - "1F9C8" - ], - "emoji": "🧈", - "name": "butter" - }, - { - "code": [ - "1F9C2" - ], - "emoji": "🧂", - "name": "salt" - }, - { - "code": [ - "1F96B" - ], - "emoji": "🥫", - "name": "canned food" - } - ], - "food-asian": [ - { - "code": [ - "1F371" - ], - "emoji": "🍱", - "name": "bento box" - }, - { - "code": [ - "1F358" - ], - "emoji": "🍘", - "name": "rice cracker" - }, - { - "code": [ - "1F359" - ], - "emoji": "🍙", - "name": "rice ball" - }, - { - "code": [ - "1F35A" - ], - "emoji": "🍚", - "name": "cooked rice" - }, - { - "code": [ - "1F35B" - ], - "emoji": "🍛", - "name": "curry rice" - }, - { - "code": [ - "1F35C" - ], - "emoji": "🍜", - "name": "steaming bowl" - }, - { - "code": [ - "1F35D" - ], - "emoji": "🍝", - "name": "spaghetti" - }, - { - "code": [ - "1F360" - ], - "emoji": "🍠", - "name": "roasted sweet potato" - }, - { - "code": [ - "1F362" - ], - "emoji": "🍢", - "name": "oden" - }, - { - "code": [ - "1F363" - ], - "emoji": "🍣", - "name": "sushi" - }, - { - "code": [ - "1F364" - ], - "emoji": "🍤", - "name": "fried shrimp" - }, - { - "code": [ - "1F365" - ], - "emoji": "🍥", - "name": "fish cake with swirl" - }, - { - "code": [ - "1F96E" - ], - "emoji": "🥮", - "name": "moon cake" - }, - { - "code": [ - "1F361" - ], - "emoji": "🍡", - "name": "dango" - }, - { - "code": [ - "1F95F" - ], - "emoji": "🥟", - "name": "dumpling" - }, - { - "code": [ - "1F960" - ], - "emoji": "🥠", - "name": "fortune cookie" - }, - { - "code": [ - "1F961" - ], - "emoji": "🥡", - "name": "takeout box" - } - ], - "food-sweet": [ - { - "code": [ - "1F366" - ], - "emoji": "🍦", - "name": "soft ice cream" - }, - { - "code": [ - "1F367" - ], - "emoji": "🍧", - "name": "shaved ice" - }, - { - "code": [ - "1F368" - ], - "emoji": "🍨", - "name": "ice cream" - }, - { - "code": [ - "1F369" - ], - "emoji": "🍩", - "name": "doughnut" - }, - { - "code": [ - "1F36A" - ], - "emoji": "🍪", - "name": "cookie" - }, - { - "code": [ - "1F382" - ], - "emoji": "🎂", - "name": "birthday cake" - }, - { - "code": [ - "1F370" - ], - "emoji": "🍰", - "name": "shortcake" - }, - { - "code": [ - "1F9C1" - ], - "emoji": "🧁", - "name": "cupcake" - }, - { - "code": [ - "1F967" - ], - "emoji": "🥧", - "name": "pie" - }, - { - "code": [ - "1F36B" - ], - "emoji": "🍫", - "name": "chocolate bar" - }, - { - "code": [ - "1F36C" - ], - "emoji": "🍬", - "name": "candy" - }, - { - "code": [ - "1F36D" - ], - "emoji": "🍭", - "name": "lollipop" - }, - { - "code": [ - "1F36E" - ], - "emoji": "🍮", - "name": "custard" - }, - { - "code": [ - "1F36F" - ], - "emoji": "🍯", - "name": "honey pot" - } - ], - "drink": [ - { - "code": [ - "1F37C" - ], - "emoji": "🍼", - "name": "baby bottle" - }, - { - "code": [ - "1F95B" - ], - "emoji": "🥛", - "name": "glass of milk" - }, - { - "code": [ - "2615" - ], - "emoji": "☕", - "name": "hot beverage" - }, - { - "code": [ - "1FAD6" - ], - "emoji": "🫖", - "name": "teapot" - }, - { - "code": [ - "1F375" - ], - "emoji": "🍵", - "name": "teacup without handle" - }, - { - "code": [ - "1F376" - ], - "emoji": "🍶", - "name": "sake" - }, - { - "code": [ - "1F37E" - ], - "emoji": "🍾", - "name": "bottle with popping cork" - }, - { - "code": [ - "1F377" - ], - "emoji": "🍷", - "name": "wine glass" - }, - { - "code": [ - "1F378" - ], - "emoji": "🍸", - "name": "cocktail glass" - }, - { - "code": [ - "1F379" - ], - "emoji": "🍹", - "name": "tropical drink" - }, - { - "code": [ - "1F37A" - ], - "emoji": "🍺", - "name": "beer mug" - }, - { - "code": [ - "1F37B" - ], - "emoji": "🍻", - "name": "clinking beer mugs" - }, - { - "code": [ - "1F942" - ], - "emoji": "🥂", - "name": "clinking glasses" - }, - { - "code": [ - "1F943" - ], - "emoji": "🥃", - "name": "tumbler glass" - }, - { - "code": [ - "1FAD7" - ], - "emoji": "🫗", - "name": "pouring liquid" - }, - { - "code": [ - "1F964" - ], - "emoji": "🥤", - "name": "cup with straw" - }, - { - "code": [ - "1F9CB" - ], - "emoji": "🧋", - "name": "bubble tea" - }, - { - "code": [ - "1F9C3" - ], - "emoji": "🧃", - "name": "beverage box" - }, - { - "code": [ - "1F9C9" - ], - "emoji": "🧉", - "name": "mate" - }, - { - "code": [ - "1F9CA" - ], - "emoji": "🧊", - "name": "ice" - } - ], - "dishware": [ - { - "code": [ - "1F962" - ], - "emoji": "🥢", - "name": "chopsticks" - }, - { - "code": [ - "1F37D" - ], - "emoji": "🍽", - "name": "fork and knife with plate" - }, - { - "code": [ - "1F374" - ], - "emoji": "🍴", - "name": "fork and knife" - }, - { - "code": [ - "1F944" - ], - "emoji": "🥄", - "name": "spoon" - }, - { - "code": [ - "1F52A" - ], - "emoji": "🔪", - "name": "kitchen knife" - }, - { - "code": [ - "1FAD9" - ], - "emoji": "🫙", - "name": "jar" - }, - { - "code": [ - "1F3FA" - ], - "emoji": "🏺", - "name": "amphora" - } - ] - }, - "Travel & Places": { - "place-map": [ - { - "code": [ - "1F30D" - ], - "emoji": "🌍", - "name": "globe showing Europe-Africa" - }, - { - "code": [ - "1F30E" - ], - "emoji": "🌎", - "name": "globe showing Americas" - }, - { - "code": [ - "1F30F" - ], - "emoji": "🌏", - "name": "globe showing Asia-Australia" - }, - { - "code": [ - "1F310" - ], - "emoji": "🌐", - "name": "globe with meridians" - }, - { - "code": [ - "1F5FA" - ], - "emoji": "🗺", - "name": "world map" - }, - { - "code": [ - "1F5FE" - ], - "emoji": "🗾", - "name": "map of Japan" - }, - { - "code": [ - "1F9ED" - ], - "emoji": "🧭", - "name": "compass" - } - ], - "place-geographic": [ - { - "code": [ - "1F3D4" - ], - "emoji": "🏔", - "name": "snow-capped mountain" - }, - { - "code": [ - "26F0" - ], - "emoji": "⛰", - "name": "mountain" - }, - { - "code": [ - "1F30B" - ], - "emoji": "🌋", - "name": "volcano" - }, - { - "code": [ - "1F5FB" - ], - "emoji": "🗻", - "name": "mount fuji" - }, - { - "code": [ - "1F3D5" - ], - "emoji": "🏕", - "name": "camping" - }, - { - "code": [ - "1F3D6" - ], - "emoji": "🏖", - "name": "beach with umbrella" - }, - { - "code": [ - "1F3DC" - ], - "emoji": "🏜", - "name": "desert" - }, - { - "code": [ - "1F3DD" - ], - "emoji": "🏝", - "name": "desert island" - }, - { - "code": [ - "1F3DE" - ], - "emoji": "🏞", - "name": "national park" - } - ], - "place-building": [ - { - "code": [ - "1F3DF" - ], - "emoji": "🏟", - "name": "stadium" - }, - { - "code": [ - "1F3DB" - ], - "emoji": "🏛", - "name": "classical building" - }, - { - "code": [ - "1F3D7" - ], - "emoji": "🏗", - "name": "building construction" - }, - { - "code": [ - "1F9F1" - ], - "emoji": "🧱", - "name": "brick" - }, - { - "code": [ - "1FAA8" - ], - "emoji": "🪨", - "name": "rock" - }, - { - "code": [ - "1FAB5" - ], - "emoji": "🪵", - "name": "wood" - }, - { - "code": [ - "1F6D6" - ], - "emoji": "🛖", - "name": "hut" - }, - { - "code": [ - "1F3D8" - ], - "emoji": "🏘", - "name": "houses" - }, - { - "code": [ - "1F3DA" - ], - "emoji": "🏚", - "name": "derelict house" - }, - { - "code": [ - "1F3E0" - ], - "emoji": "🏠", - "name": "house" - }, - { - "code": [ - "1F3E1" - ], - "emoji": "🏡", - "name": "house with garden" - }, - { - "code": [ - "1F3E2" - ], - "emoji": "🏢", - "name": "office building" - }, - { - "code": [ - "1F3E3" - ], - "emoji": "🏣", - "name": "Japanese post office" - }, - { - "code": [ - "1F3E4" - ], - "emoji": "🏤", - "name": "post office" - }, - { - "code": [ - "1F3E5" - ], - "emoji": "🏥", - "name": "hospital" - }, - { - "code": [ - "1F3E6" - ], - "emoji": "🏦", - "name": "bank" - }, - { - "code": [ - "1F3E8" - ], - "emoji": "🏨", - "name": "hotel" - }, - { - "code": [ - "1F3E9" - ], - "emoji": "🏩", - "name": "love hotel" - }, - { - "code": [ - "1F3EA" - ], - "emoji": "🏪", - "name": "convenience store" - }, - { - "code": [ - "1F3EB" - ], - "emoji": "🏫", - "name": "school" - }, - { - "code": [ - "1F3EC" - ], - "emoji": "🏬", - "name": "department store" - }, - { - "code": [ - "1F3ED" - ], - "emoji": "🏭", - "name": "factory" - }, - { - "code": [ - "1F3EF" - ], - "emoji": "🏯", - "name": "Japanese castle" - }, - { - "code": [ - "1F3F0" - ], - "emoji": "🏰", - "name": "castle" - }, - { - "code": [ - "1F492" - ], - "emoji": "💒", - "name": "wedding" - }, - { - "code": [ - "1F5FC" - ], - "emoji": "🗼", - "name": "Tokyo tower" - }, - { - "code": [ - "1F5FD" - ], - "emoji": "🗽", - "name": "Statue of Liberty" - } - ], - "place-religious": [ - { - "code": [ - "26EA" - ], - "emoji": "⛪", - "name": "church" - }, - { - "code": [ - "1F54C" - ], - "emoji": "🕌", - "name": "mosque" - }, - { - "code": [ - "1F6D5" - ], - "emoji": "🛕", - "name": "hindu temple" - }, - { - "code": [ - "1F54D" - ], - "emoji": "🕍", - "name": "synagogue" - }, - { - "code": [ - "26E9" - ], - "emoji": "⛩", - "name": "shinto shrine" - }, - { - "code": [ - "1F54B" - ], - "emoji": "🕋", - "name": "kaaba" - } - ], - "place-other": [ - { - "code": [ - "26F2" - ], - "emoji": "⛲", - "name": "fountain" - }, - { - "code": [ - "26FA" - ], - "emoji": "⛺", - "name": "tent" - }, - { - "code": [ - "1F301" - ], - "emoji": "🌁", - "name": "foggy" - }, - { - "code": [ - "1F303" - ], - "emoji": "🌃", - "name": "night with stars" - }, - { - "code": [ - "1F3D9" - ], - "emoji": "🏙", - "name": "cityscape" - }, - { - "code": [ - "1F304" - ], - "emoji": "🌄", - "name": "sunrise over mountains" - }, - { - "code": [ - "1F305" - ], - "emoji": "🌅", - "name": "sunrise" - }, - { - "code": [ - "1F306" - ], - "emoji": "🌆", - "name": "cityscape at dusk" - }, - { - "code": [ - "1F307" - ], - "emoji": "🌇", - "name": "sunset" - }, - { - "code": [ - "1F309" - ], - "emoji": "🌉", - "name": "bridge at night" - }, - { - "code": [ - "2668" - ], - "emoji": "♨", - "name": "hot springs" - }, - { - "code": [ - "1F3A0" - ], - "emoji": "🎠", - "name": "carousel horse" - }, - { - "code": [ - "1F6DD" - ], - "emoji": "🛝", - "name": "playground slide" - }, - { - "code": [ - "1F3A1" - ], - "emoji": "🎡", - "name": "ferris wheel" - }, - { - "code": [ - "1F3A2" - ], - "emoji": "🎢", - "name": "roller coaster" - }, - { - "code": [ - "1F488" - ], - "emoji": "💈", - "name": "barber pole" - }, - { - "code": [ - "1F3AA" - ], - "emoji": "🎪", - "name": "circus tent" - } - ], - "transport-ground": [ - { - "code": [ - "1F682" - ], - "emoji": "🚂", - "name": "locomotive" - }, - { - "code": [ - "1F683" - ], - "emoji": "🚃", - "name": "railway car" - }, - { - "code": [ - "1F684" - ], - "emoji": "🚄", - "name": "high-speed train" - }, - { - "code": [ - "1F685" - ], - "emoji": "🚅", - "name": "bullet train" - }, - { - "code": [ - "1F686" - ], - "emoji": "🚆", - "name": "train" - }, - { - "code": [ - "1F687" - ], - "emoji": "🚇", - "name": "metro" - }, - { - "code": [ - "1F688" - ], - "emoji": "🚈", - "name": "light rail" - }, - { - "code": [ - "1F689" - ], - "emoji": "🚉", - "name": "station" - }, - { - "code": [ - "1F68A" - ], - "emoji": "🚊", - "name": "tram" - }, - { - "code": [ - "1F69D" - ], - "emoji": "🚝", - "name": "monorail" - }, - { - "code": [ - "1F69E" - ], - "emoji": "🚞", - "name": "mountain railway" - }, - { - "code": [ - "1F68B" - ], - "emoji": "🚋", - "name": "tram car" - }, - { - "code": [ - "1F68C" - ], - "emoji": "🚌", - "name": "bus" - }, - { - "code": [ - "1F68D" - ], - "emoji": "🚍", - "name": "oncoming bus" - }, - { - "code": [ - "1F68E" - ], - "emoji": "🚎", - "name": "trolleybus" - }, - { - "code": [ - "1F690" - ], - "emoji": "🚐", - "name": "minibus" - }, - { - "code": [ - "1F691" - ], - "emoji": "🚑", - "name": "ambulance" - }, - { - "code": [ - "1F692" - ], - "emoji": "🚒", - "name": "fire engine" - }, - { - "code": [ - "1F693" - ], - "emoji": "🚓", - "name": "police car" - }, - { - "code": [ - "1F694" - ], - "emoji": "🚔", - "name": "oncoming police car" - }, - { - "code": [ - "1F695" - ], - "emoji": "🚕", - "name": "taxi" - }, - { - "code": [ - "1F696" - ], - "emoji": "🚖", - "name": "oncoming taxi" - }, - { - "code": [ - "1F697" - ], - "emoji": "🚗", - "name": "automobile" - }, - { - "code": [ - "1F698" - ], - "emoji": "🚘", - "name": "oncoming automobile" - }, - { - "code": [ - "1F699" - ], - "emoji": "🚙", - "name": "sport utility vehicle" - }, - { - "code": [ - "1F6FB" - ], - "emoji": "🛻", - "name": "pickup truck" - }, - { - "code": [ - "1F69A" - ], - "emoji": "🚚", - "name": "delivery truck" - }, - { - "code": [ - "1F69B" - ], - "emoji": "🚛", - "name": "articulated lorry" - }, - { - "code": [ - "1F69C" - ], - "emoji": "🚜", - "name": "tractor" - }, - { - "code": [ - "1F3CE" - ], - "emoji": "🏎", - "name": "racing car" - }, - { - "code": [ - "1F3CD" - ], - "emoji": "🏍", - "name": "motorcycle" - }, - { - "code": [ - "1F6F5" - ], - "emoji": "🛵", - "name": "motor scooter" - }, - { - "code": [ - "1F9BD" - ], - "emoji": "🦽", - "name": "manual wheelchair" - }, - { - "code": [ - "1F9BC" - ], - "emoji": "🦼", - "name": "motorized wheelchair" - }, - { - "code": [ - "1F6FA" - ], - "emoji": "🛺", - "name": "auto rickshaw" - }, - { - "code": [ - "1F6B2" - ], - "emoji": "🚲", - "name": "bicycle" - }, - { - "code": [ - "1F6F4" - ], - "emoji": "🛴", - "name": "kick scooter" - }, - { - "code": [ - "1F6F9" - ], - "emoji": "🛹", - "name": "skateboard" - }, - { - "code": [ - "1F6FC" - ], - "emoji": "🛼", - "name": "roller skate" - }, - { - "code": [ - "1F68F" - ], - "emoji": "🚏", - "name": "bus stop" - }, - { - "code": [ - "1F6E3" - ], - "emoji": "🛣", - "name": "motorway" - }, - { - "code": [ - "1F6E4" - ], - "emoji": "🛤", - "name": "railway track" - }, - { - "code": [ - "1F6E2" - ], - "emoji": "🛢", - "name": "oil drum" - }, - { - "code": [ - "26FD" - ], - "emoji": "⛽", - "name": "fuel pump" - }, - { - "code": [ - "1F6DE" - ], - "emoji": "🛞", - "name": "wheel" - }, - { - "code": [ - "1F6A8" - ], - "emoji": "🚨", - "name": "police car light" - }, - { - "code": [ - "1F6A5" - ], - "emoji": "🚥", - "name": "horizontal traffic light" - }, - { - "code": [ - "1F6A6" - ], - "emoji": "🚦", - "name": "vertical traffic light" - }, - { - "code": [ - "1F6D1" - ], - "emoji": "🛑", - "name": "stop sign" - }, - { - "code": [ - "1F6A7" - ], - "emoji": "🚧", - "name": "construction" - } - ], - "transport-water": [ - { - "code": [ - "2693" - ], - "emoji": "⚓", - "name": "anchor" - }, - { - "code": [ - "1F6DF" - ], - "emoji": "🛟", - "name": "ring buoy" - }, - { - "code": [ - "26F5" - ], - "emoji": "⛵", - "name": "sailboat" - }, - { - "code": [ - "1F6F6" - ], - "emoji": "🛶", - "name": "canoe" - }, - { - "code": [ - "1F6A4" - ], - "emoji": "🚤", - "name": "speedboat" - }, - { - "code": [ - "1F6F3" - ], - "emoji": "🛳", - "name": "passenger ship" - }, - { - "code": [ - "26F4" - ], - "emoji": "⛴", - "name": "ferry" - }, - { - "code": [ - "1F6E5" - ], - "emoji": "🛥", - "name": "motor boat" - }, - { - "code": [ - "1F6A2" - ], - "emoji": "🚢", - "name": "ship" - } - ], - "transport-air": [ - { - "code": [ - "2708" - ], - "emoji": "✈", - "name": "airplane" - }, - { - "code": [ - "1F6E9" - ], - "emoji": "🛩", - "name": "small airplane" - }, - { - "code": [ - "1F6EB" - ], - "emoji": "🛫", - "name": "airplane departure" - }, - { - "code": [ - "1F6EC" - ], - "emoji": "🛬", - "name": "airplane arrival" - }, - { - "code": [ - "1FA82" - ], - "emoji": "🪂", - "name": "parachute" - }, - { - "code": [ - "1F4BA" - ], - "emoji": "💺", - "name": "seat" - }, - { - "code": [ - "1F681" - ], - "emoji": "🚁", - "name": "helicopter" - }, - { - "code": [ - "1F69F" - ], - "emoji": "🚟", - "name": "suspension railway" - }, - { - "code": [ - "1F6A0" - ], - "emoji": "🚠", - "name": "mountain cableway" - }, - { - "code": [ - "1F6A1" - ], - "emoji": "🚡", - "name": "aerial tramway" - }, - { - "code": [ - "1F6F0" - ], - "emoji": "🛰", - "name": "satellite" - }, - { - "code": [ - "1F680" - ], - "emoji": "🚀", - "name": "rocket" - }, - { - "code": [ - "1F6F8" - ], - "emoji": "🛸", - "name": "flying saucer" - } - ], - "hotel": [ - { - "code": [ - "1F6CE" - ], - "emoji": "🛎", - "name": "bellhop bell" - }, - { - "code": [ - "1F9F3" - ], - "emoji": "🧳", - "name": "luggage" - } - ], - "time": [ - { - "code": [ - "231B" - ], - "emoji": "⌛", - "name": "hourglass done" - }, - { - "code": [ - "23F3" - ], - "emoji": "⏳", - "name": "hourglass not done" - }, - { - "code": [ - "231A" - ], - "emoji": "⌚", - "name": "watch" - }, - { - "code": [ - "23F0" - ], - "emoji": "⏰", - "name": "alarm clock" - }, - { - "code": [ - "23F1" - ], - "emoji": "⏱", - "name": "stopwatch" - }, - { - "code": [ - "23F2" - ], - "emoji": "⏲", - "name": "timer clock" - }, - { - "code": [ - "1F570" - ], - "emoji": "🕰", - "name": "mantelpiece clock" - }, - { - "code": [ - "1F55B" - ], - "emoji": "🕛", - "name": "twelve o’clock" - }, - { - "code": [ - "1F567" - ], - "emoji": "🕧", - "name": "twelve-thirty" - }, - { - "code": [ - "1F550" - ], - "emoji": "🕐", - "name": "one o’clock" - }, - { - "code": [ - "1F55C" - ], - "emoji": "🕜", - "name": "one-thirty" - }, - { - "code": [ - "1F551" - ], - "emoji": "🕑", - "name": "two o’clock" - }, - { - "code": [ - "1F55D" - ], - "emoji": "🕝", - "name": "two-thirty" - }, - { - "code": [ - "1F552" - ], - "emoji": "🕒", - "name": "three o’clock" - }, - { - "code": [ - "1F55E" - ], - "emoji": "🕞", - "name": "three-thirty" - }, - { - "code": [ - "1F553" - ], - "emoji": "🕓", - "name": "four o’clock" - }, - { - "code": [ - "1F55F" - ], - "emoji": "🕟", - "name": "four-thirty" - }, - { - "code": [ - "1F554" - ], - "emoji": "🕔", - "name": "five o’clock" - }, - { - "code": [ - "1F560" - ], - "emoji": "🕠", - "name": "five-thirty" - }, - { - "code": [ - "1F555" - ], - "emoji": "🕕", - "name": "six o’clock" - }, - { - "code": [ - "1F561" - ], - "emoji": "🕡", - "name": "six-thirty" - }, - { - "code": [ - "1F556" - ], - "emoji": "🕖", - "name": "seven o’clock" - }, - { - "code": [ - "1F562" - ], - "emoji": "🕢", - "name": "seven-thirty" - }, - { - "code": [ - "1F557" - ], - "emoji": "🕗", - "name": "eight o’clock" - }, - { - "code": [ - "1F563" - ], - "emoji": "🕣", - "name": "eight-thirty" - }, - { - "code": [ - "1F558" - ], - "emoji": "🕘", - "name": "nine o’clock" - }, - { - "code": [ - "1F564" - ], - "emoji": "🕤", - "name": "nine-thirty" - }, - { - "code": [ - "1F559" - ], - "emoji": "🕙", - "name": "ten o’clock" - }, - { - "code": [ - "1F565" - ], - "emoji": "🕥", - "name": "ten-thirty" - }, - { - "code": [ - "1F55A" - ], - "emoji": "🕚", - "name": "eleven o’clock" - }, - { - "code": [ - "1F566" - ], - "emoji": "🕦", - "name": "eleven-thirty" - } - ], - "sky & weather": [ - { - "code": [ - "1F311" - ], - "emoji": "🌑", - "name": "new moon" - }, - { - "code": [ - "1F312" - ], - "emoji": "🌒", - "name": "waxing crescent moon" - }, - { - "code": [ - "1F313" - ], - "emoji": "🌓", - "name": "first quarter moon" - }, - { - "code": [ - "1F314" - ], - "emoji": "🌔", - "name": "waxing gibbous moon" - }, - { - "code": [ - "1F315" - ], - "emoji": "🌕", - "name": "full moon" - }, - { - "code": [ - "1F316" - ], - "emoji": "🌖", - "name": "waning gibbous moon" - }, - { - "code": [ - "1F317" - ], - "emoji": "🌗", - "name": "last quarter moon" - }, - { - "code": [ - "1F318" - ], - "emoji": "🌘", - "name": "waning crescent moon" - }, - { - "code": [ - "1F319" - ], - "emoji": "🌙", - "name": "crescent moon" - }, - { - "code": [ - "1F31A" - ], - "emoji": "🌚", - "name": "new moon face" - }, - { - "code": [ - "1F31B" - ], - "emoji": "🌛", - "name": "first quarter moon face" - }, - { - "code": [ - "1F31C" - ], - "emoji": "🌜", - "name": "last quarter moon face" - }, - { - "code": [ - "1F321" - ], - "emoji": "🌡", - "name": "thermometer" - }, - { - "code": [ - "2600" - ], - "emoji": "☀", - "name": "sun" - }, - { - "code": [ - "1F31D" - ], - "emoji": "🌝", - "name": "full moon face" - }, - { - "code": [ - "1F31E" - ], - "emoji": "🌞", - "name": "sun with face" - }, - { - "code": [ - "1FA90" - ], - "emoji": "🪐", - "name": "ringed planet" - }, - { - "code": [ - "2B50" - ], - "emoji": "⭐", - "name": "star" - }, - { - "code": [ - "1F31F" - ], - "emoji": "🌟", - "name": "glowing star" - }, - { - "code": [ - "1F320" - ], - "emoji": "🌠", - "name": "shooting star" - }, - { - "code": [ - "1F30C" - ], - "emoji": "🌌", - "name": "milky way" - }, - { - "code": [ - "2601" - ], - "emoji": "☁", - "name": "cloud" - }, - { - "code": [ - "26C5" - ], - "emoji": "⛅", - "name": "sun behind cloud" - }, - { - "code": [ - "26C8" - ], - "emoji": "⛈", - "name": "cloud with lightning and rain" - }, - { - "code": [ - "1F324" - ], - "emoji": "🌤", - "name": "sun behind small cloud" - }, - { - "code": [ - "1F325" - ], - "emoji": "🌥", - "name": "sun behind large cloud" - }, - { - "code": [ - "1F326" - ], - "emoji": "🌦", - "name": "sun behind rain cloud" - }, - { - "code": [ - "1F327" - ], - "emoji": "🌧", - "name": "cloud with rain" - }, - { - "code": [ - "1F328" - ], - "emoji": "🌨", - "name": "cloud with snow" - }, - { - "code": [ - "1F329" - ], - "emoji": "🌩", - "name": "cloud with lightning" - }, - { - "code": [ - "1F32A" - ], - "emoji": "🌪", - "name": "tornado" - }, - { - "code": [ - "1F32B" - ], - "emoji": "🌫", - "name": "fog" - }, - { - "code": [ - "1F32C" - ], - "emoji": "🌬", - "name": "wind face" - }, - { - "code": [ - "1F300" - ], - "emoji": "🌀", - "name": "cyclone" - }, - { - "code": [ - "1F308" - ], - "emoji": "🌈", - "name": "rainbow" - }, - { - "code": [ - "1F302" - ], - "emoji": "🌂", - "name": "closed umbrella" - }, - { - "code": [ - "2602" - ], - "emoji": "☂", - "name": "umbrella" - }, - { - "code": [ - "2614" - ], - "emoji": "☔", - "name": "umbrella with rain drops" - }, - { - "code": [ - "26F1" - ], - "emoji": "⛱", - "name": "umbrella on ground" - }, - { - "code": [ - "26A1" - ], - "emoji": "⚡", - "name": "high voltage" - }, - { - "code": [ - "2744" - ], - "emoji": "❄", - "name": "snowflake" - }, - { - "code": [ - "2603" - ], - "emoji": "☃", - "name": "snowman" - }, - { - "code": [ - "26C4" - ], - "emoji": "⛄", - "name": "snowman without snow" - }, - { - "code": [ - "2604" - ], - "emoji": "☄", - "name": "comet" - }, - { - "code": [ - "1F525" - ], - "emoji": "🔥", - "name": "fire" - }, - { - "code": [ - "1F4A7" - ], - "emoji": "💧", - "name": "droplet" - }, - { - "code": [ - "1F30A" - ], - "emoji": "🌊", - "name": "water wave" - } - ] - }, - "Activities": { - "event": [ - { - "code": [ - "1F383" - ], - "emoji": "🎃", - "name": "jack-o-lantern" - }, - { - "code": [ - "1F384" - ], - "emoji": "🎄", - "name": "Christmas tree" - }, - { - "code": [ - "1F386" - ], - "emoji": "🎆", - "name": "fireworks" - }, - { - "code": [ - "1F387" - ], - "emoji": "🎇", - "name": "sparkler" - }, - { - "code": [ - "1F9E8" - ], - "emoji": "🧨", - "name": "firecracker" - }, - { - "code": [ - "2728" - ], - "emoji": "✨", - "name": "sparkles" - }, - { - "code": [ - "1F388" - ], - "emoji": "🎈", - "name": "balloon" - }, - { - "code": [ - "1F389" - ], - "emoji": "🎉", - "name": "party popper" - }, - { - "code": [ - "1F38A" - ], - "emoji": "🎊", - "name": "confetti ball" - }, - { - "code": [ - "1F38B" - ], - "emoji": "🎋", - "name": "tanabata tree" - }, - { - "code": [ - "1F38D" - ], - "emoji": "🎍", - "name": "pine decoration" - }, - { - "code": [ - "1F38E" - ], - "emoji": "🎎", - "name": "Japanese dolls" - }, - { - "code": [ - "1F38F" - ], - "emoji": "🎏", - "name": "carp streamer" - }, - { - "code": [ - "1F390" - ], - "emoji": "🎐", - "name": "wind chime" - }, - { - "code": [ - "1F391" - ], - "emoji": "🎑", - "name": "moon viewing ceremony" - }, - { - "code": [ - "1F9E7" - ], - "emoji": "🧧", - "name": "red envelope" - }, - { - "code": [ - "1F380" - ], - "emoji": "🎀", - "name": "ribbon" - }, - { - "code": [ - "1F381" - ], - "emoji": "🎁", - "name": "wrapped gift" - }, - { - "code": [ - "1F397" - ], - "emoji": "🎗", - "name": "reminder ribbon" - }, - { - "code": [ - "1F39F" - ], - "emoji": "🎟", - "name": "admission tickets" - }, - { - "code": [ - "1F3AB" - ], - "emoji": "🎫", - "name": "ticket" - } - ], - "award-medal": [ - { - "code": [ - "1F396" - ], - "emoji": "🎖", - "name": "military medal" - }, - { - "code": [ - "1F3C6" - ], - "emoji": "🏆", - "name": "trophy" - }, - { - "code": [ - "1F3C5" - ], - "emoji": "🏅", - "name": "sports medal" - }, - { - "code": [ - "1F947" - ], - "emoji": "🥇", - "name": "1st place medal" - }, - { - "code": [ - "1F948" - ], - "emoji": "🥈", - "name": "2nd place medal" - }, - { - "code": [ - "1F949" - ], - "emoji": "🥉", - "name": "3rd place medal" - } - ], - "sport": [ - { - "code": [ - "26BD" - ], - "emoji": "⚽", - "name": "soccer ball" - }, - { - "code": [ - "26BE" - ], - "emoji": "⚾", - "name": "baseball" - }, - { - "code": [ - "1F94E" - ], - "emoji": "🥎", - "name": "softball" - }, - { - "code": [ - "1F3C0" - ], - "emoji": "🏀", - "name": "basketball" - }, - { - "code": [ - "1F3D0" - ], - "emoji": "🏐", - "name": "volleyball" - }, - { - "code": [ - "1F3C8" - ], - "emoji": "🏈", - "name": "american football" - }, - { - "code": [ - "1F3C9" - ], - "emoji": "🏉", - "name": "rugby football" - }, - { - "code": [ - "1F3BE" - ], - "emoji": "🎾", - "name": "tennis" - }, - { - "code": [ - "1F94F" - ], - "emoji": "🥏", - "name": "flying disc" - }, - { - "code": [ - "1F3B3" - ], - "emoji": "🎳", - "name": "bowling" - }, - { - "code": [ - "1F3CF" - ], - "emoji": "🏏", - "name": "cricket game" - }, - { - "code": [ - "1F3D1" - ], - "emoji": "🏑", - "name": "field hockey" - }, - { - "code": [ - "1F3D2" - ], - "emoji": "🏒", - "name": "ice hockey" - }, - { - "code": [ - "1F94D" - ], - "emoji": "🥍", - "name": "lacrosse" - }, - { - "code": [ - "1F3D3" - ], - "emoji": "🏓", - "name": "ping pong" - }, - { - "code": [ - "1F3F8" - ], - "emoji": "🏸", - "name": "badminton" - }, - { - "code": [ - "1F94A" - ], - "emoji": "🥊", - "name": "boxing glove" - }, - { - "code": [ - "1F94B" - ], - "emoji": "🥋", - "name": "martial arts uniform" - }, - { - "code": [ - "1F945" - ], - "emoji": "🥅", - "name": "goal net" - }, - { - "code": [ - "26F3" - ], - "emoji": "⛳", - "name": "flag in hole" - }, - { - "code": [ - "26F8" - ], - "emoji": "⛸", - "name": "ice skate" - }, - { - "code": [ - "1F3A3" - ], - "emoji": "🎣", - "name": "fishing pole" - }, - { - "code": [ - "1F93F" - ], - "emoji": "🤿", - "name": "diving mask" - }, - { - "code": [ - "1F3BD" - ], - "emoji": "🎽", - "name": "running shirt" - }, - { - "code": [ - "1F3BF" - ], - "emoji": "🎿", - "name": "skis" - }, - { - "code": [ - "1F6F7" - ], - "emoji": "🛷", - "name": "sled" - }, - { - "code": [ - "1F94C" - ], - "emoji": "🥌", - "name": "curling stone" - } - ], - "game": [ - { - "code": [ - "1F3AF" - ], - "emoji": "🎯", - "name": "bullseye" - }, - { - "code": [ - "1FA80" - ], - "emoji": "🪀", - "name": "yo-yo" - }, - { - "code": [ - "1FA81" - ], - "emoji": "🪁", - "name": "kite" - }, - { - "code": [ - "1F52B" - ], - "emoji": "🔫", - "name": "water pistol" - }, - { - "code": [ - "1F3B1" - ], - "emoji": "🎱", - "name": "pool 8 ball" - }, - { - "code": [ - "1F52E" - ], - "emoji": "🔮", - "name": "crystal ball" - }, - { - "code": [ - "1FA84" - ], - "emoji": "🪄", - "name": "magic wand" - }, - { - "code": [ - "1F3AE" - ], - "emoji": "🎮", - "name": "video game" - }, - { - "code": [ - "1F579" - ], - "emoji": "🕹", - "name": "joystick" - }, - { - "code": [ - "1F3B0" - ], - "emoji": "🎰", - "name": "slot machine" - }, - { - "code": [ - "1F3B2" - ], - "emoji": "🎲", - "name": "game die" - }, - { - "code": [ - "1F9E9" - ], - "emoji": "🧩", - "name": "puzzle piece" - }, - { - "code": [ - "1F9F8" - ], - "emoji": "🧸", - "name": "teddy bear" - }, - { - "code": [ - "1FA85" - ], - "emoji": "🪅", - "name": "piñata" - }, - { - "code": [ - "1FAA9" - ], - "emoji": "🪩", - "name": "mirror ball" - }, - { - "code": [ - "1FA86" - ], - "emoji": "🪆", - "name": "nesting dolls" - }, - { - "code": [ - "2660" - ], - "emoji": "♠", - "name": "spade suit" - }, - { - "code": [ - "2665" - ], - "emoji": "♥", - "name": "heart suit" - }, - { - "code": [ - "2666" - ], - "emoji": "♦", - "name": "diamond suit" - }, - { - "code": [ - "2663" - ], - "emoji": "♣", - "name": "club suit" - }, - { - "code": [ - "265F" - ], - "emoji": "♟", - "name": "chess pawn" - }, - { - "code": [ - "1F0CF" - ], - "emoji": "🃏", - "name": "joker" - }, - { - "code": [ - "1F004" - ], - "emoji": "🀄", - "name": "mahjong red dragon" - }, - { - "code": [ - "1F3B4" - ], - "emoji": "🎴", - "name": "flower playing cards" - } - ], - "arts & crafts": [ - { - "code": [ - "1F3AD" - ], - "emoji": "🎭", - "name": "performing arts" - }, - { - "code": [ - "1F5BC" - ], - "emoji": "🖼", - "name": "framed picture" - }, - { - "code": [ - "1F3A8" - ], - "emoji": "🎨", - "name": "artist palette" - }, - { - "code": [ - "1F9F5" - ], - "emoji": "🧵", - "name": "thread" - }, - { - "code": [ - "1FAA1" - ], - "emoji": "🪡", - "name": "sewing needle" - }, - { - "code": [ - "1F9F6" - ], - "emoji": "🧶", - "name": "yarn" - }, - { - "code": [ - "1FAA2" - ], - "emoji": "🪢", - "name": "knot" - } - ] - }, - "Objects": { - "clothing": [ - { - "code": [ - "1F453" - ], - "emoji": "👓", - "name": "glasses" - }, - { - "code": [ - "1F576" - ], - "emoji": "🕶", - "name": "sunglasses" - }, - { - "code": [ - "1F97D" - ], - "emoji": "🥽", - "name": "goggles" - }, - { - "code": [ - "1F97C" - ], - "emoji": "🥼", - "name": "lab coat" - }, - { - "code": [ - "1F9BA" - ], - "emoji": "🦺", - "name": "safety vest" - }, - { - "code": [ - "1F454" - ], - "emoji": "👔", - "name": "necktie" - }, - { - "code": [ - "1F455" - ], - "emoji": "👕", - "name": "t-shirt" - }, - { - "code": [ - "1F456" - ], - "emoji": "👖", - "name": "jeans" - }, - { - "code": [ - "1F9E3" - ], - "emoji": "🧣", - "name": "scarf" - }, - { - "code": [ - "1F9E4" - ], - "emoji": "🧤", - "name": "gloves" - }, - { - "code": [ - "1F9E5" - ], - "emoji": "🧥", - "name": "coat" - }, - { - "code": [ - "1F9E6" - ], - "emoji": "🧦", - "name": "socks" - }, - { - "code": [ - "1F457" - ], - "emoji": "👗", - "name": "dress" - }, - { - "code": [ - "1F458" - ], - "emoji": "👘", - "name": "kimono" - }, - { - "code": [ - "1F97B" - ], - "emoji": "🥻", - "name": "sari" - }, - { - "code": [ - "1FA71" - ], - "emoji": "🩱", - "name": "one-piece swimsuit" - }, - { - "code": [ - "1FA72" - ], - "emoji": "🩲", - "name": "briefs" - }, - { - "code": [ - "1FA73" - ], - "emoji": "🩳", - "name": "shorts" - }, - { - "code": [ - "1F459" - ], - "emoji": "👙", - "name": "bikini" - }, - { - "code": [ - "1F45A" - ], - "emoji": "👚", - "name": "woman’s clothes" - }, - { - "code": [ - "1FAAD" - ], - "emoji": "🪭", - "name": "folding hand fan" - }, - { - "code": [ - "1F45B" - ], - "emoji": "👛", - "name": "purse" - }, - { - "code": [ - "1F45C" - ], - "emoji": "👜", - "name": "handbag" - }, - { - "code": [ - "1F45D" - ], - "emoji": "👝", - "name": "clutch bag" - }, - { - "code": [ - "1F6CD" - ], - "emoji": "🛍", - "name": "shopping bags" - }, - { - "code": [ - "1F392" - ], - "emoji": "🎒", - "name": "backpack" - }, - { - "code": [ - "1FA74" - ], - "emoji": "🩴", - "name": "thong sandal" - }, - { - "code": [ - "1F45E" - ], - "emoji": "👞", - "name": "man’s shoe" - }, - { - "code": [ - "1F45F" - ], - "emoji": "👟", - "name": "running shoe" - }, - { - "code": [ - "1F97E" - ], - "emoji": "🥾", - "name": "hiking boot" - }, - { - "code": [ - "1F97F" - ], - "emoji": "🥿", - "name": "flat shoe" - }, - { - "code": [ - "1F460" - ], - "emoji": "👠", - "name": "high-heeled shoe" - }, - { - "code": [ - "1F461" - ], - "emoji": "👡", - "name": "woman’s sandal" - }, - { - "code": [ - "1FA70" - ], - "emoji": "🩰", - "name": "ballet shoes" - }, - { - "code": [ - "1F462" - ], - "emoji": "👢", - "name": "woman’s boot" - }, - { - "code": [ - "1FAAE" - ], - "emoji": "🪮", - "name": "hair pick" - }, - { - "code": [ - "1F451" - ], - "emoji": "👑", - "name": "crown" - }, - { - "code": [ - "1F452" - ], - "emoji": "👒", - "name": "woman’s hat" - }, - { - "code": [ - "1F3A9" - ], - "emoji": "🎩", - "name": "top hat" - }, - { - "code": [ - "1F393" - ], - "emoji": "🎓", - "name": "graduation cap" - }, - { - "code": [ - "1F9E2" - ], - "emoji": "🧢", - "name": "billed cap" - }, - { - "code": [ - "1FA96" - ], - "emoji": "🪖", - "name": "military helmet" - }, - { - "code": [ - "26D1" - ], - "emoji": "⛑", - "name": "rescue worker’s helmet" - }, - { - "code": [ - "1F4FF" - ], - "emoji": "📿", - "name": "prayer beads" - }, - { - "code": [ - "1F484" - ], - "emoji": "💄", - "name": "lipstick" - }, - { - "code": [ - "1F48D" - ], - "emoji": "💍", - "name": "ring" - }, - { - "code": [ - "1F48E" - ], - "emoji": "💎", - "name": "gem stone" - } - ], - "sound": [ - { - "code": [ - "1F507" - ], - "emoji": "🔇", - "name": "muted speaker" - }, - { - "code": [ - "1F508" - ], - "emoji": "🔈", - "name": "speaker low volume" - }, - { - "code": [ - "1F509" - ], - "emoji": "🔉", - "name": "speaker medium volume" - }, - { - "code": [ - "1F50A" - ], - "emoji": "🔊", - "name": "speaker high volume" - }, - { - "code": [ - "1F4E2" - ], - "emoji": "📢", - "name": "loudspeaker" - }, - { - "code": [ - "1F4E3" - ], - "emoji": "📣", - "name": "megaphone" - }, - { - "code": [ - "1F4EF" - ], - "emoji": "📯", - "name": "postal horn" - }, - { - "code": [ - "1F514" - ], - "emoji": "🔔", - "name": "bell" - }, - { - "code": [ - "1F515" - ], - "emoji": "🔕", - "name": "bell with slash" - } - ], - "music": [ - { - "code": [ - "1F3BC" - ], - "emoji": "🎼", - "name": "musical score" - }, - { - "code": [ - "1F3B5" - ], - "emoji": "🎵", - "name": "musical note" - }, - { - "code": [ - "1F3B6" - ], - "emoji": "🎶", - "name": "musical notes" - }, - { - "code": [ - "1F399" - ], - "emoji": "🎙", - "name": "studio microphone" - }, - { - "code": [ - "1F39A" - ], - "emoji": "🎚", - "name": "level slider" - }, - { - "code": [ - "1F39B" - ], - "emoji": "🎛", - "name": "control knobs" - }, - { - "code": [ - "1F3A4" - ], - "emoji": "🎤", - "name": "microphone" - }, - { - "code": [ - "1F3A7" - ], - "emoji": "🎧", - "name": "headphone" - }, - { - "code": [ - "1F4FB" - ], - "emoji": "📻", - "name": "radio" - } - ], - "musical-instrument": [ - { - "code": [ - "1F3B7" - ], - "emoji": "🎷", - "name": "saxophone" - }, - { - "code": [ - "1FA97" - ], - "emoji": "🪗", - "name": "accordion" - }, - { - "code": [ - "1F3B8" - ], - "emoji": "🎸", - "name": "guitar" - }, - { - "code": [ - "1F3B9" - ], - "emoji": "🎹", - "name": "musical keyboard" - }, - { - "code": [ - "1F3BA" - ], - "emoji": "🎺", - "name": "trumpet" - }, - { - "code": [ - "1F3BB" - ], - "emoji": "🎻", - "name": "violin" - }, - { - "code": [ - "1FA95" - ], - "emoji": "🪕", - "name": "banjo" - }, - { - "code": [ - "1F941" - ], - "emoji": "🥁", - "name": "drum" - }, - { - "code": [ - "1FA98" - ], - "emoji": "🪘", - "name": "long drum" - }, - { - "code": [ - "1FA87" - ], - "emoji": "🪇", - "name": "maracas" - }, - { - "code": [ - "1FA88" - ], - "emoji": "🪈", - "name": "flute" - }, - { - "code": [ - "1FA89" - ], - "emoji": "🪉", - "name": "harp" - } - ], - "phone": [ - { - "code": [ - "1F4F1" - ], - "emoji": "📱", - "name": "mobile phone" - }, - { - "code": [ - "1F4F2" - ], - "emoji": "📲", - "name": "mobile phone with arrow" - }, - { - "code": [ - "260E" - ], - "emoji": "☎", - "name": "telephone" - }, - { - "code": [ - "1F4DE" - ], - "emoji": "📞", - "name": "telephone receiver" - }, - { - "code": [ - "1F4DF" - ], - "emoji": "📟", - "name": "pager" - }, - { - "code": [ - "1F4E0" - ], - "emoji": "📠", - "name": "fax machine" - } - ], - "computer": [ - { - "code": [ - "1F50B" - ], - "emoji": "🔋", - "name": "battery" - }, - { - "code": [ - "1FAAB" - ], - "emoji": "🪫", - "name": "low battery" - }, - { - "code": [ - "1F50C" - ], - "emoji": "🔌", - "name": "electric plug" - }, - { - "code": [ - "1F4BB" - ], - "emoji": "💻", - "name": "laptop" - }, - { - "code": [ - "1F5A5" - ], - "emoji": "🖥", - "name": "desktop computer" - }, - { - "code": [ - "1F5A8" - ], - "emoji": "🖨", - "name": "printer" - }, - { - "code": [ - "2328" - ], - "emoji": "⌨", - "name": "keyboard" - }, - { - "code": [ - "1F5B1" - ], - "emoji": "🖱", - "name": "computer mouse" - }, - { - "code": [ - "1F5B2" - ], - "emoji": "🖲", - "name": "trackball" - }, - { - "code": [ - "1F4BD" - ], - "emoji": "💽", - "name": "computer disk" - }, - { - "code": [ - "1F4BE" - ], - "emoji": "💾", - "name": "floppy disk" - }, - { - "code": [ - "1F4BF" - ], - "emoji": "💿", - "name": "optical disk" - }, - { - "code": [ - "1F4C0" - ], - "emoji": "📀", - "name": "dvd" - }, - { - "code": [ - "1F9EE" - ], - "emoji": "🧮", - "name": "abacus" - } - ], - "light & video": [ - { - "code": [ - "1F3A5" - ], - "emoji": "🎥", - "name": "movie camera" - }, - { - "code": [ - "1F39E" - ], - "emoji": "🎞", - "name": "film frames" - }, - { - "code": [ - "1F4FD" - ], - "emoji": "📽", - "name": "film projector" - }, - { - "code": [ - "1F3AC" - ], - "emoji": "🎬", - "name": "clapper board" - }, - { - "code": [ - "1F4FA" - ], - "emoji": "📺", - "name": "television" - }, - { - "code": [ - "1F4F7" - ], - "emoji": "📷", - "name": "camera" - }, - { - "code": [ - "1F4F8" - ], - "emoji": "📸", - "name": "camera with flash" - }, - { - "code": [ - "1F4F9" - ], - "emoji": "📹", - "name": "video camera" - }, - { - "code": [ - "1F4FC" - ], - "emoji": "📼", - "name": "videocassette" - }, - { - "code": [ - "1F50D" - ], - "emoji": "🔍", - "name": "magnifying glass tilted left" - }, - { - "code": [ - "1F50E" - ], - "emoji": "🔎", - "name": "magnifying glass tilted right" - }, - { - "code": [ - "1F56F" - ], - "emoji": "🕯", - "name": "candle" - }, - { - "code": [ - "1F4A1" - ], - "emoji": "💡", - "name": "light bulb" - }, - { - "code": [ - "1F526" - ], - "emoji": "🔦", - "name": "flashlight" - }, - { - "code": [ - "1F3EE" - ], - "emoji": "🏮", - "name": "red paper lantern" - }, - { - "code": [ - "1FA94" - ], - "emoji": "🪔", - "name": "diya lamp" - } - ], - "book-paper": [ - { - "code": [ - "1F4D4" - ], - "emoji": "📔", - "name": "notebook with decorative cover" - }, - { - "code": [ - "1F4D5" - ], - "emoji": "📕", - "name": "closed book" - }, - { - "code": [ - "1F4D6" - ], - "emoji": "📖", - "name": "open book" - }, - { - "code": [ - "1F4D7" - ], - "emoji": "📗", - "name": "green book" - }, - { - "code": [ - "1F4D8" - ], - "emoji": "📘", - "name": "blue book" - }, - { - "code": [ - "1F4D9" - ], - "emoji": "📙", - "name": "orange book" - }, - { - "code": [ - "1F4DA" - ], - "emoji": "📚", - "name": "books" - }, - { - "code": [ - "1F4D3" - ], - "emoji": "📓", - "name": "notebook" - }, - { - "code": [ - "1F4D2" - ], - "emoji": "📒", - "name": "ledger" - }, - { - "code": [ - "1F4C3" - ], - "emoji": "📃", - "name": "page with curl" - }, - { - "code": [ - "1F4DC" - ], - "emoji": "📜", - "name": "scroll" - }, - { - "code": [ - "1F4C4" - ], - "emoji": "📄", - "name": "page facing up" - }, - { - "code": [ - "1F4F0" - ], - "emoji": "📰", - "name": "newspaper" - }, - { - "code": [ - "1F5DE" - ], - "emoji": "🗞", - "name": "rolled-up newspaper" - }, - { - "code": [ - "1F4D1" - ], - "emoji": "📑", - "name": "bookmark tabs" - }, - { - "code": [ - "1F516" - ], - "emoji": "🔖", - "name": "bookmark" - }, - { - "code": [ - "1F3F7" - ], - "emoji": "🏷", - "name": "label" - } - ], - "money": [ - { - "code": [ - "1F4B0" - ], - "emoji": "💰", - "name": "money bag" - }, - { - "code": [ - "1FA99" - ], - "emoji": "🪙", - "name": "coin" - }, - { - "code": [ - "1F4B4" - ], - "emoji": "💴", - "name": "yen banknote" - }, - { - "code": [ - "1F4B5" - ], - "emoji": "💵", - "name": "dollar banknote" - }, - { - "code": [ - "1F4B6" - ], - "emoji": "💶", - "name": "euro banknote" - }, - { - "code": [ - "1F4B7" - ], - "emoji": "💷", - "name": "pound banknote" - }, - { - "code": [ - "1F4B8" - ], - "emoji": "💸", - "name": "money with wings" - }, - { - "code": [ - "1F4B3" - ], - "emoji": "💳", - "name": "credit card" - }, - { - "code": [ - "1F9FE" - ], - "emoji": "🧾", - "name": "receipt" - }, - { - "code": [ - "1F4B9" - ], - "emoji": "💹", - "name": "chart increasing with yen" - } - ], - "mail": [ - { - "code": [ - "2709" - ], - "emoji": "✉", - "name": "envelope" - }, - { - "code": [ - "1F4E7" - ], - "emoji": "📧", - "name": "e-mail" - }, - { - "code": [ - "1F4E8" - ], - "emoji": "📨", - "name": "incoming envelope" - }, - { - "code": [ - "1F4E9" - ], - "emoji": "📩", - "name": "envelope with arrow" - }, - { - "code": [ - "1F4E4" - ], - "emoji": "📤", - "name": "outbox tray" - }, - { - "code": [ - "1F4E5" - ], - "emoji": "📥", - "name": "inbox tray" - }, - { - "code": [ - "1F4E6" - ], - "emoji": "📦", - "name": "package" - }, - { - "code": [ - "1F4EB" - ], - "emoji": "📫", - "name": "closed mailbox with raised flag" - }, - { - "code": [ - "1F4EA" - ], - "emoji": "📪", - "name": "closed mailbox with lowered flag" - }, - { - "code": [ - "1F4EC" - ], - "emoji": "📬", - "name": "open mailbox with raised flag" - }, - { - "code": [ - "1F4ED" - ], - "emoji": "📭", - "name": "open mailbox with lowered flag" - }, - { - "code": [ - "1F4EE" - ], - "emoji": "📮", - "name": "postbox" - }, - { - "code": [ - "1F5F3" - ], - "emoji": "🗳", - "name": "ballot box with ballot" - } - ], - "writing": [ - { - "code": [ - "270F" - ], - "emoji": "✏", - "name": "pencil" - }, - { - "code": [ - "2712" - ], - "emoji": "✒", - "name": "black nib" - }, - { - "code": [ - "1F58B" - ], - "emoji": "🖋", - "name": "fountain pen" - }, - { - "code": [ - "1F58A" - ], - "emoji": "🖊", - "name": "pen" - }, - { - "code": [ - "1F58C" - ], - "emoji": "🖌", - "name": "paintbrush" - }, - { - "code": [ - "1F58D" - ], - "emoji": "🖍", - "name": "crayon" - }, - { - "code": [ - "1F4DD" - ], - "emoji": "📝", - "name": "memo" - } - ], - "office": [ - { - "code": [ - "1F4BC" - ], - "emoji": "💼", - "name": "briefcase" - }, - { - "code": [ - "1F4C1" - ], - "emoji": "📁", - "name": "file folder" - }, - { - "code": [ - "1F4C2" - ], - "emoji": "📂", - "name": "open file folder" - }, - { - "code": [ - "1F5C2" - ], - "emoji": "🗂", - "name": "card index dividers" - }, - { - "code": [ - "1F4C5" - ], - "emoji": "📅", - "name": "calendar" - }, - { - "code": [ - "1F4C6" - ], - "emoji": "📆", - "name": "tear-off calendar" - }, - { - "code": [ - "1F5D2" - ], - "emoji": "🗒", - "name": "spiral notepad" - }, - { - "code": [ - "1F5D3" - ], - "emoji": "🗓", - "name": "spiral calendar" - }, - { - "code": [ - "1F4C7" - ], - "emoji": "📇", - "name": "card index" - }, - { - "code": [ - "1F4C8" - ], - "emoji": "📈", - "name": "chart increasing" - }, - { - "code": [ - "1F4C9" - ], - "emoji": "📉", - "name": "chart decreasing" - }, - { - "code": [ - "1F4CA" - ], - "emoji": "📊", - "name": "bar chart" - }, - { - "code": [ - "1F4CB" - ], - "emoji": "📋", - "name": "clipboard" - }, - { - "code": [ - "1F4CC" - ], - "emoji": "📌", - "name": "pushpin" - }, - { - "code": [ - "1F4CD" - ], - "emoji": "📍", - "name": "round pushpin" - }, - { - "code": [ - "1F4CE" - ], - "emoji": "📎", - "name": "paperclip" - }, - { - "code": [ - "1F587" - ], - "emoji": "🖇", - "name": "linked paperclips" - }, - { - "code": [ - "1F4CF" - ], - "emoji": "📏", - "name": "straight ruler" - }, - { - "code": [ - "1F4D0" - ], - "emoji": "📐", - "name": "triangular ruler" - }, - { - "code": [ - "2702" - ], - "emoji": "✂", - "name": "scissors" - }, - { - "code": [ - "1F5C3" - ], - "emoji": "🗃", - "name": "card file box" - }, - { - "code": [ - "1F5C4" - ], - "emoji": "🗄", - "name": "file cabinet" - }, - { - "code": [ - "1F5D1" - ], - "emoji": "🗑", - "name": "wastebasket" - } - ], - "lock": [ - { - "code": [ - "1F512" - ], - "emoji": "🔒", - "name": "locked" - }, - { - "code": [ - "1F513" - ], - "emoji": "🔓", - "name": "unlocked" - }, - { - "code": [ - "1F50F" - ], - "emoji": "🔏", - "name": "locked with pen" - }, - { - "code": [ - "1F510" - ], - "emoji": "🔐", - "name": "locked with key" - }, - { - "code": [ - "1F511" - ], - "emoji": "🔑", - "name": "key" - }, - { - "code": [ - "1F5DD" - ], - "emoji": "🗝", - "name": "old key" - } - ], - "tool": [ - { - "code": [ - "1F528" - ], - "emoji": "🔨", - "name": "hammer" - }, - { - "code": [ - "1FA93" - ], - "emoji": "🪓", - "name": "axe" - }, - { - "code": [ - "26CF" - ], - "emoji": "⛏", - "name": "pick" - }, - { - "code": [ - "2692" - ], - "emoji": "⚒", - "name": "hammer and pick" - }, - { - "code": [ - "1F6E0" - ], - "emoji": "🛠", - "name": "hammer and wrench" - }, - { - "code": [ - "1F5E1" - ], - "emoji": "🗡", - "name": "dagger" - }, - { - "code": [ - "2694" - ], - "emoji": "⚔", - "name": "crossed swords" - }, - { - "code": [ - "1F4A3" - ], - "emoji": "💣", - "name": "bomb" - }, - { - "code": [ - "1FA83" - ], - "emoji": "🪃", - "name": "boomerang" - }, - { - "code": [ - "1F3F9" - ], - "emoji": "🏹", - "name": "bow and arrow" - }, - { - "code": [ - "1F6E1" - ], - "emoji": "🛡", - "name": "shield" - }, - { - "code": [ - "1FA9A" - ], - "emoji": "🪚", - "name": "carpentry saw" - }, - { - "code": [ - "1F527" - ], - "emoji": "🔧", - "name": "wrench" - }, - { - "code": [ - "1FA9B" - ], - "emoji": "🪛", - "name": "screwdriver" - }, - { - "code": [ - "1F529" - ], - "emoji": "🔩", - "name": "nut and bolt" - }, - { - "code": [ - "2699" - ], - "emoji": "⚙", - "name": "gear" - }, - { - "code": [ - "1F5DC" - ], - "emoji": "🗜", - "name": "clamp" - }, - { - "code": [ - "2696" - ], - "emoji": "⚖", - "name": "balance scale" - }, - { - "code": [ - "1F9AF" - ], - "emoji": "🦯", - "name": "white cane" - }, - { - "code": [ - "1F517" - ], - "emoji": "🔗", - "name": "link" - }, - { - "code": [ - "26D3", - "FE0F", - "200D", - "1F4A5" - ], - "emoji": "⛓️‍💥", - "name": "broken chain" - }, - { - "code": [ - "26D3" - ], - "emoji": "⛓", - "name": "chains" - }, - { - "code": [ - "1FA9D" - ], - "emoji": "🪝", - "name": "hook" - }, - { - "code": [ - "1F9F0" - ], - "emoji": "🧰", - "name": "toolbox" - }, - { - "code": [ - "1F9F2" - ], - "emoji": "🧲", - "name": "magnet" - }, - { - "code": [ - "1FA9C" - ], - "emoji": "🪜", - "name": "ladder" - }, - { - "code": [ - "1FA8F" - ], - "emoji": "🪏", - "name": "shovel" - } - ], - "science": [ - { - "code": [ - "2697" - ], - "emoji": "⚗", - "name": "alembic" - }, - { - "code": [ - "1F9EA" - ], - "emoji": "🧪", - "name": "test tube" - }, - { - "code": [ - "1F9EB" - ], - "emoji": "🧫", - "name": "petri dish" - }, - { - "code": [ - "1F9EC" - ], - "emoji": "🧬", - "name": "dna" - }, - { - "code": [ - "1F52C" - ], - "emoji": "🔬", - "name": "microscope" - }, - { - "code": [ - "1F52D" - ], - "emoji": "🔭", - "name": "telescope" - }, - { - "code": [ - "1F4E1" - ], - "emoji": "📡", - "name": "satellite antenna" - } - ], - "medical": [ - { - "code": [ - "1F489" - ], - "emoji": "💉", - "name": "syringe" - }, - { - "code": [ - "1FA78" - ], - "emoji": "🩸", - "name": "drop of blood" - }, - { - "code": [ - "1F48A" - ], - "emoji": "💊", - "name": "pill" - }, - { - "code": [ - "1FA79" - ], - "emoji": "🩹", - "name": "adhesive bandage" - }, - { - "code": [ - "1FA7C" - ], - "emoji": "🩼", - "name": "crutch" - }, - { - "code": [ - "1FA7A" - ], - "emoji": "🩺", - "name": "stethoscope" - }, - { - "code": [ - "1FA7B" - ], - "emoji": "🩻", - "name": "x-ray" - } - ], - "household": [ - { - "code": [ - "1F6AA" - ], - "emoji": "🚪", - "name": "door" - }, - { - "code": [ - "1F6D7" - ], - "emoji": "🛗", - "name": "elevator" - }, - { - "code": [ - "1FA9E" - ], - "emoji": "🪞", - "name": "mirror" - }, - { - "code": [ - "1FA9F" - ], - "emoji": "🪟", - "name": "window" - }, - { - "code": [ - "1F6CF" - ], - "emoji": "🛏", - "name": "bed" - }, - { - "code": [ - "1F6CB" - ], - "emoji": "🛋", - "name": "couch and lamp" - }, - { - "code": [ - "1FA91" - ], - "emoji": "🪑", - "name": "chair" - }, - { - "code": [ - "1F6BD" - ], - "emoji": "🚽", - "name": "toilet" - }, - { - "code": [ - "1FAA0" - ], - "emoji": "🪠", - "name": "plunger" - }, - { - "code": [ - "1F6BF" - ], - "emoji": "🚿", - "name": "shower" - }, - { - "code": [ - "1F6C1" - ], - "emoji": "🛁", - "name": "bathtub" - }, - { - "code": [ - "1FAA4" - ], - "emoji": "🪤", - "name": "mouse trap" - }, - { - "code": [ - "1FA92" - ], - "emoji": "🪒", - "name": "razor" - }, - { - "code": [ - "1F9F4" - ], - "emoji": "🧴", - "name": "lotion bottle" - }, - { - "code": [ - "1F9F7" - ], - "emoji": "🧷", - "name": "safety pin" - }, - { - "code": [ - "1F9F9" - ], - "emoji": "🧹", - "name": "broom" - }, - { - "code": [ - "1F9FA" - ], - "emoji": "🧺", - "name": "basket" - }, - { - "code": [ - "1F9FB" - ], - "emoji": "🧻", - "name": "roll of paper" - }, - { - "code": [ - "1FAA3" - ], - "emoji": "🪣", - "name": "bucket" - }, - { - "code": [ - "1F9FC" - ], - "emoji": "🧼", - "name": "soap" - }, - { - "code": [ - "1FAE7" - ], - "emoji": "🫧", - "name": "bubbles" - }, - { - "code": [ - "1FAA5" - ], - "emoji": "🪥", - "name": "toothbrush" - }, - { - "code": [ - "1F9FD" - ], - "emoji": "🧽", - "name": "sponge" - }, - { - "code": [ - "1F9EF" - ], - "emoji": "🧯", - "name": "fire extinguisher" - }, - { - "code": [ - "1F6D2" - ], - "emoji": "🛒", - "name": "shopping cart" - } - ], - "other-object": [ - { - "code": [ - "1F6AC" - ], - "emoji": "🚬", - "name": "cigarette" - }, - { - "code": [ - "26B0" - ], - "emoji": "⚰", - "name": "coffin" - }, - { - "code": [ - "1FAA6" - ], - "emoji": "🪦", - "name": "headstone" - }, - { - "code": [ - "26B1" - ], - "emoji": "⚱", - "name": "funeral urn" - }, - { - "code": [ - "1F9FF" - ], - "emoji": "🧿", - "name": "nazar amulet" - }, - { - "code": [ - "1FAAC" - ], - "emoji": "🪬", - "name": "hamsa" - }, - { - "code": [ - "1F5FF" - ], - "emoji": "🗿", - "name": "moai" - }, - { - "code": [ - "1FAA7" - ], - "emoji": "🪧", - "name": "placard" - }, - { - "code": [ - "1FAAA" - ], - "emoji": "🪪", - "name": "identification card" - } - ] - }, - "Symbols": { - "transport-sign": [ - { - "code": [ - "1F3E7" - ], - "emoji": "🏧", - "name": "ATM sign" - }, - { - "code": [ - "1F6AE" - ], - "emoji": "🚮", - "name": "litter in bin sign" - }, - { - "code": [ - "1F6B0" - ], - "emoji": "🚰", - "name": "potable water" - }, - { - "code": [ - "267F" - ], - "emoji": "♿", - "name": "wheelchair symbol" - }, - { - "code": [ - "1F6B9" - ], - "emoji": "🚹", - "name": "men’s room" - }, - { - "code": [ - "1F6BA" - ], - "emoji": "🚺", - "name": "women’s room" - }, - { - "code": [ - "1F6BB" - ], - "emoji": "🚻", - "name": "restroom" - }, - { - "code": [ - "1F6BC" - ], - "emoji": "🚼", - "name": "baby symbol" - }, - { - "code": [ - "1F6BE" - ], - "emoji": "🚾", - "name": "water closet" - }, - { - "code": [ - "1F6C2" - ], - "emoji": "🛂", - "name": "passport control" - }, - { - "code": [ - "1F6C3" - ], - "emoji": "🛃", - "name": "customs" - }, - { - "code": [ - "1F6C4" - ], - "emoji": "🛄", - "name": "baggage claim" - }, - { - "code": [ - "1F6C5" - ], - "emoji": "🛅", - "name": "left luggage" - } - ], - "warning": [ - { - "code": [ - "26A0" - ], - "emoji": "⚠", - "name": "warning" - }, - { - "code": [ - "1F6B8" - ], - "emoji": "🚸", - "name": "children crossing" - }, - { - "code": [ - "26D4" - ], - "emoji": "⛔", - "name": "no entry" - }, - { - "code": [ - "1F6AB" - ], - "emoji": "🚫", - "name": "prohibited" - }, - { - "code": [ - "1F6B3" - ], - "emoji": "🚳", - "name": "no bicycles" - }, - { - "code": [ - "1F6AD" - ], - "emoji": "🚭", - "name": "no smoking" - }, - { - "code": [ - "1F6AF" - ], - "emoji": "🚯", - "name": "no littering" - }, - { - "code": [ - "1F6B1" - ], - "emoji": "🚱", - "name": "non-potable water" - }, - { - "code": [ - "1F6B7" - ], - "emoji": "🚷", - "name": "no pedestrians" - }, - { - "code": [ - "1F4F5" - ], - "emoji": "📵", - "name": "no mobile phones" - }, - { - "code": [ - "1F51E" - ], - "emoji": "🔞", - "name": "no one under eighteen" - }, - { - "code": [ - "2622" - ], - "emoji": "☢", - "name": "radioactive" - }, - { - "code": [ - "2623" - ], - "emoji": "☣", - "name": "biohazard" - } - ], - "arrow": [ - { - "code": [ - "2B06" - ], - "emoji": "⬆", - "name": "up arrow" - }, - { - "code": [ - "2197" - ], - "emoji": "↗", - "name": "up-right arrow" - }, - { - "code": [ - "27A1" - ], - "emoji": "➡", - "name": "right arrow" - }, - { - "code": [ - "2198" - ], - "emoji": "↘", - "name": "down-right arrow" - }, - { - "code": [ - "2B07" - ], - "emoji": "⬇", - "name": "down arrow" - }, - { - "code": [ - "2199" - ], - "emoji": "↙", - "name": "down-left arrow" - }, - { - "code": [ - "2B05" - ], - "emoji": "⬅", - "name": "left arrow" - }, - { - "code": [ - "2196" - ], - "emoji": "↖", - "name": "up-left arrow" - }, - { - "code": [ - "2195" - ], - "emoji": "↕", - "name": "up-down arrow" - }, - { - "code": [ - "2194" - ], - "emoji": "↔", - "name": "left-right arrow" - }, - { - "code": [ - "21A9" - ], - "emoji": "↩", - "name": "right arrow curving left" - }, - { - "code": [ - "21AA" - ], - "emoji": "↪", - "name": "left arrow curving right" - }, - { - "code": [ - "2934" - ], - "emoji": "⤴", - "name": "right arrow curving up" - }, - { - "code": [ - "2935" - ], - "emoji": "⤵", - "name": "right arrow curving down" - }, - { - "code": [ - "1F503" - ], - "emoji": "🔃", - "name": "clockwise vertical arrows" - }, - { - "code": [ - "1F504" - ], - "emoji": "🔄", - "name": "counterclockwise arrows button" - }, - { - "code": [ - "1F519" - ], - "emoji": "🔙", - "name": "BACK arrow" - }, - { - "code": [ - "1F51A" - ], - "emoji": "🔚", - "name": "END arrow" - }, - { - "code": [ - "1F51B" - ], - "emoji": "🔛", - "name": "ON! arrow" - }, - { - "code": [ - "1F51C" - ], - "emoji": "🔜", - "name": "SOON arrow" - }, - { - "code": [ - "1F51D" - ], - "emoji": "🔝", - "name": "TOP arrow" - } - ], - "religion": [ - { - "code": [ - "1F6D0" - ], - "emoji": "🛐", - "name": "place of worship" - }, - { - "code": [ - "269B" - ], - "emoji": "⚛", - "name": "atom symbol" - }, - { - "code": [ - "1F549" - ], - "emoji": "🕉", - "name": "om" - }, - { - "code": [ - "2721" - ], - "emoji": "✡", - "name": "star of David" - }, - { - "code": [ - "2638" - ], - "emoji": "☸", - "name": "wheel of dharma" - }, - { - "code": [ - "262F" - ], - "emoji": "☯", - "name": "yin yang" - }, - { - "code": [ - "271D" - ], - "emoji": "✝", - "name": "latin cross" - }, - { - "code": [ - "2626" - ], - "emoji": "☦", - "name": "orthodox cross" - }, - { - "code": [ - "262A" - ], - "emoji": "☪", - "name": "star and crescent" - }, - { - "code": [ - "262E" - ], - "emoji": "☮", - "name": "peace symbol" - }, - { - "code": [ - "1F54E" - ], - "emoji": "🕎", - "name": "menorah" - }, - { - "code": [ - "1F52F" - ], - "emoji": "🔯", - "name": "dotted six-pointed star" - }, - { - "code": [ - "1FAAF" - ], - "emoji": "🪯", - "name": "khanda" - } - ], - "zodiac": [ - { - "code": [ - "2648" - ], - "emoji": "♈", - "name": "Aries" - }, - { - "code": [ - "2649" - ], - "emoji": "♉", - "name": "Taurus" - }, - { - "code": [ - "264A" - ], - "emoji": "♊", - "name": "Gemini" - }, - { - "code": [ - "264B" - ], - "emoji": "♋", - "name": "Cancer" - }, - { - "code": [ - "264C" - ], - "emoji": "♌", - "name": "Leo" - }, - { - "code": [ - "264D" - ], - "emoji": "♍", - "name": "Virgo" - }, - { - "code": [ - "264E" - ], - "emoji": "♎", - "name": "Libra" - }, - { - "code": [ - "264F" - ], - "emoji": "♏", - "name": "Scorpio" - }, - { - "code": [ - "2650" - ], - "emoji": "♐", - "name": "Sagittarius" - }, - { - "code": [ - "2651" - ], - "emoji": "♑", - "name": "Capricorn" - }, - { - "code": [ - "2652" - ], - "emoji": "♒", - "name": "Aquarius" - }, - { - "code": [ - "2653" - ], - "emoji": "♓", - "name": "Pisces" - }, - { - "code": [ - "26CE" - ], - "emoji": "⛎", - "name": "Ophiuchus" - } - ], - "av-symbol": [ - { - "code": [ - "1F500" - ], - "emoji": "🔀", - "name": "shuffle tracks button" - }, - { - "code": [ - "1F501" - ], - "emoji": "🔁", - "name": "repeat button" - }, - { - "code": [ - "1F502" - ], - "emoji": "🔂", - "name": "repeat single button" - }, - { - "code": [ - "25B6" - ], - "emoji": "▶", - "name": "play button" - }, - { - "code": [ - "23E9" - ], - "emoji": "⏩", - "name": "fast-forward button" - }, - { - "code": [ - "23ED" - ], - "emoji": "⏭", - "name": "next track button" - }, - { - "code": [ - "23EF" - ], - "emoji": "⏯", - "name": "play or pause button" - }, - { - "code": [ - "25C0" - ], - "emoji": "◀", - "name": "reverse button" - }, - { - "code": [ - "23EA" - ], - "emoji": "⏪", - "name": "fast reverse button" - }, - { - "code": [ - "23EE" - ], - "emoji": "⏮", - "name": "last track button" - }, - { - "code": [ - "1F53C" - ], - "emoji": "🔼", - "name": "upwards button" - }, - { - "code": [ - "23EB" - ], - "emoji": "⏫", - "name": "fast up button" - }, - { - "code": [ - "1F53D" - ], - "emoji": "🔽", - "name": "downwards button" - }, - { - "code": [ - "23EC" - ], - "emoji": "⏬", - "name": "fast down button" - }, - { - "code": [ - "23F8" - ], - "emoji": "⏸", - "name": "pause button" - }, - { - "code": [ - "23F9" - ], - "emoji": "⏹", - "name": "stop button" - }, - { - "code": [ - "23FA" - ], - "emoji": "⏺", - "name": "record button" - }, - { - "code": [ - "23CF" - ], - "emoji": "⏏", - "name": "eject button" - }, - { - "code": [ - "1F3A6" - ], - "emoji": "🎦", - "name": "cinema" - }, - { - "code": [ - "1F505" - ], - "emoji": "🔅", - "name": "dim button" - }, - { - "code": [ - "1F506" - ], - "emoji": "🔆", - "name": "bright button" - }, - { - "code": [ - "1F4F6" - ], - "emoji": "📶", - "name": "antenna bars" - }, - { - "code": [ - "1F6DC" - ], - "emoji": "🛜", - "name": "wireless" - }, - { - "code": [ - "1F4F3" - ], - "emoji": "📳", - "name": "vibration mode" - }, - { - "code": [ - "1F4F4" - ], - "emoji": "📴", - "name": "mobile phone off" - } - ], - "gender": [ - { - "code": [ - "2640" - ], - "emoji": "♀", - "name": "female sign" - }, - { - "code": [ - "2642" - ], - "emoji": "♂", - "name": "male sign" - }, - { - "code": [ - "26A7" - ], - "emoji": "⚧", - "name": "transgender symbol" - } - ], - "math": [ - { - "code": [ - "2716" - ], - "emoji": "✖", - "name": "multiply" - }, - { - "code": [ - "2795" - ], - "emoji": "➕", - "name": "plus" - }, - { - "code": [ - "2796" - ], - "emoji": "➖", - "name": "minus" - }, - { - "code": [ - "2797" - ], - "emoji": "➗", - "name": "divide" - }, - { - "code": [ - "1F7F0" - ], - "emoji": "🟰", - "name": "heavy equals sign" - }, - { - "code": [ - "267E" - ], - "emoji": "♾", - "name": "infinity" - } - ], - "punctuation": [ - { - "code": [ - "203C" - ], - "emoji": "‼", - "name": "double exclamation mark" - }, - { - "code": [ - "2049" - ], - "emoji": "⁉", - "name": "exclamation question mark" - }, - { - "code": [ - "2753" - ], - "emoji": "❓", - "name": "red question mark" - }, - { - "code": [ - "2754" - ], - "emoji": "❔", - "name": "white question mark" - }, - { - "code": [ - "2755" - ], - "emoji": "❕", - "name": "white exclamation mark" - }, - { - "code": [ - "2757" - ], - "emoji": "❗", - "name": "red exclamation mark" - }, - { - "code": [ - "3030" - ], - "emoji": "〰", - "name": "wavy dash" - } - ], - "currency": [ - { - "code": [ - "1F4B1" - ], - "emoji": "💱", - "name": "currency exchange" - }, - { - "code": [ - "1F4B2" - ], - "emoji": "💲", - "name": "heavy dollar sign" - } - ], - "other-symbol": [ - { - "code": [ - "2695" - ], - "emoji": "⚕", - "name": "medical symbol" - }, - { - "code": [ - "267B" - ], - "emoji": "♻", - "name": "recycling symbol" - }, - { - "code": [ - "269C" - ], - "emoji": "⚜", - "name": "fleur-de-lis" - }, - { - "code": [ - "1F531" - ], - "emoji": "🔱", - "name": "trident emblem" - }, - { - "code": [ - "1F4DB" - ], - "emoji": "📛", - "name": "name badge" - }, - { - "code": [ - "1F530" - ], - "emoji": "🔰", - "name": "Japanese symbol for beginner" - }, - { - "code": [ - "2B55" - ], - "emoji": "⭕", - "name": "hollow red circle" - }, - { - "code": [ - "2705" - ], - "emoji": "✅", - "name": "check mark button" - }, - { - "code": [ - "2611" - ], - "emoji": "☑", - "name": "check box with check" - }, - { - "code": [ - "2714" - ], - "emoji": "✔", - "name": "check mark" - }, - { - "code": [ - "274C" - ], - "emoji": "❌", - "name": "cross mark" - }, - { - "code": [ - "274E" - ], - "emoji": "❎", - "name": "cross mark button" - }, - { - "code": [ - "27B0" - ], - "emoji": "➰", - "name": "curly loop" - }, - { - "code": [ - "27BF" - ], - "emoji": "➿", - "name": "double curly loop" - }, - { - "code": [ - "303D" - ], - "emoji": "〽", - "name": "part alternation mark" - }, - { - "code": [ - "2733" - ], - "emoji": "✳", - "name": "eight-spoked asterisk" - }, - { - "code": [ - "2734" - ], - "emoji": "✴", - "name": "eight-pointed star" - }, - { - "code": [ - "2747" - ], - "emoji": "❇", - "name": "sparkle" - }, - { - "code": [ - "00A9" - ], - "emoji": "©", - "name": "copyright" - }, - { - "code": [ - "00AE" - ], - "emoji": "®", - "name": "registered" - }, - { - "code": [ - "2122" - ], - "emoji": "™", - "name": "trade mark" - }, - { - "code": [ - "1FADF" - ], - "emoji": "🫟", - "name": "splatter" - } - ], - "keycap": [ - { - "code": [ - "0023", - "FE0F", - "20E3" - ], - "emoji": "#️⃣", - "name": "keycap: #" - }, - { - "code": [ - "002A", - "FE0F", - "20E3" - ], - "emoji": "*️⃣", - "name": "keycap: *" - }, - { - "code": [ - "0030", - "FE0F", - "20E3" - ], - "emoji": "0️⃣", - "name": "keycap: 0" - }, - { - "code": [ - "0031", - "FE0F", - "20E3" - ], - "emoji": "1️⃣", - "name": "keycap: 1" - }, - { - "code": [ - "0032", - "FE0F", - "20E3" - ], - "emoji": "2️⃣", - "name": "keycap: 2" - }, - { - "code": [ - "0033", - "FE0F", - "20E3" - ], - "emoji": "3️⃣", - "name": "keycap: 3" - }, - { - "code": [ - "0034", - "FE0F", - "20E3" - ], - "emoji": "4️⃣", - "name": "keycap: 4" - }, - { - "code": [ - "0035", - "FE0F", - "20E3" - ], - "emoji": "5️⃣", - "name": "keycap: 5" - }, - { - "code": [ - "0036", - "FE0F", - "20E3" - ], - "emoji": "6️⃣", - "name": "keycap: 6" - }, - { - "code": [ - "0037", - "FE0F", - "20E3" - ], - "emoji": "7️⃣", - "name": "keycap: 7" - }, - { - "code": [ - "0038", - "FE0F", - "20E3" - ], - "emoji": "8️⃣", - "name": "keycap: 8" - }, - { - "code": [ - "0039", - "FE0F", - "20E3" - ], - "emoji": "9️⃣", - "name": "keycap: 9" - }, - { - "code": [ - "1F51F" - ], - "emoji": "🔟", - "name": "keycap: 10" - } - ], - "alphanum": [ - { - "code": [ - "1F520" - ], - "emoji": "🔠", - "name": "input latin uppercase" - }, - { - "code": [ - "1F521" - ], - "emoji": "🔡", - "name": "input latin lowercase" - }, - { - "code": [ - "1F522" - ], - "emoji": "🔢", - "name": "input numbers" - }, - { - "code": [ - "1F523" - ], - "emoji": "🔣", - "name": "input symbols" - }, - { - "code": [ - "1F524" - ], - "emoji": "🔤", - "name": "input latin letters" - }, - { - "code": [ - "1F170" - ], - "emoji": "🅰", - "name": "A button (blood type)" - }, - { - "code": [ - "1F18E" - ], - "emoji": "🆎", - "name": "AB button (blood type)" - }, - { - "code": [ - "1F171" - ], - "emoji": "🅱", - "name": "B button (blood type)" - }, - { - "code": [ - "1F191" - ], - "emoji": "🆑", - "name": "CL button" - }, - { - "code": [ - "1F192" - ], - "emoji": "🆒", - "name": "COOL button" - }, - { - "code": [ - "1F193" - ], - "emoji": "🆓", - "name": "FREE button" - }, - { - "code": [ - "2139" - ], - "emoji": "ℹ", - "name": "information" - }, - { - "code": [ - "1F194" - ], - "emoji": "🆔", - "name": "ID button" - }, - { - "code": [ - "24C2" - ], - "emoji": "Ⓜ", - "name": "circled M" - }, - { - "code": [ - "1F195" - ], - "emoji": "🆕", - "name": "NEW button" - }, - { - "code": [ - "1F196" - ], - "emoji": "🆖", - "name": "NG button" - }, - { - "code": [ - "1F17E" - ], - "emoji": "🅾", - "name": "O button (blood type)" - }, - { - "code": [ - "1F197" - ], - "emoji": "🆗", - "name": "OK button" - }, - { - "code": [ - "1F17F" - ], - "emoji": "🅿", - "name": "P button" - }, - { - "code": [ - "1F198" - ], - "emoji": "🆘", - "name": "SOS button" - }, - { - "code": [ - "1F199" - ], - "emoji": "🆙", - "name": "UP! button" - }, - { - "code": [ - "1F19A" - ], - "emoji": "🆚", - "name": "VS button" - }, - { - "code": [ - "1F201" - ], - "emoji": "🈁", - "name": "Japanese “here” button" - }, - { - "code": [ - "1F202" - ], - "emoji": "🈂", - "name": "Japanese “service charge” button" - }, - { - "code": [ - "1F237" - ], - "emoji": "🈷", - "name": "Japanese “monthly amount” button" - }, - { - "code": [ - "1F236" - ], - "emoji": "🈶", - "name": "Japanese “not free of charge” button" - }, - { - "code": [ - "1F22F" - ], - "emoji": "🈯", - "name": "Japanese “reserved” button" - }, - { - "code": [ - "1F250" - ], - "emoji": "🉐", - "name": "Japanese “bargain” button" - }, - { - "code": [ - "1F239" - ], - "emoji": "🈹", - "name": "Japanese “discount” button" - }, - { - "code": [ - "1F21A" - ], - "emoji": "🈚", - "name": "Japanese “free of charge” button" - }, - { - "code": [ - "1F232" - ], - "emoji": "🈲", - "name": "Japanese “prohibited” button" - }, - { - "code": [ - "1F251" - ], - "emoji": "🉑", - "name": "Japanese “acceptable” button" - }, - { - "code": [ - "1F238" - ], - "emoji": "🈸", - "name": "Japanese “application” button" - }, - { - "code": [ - "1F234" - ], - "emoji": "🈴", - "name": "Japanese “passing grade” button" - }, - { - "code": [ - "1F233" - ], - "emoji": "🈳", - "name": "Japanese “vacancy” button" - }, - { - "code": [ - "3297" - ], - "emoji": "㊗", - "name": "Japanese “congratulations” button" - }, - { - "code": [ - "3299" - ], - "emoji": "㊙", - "name": "Japanese “secret” button" - }, - { - "code": [ - "1F23A" - ], - "emoji": "🈺", - "name": "Japanese “open for business” button" - }, - { - "code": [ - "1F235" - ], - "emoji": "🈵", - "name": "Japanese “no vacancy” button" - } - ], - "geometric": [ - { - "code": [ - "1F534" - ], - "emoji": "🔴", - "name": "red circle" - }, - { - "code": [ - "1F7E0" - ], - "emoji": "🟠", - "name": "orange circle" - }, - { - "code": [ - "1F7E1" - ], - "emoji": "🟡", - "name": "yellow circle" - }, - { - "code": [ - "1F7E2" - ], - "emoji": "🟢", - "name": "green circle" - }, - { - "code": [ - "1F535" - ], - "emoji": "🔵", - "name": "blue circle" - }, - { - "code": [ - "1F7E3" - ], - "emoji": "🟣", - "name": "purple circle" - }, - { - "code": [ - "1F7E4" - ], - "emoji": "🟤", - "name": "brown circle" - }, - { - "code": [ - "26AB" - ], - "emoji": "⚫", - "name": "black circle" - }, - { - "code": [ - "26AA" - ], - "emoji": "⚪", - "name": "white circle" - }, - { - "code": [ - "1F7E5" - ], - "emoji": "🟥", - "name": "red square" - }, - { - "code": [ - "1F7E7" - ], - "emoji": "🟧", - "name": "orange square" - }, - { - "code": [ - "1F7E8" - ], - "emoji": "🟨", - "name": "yellow square" - }, - { - "code": [ - "1F7E9" - ], - "emoji": "🟩", - "name": "green square" - }, - { - "code": [ - "1F7E6" - ], - "emoji": "🟦", - "name": "blue square" - }, - { - "code": [ - "1F7EA" - ], - "emoji": "🟪", - "name": "purple square" - }, - { - "code": [ - "1F7EB" - ], - "emoji": "🟫", - "name": "brown square" - }, - { - "code": [ - "2B1B" - ], - "emoji": "⬛", - "name": "black large square" - }, - { - "code": [ - "2B1C" - ], - "emoji": "⬜", - "name": "white large square" - }, - { - "code": [ - "25FC" - ], - "emoji": "◼", - "name": "black medium square" - }, - { - "code": [ - "25FB" - ], - "emoji": "◻", - "name": "white medium square" - }, - { - "code": [ - "25FE" - ], - "emoji": "◾", - "name": "black medium-small square" - }, - { - "code": [ - "25FD" - ], - "emoji": "◽", - "name": "white medium-small square" - }, - { - "code": [ - "25AA" - ], - "emoji": "▪", - "name": "black small square" - }, - { - "code": [ - "25AB" - ], - "emoji": "▫", - "name": "white small square" - }, - { - "code": [ - "1F536" - ], - "emoji": "🔶", - "name": "large orange diamond" - }, - { - "code": [ - "1F537" - ], - "emoji": "🔷", - "name": "large blue diamond" - }, - { - "code": [ - "1F538" - ], - "emoji": "🔸", - "name": "small orange diamond" - }, - { - "code": [ - "1F539" - ], - "emoji": "🔹", - "name": "small blue diamond" - }, - { - "code": [ - "1F53A" - ], - "emoji": "🔺", - "name": "red triangle pointed up" - }, - { - "code": [ - "1F53B" - ], - "emoji": "🔻", - "name": "red triangle pointed down" - }, - { - "code": [ - "1F4A0" - ], - "emoji": "💠", - "name": "diamond with a dot" - }, - { - "code": [ - "1F518" - ], - "emoji": "🔘", - "name": "radio button" - }, - { - "code": [ - "1F533" - ], - "emoji": "🔳", - "name": "white square button" - }, - { - "code": [ - "1F532" - ], - "emoji": "🔲", - "name": "black square button" - } - ] - }, - "Flags": { - "flag": [ - { - "code": [ - "1F3C1" - ], - "emoji": "🏁", - "name": "chequered flag" - }, - { - "code": [ - "1F6A9" - ], - "emoji": "🚩", - "name": "triangular flag" - }, - { - "code": [ - "1F38C" - ], - "emoji": "🎌", - "name": "crossed flags" - }, - { - "code": [ - "1F3F4" - ], - "emoji": "🏴", - "name": "black flag" - }, - { - "code": [ - "1F3F3" - ], - "emoji": "🏳", - "name": "white flag" - }, - { - "code": [ - "1F3F3", - "FE0F", - "200D", - "1F308" - ], - "emoji": "🏳️‍🌈", - "name": "rainbow flag" - }, - { - "code": [ - "1F3F3", - "FE0F", - "200D", - "26A7", - "FE0F" - ], - "emoji": "🏳️‍⚧️", - "name": "transgender flag" - }, - { - "code": [ - "1F3F4", - "200D", - "2620", - "FE0F" - ], - "emoji": "🏴‍☠️", - "name": "pirate flag" - } - ], - "country-flag": [ - { - "code": [ - "1F1E6", - "1F1E8" - ], - "emoji": "🇦🇨", - "name": "flag: Ascension Island" - }, - { - "code": [ - "1F1E6", - "1F1E9" - ], - "emoji": "🇦🇩", - "name": "flag: Andorra" - }, - { - "code": [ - "1F1E6", - "1F1EA" - ], - "emoji": "🇦🇪", - "name": "flag: United Arab Emirates" - }, - { - "code": [ - "1F1E6", - "1F1EB" - ], - "emoji": "🇦🇫", - "name": "flag: Afghanistan" - }, - { - "code": [ - "1F1E6", - "1F1EC" - ], - "emoji": "🇦🇬", - "name": "flag: Antigua & Barbuda" - }, - { - "code": [ - "1F1E6", - "1F1EE" - ], - "emoji": "🇦🇮", - "name": "flag: Anguilla" - }, - { - "code": [ - "1F1E6", - "1F1F1" - ], - "emoji": "🇦🇱", - "name": "flag: Albania" - }, - { - "code": [ - "1F1E6", - "1F1F2" - ], - "emoji": "🇦🇲", - "name": "flag: Armenia" - }, - { - "code": [ - "1F1E6", - "1F1F4" - ], - "emoji": "🇦🇴", - "name": "flag: Angola" - }, - { - "code": [ - "1F1E6", - "1F1F6" - ], - "emoji": "🇦🇶", - "name": "flag: Antarctica" - }, - { - "code": [ - "1F1E6", - "1F1F7" - ], - "emoji": "🇦🇷", - "name": "flag: Argentina" - }, - { - "code": [ - "1F1E6", - "1F1F8" - ], - "emoji": "🇦🇸", - "name": "flag: American Samoa" - }, - { - "code": [ - "1F1E6", - "1F1F9" - ], - "emoji": "🇦🇹", - "name": "flag: Austria" - }, - { - "code": [ - "1F1E6", - "1F1FA" - ], - "emoji": "🇦🇺", - "name": "flag: Australia" - }, - { - "code": [ - "1F1E6", - "1F1FC" - ], - "emoji": "🇦🇼", - "name": "flag: Aruba" - }, - { - "code": [ - "1F1E6", - "1F1FD" - ], - "emoji": "🇦🇽", - "name": "flag: Åland Islands" - }, - { - "code": [ - "1F1E6", - "1F1FF" - ], - "emoji": "🇦🇿", - "name": "flag: Azerbaijan" - }, - { - "code": [ - "1F1E7", - "1F1E6" - ], - "emoji": "🇧🇦", - "name": "flag: Bosnia & Herzegovina" - }, - { - "code": [ - "1F1E7", - "1F1E7" - ], - "emoji": "🇧🇧", - "name": "flag: Barbados" - }, - { - "code": [ - "1F1E7", - "1F1E9" - ], - "emoji": "🇧🇩", - "name": "flag: Bangladesh" - }, - { - "code": [ - "1F1E7", - "1F1EA" - ], - "emoji": "🇧🇪", - "name": "flag: Belgium" - }, - { - "code": [ - "1F1E7", - "1F1EB" - ], - "emoji": "🇧🇫", - "name": "flag: Burkina Faso" - }, - { - "code": [ - "1F1E7", - "1F1EC" - ], - "emoji": "🇧🇬", - "name": "flag: Bulgaria" - }, - { - "code": [ - "1F1E7", - "1F1ED" - ], - "emoji": "🇧🇭", - "name": "flag: Bahrain" - }, - { - "code": [ - "1F1E7", - "1F1EE" - ], - "emoji": "🇧🇮", - "name": "flag: Burundi" - }, - { - "code": [ - "1F1E7", - "1F1EF" - ], - "emoji": "🇧🇯", - "name": "flag: Benin" - }, - { - "code": [ - "1F1E7", - "1F1F1" - ], - "emoji": "🇧🇱", - "name": "flag: St. Barthélemy" - }, - { - "code": [ - "1F1E7", - "1F1F2" - ], - "emoji": "🇧🇲", - "name": "flag: Bermuda" - }, - { - "code": [ - "1F1E7", - "1F1F3" - ], - "emoji": "🇧🇳", - "name": "flag: Brunei" - }, - { - "code": [ - "1F1E7", - "1F1F4" - ], - "emoji": "🇧🇴", - "name": "flag: Bolivia" - }, - { - "code": [ - "1F1E7", - "1F1F6" - ], - "emoji": "🇧🇶", - "name": "flag: Caribbean Netherlands" - }, - { - "code": [ - "1F1E7", - "1F1F7" - ], - "emoji": "🇧🇷", - "name": "flag: Brazil" - }, - { - "code": [ - "1F1E7", - "1F1F8" - ], - "emoji": "🇧🇸", - "name": "flag: Bahamas" - }, - { - "code": [ - "1F1E7", - "1F1F9" - ], - "emoji": "🇧🇹", - "name": "flag: Bhutan" - }, - { - "code": [ - "1F1E7", - "1F1FB" - ], - "emoji": "🇧🇻", - "name": "flag: Bouvet Island" - }, - { - "code": [ - "1F1E7", - "1F1FC" - ], - "emoji": "🇧🇼", - "name": "flag: Botswana" - }, - { - "code": [ - "1F1E7", - "1F1FE" - ], - "emoji": "🇧🇾", - "name": "flag: Belarus" - }, - { - "code": [ - "1F1E7", - "1F1FF" - ], - "emoji": "🇧🇿", - "name": "flag: Belize" - }, - { - "code": [ - "1F1E8", - "1F1E6" - ], - "emoji": "🇨🇦", - "name": "flag: Canada" - }, - { - "code": [ - "1F1E8", - "1F1E8" - ], - "emoji": "🇨🇨", - "name": "flag: Cocos (Keeling) Islands" - }, - { - "code": [ - "1F1E8", - "1F1E9" - ], - "emoji": "🇨🇩", - "name": "flag: Congo - Kinshasa" - }, - { - "code": [ - "1F1E8", - "1F1EB" - ], - "emoji": "🇨🇫", - "name": "flag: Central African Republic" - }, - { - "code": [ - "1F1E8", - "1F1EC" - ], - "emoji": "🇨🇬", - "name": "flag: Congo - Brazzaville" - }, - { - "code": [ - "1F1E8", - "1F1ED" - ], - "emoji": "🇨🇭", - "name": "flag: Switzerland" - }, - { - "code": [ - "1F1E8", - "1F1EE" - ], - "emoji": "🇨🇮", - "name": "flag: Côte d’Ivoire" - }, - { - "code": [ - "1F1E8", - "1F1F0" - ], - "emoji": "🇨🇰", - "name": "flag: Cook Islands" - }, - { - "code": [ - "1F1E8", - "1F1F1" - ], - "emoji": "🇨🇱", - "name": "flag: Chile" - }, - { - "code": [ - "1F1E8", - "1F1F2" - ], - "emoji": "🇨🇲", - "name": "flag: Cameroon" - }, - { - "code": [ - "1F1E8", - "1F1F3" - ], - "emoji": "🇨🇳", - "name": "flag: China" - }, - { - "code": [ - "1F1E8", - "1F1F4" - ], - "emoji": "🇨🇴", - "name": "flag: Colombia" - }, - { - "code": [ - "1F1E8", - "1F1F5" - ], - "emoji": "🇨🇵", - "name": "flag: Clipperton Island" - }, - { - "code": [ - "1F1E8", - "1F1F6" - ], - "emoji": "🇨🇶", - "name": "flag: Sark" - }, - { - "code": [ - "1F1E8", - "1F1F7" - ], - "emoji": "🇨🇷", - "name": "flag: Costa Rica" - }, - { - "code": [ - "1F1E8", - "1F1FA" - ], - "emoji": "🇨🇺", - "name": "flag: Cuba" - }, - { - "code": [ - "1F1E8", - "1F1FB" - ], - "emoji": "🇨🇻", - "name": "flag: Cape Verde" - }, - { - "code": [ - "1F1E8", - "1F1FC" - ], - "emoji": "🇨🇼", - "name": "flag: Curaçao" - }, - { - "code": [ - "1F1E8", - "1F1FD" - ], - "emoji": "🇨🇽", - "name": "flag: Christmas Island" - }, - { - "code": [ - "1F1E8", - "1F1FE" - ], - "emoji": "🇨🇾", - "name": "flag: Cyprus" - }, - { - "code": [ - "1F1E8", - "1F1FF" - ], - "emoji": "🇨🇿", - "name": "flag: Czechia" - }, - { - "code": [ - "1F1E9", - "1F1EA" - ], - "emoji": "🇩🇪", - "name": "flag: Germany" - }, - { - "code": [ - "1F1E9", - "1F1EC" - ], - "emoji": "🇩🇬", - "name": "flag: Diego Garcia" - }, - { - "code": [ - "1F1E9", - "1F1EF" - ], - "emoji": "🇩🇯", - "name": "flag: Djibouti" - }, - { - "code": [ - "1F1E9", - "1F1F0" - ], - "emoji": "🇩🇰", - "name": "flag: Denmark" - }, - { - "code": [ - "1F1E9", - "1F1F2" - ], - "emoji": "🇩🇲", - "name": "flag: Dominica" - }, - { - "code": [ - "1F1E9", - "1F1F4" - ], - "emoji": "🇩🇴", - "name": "flag: Dominican Republic" - }, - { - "code": [ - "1F1E9", - "1F1FF" - ], - "emoji": "🇩🇿", - "name": "flag: Algeria" - }, - { - "code": [ - "1F1EA", - "1F1E6" - ], - "emoji": "🇪🇦", - "name": "flag: Ceuta & Melilla" - }, - { - "code": [ - "1F1EA", - "1F1E8" - ], - "emoji": "🇪🇨", - "name": "flag: Ecuador" - }, - { - "code": [ - "1F1EA", - "1F1EA" - ], - "emoji": "🇪🇪", - "name": "flag: Estonia" - }, - { - "code": [ - "1F1EA", - "1F1EC" - ], - "emoji": "🇪🇬", - "name": "flag: Egypt" - }, - { - "code": [ - "1F1EA", - "1F1ED" - ], - "emoji": "🇪🇭", - "name": "flag: Western Sahara" - }, - { - "code": [ - "1F1EA", - "1F1F7" - ], - "emoji": "🇪🇷", - "name": "flag: Eritrea" - }, - { - "code": [ - "1F1EA", - "1F1F8" - ], - "emoji": "🇪🇸", - "name": "flag: Spain" - }, - { - "code": [ - "1F1EA", - "1F1F9" - ], - "emoji": "🇪🇹", - "name": "flag: Ethiopia" - }, - { - "code": [ - "1F1EA", - "1F1FA" - ], - "emoji": "🇪🇺", - "name": "flag: European Union" - }, - { - "code": [ - "1F1EB", - "1F1EE" - ], - "emoji": "🇫🇮", - "name": "flag: Finland" - }, - { - "code": [ - "1F1EB", - "1F1EF" - ], - "emoji": "🇫🇯", - "name": "flag: Fiji" - }, - { - "code": [ - "1F1EB", - "1F1F0" - ], - "emoji": "🇫🇰", - "name": "flag: Falkland Islands" - }, - { - "code": [ - "1F1EB", - "1F1F2" - ], - "emoji": "🇫🇲", - "name": "flag: Micronesia" - }, - { - "code": [ - "1F1EB", - "1F1F4" - ], - "emoji": "🇫🇴", - "name": "flag: Faroe Islands" - }, - { - "code": [ - "1F1EB", - "1F1F7" - ], - "emoji": "🇫🇷", - "name": "flag: France" - }, - { - "code": [ - "1F1EC", - "1F1E6" - ], - "emoji": "🇬🇦", - "name": "flag: Gabon" - }, - { - "code": [ - "1F1EC", - "1F1E7" - ], - "emoji": "🇬🇧", - "name": "flag: United Kingdom" - }, - { - "code": [ - "1F1EC", - "1F1E9" - ], - "emoji": "🇬🇩", - "name": "flag: Grenada" - }, - { - "code": [ - "1F1EC", - "1F1EA" - ], - "emoji": "🇬🇪", - "name": "flag: Georgia" - }, - { - "code": [ - "1F1EC", - "1F1EB" - ], - "emoji": "🇬🇫", - "name": "flag: French Guiana" - }, - { - "code": [ - "1F1EC", - "1F1EC" - ], - "emoji": "🇬🇬", - "name": "flag: Guernsey" - }, - { - "code": [ - "1F1EC", - "1F1ED" - ], - "emoji": "🇬🇭", - "name": "flag: Ghana" - }, - { - "code": [ - "1F1EC", - "1F1EE" - ], - "emoji": "🇬🇮", - "name": "flag: Gibraltar" - }, - { - "code": [ - "1F1EC", - "1F1F1" - ], - "emoji": "🇬🇱", - "name": "flag: Greenland" - }, - { - "code": [ - "1F1EC", - "1F1F2" - ], - "emoji": "🇬🇲", - "name": "flag: Gambia" - }, - { - "code": [ - "1F1EC", - "1F1F3" - ], - "emoji": "🇬🇳", - "name": "flag: Guinea" - }, - { - "code": [ - "1F1EC", - "1F1F5" - ], - "emoji": "🇬🇵", - "name": "flag: Guadeloupe" - }, - { - "code": [ - "1F1EC", - "1F1F6" - ], - "emoji": "🇬🇶", - "name": "flag: Equatorial Guinea" - }, - { - "code": [ - "1F1EC", - "1F1F7" - ], - "emoji": "🇬🇷", - "name": "flag: Greece" - }, - { - "code": [ - "1F1EC", - "1F1F8" - ], - "emoji": "🇬🇸", - "name": "flag: South Georgia & South Sandwich Islands" - }, - { - "code": [ - "1F1EC", - "1F1F9" - ], - "emoji": "🇬🇹", - "name": "flag: Guatemala" - }, - { - "code": [ - "1F1EC", - "1F1FA" - ], - "emoji": "🇬🇺", - "name": "flag: Guam" - }, - { - "code": [ - "1F1EC", - "1F1FC" - ], - "emoji": "🇬🇼", - "name": "flag: Guinea-Bissau" - }, - { - "code": [ - "1F1EC", - "1F1FE" - ], - "emoji": "🇬🇾", - "name": "flag: Guyana" - }, - { - "code": [ - "1F1ED", - "1F1F0" - ], - "emoji": "🇭🇰", - "name": "flag: Hong Kong SAR China" - }, - { - "code": [ - "1F1ED", - "1F1F2" - ], - "emoji": "🇭🇲", - "name": "flag: Heard & McDonald Islands" - }, - { - "code": [ - "1F1ED", - "1F1F3" - ], - "emoji": "🇭🇳", - "name": "flag: Honduras" - }, - { - "code": [ - "1F1ED", - "1F1F7" - ], - "emoji": "🇭🇷", - "name": "flag: Croatia" - }, - { - "code": [ - "1F1ED", - "1F1F9" - ], - "emoji": "🇭🇹", - "name": "flag: Haiti" - }, - { - "code": [ - "1F1ED", - "1F1FA" - ], - "emoji": "🇭🇺", - "name": "flag: Hungary" - }, - { - "code": [ - "1F1EE", - "1F1E8" - ], - "emoji": "🇮🇨", - "name": "flag: Canary Islands" - }, - { - "code": [ - "1F1EE", - "1F1E9" - ], - "emoji": "🇮🇩", - "name": "flag: Indonesia" - }, - { - "code": [ - "1F1EE", - "1F1EA" - ], - "emoji": "🇮🇪", - "name": "flag: Ireland" - }, - { - "code": [ - "1F1EE", - "1F1F1" - ], - "emoji": "🇮🇱", - "name": "flag: Israel" - }, - { - "code": [ - "1F1EE", - "1F1F2" - ], - "emoji": "🇮🇲", - "name": "flag: Isle of Man" - }, - { - "code": [ - "1F1EE", - "1F1F3" - ], - "emoji": "🇮🇳", - "name": "flag: India" - }, - { - "code": [ - "1F1EE", - "1F1F4" - ], - "emoji": "🇮🇴", - "name": "flag: British Indian Ocean Territory" - }, - { - "code": [ - "1F1EE", - "1F1F6" - ], - "emoji": "🇮🇶", - "name": "flag: Iraq" - }, - { - "code": [ - "1F1EE", - "1F1F7" - ], - "emoji": "🇮🇷", - "name": "flag: Iran" - }, - { - "code": [ - "1F1EE", - "1F1F8" - ], - "emoji": "🇮🇸", - "name": "flag: Iceland" - }, - { - "code": [ - "1F1EE", - "1F1F9" - ], - "emoji": "🇮🇹", - "name": "flag: Italy" - }, - { - "code": [ - "1F1EF", - "1F1EA" - ], - "emoji": "🇯🇪", - "name": "flag: Jersey" - }, - { - "code": [ - "1F1EF", - "1F1F2" - ], - "emoji": "🇯🇲", - "name": "flag: Jamaica" - }, - { - "code": [ - "1F1EF", - "1F1F4" - ], - "emoji": "🇯🇴", - "name": "flag: Jordan" - }, - { - "code": [ - "1F1EF", - "1F1F5" - ], - "emoji": "🇯🇵", - "name": "flag: Japan" - }, - { - "code": [ - "1F1F0", - "1F1EA" - ], - "emoji": "🇰🇪", - "name": "flag: Kenya" - }, - { - "code": [ - "1F1F0", - "1F1EC" - ], - "emoji": "🇰🇬", - "name": "flag: Kyrgyzstan" - }, - { - "code": [ - "1F1F0", - "1F1ED" - ], - "emoji": "🇰🇭", - "name": "flag: Cambodia" - }, - { - "code": [ - "1F1F0", - "1F1EE" - ], - "emoji": "🇰🇮", - "name": "flag: Kiribati" - }, - { - "code": [ - "1F1F0", - "1F1F2" - ], - "emoji": "🇰🇲", - "name": "flag: Comoros" - }, - { - "code": [ - "1F1F0", - "1F1F3" - ], - "emoji": "🇰🇳", - "name": "flag: St. Kitts & Nevis" - }, - { - "code": [ - "1F1F0", - "1F1F5" - ], - "emoji": "🇰🇵", - "name": "flag: North Korea" - }, - { - "code": [ - "1F1F0", - "1F1F7" - ], - "emoji": "🇰🇷", - "name": "flag: South Korea" - }, - { - "code": [ - "1F1F0", - "1F1FC" - ], - "emoji": "🇰🇼", - "name": "flag: Kuwait" - }, - { - "code": [ - "1F1F0", - "1F1FE" - ], - "emoji": "🇰🇾", - "name": "flag: Cayman Islands" - }, - { - "code": [ - "1F1F0", - "1F1FF" - ], - "emoji": "🇰🇿", - "name": "flag: Kazakhstan" - }, - { - "code": [ - "1F1F1", - "1F1E6" - ], - "emoji": "🇱🇦", - "name": "flag: Laos" - }, - { - "code": [ - "1F1F1", - "1F1E7" - ], - "emoji": "🇱🇧", - "name": "flag: Lebanon" - }, - { - "code": [ - "1F1F1", - "1F1E8" - ], - "emoji": "🇱🇨", - "name": "flag: St. Lucia" - }, - { - "code": [ - "1F1F1", - "1F1EE" - ], - "emoji": "🇱🇮", - "name": "flag: Liechtenstein" - }, - { - "code": [ - "1F1F1", - "1F1F0" - ], - "emoji": "🇱🇰", - "name": "flag: Sri Lanka" - }, - { - "code": [ - "1F1F1", - "1F1F7" - ], - "emoji": "🇱🇷", - "name": "flag: Liberia" - }, - { - "code": [ - "1F1F1", - "1F1F8" - ], - "emoji": "🇱🇸", - "name": "flag: Lesotho" - }, - { - "code": [ - "1F1F1", - "1F1F9" - ], - "emoji": "🇱🇹", - "name": "flag: Lithuania" - }, - { - "code": [ - "1F1F1", - "1F1FA" - ], - "emoji": "🇱🇺", - "name": "flag: Luxembourg" - }, - { - "code": [ - "1F1F1", - "1F1FB" - ], - "emoji": "🇱🇻", - "name": "flag: Latvia" - }, - { - "code": [ - "1F1F1", - "1F1FE" - ], - "emoji": "🇱🇾", - "name": "flag: Libya" - }, - { - "code": [ - "1F1F2", - "1F1E6" - ], - "emoji": "🇲🇦", - "name": "flag: Morocco" - }, - { - "code": [ - "1F1F2", - "1F1E8" - ], - "emoji": "🇲🇨", - "name": "flag: Monaco" - }, - { - "code": [ - "1F1F2", - "1F1E9" - ], - "emoji": "🇲🇩", - "name": "flag: Moldova" - }, - { - "code": [ - "1F1F2", - "1F1EA" - ], - "emoji": "🇲🇪", - "name": "flag: Montenegro" - }, - { - "code": [ - "1F1F2", - "1F1EB" - ], - "emoji": "🇲🇫", - "name": "flag: St. Martin" - }, - { - "code": [ - "1F1F2", - "1F1EC" - ], - "emoji": "🇲🇬", - "name": "flag: Madagascar" - }, - { - "code": [ - "1F1F2", - "1F1ED" - ], - "emoji": "🇲🇭", - "name": "flag: Marshall Islands" - }, - { - "code": [ - "1F1F2", - "1F1F0" - ], - "emoji": "🇲🇰", - "name": "flag: North Macedonia" - }, - { - "code": [ - "1F1F2", - "1F1F1" - ], - "emoji": "🇲🇱", - "name": "flag: Mali" - }, - { - "code": [ - "1F1F2", - "1F1F2" - ], - "emoji": "🇲🇲", - "name": "flag: Myanmar (Burma)" - }, - { - "code": [ - "1F1F2", - "1F1F3" - ], - "emoji": "🇲🇳", - "name": "flag: Mongolia" - }, - { - "code": [ - "1F1F2", - "1F1F4" - ], - "emoji": "🇲🇴", - "name": "flag: Macao SAR China" - }, - { - "code": [ - "1F1F2", - "1F1F5" - ], - "emoji": "🇲🇵", - "name": "flag: Northern Mariana Islands" - }, - { - "code": [ - "1F1F2", - "1F1F6" - ], - "emoji": "🇲🇶", - "name": "flag: Martinique" - }, - { - "code": [ - "1F1F2", - "1F1F7" - ], - "emoji": "🇲🇷", - "name": "flag: Mauritania" - }, - { - "code": [ - "1F1F2", - "1F1F8" - ], - "emoji": "🇲🇸", - "name": "flag: Montserrat" - }, - { - "code": [ - "1F1F2", - "1F1F9" - ], - "emoji": "🇲🇹", - "name": "flag: Malta" - }, - { - "code": [ - "1F1F2", - "1F1FA" - ], - "emoji": "🇲🇺", - "name": "flag: Mauritius" - }, - { - "code": [ - "1F1F2", - "1F1FB" - ], - "emoji": "🇲🇻", - "name": "flag: Maldives" - }, - { - "code": [ - "1F1F2", - "1F1FC" - ], - "emoji": "🇲🇼", - "name": "flag: Malawi" - }, - { - "code": [ - "1F1F2", - "1F1FD" - ], - "emoji": "🇲🇽", - "name": "flag: Mexico" - }, - { - "code": [ - "1F1F2", - "1F1FE" - ], - "emoji": "🇲🇾", - "name": "flag: Malaysia" - }, - { - "code": [ - "1F1F2", - "1F1FF" - ], - "emoji": "🇲🇿", - "name": "flag: Mozambique" - }, - { - "code": [ - "1F1F3", - "1F1E6" - ], - "emoji": "🇳🇦", - "name": "flag: Namibia" - }, - { - "code": [ - "1F1F3", - "1F1E8" - ], - "emoji": "🇳🇨", - "name": "flag: New Caledonia" - }, - { - "code": [ - "1F1F3", - "1F1EA" - ], - "emoji": "🇳🇪", - "name": "flag: Niger" - }, - { - "code": [ - "1F1F3", - "1F1EB" - ], - "emoji": "🇳🇫", - "name": "flag: Norfolk Island" - }, - { - "code": [ - "1F1F3", - "1F1EC" - ], - "emoji": "🇳🇬", - "name": "flag: Nigeria" - }, - { - "code": [ - "1F1F3", - "1F1EE" - ], - "emoji": "🇳🇮", - "name": "flag: Nicaragua" - }, - { - "code": [ - "1F1F3", - "1F1F1" - ], - "emoji": "🇳🇱", - "name": "flag: Netherlands" - }, - { - "code": [ - "1F1F3", - "1F1F4" - ], - "emoji": "🇳🇴", - "name": "flag: Norway" - }, - { - "code": [ - "1F1F3", - "1F1F5" - ], - "emoji": "🇳🇵", - "name": "flag: Nepal" - }, - { - "code": [ - "1F1F3", - "1F1F7" - ], - "emoji": "🇳🇷", - "name": "flag: Nauru" - }, - { - "code": [ - "1F1F3", - "1F1FA" - ], - "emoji": "🇳🇺", - "name": "flag: Niue" - }, - { - "code": [ - "1F1F3", - "1F1FF" - ], - "emoji": "🇳🇿", - "name": "flag: New Zealand" - }, - { - "code": [ - "1F1F4", - "1F1F2" - ], - "emoji": "🇴🇲", - "name": "flag: Oman" - }, - { - "code": [ - "1F1F5", - "1F1E6" - ], - "emoji": "🇵🇦", - "name": "flag: Panama" - }, - { - "code": [ - "1F1F5", - "1F1EA" - ], - "emoji": "🇵🇪", - "name": "flag: Peru" - }, - { - "code": [ - "1F1F5", - "1F1EB" - ], - "emoji": "🇵🇫", - "name": "flag: French Polynesia" - }, - { - "code": [ - "1F1F5", - "1F1EC" - ], - "emoji": "🇵🇬", - "name": "flag: Papua New Guinea" - }, - { - "code": [ - "1F1F5", - "1F1ED" - ], - "emoji": "🇵🇭", - "name": "flag: Philippines" - }, - { - "code": [ - "1F1F5", - "1F1F0" - ], - "emoji": "🇵🇰", - "name": "flag: Pakistan" - }, - { - "code": [ - "1F1F5", - "1F1F1" - ], - "emoji": "🇵🇱", - "name": "flag: Poland" - }, - { - "code": [ - "1F1F5", - "1F1F2" - ], - "emoji": "🇵🇲", - "name": "flag: St. Pierre & Miquelon" - }, - { - "code": [ - "1F1F5", - "1F1F3" - ], - "emoji": "🇵🇳", - "name": "flag: Pitcairn Islands" - }, - { - "code": [ - "1F1F5", - "1F1F7" - ], - "emoji": "🇵🇷", - "name": "flag: Puerto Rico" - }, - { - "code": [ - "1F1F5", - "1F1F8" - ], - "emoji": "🇵🇸", - "name": "flag: Palestinian Territories" - }, - { - "code": [ - "1F1F5", - "1F1F9" - ], - "emoji": "🇵🇹", - "name": "flag: Portugal" - }, - { - "code": [ - "1F1F5", - "1F1FC" - ], - "emoji": "🇵🇼", - "name": "flag: Palau" - }, - { - "code": [ - "1F1F5", - "1F1FE" - ], - "emoji": "🇵🇾", - "name": "flag: Paraguay" - }, - { - "code": [ - "1F1F6", - "1F1E6" - ], - "emoji": "🇶🇦", - "name": "flag: Qatar" - }, - { - "code": [ - "1F1F7", - "1F1EA" - ], - "emoji": "🇷🇪", - "name": "flag: Réunion" - }, - { - "code": [ - "1F1F7", - "1F1F4" - ], - "emoji": "🇷🇴", - "name": "flag: Romania" - }, - { - "code": [ - "1F1F7", - "1F1F8" - ], - "emoji": "🇷🇸", - "name": "flag: Serbia" - }, - { - "code": [ - "1F1F7", - "1F1FA" - ], - "emoji": "🇷🇺", - "name": "flag: Russia" - }, - { - "code": [ - "1F1F7", - "1F1FC" - ], - "emoji": "🇷🇼", - "name": "flag: Rwanda" - }, - { - "code": [ - "1F1F8", - "1F1E6" - ], - "emoji": "🇸🇦", - "name": "flag: Saudi Arabia" - }, - { - "code": [ - "1F1F8", - "1F1E7" - ], - "emoji": "🇸🇧", - "name": "flag: Solomon Islands" - }, - { - "code": [ - "1F1F8", - "1F1E8" - ], - "emoji": "🇸🇨", - "name": "flag: Seychelles" - }, - { - "code": [ - "1F1F8", - "1F1E9" - ], - "emoji": "🇸🇩", - "name": "flag: Sudan" - }, - { - "code": [ - "1F1F8", - "1F1EA" - ], - "emoji": "🇸🇪", - "name": "flag: Sweden" - }, - { - "code": [ - "1F1F8", - "1F1EC" - ], - "emoji": "🇸🇬", - "name": "flag: Singapore" - }, - { - "code": [ - "1F1F8", - "1F1ED" - ], - "emoji": "🇸🇭", - "name": "flag: St. Helena" - }, - { - "code": [ - "1F1F8", - "1F1EE" - ], - "emoji": "🇸🇮", - "name": "flag: Slovenia" - }, - { - "code": [ - "1F1F8", - "1F1EF" - ], - "emoji": "🇸🇯", - "name": "flag: Svalbard & Jan Mayen" - }, - { - "code": [ - "1F1F8", - "1F1F0" - ], - "emoji": "🇸🇰", - "name": "flag: Slovakia" - }, - { - "code": [ - "1F1F8", - "1F1F1" - ], - "emoji": "🇸🇱", - "name": "flag: Sierra Leone" - }, - { - "code": [ - "1F1F8", - "1F1F2" - ], - "emoji": "🇸🇲", - "name": "flag: San Marino" - }, - { - "code": [ - "1F1F8", - "1F1F3" - ], - "emoji": "🇸🇳", - "name": "flag: Senegal" - }, - { - "code": [ - "1F1F8", - "1F1F4" - ], - "emoji": "🇸🇴", - "name": "flag: Somalia" - }, - { - "code": [ - "1F1F8", - "1F1F7" - ], - "emoji": "🇸🇷", - "name": "flag: Suriname" - }, - { - "code": [ - "1F1F8", - "1F1F8" - ], - "emoji": "🇸🇸", - "name": "flag: South Sudan" - }, - { - "code": [ - "1F1F8", - "1F1F9" - ], - "emoji": "🇸🇹", - "name": "flag: São Tomé & Príncipe" - }, - { - "code": [ - "1F1F8", - "1F1FB" - ], - "emoji": "🇸🇻", - "name": "flag: El Salvador" - }, - { - "code": [ - "1F1F8", - "1F1FD" - ], - "emoji": "🇸🇽", - "name": "flag: Sint Maarten" - }, - { - "code": [ - "1F1F8", - "1F1FE" - ], - "emoji": "🇸🇾", - "name": "flag: Syria" - }, - { - "code": [ - "1F1F8", - "1F1FF" - ], - "emoji": "🇸🇿", - "name": "flag: Eswatini" - }, - { - "code": [ - "1F1F9", - "1F1E6" - ], - "emoji": "🇹🇦", - "name": "flag: Tristan da Cunha" - }, - { - "code": [ - "1F1F9", - "1F1E8" - ], - "emoji": "🇹🇨", - "name": "flag: Turks & Caicos Islands" - }, - { - "code": [ - "1F1F9", - "1F1E9" - ], - "emoji": "🇹🇩", - "name": "flag: Chad" - }, - { - "code": [ - "1F1F9", - "1F1EB" - ], - "emoji": "🇹🇫", - "name": "flag: French Southern Territories" - }, - { - "code": [ - "1F1F9", - "1F1EC" - ], - "emoji": "🇹🇬", - "name": "flag: Togo" - }, - { - "code": [ - "1F1F9", - "1F1ED" - ], - "emoji": "🇹🇭", - "name": "flag: Thailand" - }, - { - "code": [ - "1F1F9", - "1F1EF" - ], - "emoji": "🇹🇯", - "name": "flag: Tajikistan" - }, - { - "code": [ - "1F1F9", - "1F1F0" - ], - "emoji": "🇹🇰", - "name": "flag: Tokelau" - }, - { - "code": [ - "1F1F9", - "1F1F1" - ], - "emoji": "🇹🇱", - "name": "flag: Timor-Leste" - }, - { - "code": [ - "1F1F9", - "1F1F2" - ], - "emoji": "🇹🇲", - "name": "flag: Turkmenistan" - }, - { - "code": [ - "1F1F9", - "1F1F3" - ], - "emoji": "🇹🇳", - "name": "flag: Tunisia" - }, - { - "code": [ - "1F1F9", - "1F1F4" - ], - "emoji": "🇹🇴", - "name": "flag: Tonga" - }, - { - "code": [ - "1F1F9", - "1F1F7" - ], - "emoji": "🇹🇷", - "name": "flag: Türkiye" - }, - { - "code": [ - "1F1F9", - "1F1F9" - ], - "emoji": "🇹🇹", - "name": "flag: Trinidad & Tobago" - }, - { - "code": [ - "1F1F9", - "1F1FB" - ], - "emoji": "🇹🇻", - "name": "flag: Tuvalu" - }, - { - "code": [ - "1F1F9", - "1F1FC" - ], - "emoji": "🇹🇼", - "name": "flag: Taiwan" - }, - { - "code": [ - "1F1F9", - "1F1FF" - ], - "emoji": "🇹🇿", - "name": "flag: Tanzania" - }, - { - "code": [ - "1F1FA", - "1F1E6" - ], - "emoji": "🇺🇦", - "name": "flag: Ukraine" - }, - { - "code": [ - "1F1FA", - "1F1EC" - ], - "emoji": "🇺🇬", - "name": "flag: Uganda" - }, - { - "code": [ - "1F1FA", - "1F1F2" - ], - "emoji": "🇺🇲", - "name": "flag: U.S. Outlying Islands" - }, - { - "code": [ - "1F1FA", - "1F1F3" - ], - "emoji": "🇺🇳", - "name": "flag: United Nations" - }, - { - "code": [ - "1F1FA", - "1F1F8" - ], - "emoji": "🇺🇸", - "name": "flag: United States" - }, - { - "code": [ - "1F1FA", - "1F1FE" - ], - "emoji": "🇺🇾", - "name": "flag: Uruguay" - }, - { - "code": [ - "1F1FA", - "1F1FF" - ], - "emoji": "🇺🇿", - "name": "flag: Uzbekistan" - }, - { - "code": [ - "1F1FB", - "1F1E6" - ], - "emoji": "🇻🇦", - "name": "flag: Vatican City" - }, - { - "code": [ - "1F1FB", - "1F1E8" - ], - "emoji": "🇻🇨", - "name": "flag: St. Vincent & Grenadines" - }, - { - "code": [ - "1F1FB", - "1F1EA" - ], - "emoji": "🇻🇪", - "name": "flag: Venezuela" - }, - { - "code": [ - "1F1FB", - "1F1EC" - ], - "emoji": "🇻🇬", - "name": "flag: British Virgin Islands" - }, - { - "code": [ - "1F1FB", - "1F1EE" - ], - "emoji": "🇻🇮", - "name": "flag: U.S. Virgin Islands" - }, - { - "code": [ - "1F1FB", - "1F1F3" - ], - "emoji": "🇻🇳", - "name": "flag: Vietnam" - }, - { - "code": [ - "1F1FB", - "1F1FA" - ], - "emoji": "🇻🇺", - "name": "flag: Vanuatu" - }, - { - "code": [ - "1F1FC", - "1F1EB" - ], - "emoji": "🇼🇫", - "name": "flag: Wallis & Futuna" - }, - { - "code": [ - "1F1FC", - "1F1F8" - ], - "emoji": "🇼🇸", - "name": "flag: Samoa" - }, - { - "code": [ - "1F1FD", - "1F1F0" - ], - "emoji": "🇽🇰", - "name": "flag: Kosovo" - }, - { - "code": [ - "1F1FE", - "1F1EA" - ], - "emoji": "🇾🇪", - "name": "flag: Yemen" - }, - { - "code": [ - "1F1FE", - "1F1F9" - ], - "emoji": "🇾🇹", - "name": "flag: Mayotte" - }, - { - "code": [ - "1F1FF", - "1F1E6" - ], - "emoji": "🇿🇦", - "name": "flag: South Africa" - }, - { - "code": [ - "1F1FF", - "1F1F2" - ], - "emoji": "🇿🇲", - "name": "flag: Zambia" - }, - { - "code": [ - "1F1FF", - "1F1FC" - ], - "emoji": "🇿🇼", - "name": "flag: Zimbabwe" - } - ], - "subdivision-flag": [ - { - "code": [ - "1F3F4", - "E0067", - "E0062", - "E0065", - "E006E", - "E0067", - "E007F" - ], - "emoji": "🏴󠁧󠁢󠁥󠁮󠁧󠁿", - "name": "flag: England" - }, - { - "code": [ - "1F3F4", - "E0067", - "E0062", - "E0073", - "E0063", - "E0074", - "E007F" - ], - "emoji": "🏴󠁧󠁢󠁳󠁣󠁴󠁿", - "name": "flag: Scotland" - }, - { - "code": [ - "1F3F4", - "E0067", - "E0062", - "E0077", - "E006C", - "E0073", - "E007F" - ], - "emoji": "🏴󠁧󠁢󠁷󠁬󠁳󠁿", - "name": "flag: Wales" - } - ] + "@version": "16.0.0", + "@author": "Chalda Pnuzig ", + "@copyright": "Chalda Pnuzig 2021-2024", + "@see": "{@link https://github.com/chalda-pnuzig/emojis.json|GitHub}", + "@license": "ISC", + "emojis": { + "Smileys & Emotion": { + "face-smiling": [ + { + "code": [ + "1F600" + ], + "emoji": "😀", + "name": "grinning face" + }, + { + "code": [ + "1F603" + ], + "emoji": "😃", + "name": "grinning face with big eyes" + }, + { + "code": [ + "1F604" + ], + "emoji": "😄", + "name": "grinning face with smiling eyes" + }, + { + "code": [ + "1F601" + ], + "emoji": "😁", + "name": "beaming face with smiling eyes" + }, + { + "code": [ + "1F606" + ], + "emoji": "😆", + "name": "grinning squinting face" + }, + { + "code": [ + "1F605" + ], + "emoji": "😅", + "name": "grinning face with sweat" + }, + { + "code": [ + "1F923" + ], + "emoji": "🤣", + "name": "rolling on the floor laughing" + }, + { + "code": [ + "1F602" + ], + "emoji": "😂", + "name": "face with tears of joy" + }, + { + "code": [ + "1F642" + ], + "emoji": "🙂", + "name": "slightly smiling face" + }, + { + "code": [ + "1F643" + ], + "emoji": "🙃", + "name": "upside-down face" + }, + { + "code": [ + "1FAE0" + ], + "emoji": "🫠", + "name": "melting face" + }, + { + "code": [ + "1F609" + ], + "emoji": "😉", + "name": "winking face" + }, + { + "code": [ + "1F60A" + ], + "emoji": "😊", + "name": "smiling face with smiling eyes" + }, + { + "code": [ + "1F607" + ], + "emoji": "😇", + "name": "smiling face with halo" + } + ], + "face-affection": [ + { + "code": [ + "1F970" + ], + "emoji": "🥰", + "name": "smiling face with hearts" + }, + { + "code": [ + "1F60D" + ], + "emoji": "😍", + "name": "smiling face with heart-eyes" + }, + { + "code": [ + "1F929" + ], + "emoji": "🤩", + "name": "star-struck" + }, + { + "code": [ + "1F618" + ], + "emoji": "😘", + "name": "face blowing a kiss" + }, + { + "code": [ + "1F617" + ], + "emoji": "😗", + "name": "kissing face" + }, + { + "code": [ + "263A" + ], + "emoji": "☺", + "name": "smiling face" + }, + { + "code": [ + "1F61A" + ], + "emoji": "😚", + "name": "kissing face with closed eyes" + }, + { + "code": [ + "1F619" + ], + "emoji": "😙", + "name": "kissing face with smiling eyes" + }, + { + "code": [ + "1F972" + ], + "emoji": "🥲", + "name": "smiling face with tear" + } + ], + "face-tongue": [ + { + "code": [ + "1F60B" + ], + "emoji": "😋", + "name": "face savoring food" + }, + { + "code": [ + "1F61B" + ], + "emoji": "😛", + "name": "face with tongue" + }, + { + "code": [ + "1F61C" + ], + "emoji": "😜", + "name": "winking face with tongue" + }, + { + "code": [ + "1F92A" + ], + "emoji": "🤪", + "name": "zany face" + }, + { + "code": [ + "1F61D" + ], + "emoji": "😝", + "name": "squinting face with tongue" + }, + { + "code": [ + "1F911" + ], + "emoji": "🤑", + "name": "money-mouth face" + } + ], + "face-hand": [ + { + "code": [ + "1F917" + ], + "emoji": "🤗", + "name": "smiling face with open hands" + }, + { + "code": [ + "1F92D" + ], + "emoji": "🤭", + "name": "face with hand over mouth" + }, + { + "code": [ + "1FAE2" + ], + "emoji": "🫢", + "name": "face with open eyes and hand over mouth" + }, + { + "code": [ + "1FAE3" + ], + "emoji": "🫣", + "name": "face with peeking eye" + }, + { + "code": [ + "1F92B" + ], + "emoji": "🤫", + "name": "shushing face" + }, + { + "code": [ + "1F914" + ], + "emoji": "🤔", + "name": "thinking face" + }, + { + "code": [ + "1FAE1" + ], + "emoji": "🫡", + "name": "saluting face" + } + ], + "face-neutral-skeptical": [ + { + "code": [ + "1F910" + ], + "emoji": "🤐", + "name": "zipper-mouth face" + }, + { + "code": [ + "1F928" + ], + "emoji": "🤨", + "name": "face with raised eyebrow" + }, + { + "code": [ + "1F610" + ], + "emoji": "😐", + "name": "neutral face" + }, + { + "code": [ + "1F611" + ], + "emoji": "😑", + "name": "expressionless face" + }, + { + "code": [ + "1F636" + ], + "emoji": "😶", + "name": "face without mouth" + }, + { + "code": [ + "1FAE5" + ], + "emoji": "🫥", + "name": "dotted line face" + }, + { + "code": [ + "1F636", + "200D", + "1F32B", + "FE0F" + ], + "emoji": "😶‍🌫️", + "name": "face in clouds" + }, + { + "code": [ + "1F60F" + ], + "emoji": "😏", + "name": "smirking face" + }, + { + "code": [ + "1F612" + ], + "emoji": "😒", + "name": "unamused face" + }, + { + "code": [ + "1F644" + ], + "emoji": "🙄", + "name": "face with rolling eyes" + }, + { + "code": [ + "1F62C" + ], + "emoji": "😬", + "name": "grimacing face" + }, + { + "code": [ + "1F62E", + "200D", + "1F4A8" + ], + "emoji": "😮‍💨", + "name": "face exhaling" + }, + { + "code": [ + "1F925" + ], + "emoji": "🤥", + "name": "lying face" + }, + { + "code": [ + "1FAE8" + ], + "emoji": "🫨", + "name": "shaking face" + }, + { + "code": [ + "1F642", + "200D", + "2194", + "FE0F" + ], + "emoji": "🙂‍↔️", + "name": "head shaking horizontally" + }, + { + "code": [ + "1F642", + "200D", + "2195", + "FE0F" + ], + "emoji": "🙂‍↕️", + "name": "head shaking vertically" + } + ], + "face-sleepy": [ + { + "code": [ + "1F60C" + ], + "emoji": "😌", + "name": "relieved face" + }, + { + "code": [ + "1F614" + ], + "emoji": "😔", + "name": "pensive face" + }, + { + "code": [ + "1F62A" + ], + "emoji": "😪", + "name": "sleepy face" + }, + { + "code": [ + "1F924" + ], + "emoji": "🤤", + "name": "drooling face" + }, + { + "code": [ + "1F634" + ], + "emoji": "😴", + "name": "sleeping face" + }, + { + "code": [ + "1FAE9" + ], + "emoji": "🫩", + "name": "face with bags under eyes" + } + ], + "face-unwell": [ + { + "code": [ + "1F637" + ], + "emoji": "😷", + "name": "face with medical mask" + }, + { + "code": [ + "1F912" + ], + "emoji": "🤒", + "name": "face with thermometer" + }, + { + "code": [ + "1F915" + ], + "emoji": "🤕", + "name": "face with head-bandage" + }, + { + "code": [ + "1F922" + ], + "emoji": "🤢", + "name": "nauseated face" + }, + { + "code": [ + "1F92E" + ], + "emoji": "🤮", + "name": "face vomiting" + }, + { + "code": [ + "1F927" + ], + "emoji": "🤧", + "name": "sneezing face" + }, + { + "code": [ + "1F975" + ], + "emoji": "🥵", + "name": "hot face" + }, + { + "code": [ + "1F976" + ], + "emoji": "🥶", + "name": "cold face" + }, + { + "code": [ + "1F974" + ], + "emoji": "🥴", + "name": "woozy face" + }, + { + "code": [ + "1F635" + ], + "emoji": "😵", + "name": "face with crossed-out eyes" + }, + { + "code": [ + "1F635", + "200D", + "1F4AB" + ], + "emoji": "😵‍💫", + "name": "face with spiral eyes" + }, + { + "code": [ + "1F92F" + ], + "emoji": "🤯", + "name": "exploding head" + } + ], + "face-hat": [ + { + "code": [ + "1F920" + ], + "emoji": "🤠", + "name": "cowboy hat face" + }, + { + "code": [ + "1F973" + ], + "emoji": "🥳", + "name": "partying face" + }, + { + "code": [ + "1F978" + ], + "emoji": "🥸", + "name": "disguised face" + } + ], + "face-glasses": [ + { + "code": [ + "1F60E" + ], + "emoji": "😎", + "name": "smiling face with sunglasses" + }, + { + "code": [ + "1F913" + ], + "emoji": "🤓", + "name": "nerd face" + }, + { + "code": [ + "1F9D0" + ], + "emoji": "🧐", + "name": "face with monocle" + } + ], + "face-concerned": [ + { + "code": [ + "1F615" + ], + "emoji": "😕", + "name": "confused face" + }, + { + "code": [ + "1FAE4" + ], + "emoji": "🫤", + "name": "face with diagonal mouth" + }, + { + "code": [ + "1F61F" + ], + "emoji": "😟", + "name": "worried face" + }, + { + "code": [ + "1F641" + ], + "emoji": "🙁", + "name": "slightly frowning face" + }, + { + "code": [ + "2639" + ], + "emoji": "☹", + "name": "frowning face" + }, + { + "code": [ + "1F62E" + ], + "emoji": "😮", + "name": "face with open mouth" + }, + { + "code": [ + "1F62F" + ], + "emoji": "😯", + "name": "hushed face" + }, + { + "code": [ + "1F632" + ], + "emoji": "😲", + "name": "astonished face" + }, + { + "code": [ + "1F633" + ], + "emoji": "😳", + "name": "flushed face" + }, + { + "code": [ + "1F97A" + ], + "emoji": "🥺", + "name": "pleading face" + }, + { + "code": [ + "1F979" + ], + "emoji": "🥹", + "name": "face holding back tears" + }, + { + "code": [ + "1F626" + ], + "emoji": "😦", + "name": "frowning face with open mouth" + }, + { + "code": [ + "1F627" + ], + "emoji": "😧", + "name": "anguished face" + }, + { + "code": [ + "1F628" + ], + "emoji": "😨", + "name": "fearful face" + }, + { + "code": [ + "1F630" + ], + "emoji": "😰", + "name": "anxious face with sweat" + }, + { + "code": [ + "1F625" + ], + "emoji": "😥", + "name": "sad but relieved face" + }, + { + "code": [ + "1F622" + ], + "emoji": "😢", + "name": "crying face" + }, + { + "code": [ + "1F62D" + ], + "emoji": "😭", + "name": "loudly crying face" + }, + { + "code": [ + "1F631" + ], + "emoji": "😱", + "name": "face screaming in fear" + }, + { + "code": [ + "1F616" + ], + "emoji": "😖", + "name": "confounded face" + }, + { + "code": [ + "1F623" + ], + "emoji": "😣", + "name": "persevering face" + }, + { + "code": [ + "1F61E" + ], + "emoji": "😞", + "name": "disappointed face" + }, + { + "code": [ + "1F613" + ], + "emoji": "😓", + "name": "downcast face with sweat" + }, + { + "code": [ + "1F629" + ], + "emoji": "😩", + "name": "weary face" + }, + { + "code": [ + "1F62B" + ], + "emoji": "😫", + "name": "tired face" + }, + { + "code": [ + "1F971" + ], + "emoji": "🥱", + "name": "yawning face" + } + ], + "face-negative": [ + { + "code": [ + "1F624" + ], + "emoji": "😤", + "name": "face with steam from nose" + }, + { + "code": [ + "1F621" + ], + "emoji": "😡", + "name": "enraged face" + }, + { + "code": [ + "1F620" + ], + "emoji": "😠", + "name": "angry face" + }, + { + "code": [ + "1F92C" + ], + "emoji": "🤬", + "name": "face with symbols on mouth" + }, + { + "code": [ + "1F608" + ], + "emoji": "😈", + "name": "smiling face with horns" + }, + { + "code": [ + "1F47F" + ], + "emoji": "👿", + "name": "angry face with horns" + }, + { + "code": [ + "1F480" + ], + "emoji": "💀", + "name": "skull" + }, + { + "code": [ + "2620" + ], + "emoji": "☠", + "name": "skull and crossbones" + } + ], + "face-costume": [ + { + "code": [ + "1F4A9" + ], + "emoji": "💩", + "name": "pile of poo" + }, + { + "code": [ + "1F921" + ], + "emoji": "🤡", + "name": "clown face" + }, + { + "code": [ + "1F479" + ], + "emoji": "👹", + "name": "ogre" + }, + { + "code": [ + "1F47A" + ], + "emoji": "👺", + "name": "goblin" + }, + { + "code": [ + "1F47B" + ], + "emoji": "👻", + "name": "ghost" + }, + { + "code": [ + "1F47D" + ], + "emoji": "👽", + "name": "alien" + }, + { + "code": [ + "1F47E" + ], + "emoji": "👾", + "name": "alien monster" + }, + { + "code": [ + "1F916" + ], + "emoji": "🤖", + "name": "robot" + } + ], + "cat-face": [ + { + "code": [ + "1F63A" + ], + "emoji": "😺", + "name": "grinning cat" + }, + { + "code": [ + "1F638" + ], + "emoji": "😸", + "name": "grinning cat with smiling eyes" + }, + { + "code": [ + "1F639" + ], + "emoji": "😹", + "name": "cat with tears of joy" + }, + { + "code": [ + "1F63B" + ], + "emoji": "😻", + "name": "smiling cat with heart-eyes" + }, + { + "code": [ + "1F63C" + ], + "emoji": "😼", + "name": "cat with wry smile" + }, + { + "code": [ + "1F63D" + ], + "emoji": "😽", + "name": "kissing cat" + }, + { + "code": [ + "1F640" + ], + "emoji": "🙀", + "name": "weary cat" + }, + { + "code": [ + "1F63F" + ], + "emoji": "😿", + "name": "crying cat" + }, + { + "code": [ + "1F63E" + ], + "emoji": "😾", + "name": "pouting cat" + } + ], + "monkey-face": [ + { + "code": [ + "1F648" + ], + "emoji": "🙈", + "name": "see-no-evil monkey" + }, + { + "code": [ + "1F649" + ], + "emoji": "🙉", + "name": "hear-no-evil monkey" + }, + { + "code": [ + "1F64A" + ], + "emoji": "🙊", + "name": "speak-no-evil monkey" + } + ], + "heart": [ + { + "code": [ + "1F48C" + ], + "emoji": "💌", + "name": "love letter" + }, + { + "code": [ + "1F498" + ], + "emoji": "💘", + "name": "heart with arrow" + }, + { + "code": [ + "1F49D" + ], + "emoji": "💝", + "name": "heart with ribbon" + }, + { + "code": [ + "1F496" + ], + "emoji": "💖", + "name": "sparkling heart" + }, + { + "code": [ + "1F497" + ], + "emoji": "💗", + "name": "growing heart" + }, + { + "code": [ + "1F493" + ], + "emoji": "💓", + "name": "beating heart" + }, + { + "code": [ + "1F49E" + ], + "emoji": "💞", + "name": "revolving hearts" + }, + { + "code": [ + "1F495" + ], + "emoji": "💕", + "name": "two hearts" + }, + { + "code": [ + "1F49F" + ], + "emoji": "💟", + "name": "heart decoration" + }, + { + "code": [ + "2763" + ], + "emoji": "❣", + "name": "heart exclamation" + }, + { + "code": [ + "1F494" + ], + "emoji": "💔", + "name": "broken heart" + }, + { + "code": [ + "2764", + "FE0F", + "200D", + "1F525" + ], + "emoji": "❤️‍🔥", + "name": "heart on fire" + }, + { + "code": [ + "2764", + "FE0F", + "200D", + "1FA79" + ], + "emoji": "❤️‍🩹", + "name": "mending heart" + }, + { + "code": [ + "2764" + ], + "emoji": "❤", + "name": "red heart" + }, + { + "code": [ + "1FA77" + ], + "emoji": "🩷", + "name": "pink heart" + }, + { + "code": [ + "1F9E1" + ], + "emoji": "🧡", + "name": "orange heart" + }, + { + "code": [ + "1F49B" + ], + "emoji": "💛", + "name": "yellow heart" + }, + { + "code": [ + "1F49A" + ], + "emoji": "💚", + "name": "green heart" + }, + { + "code": [ + "1F499" + ], + "emoji": "💙", + "name": "blue heart" + }, + { + "code": [ + "1FA75" + ], + "emoji": "🩵", + "name": "light blue heart" + }, + { + "code": [ + "1F49C" + ], + "emoji": "💜", + "name": "purple heart" + }, + { + "code": [ + "1F90E" + ], + "emoji": "🤎", + "name": "brown heart" + }, + { + "code": [ + "1F5A4" + ], + "emoji": "🖤", + "name": "black heart" + }, + { + "code": [ + "1FA76" + ], + "emoji": "🩶", + "name": "grey heart" + }, + { + "code": [ + "1F90D" + ], + "emoji": "🤍", + "name": "white heart" + } + ], + "emotion": [ + { + "code": [ + "1F48B" + ], + "emoji": "💋", + "name": "kiss mark" + }, + { + "code": [ + "1F4AF" + ], + "emoji": "💯", + "name": "hundred points" + }, + { + "code": [ + "1F4A2" + ], + "emoji": "💢", + "name": "anger symbol" + }, + { + "code": [ + "1F4A5" + ], + "emoji": "💥", + "name": "collision" + }, + { + "code": [ + "1F4AB" + ], + "emoji": "💫", + "name": "dizzy" + }, + { + "code": [ + "1F4A6" + ], + "emoji": "💦", + "name": "sweat droplets" + }, + { + "code": [ + "1F4A8" + ], + "emoji": "💨", + "name": "dashing away" + }, + { + "code": [ + "1F573" + ], + "emoji": "🕳", + "name": "hole" + }, + { + "code": [ + "1F4AC" + ], + "emoji": "💬", + "name": "speech balloon" + }, + { + "code": [ + "1F441", + "FE0F", + "200D", + "1F5E8", + "FE0F" + ], + "emoji": "👁️‍🗨️", + "name": "eye in speech bubble" + }, + { + "code": [ + "1F5E8" + ], + "emoji": "🗨", + "name": "left speech bubble" + }, + { + "code": [ + "1F5EF" + ], + "emoji": "🗯", + "name": "right anger bubble" + }, + { + "code": [ + "1F4AD" + ], + "emoji": "💭", + "name": "thought balloon" + }, + { + "code": [ + "1F4A4" + ], + "emoji": "💤", + "name": "ZZZ" + } + ] + }, + "People & Body": { + "hand-fingers-open": [ + { + "code": [ + "1F44B" + ], + "emoji": "👋", + "name": "waving hand" + }, + { + "code": [ + "1F91A" + ], + "emoji": "🤚", + "name": "raised back of hand" + }, + { + "code": [ + "1F590" + ], + "emoji": "🖐", + "name": "hand with fingers splayed" + }, + { + "code": [ + "270B" + ], + "emoji": "✋", + "name": "raised hand" + }, + { + "code": [ + "1F596" + ], + "emoji": "🖖", + "name": "vulcan salute" + }, + { + "code": [ + "1FAF1" + ], + "emoji": "🫱", + "name": "rightwards hand" + }, + { + "code": [ + "1FAF2" + ], + "emoji": "🫲", + "name": "leftwards hand" + }, + { + "code": [ + "1FAF3" + ], + "emoji": "🫳", + "name": "palm down hand" + }, + { + "code": [ + "1FAF4" + ], + "emoji": "🫴", + "name": "palm up hand" + }, + { + "code": [ + "1FAF7" + ], + "emoji": "🫷", + "name": "leftwards pushing hand" + }, + { + "code": [ + "1FAF8" + ], + "emoji": "🫸", + "name": "rightwards pushing hand" + } + ], + "hand-fingers-partial": [ + { + "code": [ + "1F44C" + ], + "emoji": "👌", + "name": "OK hand" + }, + { + "code": [ + "1F90C" + ], + "emoji": "🤌", + "name": "pinched fingers" + }, + { + "code": [ + "1F90F" + ], + "emoji": "🤏", + "name": "pinching hand" + }, + { + "code": [ + "270C" + ], + "emoji": "✌", + "name": "victory hand" + }, + { + "code": [ + "1F91E" + ], + "emoji": "🤞", + "name": "crossed fingers" + }, + { + "code": [ + "1FAF0" + ], + "emoji": "🫰", + "name": "hand with index finger and thumb crossed" + }, + { + "code": [ + "1F91F" + ], + "emoji": "🤟", + "name": "love-you gesture" + }, + { + "code": [ + "1F918" + ], + "emoji": "🤘", + "name": "sign of the horns" + }, + { + "code": [ + "1F919" + ], + "emoji": "🤙", + "name": "call me hand" + } + ], + "hand-single-finger": [ + { + "code": [ + "1F448" + ], + "emoji": "👈", + "name": "backhand index pointing left" + }, + { + "code": [ + "1F449" + ], + "emoji": "👉", + "name": "backhand index pointing right" + }, + { + "code": [ + "1F446" + ], + "emoji": "👆", + "name": "backhand index pointing up" + }, + { + "code": [ + "1F595" + ], + "emoji": "🖕", + "name": "middle finger" + }, + { + "code": [ + "1F447" + ], + "emoji": "👇", + "name": "backhand index pointing down" + }, + { + "code": [ + "261D" + ], + "emoji": "☝", + "name": "index pointing up" + }, + { + "code": [ + "1FAF5" + ], + "emoji": "🫵", + "name": "index pointing at the viewer" + } + ], + "hand-fingers-closed": [ + { + "code": [ + "1F44D" + ], + "emoji": "👍", + "name": "thumbs up" + }, + { + "code": [ + "1F44E" + ], + "emoji": "👎", + "name": "thumbs down" + }, + { + "code": [ + "270A" + ], + "emoji": "✊", + "name": "raised fist" + }, + { + "code": [ + "1F44A" + ], + "emoji": "👊", + "name": "oncoming fist" + }, + { + "code": [ + "1F91B" + ], + "emoji": "🤛", + "name": "left-facing fist" + }, + { + "code": [ + "1F91C" + ], + "emoji": "🤜", + "name": "right-facing fist" + } + ], + "hands": [ + { + "code": [ + "1F44F" + ], + "emoji": "👏", + "name": "clapping hands" + }, + { + "code": [ + "1F64C" + ], + "emoji": "🙌", + "name": "raising hands" + }, + { + "code": [ + "1FAF6" + ], + "emoji": "🫶", + "name": "heart hands" + }, + { + "code": [ + "1F450" + ], + "emoji": "👐", + "name": "open hands" + }, + { + "code": [ + "1F932" + ], + "emoji": "🤲", + "name": "palms up together" + }, + { + "code": [ + "1F91D" + ], + "emoji": "🤝", + "name": "handshake" + }, + { + "code": [ + "1F64F" + ], + "emoji": "🙏", + "name": "folded hands" + } + ], + "hand-prop": [ + { + "code": [ + "270D" + ], + "emoji": "✍", + "name": "writing hand" + }, + { + "code": [ + "1F485" + ], + "emoji": "💅", + "name": "nail polish" + }, + { + "code": [ + "1F933" + ], + "emoji": "🤳", + "name": "selfie" + } + ], + "body-parts": [ + { + "code": [ + "1F4AA" + ], + "emoji": "💪", + "name": "flexed biceps" + }, + { + "code": [ + "1F9BE" + ], + "emoji": "🦾", + "name": "mechanical arm" + }, + { + "code": [ + "1F9BF" + ], + "emoji": "🦿", + "name": "mechanical leg" + }, + { + "code": [ + "1F9B5" + ], + "emoji": "🦵", + "name": "leg" + }, + { + "code": [ + "1F9B6" + ], + "emoji": "🦶", + "name": "foot" + }, + { + "code": [ + "1F442" + ], + "emoji": "👂", + "name": "ear" + }, + { + "code": [ + "1F9BB" + ], + "emoji": "🦻", + "name": "ear with hearing aid" + }, + { + "code": [ + "1F443" + ], + "emoji": "👃", + "name": "nose" + }, + { + "code": [ + "1F9E0" + ], + "emoji": "🧠", + "name": "brain" + }, + { + "code": [ + "1FAC0" + ], + "emoji": "🫀", + "name": "anatomical heart" + }, + { + "code": [ + "1FAC1" + ], + "emoji": "🫁", + "name": "lungs" + }, + { + "code": [ + "1F9B7" + ], + "emoji": "🦷", + "name": "tooth" + }, + { + "code": [ + "1F9B4" + ], + "emoji": "🦴", + "name": "bone" + }, + { + "code": [ + "1F440" + ], + "emoji": "👀", + "name": "eyes" + }, + { + "code": [ + "1F441" + ], + "emoji": "👁", + "name": "eye" + }, + { + "code": [ + "1F445" + ], + "emoji": "👅", + "name": "tongue" + }, + { + "code": [ + "1F444" + ], + "emoji": "👄", + "name": "mouth" + }, + { + "code": [ + "1FAE6" + ], + "emoji": "🫦", + "name": "biting lip" + } + ], + "person": [ + { + "code": [ + "1F476" + ], + "emoji": "👶", + "name": "baby" + }, + { + "code": [ + "1F9D2" + ], + "emoji": "🧒", + "name": "child" + }, + { + "code": [ + "1F466" + ], + "emoji": "👦", + "name": "boy" + }, + { + "code": [ + "1F467" + ], + "emoji": "👧", + "name": "girl" + }, + { + "code": [ + "1F9D1" + ], + "emoji": "🧑", + "name": "person" + }, + { + "code": [ + "1F471" + ], + "emoji": "👱", + "name": "person: blond hair" + }, + { + "code": [ + "1F468" + ], + "emoji": "👨", + "name": "man" + }, + { + "code": [ + "1F9D4" + ], + "emoji": "🧔", + "name": "person: beard" + }, + { + "code": [ + "1F9D4", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧔‍♂️", + "name": "man: beard" + }, + { + "code": [ + "1F9D4", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧔‍♀️", + "name": "woman: beard" + }, + { + "code": [ + "1F468", + "200D", + "1F9B0" + ], + "emoji": "👨‍🦰", + "name": "man: red hair" + }, + { + "code": [ + "1F468", + "200D", + "1F9B1" + ], + "emoji": "👨‍🦱", + "name": "man: curly hair" + }, + { + "code": [ + "1F468", + "200D", + "1F9B3" + ], + "emoji": "👨‍🦳", + "name": "man: white hair" + }, + { + "code": [ + "1F468", + "200D", + "1F9B2" + ], + "emoji": "👨‍🦲", + "name": "man: bald" + }, + { + "code": [ + "1F469" + ], + "emoji": "👩", + "name": "woman" + }, + { + "code": [ + "1F469", + "200D", + "1F9B0" + ], + "emoji": "👩‍🦰", + "name": "woman: red hair" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9B0" + ], + "emoji": "🧑‍🦰", + "name": "person: red hair" + }, + { + "code": [ + "1F469", + "200D", + "1F9B1" + ], + "emoji": "👩‍🦱", + "name": "woman: curly hair" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9B1" + ], + "emoji": "🧑‍🦱", + "name": "person: curly hair" + }, + { + "code": [ + "1F469", + "200D", + "1F9B3" + ], + "emoji": "👩‍🦳", + "name": "woman: white hair" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9B3" + ], + "emoji": "🧑‍🦳", + "name": "person: white hair" + }, + { + "code": [ + "1F469", + "200D", + "1F9B2" + ], + "emoji": "👩‍🦲", + "name": "woman: bald" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9B2" + ], + "emoji": "🧑‍🦲", + "name": "person: bald" + }, + { + "code": [ + "1F471", + "200D", + "2640", + "FE0F" + ], + "emoji": "👱‍♀️", + "name": "woman: blond hair" + }, + { + "code": [ + "1F471", + "200D", + "2642", + "FE0F" + ], + "emoji": "👱‍♂️", + "name": "man: blond hair" + }, + { + "code": [ + "1F9D3" + ], + "emoji": "🧓", + "name": "older person" + }, + { + "code": [ + "1F474" + ], + "emoji": "👴", + "name": "old man" + }, + { + "code": [ + "1F475" + ], + "emoji": "👵", + "name": "old woman" + } + ], + "person-gesture": [ + { + "code": [ + "1F64D" + ], + "emoji": "🙍", + "name": "person frowning" + }, + { + "code": [ + "1F64D", + "200D", + "2642", + "FE0F" + ], + "emoji": "🙍‍♂️", + "name": "man frowning" + }, + { + "code": [ + "1F64D", + "200D", + "2640", + "FE0F" + ], + "emoji": "🙍‍♀️", + "name": "woman frowning" + }, + { + "code": [ + "1F64E" + ], + "emoji": "🙎", + "name": "person pouting" + }, + { + "code": [ + "1F64E", + "200D", + "2642", + "FE0F" + ], + "emoji": "🙎‍♂️", + "name": "man pouting" + }, + { + "code": [ + "1F64E", + "200D", + "2640", + "FE0F" + ], + "emoji": "🙎‍♀️", + "name": "woman pouting" + }, + { + "code": [ + "1F645" + ], + "emoji": "🙅", + "name": "person gesturing NO" + }, + { + "code": [ + "1F645", + "200D", + "2642", + "FE0F" + ], + "emoji": "🙅‍♂️", + "name": "man gesturing NO" + }, + { + "code": [ + "1F645", + "200D", + "2640", + "FE0F" + ], + "emoji": "🙅‍♀️", + "name": "woman gesturing NO" + }, + { + "code": [ + "1F646" + ], + "emoji": "🙆", + "name": "person gesturing OK" + }, + { + "code": [ + "1F646", + "200D", + "2642", + "FE0F" + ], + "emoji": "🙆‍♂️", + "name": "man gesturing OK" + }, + { + "code": [ + "1F646", + "200D", + "2640", + "FE0F" + ], + "emoji": "🙆‍♀️", + "name": "woman gesturing OK" + }, + { + "code": [ + "1F481" + ], + "emoji": "💁", + "name": "person tipping hand" + }, + { + "code": [ + "1F481", + "200D", + "2642", + "FE0F" + ], + "emoji": "💁‍♂️", + "name": "man tipping hand" + }, + { + "code": [ + "1F481", + "200D", + "2640", + "FE0F" + ], + "emoji": "💁‍♀️", + "name": "woman tipping hand" + }, + { + "code": [ + "1F64B" + ], + "emoji": "🙋", + "name": "person raising hand" + }, + { + "code": [ + "1F64B", + "200D", + "2642", + "FE0F" + ], + "emoji": "🙋‍♂️", + "name": "man raising hand" + }, + { + "code": [ + "1F64B", + "200D", + "2640", + "FE0F" + ], + "emoji": "🙋‍♀️", + "name": "woman raising hand" + }, + { + "code": [ + "1F9CF" + ], + "emoji": "🧏", + "name": "deaf person" + }, + { + "code": [ + "1F9CF", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧏‍♂️", + "name": "deaf man" + }, + { + "code": [ + "1F9CF", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧏‍♀️", + "name": "deaf woman" + }, + { + "code": [ + "1F647" + ], + "emoji": "🙇", + "name": "person bowing" + }, + { + "code": [ + "1F647", + "200D", + "2642", + "FE0F" + ], + "emoji": "🙇‍♂️", + "name": "man bowing" + }, + { + "code": [ + "1F647", + "200D", + "2640", + "FE0F" + ], + "emoji": "🙇‍♀️", + "name": "woman bowing" + }, + { + "code": [ + "1F926" + ], + "emoji": "🤦", + "name": "person facepalming" + }, + { + "code": [ + "1F926", + "200D", + "2642", + "FE0F" + ], + "emoji": "🤦‍♂️", + "name": "man facepalming" + }, + { + "code": [ + "1F926", + "200D", + "2640", + "FE0F" + ], + "emoji": "🤦‍♀️", + "name": "woman facepalming" + }, + { + "code": [ + "1F937" + ], + "emoji": "🤷", + "name": "person shrugging" + }, + { + "code": [ + "1F937", + "200D", + "2642", + "FE0F" + ], + "emoji": "🤷‍♂️", + "name": "man shrugging" + }, + { + "code": [ + "1F937", + "200D", + "2640", + "FE0F" + ], + "emoji": "🤷‍♀️", + "name": "woman shrugging" + } + ], + "person-role": [ + { + "code": [ + "1F9D1", + "200D", + "2695", + "FE0F" + ], + "emoji": "🧑‍⚕️", + "name": "health worker" + }, + { + "code": [ + "1F468", + "200D", + "2695", + "FE0F" + ], + "emoji": "👨‍⚕️", + "name": "man health worker" + }, + { + "code": [ + "1F469", + "200D", + "2695", + "FE0F" + ], + "emoji": "👩‍⚕️", + "name": "woman health worker" + }, + { + "code": [ + "1F9D1", + "200D", + "1F393" + ], + "emoji": "🧑‍🎓", + "name": "student" + }, + { + "code": [ + "1F468", + "200D", + "1F393" + ], + "emoji": "👨‍🎓", + "name": "man student" + }, + { + "code": [ + "1F469", + "200D", + "1F393" + ], + "emoji": "👩‍🎓", + "name": "woman student" + }, + { + "code": [ + "1F9D1", + "200D", + "1F3EB" + ], + "emoji": "🧑‍🏫", + "name": "teacher" + }, + { + "code": [ + "1F468", + "200D", + "1F3EB" + ], + "emoji": "👨‍🏫", + "name": "man teacher" + }, + { + "code": [ + "1F469", + "200D", + "1F3EB" + ], + "emoji": "👩‍🏫", + "name": "woman teacher" + }, + { + "code": [ + "1F9D1", + "200D", + "2696", + "FE0F" + ], + "emoji": "🧑‍⚖️", + "name": "judge" + }, + { + "code": [ + "1F468", + "200D", + "2696", + "FE0F" + ], + "emoji": "👨‍⚖️", + "name": "man judge" + }, + { + "code": [ + "1F469", + "200D", + "2696", + "FE0F" + ], + "emoji": "👩‍⚖️", + "name": "woman judge" + }, + { + "code": [ + "1F9D1", + "200D", + "1F33E" + ], + "emoji": "🧑‍🌾", + "name": "farmer" + }, + { + "code": [ + "1F468", + "200D", + "1F33E" + ], + "emoji": "👨‍🌾", + "name": "man farmer" + }, + { + "code": [ + "1F469", + "200D", + "1F33E" + ], + "emoji": "👩‍🌾", + "name": "woman farmer" + }, + { + "code": [ + "1F9D1", + "200D", + "1F373" + ], + "emoji": "🧑‍🍳", + "name": "cook" + }, + { + "code": [ + "1F468", + "200D", + "1F373" + ], + "emoji": "👨‍🍳", + "name": "man cook" + }, + { + "code": [ + "1F469", + "200D", + "1F373" + ], + "emoji": "👩‍🍳", + "name": "woman cook" + }, + { + "code": [ + "1F9D1", + "200D", + "1F527" + ], + "emoji": "🧑‍🔧", + "name": "mechanic" + }, + { + "code": [ + "1F468", + "200D", + "1F527" + ], + "emoji": "👨‍🔧", + "name": "man mechanic" + }, + { + "code": [ + "1F469", + "200D", + "1F527" + ], + "emoji": "👩‍🔧", + "name": "woman mechanic" + }, + { + "code": [ + "1F9D1", + "200D", + "1F3ED" + ], + "emoji": "🧑‍🏭", + "name": "factory worker" + }, + { + "code": [ + "1F468", + "200D", + "1F3ED" + ], + "emoji": "👨‍🏭", + "name": "man factory worker" + }, + { + "code": [ + "1F469", + "200D", + "1F3ED" + ], + "emoji": "👩‍🏭", + "name": "woman factory worker" + }, + { + "code": [ + "1F9D1", + "200D", + "1F4BC" + ], + "emoji": "🧑‍💼", + "name": "office worker" + }, + { + "code": [ + "1F468", + "200D", + "1F4BC" + ], + "emoji": "👨‍💼", + "name": "man office worker" + }, + { + "code": [ + "1F469", + "200D", + "1F4BC" + ], + "emoji": "👩‍💼", + "name": "woman office worker" + }, + { + "code": [ + "1F9D1", + "200D", + "1F52C" + ], + "emoji": "🧑‍🔬", + "name": "scientist" + }, + { + "code": [ + "1F468", + "200D", + "1F52C" + ], + "emoji": "👨‍🔬", + "name": "man scientist" + }, + { + "code": [ + "1F469", + "200D", + "1F52C" + ], + "emoji": "👩‍🔬", + "name": "woman scientist" + }, + { + "code": [ + "1F9D1", + "200D", + "1F4BB" + ], + "emoji": "🧑‍💻", + "name": "technologist" + }, + { + "code": [ + "1F468", + "200D", + "1F4BB" + ], + "emoji": "👨‍💻", + "name": "man technologist" + }, + { + "code": [ + "1F469", + "200D", + "1F4BB" + ], + "emoji": "👩‍💻", + "name": "woman technologist" + }, + { + "code": [ + "1F9D1", + "200D", + "1F3A4" + ], + "emoji": "🧑‍🎤", + "name": "singer" + }, + { + "code": [ + "1F468", + "200D", + "1F3A4" + ], + "emoji": "👨‍🎤", + "name": "man singer" + }, + { + "code": [ + "1F469", + "200D", + "1F3A4" + ], + "emoji": "👩‍🎤", + "name": "woman singer" + }, + { + "code": [ + "1F9D1", + "200D", + "1F3A8" + ], + "emoji": "🧑‍🎨", + "name": "artist" + }, + { + "code": [ + "1F468", + "200D", + "1F3A8" + ], + "emoji": "👨‍🎨", + "name": "man artist" + }, + { + "code": [ + "1F469", + "200D", + "1F3A8" + ], + "emoji": "👩‍🎨", + "name": "woman artist" + }, + { + "code": [ + "1F9D1", + "200D", + "2708", + "FE0F" + ], + "emoji": "🧑‍✈️", + "name": "pilot" + }, + { + "code": [ + "1F468", + "200D", + "2708", + "FE0F" + ], + "emoji": "👨‍✈️", + "name": "man pilot" + }, + { + "code": [ + "1F469", + "200D", + "2708", + "FE0F" + ], + "emoji": "👩‍✈️", + "name": "woman pilot" + }, + { + "code": [ + "1F9D1", + "200D", + "1F680" + ], + "emoji": "🧑‍🚀", + "name": "astronaut" + }, + { + "code": [ + "1F468", + "200D", + "1F680" + ], + "emoji": "👨‍🚀", + "name": "man astronaut" + }, + { + "code": [ + "1F469", + "200D", + "1F680" + ], + "emoji": "👩‍🚀", + "name": "woman astronaut" + }, + { + "code": [ + "1F9D1", + "200D", + "1F692" + ], + "emoji": "🧑‍🚒", + "name": "firefighter" + }, + { + "code": [ + "1F468", + "200D", + "1F692" + ], + "emoji": "👨‍🚒", + "name": "man firefighter" + }, + { + "code": [ + "1F469", + "200D", + "1F692" + ], + "emoji": "👩‍🚒", + "name": "woman firefighter" + }, + { + "code": [ + "1F46E" + ], + "emoji": "👮", + "name": "police officer" + }, + { + "code": [ + "1F46E", + "200D", + "2642", + "FE0F" + ], + "emoji": "👮‍♂️", + "name": "man police officer" + }, + { + "code": [ + "1F46E", + "200D", + "2640", + "FE0F" + ], + "emoji": "👮‍♀️", + "name": "woman police officer" + }, + { + "code": [ + "1F575" + ], + "emoji": "🕵", + "name": "detective" + }, + { + "code": [ + "1F575", + "FE0F", + "200D", + "2642", + "FE0F" + ], + "emoji": "🕵️‍♂️", + "name": "man detective" + }, + { + "code": [ + "1F575", + "FE0F", + "200D", + "2640", + "FE0F" + ], + "emoji": "🕵️‍♀️", + "name": "woman detective" + }, + { + "code": [ + "1F482" + ], + "emoji": "💂", + "name": "guard" + }, + { + "code": [ + "1F482", + "200D", + "2642", + "FE0F" + ], + "emoji": "💂‍♂️", + "name": "man guard" + }, + { + "code": [ + "1F482", + "200D", + "2640", + "FE0F" + ], + "emoji": "💂‍♀️", + "name": "woman guard" + }, + { + "code": [ + "1F977" + ], + "emoji": "🥷", + "name": "ninja" + }, + { + "code": [ + "1F477" + ], + "emoji": "👷", + "name": "construction worker" + }, + { + "code": [ + "1F477", + "200D", + "2642", + "FE0F" + ], + "emoji": "👷‍♂️", + "name": "man construction worker" + }, + { + "code": [ + "1F477", + "200D", + "2640", + "FE0F" + ], + "emoji": "👷‍♀️", + "name": "woman construction worker" + }, + { + "code": [ + "1FAC5" + ], + "emoji": "🫅", + "name": "person with crown" + }, + { + "code": [ + "1F934" + ], + "emoji": "🤴", + "name": "prince" + }, + { + "code": [ + "1F478" + ], + "emoji": "👸", + "name": "princess" + }, + { + "code": [ + "1F473" + ], + "emoji": "👳", + "name": "person wearing turban" + }, + { + "code": [ + "1F473", + "200D", + "2642", + "FE0F" + ], + "emoji": "👳‍♂️", + "name": "man wearing turban" + }, + { + "code": [ + "1F473", + "200D", + "2640", + "FE0F" + ], + "emoji": "👳‍♀️", + "name": "woman wearing turban" + }, + { + "code": [ + "1F472" + ], + "emoji": "👲", + "name": "person with skullcap" + }, + { + "code": [ + "1F9D5" + ], + "emoji": "🧕", + "name": "woman with headscarf" + }, + { + "code": [ + "1F935" + ], + "emoji": "🤵", + "name": "person in tuxedo" + }, + { + "code": [ + "1F935", + "200D", + "2642", + "FE0F" + ], + "emoji": "🤵‍♂️", + "name": "man in tuxedo" + }, + { + "code": [ + "1F935", + "200D", + "2640", + "FE0F" + ], + "emoji": "🤵‍♀️", + "name": "woman in tuxedo" + }, + { + "code": [ + "1F470" + ], + "emoji": "👰", + "name": "person with veil" + }, + { + "code": [ + "1F470", + "200D", + "2642", + "FE0F" + ], + "emoji": "👰‍♂️", + "name": "man with veil" + }, + { + "code": [ + "1F470", + "200D", + "2640", + "FE0F" + ], + "emoji": "👰‍♀️", + "name": "woman with veil" + }, + { + "code": [ + "1F930" + ], + "emoji": "🤰", + "name": "pregnant woman" + }, + { + "code": [ + "1FAC3" + ], + "emoji": "🫃", + "name": "pregnant man" + }, + { + "code": [ + "1FAC4" + ], + "emoji": "🫄", + "name": "pregnant person" + }, + { + "code": [ + "1F931" + ], + "emoji": "🤱", + "name": "breast-feeding" + }, + { + "code": [ + "1F469", + "200D", + "1F37C" + ], + "emoji": "👩‍🍼", + "name": "woman feeding baby" + }, + { + "code": [ + "1F468", + "200D", + "1F37C" + ], + "emoji": "👨‍🍼", + "name": "man feeding baby" + }, + { + "code": [ + "1F9D1", + "200D", + "1F37C" + ], + "emoji": "🧑‍🍼", + "name": "person feeding baby" + } + ], + "person-fantasy": [ + { + "code": [ + "1F47C" + ], + "emoji": "👼", + "name": "baby angel" + }, + { + "code": [ + "1F385" + ], + "emoji": "🎅", + "name": "Santa Claus" + }, + { + "code": [ + "1F936" + ], + "emoji": "🤶", + "name": "Mrs. Claus" + }, + { + "code": [ + "1F9D1", + "200D", + "1F384" + ], + "emoji": "🧑‍🎄", + "name": "Mx Claus" + }, + { + "code": [ + "1F9B8" + ], + "emoji": "🦸", + "name": "superhero" + }, + { + "code": [ + "1F9B8", + "200D", + "2642", + "FE0F" + ], + "emoji": "🦸‍♂️", + "name": "man superhero" + }, + { + "code": [ + "1F9B8", + "200D", + "2640", + "FE0F" + ], + "emoji": "🦸‍♀️", + "name": "woman superhero" + }, + { + "code": [ + "1F9B9" + ], + "emoji": "🦹", + "name": "supervillain" + }, + { + "code": [ + "1F9B9", + "200D", + "2642", + "FE0F" + ], + "emoji": "🦹‍♂️", + "name": "man supervillain" + }, + { + "code": [ + "1F9B9", + "200D", + "2640", + "FE0F" + ], + "emoji": "🦹‍♀️", + "name": "woman supervillain" + }, + { + "code": [ + "1F9D9" + ], + "emoji": "🧙", + "name": "mage" + }, + { + "code": [ + "1F9D9", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧙‍♂️", + "name": "man mage" + }, + { + "code": [ + "1F9D9", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧙‍♀️", + "name": "woman mage" + }, + { + "code": [ + "1F9DA" + ], + "emoji": "🧚", + "name": "fairy" + }, + { + "code": [ + "1F9DA", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧚‍♂️", + "name": "man fairy" + }, + { + "code": [ + "1F9DA", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧚‍♀️", + "name": "woman fairy" + }, + { + "code": [ + "1F9DB" + ], + "emoji": "🧛", + "name": "vampire" + }, + { + "code": [ + "1F9DB", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧛‍♂️", + "name": "man vampire" + }, + { + "code": [ + "1F9DB", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧛‍♀️", + "name": "woman vampire" + }, + { + "code": [ + "1F9DC" + ], + "emoji": "🧜", + "name": "merperson" + }, + { + "code": [ + "1F9DC", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧜‍♂️", + "name": "merman" + }, + { + "code": [ + "1F9DC", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧜‍♀️", + "name": "mermaid" + }, + { + "code": [ + "1F9DD" + ], + "emoji": "🧝", + "name": "elf" + }, + { + "code": [ + "1F9DD", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧝‍♂️", + "name": "man elf" + }, + { + "code": [ + "1F9DD", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧝‍♀️", + "name": "woman elf" + }, + { + "code": [ + "1F9DE" + ], + "emoji": "🧞", + "name": "genie" + }, + { + "code": [ + "1F9DE", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧞‍♂️", + "name": "man genie" + }, + { + "code": [ + "1F9DE", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧞‍♀️", + "name": "woman genie" + }, + { + "code": [ + "1F9DF" + ], + "emoji": "🧟", + "name": "zombie" + }, + { + "code": [ + "1F9DF", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧟‍♂️", + "name": "man zombie" + }, + { + "code": [ + "1F9DF", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧟‍♀️", + "name": "woman zombie" + }, + { + "code": [ + "1F9CC" + ], + "emoji": "🧌", + "name": "troll" + } + ], + "person-activity": [ + { + "code": [ + "1F486" + ], + "emoji": "💆", + "name": "person getting massage" + }, + { + "code": [ + "1F486", + "200D", + "2642", + "FE0F" + ], + "emoji": "💆‍♂️", + "name": "man getting massage" + }, + { + "code": [ + "1F486", + "200D", + "2640", + "FE0F" + ], + "emoji": "💆‍♀️", + "name": "woman getting massage" + }, + { + "code": [ + "1F487" + ], + "emoji": "💇", + "name": "person getting haircut" + }, + { + "code": [ + "1F487", + "200D", + "2642", + "FE0F" + ], + "emoji": "💇‍♂️", + "name": "man getting haircut" + }, + { + "code": [ + "1F487", + "200D", + "2640", + "FE0F" + ], + "emoji": "💇‍♀️", + "name": "woman getting haircut" + }, + { + "code": [ + "1F6B6" + ], + "emoji": "🚶", + "name": "person walking" + }, + { + "code": [ + "1F6B6", + "200D", + "2642", + "FE0F" + ], + "emoji": "🚶‍♂️", + "name": "man walking" + }, + { + "code": [ + "1F6B6", + "200D", + "2640", + "FE0F" + ], + "emoji": "🚶‍♀️", + "name": "woman walking" + }, + { + "code": [ + "1F6B6", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🚶‍➡️", + "name": "person walking facing right" + }, + { + "code": [ + "1F6B6", + "200D", + "2640", + "FE0F", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🚶‍♀️‍➡️", + "name": "woman walking facing right" + }, + { + "code": [ + "1F6B6", + "200D", + "2642", + "FE0F", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🚶‍♂️‍➡️", + "name": "man walking facing right" + }, + { + "code": [ + "1F9CD" + ], + "emoji": "🧍", + "name": "person standing" + }, + { + "code": [ + "1F9CD", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧍‍♂️", + "name": "man standing" + }, + { + "code": [ + "1F9CD", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧍‍♀️", + "name": "woman standing" + }, + { + "code": [ + "1F9CE" + ], + "emoji": "🧎", + "name": "person kneeling" + }, + { + "code": [ + "1F9CE", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧎‍♂️", + "name": "man kneeling" + }, + { + "code": [ + "1F9CE", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧎‍♀️", + "name": "woman kneeling" + }, + { + "code": [ + "1F9CE", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🧎‍➡️", + "name": "person kneeling facing right" + }, + { + "code": [ + "1F9CE", + "200D", + "2640", + "FE0F", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🧎‍♀️‍➡️", + "name": "woman kneeling facing right" + }, + { + "code": [ + "1F9CE", + "200D", + "2642", + "FE0F", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🧎‍♂️‍➡️", + "name": "man kneeling facing right" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9AF" + ], + "emoji": "🧑‍🦯", + "name": "person with white cane" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9AF", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🧑‍🦯‍➡️", + "name": "person with white cane facing right" + }, + { + "code": [ + "1F468", + "200D", + "1F9AF" + ], + "emoji": "👨‍🦯", + "name": "man with white cane" + }, + { + "code": [ + "1F468", + "200D", + "1F9AF", + "200D", + "27A1", + "FE0F" + ], + "emoji": "👨‍🦯‍➡️", + "name": "man with white cane facing right" + }, + { + "code": [ + "1F469", + "200D", + "1F9AF" + ], + "emoji": "👩‍🦯", + "name": "woman with white cane" + }, + { + "code": [ + "1F469", + "200D", + "1F9AF", + "200D", + "27A1", + "FE0F" + ], + "emoji": "👩‍🦯‍➡️", + "name": "woman with white cane facing right" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9BC" + ], + "emoji": "🧑‍🦼", + "name": "person in motorized wheelchair" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9BC", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🧑‍🦼‍➡️", + "name": "person in motorized wheelchair facing right" + }, + { + "code": [ + "1F468", + "200D", + "1F9BC" + ], + "emoji": "👨‍🦼", + "name": "man in motorized wheelchair" + }, + { + "code": [ + "1F468", + "200D", + "1F9BC", + "200D", + "27A1", + "FE0F" + ], + "emoji": "👨‍🦼‍➡️", + "name": "man in motorized wheelchair facing right" + }, + { + "code": [ + "1F469", + "200D", + "1F9BC" + ], + "emoji": "👩‍🦼", + "name": "woman in motorized wheelchair" + }, + { + "code": [ + "1F469", + "200D", + "1F9BC", + "200D", + "27A1", + "FE0F" + ], + "emoji": "👩‍🦼‍➡️", + "name": "woman in motorized wheelchair facing right" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9BD" + ], + "emoji": "🧑‍🦽", + "name": "person in manual wheelchair" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9BD", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🧑‍🦽‍➡️", + "name": "person in manual wheelchair facing right" + }, + { + "code": [ + "1F468", + "200D", + "1F9BD" + ], + "emoji": "👨‍🦽", + "name": "man in manual wheelchair" + }, + { + "code": [ + "1F468", + "200D", + "1F9BD", + "200D", + "27A1", + "FE0F" + ], + "emoji": "👨‍🦽‍➡️", + "name": "man in manual wheelchair facing right" + }, + { + "code": [ + "1F469", + "200D", + "1F9BD" + ], + "emoji": "👩‍🦽", + "name": "woman in manual wheelchair" + }, + { + "code": [ + "1F469", + "200D", + "1F9BD", + "200D", + "27A1", + "FE0F" + ], + "emoji": "👩‍🦽‍➡️", + "name": "woman in manual wheelchair facing right" + }, + { + "code": [ + "1F3C3" + ], + "emoji": "🏃", + "name": "person running" + }, + { + "code": [ + "1F3C3", + "200D", + "2642", + "FE0F" + ], + "emoji": "🏃‍♂️", + "name": "man running" + }, + { + "code": [ + "1F3C3", + "200D", + "2640", + "FE0F" + ], + "emoji": "🏃‍♀️", + "name": "woman running" + }, + { + "code": [ + "1F3C3", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🏃‍➡️", + "name": "person running facing right" + }, + { + "code": [ + "1F3C3", + "200D", + "2640", + "FE0F", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🏃‍♀️‍➡️", + "name": "woman running facing right" + }, + { + "code": [ + "1F3C3", + "200D", + "2642", + "FE0F", + "200D", + "27A1", + "FE0F" + ], + "emoji": "🏃‍♂️‍➡️", + "name": "man running facing right" + }, + { + "code": [ + "1F483" + ], + "emoji": "💃", + "name": "woman dancing" + }, + { + "code": [ + "1F57A" + ], + "emoji": "🕺", + "name": "man dancing" + }, + { + "code": [ + "1F574" + ], + "emoji": "🕴", + "name": "person in suit levitating" + }, + { + "code": [ + "1F46F" + ], + "emoji": "👯", + "name": "people with bunny ears" + }, + { + "code": [ + "1F46F", + "200D", + "2642", + "FE0F" + ], + "emoji": "👯‍♂️", + "name": "men with bunny ears" + }, + { + "code": [ + "1F46F", + "200D", + "2640", + "FE0F" + ], + "emoji": "👯‍♀️", + "name": "women with bunny ears" + }, + { + "code": [ + "1F9D6" + ], + "emoji": "🧖", + "name": "person in steamy room" + }, + { + "code": [ + "1F9D6", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧖‍♂️", + "name": "man in steamy room" + }, + { + "code": [ + "1F9D6", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧖‍♀️", + "name": "woman in steamy room" + }, + { + "code": [ + "1F9D7" + ], + "emoji": "🧗", + "name": "person climbing" + }, + { + "code": [ + "1F9D7", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧗‍♂️", + "name": "man climbing" + }, + { + "code": [ + "1F9D7", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧗‍♀️", + "name": "woman climbing" + } + ], + "person-sport": [ + { + "code": [ + "1F93A" + ], + "emoji": "🤺", + "name": "person fencing" + }, + { + "code": [ + "1F3C7" + ], + "emoji": "🏇", + "name": "horse racing" + }, + { + "code": [ + "26F7" + ], + "emoji": "⛷", + "name": "skier" + }, + { + "code": [ + "1F3C2" + ], + "emoji": "🏂", + "name": "snowboarder" + }, + { + "code": [ + "1F3CC" + ], + "emoji": "🏌", + "name": "person golfing" + }, + { + "code": [ + "1F3CC", + "FE0F", + "200D", + "2642", + "FE0F" + ], + "emoji": "🏌️‍♂️", + "name": "man golfing" + }, + { + "code": [ + "1F3CC", + "FE0F", + "200D", + "2640", + "FE0F" + ], + "emoji": "🏌️‍♀️", + "name": "woman golfing" + }, + { + "code": [ + "1F3C4" + ], + "emoji": "🏄", + "name": "person surfing" + }, + { + "code": [ + "1F3C4", + "200D", + "2642", + "FE0F" + ], + "emoji": "🏄‍♂️", + "name": "man surfing" + }, + { + "code": [ + "1F3C4", + "200D", + "2640", + "FE0F" + ], + "emoji": "🏄‍♀️", + "name": "woman surfing" + }, + { + "code": [ + "1F6A3" + ], + "emoji": "🚣", + "name": "person rowing boat" + }, + { + "code": [ + "1F6A3", + "200D", + "2642", + "FE0F" + ], + "emoji": "🚣‍♂️", + "name": "man rowing boat" + }, + { + "code": [ + "1F6A3", + "200D", + "2640", + "FE0F" + ], + "emoji": "🚣‍♀️", + "name": "woman rowing boat" + }, + { + "code": [ + "1F3CA" + ], + "emoji": "🏊", + "name": "person swimming" + }, + { + "code": [ + "1F3CA", + "200D", + "2642", + "FE0F" + ], + "emoji": "🏊‍♂️", + "name": "man swimming" + }, + { + "code": [ + "1F3CA", + "200D", + "2640", + "FE0F" + ], + "emoji": "🏊‍♀️", + "name": "woman swimming" + }, + { + "code": [ + "26F9" + ], + "emoji": "⛹", + "name": "person bouncing ball" + }, + { + "code": [ + "26F9", + "FE0F", + "200D", + "2642", + "FE0F" + ], + "emoji": "⛹️‍♂️", + "name": "man bouncing ball" + }, + { + "code": [ + "26F9", + "FE0F", + "200D", + "2640", + "FE0F" + ], + "emoji": "⛹️‍♀️", + "name": "woman bouncing ball" + }, + { + "code": [ + "1F3CB" + ], + "emoji": "🏋", + "name": "person lifting weights" + }, + { + "code": [ + "1F3CB", + "FE0F", + "200D", + "2642", + "FE0F" + ], + "emoji": "🏋️‍♂️", + "name": "man lifting weights" + }, + { + "code": [ + "1F3CB", + "FE0F", + "200D", + "2640", + "FE0F" + ], + "emoji": "🏋️‍♀️", + "name": "woman lifting weights" + }, + { + "code": [ + "1F6B4" + ], + "emoji": "🚴", + "name": "person biking" + }, + { + "code": [ + "1F6B4", + "200D", + "2642", + "FE0F" + ], + "emoji": "🚴‍♂️", + "name": "man biking" + }, + { + "code": [ + "1F6B4", + "200D", + "2640", + "FE0F" + ], + "emoji": "🚴‍♀️", + "name": "woman biking" + }, + { + "code": [ + "1F6B5" + ], + "emoji": "🚵", + "name": "person mountain biking" + }, + { + "code": [ + "1F6B5", + "200D", + "2642", + "FE0F" + ], + "emoji": "🚵‍♂️", + "name": "man mountain biking" + }, + { + "code": [ + "1F6B5", + "200D", + "2640", + "FE0F" + ], + "emoji": "🚵‍♀️", + "name": "woman mountain biking" + }, + { + "code": [ + "1F938" + ], + "emoji": "🤸", + "name": "person cartwheeling" + }, + { + "code": [ + "1F938", + "200D", + "2642", + "FE0F" + ], + "emoji": "🤸‍♂️", + "name": "man cartwheeling" + }, + { + "code": [ + "1F938", + "200D", + "2640", + "FE0F" + ], + "emoji": "🤸‍♀️", + "name": "woman cartwheeling" + }, + { + "code": [ + "1F93C" + ], + "emoji": "🤼", + "name": "people wrestling" + }, + { + "code": [ + "1F93C", + "200D", + "2642", + "FE0F" + ], + "emoji": "🤼‍♂️", + "name": "men wrestling" + }, + { + "code": [ + "1F93C", + "200D", + "2640", + "FE0F" + ], + "emoji": "🤼‍♀️", + "name": "women wrestling" + }, + { + "code": [ + "1F93D" + ], + "emoji": "🤽", + "name": "person playing water polo" + }, + { + "code": [ + "1F93D", + "200D", + "2642", + "FE0F" + ], + "emoji": "🤽‍♂️", + "name": "man playing water polo" + }, + { + "code": [ + "1F93D", + "200D", + "2640", + "FE0F" + ], + "emoji": "🤽‍♀️", + "name": "woman playing water polo" + }, + { + "code": [ + "1F93E" + ], + "emoji": "🤾", + "name": "person playing handball" + }, + { + "code": [ + "1F93E", + "200D", + "2642", + "FE0F" + ], + "emoji": "🤾‍♂️", + "name": "man playing handball" + }, + { + "code": [ + "1F93E", + "200D", + "2640", + "FE0F" + ], + "emoji": "🤾‍♀️", + "name": "woman playing handball" + }, + { + "code": [ + "1F939" + ], + "emoji": "🤹", + "name": "person juggling" + }, + { + "code": [ + "1F939", + "200D", + "2642", + "FE0F" + ], + "emoji": "🤹‍♂️", + "name": "man juggling" + }, + { + "code": [ + "1F939", + "200D", + "2640", + "FE0F" + ], + "emoji": "🤹‍♀️", + "name": "woman juggling" + } + ], + "person-resting": [ + { + "code": [ + "1F9D8" + ], + "emoji": "🧘", + "name": "person in lotus position" + }, + { + "code": [ + "1F9D8", + "200D", + "2642", + "FE0F" + ], + "emoji": "🧘‍♂️", + "name": "man in lotus position" + }, + { + "code": [ + "1F9D8", + "200D", + "2640", + "FE0F" + ], + "emoji": "🧘‍♀️", + "name": "woman in lotus position" + }, + { + "code": [ + "1F6C0" + ], + "emoji": "🛀", + "name": "person taking bath" + }, + { + "code": [ + "1F6CC" + ], + "emoji": "🛌", + "name": "person in bed" + } + ], + "family": [ + { + "code": [ + "1F9D1", + "200D", + "1F91D", + "200D", + "1F9D1" + ], + "emoji": "🧑‍🤝‍🧑", + "name": "people holding hands" + }, + { + "code": [ + "1F46D" + ], + "emoji": "👭", + "name": "women holding hands" + }, + { + "code": [ + "1F46B" + ], + "emoji": "👫", + "name": "woman and man holding hands" + }, + { + "code": [ + "1F46C" + ], + "emoji": "👬", + "name": "men holding hands" + }, + { + "code": [ + "1F48F" + ], + "emoji": "💏", + "name": "kiss" + }, + { + "code": [ + "1F469", + "200D", + "2764", + "FE0F", + "200D", + "1F48B", + "200D", + "1F468" + ], + "emoji": "👩‍❤️‍💋‍👨", + "name": "kiss: woman, man" + }, + { + "code": [ + "1F468", + "200D", + "2764", + "FE0F", + "200D", + "1F48B", + "200D", + "1F468" + ], + "emoji": "👨‍❤️‍💋‍👨", + "name": "kiss: man, man" + }, + { + "code": [ + "1F469", + "200D", + "2764", + "FE0F", + "200D", + "1F48B", + "200D", + "1F469" + ], + "emoji": "👩‍❤️‍💋‍👩", + "name": "kiss: woman, woman" + }, + { + "code": [ + "1F491" + ], + "emoji": "💑", + "name": "couple with heart" + }, + { + "code": [ + "1F469", + "200D", + "2764", + "FE0F", + "200D", + "1F468" + ], + "emoji": "👩‍❤️‍👨", + "name": "couple with heart: woman, man" + }, + { + "code": [ + "1F468", + "200D", + "2764", + "FE0F", + "200D", + "1F468" + ], + "emoji": "👨‍❤️‍👨", + "name": "couple with heart: man, man" + }, + { + "code": [ + "1F469", + "200D", + "2764", + "FE0F", + "200D", + "1F469" + ], + "emoji": "👩‍❤️‍👩", + "name": "couple with heart: woman, woman" + }, + { + "code": [ + "1F468", + "200D", + "1F469", + "200D", + "1F466" + ], + "emoji": "👨‍👩‍👦", + "name": "family: man, woman, boy" + }, + { + "code": [ + "1F468", + "200D", + "1F469", + "200D", + "1F467" + ], + "emoji": "👨‍👩‍👧", + "name": "family: man, woman, girl" + }, + { + "code": [ + "1F468", + "200D", + "1F469", + "200D", + "1F467", + "200D", + "1F466" + ], + "emoji": "👨‍👩‍👧‍👦", + "name": "family: man, woman, girl, boy" + }, + { + "code": [ + "1F468", + "200D", + "1F469", + "200D", + "1F466", + "200D", + "1F466" + ], + "emoji": "👨‍👩‍👦‍👦", + "name": "family: man, woman, boy, boy" + }, + { + "code": [ + "1F468", + "200D", + "1F469", + "200D", + "1F467", + "200D", + "1F467" + ], + "emoji": "👨‍👩‍👧‍👧", + "name": "family: man, woman, girl, girl" + }, + { + "code": [ + "1F468", + "200D", + "1F468", + "200D", + "1F466" + ], + "emoji": "👨‍👨‍👦", + "name": "family: man, man, boy" + }, + { + "code": [ + "1F468", + "200D", + "1F468", + "200D", + "1F467" + ], + "emoji": "👨‍👨‍👧", + "name": "family: man, man, girl" + }, + { + "code": [ + "1F468", + "200D", + "1F468", + "200D", + "1F467", + "200D", + "1F466" + ], + "emoji": "👨‍👨‍👧‍👦", + "name": "family: man, man, girl, boy" + }, + { + "code": [ + "1F468", + "200D", + "1F468", + "200D", + "1F466", + "200D", + "1F466" + ], + "emoji": "👨‍👨‍👦‍👦", + "name": "family: man, man, boy, boy" + }, + { + "code": [ + "1F468", + "200D", + "1F468", + "200D", + "1F467", + "200D", + "1F467" + ], + "emoji": "👨‍👨‍👧‍👧", + "name": "family: man, man, girl, girl" + }, + { + "code": [ + "1F469", + "200D", + "1F469", + "200D", + "1F466" + ], + "emoji": "👩‍👩‍👦", + "name": "family: woman, woman, boy" + }, + { + "code": [ + "1F469", + "200D", + "1F469", + "200D", + "1F467" + ], + "emoji": "👩‍👩‍👧", + "name": "family: woman, woman, girl" + }, + { + "code": [ + "1F469", + "200D", + "1F469", + "200D", + "1F467", + "200D", + "1F466" + ], + "emoji": "👩‍👩‍👧‍👦", + "name": "family: woman, woman, girl, boy" + }, + { + "code": [ + "1F469", + "200D", + "1F469", + "200D", + "1F466", + "200D", + "1F466" + ], + "emoji": "👩‍👩‍👦‍👦", + "name": "family: woman, woman, boy, boy" + }, + { + "code": [ + "1F469", + "200D", + "1F469", + "200D", + "1F467", + "200D", + "1F467" + ], + "emoji": "👩‍👩‍👧‍👧", + "name": "family: woman, woman, girl, girl" + }, + { + "code": [ + "1F468", + "200D", + "1F466" + ], + "emoji": "👨‍👦", + "name": "family: man, boy" + }, + { + "code": [ + "1F468", + "200D", + "1F466", + "200D", + "1F466" + ], + "emoji": "👨‍👦‍👦", + "name": "family: man, boy, boy" + }, + { + "code": [ + "1F468", + "200D", + "1F467" + ], + "emoji": "👨‍👧", + "name": "family: man, girl" + }, + { + "code": [ + "1F468", + "200D", + "1F467", + "200D", + "1F466" + ], + "emoji": "👨‍👧‍👦", + "name": "family: man, girl, boy" + }, + { + "code": [ + "1F468", + "200D", + "1F467", + "200D", + "1F467" + ], + "emoji": "👨‍👧‍👧", + "name": "family: man, girl, girl" + }, + { + "code": [ + "1F469", + "200D", + "1F466" + ], + "emoji": "👩‍👦", + "name": "family: woman, boy" + }, + { + "code": [ + "1F469", + "200D", + "1F466", + "200D", + "1F466" + ], + "emoji": "👩‍👦‍👦", + "name": "family: woman, boy, boy" + }, + { + "code": [ + "1F469", + "200D", + "1F467" + ], + "emoji": "👩‍👧", + "name": "family: woman, girl" + }, + { + "code": [ + "1F469", + "200D", + "1F467", + "200D", + "1F466" + ], + "emoji": "👩‍👧‍👦", + "name": "family: woman, girl, boy" + }, + { + "code": [ + "1F469", + "200D", + "1F467", + "200D", + "1F467" + ], + "emoji": "👩‍👧‍👧", + "name": "family: woman, girl, girl" + } + ], + "person-symbol": [ + { + "code": [ + "1F5E3" + ], + "emoji": "🗣", + "name": "speaking head" + }, + { + "code": [ + "1F464" + ], + "emoji": "👤", + "name": "bust in silhouette" + }, + { + "code": [ + "1F465" + ], + "emoji": "👥", + "name": "busts in silhouette" + }, + { + "code": [ + "1FAC2" + ], + "emoji": "🫂", + "name": "people hugging" + }, + { + "code": [ + "1F46A" + ], + "emoji": "👪", + "name": "family" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9D1", + "200D", + "1F9D2" + ], + "emoji": "🧑‍🧑‍🧒", + "name": "family: adult, adult, child" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9D1", + "200D", + "1F9D2", + "200D", + "1F9D2" + ], + "emoji": "🧑‍🧑‍🧒‍🧒", + "name": "family: adult, adult, child, child" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9D2" + ], + "emoji": "🧑‍🧒", + "name": "family: adult, child" + }, + { + "code": [ + "1F9D1", + "200D", + "1F9D2", + "200D", + "1F9D2" + ], + "emoji": "🧑‍🧒‍🧒", + "name": "family: adult, child, child" + }, + { + "code": [ + "1F463" + ], + "emoji": "👣", + "name": "footprints" + }, + { + "code": [ + "1FAC6" + ], + "emoji": "🫆", + "name": "fingerprint" + } + ] + }, + "Component": { + "hair-style": [ + { + "code": [ + "1F9B0" + ], + "emoji": "🦰", + "name": "red hair" + }, + { + "code": [ + "1F9B1" + ], + "emoji": "🦱", + "name": "curly hair" + }, + { + "code": [ + "1F9B3" + ], + "emoji": "🦳", + "name": "white hair" + }, + { + "code": [ + "1F9B2" + ], + "emoji": "🦲", + "name": "bald" + } + ] + }, + "Animals & Nature": { + "animal-mammal": [ + { + "code": [ + "1F435" + ], + "emoji": "🐵", + "name": "monkey face" + }, + { + "code": [ + "1F412" + ], + "emoji": "🐒", + "name": "monkey" + }, + { + "code": [ + "1F98D" + ], + "emoji": "🦍", + "name": "gorilla" + }, + { + "code": [ + "1F9A7" + ], + "emoji": "🦧", + "name": "orangutan" + }, + { + "code": [ + "1F436" + ], + "emoji": "🐶", + "name": "dog face" + }, + { + "code": [ + "1F415" + ], + "emoji": "🐕", + "name": "dog" + }, + { + "code": [ + "1F9AE" + ], + "emoji": "🦮", + "name": "guide dog" + }, + { + "code": [ + "1F415", + "200D", + "1F9BA" + ], + "emoji": "🐕‍🦺", + "name": "service dog" + }, + { + "code": [ + "1F429" + ], + "emoji": "🐩", + "name": "poodle" + }, + { + "code": [ + "1F43A" + ], + "emoji": "🐺", + "name": "wolf" + }, + { + "code": [ + "1F98A" + ], + "emoji": "🦊", + "name": "fox" + }, + { + "code": [ + "1F99D" + ], + "emoji": "🦝", + "name": "raccoon" + }, + { + "code": [ + "1F431" + ], + "emoji": "🐱", + "name": "cat face" + }, + { + "code": [ + "1F408" + ], + "emoji": "🐈", + "name": "cat" + }, + { + "code": [ + "1F408", + "200D", + "2B1B" + ], + "emoji": "🐈‍⬛", + "name": "black cat" + }, + { + "code": [ + "1F981" + ], + "emoji": "🦁", + "name": "lion" + }, + { + "code": [ + "1F42F" + ], + "emoji": "🐯", + "name": "tiger face" + }, + { + "code": [ + "1F405" + ], + "emoji": "🐅", + "name": "tiger" + }, + { + "code": [ + "1F406" + ], + "emoji": "🐆", + "name": "leopard" + }, + { + "code": [ + "1F434" + ], + "emoji": "🐴", + "name": "horse face" + }, + { + "code": [ + "1FACE" + ], + "emoji": "🫎", + "name": "moose" + }, + { + "code": [ + "1FACF" + ], + "emoji": "🫏", + "name": "donkey" + }, + { + "code": [ + "1F40E" + ], + "emoji": "🐎", + "name": "horse" + }, + { + "code": [ + "1F984" + ], + "emoji": "🦄", + "name": "unicorn" + }, + { + "code": [ + "1F993" + ], + "emoji": "🦓", + "name": "zebra" + }, + { + "code": [ + "1F98C" + ], + "emoji": "🦌", + "name": "deer" + }, + { + "code": [ + "1F9AC" + ], + "emoji": "🦬", + "name": "bison" + }, + { + "code": [ + "1F42E" + ], + "emoji": "🐮", + "name": "cow face" + }, + { + "code": [ + "1F402" + ], + "emoji": "🐂", + "name": "ox" + }, + { + "code": [ + "1F403" + ], + "emoji": "🐃", + "name": "water buffalo" + }, + { + "code": [ + "1F404" + ], + "emoji": "🐄", + "name": "cow" + }, + { + "code": [ + "1F437" + ], + "emoji": "🐷", + "name": "pig face" + }, + { + "code": [ + "1F416" + ], + "emoji": "🐖", + "name": "pig" + }, + { + "code": [ + "1F417" + ], + "emoji": "🐗", + "name": "boar" + }, + { + "code": [ + "1F43D" + ], + "emoji": "🐽", + "name": "pig nose" + }, + { + "code": [ + "1F40F" + ], + "emoji": "🐏", + "name": "ram" + }, + { + "code": [ + "1F411" + ], + "emoji": "🐑", + "name": "ewe" + }, + { + "code": [ + "1F410" + ], + "emoji": "🐐", + "name": "goat" + }, + { + "code": [ + "1F42A" + ], + "emoji": "🐪", + "name": "camel" + }, + { + "code": [ + "1F42B" + ], + "emoji": "🐫", + "name": "two-hump camel" + }, + { + "code": [ + "1F999" + ], + "emoji": "🦙", + "name": "llama" + }, + { + "code": [ + "1F992" + ], + "emoji": "🦒", + "name": "giraffe" + }, + { + "code": [ + "1F418" + ], + "emoji": "🐘", + "name": "elephant" + }, + { + "code": [ + "1F9A3" + ], + "emoji": "🦣", + "name": "mammoth" + }, + { + "code": [ + "1F98F" + ], + "emoji": "🦏", + "name": "rhinoceros" + }, + { + "code": [ + "1F99B" + ], + "emoji": "🦛", + "name": "hippopotamus" + }, + { + "code": [ + "1F42D" + ], + "emoji": "🐭", + "name": "mouse face" + }, + { + "code": [ + "1F401" + ], + "emoji": "🐁", + "name": "mouse" + }, + { + "code": [ + "1F400" + ], + "emoji": "🐀", + "name": "rat" + }, + { + "code": [ + "1F439" + ], + "emoji": "🐹", + "name": "hamster" + }, + { + "code": [ + "1F430" + ], + "emoji": "🐰", + "name": "rabbit face" + }, + { + "code": [ + "1F407" + ], + "emoji": "🐇", + "name": "rabbit" + }, + { + "code": [ + "1F43F" + ], + "emoji": "🐿", + "name": "chipmunk" + }, + { + "code": [ + "1F9AB" + ], + "emoji": "🦫", + "name": "beaver" + }, + { + "code": [ + "1F994" + ], + "emoji": "🦔", + "name": "hedgehog" + }, + { + "code": [ + "1F987" + ], + "emoji": "🦇", + "name": "bat" + }, + { + "code": [ + "1F43B" + ], + "emoji": "🐻", + "name": "bear" + }, + { + "code": [ + "1F43B", + "200D", + "2744", + "FE0F" + ], + "emoji": "🐻‍❄️", + "name": "polar bear" + }, + { + "code": [ + "1F428" + ], + "emoji": "🐨", + "name": "koala" + }, + { + "code": [ + "1F43C" + ], + "emoji": "🐼", + "name": "panda" + }, + { + "code": [ + "1F9A5" + ], + "emoji": "🦥", + "name": "sloth" + }, + { + "code": [ + "1F9A6" + ], + "emoji": "🦦", + "name": "otter" + }, + { + "code": [ + "1F9A8" + ], + "emoji": "🦨", + "name": "skunk" + }, + { + "code": [ + "1F998" + ], + "emoji": "🦘", + "name": "kangaroo" + }, + { + "code": [ + "1F9A1" + ], + "emoji": "🦡", + "name": "badger" + }, + { + "code": [ + "1F43E" + ], + "emoji": "🐾", + "name": "paw prints" + } + ], + "animal-bird": [ + { + "code": [ + "1F983" + ], + "emoji": "🦃", + "name": "turkey" + }, + { + "code": [ + "1F414" + ], + "emoji": "🐔", + "name": "chicken" + }, + { + "code": [ + "1F413" + ], + "emoji": "🐓", + "name": "rooster" + }, + { + "code": [ + "1F423" + ], + "emoji": "🐣", + "name": "hatching chick" + }, + { + "code": [ + "1F424" + ], + "emoji": "🐤", + "name": "baby chick" + }, + { + "code": [ + "1F425" + ], + "emoji": "🐥", + "name": "front-facing baby chick" + }, + { + "code": [ + "1F426" + ], + "emoji": "🐦", + "name": "bird" + }, + { + "code": [ + "1F427" + ], + "emoji": "🐧", + "name": "penguin" + }, + { + "code": [ + "1F54A" + ], + "emoji": "🕊", + "name": "dove" + }, + { + "code": [ + "1F985" + ], + "emoji": "🦅", + "name": "eagle" + }, + { + "code": [ + "1F986" + ], + "emoji": "🦆", + "name": "duck" + }, + { + "code": [ + "1F9A2" + ], + "emoji": "🦢", + "name": "swan" + }, + { + "code": [ + "1F989" + ], + "emoji": "🦉", + "name": "owl" + }, + { + "code": [ + "1F9A4" + ], + "emoji": "🦤", + "name": "dodo" + }, + { + "code": [ + "1FAB6" + ], + "emoji": "🪶", + "name": "feather" + }, + { + "code": [ + "1F9A9" + ], + "emoji": "🦩", + "name": "flamingo" + }, + { + "code": [ + "1F99A" + ], + "emoji": "🦚", + "name": "peacock" + }, + { + "code": [ + "1F99C" + ], + "emoji": "🦜", + "name": "parrot" + }, + { + "code": [ + "1FABD" + ], + "emoji": "🪽", + "name": "wing" + }, + { + "code": [ + "1F426", + "200D", + "2B1B" + ], + "emoji": "🐦‍⬛", + "name": "black bird" + }, + { + "code": [ + "1FABF" + ], + "emoji": "🪿", + "name": "goose" + }, + { + "code": [ + "1F426", + "200D", + "1F525" + ], + "emoji": "🐦‍🔥", + "name": "phoenix" + } + ], + "animal-amphibian": [ + { + "code": [ + "1F438" + ], + "emoji": "🐸", + "name": "frog" + } + ], + "animal-reptile": [ + { + "code": [ + "1F40A" + ], + "emoji": "🐊", + "name": "crocodile" + }, + { + "code": [ + "1F422" + ], + "emoji": "🐢", + "name": "turtle" + }, + { + "code": [ + "1F98E" + ], + "emoji": "🦎", + "name": "lizard" + }, + { + "code": [ + "1F40D" + ], + "emoji": "🐍", + "name": "snake" + }, + { + "code": [ + "1F432" + ], + "emoji": "🐲", + "name": "dragon face" + }, + { + "code": [ + "1F409" + ], + "emoji": "🐉", + "name": "dragon" + }, + { + "code": [ + "1F995" + ], + "emoji": "🦕", + "name": "sauropod" + }, + { + "code": [ + "1F996" + ], + "emoji": "🦖", + "name": "T-Rex" + } + ], + "animal-marine": [ + { + "code": [ + "1F433" + ], + "emoji": "🐳", + "name": "spouting whale" + }, + { + "code": [ + "1F40B" + ], + "emoji": "🐋", + "name": "whale" + }, + { + "code": [ + "1F42C" + ], + "emoji": "🐬", + "name": "dolphin" + }, + { + "code": [ + "1F9AD" + ], + "emoji": "🦭", + "name": "seal" + }, + { + "code": [ + "1F41F" + ], + "emoji": "🐟", + "name": "fish" + }, + { + "code": [ + "1F420" + ], + "emoji": "🐠", + "name": "tropical fish" + }, + { + "code": [ + "1F421" + ], + "emoji": "🐡", + "name": "blowfish" + }, + { + "code": [ + "1F988" + ], + "emoji": "🦈", + "name": "shark" + }, + { + "code": [ + "1F419" + ], + "emoji": "🐙", + "name": "octopus" + }, + { + "code": [ + "1F41A" + ], + "emoji": "🐚", + "name": "spiral shell" + }, + { + "code": [ + "1FAB8" + ], + "emoji": "🪸", + "name": "coral" + }, + { + "code": [ + "1FABC" + ], + "emoji": "🪼", + "name": "jellyfish" + }, + { + "code": [ + "1F980" + ], + "emoji": "🦀", + "name": "crab" + }, + { + "code": [ + "1F99E" + ], + "emoji": "🦞", + "name": "lobster" + }, + { + "code": [ + "1F990" + ], + "emoji": "🦐", + "name": "shrimp" + }, + { + "code": [ + "1F991" + ], + "emoji": "🦑", + "name": "squid" + }, + { + "code": [ + "1F9AA" + ], + "emoji": "🦪", + "name": "oyster" + } + ], + "animal-bug": [ + { + "code": [ + "1F40C" + ], + "emoji": "🐌", + "name": "snail" + }, + { + "code": [ + "1F98B" + ], + "emoji": "🦋", + "name": "butterfly" + }, + { + "code": [ + "1F41B" + ], + "emoji": "🐛", + "name": "bug" + }, + { + "code": [ + "1F41C" + ], + "emoji": "🐜", + "name": "ant" + }, + { + "code": [ + "1F41D" + ], + "emoji": "🐝", + "name": "honeybee" + }, + { + "code": [ + "1FAB2" + ], + "emoji": "🪲", + "name": "beetle" + }, + { + "code": [ + "1F41E" + ], + "emoji": "🐞", + "name": "lady beetle" + }, + { + "code": [ + "1F997" + ], + "emoji": "🦗", + "name": "cricket" + }, + { + "code": [ + "1FAB3" + ], + "emoji": "🪳", + "name": "cockroach" + }, + { + "code": [ + "1F577" + ], + "emoji": "🕷", + "name": "spider" + }, + { + "code": [ + "1F578" + ], + "emoji": "🕸", + "name": "spider web" + }, + { + "code": [ + "1F982" + ], + "emoji": "🦂", + "name": "scorpion" + }, + { + "code": [ + "1F99F" + ], + "emoji": "🦟", + "name": "mosquito" + }, + { + "code": [ + "1FAB0" + ], + "emoji": "🪰", + "name": "fly" + }, + { + "code": [ + "1FAB1" + ], + "emoji": "🪱", + "name": "worm" + }, + { + "code": [ + "1F9A0" + ], + "emoji": "🦠", + "name": "microbe" + } + ], + "plant-flower": [ + { + "code": [ + "1F490" + ], + "emoji": "💐", + "name": "bouquet" + }, + { + "code": [ + "1F338" + ], + "emoji": "🌸", + "name": "cherry blossom" + }, + { + "code": [ + "1F4AE" + ], + "emoji": "💮", + "name": "white flower" + }, + { + "code": [ + "1FAB7" + ], + "emoji": "🪷", + "name": "lotus" + }, + { + "code": [ + "1F3F5" + ], + "emoji": "🏵", + "name": "rosette" + }, + { + "code": [ + "1F339" + ], + "emoji": "🌹", + "name": "rose" + }, + { + "code": [ + "1F940" + ], + "emoji": "🥀", + "name": "wilted flower" + }, + { + "code": [ + "1F33A" + ], + "emoji": "🌺", + "name": "hibiscus" + }, + { + "code": [ + "1F33B" + ], + "emoji": "🌻", + "name": "sunflower" + }, + { + "code": [ + "1F33C" + ], + "emoji": "🌼", + "name": "blossom" + }, + { + "code": [ + "1F337" + ], + "emoji": "🌷", + "name": "tulip" + }, + { + "code": [ + "1FABB" + ], + "emoji": "🪻", + "name": "hyacinth" + } + ], + "plant-other": [ + { + "code": [ + "1F331" + ], + "emoji": "🌱", + "name": "seedling" + }, + { + "code": [ + "1FAB4" + ], + "emoji": "🪴", + "name": "potted plant" + }, + { + "code": [ + "1F332" + ], + "emoji": "🌲", + "name": "evergreen tree" + }, + { + "code": [ + "1F333" + ], + "emoji": "🌳", + "name": "deciduous tree" + }, + { + "code": [ + "1F334" + ], + "emoji": "🌴", + "name": "palm tree" + }, + { + "code": [ + "1F335" + ], + "emoji": "🌵", + "name": "cactus" + }, + { + "code": [ + "1F33E" + ], + "emoji": "🌾", + "name": "sheaf of rice" + }, + { + "code": [ + "1F33F" + ], + "emoji": "🌿", + "name": "herb" + }, + { + "code": [ + "2618" + ], + "emoji": "☘", + "name": "shamrock" + }, + { + "code": [ + "1F340" + ], + "emoji": "🍀", + "name": "four leaf clover" + }, + { + "code": [ + "1F341" + ], + "emoji": "🍁", + "name": "maple leaf" + }, + { + "code": [ + "1F342" + ], + "emoji": "🍂", + "name": "fallen leaf" + }, + { + "code": [ + "1F343" + ], + "emoji": "🍃", + "name": "leaf fluttering in wind" + }, + { + "code": [ + "1FAB9" + ], + "emoji": "🪹", + "name": "empty nest" + }, + { + "code": [ + "1FABA" + ], + "emoji": "🪺", + "name": "nest with eggs" + }, + { + "code": [ + "1F344" + ], + "emoji": "🍄", + "name": "mushroom" + }, + { + "code": [ + "1FABE" + ], + "emoji": "🪾", + "name": "leafless tree" + } + ] + }, + "Food & Drink": { + "food-fruit": [ + { + "code": [ + "1F347" + ], + "emoji": "🍇", + "name": "grapes" + }, + { + "code": [ + "1F348" + ], + "emoji": "🍈", + "name": "melon" + }, + { + "code": [ + "1F349" + ], + "emoji": "🍉", + "name": "watermelon" + }, + { + "code": [ + "1F34A" + ], + "emoji": "🍊", + "name": "tangerine" + }, + { + "code": [ + "1F34B" + ], + "emoji": "🍋", + "name": "lemon" + }, + { + "code": [ + "1F34B", + "200D", + "1F7E9" + ], + "emoji": "🍋‍🟩", + "name": "lime" + }, + { + "code": [ + "1F34C" + ], + "emoji": "🍌", + "name": "banana" + }, + { + "code": [ + "1F34D" + ], + "emoji": "🍍", + "name": "pineapple" + }, + { + "code": [ + "1F96D" + ], + "emoji": "🥭", + "name": "mango" + }, + { + "code": [ + "1F34E" + ], + "emoji": "🍎", + "name": "red apple" + }, + { + "code": [ + "1F34F" + ], + "emoji": "🍏", + "name": "green apple" + }, + { + "code": [ + "1F350" + ], + "emoji": "🍐", + "name": "pear" + }, + { + "code": [ + "1F351" + ], + "emoji": "🍑", + "name": "peach" + }, + { + "code": [ + "1F352" + ], + "emoji": "🍒", + "name": "cherries" + }, + { + "code": [ + "1F353" + ], + "emoji": "🍓", + "name": "strawberry" + }, + { + "code": [ + "1FAD0" + ], + "emoji": "🫐", + "name": "blueberries" + }, + { + "code": [ + "1F95D" + ], + "emoji": "🥝", + "name": "kiwi fruit" + }, + { + "code": [ + "1F345" + ], + "emoji": "🍅", + "name": "tomato" + }, + { + "code": [ + "1FAD2" + ], + "emoji": "🫒", + "name": "olive" + }, + { + "code": [ + "1F965" + ], + "emoji": "🥥", + "name": "coconut" + } + ], + "food-vegetable": [ + { + "code": [ + "1F951" + ], + "emoji": "🥑", + "name": "avocado" + }, + { + "code": [ + "1F346" + ], + "emoji": "🍆", + "name": "eggplant" + }, + { + "code": [ + "1F954" + ], + "emoji": "🥔", + "name": "potato" + }, + { + "code": [ + "1F955" + ], + "emoji": "🥕", + "name": "carrot" + }, + { + "code": [ + "1F33D" + ], + "emoji": "🌽", + "name": "ear of corn" + }, + { + "code": [ + "1F336" + ], + "emoji": "🌶", + "name": "hot pepper" + }, + { + "code": [ + "1FAD1" + ], + "emoji": "🫑", + "name": "bell pepper" + }, + { + "code": [ + "1F952" + ], + "emoji": "🥒", + "name": "cucumber" + }, + { + "code": [ + "1F96C" + ], + "emoji": "🥬", + "name": "leafy green" + }, + { + "code": [ + "1F966" + ], + "emoji": "🥦", + "name": "broccoli" + }, + { + "code": [ + "1F9C4" + ], + "emoji": "🧄", + "name": "garlic" + }, + { + "code": [ + "1F9C5" + ], + "emoji": "🧅", + "name": "onion" + }, + { + "code": [ + "1F95C" + ], + "emoji": "🥜", + "name": "peanuts" + }, + { + "code": [ + "1FAD8" + ], + "emoji": "🫘", + "name": "beans" + }, + { + "code": [ + "1F330" + ], + "emoji": "🌰", + "name": "chestnut" + }, + { + "code": [ + "1FADA" + ], + "emoji": "🫚", + "name": "ginger root" + }, + { + "code": [ + "1FADB" + ], + "emoji": "🫛", + "name": "pea pod" + }, + { + "code": [ + "1F344", + "200D", + "1F7EB" + ], + "emoji": "🍄‍🟫", + "name": "brown mushroom" + }, + { + "code": [ + "1FADC" + ], + "emoji": "🫜", + "name": "root vegetable" + } + ], + "food-prepared": [ + { + "code": [ + "1F35E" + ], + "emoji": "🍞", + "name": "bread" + }, + { + "code": [ + "1F950" + ], + "emoji": "🥐", + "name": "croissant" + }, + { + "code": [ + "1F956" + ], + "emoji": "🥖", + "name": "baguette bread" + }, + { + "code": [ + "1FAD3" + ], + "emoji": "🫓", + "name": "flatbread" + }, + { + "code": [ + "1F968" + ], + "emoji": "🥨", + "name": "pretzel" + }, + { + "code": [ + "1F96F" + ], + "emoji": "🥯", + "name": "bagel" + }, + { + "code": [ + "1F95E" + ], + "emoji": "🥞", + "name": "pancakes" + }, + { + "code": [ + "1F9C7" + ], + "emoji": "🧇", + "name": "waffle" + }, + { + "code": [ + "1F9C0" + ], + "emoji": "🧀", + "name": "cheese wedge" + }, + { + "code": [ + "1F356" + ], + "emoji": "🍖", + "name": "meat on bone" + }, + { + "code": [ + "1F357" + ], + "emoji": "🍗", + "name": "poultry leg" + }, + { + "code": [ + "1F969" + ], + "emoji": "🥩", + "name": "cut of meat" + }, + { + "code": [ + "1F953" + ], + "emoji": "🥓", + "name": "bacon" + }, + { + "code": [ + "1F354" + ], + "emoji": "🍔", + "name": "hamburger" + }, + { + "code": [ + "1F35F" + ], + "emoji": "🍟", + "name": "french fries" + }, + { + "code": [ + "1F355" + ], + "emoji": "🍕", + "name": "pizza" + }, + { + "code": [ + "1F32D" + ], + "emoji": "🌭", + "name": "hot dog" + }, + { + "code": [ + "1F96A" + ], + "emoji": "🥪", + "name": "sandwich" + }, + { + "code": [ + "1F32E" + ], + "emoji": "🌮", + "name": "taco" + }, + { + "code": [ + "1F32F" + ], + "emoji": "🌯", + "name": "burrito" + }, + { + "code": [ + "1FAD4" + ], + "emoji": "🫔", + "name": "tamale" + }, + { + "code": [ + "1F959" + ], + "emoji": "🥙", + "name": "stuffed flatbread" + }, + { + "code": [ + "1F9C6" + ], + "emoji": "🧆", + "name": "falafel" + }, + { + "code": [ + "1F95A" + ], + "emoji": "🥚", + "name": "egg" + }, + { + "code": [ + "1F373" + ], + "emoji": "🍳", + "name": "cooking" + }, + { + "code": [ + "1F958" + ], + "emoji": "🥘", + "name": "shallow pan of food" + }, + { + "code": [ + "1F372" + ], + "emoji": "🍲", + "name": "pot of food" + }, + { + "code": [ + "1FAD5" + ], + "emoji": "🫕", + "name": "fondue" + }, + { + "code": [ + "1F963" + ], + "emoji": "🥣", + "name": "bowl with spoon" + }, + { + "code": [ + "1F957" + ], + "emoji": "🥗", + "name": "green salad" + }, + { + "code": [ + "1F37F" + ], + "emoji": "🍿", + "name": "popcorn" + }, + { + "code": [ + "1F9C8" + ], + "emoji": "🧈", + "name": "butter" + }, + { + "code": [ + "1F9C2" + ], + "emoji": "🧂", + "name": "salt" + }, + { + "code": [ + "1F96B" + ], + "emoji": "🥫", + "name": "canned food" + } + ], + "food-asian": [ + { + "code": [ + "1F371" + ], + "emoji": "🍱", + "name": "bento box" + }, + { + "code": [ + "1F358" + ], + "emoji": "🍘", + "name": "rice cracker" + }, + { + "code": [ + "1F359" + ], + "emoji": "🍙", + "name": "rice ball" + }, + { + "code": [ + "1F35A" + ], + "emoji": "🍚", + "name": "cooked rice" + }, + { + "code": [ + "1F35B" + ], + "emoji": "🍛", + "name": "curry rice" + }, + { + "code": [ + "1F35C" + ], + "emoji": "🍜", + "name": "steaming bowl" + }, + { + "code": [ + "1F35D" + ], + "emoji": "🍝", + "name": "spaghetti" + }, + { + "code": [ + "1F360" + ], + "emoji": "🍠", + "name": "roasted sweet potato" + }, + { + "code": [ + "1F362" + ], + "emoji": "🍢", + "name": "oden" + }, + { + "code": [ + "1F363" + ], + "emoji": "🍣", + "name": "sushi" + }, + { + "code": [ + "1F364" + ], + "emoji": "🍤", + "name": "fried shrimp" + }, + { + "code": [ + "1F365" + ], + "emoji": "🍥", + "name": "fish cake with swirl" + }, + { + "code": [ + "1F96E" + ], + "emoji": "🥮", + "name": "moon cake" + }, + { + "code": [ + "1F361" + ], + "emoji": "🍡", + "name": "dango" + }, + { + "code": [ + "1F95F" + ], + "emoji": "🥟", + "name": "dumpling" + }, + { + "code": [ + "1F960" + ], + "emoji": "🥠", + "name": "fortune cookie" + }, + { + "code": [ + "1F961" + ], + "emoji": "🥡", + "name": "takeout box" + } + ], + "food-sweet": [ + { + "code": [ + "1F366" + ], + "emoji": "🍦", + "name": "soft ice cream" + }, + { + "code": [ + "1F367" + ], + "emoji": "🍧", + "name": "shaved ice" + }, + { + "code": [ + "1F368" + ], + "emoji": "🍨", + "name": "ice cream" + }, + { + "code": [ + "1F369" + ], + "emoji": "🍩", + "name": "doughnut" + }, + { + "code": [ + "1F36A" + ], + "emoji": "🍪", + "name": "cookie" + }, + { + "code": [ + "1F382" + ], + "emoji": "🎂", + "name": "birthday cake" + }, + { + "code": [ + "1F370" + ], + "emoji": "🍰", + "name": "shortcake" + }, + { + "code": [ + "1F9C1" + ], + "emoji": "🧁", + "name": "cupcake" + }, + { + "code": [ + "1F967" + ], + "emoji": "🥧", + "name": "pie" + }, + { + "code": [ + "1F36B" + ], + "emoji": "🍫", + "name": "chocolate bar" + }, + { + "code": [ + "1F36C" + ], + "emoji": "🍬", + "name": "candy" + }, + { + "code": [ + "1F36D" + ], + "emoji": "🍭", + "name": "lollipop" + }, + { + "code": [ + "1F36E" + ], + "emoji": "🍮", + "name": "custard" + }, + { + "code": [ + "1F36F" + ], + "emoji": "🍯", + "name": "honey pot" + } + ], + "drink": [ + { + "code": [ + "1F37C" + ], + "emoji": "🍼", + "name": "baby bottle" + }, + { + "code": [ + "1F95B" + ], + "emoji": "🥛", + "name": "glass of milk" + }, + { + "code": [ + "2615" + ], + "emoji": "☕", + "name": "hot beverage" + }, + { + "code": [ + "1FAD6" + ], + "emoji": "🫖", + "name": "teapot" + }, + { + "code": [ + "1F375" + ], + "emoji": "🍵", + "name": "teacup without handle" + }, + { + "code": [ + "1F376" + ], + "emoji": "🍶", + "name": "sake" + }, + { + "code": [ + "1F37E" + ], + "emoji": "🍾", + "name": "bottle with popping cork" + }, + { + "code": [ + "1F377" + ], + "emoji": "🍷", + "name": "wine glass" + }, + { + "code": [ + "1F378" + ], + "emoji": "🍸", + "name": "cocktail glass" + }, + { + "code": [ + "1F379" + ], + "emoji": "🍹", + "name": "tropical drink" + }, + { + "code": [ + "1F37A" + ], + "emoji": "🍺", + "name": "beer mug" + }, + { + "code": [ + "1F37B" + ], + "emoji": "🍻", + "name": "clinking beer mugs" + }, + { + "code": [ + "1F942" + ], + "emoji": "🥂", + "name": "clinking glasses" + }, + { + "code": [ + "1F943" + ], + "emoji": "🥃", + "name": "tumbler glass" + }, + { + "code": [ + "1FAD7" + ], + "emoji": "🫗", + "name": "pouring liquid" + }, + { + "code": [ + "1F964" + ], + "emoji": "🥤", + "name": "cup with straw" + }, + { + "code": [ + "1F9CB" + ], + "emoji": "🧋", + "name": "bubble tea" + }, + { + "code": [ + "1F9C3" + ], + "emoji": "🧃", + "name": "beverage box" + }, + { + "code": [ + "1F9C9" + ], + "emoji": "🧉", + "name": "mate" + }, + { + "code": [ + "1F9CA" + ], + "emoji": "🧊", + "name": "ice" + } + ], + "dishware": [ + { + "code": [ + "1F962" + ], + "emoji": "🥢", + "name": "chopsticks" + }, + { + "code": [ + "1F37D" + ], + "emoji": "🍽", + "name": "fork and knife with plate" + }, + { + "code": [ + "1F374" + ], + "emoji": "🍴", + "name": "fork and knife" + }, + { + "code": [ + "1F944" + ], + "emoji": "🥄", + "name": "spoon" + }, + { + "code": [ + "1F52A" + ], + "emoji": "🔪", + "name": "kitchen knife" + }, + { + "code": [ + "1FAD9" + ], + "emoji": "🫙", + "name": "jar" + }, + { + "code": [ + "1F3FA" + ], + "emoji": "🏺", + "name": "amphora" + } + ] + }, + "Travel & Places": { + "place-map": [ + { + "code": [ + "1F30D" + ], + "emoji": "🌍", + "name": "globe showing Europe-Africa" + }, + { + "code": [ + "1F30E" + ], + "emoji": "🌎", + "name": "globe showing Americas" + }, + { + "code": [ + "1F30F" + ], + "emoji": "🌏", + "name": "globe showing Asia-Australia" + }, + { + "code": [ + "1F310" + ], + "emoji": "🌐", + "name": "globe with meridians" + }, + { + "code": [ + "1F5FA" + ], + "emoji": "🗺", + "name": "world map" + }, + { + "code": [ + "1F5FE" + ], + "emoji": "🗾", + "name": "map of Japan" + }, + { + "code": [ + "1F9ED" + ], + "emoji": "🧭", + "name": "compass" + } + ], + "place-geographic": [ + { + "code": [ + "1F3D4" + ], + "emoji": "🏔", + "name": "snow-capped mountain" + }, + { + "code": [ + "26F0" + ], + "emoji": "⛰", + "name": "mountain" + }, + { + "code": [ + "1F30B" + ], + "emoji": "🌋", + "name": "volcano" + }, + { + "code": [ + "1F5FB" + ], + "emoji": "🗻", + "name": "mount fuji" + }, + { + "code": [ + "1F3D5" + ], + "emoji": "🏕", + "name": "camping" + }, + { + "code": [ + "1F3D6" + ], + "emoji": "🏖", + "name": "beach with umbrella" + }, + { + "code": [ + "1F3DC" + ], + "emoji": "🏜", + "name": "desert" + }, + { + "code": [ + "1F3DD" + ], + "emoji": "🏝", + "name": "desert island" + }, + { + "code": [ + "1F3DE" + ], + "emoji": "🏞", + "name": "national park" + } + ], + "place-building": [ + { + "code": [ + "1F3DF" + ], + "emoji": "🏟", + "name": "stadium" + }, + { + "code": [ + "1F3DB" + ], + "emoji": "🏛", + "name": "classical building" + }, + { + "code": [ + "1F3D7" + ], + "emoji": "🏗", + "name": "building construction" + }, + { + "code": [ + "1F9F1" + ], + "emoji": "🧱", + "name": "brick" + }, + { + "code": [ + "1FAA8" + ], + "emoji": "🪨", + "name": "rock" + }, + { + "code": [ + "1FAB5" + ], + "emoji": "🪵", + "name": "wood" + }, + { + "code": [ + "1F6D6" + ], + "emoji": "🛖", + "name": "hut" + }, + { + "code": [ + "1F3D8" + ], + "emoji": "🏘", + "name": "houses" + }, + { + "code": [ + "1F3DA" + ], + "emoji": "🏚", + "name": "derelict house" + }, + { + "code": [ + "1F3E0" + ], + "emoji": "🏠", + "name": "house" + }, + { + "code": [ + "1F3E1" + ], + "emoji": "🏡", + "name": "house with garden" + }, + { + "code": [ + "1F3E2" + ], + "emoji": "🏢", + "name": "office building" + }, + { + "code": [ + "1F3E3" + ], + "emoji": "🏣", + "name": "Japanese post office" + }, + { + "code": [ + "1F3E4" + ], + "emoji": "🏤", + "name": "post office" + }, + { + "code": [ + "1F3E5" + ], + "emoji": "🏥", + "name": "hospital" + }, + { + "code": [ + "1F3E6" + ], + "emoji": "🏦", + "name": "bank" + }, + { + "code": [ + "1F3E8" + ], + "emoji": "🏨", + "name": "hotel" + }, + { + "code": [ + "1F3E9" + ], + "emoji": "🏩", + "name": "love hotel" + }, + { + "code": [ + "1F3EA" + ], + "emoji": "🏪", + "name": "convenience store" + }, + { + "code": [ + "1F3EB" + ], + "emoji": "🏫", + "name": "school" + }, + { + "code": [ + "1F3EC" + ], + "emoji": "🏬", + "name": "department store" + }, + { + "code": [ + "1F3ED" + ], + "emoji": "🏭", + "name": "factory" + }, + { + "code": [ + "1F3EF" + ], + "emoji": "🏯", + "name": "Japanese castle" + }, + { + "code": [ + "1F3F0" + ], + "emoji": "🏰", + "name": "castle" + }, + { + "code": [ + "1F492" + ], + "emoji": "💒", + "name": "wedding" + }, + { + "code": [ + "1F5FC" + ], + "emoji": "🗼", + "name": "Tokyo tower" + }, + { + "code": [ + "1F5FD" + ], + "emoji": "🗽", + "name": "Statue of Liberty" + } + ], + "place-religious": [ + { + "code": [ + "26EA" + ], + "emoji": "⛪", + "name": "church" + }, + { + "code": [ + "1F54C" + ], + "emoji": "🕌", + "name": "mosque" + }, + { + "code": [ + "1F6D5" + ], + "emoji": "🛕", + "name": "hindu temple" + }, + { + "code": [ + "1F54D" + ], + "emoji": "🕍", + "name": "synagogue" + }, + { + "code": [ + "26E9" + ], + "emoji": "⛩", + "name": "shinto shrine" + }, + { + "code": [ + "1F54B" + ], + "emoji": "🕋", + "name": "kaaba" + } + ], + "place-other": [ + { + "code": [ + "26F2" + ], + "emoji": "⛲", + "name": "fountain" + }, + { + "code": [ + "26FA" + ], + "emoji": "⛺", + "name": "tent" + }, + { + "code": [ + "1F301" + ], + "emoji": "🌁", + "name": "foggy" + }, + { + "code": [ + "1F303" + ], + "emoji": "🌃", + "name": "night with stars" + }, + { + "code": [ + "1F3D9" + ], + "emoji": "🏙", + "name": "cityscape" + }, + { + "code": [ + "1F304" + ], + "emoji": "🌄", + "name": "sunrise over mountains" + }, + { + "code": [ + "1F305" + ], + "emoji": "🌅", + "name": "sunrise" + }, + { + "code": [ + "1F306" + ], + "emoji": "🌆", + "name": "cityscape at dusk" + }, + { + "code": [ + "1F307" + ], + "emoji": "🌇", + "name": "sunset" + }, + { + "code": [ + "1F309" + ], + "emoji": "🌉", + "name": "bridge at night" + }, + { + "code": [ + "2668" + ], + "emoji": "♨", + "name": "hot springs" + }, + { + "code": [ + "1F3A0" + ], + "emoji": "🎠", + "name": "carousel horse" + }, + { + "code": [ + "1F6DD" + ], + "emoji": "🛝", + "name": "playground slide" + }, + { + "code": [ + "1F3A1" + ], + "emoji": "🎡", + "name": "ferris wheel" + }, + { + "code": [ + "1F3A2" + ], + "emoji": "🎢", + "name": "roller coaster" + }, + { + "code": [ + "1F488" + ], + "emoji": "💈", + "name": "barber pole" + }, + { + "code": [ + "1F3AA" + ], + "emoji": "🎪", + "name": "circus tent" + } + ], + "transport-ground": [ + { + "code": [ + "1F682" + ], + "emoji": "🚂", + "name": "locomotive" + }, + { + "code": [ + "1F683" + ], + "emoji": "🚃", + "name": "railway car" + }, + { + "code": [ + "1F684" + ], + "emoji": "🚄", + "name": "high-speed train" + }, + { + "code": [ + "1F685" + ], + "emoji": "🚅", + "name": "bullet train" + }, + { + "code": [ + "1F686" + ], + "emoji": "🚆", + "name": "train" + }, + { + "code": [ + "1F687" + ], + "emoji": "🚇", + "name": "metro" + }, + { + "code": [ + "1F688" + ], + "emoji": "🚈", + "name": "light rail" + }, + { + "code": [ + "1F689" + ], + "emoji": "🚉", + "name": "station" + }, + { + "code": [ + "1F68A" + ], + "emoji": "🚊", + "name": "tram" + }, + { + "code": [ + "1F69D" + ], + "emoji": "🚝", + "name": "monorail" + }, + { + "code": [ + "1F69E" + ], + "emoji": "🚞", + "name": "mountain railway" + }, + { + "code": [ + "1F68B" + ], + "emoji": "🚋", + "name": "tram car" + }, + { + "code": [ + "1F68C" + ], + "emoji": "🚌", + "name": "bus" + }, + { + "code": [ + "1F68D" + ], + "emoji": "🚍", + "name": "oncoming bus" + }, + { + "code": [ + "1F68E" + ], + "emoji": "🚎", + "name": "trolleybus" + }, + { + "code": [ + "1F690" + ], + "emoji": "🚐", + "name": "minibus" + }, + { + "code": [ + "1F691" + ], + "emoji": "🚑", + "name": "ambulance" + }, + { + "code": [ + "1F692" + ], + "emoji": "🚒", + "name": "fire engine" + }, + { + "code": [ + "1F693" + ], + "emoji": "🚓", + "name": "police car" + }, + { + "code": [ + "1F694" + ], + "emoji": "🚔", + "name": "oncoming police car" + }, + { + "code": [ + "1F695" + ], + "emoji": "🚕", + "name": "taxi" + }, + { + "code": [ + "1F696" + ], + "emoji": "🚖", + "name": "oncoming taxi" + }, + { + "code": [ + "1F697" + ], + "emoji": "🚗", + "name": "automobile" + }, + { + "code": [ + "1F698" + ], + "emoji": "🚘", + "name": "oncoming automobile" + }, + { + "code": [ + "1F699" + ], + "emoji": "🚙", + "name": "sport utility vehicle" + }, + { + "code": [ + "1F6FB" + ], + "emoji": "🛻", + "name": "pickup truck" + }, + { + "code": [ + "1F69A" + ], + "emoji": "🚚", + "name": "delivery truck" + }, + { + "code": [ + "1F69B" + ], + "emoji": "🚛", + "name": "articulated lorry" + }, + { + "code": [ + "1F69C" + ], + "emoji": "🚜", + "name": "tractor" + }, + { + "code": [ + "1F3CE" + ], + "emoji": "🏎", + "name": "racing car" + }, + { + "code": [ + "1F3CD" + ], + "emoji": "🏍", + "name": "motorcycle" + }, + { + "code": [ + "1F6F5" + ], + "emoji": "🛵", + "name": "motor scooter" + }, + { + "code": [ + "1F9BD" + ], + "emoji": "🦽", + "name": "manual wheelchair" + }, + { + "code": [ + "1F9BC" + ], + "emoji": "🦼", + "name": "motorized wheelchair" + }, + { + "code": [ + "1F6FA" + ], + "emoji": "🛺", + "name": "auto rickshaw" + }, + { + "code": [ + "1F6B2" + ], + "emoji": "🚲", + "name": "bicycle" + }, + { + "code": [ + "1F6F4" + ], + "emoji": "🛴", + "name": "kick scooter" + }, + { + "code": [ + "1F6F9" + ], + "emoji": "🛹", + "name": "skateboard" + }, + { + "code": [ + "1F6FC" + ], + "emoji": "🛼", + "name": "roller skate" + }, + { + "code": [ + "1F68F" + ], + "emoji": "🚏", + "name": "bus stop" + }, + { + "code": [ + "1F6E3" + ], + "emoji": "🛣", + "name": "motorway" + }, + { + "code": [ + "1F6E4" + ], + "emoji": "🛤", + "name": "railway track" + }, + { + "code": [ + "1F6E2" + ], + "emoji": "🛢", + "name": "oil drum" + }, + { + "code": [ + "26FD" + ], + "emoji": "⛽", + "name": "fuel pump" + }, + { + "code": [ + "1F6DE" + ], + "emoji": "🛞", + "name": "wheel" + }, + { + "code": [ + "1F6A8" + ], + "emoji": "🚨", + "name": "police car light" + }, + { + "code": [ + "1F6A5" + ], + "emoji": "🚥", + "name": "horizontal traffic light" + }, + { + "code": [ + "1F6A6" + ], + "emoji": "🚦", + "name": "vertical traffic light" + }, + { + "code": [ + "1F6D1" + ], + "emoji": "🛑", + "name": "stop sign" + }, + { + "code": [ + "1F6A7" + ], + "emoji": "🚧", + "name": "construction" + } + ], + "transport-water": [ + { + "code": [ + "2693" + ], + "emoji": "⚓", + "name": "anchor" + }, + { + "code": [ + "1F6DF" + ], + "emoji": "🛟", + "name": "ring buoy" + }, + { + "code": [ + "26F5" + ], + "emoji": "⛵", + "name": "sailboat" + }, + { + "code": [ + "1F6F6" + ], + "emoji": "🛶", + "name": "canoe" + }, + { + "code": [ + "1F6A4" + ], + "emoji": "🚤", + "name": "speedboat" + }, + { + "code": [ + "1F6F3" + ], + "emoji": "🛳", + "name": "passenger ship" + }, + { + "code": [ + "26F4" + ], + "emoji": "⛴", + "name": "ferry" + }, + { + "code": [ + "1F6E5" + ], + "emoji": "🛥", + "name": "motor boat" + }, + { + "code": [ + "1F6A2" + ], + "emoji": "🚢", + "name": "ship" + } + ], + "transport-air": [ + { + "code": [ + "2708" + ], + "emoji": "✈", + "name": "airplane" + }, + { + "code": [ + "1F6E9" + ], + "emoji": "🛩", + "name": "small airplane" + }, + { + "code": [ + "1F6EB" + ], + "emoji": "🛫", + "name": "airplane departure" + }, + { + "code": [ + "1F6EC" + ], + "emoji": "🛬", + "name": "airplane arrival" + }, + { + "code": [ + "1FA82" + ], + "emoji": "🪂", + "name": "parachute" + }, + { + "code": [ + "1F4BA" + ], + "emoji": "💺", + "name": "seat" + }, + { + "code": [ + "1F681" + ], + "emoji": "🚁", + "name": "helicopter" + }, + { + "code": [ + "1F69F" + ], + "emoji": "🚟", + "name": "suspension railway" + }, + { + "code": [ + "1F6A0" + ], + "emoji": "🚠", + "name": "mountain cableway" + }, + { + "code": [ + "1F6A1" + ], + "emoji": "🚡", + "name": "aerial tramway" + }, + { + "code": [ + "1F6F0" + ], + "emoji": "🛰", + "name": "satellite" + }, + { + "code": [ + "1F680" + ], + "emoji": "🚀", + "name": "rocket" + }, + { + "code": [ + "1F6F8" + ], + "emoji": "🛸", + "name": "flying saucer" + } + ], + "hotel": [ + { + "code": [ + "1F6CE" + ], + "emoji": "🛎", + "name": "bellhop bell" + }, + { + "code": [ + "1F9F3" + ], + "emoji": "🧳", + "name": "luggage" + } + ], + "time": [ + { + "code": [ + "231B" + ], + "emoji": "⌛", + "name": "hourglass done" + }, + { + "code": [ + "23F3" + ], + "emoji": "⏳", + "name": "hourglass not done" + }, + { + "code": [ + "231A" + ], + "emoji": "⌚", + "name": "watch" + }, + { + "code": [ + "23F0" + ], + "emoji": "⏰", + "name": "alarm clock" + }, + { + "code": [ + "23F1" + ], + "emoji": "⏱", + "name": "stopwatch" + }, + { + "code": [ + "23F2" + ], + "emoji": "⏲", + "name": "timer clock" + }, + { + "code": [ + "1F570" + ], + "emoji": "🕰", + "name": "mantelpiece clock" + }, + { + "code": [ + "1F55B" + ], + "emoji": "🕛", + "name": "twelve o’clock" + }, + { + "code": [ + "1F567" + ], + "emoji": "🕧", + "name": "twelve-thirty" + }, + { + "code": [ + "1F550" + ], + "emoji": "🕐", + "name": "one o’clock" + }, + { + "code": [ + "1F55C" + ], + "emoji": "🕜", + "name": "one-thirty" + }, + { + "code": [ + "1F551" + ], + "emoji": "🕑", + "name": "two o’clock" + }, + { + "code": [ + "1F55D" + ], + "emoji": "🕝", + "name": "two-thirty" + }, + { + "code": [ + "1F552" + ], + "emoji": "🕒", + "name": "three o’clock" + }, + { + "code": [ + "1F55E" + ], + "emoji": "🕞", + "name": "three-thirty" + }, + { + "code": [ + "1F553" + ], + "emoji": "🕓", + "name": "four o’clock" + }, + { + "code": [ + "1F55F" + ], + "emoji": "🕟", + "name": "four-thirty" + }, + { + "code": [ + "1F554" + ], + "emoji": "🕔", + "name": "five o’clock" + }, + { + "code": [ + "1F560" + ], + "emoji": "🕠", + "name": "five-thirty" + }, + { + "code": [ + "1F555" + ], + "emoji": "🕕", + "name": "six o’clock" + }, + { + "code": [ + "1F561" + ], + "emoji": "🕡", + "name": "six-thirty" + }, + { + "code": [ + "1F556" + ], + "emoji": "🕖", + "name": "seven o’clock" + }, + { + "code": [ + "1F562" + ], + "emoji": "🕢", + "name": "seven-thirty" + }, + { + "code": [ + "1F557" + ], + "emoji": "🕗", + "name": "eight o’clock" + }, + { + "code": [ + "1F563" + ], + "emoji": "🕣", + "name": "eight-thirty" + }, + { + "code": [ + "1F558" + ], + "emoji": "🕘", + "name": "nine o’clock" + }, + { + "code": [ + "1F564" + ], + "emoji": "🕤", + "name": "nine-thirty" + }, + { + "code": [ + "1F559" + ], + "emoji": "🕙", + "name": "ten o’clock" + }, + { + "code": [ + "1F565" + ], + "emoji": "🕥", + "name": "ten-thirty" + }, + { + "code": [ + "1F55A" + ], + "emoji": "🕚", + "name": "eleven o’clock" + }, + { + "code": [ + "1F566" + ], + "emoji": "🕦", + "name": "eleven-thirty" + } + ], + "sky & weather": [ + { + "code": [ + "1F311" + ], + "emoji": "🌑", + "name": "new moon" + }, + { + "code": [ + "1F312" + ], + "emoji": "🌒", + "name": "waxing crescent moon" + }, + { + "code": [ + "1F313" + ], + "emoji": "🌓", + "name": "first quarter moon" + }, + { + "code": [ + "1F314" + ], + "emoji": "🌔", + "name": "waxing gibbous moon" + }, + { + "code": [ + "1F315" + ], + "emoji": "🌕", + "name": "full moon" + }, + { + "code": [ + "1F316" + ], + "emoji": "🌖", + "name": "waning gibbous moon" + }, + { + "code": [ + "1F317" + ], + "emoji": "🌗", + "name": "last quarter moon" + }, + { + "code": [ + "1F318" + ], + "emoji": "🌘", + "name": "waning crescent moon" + }, + { + "code": [ + "1F319" + ], + "emoji": "🌙", + "name": "crescent moon" + }, + { + "code": [ + "1F31A" + ], + "emoji": "🌚", + "name": "new moon face" + }, + { + "code": [ + "1F31B" + ], + "emoji": "🌛", + "name": "first quarter moon face" + }, + { + "code": [ + "1F31C" + ], + "emoji": "🌜", + "name": "last quarter moon face" + }, + { + "code": [ + "1F321" + ], + "emoji": "🌡", + "name": "thermometer" + }, + { + "code": [ + "2600" + ], + "emoji": "☀", + "name": "sun" + }, + { + "code": [ + "1F31D" + ], + "emoji": "🌝", + "name": "full moon face" + }, + { + "code": [ + "1F31E" + ], + "emoji": "🌞", + "name": "sun with face" + }, + { + "code": [ + "1FA90" + ], + "emoji": "🪐", + "name": "ringed planet" + }, + { + "code": [ + "2B50" + ], + "emoji": "⭐", + "name": "star" + }, + { + "code": [ + "1F31F" + ], + "emoji": "🌟", + "name": "glowing star" + }, + { + "code": [ + "1F320" + ], + "emoji": "🌠", + "name": "shooting star" + }, + { + "code": [ + "1F30C" + ], + "emoji": "🌌", + "name": "milky way" + }, + { + "code": [ + "2601" + ], + "emoji": "☁", + "name": "cloud" + }, + { + "code": [ + "26C5" + ], + "emoji": "⛅", + "name": "sun behind cloud" + }, + { + "code": [ + "26C8" + ], + "emoji": "⛈", + "name": "cloud with lightning and rain" + }, + { + "code": [ + "1F324" + ], + "emoji": "🌤", + "name": "sun behind small cloud" + }, + { + "code": [ + "1F325" + ], + "emoji": "🌥", + "name": "sun behind large cloud" + }, + { + "code": [ + "1F326" + ], + "emoji": "🌦", + "name": "sun behind rain cloud" + }, + { + "code": [ + "1F327" + ], + "emoji": "🌧", + "name": "cloud with rain" + }, + { + "code": [ + "1F328" + ], + "emoji": "🌨", + "name": "cloud with snow" + }, + { + "code": [ + "1F329" + ], + "emoji": "🌩", + "name": "cloud with lightning" + }, + { + "code": [ + "1F32A" + ], + "emoji": "🌪", + "name": "tornado" + }, + { + "code": [ + "1F32B" + ], + "emoji": "🌫", + "name": "fog" + }, + { + "code": [ + "1F32C" + ], + "emoji": "🌬", + "name": "wind face" + }, + { + "code": [ + "1F300" + ], + "emoji": "🌀", + "name": "cyclone" + }, + { + "code": [ + "1F308" + ], + "emoji": "🌈", + "name": "rainbow" + }, + { + "code": [ + "1F302" + ], + "emoji": "🌂", + "name": "closed umbrella" + }, + { + "code": [ + "2602" + ], + "emoji": "☂", + "name": "umbrella" + }, + { + "code": [ + "2614" + ], + "emoji": "☔", + "name": "umbrella with rain drops" + }, + { + "code": [ + "26F1" + ], + "emoji": "⛱", + "name": "umbrella on ground" + }, + { + "code": [ + "26A1" + ], + "emoji": "⚡", + "name": "high voltage" + }, + { + "code": [ + "2744" + ], + "emoji": "❄", + "name": "snowflake" + }, + { + "code": [ + "2603" + ], + "emoji": "☃", + "name": "snowman" + }, + { + "code": [ + "26C4" + ], + "emoji": "⛄", + "name": "snowman without snow" + }, + { + "code": [ + "2604" + ], + "emoji": "☄", + "name": "comet" + }, + { + "code": [ + "1F525" + ], + "emoji": "🔥", + "name": "fire" + }, + { + "code": [ + "1F4A7" + ], + "emoji": "💧", + "name": "droplet" + }, + { + "code": [ + "1F30A" + ], + "emoji": "🌊", + "name": "water wave" + } + ] + }, + "Activities": { + "event": [ + { + "code": [ + "1F383" + ], + "emoji": "🎃", + "name": "jack-o-lantern" + }, + { + "code": [ + "1F384" + ], + "emoji": "🎄", + "name": "Christmas tree" + }, + { + "code": [ + "1F386" + ], + "emoji": "🎆", + "name": "fireworks" + }, + { + "code": [ + "1F387" + ], + "emoji": "🎇", + "name": "sparkler" + }, + { + "code": [ + "1F9E8" + ], + "emoji": "🧨", + "name": "firecracker" + }, + { + "code": [ + "2728" + ], + "emoji": "✨", + "name": "sparkles" + }, + { + "code": [ + "1F388" + ], + "emoji": "🎈", + "name": "balloon" + }, + { + "code": [ + "1F389" + ], + "emoji": "🎉", + "name": "party popper" + }, + { + "code": [ + "1F38A" + ], + "emoji": "🎊", + "name": "confetti ball" + }, + { + "code": [ + "1F38B" + ], + "emoji": "🎋", + "name": "tanabata tree" + }, + { + "code": [ + "1F38D" + ], + "emoji": "🎍", + "name": "pine decoration" + }, + { + "code": [ + "1F38E" + ], + "emoji": "🎎", + "name": "Japanese dolls" + }, + { + "code": [ + "1F38F" + ], + "emoji": "🎏", + "name": "carp streamer" + }, + { + "code": [ + "1F390" + ], + "emoji": "🎐", + "name": "wind chime" + }, + { + "code": [ + "1F391" + ], + "emoji": "🎑", + "name": "moon viewing ceremony" + }, + { + "code": [ + "1F9E7" + ], + "emoji": "🧧", + "name": "red envelope" + }, + { + "code": [ + "1F380" + ], + "emoji": "🎀", + "name": "ribbon" + }, + { + "code": [ + "1F381" + ], + "emoji": "🎁", + "name": "wrapped gift" + }, + { + "code": [ + "1F397" + ], + "emoji": "🎗", + "name": "reminder ribbon" + }, + { + "code": [ + "1F39F" + ], + "emoji": "🎟", + "name": "admission tickets" + }, + { + "code": [ + "1F3AB" + ], + "emoji": "🎫", + "name": "ticket" + } + ], + "award-medal": [ + { + "code": [ + "1F396" + ], + "emoji": "🎖", + "name": "military medal" + }, + { + "code": [ + "1F3C6" + ], + "emoji": "🏆", + "name": "trophy" + }, + { + "code": [ + "1F3C5" + ], + "emoji": "🏅", + "name": "sports medal" + }, + { + "code": [ + "1F947" + ], + "emoji": "🥇", + "name": "1st place medal" + }, + { + "code": [ + "1F948" + ], + "emoji": "🥈", + "name": "2nd place medal" + }, + { + "code": [ + "1F949" + ], + "emoji": "🥉", + "name": "3rd place medal" + } + ], + "sport": [ + { + "code": [ + "26BD" + ], + "emoji": "⚽", + "name": "soccer ball" + }, + { + "code": [ + "26BE" + ], + "emoji": "⚾", + "name": "baseball" + }, + { + "code": [ + "1F94E" + ], + "emoji": "🥎", + "name": "softball" + }, + { + "code": [ + "1F3C0" + ], + "emoji": "🏀", + "name": "basketball" + }, + { + "code": [ + "1F3D0" + ], + "emoji": "🏐", + "name": "volleyball" + }, + { + "code": [ + "1F3C8" + ], + "emoji": "🏈", + "name": "american football" + }, + { + "code": [ + "1F3C9" + ], + "emoji": "🏉", + "name": "rugby football" + }, + { + "code": [ + "1F3BE" + ], + "emoji": "🎾", + "name": "tennis" + }, + { + "code": [ + "1F94F" + ], + "emoji": "🥏", + "name": "flying disc" + }, + { + "code": [ + "1F3B3" + ], + "emoji": "🎳", + "name": "bowling" + }, + { + "code": [ + "1F3CF" + ], + "emoji": "🏏", + "name": "cricket game" + }, + { + "code": [ + "1F3D1" + ], + "emoji": "🏑", + "name": "field hockey" + }, + { + "code": [ + "1F3D2" + ], + "emoji": "🏒", + "name": "ice hockey" + }, + { + "code": [ + "1F94D" + ], + "emoji": "🥍", + "name": "lacrosse" + }, + { + "code": [ + "1F3D3" + ], + "emoji": "🏓", + "name": "ping pong" + }, + { + "code": [ + "1F3F8" + ], + "emoji": "🏸", + "name": "badminton" + }, + { + "code": [ + "1F94A" + ], + "emoji": "🥊", + "name": "boxing glove" + }, + { + "code": [ + "1F94B" + ], + "emoji": "🥋", + "name": "martial arts uniform" + }, + { + "code": [ + "1F945" + ], + "emoji": "🥅", + "name": "goal net" + }, + { + "code": [ + "26F3" + ], + "emoji": "⛳", + "name": "flag in hole" + }, + { + "code": [ + "26F8" + ], + "emoji": "⛸", + "name": "ice skate" + }, + { + "code": [ + "1F3A3" + ], + "emoji": "🎣", + "name": "fishing pole" + }, + { + "code": [ + "1F93F" + ], + "emoji": "🤿", + "name": "diving mask" + }, + { + "code": [ + "1F3BD" + ], + "emoji": "🎽", + "name": "running shirt" + }, + { + "code": [ + "1F3BF" + ], + "emoji": "🎿", + "name": "skis" + }, + { + "code": [ + "1F6F7" + ], + "emoji": "🛷", + "name": "sled" + }, + { + "code": [ + "1F94C" + ], + "emoji": "🥌", + "name": "curling stone" + } + ], + "game": [ + { + "code": [ + "1F3AF" + ], + "emoji": "🎯", + "name": "bullseye" + }, + { + "code": [ + "1FA80" + ], + "emoji": "🪀", + "name": "yo-yo" + }, + { + "code": [ + "1FA81" + ], + "emoji": "🪁", + "name": "kite" + }, + { + "code": [ + "1F52B" + ], + "emoji": "🔫", + "name": "water pistol" + }, + { + "code": [ + "1F3B1" + ], + "emoji": "🎱", + "name": "pool 8 ball" + }, + { + "code": [ + "1F52E" + ], + "emoji": "🔮", + "name": "crystal ball" + }, + { + "code": [ + "1FA84" + ], + "emoji": "🪄", + "name": "magic wand" + }, + { + "code": [ + "1F3AE" + ], + "emoji": "🎮", + "name": "video game" + }, + { + "code": [ + "1F579" + ], + "emoji": "🕹", + "name": "joystick" + }, + { + "code": [ + "1F3B0" + ], + "emoji": "🎰", + "name": "slot machine" + }, + { + "code": [ + "1F3B2" + ], + "emoji": "🎲", + "name": "game die" + }, + { + "code": [ + "1F9E9" + ], + "emoji": "🧩", + "name": "puzzle piece" + }, + { + "code": [ + "1F9F8" + ], + "emoji": "🧸", + "name": "teddy bear" + }, + { + "code": [ + "1FA85" + ], + "emoji": "🪅", + "name": "piñata" + }, + { + "code": [ + "1FAA9" + ], + "emoji": "🪩", + "name": "mirror ball" + }, + { + "code": [ + "1FA86" + ], + "emoji": "🪆", + "name": "nesting dolls" + }, + { + "code": [ + "2660" + ], + "emoji": "♠", + "name": "spade suit" + }, + { + "code": [ + "2665" + ], + "emoji": "♥", + "name": "heart suit" + }, + { + "code": [ + "2666" + ], + "emoji": "♦", + "name": "diamond suit" + }, + { + "code": [ + "2663" + ], + "emoji": "♣", + "name": "club suit" + }, + { + "code": [ + "265F" + ], + "emoji": "♟", + "name": "chess pawn" + }, + { + "code": [ + "1F0CF" + ], + "emoji": "🃏", + "name": "joker" + }, + { + "code": [ + "1F004" + ], + "emoji": "🀄", + "name": "mahjong red dragon" + }, + { + "code": [ + "1F3B4" + ], + "emoji": "🎴", + "name": "flower playing cards" + } + ], + "arts & crafts": [ + { + "code": [ + "1F3AD" + ], + "emoji": "🎭", + "name": "performing arts" + }, + { + "code": [ + "1F5BC" + ], + "emoji": "🖼", + "name": "framed picture" + }, + { + "code": [ + "1F3A8" + ], + "emoji": "🎨", + "name": "artist palette" + }, + { + "code": [ + "1F9F5" + ], + "emoji": "🧵", + "name": "thread" + }, + { + "code": [ + "1FAA1" + ], + "emoji": "🪡", + "name": "sewing needle" + }, + { + "code": [ + "1F9F6" + ], + "emoji": "🧶", + "name": "yarn" + }, + { + "code": [ + "1FAA2" + ], + "emoji": "🪢", + "name": "knot" + } + ] + }, + "Objects": { + "clothing": [ + { + "code": [ + "1F453" + ], + "emoji": "👓", + "name": "glasses" + }, + { + "code": [ + "1F576" + ], + "emoji": "🕶", + "name": "sunglasses" + }, + { + "code": [ + "1F97D" + ], + "emoji": "🥽", + "name": "goggles" + }, + { + "code": [ + "1F97C" + ], + "emoji": "🥼", + "name": "lab coat" + }, + { + "code": [ + "1F9BA" + ], + "emoji": "🦺", + "name": "safety vest" + }, + { + "code": [ + "1F454" + ], + "emoji": "👔", + "name": "necktie" + }, + { + "code": [ + "1F455" + ], + "emoji": "👕", + "name": "t-shirt" + }, + { + "code": [ + "1F456" + ], + "emoji": "👖", + "name": "jeans" + }, + { + "code": [ + "1F9E3" + ], + "emoji": "🧣", + "name": "scarf" + }, + { + "code": [ + "1F9E4" + ], + "emoji": "🧤", + "name": "gloves" + }, + { + "code": [ + "1F9E5" + ], + "emoji": "🧥", + "name": "coat" + }, + { + "code": [ + "1F9E6" + ], + "emoji": "🧦", + "name": "socks" + }, + { + "code": [ + "1F457" + ], + "emoji": "👗", + "name": "dress" + }, + { + "code": [ + "1F458" + ], + "emoji": "👘", + "name": "kimono" + }, + { + "code": [ + "1F97B" + ], + "emoji": "🥻", + "name": "sari" + }, + { + "code": [ + "1FA71" + ], + "emoji": "🩱", + "name": "one-piece swimsuit" + }, + { + "code": [ + "1FA72" + ], + "emoji": "🩲", + "name": "briefs" + }, + { + "code": [ + "1FA73" + ], + "emoji": "🩳", + "name": "shorts" + }, + { + "code": [ + "1F459" + ], + "emoji": "👙", + "name": "bikini" + }, + { + "code": [ + "1F45A" + ], + "emoji": "👚", + "name": "woman’s clothes" + }, + { + "code": [ + "1FAAD" + ], + "emoji": "🪭", + "name": "folding hand fan" + }, + { + "code": [ + "1F45B" + ], + "emoji": "👛", + "name": "purse" + }, + { + "code": [ + "1F45C" + ], + "emoji": "👜", + "name": "handbag" + }, + { + "code": [ + "1F45D" + ], + "emoji": "👝", + "name": "clutch bag" + }, + { + "code": [ + "1F6CD" + ], + "emoji": "🛍", + "name": "shopping bags" + }, + { + "code": [ + "1F392" + ], + "emoji": "🎒", + "name": "backpack" + }, + { + "code": [ + "1FA74" + ], + "emoji": "🩴", + "name": "thong sandal" + }, + { + "code": [ + "1F45E" + ], + "emoji": "👞", + "name": "man’s shoe" + }, + { + "code": [ + "1F45F" + ], + "emoji": "👟", + "name": "running shoe" + }, + { + "code": [ + "1F97E" + ], + "emoji": "🥾", + "name": "hiking boot" + }, + { + "code": [ + "1F97F" + ], + "emoji": "🥿", + "name": "flat shoe" + }, + { + "code": [ + "1F460" + ], + "emoji": "👠", + "name": "high-heeled shoe" + }, + { + "code": [ + "1F461" + ], + "emoji": "👡", + "name": "woman’s sandal" + }, + { + "code": [ + "1FA70" + ], + "emoji": "🩰", + "name": "ballet shoes" + }, + { + "code": [ + "1F462" + ], + "emoji": "👢", + "name": "woman’s boot" + }, + { + "code": [ + "1FAAE" + ], + "emoji": "🪮", + "name": "hair pick" + }, + { + "code": [ + "1F451" + ], + "emoji": "👑", + "name": "crown" + }, + { + "code": [ + "1F452" + ], + "emoji": "👒", + "name": "woman’s hat" + }, + { + "code": [ + "1F3A9" + ], + "emoji": "🎩", + "name": "top hat" + }, + { + "code": [ + "1F393" + ], + "emoji": "🎓", + "name": "graduation cap" + }, + { + "code": [ + "1F9E2" + ], + "emoji": "🧢", + "name": "billed cap" + }, + { + "code": [ + "1FA96" + ], + "emoji": "🪖", + "name": "military helmet" + }, + { + "code": [ + "26D1" + ], + "emoji": "⛑", + "name": "rescue worker’s helmet" + }, + { + "code": [ + "1F4FF" + ], + "emoji": "📿", + "name": "prayer beads" + }, + { + "code": [ + "1F484" + ], + "emoji": "💄", + "name": "lipstick" + }, + { + "code": [ + "1F48D" + ], + "emoji": "💍", + "name": "ring" + }, + { + "code": [ + "1F48E" + ], + "emoji": "💎", + "name": "gem stone" + } + ], + "sound": [ + { + "code": [ + "1F507" + ], + "emoji": "🔇", + "name": "muted speaker" + }, + { + "code": [ + "1F508" + ], + "emoji": "🔈", + "name": "speaker low volume" + }, + { + "code": [ + "1F509" + ], + "emoji": "🔉", + "name": "speaker medium volume" + }, + { + "code": [ + "1F50A" + ], + "emoji": "🔊", + "name": "speaker high volume" + }, + { + "code": [ + "1F4E2" + ], + "emoji": "📢", + "name": "loudspeaker" + }, + { + "code": [ + "1F4E3" + ], + "emoji": "📣", + "name": "megaphone" + }, + { + "code": [ + "1F4EF" + ], + "emoji": "📯", + "name": "postal horn" + }, + { + "code": [ + "1F514" + ], + "emoji": "🔔", + "name": "bell" + }, + { + "code": [ + "1F515" + ], + "emoji": "🔕", + "name": "bell with slash" + } + ], + "music": [ + { + "code": [ + "1F3BC" + ], + "emoji": "🎼", + "name": "musical score" + }, + { + "code": [ + "1F3B5" + ], + "emoji": "🎵", + "name": "musical note" + }, + { + "code": [ + "1F3B6" + ], + "emoji": "🎶", + "name": "musical notes" + }, + { + "code": [ + "1F399" + ], + "emoji": "🎙", + "name": "studio microphone" + }, + { + "code": [ + "1F39A" + ], + "emoji": "🎚", + "name": "level slider" + }, + { + "code": [ + "1F39B" + ], + "emoji": "🎛", + "name": "control knobs" + }, + { + "code": [ + "1F3A4" + ], + "emoji": "🎤", + "name": "microphone" + }, + { + "code": [ + "1F3A7" + ], + "emoji": "🎧", + "name": "headphone" + }, + { + "code": [ + "1F4FB" + ], + "emoji": "📻", + "name": "radio" + } + ], + "musical-instrument": [ + { + "code": [ + "1F3B7" + ], + "emoji": "🎷", + "name": "saxophone" + }, + { + "code": [ + "1FA97" + ], + "emoji": "🪗", + "name": "accordion" + }, + { + "code": [ + "1F3B8" + ], + "emoji": "🎸", + "name": "guitar" + }, + { + "code": [ + "1F3B9" + ], + "emoji": "🎹", + "name": "musical keyboard" + }, + { + "code": [ + "1F3BA" + ], + "emoji": "🎺", + "name": "trumpet" + }, + { + "code": [ + "1F3BB" + ], + "emoji": "🎻", + "name": "violin" + }, + { + "code": [ + "1FA95" + ], + "emoji": "🪕", + "name": "banjo" + }, + { + "code": [ + "1F941" + ], + "emoji": "🥁", + "name": "drum" + }, + { + "code": [ + "1FA98" + ], + "emoji": "🪘", + "name": "long drum" + }, + { + "code": [ + "1FA87" + ], + "emoji": "🪇", + "name": "maracas" + }, + { + "code": [ + "1FA88" + ], + "emoji": "🪈", + "name": "flute" + }, + { + "code": [ + "1FA89" + ], + "emoji": "🪉", + "name": "harp" + } + ], + "phone": [ + { + "code": [ + "1F4F1" + ], + "emoji": "📱", + "name": "mobile phone" + }, + { + "code": [ + "1F4F2" + ], + "emoji": "📲", + "name": "mobile phone with arrow" + }, + { + "code": [ + "260E" + ], + "emoji": "☎", + "name": "telephone" + }, + { + "code": [ + "1F4DE" + ], + "emoji": "📞", + "name": "telephone receiver" + }, + { + "code": [ + "1F4DF" + ], + "emoji": "📟", + "name": "pager" + }, + { + "code": [ + "1F4E0" + ], + "emoji": "📠", + "name": "fax machine" + } + ], + "computer": [ + { + "code": [ + "1F50B" + ], + "emoji": "🔋", + "name": "battery" + }, + { + "code": [ + "1FAAB" + ], + "emoji": "🪫", + "name": "low battery" + }, + { + "code": [ + "1F50C" + ], + "emoji": "🔌", + "name": "electric plug" + }, + { + "code": [ + "1F4BB" + ], + "emoji": "💻", + "name": "laptop" + }, + { + "code": [ + "1F5A5" + ], + "emoji": "🖥", + "name": "desktop computer" + }, + { + "code": [ + "1F5A8" + ], + "emoji": "🖨", + "name": "printer" + }, + { + "code": [ + "2328" + ], + "emoji": "⌨", + "name": "keyboard" + }, + { + "code": [ + "1F5B1" + ], + "emoji": "🖱", + "name": "computer mouse" + }, + { + "code": [ + "1F5B2" + ], + "emoji": "🖲", + "name": "trackball" + }, + { + "code": [ + "1F4BD" + ], + "emoji": "💽", + "name": "computer disk" + }, + { + "code": [ + "1F4BE" + ], + "emoji": "💾", + "name": "floppy disk" + }, + { + "code": [ + "1F4BF" + ], + "emoji": "💿", + "name": "optical disk" + }, + { + "code": [ + "1F4C0" + ], + "emoji": "📀", + "name": "dvd" + }, + { + "code": [ + "1F9EE" + ], + "emoji": "🧮", + "name": "abacus" + } + ], + "light & video": [ + { + "code": [ + "1F3A5" + ], + "emoji": "🎥", + "name": "movie camera" + }, + { + "code": [ + "1F39E" + ], + "emoji": "🎞", + "name": "film frames" + }, + { + "code": [ + "1F4FD" + ], + "emoji": "📽", + "name": "film projector" + }, + { + "code": [ + "1F3AC" + ], + "emoji": "🎬", + "name": "clapper board" + }, + { + "code": [ + "1F4FA" + ], + "emoji": "📺", + "name": "television" + }, + { + "code": [ + "1F4F7" + ], + "emoji": "📷", + "name": "camera" + }, + { + "code": [ + "1F4F8" + ], + "emoji": "📸", + "name": "camera with flash" + }, + { + "code": [ + "1F4F9" + ], + "emoji": "📹", + "name": "video camera" + }, + { + "code": [ + "1F4FC" + ], + "emoji": "📼", + "name": "videocassette" + }, + { + "code": [ + "1F50D" + ], + "emoji": "🔍", + "name": "magnifying glass tilted left" + }, + { + "code": [ + "1F50E" + ], + "emoji": "🔎", + "name": "magnifying glass tilted right" + }, + { + "code": [ + "1F56F" + ], + "emoji": "🕯", + "name": "candle" + }, + { + "code": [ + "1F4A1" + ], + "emoji": "💡", + "name": "light bulb" + }, + { + "code": [ + "1F526" + ], + "emoji": "🔦", + "name": "flashlight" + }, + { + "code": [ + "1F3EE" + ], + "emoji": "🏮", + "name": "red paper lantern" + }, + { + "code": [ + "1FA94" + ], + "emoji": "🪔", + "name": "diya lamp" + } + ], + "book-paper": [ + { + "code": [ + "1F4D4" + ], + "emoji": "📔", + "name": "notebook with decorative cover" + }, + { + "code": [ + "1F4D5" + ], + "emoji": "📕", + "name": "closed book" + }, + { + "code": [ + "1F4D6" + ], + "emoji": "📖", + "name": "open book" + }, + { + "code": [ + "1F4D7" + ], + "emoji": "📗", + "name": "green book" + }, + { + "code": [ + "1F4D8" + ], + "emoji": "📘", + "name": "blue book" + }, + { + "code": [ + "1F4D9" + ], + "emoji": "📙", + "name": "orange book" + }, + { + "code": [ + "1F4DA" + ], + "emoji": "📚", + "name": "books" + }, + { + "code": [ + "1F4D3" + ], + "emoji": "📓", + "name": "notebook" + }, + { + "code": [ + "1F4D2" + ], + "emoji": "📒", + "name": "ledger" + }, + { + "code": [ + "1F4C3" + ], + "emoji": "📃", + "name": "page with curl" + }, + { + "code": [ + "1F4DC" + ], + "emoji": "📜", + "name": "scroll" + }, + { + "code": [ + "1F4C4" + ], + "emoji": "📄", + "name": "page facing up" + }, + { + "code": [ + "1F4F0" + ], + "emoji": "📰", + "name": "newspaper" + }, + { + "code": [ + "1F5DE" + ], + "emoji": "🗞", + "name": "rolled-up newspaper" + }, + { + "code": [ + "1F4D1" + ], + "emoji": "📑", + "name": "bookmark tabs" + }, + { + "code": [ + "1F516" + ], + "emoji": "🔖", + "name": "bookmark" + }, + { + "code": [ + "1F3F7" + ], + "emoji": "🏷", + "name": "label" + } + ], + "money": [ + { + "code": [ + "1F4B0" + ], + "emoji": "💰", + "name": "money bag" + }, + { + "code": [ + "1FA99" + ], + "emoji": "🪙", + "name": "coin" + }, + { + "code": [ + "1F4B4" + ], + "emoji": "💴", + "name": "yen banknote" + }, + { + "code": [ + "1F4B5" + ], + "emoji": "💵", + "name": "dollar banknote" + }, + { + "code": [ + "1F4B6" + ], + "emoji": "💶", + "name": "euro banknote" + }, + { + "code": [ + "1F4B7" + ], + "emoji": "💷", + "name": "pound banknote" + }, + { + "code": [ + "1F4B8" + ], + "emoji": "💸", + "name": "money with wings" + }, + { + "code": [ + "1F4B3" + ], + "emoji": "💳", + "name": "credit card" + }, + { + "code": [ + "1F9FE" + ], + "emoji": "🧾", + "name": "receipt" + }, + { + "code": [ + "1F4B9" + ], + "emoji": "💹", + "name": "chart increasing with yen" + } + ], + "mail": [ + { + "code": [ + "2709" + ], + "emoji": "✉", + "name": "envelope" + }, + { + "code": [ + "1F4E7" + ], + "emoji": "📧", + "name": "e-mail" + }, + { + "code": [ + "1F4E8" + ], + "emoji": "📨", + "name": "incoming envelope" + }, + { + "code": [ + "1F4E9" + ], + "emoji": "📩", + "name": "envelope with arrow" + }, + { + "code": [ + "1F4E4" + ], + "emoji": "📤", + "name": "outbox tray" + }, + { + "code": [ + "1F4E5" + ], + "emoji": "📥", + "name": "inbox tray" + }, + { + "code": [ + "1F4E6" + ], + "emoji": "📦", + "name": "package" + }, + { + "code": [ + "1F4EB" + ], + "emoji": "📫", + "name": "closed mailbox with raised flag" + }, + { + "code": [ + "1F4EA" + ], + "emoji": "📪", + "name": "closed mailbox with lowered flag" + }, + { + "code": [ + "1F4EC" + ], + "emoji": "📬", + "name": "open mailbox with raised flag" + }, + { + "code": [ + "1F4ED" + ], + "emoji": "📭", + "name": "open mailbox with lowered flag" + }, + { + "code": [ + "1F4EE" + ], + "emoji": "📮", + "name": "postbox" + }, + { + "code": [ + "1F5F3" + ], + "emoji": "🗳", + "name": "ballot box with ballot" + } + ], + "writing": [ + { + "code": [ + "270F" + ], + "emoji": "✏", + "name": "pencil" + }, + { + "code": [ + "2712" + ], + "emoji": "✒", + "name": "black nib" + }, + { + "code": [ + "1F58B" + ], + "emoji": "🖋", + "name": "fountain pen" + }, + { + "code": [ + "1F58A" + ], + "emoji": "🖊", + "name": "pen" + }, + { + "code": [ + "1F58C" + ], + "emoji": "🖌", + "name": "paintbrush" + }, + { + "code": [ + "1F58D" + ], + "emoji": "🖍", + "name": "crayon" + }, + { + "code": [ + "1F4DD" + ], + "emoji": "📝", + "name": "memo" + } + ], + "office": [ + { + "code": [ + "1F4BC" + ], + "emoji": "💼", + "name": "briefcase" + }, + { + "code": [ + "1F4C1" + ], + "emoji": "📁", + "name": "file folder" + }, + { + "code": [ + "1F4C2" + ], + "emoji": "📂", + "name": "open file folder" + }, + { + "code": [ + "1F5C2" + ], + "emoji": "🗂", + "name": "card index dividers" + }, + { + "code": [ + "1F4C5" + ], + "emoji": "📅", + "name": "calendar" + }, + { + "code": [ + "1F4C6" + ], + "emoji": "📆", + "name": "tear-off calendar" + }, + { + "code": [ + "1F5D2" + ], + "emoji": "🗒", + "name": "spiral notepad" + }, + { + "code": [ + "1F5D3" + ], + "emoji": "🗓", + "name": "spiral calendar" + }, + { + "code": [ + "1F4C7" + ], + "emoji": "📇", + "name": "card index" + }, + { + "code": [ + "1F4C8" + ], + "emoji": "📈", + "name": "chart increasing" + }, + { + "code": [ + "1F4C9" + ], + "emoji": "📉", + "name": "chart decreasing" + }, + { + "code": [ + "1F4CA" + ], + "emoji": "📊", + "name": "bar chart" + }, + { + "code": [ + "1F4CB" + ], + "emoji": "📋", + "name": "clipboard" + }, + { + "code": [ + "1F4CC" + ], + "emoji": "📌", + "name": "pushpin" + }, + { + "code": [ + "1F4CD" + ], + "emoji": "📍", + "name": "round pushpin" + }, + { + "code": [ + "1F4CE" + ], + "emoji": "📎", + "name": "paperclip" + }, + { + "code": [ + "1F587" + ], + "emoji": "🖇", + "name": "linked paperclips" + }, + { + "code": [ + "1F4CF" + ], + "emoji": "📏", + "name": "straight ruler" + }, + { + "code": [ + "1F4D0" + ], + "emoji": "📐", + "name": "triangular ruler" + }, + { + "code": [ + "2702" + ], + "emoji": "✂", + "name": "scissors" + }, + { + "code": [ + "1F5C3" + ], + "emoji": "🗃", + "name": "card file box" + }, + { + "code": [ + "1F5C4" + ], + "emoji": "🗄", + "name": "file cabinet" + }, + { + "code": [ + "1F5D1" + ], + "emoji": "🗑", + "name": "wastebasket" + } + ], + "lock": [ + { + "code": [ + "1F512" + ], + "emoji": "🔒", + "name": "locked" + }, + { + "code": [ + "1F513" + ], + "emoji": "🔓", + "name": "unlocked" + }, + { + "code": [ + "1F50F" + ], + "emoji": "🔏", + "name": "locked with pen" + }, + { + "code": [ + "1F510" + ], + "emoji": "🔐", + "name": "locked with key" + }, + { + "code": [ + "1F511" + ], + "emoji": "🔑", + "name": "key" + }, + { + "code": [ + "1F5DD" + ], + "emoji": "🗝", + "name": "old key" + } + ], + "tool": [ + { + "code": [ + "1F528" + ], + "emoji": "🔨", + "name": "hammer" + }, + { + "code": [ + "1FA93" + ], + "emoji": "🪓", + "name": "axe" + }, + { + "code": [ + "26CF" + ], + "emoji": "⛏", + "name": "pick" + }, + { + "code": [ + "2692" + ], + "emoji": "⚒", + "name": "hammer and pick" + }, + { + "code": [ + "1F6E0" + ], + "emoji": "🛠", + "name": "hammer and wrench" + }, + { + "code": [ + "1F5E1" + ], + "emoji": "🗡", + "name": "dagger" + }, + { + "code": [ + "2694" + ], + "emoji": "⚔", + "name": "crossed swords" + }, + { + "code": [ + "1F4A3" + ], + "emoji": "💣", + "name": "bomb" + }, + { + "code": [ + "1FA83" + ], + "emoji": "🪃", + "name": "boomerang" + }, + { + "code": [ + "1F3F9" + ], + "emoji": "🏹", + "name": "bow and arrow" + }, + { + "code": [ + "1F6E1" + ], + "emoji": "🛡", + "name": "shield" + }, + { + "code": [ + "1FA9A" + ], + "emoji": "🪚", + "name": "carpentry saw" + }, + { + "code": [ + "1F527" + ], + "emoji": "🔧", + "name": "wrench" + }, + { + "code": [ + "1FA9B" + ], + "emoji": "🪛", + "name": "screwdriver" + }, + { + "code": [ + "1F529" + ], + "emoji": "🔩", + "name": "nut and bolt" + }, + { + "code": [ + "2699" + ], + "emoji": "⚙", + "name": "gear" + }, + { + "code": [ + "1F5DC" + ], + "emoji": "🗜", + "name": "clamp" + }, + { + "code": [ + "2696" + ], + "emoji": "⚖", + "name": "balance scale" + }, + { + "code": [ + "1F9AF" + ], + "emoji": "🦯", + "name": "white cane" + }, + { + "code": [ + "1F517" + ], + "emoji": "🔗", + "name": "link" + }, + { + "code": [ + "26D3", + "FE0F", + "200D", + "1F4A5" + ], + "emoji": "⛓️‍💥", + "name": "broken chain" + }, + { + "code": [ + "26D3" + ], + "emoji": "⛓", + "name": "chains" + }, + { + "code": [ + "1FA9D" + ], + "emoji": "🪝", + "name": "hook" + }, + { + "code": [ + "1F9F0" + ], + "emoji": "🧰", + "name": "toolbox" + }, + { + "code": [ + "1F9F2" + ], + "emoji": "🧲", + "name": "magnet" + }, + { + "code": [ + "1FA9C" + ], + "emoji": "🪜", + "name": "ladder" + }, + { + "code": [ + "1FA8F" + ], + "emoji": "🪏", + "name": "shovel" + } + ], + "science": [ + { + "code": [ + "2697" + ], + "emoji": "⚗", + "name": "alembic" + }, + { + "code": [ + "1F9EA" + ], + "emoji": "🧪", + "name": "test tube" + }, + { + "code": [ + "1F9EB" + ], + "emoji": "🧫", + "name": "petri dish" + }, + { + "code": [ + "1F9EC" + ], + "emoji": "🧬", + "name": "dna" + }, + { + "code": [ + "1F52C" + ], + "emoji": "🔬", + "name": "microscope" + }, + { + "code": [ + "1F52D" + ], + "emoji": "🔭", + "name": "telescope" + }, + { + "code": [ + "1F4E1" + ], + "emoji": "📡", + "name": "satellite antenna" + } + ], + "medical": [ + { + "code": [ + "1F489" + ], + "emoji": "💉", + "name": "syringe" + }, + { + "code": [ + "1FA78" + ], + "emoji": "🩸", + "name": "drop of blood" + }, + { + "code": [ + "1F48A" + ], + "emoji": "💊", + "name": "pill" + }, + { + "code": [ + "1FA79" + ], + "emoji": "🩹", + "name": "adhesive bandage" + }, + { + "code": [ + "1FA7C" + ], + "emoji": "🩼", + "name": "crutch" + }, + { + "code": [ + "1FA7A" + ], + "emoji": "🩺", + "name": "stethoscope" + }, + { + "code": [ + "1FA7B" + ], + "emoji": "🩻", + "name": "x-ray" + } + ], + "household": [ + { + "code": [ + "1F6AA" + ], + "emoji": "🚪", + "name": "door" + }, + { + "code": [ + "1F6D7" + ], + "emoji": "🛗", + "name": "elevator" + }, + { + "code": [ + "1FA9E" + ], + "emoji": "🪞", + "name": "mirror" + }, + { + "code": [ + "1FA9F" + ], + "emoji": "🪟", + "name": "window" + }, + { + "code": [ + "1F6CF" + ], + "emoji": "🛏", + "name": "bed" + }, + { + "code": [ + "1F6CB" + ], + "emoji": "🛋", + "name": "couch and lamp" + }, + { + "code": [ + "1FA91" + ], + "emoji": "🪑", + "name": "chair" + }, + { + "code": [ + "1F6BD" + ], + "emoji": "🚽", + "name": "toilet" + }, + { + "code": [ + "1FAA0" + ], + "emoji": "🪠", + "name": "plunger" + }, + { + "code": [ + "1F6BF" + ], + "emoji": "🚿", + "name": "shower" + }, + { + "code": [ + "1F6C1" + ], + "emoji": "🛁", + "name": "bathtub" + }, + { + "code": [ + "1FAA4" + ], + "emoji": "🪤", + "name": "mouse trap" + }, + { + "code": [ + "1FA92" + ], + "emoji": "🪒", + "name": "razor" + }, + { + "code": [ + "1F9F4" + ], + "emoji": "🧴", + "name": "lotion bottle" + }, + { + "code": [ + "1F9F7" + ], + "emoji": "🧷", + "name": "safety pin" + }, + { + "code": [ + "1F9F9" + ], + "emoji": "🧹", + "name": "broom" + }, + { + "code": [ + "1F9FA" + ], + "emoji": "🧺", + "name": "basket" + }, + { + "code": [ + "1F9FB" + ], + "emoji": "🧻", + "name": "roll of paper" + }, + { + "code": [ + "1FAA3" + ], + "emoji": "🪣", + "name": "bucket" + }, + { + "code": [ + "1F9FC" + ], + "emoji": "🧼", + "name": "soap" + }, + { + "code": [ + "1FAE7" + ], + "emoji": "🫧", + "name": "bubbles" + }, + { + "code": [ + "1FAA5" + ], + "emoji": "🪥", + "name": "toothbrush" + }, + { + "code": [ + "1F9FD" + ], + "emoji": "🧽", + "name": "sponge" + }, + { + "code": [ + "1F9EF" + ], + "emoji": "🧯", + "name": "fire extinguisher" + }, + { + "code": [ + "1F6D2" + ], + "emoji": "🛒", + "name": "shopping cart" + } + ], + "other-object": [ + { + "code": [ + "1F6AC" + ], + "emoji": "🚬", + "name": "cigarette" + }, + { + "code": [ + "26B0" + ], + "emoji": "⚰", + "name": "coffin" + }, + { + "code": [ + "1FAA6" + ], + "emoji": "🪦", + "name": "headstone" + }, + { + "code": [ + "26B1" + ], + "emoji": "⚱", + "name": "funeral urn" + }, + { + "code": [ + "1F9FF" + ], + "emoji": "🧿", + "name": "nazar amulet" + }, + { + "code": [ + "1FAAC" + ], + "emoji": "🪬", + "name": "hamsa" + }, + { + "code": [ + "1F5FF" + ], + "emoji": "🗿", + "name": "moai" + }, + { + "code": [ + "1FAA7" + ], + "emoji": "🪧", + "name": "placard" + }, + { + "code": [ + "1FAAA" + ], + "emoji": "🪪", + "name": "identification card" + } + ] + }, + "Symbols": { + "transport-sign": [ + { + "code": [ + "1F3E7" + ], + "emoji": "🏧", + "name": "ATM sign" + }, + { + "code": [ + "1F6AE" + ], + "emoji": "🚮", + "name": "litter in bin sign" + }, + { + "code": [ + "1F6B0" + ], + "emoji": "🚰", + "name": "potable water" + }, + { + "code": [ + "267F" + ], + "emoji": "♿", + "name": "wheelchair symbol" + }, + { + "code": [ + "1F6B9" + ], + "emoji": "🚹", + "name": "men’s room" + }, + { + "code": [ + "1F6BA" + ], + "emoji": "🚺", + "name": "women’s room" + }, + { + "code": [ + "1F6BB" + ], + "emoji": "🚻", + "name": "restroom" + }, + { + "code": [ + "1F6BC" + ], + "emoji": "🚼", + "name": "baby symbol" + }, + { + "code": [ + "1F6BE" + ], + "emoji": "🚾", + "name": "water closet" + }, + { + "code": [ + "1F6C2" + ], + "emoji": "🛂", + "name": "passport control" + }, + { + "code": [ + "1F6C3" + ], + "emoji": "🛃", + "name": "customs" + }, + { + "code": [ + "1F6C4" + ], + "emoji": "🛄", + "name": "baggage claim" + }, + { + "code": [ + "1F6C5" + ], + "emoji": "🛅", + "name": "left luggage" + } + ], + "warning": [ + { + "code": [ + "26A0" + ], + "emoji": "⚠", + "name": "warning" + }, + { + "code": [ + "1F6B8" + ], + "emoji": "🚸", + "name": "children crossing" + }, + { + "code": [ + "26D4" + ], + "emoji": "⛔", + "name": "no entry" + }, + { + "code": [ + "1F6AB" + ], + "emoji": "🚫", + "name": "prohibited" + }, + { + "code": [ + "1F6B3" + ], + "emoji": "🚳", + "name": "no bicycles" + }, + { + "code": [ + "1F6AD" + ], + "emoji": "🚭", + "name": "no smoking" + }, + { + "code": [ + "1F6AF" + ], + "emoji": "🚯", + "name": "no littering" + }, + { + "code": [ + "1F6B1" + ], + "emoji": "🚱", + "name": "non-potable water" + }, + { + "code": [ + "1F6B7" + ], + "emoji": "🚷", + "name": "no pedestrians" + }, + { + "code": [ + "1F4F5" + ], + "emoji": "📵", + "name": "no mobile phones" + }, + { + "code": [ + "1F51E" + ], + "emoji": "🔞", + "name": "no one under eighteen" + }, + { + "code": [ + "2622" + ], + "emoji": "☢", + "name": "radioactive" + }, + { + "code": [ + "2623" + ], + "emoji": "☣", + "name": "biohazard" + } + ], + "arrow": [ + { + "code": [ + "2B06" + ], + "emoji": "⬆", + "name": "up arrow" + }, + { + "code": [ + "2197" + ], + "emoji": "↗", + "name": "up-right arrow" + }, + { + "code": [ + "27A1" + ], + "emoji": "➡", + "name": "right arrow" + }, + { + "code": [ + "2198" + ], + "emoji": "↘", + "name": "down-right arrow" + }, + { + "code": [ + "2B07" + ], + "emoji": "⬇", + "name": "down arrow" + }, + { + "code": [ + "2199" + ], + "emoji": "↙", + "name": "down-left arrow" + }, + { + "code": [ + "2B05" + ], + "emoji": "⬅", + "name": "left arrow" + }, + { + "code": [ + "2196" + ], + "emoji": "↖", + "name": "up-left arrow" + }, + { + "code": [ + "2195" + ], + "emoji": "↕", + "name": "up-down arrow" + }, + { + "code": [ + "2194" + ], + "emoji": "↔", + "name": "left-right arrow" + }, + { + "code": [ + "21A9" + ], + "emoji": "↩", + "name": "right arrow curving left" + }, + { + "code": [ + "21AA" + ], + "emoji": "↪", + "name": "left arrow curving right" + }, + { + "code": [ + "2934" + ], + "emoji": "⤴", + "name": "right arrow curving up" + }, + { + "code": [ + "2935" + ], + "emoji": "⤵", + "name": "right arrow curving down" + }, + { + "code": [ + "1F503" + ], + "emoji": "🔃", + "name": "clockwise vertical arrows" + }, + { + "code": [ + "1F504" + ], + "emoji": "🔄", + "name": "counterclockwise arrows button" + }, + { + "code": [ + "1F519" + ], + "emoji": "🔙", + "name": "BACK arrow" + }, + { + "code": [ + "1F51A" + ], + "emoji": "🔚", + "name": "END arrow" + }, + { + "code": [ + "1F51B" + ], + "emoji": "🔛", + "name": "ON! arrow" + }, + { + "code": [ + "1F51C" + ], + "emoji": "🔜", + "name": "SOON arrow" + }, + { + "code": [ + "1F51D" + ], + "emoji": "🔝", + "name": "TOP arrow" + } + ], + "religion": [ + { + "code": [ + "1F6D0" + ], + "emoji": "🛐", + "name": "place of worship" + }, + { + "code": [ + "269B" + ], + "emoji": "⚛", + "name": "atom symbol" + }, + { + "code": [ + "1F549" + ], + "emoji": "🕉", + "name": "om" + }, + { + "code": [ + "2721" + ], + "emoji": "✡", + "name": "star of David" + }, + { + "code": [ + "2638" + ], + "emoji": "☸", + "name": "wheel of dharma" + }, + { + "code": [ + "262F" + ], + "emoji": "☯", + "name": "yin yang" + }, + { + "code": [ + "271D" + ], + "emoji": "✝", + "name": "latin cross" + }, + { + "code": [ + "2626" + ], + "emoji": "☦", + "name": "orthodox cross" + }, + { + "code": [ + "262A" + ], + "emoji": "☪", + "name": "star and crescent" + }, + { + "code": [ + "262E" + ], + "emoji": "☮", + "name": "peace symbol" + }, + { + "code": [ + "1F54E" + ], + "emoji": "🕎", + "name": "menorah" + }, + { + "code": [ + "1F52F" + ], + "emoji": "🔯", + "name": "dotted six-pointed star" + }, + { + "code": [ + "1FAAF" + ], + "emoji": "🪯", + "name": "khanda" + } + ], + "zodiac": [ + { + "code": [ + "2648" + ], + "emoji": "♈", + "name": "Aries" + }, + { + "code": [ + "2649" + ], + "emoji": "♉", + "name": "Taurus" + }, + { + "code": [ + "264A" + ], + "emoji": "♊", + "name": "Gemini" + }, + { + "code": [ + "264B" + ], + "emoji": "♋", + "name": "Cancer" + }, + { + "code": [ + "264C" + ], + "emoji": "♌", + "name": "Leo" + }, + { + "code": [ + "264D" + ], + "emoji": "♍", + "name": "Virgo" + }, + { + "code": [ + "264E" + ], + "emoji": "♎", + "name": "Libra" + }, + { + "code": [ + "264F" + ], + "emoji": "♏", + "name": "Scorpio" + }, + { + "code": [ + "2650" + ], + "emoji": "♐", + "name": "Sagittarius" + }, + { + "code": [ + "2651" + ], + "emoji": "♑", + "name": "Capricorn" + }, + { + "code": [ + "2652" + ], + "emoji": "♒", + "name": "Aquarius" + }, + { + "code": [ + "2653" + ], + "emoji": "♓", + "name": "Pisces" + }, + { + "code": [ + "26CE" + ], + "emoji": "⛎", + "name": "Ophiuchus" + } + ], + "av-symbol": [ + { + "code": [ + "1F500" + ], + "emoji": "🔀", + "name": "shuffle tracks button" + }, + { + "code": [ + "1F501" + ], + "emoji": "🔁", + "name": "repeat button" + }, + { + "code": [ + "1F502" + ], + "emoji": "🔂", + "name": "repeat single button" + }, + { + "code": [ + "25B6" + ], + "emoji": "▶", + "name": "play button" + }, + { + "code": [ + "23E9" + ], + "emoji": "⏩", + "name": "fast-forward button" + }, + { + "code": [ + "23ED" + ], + "emoji": "⏭", + "name": "next track button" + }, + { + "code": [ + "23EF" + ], + "emoji": "⏯", + "name": "play or pause button" + }, + { + "code": [ + "25C0" + ], + "emoji": "◀", + "name": "reverse button" + }, + { + "code": [ + "23EA" + ], + "emoji": "⏪", + "name": "fast reverse button" + }, + { + "code": [ + "23EE" + ], + "emoji": "⏮", + "name": "last track button" + }, + { + "code": [ + "1F53C" + ], + "emoji": "🔼", + "name": "upwards button" + }, + { + "code": [ + "23EB" + ], + "emoji": "⏫", + "name": "fast up button" + }, + { + "code": [ + "1F53D" + ], + "emoji": "🔽", + "name": "downwards button" + }, + { + "code": [ + "23EC" + ], + "emoji": "⏬", + "name": "fast down button" + }, + { + "code": [ + "23F8" + ], + "emoji": "⏸", + "name": "pause button" + }, + { + "code": [ + "23F9" + ], + "emoji": "⏹", + "name": "stop button" + }, + { + "code": [ + "23FA" + ], + "emoji": "⏺", + "name": "record button" + }, + { + "code": [ + "23CF" + ], + "emoji": "⏏", + "name": "eject button" + }, + { + "code": [ + "1F3A6" + ], + "emoji": "🎦", + "name": "cinema" + }, + { + "code": [ + "1F505" + ], + "emoji": "🔅", + "name": "dim button" + }, + { + "code": [ + "1F506" + ], + "emoji": "🔆", + "name": "bright button" + }, + { + "code": [ + "1F4F6" + ], + "emoji": "📶", + "name": "antenna bars" + }, + { + "code": [ + "1F6DC" + ], + "emoji": "🛜", + "name": "wireless" + }, + { + "code": [ + "1F4F3" + ], + "emoji": "📳", + "name": "vibration mode" + }, + { + "code": [ + "1F4F4" + ], + "emoji": "📴", + "name": "mobile phone off" + } + ], + "gender": [ + { + "code": [ + "2640" + ], + "emoji": "♀", + "name": "female sign" + }, + { + "code": [ + "2642" + ], + "emoji": "♂", + "name": "male sign" + }, + { + "code": [ + "26A7" + ], + "emoji": "⚧", + "name": "transgender symbol" + } + ], + "math": [ + { + "code": [ + "2716" + ], + "emoji": "✖", + "name": "multiply" + }, + { + "code": [ + "2795" + ], + "emoji": "➕", + "name": "plus" + }, + { + "code": [ + "2796" + ], + "emoji": "➖", + "name": "minus" + }, + { + "code": [ + "2797" + ], + "emoji": "➗", + "name": "divide" + }, + { + "code": [ + "1F7F0" + ], + "emoji": "🟰", + "name": "heavy equals sign" + }, + { + "code": [ + "267E" + ], + "emoji": "♾", + "name": "infinity" + } + ], + "punctuation": [ + { + "code": [ + "203C" + ], + "emoji": "‼", + "name": "double exclamation mark" + }, + { + "code": [ + "2049" + ], + "emoji": "⁉", + "name": "exclamation question mark" + }, + { + "code": [ + "2753" + ], + "emoji": "❓", + "name": "red question mark" + }, + { + "code": [ + "2754" + ], + "emoji": "❔", + "name": "white question mark" + }, + { + "code": [ + "2755" + ], + "emoji": "❕", + "name": "white exclamation mark" + }, + { + "code": [ + "2757" + ], + "emoji": "❗", + "name": "red exclamation mark" + }, + { + "code": [ + "3030" + ], + "emoji": "〰", + "name": "wavy dash" + } + ], + "currency": [ + { + "code": [ + "1F4B1" + ], + "emoji": "💱", + "name": "currency exchange" + }, + { + "code": [ + "1F4B2" + ], + "emoji": "💲", + "name": "heavy dollar sign" + } + ], + "other-symbol": [ + { + "code": [ + "2695" + ], + "emoji": "⚕", + "name": "medical symbol" + }, + { + "code": [ + "267B" + ], + "emoji": "♻", + "name": "recycling symbol" + }, + { + "code": [ + "269C" + ], + "emoji": "⚜", + "name": "fleur-de-lis" + }, + { + "code": [ + "1F531" + ], + "emoji": "🔱", + "name": "trident emblem" + }, + { + "code": [ + "1F4DB" + ], + "emoji": "📛", + "name": "name badge" + }, + { + "code": [ + "1F530" + ], + "emoji": "🔰", + "name": "Japanese symbol for beginner" + }, + { + "code": [ + "2B55" + ], + "emoji": "⭕", + "name": "hollow red circle" + }, + { + "code": [ + "2705" + ], + "emoji": "✅", + "name": "check mark button" + }, + { + "code": [ + "2611" + ], + "emoji": "☑", + "name": "check box with check" + }, + { + "code": [ + "2714" + ], + "emoji": "✔", + "name": "check mark" + }, + { + "code": [ + "274C" + ], + "emoji": "❌", + "name": "cross mark" + }, + { + "code": [ + "274E" + ], + "emoji": "❎", + "name": "cross mark button" + }, + { + "code": [ + "27B0" + ], + "emoji": "➰", + "name": "curly loop" + }, + { + "code": [ + "27BF" + ], + "emoji": "➿", + "name": "double curly loop" + }, + { + "code": [ + "303D" + ], + "emoji": "〽", + "name": "part alternation mark" + }, + { + "code": [ + "2733" + ], + "emoji": "✳", + "name": "eight-spoked asterisk" + }, + { + "code": [ + "2734" + ], + "emoji": "✴", + "name": "eight-pointed star" + }, + { + "code": [ + "2747" + ], + "emoji": "❇", + "name": "sparkle" + }, + { + "code": [ + "00A9" + ], + "emoji": "©", + "name": "copyright" + }, + { + "code": [ + "00AE" + ], + "emoji": "®", + "name": "registered" + }, + { + "code": [ + "2122" + ], + "emoji": "™", + "name": "trade mark" + }, + { + "code": [ + "1FADF" + ], + "emoji": "🫟", + "name": "splatter" + } + ], + "keycap": [ + { + "code": [ + "0023", + "FE0F", + "20E3" + ], + "emoji": "#️⃣", + "name": "keycap: #" + }, + { + "code": [ + "002A", + "FE0F", + "20E3" + ], + "emoji": "*️⃣", + "name": "keycap: *" + }, + { + "code": [ + "0030", + "FE0F", + "20E3" + ], + "emoji": "0️⃣", + "name": "keycap: 0" + }, + { + "code": [ + "0031", + "FE0F", + "20E3" + ], + "emoji": "1️⃣", + "name": "keycap: 1" + }, + { + "code": [ + "0032", + "FE0F", + "20E3" + ], + "emoji": "2️⃣", + "name": "keycap: 2" + }, + { + "code": [ + "0033", + "FE0F", + "20E3" + ], + "emoji": "3️⃣", + "name": "keycap: 3" + }, + { + "code": [ + "0034", + "FE0F", + "20E3" + ], + "emoji": "4️⃣", + "name": "keycap: 4" + }, + { + "code": [ + "0035", + "FE0F", + "20E3" + ], + "emoji": "5️⃣", + "name": "keycap: 5" + }, + { + "code": [ + "0036", + "FE0F", + "20E3" + ], + "emoji": "6️⃣", + "name": "keycap: 6" + }, + { + "code": [ + "0037", + "FE0F", + "20E3" + ], + "emoji": "7️⃣", + "name": "keycap: 7" + }, + { + "code": [ + "0038", + "FE0F", + "20E3" + ], + "emoji": "8️⃣", + "name": "keycap: 8" + }, + { + "code": [ + "0039", + "FE0F", + "20E3" + ], + "emoji": "9️⃣", + "name": "keycap: 9" + }, + { + "code": [ + "1F51F" + ], + "emoji": "🔟", + "name": "keycap: 10" + } + ], + "alphanum": [ + { + "code": [ + "1F520" + ], + "emoji": "🔠", + "name": "input latin uppercase" + }, + { + "code": [ + "1F521" + ], + "emoji": "🔡", + "name": "input latin lowercase" + }, + { + "code": [ + "1F522" + ], + "emoji": "🔢", + "name": "input numbers" + }, + { + "code": [ + "1F523" + ], + "emoji": "🔣", + "name": "input symbols" + }, + { + "code": [ + "1F524" + ], + "emoji": "🔤", + "name": "input latin letters" + }, + { + "code": [ + "1F170" + ], + "emoji": "🅰", + "name": "A button (blood type)" + }, + { + "code": [ + "1F18E" + ], + "emoji": "🆎", + "name": "AB button (blood type)" + }, + { + "code": [ + "1F171" + ], + "emoji": "🅱", + "name": "B button (blood type)" + }, + { + "code": [ + "1F191" + ], + "emoji": "🆑", + "name": "CL button" + }, + { + "code": [ + "1F192" + ], + "emoji": "🆒", + "name": "COOL button" + }, + { + "code": [ + "1F193" + ], + "emoji": "🆓", + "name": "FREE button" + }, + { + "code": [ + "2139" + ], + "emoji": "ℹ", + "name": "information" + }, + { + "code": [ + "1F194" + ], + "emoji": "🆔", + "name": "ID button" + }, + { + "code": [ + "24C2" + ], + "emoji": "Ⓜ", + "name": "circled M" + }, + { + "code": [ + "1F195" + ], + "emoji": "🆕", + "name": "NEW button" + }, + { + "code": [ + "1F196" + ], + "emoji": "🆖", + "name": "NG button" + }, + { + "code": [ + "1F17E" + ], + "emoji": "🅾", + "name": "O button (blood type)" + }, + { + "code": [ + "1F197" + ], + "emoji": "🆗", + "name": "OK button" + }, + { + "code": [ + "1F17F" + ], + "emoji": "🅿", + "name": "P button" + }, + { + "code": [ + "1F198" + ], + "emoji": "🆘", + "name": "SOS button" + }, + { + "code": [ + "1F199" + ], + "emoji": "🆙", + "name": "UP! button" + }, + { + "code": [ + "1F19A" + ], + "emoji": "🆚", + "name": "VS button" + }, + { + "code": [ + "1F201" + ], + "emoji": "🈁", + "name": "Japanese “here” button" + }, + { + "code": [ + "1F202" + ], + "emoji": "🈂", + "name": "Japanese “service charge” button" + }, + { + "code": [ + "1F237" + ], + "emoji": "🈷", + "name": "Japanese “monthly amount” button" + }, + { + "code": [ + "1F236" + ], + "emoji": "🈶", + "name": "Japanese “not free of charge” button" + }, + { + "code": [ + "1F22F" + ], + "emoji": "🈯", + "name": "Japanese “reserved” button" + }, + { + "code": [ + "1F250" + ], + "emoji": "🉐", + "name": "Japanese “bargain” button" + }, + { + "code": [ + "1F239" + ], + "emoji": "🈹", + "name": "Japanese “discount” button" + }, + { + "code": [ + "1F21A" + ], + "emoji": "🈚", + "name": "Japanese “free of charge” button" + }, + { + "code": [ + "1F232" + ], + "emoji": "🈲", + "name": "Japanese “prohibited” button" + }, + { + "code": [ + "1F251" + ], + "emoji": "🉑", + "name": "Japanese “acceptable” button" + }, + { + "code": [ + "1F238" + ], + "emoji": "🈸", + "name": "Japanese “application” button" + }, + { + "code": [ + "1F234" + ], + "emoji": "🈴", + "name": "Japanese “passing grade” button" + }, + { + "code": [ + "1F233" + ], + "emoji": "🈳", + "name": "Japanese “vacancy” button" + }, + { + "code": [ + "3297" + ], + "emoji": "㊗", + "name": "Japanese “congratulations” button" + }, + { + "code": [ + "3299" + ], + "emoji": "㊙", + "name": "Japanese “secret” button" + }, + { + "code": [ + "1F23A" + ], + "emoji": "🈺", + "name": "Japanese “open for business” button" + }, + { + "code": [ + "1F235" + ], + "emoji": "🈵", + "name": "Japanese “no vacancy” button" + } + ], + "geometric": [ + { + "code": [ + "1F534" + ], + "emoji": "🔴", + "name": "red circle" + }, + { + "code": [ + "1F7E0" + ], + "emoji": "🟠", + "name": "orange circle" + }, + { + "code": [ + "1F7E1" + ], + "emoji": "🟡", + "name": "yellow circle" + }, + { + "code": [ + "1F7E2" + ], + "emoji": "🟢", + "name": "green circle" + }, + { + "code": [ + "1F535" + ], + "emoji": "🔵", + "name": "blue circle" + }, + { + "code": [ + "1F7E3" + ], + "emoji": "🟣", + "name": "purple circle" + }, + { + "code": [ + "1F7E4" + ], + "emoji": "🟤", + "name": "brown circle" + }, + { + "code": [ + "26AB" + ], + "emoji": "⚫", + "name": "black circle" + }, + { + "code": [ + "26AA" + ], + "emoji": "⚪", + "name": "white circle" + }, + { + "code": [ + "1F7E5" + ], + "emoji": "🟥", + "name": "red square" + }, + { + "code": [ + "1F7E7" + ], + "emoji": "🟧", + "name": "orange square" + }, + { + "code": [ + "1F7E8" + ], + "emoji": "🟨", + "name": "yellow square" + }, + { + "code": [ + "1F7E9" + ], + "emoji": "🟩", + "name": "green square" + }, + { + "code": [ + "1F7E6" + ], + "emoji": "🟦", + "name": "blue square" + }, + { + "code": [ + "1F7EA" + ], + "emoji": "🟪", + "name": "purple square" + }, + { + "code": [ + "1F7EB" + ], + "emoji": "🟫", + "name": "brown square" + }, + { + "code": [ + "2B1B" + ], + "emoji": "⬛", + "name": "black large square" + }, + { + "code": [ + "2B1C" + ], + "emoji": "⬜", + "name": "white large square" + }, + { + "code": [ + "25FC" + ], + "emoji": "◼", + "name": "black medium square" + }, + { + "code": [ + "25FB" + ], + "emoji": "◻", + "name": "white medium square" + }, + { + "code": [ + "25FE" + ], + "emoji": "◾", + "name": "black medium-small square" + }, + { + "code": [ + "25FD" + ], + "emoji": "◽", + "name": "white medium-small square" + }, + { + "code": [ + "25AA" + ], + "emoji": "▪", + "name": "black small square" + }, + { + "code": [ + "25AB" + ], + "emoji": "▫", + "name": "white small square" + }, + { + "code": [ + "1F536" + ], + "emoji": "🔶", + "name": "large orange diamond" + }, + { + "code": [ + "1F537" + ], + "emoji": "🔷", + "name": "large blue diamond" + }, + { + "code": [ + "1F538" + ], + "emoji": "🔸", + "name": "small orange diamond" + }, + { + "code": [ + "1F539" + ], + "emoji": "🔹", + "name": "small blue diamond" + }, + { + "code": [ + "1F53A" + ], + "emoji": "🔺", + "name": "red triangle pointed up" + }, + { + "code": [ + "1F53B" + ], + "emoji": "🔻", + "name": "red triangle pointed down" + }, + { + "code": [ + "1F4A0" + ], + "emoji": "💠", + "name": "diamond with a dot" + }, + { + "code": [ + "1F518" + ], + "emoji": "🔘", + "name": "radio button" + }, + { + "code": [ + "1F533" + ], + "emoji": "🔳", + "name": "white square button" + }, + { + "code": [ + "1F532" + ], + "emoji": "🔲", + "name": "black square button" + } + ] + }, + "Flags": { + "flag": [ + { + "code": [ + "1F3C1" + ], + "emoji": "🏁", + "name": "chequered flag" + }, + { + "code": [ + "1F6A9" + ], + "emoji": "🚩", + "name": "triangular flag" + }, + { + "code": [ + "1F38C" + ], + "emoji": "🎌", + "name": "crossed flags" + }, + { + "code": [ + "1F3F4" + ], + "emoji": "🏴", + "name": "black flag" + }, + { + "code": [ + "1F3F3" + ], + "emoji": "🏳", + "name": "white flag" + }, + { + "code": [ + "1F3F3", + "FE0F", + "200D", + "1F308" + ], + "emoji": "🏳️‍🌈", + "name": "rainbow flag" + }, + { + "code": [ + "1F3F3", + "FE0F", + "200D", + "26A7", + "FE0F" + ], + "emoji": "🏳️‍⚧️", + "name": "transgender flag" + }, + { + "code": [ + "1F3F4", + "200D", + "2620", + "FE0F" + ], + "emoji": "🏴‍☠️", + "name": "pirate flag" + } + ], + "country-flag": [ + { + "code": [ + "1F1E6", + "1F1E8" + ], + "emoji": "🇦🇨", + "name": "flag: Ascension Island" + }, + { + "code": [ + "1F1E6", + "1F1E9" + ], + "emoji": "🇦🇩", + "name": "flag: Andorra" + }, + { + "code": [ + "1F1E6", + "1F1EA" + ], + "emoji": "🇦🇪", + "name": "flag: United Arab Emirates" + }, + { + "code": [ + "1F1E6", + "1F1EB" + ], + "emoji": "🇦🇫", + "name": "flag: Afghanistan" + }, + { + "code": [ + "1F1E6", + "1F1EC" + ], + "emoji": "🇦🇬", + "name": "flag: Antigua & Barbuda" + }, + { + "code": [ + "1F1E6", + "1F1EE" + ], + "emoji": "🇦🇮", + "name": "flag: Anguilla" + }, + { + "code": [ + "1F1E6", + "1F1F1" + ], + "emoji": "🇦🇱", + "name": "flag: Albania" + }, + { + "code": [ + "1F1E6", + "1F1F2" + ], + "emoji": "🇦🇲", + "name": "flag: Armenia" + }, + { + "code": [ + "1F1E6", + "1F1F4" + ], + "emoji": "🇦🇴", + "name": "flag: Angola" + }, + { + "code": [ + "1F1E6", + "1F1F6" + ], + "emoji": "🇦🇶", + "name": "flag: Antarctica" + }, + { + "code": [ + "1F1E6", + "1F1F7" + ], + "emoji": "🇦🇷", + "name": "flag: Argentina" + }, + { + "code": [ + "1F1E6", + "1F1F8" + ], + "emoji": "🇦🇸", + "name": "flag: American Samoa" + }, + { + "code": [ + "1F1E6", + "1F1F9" + ], + "emoji": "🇦🇹", + "name": "flag: Austria" + }, + { + "code": [ + "1F1E6", + "1F1FA" + ], + "emoji": "🇦🇺", + "name": "flag: Australia" + }, + { + "code": [ + "1F1E6", + "1F1FC" + ], + "emoji": "🇦🇼", + "name": "flag: Aruba" + }, + { + "code": [ + "1F1E6", + "1F1FD" + ], + "emoji": "🇦🇽", + "name": "flag: Åland Islands" + }, + { + "code": [ + "1F1E6", + "1F1FF" + ], + "emoji": "🇦🇿", + "name": "flag: Azerbaijan" + }, + { + "code": [ + "1F1E7", + "1F1E6" + ], + "emoji": "🇧🇦", + "name": "flag: Bosnia & Herzegovina" + }, + { + "code": [ + "1F1E7", + "1F1E7" + ], + "emoji": "🇧🇧", + "name": "flag: Barbados" + }, + { + "code": [ + "1F1E7", + "1F1E9" + ], + "emoji": "🇧🇩", + "name": "flag: Bangladesh" + }, + { + "code": [ + "1F1E7", + "1F1EA" + ], + "emoji": "🇧🇪", + "name": "flag: Belgium" + }, + { + "code": [ + "1F1E7", + "1F1EB" + ], + "emoji": "🇧🇫", + "name": "flag: Burkina Faso" + }, + { + "code": [ + "1F1E7", + "1F1EC" + ], + "emoji": "🇧🇬", + "name": "flag: Bulgaria" + }, + { + "code": [ + "1F1E7", + "1F1ED" + ], + "emoji": "🇧🇭", + "name": "flag: Bahrain" + }, + { + "code": [ + "1F1E7", + "1F1EE" + ], + "emoji": "🇧🇮", + "name": "flag: Burundi" + }, + { + "code": [ + "1F1E7", + "1F1EF" + ], + "emoji": "🇧🇯", + "name": "flag: Benin" + }, + { + "code": [ + "1F1E7", + "1F1F1" + ], + "emoji": "🇧🇱", + "name": "flag: St. Barthélemy" + }, + { + "code": [ + "1F1E7", + "1F1F2" + ], + "emoji": "🇧🇲", + "name": "flag: Bermuda" + }, + { + "code": [ + "1F1E7", + "1F1F3" + ], + "emoji": "🇧🇳", + "name": "flag: Brunei" + }, + { + "code": [ + "1F1E7", + "1F1F4" + ], + "emoji": "🇧🇴", + "name": "flag: Bolivia" + }, + { + "code": [ + "1F1E7", + "1F1F6" + ], + "emoji": "🇧🇶", + "name": "flag: Caribbean Netherlands" + }, + { + "code": [ + "1F1E7", + "1F1F7" + ], + "emoji": "🇧🇷", + "name": "flag: Brazil" + }, + { + "code": [ + "1F1E7", + "1F1F8" + ], + "emoji": "🇧🇸", + "name": "flag: Bahamas" + }, + { + "code": [ + "1F1E7", + "1F1F9" + ], + "emoji": "🇧🇹", + "name": "flag: Bhutan" + }, + { + "code": [ + "1F1E7", + "1F1FB" + ], + "emoji": "🇧🇻", + "name": "flag: Bouvet Island" + }, + { + "code": [ + "1F1E7", + "1F1FC" + ], + "emoji": "🇧🇼", + "name": "flag: Botswana" + }, + { + "code": [ + "1F1E7", + "1F1FE" + ], + "emoji": "🇧🇾", + "name": "flag: Belarus" + }, + { + "code": [ + "1F1E7", + "1F1FF" + ], + "emoji": "🇧🇿", + "name": "flag: Belize" + }, + { + "code": [ + "1F1E8", + "1F1E6" + ], + "emoji": "🇨🇦", + "name": "flag: Canada" + }, + { + "code": [ + "1F1E8", + "1F1E8" + ], + "emoji": "🇨🇨", + "name": "flag: Cocos (Keeling) Islands" + }, + { + "code": [ + "1F1E8", + "1F1E9" + ], + "emoji": "🇨🇩", + "name": "flag: Congo - Kinshasa" + }, + { + "code": [ + "1F1E8", + "1F1EB" + ], + "emoji": "🇨🇫", + "name": "flag: Central African Republic" + }, + { + "code": [ + "1F1E8", + "1F1EC" + ], + "emoji": "🇨🇬", + "name": "flag: Congo - Brazzaville" + }, + { + "code": [ + "1F1E8", + "1F1ED" + ], + "emoji": "🇨🇭", + "name": "flag: Switzerland" + }, + { + "code": [ + "1F1E8", + "1F1EE" + ], + "emoji": "🇨🇮", + "name": "flag: Côte d’Ivoire" + }, + { + "code": [ + "1F1E8", + "1F1F0" + ], + "emoji": "🇨🇰", + "name": "flag: Cook Islands" + }, + { + "code": [ + "1F1E8", + "1F1F1" + ], + "emoji": "🇨🇱", + "name": "flag: Chile" + }, + { + "code": [ + "1F1E8", + "1F1F2" + ], + "emoji": "🇨🇲", + "name": "flag: Cameroon" + }, + { + "code": [ + "1F1E8", + "1F1F3" + ], + "emoji": "🇨🇳", + "name": "flag: China" + }, + { + "code": [ + "1F1E8", + "1F1F4" + ], + "emoji": "🇨🇴", + "name": "flag: Colombia" + }, + { + "code": [ + "1F1E8", + "1F1F5" + ], + "emoji": "🇨🇵", + "name": "flag: Clipperton Island" + }, + { + "code": [ + "1F1E8", + "1F1F6" + ], + "emoji": "🇨🇶", + "name": "flag: Sark" + }, + { + "code": [ + "1F1E8", + "1F1F7" + ], + "emoji": "🇨🇷", + "name": "flag: Costa Rica" + }, + { + "code": [ + "1F1E8", + "1F1FA" + ], + "emoji": "🇨🇺", + "name": "flag: Cuba" + }, + { + "code": [ + "1F1E8", + "1F1FB" + ], + "emoji": "🇨🇻", + "name": "flag: Cape Verde" + }, + { + "code": [ + "1F1E8", + "1F1FC" + ], + "emoji": "🇨🇼", + "name": "flag: Curaçao" + }, + { + "code": [ + "1F1E8", + "1F1FD" + ], + "emoji": "🇨🇽", + "name": "flag: Christmas Island" + }, + { + "code": [ + "1F1E8", + "1F1FE" + ], + "emoji": "🇨🇾", + "name": "flag: Cyprus" + }, + { + "code": [ + "1F1E8", + "1F1FF" + ], + "emoji": "🇨🇿", + "name": "flag: Czechia" + }, + { + "code": [ + "1F1E9", + "1F1EA" + ], + "emoji": "🇩🇪", + "name": "flag: Germany" + }, + { + "code": [ + "1F1E9", + "1F1EC" + ], + "emoji": "🇩🇬", + "name": "flag: Diego Garcia" + }, + { + "code": [ + "1F1E9", + "1F1EF" + ], + "emoji": "🇩🇯", + "name": "flag: Djibouti" + }, + { + "code": [ + "1F1E9", + "1F1F0" + ], + "emoji": "🇩🇰", + "name": "flag: Denmark" + }, + { + "code": [ + "1F1E9", + "1F1F2" + ], + "emoji": "🇩🇲", + "name": "flag: Dominica" + }, + { + "code": [ + "1F1E9", + "1F1F4" + ], + "emoji": "🇩🇴", + "name": "flag: Dominican Republic" + }, + { + "code": [ + "1F1E9", + "1F1FF" + ], + "emoji": "🇩🇿", + "name": "flag: Algeria" + }, + { + "code": [ + "1F1EA", + "1F1E6" + ], + "emoji": "🇪🇦", + "name": "flag: Ceuta & Melilla" + }, + { + "code": [ + "1F1EA", + "1F1E8" + ], + "emoji": "🇪🇨", + "name": "flag: Ecuador" + }, + { + "code": [ + "1F1EA", + "1F1EA" + ], + "emoji": "🇪🇪", + "name": "flag: Estonia" + }, + { + "code": [ + "1F1EA", + "1F1EC" + ], + "emoji": "🇪🇬", + "name": "flag: Egypt" + }, + { + "code": [ + "1F1EA", + "1F1ED" + ], + "emoji": "🇪🇭", + "name": "flag: Western Sahara" + }, + { + "code": [ + "1F1EA", + "1F1F7" + ], + "emoji": "🇪🇷", + "name": "flag: Eritrea" + }, + { + "code": [ + "1F1EA", + "1F1F8" + ], + "emoji": "🇪🇸", + "name": "flag: Spain" + }, + { + "code": [ + "1F1EA", + "1F1F9" + ], + "emoji": "🇪🇹", + "name": "flag: Ethiopia" + }, + { + "code": [ + "1F1EA", + "1F1FA" + ], + "emoji": "🇪🇺", + "name": "flag: European Union" + }, + { + "code": [ + "1F1EB", + "1F1EE" + ], + "emoji": "🇫🇮", + "name": "flag: Finland" + }, + { + "code": [ + "1F1EB", + "1F1EF" + ], + "emoji": "🇫🇯", + "name": "flag: Fiji" + }, + { + "code": [ + "1F1EB", + "1F1F0" + ], + "emoji": "🇫🇰", + "name": "flag: Falkland Islands" + }, + { + "code": [ + "1F1EB", + "1F1F2" + ], + "emoji": "🇫🇲", + "name": "flag: Micronesia" + }, + { + "code": [ + "1F1EB", + "1F1F4" + ], + "emoji": "🇫🇴", + "name": "flag: Faroe Islands" + }, + { + "code": [ + "1F1EB", + "1F1F7" + ], + "emoji": "🇫🇷", + "name": "flag: France" + }, + { + "code": [ + "1F1EC", + "1F1E6" + ], + "emoji": "🇬🇦", + "name": "flag: Gabon" + }, + { + "code": [ + "1F1EC", + "1F1E7" + ], + "emoji": "🇬🇧", + "name": "flag: United Kingdom" + }, + { + "code": [ + "1F1EC", + "1F1E9" + ], + "emoji": "🇬🇩", + "name": "flag: Grenada" + }, + { + "code": [ + "1F1EC", + "1F1EA" + ], + "emoji": "🇬🇪", + "name": "flag: Georgia" + }, + { + "code": [ + "1F1EC", + "1F1EB" + ], + "emoji": "🇬🇫", + "name": "flag: French Guiana" + }, + { + "code": [ + "1F1EC", + "1F1EC" + ], + "emoji": "🇬🇬", + "name": "flag: Guernsey" + }, + { + "code": [ + "1F1EC", + "1F1ED" + ], + "emoji": "🇬🇭", + "name": "flag: Ghana" + }, + { + "code": [ + "1F1EC", + "1F1EE" + ], + "emoji": "🇬🇮", + "name": "flag: Gibraltar" + }, + { + "code": [ + "1F1EC", + "1F1F1" + ], + "emoji": "🇬🇱", + "name": "flag: Greenland" + }, + { + "code": [ + "1F1EC", + "1F1F2" + ], + "emoji": "🇬🇲", + "name": "flag: Gambia" + }, + { + "code": [ + "1F1EC", + "1F1F3" + ], + "emoji": "🇬🇳", + "name": "flag: Guinea" + }, + { + "code": [ + "1F1EC", + "1F1F5" + ], + "emoji": "🇬🇵", + "name": "flag: Guadeloupe" + }, + { + "code": [ + "1F1EC", + "1F1F6" + ], + "emoji": "🇬🇶", + "name": "flag: Equatorial Guinea" + }, + { + "code": [ + "1F1EC", + "1F1F7" + ], + "emoji": "🇬🇷", + "name": "flag: Greece" + }, + { + "code": [ + "1F1EC", + "1F1F8" + ], + "emoji": "🇬🇸", + "name": "flag: South Georgia & South Sandwich Islands" + }, + { + "code": [ + "1F1EC", + "1F1F9" + ], + "emoji": "🇬🇹", + "name": "flag: Guatemala" + }, + { + "code": [ + "1F1EC", + "1F1FA" + ], + "emoji": "🇬🇺", + "name": "flag: Guam" + }, + { + "code": [ + "1F1EC", + "1F1FC" + ], + "emoji": "🇬🇼", + "name": "flag: Guinea-Bissau" + }, + { + "code": [ + "1F1EC", + "1F1FE" + ], + "emoji": "🇬🇾", + "name": "flag: Guyana" + }, + { + "code": [ + "1F1ED", + "1F1F0" + ], + "emoji": "🇭🇰", + "name": "flag: Hong Kong SAR China" + }, + { + "code": [ + "1F1ED", + "1F1F2" + ], + "emoji": "🇭🇲", + "name": "flag: Heard & McDonald Islands" + }, + { + "code": [ + "1F1ED", + "1F1F3" + ], + "emoji": "🇭🇳", + "name": "flag: Honduras" + }, + { + "code": [ + "1F1ED", + "1F1F7" + ], + "emoji": "🇭🇷", + "name": "flag: Croatia" + }, + { + "code": [ + "1F1ED", + "1F1F9" + ], + "emoji": "🇭🇹", + "name": "flag: Haiti" + }, + { + "code": [ + "1F1ED", + "1F1FA" + ], + "emoji": "🇭🇺", + "name": "flag: Hungary" + }, + { + "code": [ + "1F1EE", + "1F1E8" + ], + "emoji": "🇮🇨", + "name": "flag: Canary Islands" + }, + { + "code": [ + "1F1EE", + "1F1E9" + ], + "emoji": "🇮🇩", + "name": "flag: Indonesia" + }, + { + "code": [ + "1F1EE", + "1F1EA" + ], + "emoji": "🇮🇪", + "name": "flag: Ireland" + }, + { + "code": [ + "1F1EE", + "1F1F1" + ], + "emoji": "🇮🇱", + "name": "flag: Israel" + }, + { + "code": [ + "1F1EE", + "1F1F2" + ], + "emoji": "🇮🇲", + "name": "flag: Isle of Man" + }, + { + "code": [ + "1F1EE", + "1F1F3" + ], + "emoji": "🇮🇳", + "name": "flag: India" + }, + { + "code": [ + "1F1EE", + "1F1F4" + ], + "emoji": "🇮🇴", + "name": "flag: British Indian Ocean Territory" + }, + { + "code": [ + "1F1EE", + "1F1F6" + ], + "emoji": "🇮🇶", + "name": "flag: Iraq" + }, + { + "code": [ + "1F1EE", + "1F1F7" + ], + "emoji": "🇮🇷", + "name": "flag: Iran" + }, + { + "code": [ + "1F1EE", + "1F1F8" + ], + "emoji": "🇮🇸", + "name": "flag: Iceland" + }, + { + "code": [ + "1F1EE", + "1F1F9" + ], + "emoji": "🇮🇹", + "name": "flag: Italy" + }, + { + "code": [ + "1F1EF", + "1F1EA" + ], + "emoji": "🇯🇪", + "name": "flag: Jersey" + }, + { + "code": [ + "1F1EF", + "1F1F2" + ], + "emoji": "🇯🇲", + "name": "flag: Jamaica" + }, + { + "code": [ + "1F1EF", + "1F1F4" + ], + "emoji": "🇯🇴", + "name": "flag: Jordan" + }, + { + "code": [ + "1F1EF", + "1F1F5" + ], + "emoji": "🇯🇵", + "name": "flag: Japan" + }, + { + "code": [ + "1F1F0", + "1F1EA" + ], + "emoji": "🇰🇪", + "name": "flag: Kenya" + }, + { + "code": [ + "1F1F0", + "1F1EC" + ], + "emoji": "🇰🇬", + "name": "flag: Kyrgyzstan" + }, + { + "code": [ + "1F1F0", + "1F1ED" + ], + "emoji": "🇰🇭", + "name": "flag: Cambodia" + }, + { + "code": [ + "1F1F0", + "1F1EE" + ], + "emoji": "🇰🇮", + "name": "flag: Kiribati" + }, + { + "code": [ + "1F1F0", + "1F1F2" + ], + "emoji": "🇰🇲", + "name": "flag: Comoros" + }, + { + "code": [ + "1F1F0", + "1F1F3" + ], + "emoji": "🇰🇳", + "name": "flag: St. Kitts & Nevis" + }, + { + "code": [ + "1F1F0", + "1F1F5" + ], + "emoji": "🇰🇵", + "name": "flag: North Korea" + }, + { + "code": [ + "1F1F0", + "1F1F7" + ], + "emoji": "🇰🇷", + "name": "flag: South Korea" + }, + { + "code": [ + "1F1F0", + "1F1FC" + ], + "emoji": "🇰🇼", + "name": "flag: Kuwait" + }, + { + "code": [ + "1F1F0", + "1F1FE" + ], + "emoji": "🇰🇾", + "name": "flag: Cayman Islands" + }, + { + "code": [ + "1F1F0", + "1F1FF" + ], + "emoji": "🇰🇿", + "name": "flag: Kazakhstan" + }, + { + "code": [ + "1F1F1", + "1F1E6" + ], + "emoji": "🇱🇦", + "name": "flag: Laos" + }, + { + "code": [ + "1F1F1", + "1F1E7" + ], + "emoji": "🇱🇧", + "name": "flag: Lebanon" + }, + { + "code": [ + "1F1F1", + "1F1E8" + ], + "emoji": "🇱🇨", + "name": "flag: St. Lucia" + }, + { + "code": [ + "1F1F1", + "1F1EE" + ], + "emoji": "🇱🇮", + "name": "flag: Liechtenstein" + }, + { + "code": [ + "1F1F1", + "1F1F0" + ], + "emoji": "🇱🇰", + "name": "flag: Sri Lanka" + }, + { + "code": [ + "1F1F1", + "1F1F7" + ], + "emoji": "🇱🇷", + "name": "flag: Liberia" + }, + { + "code": [ + "1F1F1", + "1F1F8" + ], + "emoji": "🇱🇸", + "name": "flag: Lesotho" + }, + { + "code": [ + "1F1F1", + "1F1F9" + ], + "emoji": "🇱🇹", + "name": "flag: Lithuania" + }, + { + "code": [ + "1F1F1", + "1F1FA" + ], + "emoji": "🇱🇺", + "name": "flag: Luxembourg" + }, + { + "code": [ + "1F1F1", + "1F1FB" + ], + "emoji": "🇱🇻", + "name": "flag: Latvia" + }, + { + "code": [ + "1F1F1", + "1F1FE" + ], + "emoji": "🇱🇾", + "name": "flag: Libya" + }, + { + "code": [ + "1F1F2", + "1F1E6" + ], + "emoji": "🇲🇦", + "name": "flag: Morocco" + }, + { + "code": [ + "1F1F2", + "1F1E8" + ], + "emoji": "🇲🇨", + "name": "flag: Monaco" + }, + { + "code": [ + "1F1F2", + "1F1E9" + ], + "emoji": "🇲🇩", + "name": "flag: Moldova" + }, + { + "code": [ + "1F1F2", + "1F1EA" + ], + "emoji": "🇲🇪", + "name": "flag: Montenegro" + }, + { + "code": [ + "1F1F2", + "1F1EB" + ], + "emoji": "🇲🇫", + "name": "flag: St. Martin" + }, + { + "code": [ + "1F1F2", + "1F1EC" + ], + "emoji": "🇲🇬", + "name": "flag: Madagascar" + }, + { + "code": [ + "1F1F2", + "1F1ED" + ], + "emoji": "🇲🇭", + "name": "flag: Marshall Islands" + }, + { + "code": [ + "1F1F2", + "1F1F0" + ], + "emoji": "🇲🇰", + "name": "flag: North Macedonia" + }, + { + "code": [ + "1F1F2", + "1F1F1" + ], + "emoji": "🇲🇱", + "name": "flag: Mali" + }, + { + "code": [ + "1F1F2", + "1F1F2" + ], + "emoji": "🇲🇲", + "name": "flag: Myanmar (Burma)" + }, + { + "code": [ + "1F1F2", + "1F1F3" + ], + "emoji": "🇲🇳", + "name": "flag: Mongolia" + }, + { + "code": [ + "1F1F2", + "1F1F4" + ], + "emoji": "🇲🇴", + "name": "flag: Macao SAR China" + }, + { + "code": [ + "1F1F2", + "1F1F5" + ], + "emoji": "🇲🇵", + "name": "flag: Northern Mariana Islands" + }, + { + "code": [ + "1F1F2", + "1F1F6" + ], + "emoji": "🇲🇶", + "name": "flag: Martinique" + }, + { + "code": [ + "1F1F2", + "1F1F7" + ], + "emoji": "🇲🇷", + "name": "flag: Mauritania" + }, + { + "code": [ + "1F1F2", + "1F1F8" + ], + "emoji": "🇲🇸", + "name": "flag: Montserrat" + }, + { + "code": [ + "1F1F2", + "1F1F9" + ], + "emoji": "🇲🇹", + "name": "flag: Malta" + }, + { + "code": [ + "1F1F2", + "1F1FA" + ], + "emoji": "🇲🇺", + "name": "flag: Mauritius" + }, + { + "code": [ + "1F1F2", + "1F1FB" + ], + "emoji": "🇲🇻", + "name": "flag: Maldives" + }, + { + "code": [ + "1F1F2", + "1F1FC" + ], + "emoji": "🇲🇼", + "name": "flag: Malawi" + }, + { + "code": [ + "1F1F2", + "1F1FD" + ], + "emoji": "🇲🇽", + "name": "flag: Mexico" + }, + { + "code": [ + "1F1F2", + "1F1FE" + ], + "emoji": "🇲🇾", + "name": "flag: Malaysia" + }, + { + "code": [ + "1F1F2", + "1F1FF" + ], + "emoji": "🇲🇿", + "name": "flag: Mozambique" + }, + { + "code": [ + "1F1F3", + "1F1E6" + ], + "emoji": "🇳🇦", + "name": "flag: Namibia" + }, + { + "code": [ + "1F1F3", + "1F1E8" + ], + "emoji": "🇳🇨", + "name": "flag: New Caledonia" + }, + { + "code": [ + "1F1F3", + "1F1EA" + ], + "emoji": "🇳🇪", + "name": "flag: Niger" + }, + { + "code": [ + "1F1F3", + "1F1EB" + ], + "emoji": "🇳🇫", + "name": "flag: Norfolk Island" + }, + { + "code": [ + "1F1F3", + "1F1EC" + ], + "emoji": "🇳🇬", + "name": "flag: Nigeria" + }, + { + "code": [ + "1F1F3", + "1F1EE" + ], + "emoji": "🇳🇮", + "name": "flag: Nicaragua" + }, + { + "code": [ + "1F1F3", + "1F1F1" + ], + "emoji": "🇳🇱", + "name": "flag: Netherlands" + }, + { + "code": [ + "1F1F3", + "1F1F4" + ], + "emoji": "🇳🇴", + "name": "flag: Norway" + }, + { + "code": [ + "1F1F3", + "1F1F5" + ], + "emoji": "🇳🇵", + "name": "flag: Nepal" + }, + { + "code": [ + "1F1F3", + "1F1F7" + ], + "emoji": "🇳🇷", + "name": "flag: Nauru" + }, + { + "code": [ + "1F1F3", + "1F1FA" + ], + "emoji": "🇳🇺", + "name": "flag: Niue" + }, + { + "code": [ + "1F1F3", + "1F1FF" + ], + "emoji": "🇳🇿", + "name": "flag: New Zealand" + }, + { + "code": [ + "1F1F4", + "1F1F2" + ], + "emoji": "🇴🇲", + "name": "flag: Oman" + }, + { + "code": [ + "1F1F5", + "1F1E6" + ], + "emoji": "🇵🇦", + "name": "flag: Panama" + }, + { + "code": [ + "1F1F5", + "1F1EA" + ], + "emoji": "🇵🇪", + "name": "flag: Peru" + }, + { + "code": [ + "1F1F5", + "1F1EB" + ], + "emoji": "🇵🇫", + "name": "flag: French Polynesia" + }, + { + "code": [ + "1F1F5", + "1F1EC" + ], + "emoji": "🇵🇬", + "name": "flag: Papua New Guinea" + }, + { + "code": [ + "1F1F5", + "1F1ED" + ], + "emoji": "🇵🇭", + "name": "flag: Philippines" + }, + { + "code": [ + "1F1F5", + "1F1F0" + ], + "emoji": "🇵🇰", + "name": "flag: Pakistan" + }, + { + "code": [ + "1F1F5", + "1F1F1" + ], + "emoji": "🇵🇱", + "name": "flag: Poland" + }, + { + "code": [ + "1F1F5", + "1F1F2" + ], + "emoji": "🇵🇲", + "name": "flag: St. Pierre & Miquelon" + }, + { + "code": [ + "1F1F5", + "1F1F3" + ], + "emoji": "🇵🇳", + "name": "flag: Pitcairn Islands" + }, + { + "code": [ + "1F1F5", + "1F1F7" + ], + "emoji": "🇵🇷", + "name": "flag: Puerto Rico" + }, + { + "code": [ + "1F1F5", + "1F1F8" + ], + "emoji": "🇵🇸", + "name": "flag: Palestinian Territories" + }, + { + "code": [ + "1F1F5", + "1F1F9" + ], + "emoji": "🇵🇹", + "name": "flag: Portugal" + }, + { + "code": [ + "1F1F5", + "1F1FC" + ], + "emoji": "🇵🇼", + "name": "flag: Palau" + }, + { + "code": [ + "1F1F5", + "1F1FE" + ], + "emoji": "🇵🇾", + "name": "flag: Paraguay" + }, + { + "code": [ + "1F1F6", + "1F1E6" + ], + "emoji": "🇶🇦", + "name": "flag: Qatar" + }, + { + "code": [ + "1F1F7", + "1F1EA" + ], + "emoji": "🇷🇪", + "name": "flag: Réunion" + }, + { + "code": [ + "1F1F7", + "1F1F4" + ], + "emoji": "🇷🇴", + "name": "flag: Romania" + }, + { + "code": [ + "1F1F7", + "1F1F8" + ], + "emoji": "🇷🇸", + "name": "flag: Serbia" + }, + { + "code": [ + "1F1F7", + "1F1FA" + ], + "emoji": "🇷🇺", + "name": "flag: Russia" + }, + { + "code": [ + "1F1F7", + "1F1FC" + ], + "emoji": "🇷🇼", + "name": "flag: Rwanda" + }, + { + "code": [ + "1F1F8", + "1F1E6" + ], + "emoji": "🇸🇦", + "name": "flag: Saudi Arabia" + }, + { + "code": [ + "1F1F8", + "1F1E7" + ], + "emoji": "🇸🇧", + "name": "flag: Solomon Islands" + }, + { + "code": [ + "1F1F8", + "1F1E8" + ], + "emoji": "🇸🇨", + "name": "flag: Seychelles" + }, + { + "code": [ + "1F1F8", + "1F1E9" + ], + "emoji": "🇸🇩", + "name": "flag: Sudan" + }, + { + "code": [ + "1F1F8", + "1F1EA" + ], + "emoji": "🇸🇪", + "name": "flag: Sweden" + }, + { + "code": [ + "1F1F8", + "1F1EC" + ], + "emoji": "🇸🇬", + "name": "flag: Singapore" + }, + { + "code": [ + "1F1F8", + "1F1ED" + ], + "emoji": "🇸🇭", + "name": "flag: St. Helena" + }, + { + "code": [ + "1F1F8", + "1F1EE" + ], + "emoji": "🇸🇮", + "name": "flag: Slovenia" + }, + { + "code": [ + "1F1F8", + "1F1EF" + ], + "emoji": "🇸🇯", + "name": "flag: Svalbard & Jan Mayen" + }, + { + "code": [ + "1F1F8", + "1F1F0" + ], + "emoji": "🇸🇰", + "name": "flag: Slovakia" + }, + { + "code": [ + "1F1F8", + "1F1F1" + ], + "emoji": "🇸🇱", + "name": "flag: Sierra Leone" + }, + { + "code": [ + "1F1F8", + "1F1F2" + ], + "emoji": "🇸🇲", + "name": "flag: San Marino" + }, + { + "code": [ + "1F1F8", + "1F1F3" + ], + "emoji": "🇸🇳", + "name": "flag: Senegal" + }, + { + "code": [ + "1F1F8", + "1F1F4" + ], + "emoji": "🇸🇴", + "name": "flag: Somalia" + }, + { + "code": [ + "1F1F8", + "1F1F7" + ], + "emoji": "🇸🇷", + "name": "flag: Suriname" + }, + { + "code": [ + "1F1F8", + "1F1F8" + ], + "emoji": "🇸🇸", + "name": "flag: South Sudan" + }, + { + "code": [ + "1F1F8", + "1F1F9" + ], + "emoji": "🇸🇹", + "name": "flag: São Tomé & Príncipe" + }, + { + "code": [ + "1F1F8", + "1F1FB" + ], + "emoji": "🇸🇻", + "name": "flag: El Salvador" + }, + { + "code": [ + "1F1F8", + "1F1FD" + ], + "emoji": "🇸🇽", + "name": "flag: Sint Maarten" + }, + { + "code": [ + "1F1F8", + "1F1FE" + ], + "emoji": "🇸🇾", + "name": "flag: Syria" + }, + { + "code": [ + "1F1F8", + "1F1FF" + ], + "emoji": "🇸🇿", + "name": "flag: Eswatini" + }, + { + "code": [ + "1F1F9", + "1F1E6" + ], + "emoji": "🇹🇦", + "name": "flag: Tristan da Cunha" + }, + { + "code": [ + "1F1F9", + "1F1E8" + ], + "emoji": "🇹🇨", + "name": "flag: Turks & Caicos Islands" + }, + { + "code": [ + "1F1F9", + "1F1E9" + ], + "emoji": "🇹🇩", + "name": "flag: Chad" + }, + { + "code": [ + "1F1F9", + "1F1EB" + ], + "emoji": "🇹🇫", + "name": "flag: French Southern Territories" + }, + { + "code": [ + "1F1F9", + "1F1EC" + ], + "emoji": "🇹🇬", + "name": "flag: Togo" + }, + { + "code": [ + "1F1F9", + "1F1ED" + ], + "emoji": "🇹🇭", + "name": "flag: Thailand" + }, + { + "code": [ + "1F1F9", + "1F1EF" + ], + "emoji": "🇹🇯", + "name": "flag: Tajikistan" + }, + { + "code": [ + "1F1F9", + "1F1F0" + ], + "emoji": "🇹🇰", + "name": "flag: Tokelau" + }, + { + "code": [ + "1F1F9", + "1F1F1" + ], + "emoji": "🇹🇱", + "name": "flag: Timor-Leste" + }, + { + "code": [ + "1F1F9", + "1F1F2" + ], + "emoji": "🇹🇲", + "name": "flag: Turkmenistan" + }, + { + "code": [ + "1F1F9", + "1F1F3" + ], + "emoji": "🇹🇳", + "name": "flag: Tunisia" + }, + { + "code": [ + "1F1F9", + "1F1F4" + ], + "emoji": "🇹🇴", + "name": "flag: Tonga" + }, + { + "code": [ + "1F1F9", + "1F1F7" + ], + "emoji": "🇹🇷", + "name": "flag: Türkiye" + }, + { + "code": [ + "1F1F9", + "1F1F9" + ], + "emoji": "🇹🇹", + "name": "flag: Trinidad & Tobago" + }, + { + "code": [ + "1F1F9", + "1F1FB" + ], + "emoji": "🇹🇻", + "name": "flag: Tuvalu" + }, + { + "code": [ + "1F1F9", + "1F1FC" + ], + "emoji": "🇹🇼", + "name": "flag: Taiwan" + }, + { + "code": [ + "1F1F9", + "1F1FF" + ], + "emoji": "🇹🇿", + "name": "flag: Tanzania" + }, + { + "code": [ + "1F1FA", + "1F1E6" + ], + "emoji": "🇺🇦", + "name": "flag: Ukraine" + }, + { + "code": [ + "1F1FA", + "1F1EC" + ], + "emoji": "🇺🇬", + "name": "flag: Uganda" + }, + { + "code": [ + "1F1FA", + "1F1F2" + ], + "emoji": "🇺🇲", + "name": "flag: U.S. Outlying Islands" + }, + { + "code": [ + "1F1FA", + "1F1F3" + ], + "emoji": "🇺🇳", + "name": "flag: United Nations" + }, + { + "code": [ + "1F1FA", + "1F1F8" + ], + "emoji": "🇺🇸", + "name": "flag: United States" + }, + { + "code": [ + "1F1FA", + "1F1FE" + ], + "emoji": "🇺🇾", + "name": "flag: Uruguay" + }, + { + "code": [ + "1F1FA", + "1F1FF" + ], + "emoji": "🇺🇿", + "name": "flag: Uzbekistan" + }, + { + "code": [ + "1F1FB", + "1F1E6" + ], + "emoji": "🇻🇦", + "name": "flag: Vatican City" + }, + { + "code": [ + "1F1FB", + "1F1E8" + ], + "emoji": "🇻🇨", + "name": "flag: St. Vincent & Grenadines" + }, + { + "code": [ + "1F1FB", + "1F1EA" + ], + "emoji": "🇻🇪", + "name": "flag: Venezuela" + }, + { + "code": [ + "1F1FB", + "1F1EC" + ], + "emoji": "🇻🇬", + "name": "flag: British Virgin Islands" + }, + { + "code": [ + "1F1FB", + "1F1EE" + ], + "emoji": "🇻🇮", + "name": "flag: U.S. Virgin Islands" + }, + { + "code": [ + "1F1FB", + "1F1F3" + ], + "emoji": "🇻🇳", + "name": "flag: Vietnam" + }, + { + "code": [ + "1F1FB", + "1F1FA" + ], + "emoji": "🇻🇺", + "name": "flag: Vanuatu" + }, + { + "code": [ + "1F1FC", + "1F1EB" + ], + "emoji": "🇼🇫", + "name": "flag: Wallis & Futuna" + }, + { + "code": [ + "1F1FC", + "1F1F8" + ], + "emoji": "🇼🇸", + "name": "flag: Samoa" + }, + { + "code": [ + "1F1FD", + "1F1F0" + ], + "emoji": "🇽🇰", + "name": "flag: Kosovo" + }, + { + "code": [ + "1F1FE", + "1F1EA" + ], + "emoji": "🇾🇪", + "name": "flag: Yemen" + }, + { + "code": [ + "1F1FE", + "1F1F9" + ], + "emoji": "🇾🇹", + "name": "flag: Mayotte" + }, + { + "code": [ + "1F1FF", + "1F1E6" + ], + "emoji": "🇿🇦", + "name": "flag: South Africa" + }, + { + "code": [ + "1F1FF", + "1F1F2" + ], + "emoji": "🇿🇲", + "name": "flag: Zambia" + }, + { + "code": [ + "1F1FF", + "1F1FC" + ], + "emoji": "🇿🇼", + "name": "flag: Zimbabwe" + } + ], + "subdivision-flag": [ + { + "code": [ + "1F3F4", + "E0067", + "E0062", + "E0065", + "E006E", + "E0067", + "E007F" + ], + "emoji": "🏴󠁧󠁢󠁥󠁮󠁧󠁿", + "name": "flag: England" + }, + { + "code": [ + "1F3F4", + "E0067", + "E0062", + "E0073", + "E0063", + "E0074", + "E007F" + ], + "emoji": "🏴󠁧󠁢󠁳󠁣󠁴󠁿", + "name": "flag: Scotland" + }, + { + "code": [ + "1F3F4", + "E0067", + "E0062", + "E0077", + "E006C", + "E0073", + "E007F" + ], + "emoji": "🏴󠁧󠁢󠁷󠁬󠁳󠁿", + "name": "flag: Wales" } + ] } + } } \ No newline at end of file diff --git a/app/src/main/assets/kaomoji.json b/app/src/main/assets/kaomoji.json index dac7dd4ca..9988e9882 100644 --- a/app/src/main/assets/kaomoji.json +++ b/app/src/main/assets/kaomoji.json @@ -1,3032 +1,3032 @@ { - "kaomoji": [ - { - "category": "joy", - "value": "(* ^ ω ^)" - }, - { - "category": "joy", - "value": "(´ ∀ ` *)" - }, - { - "category": "joy", - "value": "٩(◕‿◕。)۶" - }, - { - "category": "joy", - "value": "☆*:.。.o(≧▽≦)o.。.:*☆" - }, - { - "category": "joy", - "value": "(o^▽^o)" - }, - { - "category": "joy", - "value": "(⌒▽⌒)☆" - }, - { - "category": "joy", - "value": "<( ̄︶ ̄)>" - }, - { - "category": "joy", - "value": "。.:☆*:・'(*⌒―⌒*)))" - }, - { - "category": "joy", - "value": "ヽ(・∀・)ノ" - }, - { - "category": "joy", - "value": "(´。• ω •。`)" - }, - { - "category": "joy", - "value": "( ̄ω ̄)" - }, - { - "category": "joy", - "value": "`;:゛;`;・(°ε° )" - }, - { - "category": "joy", - "value": "(o・ω・o)" - }, - { - "category": "joy", - "value": "(@^◡^)" - }, - { - "category": "joy", - "value": "ヽ(*・ω・)ノ" - }, - { - "category": "joy", - "value": "(o_ _)ノ彡☆" - }, - { - "category": "joy", - "value": "(^人^)" - }, - { - "category": "joy", - "value": "(o´▽`o)" - }, - { - "category": "joy", - "value": "(*´▽`*)" - }, - { - "category": "joy", - "value": "。゚( ゚^∀^゚)゚。" - }, - { - "category": "joy", - "value": "( ´ ω ` )" - }, - { - "category": "joy", - "value": "(((o(*°▽°*)o)))" - }, - { - "category": "joy", - "value": "(≧◡≦)" - }, - { - "category": "joy", - "value": "(o´∀`o)" - }, - { - "category": "joy", - "value": "(´• ω •`)" - }, - { - "category": "joy", - "value": "(^▽^)" - }, - { - "category": "joy", - "value": "(⌒ω⌒)" - }, - { - "category": "joy", - "value": "∑d(°∀°d)" - }, - { - "category": "joy", - "value": "╰(▔∀▔)╯" - }, - { - "category": "joy", - "value": "(─‿‿─)" - }, - { - "category": "joy", - "value": "(*^‿^*)" - }, - { - "category": "joy", - "value": "ヽ(o^ ^o)ノ" - }, - { - "category": "joy", - "value": "(✯◡✯)" - }, - { - "category": "joy", - "value": "(◕‿◕)" - }, - { - "category": "joy", - "value": "(*≧ω≦*)" - }, - { - "category": "joy", - "value": "(☆▽☆)" - }, - { - "category": "joy", - "value": "(⌒‿⌒)" - }, - { - "category": "joy", - "value": "\(≧▽≦)/" - }, - { - "category": "joy", - "value": "ヽ(o^▽^o)ノ" - }, - { - "category": "joy", - "value": "☆ ~('▽^人)" - }, - { - "category": "joy", - "value": "(*°▽°*)" - }, - { - "category": "joy", - "value": "٩(。•́‿•̀。)۶" - }, - { - "category": "joy", - "value": "(✧ω✧)" - }, - { - "category": "joy", - "value": "ヽ(*⌒▽⌒*)ノ" - }, - { - "category": "joy", - "value": "(´。• ᵕ •。`)" - }, - { - "category": "joy", - "value": "( ´ ▽ ` )" - }, - { - "category": "joy", - "value": "( ̄▽ ̄)" - }, - { - "category": "joy", - "value": "╰(*´︶`*)╯" - }, - { - "category": "joy", - "value": "ヽ(>∀<☆)ノ" - }, - { - "category": "joy", - "value": "o(≧▽≦)o" - }, - { - "category": "joy", - "value": "(☆ω☆)" - }, - { - "category": "joy", - "value": "(っ˘ω˘ς )" - }, - { - "category": "joy", - "value": "\( ̄▽ ̄)/" - }, - { - "category": "joy", - "value": "(*¯︶¯*)" - }, - { - "category": "joy", - "value": "\(^▽^)/" - }, - { - "category": "joy", - "value": "٩(◕‿◕)۶" - }, - { - "category": "joy", - "value": "(o˘◡˘o)" - }, - { - "category": "joy", - "value": "(★ω★)/" - }, - { - "category": "joy", - "value": "(^ヮ^)/" - }, - { - "category": "joy", - "value": "(〃^▽^〃)" - }, - { - "category": "joy", - "value": "(╯✧▽✧)╯" - }, - { - "category": "joy", - "value": "o(>ω<)o" - }, - { - "category": "joy", - "value": "o( ❛ᴗ❛ )o" - }, - { - "category": "joy", - "value": "。゚(TヮT)゚。" - }, - { - "category": "joy", - "value": "( ‾́ ◡ ‾́ )" - }, - { - "category": "joy", - "value": "(ノ´ヮ`)ノ*: ・゚" - }, - { - "category": "joy", - "value": "(b ᵔ▽ᵔ)b" - }, - { - "category": "joy", - "value": "(๑˃ᴗ˂)ﻭ" - }, - { - "category": "joy", - "value": "(๑˘︶˘๑)" - }, - { - "category": "joy", - "value": "( ˙꒳​˙ )" - }, - { - "category": "joy", - "value": "(*꒦ິ꒳꒦ີ)" - }, - { - "category": "joy", - "value": "°˖✧◝(⁰▿⁰)◜✧˖°" - }, - { - "category": "joy", - "value": "(´・ᴗ・ ` )" - }, - { - "category": "joy", - "value": "(ノ◕ヮ◕)ノ*:・゚✧" - }, - { - "category": "joy", - "value": "(„• ֊ •„)" - }, - { - "category": "joy", - "value": "(.❛ ᴗ ❛.)" - }, - { - "category": "joy", - "value": "(⁀ᗢ⁀)" - }, - { - "category": "joy", - "value": "(¬‿¬ )" - }, - { - "category": "joy", - "value": "(¬‿¬ )" - }, - { - "category": "joy", - "value": "(* ̄▽ ̄)b" - }, - { - "category": "joy", - "value": "( ˙▿˙ )" - }, - { - "category": "joy", - "value": "(¯▿¯)" - }, - { - "category": "joy", - "value": "( ◕▿◕ )" - }, - { - "category": "joy", - "value": "\(٥⁀▽⁀ )/" - }, - { - "category": "joy", - "value": "(„• ᴗ •„)" - }, - { - "category": "joy", - "value": "(ᵔ◡ᵔ)" - }, - { - "category": "joy", - "value": "( ´ ▿ ` )" - }, - { - "category": "love", - "value": "(ノ´ з `)ノ" - }, - { - "category": "love", - "value": "(♡μ_μ)" - }, - { - "category": "love", - "value": "(*^^*)♡" - }, - { - "category": "love", - "value": "☆⌒ヽ(*'、^*)chu" - }, - { - "category": "love", - "value": "(♡-_-♡)" - }, - { - "category": "love", - "value": "( ̄ε ̄@)" - }, - { - "category": "love", - "value": "ヽ(♡‿♡)ノ" - }, - { - "category": "love", - "value": "( ´ ∀ `)ノ~ ♡" - }, - { - "category": "love", - "value": "(─‿‿─)♡" - }, - { - "category": "love", - "value": "(´。• ᵕ •。`) ♡" - }, - { - "category": "love", - "value": "(*♡∀♡)" - }, - { - "category": "love", - "value": "(。・//ε//・。)" - }, - { - "category": "love", - "value": "(´ ω `♡)" - }, - { - "category": "love", - "value": "♡( ◡‿◡ )" - }, - { - "category": "love", - "value": "(◕‿◕)♡" - }, - { - "category": "love", - "value": "(/▽\*)。o○♡" - }, - { - "category": "love", - "value": "(ღ˘⌣˘ღ)" - }, - { - "category": "love", - "value": "(♡°▽°♡)" - }, - { - "category": "love", - "value": "♡(。- ω -)" - }, - { - "category": "love", - "value": "♡ ~('▽^人)" - }, - { - "category": "love", - "value": "(´• ω •`) ♡" - }, - { - "category": "love", - "value": "(´ ε ` )♡" - }, - { - "category": "love", - "value": "(´。• ω •。`) ♡" - }, - { - "category": "love", - "value": "( ´ ▽ ` ).。o♡" - }, - { - "category": "love", - "value": "╰(*´︶`*)╯♡" - }, - { - "category": "love", - "value": "(*˘︶˘*).。.:*♡" - }, - { - "category": "love", - "value": "(♡˙︶˙♡)" - }, - { - "category": "love", - "value": "♡\( ̄▽ ̄)/♡" - }, - { - "category": "love", - "value": "(≧◡≦) ♡" - }, - { - "category": "love", - "value": "(⌒▽⌒)♡" - }, - { - "category": "love", - "value": "(*¯ ³¯*)♡" - }, - { - "category": "love", - "value": "(っ˘з(˘⌣˘ ) ♡" - }, - { - "category": "love", - "value": "♡ (˘▽˘>ԅ( ˘⌣˘)" - }, - { - "category": "love", - "value": "( ˘⌣˘)♡(˘⌣˘ )" - }, - { - "category": "love", - "value": "(/^-^(^ ^*)/ ♡" - }, - { - "category": "love", - "value": "٩(♡ε♡)۶" - }, - { - "category": "love", - "value": "σ(≧ε≦σ) ♡" - }, - { - "category": "love", - "value": "♡ (⇀ 3 ↼)" - }, - { - "category": "love", - "value": "♡ ( ̄З ̄)" - }, - { - "category": "love", - "value": "(❤ω❤)" - }, - { - "category": "love", - "value": "(˘∀˘)/(μ‿μ) ❤" - }, - { - "category": "love", - "value": "❤ (ɔˆз(ˆ⌣ˆc)" - }, - { - "category": "love", - "value": "(´♡‿♡`)" - }, - { - "category": "love", - "value": "(°◡°♡)" - }, - { - "category": "love", - "value": "Σ>―(〃°ω°〃)♡→" - }, - { - "category": "love", - "value": "(´,,•ω•,,)♡" - }, - { - "category": "love", - "value": "(´꒳`)♡" - }, - { - "category": "embarassment", - "value": "(⌒_⌒;)" - }, - { - "category": "embarassment", - "value": "(o^ ^o)" - }, - { - "category": "embarassment", - "value": "(*/ω\)" - }, - { - "category": "embarassment", - "value": "(*/。\)" - }, - { - "category": "embarassment", - "value": "(*/_\)" - }, - { - "category": "embarassment", - "value": "(*ノωノ)" - }, - { - "category": "embarassment", - "value": "(o-_-o)" - }, - { - "category": "embarassment", - "value": "(*μ_μ)" - }, - { - "category": "embarassment", - "value": "( ◡‿◡ *)" - }, - { - "category": "embarassment", - "value": "(ᵔ.ᵔ)" - }, - { - "category": "embarassment", - "value": "(*ノ∀`*)" - }, - { - "category": "embarassment", - "value": "(//▽//)" - }, - { - "category": "embarassment", - "value": "(//ω//)" - }, - { - "category": "embarassment", - "value": "(ノ*°▽°*)" - }, - { - "category": "embarassment", - "value": "(*^.^*)" - }, - { - "category": "embarassment", - "value": "(*ノ▽ノ)" - }, - { - "category": "embarassment", - "value": "( ̄▽ ̄*)ゞ" - }, - { - "category": "embarassment", - "value": "(⁄ ⁄•⁄ω⁄•⁄ ⁄)" - }, - { - "category": "embarassment", - "value": "(*/▽\*)" - }, - { - "category": "embarassment", - "value": "(⁄ ⁄>⁄ ▽ ⁄<⁄ ⁄)" - }, - { - "category": "embarassment", - "value": "(„ಡωಡ„)" - }, - { - "category": "embarassment", - "value": "(ง ื▿ ื)ว" - }, - { - "category": "embarassment", - "value": "( 〃▽〃)" - }, - { - "category": "embarassment", - "value": "(/▿\ )" - }, - { - "category": "embarassment", - "value": "(/// ̄  ̄///)" - }, - { - "category": "sympathy", - "value": "(ノ_<。)ヾ(´ ▽ ` )" - }, - { - "category": "sympathy", - "value": "。・゚・(ノД`)ヽ( ̄ω ̄ )" - }, - { - "category": "sympathy", - "value": "ρ(- ω -、)ヾ( ̄ω ̄; )" - }, - { - "category": "sympathy", - "value": "ヽ( ̄ω ̄(。。 )ゝ" - }, - { - "category": "sympathy", - "value": "(*´ I `)ノ゚(ノД`゚)゚。" - }, - { - "category": "sympathy", - "value": "ヽ(~_~(・_・ )ゝ" - }, - { - "category": "sympathy", - "value": "(ノ_;)ヾ(´ ∀ ` )" - }, - { - "category": "sympathy", - "value": "(; ω ; )ヾ(´∀`* )" - }, - { - "category": "sympathy", - "value": "(*´ー)ノ(ノд`)" - }, - { - "category": "sympathy", - "value": "(´-ω-`( _ _ )" - }, - { - "category": "sympathy", - "value": "(っ´ω`)ノ(╥ω╥)" - }, - { - "category": "sympathy", - "value": "(o・_・)ノ”(ノ_<、)" - }, - { - "category": "dissatisfaction", - "value": "(#><)" - }, - { - "category": "dissatisfaction", - "value": "(;⌣̀_⌣́)" - }, - { - "category": "dissatisfaction", - "value": "☆o(><;)○" - }, - { - "category": "dissatisfaction", - "value": "( ̄  ̄|||)" - }, - { - "category": "dissatisfaction", - "value": "(; ̄Д ̄)" - }, - { - "category": "dissatisfaction", - "value": "( ̄□ ̄」)" - }, - { - "category": "dissatisfaction", - "value": "(# ̄0 ̄)" - }, - { - "category": "dissatisfaction", - "value": "(# ̄ω ̄)" - }, - { - "category": "dissatisfaction", - "value": "(¬_¬;)" - }, - { - "category": "dissatisfaction", - "value": "(>m<)" - }, - { - "category": "dissatisfaction", - "value": "(」°ロ°)」" - }, - { - "category": "dissatisfaction", - "value": "(〃>_<;〃)" - }, - { - "category": "dissatisfaction", - "value": "(^^#)" - }, - { - "category": "dissatisfaction", - "value": "(︶︹︺)" - }, - { - "category": "dissatisfaction", - "value": "( ̄ヘ ̄)" - }, - { - "category": "dissatisfaction", - "value": "<( ̄ ﹌  ̄)>" - }, - { - "category": "dissatisfaction", - "value": "( ̄︿ ̄)" - }, - { - "category": "dissatisfaction", - "value": "(>﹏<)" - }, - { - "category": "dissatisfaction", - "value": "(--_--)" - }, - { - "category": "dissatisfaction", - "value": "凸( ̄ヘ ̄)" - }, - { - "category": "dissatisfaction", - "value": "ヾ(  ̄O ̄)ツ" - }, - { - "category": "dissatisfaction", - "value": "(⇀‸↼‶)" - }, - { - "category": "dissatisfaction", - "value": "o(>< )o" - }, - { - "category": "dissatisfaction", - "value": "(」><)」" - }, - { - "category": "dissatisfaction", - "value": "(ᗒᗣᗕ)՞" - }, - { - "category": "dissatisfaction", - "value": "(눈_눈)" - }, - { - "category": "anger", - "value": "(#`Д´)" - }, - { - "category": "anger", - "value": "(`皿´#)" - }, - { - "category": "anger", - "value": "( ` ω ´ )" - }, - { - "category": "anger", - "value": "ヽ( `д´*)ノ" - }, - { - "category": "anger", - "value": "(・`ω´・)" - }, - { - "category": "anger", - "value": "(`ー´)" - }, - { - "category": "anger", - "value": "ヽ(`⌒´メ)ノ" - }, - { - "category": "anger", - "value": "凸(`△´#)" - }, - { - "category": "anger", - "value": "( `ε´ )" - }, - { - "category": "anger", - "value": "ψ( ` ∇ ´ )ψ" - }, - { - "category": "anger", - "value": "ヾ(`ヘ´)ノ゙" - }, - { - "category": "anger", - "value": "ヽ(‵﹏´)ノ" - }, - { - "category": "anger", - "value": "(メ` ロ ´)" - }, - { - "category": "anger", - "value": "(╬`益´)" - }, - { - "category": "anger", - "value": "┌∩┐(◣_◢)┌∩┐" - }, - { - "category": "anger", - "value": "凸( ` ロ ´ )凸" - }, - { - "category": "anger", - "value": "Σ(▼□▼メ)" - }, - { - "category": "anger", - "value": "(°ㅂ°╬)" - }, - { - "category": "anger", - "value": "ψ(▼へ▼メ)~→" - }, - { - "category": "anger", - "value": "(ノ°益°)ノ" - }, - { - "category": "anger", - "value": "(҂ `з´ )" - }, - { - "category": "anger", - "value": "(‡▼益▼)" - }, - { - "category": "anger", - "value": "(҂` ロ ´)凸" - }, - { - "category": "anger", - "value": "((╬◣﹏◢))" - }, - { - "category": "anger", - "value": "٩(╬ʘ益ʘ╬)۶" - }, - { - "category": "anger", - "value": "(╬ Ò﹏Ó)" - }, - { - "category": "anger", - "value": "\\٩(๑`^´๑)۶//" - }, - { - "category": "anger", - "value": "(凸ಠ益ಠ)凸" - }, - { - "category": "anger", - "value": "↑_(ΦwΦ)Ψ" - }, - { - "category": "anger", - "value": "←~(Ψ▼ー▼)∈" - }, - { - "category": "anger", - "value": "୧((#Φ益Φ#))୨" - }, - { - "category": "anger", - "value": "٩(ఠ益ఠ)۶" - }, - { - "category": "anger", - "value": "(ノಥ益ಥ)ノ" - }, - { - "category": "sadness", - "value": "(ノ_<。)" - }, - { - "category": "sadness", - "value": "(-_-)" - }, - { - "category": "sadness", - "value": "(´-ω-`)" - }, - { - "category": "sadness", - "value": ".・゚゚・(/ω\)・゚゚・." - }, - { - "category": "sadness", - "value": "(μ_μ)" - }, - { - "category": "sadness", - "value": "(ノД`)" - }, - { - "category": "sadness", - "value": "(-ω-、)" - }, - { - "category": "sadness", - "value": "。゜゜(´O`) ゜゜。" - }, - { - "category": "sadness", - "value": "o(TヘTo)" - }, - { - "category": "sadness", - "value": "( ; ω ; )" - }, - { - "category": "sadness", - "value": "(。╯︵╰。)" - }, - { - "category": "sadness", - "value": "。・゚゚*(>д<)*゚゚・。" - }, - { - "category": "sadness", - "value": "( ゚,_ゝ`)" - }, - { - "category": "sadness", - "value": "(个_个)" - }, - { - "category": "sadness", - "value": "(╯︵╰,)" - }, - { - "category": "sadness", - "value": "。・゚(゚><゚)゚・。" - }, - { - "category": "sadness", - "value": "( ╥ω╥ )" - }, - { - "category": "sadness", - "value": "(╯_╰)" - }, - { - "category": "sadness", - "value": "(╥_╥)" - }, - { - "category": "sadness", - "value": ".。・゚゚・(>_<)・゚゚・。." - }, - { - "category": "sadness", - "value": "(/ˍ・、)" - }, - { - "category": "sadness", - "value": "(ノ_<、)" - }, - { - "category": "sadness", - "value": "(╥﹏╥)" - }, - { - "category": "sadness", - "value": "。゚(。ノωヽ。)゚。" - }, - { - "category": "sadness", - "value": "(つω`。)" - }, - { - "category": "sadness", - "value": "(。T ω T。)" - }, - { - "category": "sadness", - "value": "(ノω・、)" - }, - { - "category": "sadness", - "value": "・゚・(。>ω<。)・゚・" - }, - { - "category": "sadness", - "value": "(T_T)" - }, - { - "category": "sadness", - "value": "(>_<)" - }, - { - "category": "sadness", - "value": "(っ˘̩╭╮˘̩)っ" - }, - { - "category": "sadness", - "value": "。゚・ (>﹏<) ・゚。" - }, - { - "category": "sadness", - "value": "o(〒﹏〒)o" - }, - { - "category": "sadness", - "value": "(。•́︿•̀。)" - }, - { - "category": "sadness", - "value": "(ಥ﹏ಥ)" - }, - { - "category": "sadness", - "value": "(ಡ‸ಡ)" - }, - { - "category": "pain", - "value": "~(>_<~)" - }, - { - "category": "pain", - "value": "☆⌒(> _ <)" - }, - { - "category": "pain", - "value": "☆⌒(>。<)" - }, - { - "category": "pain", - "value": "(☆_@)" - }, - { - "category": "pain", - "value": "(×_×)" - }, - { - "category": "pain", - "value": "(x_x)" - }, - { - "category": "pain", - "value": "(×_×)⌒☆" - }, - { - "category": "pain", - "value": "(x_x)⌒☆" - }, - { - "category": "pain", - "value": "(×﹏×)" - }, - { - "category": "pain", - "value": "☆(#××)" - }, - { - "category": "pain", - "value": "(+_+)" - }, - { - "category": "pain", - "value": "[ ± _ ± ]" - }, - { - "category": "pain", - "value": "٩(× ×)۶" - }, - { - "category": "pain", - "value": "_:(´ཀ`」 ∠):_" - }, - { - "category": "pain", - "value": "(メ﹏メ)" - }, - { - "category": "fear", - "value": "(ノωヽ)" - }, - { - "category": "fear", - "value": "(/。\)" - }, - { - "category": "fear", - "value": "(ノ_ヽ)" - }, - { - "category": "fear", - "value": "..・ヾ(。><)シ" - }, - { - "category": "fear", - "value": "(″ロ゛)" - }, - { - "category": "fear", - "value": "(;;;*_*)" - }, - { - "category": "fear", - "value": "(・人・)" - }, - { - "category": "fear", - "value": "\(〇_o)/" - }, - { - "category": "fear", - "value": "(/ω\)" - }, - { - "category": "fear", - "value": "(/_\)" - }, - { - "category": "fear", - "value": "〜(><)〜" - }, - { - "category": "fear", - "value": "Σ(°△°|||)︴" - }, - { - "category": "fear", - "value": "(((><)))" - }, - { - "category": "fear", - "value": "{{ (>_<) }}" - }, - { - "category": "fear", - "value": "\(º □ º l|l)/" - }, - { - "category": "fear", - "value": "〣( ºΔº )〣" - }, - { - "category": "fear", - "value": "▓▒░(°◡°)░▒▓" - }, - { - "category": "indifference", - "value": "ヽ(ー_ー )ノ" - }, - { - "category": "indifference", - "value": "ヽ(´ー` )┌" - }, - { - "category": "indifference", - "value": "┐(‘~` )┌" - }, - { - "category": "indifference", - "value": "ヽ(  ̄д ̄)ノ" - }, - { - "category": "indifference", - "value": "┐( ̄ヘ ̄)┌" - }, - { - "category": "indifference", - "value": "ヽ( ̄~ ̄ )ノ" - }, - { - "category": "indifference", - "value": "╮( ̄_ ̄)╭" - }, - { - "category": "indifference", - "value": "ヽ(ˇヘˇ)ノ" - }, - { - "category": "indifference", - "value": "┐( ̄~ ̄)┌" - }, - { - "category": "indifference", - "value": "┐(︶▽︶)┌" - }, - { - "category": "indifference", - "value": "╮( ̄~ ̄)╭" - }, - { - "category": "indifference", - "value": "¯_(ツ)_/¯" - }, - { - "category": "indifference", - "value": "┐( ´ д ` )┌" - }, - { - "category": "indifference", - "value": "╮(︶︿︶)╭" - }, - { - "category": "indifference", - "value": "┐( ̄∀ ̄)┌" - }, - { - "category": "indifference", - "value": "┐( ˘ 、 ˘ )┌" - }, - { - "category": "indifference", - "value": "╮(︶▽︶)╭" - }, - { - "category": "indifference", - "value": "╮( ˘ 、 ˘ )╭" - }, - { - "category": "indifference", - "value": "┐( ˘_˘ )┌" - }, - { - "category": "indifference", - "value": "╮( ˘_˘ )╭" - }, - { - "category": "indifference", - "value": "┐( ̄ヮ ̄)┌" - }, - { - "category": "indifference", - "value": "ᕕ( ᐛ )ᕗ" - }, - { - "category": "indifference", - "value": "┐(シ)┌" - }, - { - "category": "confusion", - "value": "( ̄ω ̄;)" - }, - { - "category": "confusion", - "value": "σ( ̄、 ̄〃)" - }, - { - "category": "confusion", - "value": "( ̄~ ̄;)" - }, - { - "category": "confusion", - "value": "(-_-;)・・・" - }, - { - "category": "confusion", - "value": "┐('~`;)┌" - }, - { - "category": "confusion", - "value": "(・_・ヾ" - }, - { - "category": "confusion", - "value": "(〃 ̄ω ̄〃ゞ" - }, - { - "category": "confusion", - "value": "┐( ̄ヘ ̄;)┌" - }, - { - "category": "confusion", - "value": "(・_・;)" - }, - { - "category": "confusion", - "value": "( ̄_ ̄)・・・" - }, - { - "category": "confusion", - "value": "╮( ̄ω ̄;)╭" - }, - { - "category": "confusion", - "value": "(¯ . ¯;)" - }, - { - "category": "confusion", - "value": "(@_@)" - }, - { - "category": "confusion", - "value": "(・・;)ゞ" - }, - { - "category": "confusion", - "value": "Σ( ̄。 ̄ノ)" - }, - { - "category": "confusion", - "value": "(・・ ) ?" - }, - { - "category": "confusion", - "value": "(•ิ_•ิ)?" - }, - { - "category": "confusion", - "value": "(◎ ◎)ゞ" - }, - { - "category": "confusion", - "value": "(ーー;)" - }, - { - "category": "confusion", - "value": "ლ(ಠ_ಠ ლ)" - }, - { - "category": "confusion", - "value": "ლ(¯ロ¯\"ლ)" - }, - { - "category": "confusion", - "value": "(¯ . ¯٥)" - }, - { - "category": "confusion", - "value": "(¯ ¯٥)" - }, - { - "category": "doubt", - "value": "(¬_¬)" - }, - { - "category": "doubt", - "value": "(→_→)" - }, - { - "category": "doubt", - "value": "(¬ ¬)" - }, - { - "category": "doubt", - "value": "(¬‿¬ )" - }, - { - "category": "doubt", - "value": "(¬_¬ )" - }, - { - "category": "doubt", - "value": "(←_←)" - }, - { - "category": "doubt", - "value": "(¬ ¬ )" - }, - { - "category": "doubt", - "value": "(¬‿¬ )" - }, - { - "category": "doubt", - "value": "(↼_↼)" - }, - { - "category": "doubt", - "value": "(⇀_⇀)" - }, - { - "category": "doubt", - "value": "(ᓀ ᓀ)" - }, - { - "category": "surprise", - "value": "w(°o°)w" - }, - { - "category": "surprise", - "value": "ヽ(°〇°)ノ" - }, - { - "category": "surprise", - "value": "Σ(O_O)" - }, - { - "category": "surprise", - "value": "Σ(°ロ°)" - }, - { - "category": "surprise", - "value": "(⊙_⊙)" - }, - { - "category": "surprise", - "value": "(o_O)" - }, - { - "category": "surprise", - "value": "(O_O;)" - }, - { - "category": "surprise", - "value": "(O.O)" - }, - { - "category": "surprise", - "value": "(°ロ°) !" - }, - { - "category": "surprise", - "value": "(o_O) !" - }, - { - "category": "surprise", - "value": "(□_□)" - }, - { - "category": "surprise", - "value": "Σ(□_□)" - }, - { - "category": "surprise", - "value": "∑(O_O;)" - }, - { - "category": "surprise", - "value": "( : ౦ ‸ ౦ : )" - }, - { - "category": "greeting", - "value": "(*・ω・)ノ" - }, - { - "category": "greeting", - "value": "( ̄▽ ̄)ノ" - }, - { - "category": "greeting", - "value": "(°▽°)/" - }, - { - "category": "greeting", - "value": "( ´ ∀ ` )ノ" - }, - { - "category": "greeting", - "value": "(^-^*)/" - }, - { - "category": "greeting", - "value": "(@´ー`)ノ゙" - }, - { - "category": "greeting", - "value": "(´• ω •`)ノ" - }, - { - "category": "greeting", - "value": "( ° ∀ ° )ノ゙" - }, - { - "category": "greeting", - "value": "ヾ(*'▽'*)" - }, - { - "category": "greeting", - "value": "\(⌒▽⌒)" - }, - { - "category": "greeting", - "value": "ヾ(☆▽☆)" - }, - { - "category": "greeting", - "value": "( ´ ▽ ` )ノ" - }, - { - "category": "greeting", - "value": "(^0^)ノ" - }, - { - "category": "greeting", - "value": "~ヾ(・ω・)" - }, - { - "category": "greeting", - "value": "(・∀・)ノ" - }, - { - "category": "greeting", - "value": "ヾ(・ω・*)" - }, - { - "category": "greeting", - "value": "(*°ー°)ノ" - }, - { - "category": "greeting", - "value": "(・_・)ノ" - }, - { - "category": "greeting", - "value": "(o´ω`o)ノ" - }, - { - "category": "greeting", - "value": "( ´ ▽ ` )/" - }, - { - "category": "greeting", - "value": "( ̄ω ̄)/" - }, - { - "category": "greeting", - "value": "( ´ ω ` )ノ゙" - }, - { - "category": "greeting", - "value": "(⌒ω⌒)ノ" - }, - { - "category": "greeting", - "value": "(o^ ^o)/" - }, - { - "category": "greeting", - "value": "(≧▽≦)/" - }, - { - "category": "greeting", - "value": "(✧∀✧)/" - }, - { - "category": "greeting", - "value": "(o´▽`o)ノ" - }, - { - "category": "greeting", - "value": "( ̄▽ ̄)/" - }, - { - "category": "hugging", - "value": "(づ ̄ ³ ̄)づ" - }, - { - "category": "hugging", - "value": "(つ≧▽≦)つ" - }, - { - "category": "hugging", - "value": "(つ✧ω✧)つ" - }, - { - "category": "hugging", - "value": "(づ ◕‿◕ )づ" - }, - { - "category": "hugging", - "value": "(⊃。•́‿•̀。)⊃" - }, - { - "category": "hugging", - "value": "(つ . •́ _ʖ •̀ .)つ" - }, - { - "category": "hugging", - "value": "(っಠ‿ಠ)っ" - }, - { - "category": "hugging", - "value": "(づ◡﹏◡)づ" - }, - { - "category": "hugging", - "value": "⊂(´• ω •`⊂)" - }, - { - "category": "hugging", - "value": "⊂(・ω・*⊂)" - }, - { - "category": "hugging", - "value": "⊂( ̄▽ ̄)⊃" - }, - { - "category": "hugging", - "value": "⊂( ´ ▽ ` )⊃" - }, - { - "category": "hugging", - "value": "( ~*-*)~" - }, - { - "category": "hugging", - "value": "(。•̀ᴗ-)✧" - }, - { - "category": "winking", - "value": "(^_~)" - }, - { - "category": "winking", - "value": "( ゚o⌒)" - }, - { - "category": "winking", - "value": "(^_-)≡☆" - }, - { - "category": "winking", - "value": "(^ω~)" - }, - { - "category": "winking", - "value": "(>ω^)" - }, - { - "category": "winking", - "value": "(~人^)" - }, - { - "category": "winking", - "value": "(^_-)" - }, - { - "category": "winking", - "value": "( -_・)" - }, - { - "category": "winking", - "value": "(^_<)〜☆" - }, - { - "category": "winking", - "value": "(^人<)〜☆" - }, - { - "category": "winking", - "value": "☆⌒(≧▽​° )" - }, - { - "category": "winking", - "value": "☆⌒(ゝ。∂)" - }, - { - "category": "winking", - "value": "(^_<)" - }, - { - "category": "winking", - "value": "(^_−)☆" - }, - { - "category": "winking", - "value": "(・ω<)☆" - }, - { - "category": "winking", - "value": "(^.~)☆" - }, - { - "category": "winking", - "value": "(^.~)" - }, - { - "category": "apologizing", - "value": "m(_ _)m" - }, - { - "category": "apologizing", - "value": "(シ_ _)シ" - }, - { - "category": "apologizing", - "value": "m(. .)m" - }, - { - "category": "apologizing", - "value": "<(_ _)>" - }, - { - "category": "apologizing", - "value": "人(_ _*)" - }, - { - "category": "apologizing", - "value": "(*_ _)人" - }, - { - "category": "apologizing", - "value": "m(_ _;m)" - }, - { - "category": "apologizing", - "value": "(m;_ _)m" - }, - { - "category": "apologizing", - "value": "(シ. .)シ" - }, - { - "category": "nosebleeding", - "value": "(* ̄ii ̄)" - }, - { - "category": "nosebleeding", - "value": "( ̄ハ ̄*)" - }, - { - "category": "nosebleeding", - "value": "( ̄ハ ̄)" - }, - { - "category": "nosebleeding", - "value": "(^་།^)" - }, - { - "category": "nosebleeding", - "value": "(^〃^)" - }, - { - "category": "nosebleeding", - "value": "( ̄ ¨ヽ ̄)" - }, - { - "category": "nosebleeding", - "value": "( ̄ ; ̄)" - }, - { - "category": "nosebleeding", - "value": "( ̄ ;; ̄)" - }, - { - "category": "hiding", - "value": "|・ω・)" - }, - { - "category": "hiding", - "value": "ヘ(・_|" - }, - { - "category": "hiding", - "value": "|ω・)ノ" - }, - { - "category": "hiding", - "value": "ヾ(・|" - }, - { - "category": "hiding", - "value": "|д・)" - }, - { - "category": "hiding", - "value": "|_ ̄))" - }, - { - "category": "hiding", - "value": "|▽//)" - }, - { - "category": "hiding", - "value": "┬┴┬┴┤(・_├┬┴┬┴" - }, - { - "category": "hiding", - "value": "┬┴┬┴┤・ω・)ノ" - }, - { - "category": "hiding", - "value": "┬┴┬┴┤( ͡° ͜ʖ├┬┴┬┴" - }, - { - "category": "hiding", - "value": "┬┴┬┴┤(・_├┬┴┬┴" - }, - { - "category": "hiding", - "value": "|_・)" - }, - { - "category": "hiding", - "value": "|・д・)ノ" - }, - { - "category": "hiding", - "value": "|ʘ‿ʘ)╯" - }, - { - "category": "writing", - "value": "__φ(..)" - }, - { - "category": "writing", - "value": "(  ̄ー ̄)φ__" - }, - { - "category": "writing", - "value": "__φ(。。)" - }, - { - "category": "writing", - "value": "__φ(..;)" - }, - { - "category": "writing", - "value": "ヾ( `ー´)シφ__" - }, - { - "category": "writing", - "value": "__〆( ̄ー ̄ )" - }, - { - "category": "writing", - "value": "....φ(・∀・*)" - }, - { - "category": "writing", - "value": "___〆(・∀・)" - }, - { - "category": "writing", - "value": "( ^▽^)ψ__" - }, - { - "category": "writing", - "value": "....φ(︶▽︶)φ...." - }, - { - "category": "writing", - "value": "( . .)φ__" - }, - { - "category": "writing", - "value": "__φ(◎◎ヘ)" - }, - { - "category": "running", - "value": "☆ミ(o*・ω・)ノ" - }, - { - "category": "running", - "value": "C= C= C= C= C=┌(;・ω・)┘" - }, - { - "category": "running", - "value": "─=≡Σ((( つ><)つ" - }, - { - "category": "running", - "value": "ε=ε=ε=ε=┌(; ̄▽ ̄)┘" - }, - { - "category": "running", - "value": "ε=ε=┌( >_<)┘" - }, - { - "category": "running", - "value": "C= C= C= C=┌( `ー´)┘" - }, - { - "category": "running", - "value": "ε===(っ≧ω≦)っ" - }, - { - "category": "running", - "value": "ヽ( ̄д ̄;)ノ=3=3=3" - }, - { - "category": "running", - "value": "。。。ミヽ(。><)ノ" - }, - { - "category": "sleeping", - "value": "[(--)]..zzZ" - }, - { - "category": "sleeping", - "value": "(-_-) zzZ" - }, - { - "category": "sleeping", - "value": "(∪。∪)。。。zzZ" - }, - { - "category": "sleeping", - "value": "(-ω-) zzZ" - }, - { - "category": "sleeping", - "value": "( ̄o ̄) zzZZzzZZ" - }, - { - "category": "sleeping", - "value": "(( _ _ ))..zzzZZ" - }, - { - "category": "sleeping", - "value": "( ̄ρ ̄)..zzZZ" - }, - { - "category": "sleeping", - "value": "(-.-)...zzz" - }, - { - "category": "sleeping", - "value": "(_ _*) Z z z" - }, - { - "category": "cat", - "value": "(=^・ω・^=)" - }, - { - "category": "cat", - "value": "(=^・ェ・^=)" - }, - { - "category": "cat", - "value": "(=①ω①=)" - }, - { - "category": "cat", - "value": "( =ω=)..nyaa" - }, - { - "category": "cat", - "value": "(= ; ェ ; =)" - }, - { - "category": "cat", - "value": "(=`ω´=)" - }, - { - "category": "cat", - "value": "(=^‥^=)" - }, - { - "category": "cat", - "value": "( =ノωヽ=)" - }, - { - "category": "cat", - "value": "(=⌒‿‿⌒=)" - }, - { - "category": "cat", - "value": "(=^ ◡ ^=)" - }, - { - "category": "cat", - "value": "(=^-ω-^=)" - }, - { - "category": "cat", - "value": "ヾ(=`ω´=)ノ”" - }, - { - "category": "cat", - "value": "(^• ω •^)" - }, - { - "category": "cat", - "value": "(/ =ω=)/" - }, - { - "category": "cat", - "value": "ฅ(•ㅅ•❀)ฅ" - }, - { - "category": "cat", - "value": "ฅ(• ɪ •)ฅ" - }, - { - "category": "cat", - "value": "ଲ(ⓛ ω ⓛ)ଲ" - }, - { - "category": "cat", - "value": "(^=◕ᴥ◕=^)" - }, - { - "category": "cat", - "value": "( =ω= )" - }, - { - "category": "cat", - "value": "(^˵◕ω◕˵^)" - }, - { - "category": "cat", - "value": "(^◔ᴥ◔^)" - }, - { - "category": "cat", - "value": "(^◕ᴥ◕^)" - }, - { - "category": "cat", - "value": "ต(=ω=)ต" - }, - { - "category": "cat", - "value": "( Φ ω Φ )" - }, - { - "category": "cat", - "value": "ฅ(^◕ᴥ◕^)ฅ" - }, - { - "category": "bear", - "value": "( ´(エ)ˋ )" - }, - { - "category": "bear", - "value": "(* ̄(エ) ̄*)" - }, - { - "category": "bear", - "value": "ヽ( ̄(エ) ̄)ノ" - }, - { - "category": "bear", - "value": "(/ ̄(エ) ̄)/" - }, - { - "category": "bear", - "value": "( ̄(エ) ̄)" - }, - { - "category": "bear", - "value": "ヽ( ˋ(エ)´ )ノ" - }, - { - "category": "bear", - "value": "⊂( ̄(エ) ̄)⊃" - }, - { - "category": "bear", - "value": "(/(エ)\)" - }, - { - "category": "bear", - "value": "⊂(´(ェ)ˋ)⊃" - }, - { - "category": "bear", - "value": "(/-(エ)-\)" - }, - { - "category": "bear", - "value": "(/°(エ)°)/" - }, - { - "category": "bear", - "value": "ʕ ᵔᴥᵔ ʔ" - }, - { - "category": "bear", - "value": "ʕ •ᴥ• ʔ" - }, - { - "category": "bear", - "value": "ʕ •̀ ω •́ ʔ" - }, - { - "category": "bear", - "value": "ʕ •̀ o •́ ʔ" - }, - { - "category": "bear", - "value": "ʕಠᴥಠʔ" - }, - { - "category": "dog", - "value": "∪^ェ^∪" - }, - { - "category": "dog", - "value": "∪・ω・∪" - }, - { - "category": "dog", - "value": "∪ ̄- ̄∪" - }, - { - "category": "dog", - "value": "∪・ェ・∪" - }, - { - "category": "dog", - "value": "U^皿^U" - }, - { - "category": "dog", - "value": "UTェTU" - }, - { - "category": "dog", - "value": "U^ェ^U" - }, - { - "category": "dog", - "value": "V●ᴥ●V" - }, - { - "category": "dog", - "value": "U・ᴥ・U" - }, - { - "category": "rabbit", - "value": "/(≧ x ≦)\" - }, - { - "category": "rabbit", - "value": "/(・ × ・)\" - }, - { - "category": "rabbit", - "value": "/(=´x`=)\" - }, - { - "category": "rabbit", - "value": "/(^ x ^)\" - }, - { - "category": "rabbit", - "value": "/(=・ x ・=)\" - }, - { - "category": "rabbit", - "value": "/(^ × ^)\" - }, - { - "category": "rabbit", - "value": "/(>×<)\" - }, - { - "category": "rabbit", - "value": "/(˃ᆺ˂)\" - }, - { - "category": "pig", - "value": "( ´(00)ˋ )" - }, - { - "category": "pig", - "value": "( ̄(ω) ̄)" - }, - { - "category": "pig", - "value": "ヽ( ˋ(00)´ )ノ" - }, - { - "category": "pig", - "value": "( ´(oo)ˋ )" - }, - { - "category": "pig", - "value": "\( ̄(oo) ̄)/" - }, - { - "category": "pig", - "value": "。゚(゚´(00)`゚)゚。" - }, - { - "category": "pig", - "value": "( ̄(00) ̄)" - }, - { - "category": "pig", - "value": "(ˆ(oo)ˆ)" - }, - { - "category": "bird", - "value": "( ̄Θ ̄)" - }, - { - "category": "bird", - "value": "(`・Θ・´)" - }, - { - "category": "bird", - "value": "( ˋ Θ ´ )" - }, - { - "category": "bird", - "value": "(◉Θ◉)" - }, - { - "category": "bird", - "value": "\( ˋ Θ ´ )/" - }, - { - "category": "bird", - "value": "(・θ・)" - }, - { - "category": "bird", - "value": "(・Θ・)" - }, - { - "category": "bird", - "value": "ヾ( ̄◇ ̄)ノ〃" - }, - { - "category": "bird", - "value": "(・Θ・)" - }, - { - "category": "fish", - "value": "(°)#))<<" - }, - { - "category": "fish", - "value": "<・ )))><<" - }, - { - "category": "fish", - "value": "ζ°)))彡" - }, - { - "category": "fish", - "value": ">°))))彡" - }, - { - "category": "fish", - "value": "(°))<<" - }, - { - "category": "fish", - "value": ">^)))<~~" - }, - { - "category": "fish", - "value": "≧( ° ° )≦" - }, - { - "category": "spider", - "value": "/╲/╭(ఠఠ益ఠఠ)╮/╱" - }, - { - "category": "spider", - "value": "/╲/╭(ರರ⌓ರರ)╮/╱" - }, - { - "category": "spider", - "value": "/╲/╭༼ ººل͟ºº ༽╮/╱" - }, - { - "category": "spider", - "value": "/╲/╭( ͡°͡° ͜ʖ ͡°͡°)╮/╱" - }, - { - "category": "spider", - "value": "/╲/╭[ ᴼᴼ ౪ ᴼᴼ]╮/╱" - }, - { - "category": "spider", - "value": "/╲/( •̀ ω •́ )/╱" - }, - { - "category": "spider", - "value": "/╲/╭[☉﹏☉]╮/╱" - }, - { - "category": "friends", - "value": "ヾ(・ω・)メ(・ω・)ノ" - }, - { - "category": "friends", - "value": "ヽ(∀° )人( °∀)ノ" - }, - { - "category": "friends", - "value": "ヽ( ⌒o⌒)人(⌒-⌒ )ノ" - }, - { - "category": "friends", - "value": "(*^ω^)八(⌒▽⌒)八(-‿‿- )ヽ" - }, - { - "category": "friends", - "value": "\(^∀^)メ(^∀^)ノ" - }, - { - "category": "friends", - "value": "ヾ( ̄ー ̄(≧ω≦*)ゝ" - }, - { - "category": "friends", - "value": "ヽ( ⌒ω⌒)人(=^‥^= )ノ" - }, - { - "category": "friends", - "value": "ヽ(≧◡≦)八(o^ ^o)ノ" - }, - { - "category": "friends", - "value": "(*・∀・)爻(・∀・*)" - }, - { - "category": "friends", - "value": "。*:☆(・ω・人・ω・)。:゜☆。" - }, - { - "category": "friends", - "value": "o(^^o)(o^^o)(o^^o)(o^^)o" - }, - { - "category": "friends", - "value": "((( ̄( ̄( ̄▽ ̄) ̄) ̄)))" - }, - { - "category": "friends", - "value": "(°(°ω(°ω°(☆ω☆)°ω°)ω°)°)" - }, - { - "category": "friends", - "value": "ヾ(・ω・`)ノヾ(´・ω・)ノ゛" - }, - { - "category": "friends", - "value": "Ψ( `∀)(∀´ )Ψ" - }, - { - "category": "friends", - "value": "(っ˘▽˘)(˘▽˘)˘▽˘ς)" - }, - { - "category": "friends", - "value": "(((*°▽°*)八(*°▽°*)))" - }, - { - "category": "friends", - "value": "☆ヾ(*´・∀・)ノヾ(・∀・`*)ノ☆" - }, - { - "category": "friends", - "value": "(*^ω^)人(^ω^*)" - }, - { - "category": "friends", - "value": "٩(๑・ิᴗ・ิ)۶٩(・ิᴗ・ิ๑)۶" - }, - { - "category": "friends", - "value": "(☞°ヮ°)☞ ☜(°ヮ°☜)" - }, - { - "category": "friends", - "value": "\(▽ ̄ ( ̄▽ ̄) /  ̄▽)/" - }, - { - "category": "friends", - "value": "( ˙▿˙ )/( ˙▿˙ )/" - }, - { - "category": "enemies", - "value": "ヽ( ・∀・)ノ_θ彡☆Σ(ノ `Д´)ノ" - }, - { - "category": "enemies", - "value": "(*´∇`)┌θ☆(ノ>_<)ノ" - }, - { - "category": "enemies", - "value": "(  ̄ω ̄)ノ゙⌒☆ミ(o _ _)o" - }, - { - "category": "enemies", - "value": "(*`0´)θ☆(メ°皿°)ノ" - }, - { - "category": "enemies", - "value": "(o¬‿¬o )...☆ミ(*x_x)" - }, - { - "category": "enemies", - "value": "(╬ ̄皿 ̄)=○#( ̄#)3 ̄)" - }, - { - "category": "enemies", - "value": "(; -_-)――――――C<―_-)" - }, - { - "category": "enemies", - "value": "<(  ̄︿ ̄)︵θ︵θ︵☆(>口<-)" - }, - { - "category": "enemies", - "value": "( ̄ε(# ̄)☆╰╮o( ̄▽ ̄///)" - }, - { - "category": "enemies", - "value": "ヽ(>_<ヽ) ―⊂|=0ヘ(^‿^ )" - }, - { - "category": "enemies", - "value": "ヘ(>_<ヘ) ¬o( ̄‿ ̄メ)" - }, - { - "category": "enemies", - "value": ",,(((  ̄□)_/ \_(○ ̄ ))),," - }, - { - "category": "enemies", - "value": "(҂` ロ ´)︻デ═一 \(º □ º l|l)/" - }, - { - "category": "enemies", - "value": "(╯°Д°)╯︵ /(.□ . \)" - }, - { - "category": "enemies", - "value": "(¬_¬'')ԅ( ̄ε ̄ԅ)" - }, - { - "category": "enemies", - "value": "/( .□.)\ ︵╰(°益°)╯︵ /(.□. /)" - }, - { - "category": "enemies", - "value": "(ノ-.-)ノ….((((((((((((●~* ( >_<)" - }, - { - "category": "enemies", - "value": "!!(メ ̄  ̄)_θ☆°0°)/" - }, - { - "category": "enemies", - "value": "(`⌒*)O-(`⌒´Q)" - }, - { - "category": "enemies", - "value": "(((ง’ω’)و三 ง’ω’)ڡ≡ ☆⌒ミ((x_x)" - }, - { - "category": "enemies", - "value": "(งಠ_ಠ)ง σ( •̀ ω •́ σ)" - }, - { - "category": "enemies", - "value": "(っ•﹏•)っ ✴==≡눈٩(`皿´҂)ง" - }, - { - "category": "enemies", - "value": "(「• ω •)「 (⌒ω⌒`)" - }, - { - "category": "enemies", - "value": "( °ᴗ°)~ð (/❛o❛)" - }, - { - "category": "weapons", - "value": "( ・∀・)・・・--------☆" - }, - { - "category": "weapons", - "value": "(/-_・)/D・・・・・------ →" - }, - { - "category": "weapons", - "value": "(^ω^)ノ゙(((((((((●~*" - }, - { - "category": "weapons", - "value": "( -ω-)/占~~~~~" - }, - { - "category": "weapons", - "value": "(/・・)ノ   (( く ((へ" - }, - { - "category": "weapons", - "value": "―⊂|=0ヘ(^^ )" - }, - { - "category": "weapons", - "value": "○∞∞∞∞ヽ(^ー^ )" - }, - { - "category": "weapons", - "value": "(; ・_・)――――C" - }, - { - "category": "weapons", - "value": "(ಠ o ಠ)¤=[]:::::>" - }, - { - "category": "weapons", - "value": "(*^^)/~~~~~~~~~~◎" - }, - { - "category": "weapons", - "value": "¬o( ̄- ̄メ)" - }, - { - "category": "weapons", - "value": "―(T_T)→" - }, - { - "category": "weapons", - "value": "(((  ̄□)_/" - }, - { - "category": "weapons", - "value": "(メ` ロ ´)︻デ═一" - }, - { - "category": "weapons", - "value": "( ´-ω・)︻┻┳══━一" - }, - { - "category": "weapons", - "value": "(メ ̄▽ ̄)︻┳═一" - }, - { - "category": "weapons", - "value": "✴==≡눈٩(`皿´҂)ง" - }, - { - "category": "weapons", - "value": "Q(`⌒´Q)" - }, - { - "category": "magic", - "value": "(ノ ˘_˘)ノ ζ|||ζ ζ|||ζ ζ|||ζ" - }, - { - "category": "magic", - "value": "(ノ≧∀≦)ノ ‥…━━━★" - }, - { - "category": "magic", - "value": "(ノ>ω<)ノ :。・:*:・゚’★,。・:*:・゚’☆" - }, - { - "category": "magic", - "value": "(ノ°∀°)ノ⌒・*:.。. .。.:*・゜゚・*☆" - }, - { - "category": "magic", - "value": "╰( ͡° ͜ʖ ͡° )つ──☆*:・゚" - }, - { - "category": "magic", - "value": "(# ̄□ ̄)o━∈・・━━━━☆" - }, - { - "category": "magic", - "value": "(⊃。•́‿•̀。)⊃━✿✿✿✿✿✿" - }, - { - "category": "magic", - "value": "(∩ᄑ_ᄑ)⊃━☆゚*・。*・:≡( ε:)" - }, - { - "category": "magic", - "value": "(/ ̄ー ̄)/~~☆’.・.・:★’.・.・:☆" - }, - { - "category": "magic", - "value": "(∩` ロ ´)⊃━炎炎炎炎炎" - }, - { - "category": "food", - "value": "(っ˘ڡ˘ς)" - }, - { - "category": "food", - "value": "( o˘◡˘o) ┌iii┐" - }, - { - "category": "food", - "value": "( ’ω’)旦~~" - }, - { - "category": "food", - "value": "( ˘▽˘)っ♨" - }, - { - "category": "food", - "value": "♨o(>_<)o♨" - }, - { - "category": "food", - "value": "( ・ω・)o-{{[〃]}}" - }, - { - "category": "food", - "value": "( ・ω・)⊃-[二二]" - }, - { - "category": "food", - "value": "( ・・)つ―{}@{}@{}-" - }, - { - "category": "food", - "value": "( ・・)つ-●●●" - }, - { - "category": "food", - "value": "(*´ー`)旦 旦( ̄ω ̄*)" - }, - { - "category": "food", - "value": "(*´з`)口゚。゚口(・∀・ )" - }, - { - "category": "food", - "value": "( o^ ^o)且 且(´ω`*)" - }, - { - "category": "food", - "value": "(  ̄▽ ̄)[] [](≧▽≦ )" - }, - { - "category": "food", - "value": "( *^^)o∀*∀o(^^* )" - }, - { - "category": "food", - "value": "( ^^)_旦~~  ~~U_(^^ )" - }, - { - "category": "food", - "value": "(* ̄▽ ̄)旦 且(´∀`*)" - }, - { - "category": "food", - "value": "-●●●-c(・・ )" - }, - { - "category": "food", - "value": "( ・・)つ―●○◎-" - }, - { - "category": "music", - "value": "ヾ(´〇`)ノ♪♪♪" - }, - { - "category": "music", - "value": "ヘ( ̄ω ̄ヘ)" - }, - { - "category": "music", - "value": "(〜 ̄▽ ̄)〜" - }, - { - "category": "music", - "value": "〜( ̄▽ ̄〜)" - }, - { - "category": "music", - "value": "ヽ(o´∀`)ノ♪♬" - }, - { - "category": "music", - "value": "(ノ≧∀≦)ノ" - }, - { - "category": "music", - "value": "♪ヽ(^^ヽ)♪" - }, - { - "category": "music", - "value": "♪(/_ _ )/♪" - }, - { - "category": "music", - "value": "♪♬((d⌒ω⌒b))♬♪" - }, - { - "category": "music", - "value": "└( ̄- ̄└))" - }, - { - "category": "music", - "value": "((┘ ̄ω ̄)┘" - }, - { - "category": "music", - "value": "√( ̄‥ ̄√)" - }, - { - "category": "music", - "value": "└(^^)┐" - }, - { - "category": "music", - "value": "┌(^^)┘" - }, - { - "category": "music", - "value": "\( ̄▽ ̄)\" - }, - { - "category": "music", - "value": "/( ̄▽ ̄)/" - }, - { - "category": "music", - "value": "( ̄▽ ̄)/♫•*¨*•.¸¸♪" - }, - { - "category": "music", - "value": "(^_^♪)" - }, - { - "category": "music", - "value": "(~˘▽˘)~" - }, - { - "category": "music", - "value": "~(˘▽˘~)" - }, - { - "category": "music", - "value": "ヾ(⌐■_■)ノ♪" - }, - { - "category": "music", - "value": "(〜 ̄△ ̄)〜" - }, - { - "category": "music", - "value": "(~‾▽‾)~" - }, - { - "category": "music", - "value": "~(˘▽˘)~" - }, - { - "category": "music", - "value": "乁( • ω •乁)" - }, - { - "category": "music", - "value": "(「• ω •)「" - }, - { - "category": "music", - "value": "⁽⁽◝( • ω • )◜⁾⁾" - }, - { - "category": "music", - "value": "✺◟( • ω • )◞✺" - }, - { - "category": "music", - "value": "♬♫♪◖(● o ●)◗♪♫♬" - }, - { - "category": "music", - "value": "( ˘ ɜ˘) ♬♪♫" - }, - { - "category": "music", - "value": "♪♪♪ ヽ(ˇ∀ˇ )ゞ" - }, - { - "category": "music", - "value": "(ˇ▽ˇ)ノ♪♬♫" - }, - { - "category": "games", - "value": "( ^^)p_____|_o____q(^^ )" - }, - { - "category": "games", - "value": "(/o^)/ °⊥ \(^o\)" - }, - { - "category": "games", - "value": "!(;゚o゚)o/ ̄ ̄ ̄ ̄ ̄ ̄ ̄~ >゚))))彡" - }, - { - "category": "games", - "value": "ヽ(^o^)ρ┳┻┳°σ(^o^)ノ" - }, - { - "category": "games", - "value": "(/_^)/  ● \(^_\)" - }, - { - "category": "games", - "value": "( (≡|≡))_/ \_((≡|≡) )" - }, - { - "category": "games", - "value": "( ノ-_-)ノ゙_□ VS □_ヾ(^-^ヽ)" - }, - { - "category": "games", - "value": "ヽ(;^ ^)ノ゙ ......___〇" - }, - { - "category": "games", - "value": "(=O*_*)=O Q(*_*Q)" - }, - { - "category": "games", - "value": "Ю ○三 \( ̄^ ̄\)" - }, - { - "category": "faces", - "value": "( ͡° ͜ʖ ͡°)" - }, - { - "category": "faces", - "value": "( ͡° ʖ̯ ͡°)" - }, - { - "category": "faces", - "value": "( ͠° ͟ʖ ͡°)" - }, - { - "category": "faces", - "value": "( ͡ᵔ ͜ʖ ͡ᵔ)" - }, - { - "category": "faces", - "value": "( . •́ _ʖ •̀ .)" - }, - { - "category": "faces", - "value": "( ఠ ͟ʖ ఠ)" - }, - { - "category": "faces", - "value": "( ͡ಠ ʖ̯ ͡ಠ)" - }, - { - "category": "faces", - "value": "( ಠ ʖ̯ ಠ)" - }, - { - "category": "faces", - "value": "( ಠ ͜ʖ ಠ)" - }, - { - "category": "faces", - "value": "( ಥ ʖ̯ ಥ)" - }, - { - "category": "faces", - "value": "( ͡• ͜ʖ ͡• )" - }, - { - "category": "faces", - "value": "( ・ิ ͜ʖ ・ิ)" - }, - { - "category": "faces", - "value": "( ͡ ͜ʖ ͡ )" - }, - { - "category": "faces", - "value": "(≖ ͜ʖ≖)" - }, - { - "category": "faces", - "value": "(ʘ ʖ̯ ʘ)" - }, - { - "category": "faces", - "value": "(ʘ ͟ʖ ʘ)" - }, - { - "category": "faces", - "value": "(ʘ ͜ʖ ʘ)" - }, - { - "category": "faces", - "value": "(;´༎ຶٹ༎ຶ`)" - }, - { - "category": "special", - "value": "٩(ˊ〇ˋ*)و" - }, - { - "category": "special", - "value": "( ̄^ ̄)ゞ" - }, - { - "category": "special", - "value": "(-‸ლ)" - }, - { - "category": "special", - "value": "(╯°益°)╯彡┻━┻" - }, - { - "category": "special", - "value": "(╮°-°)╮┳━━┳ ( ╯°□°)╯ ┻━━┻" - }, - { - "category": "special", - "value": "┬─┬ノ( º _ ºノ)" - }, - { - "category": "special", - "value": "(oT-T)尸" - }, - { - "category": "special", - "value": "( ͡° ͜ʖ ͡°)" - }, - { - "category": "special", - "value": "[̲̅$̲̅(̲̅ ͡° ͜ʖ ͡°̲̅)̲̅$̲̅]" - }, - { - "category": "special", - "value": "(ಠ_ಠ)" - }, - { - "category": "special", - "value": "౦0o 。 (‾́。‾́ )y~~" - }, - { - "category": "special", - "value": "( ̄﹃ ̄)" - }, - { - "category": "special", - "value": "(x(x_(x_x(O_o)x_x)_x)x)" - }, - { - "category": "special", - "value": "( ・ω・)☞" - }, - { - "category": "special", - "value": "(⌐■_■)" - }, - { - "category": "special", - "value": "(◕‿◕✿)" - }, - { - "category": "special", - "value": "(  ̄.)o-  【 TV 】" - }, - { - "category": "special", - "value": "`、ヽ`ヽ`、ヽ(ノ><)ノ `、ヽ`☂ヽ`、ヽ" - }, - { - "category": "special", - "value": "‿︵‿︵‿︵‿ヽ(°□° )ノ︵‿︵‿︵‿︵" - }, - { - "category": "special", - "value": "( • )( • )ԅ(≖‿≖ԅ)" - }, - { - "category": "special", - "value": "( ^▽^)っ✂╰⋃╯" - }, - { - "category": "special", - "value": "〜〜(/ ̄▽)/ 〜ф" - }, - { - "category": "special", - "value": "ଘ(੭ˊᵕˋ)੭* ੈ✩‧₊˚" - }, - { - "category": "special", - "value": "ଘ(੭ˊ꒳​ˋ)੭✧" - }, - { - "category": "special", - "value": "_(:3 」∠)_" - }, - { - "category": "special", - "value": "∠( ᐛ 」∠)_" - } - ] + "kaomoji": [ + { + "category": "joy", + "value": "(* ^ ω ^)" + }, + { + "category": "joy", + "value": "(´ ∀ ` *)" + }, + { + "category": "joy", + "value": "٩(◕‿◕。)۶" + }, + { + "category": "joy", + "value": "☆*:.。.o(≧▽≦)o.。.:*☆" + }, + { + "category": "joy", + "value": "(o^▽^o)" + }, + { + "category": "joy", + "value": "(⌒▽⌒)☆" + }, + { + "category": "joy", + "value": "<( ̄︶ ̄)>" + }, + { + "category": "joy", + "value": "。.:☆*:・'(*⌒―⌒*)))" + }, + { + "category": "joy", + "value": "ヽ(・∀・)ノ" + }, + { + "category": "joy", + "value": "(´。• ω •。`)" + }, + { + "category": "joy", + "value": "( ̄ω ̄)" + }, + { + "category": "joy", + "value": "`;:゛;`;・(°ε° )" + }, + { + "category": "joy", + "value": "(o・ω・o)" + }, + { + "category": "joy", + "value": "(@^◡^)" + }, + { + "category": "joy", + "value": "ヽ(*・ω・)ノ" + }, + { + "category": "joy", + "value": "(o_ _)ノ彡☆" + }, + { + "category": "joy", + "value": "(^人^)" + }, + { + "category": "joy", + "value": "(o´▽`o)" + }, + { + "category": "joy", + "value": "(*´▽`*)" + }, + { + "category": "joy", + "value": "。゚( ゚^∀^゚)゚。" + }, + { + "category": "joy", + "value": "( ´ ω ` )" + }, + { + "category": "joy", + "value": "(((o(*°▽°*)o)))" + }, + { + "category": "joy", + "value": "(≧◡≦)" + }, + { + "category": "joy", + "value": "(o´∀`o)" + }, + { + "category": "joy", + "value": "(´• ω •`)" + }, + { + "category": "joy", + "value": "(^▽^)" + }, + { + "category": "joy", + "value": "(⌒ω⌒)" + }, + { + "category": "joy", + "value": "∑d(°∀°d)" + }, + { + "category": "joy", + "value": "╰(▔∀▔)╯" + }, + { + "category": "joy", + "value": "(─‿‿─)" + }, + { + "category": "joy", + "value": "(*^‿^*)" + }, + { + "category": "joy", + "value": "ヽ(o^ ^o)ノ" + }, + { + "category": "joy", + "value": "(✯◡✯)" + }, + { + "category": "joy", + "value": "(◕‿◕)" + }, + { + "category": "joy", + "value": "(*≧ω≦*)" + }, + { + "category": "joy", + "value": "(☆▽☆)" + }, + { + "category": "joy", + "value": "(⌒‿⌒)" + }, + { + "category": "joy", + "value": "\(≧▽≦)/" + }, + { + "category": "joy", + "value": "ヽ(o^▽^o)ノ" + }, + { + "category": "joy", + "value": "☆ ~('▽^人)" + }, + { + "category": "joy", + "value": "(*°▽°*)" + }, + { + "category": "joy", + "value": "٩(。•́‿•̀。)۶" + }, + { + "category": "joy", + "value": "(✧ω✧)" + }, + { + "category": "joy", + "value": "ヽ(*⌒▽⌒*)ノ" + }, + { + "category": "joy", + "value": "(´。• ᵕ •。`)" + }, + { + "category": "joy", + "value": "( ´ ▽ ` )" + }, + { + "category": "joy", + "value": "( ̄▽ ̄)" + }, + { + "category": "joy", + "value": "╰(*´︶`*)╯" + }, + { + "category": "joy", + "value": "ヽ(>∀<☆)ノ" + }, + { + "category": "joy", + "value": "o(≧▽≦)o" + }, + { + "category": "joy", + "value": "(☆ω☆)" + }, + { + "category": "joy", + "value": "(っ˘ω˘ς )" + }, + { + "category": "joy", + "value": "\( ̄▽ ̄)/" + }, + { + "category": "joy", + "value": "(*¯︶¯*)" + }, + { + "category": "joy", + "value": "\(^▽^)/" + }, + { + "category": "joy", + "value": "٩(◕‿◕)۶" + }, + { + "category": "joy", + "value": "(o˘◡˘o)" + }, + { + "category": "joy", + "value": "(★ω★)/" + }, + { + "category": "joy", + "value": "(^ヮ^)/" + }, + { + "category": "joy", + "value": "(〃^▽^〃)" + }, + { + "category": "joy", + "value": "(╯✧▽✧)╯" + }, + { + "category": "joy", + "value": "o(>ω<)o" + }, + { + "category": "joy", + "value": "o( ❛ᴗ❛ )o" + }, + { + "category": "joy", + "value": "。゚(TヮT)゚。" + }, + { + "category": "joy", + "value": "( ‾́ ◡ ‾́ )" + }, + { + "category": "joy", + "value": "(ノ´ヮ`)ノ*: ・゚" + }, + { + "category": "joy", + "value": "(b ᵔ▽ᵔ)b" + }, + { + "category": "joy", + "value": "(๑˃ᴗ˂)ﻭ" + }, + { + "category": "joy", + "value": "(๑˘︶˘๑)" + }, + { + "category": "joy", + "value": "( ˙꒳​˙ )" + }, + { + "category": "joy", + "value": "(*꒦ິ꒳꒦ີ)" + }, + { + "category": "joy", + "value": "°˖✧◝(⁰▿⁰)◜✧˖°" + }, + { + "category": "joy", + "value": "(´・ᴗ・ ` )" + }, + { + "category": "joy", + "value": "(ノ◕ヮ◕)ノ*:・゚✧" + }, + { + "category": "joy", + "value": "(„• ֊ •„)" + }, + { + "category": "joy", + "value": "(.❛ ᴗ ❛.)" + }, + { + "category": "joy", + "value": "(⁀ᗢ⁀)" + }, + { + "category": "joy", + "value": "(¬‿¬ )" + }, + { + "category": "joy", + "value": "(¬‿¬ )" + }, + { + "category": "joy", + "value": "(* ̄▽ ̄)b" + }, + { + "category": "joy", + "value": "( ˙▿˙ )" + }, + { + "category": "joy", + "value": "(¯▿¯)" + }, + { + "category": "joy", + "value": "( ◕▿◕ )" + }, + { + "category": "joy", + "value": "\(٥⁀▽⁀ )/" + }, + { + "category": "joy", + "value": "(„• ᴗ •„)" + }, + { + "category": "joy", + "value": "(ᵔ◡ᵔ)" + }, + { + "category": "joy", + "value": "( ´ ▿ ` )" + }, + { + "category": "love", + "value": "(ノ´ з `)ノ" + }, + { + "category": "love", + "value": "(♡μ_μ)" + }, + { + "category": "love", + "value": "(*^^*)♡" + }, + { + "category": "love", + "value": "☆⌒ヽ(*'、^*)chu" + }, + { + "category": "love", + "value": "(♡-_-♡)" + }, + { + "category": "love", + "value": "( ̄ε ̄@)" + }, + { + "category": "love", + "value": "ヽ(♡‿♡)ノ" + }, + { + "category": "love", + "value": "( ´ ∀ `)ノ~ ♡" + }, + { + "category": "love", + "value": "(─‿‿─)♡" + }, + { + "category": "love", + "value": "(´。• ᵕ •。`) ♡" + }, + { + "category": "love", + "value": "(*♡∀♡)" + }, + { + "category": "love", + "value": "(。・//ε//・。)" + }, + { + "category": "love", + "value": "(´ ω `♡)" + }, + { + "category": "love", + "value": "♡( ◡‿◡ )" + }, + { + "category": "love", + "value": "(◕‿◕)♡" + }, + { + "category": "love", + "value": "(/▽\*)。o○♡" + }, + { + "category": "love", + "value": "(ღ˘⌣˘ღ)" + }, + { + "category": "love", + "value": "(♡°▽°♡)" + }, + { + "category": "love", + "value": "♡(。- ω -)" + }, + { + "category": "love", + "value": "♡ ~('▽^人)" + }, + { + "category": "love", + "value": "(´• ω •`) ♡" + }, + { + "category": "love", + "value": "(´ ε ` )♡" + }, + { + "category": "love", + "value": "(´。• ω •。`) ♡" + }, + { + "category": "love", + "value": "( ´ ▽ ` ).。o♡" + }, + { + "category": "love", + "value": "╰(*´︶`*)╯♡" + }, + { + "category": "love", + "value": "(*˘︶˘*).。.:*♡" + }, + { + "category": "love", + "value": "(♡˙︶˙♡)" + }, + { + "category": "love", + "value": "♡\( ̄▽ ̄)/♡" + }, + { + "category": "love", + "value": "(≧◡≦) ♡" + }, + { + "category": "love", + "value": "(⌒▽⌒)♡" + }, + { + "category": "love", + "value": "(*¯ ³¯*)♡" + }, + { + "category": "love", + "value": "(っ˘з(˘⌣˘ ) ♡" + }, + { + "category": "love", + "value": "♡ (˘▽˘>ԅ( ˘⌣˘)" + }, + { + "category": "love", + "value": "( ˘⌣˘)♡(˘⌣˘ )" + }, + { + "category": "love", + "value": "(/^-^(^ ^*)/ ♡" + }, + { + "category": "love", + "value": "٩(♡ε♡)۶" + }, + { + "category": "love", + "value": "σ(≧ε≦σ) ♡" + }, + { + "category": "love", + "value": "♡ (⇀ 3 ↼)" + }, + { + "category": "love", + "value": "♡ ( ̄З ̄)" + }, + { + "category": "love", + "value": "(❤ω❤)" + }, + { + "category": "love", + "value": "(˘∀˘)/(μ‿μ) ❤" + }, + { + "category": "love", + "value": "❤ (ɔˆз(ˆ⌣ˆc)" + }, + { + "category": "love", + "value": "(´♡‿♡`)" + }, + { + "category": "love", + "value": "(°◡°♡)" + }, + { + "category": "love", + "value": "Σ>―(〃°ω°〃)♡→" + }, + { + "category": "love", + "value": "(´,,•ω•,,)♡" + }, + { + "category": "love", + "value": "(´꒳`)♡" + }, + { + "category": "embarassment", + "value": "(⌒_⌒;)" + }, + { + "category": "embarassment", + "value": "(o^ ^o)" + }, + { + "category": "embarassment", + "value": "(*/ω\)" + }, + { + "category": "embarassment", + "value": "(*/。\)" + }, + { + "category": "embarassment", + "value": "(*/_\)" + }, + { + "category": "embarassment", + "value": "(*ノωノ)" + }, + { + "category": "embarassment", + "value": "(o-_-o)" + }, + { + "category": "embarassment", + "value": "(*μ_μ)" + }, + { + "category": "embarassment", + "value": "( ◡‿◡ *)" + }, + { + "category": "embarassment", + "value": "(ᵔ.ᵔ)" + }, + { + "category": "embarassment", + "value": "(*ノ∀`*)" + }, + { + "category": "embarassment", + "value": "(//▽//)" + }, + { + "category": "embarassment", + "value": "(//ω//)" + }, + { + "category": "embarassment", + "value": "(ノ*°▽°*)" + }, + { + "category": "embarassment", + "value": "(*^.^*)" + }, + { + "category": "embarassment", + "value": "(*ノ▽ノ)" + }, + { + "category": "embarassment", + "value": "( ̄▽ ̄*)ゞ" + }, + { + "category": "embarassment", + "value": "(⁄ ⁄•⁄ω⁄•⁄ ⁄)" + }, + { + "category": "embarassment", + "value": "(*/▽\*)" + }, + { + "category": "embarassment", + "value": "(⁄ ⁄>⁄ ▽ ⁄<⁄ ⁄)" + }, + { + "category": "embarassment", + "value": "(„ಡωಡ„)" + }, + { + "category": "embarassment", + "value": "(ง ื▿ ื)ว" + }, + { + "category": "embarassment", + "value": "( 〃▽〃)" + }, + { + "category": "embarassment", + "value": "(/▿\ )" + }, + { + "category": "embarassment", + "value": "(/// ̄  ̄///)" + }, + { + "category": "sympathy", + "value": "(ノ_<。)ヾ(´ ▽ ` )" + }, + { + "category": "sympathy", + "value": "。・゚・(ノД`)ヽ( ̄ω ̄ )" + }, + { + "category": "sympathy", + "value": "ρ(- ω -、)ヾ( ̄ω ̄; )" + }, + { + "category": "sympathy", + "value": "ヽ( ̄ω ̄(。。 )ゝ" + }, + { + "category": "sympathy", + "value": "(*´ I `)ノ゚(ノД`゚)゚。" + }, + { + "category": "sympathy", + "value": "ヽ(~_~(・_・ )ゝ" + }, + { + "category": "sympathy", + "value": "(ノ_;)ヾ(´ ∀ ` )" + }, + { + "category": "sympathy", + "value": "(; ω ; )ヾ(´∀`* )" + }, + { + "category": "sympathy", + "value": "(*´ー)ノ(ノд`)" + }, + { + "category": "sympathy", + "value": "(´-ω-`( _ _ )" + }, + { + "category": "sympathy", + "value": "(っ´ω`)ノ(╥ω╥)" + }, + { + "category": "sympathy", + "value": "(o・_・)ノ”(ノ_<、)" + }, + { + "category": "dissatisfaction", + "value": "(#><)" + }, + { + "category": "dissatisfaction", + "value": "(;⌣̀_⌣́)" + }, + { + "category": "dissatisfaction", + "value": "☆o(><;)○" + }, + { + "category": "dissatisfaction", + "value": "( ̄  ̄|||)" + }, + { + "category": "dissatisfaction", + "value": "(; ̄Д ̄)" + }, + { + "category": "dissatisfaction", + "value": "( ̄□ ̄」)" + }, + { + "category": "dissatisfaction", + "value": "(# ̄0 ̄)" + }, + { + "category": "dissatisfaction", + "value": "(# ̄ω ̄)" + }, + { + "category": "dissatisfaction", + "value": "(¬_¬;)" + }, + { + "category": "dissatisfaction", + "value": "(>m<)" + }, + { + "category": "dissatisfaction", + "value": "(」°ロ°)」" + }, + { + "category": "dissatisfaction", + "value": "(〃>_<;〃)" + }, + { + "category": "dissatisfaction", + "value": "(^^#)" + }, + { + "category": "dissatisfaction", + "value": "(︶︹︺)" + }, + { + "category": "dissatisfaction", + "value": "( ̄ヘ ̄)" + }, + { + "category": "dissatisfaction", + "value": "<( ̄ ﹌  ̄)>" + }, + { + "category": "dissatisfaction", + "value": "( ̄︿ ̄)" + }, + { + "category": "dissatisfaction", + "value": "(>﹏<)" + }, + { + "category": "dissatisfaction", + "value": "(--_--)" + }, + { + "category": "dissatisfaction", + "value": "凸( ̄ヘ ̄)" + }, + { + "category": "dissatisfaction", + "value": "ヾ(  ̄O ̄)ツ" + }, + { + "category": "dissatisfaction", + "value": "(⇀‸↼‶)" + }, + { + "category": "dissatisfaction", + "value": "o(>< )o" + }, + { + "category": "dissatisfaction", + "value": "(」><)」" + }, + { + "category": "dissatisfaction", + "value": "(ᗒᗣᗕ)՞" + }, + { + "category": "dissatisfaction", + "value": "(눈_눈)" + }, + { + "category": "anger", + "value": "(#`Д´)" + }, + { + "category": "anger", + "value": "(`皿´#)" + }, + { + "category": "anger", + "value": "( ` ω ´ )" + }, + { + "category": "anger", + "value": "ヽ( `д´*)ノ" + }, + { + "category": "anger", + "value": "(・`ω´・)" + }, + { + "category": "anger", + "value": "(`ー´)" + }, + { + "category": "anger", + "value": "ヽ(`⌒´メ)ノ" + }, + { + "category": "anger", + "value": "凸(`△´#)" + }, + { + "category": "anger", + "value": "( `ε´ )" + }, + { + "category": "anger", + "value": "ψ( ` ∇ ´ )ψ" + }, + { + "category": "anger", + "value": "ヾ(`ヘ´)ノ゙" + }, + { + "category": "anger", + "value": "ヽ(‵﹏´)ノ" + }, + { + "category": "anger", + "value": "(メ` ロ ´)" + }, + { + "category": "anger", + "value": "(╬`益´)" + }, + { + "category": "anger", + "value": "┌∩┐(◣_◢)┌∩┐" + }, + { + "category": "anger", + "value": "凸( ` ロ ´ )凸" + }, + { + "category": "anger", + "value": "Σ(▼□▼メ)" + }, + { + "category": "anger", + "value": "(°ㅂ°╬)" + }, + { + "category": "anger", + "value": "ψ(▼へ▼メ)~→" + }, + { + "category": "anger", + "value": "(ノ°益°)ノ" + }, + { + "category": "anger", + "value": "(҂ `з´ )" + }, + { + "category": "anger", + "value": "(‡▼益▼)" + }, + { + "category": "anger", + "value": "(҂` ロ ´)凸" + }, + { + "category": "anger", + "value": "((╬◣﹏◢))" + }, + { + "category": "anger", + "value": "٩(╬ʘ益ʘ╬)۶" + }, + { + "category": "anger", + "value": "(╬ Ò﹏Ó)" + }, + { + "category": "anger", + "value": "\\٩(๑`^´๑)۶//" + }, + { + "category": "anger", + "value": "(凸ಠ益ಠ)凸" + }, + { + "category": "anger", + "value": "↑_(ΦwΦ)Ψ" + }, + { + "category": "anger", + "value": "←~(Ψ▼ー▼)∈" + }, + { + "category": "anger", + "value": "୧((#Φ益Φ#))୨" + }, + { + "category": "anger", + "value": "٩(ఠ益ఠ)۶" + }, + { + "category": "anger", + "value": "(ノಥ益ಥ)ノ" + }, + { + "category": "sadness", + "value": "(ノ_<。)" + }, + { + "category": "sadness", + "value": "(-_-)" + }, + { + "category": "sadness", + "value": "(´-ω-`)" + }, + { + "category": "sadness", + "value": ".・゚゚・(/ω\)・゚゚・." + }, + { + "category": "sadness", + "value": "(μ_μ)" + }, + { + "category": "sadness", + "value": "(ノД`)" + }, + { + "category": "sadness", + "value": "(-ω-、)" + }, + { + "category": "sadness", + "value": "。゜゜(´O`) ゜゜。" + }, + { + "category": "sadness", + "value": "o(TヘTo)" + }, + { + "category": "sadness", + "value": "( ; ω ; )" + }, + { + "category": "sadness", + "value": "(。╯︵╰。)" + }, + { + "category": "sadness", + "value": "。・゚゚*(>д<)*゚゚・。" + }, + { + "category": "sadness", + "value": "( ゚,_ゝ`)" + }, + { + "category": "sadness", + "value": "(个_个)" + }, + { + "category": "sadness", + "value": "(╯︵╰,)" + }, + { + "category": "sadness", + "value": "。・゚(゚><゚)゚・。" + }, + { + "category": "sadness", + "value": "( ╥ω╥ )" + }, + { + "category": "sadness", + "value": "(╯_╰)" + }, + { + "category": "sadness", + "value": "(╥_╥)" + }, + { + "category": "sadness", + "value": ".。・゚゚・(>_<)・゚゚・。." + }, + { + "category": "sadness", + "value": "(/ˍ・、)" + }, + { + "category": "sadness", + "value": "(ノ_<、)" + }, + { + "category": "sadness", + "value": "(╥﹏╥)" + }, + { + "category": "sadness", + "value": "。゚(。ノωヽ。)゚。" + }, + { + "category": "sadness", + "value": "(つω`。)" + }, + { + "category": "sadness", + "value": "(。T ω T。)" + }, + { + "category": "sadness", + "value": "(ノω・、)" + }, + { + "category": "sadness", + "value": "・゚・(。>ω<。)・゚・" + }, + { + "category": "sadness", + "value": "(T_T)" + }, + { + "category": "sadness", + "value": "(>_<)" + }, + { + "category": "sadness", + "value": "(っ˘̩╭╮˘̩)っ" + }, + { + "category": "sadness", + "value": "。゚・ (>﹏<) ・゚。" + }, + { + "category": "sadness", + "value": "o(〒﹏〒)o" + }, + { + "category": "sadness", + "value": "(。•́︿•̀。)" + }, + { + "category": "sadness", + "value": "(ಥ﹏ಥ)" + }, + { + "category": "sadness", + "value": "(ಡ‸ಡ)" + }, + { + "category": "pain", + "value": "~(>_<~)" + }, + { + "category": "pain", + "value": "☆⌒(> _ <)" + }, + { + "category": "pain", + "value": "☆⌒(>。<)" + }, + { + "category": "pain", + "value": "(☆_@)" + }, + { + "category": "pain", + "value": "(×_×)" + }, + { + "category": "pain", + "value": "(x_x)" + }, + { + "category": "pain", + "value": "(×_×)⌒☆" + }, + { + "category": "pain", + "value": "(x_x)⌒☆" + }, + { + "category": "pain", + "value": "(×﹏×)" + }, + { + "category": "pain", + "value": "☆(#××)" + }, + { + "category": "pain", + "value": "(+_+)" + }, + { + "category": "pain", + "value": "[ ± _ ± ]" + }, + { + "category": "pain", + "value": "٩(× ×)۶" + }, + { + "category": "pain", + "value": "_:(´ཀ`」 ∠):_" + }, + { + "category": "pain", + "value": "(メ﹏メ)" + }, + { + "category": "fear", + "value": "(ノωヽ)" + }, + { + "category": "fear", + "value": "(/。\)" + }, + { + "category": "fear", + "value": "(ノ_ヽ)" + }, + { + "category": "fear", + "value": "..・ヾ(。><)シ" + }, + { + "category": "fear", + "value": "(″ロ゛)" + }, + { + "category": "fear", + "value": "(;;;*_*)" + }, + { + "category": "fear", + "value": "(・人・)" + }, + { + "category": "fear", + "value": "\(〇_o)/" + }, + { + "category": "fear", + "value": "(/ω\)" + }, + { + "category": "fear", + "value": "(/_\)" + }, + { + "category": "fear", + "value": "〜(><)〜" + }, + { + "category": "fear", + "value": "Σ(°△°|||)︴" + }, + { + "category": "fear", + "value": "(((><)))" + }, + { + "category": "fear", + "value": "{{ (>_<) }}" + }, + { + "category": "fear", + "value": "\(º □ º l|l)/" + }, + { + "category": "fear", + "value": "〣( ºΔº )〣" + }, + { + "category": "fear", + "value": "▓▒░(°◡°)░▒▓" + }, + { + "category": "indifference", + "value": "ヽ(ー_ー )ノ" + }, + { + "category": "indifference", + "value": "ヽ(´ー` )┌" + }, + { + "category": "indifference", + "value": "┐(‘~` )┌" + }, + { + "category": "indifference", + "value": "ヽ(  ̄д ̄)ノ" + }, + { + "category": "indifference", + "value": "┐( ̄ヘ ̄)┌" + }, + { + "category": "indifference", + "value": "ヽ( ̄~ ̄ )ノ" + }, + { + "category": "indifference", + "value": "╮( ̄_ ̄)╭" + }, + { + "category": "indifference", + "value": "ヽ(ˇヘˇ)ノ" + }, + { + "category": "indifference", + "value": "┐( ̄~ ̄)┌" + }, + { + "category": "indifference", + "value": "┐(︶▽︶)┌" + }, + { + "category": "indifference", + "value": "╮( ̄~ ̄)╭" + }, + { + "category": "indifference", + "value": "¯_(ツ)_/¯" + }, + { + "category": "indifference", + "value": "┐( ´ д ` )┌" + }, + { + "category": "indifference", + "value": "╮(︶︿︶)╭" + }, + { + "category": "indifference", + "value": "┐( ̄∀ ̄)┌" + }, + { + "category": "indifference", + "value": "┐( ˘ 、 ˘ )┌" + }, + { + "category": "indifference", + "value": "╮(︶▽︶)╭" + }, + { + "category": "indifference", + "value": "╮( ˘ 、 ˘ )╭" + }, + { + "category": "indifference", + "value": "┐( ˘_˘ )┌" + }, + { + "category": "indifference", + "value": "╮( ˘_˘ )╭" + }, + { + "category": "indifference", + "value": "┐( ̄ヮ ̄)┌" + }, + { + "category": "indifference", + "value": "ᕕ( ᐛ )ᕗ" + }, + { + "category": "indifference", + "value": "┐(シ)┌" + }, + { + "category": "confusion", + "value": "( ̄ω ̄;)" + }, + { + "category": "confusion", + "value": "σ( ̄、 ̄〃)" + }, + { + "category": "confusion", + "value": "( ̄~ ̄;)" + }, + { + "category": "confusion", + "value": "(-_-;)・・・" + }, + { + "category": "confusion", + "value": "┐('~`;)┌" + }, + { + "category": "confusion", + "value": "(・_・ヾ" + }, + { + "category": "confusion", + "value": "(〃 ̄ω ̄〃ゞ" + }, + { + "category": "confusion", + "value": "┐( ̄ヘ ̄;)┌" + }, + { + "category": "confusion", + "value": "(・_・;)" + }, + { + "category": "confusion", + "value": "( ̄_ ̄)・・・" + }, + { + "category": "confusion", + "value": "╮( ̄ω ̄;)╭" + }, + { + "category": "confusion", + "value": "(¯ . ¯;)" + }, + { + "category": "confusion", + "value": "(@_@)" + }, + { + "category": "confusion", + "value": "(・・;)ゞ" + }, + { + "category": "confusion", + "value": "Σ( ̄。 ̄ノ)" + }, + { + "category": "confusion", + "value": "(・・ ) ?" + }, + { + "category": "confusion", + "value": "(•ิ_•ิ)?" + }, + { + "category": "confusion", + "value": "(◎ ◎)ゞ" + }, + { + "category": "confusion", + "value": "(ーー;)" + }, + { + "category": "confusion", + "value": "ლ(ಠ_ಠ ლ)" + }, + { + "category": "confusion", + "value": "ლ(¯ロ¯\"ლ)" + }, + { + "category": "confusion", + "value": "(¯ . ¯٥)" + }, + { + "category": "confusion", + "value": "(¯ ¯٥)" + }, + { + "category": "doubt", + "value": "(¬_¬)" + }, + { + "category": "doubt", + "value": "(→_→)" + }, + { + "category": "doubt", + "value": "(¬ ¬)" + }, + { + "category": "doubt", + "value": "(¬‿¬ )" + }, + { + "category": "doubt", + "value": "(¬_¬ )" + }, + { + "category": "doubt", + "value": "(←_←)" + }, + { + "category": "doubt", + "value": "(¬ ¬ )" + }, + { + "category": "doubt", + "value": "(¬‿¬ )" + }, + { + "category": "doubt", + "value": "(↼_↼)" + }, + { + "category": "doubt", + "value": "(⇀_⇀)" + }, + { + "category": "doubt", + "value": "(ᓀ ᓀ)" + }, + { + "category": "surprise", + "value": "w(°o°)w" + }, + { + "category": "surprise", + "value": "ヽ(°〇°)ノ" + }, + { + "category": "surprise", + "value": "Σ(O_O)" + }, + { + "category": "surprise", + "value": "Σ(°ロ°)" + }, + { + "category": "surprise", + "value": "(⊙_⊙)" + }, + { + "category": "surprise", + "value": "(o_O)" + }, + { + "category": "surprise", + "value": "(O_O;)" + }, + { + "category": "surprise", + "value": "(O.O)" + }, + { + "category": "surprise", + "value": "(°ロ°) !" + }, + { + "category": "surprise", + "value": "(o_O) !" + }, + { + "category": "surprise", + "value": "(□_□)" + }, + { + "category": "surprise", + "value": "Σ(□_□)" + }, + { + "category": "surprise", + "value": "∑(O_O;)" + }, + { + "category": "surprise", + "value": "( : ౦ ‸ ౦ : )" + }, + { + "category": "greeting", + "value": "(*・ω・)ノ" + }, + { + "category": "greeting", + "value": "( ̄▽ ̄)ノ" + }, + { + "category": "greeting", + "value": "(°▽°)/" + }, + { + "category": "greeting", + "value": "( ´ ∀ ` )ノ" + }, + { + "category": "greeting", + "value": "(^-^*)/" + }, + { + "category": "greeting", + "value": "(@´ー`)ノ゙" + }, + { + "category": "greeting", + "value": "(´• ω •`)ノ" + }, + { + "category": "greeting", + "value": "( ° ∀ ° )ノ゙" + }, + { + "category": "greeting", + "value": "ヾ(*'▽'*)" + }, + { + "category": "greeting", + "value": "\(⌒▽⌒)" + }, + { + "category": "greeting", + "value": "ヾ(☆▽☆)" + }, + { + "category": "greeting", + "value": "( ´ ▽ ` )ノ" + }, + { + "category": "greeting", + "value": "(^0^)ノ" + }, + { + "category": "greeting", + "value": "~ヾ(・ω・)" + }, + { + "category": "greeting", + "value": "(・∀・)ノ" + }, + { + "category": "greeting", + "value": "ヾ(・ω・*)" + }, + { + "category": "greeting", + "value": "(*°ー°)ノ" + }, + { + "category": "greeting", + "value": "(・_・)ノ" + }, + { + "category": "greeting", + "value": "(o´ω`o)ノ" + }, + { + "category": "greeting", + "value": "( ´ ▽ ` )/" + }, + { + "category": "greeting", + "value": "( ̄ω ̄)/" + }, + { + "category": "greeting", + "value": "( ´ ω ` )ノ゙" + }, + { + "category": "greeting", + "value": "(⌒ω⌒)ノ" + }, + { + "category": "greeting", + "value": "(o^ ^o)/" + }, + { + "category": "greeting", + "value": "(≧▽≦)/" + }, + { + "category": "greeting", + "value": "(✧∀✧)/" + }, + { + "category": "greeting", + "value": "(o´▽`o)ノ" + }, + { + "category": "greeting", + "value": "( ̄▽ ̄)/" + }, + { + "category": "hugging", + "value": "(づ ̄ ³ ̄)づ" + }, + { + "category": "hugging", + "value": "(つ≧▽≦)つ" + }, + { + "category": "hugging", + "value": "(つ✧ω✧)つ" + }, + { + "category": "hugging", + "value": "(づ ◕‿◕ )づ" + }, + { + "category": "hugging", + "value": "(⊃。•́‿•̀。)⊃" + }, + { + "category": "hugging", + "value": "(つ . •́ _ʖ •̀ .)つ" + }, + { + "category": "hugging", + "value": "(っಠ‿ಠ)っ" + }, + { + "category": "hugging", + "value": "(づ◡﹏◡)づ" + }, + { + "category": "hugging", + "value": "⊂(´• ω •`⊂)" + }, + { + "category": "hugging", + "value": "⊂(・ω・*⊂)" + }, + { + "category": "hugging", + "value": "⊂( ̄▽ ̄)⊃" + }, + { + "category": "hugging", + "value": "⊂( ´ ▽ ` )⊃" + }, + { + "category": "hugging", + "value": "( ~*-*)~" + }, + { + "category": "hugging", + "value": "(。•̀ᴗ-)✧" + }, + { + "category": "winking", + "value": "(^_~)" + }, + { + "category": "winking", + "value": "( ゚o⌒)" + }, + { + "category": "winking", + "value": "(^_-)≡☆" + }, + { + "category": "winking", + "value": "(^ω~)" + }, + { + "category": "winking", + "value": "(>ω^)" + }, + { + "category": "winking", + "value": "(~人^)" + }, + { + "category": "winking", + "value": "(^_-)" + }, + { + "category": "winking", + "value": "( -_・)" + }, + { + "category": "winking", + "value": "(^_<)〜☆" + }, + { + "category": "winking", + "value": "(^人<)〜☆" + }, + { + "category": "winking", + "value": "☆⌒(≧▽​° )" + }, + { + "category": "winking", + "value": "☆⌒(ゝ。∂)" + }, + { + "category": "winking", + "value": "(^_<)" + }, + { + "category": "winking", + "value": "(^_−)☆" + }, + { + "category": "winking", + "value": "(・ω<)☆" + }, + { + "category": "winking", + "value": "(^.~)☆" + }, + { + "category": "winking", + "value": "(^.~)" + }, + { + "category": "apologizing", + "value": "m(_ _)m" + }, + { + "category": "apologizing", + "value": "(シ_ _)シ" + }, + { + "category": "apologizing", + "value": "m(. .)m" + }, + { + "category": "apologizing", + "value": "<(_ _)>" + }, + { + "category": "apologizing", + "value": "人(_ _*)" + }, + { + "category": "apologizing", + "value": "(*_ _)人" + }, + { + "category": "apologizing", + "value": "m(_ _;m)" + }, + { + "category": "apologizing", + "value": "(m;_ _)m" + }, + { + "category": "apologizing", + "value": "(シ. .)シ" + }, + { + "category": "nosebleeding", + "value": "(* ̄ii ̄)" + }, + { + "category": "nosebleeding", + "value": "( ̄ハ ̄*)" + }, + { + "category": "nosebleeding", + "value": "( ̄ハ ̄)" + }, + { + "category": "nosebleeding", + "value": "(^་།^)" + }, + { + "category": "nosebleeding", + "value": "(^〃^)" + }, + { + "category": "nosebleeding", + "value": "( ̄ ¨ヽ ̄)" + }, + { + "category": "nosebleeding", + "value": "( ̄ ; ̄)" + }, + { + "category": "nosebleeding", + "value": "( ̄ ;; ̄)" + }, + { + "category": "hiding", + "value": "|・ω・)" + }, + { + "category": "hiding", + "value": "ヘ(・_|" + }, + { + "category": "hiding", + "value": "|ω・)ノ" + }, + { + "category": "hiding", + "value": "ヾ(・|" + }, + { + "category": "hiding", + "value": "|д・)" + }, + { + "category": "hiding", + "value": "|_ ̄))" + }, + { + "category": "hiding", + "value": "|▽//)" + }, + { + "category": "hiding", + "value": "┬┴┬┴┤(・_├┬┴┬┴" + }, + { + "category": "hiding", + "value": "┬┴┬┴┤・ω・)ノ" + }, + { + "category": "hiding", + "value": "┬┴┬┴┤( ͡° ͜ʖ├┬┴┬┴" + }, + { + "category": "hiding", + "value": "┬┴┬┴┤(・_├┬┴┬┴" + }, + { + "category": "hiding", + "value": "|_・)" + }, + { + "category": "hiding", + "value": "|・д・)ノ" + }, + { + "category": "hiding", + "value": "|ʘ‿ʘ)╯" + }, + { + "category": "writing", + "value": "__φ(..)" + }, + { + "category": "writing", + "value": "(  ̄ー ̄)φ__" + }, + { + "category": "writing", + "value": "__φ(。。)" + }, + { + "category": "writing", + "value": "__φ(..;)" + }, + { + "category": "writing", + "value": "ヾ( `ー´)シφ__" + }, + { + "category": "writing", + "value": "__〆( ̄ー ̄ )" + }, + { + "category": "writing", + "value": "....φ(・∀・*)" + }, + { + "category": "writing", + "value": "___〆(・∀・)" + }, + { + "category": "writing", + "value": "( ^▽^)ψ__" + }, + { + "category": "writing", + "value": "....φ(︶▽︶)φ...." + }, + { + "category": "writing", + "value": "( . .)φ__" + }, + { + "category": "writing", + "value": "__φ(◎◎ヘ)" + }, + { + "category": "running", + "value": "☆ミ(o*・ω・)ノ" + }, + { + "category": "running", + "value": "C= C= C= C= C=┌(;・ω・)┘" + }, + { + "category": "running", + "value": "─=≡Σ((( つ><)つ" + }, + { + "category": "running", + "value": "ε=ε=ε=ε=┌(; ̄▽ ̄)┘" + }, + { + "category": "running", + "value": "ε=ε=┌( >_<)┘" + }, + { + "category": "running", + "value": "C= C= C= C=┌( `ー´)┘" + }, + { + "category": "running", + "value": "ε===(っ≧ω≦)っ" + }, + { + "category": "running", + "value": "ヽ( ̄д ̄;)ノ=3=3=3" + }, + { + "category": "running", + "value": "。。。ミヽ(。><)ノ" + }, + { + "category": "sleeping", + "value": "[(--)]..zzZ" + }, + { + "category": "sleeping", + "value": "(-_-) zzZ" + }, + { + "category": "sleeping", + "value": "(∪。∪)。。。zzZ" + }, + { + "category": "sleeping", + "value": "(-ω-) zzZ" + }, + { + "category": "sleeping", + "value": "( ̄o ̄) zzZZzzZZ" + }, + { + "category": "sleeping", + "value": "(( _ _ ))..zzzZZ" + }, + { + "category": "sleeping", + "value": "( ̄ρ ̄)..zzZZ" + }, + { + "category": "sleeping", + "value": "(-.-)...zzz" + }, + { + "category": "sleeping", + "value": "(_ _*) Z z z" + }, + { + "category": "cat", + "value": "(=^・ω・^=)" + }, + { + "category": "cat", + "value": "(=^・ェ・^=)" + }, + { + "category": "cat", + "value": "(=①ω①=)" + }, + { + "category": "cat", + "value": "( =ω=)..nyaa" + }, + { + "category": "cat", + "value": "(= ; ェ ; =)" + }, + { + "category": "cat", + "value": "(=`ω´=)" + }, + { + "category": "cat", + "value": "(=^‥^=)" + }, + { + "category": "cat", + "value": "( =ノωヽ=)" + }, + { + "category": "cat", + "value": "(=⌒‿‿⌒=)" + }, + { + "category": "cat", + "value": "(=^ ◡ ^=)" + }, + { + "category": "cat", + "value": "(=^-ω-^=)" + }, + { + "category": "cat", + "value": "ヾ(=`ω´=)ノ”" + }, + { + "category": "cat", + "value": "(^• ω •^)" + }, + { + "category": "cat", + "value": "(/ =ω=)/" + }, + { + "category": "cat", + "value": "ฅ(•ㅅ•❀)ฅ" + }, + { + "category": "cat", + "value": "ฅ(• ɪ •)ฅ" + }, + { + "category": "cat", + "value": "ଲ(ⓛ ω ⓛ)ଲ" + }, + { + "category": "cat", + "value": "(^=◕ᴥ◕=^)" + }, + { + "category": "cat", + "value": "( =ω= )" + }, + { + "category": "cat", + "value": "(^˵◕ω◕˵^)" + }, + { + "category": "cat", + "value": "(^◔ᴥ◔^)" + }, + { + "category": "cat", + "value": "(^◕ᴥ◕^)" + }, + { + "category": "cat", + "value": "ต(=ω=)ต" + }, + { + "category": "cat", + "value": "( Φ ω Φ )" + }, + { + "category": "cat", + "value": "ฅ(^◕ᴥ◕^)ฅ" + }, + { + "category": "bear", + "value": "( ´(エ)ˋ )" + }, + { + "category": "bear", + "value": "(* ̄(エ) ̄*)" + }, + { + "category": "bear", + "value": "ヽ( ̄(エ) ̄)ノ" + }, + { + "category": "bear", + "value": "(/ ̄(エ) ̄)/" + }, + { + "category": "bear", + "value": "( ̄(エ) ̄)" + }, + { + "category": "bear", + "value": "ヽ( ˋ(エ)´ )ノ" + }, + { + "category": "bear", + "value": "⊂( ̄(エ) ̄)⊃" + }, + { + "category": "bear", + "value": "(/(エ)\)" + }, + { + "category": "bear", + "value": "⊂(´(ェ)ˋ)⊃" + }, + { + "category": "bear", + "value": "(/-(エ)-\)" + }, + { + "category": "bear", + "value": "(/°(エ)°)/" + }, + { + "category": "bear", + "value": "ʕ ᵔᴥᵔ ʔ" + }, + { + "category": "bear", + "value": "ʕ •ᴥ• ʔ" + }, + { + "category": "bear", + "value": "ʕ •̀ ω •́ ʔ" + }, + { + "category": "bear", + "value": "ʕ •̀ o •́ ʔ" + }, + { + "category": "bear", + "value": "ʕಠᴥಠʔ" + }, + { + "category": "dog", + "value": "∪^ェ^∪" + }, + { + "category": "dog", + "value": "∪・ω・∪" + }, + { + "category": "dog", + "value": "∪ ̄- ̄∪" + }, + { + "category": "dog", + "value": "∪・ェ・∪" + }, + { + "category": "dog", + "value": "U^皿^U" + }, + { + "category": "dog", + "value": "UTェTU" + }, + { + "category": "dog", + "value": "U^ェ^U" + }, + { + "category": "dog", + "value": "V●ᴥ●V" + }, + { + "category": "dog", + "value": "U・ᴥ・U" + }, + { + "category": "rabbit", + "value": "/(≧ x ≦)\" + }, + { + "category": "rabbit", + "value": "/(・ × ・)\" + }, + { + "category": "rabbit", + "value": "/(=´x`=)\" + }, + { + "category": "rabbit", + "value": "/(^ x ^)\" + }, + { + "category": "rabbit", + "value": "/(=・ x ・=)\" + }, + { + "category": "rabbit", + "value": "/(^ × ^)\" + }, + { + "category": "rabbit", + "value": "/(>×<)\" + }, + { + "category": "rabbit", + "value": "/(˃ᆺ˂)\" + }, + { + "category": "pig", + "value": "( ´(00)ˋ )" + }, + { + "category": "pig", + "value": "( ̄(ω) ̄)" + }, + { + "category": "pig", + "value": "ヽ( ˋ(00)´ )ノ" + }, + { + "category": "pig", + "value": "( ´(oo)ˋ )" + }, + { + "category": "pig", + "value": "\( ̄(oo) ̄)/" + }, + { + "category": "pig", + "value": "。゚(゚´(00)`゚)゚。" + }, + { + "category": "pig", + "value": "( ̄(00) ̄)" + }, + { + "category": "pig", + "value": "(ˆ(oo)ˆ)" + }, + { + "category": "bird", + "value": "( ̄Θ ̄)" + }, + { + "category": "bird", + "value": "(`・Θ・´)" + }, + { + "category": "bird", + "value": "( ˋ Θ ´ )" + }, + { + "category": "bird", + "value": "(◉Θ◉)" + }, + { + "category": "bird", + "value": "\( ˋ Θ ´ )/" + }, + { + "category": "bird", + "value": "(・θ・)" + }, + { + "category": "bird", + "value": "(・Θ・)" + }, + { + "category": "bird", + "value": "ヾ( ̄◇ ̄)ノ〃" + }, + { + "category": "bird", + "value": "(・Θ・)" + }, + { + "category": "fish", + "value": "(°)#))<<" + }, + { + "category": "fish", + "value": "<・ )))><<" + }, + { + "category": "fish", + "value": "ζ°)))彡" + }, + { + "category": "fish", + "value": ">°))))彡" + }, + { + "category": "fish", + "value": "(°))<<" + }, + { + "category": "fish", + "value": ">^)))<~~" + }, + { + "category": "fish", + "value": "≧( ° ° )≦" + }, + { + "category": "spider", + "value": "/╲/╭(ఠఠ益ఠఠ)╮/╱" + }, + { + "category": "spider", + "value": "/╲/╭(ರರ⌓ರರ)╮/╱" + }, + { + "category": "spider", + "value": "/╲/╭༼ ººل͟ºº ༽╮/╱" + }, + { + "category": "spider", + "value": "/╲/╭( ͡°͡° ͜ʖ ͡°͡°)╮/╱" + }, + { + "category": "spider", + "value": "/╲/╭[ ᴼᴼ ౪ ᴼᴼ]╮/╱" + }, + { + "category": "spider", + "value": "/╲/( •̀ ω •́ )/╱" + }, + { + "category": "spider", + "value": "/╲/╭[☉﹏☉]╮/╱" + }, + { + "category": "friends", + "value": "ヾ(・ω・)メ(・ω・)ノ" + }, + { + "category": "friends", + "value": "ヽ(∀° )人( °∀)ノ" + }, + { + "category": "friends", + "value": "ヽ( ⌒o⌒)人(⌒-⌒ )ノ" + }, + { + "category": "friends", + "value": "(*^ω^)八(⌒▽⌒)八(-‿‿- )ヽ" + }, + { + "category": "friends", + "value": "\(^∀^)メ(^∀^)ノ" + }, + { + "category": "friends", + "value": "ヾ( ̄ー ̄(≧ω≦*)ゝ" + }, + { + "category": "friends", + "value": "ヽ( ⌒ω⌒)人(=^‥^= )ノ" + }, + { + "category": "friends", + "value": "ヽ(≧◡≦)八(o^ ^o)ノ" + }, + { + "category": "friends", + "value": "(*・∀・)爻(・∀・*)" + }, + { + "category": "friends", + "value": "。*:☆(・ω・人・ω・)。:゜☆。" + }, + { + "category": "friends", + "value": "o(^^o)(o^^o)(o^^o)(o^^)o" + }, + { + "category": "friends", + "value": "((( ̄( ̄( ̄▽ ̄) ̄) ̄)))" + }, + { + "category": "friends", + "value": "(°(°ω(°ω°(☆ω☆)°ω°)ω°)°)" + }, + { + "category": "friends", + "value": "ヾ(・ω・`)ノヾ(´・ω・)ノ゛" + }, + { + "category": "friends", + "value": "Ψ( `∀)(∀´ )Ψ" + }, + { + "category": "friends", + "value": "(っ˘▽˘)(˘▽˘)˘▽˘ς)" + }, + { + "category": "friends", + "value": "(((*°▽°*)八(*°▽°*)))" + }, + { + "category": "friends", + "value": "☆ヾ(*´・∀・)ノヾ(・∀・`*)ノ☆" + }, + { + "category": "friends", + "value": "(*^ω^)人(^ω^*)" + }, + { + "category": "friends", + "value": "٩(๑・ิᴗ・ิ)۶٩(・ิᴗ・ิ๑)۶" + }, + { + "category": "friends", + "value": "(☞°ヮ°)☞ ☜(°ヮ°☜)" + }, + { + "category": "friends", + "value": "\(▽ ̄ ( ̄▽ ̄) /  ̄▽)/" + }, + { + "category": "friends", + "value": "( ˙▿˙ )/( ˙▿˙ )/" + }, + { + "category": "enemies", + "value": "ヽ( ・∀・)ノ_θ彡☆Σ(ノ `Д´)ノ" + }, + { + "category": "enemies", + "value": "(*´∇`)┌θ☆(ノ>_<)ノ" + }, + { + "category": "enemies", + "value": "(  ̄ω ̄)ノ゙⌒☆ミ(o _ _)o" + }, + { + "category": "enemies", + "value": "(*`0´)θ☆(メ°皿°)ノ" + }, + { + "category": "enemies", + "value": "(o¬‿¬o )...☆ミ(*x_x)" + }, + { + "category": "enemies", + "value": "(╬ ̄皿 ̄)=○#( ̄#)3 ̄)" + }, + { + "category": "enemies", + "value": "(; -_-)――――――C<―_-)" + }, + { + "category": "enemies", + "value": "<(  ̄︿ ̄)︵θ︵θ︵☆(>口<-)" + }, + { + "category": "enemies", + "value": "( ̄ε(# ̄)☆╰╮o( ̄▽ ̄///)" + }, + { + "category": "enemies", + "value": "ヽ(>_<ヽ) ―⊂|=0ヘ(^‿^ )" + }, + { + "category": "enemies", + "value": "ヘ(>_<ヘ) ¬o( ̄‿ ̄メ)" + }, + { + "category": "enemies", + "value": ",,(((  ̄□)_/ \_(○ ̄ ))),," + }, + { + "category": "enemies", + "value": "(҂` ロ ´)︻デ═一 \(º □ º l|l)/" + }, + { + "category": "enemies", + "value": "(╯°Д°)╯︵ /(.□ . \)" + }, + { + "category": "enemies", + "value": "(¬_¬'')ԅ( ̄ε ̄ԅ)" + }, + { + "category": "enemies", + "value": "/( .□.)\ ︵╰(°益°)╯︵ /(.□. /)" + }, + { + "category": "enemies", + "value": "(ノ-.-)ノ….((((((((((((●~* ( >_<)" + }, + { + "category": "enemies", + "value": "!!(メ ̄  ̄)_θ☆°0°)/" + }, + { + "category": "enemies", + "value": "(`⌒*)O-(`⌒´Q)" + }, + { + "category": "enemies", + "value": "(((ง’ω’)و三 ง’ω’)ڡ≡ ☆⌒ミ((x_x)" + }, + { + "category": "enemies", + "value": "(งಠ_ಠ)ง σ( •̀ ω •́ σ)" + }, + { + "category": "enemies", + "value": "(っ•﹏•)っ ✴==≡눈٩(`皿´҂)ง" + }, + { + "category": "enemies", + "value": "(「• ω •)「 (⌒ω⌒`)" + }, + { + "category": "enemies", + "value": "( °ᴗ°)~ð (/❛o❛)" + }, + { + "category": "weapons", + "value": "( ・∀・)・・・--------☆" + }, + { + "category": "weapons", + "value": "(/-_・)/D・・・・・------ →" + }, + { + "category": "weapons", + "value": "(^ω^)ノ゙(((((((((●~*" + }, + { + "category": "weapons", + "value": "( -ω-)/占~~~~~" + }, + { + "category": "weapons", + "value": "(/・・)ノ   (( く ((へ" + }, + { + "category": "weapons", + "value": "―⊂|=0ヘ(^^ )" + }, + { + "category": "weapons", + "value": "○∞∞∞∞ヽ(^ー^ )" + }, + { + "category": "weapons", + "value": "(; ・_・)――――C" + }, + { + "category": "weapons", + "value": "(ಠ o ಠ)¤=[]:::::>" + }, + { + "category": "weapons", + "value": "(*^^)/~~~~~~~~~~◎" + }, + { + "category": "weapons", + "value": "¬o( ̄- ̄メ)" + }, + { + "category": "weapons", + "value": "―(T_T)→" + }, + { + "category": "weapons", + "value": "(((  ̄□)_/" + }, + { + "category": "weapons", + "value": "(メ` ロ ´)︻デ═一" + }, + { + "category": "weapons", + "value": "( ´-ω・)︻┻┳══━一" + }, + { + "category": "weapons", + "value": "(メ ̄▽ ̄)︻┳═一" + }, + { + "category": "weapons", + "value": "✴==≡눈٩(`皿´҂)ง" + }, + { + "category": "weapons", + "value": "Q(`⌒´Q)" + }, + { + "category": "magic", + "value": "(ノ ˘_˘)ノ ζ|||ζ ζ|||ζ ζ|||ζ" + }, + { + "category": "magic", + "value": "(ノ≧∀≦)ノ ‥…━━━★" + }, + { + "category": "magic", + "value": "(ノ>ω<)ノ :。・:*:・゚’★,。・:*:・゚’☆" + }, + { + "category": "magic", + "value": "(ノ°∀°)ノ⌒・*:.。. .。.:*・゜゚・*☆" + }, + { + "category": "magic", + "value": "╰( ͡° ͜ʖ ͡° )つ──☆*:・゚" + }, + { + "category": "magic", + "value": "(# ̄□ ̄)o━∈・・━━━━☆" + }, + { + "category": "magic", + "value": "(⊃。•́‿•̀。)⊃━✿✿✿✿✿✿" + }, + { + "category": "magic", + "value": "(∩ᄑ_ᄑ)⊃━☆゚*・。*・:≡( ε:)" + }, + { + "category": "magic", + "value": "(/ ̄ー ̄)/~~☆’.・.・:★’.・.・:☆" + }, + { + "category": "magic", + "value": "(∩` ロ ´)⊃━炎炎炎炎炎" + }, + { + "category": "food", + "value": "(っ˘ڡ˘ς)" + }, + { + "category": "food", + "value": "( o˘◡˘o) ┌iii┐" + }, + { + "category": "food", + "value": "( ’ω’)旦~~" + }, + { + "category": "food", + "value": "( ˘▽˘)っ♨" + }, + { + "category": "food", + "value": "♨o(>_<)o♨" + }, + { + "category": "food", + "value": "( ・ω・)o-{{[〃]}}" + }, + { + "category": "food", + "value": "( ・ω・)⊃-[二二]" + }, + { + "category": "food", + "value": "( ・・)つ―{}@{}@{}-" + }, + { + "category": "food", + "value": "( ・・)つ-●●●" + }, + { + "category": "food", + "value": "(*´ー`)旦 旦( ̄ω ̄*)" + }, + { + "category": "food", + "value": "(*´з`)口゚。゚口(・∀・ )" + }, + { + "category": "food", + "value": "( o^ ^o)且 且(´ω`*)" + }, + { + "category": "food", + "value": "(  ̄▽ ̄)[] [](≧▽≦ )" + }, + { + "category": "food", + "value": "( *^^)o∀*∀o(^^* )" + }, + { + "category": "food", + "value": "( ^^)_旦~~  ~~U_(^^ )" + }, + { + "category": "food", + "value": "(* ̄▽ ̄)旦 且(´∀`*)" + }, + { + "category": "food", + "value": "-●●●-c(・・ )" + }, + { + "category": "food", + "value": "( ・・)つ―●○◎-" + }, + { + "category": "music", + "value": "ヾ(´〇`)ノ♪♪♪" + }, + { + "category": "music", + "value": "ヘ( ̄ω ̄ヘ)" + }, + { + "category": "music", + "value": "(〜 ̄▽ ̄)〜" + }, + { + "category": "music", + "value": "〜( ̄▽ ̄〜)" + }, + { + "category": "music", + "value": "ヽ(o´∀`)ノ♪♬" + }, + { + "category": "music", + "value": "(ノ≧∀≦)ノ" + }, + { + "category": "music", + "value": "♪ヽ(^^ヽ)♪" + }, + { + "category": "music", + "value": "♪(/_ _ )/♪" + }, + { + "category": "music", + "value": "♪♬((d⌒ω⌒b))♬♪" + }, + { + "category": "music", + "value": "└( ̄- ̄└))" + }, + { + "category": "music", + "value": "((┘ ̄ω ̄)┘" + }, + { + "category": "music", + "value": "√( ̄‥ ̄√)" + }, + { + "category": "music", + "value": "└(^^)┐" + }, + { + "category": "music", + "value": "┌(^^)┘" + }, + { + "category": "music", + "value": "\( ̄▽ ̄)\" + }, + { + "category": "music", + "value": "/( ̄▽ ̄)/" + }, + { + "category": "music", + "value": "( ̄▽ ̄)/♫•*¨*•.¸¸♪" + }, + { + "category": "music", + "value": "(^_^♪)" + }, + { + "category": "music", + "value": "(~˘▽˘)~" + }, + { + "category": "music", + "value": "~(˘▽˘~)" + }, + { + "category": "music", + "value": "ヾ(⌐■_■)ノ♪" + }, + { + "category": "music", + "value": "(〜 ̄△ ̄)〜" + }, + { + "category": "music", + "value": "(~‾▽‾)~" + }, + { + "category": "music", + "value": "~(˘▽˘)~" + }, + { + "category": "music", + "value": "乁( • ω •乁)" + }, + { + "category": "music", + "value": "(「• ω •)「" + }, + { + "category": "music", + "value": "⁽⁽◝( • ω • )◜⁾⁾" + }, + { + "category": "music", + "value": "✺◟( • ω • )◞✺" + }, + { + "category": "music", + "value": "♬♫♪◖(● o ●)◗♪♫♬" + }, + { + "category": "music", + "value": "( ˘ ɜ˘) ♬♪♫" + }, + { + "category": "music", + "value": "♪♪♪ ヽ(ˇ∀ˇ )ゞ" + }, + { + "category": "music", + "value": "(ˇ▽ˇ)ノ♪♬♫" + }, + { + "category": "games", + "value": "( ^^)p_____|_o____q(^^ )" + }, + { + "category": "games", + "value": "(/o^)/ °⊥ \(^o\)" + }, + { + "category": "games", + "value": "!(;゚o゚)o/ ̄ ̄ ̄ ̄ ̄ ̄ ̄~ >゚))))彡" + }, + { + "category": "games", + "value": "ヽ(^o^)ρ┳┻┳°σ(^o^)ノ" + }, + { + "category": "games", + "value": "(/_^)/  ● \(^_\)" + }, + { + "category": "games", + "value": "( (≡|≡))_/ \_((≡|≡) )" + }, + { + "category": "games", + "value": "( ノ-_-)ノ゙_□ VS □_ヾ(^-^ヽ)" + }, + { + "category": "games", + "value": "ヽ(;^ ^)ノ゙ ......___〇" + }, + { + "category": "games", + "value": "(=O*_*)=O Q(*_*Q)" + }, + { + "category": "games", + "value": "Ю ○三 \( ̄^ ̄\)" + }, + { + "category": "faces", + "value": "( ͡° ͜ʖ ͡°)" + }, + { + "category": "faces", + "value": "( ͡° ʖ̯ ͡°)" + }, + { + "category": "faces", + "value": "( ͠° ͟ʖ ͡°)" + }, + { + "category": "faces", + "value": "( ͡ᵔ ͜ʖ ͡ᵔ)" + }, + { + "category": "faces", + "value": "( . •́ _ʖ •̀ .)" + }, + { + "category": "faces", + "value": "( ఠ ͟ʖ ఠ)" + }, + { + "category": "faces", + "value": "( ͡ಠ ʖ̯ ͡ಠ)" + }, + { + "category": "faces", + "value": "( ಠ ʖ̯ ಠ)" + }, + { + "category": "faces", + "value": "( ಠ ͜ʖ ಠ)" + }, + { + "category": "faces", + "value": "( ಥ ʖ̯ ಥ)" + }, + { + "category": "faces", + "value": "( ͡• ͜ʖ ͡• )" + }, + { + "category": "faces", + "value": "( ・ิ ͜ʖ ・ิ)" + }, + { + "category": "faces", + "value": "( ͡ ͜ʖ ͡ )" + }, + { + "category": "faces", + "value": "(≖ ͜ʖ≖)" + }, + { + "category": "faces", + "value": "(ʘ ʖ̯ ʘ)" + }, + { + "category": "faces", + "value": "(ʘ ͟ʖ ʘ)" + }, + { + "category": "faces", + "value": "(ʘ ͜ʖ ʘ)" + }, + { + "category": "faces", + "value": "(;´༎ຶٹ༎ຶ`)" + }, + { + "category": "special", + "value": "٩(ˊ〇ˋ*)و" + }, + { + "category": "special", + "value": "( ̄^ ̄)ゞ" + }, + { + "category": "special", + "value": "(-‸ლ)" + }, + { + "category": "special", + "value": "(╯°益°)╯彡┻━┻" + }, + { + "category": "special", + "value": "(╮°-°)╮┳━━┳ ( ╯°□°)╯ ┻━━┻" + }, + { + "category": "special", + "value": "┬─┬ノ( º _ ºノ)" + }, + { + "category": "special", + "value": "(oT-T)尸" + }, + { + "category": "special", + "value": "( ͡° ͜ʖ ͡°)" + }, + { + "category": "special", + "value": "[̲̅$̲̅(̲̅ ͡° ͜ʖ ͡°̲̅)̲̅$̲̅]" + }, + { + "category": "special", + "value": "(ಠ_ಠ)" + }, + { + "category": "special", + "value": "౦0o 。 (‾́。‾́ )y~~" + }, + { + "category": "special", + "value": "( ̄﹃ ̄)" + }, + { + "category": "special", + "value": "(x(x_(x_x(O_o)x_x)_x)x)" + }, + { + "category": "special", + "value": "( ・ω・)☞" + }, + { + "category": "special", + "value": "(⌐■_■)" + }, + { + "category": "special", + "value": "(◕‿◕✿)" + }, + { + "category": "special", + "value": "(  ̄.)o-  【 TV 】" + }, + { + "category": "special", + "value": "`、ヽ`ヽ`、ヽ(ノ><)ノ `、ヽ`☂ヽ`、ヽ" + }, + { + "category": "special", + "value": "‿︵‿︵‿︵‿ヽ(°□° )ノ︵‿︵‿︵‿︵" + }, + { + "category": "special", + "value": "( • )( • )ԅ(≖‿≖ԅ)" + }, + { + "category": "special", + "value": "( ^▽^)っ✂╰⋃╯" + }, + { + "category": "special", + "value": "〜〜(/ ̄▽)/ 〜ф" + }, + { + "category": "special", + "value": "ଘ(੭ˊᵕˋ)੭* ੈ✩‧₊˚" + }, + { + "category": "special", + "value": "ଘ(੭ˊ꒳​ˋ)੭✧" + }, + { + "category": "special", + "value": "_(:3 」∠)_" + }, + { + "category": "special", + "value": "∠( ᐛ 」∠)_" + } + ] } diff --git a/app/src/main/java/com/sameerasw/essentials/FeatureSettingsActivity.kt b/app/src/main/java/com/sameerasw/essentials/FeatureSettingsActivity.kt index 451602336..b624484d4 100644 --- a/app/src/main/java/com/sameerasw/essentials/FeatureSettingsActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/FeatureSettingsActivity.kt @@ -72,10 +72,10 @@ import com.sameerasw.essentials.ui.composables.configs.LockScreenClockSettingsUI import com.sameerasw.essentials.ui.composables.configs.MapsPowerSavingSettingsUI import com.sameerasw.essentials.ui.composables.configs.NotificationLightingSettingsUI import com.sameerasw.essentials.ui.composables.configs.OtherCustomizationsSettingsUI +import com.sameerasw.essentials.ui.composables.configs.PocketModeSettingsUI import com.sameerasw.essentials.ui.composables.configs.QuickSettingsTilesSettingsUI import com.sameerasw.essentials.ui.composables.configs.RefreshRateSettingsUI import com.sameerasw.essentials.ui.composables.configs.RemoteLockSettingsUI -import com.sameerasw.essentials.ui.composables.configs.PocketModeSettingsUI import com.sameerasw.essentials.ui.composables.configs.ScreenLockedSecuritySettingsUI import com.sameerasw.essentials.ui.composables.configs.ScreenOffWidgetSettingsUI import com.sameerasw.essentials.ui.composables.configs.ShutUpSettingsUI @@ -83,11 +83,11 @@ import com.sameerasw.essentials.ui.composables.configs.SnoozeNotificationsSettin import com.sameerasw.essentials.ui.composables.configs.SoundModeTileSettingsUI import com.sameerasw.essentials.ui.composables.configs.StatusBarIconSettingsUI import com.sameerasw.essentials.ui.composables.configs.TextAnimationsSettingsUI -import com.sameerasw.essentials.ui.composables.configs.WatchSettingsUI import com.sameerasw.essentials.ui.composables.configs.WatchControlsSettingsUI +import com.sameerasw.essentials.ui.composables.configs.WatchSettingsUI import com.sameerasw.essentials.ui.modifiers.BlurDirection -import com.sameerasw.essentials.ui.modifiers.progressiveBlur import com.sameerasw.essentials.ui.modifiers.highlight +import com.sameerasw.essentials.ui.modifiers.progressiveBlur import com.sameerasw.essentials.ui.theme.EssentialsTheme import com.sameerasw.essentials.utils.BiometricSecurityHelper import com.sameerasw.essentials.utils.HapticUtil @@ -227,13 +227,14 @@ class FeatureSettingsActivity : AppCompatActivity() { mutableStateOf(prefs.getBoolean("watch_sync_sound_mode_enabled", false)) } androidx.compose.runtime.DisposableEffect(prefs) { - val listener = android.content.SharedPreferences.OnSharedPreferenceChangeListener { p, key -> - if (key == "watch_adb_wifi_enabled") { - watchAdbWifiEnabled = p.getBoolean(key, false) - } else if (key == "watch_sync_sound_mode_enabled") { - watchSyncSoundModeEnabled = p.getBoolean(key, false) + val listener = + android.content.SharedPreferences.OnSharedPreferenceChangeListener { p, key -> + if (key == "watch_adb_wifi_enabled") { + watchAdbWifiEnabled = p.getBoolean(key, false) + } else if (key == "watch_sync_sound_mode_enabled") { + watchSyncSoundModeEnabled = p.getBoolean(key, false) + } } - } prefs.registerOnSharedPreferenceChangeListener(listener) onDispose { prefs.unregisterOnSharedPreferenceChangeListener(listener) @@ -249,11 +250,17 @@ class FeatureSettingsActivity : AppCompatActivity() { fabExpanded = false } if (featureId == "Watch") { - val messageClient = com.google.android.gms.wearable.Wearable.getMessageClient(context) - val nodeClient = com.google.android.gms.wearable.Wearable.getNodeClient(context) + val messageClient = + com.google.android.gms.wearable.Wearable.getMessageClient(context) + val nodeClient = + com.google.android.gms.wearable.Wearable.getNodeClient(context) nodeClient.connectedNodes.addOnSuccessListener { nodes -> for (node in nodes) { - messageClient.sendMessage(node.id, "/request_watch_status", byteArrayOf()) + messageClient.sendMessage( + node.id, + "/request_watch_status", + byteArrayOf() + ) } } } @@ -603,7 +610,9 @@ class FeatureSettingsActivity : AppCompatActivity() { modifier = Modifier.padding(top = 16.dp), highlightSetting = highlightSetting, onShowPermissionSheet = { showPermissionSheet = it }, - onSetChildFeatureForPermissions = { childFeatureForPermissions = it } + onSetChildFeatureForPermissions = { + childFeatureForPermissions = it + } ) } diff --git a/app/src/main/java/com/sameerasw/essentials/MainActivity.kt b/app/src/main/java/com/sameerasw/essentials/MainActivity.kt index 2e9a2f9c4..101e44fb1 100644 --- a/app/src/main/java/com/sameerasw/essentials/MainActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/MainActivity.kt @@ -14,29 +14,25 @@ import androidx.activity.enableEdgeToEdge import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity -import androidx.compose.animation.AnimatedContent import androidx.compose.animation.core.Animatable -import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.tween import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.slideInVertically import androidx.compose.animation.slideOutVertically -import androidx.compose.animation.togetherWith import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.pager.HorizontalPager -import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.asPaddingValues import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.statusBars +import androidx.compose.foundation.pager.HorizontalPager +import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.FloatingToolbarDefaults import androidx.compose.material3.FloatingToolbarExitDirection.Companion.Bottom import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.ProgressIndicatorDefaults import androidx.compose.material3.Scaffold import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue diff --git a/app/src/main/java/com/sameerasw/essentials/SettingsActivity.kt b/app/src/main/java/com/sameerasw/essentials/SettingsActivity.kt index e3f807977..05a7117e1 100644 --- a/app/src/main/java/com/sameerasw/essentials/SettingsActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/SettingsActivity.kt @@ -5,6 +5,7 @@ import android.content.ClipData import android.content.ClipboardManager import android.content.Context import android.content.Intent +import android.net.Uri import android.os.Build import android.os.Bundle import android.provider.Settings @@ -42,21 +43,18 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.ButtonGroupDefaults +import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalBottomSheet -import androidx.compose.material3.rememberModalBottomSheetState -import androidx.compose.material3.CircularProgressIndicator -import androidx.compose.material3.TextButton -import androidx.compose.ui.text.font.FontWeight -import android.net.Uri -import androidx.compose.material3.ButtonGroupDefaults import androidx.compose.material3.OutlinedButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -70,6 +68,7 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import androidx.core.app.ActivityCompat @@ -472,7 +471,10 @@ fun SettingsContent( Row( modifier = Modifier .fillMaxWidth() - .background(MaterialTheme.colorScheme.surfaceBright, shape = MaterialTheme.shapes.extraSmall) + .background( + MaterialTheme.colorScheme.surfaceBright, + shape = MaterialTheme.shapes.extraSmall + ) .padding(16.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp) @@ -863,7 +865,10 @@ fun SettingsContent( Row( modifier = Modifier .fillMaxWidth() - .background(MaterialTheme.colorScheme.surfaceBright, shape = MaterialTheme.shapes.extraSmall) + .background( + MaterialTheme.colorScheme.surfaceBright, + shape = MaterialTheme.shapes.extraSmall + ) .padding(8.dp), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp) @@ -886,7 +891,10 @@ fun SettingsContent( modifier = Modifier.size(24.dp) ) Spacer(modifier = Modifier.width(8.dp)) - Text("Check for updates", fontWeight = androidx.compose.ui.text.font.FontWeight.Bold) + Text( + "Check for updates", + fontWeight = androidx.compose.ui.text.font.FontWeight.Bold + ) } } @@ -1065,7 +1073,7 @@ fun SettingsContent( ) val workflowAuthState by viewModel.workflowAuthState - + when (workflowAuthState) { is com.sameerasw.essentials.viewmodels.AuthState.Idle -> { Button( @@ -1077,6 +1085,7 @@ fun SettingsContent( Text("Grant Workflow Access") } } + is com.sameerasw.essentials.viewmodels.AuthState.Loading -> { Box( modifier = Modifier.fillMaxWidth(), @@ -1085,8 +1094,10 @@ fun SettingsContent( CircularProgressIndicator(modifier = Modifier.size(24.dp)) } } + is com.sameerasw.essentials.viewmodels.AuthState.CodeReceived -> { - val codeData = workflowAuthState as com.sameerasw.essentials.viewmodels.AuthState.CodeReceived + val codeData = + workflowAuthState as com.sameerasw.essentials.viewmodels.AuthState.CodeReceived Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, @@ -1098,7 +1109,9 @@ fun SettingsContent( ) Text( text = codeData.userCode, - style = MaterialTheme.typography.headlineMedium.copy(fontWeight = FontWeight.Bold), + style = MaterialTheme.typography.headlineMedium.copy( + fontWeight = FontWeight.Bold + ), color = MaterialTheme.colorScheme.primary ) Text( @@ -1106,13 +1119,16 @@ fun SettingsContent( style = MaterialTheme.typography.bodySmall, color = MaterialTheme.colorScheme.onSurfaceVariant ) - + Row( horizontalArrangement = Arrangement.spacedBy(8.dp) ) { Button( onClick = { - val intent = Intent(Intent.ACTION_VIEW, Uri.parse(codeData.verificationUri)) + val intent = Intent( + Intent.ACTION_VIEW, + Uri.parse(codeData.verificationUri) + ) context.startActivity(intent) } ) { @@ -1128,8 +1144,10 @@ fun SettingsContent( } } } + is com.sameerasw.essentials.viewmodels.AuthState.Error -> { - val err = workflowAuthState as com.sameerasw.essentials.viewmodels.AuthState.Error + val err = + workflowAuthState as com.sameerasw.essentials.viewmodels.AuthState.Error Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, @@ -1149,6 +1167,7 @@ fun SettingsContent( } } } + is com.sameerasw.essentials.viewmodels.AuthState.Authenticated -> { // Handled by token recomposition } @@ -1211,14 +1230,14 @@ fun SettingsContent( val triggerState by viewModel.wallpaperTriggerState if (triggerState != null) { Text( - text = when(triggerState) { + text = when (triggerState) { "loading" -> "Sending trigger request..." "success" -> "Trigger sent successfully!" "error" -> "Failed to send trigger." else -> "" }, style = MaterialTheme.typography.bodySmall, - color = when(triggerState) { + color = when (triggerState) { "success" -> MaterialTheme.colorScheme.primary "error" -> MaterialTheme.colorScheme.error else -> MaterialTheme.colorScheme.onSurfaceVariant diff --git a/app/src/main/java/com/sameerasw/essentials/ShutUpShortcutActivity.kt b/app/src/main/java/com/sameerasw/essentials/ShutUpShortcutActivity.kt index 263bf0fb3..1c0cbb82e 100644 --- a/app/src/main/java/com/sameerasw/essentials/ShutUpShortcutActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/ShutUpShortcutActivity.kt @@ -165,7 +165,11 @@ class ShutUpShortcutActivity : ComponentActivity() { // as some apps check this specific setting directly. if (config.disableUsbDebugging) { val current = - safeReadSetting(contentResolver, SettingsTable.GLOBAL, Settings.Global.ADB_ENABLED) + safeReadSetting( + contentResolver, + SettingsTable.GLOBAL, + Settings.Global.ADB_ENABLED + ) ?: "0" if (current == "1") { if (!originalSettings.containsKey("global:${Settings.Global.ADB_ENABLED}")) { @@ -177,7 +181,8 @@ class ShutUpShortcutActivity : ComponentActivity() { if (config.disableWirelessDebugging) { val current = - safeReadSetting(contentResolver, SettingsTable.GLOBAL, "adb_wifi_enabled") ?: "0" + safeReadSetting(contentResolver, SettingsTable.GLOBAL, "adb_wifi_enabled") + ?: "0" if (current == "1") { if (!originalSettings.containsKey("global:adb_wifi_enabled")) { originalSettings["global:adb_wifi_enabled"] = "1" diff --git a/app/src/main/java/com/sameerasw/essentials/data/repository/GitHubRepository.kt b/app/src/main/java/com/sameerasw/essentials/data/repository/GitHubRepository.kt index ae3be566b..ad9207f4d 100644 --- a/app/src/main/java/com/sameerasw/essentials/data/repository/GitHubRepository.kt +++ b/app/src/main/java/com/sameerasw/essentials/data/repository/GitHubRepository.kt @@ -135,7 +135,8 @@ class GitHubRepository { inputs: Map ): Boolean = withContext(Dispatchers.IO) { try { - val url = URL("https://api.github.com/repos/$owner/$repo/actions/workflows/$workflowFile/dispatches") + val url = + URL("https://api.github.com/repos/$owner/$repo/actions/workflows/$workflowFile/dispatches") val connection = url.openConnection() as HttpURLConnection connection.requestMethod = "POST" connection.doOutput = true @@ -143,10 +144,12 @@ class GitHubRepository { connection.setRequestProperty("Accept", "application/vnd.github+json") connection.setRequestProperty("Content-Type", "application/json") - val payload = gson.toJson(mapOf( - "ref" to ref, - "inputs" to inputs - )) + val payload = gson.toJson( + mapOf( + "ref" to ref, + "inputs" to inputs + ) + ) connection.outputStream.use { os -> os.write(payload.toByteArray(Charsets.UTF_8)) diff --git a/app/src/main/java/com/sameerasw/essentials/data/repository/SettingsRepository.kt b/app/src/main/java/com/sameerasw/essentials/data/repository/SettingsRepository.kt index 9efd86f16..767d2ebbc 100644 --- a/app/src/main/java/com/sameerasw/essentials/data/repository/SettingsRepository.kt +++ b/app/src/main/java/com/sameerasw/essentials/data/repository/SettingsRepository.kt @@ -548,6 +548,7 @@ class SettingsRepository(private val context: Context) { fun loadPocketModeExcludedApps() = loadAppSelection(KEY_POCKET_MODE_EXCLUDED_APPS) fun savePocketModeExcludedApps(apps: List) = saveAppSelection(KEY_POCKET_MODE_EXCLUDED_APPS, apps) + fun updatePocketModeExcludedAppSelection(packageName: String, enabled: Boolean) = updateAppSelection(KEY_POCKET_MODE_EXCLUDED_APPS, packageName, enabled) @@ -943,7 +944,10 @@ class SettingsRepository(private val context: Context) { putBoolean(KEY_PIXEL_SEARCHBAR_BACKGROUND_PILL, enabled) fun getPixelSearchbarWidgetId(): Int = - prefs.getInt(KEY_PIXEL_SEARCHBAR_WIDGET_ID, android.appwidget.AppWidgetManager.INVALID_APPWIDGET_ID) + prefs.getInt( + KEY_PIXEL_SEARCHBAR_WIDGET_ID, + android.appwidget.AppWidgetManager.INVALID_APPWIDGET_ID + ) fun setPixelSearchbarWidgetId(id: Int) = prefs.edit().putInt(KEY_PIXEL_SEARCHBAR_WIDGET_ID, id).apply() @@ -1012,7 +1016,9 @@ class SettingsRepository(private val context: Context) { putString(KEY_PIXEL_SEARCHBAR_MUSIC_PACKAGE, value) fun getEdgeLightingSweepSelectedShapes(): Set { - val defaultShapes = com.sameerasw.essentials.utils.AmbientMusicShapeHelper.allShapesWithNames.map { it.first }.toSet() + val defaultShapes = + com.sameerasw.essentials.utils.AmbientMusicShapeHelper.allShapesWithNames.map { it.first } + .toSet() val json = prefs.getString(KEY_EDGE_LIGHTING_SWEEP_SELECTED_SHAPES, null) return if (json != null) { try { @@ -1149,7 +1155,10 @@ class SettingsRepository(private val context: Context) { fun saveLiveWallpaperCustomVideos(videos: List) = liveWallpaperPrefs.edit() - .putString(KEY_LIVE_WALLPAPER_CUSTOM_VIDEOS, videos.filter { it.isNotEmpty() }.distinct().joinToString("\n")).apply() + .putString( + KEY_LIVE_WALLPAPER_CUSTOM_VIDEOS, + videos.filter { it.isNotEmpty() }.distinct().joinToString("\n") + ).apply() fun addLiveWallpaperCustomVideo(uri: String) { val current = getLiveWallpaperCustomVideos().toMutableList() diff --git a/app/src/main/java/com/sameerasw/essentials/data/repository/WallpaperRepository.kt b/app/src/main/java/com/sameerasw/essentials/data/repository/WallpaperRepository.kt index df5d64550..73296649a 100644 --- a/app/src/main/java/com/sameerasw/essentials/data/repository/WallpaperRepository.kt +++ b/app/src/main/java/com/sameerasw/essentials/data/repository/WallpaperRepository.kt @@ -5,7 +5,6 @@ import android.content.Context import android.content.Intent import android.graphics.Bitmap import android.graphics.BitmapFactory -import android.net.Uri import androidx.core.content.FileProvider import com.google.gson.Gson import com.sameerasw.essentials.domain.model.WallpaperInfo @@ -75,51 +74,57 @@ class WallpaperRepository { } } - suspend fun applyWallpaper(context: Context, urlString: String): Boolean = withContext(Dispatchers.IO) { - try { - val bitmap = downloadBitmap(urlString) ?: return@withContext false - val cacheFile = File(context.cacheDir, "today_wallpaper.jpg") - FileOutputStream(cacheFile).use { out -> - bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out) + suspend fun applyWallpaper(context: Context, urlString: String): Boolean = + withContext(Dispatchers.IO) { + try { + val bitmap = downloadBitmap(urlString) ?: return@withContext false + val cacheFile = File(context.cacheDir, "today_wallpaper.jpg") + FileOutputStream(cacheFile).use { out -> + bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out) + } + + val uri = FileProvider.getUriForFile( + context, + "${context.packageName}.fileprovider", + cacheFile + ) + + val wallpaperManager = WallpaperManager.getInstance(context) + val intent = wallpaperManager.getCropAndSetWallpaperIntent(uri) + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + context.startActivity(intent) + true + } catch (e: Exception) { + e.printStackTrace() + false } - - val uri = FileProvider.getUriForFile( - context, - "${context.packageName}.fileprovider", - cacheFile - ) - - val wallpaperManager = WallpaperManager.getInstance(context) - val intent = wallpaperManager.getCropAndSetWallpaperIntent(uri) - intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - context.startActivity(intent) - true - } catch (e: Exception) { - e.printStackTrace() - false } - } - suspend fun autoApplyWallpaper(context: Context, urlString: String, flags: Int): Boolean = withContext(Dispatchers.IO) { - try { - val rawBitmap = downloadBitmap(urlString) ?: return@withContext false - val bitmap = centerCropToScreen(context, rawBitmap) - withContext(Dispatchers.Main) { - android.widget.Toast.makeText(context, com.sameerasw.essentials.R.string.label_wallpaper_applying, android.widget.Toast.LENGTH_SHORT).show() - } - val wallpaperManager = WallpaperManager.getInstance(context) - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { - wallpaperManager.setBitmap(bitmap, null, true, flags) - } else { - wallpaperManager.setBitmap(bitmap) + suspend fun autoApplyWallpaper(context: Context, urlString: String, flags: Int): Boolean = + withContext(Dispatchers.IO) { + try { + val rawBitmap = downloadBitmap(urlString) ?: return@withContext false + val bitmap = centerCropToScreen(context, rawBitmap) + withContext(Dispatchers.Main) { + android.widget.Toast.makeText( + context, + com.sameerasw.essentials.R.string.label_wallpaper_applying, + android.widget.Toast.LENGTH_SHORT + ).show() + } + val wallpaperManager = WallpaperManager.getInstance(context) + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { + wallpaperManager.setBitmap(bitmap, null, true, flags) + } else { + wallpaperManager.setBitmap(bitmap) + } + true + } catch (e: Exception) { + e.printStackTrace() + false } - true - } catch (e: Exception) { - e.printStackTrace() - false } - } private fun centerCropToScreen(context: Context, bitmap: Bitmap): Bitmap { val displayMetrics = context.resources.displayMetrics diff --git a/app/src/main/java/com/sameerasw/essentials/domain/diy/Action.kt b/app/src/main/java/com/sameerasw/essentials/domain/diy/Action.kt index 1e3a2dafd..19e5bd8a3 100644 --- a/app/src/main/java/com/sameerasw/essentials/domain/diy/Action.kt +++ b/app/src/main/java/com/sameerasw/essentials/domain/diy/Action.kt @@ -5,8 +5,8 @@ import androidx.annotation.Keep import androidx.annotation.StringRes import com.google.gson.annotations.SerializedName import com.sameerasw.essentials.R -import com.sameerasw.essentials.domain.ScreenOffMethod import com.sameerasw.essentials.domain.HapticFeedbackType +import com.sameerasw.essentials.domain.ScreenOffMethod @Keep sealed interface Action { diff --git a/app/src/main/java/com/sameerasw/essentials/domain/diy/DIYRepository.kt b/app/src/main/java/com/sameerasw/essentials/domain/diy/DIYRepository.kt index 7536122ec..38a88d8a5 100644 --- a/app/src/main/java/com/sameerasw/essentials/domain/diy/DIYRepository.kt +++ b/app/src/main/java/com/sameerasw/essentials/domain/diy/DIYRepository.kt @@ -124,8 +124,12 @@ object DIYRepository { private fun updateActionShortcutLauncherState() { val context = appContext ?: return - val showLauncher = _automations.value.any { it.type == Automation.Type.ACTION_SHORTCUT && it.isEnabled } - val componentName = android.content.ComponentName(context, "com.sameerasw.essentials.ActionShortcutLauncher") + val showLauncher = + _automations.value.any { it.type == Automation.Type.ACTION_SHORTCUT && it.isEnabled } + val componentName = android.content.ComponentName( + context, + "com.sameerasw.essentials.ActionShortcutLauncher" + ) try { val targetState = if (showLauncher) { android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED diff --git a/app/src/main/java/com/sameerasw/essentials/domain/model/Feature.kt b/app/src/main/java/com/sameerasw/essentials/domain/model/Feature.kt index 093be395c..c7e17759a 100644 --- a/app/src/main/java/com/sameerasw/essentials/domain/model/Feature.kt +++ b/app/src/main/java/com/sameerasw/essentials/domain/model/Feature.kt @@ -50,7 +50,8 @@ abstract class Feature( abstract fun onToggle(viewModel: MainViewModel, context: Context, enabled: Boolean) open fun onClick(context: Context, viewModel: MainViewModel) { - val targetFeatureId = if (!hasMoreSettings && parentFeatureId != null) parentFeatureId else id + val targetFeatureId = + if (!hasMoreSettings && parentFeatureId != null) parentFeatureId else id context.startActivity(Intent(context, FeatureSettingsActivity::class.java).apply { putExtra("feature", targetFeatureId) if (!hasMoreSettings && parentFeatureId != null) { diff --git a/app/src/main/java/com/sameerasw/essentials/domain/registry/FeatureRegistry.kt b/app/src/main/java/com/sameerasw/essentials/domain/registry/FeatureRegistry.kt index 51cb8abec..35c2e0bea 100644 --- a/app/src/main/java/com/sameerasw/essentials/domain/registry/FeatureRegistry.kt +++ b/app/src/main/java/com/sameerasw/essentials/domain/registry/FeatureRegistry.kt @@ -6,8 +6,8 @@ import com.sameerasw.essentials.EssentialsApp import com.sameerasw.essentials.R import com.sameerasw.essentials.domain.model.Feature import com.sameerasw.essentials.domain.model.SearchSetting -import com.sameerasw.essentials.ui.activities.WatermarkActivity import com.sameerasw.essentials.ui.activities.PixelSearchbarSettingsActivity +import com.sameerasw.essentials.ui.activities.WatermarkActivity import com.sameerasw.essentials.utils.DeviceUtils import com.sameerasw.essentials.utils.ShellUtils import com.sameerasw.essentials.viewmodels.MainViewModel @@ -299,7 +299,7 @@ object FeatureRegistry { override fun isEnabled(viewModel: MainViewModel) = true override fun onToggle(viewModel: MainViewModel, context: Context, enabled: Boolean) {} }, - + object : Feature( id = "Pixel Searchbar", title = R.string.feat_pixel_searchbar_title, @@ -313,15 +313,20 @@ object FeatureRegistry { isBeta = true, parentFeatureId = "Widgets" ) { - override fun isEnabled(viewModel: MainViewModel) = viewModel.isPixelSearchbarEnabled.value + override fun isEnabled(viewModel: MainViewModel) = + viewModel.isPixelSearchbarEnabled.value + override fun isToggleEnabled(viewModel: MainViewModel, context: Context) = viewModel.isWriteSecureSettingsEnabled.value || viewModel.isShizukuPermissionGranted.value || viewModel.isRootPermissionGranted.value + override fun onToggle(viewModel: MainViewModel, context: Context, enabled: Boolean) { viewModel.setPixelSearchbarEnabled(enabled, context) } + override fun onClick(context: Context, viewModel: MainViewModel) { context.startActivity(Intent(context, PixelSearchbarSettingsActivity::class.java)) } + override fun isDeviceSupported(context: Context) = DeviceUtils.isGoogleDevice() }, @@ -958,6 +963,7 @@ object FeatureRegistry { override fun onToggle(viewModel: MainViewModel, context: Context, enabled: Boolean) = viewModel.setPocketModeEnabled(enabled) + override fun isDeviceSupported(context: Context) = !DeviceUtils.isGoogleDevice() }, object : Feature( @@ -1101,7 +1107,12 @@ object FeatureRegistry { override fun isEnabled(viewModel: MainViewModel) = true override fun onToggle(viewModel: MainViewModel, context: Context, enabled: Boolean) {} override fun onClick(context: Context, viewModel: MainViewModel) { - context.startActivity(Intent(context, com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java)) + context.startActivity( + Intent( + context, + com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java + ) + ) } }, @@ -1166,7 +1177,8 @@ object FeatureRegistry { override fun onToggle(viewModel: MainViewModel, context: Context, enabled: Boolean) { // Send message to watch to toggle ADB Wifi - val messageClient = com.google.android.gms.wearable.Wearable.getMessageClient(context) + val messageClient = + com.google.android.gms.wearable.Wearable.getMessageClient(context) val nodeClient = com.google.android.gms.wearable.Wearable.getNodeClient(context) nodeClient.connectedNodes.addOnSuccessListener { nodes -> for (node in nodes) { diff --git a/app/src/main/java/com/sameerasw/essentials/domain/registry/SearchRegistry.kt b/app/src/main/java/com/sameerasw/essentials/domain/registry/SearchRegistry.kt index 5d29a46b3..c5b084729 100644 --- a/app/src/main/java/com/sameerasw/essentials/domain/registry/SearchRegistry.kt +++ b/app/src/main/java/com/sameerasw/essentials/domain/registry/SearchRegistry.kt @@ -11,53 +11,58 @@ object SearchRegistry { fun search(context: Context, query: String): List = search(context, query, SettingsRepository(context).isEnableUnsupportedFeatures()) - fun search(context: Context, query: String, includeUnsupportedFeatures: Boolean = false): List { + fun search( + context: Context, + query: String, + includeUnsupportedFeatures: Boolean = false + ): List { val q = query.trim().lowercase() if (q.isEmpty()) return emptyList() val allItems = mutableListOf() // --- Index Features and Sub-settings --- - FeatureRegistry.getFilteredFeatures(context, includeUnsupportedFeatures).forEach { feature -> - val featureTitle = context.getString(feature.title) - val featureCategory = context.getString(feature.category) + FeatureRegistry.getFilteredFeatures(context, includeUnsupportedFeatures) + .forEach { feature -> + val featureTitle = context.getString(feature.title) + val featureCategory = context.getString(feature.category) - // Index the feature itself - allItems.add( - SearchableItem( - title = featureTitle, - description = context.getString(feature.description), - category = featureCategory, - icon = feature.iconRes, - featureKey = feature.id, - keywords = listOf( - context.getString(R.string.keyword_feature), - context.getString(R.string.keyword_settings) - ), - isBeta = feature.isBeta - ) - ) - - // Index sub-settings - feature.searchableSettings.forEach { setting -> + // Index the feature itself allItems.add( SearchableItem( - title = context.getString(setting.title), - description = context.getString(setting.description), - category = setting.category?.let { context.getString(it) } - ?: featureCategory, + title = featureTitle, + description = context.getString(feature.description), + category = featureCategory, icon = feature.iconRes, featureKey = feature.id, - parentFeature = featureTitle, - targetSettingHighlightKey = setting.targetSettingHighlightKey, - keywords = if (setting.keywordRes != 0) context.resources.getStringArray( - setting.keywordRes - ).toList() else emptyList(), + keywords = listOf( + context.getString(R.string.keyword_feature), + context.getString(R.string.keyword_settings) + ), isBeta = feature.isBeta ) ) + + // Index sub-settings + feature.searchableSettings.forEach { setting -> + allItems.add( + SearchableItem( + title = context.getString(setting.title), + description = context.getString(setting.description), + category = setting.category?.let { context.getString(it) } + ?: featureCategory, + icon = feature.iconRes, + featureKey = feature.id, + parentFeature = featureTitle, + targetSettingHighlightKey = setting.targetSettingHighlightKey, + keywords = if (setting.keywordRes != 0) context.resources.getStringArray( + setting.keywordRes + ).toList() else emptyList(), + isBeta = feature.isBeta + ) + ) + } } - } // --- Dynamic Status Bar Icons --- StatusBarIconRegistry.ALL_ICONS.forEach { icon -> diff --git a/app/src/main/java/com/sameerasw/essentials/domain/watermark/WatermarkEngine.kt b/app/src/main/java/com/sameerasw/essentials/domain/watermark/WatermarkEngine.kt index fe9027201..2a182b637 100644 --- a/app/src/main/java/com/sameerasw/essentials/domain/watermark/WatermarkEngine.kt +++ b/app/src/main/java/com/sameerasw/essentials/domain/watermark/WatermarkEngine.kt @@ -168,29 +168,58 @@ class WatermarkEngine( android.graphics.Matrix().apply { postRotate(options.rotation.toFloat()) } val rb = Bitmap.createBitmap(bitmap, 0, 0, bitmap.width, bitmap.height, matrix, true) - + // If we have a gainmap, rotate its contents as well to align with the base image if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE && currentGainmap != null) { try { val gmContents = currentGainmap.gainmapContents - val rotatedGmContents = Bitmap.createBitmap(gmContents, 0, 0, gmContents.width, gmContents.height, matrix, true) + val rotatedGmContents = Bitmap.createBitmap( + gmContents, + 0, + 0, + gmContents.width, + gmContents.height, + matrix, + true + ) val newGm = android.graphics.Gainmap(rotatedGmContents) - - newGm.setRatioMin(currentGainmap.ratioMin[0], currentGainmap.ratioMin[1], currentGainmap.ratioMin[2]) - newGm.setRatioMax(currentGainmap.ratioMax[0], currentGainmap.ratioMax[1], currentGainmap.ratioMax[2]) - newGm.setGamma(currentGainmap.gamma[0], currentGainmap.gamma[1], currentGainmap.gamma[2]) - newGm.setEpsilonSdr(currentGainmap.epsilonSdr[0], currentGainmap.epsilonSdr[1], currentGainmap.epsilonSdr[2]) - newGm.setEpsilonHdr(currentGainmap.epsilonHdr[0], currentGainmap.epsilonHdr[1], currentGainmap.epsilonHdr[2]) + + newGm.setRatioMin( + currentGainmap.ratioMin[0], + currentGainmap.ratioMin[1], + currentGainmap.ratioMin[2] + ) + newGm.setRatioMax( + currentGainmap.ratioMax[0], + currentGainmap.ratioMax[1], + currentGainmap.ratioMax[2] + ) + newGm.setGamma( + currentGainmap.gamma[0], + currentGainmap.gamma[1], + currentGainmap.gamma[2] + ) + newGm.setEpsilonSdr( + currentGainmap.epsilonSdr[0], + currentGainmap.epsilonSdr[1], + currentGainmap.epsilonSdr[2] + ) + newGm.setEpsilonHdr( + currentGainmap.epsilonHdr[0], + currentGainmap.epsilonHdr[1], + currentGainmap.epsilonHdr[2] + ) newGm.displayRatioForFullHdr = currentGainmap.displayRatioForFullHdr - newGm.minDisplayRatioForHdrTransition = currentGainmap.minDisplayRatioForHdrTransition - + newGm.minDisplayRatioForHdrTransition = + currentGainmap.minDisplayRatioForHdrTransition + currentGainmap = newGm rb.gainmap = newGm } catch (e: Exception) { e.printStackTrace() } } - + if (rb != bitmap) bitmap.recycle() rb } else { @@ -209,7 +238,7 @@ class WatermarkEngine( try { val gmContents = currentGainmap.gainmapContents val scale = gmContents.width.toFloat() / rotated.width.toFloat() - + var xOffset = 0f var yOffset = 0f @@ -218,46 +247,50 @@ class WatermarkEngine( val baseFrameHeight = (rotated.height * 0.10f).roundToInt() val brandScale = 0.5f + (options.brandTextSize / 100f) val dataScale = 0.5f + (options.dataTextSize / 100f) - + val brandPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply { textSize = (baseFrameHeight * 0.3f) * brandScale } val exifPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply { textSize = (baseFrameHeight * 0.2f) * dataScale } - + val margin = rotated.width * (options.padding / 1000f) val maxAvailableWidth = if (options.showDeviceBrand) { (rotated.width - margin * 2) * 0.6f } else { (rotated.width - margin * 2) } - + var totalExifHeight = 0f if (options.showExif) { val exifItems = buildExifList(exifData, options) if (exifItems.isNotEmpty()) { - val exifRows = wrapExifItems(exifItems, exifPaint, maxAvailableWidth) + val exifRows = + wrapExifItems(exifItems, exifPaint, maxAvailableWidth) totalExifHeight = exifRows.size * (exifPaint.textSize * 1.5f) } } - + var leftSideHeight = 0f if (options.showDeviceBrand) leftSideHeight += brandPaint.textSize if (options.showCustomText && options.customText.isNotEmpty()) { val customScale = 0.5f + (options.customTextSize / 100f) val customPaint = Paint(brandPaint).apply { - textSize = brandPaint.textSize * (customScale / (0.5f + (options.brandTextSize / 100f))) + textSize = + brandPaint.textSize * (customScale / (0.5f + (options.brandTextSize / 100f))) } if (options.showDeviceBrand) leftSideHeight += (brandPaint.textSize * 0.2f) leftSideHeight += customPaint.textSize } - + val minHeight = max(brandPaint.textSize, exifPaint.textSize) * 2f val strokeSpacer = (rotated.width * (options.borderStroke / 1000f)).toInt() - val calculatedHeight = max(leftSideHeight, totalExifHeight) + (margin * 2) + strokeSpacer - val finalFrameHeight = max(minHeight.roundToInt(), calculatedHeight.roundToInt()) - + val calculatedHeight = + max(leftSideHeight, totalExifHeight) + (margin * 2) + strokeSpacer + val finalFrameHeight = + max(minHeight.roundToInt(), calculatedHeight.roundToInt()) + if (options.moveToTop) { yOffset += finalFrameHeight } @@ -272,11 +305,12 @@ class WatermarkEngine( val newGmWidth = (finalResult.width * scale).roundToInt() val newGmHeight = (finalResult.height * scale).roundToInt() - - val newGmContents = Bitmap.createBitmap(newGmWidth, newGmHeight, Bitmap.Config.ARGB_8888) + + val newGmContents = + Bitmap.createBitmap(newGmWidth, newGmHeight, Bitmap.Config.ARGB_8888) val gmCanvas = Canvas(newGmContents) gmCanvas.drawColor(Color.BLACK) // fill with neutral black - + val destRect = RectF( xOffset * scale, yOffset * scale, @@ -284,16 +318,37 @@ class WatermarkEngine( (yOffset + rotated.height) * scale ) gmCanvas.drawBitmap(gmContents, null, destRect, null) - + val newGm = android.graphics.Gainmap(newGmContents) - newGm.setRatioMin(currentGainmap.ratioMin[0], currentGainmap.ratioMin[1], currentGainmap.ratioMin[2]) - newGm.setRatioMax(currentGainmap.ratioMax[0], currentGainmap.ratioMax[1], currentGainmap.ratioMax[2]) - newGm.setGamma(currentGainmap.gamma[0], currentGainmap.gamma[1], currentGainmap.gamma[2]) - newGm.setEpsilonSdr(currentGainmap.epsilonSdr[0], currentGainmap.epsilonSdr[1], currentGainmap.epsilonSdr[2]) - newGm.setEpsilonHdr(currentGainmap.epsilonHdr[0], currentGainmap.epsilonHdr[1], currentGainmap.epsilonHdr[2]) + newGm.setRatioMin( + currentGainmap.ratioMin[0], + currentGainmap.ratioMin[1], + currentGainmap.ratioMin[2] + ) + newGm.setRatioMax( + currentGainmap.ratioMax[0], + currentGainmap.ratioMax[1], + currentGainmap.ratioMax[2] + ) + newGm.setGamma( + currentGainmap.gamma[0], + currentGainmap.gamma[1], + currentGainmap.gamma[2] + ) + newGm.setEpsilonSdr( + currentGainmap.epsilonSdr[0], + currentGainmap.epsilonSdr[1], + currentGainmap.epsilonSdr[2] + ) + newGm.setEpsilonHdr( + currentGainmap.epsilonHdr[0], + currentGainmap.epsilonHdr[1], + currentGainmap.epsilonHdr[2] + ) newGm.displayRatioForFullHdr = currentGainmap.displayRatioForFullHdr - newGm.minDisplayRatioForHdrTransition = currentGainmap.minDisplayRatioForHdrTransition - + newGm.minDisplayRatioForHdrTransition = + currentGainmap.minDisplayRatioForHdrTransition + finalResult.gainmap = newGm } catch (e: Exception) { e.printStackTrace() diff --git a/app/src/main/java/com/sameerasw/essentials/external/ExternalActionReceiver.kt b/app/src/main/java/com/sameerasw/essentials/external/ExternalActionReceiver.kt index 173d20929..d26690a33 100644 --- a/app/src/main/java/com/sameerasw/essentials/external/ExternalActionReceiver.kt +++ b/app/src/main/java/com/sameerasw/essentials/external/ExternalActionReceiver.kt @@ -20,7 +20,10 @@ class ExternalActionReceiver : BroadcastReceiver() { val action = intent.getStringExtra(EXTRA_ACTION) val value = intent.getStringExtra(EXTRA_VALUE) - Log.d("ExternalActionReceiver", "Received external control request: path=$path, action=$action, value=$value") + Log.d( + "ExternalActionReceiver", + "Received external control request: path=$path, action=$action, value=$value" + ) if (action == "update") { ExternalRouter.update(context, path, value, intent.extras) diff --git a/app/src/main/java/com/sameerasw/essentials/external/ExternalControlProvider.kt b/app/src/main/java/com/sameerasw/essentials/external/ExternalControlProvider.kt index 8d0669e12..bae9a42a9 100644 --- a/app/src/main/java/com/sameerasw/essentials/external/ExternalControlProvider.kt +++ b/app/src/main/java/com/sameerasw/essentials/external/ExternalControlProvider.kt @@ -3,7 +3,6 @@ package com.sameerasw.essentials.external import android.content.ContentProvider import android.content.ContentValues import android.database.Cursor -import android.database.MatrixCursor import android.net.Uri import android.os.Bundle diff --git a/app/src/main/java/com/sameerasw/essentials/external/LocationAlarmExternalHandler.kt b/app/src/main/java/com/sameerasw/essentials/external/LocationAlarmExternalHandler.kt index ed572d1d2..e705052a5 100644 --- a/app/src/main/java/com/sameerasw/essentials/external/LocationAlarmExternalHandler.kt +++ b/app/src/main/java/com/sameerasw/essentials/external/LocationAlarmExternalHandler.kt @@ -17,43 +17,57 @@ class LocationAlarmExternalHandler : ExternalHandler { val alarms = repository.getAlarms() val activeId = repository.getActiveAlarmId() - val cursor = MatrixCursor(arrayOf( - "id", - "name", - "latitude", - "longitude", - "radius", - "isEnabled", - "isPaused", - "lastTravelled", - "isActive", - "iconResName" - )) + val cursor = MatrixCursor( + arrayOf( + "id", + "name", + "latitude", + "longitude", + "radius", + "isEnabled", + "isPaused", + "lastTravelled", + "isActive", + "iconResName" + ) + ) for (alarm in alarms) { - cursor.addRow(arrayOf( - alarm.id, - alarm.name, - alarm.latitude, - alarm.longitude, - alarm.radius, - if (alarm.isEnabled) 1 else 0, - if (alarm.isPaused) 1 else 0, - alarm.lastTravelled ?: 0L, - if (alarm.id == activeId) 1 else 0, - alarm.iconResName - )) + cursor.addRow( + arrayOf( + alarm.id, + alarm.name, + alarm.latitude, + alarm.longitude, + alarm.radius, + if (alarm.isEnabled) 1 else 0, + if (alarm.isPaused) 1 else 0, + alarm.lastTravelled ?: 0L, + if (alarm.id == activeId) 1 else 0, + alarm.iconResName + ) + ) } return cursor } return null } - override fun onUpdate(context: Context, remainingPath: String, value: String?, extras: Bundle?): Boolean { + override fun onUpdate( + context: Context, + remainingPath: String, + value: String?, + extras: Bundle? + ): Boolean { return false } - override fun onAction(context: Context, remainingPath: String, action: String?, extras: Bundle?): Bundle? { + override fun onAction( + context: Context, + remainingPath: String, + action: String?, + extras: Bundle? + ): Bundle? { val repository = LocationReachedRepository(context) val targetAction = action ?: remainingPath when (targetAction) { @@ -63,6 +77,7 @@ class LocationAlarmExternalHandler : ExternalHandler { LocationReachedService.start(context) return Bundle().apply { putBoolean("success", true) } } + "stop" -> { repository.saveActiveAlarmId(null) val intent = Intent(context, LocationReachedService::class.java).apply { diff --git a/app/src/main/java/com/sameerasw/essentials/external/SettingsExternalHandler.kt b/app/src/main/java/com/sameerasw/essentials/external/SettingsExternalHandler.kt index c158d9c36..4e9781c85 100644 --- a/app/src/main/java/com/sameerasw/essentials/external/SettingsExternalHandler.kt +++ b/app/src/main/java/com/sameerasw/essentials/external/SettingsExternalHandler.kt @@ -11,7 +11,8 @@ class SettingsExternalHandler : ExternalHandler { override fun onQuery(context: Context, remainingPath: String, extras: Bundle?): Cursor? { val key = remainingPath - val prefs = context.getSharedPreferences(SettingsRepository.PREFS_NAME, Context.MODE_PRIVATE) + val prefs = + context.getSharedPreferences(SettingsRepository.PREFS_NAME, Context.MODE_PRIVATE) if (!prefs.contains(key)) return null val value = prefs.all[key] ?: return null @@ -20,9 +21,15 @@ class SettingsExternalHandler : ExternalHandler { return cursor } - override fun onUpdate(context: Context, remainingPath: String, value: String?, extras: Bundle?): Boolean { + override fun onUpdate( + context: Context, + remainingPath: String, + value: String?, + extras: Bundle? + ): Boolean { val key = remainingPath - val prefs = context.getSharedPreferences(SettingsRepository.PREFS_NAME, Context.MODE_PRIVATE) + val prefs = + context.getSharedPreferences(SettingsRepository.PREFS_NAME, Context.MODE_PRIVATE) if (!prefs.contains(key)) return false val currentValue = prefs.all[key] ?: return false @@ -43,10 +50,16 @@ class SettingsExternalHandler : ExternalHandler { } } - override fun onAction(context: Context, remainingPath: String, action: String?, extras: Bundle?): Bundle? { + override fun onAction( + context: Context, + remainingPath: String, + action: String?, + extras: Bundle? + ): Bundle? { if (action == "toggle") { val key = remainingPath - val prefs = context.getSharedPreferences(SettingsRepository.PREFS_NAME, Context.MODE_PRIVATE) + val prefs = + context.getSharedPreferences(SettingsRepository.PREFS_NAME, Context.MODE_PRIVATE) val currentValue = prefs.all[key] if (currentValue is Boolean) { val repository = SettingsRepository(context) diff --git a/app/src/main/java/com/sameerasw/essentials/services/DailyWallpaperWorker.kt b/app/src/main/java/com/sameerasw/essentials/services/DailyWallpaperWorker.kt index 51eef09ce..eff3528b7 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/DailyWallpaperWorker.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/DailyWallpaperWorker.kt @@ -19,7 +19,10 @@ class DailyWallpaperWorker( val wallpaperRepository = WallpaperRepository() return try { - val isEnabled = settingsRepository.getBoolean(SettingsRepository.KEY_DAILY_WALLPAPER_AUTO_UPDATE, false) + val isEnabled = settingsRepository.getBoolean( + SettingsRepository.KEY_DAILY_WALLPAPER_AUTO_UPDATE, + false + ) if (!isEnabled) { return Result.success() } @@ -27,8 +30,10 @@ class DailyWallpaperWorker( val force = inputData.getBoolean("force", false) val todayWallpaper = wallpaperRepository.fetchTodayWallpaper() if (todayWallpaper != null) { - val cachedId = settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_ID) ?: "" - + val cachedId = + settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_ID) + ?: "" + // If it is a new wallpaper (or forced run), fetch and apply if (force || todayWallpaper.id != cachedId) { val applyHome = settingsRepository.getDailyWallpaperApplyHome() @@ -38,16 +43,44 @@ class DailyWallpaperWorker( if (applyLock) flags = flags or android.app.WallpaperManager.FLAG_LOCK if (flags != 0) { - val applied = wallpaperRepository.autoApplyWallpaper(context, todayWallpaper.urlMobile, flags) + val applied = wallpaperRepository.autoApplyWallpaper( + context, + todayWallpaper.urlMobile, + flags + ) if (applied) { - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_ID, todayWallpaper.id) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL, todayWallpaper.url) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL_MOBILE, todayWallpaper.urlMobile) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_NAME, todayWallpaper.authorName) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_LINK, todayWallpaper.authorLink) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_PHOTO_LINK, todayWallpaper.photoLink) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_UPDATED_AT, todayWallpaper.updatedAt) - Log.d("DailyWallpaperWorker", "Successfully auto-applied wallpaper (force=$force, flags=$flags): ${todayWallpaper.id}") + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_LAST_ID, + todayWallpaper.id + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL, + todayWallpaper.url + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL_MOBILE, + todayWallpaper.urlMobile + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_NAME, + todayWallpaper.authorName + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_LINK, + todayWallpaper.authorLink + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_PHOTO_LINK, + todayWallpaper.photoLink + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_UPDATED_AT, + todayWallpaper.updatedAt + ) + Log.d( + "DailyWallpaperWorker", + "Successfully auto-applied wallpaper (force=$force, flags=$flags): ${todayWallpaper.id}" + ) } } } diff --git a/app/src/main/java/com/sameerasw/essentials/services/DeviceInfoSyncManager.kt b/app/src/main/java/com/sameerasw/essentials/services/DeviceInfoSyncManager.kt index 2fa80d4bd..aaa8e759d 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/DeviceInfoSyncManager.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/DeviceInfoSyncManager.kt @@ -62,7 +62,8 @@ object DeviceInfoSyncManager { } private var currentContext: Context? = null - private var prefChangeListener: android.content.SharedPreferences.OnSharedPreferenceChangeListener? = null + private var prefChangeListener: android.content.SharedPreferences.OnSharedPreferenceChangeListener? = + null private var aodContentObserver: android.database.ContentObserver? = null private var tapToWakeContentObserver: android.database.ContentObserver? = null @@ -111,15 +112,20 @@ object DeviceInfoSyncManager { syncDeviceInfo(context) } } - context.contentResolver.registerContentObserver(tapToWakeUri, true, tapToWakeContentObserver!!) + context.contentResolver.registerContentObserver( + tapToWakeUri, + true, + tapToWakeContentObserver!! + ) // Sync on preference change (flashlight pulse, glance, watch controls) val p = context.getSharedPreferences("essentials_prefs", Context.MODE_PRIVATE) - prefChangeListener = android.content.SharedPreferences.OnSharedPreferenceChangeListener { _, key -> - if (key == "flashlight_pulse_enabled" || key == "notification_glance_enabled" || key == "watch_controls_layout" || key == "watch_sync_sound_mode_enabled") { - syncDeviceInfo(context) + prefChangeListener = + android.content.SharedPreferences.OnSharedPreferenceChangeListener { _, key -> + if (key == "flashlight_pulse_enabled" || key == "notification_glance_enabled" || key == "watch_controls_layout" || key == "watch_sync_sound_mode_enabled") { + syncDeviceInfo(context) + } } - } p.registerOnSharedPreferenceChangeListener(prefChangeListener) } @@ -178,13 +184,24 @@ object DeviceInfoSyncManager { val flashlightPulseEnabled = prefs.getBoolean("flashlight_pulse_enabled", false) val aodState = when { prefs.getBoolean("notification_glance_enabled", false) -> 2 - android.provider.Settings.Secure.getInt(context.contentResolver, "doze_always_on", 0) == 1 -> 1 + android.provider.Settings.Secure.getInt( + context.contentResolver, + "doze_always_on", + 0 + ) == 1 -> 1 + else -> 0 } - val watchControlsLayout = prefs.getString("watch_controls_layout", "LOCK,SOUND,FLASHLIGHT,FLASHLIGHT_PULSE,AOD") ?: "LOCK,SOUND,FLASHLIGHT,FLASHLIGHT_PULSE,AOD" + val watchControlsLayout = + prefs.getString("watch_controls_layout", "LOCK,SOUND,FLASHLIGHT,FLASHLIGHT_PULSE,AOD") + ?: "LOCK,SOUND,FLASHLIGHT,FLASHLIGHT_PULSE,AOD" - val tapToWakeEnabled = android.provider.Settings.Secure.getInt(context.contentResolver, "doze_tap_gesture", 1) == 1 + val tapToWakeEnabled = android.provider.Settings.Secure.getInt( + context.contentResolver, + "doze_tap_gesture", + 1 + ) == 1 val watchSyncSoundModeEnabled = prefs.getBoolean("watch_sync_sound_mode_enabled", false) val dataMap = putDataMapReq.dataMap @@ -201,7 +218,7 @@ object DeviceInfoSyncManager { dataMap.putBoolean("tap_to_wake_enabled", tapToWakeEnabled) dataMap.putString("watch_controls_layout", watchControlsLayout) dataMap.putBoolean("watch_sync_sound_mode_enabled", watchSyncSoundModeEnabled) - + dataMap.putBoolean("travel_active", travelActive) dataMap.putString("travel_name", travelName) dataMap.putFloat("travel_progress", travelProgress) diff --git a/app/src/main/java/com/sameerasw/essentials/services/EssentialsWearableListenerService.kt b/app/src/main/java/com/sameerasw/essentials/services/EssentialsWearableListenerService.kt index b04db21fc..cc6ed7b57 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/EssentialsWearableListenerService.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/EssentialsWearableListenerService.kt @@ -1,10 +1,9 @@ package com.sameerasw.essentials.services -import com.google.android.gms.wearable.MessageEvent -import com.google.android.gms.wearable.WearableListenerService - import android.content.Context import androidx.core.content.edit +import com.google.android.gms.wearable.MessageEvent +import com.google.android.gms.wearable.WearableListenerService class EssentialsWearableListenerService : WearableListenerService() { companion object { @@ -96,7 +95,11 @@ class EssentialsWearableListenerService : WearableListenerService() { "/toggle_aod" -> { val prefs = getSharedPreferences("essentials_prefs", MODE_PRIVATE) val isGlanceEnabled = prefs.getBoolean("notification_glance_enabled", false) - val isAodEnabled = android.provider.Settings.Secure.getInt(contentResolver, "doze_always_on", 0) == 1 + val isAodEnabled = android.provider.Settings.Secure.getInt( + contentResolver, + "doze_always_on", + 0 + ) == 1 when { isGlanceEnabled -> { @@ -104,41 +107,75 @@ class EssentialsWearableListenerService : WearableListenerService() { putBoolean("notification_glance_enabled", false) } try { - android.provider.Settings.Secure.putInt(contentResolver, "doze_always_on", 1) + android.provider.Settings.Secure.putInt( + contentResolver, + "doze_always_on", + 1 + ) } catch (_: Exception) { - com.sameerasw.essentials.utils.ShellUtils.runCommand(this, "settings put secure doze_always_on 1") + com.sameerasw.essentials.utils.ShellUtils.runCommand( + this, + "settings put secure doze_always_on 1" + ) } } + isAodEnabled -> { try { - android.provider.Settings.Secure.putInt(contentResolver, "doze_always_on", 0) + android.provider.Settings.Secure.putInt( + contentResolver, + "doze_always_on", + 0 + ) } catch (_: Exception) { - com.sameerasw.essentials.utils.ShellUtils.runCommand(this, "settings put secure doze_always_on 0") + com.sameerasw.essentials.utils.ShellUtils.runCommand( + this, + "settings put secure doze_always_on 0" + ) } prefs.edit(commit = true) { putBoolean("notification_glance_enabled", false) } } + else -> { prefs.edit(commit = true) { putBoolean("notification_glance_enabled", true) } try { - android.provider.Settings.Secure.putInt(contentResolver, "doze_always_on", 0) + android.provider.Settings.Secure.putInt( + contentResolver, + "doze_always_on", + 0 + ) } catch (_: Exception) { - com.sameerasw.essentials.utils.ShellUtils.runCommand(this, "settings put secure doze_always_on 0") + com.sameerasw.essentials.utils.ShellUtils.runCommand( + this, + "settings put secure doze_always_on 0" + ) } } } } "/toggle_tap_to_wake" -> { - val isEnabled = android.provider.Settings.Secure.getInt(contentResolver, "doze_tap_gesture", 1) == 1 + val isEnabled = android.provider.Settings.Secure.getInt( + contentResolver, + "doze_tap_gesture", + 1 + ) == 1 val newState = if (isEnabled) 0 else 1 try { - android.provider.Settings.Secure.putInt(contentResolver, "doze_tap_gesture", newState) + android.provider.Settings.Secure.putInt( + contentResolver, + "doze_tap_gesture", + newState + ) } catch (_: Exception) { - com.sameerasw.essentials.utils.ShellUtils.runCommand(this, "settings put secure doze_tap_gesture $newState") + com.sameerasw.essentials.utils.ShellUtils.runCommand( + this, + "settings put secure doze_tap_gesture $newState" + ) } } @@ -173,7 +210,8 @@ class EssentialsWearableListenerService : WearableListenerService() { val isSyncEnabled = prefs.getBoolean("watch_sync_sound_mode_enabled", false) if (isSyncEnabled) { val ringerMode = messageEvent.data?.firstOrNull()?.toInt() ?: 2 - val audioManager = getSystemService(Context.AUDIO_SERVICE) as? android.media.AudioManager + val audioManager = + getSystemService(Context.AUDIO_SERVICE) as? android.media.AudioManager try { audioManager?.ringerMode = ringerMode } catch (e: Exception) { diff --git a/app/src/main/java/com/sameerasw/essentials/services/LocationReachedService.kt b/app/src/main/java/com/sameerasw/essentials/services/LocationReachedService.kt index 3f8ee7b7d..d5c7deaea 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/LocationReachedService.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/LocationReachedService.kt @@ -126,15 +126,27 @@ class LocationReachedService : Service() { } } - private fun saveTravelProgress(active: Boolean, alarm: LocationAlarm?, progressPercent: Int, etaText: String?, distanceText: String?) { + private fun saveTravelProgress( + active: Boolean, + alarm: LocationAlarm?, + progressPercent: Int, + etaText: String?, + distanceText: String? + ) { val prefs = getSharedPreferences("essentials_prefs", MODE_PRIVATE) val editor = prefs.edit() if (active && alarm != null) { editor.putBoolean("travel_active", true) editor.putString("travel_name", alarm.name) editor.putFloat("travel_progress", progressPercent.toFloat() / 100f) - editor.putString("travel_remaining_time", etaText ?: getString(R.string.location_reached_calculating)) - editor.putString("travel_remaining_distance", distanceText ?: getString(R.string.location_reached_calculating)) + editor.putString( + "travel_remaining_time", + etaText ?: getString(R.string.location_reached_calculating) + ) + editor.putString( + "travel_remaining_distance", + distanceText ?: getString(R.string.location_reached_calculating) + ) editor.putString("travel_icon_name", alarm.iconResName) editor.putBoolean("travel_is_paused", alarm.isPaused) if (progressPercent >= 100) { diff --git a/app/src/main/java/com/sameerasw/essentials/services/NotificationListener.kt b/app/src/main/java/com/sameerasw/essentials/services/NotificationListener.kt index 34962476d..cc908c1c1 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/NotificationListener.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/NotificationListener.kt @@ -20,14 +20,13 @@ import com.sameerasw.essentials.domain.model.NotificationLightingColorMode import com.sameerasw.essentials.domain.model.NotificationLightingSide import com.sameerasw.essentials.services.receivers.FlashlightActionReceiver import com.sameerasw.essentials.services.tiles.ScreenOffAccessibilityService +import com.sameerasw.essentials.services.widgets.PixelSearchbarWidget import com.sameerasw.essentials.utils.AppUtil import com.sameerasw.essentials.utils.HapticUtil import com.sameerasw.essentials.utils.PermissionUtils +import kotlinx.coroutines.launch import java.io.File import java.io.FileOutputStream -import com.sameerasw.essentials.services.widgets.PixelSearchbarWidget - -import kotlinx.coroutines.launch class NotificationListener : NotificationListenerService() { @@ -631,15 +630,18 @@ class NotificationListener : NotificationListenerService() { val metadata = controller.metadata val playbackState = controller.playbackState - val title = metadata?.getString(android.media.MediaMetadata.METADATA_KEY_TITLE) ?: "" - val artist = metadata?.getString(android.media.MediaMetadata.METADATA_KEY_ARTIST) ?: "" + val title = + metadata?.getString(android.media.MediaMetadata.METADATA_KEY_TITLE) ?: "" + val artist = + metadata?.getString(android.media.MediaMetadata.METADATA_KEY_ARTIST) ?: "" val isPlaying = playbackState?.state == android.media.session.PlaybackState.STATE_PLAYING // Extract and save album art - val artwork = metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_ALBUM_ART) - ?: metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_ART) - ?: metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_DISPLAY_ICON) + val artwork = + metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_ALBUM_ART) + ?: metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_ART) + ?: metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_DISPLAY_ICON) val filesDirFile = File(filesDir, "music_artwork.png") if (artwork != null) { @@ -647,7 +649,8 @@ class NotificationListener : NotificationListenerService() { FileOutputStream(filesDirFile).use { out -> artwork.compress(Bitmap.CompressFormat.PNG, 100, out) } - } catch (_: Exception) {} + } catch (_: Exception) { + } } else { if (filesDirFile.exists()) filesDirFile.delete() } @@ -661,13 +664,15 @@ class NotificationListener : NotificationListenerService() { kotlinx.coroutines.MainScope().launch { try { - val managerGlance = androidx.glance.appwidget.GlanceAppWidgetManager(this@NotificationListener) + val managerGlance = + androidx.glance.appwidget.GlanceAppWidgetManager(this@NotificationListener) val widgetGlance = PixelSearchbarWidget() val glanceIds = managerGlance.getGlanceIds(PixelSearchbarWidget::class.java) for (glanceId in glanceIds) { widgetGlance.update(this@NotificationListener, glanceId) } - } catch (_: Exception) {} + } catch (_: Exception) { + } } val lastState = lastMediaStates[sbn.packageName] diff --git a/app/src/main/java/com/sameerasw/essentials/services/ScreenOffWidgetProvider.kt b/app/src/main/java/com/sameerasw/essentials/services/ScreenOffWidgetProvider.kt index aef73d368..335907a5e 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/ScreenOffWidgetProvider.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/ScreenOffWidgetProvider.kt @@ -6,7 +6,6 @@ import android.appwidget.AppWidgetProvider import android.content.Context import android.content.Intent import android.os.Build -import android.os.PowerManager import android.os.SystemClock import android.os.Vibrator import android.os.VibratorManager @@ -14,12 +13,10 @@ import android.provider.Settings import android.view.KeyEvent import android.widget.RemoteViews import android.widget.Toast -import androidx.core.content.getSystemService import com.sameerasw.essentials.R import com.sameerasw.essentials.domain.HapticFeedbackType import com.sameerasw.essentials.domain.ScreenOffMethod import com.sameerasw.essentials.services.tiles.ScreenOffAccessibilityService -import com.sameerasw.essentials.utils.HapticUtil import com.sameerasw.essentials.utils.ShellUtils import com.sameerasw.essentials.utils.performHapticFeedback @@ -75,11 +72,17 @@ class ScreenOffWidgetProvider : AppWidgetProvider() { override fun onReceive(context: Context, intent: Intent) { super.onReceive(context, intent) if (intent.action == "WIDGET_CLICK") { - val appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID) + val appWidgetId = intent.getIntExtra( + AppWidgetManager.EXTRA_APPWIDGET_ID, + AppWidgetManager.INVALID_APPWIDGET_ID + ) val prefs = context.getSharedPreferences("essentials_prefs", Context.MODE_PRIVATE) - + val isDoubleTapRequired = if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) { - prefs.getBoolean("screen_off_double_tap_$appWidgetId", prefs.getBoolean("screen_off_double_tap", false)) + prefs.getBoolean( + "screen_off_double_tap_$appWidgetId", + prefs.getBoolean("screen_off_double_tap", false) + ) } else { prefs.getBoolean("screen_off_double_tap", false) } @@ -100,7 +103,7 @@ class ScreenOffWidgetProvider : AppWidgetProvider() { } else { // First tap prefs.edit().putLong(lastTapTimeKey, currentTime).apply() - + val vibrator = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { context.getSystemService(VibratorManager::class.java)?.defaultVibrator } else { @@ -121,13 +124,23 @@ class ScreenOffWidgetProvider : AppWidgetProvider() { private fun triggerScreenOff(context: Context) { val prefs = context.getSharedPreferences("essentials_prefs", Context.MODE_PRIVATE) val selectedScreenOffMethod = try { - ScreenOffMethod.valueOf(prefs.getString("screen_off_method", ScreenOffMethod.ACCESSIBILITY.name) ?: ScreenOffMethod.ACCESSIBILITY.name) + ScreenOffMethod.valueOf( + prefs.getString( + "screen_off_method", + ScreenOffMethod.ACCESSIBILITY.name + ) ?: ScreenOffMethod.ACCESSIBILITY.name + ) } catch (e: IllegalArgumentException) { ScreenOffMethod.ACCESSIBILITY } val hapticFeedbackType = try { - HapticFeedbackType.valueOf(prefs.getString("haptic_feedback_type", HapticFeedbackType.NONE.name) ?: HapticFeedbackType.NONE.name) + HapticFeedbackType.valueOf( + prefs.getString( + "haptic_feedback_type", + HapticFeedbackType.NONE.name + ) ?: HapticFeedbackType.NONE.name + ) } catch (e: IllegalArgumentException) { HapticFeedbackType.NONE } @@ -152,17 +165,26 @@ class ScreenOffWidgetProvider : AppWidgetProvider() { } context.startService(serviceIntent) } else { - Toast.makeText(context, "Missing Accessibility permission, Check the app", Toast.LENGTH_SHORT) + Toast.makeText( + context, + "Missing Accessibility permission, Check the app", + Toast.LENGTH_SHORT + ) .show() } } + ScreenOffMethod.INPUT -> { if (ShellUtils.hasPermission(context)) { // Simulate power button press using input keyevent // Requires root or Shizuku, which ShellUtils handles ShellUtils.runCommand(context, "input keyevent ${KeyEvent.KEYCODE_POWER}") } else { - Toast.makeText(context, "Missing Shizuku/Root permission for Input method, Check the app", Toast.LENGTH_SHORT) + Toast.makeText( + context, + "Missing Shizuku/Root permission for Input method, Check the app", + Toast.LENGTH_SHORT + ) .show() } } diff --git a/app/src/main/java/com/sameerasw/essentials/services/automation/executors/CombinedActionExecutor.kt b/app/src/main/java/com/sameerasw/essentials/services/automation/executors/CombinedActionExecutor.kt index 4f0a4a93e..22a51fe8a 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/automation/executors/CombinedActionExecutor.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/automation/executors/CombinedActionExecutor.kt @@ -6,14 +6,12 @@ import android.content.Intent import android.hardware.camera2.CameraManager import android.media.AudioManager import android.os.Build -import android.os.Vibrator -import android.os.VibratorManager import android.provider.Settings import android.view.KeyEvent import android.widget.Toast -import com.sameerasw.essentials.domain.diy.Action -import com.sameerasw.essentials.domain.ScreenOffMethod import com.sameerasw.essentials.domain.HapticFeedbackType +import com.sameerasw.essentials.domain.ScreenOffMethod +import com.sameerasw.essentials.domain.diy.Action import com.sameerasw.essentials.services.tiles.ScreenOffAccessibilityService import com.sameerasw.essentials.utils.ShellUtils import com.sameerasw.essentials.utils.performHapticFeedback @@ -229,21 +227,37 @@ object CombinedActionExecutor { context.contentResolver, Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES ) - val hasAccess = enabledServices?.contains("com.sameerasw.essentials.services.tiles.ScreenOffAccessibilityService") == true + val hasAccess = + enabledServices?.contains("com.sameerasw.essentials.services.tiles.ScreenOffAccessibilityService") == true if (hasAccess) { - val serviceIntent = Intent(context, ScreenOffAccessibilityService::class.java).apply { + val serviceIntent = Intent( + context, + ScreenOffAccessibilityService::class.java + ).apply { this.action = "LOCK_SCREEN" } context.startService(serviceIntent) } else { - Toast.makeText(context, "Missing Accessibility permission", Toast.LENGTH_SHORT).show() + Toast.makeText( + context, + "Missing Accessibility permission", + Toast.LENGTH_SHORT + ).show() } } + ScreenOffMethod.INPUT -> { if (ShellUtils.hasPermission(context)) { - ShellUtils.runCommand(context, "input keyevent ${KeyEvent.KEYCODE_POWER}") + ShellUtils.runCommand( + context, + "input keyevent ${KeyEvent.KEYCODE_POWER}" + ) } else { - Toast.makeText(context, "Missing Shizuku/Root permission", Toast.LENGTH_SHORT).show() + Toast.makeText( + context, + "Missing Shizuku/Root permission", + Toast.LENGTH_SHORT + ).show() } } } @@ -251,20 +265,50 @@ object CombinedActionExecutor { is Action.MediaPlayPause -> { val am = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager - am.dispatchMediaKeyEvent(KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE)) - am.dispatchMediaKeyEvent(KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE)) + am.dispatchMediaKeyEvent( + KeyEvent( + KeyEvent.ACTION_DOWN, + KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE + ) + ) + am.dispatchMediaKeyEvent( + KeyEvent( + KeyEvent.ACTION_UP, + KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE + ) + ) } is Action.MediaNext -> { val am = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager - am.dispatchMediaKeyEvent(KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_NEXT)) - am.dispatchMediaKeyEvent(KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_NEXT)) + am.dispatchMediaKeyEvent( + KeyEvent( + KeyEvent.ACTION_DOWN, + KeyEvent.KEYCODE_MEDIA_NEXT + ) + ) + am.dispatchMediaKeyEvent( + KeyEvent( + KeyEvent.ACTION_UP, + KeyEvent.KEYCODE_MEDIA_NEXT + ) + ) } is Action.MediaPrevious -> { val am = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager - am.dispatchMediaKeyEvent(KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PREVIOUS)) - am.dispatchMediaKeyEvent(KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_PREVIOUS)) + am.dispatchMediaKeyEvent( + KeyEvent( + KeyEvent.ACTION_DOWN, + KeyEvent.KEYCODE_MEDIA_PREVIOUS + ) + ) + am.dispatchMediaKeyEvent( + KeyEvent( + KeyEvent.ACTION_UP, + KeyEvent.KEYCODE_MEDIA_PREVIOUS + ) + ) } is Action.AIAssistant -> { @@ -284,7 +328,11 @@ object CombinedActionExecutor { if (serviceInst != null) { serviceInst.performGlobalAction(android.accessibilityservice.AccessibilityService.GLOBAL_ACTION_TAKE_SCREENSHOT) } else { - Toast.makeText(context, "Accessibility service is not running", Toast.LENGTH_SHORT).show() + Toast.makeText( + context, + "Accessibility service is not running", + Toast.LENGTH_SHORT + ).show() } } } @@ -292,7 +340,8 @@ object CombinedActionExecutor { is Action.ToggleMediaVolume -> { val am = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager val currentVolume = am.getStreamVolume(AudioManager.STREAM_MUSIC) - val prefs = context.getSharedPreferences("essentials_prefs", Context.MODE_PRIVATE) + val prefs = + context.getSharedPreferences("essentials_prefs", Context.MODE_PRIVATE) if (currentVolume > 0) { prefs.edit().putInt("last_media_volume", currentVolume).apply() @@ -302,7 +351,11 @@ object CombinedActionExecutor { "last_media_volume", am.getStreamMaxVolume(AudioManager.STREAM_MUSIC) / 2 ) - am.setStreamVolume(AudioManager.STREAM_MUSIC, lastVolume, AudioManager.FLAG_SHOW_UI) + am.setStreamVolume( + AudioManager.STREAM_MUSIC, + lastVolume, + AudioManager.FLAG_SHOW_UI + ) } } @@ -321,18 +374,27 @@ object CombinedActionExecutor { is Action.PinApp -> { try { val useActivityTask = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q - val serviceName = if (useActivityTask) "activity_task" else Context.ACTIVITY_SERVICE - val stubClassName = if (useActivityTask) "android.app.IActivityTaskManager\$Stub" else "android.app.IActivityManager\$Stub" - val interfaceClassName = if (useActivityTask) "android.app.IActivityTaskManager" else "android.app.IActivityManager" + val serviceName = + if (useActivityTask) "activity_task" else Context.ACTIVITY_SERVICE + val stubClassName = + if (useActivityTask) "android.app.IActivityTaskManager\$Stub" else "android.app.IActivityManager\$Stub" + val interfaceClassName = + if (useActivityTask) "android.app.IActivityTaskManager" else "android.app.IActivityManager" val binder = SystemServiceHelper.getSystemService(serviceName) val stubClass = Class.forName(stubClassName) val interfaceClass = Class.forName(interfaceClassName) val serviceInstance = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - org.lsposed.hiddenapibypass.HiddenApiBypass.invoke(stubClass, null, "asInterface", ShizukuBinderWrapper(binder)) + org.lsposed.hiddenapibypass.HiddenApiBypass.invoke( + stubClass, + null, + "asInterface", + ShizukuBinderWrapper(binder) + ) } else { - val asInterfaceMethod = stubClass.getMethod("asInterface", android.os.IBinder::class.java) + val asInterfaceMethod = + stubClass.getMethod("asInterface", android.os.IBinder::class.java) asInterfaceMethod.invoke(null, ShizukuBinderWrapper(binder)) } @@ -356,11 +418,15 @@ object CombinedActionExecutor { 0 ) as List<*> } else { - val getTasksMethod = interfaceClass.getMethod("getTasks", Int::class.javaPrimitiveType, Int::class.javaPrimitiveType) + val getTasksMethod = interfaceClass.getMethod( + "getTasks", + Int::class.javaPrimitiveType, + Int::class.javaPrimitiveType + ) getTasksMethod.invoke(serviceInstance, 5, 0) as List<*> } } - + var targetTaskId = -1 for (task in tasks) { val taskInfo = task as? ActivityManager.RunningTaskInfo ?: continue @@ -370,7 +436,7 @@ object CombinedActionExecutor { break } } - + if (targetTaskId == -1 && tasks.isNotEmpty()) { val firstTask = tasks.firstOrNull() as? ActivityManager.RunningTaskInfo if (firstTask != null) { @@ -387,15 +453,26 @@ object CombinedActionExecutor { targetTaskId ) } else { - val startLockTaskMethod = interfaceClass.getMethod("startSystemLockTaskMode", Int::class.javaPrimitiveType) + val startLockTaskMethod = interfaceClass.getMethod( + "startSystemLockTaskMode", + Int::class.javaPrimitiveType + ) startLockTaskMethod.invoke(serviceInstance, targetTaskId) } } else { - Toast.makeText(context, "No active foreground task found", Toast.LENGTH_SHORT).show() + Toast.makeText( + context, + "No active foreground task found", + Toast.LENGTH_SHORT + ).show() } } catch (e: Exception) { e.printStackTrace() - Toast.makeText(context, "Failed to pin app: ${e.message}", Toast.LENGTH_SHORT).show() + Toast.makeText( + context, + "Failed to pin app: ${e.message}", + Toast.LENGTH_SHORT + ).show() } } } diff --git a/app/src/main/java/com/sameerasw/essentials/services/handlers/AppFlowHandler.kt b/app/src/main/java/com/sameerasw/essentials/services/handlers/AppFlowHandler.kt index b0bce19b0..1a6b75f94 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/handlers/AppFlowHandler.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/handlers/AppFlowHandler.kt @@ -61,7 +61,9 @@ class AppFlowHandler( cancelRestoreNotification() val autoPkg = intent.getStringExtra(EXTRA_AUTO_ARCHIVE_PACKAGE) val pkgName = intent.getStringExtra(EXTRA_PACKAGE_NAME) - val settingsRepo = com.sameerasw.essentials.data.repository.SettingsRepository(context ?: return) + val settingsRepo = com.sameerasw.essentials.data.repository.SettingsRepository( + context ?: return + ) val config = if (pkgName != null) { settingsRepo.loadShutUpConfigs().find { it.packageName == pkgName } } else null @@ -656,62 +658,63 @@ class AppFlowHandler( val text = "Do you want to restore now?" val criticalText = "Restore Now" - val notification = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { - val builder = android.app.Notification.Builder(context, "shutup_restore_channel") - .setSmallIcon(com.sameerasw.essentials.R.drawable.rounded_code_24) - .setContentTitle(title) - .setContentText(text) - .setCategory(android.app.Notification.CATEGORY_SERVICE) - .setVisibility(android.app.Notification.VISIBILITY_PUBLIC) - .setOnlyAlertOnce(true) - .setOngoing(true) - .addAction( - android.app.Notification.Action.Builder( - android.graphics.drawable.Icon.createWithResource( - context, - com.sameerasw.essentials.R.drawable.rounded_code_24 - ), + val notification = + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { + val builder = android.app.Notification.Builder(context, "shutup_restore_channel") + .setSmallIcon(com.sameerasw.essentials.R.drawable.rounded_code_24) + .setContentTitle(title) + .setContentText(text) + .setCategory(android.app.Notification.CATEGORY_SERVICE) + .setVisibility(android.app.Notification.VISIBILITY_PUBLIC) + .setOnlyAlertOnce(true) + .setOngoing(true) + .addAction( + android.app.Notification.Action.Builder( + android.graphics.drawable.Icon.createWithResource( + context, + com.sameerasw.essentials.R.drawable.rounded_code_24 + ), + "Restore Now", + restorePendingIntent + ).build() + ) + + try { + val setShortCriticalText = builder.javaClass.getMethod( + "setShortCriticalText", + CharSequence::class.java + ) + setShortCriticalText.invoke(builder, criticalText) + } catch (_: Throwable) { + } + + val extras = android.os.Bundle() + extras.putBoolean("android.requestPromotedOngoing", true) + extras.putString("android.shortCriticalText", criticalText) + builder.addExtras(extras) + builder.build() + } else { + NotificationCompat.Builder(context, "shutup_restore_channel") + .setSmallIcon(com.sameerasw.essentials.R.drawable.rounded_code_24) + .setContentTitle(title) + .setContentText(text) + .setPriority(NotificationCompat.PRIORITY_MAX) + .setCategory(NotificationCompat.CATEGORY_SERVICE) + .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) + .setOnlyAlertOnce(true) + .setOngoing(true) + .addAction( + com.sameerasw.essentials.R.drawable.rounded_code_24, "Restore Now", restorePendingIntent - ).build() - ) - - try { - val setShortCriticalText = builder.javaClass.getMethod( - "setShortCriticalText", - CharSequence::class.java - ) - setShortCriticalText.invoke(builder, criticalText) - } catch (_: Throwable) { + ) + .addExtras(android.os.Bundle().apply { + putBoolean("android.requestPromotedOngoing", true) + putString("android.shortCriticalText", criticalText) + }) + .build() } - val extras = android.os.Bundle() - extras.putBoolean("android.requestPromotedOngoing", true) - extras.putString("android.shortCriticalText", criticalText) - builder.addExtras(extras) - builder.build() - } else { - NotificationCompat.Builder(context, "shutup_restore_channel") - .setSmallIcon(com.sameerasw.essentials.R.drawable.rounded_code_24) - .setContentTitle(title) - .setContentText(text) - .setPriority(NotificationCompat.PRIORITY_MAX) - .setCategory(NotificationCompat.CATEGORY_SERVICE) - .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) - .setOnlyAlertOnce(true) - .setOngoing(true) - .addAction( - com.sameerasw.essentials.R.drawable.rounded_code_24, - "Restore Now", - restorePendingIntent - ) - .addExtras(android.os.Bundle().apply { - putBoolean("android.requestPromotedOngoing", true) - putString("android.shortCriticalText", criticalText) - }) - .build() - } - notificationManager.notify(NOTIFICATION_ID_SHUTUP_RESTORE, notification) } @@ -811,7 +814,8 @@ class AppFlowHandler( } private fun restartShizuku() { - val settingsRepository = com.sameerasw.essentials.data.repository.SettingsRepository(context) + val settingsRepository = + com.sameerasw.essentials.data.repository.SettingsRepository(context) val token = settingsRepository.getShizukuAuthToken() if (token.isEmpty()) { Log.w("AppFlowHandler", "Shizuku auth token is missing, cannot restart Shizuku") diff --git a/app/src/main/java/com/sameerasw/essentials/services/handlers/FlashlightHandler.kt b/app/src/main/java/com/sameerasw/essentials/services/handlers/FlashlightHandler.kt index 4a5b2d04a..80f4fdc69 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/handlers/FlashlightHandler.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/handlers/FlashlightHandler.kt @@ -9,6 +9,10 @@ import android.content.Context import android.content.Intent import android.graphics.Color import android.graphics.drawable.Icon +import android.hardware.Sensor +import android.hardware.SensorEvent +import android.hardware.SensorEventListener +import android.hardware.SensorManager import android.hardware.camera2.CameraCharacteristics import android.hardware.camera2.CameraManager import android.os.Build @@ -18,6 +22,7 @@ import android.os.Vibrator import android.os.VibratorManager import android.util.Log import androidx.core.app.NotificationCompat +import androidx.core.content.edit import com.sameerasw.essentials.R import com.sameerasw.essentials.domain.HapticFeedbackType import com.sameerasw.essentials.services.receivers.FlashlightActionReceiver @@ -26,15 +31,10 @@ import com.sameerasw.essentials.utils.performHapticFeedback import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.launch -import android.hardware.Sensor -import android.hardware.SensorEvent -import android.hardware.SensorEventListener -import android.hardware.SensorManager import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.coroutines.withTimeoutOrNull import kotlin.coroutines.resume import kotlin.time.Duration.Companion.milliseconds -import androidx.core.content.edit class FlashlightHandler( private val service: AccessibilityService, @@ -68,7 +68,8 @@ class FlashlightHandler( super.onTorchModeChanged(cameraId, enabled) isTorchOn = enabled - val screenOffService = service as? com.sameerasw.essentials.services.tiles.ScreenOffAccessibilityService + val screenOffService = + service as? com.sameerasw.essentials.services.tiles.ScreenOffAccessibilityService screenOffService?.updateFlashlightProximityRegistration(enabled) val prefs = service.getSharedPreferences("essentials_prefs", Context.MODE_PRIVATE) @@ -343,7 +344,8 @@ class FlashlightHandler( } private suspend fun getProximityStatus(context: Context): Boolean { - val sensorManager = context.getSystemService(Context.SENSOR_SERVICE) as? SensorManager ?: return false + val sensorManager = + context.getSystemService(Context.SENSOR_SERVICE) as? SensorManager ?: return false val proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY) ?: return false return withTimeoutOrNull(250L.milliseconds) { @@ -364,7 +366,11 @@ class FlashlightHandler( override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {} } - sensorManager.registerListener(listener, proximitySensor, SensorManager.SENSOR_DELAY_FASTEST) + sensorManager.registerListener( + listener, + proximitySensor, + SensorManager.SENSOR_DELAY_FASTEST + ) continuation.invokeOnCancellation { sensorManager.unregisterListener(listener) } diff --git a/app/src/main/java/com/sameerasw/essentials/services/handlers/PocketModeHandler.kt b/app/src/main/java/com/sameerasw/essentials/services/handlers/PocketModeHandler.kt index 1a02c200f..9a9bd1aa7 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/handlers/PocketModeHandler.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/handlers/PocketModeHandler.kt @@ -134,7 +134,12 @@ class PocketModeHandler(private val service: AccessibilityService) { isBypassed = false } - fun onProximityChanged(isBlocked: Boolean, isLightDark: Boolean, useLightSensor: Boolean, triggerDelayMs: Long = 3000L) { + fun onProximityChanged( + isBlocked: Boolean, + isLightDark: Boolean, + useLightSensor: Boolean, + triggerDelayMs: Long = 3000L + ) { val shouldShow = isBlocked && (!useLightSensor || isLightDark) if (shouldShow) { if (!isBypassed && !isOverlayVisible && !isPending) { @@ -158,13 +163,15 @@ class PocketModeHandler(private val service: AccessibilityService) { isBypassed = false } - private class OverlayLifecycleOwner : LifecycleOwner, SavedStateRegistryOwner, ViewModelStoreOwner { + private class OverlayLifecycleOwner : LifecycleOwner, SavedStateRegistryOwner, + ViewModelStoreOwner { private val lifecycleRegistry = LifecycleRegistry(this) private val savedStateRegistryController = SavedStateRegistryController.create(this) private val store = ViewModelStore() override val lifecycle: Lifecycle = lifecycleRegistry - override val savedStateRegistry: SavedStateRegistry = savedStateRegistryController.savedStateRegistry + override val savedStateRegistry: SavedStateRegistry = + savedStateRegistryController.savedStateRegistry override val viewModelStore: ViewModelStore = store fun onCreate() { diff --git a/app/src/main/java/com/sameerasw/essentials/services/tiles/BaseTileService.kt b/app/src/main/java/com/sameerasw/essentials/services/tiles/BaseTileService.kt index e69d40f9e..82d265879 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/tiles/BaseTileService.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/tiles/BaseTileService.kt @@ -5,7 +5,6 @@ import android.os.Build import android.provider.Settings import android.service.quicksettings.Tile import android.service.quicksettings.TileService -import androidx.annotation.RequiresApi import androidx.core.content.edit import com.sameerasw.essentials.R import com.sameerasw.essentials.data.repository.SettingsRepository diff --git a/app/src/main/java/com/sameerasw/essentials/services/tiles/ChargeQuickTileService.kt b/app/src/main/java/com/sameerasw/essentials/services/tiles/ChargeQuickTileService.kt index 94d4e9ebe..6a93936b7 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/tiles/ChargeQuickTileService.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/tiles/ChargeQuickTileService.kt @@ -2,9 +2,7 @@ package com.sameerasw.essentials.services.tiles import android.content.Intent import android.graphics.drawable.Icon -import android.os.Build import android.service.quicksettings.Tile -import androidx.annotation.RequiresApi import com.sameerasw.essentials.FeatureSettingsActivity import com.sameerasw.essentials.R import com.sameerasw.essentials.utils.DeviceUtils diff --git a/app/src/main/java/com/sameerasw/essentials/services/tiles/PrivateDnsTileService.kt b/app/src/main/java/com/sameerasw/essentials/services/tiles/PrivateDnsTileService.kt index 919ac8c1d..b8b18fc40 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/tiles/PrivateDnsTileService.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/tiles/PrivateDnsTileService.kt @@ -84,6 +84,7 @@ class PrivateDnsTileService : BaseTileService() { MODE_AUTO -> { if (getPrivateDnsHostname().isNullOrEmpty()) MODE_OFF else MODE_HOSTNAME } + MODE_HOSTNAME -> MODE_OFF else -> MODE_OFF } @@ -92,9 +93,11 @@ class PrivateDnsTileService : BaseTileService() { MODE_OFF -> { if (getPrivateDnsHostname().isNullOrEmpty()) MODE_OFF else MODE_HOSTNAME } + MODE_AUTO -> { if (getPrivateDnsHostname().isNullOrEmpty()) MODE_OFF else MODE_HOSTNAME } + MODE_HOSTNAME -> MODE_OFF else -> MODE_OFF } diff --git a/app/src/main/java/com/sameerasw/essentials/services/tiles/ScreenOffAccessibilityService.kt b/app/src/main/java/com/sameerasw/essentials/services/tiles/ScreenOffAccessibilityService.kt index cc30768ab..26d8eaf1d 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/tiles/ScreenOffAccessibilityService.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/tiles/ScreenOffAccessibilityService.kt @@ -2,6 +2,7 @@ package com.sameerasw.essentials.services.tiles import android.accessibilityservice.AccessibilityService import android.accessibilityservice.AccessibilityServiceInfo +import android.app.KeyguardManager import android.content.BroadcastReceiver import android.content.Context import android.content.Intent @@ -14,7 +15,6 @@ import android.media.session.MediaSessionManager import android.os.Handler import android.os.Looper import android.os.Vibrator -import android.app.KeyguardManager import android.view.KeyEvent import android.view.accessibility.AccessibilityEvent import com.sameerasw.essentials.data.repository.SettingsRepository @@ -24,12 +24,12 @@ import com.sameerasw.essentials.services.InputEventListenerService import com.sameerasw.essentials.services.NotificationListener import com.sameerasw.essentials.services.handlers.AmbientGlanceHandler import com.sameerasw.essentials.services.handlers.AodForceTurnOffHandler -import com.sameerasw.essentials.services.handlers.PocketModeHandler import com.sameerasw.essentials.services.handlers.AppFlowHandler import com.sameerasw.essentials.services.handlers.ButtonRemapHandler import com.sameerasw.essentials.services.handlers.FlashlightHandler import com.sameerasw.essentials.services.handlers.NotificationLightingHandler import com.sameerasw.essentials.services.handlers.OmniGestureOverlayHandler +import com.sameerasw.essentials.services.handlers.PocketModeHandler import com.sameerasw.essentials.services.handlers.StatusBarIconHandler import com.sameerasw.essentials.services.receivers.FlashlightActionReceiver import com.sameerasw.essentials.utils.FreezeManager @@ -90,14 +90,16 @@ class ScreenOffAccessibilityService : AccessibilityService(), SensorEventListene return appCategoryCache.getOrPut(packageName) { try { val info = packageManager.getApplicationInfo(packageName, 0) - val isLegacyGame = (info.flags and android.content.pm.ApplicationInfo.FLAG_IS_GAME) != 0 - val isCategoryMatch = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { - val category = info.category - category == android.content.pm.ApplicationInfo.CATEGORY_GAME || - category == android.content.pm.ApplicationInfo.CATEGORY_VIDEO - } else { - false - } + val isLegacyGame = + (info.flags and android.content.pm.ApplicationInfo.FLAG_IS_GAME) != 0 + val isCategoryMatch = + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { + val category = info.category + category == android.content.pm.ApplicationInfo.CATEGORY_GAME || + category == android.content.pm.ApplicationInfo.CATEGORY_VIDEO + } else { + false + } isLegacyGame || isCategoryMatch } catch (e: Exception) { false @@ -108,11 +110,12 @@ class ScreenOffAccessibilityService : AccessibilityService(), SensorEventListene private fun hasActiveMediaSession(packageName: String): Boolean { return try { val msm = getSystemService(MEDIA_SESSION_SERVICE) as MediaSessionManager - val componentName = android.content.ComponentName(this, NotificationListener::class.java) + val componentName = + android.content.ComponentName(this, NotificationListener::class.java) val sessions = msm.getActiveSessions(componentName) sessions.any { it.packageName == packageName && - it.playbackState?.state == android.media.session.PlaybackState.STATE_PLAYING + it.playbackState?.state == android.media.session.PlaybackState.STATE_PLAYING } } catch (e: Exception) { false @@ -435,10 +438,10 @@ class ScreenOffAccessibilityService : AccessibilityService(), SensorEventListene if (pocketModeEnabled && !pocketModeHandler.isBypassed) { val currentApp = appFlowHandler.currentPackage val shouldBypass = (currentApp != null && ( - pocketModeExcludedAppsSet.contains(currentApp) || - isGameOrVideoApp(currentApp) || - hasActiveMediaSession(currentApp) - )) || (lockScreenOnly && !keyguardManager.isKeyguardLocked) + pocketModeExcludedAppsSet.contains(currentApp) || + isGameOrVideoApp(currentApp) || + hasActiveMediaSession(currentApp) + )) || (lockScreenOnly && !keyguardManager.isKeyguardLocked) if (!shouldBypass) { pocketModeHandler.onProximityChanged( isBlocked = flashlightHandler.isProximityBlocked, @@ -471,10 +474,10 @@ class ScreenOffAccessibilityService : AccessibilityService(), SensorEventListene if (pocketModeEnabled && !pocketModeHandler.isBypassed) { val currentApp = appFlowHandler.currentPackage val shouldBypass = (currentApp != null && ( - pocketModeExcludedAppsSet.contains(currentApp) || - isGameOrVideoApp(currentApp) || - hasActiveMediaSession(currentApp) - )) || (lockScreenOnly && !keyguardManager.isKeyguardLocked) + pocketModeExcludedAppsSet.contains(currentApp) || + isGameOrVideoApp(currentApp) || + hasActiveMediaSession(currentApp) + )) || (lockScreenOnly && !keyguardManager.isKeyguardLocked) if (!shouldBypass) { pocketModeHandler.onProximityChanged( isBlocked = isBlocked, diff --git a/app/src/main/java/com/sameerasw/essentials/services/widgets/FavoritesWidget.kt b/app/src/main/java/com/sameerasw/essentials/services/widgets/FavoritesWidget.kt index b5d1c9bcd..751b58d19 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/widgets/FavoritesWidget.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/widgets/FavoritesWidget.kt @@ -13,7 +13,6 @@ import androidx.glance.GlanceTheme import androidx.glance.Image import androidx.glance.ImageProvider import androidx.glance.LocalSize -import androidx.glance.action.actionStartActivity import androidx.glance.action.clickable import androidx.glance.appwidget.GlanceAppWidget import androidx.glance.appwidget.action.actionStartActivity @@ -116,26 +115,40 @@ class FavoritesWidget : GlanceAppWidget() { val rowFeatures = rows.getOrNull(rowIndex) if (rowFeatures != null) { Row( - modifier = GlanceModifier.fillMaxWidth().height(cellHeight), + modifier = GlanceModifier.fillMaxWidth() + .height(cellHeight), verticalAlignment = Alignment.CenterVertically, horizontalAlignment = Alignment.CenterHorizontally ) { for (colIndex in 0 until columnsCount) { val feature = rowFeatures.getOrNull(colIndex) if (feature != null) { - val resolvedTitle = context.getString(feature.title) - val pastelColor = ColorUtil.getPastelColorFor(resolvedTitle) - val vibrantColor = ColorUtil.getVibrantColorFor(resolvedTitle) + val resolvedTitle = + context.getString(feature.title) + val pastelColor = + ColorUtil.getPastelColorFor( + resolvedTitle + ) + val vibrantColor = + ColorUtil.getVibrantColorFor( + resolvedTitle + ) - val intent = Intent(context, FeatureSettingsActivity::class.java).apply { + val intent = Intent( + context, + FeatureSettingsActivity::class.java + ).apply { putExtra("feature", feature.id) addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) } - val isVertical = cellHeight >= (cellWidth - 40.dp) + val isVertical = + cellHeight >= (cellWidth - 40.dp) val isSmall = cellHeight < 90.dp - val iconBoxSize = if (isSmall) 36.dp else 48.dp - val iconCornerRadius = if (isSmall) 8.dp else 12.dp + val iconBoxSize = + if (isSmall) 36.dp else 48.dp + val iconCornerRadius = + if (isSmall) 8.dp else 12.dp val iconSize = if (isSmall) 22.dp else 28.dp val fontSize = if (isSmall) 12.sp else 15.sp val spacerSize = if (isSmall) 4.dp else 8.dp @@ -144,37 +157,60 @@ class FavoritesWidget : GlanceAppWidget() { modifier = GlanceModifier .defaultWeight() .fillMaxHeight() - .padding(horizontal = halfSpacing, vertical = halfSpacing), + .padding( + horizontal = halfSpacing, + vertical = halfSpacing + ), contentAlignment = Alignment.Center ) { val cardModifier = GlanceModifier .fillMaxSize() .cornerRadius(16.dp) .background(GlanceTheme.colors.widgetBackground) - .clickable(actionStartActivity(intent)) + .clickable( + actionStartActivity( + intent + ) + ) if (isVertical) { Column( - modifier = cardModifier.padding(8.dp), + modifier = cardModifier.padding( + 8.dp + ), horizontalAlignment = Alignment.CenterHorizontally, verticalAlignment = Alignment.CenterVertically ) { Box( modifier = GlanceModifier .size(iconBoxSize) - .cornerRadius(iconCornerRadius) + .cornerRadius( + iconCornerRadius + ) .background(pastelColor), contentAlignment = Alignment.Center ) { Image( - provider = ImageProvider(feature.iconRes), + provider = ImageProvider( + feature.iconRes + ), contentDescription = resolvedTitle, - colorFilter = ColorFilter.tint(ColorProvider(vibrantColor)), - modifier = GlanceModifier.size(iconSize) + colorFilter = ColorFilter.tint( + ColorProvider( + vibrantColor + ) + ), + modifier = GlanceModifier.size( + iconSize + ) ) } - Spacer(modifier = GlanceModifier.height(spacerSize)) + Spacer( + modifier = GlanceModifier.height( + spacerSize + ) + ) Text( text = resolvedTitle, @@ -182,33 +218,52 @@ class FavoritesWidget : GlanceAppWidget() { color = GlanceTheme.colors.onSurface, fontSize = fontSize, fontWeight = FontWeight.Normal, - fontFamily = FontFamily("google-sans-flex"), + fontFamily = FontFamily( + "google-sans-flex" + ), textAlign = TextAlign.Center ) ) } } else { Row( - modifier = cardModifier.padding(horizontal = 12.dp, vertical = 6.dp), + modifier = cardModifier.padding( + horizontal = 12.dp, + vertical = 6.dp + ), horizontalAlignment = Alignment.CenterHorizontally, verticalAlignment = Alignment.CenterVertically ) { Box( modifier = GlanceModifier .size(iconBoxSize) - .cornerRadius(iconCornerRadius) + .cornerRadius( + iconCornerRadius + ) .background(pastelColor), contentAlignment = Alignment.Center ) { Image( - provider = ImageProvider(feature.iconRes), + provider = ImageProvider( + feature.iconRes + ), contentDescription = resolvedTitle, - colorFilter = ColorFilter.tint(ColorProvider(vibrantColor)), - modifier = GlanceModifier.size(iconSize) + colorFilter = ColorFilter.tint( + ColorProvider( + vibrantColor + ) + ), + modifier = GlanceModifier.size( + iconSize + ) ) } - Spacer(modifier = GlanceModifier.width(spacerSize)) + Spacer( + modifier = GlanceModifier.width( + spacerSize + ) + ) Text( text = resolvedTitle, @@ -216,7 +271,9 @@ class FavoritesWidget : GlanceAppWidget() { color = GlanceTheme.colors.onSurface, fontSize = fontSize, fontWeight = FontWeight.Normal, - fontFamily = FontFamily("google-sans-flex"), + fontFamily = FontFamily( + "google-sans-flex" + ), textAlign = TextAlign.Start ), modifier = GlanceModifier.defaultWeight() @@ -229,7 +286,10 @@ class FavoritesWidget : GlanceAppWidget() { modifier = GlanceModifier .defaultWeight() .fillMaxHeight() - .padding(horizontal = halfSpacing, vertical = halfSpacing) + .padding( + horizontal = halfSpacing, + vertical = halfSpacing + ) ) } } diff --git a/app/src/main/java/com/sameerasw/essentials/services/widgets/FavoritesWidgetReceiver.kt b/app/src/main/java/com/sameerasw/essentials/services/widgets/FavoritesWidgetReceiver.kt index 9a656cc22..a8277ff13 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/widgets/FavoritesWidgetReceiver.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/widgets/FavoritesWidgetReceiver.kt @@ -19,7 +19,8 @@ class FavoritesWidgetReceiver : GlanceAppWidgetReceiver() { ) { kotlinx.coroutines.MainScope().launch { try { - val glanceAppWidgetManager = androidx.glance.appwidget.GlanceAppWidgetManager(context) + val glanceAppWidgetManager = + androidx.glance.appwidget.GlanceAppWidgetManager(context) if (action == Intent.ACTION_CONFIGURATION_CHANGED) { kotlinx.coroutines.delay(500) } diff --git a/app/src/main/java/com/sameerasw/essentials/services/widgets/MusicBroadcastReceiver.kt b/app/src/main/java/com/sameerasw/essentials/services/widgets/MusicBroadcastReceiver.kt index bb4b40a96..6d4a3e292 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/widgets/MusicBroadcastReceiver.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/widgets/MusicBroadcastReceiver.kt @@ -23,11 +23,16 @@ class MusicBroadcastReceiver : BroadcastReceiver() { // Update media info from the current active session try { - val manager = context.getSystemService(Context.MEDIA_SESSION_SERVICE) as? MediaSessionManager ?: return - val componentName = android.content.ComponentName(context, com.sameerasw.essentials.services.NotificationListener::class.java) + val manager = + context.getSystemService(Context.MEDIA_SESSION_SERVICE) as? MediaSessionManager + ?: return + val componentName = android.content.ComponentName( + context, + com.sameerasw.essentials.services.NotificationListener::class.java + ) val sessions = manager.getActiveSessions(componentName) val activeSession = sessions?.sortedWith( - compareByDescending { + compareByDescending { val state = it.playbackState?.state state == PlaybackState.STATE_PLAYING || state == PlaybackState.STATE_BUFFERING }.thenByDescending { @@ -52,7 +57,8 @@ class MusicBroadcastReceiver : BroadcastReceiver() { FileOutputStream(filesDirFile).use { out -> artwork.compress(Bitmap.CompressFormat.PNG, 100, out) } - } catch (_: Exception) {} + } catch (_: Exception) { + } } else { if (filesDirFile.exists()) filesDirFile.delete() } @@ -65,7 +71,8 @@ class MusicBroadcastReceiver : BroadcastReceiver() { // Trigger immediate Glance widget redraw CoroutineScope(Dispatchers.IO).launch { runCatching { - val managerGlance = androidx.glance.appwidget.GlanceAppWidgetManager(context) + val managerGlance = + androidx.glance.appwidget.GlanceAppWidgetManager(context) val widgetGlance = PixelSearchbarWidget() val glanceIds = managerGlance.getGlanceIds(PixelSearchbarWidget::class.java) for (glanceId in glanceIds) { @@ -74,6 +81,7 @@ class MusicBroadcastReceiver : BroadcastReceiver() { } } } - } catch (_: Exception) {} + } catch (_: Exception) { + } } } diff --git a/app/src/main/java/com/sameerasw/essentials/services/widgets/MusicClickActionCallback.kt b/app/src/main/java/com/sameerasw/essentials/services/widgets/MusicClickActionCallback.kt index c7ee379ce..c88d7396b 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/widgets/MusicClickActionCallback.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/widgets/MusicClickActionCallback.kt @@ -8,7 +8,11 @@ import androidx.glance.appwidget.action.ActionCallback import com.sameerasw.essentials.data.repository.SettingsRepository class MusicClickActionCallback : ActionCallback { - override suspend fun onAction(context: Context, glanceId: GlanceId, parameters: ActionParameters) { + override suspend fun onAction( + context: Context, + glanceId: GlanceId, + parameters: ActionParameters + ) { val settings = SettingsRepository(context) val packageName = settings.getPixelSearchbarMusicPackage() if (packageName.isNotEmpty()) { @@ -18,7 +22,8 @@ class MusicClickActionCallback : ActionCallback { launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) context.startActivity(launchIntent) } - } catch (_: Exception) {} + } catch (_: Exception) { + } } } } diff --git a/app/src/main/java/com/sameerasw/essentials/services/widgets/PixelSearchbarWidget.kt b/app/src/main/java/com/sameerasw/essentials/services/widgets/PixelSearchbarWidget.kt index eac470c8b..67972a075 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/widgets/PixelSearchbarWidget.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/widgets/PixelSearchbarWidget.kt @@ -2,17 +2,20 @@ package com.sameerasw.essentials.services.widgets import android.content.Context import android.graphics.BitmapFactory -import android.widget.RemoteViews +import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import androidx.compose.ui.graphics.Color import androidx.glance.GlanceId import androidx.glance.GlanceModifier import androidx.glance.GlanceTheme import androidx.glance.Image import androidx.glance.ImageProvider -import androidx.glance.appwidget.GlanceAppWidget +import androidx.glance.action.actionStartActivity +import androidx.glance.action.clickable import androidx.glance.appwidget.AndroidRemoteViews +import androidx.glance.appwidget.GlanceAppWidget +import androidx.glance.appwidget.action.actionRunCallback +import androidx.glance.appwidget.cornerRadius import androidx.glance.appwidget.provideContent import androidx.glance.background import androidx.glance.layout.Alignment @@ -21,22 +24,18 @@ import androidx.glance.layout.Column import androidx.glance.layout.ContentScale import androidx.glance.layout.fillMaxSize import androidx.glance.layout.padding -import androidx.glance.text.Text -import androidx.glance.text.TextStyle import androidx.glance.text.FontWeight +import androidx.glance.text.Text import androidx.glance.text.TextAlign -import androidx.glance.appwidget.cornerRadius +import androidx.glance.text.TextStyle import androidx.glance.unit.ColorProvider import com.sameerasw.essentials.data.repository.SettingsRepository +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext import java.io.File import java.text.SimpleDateFormat import java.util.Date import java.util.Locale -import androidx.glance.action.clickable -import androidx.glance.action.actionStartActivity -import androidx.glance.appwidget.action.actionRunCallback -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext class PixelSearchbarWidget : GlanceAppWidget() { override val sizeMode = androidx.glance.appwidget.SizeMode.Exact @@ -183,7 +182,8 @@ class PixelSearchbarWidget : GlanceAppWidget() { else -> { // "date" (default) val dateFormat = settingsRepository.getPixelSearchbarDateFormat() val hasPill = settingsRepository.getPixelSearchbarBackgroundPill() - val dateStr = SimpleDateFormat(dateFormat, Locale.getDefault()).format(Date()) + val dateStr = + SimpleDateFormat(dateFormat, Locale.getDefault()).format(Date()) Box( modifier = boxModifier, contentAlignment = Alignment.Center diff --git a/app/src/main/java/com/sameerasw/essentials/services/widgets/PixelSearchbarWidgetReceiver.kt b/app/src/main/java/com/sameerasw/essentials/services/widgets/PixelSearchbarWidgetReceiver.kt index 61d6c373a..d784a7edc 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/widgets/PixelSearchbarWidgetReceiver.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/widgets/PixelSearchbarWidgetReceiver.kt @@ -18,12 +18,14 @@ class PixelSearchbarWidgetReceiver : GlanceAppWidgetReceiver() { ) { kotlinx.coroutines.MainScope().launch { try { - val glanceAppWidgetManager = androidx.glance.appwidget.GlanceAppWidgetManager(context) + val glanceAppWidgetManager = + androidx.glance.appwidget.GlanceAppWidgetManager(context) if (action == Intent.ACTION_CONFIGURATION_CHANGED) { kotlinx.coroutines.delay(500) } - val glanceIds = glanceAppWidgetManager.getGlanceIds(PixelSearchbarWidget::class.java) + val glanceIds = + glanceAppWidgetManager.getGlanceIds(PixelSearchbarWidget::class.java) glanceIds.forEach { glanceId -> glanceAppWidget.update(context, glanceId) } diff --git a/app/src/main/java/com/sameerasw/essentials/services/widgets/WidgetScraperService.kt b/app/src/main/java/com/sameerasw/essentials/services/widgets/WidgetScraperService.kt index 5cada0691..1e89bca75 100644 --- a/app/src/main/java/com/sameerasw/essentials/services/widgets/WidgetScraperService.kt +++ b/app/src/main/java/com/sameerasw/essentials/services/widgets/WidgetScraperService.kt @@ -17,7 +17,6 @@ import android.os.Handler import android.os.IBinder import android.os.Looper import android.view.View -import android.view.ViewGroup import android.view.ViewTreeObserver import android.widget.RemoteViews import com.sameerasw.essentials.data.repository.SettingsRepository @@ -33,7 +32,7 @@ import java.io.FileOutputStream class WidgetScraperService : Service() { private inner class ScrapingHostView(context: Context) : AppWidgetHostView(context) { - + private val drawListener = ViewTreeObserver.OnDrawListener { notifyWidgetChanged() } @@ -70,7 +69,8 @@ class WidgetScraperService : Service() { } } - private inner class ScrapingWidgetHost(context: Context, hostId: Int) : AppWidgetHost(context, hostId) { + private inner class ScrapingWidgetHost(context: Context, hostId: Int) : + AppWidgetHost(context, hostId) { override fun onCreateView( context: Context, appWidgetId: Int, @@ -108,14 +108,16 @@ class WidgetScraperService : Service() { override fun onMetadataChanged(metadata: MediaMetadata?) { updateMediaMetadata(currentController) } + override fun onPlaybackStateChanged(state: PlaybackState?) { updateMediaMetadata(currentController) } } - private val activeSessionsListener = MediaSessionManager.OnActiveSessionsChangedListener { controllers -> - updateActiveSession(controllers) - } + private val activeSessionsListener = + MediaSessionManager.OnActiveSessionsChangedListener { controllers -> + updateActiveSession(controllers) + } override fun onCreate() { super.onCreate() @@ -139,7 +141,9 @@ class WidgetScraperService : Service() { cleanupMediaListener() val widgetId = settingsRepository.getPixelSearchbarWidgetId() - if (widgetId == AppWidgetManager.INVALID_APPWIDGET_ID) { stopSelf(); return } + if (widgetId == AppWidgetManager.INVALID_APPWIDGET_ID) { + stopSelf(); return + } val awm = AppWidgetManager.getInstance(this) val host = ScrapingWidgetHost(this, HOST_ID) @@ -164,7 +168,8 @@ class WidgetScraperService : Service() { updateActiveSession(initialSessions) manager.addOnActiveSessionsChangedListener(activeSessionsListener, componentName) } - } catch (_: Exception) {} + } catch (_: Exception) { + } // Dynamically register the MusicBroadcastReceiver try { @@ -192,12 +197,13 @@ class WidgetScraperService : Service() { androidx.core.content.ContextCompat.RECEIVER_EXPORTED ) } - } catch (_: Exception) {} + } catch (_: Exception) { + } } private fun updateActiveSession(controllers: List?) { val active = controllers?.sortedWith( - compareByDescending { + compareByDescending { val state = it.playbackState?.state state == PlaybackState.STATE_PLAYING || state == PlaybackState.STATE_BUFFERING }.thenByDescending { @@ -231,7 +237,8 @@ class WidgetScraperService : Service() { FileOutputStream(filesDirFile).use { out -> artwork.compress(Bitmap.CompressFormat.PNG, 100, out) } - } catch (_: Exception) {} + } catch (_: Exception) { + } } else { if (filesDirFile.exists()) filesDirFile.delete() } @@ -251,14 +258,15 @@ class WidgetScraperService : Service() { private fun notifyWidgetChanged() { if (updatePending) return updatePending = true - + handler.postDelayed({ updatePending = false settingsRepository.incrementPixelSearchbarWidgetRevision() serviceScope.launch { runCatching { - val manager = androidx.glance.appwidget.GlanceAppWidgetManager(this@WidgetScraperService) + val manager = + androidx.glance.appwidget.GlanceAppWidgetManager(this@WidgetScraperService) val widget = PixelSearchbarWidget() val glanceIds = manager.getGlanceIds(PixelSearchbarWidget::class.java) for (glanceId in glanceIds) widget.update(this@WidgetScraperService, glanceId) @@ -276,7 +284,8 @@ class WidgetScraperService : Service() { private fun cleanupMediaListener() { try { mediaSessionManager?.removeOnActiveSessionsChangedListener(activeSessionsListener) - } catch (_: Exception) {} + } catch (_: Exception) { + } currentController?.unregisterCallback(mediaCallback) currentController = null mediaSessionManager = null @@ -287,7 +296,8 @@ class WidgetScraperService : Service() { unregisterReceiver(it) } musicBroadcastReceiver = null - } catch (_: Exception) {} + } catch (_: Exception) { + } } override fun onDestroy() { diff --git a/app/src/main/java/com/sameerasw/essentials/ui/activities/ActionShortcutActivity.kt b/app/src/main/java/com/sameerasw/essentials/ui/activities/ActionShortcutActivity.kt index c25249519..ca20c896d 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/activities/ActionShortcutActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/activities/ActionShortcutActivity.kt @@ -12,10 +12,11 @@ import kotlinx.coroutines.launch class ActionShortcutActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - + DIYRepository.init(applicationContext) - val automation = DIYRepository.automations.value.find { it.type == Automation.Type.ACTION_SHORTCUT } - + val automation = + DIYRepository.automations.value.find { it.type == Automation.Type.ACTION_SHORTCUT } + if (automation != null && automation.actions.isNotEmpty()) { lifecycleScope.launch { automation.actions.forEach { action -> @@ -24,7 +25,8 @@ class ActionShortcutActivity : ComponentActivity() { finish() } } else { - Toast.makeText(this, "No customized action shortcut configured", Toast.LENGTH_SHORT).show() + Toast.makeText(this, "No customized action shortcut configured", Toast.LENGTH_SHORT) + .show() finish() } } diff --git a/app/src/main/java/com/sameerasw/essentials/ui/activities/AutomationEditorActivity.kt b/app/src/main/java/com/sameerasw/essentials/ui/activities/AutomationEditorActivity.kt index 436219693..264b570de 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/activities/AutomationEditorActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/activities/AutomationEditorActivity.kt @@ -452,16 +452,18 @@ class AutomationEditorActivity : ComponentActivity() { ) RoundedCardContainer(spacing = 2.dp) { - val editorTitle = if (automationType == Automation.Type.PIXEL_SEARCHBAR) { - stringResource(R.string.diy_create_pixel_searchbar_title) - } else { - stringResource(R.string.diy_create_action_shortcut_title) - } - val editorIcon = if (automationType == Automation.Type.PIXEL_SEARCHBAR) { - R.drawable.rounded_search_24 - } else { - R.drawable.rounded_rocket_launch_24 - } + val editorTitle = + if (automationType == Automation.Type.PIXEL_SEARCHBAR) { + stringResource(R.string.diy_create_pixel_searchbar_title) + } else { + stringResource(R.string.diy_create_action_shortcut_title) + } + val editorIcon = + if (automationType == Automation.Type.PIXEL_SEARCHBAR) { + R.drawable.rounded_search_24 + } else { + R.drawable.rounded_rocket_launch_24 + } EditorActionItem( title = editorTitle, iconRes = editorIcon, @@ -630,6 +632,7 @@ class AutomationEditorActivity : ComponentActivity() { when (automationType) { Automation.Type.TRIGGER -> selectedAction = null + Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = null @@ -656,6 +659,7 @@ class AutomationEditorActivity : ComponentActivity() { when (automationType) { Automation.Type.TRIGGER -> selectedAction = resolvedAction + Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = resolvedAction @@ -681,16 +685,16 @@ class AutomationEditorActivity : ComponentActivity() { } }, onSettingsClick = { - configAction = resolvedAction - if (resolvedAction is Action.DimWallpaper) { - showDimSettings = true - } else if (resolvedAction is Action.ScreenOff) { - showScreenOffSettings = true - } else if (resolvedAction is Action.DeviceEffects) { - showDeviceEffectsSettings = true - } else if (resolvedAction is Action.SoundMode) { - showSoundModeSettings = true - } + configAction = resolvedAction + if (resolvedAction is Action.DimWallpaper) { + showDimSettings = true + } else if (resolvedAction is Action.ScreenOff) { + showScreenOffSettings = true + } else if (resolvedAction is Action.DeviceEffects) { + showDeviceEffectsSettings = true + } else if (resolvedAction is Action.SoundMode) { + showSoundModeSettings = true + } } ) } @@ -723,9 +727,11 @@ class AutomationEditorActivity : ComponentActivity() { onSave = { newAction -> showDimSettings = false // Update the selection with configured action - when (automationType) { + when (automationType) { Automation.Type.TRIGGER -> selectedAction = newAction - Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = newAction + Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = + newAction + Automation.Type.STATE, Automation.Type.APP -> { if (selectedActionTab == 0) selectedInAction = newAction else selectedOutAction = newAction @@ -744,7 +750,9 @@ class AutomationEditorActivity : ComponentActivity() { showScreenOffSettings = false when (automationType) { Automation.Type.TRIGGER -> selectedAction = newAction - Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = newAction + Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = + newAction + Automation.Type.STATE, Automation.Type.APP -> { if (selectedActionTab == 0) selectedInAction = newAction else selectedOutAction = newAction @@ -763,7 +771,9 @@ class AutomationEditorActivity : ComponentActivity() { showDeviceEffectsSettings = false when (automationType) { Automation.Type.TRIGGER -> selectedAction = newAction - Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = newAction + Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = + newAction + Automation.Type.STATE, Automation.Type.APP -> { if (selectedActionTab == 0) selectedInAction = newAction else selectedOutAction = newAction @@ -782,7 +792,9 @@ class AutomationEditorActivity : ComponentActivity() { showSoundModeSettings = false when (automationType) { Automation.Type.TRIGGER -> selectedAction = newAction - Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = newAction + Automation.Type.ACTION_SHORTCUT, Automation.Type.PIXEL_SEARCHBAR -> selectedAction = + newAction + Automation.Type.STATE, Automation.Type.APP -> { if (selectedActionTab == 0) selectedInAction = newAction else selectedOutAction = newAction diff --git a/app/src/main/java/com/sameerasw/essentials/ui/activities/PixelSearchbarSettingsActivity.kt b/app/src/main/java/com/sameerasw/essentials/ui/activities/PixelSearchbarSettingsActivity.kt index 1ca316dca..df086fba3 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/activities/PixelSearchbarSettingsActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/activities/PixelSearchbarSettingsActivity.kt @@ -3,6 +3,8 @@ package com.sameerasw.essentials.ui.activities import android.app.Activity import android.appwidget.AppWidgetHost import android.appwidget.AppWidgetManager +import android.content.Context +import android.content.Intent import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.rememberLauncherForActivityResult @@ -34,6 +36,7 @@ import androidx.compose.material3.ListItemDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.RadioButton import androidx.compose.material3.Scaffold +import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -58,19 +61,15 @@ import com.sameerasw.essentials.services.widgets.WidgetScraperService import com.sameerasw.essentials.ui.components.EssentialsFloatingToolbar import com.sameerasw.essentials.ui.components.cards.IconToggleItem import com.sameerasw.essentials.ui.components.containers.RoundedCardContainer -import com.sameerasw.essentials.ui.components.sliders.ConfigSliderItem -import androidx.compose.material3.Switch - import com.sameerasw.essentials.ui.components.pickers.SegmentedPicker import com.sameerasw.essentials.ui.components.sheets.FeatureHelpBottomSheet import com.sameerasw.essentials.ui.components.sheets.PermissionsBottomSheet +import com.sameerasw.essentials.ui.components.sliders.ConfigSliderItem import com.sameerasw.essentials.ui.modifiers.BlurDirection import com.sameerasw.essentials.ui.modifiers.progressiveBlur import com.sameerasw.essentials.ui.theme.EssentialsTheme import com.sameerasw.essentials.utils.HapticUtil import com.sameerasw.essentials.viewmodels.MainViewModel -import android.content.Context -import android.content.Intent class PixelSearchbarSettingsActivity : ComponentActivity() { @OptIn(ExperimentalMaterial3ExpressiveApi::class) @@ -98,8 +97,14 @@ class PixelSearchbarSettingsActivity : ComponentActivity() { showToggle = true, hasMoreSettings = true ) { - override fun isEnabled(viewModel: MainViewModel) = viewModel.isPixelSearchbarEnabled.value - override fun onToggle(viewModel: MainViewModel, context: Context, enabled: Boolean) { + override fun isEnabled(viewModel: MainViewModel) = + viewModel.isPixelSearchbarEnabled.value + + override fun onToggle( + viewModel: MainViewModel, + context: Context, + enabled: Boolean + ) { viewModel.setPixelSearchbarEnabled(enabled, context) } } @@ -149,7 +154,8 @@ class PixelSearchbarSettingsActivity : ComponentActivity() { Spacer( modifier = Modifier.height( - WindowInsets.navigationBars.asPaddingValues().calculateBottomPadding() + 150.dp + WindowInsets.navigationBars.asPaddingValues() + .calculateBottomPadding() + 150.dp ) ) } @@ -211,7 +217,10 @@ fun PixelSearchbarSettingsUI( ) { result -> if (result.resultCode == Activity.RESULT_OK) { val data = result.data ?: return@rememberLauncherForActivityResult - val widgetId = data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID) + val widgetId = data.getIntExtra( + AppWidgetManager.EXTRA_APPWIDGET_ID, + AppWidgetManager.INVALID_APPWIDGET_ID + ) if (widgetId != AppWidgetManager.INVALID_APPWIDGET_ID) { val info = awm.getAppWidgetInfo(widgetId) val providerName = info?.provider?.flattenToString() @@ -287,10 +296,12 @@ fun PixelSearchbarSettingsUI( WidgetScraperService.start(context) viewModel.setPixelSearchbarType(type, context) } + currentType == "widget" || currentType == "music" -> { WidgetScraperService.stop(context) viewModel.setPixelSearchbarType(type, context) } + else -> viewModel.setPixelSearchbarType(type, context) } }, @@ -445,7 +456,8 @@ fun PixelSearchbarSettingsUI( "dd/MM/yyyy" ) val currentDate = remember { java.util.Date() } - val googleSansFlexRound = remember { FontFamily(Font(R.font.google_sans_flex_round)) } + val googleSansFlexRound = + remember { FontFamily(Font(R.font.google_sans_flex_round)) } Column( modifier = Modifier @@ -480,7 +492,10 @@ fun PixelSearchbarSettingsUI( val isSelected = currentDateFormat == format val formattedDate = remember(format, currentDate) { try { - java.text.SimpleDateFormat(format, java.util.Locale.getDefault()).format(currentDate) + java.text.SimpleDateFormat( + format, + java.util.Locale.getDefault() + ).format(currentDate) } catch (e: Exception) { format } @@ -497,7 +512,10 @@ fun PixelSearchbarSettingsUI( selected = isSelected, onClick = { HapticUtil.performVirtualKeyHaptic(view) - viewModel.setPixelSearchbarDateFormat(format, context) + viewModel.setPixelSearchbarDateFormat( + format, + context + ) } ) }, @@ -533,8 +551,14 @@ fun PixelSearchbarSettingsUI( onClick = { if (tapActionEnabled) { HapticUtil.performVirtualKeyHaptic(view) - val intent = Intent(context, com.sameerasw.essentials.MainActivity::class.java).apply { - putExtra("target_tab", com.sameerasw.essentials.domain.DIYTabs.DIY.name) + val intent = Intent( + context, + com.sameerasw.essentials.MainActivity::class.java + ).apply { + putExtra( + "target_tab", + com.sameerasw.essentials.domain.DIYTabs.DIY.name + ) } context.startActivity(intent) } @@ -545,7 +569,9 @@ fun PixelSearchbarSettingsUI( painter = painterResource(id = R.drawable.rounded_rocket_launch_24), contentDescription = null, modifier = Modifier.size(24.dp), - tint = if (tapActionEnabled) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.38f) + tint = if (tapActionEnabled) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.onSurfaceVariant.copy( + alpha = 0.38f + ) ) }, trailingContent = { @@ -561,7 +587,9 @@ fun PixelSearchbarSettingsUI( Text( text = stringResource(R.string.pixel_searchbar_tap_action_enabled_desc), style = MaterialTheme.typography.labelMedium, - color = if (tapActionEnabled) MaterialTheme.colorScheme.onSurfaceVariant else MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.38f) + color = if (tapActionEnabled) MaterialTheme.colorScheme.onSurfaceVariant else MaterialTheme.colorScheme.onSurfaceVariant.copy( + alpha = 0.38f + ) ) }, colors = ListItemDefaults.colors( @@ -571,7 +599,9 @@ fun PixelSearchbarSettingsUI( Text( text = stringResource(R.string.pixel_searchbar_tap_action_enabled), style = MaterialTheme.typography.bodyMedium, - color = if (tapActionEnabled) MaterialTheme.colorScheme.onSurface else MaterialTheme.colorScheme.onSurface.copy(alpha = 0.38f) + color = if (tapActionEnabled) MaterialTheme.colorScheme.onSurface else MaterialTheme.colorScheme.onSurface.copy( + alpha = 0.38f + ) ) } } @@ -581,7 +611,11 @@ fun PixelSearchbarSettingsUI( if (showPermissionSheet) { val permissionItem = remember(context, viewModel) { - com.sameerasw.essentials.utils.PermissionUIHelper.getPermissionItem("WRITE_SECURE_SETTINGS", context, viewModel) + com.sameerasw.essentials.utils.PermissionUIHelper.getPermissionItem( + "WRITE_SECURE_SETTINGS", + context, + viewModel + ) } if (permissionItem != null) { PermissionsBottomSheet( diff --git a/app/src/main/java/com/sameerasw/essentials/ui/activities/PixelSearchbarTapActivity.kt b/app/src/main/java/com/sameerasw/essentials/ui/activities/PixelSearchbarTapActivity.kt index d45789672..d6e643cdf 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/activities/PixelSearchbarTapActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/activities/PixelSearchbarTapActivity.kt @@ -11,10 +11,11 @@ import kotlinx.coroutines.launch class PixelSearchbarTapActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - + DIYRepository.init(applicationContext) - val automation = DIYRepository.automations.value.find { it.type == Automation.Type.PIXEL_SEARCHBAR } - + val automation = + DIYRepository.automations.value.find { it.type == Automation.Type.PIXEL_SEARCHBAR } + if (automation != null && automation.actions.isNotEmpty() && automation.isEnabled) { lifecycleScope.launch { automation.actions.forEach { action -> diff --git a/app/src/main/java/com/sameerasw/essentials/ui/activities/QSPreferencesActivity.kt b/app/src/main/java/com/sameerasw/essentials/ui/activities/QSPreferencesActivity.kt index 154ec504e..93265925d 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/activities/QSPreferencesActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/activities/QSPreferencesActivity.kt @@ -61,7 +61,8 @@ class QSPreferencesActivity : ComponentActivity() { } if (componentName.className == "com.sameerasw.essentials.services.tiles.DeveloperOptionsTileService" || - componentName.className == "com.sameerasw.essentials.services.tiles.UsbDebuggingTileService") { + componentName.className == "com.sameerasw.essentials.services.tiles.UsbDebuggingTileService" + ) { val devIntent = Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS).apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP } diff --git a/app/src/main/java/com/sameerasw/essentials/ui/activities/ScreenOffWidgetConfigureActivity.kt b/app/src/main/java/com/sameerasw/essentials/ui/activities/ScreenOffWidgetConfigureActivity.kt index 43634fb61..3d1c162fb 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/activities/ScreenOffWidgetConfigureActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/activities/ScreenOffWidgetConfigureActivity.kt @@ -1,6 +1,5 @@ package com.sameerasw.essentials.ui.activities -import android.app.Activity import android.appwidget.AppWidgetManager import android.content.Context import android.content.Intent diff --git a/app/src/main/java/com/sameerasw/essentials/ui/activities/TravelCompassActivity.kt b/app/src/main/java/com/sameerasw/essentials/ui/activities/TravelCompassActivity.kt index a87319cce..36d44e492 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/activities/TravelCompassActivity.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/activities/TravelCompassActivity.kt @@ -12,24 +12,12 @@ import android.view.WindowManager import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge -import androidx.compose.ui.platform.LocalConfiguration -import androidx.compose.ui.platform.LocalView -import androidx.core.view.WindowCompat -import androidx.core.view.WindowInsetsCompat -import androidx.core.view.WindowInsetsControllerCompat -import com.sameerasw.essentials.utils.HapticUtil import androidx.compose.animation.core.Spring import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.spring import androidx.compose.animation.core.tween import androidx.compose.foundation.Canvas -import androidx.compose.foundation.clickable import androidx.compose.foundation.gestures.detectTapGestures -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.material3.Icon -import androidx.compose.ui.input.pointer.pointerInput -import androidx.compose.ui.res.painterResource -import com.sameerasw.essentials.R import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -41,6 +29,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.rememberPagerState +import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -57,15 +46,24 @@ import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.asComposePath import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.graphics.graphicsLayer +import androidx.compose.ui.input.pointer.pointerInput +import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat import androidx.graphics.shapes.toPath import com.google.android.gms.location.LocationServices import com.google.android.gms.location.Priority +import com.sameerasw.essentials.R import com.sameerasw.essentials.data.repository.LocationReachedRepository import com.sameerasw.essentials.ui.theme.EssentialsTheme +import com.sameerasw.essentials.utils.HapticUtil import com.sameerasw.essentials.viewmodels.MainViewModel import kotlinx.coroutines.delay import java.util.Calendar @@ -87,11 +85,13 @@ class TravelCompassActivity : ComponentActivity(), SensorEventListener { // Make activity truly full screen (hide status/navigation bars, fit system windows false, allow display cutout) WindowCompat.setDecorFitsSystemWindows(window, false) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - window.attributes.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES + window.attributes.layoutInDisplayCutoutMode = + WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES } val controller = WindowCompat.getInsetsController(window, window.decorView) controller.hide(WindowInsetsCompat.Type.systemBars()) - controller.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE + controller.systemBarsBehavior = + WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE sensorManager = getSystemService(SENSOR_SERVICE) as SensorManager rotationVectorSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR) @@ -161,8 +161,20 @@ private fun CompassScreen( val repository = remember { LocationReachedRepository(context) } val fusedLocation = remember { LocationServices.getFusedLocationProviderClient(context) } val is24h = remember { DateFormat.is24HourFormat(context) } - val sharedPrefs = remember { context.getSharedPreferences("essentials_prefs", android.content.Context.MODE_PRIVATE) } - var useIcon by remember { mutableStateOf(sharedPrefs.getBoolean("location_reached_compass_use_icon", false)) } + val sharedPrefs = remember { + context.getSharedPreferences( + "essentials_prefs", + android.content.Context.MODE_PRIVATE + ) + } + var useIcon by remember { + mutableStateOf( + sharedPrefs.getBoolean( + "location_reached_compass_use_icon", + false + ) + ) + } var currentTime by remember { mutableStateOf("") } var distanceText by remember { mutableStateOf("") } @@ -252,7 +264,10 @@ private fun CompassScreen( val animatedRotation by animateFloatAsState( targetValue = continuousTargetRotation, - animationSpec = spring(stiffness = Spring.StiffnessLow, dampingRatio = Spring.DampingRatioMediumBouncy), + animationSpec = spring( + stiffness = Spring.StiffnessLow, + dampingRatio = Spring.DampingRatioMediumBouncy + ), label = "arrowRotation" ) @@ -303,7 +318,8 @@ private fun CompassScreen( onLongPress = { HapticUtil.performHeavyHaptic(view) useIcon = !useIcon - sharedPrefs.edit().putBoolean("location_reached_compass_use_icon", useIcon).apply() + sharedPrefs.edit().putBoolean("location_reached_compass_use_icon", useIcon) + .apply() } ) }, @@ -322,7 +338,8 @@ private fun CompassScreen( modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center ) { - val isLandscape = LocalConfiguration.current.orientation == Configuration.ORIENTATION_LANDSCAPE + val isLandscape = + LocalConfiguration.current.orientation == Configuration.ORIENTATION_LANDSCAPE val arrowSize = if (isLandscape) 180.dp else 220.dp when (page) { @@ -417,6 +434,7 @@ private fun CompassScreen( } } } + 1 -> { // Minimal CompassArrowContainer( rotationDegrees = animatedRotation, @@ -427,6 +445,7 @@ private fun CompassScreen( .align(Alignment.Center) ) } + 2 -> { // Most Details if (isLandscape) { Row( diff --git a/app/src/main/java/com/sameerasw/essentials/ui/components/diy/AutomationItem.kt b/app/src/main/java/com/sameerasw/essentials/ui/components/diy/AutomationItem.kt index b3f5ec2d6..0c52c67f1 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/components/diy/AutomationItem.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/components/diy/AutomationItem.kt @@ -163,6 +163,7 @@ fun AutomationItem( it ) } + Automation.Type.ACTION_SHORTCUT -> stringResource(R.string.diy_create_action_shortcut_title) Automation.Type.PIXEL_SEARCHBAR -> stringResource(R.string.diy_create_pixel_searchbar_title) Automation.Type.STATE -> automation.state?.title?.let { stringResource(it) } diff --git a/app/src/main/java/com/sameerasw/essentials/ui/components/pickers/CrashReportingPicker.kt b/app/src/main/java/com/sameerasw/essentials/ui/components/pickers/CrashReportingPicker.kt index 8a73a9bcf..79c5a742a 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/components/pickers/CrashReportingPicker.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/components/pickers/CrashReportingPicker.kt @@ -45,7 +45,10 @@ fun CrashReportingPicker( Column( modifier = modifier .fillMaxWidth() - .background(MaterialTheme.colorScheme.surfaceBright, shape = MaterialTheme.shapes.extraSmall), + .background( + MaterialTheme.colorScheme.surfaceBright, + shape = MaterialTheme.shapes.extraSmall + ), verticalArrangement = Arrangement.spacedBy(0.dp) ) { ListItem( diff --git a/app/src/main/java/com/sameerasw/essentials/ui/components/pickers/DefaultTabPicker.kt b/app/src/main/java/com/sameerasw/essentials/ui/components/pickers/DefaultTabPicker.kt index cfb6cdee4..08686a282 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/components/pickers/DefaultTabPicker.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/components/pickers/DefaultTabPicker.kt @@ -41,7 +41,10 @@ fun DefaultTabPicker( Column( modifier = modifier .fillMaxWidth() - .background(MaterialTheme.colorScheme.surfaceBright, shape = MaterialTheme.shapes.extraSmall), + .background( + MaterialTheme.colorScheme.surfaceBright, + shape = MaterialTheme.shapes.extraSmall + ), verticalArrangement = Arrangement.spacedBy(0.dp) ) { ListItem( diff --git a/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/NewAutomationSheet.kt b/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/NewAutomationSheet.kt index 5cc937b3b..ad94a40cf 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/NewAutomationSheet.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/NewAutomationSheet.kt @@ -22,18 +22,18 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.sameerasw.essentials.R +import com.sameerasw.essentials.data.repository.SettingsRepository import com.sameerasw.essentials.domain.diy.Automation import com.sameerasw.essentials.domain.diy.DIYRepository import com.sameerasw.essentials.ui.components.containers.RoundedCardContainer import com.sameerasw.essentials.utils.HapticUtil -import androidx.compose.ui.platform.LocalContext -import com.sameerasw.essentials.data.repository.SettingsRepository @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -154,7 +154,9 @@ private fun AutomationTypeOption( ) { val view = LocalView.current Surface( - color = if (enabled) MaterialTheme.colorScheme.surfaceContainerHighest else MaterialTheme.colorScheme.surfaceContainerHighest.copy(alpha = 0.5f), + color = if (enabled) MaterialTheme.colorScheme.surfaceContainerHighest else MaterialTheme.colorScheme.surfaceContainerHighest.copy( + alpha = 0.5f + ), shape = RoundedCornerShape(4.dp), modifier = modifier .fillMaxWidth() @@ -174,7 +176,9 @@ private fun AutomationTypeOption( painter = painterResource(id = iconRes), contentDescription = null, modifier = Modifier.size(24.dp), - tint = if (enabled) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f) + tint = if (enabled) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.onSurfaceVariant.copy( + alpha = 0.5f + ) ) Spacer(modifier = Modifier.width(16.dp)) Column(modifier = Modifier.weight(1f)) { @@ -182,12 +186,16 @@ private fun AutomationTypeOption( text = title, style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.SemiBold, - color = if (enabled) MaterialTheme.colorScheme.onSurface else MaterialTheme.colorScheme.onSurface.copy(alpha = 0.5f) + color = if (enabled) MaterialTheme.colorScheme.onSurface else MaterialTheme.colorScheme.onSurface.copy( + alpha = 0.5f + ) ) Text( text = description, style = MaterialTheme.typography.bodyMedium, - color = if (enabled) MaterialTheme.colorScheme.onSurfaceVariant else MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f) + color = if (enabled) MaterialTheme.colorScheme.onSurfaceVariant else MaterialTheme.colorScheme.onSurfaceVariant.copy( + alpha = 0.5f + ) ) } Spacer(modifier = Modifier.width(8.dp)) @@ -197,7 +205,9 @@ private fun AutomationTypeOption( modifier = Modifier .padding(end = 4.dp) .size(24.dp), - tint = if (enabled) MaterialTheme.colorScheme.onSurfaceVariant else MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.5f) + tint = if (enabled) MaterialTheme.colorScheme.onSurfaceVariant else MaterialTheme.colorScheme.onSurfaceVariant.copy( + alpha = 0.5f + ) ) } } diff --git a/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/ScreenOffSettingsSheet.kt b/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/ScreenOffSettingsSheet.kt index 4b9385c49..6644e73a8 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/ScreenOffSettingsSheet.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/ScreenOffSettingsSheet.kt @@ -30,7 +30,6 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.sameerasw.essentials.R -import com.sameerasw.essentials.domain.HapticFeedbackType import com.sameerasw.essentials.domain.ScreenOffMethod import com.sameerasw.essentials.domain.diy.Action import com.sameerasw.essentials.ui.components.containers.RoundedCardContainer @@ -86,7 +85,11 @@ fun ScreenOffSettingsSheet( onMethodSelected = { type -> HapticUtil.performUIHaptic(view) if (type == ScreenOffMethod.INPUT && !ShellUtils.hasPermission(context)) { - android.widget.Toast.makeText(context, "Shizuku/Root permission required for Input method", android.widget.Toast.LENGTH_SHORT).show() + android.widget.Toast.makeText( + context, + "Shizuku/Root permission required for Input method", + android.widget.Toast.LENGTH_SHORT + ).show() } else { selectedMethod = type } diff --git a/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/SweepShapesBottomSheet.kt b/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/SweepShapesBottomSheet.kt index ecf682b96..738e41d5a 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/SweepShapesBottomSheet.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/SweepShapesBottomSheet.kt @@ -8,7 +8,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.grid.GridCells @@ -121,7 +120,8 @@ fun SweepShapesBottomSheet( OutlinedButton( onClick = { HapticUtil.performVirtualKeyHaptic(view) - val allNames = AmbientMusicShapeHelper.allShapesWithNames.map { it.first }.toSet() + val allNames = + AmbientMusicShapeHelper.allShapesWithNames.map { it.first }.toSet() selectedShapes = allNames - selectedShapes }, modifier = Modifier.weight(1f) diff --git a/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/WatchInstallHelpBottomSheet.kt b/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/WatchInstallHelpBottomSheet.kt index 6b3b4471e..57a994fc8 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/WatchInstallHelpBottomSheet.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/components/sheets/WatchInstallHelpBottomSheet.kt @@ -1,8 +1,6 @@ package com.sameerasw.essentials.ui.components.sheets import androidx.compose.foundation.background -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.verticalScroll import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -13,7 +11,9 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width +import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ExperimentalMaterial3Api @@ -135,7 +135,9 @@ fun WatchInstallHelpBottomSheet( Text( text = "Watch ADB Permissions", style = MaterialTheme.typography.titleMedium, - modifier = Modifier.align(Alignment.Start).padding(start = 8.dp) + modifier = Modifier + .align(Alignment.Start) + .padding(start = 8.dp) ) val context = LocalContext.current @@ -204,10 +206,15 @@ private fun AdbCommandCard( androidx.compose.material3.IconButton( onClick = { HapticUtil.performUIHaptic(view) - val clipboard = context.getSystemService(android.content.Context.CLIPBOARD_SERVICE) as android.content.ClipboardManager + val clipboard = + context.getSystemService(android.content.Context.CLIPBOARD_SERVICE) as android.content.ClipboardManager val clip = android.content.ClipData.newPlainText("adb_command", command) clipboard.setPrimaryClip(clip) - android.widget.Toast.makeText(context, "Command copied", android.widget.Toast.LENGTH_SHORT).show() + android.widget.Toast.makeText( + context, + "Command copied", + android.widget.Toast.LENGTH_SHORT + ).show() } ) { Icon( diff --git a/app/src/main/java/com/sameerasw/essentials/ui/components/text/SimpleMarkdown.kt b/app/src/main/java/com/sameerasw/essentials/ui/components/text/SimpleMarkdown.kt index 61f9425a7..a788a9f8a 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/components/text/SimpleMarkdown.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/components/text/SimpleMarkdown.kt @@ -455,7 +455,7 @@ private fun parseMarkdown(text: String): AnnotatedString { } } - ((matchValue.startsWith("*") && matchValue.endsWith("*") && !matchValue.startsWith("**")) || + ((matchValue.startsWith("*") && matchValue.endsWith("*") && !matchValue.startsWith("**")) || (matchValue.startsWith("_") && matchValue.endsWith("_"))) && matchValue.length >= 2 -> { withStyle(style = SpanStyle(fontStyle = FontStyle.Italic)) { append(matchValue.substring(1, matchValue.length - 1)) diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/SetupFeatures.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/SetupFeatures.kt index 03664b124..82683d8bd 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/SetupFeatures.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/SetupFeatures.kt @@ -1,12 +1,12 @@ package com.sameerasw.essentials.ui.composables -import androidx.activity.compose.BackHandler import android.app.Activity import android.content.ClipData import android.content.ClipboardManager import android.content.Context import android.content.Intent import android.provider.Settings +import androidx.activity.compose.BackHandler import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.expandVertically import androidx.compose.animation.fadeIn @@ -1345,32 +1345,44 @@ private fun RecentSearchesSection( viewModel.addRecentSearch(result) val feature = allFeatures.find { it.id == result.featureKey } if (feature != null) { - val targetFeatureKey = if (!feature.hasMoreSettings && feature.parentFeatureId != null) { - feature.parentFeatureId - } else { - feature.id - } - val highlightKey = if (!feature.hasMoreSettings && feature.parentFeatureId != null) { - feature.id - } else { - result.targetSettingHighlightKey - } + val targetFeatureKey = + if (!feature.hasMoreSettings && feature.parentFeatureId != null) { + feature.parentFeatureId + } else { + feature.id + } + val highlightKey = + if (!feature.hasMoreSettings && feature.parentFeatureId != null) { + feature.id + } else { + result.targetSettingHighlightKey + } BiometricSecurityHelper.runWithAuth( activity = context as FragmentActivity, feature = feature, action = { - val intent = if (targetFeatureKey == "LiveWallpaper" || targetFeatureKey == "Daily Wallpaper") { - Intent(context, com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java).apply { - putExtra("tab", if (targetFeatureKey == "LiveWallpaper") "live" else "daily") - } - } else { - Intent(context, FeatureSettingsActivity::class.java).apply { - putExtra("feature", targetFeatureKey) - highlightKey?.let { - putExtra("highlight_setting", it) + val intent = + if (targetFeatureKey == "LiveWallpaper" || targetFeatureKey == "Daily Wallpaper") { + Intent( + context, + com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java + ).apply { + putExtra( + "tab", + if (targetFeatureKey == "LiveWallpaper") "live" else "daily" + ) + } + } else { + Intent( + context, + FeatureSettingsActivity::class.java + ).apply { + putExtra("feature", targetFeatureKey) + highlightKey?.let { + putExtra("highlight_setting", it) + } } } - } context.startActivity(intent) } ) @@ -1419,48 +1431,67 @@ private fun SearchResultsSection( viewModel.addRecentSearch(result) val feature = allFeatures.find { it.id == result.featureKey } if (feature != null) { - val targetFeatureKey = if (!feature.hasMoreSettings && feature.parentFeatureId != null) { - feature.parentFeatureId - } else { - feature.id - } - val highlightKey = if (!feature.hasMoreSettings && feature.parentFeatureId != null) { - feature.id - } else { - result.targetSettingHighlightKey - } + val targetFeatureKey = + if (!feature.hasMoreSettings && feature.parentFeatureId != null) { + feature.parentFeatureId + } else { + feature.id + } + val highlightKey = + if (!feature.hasMoreSettings && feature.parentFeatureId != null) { + feature.id + } else { + result.targetSettingHighlightKey + } BiometricSecurityHelper.runWithAuth( activity = context as FragmentActivity, feature = feature, action = { - val intent = if (targetFeatureKey == "LiveWallpaper" || targetFeatureKey == "Daily Wallpaper") { - Intent(context, com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java).apply { - putExtra("tab", if (targetFeatureKey == "LiveWallpaper") "live" else "daily") - } - } else { - Intent(context, FeatureSettingsActivity::class.java).apply { - putExtra("feature", targetFeatureKey) - highlightKey?.let { - putExtra("highlight_setting", it) + val intent = + if (targetFeatureKey == "LiveWallpaper" || targetFeatureKey == "Daily Wallpaper") { + Intent( + context, + com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java + ).apply { + putExtra( + "tab", + if (targetFeatureKey == "LiveWallpaper") "live" else "daily" + ) + } + } else { + Intent( + context, + FeatureSettingsActivity::class.java + ).apply { + putExtra("feature", targetFeatureKey) + highlightKey?.let { + putExtra("highlight_setting", it) + } } } - } context.startActivity(intent) } ) } else { - val intent = if (result.featureKey == "LiveWallpaper" || result.featureKey == "Daily Wallpaper") { - Intent(context, com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java).apply { - putExtra("tab", if (result.featureKey == "LiveWallpaper") "live" else "daily") - } - } else { - Intent(context, FeatureSettingsActivity::class.java).apply { - putExtra("feature", result.featureKey) - result.targetSettingHighlightKey?.let { - putExtra("highlight_setting", it) + val intent = + if (result.featureKey == "LiveWallpaper" || result.featureKey == "Daily Wallpaper") { + Intent( + context, + com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java + ).apply { + putExtra( + "tab", + if (result.featureKey == "LiveWallpaper") "live" else "daily" + ) + } + } else { + Intent(context, FeatureSettingsActivity::class.java).apply { + putExtra("feature", result.featureKey) + result.targetSettingHighlightKey?.let { + putExtra("highlight_setting", it) + } } } - } context.startActivity(intent) } }, diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ButtonRemapSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ButtonRemapSettingsUI.kt index d5661efe5..95bf90340 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ButtonRemapSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ButtonRemapSettingsUI.kt @@ -43,7 +43,6 @@ import com.sameerasw.essentials.R import com.sameerasw.essentials.domain.HapticFeedbackType import com.sameerasw.essentials.shizuku.ShizukuPermissionHelper import com.sameerasw.essentials.shizuku.ShizukuStatus -import com.sameerasw.essentials.ui.components.cards.FeatureCard import com.sameerasw.essentials.ui.components.cards.IconToggleItem import com.sameerasw.essentials.ui.components.containers.RoundedCardContainer import com.sameerasw.essentials.ui.components.pickers.HapticFeedbackPicker @@ -463,7 +462,12 @@ fun ButtonRemapSettingsUI( title = stringResource(R.string.flashlight_always_off_title), description = stringResource(R.string.flashlight_always_off_desc), isChecked = viewModel.isFlashlightAlwaysTurnOffEnabled.value, - onCheckedChange = { viewModel.setFlashlightAlwaysTurnOffEnabled(it, context) } + onCheckedChange = { + viewModel.setFlashlightAlwaysTurnOffEnabled( + it, + context + ) + } ) } diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/FlashlightSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/FlashlightSettingsUI.kt index d1763d987..3ccea7595 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/FlashlightSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/FlashlightSettingsUI.kt @@ -1,6 +1,5 @@ package com.sameerasw.essentials.ui.composables.configs -import android.content.Context import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/LocationReachedSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/LocationReachedSettingsUI.kt index 5f5c654fc..7628e2cff 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/LocationReachedSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/LocationReachedSettingsUI.kt @@ -2,9 +2,8 @@ package com.sameerasw.essentials.ui.composables.configs import android.content.Intent import android.os.Build -import androidx.compose.foundation.clickable -import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.background +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -109,7 +108,10 @@ fun LocationReachedSettingsUI( onCompassClick = { HapticUtil.performVirtualKeyHaptic(view) context.startActivity( - Intent(context, com.sameerasw.essentials.ui.activities.TravelCompassActivity::class.java) + Intent( + context, + com.sameerasw.essentials.ui.activities.TravelCompassActivity::class.java + ) ) } ) diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/NotificationLightingSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/NotificationLightingSettingsUI.kt index 8c485fe7b..284c9a559 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/NotificationLightingSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/NotificationLightingSettingsUI.kt @@ -49,6 +49,7 @@ import com.sameerasw.essentials.R import com.sameerasw.essentials.domain.model.NotificationLightingColorMode import com.sameerasw.essentials.domain.model.NotificationLightingStyle import com.sameerasw.essentials.domain.model.NotificationLightingSweepPosition +import com.sameerasw.essentials.ui.components.cards.FeatureCard import com.sameerasw.essentials.ui.components.cards.IconToggleItem import com.sameerasw.essentials.ui.components.containers.RoundedCardContainer import com.sameerasw.essentials.ui.components.pickers.GlowSidesPicker @@ -59,7 +60,6 @@ import com.sameerasw.essentials.ui.components.sheets.AppSelectionSheet import com.sameerasw.essentials.ui.components.sheets.PermissionItem import com.sameerasw.essentials.ui.components.sheets.PermissionsBottomSheet import com.sameerasw.essentials.ui.components.sheets.SweepShapesBottomSheet -import com.sameerasw.essentials.ui.components.cards.FeatureCard import com.sameerasw.essentials.ui.components.sliders.ConfigSliderItem import com.sameerasw.essentials.ui.modifiers.highlight import com.sameerasw.essentials.utils.HapticUtil diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/OtherCustomizationsSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/OtherCustomizationsSettingsUI.kt index 9129ab415..5560f871e 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/OtherCustomizationsSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/OtherCustomizationsSettingsUI.kt @@ -30,7 +30,6 @@ import com.sameerasw.essentials.ui.components.sheets.PermissionsBottomSheet import com.sameerasw.essentials.ui.components.sliders.ConfigSliderItem import com.sameerasw.essentials.ui.modifiers.highlight import com.sameerasw.essentials.viewmodels.MainViewModel -import com.sameerasw.essentials.ui.activities.PixelSearchbarSettingsActivity enum class PermissionModule { HIDE_GESTURE_BAR, diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/PocketModeSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/PocketModeSettingsUI.kt index b687e477f..0e82ae603 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/PocketModeSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/PocketModeSettingsUI.kt @@ -3,31 +3,31 @@ package com.sameerasw.essentials.ui.composables.configs import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.material3.Button import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.unit.dp -import com.sameerasw.essentials.R -import com.sameerasw.essentials.ui.components.cards.IconToggleItem -import com.sameerasw.essentials.ui.components.containers.RoundedCardContainer -import com.sameerasw.essentials.ui.modifiers.highlight -import com.sameerasw.essentials.viewmodels.MainViewModel -import androidx.compose.material3.Button import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.sameerasw.essentials.R +import com.sameerasw.essentials.ui.components.cards.IconToggleItem +import com.sameerasw.essentials.ui.components.containers.RoundedCardContainer import com.sameerasw.essentials.ui.components.sheets.AppSelectionSheet import com.sameerasw.essentials.ui.components.sliders.ConfigSliderItem +import com.sameerasw.essentials.ui.modifiers.highlight import com.sameerasw.essentials.utils.HapticUtil +import com.sameerasw.essentials.viewmodels.MainViewModel @Composable fun PocketModeSettingsUI( diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/QuickSettingsTilesSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/QuickSettingsTilesSettingsUI.kt index f5a7f13cd..53a3b9b99 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/QuickSettingsTilesSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/QuickSettingsTilesSettingsUI.kt @@ -2,8 +2,8 @@ package com.sameerasw.essentials.ui.composables.configs import android.app.Activity import android.app.StatusBarManager -import android.content.Context import android.content.ComponentName +import android.content.Context import android.graphics.drawable.Icon import android.os.Build import android.widget.Toast @@ -36,7 +36,6 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue -import androidx.compose.ui.res.stringResource import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha @@ -45,6 +44,7 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.sameerasw.essentials.R diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ScreenOffWidgetSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ScreenOffWidgetSettingsUI.kt index 9911ddecb..84b079d5f 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ScreenOffWidgetSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ScreenOffWidgetSettingsUI.kt @@ -21,8 +21,6 @@ import androidx.core.content.edit import com.sameerasw.essentials.R import com.sameerasw.essentials.domain.HapticFeedbackType import com.sameerasw.essentials.domain.ScreenOffMethod -import com.sameerasw.essentials.ui.components.cards.FeatureCard -import com.sameerasw.essentials.ui.components.cards.IconToggleItem import com.sameerasw.essentials.ui.components.containers.RoundedCardContainer import com.sameerasw.essentials.ui.components.pickers.HapticFeedbackPicker import com.sameerasw.essentials.ui.components.pickers.ScreenOffMethodPicker diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ShutUpSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ShutUpSettingsUI.kt index 298688234..03e1e8a1b 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ShutUpSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/ShutUpSettingsUI.kt @@ -1,37 +1,24 @@ package com.sameerasw.essentials.ui.composables.configs -import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.material3.ButtonGroupDefaults import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.Icon import androidx.compose.material3.IconButton -import androidx.compose.material3.ListItem -import androidx.compose.material3.ListItemDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text -import androidx.compose.material3.ToggleButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.compose.ui.semantics.Role -import androidx.compose.ui.semantics.role -import androidx.compose.ui.semantics.semantics -import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import com.sameerasw.essentials.R import com.sameerasw.essentials.domain.model.AppSelection @@ -39,9 +26,9 @@ import com.sameerasw.essentials.domain.model.ShutUpAppConfig import com.sameerasw.essentials.ui.components.cards.FeatureCard import com.sameerasw.essentials.ui.components.containers.RoundedCardContainer import com.sameerasw.essentials.ui.components.menus.SegmentedDropdownMenuItem +import com.sameerasw.essentials.ui.components.pickers.RestoreModePicker import com.sameerasw.essentials.ui.components.sheets.AppSelectionSheet import com.sameerasw.essentials.ui.components.sheets.ShutUpPerAppSettingsSheet -import com.sameerasw.essentials.ui.components.pickers.RestoreModePicker import com.sameerasw.essentials.ui.components.sliders.ConfigSliderItem import com.sameerasw.essentials.utils.AppUtil import com.sameerasw.essentials.viewmodels.MainViewModel diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/WatchControlsSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/WatchControlsSettingsUI.kt index f16439bc5..d4228bc48 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/WatchControlsSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/WatchControlsSettingsUI.kt @@ -12,7 +12,6 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.Card -import androidx.compose.material3.CardDefaults import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme @@ -52,9 +51,13 @@ fun WatchControlsSettingsUI( val defaultLayout = "LOCK,SOUND,FLASHLIGHT,FLASHLIGHT_PULSE,AOD,TAP_TO_WAKE" val savedLayout = prefs.getString("watch_controls_layout", defaultLayout) ?: defaultLayout - var activeControls by remember { mutableStateOf(savedLayout.split(",").filter { it.isNotBlank() }) } + var activeControls by remember { + mutableStateOf( + savedLayout.split(",").filter { it.isNotBlank() }) + } - val allPossible = listOf("LOCK", "SOUND", "FLASHLIGHT", "FLASHLIGHT_PULSE", "AOD", "TAP_TO_WAKE") + val allPossible = + listOf("LOCK", "SOUND", "FLASHLIGHT", "FLASHLIGHT_PULSE", "AOD", "TAP_TO_WAKE") var disabledControls by remember { mutableStateOf(allPossible.filter { it !in activeControls }) } @@ -91,6 +94,7 @@ fun WatchControlsSettingsUI( val fromKey: String = when { from.index < originalActiveSize -> activeControls.getOrNull(from.index) ?: return@rememberReorderableLazyListState + from.index == originalActiveSize -> "separator" else -> disabledControls.getOrNull(from.index - originalActiveSize - 1) ?: return@rememberReorderableLazyListState @@ -150,7 +154,8 @@ fun WatchControlsSettingsUI( detectTapGestures(onLongPress = { if (activeControls.size > 1) { val toDisable = activeControls[index] - activeControls = activeControls.toMutableList().apply { removeAt(index) } + activeControls = + activeControls.toMutableList().apply { removeAt(index) } disabledControls = disabledControls + toDisable } save() @@ -163,7 +168,9 @@ fun WatchControlsSettingsUI( verticalAlignment = Alignment.CenterVertically ) { Icon( - painter = painterResource(id = controlIcons[key] ?: R.drawable.rounded_watch_24), + painter = painterResource( + id = controlIcons[key] ?: R.drawable.rounded_watch_24 + ), contentDescription = key, modifier = Modifier.size(24.dp), tint = MaterialTheme.colorScheme.primary @@ -222,7 +229,8 @@ fun WatchControlsSettingsUI( .pointerInput(Unit) { detectTapGestures(onLongPress = { val toEnable = disabledControls[index] - disabledControls = disabledControls.toMutableList().apply { removeAt(index) } + disabledControls = + disabledControls.toMutableList().apply { removeAt(index) } activeControls = activeControls + toEnable save() hapticFeedback.performHapticFeedback(HapticFeedbackType.LongPress) @@ -234,7 +242,9 @@ fun WatchControlsSettingsUI( verticalAlignment = Alignment.CenterVertically ) { Icon( - painter = painterResource(id = controlIcons[key] ?: R.drawable.rounded_watch_24), + painter = painterResource( + id = controlIcons[key] ?: R.drawable.rounded_watch_24 + ), contentDescription = key, modifier = Modifier.size(24.dp), tint = MaterialTheme.colorScheme.onSurfaceVariant diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/WatchSettingsUI.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/WatchSettingsUI.kt index 0951f9ce4..33942d7d2 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/WatchSettingsUI.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/configs/WatchSettingsUI.kt @@ -62,8 +62,14 @@ fun WatchSettingsUI( .background(MaterialTheme.colorScheme.surfaceBright) .clickable { HapticUtil.performUIHaptic(view) - android.widget.Toast.makeText(context, "Syncing...", android.widget.Toast.LENGTH_SHORT).show() - com.sameerasw.essentials.services.DeviceInfoSyncManager.forceSync(context) + android.widget.Toast.makeText( + context, + "Syncing...", + android.widget.Toast.LENGTH_SHORT + ).show() + com.sameerasw.essentials.services.DeviceInfoSyncManager.forceSync( + context + ) com.sameerasw.essentials.services.CalendarSyncManager.forceSync(context) } .padding(24.dp), diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/wallpaper/WallpaperScreen.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/wallpaper/WallpaperScreen.kt index 59c06f514..6633e91cd 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/wallpaper/WallpaperScreen.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/wallpaper/WallpaperScreen.kt @@ -10,13 +10,35 @@ import android.widget.Toast import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.PickVisualMediaRequest import androidx.activity.result.contract.ActivityResultContracts -import androidx.compose.animation.* +import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.core.tween +import androidx.compose.animation.expandVertically +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.shrinkVertically +import androidx.compose.animation.slideInVertically +import androidx.compose.animation.slideOutVertically import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.combinedClickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.asPaddingValues +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.navigationBars +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.statusBars +import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.lazy.grid.items @@ -26,10 +48,33 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll -import androidx.compose.material3.* +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.ButtonGroupDefaults +import androidx.compose.material3.Card +import androidx.compose.material3.CardDefaults +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi +import androidx.compose.material3.Icon +import androidx.compose.material3.LoadingIndicator +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ModalBottomSheet +import androidx.compose.material3.SplitButtonDefaults +import androidx.compose.material3.SplitButtonLayout +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.material3.ToggleButton import androidx.compose.material3.pulltorefresh.PullToRefreshBox import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -117,8 +162,9 @@ fun WallpaperScreen( LaunchedEffect(availableVideos) { if (selectedVideo == SettingsRepository.LIVE_WALLPAPER_DEFAULT_VIDEO && availableVideos.isNotEmpty()) { - val first = availableVideos.firstOrNull { it != SettingsRepository.LIVE_WALLPAPER_DEFAULT_VIDEO } - ?: availableVideos.firstOrNull() + val first = + availableVideos.firstOrNull { it != SettingsRepository.LIVE_WALLPAPER_DEFAULT_VIDEO } + ?: availableVideos.firstOrNull() if (first != null) { selectedVideo = first repository.saveLiveWallpaperSelectedVideo(first) @@ -285,7 +331,11 @@ fun WallpaperScreen( .padding(top = statusBarHeight + 64.dp), contentAlignment = Alignment.TopCenter ) { - val scale = if (isLoading) 1f else pullRefreshState.distanceFraction.coerceIn(0f, 1f) + val scale = + if (isLoading) 1f else pullRefreshState.distanceFraction.coerceIn( + 0f, + 1f + ) if (scale > 0f) { Card( shape = CircleShape, @@ -356,10 +406,16 @@ fun WallpaperScreen( selectedVideo = video repository.saveLiveWallpaperSelectedVideo(video) }, - onRemove = if (context.resources.getIdentifier(video, "raw", context.packageName) == 0) { + onRemove = if (context.resources.getIdentifier( + video, + "raw", + context.packageName + ) == 0 + ) { { repository.removeLiveWallpaperCustomVideo(video) - availableVideos = repository.getLiveWallpaperAvailableVideos() + availableVideos = + repository.getLiveWallpaperAvailableVideos() selectedVideo = repository.getLiveWallpaperSelectedVideo() } } else null @@ -373,7 +429,11 @@ fun WallpaperScreen( AnimatedVisibility( visible = (pagerState.currentPage == 0 && wallpaperInfo != null) || pagerState.currentPage == 1, enter = fadeIn(animationSpec = tween(400)) + slideInVertically(animationSpec = tween(400)) { it / 2 }, - exit = fadeOut(animationSpec = tween(400)) + slideOutVertically(animationSpec = tween(400)) { it / 2 }, + exit = fadeOut(animationSpec = tween(400)) + slideOutVertically( + animationSpec = tween( + 400 + ) + ) { it / 2 }, modifier = Modifier .align(Alignment.BottomCenter) .padding(horizontal = 24.dp) @@ -386,8 +446,16 @@ fun WallpaperScreen( ) { AnimatedVisibility( visible = showSettingsCard, - enter = expandVertically(animationSpec = tween(300)) + fadeIn(animationSpec = tween(300)), - exit = shrinkVertically(animationSpec = tween(300)) + fadeOut(animationSpec = tween(300)) + enter = expandVertically(animationSpec = tween(300)) + fadeIn( + animationSpec = tween( + 300 + ) + ), + exit = shrinkVertically(animationSpec = tween(300)) + fadeOut( + animationSpec = tween( + 300 + ) + ) ) { Card( shape = RoundedCornerShape(16.dp), @@ -475,13 +543,18 @@ fun WallpaperScreen( ) val options = listOf( - SettingsRepository.LIVE_WALLPAPER_TRIGGER_UNLOCK to stringResource(R.string.live_wallpaper_trigger_unlock), - SettingsRepository.LIVE_WALLPAPER_TRIGGER_SCREEN_ON to stringResource(R.string.live_wallpaper_trigger_screen_on) + SettingsRepository.LIVE_WALLPAPER_TRIGGER_UNLOCK to stringResource( + R.string.live_wallpaper_trigger_unlock + ), + SettingsRepository.LIVE_WALLPAPER_TRIGGER_SCREEN_ON to stringResource( + R.string.live_wallpaper_trigger_screen_on + ) ) SegmentedPicker( items = options, - selectedItem = options.find { it.first == playbackTrigger } ?: options.first(), + selectedItem = options.find { it.first == playbackTrigger } + ?: options.first(), onItemSelected = { option -> HapticUtil.performUIHaptic(view) playbackTrigger = option.first @@ -498,8 +571,10 @@ fun WallpaperScreen( onClick = { HapticUtil.performHeavyHaptic(view) repository.saveLiveWallpaperCustomVideos(emptyList()) - availableVideos = repository.getLiveWallpaperAvailableVideos() - selectedVideo = repository.getLiveWallpaperSelectedVideo() + availableVideos = + repository.getLiveWallpaperAvailableVideos() + selectedVideo = + repository.getLiveWallpaperSelectedVideo() }, colors = ButtonDefaults.buttonColors( containerColor = MaterialTheme.colorScheme.errorContainer, @@ -532,18 +607,26 @@ fun WallpaperScreen( wallpaperInfo?.urlMobile?.let { url -> viewModel.applyWallpaper(context, url) { success -> if (!success) { - Toast.makeText(context, R.string.label_wallpaper_apply_failed, Toast.LENGTH_SHORT).show() + Toast.makeText( + context, + R.string.label_wallpaper_apply_failed, + Toast.LENGTH_SHORT + ).show() } } } } else { HapticUtil.performCustomHaptic(view, 0.8f) - val intent = Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER).apply { - putExtra( - WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, - ComponentName(context, LiveWallpaperService::class.java) - ) - } + val intent = + Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER).apply { + putExtra( + WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, + ComponentName( + context, + LiveWallpaperService::class.java + ) + ) + } context.startActivity(intent) } }, @@ -602,7 +685,8 @@ fun WallpaperScreen( wallpaperInfo = wallpaperInfo, onViewImage = { try { - val intent = Intent(Intent.ACTION_VIEW, Uri.parse(wallpaperInfo?.photoLink ?: "")) + val intent = + Intent(Intent.ACTION_VIEW, Uri.parse(wallpaperInfo?.photoLink ?: "")) context.startActivity(intent) } catch (e: Exception) { e.printStackTrace() @@ -610,7 +694,8 @@ fun WallpaperScreen( }, onViewAuthor = { try { - val intent = Intent(Intent.ACTION_VIEW, Uri.parse(wallpaperInfo?.authorLink ?: "")) + val intent = + Intent(Intent.ACTION_VIEW, Uri.parse(wallpaperInfo?.authorLink ?: "")) context.startActivity(intent) } catch (e: Exception) { e.printStackTrace() @@ -618,7 +703,10 @@ fun WallpaperScreen( }, onViewCollection = { try { - val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://unsplash.com/collections/LqO9knU9z2A/Likes")) + val intent = Intent( + Intent.ACTION_VIEW, + Uri.parse("https://unsplash.com/collections/LqO9knU9z2A/Likes") + ) context.startActivity(intent) } catch (e: Exception) { e.printStackTrace() @@ -665,7 +753,10 @@ fun WallpaperHelpBottomSheet( RoundedCardContainer { Column( modifier = Modifier - .background(MaterialTheme.colorScheme.surfaceBright, shape = MaterialTheme.shapes.extraSmall) + .background( + MaterialTheme.colorScheme.surfaceBright, + shape = MaterialTheme.shapes.extraSmall + ) .padding(16.dp), verticalArrangement = Arrangement.spacedBy(12.dp) ) { @@ -711,7 +802,10 @@ fun WallpaperHelpBottomSheet( RoundedCardContainer { Column( modifier = Modifier - .background(MaterialTheme.colorScheme.surfaceBright, shape = MaterialTheme.shapes.extraSmall) + .background( + MaterialTheme.colorScheme.surfaceBright, + shape = MaterialTheme.shapes.extraSmall + ) .padding(16.dp), verticalArrangement = Arrangement.spacedBy(12.dp) ) { @@ -719,8 +813,8 @@ fun WallpaperHelpBottomSheet( onClick = onViewCollection, modifier = Modifier.fillMaxWidth(), colors = ButtonDefaults.buttonColors( - containerColor = MaterialTheme.colorScheme.primaryContainer, - contentColor = MaterialTheme.colorScheme.onPrimaryContainer + containerColor = MaterialTheme.colorScheme.primaryContainer, + contentColor = MaterialTheme.colorScheme.onPrimaryContainer ) ) { Text(text = "View Sameera's Collection") @@ -742,7 +836,10 @@ fun WallpaperHelpBottomSheet( RoundedCardContainer { Column( modifier = Modifier - .background(MaterialTheme.colorScheme.surfaceBright, shape = MaterialTheme.shapes.extraSmall) + .background( + MaterialTheme.colorScheme.surfaceBright, + shape = MaterialTheme.shapes.extraSmall + ) .padding(16.dp), verticalArrangement = Arrangement.spacedBy(12.dp) ) { diff --git a/app/src/main/java/com/sameerasw/essentials/ui/composables/watermark/WatermarkScreen.kt b/app/src/main/java/com/sameerasw/essentials/ui/composables/watermark/WatermarkScreen.kt index 12d74fe1e..ff69af537 100644 --- a/app/src/main/java/com/sameerasw/essentials/ui/composables/watermark/WatermarkScreen.kt +++ b/app/src/main/java/com/sameerasw/essentials/ui/composables/watermark/WatermarkScreen.kt @@ -1,8 +1,8 @@ package com.sameerasw.essentials.ui.composables.watermark import android.app.Activity -import android.content.pm.ActivityInfo import android.content.Intent +import android.content.pm.ActivityInfo import android.net.Uri import android.widget.Toast import androidx.compose.foundation.layout.Box diff --git a/app/src/main/java/com/sameerasw/essentials/utils/DeviceUtils.kt b/app/src/main/java/com/sameerasw/essentials/utils/DeviceUtils.kt index b675d1cfa..0ff4dba6b 100644 --- a/app/src/main/java/com/sameerasw/essentials/utils/DeviceUtils.kt +++ b/app/src/main/java/com/sameerasw/essentials/utils/DeviceUtils.kt @@ -34,8 +34,8 @@ data class DeviceInfo( object DeviceUtils { fun isGoogleDevice(): Boolean { return Build.MANUFACTURER.equalsIgnoreCase("google") || - Build.BRAND.equalsIgnoreCase("google") || - Build.PRODUCT.contains("pixel", ignoreCase = true) + Build.BRAND.equalsIgnoreCase("google") || + Build.PRODUCT.contains("pixel", ignoreCase = true) } fun getDeviceInfo(context: Context): DeviceInfo { diff --git a/app/src/main/java/com/sameerasw/essentials/utils/OverlayHelper.kt b/app/src/main/java/com/sameerasw/essentials/utils/OverlayHelper.kt index cf42a372c..fc1ae9678 100644 --- a/app/src/main/java/com/sameerasw/essentials/utils/OverlayHelper.kt +++ b/app/src/main/java/com/sameerasw/essentials/utils/OverlayHelper.kt @@ -31,9 +31,9 @@ import androidx.savedstate.SavedStateRegistry import androidx.savedstate.SavedStateRegistryController import androidx.savedstate.SavedStateRegistryOwner import androidx.savedstate.setViewTreeSavedStateRegistryOwner +import com.sameerasw.essentials.data.repository.SettingsRepository import com.sameerasw.essentials.domain.model.NotificationLightingSide import com.sameerasw.essentials.domain.model.NotificationLightingStyle -import com.sameerasw.essentials.data.repository.SettingsRepository import androidx.compose.ui.graphics.Color as ComposeColor /** @@ -241,14 +241,15 @@ object OverlayHelper { } val selectedShapes = SettingsRepository(context).getEdgeLightingSweepSelectedShapes() - val sweepView = SweepShapeView(context, color, strokeDp, randomShapes, selectedShapes).apply { - tag = "sweep_view" - alpha = 0f - layoutParams = FrameLayout.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT - ) - } + val sweepView = + SweepShapeView(context, color, strokeDp, randomShapes, selectedShapes).apply { + tag = "sweep_view" + alpha = 0f + layoutParams = FrameLayout.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT + ) + } overlay.addView(sweepView) return overlay diff --git a/app/src/main/java/com/sameerasw/essentials/utils/ShellUtils.kt b/app/src/main/java/com/sameerasw/essentials/utils/ShellUtils.kt index dcf451e59..c4d396ac3 100644 --- a/app/src/main/java/com/sameerasw/essentials/utils/ShellUtils.kt +++ b/app/src/main/java/com/sameerasw/essentials/utils/ShellUtils.kt @@ -42,11 +42,19 @@ object ShellUtils { RootUtils.runCommand(command) } else { if (!ShizukuUtils.isShizukuAvailable()) { - notifyShizukuError(context, "Shizuku is not running", "Please start Shizuku from its app to enable features.") + notifyShizukuError( + context, + "Shizuku is not running", + "Please start Shizuku from its app to enable features." + ) return } if (!ShizukuUtils.hasPermission()) { - notifyShizukuError(context, "Shizuku permission missing", "Please grant Shizuku permission for Essentials.") + notifyShizukuError( + context, + "Shizuku permission missing", + "Please grant Shizuku permission for Essentials." + ) return } ShizukuUtils.runCommand(command) @@ -67,17 +75,29 @@ object ShellUtils { RootUtils.newProcess(command) } else { if (!ShizukuUtils.isShizukuAvailable()) { - notifyShizukuError(context, "Shizuku is not running", "Please start Shizuku to enable features.") + notifyShizukuError( + context, + "Shizuku is not running", + "Please start Shizuku to enable features." + ) return null } if (!ShizukuUtils.hasPermission()) { - notifyShizukuError(context, "Shizuku permission missing", "Please grant Shizuku permission for Essentials.") + notifyShizukuError( + context, + "Shizuku permission missing", + "Please grant Shizuku permission for Essentials." + ) return null } try { com.sameerasw.essentials.shizuku.ShizukuProcessHelper.newProcess(command) } catch (e: Exception) { - notifyShizukuError(context, "Shizuku execution error", "An error occurred while running command: ${e.localizedMessage}") + notifyShizukuError( + context, + "Shizuku execution error", + "An error occurred while running command: ${e.localizedMessage}" + ) null } } @@ -110,7 +130,10 @@ object ShellUtils { PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) - val restartIntent = Intent(context, com.sameerasw.essentials.services.receivers.ShizukuActionReceiver::class.java).apply { + val restartIntent = Intent( + context, + com.sameerasw.essentials.services.receivers.ShizukuActionReceiver::class.java + ).apply { action = "com.sameerasw.essentials.ACTION_RESTART_SHIZUKU" } val restartPendingIntent = PendingIntent.getBroadcast( diff --git a/app/src/main/java/com/sameerasw/essentials/utils/ShortcutUtil.kt b/app/src/main/java/com/sameerasw/essentials/utils/ShortcutUtil.kt index dae89cd46..b0401ac83 100644 --- a/app/src/main/java/com/sameerasw/essentials/utils/ShortcutUtil.kt +++ b/app/src/main/java/com/sameerasw/essentials/utils/ShortcutUtil.kt @@ -50,28 +50,40 @@ object ShortcutUtil { val shortcuts = mutableListOf() // Wallpaper - val wallpaperIntent = Intent(context, com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java).apply { + val wallpaperIntent = Intent( + context, + com.sameerasw.essentials.ui.activities.WallpaperActivity::class.java + ).apply { action = Intent.ACTION_VIEW } val wallpaperShortcut = ShortcutInfo.Builder(context, "shortcut_wallpaper") .setShortLabel(context.getString(com.sameerasw.essentials.R.string.feat_daily_wallpaper_title)) .setLongLabel(context.getString(com.sameerasw.essentials.R.string.feat_daily_wallpaper_title)) - .setIcon(Icon.createWithResource(context, com.sameerasw.essentials.R.drawable.rounded_wallpaper_24)) + .setIcon( + Icon.createWithResource( + context, + com.sameerasw.essentials.R.drawable.rounded_wallpaper_24 + ) + ) .setIntent(wallpaperIntent) .build() shortcuts.add(wallpaperShortcut) // Dynamic shortcuts val pinnedKeys = repository.getPinnedFeatures() - val featuresMap = com.sameerasw.essentials.domain.registry.FeatureRegistry.ALL_FEATURES.associateBy { it.id } + val featuresMap = + com.sameerasw.essentials.domain.registry.FeatureRegistry.ALL_FEATURES.associateBy { it.id } var count = 0 for (key in pinnedKeys) { - if (count >= 2) break + if (count >= 2) break val feature = featuresMap[key] ?: continue if (feature.id == "DailyWallpaper" || feature.id == "LiveWallpaper") continue - val intent = Intent(context, com.sameerasw.essentials.FeatureSettingsActivity::class.java).apply { + val intent = Intent( + context, + com.sameerasw.essentials.FeatureSettingsActivity::class.java + ).apply { action = Intent.ACTION_VIEW putExtra("feature", feature.id) } diff --git a/app/src/main/java/com/sameerasw/essentials/viewmodels/MainViewModel.kt b/app/src/main/java/com/sameerasw/essentials/viewmodels/MainViewModel.kt index d99908eb5..30de864cb 100644 --- a/app/src/main/java/com/sameerasw/essentials/viewmodels/MainViewModel.kt +++ b/app/src/main/java/com/sameerasw/essentials/viewmodels/MainViewModel.kt @@ -11,6 +11,7 @@ import android.content.Intent import android.content.IntentFilter import android.content.pm.PackageManager import android.database.ContentObserver +import android.graphics.Bitmap import android.net.Uri import android.os.Handler import android.os.Looper @@ -48,7 +49,6 @@ import com.sameerasw.essentials.domain.model.SearchableItem import com.sameerasw.essentials.domain.model.UpdateInfo import com.sameerasw.essentials.domain.registry.SearchRegistry import com.sameerasw.essentials.services.CaffeinateWakeLockService -import com.sameerasw.essentials.services.widgets.FavoritesWidgetReceiver import com.sameerasw.essentials.services.NotificationLightingService import com.sameerasw.essentials.services.receivers.FlashlightActionReceiver import com.sameerasw.essentials.services.receivers.SecurityDeviceAdminReceiver @@ -58,18 +58,17 @@ import com.sameerasw.essentials.utils.DeviceUtils import com.sameerasw.essentials.utils.PermissionUtils import com.sameerasw.essentials.utils.RefreshRateUtils import com.sameerasw.essentials.utils.RootUtils -import java.io.File -import java.io.FileOutputStream -import android.graphics.Bitmap import com.sameerasw.essentials.utils.ShellUtils import com.sameerasw.essentials.utils.ShizukuUtils import com.sameerasw.essentials.utils.UpdateNotificationHelper import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.delay -import kotlinx.coroutines.launch import kotlinx.coroutines.isActive +import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import java.io.File +import java.io.FileOutputStream class MainViewModel : ViewModel() { val isAccessibilityEnabled = mutableStateOf(false) @@ -155,7 +154,8 @@ class MainViewModel : ViewModel() { val pixelSearchbarType = mutableStateOf("empty") val pixelSearchbarDateFormat = mutableStateOf("EEEE, MMMM d") val pixelSearchbarBackgroundPill = mutableStateOf(false) - val pixelSearchbarWidgetId = mutableIntStateOf(android.appwidget.AppWidgetManager.INVALID_APPWIDGET_ID) + val pixelSearchbarWidgetId = + mutableIntStateOf(android.appwidget.AppWidgetManager.INVALID_APPWIDGET_ID) val pixelSearchbarWidgetProvider = mutableStateOf(null) val pixelSearchbarScrapedLine1 = mutableStateOf("") val pixelSearchbarScrapedLine2 = mutableStateOf("") @@ -326,7 +326,8 @@ class MainViewModel : ViewModel() { val gitHubToken = mutableStateOf(null) val gitHubWorkflowToken = mutableStateOf(null) val wallpaperTriggerState = mutableStateOf(null) - val workflowAuthState = mutableStateOf(com.sameerasw.essentials.viewmodels.AuthState.Idle) + val workflowAuthState = + mutableStateOf(com.sameerasw.essentials.viewmodels.AuthState.Idle) private var workflowPollingJob: kotlinx.coroutines.Job? = null val gitHubUser = mutableStateOf(null) @@ -468,7 +469,8 @@ class MainViewModel : ViewModel() { settingsRepository.getBoolean(key) SettingsRepository.KEY_ENABLE_UNSUPPORTED_FEATURES -> { - isEnableUnsupportedFeatures.value = settingsRepository.isEnableUnsupportedFeatures() + isEnableUnsupportedFeatures.value = + settingsRepository.isEnableUnsupportedFeatures() if (searchQuery.value.isNotBlank()) { appContext?.let { onSearchQueryChanged(searchQuery.value, it) } } @@ -930,7 +932,8 @@ class MainViewModel : ViewModel() { loadShutUpConfigs() recentSearches.value = settingsRepository.getRecentSearches() loadCachedWallpaper() - isDailyWallpaperAutoUpdateEnabled.value = settingsRepository.getBoolean(SettingsRepository.KEY_DAILY_WALLPAPER_AUTO_UPDATE, false) + isDailyWallpaperAutoUpdateEnabled.value = + settingsRepository.getBoolean(SettingsRepository.KEY_DAILY_WALLPAPER_AUTO_UPDATE, false) if (isDailyWallpaperAutoUpdateEnabled.value) { schedulePeriodicWallpaperCheck(context) } @@ -1195,7 +1198,8 @@ class MainViewModel : ViewModel() { MapsState.isEnabled = isMapsPowerSavingEnabled.value hapticFeedbackType.value = settingsRepository.getHapticFeedbackType() defaultTab.value = settingsRepository.getDIYTab() - isSwipeTabsEnabled.value = settingsRepository.getBoolean(SettingsRepository.KEY_SWIPE_TABS, true) + isSwipeTabsEnabled.value = + settingsRepository.getBoolean(SettingsRepository.KEY_SWIPE_TABS, true) sentryReportMode.value = settingsRepository.getString(SettingsRepository.KEY_SENTRY_REPORT_MODE, "auto") ?: "auto" @@ -1609,13 +1613,15 @@ class MainViewModel : ViewModel() { val authRepo = com.sameerasw.essentials.data.repository.GitHubAuthRepository() val response = authRepo.requestDeviceCodeWithWorkflow() if (response != null) { - workflowAuthState.value = com.sameerasw.essentials.viewmodels.AuthState.CodeReceived( - userCode = response.userCode, - verificationUri = response.verificationUri - ) + workflowAuthState.value = + com.sameerasw.essentials.viewmodels.AuthState.CodeReceived( + userCode = response.userCode, + verificationUri = response.verificationUri + ) startWorkflowPolling(response.deviceCode, response.interval, context) } else { - workflowAuthState.value = com.sameerasw.essentials.viewmodels.AuthState.Error("Failed to request device code") + workflowAuthState.value = + com.sameerasw.essentials.viewmodels.AuthState.Error("Failed to request device code") } } } @@ -1632,24 +1638,33 @@ class MainViewModel : ViewModel() { if (tokenResponse != null) { when { tokenResponse.accessToken != null -> { - workflowAuthState.value = com.sameerasw.essentials.viewmodels.AuthState.Authenticated(tokenResponse.accessToken) + workflowAuthState.value = + com.sameerasw.essentials.viewmodels.AuthState.Authenticated( + tokenResponse.accessToken + ) settingsRepository.saveGitHubWorkflowToken(tokenResponse.accessToken) workflowPollingJob?.cancel() return@launch } + tokenResponse.error == "authorization_pending" -> { // continue } + tokenResponse.error == "slow_down" -> { currentInterval += 5000L } + tokenResponse.error == "expired_token" -> { - workflowAuthState.value = com.sameerasw.essentials.viewmodels.AuthState.Error("Code expired. Please try again.") + workflowAuthState.value = + com.sameerasw.essentials.viewmodels.AuthState.Error("Code expired. Please try again.") workflowPollingJob?.cancel() return@launch } + else -> { - workflowAuthState.value = com.sameerasw.essentials.viewmodels.AuthState.Error("Authentication failed: ${tokenResponse.error}") + workflowAuthState.value = + com.sameerasw.essentials.viewmodels.AuthState.Error("Authentication failed: ${tokenResponse.error}") workflowPollingJob?.cancel() return@launch } @@ -2092,7 +2107,12 @@ class MainViewModel : ViewModel() { pixelSearchbarWidgetProvider.value = null settingsRepository.setPixelSearchbarWidgetId(android.appwidget.AppWidgetManager.INVALID_APPWIDGET_ID) settingsRepository.setPixelSearchbarWidgetProvider(null) - context.stopService(android.content.Intent(context, com.sameerasw.essentials.services.widgets.WidgetScraperService::class.java)) + context.stopService( + android.content.Intent( + context, + com.sameerasw.essentials.services.widgets.WidgetScraperService::class.java + ) + ) updatePixelSearchbarWidget(context) } @@ -2122,7 +2142,12 @@ class MainViewModel : ViewModel() { updatePixelSearchbarWidget(context) } - fun updatePixelSearchbarMusic(title: String, artist: String, packageName: String, context: Context) { + fun updatePixelSearchbarMusic( + title: String, + artist: String, + packageName: String, + context: Context + ) { pixelSearchbarMusicTitle.value = title pixelSearchbarMusicArtist.value = artist pixelSearchbarMusicPackage.value = packageName @@ -2135,11 +2160,16 @@ class MainViewModel : ViewModel() { fun updateMediaFromActiveSession(context: Context) { try { - val manager = context.getSystemService(Context.MEDIA_SESSION_SERVICE) as? android.media.session.MediaSessionManager ?: return - val componentName = android.content.ComponentName(context, com.sameerasw.essentials.services.NotificationListener::class.java) + val manager = + context.getSystemService(Context.MEDIA_SESSION_SERVICE) as? android.media.session.MediaSessionManager + ?: return + val componentName = android.content.ComponentName( + context, + com.sameerasw.essentials.services.NotificationListener::class.java + ) val sessions = manager.getActiveSessions(componentName) val activeSession = sessions?.sortedWith( - compareByDescending { + compareByDescending { val state = it.playbackState?.state state == android.media.session.PlaybackState.STATE_PLAYING || state == android.media.session.PlaybackState.STATE_BUFFERING }.thenByDescending { @@ -2150,13 +2180,16 @@ class MainViewModel : ViewModel() { if (activeSession != null) { val metadata = activeSession.metadata - val title = metadata?.getString(android.media.MediaMetadata.METADATA_KEY_TITLE) ?: "" - val artist = metadata?.getString(android.media.MediaMetadata.METADATA_KEY_ARTIST) ?: "" + val title = + metadata?.getString(android.media.MediaMetadata.METADATA_KEY_TITLE) ?: "" + val artist = + metadata?.getString(android.media.MediaMetadata.METADATA_KEY_ARTIST) ?: "" val packageName = activeSession.packageName - val artwork = metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_ALBUM_ART) - ?: metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_ART) - ?: metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_DISPLAY_ICON) + val artwork = + metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_ALBUM_ART) + ?: metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_ART) + ?: metadata?.getBitmap(android.media.MediaMetadata.METADATA_KEY_DISPLAY_ICON) val filesDirFile = File(context.filesDir, "music_artwork.png") if (artwork != null) { @@ -2164,7 +2197,8 @@ class MainViewModel : ViewModel() { FileOutputStream(filesDirFile).use { out -> artwork.compress(Bitmap.CompressFormat.PNG, 100, out) } - } catch (_: Exception) {} + } catch (_: Exception) { + } } else { if (filesDirFile.exists()) filesDirFile.delete() } @@ -2177,7 +2211,8 @@ class MainViewModel : ViewModel() { settingsRepository.setPixelSearchbarMusicPackage(packageName) settingsRepository.incrementPixelSearchbarWidgetRevision() } - } catch (_: Exception) {} + } catch (_: Exception) { + } } fun updatePixelSearchbarWidget(context: Context) { @@ -2185,7 +2220,8 @@ class MainViewModel : ViewModel() { try { val manager = androidx.glance.appwidget.GlanceAppWidgetManager(context) val widget = com.sameerasw.essentials.services.widgets.PixelSearchbarWidget() - val glanceIds = manager.getGlanceIds(com.sameerasw.essentials.services.widgets.PixelSearchbarWidget::class.java) + val glanceIds = + manager.getGlanceIds(com.sameerasw.essentials.services.widgets.PixelSearchbarWidget::class.java) for (glanceId in glanceIds) { widget.update(context, glanceId) } @@ -4116,20 +4152,30 @@ class MainViewModel : ViewModel() { } // Daily Wallpaper Support - val dailyWallpaperInfo = mutableStateOf(null) + val dailyWallpaperInfo = + mutableStateOf(null) val isWallpaperLoading = mutableStateOf(false) private val wallpaperRepository = com.sameerasw.essentials.data.repository.WallpaperRepository() fun loadCachedWallpaper() { if (!::settingsRepository.isInitialized) return - val id = settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_ID) ?: return - val url = settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL) ?: "" - val urlMobile = settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL_MOBILE) ?: "" - val urlFull = settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL) ?: "" - val authorName = settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_NAME) ?: "" - val authorLink = settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_LINK) ?: "" - val photoLink = settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_PHOTO_LINK) ?: "" - val updatedAt = settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_UPDATED_AT) ?: "" + val id = + settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_ID) ?: return + val url = + settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL) ?: "" + val urlMobile = + settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL_MOBILE) + ?: "" + val urlFull = + settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL) ?: "" + val authorName = + settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_NAME) ?: "" + val authorLink = + settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_LINK) ?: "" + val photoLink = + settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_PHOTO_LINK) ?: "" + val updatedAt = + settingsRepository.getString(SettingsRepository.KEY_DAILY_WALLPAPER_UPDATED_AT) ?: "" dailyWallpaperInfo.value = com.sameerasw.essentials.domain.model.WallpaperInfo( id = id, @@ -4150,13 +4196,34 @@ class MainViewModel : ViewModel() { val info = wallpaperRepository.fetchTodayWallpaper() if (info != null) { dailyWallpaperInfo.value = info - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_ID, info.id) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL, info.url) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL_MOBILE, info.urlMobile) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_NAME, info.authorName) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_LINK, info.authorLink) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_PHOTO_LINK, info.photoLink) - settingsRepository.putString(SettingsRepository.KEY_DAILY_WALLPAPER_UPDATED_AT, info.updatedAt) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_LAST_ID, + info.id + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL, + info.url + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_LAST_URL_MOBILE, + info.urlMobile + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_NAME, + info.authorName + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_AUTHOR_LINK, + info.authorLink + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_PHOTO_LINK, + info.photoLink + ) + settingsRepository.putString( + SettingsRepository.KEY_DAILY_WALLPAPER_UPDATED_AT, + info.updatedAt + ) } isWallpaperLoading.value = false } @@ -4188,9 +4255,10 @@ class MainViewModel : ViewModel() { val data = androidx.work.Data.Builder() .putBoolean("force", true) .build() - val workRequest = androidx.work.OneTimeWorkRequestBuilder() - .setInputData(data) - .build() + val workRequest = + androidx.work.OneTimeWorkRequestBuilder() + .setInputData(data) + .build() androidx.work.WorkManager.getInstance(context).enqueue(workRequest) } @@ -4208,6 +4276,7 @@ class MainViewModel : ViewModel() { } private fun cancelPeriodicWallpaperCheck(context: Context) { - androidx.work.WorkManager.getInstance(context).cancelUniqueWork("daily_wallpaper_check_work") + androidx.work.WorkManager.getInstance(context) + .cancelUniqueWork("daily_wallpaper_check_work") } } diff --git a/app/src/main/java/com/sameerasw/essentials/viewmodels/WatermarkViewModel.kt b/app/src/main/java/com/sameerasw/essentials/viewmodels/WatermarkViewModel.kt index 117e1ee87..bb344445e 100644 --- a/app/src/main/java/com/sameerasw/essentials/viewmodels/WatermarkViewModel.kt +++ b/app/src/main/java/com/sameerasw/essentials/viewmodels/WatermarkViewModel.kt @@ -24,7 +24,9 @@ import java.io.File sealed class WatermarkUiState { data object Idle : WatermarkUiState() data object Processing : WatermarkUiState() - data class Success(val file: File, val bitmap: android.graphics.Bitmap? = null) : WatermarkUiState() + data class Success(val file: File, val bitmap: android.graphics.Bitmap? = null) : + WatermarkUiState() + data class Error(val message: String) : WatermarkUiState() } diff --git a/app/src/main/res/anim/anim_slide_in_top.xml b/app/src/main/res/anim/anim_slide_in_top.xml index 05dec16f4..0dcc1d77c 100644 --- a/app/src/main/res/anim/anim_slide_in_top.xml +++ b/app/src/main/res/anim/anim_slide_in_top.xml @@ -2,7 +2,7 @@ + android:toYDelta="0" /> diff --git a/app/src/main/res/anim/anim_slide_out_top.xml b/app/src/main/res/anim/anim_slide_out_top.xml index 4fe9a7c79..78b4ffb0b 100644 --- a/app/src/main/res/anim/anim_slide_out_top.xml +++ b/app/src/main/res/anim/anim_slide_out_top.xml @@ -2,7 +2,7 @@ + android:toYDelta="-100%" /> diff --git a/app/src/main/res/anim/anim_stay.xml b/app/src/main/res/anim/anim_stay.xml index 0307f5cb6..8a9daa927 100644 --- a/app/src/main/res/anim/anim_stay.xml +++ b/app/src/main/res/anim/anim_stay.xml @@ -1,7 +1,7 @@ + android:toYDelta="0" /> diff --git a/app/src/main/res/drawable-v24/ic_launcher_background.xml b/app/src/main/res/drawable-v24/ic_launcher_background.xml index cc445bd2a..c2d5f195e 100644 --- a/app/src/main/res/drawable-v24/ic_launcher_background.xml +++ b/app/src/main/res/drawable-v24/ic_launcher_background.xml @@ -4,21 +4,24 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - - - - - - - - - + + + + + + + + + diff --git a/app/src/main/res/drawable/app_logo.xml b/app/src/main/res/drawable/app_logo.xml index 0eef118e8..887b03888 100644 --- a/app/src/main/res/drawable/app_logo.xml +++ b/app/src/main/res/drawable/app_logo.xml @@ -3,51 +3,45 @@ android:height="192dp" android:viewportWidth="192" android:viewportHeight="192"> - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/apple.xml b/app/src/main/res/drawable/apple.xml index 1c20b8002..1e0746fee 100644 --- a/app/src/main/res/drawable/apple.xml +++ b/app/src/main/res/drawable/apple.xml @@ -3,7 +3,7 @@ android:height="800dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/brand_github.xml b/app/src/main/res/drawable/brand_github.xml index e26e25c0c..492db5d6c 100644 --- a/app/src/main/res/drawable/brand_github.xml +++ b/app/src/main/res/drawable/brand_github.xml @@ -28,9 +28,9 @@ SOFTWARE. android:viewportWidth="24" android:viewportHeight="24"> + android:strokeLineJoin="round" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/brand_telegram.xml b/app/src/main/res/drawable/brand_telegram.xml index 6c3318ef6..4cba053c9 100644 --- a/app/src/main/res/drawable/brand_telegram.xml +++ b/app/src/main/res/drawable/brand_telegram.xml @@ -28,9 +28,9 @@ SOFTWARE. android:viewportWidth="24" android:viewportHeight="24"> + android:strokeLineJoin="round" /> \ No newline at end of file diff --git a/app/src/main/res/drawable/cmf.xml b/app/src/main/res/drawable/cmf.xml index 464772b2d..30a2a5d70 100644 --- a/app/src/main/res/drawable/cmf.xml +++ b/app/src/main/res/drawable/cmf.xml @@ -3,143 +3,142 @@ android:height="258.65dp" android:viewportWidth="426" android:viewportHeight="285"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/frame_inspect_24px.xml b/app/src/main/res/drawable/frame_inspect_24px.xml index eddca4fc2..b4e6daa83 100644 --- a/app/src/main/res/drawable/frame_inspect_24px.xml +++ b/app/src/main/res/drawable/frame_inspect_24px.xml @@ -1,10 +1,10 @@ - + android:viewportHeight="960"> + diff --git a/app/src/main/res/drawable/ic_clipboard.xml b/app/src/main/res/drawable/ic_clipboard.xml index 2fc64975e..ece8defc9 100644 --- a/app/src/main/res/drawable/ic_clipboard.xml +++ b/app/src/main/res/drawable/ic_clipboard.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/ic_emoji.xml b/app/src/main/res/drawable/ic_emoji.xml index 7c66b4452..3aa1d101a 100644 --- a/app/src/main/res/drawable/ic_emoji.xml +++ b/app/src/main/res/drawable/ic_emoji.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml index 0ad213730..e2dac88a1 100644 --- a/app/src/main/res/drawable/ic_launcher_foreground.xml +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -3,56 +3,51 @@ android:height="108dp" android:viewportWidth="192" android:viewportHeight="192"> - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - diff --git a/app/src/main/res/drawable/ic_launcher_foreground_light.xml b/app/src/main/res/drawable/ic_launcher_foreground_light.xml index c6367716e..83c4489d0 100644 --- a/app/src/main/res/drawable/ic_launcher_foreground_light.xml +++ b/app/src/main/res/drawable/ic_launcher_foreground_light.xml @@ -3,48 +3,43 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + android:pathData="M55.83,27.05C58.26,27.05 60.34,28.72 60.79,31.03L61,32.05C61.8,36.09 66.1,38.5 70.1,37.15L71.12,36.81C73.41,36.04 75.95,36.95 77.16,38.99L78.99,42.06C80.2,44.1 79.75,46.68 77.92,48.22L77.1,48.9C73.9,51.59 73.9,56.41 77.1,59.1L77.92,59.78C79.75,61.32 80.2,63.9 78.99,65.94L77.16,69.01C75.95,71.05 73.41,71.96 71.12,71.19L70.1,70.85C66.1,69.5 61.8,71.91 61,75.94L60.79,76.97C60.34,79.28 58.26,80.95 55.83,80.95H52.17C49.74,80.95 47.66,79.28 47.2,76.97L47,75.94C46.2,71.91 41.9,69.5 37.9,70.85L36.88,71.19C34.59,71.96 32.05,71.05 30.84,69.01L29.01,65.94C27.8,63.9 28.25,61.32 30.08,59.78L30.9,59.1C34.1,56.41 34.1,51.59 30.9,48.9L30.08,48.22C28.25,46.68 27.8,44.1 29.01,42.06L30.84,38.99C32.05,36.95 34.59,36.04 36.88,36.81L37.9,37.15C41.9,38.5 46.2,36.09 47,32.06L47.2,31.03C47.66,28.72 49.74,27.05 52.17,27.05H55.83ZM57.7,39.19C55.41,38.62 53,38.58 50.67,39.1C47.25,39.87 44.19,41.79 42.02,44.55C39.84,47.3 38.69,50.72 38.74,54.23C38.8,57.74 40.06,61.12 42.32,63.81C44.57,66.5 47.69,68.33 51.13,68.98C54.58,69.64 58.15,69.09 61.24,67.43C64.33,65.76 66.75,63.08 68.09,59.84C69.01,57.64 69.39,55.26 69.22,52.9C69.09,51.07 67.19,50.06 65.43,50.59C63.67,51.11 62.74,53 62.56,54.83C62.47,55.67 62.27,56.5 61.94,57.29C61.18,59.12 59.82,60.63 58.08,61.56C56.34,62.5 54.33,62.81 52.39,62.44C51.7,62.31 51.04,62.1 50.42,61.81C49.61,61.44 49.78,60.36 50.62,60.08L52.45,59.46C52.55,59.44 52.64,59.42 52.74,59.38L54.03,58.96L55.3,58.52C56.07,58.26 56.64,57.61 56.81,56.81L57.09,55.49L57.34,54.17C57.5,53.37 57.22,52.55 56.62,52.01L55.61,51.11L54.59,50.22C53.98,49.69 53.13,49.52 52.36,49.77L51.23,50.14C51.03,50.18 50.83,50.23 50.64,50.3L47.56,51.34C46.73,51.62 45.94,50.87 46.34,50.09C46.59,49.59 46.9,49.12 47.25,48.67C48.47,47.12 50.19,46.04 52.12,45.61C52.96,45.42 53.81,45.36 54.65,45.42C56.49,45.56 58.51,44.97 59.33,43.32C60.15,41.68 59.49,39.64 57.7,39.19Z" /> diff --git a/app/src/main/res/drawable/ic_launcher_monochrome.xml b/app/src/main/res/drawable/ic_launcher_monochrome.xml index 1cd199948..0ac3de753 100644 --- a/app/src/main/res/drawable/ic_launcher_monochrome.xml +++ b/app/src/main/res/drawable/ic_launcher_monochrome.xml @@ -3,56 +3,51 @@ android:height="108dp" android:viewportWidth="192" android:viewportHeight="192"> - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - diff --git a/app/src/main/res/drawable/ic_light_sensor.xml b/app/src/main/res/drawable/ic_light_sensor.xml index 4b544d16f..8980a3d65 100644 --- a/app/src/main/res/drawable/ic_light_sensor.xml +++ b/app/src/main/res/drawable/ic_light_sensor.xml @@ -1,13 +1,12 @@ - - + android:viewportHeight="15.998"> diff --git a/app/src/main/res/drawable/ic_pocket_mode.xml b/app/src/main/res/drawable/ic_pocket_mode.xml index 935458725..faa28cd66 100644 --- a/app/src/main/res/drawable/ic_pocket_mode.xml +++ b/app/src/main/res/drawable/ic_pocket_mode.xml @@ -1,10 +1,10 @@ + android:width="24.0dp" + android:height="24.0dp" + android:tint="?android:attr/colorControlNormal" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_splash_launcher_foreground.xml b/app/src/main/res/drawable/ic_splash_launcher_foreground.xml index 20c88bb20..64a36a249 100644 --- a/app/src/main/res/drawable/ic_splash_launcher_foreground.xml +++ b/app/src/main/res/drawable/ic_splash_launcher_foreground.xml @@ -1,50 +1,45 @@ - - + android:viewportHeight="108"> + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + android:pathData="M55.83,27.05C58.26,27.05 60.34,28.72 60.79,31.03L61,32.05C61.8,36.09 66.1,38.5 70.1,37.15L71.12,36.81C73.41,36.04 75.95,36.95 77.16,38.99L78.99,42.06C80.2,44.1 79.75,46.68 77.92,48.22L77.1,48.9C73.9,51.59 73.9,56.41 77.1,59.1L77.92,59.78C79.75,61.32 80.2,63.9 78.99,65.94L77.16,69.01C75.95,71.05 73.41,71.96 71.12,71.19L70.1,70.85C66.1,69.5 61.8,71.91 61,75.94L60.79,76.97C60.34,79.28 58.26,80.95 55.83,80.95H52.17C49.74,80.95 47.66,79.28 47.2,76.97L47,75.94C46.2,71.91 41.9,69.5 37.9,70.85L36.88,71.19C34.59,71.96 32.05,71.05 30.84,69.01L29.01,65.94C27.8,63.9 28.25,61.32 30.08,59.78L30.9,59.1C34.1,56.41 34.1,51.59 30.9,48.9L30.08,48.22C28.25,46.68 27.8,44.1 29.01,42.06L30.84,38.99C32.05,36.95 34.59,36.04 36.88,36.81L37.9,37.15C41.9,38.5 46.2,36.09 47,32.06L47.2,31.03C47.66,28.72 49.74,27.05 52.17,27.05H55.83ZM57.7,39.19C55.41,38.62 53,38.58 50.67,39.1C47.25,39.87 44.19,41.79 42.02,44.55C39.84,47.3 38.69,50.72 38.74,54.23C38.8,57.74 40.06,61.12 42.32,63.81C44.57,66.5 47.69,68.33 51.13,68.98C54.58,69.64 58.15,69.09 61.24,67.43C64.33,65.76 66.75,63.08 68.09,59.84C69.01,57.64 69.39,55.26 69.22,52.9C69.09,51.07 67.19,50.06 65.43,50.59C63.67,51.11 62.74,53 62.56,54.83C62.47,55.67 62.27,56.5 61.94,57.29C61.18,59.12 59.82,60.63 58.08,61.56C56.34,62.5 54.33,62.81 52.39,62.44C51.7,62.31 51.04,62.1 50.42,61.81C49.61,61.44 49.78,60.36 50.62,60.08L52.45,59.46C52.55,59.44 52.64,59.42 52.74,59.38L54.03,58.96L55.3,58.52C56.07,58.26 56.64,57.61 56.81,56.81L57.09,55.49L57.34,54.17C57.5,53.37 57.22,52.55 56.62,52.01L55.61,51.11L54.59,50.22C53.98,49.69 53.13,49.52 52.36,49.77L51.23,50.14C51.03,50.18 50.83,50.23 50.64,50.3L47.56,51.34C46.73,51.62 45.94,50.87 46.34,50.09C46.59,49.59 46.9,49.12 47.25,48.67C48.47,47.12 50.19,46.04 52.12,45.61C52.96,45.42 53.81,45.36 54.65,45.42C56.49,45.56 58.51,44.97 59.33,43.32C60.15,41.68 59.49,39.64 57.7,39.19Z" /> diff --git a/app/src/main/res/drawable/ic_splash_launcher_foreground_light.xml b/app/src/main/res/drawable/ic_splash_launcher_foreground_light.xml index e5fede4ed..7eb7ac358 100644 --- a/app/src/main/res/drawable/ic_splash_launcher_foreground_light.xml +++ b/app/src/main/res/drawable/ic_splash_launcher_foreground_light.xml @@ -1,50 +1,45 @@ - - + android:viewportHeight="108"> + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + android:pathData="M55.83,27.05C58.26,27.05 60.34,28.72 60.79,31.03L61,32.05C61.8,36.09 66.1,38.5 70.1,37.15L71.12,36.81C73.41,36.04 75.95,36.95 77.16,38.99L78.99,42.06C80.2,44.1 79.75,46.68 77.92,48.22L77.1,48.9C73.9,51.59 73.9,56.41 77.1,59.1L77.92,59.78C79.75,61.32 80.2,63.9 78.99,65.94L77.16,69.01C75.95,71.05 73.41,71.96 71.12,71.19L70.1,70.85C66.1,69.5 61.8,71.91 61,75.94L60.79,76.97C60.34,79.28 58.26,80.95 55.83,80.95H52.17C49.74,80.95 47.66,79.28 47.2,76.97L47,75.94C46.2,71.91 41.9,69.5 37.9,70.85L36.88,71.19C34.59,71.96 32.05,71.05 30.84,69.01L29.01,65.94C27.8,63.9 28.25,61.32 30.08,59.78L30.9,59.1C34.1,56.41 34.1,51.59 30.9,48.9L30.08,48.22C28.25,46.68 27.8,44.1 29.01,42.06L30.84,38.99C32.05,36.95 34.59,36.04 36.88,36.81L37.9,37.15C41.9,38.5 46.2,36.09 47,32.06L47.2,31.03C47.66,28.72 49.74,27.05 52.17,27.05H55.83ZM57.7,39.19C55.41,38.62 53,38.58 50.67,39.1C47.25,39.87 44.19,41.79 42.02,44.55C39.84,47.3 38.69,50.72 38.74,54.23C38.8,57.74 40.06,61.12 42.32,63.81C44.57,66.5 47.69,68.33 51.13,68.98C54.58,69.64 58.15,69.09 61.24,67.43C64.33,65.76 66.75,63.08 68.09,59.84C69.01,57.64 69.39,55.26 69.22,52.9C69.09,51.07 67.19,50.06 65.43,50.59C63.67,51.11 62.74,53 62.56,54.83C62.47,55.67 62.27,56.5 61.94,57.29C61.18,59.12 59.82,60.63 58.08,61.56C56.34,62.5 54.33,62.81 52.39,62.44C51.7,62.31 51.04,62.1 50.42,61.81C49.61,61.44 49.78,60.36 50.62,60.08L52.45,59.46C52.55,59.44 52.64,59.42 52.74,59.38L54.03,58.96L55.3,58.52C56.07,58.26 56.64,57.61 56.81,56.81L57.09,55.49L57.34,54.17C57.5,53.37 57.22,52.55 56.62,52.01L55.61,51.11L54.59,50.22C53.98,49.69 53.13,49.52 52.36,49.77L51.23,50.14C51.03,50.18 50.83,50.23 50.64,50.3L47.56,51.34C46.73,51.62 45.94,50.87 46.34,50.09C46.59,49.59 46.9,49.12 47.25,48.67C48.47,47.12 50.19,46.04 52.12,45.61C52.96,45.42 53.81,45.36 54.65,45.42C56.49,45.56 58.51,44.97 59.33,43.32C60.15,41.68 59.49,39.64 57.7,39.19Z" /> diff --git a/app/src/main/res/drawable/ic_undo.xml b/app/src/main/res/drawable/ic_undo.xml index c7e9eddce..52701858e 100644 --- a/app/src/main/res/drawable/ic_undo.xml +++ b/app/src/main/res/drawable/ic_undo.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/drawable/key_shift.xml b/app/src/main/res/drawable/key_shift.xml index 0294fd9e0..8ec55b485 100644 --- a/app/src/main/res/drawable/key_shift.xml +++ b/app/src/main/res/drawable/key_shift.xml @@ -3,7 +3,7 @@ android:height="800dp" android:viewportWidth="56" android:viewportHeight="56"> - + diff --git a/app/src/main/res/drawable/moto.xml b/app/src/main/res/drawable/moto.xml index e56836411..8e06d4877 100644 --- a/app/src/main/res/drawable/moto.xml +++ b/app/src/main/res/drawable/moto.xml @@ -3,12 +3,12 @@ android:height="307.23dp" android:viewportWidth="264.58" android:viewportHeight="81.29"> - - + + diff --git a/app/src/main/res/drawable/nothing.xml b/app/src/main/res/drawable/nothing.xml index b4153c1be..e80969cba 100644 --- a/app/src/main/res/drawable/nothing.xml +++ b/app/src/main/res/drawable/nothing.xml @@ -3,9 +3,9 @@ android:height="67.2dp" android:viewportWidth="99.02" android:viewportHeight="17.78"> - + diff --git a/app/src/main/res/drawable/oppo.xml b/app/src/main/res/drawable/oppo.xml index 1875ee4f6..c97ea7c5f 100644 --- a/app/src/main/res/drawable/oppo.xml +++ b/app/src/main/res/drawable/oppo.xml @@ -3,8 +3,8 @@ android:height="237.7dp" android:viewportWidth="1000" android:viewportHeight="237.7"> - + diff --git a/app/src/main/res/drawable/outline_backlight_high_24.xml b/app/src/main/res/drawable/outline_backlight_high_24.xml index a38e97da3..16c3dd49d 100644 --- a/app/src/main/res/drawable/outline_backlight_high_24.xml +++ b/app/src/main/res/drawable/outline_backlight_high_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/outline_battery_android_frame_bolt_24.xml b/app/src/main/res/drawable/outline_battery_android_frame_bolt_24.xml index 56fd38250..8c35cb459 100644 --- a/app/src/main/res/drawable/outline_battery_android_frame_bolt_24.xml +++ b/app/src/main/res/drawable/outline_battery_android_frame_bolt_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/outline_bubble_chart_24.xml b/app/src/main/res/drawable/outline_bubble_chart_24.xml index f733c97ea..d2007fc1a 100644 --- a/app/src/main/res/drawable/outline_bubble_chart_24.xml +++ b/app/src/main/res/drawable/outline_bubble_chart_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/outline_circle_notifications_24.xml b/app/src/main/res/drawable/outline_circle_notifications_24.xml index 8f61586a3..232d2105b 100644 --- a/app/src/main/res/drawable/outline_circle_notifications_24.xml +++ b/app/src/main/res/drawable/outline_circle_notifications_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/outline_highlight_mouse_cursor_24.xml b/app/src/main/res/drawable/outline_highlight_mouse_cursor_24.xml index 0562f1969..745b77dc5 100644 --- a/app/src/main/res/drawable/outline_highlight_mouse_cursor_24.xml +++ b/app/src/main/res/drawable/outline_highlight_mouse_cursor_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/outline_interests_24.xml b/app/src/main/res/drawable/outline_interests_24.xml index 340362735..33e06529f 100644 --- a/app/src/main/res/drawable/outline_interests_24.xml +++ b/app/src/main/res/drawable/outline_interests_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/outline_mobile_chat_24.xml b/app/src/main/res/drawable/outline_mobile_chat_24.xml index ba33a32e7..a17916690 100644 --- a/app/src/main/res/drawable/outline_mobile_chat_24.xml +++ b/app/src/main/res/drawable/outline_mobile_chat_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/round_android_24.xml b/app/src/main/res/drawable/round_android_24.xml index 4db0bf42c..76645eb59 100644 --- a/app/src/main/res/drawable/round_android_24.xml +++ b/app/src/main/res/drawable/round_android_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/round_arrow_upward_24.xml b/app/src/main/res/drawable/round_arrow_upward_24.xml index 73f4a370e..f0eb746f8 100644 --- a/app/src/main/res/drawable/round_arrow_upward_24.xml +++ b/app/src/main/res/drawable/round_arrow_upward_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/round_favorite_24.xml b/app/src/main/res/drawable/round_favorite_24.xml index 36f7780a9..7e4644b91 100644 --- a/app/src/main/res/drawable/round_favorite_24.xml +++ b/app/src/main/res/drawable/round_favorite_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/round_flashlight_on_24.xml b/app/src/main/res/drawable/round_flashlight_on_24.xml index e1702730d..8ff2165ad 100644 --- a/app/src/main/res/drawable/round_flashlight_on_24.xml +++ b/app/src/main/res/drawable/round_flashlight_on_24.xml @@ -1,7 +1,16 @@ - - - - - - + + + + + + diff --git a/app/src/main/res/drawable/round_front_hand_24.xml b/app/src/main/res/drawable/round_front_hand_24.xml index 7fc450a7a..bdce37876 100644 --- a/app/src/main/res/drawable/round_front_hand_24.xml +++ b/app/src/main/res/drawable/round_front_hand_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/round_navigation_24.xml b/app/src/main/res/drawable/round_navigation_24.xml index 52778d649..4be8e680e 100644 --- a/app/src/main/res/drawable/round_navigation_24.xml +++ b/app/src/main/res/drawable/round_navigation_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/round_play_arrow_24.xml b/app/src/main/res/drawable/round_play_arrow_24.xml index 42c14a76c..a7b77cce6 100644 --- a/app/src/main/res/drawable/round_play_arrow_24.xml +++ b/app/src/main/res/drawable/round_play_arrow_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/round_star_24.xml b/app/src/main/res/drawable/round_star_24.xml index 1e0f11749..ce2a9e6f3 100644 --- a/app/src/main/res/drawable/round_star_24.xml +++ b/app/src/main/res/drawable/round_star_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_accessibility_new_24.xml b/app/src/main/res/drawable/rounded_accessibility_new_24.xml index 79845dc90..2885906a2 100644 --- a/app/src/main/res/drawable/rounded_accessibility_new_24.xml +++ b/app/src/main/res/drawable/rounded_accessibility_new_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_account_balance_24.xml b/app/src/main/res/drawable/rounded_account_balance_24.xml index 0dc270577..70b680f7e 100644 --- a/app/src/main/res/drawable/rounded_account_balance_24.xml +++ b/app/src/main/res/drawable/rounded_account_balance_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_action_key_24.xml b/app/src/main/res/drawable/rounded_action_key_24.xml index e1c19955b..e16f77c2a 100644 --- a/app/src/main/res/drawable/rounded_action_key_24.xml +++ b/app/src/main/res/drawable/rounded_action_key_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_adb_24.xml b/app/src/main/res/drawable/rounded_adb_24.xml index 5f84c3ac8..a5ee6ec5c 100644 --- a/app/src/main/res/drawable/rounded_adb_24.xml +++ b/app/src/main/res/drawable/rounded_adb_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_add_24.xml b/app/src/main/res/drawable/rounded_add_24.xml index 6ec9fed9b..5b3f0f8a9 100644 --- a/app/src/main/res/drawable/rounded_add_24.xml +++ b/app/src/main/res/drawable/rounded_add_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_add_location_alt_24.xml b/app/src/main/res/drawable/rounded_add_location_alt_24.xml index a759d6ce6..54c1baee6 100644 --- a/app/src/main/res/drawable/rounded_add_location_alt_24.xml +++ b/app/src/main/res/drawable/rounded_add_location_alt_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_add_photo_alternate_24.xml b/app/src/main/res/drawable/rounded_add_photo_alternate_24.xml index 0b44125a5..40a5b661c 100644 --- a/app/src/main/res/drawable/rounded_add_photo_alternate_24.xml +++ b/app/src/main/res/drawable/rounded_add_photo_alternate_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_admin_panel_settings_24.xml b/app/src/main/res/drawable/rounded_admin_panel_settings_24.xml index 9c2b0bcfc..ebcabf7f3 100644 --- a/app/src/main/res/drawable/rounded_admin_panel_settings_24.xml +++ b/app/src/main/res/drawable/rounded_admin_panel_settings_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_alarm_24.xml b/app/src/main/res/drawable/rounded_alarm_24.xml index dffeb1d39..3ba7ced29 100644 --- a/app/src/main/res/drawable/rounded_alarm_24.xml +++ b/app/src/main/res/drawable/rounded_alarm_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_android_24.xml b/app/src/main/res/drawable/rounded_android_24.xml index ea55a9981..971a5d21a 100644 --- a/app/src/main/res/drawable/rounded_android_24.xml +++ b/app/src/main/res/drawable/rounded_android_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_android_cell_dual_4_bar_24.xml b/app/src/main/res/drawable/rounded_android_cell_dual_4_bar_24.xml index 9f70e5eb4..1fc6b80bb 100644 --- a/app/src/main/res/drawable/rounded_android_cell_dual_4_bar_24.xml +++ b/app/src/main/res/drawable/rounded_android_cell_dual_4_bar_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_android_cell_dual_5_bar_alert_24.xml b/app/src/main/res/drawable/rounded_android_cell_dual_5_bar_alert_24.xml index a0c176b0e..3d693bd85 100644 --- a/app/src/main/res/drawable/rounded_android_cell_dual_5_bar_alert_24.xml +++ b/app/src/main/res/drawable/rounded_android_cell_dual_5_bar_alert_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_android_wifi_3_bar_24.xml b/app/src/main/res/drawable/rounded_android_wifi_3_bar_24.xml index 322082ae0..106327caf 100644 --- a/app/src/main/res/drawable/rounded_android_wifi_3_bar_24.xml +++ b/app/src/main/res/drawable/rounded_android_wifi_3_bar_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_android_wifi_4_bar_plus_24.xml b/app/src/main/res/drawable/rounded_android_wifi_4_bar_plus_24.xml index bdb2df84e..cbe12f7cc 100644 --- a/app/src/main/res/drawable/rounded_android_wifi_4_bar_plus_24.xml +++ b/app/src/main/res/drawable/rounded_android_wifi_4_bar_plus_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_apartment_24.xml b/app/src/main/res/drawable/rounded_apartment_24.xml index a9bb974bf..ae2e2de97 100644 --- a/app/src/main/res/drawable/rounded_apartment_24.xml +++ b/app/src/main/res/drawable/rounded_apartment_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_app_badging_24.xml b/app/src/main/res/drawable/rounded_app_badging_24.xml index 76ecb6888..33ed0e109 100644 --- a/app/src/main/res/drawable/rounded_app_badging_24.xml +++ b/app/src/main/res/drawable/rounded_app_badging_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_app_registration_24.xml b/app/src/main/res/drawable/rounded_app_registration_24.xml index 941d420fe..2f92130ba 100644 --- a/app/src/main/res/drawable/rounded_app_registration_24.xml +++ b/app/src/main/res/drawable/rounded_app_registration_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_apps_24.xml b/app/src/main/res/drawable/rounded_apps_24.xml index 889124d9e..be643a79c 100644 --- a/app/src/main/res/drawable/rounded_apps_24.xml +++ b/app/src/main/res/drawable/rounded_apps_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_arrow_back_24.xml b/app/src/main/res/drawable/rounded_arrow_back_24.xml index f6012a30b..ce6c5a8c2 100644 --- a/app/src/main/res/drawable/rounded_arrow_back_24.xml +++ b/app/src/main/res/drawable/rounded_arrow_back_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_arrow_cool_down_24.xml b/app/src/main/res/drawable/rounded_arrow_cool_down_24.xml index 7e37f1a68..2a5dd80c9 100644 --- a/app/src/main/res/drawable/rounded_arrow_cool_down_24.xml +++ b/app/src/main/res/drawable/rounded_arrow_cool_down_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_arrow_forward_24.xml b/app/src/main/res/drawable/rounded_arrow_forward_24.xml index c72c75d8c..2217c4723 100644 --- a/app/src/main/res/drawable/rounded_arrow_forward_24.xml +++ b/app/src/main/res/drawable/rounded_arrow_forward_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_arrow_warm_up_24.xml b/app/src/main/res/drawable/rounded_arrow_warm_up_24.xml index d94b36920..a7d929cd7 100644 --- a/app/src/main/res/drawable/rounded_arrow_warm_up_24.xml +++ b/app/src/main/res/drawable/rounded_arrow_warm_up_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_arrows_outward_24.xml b/app/src/main/res/drawable/rounded_arrows_outward_24.xml index b8aeb3703..1d4e04f3d 100644 --- a/app/src/main/res/drawable/rounded_arrows_outward_24.xml +++ b/app/src/main/res/drawable/rounded_arrows_outward_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_av_timer_24.xml b/app/src/main/res/drawable/rounded_av_timer_24.xml index c00ce1df7..abe2df385 100644 --- a/app/src/main/res/drawable/rounded_av_timer_24.xml +++ b/app/src/main/res/drawable/rounded_av_timer_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_award_star_24.xml b/app/src/main/res/drawable/rounded_award_star_24.xml index 60f83b3a4..6a9735a16 100644 --- a/app/src/main/res/drawable/rounded_award_star_24.xml +++ b/app/src/main/res/drawable/rounded_award_star_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_backspace_24.xml b/app/src/main/res/drawable/rounded_backspace_24.xml index 43c57d5a6..69f092042 100644 --- a/app/src/main/res/drawable/rounded_backspace_24.xml +++ b/app/src/main/res/drawable/rounded_backspace_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_battery_android_0_24.xml b/app/src/main/res/drawable/rounded_battery_android_0_24.xml index 570cf5068..a97c4599e 100644 --- a/app/src/main/res/drawable/rounded_battery_android_0_24.xml +++ b/app/src/main/res/drawable/rounded_battery_android_0_24.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="960" android:viewportHeight="960"> - + diff --git a/app/src/main/res/drawable/rounded_battery_android_frame_3_24.xml b/app/src/main/res/drawable/rounded_battery_android_frame_3_24.xml index 5857b3ba6..d545f67e9 100644 --- a/app/src/main/res/drawable/rounded_battery_android_frame_3_24.xml +++ b/app/src/main/res/drawable/rounded_battery_android_frame_3_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_battery_android_frame_6_24.xml b/app/src/main/res/drawable/rounded_battery_android_frame_6_24.xml index 85f8dd21b..036c60fda 100644 --- a/app/src/main/res/drawable/rounded_battery_android_frame_6_24.xml +++ b/app/src/main/res/drawable/rounded_battery_android_frame_6_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_battery_android_frame_alert_24.xml b/app/src/main/res/drawable/rounded_battery_android_frame_alert_24.xml index 994cdbe3f..1fb8aa9b1 100644 --- a/app/src/main/res/drawable/rounded_battery_android_frame_alert_24.xml +++ b/app/src/main/res/drawable/rounded_battery_android_frame_alert_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_battery_android_frame_plus_24.xml b/app/src/main/res/drawable/rounded_battery_android_frame_plus_24.xml index 47731b2f3..7e67fb298 100644 --- a/app/src/main/res/drawable/rounded_battery_android_frame_plus_24.xml +++ b/app/src/main/res/drawable/rounded_battery_android_frame_plus_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_battery_android_frame_shield_24.xml b/app/src/main/res/drawable/rounded_battery_android_frame_shield_24.xml index c8b08abd0..deadfcce4 100644 --- a/app/src/main/res/drawable/rounded_battery_android_frame_shield_24.xml +++ b/app/src/main/res/drawable/rounded_battery_android_frame_shield_24.xml @@ -3,7 +3,7 @@ android:height="24dp" android:viewportWidth="960" android:viewportHeight="960"> - + diff --git a/app/src/main/res/drawable/rounded_battery_charging_60_24.xml b/app/src/main/res/drawable/rounded_battery_charging_60_24.xml index afe2b22bc..61e3e00d4 100644 --- a/app/src/main/res/drawable/rounded_battery_charging_60_24.xml +++ b/app/src/main/res/drawable/rounded_battery_charging_60_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_beach_access_24.xml b/app/src/main/res/drawable/rounded_beach_access_24.xml index cd3c2e5b8..f6637908a 100644 --- a/app/src/main/res/drawable/rounded_beach_access_24.xml +++ b/app/src/main/res/drawable/rounded_beach_access_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_bed_24.xml b/app/src/main/res/drawable/rounded_bed_24.xml index 8260d43ed..901988a44 100644 --- a/app/src/main/res/drawable/rounded_bed_24.xml +++ b/app/src/main/res/drawable/rounded_bed_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_bluetooth_24.xml b/app/src/main/res/drawable/rounded_bluetooth_24.xml index d4bc834fa..a4769ceed 100644 --- a/app/src/main/res/drawable/rounded_bluetooth_24.xml +++ b/app/src/main/res/drawable/rounded_bluetooth_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_blur_linear_24.xml b/app/src/main/res/drawable/rounded_blur_linear_24.xml index 599ecdd6f..22cf3cc5c 100644 --- a/app/src/main/res/drawable/rounded_blur_linear_24.xml +++ b/app/src/main/res/drawable/rounded_blur_linear_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_blur_off_24.xml b/app/src/main/res/drawable/rounded_blur_off_24.xml index f2920311d..69a846565 100644 --- a/app/src/main/res/drawable/rounded_blur_off_24.xml +++ b/app/src/main/res/drawable/rounded_blur_off_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_blur_on_24.xml b/app/src/main/res/drawable/rounded_blur_on_24.xml index 760ffba99..e6b47eedb 100644 --- a/app/src/main/res/drawable/rounded_blur_on_24.xml +++ b/app/src/main/res/drawable/rounded_blur_on_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_bolt_24.xml b/app/src/main/res/drawable/rounded_bolt_24.xml index 3d7c205e9..7164d7b6f 100644 --- a/app/src/main/res/drawable/rounded_bolt_24.xml +++ b/app/src/main/res/drawable/rounded_bolt_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_book_2_24.xml b/app/src/main/res/drawable/rounded_book_2_24.xml index 317af1f1e..c802de3a6 100644 --- a/app/src/main/res/drawable/rounded_book_2_24.xml +++ b/app/src/main/res/drawable/rounded_book_2_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_bookmark_24.xml b/app/src/main/res/drawable/rounded_bookmark_24.xml index 18fbf84e0..db2fa571d 100644 --- a/app/src/main/res/drawable/rounded_bookmark_24.xml +++ b/app/src/main/res/drawable/rounded_bookmark_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_bookmark_remove_24.xml b/app/src/main/res/drawable/rounded_bookmark_remove_24.xml index 605e32aba..ee9beb684 100644 --- a/app/src/main/res/drawable/rounded_bookmark_remove_24.xml +++ b/app/src/main/res/drawable/rounded_bookmark_remove_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_border_bottom_24.xml b/app/src/main/res/drawable/rounded_border_bottom_24.xml index 740a89dab..a98ac8b56 100644 --- a/app/src/main/res/drawable/rounded_border_bottom_24.xml +++ b/app/src/main/res/drawable/rounded_border_bottom_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_border_left_24.xml b/app/src/main/res/drawable/rounded_border_left_24.xml index 63767198b..1f73f183f 100644 --- a/app/src/main/res/drawable/rounded_border_left_24.xml +++ b/app/src/main/res/drawable/rounded_border_left_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_border_right_24.xml b/app/src/main/res/drawable/rounded_border_right_24.xml index dc052348b..c63388658 100644 --- a/app/src/main/res/drawable/rounded_border_right_24.xml +++ b/app/src/main/res/drawable/rounded_border_right_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_border_top_24.xml b/app/src/main/res/drawable/rounded_border_top_24.xml index 7162a3fe2..0824aa692 100644 --- a/app/src/main/res/drawable/rounded_border_top_24.xml +++ b/app/src/main/res/drawable/rounded_border_top_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_brightness_6_24.xml b/app/src/main/res/drawable/rounded_brightness_6_24.xml index 6811f5b34..33293ccd5 100644 --- a/app/src/main/res/drawable/rounded_brightness_6_24.xml +++ b/app/src/main/res/drawable/rounded_brightness_6_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_brightness_auto_24.xml b/app/src/main/res/drawable/rounded_brightness_auto_24.xml index b10d0ec17..ac348afff 100644 --- a/app/src/main/res/drawable/rounded_brightness_auto_24.xml +++ b/app/src/main/res/drawable/rounded_brightness_auto_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_brightness_medium_24.xml b/app/src/main/res/drawable/rounded_brightness_medium_24.xml index 6811f5b34..33293ccd5 100644 --- a/app/src/main/res/drawable/rounded_brightness_medium_24.xml +++ b/app/src/main/res/drawable/rounded_brightness_medium_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_bubble_24.xml b/app/src/main/res/drawable/rounded_bubble_24.xml index b8dfed077..9ddad4123 100644 --- a/app/src/main/res/drawable/rounded_bubble_24.xml +++ b/app/src/main/res/drawable/rounded_bubble_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_bubble_chart_24.xml b/app/src/main/res/drawable/rounded_bubble_chart_24.xml index f733c97ea..d2007fc1a 100644 --- a/app/src/main/res/drawable/rounded_bubble_chart_24.xml +++ b/app/src/main/res/drawable/rounded_bubble_chart_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_bug_report_24.xml b/app/src/main/res/drawable/rounded_bug_report_24.xml index 82dc37d9b..6fe1ddff1 100644 --- a/app/src/main/res/drawable/rounded_bug_report_24.xml +++ b/app/src/main/res/drawable/rounded_bug_report_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_calendar_today_24.xml b/app/src/main/res/drawable/rounded_calendar_today_24.xml index 89e2b18b8..77c134c78 100644 --- a/app/src/main/res/drawable/rounded_calendar_today_24.xml +++ b/app/src/main/res/drawable/rounded_calendar_today_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_call_log_24.xml b/app/src/main/res/drawable/rounded_call_log_24.xml index eeeca9f21..1caf606d5 100644 --- a/app/src/main/res/drawable/rounded_call_log_24.xml +++ b/app/src/main/res/drawable/rounded_call_log_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_camera_24.xml b/app/src/main/res/drawable/rounded_camera_24.xml index 3a01dc0cc..7c6c4cb56 100644 --- a/app/src/main/res/drawable/rounded_camera_24.xml +++ b/app/src/main/res/drawable/rounded_camera_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_cancel_24.xml b/app/src/main/res/drawable/rounded_cancel_24.xml index 8d26e4fee..141a67d15 100644 --- a/app/src/main/res/drawable/rounded_cancel_24.xml +++ b/app/src/main/res/drawable/rounded_cancel_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_cast_24.xml b/app/src/main/res/drawable/rounded_cast_24.xml index 403d6bc9a..96427144b 100644 --- a/app/src/main/res/drawable/rounded_cast_24.xml +++ b/app/src/main/res/drawable/rounded_cast_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_cell_wifi_24.xml b/app/src/main/res/drawable/rounded_cell_wifi_24.xml index 3a65f1c5d..990af130f 100644 --- a/app/src/main/res/drawable/rounded_cell_wifi_24.xml +++ b/app/src/main/res/drawable/rounded_cell_wifi_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_center_focus_strong_24.xml b/app/src/main/res/drawable/rounded_center_focus_strong_24.xml index b99219ab2..6f1cb1b55 100644 --- a/app/src/main/res/drawable/rounded_center_focus_strong_24.xml +++ b/app/src/main/res/drawable/rounded_center_focus_strong_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_charger_24.xml b/app/src/main/res/drawable/rounded_charger_24.xml index 535e722e1..881c8d550 100644 --- a/app/src/main/res/drawable/rounded_charger_24.xml +++ b/app/src/main/res/drawable/rounded_charger_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_chat_info_24.xml b/app/src/main/res/drawable/rounded_chat_info_24.xml index 0dd301874..1eac625fb 100644 --- a/app/src/main/res/drawable/rounded_chat_info_24.xml +++ b/app/src/main/res/drawable/rounded_chat_info_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_check_24.xml b/app/src/main/res/drawable/rounded_check_24.xml index eb2564dff..e8b1c6511 100644 --- a/app/src/main/res/drawable/rounded_check_24.xml +++ b/app/src/main/res/drawable/rounded_check_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_check_circle_24.xml b/app/src/main/res/drawable/rounded_check_circle_24.xml index a426909f2..c8762feb8 100644 --- a/app/src/main/res/drawable/rounded_check_circle_24.xml +++ b/app/src/main/res/drawable/rounded_check_circle_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_chevron_right_24.xml b/app/src/main/res/drawable/rounded_chevron_right_24.xml index f00e768d1..ae1ffa877 100644 --- a/app/src/main/res/drawable/rounded_chevron_right_24.xml +++ b/app/src/main/res/drawable/rounded_chevron_right_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_circles_24.xml b/app/src/main/res/drawable/rounded_circles_24.xml index ec987364c..a07d8b602 100644 --- a/app/src/main/res/drawable/rounded_circles_24.xml +++ b/app/src/main/res/drawable/rounded_circles_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_close_24.xml b/app/src/main/res/drawable/rounded_close_24.xml index a5dd7dbec..d45b04238 100644 --- a/app/src/main/res/drawable/rounded_close_24.xml +++ b/app/src/main/res/drawable/rounded_close_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_code_24.xml b/app/src/main/res/drawable/rounded_code_24.xml index f61a7f515..7551067a3 100644 --- a/app/src/main/res/drawable/rounded_code_24.xml +++ b/app/src/main/res/drawable/rounded_code_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_coffee_24.xml b/app/src/main/res/drawable/rounded_coffee_24.xml index 8c21e420d..531508c6c 100644 --- a/app/src/main/res/drawable/rounded_coffee_24.xml +++ b/app/src/main/res/drawable/rounded_coffee_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_colorize_24.xml b/app/src/main/res/drawable/rounded_colorize_24.xml index 1a75f5a03..72e17434e 100644 --- a/app/src/main/res/drawable/rounded_colorize_24.xml +++ b/app/src/main/res/drawable/rounded_colorize_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_content_copy_24.xml b/app/src/main/res/drawable/rounded_content_copy_24.xml index edc172af3..33da99fd5 100644 --- a/app/src/main/res/drawable/rounded_content_copy_24.xml +++ b/app/src/main/res/drawable/rounded_content_copy_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_content_paste_24.xml b/app/src/main/res/drawable/rounded_content_paste_24.xml index 1c5b5eb07..c4e3c53ea 100644 --- a/app/src/main/res/drawable/rounded_content_paste_24.xml +++ b/app/src/main/res/drawable/rounded_content_paste_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_control_camera_24.xml b/app/src/main/res/drawable/rounded_control_camera_24.xml index a02edfd2c..0d9d874f1 100644 --- a/app/src/main/res/drawable/rounded_control_camera_24.xml +++ b/app/src/main/res/drawable/rounded_control_camera_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_data_saver_on_24.xml b/app/src/main/res/drawable/rounded_data_saver_on_24.xml index 6569e0f46..56df30801 100644 --- a/app/src/main/res/drawable/rounded_data_saver_on_24.xml +++ b/app/src/main/res/drawable/rounded_data_saver_on_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_data_usage_24.xml b/app/src/main/res/drawable/rounded_data_usage_24.xml index 13121660f..e7e6ad6ea 100644 --- a/app/src/main/res/drawable/rounded_data_usage_24.xml +++ b/app/src/main/res/drawable/rounded_data_usage_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_date_range_24.xml b/app/src/main/res/drawable/rounded_date_range_24.xml index 52f34f064..4c2f17409 100644 --- a/app/src/main/res/drawable/rounded_date_range_24.xml +++ b/app/src/main/res/drawable/rounded_date_range_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_delete_24.xml b/app/src/main/res/drawable/rounded_delete_24.xml index 7a1c4d87d..a80eb2ca2 100644 --- a/app/src/main/res/drawable/rounded_delete_24.xml +++ b/app/src/main/res/drawable/rounded_delete_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_devices_24.xml b/app/src/main/res/drawable/rounded_devices_24.xml index 6c6c4b6c5..6014e542e 100644 --- a/app/src/main/res/drawable/rounded_devices_24.xml +++ b/app/src/main/res/drawable/rounded_devices_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_diagnosis_24.xml b/app/src/main/res/drawable/rounded_diagnosis_24.xml index 54c9ea95d..04dde3023 100644 --- a/app/src/main/res/drawable/rounded_diagnosis_24.xml +++ b/app/src/main/res/drawable/rounded_diagnosis_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_directions_boat_24.xml b/app/src/main/res/drawable/rounded_directions_boat_24.xml index a0057825e..08d24e183 100644 --- a/app/src/main/res/drawable/rounded_directions_boat_24.xml +++ b/app/src/main/res/drawable/rounded_directions_boat_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_directions_bus_24.xml b/app/src/main/res/drawable/rounded_directions_bus_24.xml index e58032b7b..47ee21113 100644 --- a/app/src/main/res/drawable/rounded_directions_bus_24.xml +++ b/app/src/main/res/drawable/rounded_directions_bus_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_dns_24.xml b/app/src/main/res/drawable/rounded_dns_24.xml index 1cce0c460..2463a6aa3 100644 --- a/app/src/main/res/drawable/rounded_dns_24.xml +++ b/app/src/main/res/drawable/rounded_dns_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_do_not_disturb_on_24.xml b/app/src/main/res/drawable/rounded_do_not_disturb_on_24.xml index ddaa850ba..28dbd1320 100644 --- a/app/src/main/res/drawable/rounded_do_not_disturb_on_24.xml +++ b/app/src/main/res/drawable/rounded_do_not_disturb_on_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_do_not_touch_24.xml b/app/src/main/res/drawable/rounded_do_not_touch_24.xml index 76d531dba..a702d5472 100644 --- a/app/src/main/res/drawable/rounded_do_not_touch_24.xml +++ b/app/src/main/res/drawable/rounded_do_not_touch_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_domino_mask_24.xml b/app/src/main/res/drawable/rounded_domino_mask_24.xml index 322ff2fd3..243de64ca 100644 --- a/app/src/main/res/drawable/rounded_domino_mask_24.xml +++ b/app/src/main/res/drawable/rounded_domino_mask_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_download_24.xml b/app/src/main/res/drawable/rounded_download_24.xml index 786601a95..8a2fbca09 100644 --- a/app/src/main/res/drawable/rounded_download_24.xml +++ b/app/src/main/res/drawable/rounded_download_24.xml @@ -1,10 +1,10 @@ + android:viewportHeight="24.0"> + android:pathData="M16.59,9H15V4c0,-0.55 -0.45,-1 -1,-1h-4c-0.55,0 -1,0.45 -1,1v5H7.41c-0.89,0 -1.34,1.08 -0.71,1.71l4.59,4.59c0.39,0.39 1.02,0.39 1.41,0l4.59,-4.59C17.48,10.08 17.03,9 16.59,9zM5,19c0,0.55 0.45,1 1,1h12c0.55,0 1,-0.45 1,-1s-0.45,-1 -1,-1H6C5.45,18 5,18.45 5,19z" /> diff --git a/app/src/main/res/drawable/rounded_downloading_24.xml b/app/src/main/res/drawable/rounded_downloading_24.xml index b6b59a661..6471e0c33 100644 --- a/app/src/main/res/drawable/rounded_downloading_24.xml +++ b/app/src/main/res/drawable/rounded_downloading_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_drag_handle_24.xml b/app/src/main/res/drawable/rounded_drag_handle_24.xml index 8908ec2d3..7a487bb00 100644 --- a/app/src/main/res/drawable/rounded_drag_handle_24.xml +++ b/app/src/main/res/drawable/rounded_drag_handle_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_draw_24.xml b/app/src/main/res/drawable/rounded_draw_24.xml index ac3976f22..eae58adc1 100644 --- a/app/src/main/res/drawable/rounded_draw_24.xml +++ b/app/src/main/res/drawable/rounded_draw_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_edit_24.xml b/app/src/main/res/drawable/rounded_edit_24.xml index f378d2f35..4872e73ad 100644 --- a/app/src/main/res/drawable/rounded_edit_24.xml +++ b/app/src/main/res/drawable/rounded_edit_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_emoji_language_24.xml b/app/src/main/res/drawable/rounded_emoji_language_24.xml index 4f1b76a17..4bca0d931 100644 --- a/app/src/main/res/drawable/rounded_emoji_language_24.xml +++ b/app/src/main/res/drawable/rounded_emoji_language_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_experiment_24.xml b/app/src/main/res/drawable/rounded_experiment_24.xml index 5c9ac15cd..5983bfc7f 100644 --- a/app/src/main/res/drawable/rounded_experiment_24.xml +++ b/app/src/main/res/drawable/rounded_experiment_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_favorite_24.xml b/app/src/main/res/drawable/rounded_favorite_24.xml index a9e9a09bf..fcb9e427d 100644 --- a/app/src/main/res/drawable/rounded_favorite_24.xml +++ b/app/src/main/res/drawable/rounded_favorite_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_fiber_smart_record_24.xml b/app/src/main/res/drawable/rounded_fiber_smart_record_24.xml index cc9866e3e..0b21ce766 100644 --- a/app/src/main/res/drawable/rounded_fiber_smart_record_24.xml +++ b/app/src/main/res/drawable/rounded_fiber_smart_record_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_flash_on_24.xml b/app/src/main/res/drawable/rounded_flash_on_24.xml index 61ba59e5c..5aa0fa8a4 100644 --- a/app/src/main/res/drawable/rounded_flash_on_24.xml +++ b/app/src/main/res/drawable/rounded_flash_on_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_flashlight_on_24.xml b/app/src/main/res/drawable/rounded_flashlight_on_24.xml index e9feb7806..8f71f988c 100644 --- a/app/src/main/res/drawable/rounded_flashlight_on_24.xml +++ b/app/src/main/res/drawable/rounded_flashlight_on_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_flight_24.xml b/app/src/main/res/drawable/rounded_flight_24.xml index a9c739854..71394bb02 100644 --- a/app/src/main/res/drawable/rounded_flight_24.xml +++ b/app/src/main/res/drawable/rounded_flight_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_fork_spoon_24.xml b/app/src/main/res/drawable/rounded_fork_spoon_24.xml index bc43432cd..076bbbf8f 100644 --- a/app/src/main/res/drawable/rounded_fork_spoon_24.xml +++ b/app/src/main/res/drawable/rounded_fork_spoon_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_front_hand_24.xml b/app/src/main/res/drawable/rounded_front_hand_24.xml index 88c9fecbd..bbff6ff70 100644 --- a/app/src/main/res/drawable/rounded_front_hand_24.xml +++ b/app/src/main/res/drawable/rounded_front_hand_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_fullscreen_portrait_24.xml b/app/src/main/res/drawable/rounded_fullscreen_portrait_24.xml index bc4057cdc..5a8f3fb95 100644 --- a/app/src/main/res/drawable/rounded_fullscreen_portrait_24.xml +++ b/app/src/main/res/drawable/rounded_fullscreen_portrait_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_garage_home_24.xml b/app/src/main/res/drawable/rounded_garage_home_24.xml index 82ab52e7f..55dfb347c 100644 --- a/app/src/main/res/drawable/rounded_garage_home_24.xml +++ b/app/src/main/res/drawable/rounded_garage_home_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_globe_24.xml b/app/src/main/res/drawable/rounded_globe_24.xml index d8394b98c..95b3ec5ad 100644 --- a/app/src/main/res/drawable/rounded_globe_24.xml +++ b/app/src/main/res/drawable/rounded_globe_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_grain_24.xml b/app/src/main/res/drawable/rounded_grain_24.xml index 1cb3e4b31..347834433 100644 --- a/app/src/main/res/drawable/rounded_grain_24.xml +++ b/app/src/main/res/drawable/rounded_grain_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_headphones_24.xml b/app/src/main/res/drawable/rounded_headphones_24.xml index 3457c0f09..e853562a7 100644 --- a/app/src/main/res/drawable/rounded_headphones_24.xml +++ b/app/src/main/res/drawable/rounded_headphones_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_headset_mic_24.xml b/app/src/main/res/drawable/rounded_headset_mic_24.xml index 2abdad74c..2ee1cee36 100644 --- a/app/src/main/res/drawable/rounded_headset_mic_24.xml +++ b/app/src/main/res/drawable/rounded_headset_mic_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_heart_smile_24.xml b/app/src/main/res/drawable/rounded_heart_smile_24.xml index 436ff14c4..f17a0c5f0 100644 --- a/app/src/main/res/drawable/rounded_heart_smile_24.xml +++ b/app/src/main/res/drawable/rounded_heart_smile_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_help_24.xml b/app/src/main/res/drawable/rounded_help_24.xml index bedeb12c6..6cec8cbdd 100644 --- a/app/src/main/res/drawable/rounded_help_24.xml +++ b/app/src/main/res/drawable/rounded_help_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_history_24.xml b/app/src/main/res/drawable/rounded_history_24.xml index 948b8d34c..36ae4cb99 100644 --- a/app/src/main/res/drawable/rounded_history_24.xml +++ b/app/src/main/res/drawable/rounded_history_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_home_24.xml b/app/src/main/res/drawable/rounded_home_24.xml index d971995e4..1961096cd 100644 --- a/app/src/main/res/drawable/rounded_home_24.xml +++ b/app/src/main/res/drawable/rounded_home_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_home_health_24.xml b/app/src/main/res/drawable/rounded_home_health_24.xml index 43c5c05a1..69a71faca 100644 --- a/app/src/main/res/drawable/rounded_home_health_24.xml +++ b/app/src/main/res/drawable/rounded_home_health_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_image_24.xml b/app/src/main/res/drawable/rounded_image_24.xml index 5544c3817..e055f6c88 100644 --- a/app/src/main/res/drawable/rounded_image_24.xml +++ b/app/src/main/res/drawable/rounded_image_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_image_search_24.xml b/app/src/main/res/drawable/rounded_image_search_24.xml index 1fc7cba99..bb30d3c6a 100644 --- a/app/src/main/res/drawable/rounded_image_search_24.xml +++ b/app/src/main/res/drawable/rounded_image_search_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_info_24.xml b/app/src/main/res/drawable/rounded_info_24.xml index ccb4a26b0..f5d2b8c9e 100644 --- a/app/src/main/res/drawable/rounded_info_24.xml +++ b/app/src/main/res/drawable/rounded_info_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_interests_24.xml b/app/src/main/res/drawable/rounded_interests_24.xml index bd88d8abe..7580df2c9 100644 --- a/app/src/main/res/drawable/rounded_interests_24.xml +++ b/app/src/main/res/drawable/rounded_interests_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_invert_colors_24.xml b/app/src/main/res/drawable/rounded_invert_colors_24.xml index 4a137ecc1..d5656bc3d 100644 --- a/app/src/main/res/drawable/rounded_invert_colors_24.xml +++ b/app/src/main/res/drawable/rounded_invert_colors_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_keyboard_24.xml b/app/src/main/res/drawable/rounded_keyboard_24.xml index f182d78fc..155b241b9 100644 --- a/app/src/main/res/drawable/rounded_keyboard_24.xml +++ b/app/src/main/res/drawable/rounded_keyboard_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_keyboard_arrow_down_24.xml b/app/src/main/res/drawable/rounded_keyboard_arrow_down_24.xml index 25ee1612b..149abce26 100644 --- a/app/src/main/res/drawable/rounded_keyboard_arrow_down_24.xml +++ b/app/src/main/res/drawable/rounded_keyboard_arrow_down_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_keyboard_arrow_up_24.xml b/app/src/main/res/drawable/rounded_keyboard_arrow_up_24.xml index a5975315e..f662f816f 100644 --- a/app/src/main/res/drawable/rounded_keyboard_arrow_up_24.xml +++ b/app/src/main/res/drawable/rounded_keyboard_arrow_up_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_keyboard_double_arrow_up_24.xml b/app/src/main/res/drawable/rounded_keyboard_double_arrow_up_24.xml index 06396256a..ca58a6898 100644 --- a/app/src/main/res/drawable/rounded_keyboard_double_arrow_up_24.xml +++ b/app/src/main/res/drawable/rounded_keyboard_double_arrow_up_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_keyboard_return_24.xml b/app/src/main/res/drawable/rounded_keyboard_return_24.xml index 7952b9ec3..7376b5da5 100644 --- a/app/src/main/res/drawable/rounded_keyboard_return_24.xml +++ b/app/src/main/res/drawable/rounded_keyboard_return_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_lan_24.xml b/app/src/main/res/drawable/rounded_lan_24.xml index 9845af1a6..8a389972d 100644 --- a/app/src/main/res/drawable/rounded_lan_24.xml +++ b/app/src/main/res/drawable/rounded_lan_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_laptop_mac_24.xml b/app/src/main/res/drawable/rounded_laptop_mac_24.xml index b8c1fd914..404807f36 100644 --- a/app/src/main/res/drawable/rounded_laptop_mac_24.xml +++ b/app/src/main/res/drawable/rounded_laptop_mac_24.xml @@ -1,10 +1,10 @@ - + android:viewportHeight="24"> + diff --git a/app/src/main/res/drawable/rounded_line_weight_24.xml b/app/src/main/res/drawable/rounded_line_weight_24.xml index f3bfcf2d9..cdd4da52d 100644 --- a/app/src/main/res/drawable/rounded_line_weight_24.xml +++ b/app/src/main/res/drawable/rounded_line_weight_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_link_24.xml b/app/src/main/res/drawable/rounded_link_24.xml index ffad4579c..d21bb1f53 100644 --- a/app/src/main/res/drawable/rounded_link_24.xml +++ b/app/src/main/res/drawable/rounded_link_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_local_pizza_24.xml b/app/src/main/res/drawable/rounded_local_pizza_24.xml index 7c555d8a8..0037e5e69 100644 --- a/app/src/main/res/drawable/rounded_local_pizza_24.xml +++ b/app/src/main/res/drawable/rounded_local_pizza_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_location_on_24.xml b/app/src/main/res/drawable/rounded_location_on_24.xml index 411209590..07a938f59 100644 --- a/app/src/main/res/drawable/rounded_location_on_24.xml +++ b/app/src/main/res/drawable/rounded_location_on_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_lock_24.xml b/app/src/main/res/drawable/rounded_lock_24.xml index 427742d4f..074780415 100644 --- a/app/src/main/res/drawable/rounded_lock_24.xml +++ b/app/src/main/res/drawable/rounded_lock_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_lock_clock_24.xml b/app/src/main/res/drawable/rounded_lock_clock_24.xml index b7f9c80b3..17b4acdc8 100644 --- a/app/src/main/res/drawable/rounded_lock_clock_24.xml +++ b/app/src/main/res/drawable/rounded_lock_clock_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_logout_24.xml b/app/src/main/res/drawable/rounded_logout_24.xml index bac4cb1ef..a81c96edb 100644 --- a/app/src/main/res/drawable/rounded_logout_24.xml +++ b/app/src/main/res/drawable/rounded_logout_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_magnify_fullscreen_24.xml b/app/src/main/res/drawable/rounded_magnify_fullscreen_24.xml index 0de249bef..78f3841e3 100644 --- a/app/src/main/res/drawable/rounded_magnify_fullscreen_24.xml +++ b/app/src/main/res/drawable/rounded_magnify_fullscreen_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mail_24.xml b/app/src/main/res/drawable/rounded_mail_24.xml index f0039ab37..7faed755e 100644 --- a/app/src/main/res/drawable/rounded_mail_24.xml +++ b/app/src/main/res/drawable/rounded_mail_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_map_24.xml b/app/src/main/res/drawable/rounded_map_24.xml index 97b61e1b9..18cf631b4 100644 --- a/app/src/main/res/drawable/rounded_map_24.xml +++ b/app/src/main/res/drawable/rounded_map_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_memory_alt_24.xml b/app/src/main/res/drawable/rounded_memory_alt_24.xml index c490af0b2..b6cdd79e6 100644 --- a/app/src/main/res/drawable/rounded_memory_alt_24.xml +++ b/app/src/main/res/drawable/rounded_memory_alt_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_24.xml b/app/src/main/res/drawable/rounded_mobile_24.xml index 8fb439012..3becd4442 100644 --- a/app/src/main/res/drawable/rounded_mobile_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_arrow_down_24.xml b/app/src/main/res/drawable/rounded_mobile_arrow_down_24.xml index 428436b02..9501a7cc6 100644 --- a/app/src/main/res/drawable/rounded_mobile_arrow_down_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_arrow_down_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_charge_24.xml b/app/src/main/res/drawable/rounded_mobile_charge_24.xml index 66b2de51a..0657952c0 100644 --- a/app/src/main/res/drawable/rounded_mobile_charge_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_charge_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_check_24.xml b/app/src/main/res/drawable/rounded_mobile_check_24.xml index a1b8d88b9..39d1b48da 100644 --- a/app/src/main/res/drawable/rounded_mobile_check_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_check_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_code_24.xml b/app/src/main/res/drawable/rounded_mobile_code_24.xml index 4ce840a8a..399358a81 100644 --- a/app/src/main/res/drawable/rounded_mobile_code_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_code_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_hand_24.xml b/app/src/main/res/drawable/rounded_mobile_hand_24.xml index d525d3a4a..2d92c9165 100644 --- a/app/src/main/res/drawable/rounded_mobile_hand_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_hand_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_layout_24.xml b/app/src/main/res/drawable/rounded_mobile_layout_24.xml index 5e4e63c0a..2f5b3371a 100644 --- a/app/src/main/res/drawable/rounded_mobile_layout_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_layout_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_lock_portrait_24.xml b/app/src/main/res/drawable/rounded_mobile_lock_portrait_24.xml index 5cd373d5f..777e7d16d 100644 --- a/app/src/main/res/drawable/rounded_mobile_lock_portrait_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_lock_portrait_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_off_24.xml b/app/src/main/res/drawable/rounded_mobile_off_24.xml index 000f365b8..fe78a9bb5 100644 --- a/app/src/main/res/drawable/rounded_mobile_off_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_off_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_rotate_24.xml b/app/src/main/res/drawable/rounded_mobile_rotate_24.xml index f677133e6..bd378ec40 100644 --- a/app/src/main/res/drawable/rounded_mobile_rotate_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_rotate_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_screensaver_24.xml b/app/src/main/res/drawable/rounded_mobile_screensaver_24.xml index 4344fcb58..e388ffb0c 100644 --- a/app/src/main/res/drawable/rounded_mobile_screensaver_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_screensaver_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_sound_24.xml b/app/src/main/res/drawable/rounded_mobile_sound_24.xml index c4267e263..67cdefbb0 100644 --- a/app/src/main/res/drawable/rounded_mobile_sound_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_sound_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_text_24.xml b/app/src/main/res/drawable/rounded_mobile_text_24.xml index c922df93f..e5e77d459 100644 --- a/app/src/main/res/drawable/rounded_mobile_text_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_text_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_text_2_24.xml b/app/src/main/res/drawable/rounded_mobile_text_2_24.xml index 918e60991..1b5fa9235 100644 --- a/app/src/main/res/drawable/rounded_mobile_text_2_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_text_2_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_unlock_24.xml b/app/src/main/res/drawable/rounded_mobile_unlock_24.xml index 6cb81fdcc..ef9de0ac4 100644 --- a/app/src/main/res/drawable/rounded_mobile_unlock_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_unlock_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mobile_vibrate_24.xml b/app/src/main/res/drawable/rounded_mobile_vibrate_24.xml index dcbcaf79b..e9922793d 100644 --- a/app/src/main/res/drawable/rounded_mobile_vibrate_24.xml +++ b/app/src/main/res/drawable/rounded_mobile_vibrate_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mode_cool_24.xml b/app/src/main/res/drawable/rounded_mode_cool_24.xml index 3f1c6e4be..cfb287bee 100644 --- a/app/src/main/res/drawable/rounded_mode_cool_24.xml +++ b/app/src/main/res/drawable/rounded_mode_cool_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_mode_cool_off_24.xml b/app/src/main/res/drawable/rounded_mode_cool_off_24.xml index 19aca4dec..3f1fd1ec5 100644 --- a/app/src/main/res/drawable/rounded_mode_cool_off_24.xml +++ b/app/src/main/res/drawable/rounded_mode_cool_off_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_more_vert_24.xml b/app/src/main/res/drawable/rounded_more_vert_24.xml index 2913c59a3..2cefeebbf 100644 --- a/app/src/main/res/drawable/rounded_more_vert_24.xml +++ b/app/src/main/res/drawable/rounded_more_vert_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_music_note_24.xml b/app/src/main/res/drawable/rounded_music_note_24.xml index 91cfd4e4f..c01099eee 100644 --- a/app/src/main/res/drawable/rounded_music_note_24.xml +++ b/app/src/main/res/drawable/rounded_music_note_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_music_video_24.xml b/app/src/main/res/drawable/rounded_music_video_24.xml index 0a0f5647f..b8d83dfa3 100644 --- a/app/src/main/res/drawable/rounded_music_video_24.xml +++ b/app/src/main/res/drawable/rounded_music_video_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_my_location_24.xml b/app/src/main/res/drawable/rounded_my_location_24.xml index d4be0b670..dbb502c5a 100644 --- a/app/src/main/res/drawable/rounded_my_location_24.xml +++ b/app/src/main/res/drawable/rounded_my_location_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_navigation_24.xml b/app/src/main/res/drawable/rounded_navigation_24.xml index 676c711b8..87e932eea 100644 --- a/app/src/main/res/drawable/rounded_navigation_24.xml +++ b/app/src/main/res/drawable/rounded_navigation_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_nest_clock_farsight_analog_24.xml b/app/src/main/res/drawable/rounded_nest_clock_farsight_analog_24.xml index e0e417874..10446f3ea 100644 --- a/app/src/main/res/drawable/rounded_nest_clock_farsight_analog_24.xml +++ b/app/src/main/res/drawable/rounded_nest_clock_farsight_analog_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_nest_farsight_cool_24.xml b/app/src/main/res/drawable/rounded_nest_farsight_cool_24.xml index f401acb68..b1b0f2930 100644 --- a/app/src/main/res/drawable/rounded_nest_farsight_cool_24.xml +++ b/app/src/main/res/drawable/rounded_nest_farsight_cool_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_nfc_24.xml b/app/src/main/res/drawable/rounded_nfc_24.xml index 289682517..fe2954dda 100644 --- a/app/src/main/res/drawable/rounded_nfc_24.xml +++ b/app/src/main/res/drawable/rounded_nfc_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_nightlight_24.xml b/app/src/main/res/drawable/rounded_nightlight_24.xml index 95c1d5f17..ab238f090 100644 --- a/app/src/main/res/drawable/rounded_nightlight_24.xml +++ b/app/src/main/res/drawable/rounded_nightlight_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_notification_settings_24.xml b/app/src/main/res/drawable/rounded_notification_settings_24.xml index 391761801..3e7aa19fe 100644 --- a/app/src/main/res/drawable/rounded_notification_settings_24.xml +++ b/app/src/main/res/drawable/rounded_notification_settings_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_notification_sound_24.xml b/app/src/main/res/drawable/rounded_notification_sound_24.xml index ee5313e3d..5f7f770fa 100644 --- a/app/src/main/res/drawable/rounded_notification_sound_24.xml +++ b/app/src/main/res/drawable/rounded_notification_sound_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_notifications_off_24.xml b/app/src/main/res/drawable/rounded_notifications_off_24.xml index ed435880d..8269843e6 100644 --- a/app/src/main/res/drawable/rounded_notifications_off_24.xml +++ b/app/src/main/res/drawable/rounded_notifications_off_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_notifications_unread_24.xml b/app/src/main/res/drawable/rounded_notifications_unread_24.xml index e7a346f57..8879c49f4 100644 --- a/app/src/main/res/drawable/rounded_notifications_unread_24.xml +++ b/app/src/main/res/drawable/rounded_notifications_unread_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_numbers_24.xml b/app/src/main/res/drawable/rounded_numbers_24.xml index a819c8683..893afa3eb 100644 --- a/app/src/main/res/drawable/rounded_numbers_24.xml +++ b/app/src/main/res/drawable/rounded_numbers_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_open_in_browser_24.xml b/app/src/main/res/drawable/rounded_open_in_browser_24.xml index 7258963b8..2f90075d8 100644 --- a/app/src/main/res/drawable/rounded_open_in_browser_24.xml +++ b/app/src/main/res/drawable/rounded_open_in_browser_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_open_in_new_24.xml b/app/src/main/res/drawable/rounded_open_in_new_24.xml index c296f97ac..de529b529 100644 --- a/app/src/main/res/drawable/rounded_open_in_new_24.xml +++ b/app/src/main/res/drawable/rounded_open_in_new_24.xml @@ -13,8 +13,16 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_palette_24.xml b/app/src/main/res/drawable/rounded_palette_24.xml index afe0f1329..df383db52 100644 --- a/app/src/main/res/drawable/rounded_palette_24.xml +++ b/app/src/main/res/drawable/rounded_palette_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_pause_24.xml b/app/src/main/res/drawable/rounded_pause_24.xml index 76350ba64..1df9ed816 100644 --- a/app/src/main/res/drawable/rounded_pause_24.xml +++ b/app/src/main/res/drawable/rounded_pause_24.xml @@ -1,3 +1,10 @@ - - + + diff --git a/app/src/main/res/drawable/rounded_play_arrow_24.xml b/app/src/main/res/drawable/rounded_play_arrow_24.xml index 7aa61e7fc..139f135cb 100644 --- a/app/src/main/res/drawable/rounded_play_arrow_24.xml +++ b/app/src/main/res/drawable/rounded_play_arrow_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_play_pause_24.xml b/app/src/main/res/drawable/rounded_play_pause_24.xml index d37997c65..b129b5ca9 100644 --- a/app/src/main/res/drawable/rounded_play_pause_24.xml +++ b/app/src/main/res/drawable/rounded_play_pause_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_position_bottom_left_24.xml b/app/src/main/res/drawable/rounded_position_bottom_left_24.xml index a78a00cc1..cb679723e 100644 --- a/app/src/main/res/drawable/rounded_position_bottom_left_24.xml +++ b/app/src/main/res/drawable/rounded_position_bottom_left_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_power_settings_new_24.xml b/app/src/main/res/drawable/rounded_power_settings_new_24.xml index 1441b411e..cd732c601 100644 --- a/app/src/main/res/drawable/rounded_power_settings_new_24.xml +++ b/app/src/main/res/drawable/rounded_power_settings_new_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_refresh_24.xml b/app/src/main/res/drawable/rounded_refresh_24.xml index c56a99258..b8d54af50 100644 --- a/app/src/main/res/drawable/rounded_refresh_24.xml +++ b/app/src/main/res/drawable/rounded_refresh_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_release_alert_24.xml b/app/src/main/res/drawable/rounded_release_alert_24.xml index 8115c4e1e..51b078d76 100644 --- a/app/src/main/res/drawable/rounded_release_alert_24.xml +++ b/app/src/main/res/drawable/rounded_release_alert_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_remove_24.xml b/app/src/main/res/drawable/rounded_remove_24.xml index d0b84241f..8d9550cc9 100644 --- a/app/src/main/res/drawable/rounded_remove_24.xml +++ b/app/src/main/res/drawable/rounded_remove_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_rocket_launch_24.xml b/app/src/main/res/drawable/rounded_rocket_launch_24.xml index 42d9598bc..a2bb9cd0a 100644 --- a/app/src/main/res/drawable/rounded_rocket_launch_24.xml +++ b/app/src/main/res/drawable/rounded_rocket_launch_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_rotate_left_24.xml b/app/src/main/res/drawable/rounded_rotate_left_24.xml index f06f310fe..8c1af8dea 100644 --- a/app/src/main/res/drawable/rounded_rotate_left_24.xml +++ b/app/src/main/res/drawable/rounded_rotate_left_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_rotate_right_24.xml b/app/src/main/res/drawable/rounded_rotate_right_24.xml index 050879a7a..8f39ca84b 100644 --- a/app/src/main/res/drawable/rounded_rotate_right_24.xml +++ b/app/src/main/res/drawable/rounded_rotate_right_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_rounded_corner_24.xml b/app/src/main/res/drawable/rounded_rounded_corner_24.xml index d6e98beed..1217fc430 100644 --- a/app/src/main/res/drawable/rounded_rounded_corner_24.xml +++ b/app/src/main/res/drawable/rounded_rounded_corner_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_save_24.xml b/app/src/main/res/drawable/rounded_save_24.xml index fb4a10de4..d65f47099 100644 --- a/app/src/main/res/drawable/rounded_save_24.xml +++ b/app/src/main/res/drawable/rounded_save_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_school_24.xml b/app/src/main/res/drawable/rounded_school_24.xml index fdf7a026f..ca8aaf68d 100644 --- a/app/src/main/res/drawable/rounded_school_24.xml +++ b/app/src/main/res/drawable/rounded_school_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_screenshot_region_24.xml b/app/src/main/res/drawable/rounded_screenshot_region_24.xml index 276e349ba..70b8ef9c6 100644 --- a/app/src/main/res/drawable/rounded_screenshot_region_24.xml +++ b/app/src/main/res/drawable/rounded_screenshot_region_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_search_24.xml b/app/src/main/res/drawable/rounded_search_24.xml index 3371c9796..6511fb199 100644 --- a/app/src/main/res/drawable/rounded_search_24.xml +++ b/app/src/main/res/drawable/rounded_search_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_search_check_2_24.xml b/app/src/main/res/drawable/rounded_search_check_2_24.xml index a185dd830..d1219d134 100644 --- a/app/src/main/res/drawable/rounded_search_check_2_24.xml +++ b/app/src/main/res/drawable/rounded_search_check_2_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_security_24.xml b/app/src/main/res/drawable/rounded_security_24.xml index 4c5c7e69c..26faeb3dd 100644 --- a/app/src/main/res/drawable/rounded_security_24.xml +++ b/app/src/main/res/drawable/rounded_security_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_send_24.xml b/app/src/main/res/drawable/rounded_send_24.xml index 3910eb808..5773a2c9a 100644 --- a/app/src/main/res/drawable/rounded_send_24.xml +++ b/app/src/main/res/drawable/rounded_send_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_settings_24.xml b/app/src/main/res/drawable/rounded_settings_24.xml index 05d1dffdb..cc6d16890 100644 --- a/app/src/main/res/drawable/rounded_settings_24.xml +++ b/app/src/main/res/drawable/rounded_settings_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_settings_accessibility_24.xml b/app/src/main/res/drawable/rounded_settings_accessibility_24.xml index 9840dfcea..4f932a3a8 100644 --- a/app/src/main/res/drawable/rounded_settings_accessibility_24.xml +++ b/app/src/main/res/drawable/rounded_settings_accessibility_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_settings_heart_24.xml b/app/src/main/res/drawable/rounded_settings_heart_24.xml index 4422c441a..352cc9f3f 100644 --- a/app/src/main/res/drawable/rounded_settings_heart_24.xml +++ b/app/src/main/res/drawable/rounded_settings_heart_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_settings_motion_mode_24.xml b/app/src/main/res/drawable/rounded_settings_motion_mode_24.xml index 65290a7bb..279d8935d 100644 --- a/app/src/main/res/drawable/rounded_settings_motion_mode_24.xml +++ b/app/src/main/res/drawable/rounded_settings_motion_mode_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_share_24.xml b/app/src/main/res/drawable/rounded_share_24.xml index 5e5d9c9b0..13dcf1357 100644 --- a/app/src/main/res/drawable/rounded_share_24.xml +++ b/app/src/main/res/drawable/rounded_share_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_shield_24.xml b/app/src/main/res/drawable/rounded_shield_24.xml index d05ea62c3..322a1c789 100644 --- a/app/src/main/res/drawable/rounded_shield_24.xml +++ b/app/src/main/res/drawable/rounded_shield_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_shield_lock_24.xml b/app/src/main/res/drawable/rounded_shield_lock_24.xml index 9b0f17fba..1189b1802 100644 --- a/app/src/main/res/drawable/rounded_shield_lock_24.xml +++ b/app/src/main/res/drawable/rounded_shield_lock_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_shopping_cart_24.xml b/app/src/main/res/drawable/rounded_shopping_cart_24.xml index fffc5b47f..52c0f656f 100644 --- a/app/src/main/res/drawable/rounded_shopping_cart_24.xml +++ b/app/src/main/res/drawable/rounded_shopping_cart_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_shutter_speed_24.xml b/app/src/main/res/drawable/rounded_shutter_speed_24.xml index 6ab968471..1343f2eb9 100644 --- a/app/src/main/res/drawable/rounded_shutter_speed_24.xml +++ b/app/src/main/res/drawable/rounded_shutter_speed_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_signal_cellular_alt_24.xml b/app/src/main/res/drawable/rounded_signal_cellular_alt_24.xml index f10f8f883..588e09283 100644 --- a/app/src/main/res/drawable/rounded_signal_cellular_alt_24.xml +++ b/app/src/main/res/drawable/rounded_signal_cellular_alt_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_skip_next_24.xml b/app/src/main/res/drawable/rounded_skip_next_24.xml index 3cf471bb7..da30c3687 100644 --- a/app/src/main/res/drawable/rounded_skip_next_24.xml +++ b/app/src/main/res/drawable/rounded_skip_next_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_skip_previous_24.xml b/app/src/main/res/drawable/rounded_skip_previous_24.xml index 54f05535d..b69cfb3b7 100644 --- a/app/src/main/res/drawable/rounded_skip_previous_24.xml +++ b/app/src/main/res/drawable/rounded_skip_previous_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_slow_motion_video_24.xml b/app/src/main/res/drawable/rounded_slow_motion_video_24.xml index 026f30182..275457a39 100644 --- a/app/src/main/res/drawable/rounded_slow_motion_video_24.xml +++ b/app/src/main/res/drawable/rounded_slow_motion_video_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_snooze_24.xml b/app/src/main/res/drawable/rounded_snooze_24.xml index c4a2eb596..2b3692f19 100644 --- a/app/src/main/res/drawable/rounded_snooze_24.xml +++ b/app/src/main/res/drawable/rounded_snooze_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_snowflake_24.xml b/app/src/main/res/drawable/rounded_snowflake_24.xml index 765e8054a..86f11cc94 100644 --- a/app/src/main/res/drawable/rounded_snowflake_24.xml +++ b/app/src/main/res/drawable/rounded_snowflake_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_stop_circle_24.xml b/app/src/main/res/drawable/rounded_stop_circle_24.xml index e3f1992f0..9c4b3ef1d 100644 --- a/app/src/main/res/drawable/rounded_stop_circle_24.xml +++ b/app/src/main/res/drawable/rounded_stop_circle_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_storefront_24.xml b/app/src/main/res/drawable/rounded_storefront_24.xml index 545e73bde..15fe6779e 100644 --- a/app/src/main/res/drawable/rounded_storefront_24.xml +++ b/app/src/main/res/drawable/rounded_storefront_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_switch_access_3_24.xml b/app/src/main/res/drawable/rounded_switch_access_3_24.xml index b3b97618b..cff91e0de 100644 --- a/app/src/main/res/drawable/rounded_switch_access_3_24.xml +++ b/app/src/main/res/drawable/rounded_switch_access_3_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_sync_24.xml b/app/src/main/res/drawable/rounded_sync_24.xml index 5a55ffc8d..ece40c49c 100644 --- a/app/src/main/res/drawable/rounded_sync_24.xml +++ b/app/src/main/res/drawable/rounded_sync_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_target_24.xml b/app/src/main/res/drawable/rounded_target_24.xml index 046cd58c0..285c5601a 100644 --- a/app/src/main/res/drawable/rounded_target_24.xml +++ b/app/src/main/res/drawable/rounded_target_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_task_alt_24.xml b/app/src/main/res/drawable/rounded_task_alt_24.xml index fa0ffe7d6..cd9cfaf16 100644 --- a/app/src/main/res/drawable/rounded_task_alt_24.xml +++ b/app/src/main/res/drawable/rounded_task_alt_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_tile_small_24.xml b/app/src/main/res/drawable/rounded_tile_small_24.xml index 65f8a323c..99001c3bb 100644 --- a/app/src/main/res/drawable/rounded_tile_small_24.xml +++ b/app/src/main/res/drawable/rounded_tile_small_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_timelapse_24.xml b/app/src/main/res/drawable/rounded_timelapse_24.xml index b965e5921..ff0a1fc36 100644 --- a/app/src/main/res/drawable/rounded_timelapse_24.xml +++ b/app/src/main/res/drawable/rounded_timelapse_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_timer_24.xml b/app/src/main/res/drawable/rounded_timer_24.xml index 7c34db24f..828f9f2e5 100644 --- a/app/src/main/res/drawable/rounded_timer_24.xml +++ b/app/src/main/res/drawable/rounded_timer_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_timer_off_24.xml b/app/src/main/res/drawable/rounded_timer_off_24.xml index 2da2c83c6..cc5a3d03a 100644 --- a/app/src/main/res/drawable/rounded_timer_off_24.xml +++ b/app/src/main/res/drawable/rounded_timer_off_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_toggle_on_24.xml b/app/src/main/res/drawable/rounded_toggle_on_24.xml index 13e6dd3bb..b497505c2 100644 --- a/app/src/main/res/drawable/rounded_toggle_on_24.xml +++ b/app/src/main/res/drawable/rounded_toggle_on_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_top_panel_close_24.xml b/app/src/main/res/drawable/rounded_top_panel_close_24.xml index 3116aa89e..e207b532b 100644 --- a/app/src/main/res/drawable/rounded_top_panel_close_24.xml +++ b/app/src/main/res/drawable/rounded_top_panel_close_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_touch_app_24.xml b/app/src/main/res/drawable/rounded_touch_app_24.xml index 315730328..e8100e111 100644 --- a/app/src/main/res/drawable/rounded_touch_app_24.xml +++ b/app/src/main/res/drawable/rounded_touch_app_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_train_24.xml b/app/src/main/res/drawable/rounded_train_24.xml index 442a455f4..41286315e 100644 --- a/app/src/main/res/drawable/rounded_train_24.xml +++ b/app/src/main/res/drawable/rounded_train_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_upcoming_24.xml b/app/src/main/res/drawable/rounded_upcoming_24.xml index 1f53f7a14..c1d18117d 100644 --- a/app/src/main/res/drawable/rounded_upcoming_24.xml +++ b/app/src/main/res/drawable/rounded_upcoming_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_usb_24.xml b/app/src/main/res/drawable/rounded_usb_24.xml index a83ce738f..a706c1ce8 100644 --- a/app/src/main/res/drawable/rounded_usb_24.xml +++ b/app/src/main/res/drawable/rounded_usb_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_volume_down_24.xml b/app/src/main/res/drawable/rounded_volume_down_24.xml index 0bdf04d02..71e6bc24b 100644 --- a/app/src/main/res/drawable/rounded_volume_down_24.xml +++ b/app/src/main/res/drawable/rounded_volume_down_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_volume_off_24.xml b/app/src/main/res/drawable/rounded_volume_off_24.xml index ced2891f1..cdad5a2ea 100644 --- a/app/src/main/res/drawable/rounded_volume_off_24.xml +++ b/app/src/main/res/drawable/rounded_volume_off_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_volume_up_24.xml b/app/src/main/res/drawable/rounded_volume_up_24.xml index d9a59b447..f81ddaf4f 100644 --- a/app/src/main/res/drawable/rounded_volume_up_24.xml +++ b/app/src/main/res/drawable/rounded_volume_up_24.xml @@ -1,5 +1,13 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_vpn_key_24.xml b/app/src/main/res/drawable/rounded_vpn_key_24.xml index b09c58149..d845db144 100644 --- a/app/src/main/res/drawable/rounded_vpn_key_24.xml +++ b/app/src/main/res/drawable/rounded_vpn_key_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_wallpaper_24.xml b/app/src/main/res/drawable/rounded_wallpaper_24.xml index 0da0de483..9ae683b29 100644 --- a/app/src/main/res/drawable/rounded_wallpaper_24.xml +++ b/app/src/main/res/drawable/rounded_wallpaper_24.xml @@ -13,8 +13,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_watch_24.xml b/app/src/main/res/drawable/rounded_watch_24.xml index 305c0ba6a..069531d38 100644 --- a/app/src/main/res/drawable/rounded_watch_24.xml +++ b/app/src/main/res/drawable/rounded_watch_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_web_24.xml b/app/src/main/res/drawable/rounded_web_24.xml index 22faee8b0..fa59d3687 100644 --- a/app/src/main/res/drawable/rounded_web_24.xml +++ b/app/src/main/res/drawable/rounded_web_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_web_traffic_24.xml b/app/src/main/res/drawable/rounded_web_traffic_24.xml index bd74b6ac8..b399bb6ca 100644 --- a/app/src/main/res/drawable/rounded_web_traffic_24.xml +++ b/app/src/main/res/drawable/rounded_web_traffic_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_widgets_24.xml b/app/src/main/res/drawable/rounded_widgets_24.xml index a5bae0978..22da1b22c 100644 --- a/app/src/main/res/drawable/rounded_widgets_24.xml +++ b/app/src/main/res/drawable/rounded_widgets_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_wifi_calling_bar_3_24.xml b/app/src/main/res/drawable/rounded_wifi_calling_bar_3_24.xml index 24367800e..0b241b823 100644 --- a/app/src/main/res/drawable/rounded_wifi_calling_bar_3_24.xml +++ b/app/src/main/res/drawable/rounded_wifi_calling_bar_3_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_wifi_tethering_24.xml b/app/src/main/res/drawable/rounded_wifi_tethering_24.xml index e180c3c36..e702a77d7 100644 --- a/app/src/main/res/drawable/rounded_wifi_tethering_24.xml +++ b/app/src/main/res/drawable/rounded_wifi_tethering_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_window_open_24.xml b/app/src/main/res/drawable/rounded_window_open_24.xml index 08c6cc65d..d2b0e82f9 100644 --- a/app/src/main/res/drawable/rounded_window_open_24.xml +++ b/app/src/main/res/drawable/rounded_window_open_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/rounded_work_24.xml b/app/src/main/res/drawable/rounded_work_24.xml index 66c3b8a69..952e3cb5f 100644 --- a/app/src/main/res/drawable/rounded_work_24.xml +++ b/app/src/main/res/drawable/rounded_work_24.xml @@ -1,5 +1,12 @@ - - - - + + + + diff --git a/app/src/main/res/drawable/router_24px.xml b/app/src/main/res/drawable/router_24px.xml index 32b27bb18..acf21895e 100644 --- a/app/src/main/res/drawable/router_24px.xml +++ b/app/src/main/res/drawable/router_24px.xml @@ -1,10 +1,10 @@ - + android:viewportHeight="960"> + diff --git a/app/src/main/res/drawable/router_24px_filled.xml b/app/src/main/res/drawable/router_24px_filled.xml index 9c625a572..33def0e31 100644 --- a/app/src/main/res/drawable/router_24px_filled.xml +++ b/app/src/main/res/drawable/router_24px_filled.xml @@ -1,10 +1,10 @@ - + android:viewportHeight="960"> + diff --git a/app/src/main/res/drawable/router_off_24px.xml b/app/src/main/res/drawable/router_off_24px.xml index cbb5ac25a..d87d15b89 100644 --- a/app/src/main/res/drawable/router_off_24px.xml +++ b/app/src/main/res/drawable/router_off_24px.xml @@ -1,10 +1,10 @@ - + android:viewportHeight="960"> + diff --git a/app/src/main/res/drawable/sameerasw_com.xml b/app/src/main/res/drawable/sameerasw_com.xml index 2fb41372f..68f758acd 100644 --- a/app/src/main/res/drawable/sameerasw_com.xml +++ b/app/src/main/res/drawable/sameerasw_com.xml @@ -1,18 +1,18 @@ - - - + android:viewportHeight="12"> + + + diff --git a/app/src/main/res/drawable/samsung.xml b/app/src/main/res/drawable/samsung.xml index 7fc874f30..d585e8f89 100644 --- a/app/src/main/res/drawable/samsung.xml +++ b/app/src/main/res/drawable/samsung.xml @@ -3,7 +3,7 @@ android:height="800dp" android:viewportWidth="200.78" android:viewportHeight="200.78"> - + diff --git a/app/src/main/res/drawable/sony.xml b/app/src/main/res/drawable/sony.xml index cded39aba..5171225ed 100644 --- a/app/src/main/res/drawable/sony.xml +++ b/app/src/main/res/drawable/sony.xml @@ -3,8 +3,8 @@ android:height="225.3dp" android:viewportWidth="1280" android:viewportHeight="225.3"> - + diff --git a/app/src/main/res/drawable/twotone_dns_24.xml b/app/src/main/res/drawable/twotone_dns_24.xml index 034dd7b2e..9b78abf2a 100644 --- a/app/src/main/res/drawable/twotone_dns_24.xml +++ b/app/src/main/res/drawable/twotone_dns_24.xml @@ -1,7 +1,18 @@ - - - - - - + + + + + + diff --git a/app/src/main/res/drawable/vivo.xml b/app/src/main/res/drawable/vivo.xml index 8d6174fe6..3dc9aa270 100644 --- a/app/src/main/res/drawable/vivo.xml +++ b/app/src/main/res/drawable/vivo.xml @@ -3,20 +3,20 @@ android:height="292dp" android:viewportWidth="1115.6" android:viewportHeight="292"> - - + + diff --git a/app/src/main/res/drawable/xiaomi.xml b/app/src/main/res/drawable/xiaomi.xml index 95cd9fc44..585b48728 100644 --- a/app/src/main/res/drawable/xiaomi.xml +++ b/app/src/main/res/drawable/xiaomi.xml @@ -3,7 +3,7 @@ android:height="800dp" android:viewportWidth="24" android:viewportHeight="24"> - + diff --git a/app/src/main/res/font/google_sans_flex_round.xml b/app/src/main/res/font/google_sans_flex_round.xml index eb54ae546..d73dee5f4 100644 --- a/app/src/main/res/font/google_sans_flex_round.xml +++ b/app/src/main/res/font/google_sans_flex_round.xml @@ -4,19 +4,19 @@ + app:fontVariationSettings="'ROND' 100" /> + app:fontVariationSettings="'ROND' 100" /> + app:fontVariationSettings="'ROND' 100" /> diff --git a/app/src/main/res/layout/screen_off_widget.xml b/app/src/main/res/layout/screen_off_widget.xml index 7742af370..f70f5d69a 100644 --- a/app/src/main/res/layout/screen_off_widget.xml +++ b/app/src/main/res/layout/screen_off_widget.xml @@ -3,6 +3,5 @@ android:id="@+id/widget_container" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@android:color/transparent"> - + android:background="@android:color/transparent"> diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index 1084c2408..f30783b21 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,6 +1,6 @@ - - - + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index 1084c2408..f30783b21 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,6 +1,6 @@ - - - + + + \ No newline at end of file diff --git a/app/src/main/res/values-ach-rUG/strings.xml b/app/src/main/res/values-ach-rUG/strings.xml index 6680db550..7b0939bf6 100644 --- a/app/src/main/res/values-ach-rUG/strings.xml +++ b/app/src/main/res/values-ach-rUG/strings.xml @@ -101,6 +101,8 @@ Mukene Neko lameny kare weny Kadi bed ni gin ma ki nyutu tye ka tic + Pocket detection + Turn off flashlight when phone is in your pocket Kit ma ki keto kwede Nyut ngec @@ -459,6 +461,16 @@ Gengo jami ma pe kitiyo kwede kare ki kare Lanyut me pii Med ngec me EXIF ​​ki lanyut i kom cal + Wallpaper + Daily curated and live wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos kare weny ki nyutu Nyut cawa ki ngec nongo tye ka tic Calendar Sync @@ -579,6 +591,8 @@ Lok ma mako yeng yeng ka ki dii bute ma ki dwoko cen Lok pa mac ma ki lwongo ni Flashlight Lok lameny ki bute me dwan + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Yab mac me dyewor ma tiyo Gin ma pire tek pi mac me dyewor Yab app lock @@ -934,6 +948,13 @@ cwiny ngec + + pocket + proximity + sensor + torch + auto + bedo neno layub @@ -1533,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked diff --git a/app/src/main/res/values-af-rZA/strings.xml b/app/src/main/res/values-af-rZA/strings.xml index f6aedda5e..38c751c93 100644 --- a/app/src/main/res/values-af-rZA/strings.xml +++ b/app/src/main/res/values-af-rZA/strings.xml @@ -101,6 +101,8 @@ Ander Skakel altyd die flitslig af Selfs terwyl vertoning aan is + Pocket detection + Turn off flashlight when phone is in your pocket Instellings Wys kennisgewing @@ -459,6 +461,16 @@ Deaktiveer toepassings wat selde gebruik word Watermerk Voeg EXIF-data en logo\'s by foto\'s + Wallpaper + Daily curated and live wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Altyd op Vertoon Wys tyd en inligting terwyl skerm af is Kalendersinkronisering @@ -579,6 +591,8 @@ Vibrasie-terugvoer wanneer hergemerkte knoppie gedruk word Flitslig wissel Wissel flitslig met volumeknoppies + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Aktiveer dinamiese naglig Hoofskakelaar vir dinamiese naglig Aktiveer toepassingslot @@ -934,6 +948,13 @@ pols kennisgewing + + pocket + proximity + sensor + torch + auto + wakker ontwikkelaar @@ -1533,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked diff --git a/app/src/main/res/values-ar-rSA/strings.xml b/app/src/main/res/values-ar-rSA/strings.xml index ee2f3938c..33b70faea 100644 --- a/app/src/main/res/values-ar-rSA/strings.xml +++ b/app/src/main/res/values-ar-rSA/strings.xml @@ -101,6 +101,8 @@ آخر أطفئ المصباح دائمًا حتى أثناء تشغيل العرض + Pocket detection + Turn off flashlight when phone is in your pocket إعدادات إظهار الإشعارات @@ -459,6 +461,16 @@ تعطيل التطبيقات النادرة الاستخدام العلامة المائية إضافة بيانات وشعارات EXIF ​​إلى الصور + Wallpaper + Daily curated and live wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos دائما على الشاشة عرض الوقت والمعلومات أثناء إيقاف تشغيل الشاشة مزامنة التقويم @@ -579,6 +591,8 @@ ردود فعل الاهتزاز عند الضغط على زر إعادة التعيين تبديل المصباح تبديل المصباح باستخدام أزرار الصوت + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket تمكين ضوء الليل الديناميكي مفتاح رئيسي للضوء الليلي الديناميكي تمكين قفل التطبيق @@ -934,6 +948,13 @@ نبض إشعار + + pocket + proximity + sensor + torch + auto + مستيقظ مطور @@ -1533,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked diff --git a/app/src/main/res/values-ca-rES/strings.xml b/app/src/main/res/values-ca-rES/strings.xml index 36ec3199e..60da0c3f4 100644 --- a/app/src/main/res/values-ca-rES/strings.xml +++ b/app/src/main/res/values-ca-rES/strings.xml @@ -101,6 +101,8 @@ Altres Apagueu sempre la llanterna Fins i tot mentre la pantalla està activada + Pocket detection + Turn off flashlight when phone is in your pocket Configuració Mostra la notificació @@ -459,6 +461,16 @@ Desactiva les aplicacions que s\'utilitzen poques vegades Filigrana Afegeix dades EXIF ​​i logotips a les fotos + Wallpaper + Daily curated and live wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Sempre a la pantalla Mostra l\'hora i la informació amb la pantalla apagada Sincronització del calendari @@ -579,6 +591,8 @@ Comentari de vibració quan es prem el botó de reasignació Canvi de llanterna Commuta la llanterna amb els botons de volum + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Activa la llum nocturna dinàmica Interruptor principal per a llum nocturna dinàmica Activa el bloqueig de l\'aplicació @@ -934,6 +948,13 @@ pols notificació + + pocket + proximity + sensor + torch + auto + despert desenvolupador @@ -1533,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml index a940d81da..95a6c6217 100644 --- a/app/src/main/res/values-cs-rCZ/strings.xml +++ b/app/src/main/res/values-cs-rCZ/strings.xml @@ -101,6 +101,8 @@ Ostatní Vždy vypněte baterku I když je displej zapnutý + Pocket detection + Turn off flashlight when phone is in your pocket Nastavení Zobrazit oznámení @@ -459,6 +461,16 @@ Zakázat zřídka používané aplikace Vodoznak Přidejte k fotografiím data a loga EXIF + Wallpaper + Daily curated and live wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Vždy na displeji Zobrazovat čas a informace při vypnuté obrazovce Synchronizace kalendáře @@ -579,6 +591,8 @@ Vibrační zpětná vazba při stisknutí přemapovaného tlačítka Přepínání svítilny Přepínání svítilny pomocí tlačítek hlasitosti + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Povolit dynamické noční osvětlení Hlavní vypínač pro dynamické noční osvětlení Povolit zámek aplikace @@ -934,6 +948,13 @@ puls oznámení + + pocket + proximity + sensor + torch + auto + probudit vývojář @@ -1533,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked diff --git a/app/src/main/res/values-da-rDK/strings.xml b/app/src/main/res/values-da-rDK/strings.xml index c18f12fff..548893073 100644 --- a/app/src/main/res/values-da-rDK/strings.xml +++ b/app/src/main/res/values-da-rDK/strings.xml @@ -101,6 +101,8 @@ Andre Sluk altid lommelygten Også mens displayet er tændt + Pocket detection + Turn off flashlight when phone is in your pocket Indstillinger Vis meddelelse @@ -459,6 +461,16 @@ Deaktiver sjældent brugte apps Vandmærke Tilføj EXIF-data og logoer til fotos + Wallpaper + Daily curated and live wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Altid på display Vis tid og info, mens skærmen er slukket Kalendersynkronisering @@ -579,6 +591,8 @@ Vibrationsfeedback, når der trykkes på en ny knap Lommelygteskift Skift lommelygte med lydstyrkeknapper + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Aktiver Dynamic Night Light Hovedafbryder til dynamisk natlys Aktiver applås @@ -934,6 +948,13 @@ puls notifikation + + pocket + proximity + sensor + torch + auto + vågen udvikler @@ -1533,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index 45f03be96..6150d30e0 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -101,6 +101,8 @@ Weitere Die Taschenlampe immer ausschalten Selbst wenn das Display an ist + Pocket detection + Turn off flashlight when phone is in your pocket Einstellungen Benachrichtigung anzeigen @@ -459,6 +461,16 @@ Selten verwendete Apps deaktivieren Wasserzeichen Fotos mit EXIF-Daten und Logos versehen + Wallpaper + Daily curated and live wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Always-on-Display Zeige Uhrzeit und Infos, während der Bildschirm ausgeschaltet ist Kalender-Synchronisierung @@ -579,6 +591,8 @@ Vibrationsrückmeldung beim Drücken der neu zugewiesenen Taste Taschenlampe ein-/ausschalten Taschenlampe mit Lautstärketasten umschalten + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Aktiviere dynamisches Nachtlicht Hauptschalter für dynamisches Nachtlicht Aktiviere App-Sperre @@ -934,6 +948,13 @@ impuls benachrichtigung + + pocket + proximity + sensor + torch + auto + wach entwickler @@ -1533,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml index dbc5195b2..897b93c64 100644 --- a/app/src/main/res/values-el-rGR/strings.xml +++ b/app/src/main/res/values-el-rGR/strings.xml @@ -101,6 +101,8 @@ Αλλος Να σβήνετε πάντα τον φακό Ακόμη και όταν η οθόνη είναι ενεργοποιημένη + Pocket detection + Turn off flashlight when phone is in your pocket Ρυθμίσεις Εμφάνιση ειδοποίησης @@ -459,6 +461,16 @@ Απενεργοποιήστε τις εφαρμογές που χρησιμοποιούνται σπάνια Αφανής σφραγίδα χάρτου Προσθέστε δεδομένα και λογότυπα EXIF ​​στις φωτογραφίες + Wallpaper + Daily curated and live wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Πάντα στην οθόνη Εμφάνιση ώρας και πληροφοριών ενώ η οθόνη είναι απενεργοποιημένη Συγχρονισμός Ημερολογίου @@ -579,6 +591,8 @@ Ανατροφοδότηση κραδασμών όταν πατηθεί το κουμπί επανασχεδιασμού Εναλλαγή φακού Εναλλαγή φακού με κουμπιά έντασης ήχου + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Ενεργοποιήστε το Dynamic Night Light Κύριος διακόπτης για δυναμικό νυχτερινό φως Ενεργοποίηση κλειδώματος εφαρμογής @@ -934,6 +948,13 @@ σφυγμός κοινοποίηση + + pocket + proximity + sensor + torch + auto + άγρυπνος προγραμματιστής @@ -1533,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked diff --git a/app/src/main/res/values-en-rUS/strings.xml b/app/src/main/res/values-en-rUS/strings.xml index 2543be1d1..39e234f4c 100644 --- a/app/src/main/res/values-en-rUS/strings.xml +++ b/app/src/main/res/values-en-rUS/strings.xml @@ -101,6 +101,8 @@ Other Always turn off flashlight Even while display is on + Pocket detection + Turn off flashlight when phone is in your pocket Settings Show Notification @@ -459,6 +461,16 @@ Disable rarely used apps Watermark Add EXIF data and logos to photos + Wallpaper + Daily curated and live wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Always on Display Show time and info while screen off Calendar Sync @@ -579,6 +591,8 @@ Vibration feedback when remapped button is pressed Flashlight toggle Toggle flashlight with volume buttons + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Enable Dynamic Night Light Master switch for dynamic night light Enable app lock @@ -934,6 +948,13 @@ pulse notification + + pocket + proximity + sensor + torch + auto + awake developer @@ -1533,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index d8b0c274e..c5ec49747 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -101,6 +101,8 @@ Otro Apagar siempre la linterna Incluso cuando la pantalla está encendida + Detección de bolsillo + Apagar la linterna cuando el teléfono esté en el bolsillo Ajustes Mostrar notificación @@ -460,6 +462,16 @@ Sin embargo, sí te permite reanudarla desde la lista de aplicaciones del lanzad Desactivar aplicaciones de uso poco frecuente Marca de agua Añadir datos EXIF ​​y logotipos a las fotos + Fondo de pantalla + Fondos de pantalla animados y seleccionados diariamente + Aplicar fondo de pantalla + Foto de + Fondo de pantalla aplicado correctamente + No se pudo aplicar el fondo de pantalla + Aplicando el nuevo fondo de pantalla + Actualización automática + Comprueba dos veces al día si hay un nuevo fondo de pantalla en segundo plano + Borrar videos personalizados Pantalla siempre activa Mostrar hora e información con la pantalla apagada Sincronización del calendario @@ -580,6 +592,8 @@ Sin embargo, sí te permite reanudarla desde la lista de aplicaciones del lanzad Retroalimentación de vibración cuando se presiona el botón reasignado Activar/desactivar la linterna Activar/desactivar la linterna con los botones de volumen + Detección de bolsillo para la linterna + Apagado automático de la linterna al colocar el teléfono en el bolsillo Activar Luz nocturna dinámica Interruptor principal para la luz nocturna dinámica Activar bloqueo de aplicaciones @@ -936,6 +950,13 @@ Cuando llegue un mensaje o alerta de una aplicación seleccionada, la Pantalla s destello notificación + + bolsillo + proximidad + sensor + torch + auto + despierto desarrollador @@ -1473,7 +1494,7 @@ Cuando llegue un mensaje o alerta de una aplicación seleccionada, la Pantalla s Metro Superposición de números El tiempo - Seleccionar estilo del reloj + Seleccionar el estilo del reloj Actual Aplicar Estilo del reloj aplicado @@ -1535,4 +1556,17 @@ Cuando llegue un mensaje o alerta de una aplicación seleccionada, la Pantalla s Música Reiniciar Shizuku Por favor, introduce primero el token de autenticación de Shizuku en los ajustes + + Modo bolsillo + Evitar toques accidentales mientras el teléfono está en el bolsillo + Usar el sensor de luz + Usar el nivel de luz ambiental además de la proximidad para mejorar la precisión + Modo bolsillo activo + Pulsa cualquier tecla de volumen para descartar + Advertencia: En algunos dispositivos que carecen de ciertos sensores, activar el Modo bolsillo puede impedir el modo de suspensión profunda y provocar un mayor consumo de batería + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked diff --git a/app/src/main/res/values-fi-rFI/strings.xml b/app/src/main/res/values-fi-rFI/strings.xml index 9a0f3c70f..fc4a23c43 100644 --- a/app/src/main/res/values-fi-rFI/strings.xml +++ b/app/src/main/res/values-fi-rFI/strings.xml @@ -101,6 +101,8 @@ muu Sammuta aina taskulamppu Vaikka näyttö on päällä + Pocket detection + Turn off flashlight when phone is in your pocket Asetukset Näytä ilmoitus @@ -459,6 +461,16 @@ Poista harvoin käytetyt sovellukset käytöstä Vesileima Lisää EXIF-tietoja ja logoja valokuviin + Wallpaper + Daily curated and live wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Aina näytössä Näytä aika ja tiedot näytön ollessa pois päältä Kalenterin synkronointi @@ -579,6 +591,8 @@ Tärinäpalaute, kun uudelleenkartoituspainiketta painetaan Taskulamppujen kytkin Vaihda taskulamppua äänenvoimakkuuspainikkeilla + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Ota dynaaminen yövalo käyttöön Pääkytkin dynaamiseen yövaloon Ota sovellusten lukitus käyttöön @@ -934,6 +948,13 @@ pulssi ilmoitus + + pocket + proximity + sensor + torch + auto + hereillä kehittäjä @@ -1533,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml index 9973a82e1..812b53c81 100644 --- a/app/src/main/res/values-fr-rFR/strings.xml +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -101,6 +101,8 @@ Autre Toujours éteindre la lampe-torche Même quand l\'écran est allumé + Pocket detection + Turn off flashlight when phone is in your pocket Paramètres Afficher des notifications @@ -459,6 +461,16 @@ Désactiver les applications rarement utilisées Filigrane Ajoutez des données EXIF et des logos aux photos + Wallpaper + Daily curated and live wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Mode Always-on Afficher l\'heure et des infos quand l\'écran est éteint Synchronisation des calendriers @@ -579,6 +591,8 @@ Vibration quand le bouton réattribué est appuyé Allumer/éteindre la lampe-torche Basculer la lampe-torche avec les boutons volume + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Éclairage nocturne dynamique Basculer globalement l\'éclairage nocturne dynamique Activer le verrouillage d\'applis @@ -934,6 +948,13 @@ clignotement notification + + pocket + proximity + sensor + torch + auto + allumé développeur @@ -1533,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml index 8e355a9c4..0f285256a 100644 --- a/app/src/main/res/values-hu-rHU/strings.xml +++ b/app/src/main/res/values-hu-rHU/strings.xml @@ -101,6 +101,8 @@ Más Mindig kapcsolja ki a zseblámpát Még akkor is, ha a kijelző be van kapcsolva + Pocket detection + Turn off flashlight when phone is in your pocket Beállítások elemre Értesítés megjelenítése @@ -459,6 +461,16 @@ Tiltsa le a ritkán használt alkalmazásokat Vízjel Adjon hozzá EXIF-adatokat és logókat a fényképekhez + Wallpaper + Daily curated and live wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Mindig a kijelzőn Idő és információ megjelenítése kikapcsolt képernyő mellett Naptár szinkronizálás @@ -579,6 +591,8 @@ Rezgés visszajelzés, amikor megnyomja az újraképzett gombot Zseblámpa kapcsoló Zseblámpa váltása hangerő gombokkal + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Dinamikus éjszakai fény engedélyezése Főkapcsoló a dinamikus éjszakai világításhoz Alkalmazászár engedélyezése @@ -934,6 +948,13 @@ impulzus bejelentés + + pocket + proximity + sensor + torch + auto + ébren fejlesztő @@ -1533,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked diff --git a/app/src/main/res/values-in-rID/strings.xml b/app/src/main/res/values-in-rID/strings.xml index 578bbf3e4..273922250 100644 --- a/app/src/main/res/values-in-rID/strings.xml +++ b/app/src/main/res/values-in-rID/strings.xml @@ -101,6 +101,8 @@ Lainnya Selalu matikan senter Hanya ketika layar hidup + Pocket detection + Turn off flashlight when phone is in your pocket Pengaturan Tampilkan notifikasi @@ -459,6 +461,16 @@ Disable rarely used apps Tanda air Tambahkan data EXIF dan logo di foto + Wallpaper + Daily curated and live wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Always on Display Show time and info while screen off Sinkronisasi kalender @@ -579,6 +591,8 @@ Vibration feedback when remapped button is pressed Flashlight toggle Toggle flashlight with volume buttons + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Enable Dynamic Night Light Master switch for dynamic night light Enable app lock @@ -934,6 +948,13 @@ pulse notification + + pocket + proximity + sensor + torch + auto + awake developer @@ -1533,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml index 8f7a55211..86f414b86 100644 --- a/app/src/main/res/values-it-rIT/strings.xml +++ b/app/src/main/res/values-it-rIT/strings.xml @@ -12,8 +12,8 @@ Disattiva le app utilizzate raramente App congelate Apri congelamento app - Action - Launch action shortcut + Azione + Avvia scorciatoia azione App congelata Widget Spegni-scherno Congelamento app @@ -101,6 +101,8 @@ Altro Spegni sempre la torcia Anche mentre lo schermo è acceso + Pocket detection + Turn off flashlight when phone is in your pocket Impostazioni Mostra notifiche @@ -182,7 +184,7 @@ Solo con lo schermo rivolto verso il basso Stesse app di illuminazione di notifica Luminosità massima - Do not trigger on DND + Non attivare in modalità Non disturbare Prova l\'effetto Stile Regolazione del bagliore @@ -425,17 +427,17 @@ Pianifica un\'azione da attivare in base a un rilevamento Automazione da stato Pianifica un\'azione da eseguire in base all\'attivazione o disattivazione di una condizione - Action Shortcut - Launch shortcut to trigger action - Pixel searchbar - Tap action for Pixel searchbar replacement + Scorciatoia azione + Avvia la scorciatoia per eseguire l\'azione + Barra di ricerca Pixel + Azione al tocco per la barra di ricerca sostitutiva Nuova automazione Modifica automazione Azioni per i link Gestisci i link con più applicazioni - Flashlight - Improve flashlight behavior - Restore mode + Torcia + Migliora il comportamento della torcia + Modalità di ripristino Posticipa le notifiche di sistema Posticipa le notifiche persistenti Riquadri Impostazioni rapide @@ -459,6 +461,16 @@ Disattiva le app utilizzate raramente Filigrana Aggiungi dati EXIF ​​e loghi alle foto + Wallpaper + Daily curated and live wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Display sempre attivo Mostra ora e informazioni mentre lo schermo è spento Sincronizzazione del calendario @@ -579,6 +591,8 @@ Vibrazione alla pressione del pulsante riassegnato Interruttore torcia Attiva o disattiva la torcia con i pulsanti del volume + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Abilita luce notturna dinamica Interruttore principale per luce notturna dinamica Abilita blocco app @@ -629,8 +643,8 @@ Abilita nelle impostazioni Come concedere Concesso - Grant using Shizuku - This permission can be granted either via a PC using ADB. Copy the ADB command and run on the shell.\n\nOr you can easily grant it using Shizuku from the below button.\n\nThis permission only needs to be granted once. + Concedi tramite Shizuku + Questo permesso può essere concesso tramite PC utilizzando ADB. Copia il comando ADB ed eseguilo nella shell.\n\nIn alternativa, puoi concederlo facilmente tramite Shizuku usando il pulsante qui sotto.\n\nQuesto permesso deve essere concesso una sola volta. Ottimizzazione della batteria Evita la chiusura del servizio da parte del sistema per risparmio energetico. @@ -825,16 +839,16 @@ Attiva risparmio energetico Disattiva risparmio energetico Attenua sfondo - Screen Off - Media Play/Pause - Media Next - Media Previous - AI Assistant - Take Screenshot - Toggle Media Volume - Like Current Song - Circle to Search - Pin Foreground App + Schermo spento + Riproduci/pausa media + Media successivo + Media precedente + Assistente AI + Acquisisci screenshot + Attiva/disattiva volume dei media + Mi piace al brano attuale + Cerchia e cerca + Fissa app in primo piano Questa azione richiede che Shizuku o Root regolino l\'attenuazione dello sfondo di sistema. Seleziona attivazione App @@ -934,6 +948,13 @@ flash notifica + + pocket + proximity + sensor + torch + auto + sveglio sviluppatore @@ -1273,15 +1294,15 @@ Installa sull\'orologio Per utilizzare le funzionalità dell\'orologio, devi installare l\'app complementare Essentials sul tuo orologio Wear OS. Tocca il pulsante qui sotto per aprire il Play Store direttamente sul tuo orologio. Apri sull\'orologio - Customize - Customize WearOS app controls - Long press to enable or disable buttons - Reorder watch controls - Wireless Debugging - Enable remotely - Sync sound mode - Automatically sync with watch - Watch Secure Settings + Personalizza + Personalizza i controlli dell\'app WearOS + Premi a lungo per abilitare o disabilitare i pulsanti + Riordina i controlli dell\'orologio + Debug wireless + Attiva da remoto + Sincronizza modalità audio + Sincronizza automaticamente con l\'orologio + Impostazioni sicurezza orologio Requires secure settings write permission on your Watch. Grant it using the ADB command below. Interazione Interfaccia @@ -1533,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked diff --git a/app/src/main/res/values-iw-rIL/strings.xml b/app/src/main/res/values-iw-rIL/strings.xml index 23a3ae0d9..7aefc37c3 100644 --- a/app/src/main/res/values-iw-rIL/strings.xml +++ b/app/src/main/res/values-iw-rIL/strings.xml @@ -101,6 +101,8 @@ Other Always turn off flashlight Even while display is on + Pocket detection + Turn off flashlight when phone is in your pocket Settings Show Notification @@ -459,6 +461,16 @@ Disable rarely used apps Watermark Add EXIF data and logos to photos + Wallpaper + Daily curated and live wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos Always on Display Show time and info while screen off Calendar Sync @@ -579,6 +591,8 @@ Vibration feedback when remapped button is pressed Flashlight toggle Toggle flashlight with volume buttons + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket Enable Dynamic Night Light Master switch for dynamic night light Enable app lock @@ -934,6 +948,13 @@ pulse notification + + pocket + proximity + sensor + torch + auto + awake developer @@ -1533,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index eb0d6a9a4..782327d5b 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -101,6 +101,8 @@ その他 フラッシュライトを常にオフにする 画面がオンのときも + Pocket detection + Turn off flashlight when phone is in your pocket 設定 通知を表示 @@ -459,6 +461,16 @@ あまり使わないアプリを無効にする ウォーターマーク 写真にEXIFデータとロゴを追加する + Wallpaper + Daily curated and live wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos 常時表示ディスプレイ 画面オフ時に時刻と情報を表示 カレンダー同期 @@ -579,6 +591,8 @@ 再設定されたボタンを押したときの感触フィードバック フラッシュライト フラッシュライトを音量ボタンで切り替える + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket ダイナミックナイトモードを有効にする ダイナミックナイトモードを使うか切り替える アプリロックを有効にする @@ -934,6 +948,13 @@ 点滅 通知 + + pocket + proximity + sensor + torch + auto + 起動 開発者 @@ -1533,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 6ed966bf7..f5d83387c 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -101,6 +101,8 @@ 다른 항상 손전등을 꺼주세요 디스플레이가 켜져 있는 동안에도 + Pocket detection + Turn off flashlight when phone is in your pocket 설정 알림 표시 @@ -459,6 +461,16 @@ 거의 사용하지 않는 앱 비활성화 양수표 사진에 EXIF ​​데이터 및 로고 추가 + Wallpaper + Daily curated and live wallpaper + Apply Wallpaper + Photo by + Wallpaper applied successfully + Failed to apply wallpaper + Applying new wallpaper + Auto-update + Checks twice a day for a new wallpaper on a background schedule + Clear custom videos 항상 표시됨 화면이 꺼진 동안 시간 및 정보 표시 캘린더 동기화 @@ -579,6 +591,8 @@ 리매핑된 버튼을 눌렀을 때 진동 피드백 손전등 토글 볼륨 버튼으로 손전등 전환 + Flashlight pocket detection + Auto-turn off flashlight when placed in pocket 동적 야간 조명 활성화 역동적인 야간 조명을 위한 마스터 스위치 앱 잠금 활성화 @@ -934,6 +948,13 @@ 맥박 공고 + + pocket + proximity + sensor + torch + auto + 깨어 있는 개발자 @@ -1533,4 +1554,17 @@ Music Restart Shizuku Please enter Shizuku auth token in settings first + + Pocket mode + Prevent accidental touches while in pocket + Use light sensor + Use ambient light level in addition to proximity for better accuracy + Pocket mode active + Press any volume key to dismiss + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain + Exclude apps + Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default + Trigger delay + Lock screen only + Only trigger pocket mode when the device is locked diff --git a/app/src/main/res/values-night-v31/splash.xml b/app/src/main/res/values-night-v31/splash.xml index a768473b7..d9a24b930 100644 --- a/app/src/main/res/values-night-v31/splash.xml +++ b/app/src/main/res/values-night-v31/splash.xml @@ -1,5 +1,6 @@ + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8f5114a2c..2e5fb0df6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -295,8 +295,8 @@ Authenticate to enable this feature Authenticate to disable this feature Disable quick setting tiles when the device is locked -Disable QS Locked -Prevent expanding Quick Settings when device is locked + Disable QS Locked + Prevent expanding Quick Settings when device is locked Re-order modes Long press to toggle @@ -347,7 +347,7 @@ Samsung Smart Features Samsung Services Ethernet - + Show Seconds in Clock Battery Percentage @@ -865,7 +865,7 @@ Start Time End Time Repeat on - + Charging Screen On @@ -902,7 +902,7 @@ Delete Enable Disable - + Automation Service Automations Active Monitoring system events for your automations @@ -1218,7 +1218,7 @@ What the hell is this app? Good question,\n\nI always wanted to extract the most out of my devices as I\'ve been a rooted user for ever since I got my first Project Treble device. And I\'ve been loving the Tasker app which is like the god when comes automation and utilizing every possible API and internal features of Android.\n\nSo I am not unrooted and back on stock Android beta experience and wanted to get the most out from what is possible with given privileges. Might as well share them. So with my beginner knowledge in Kotlin Jetpack and with the support of many research and assist tools and also the great community, I built an all-in-one app containing everything I wanted to be in my Android with given permissions. And here it is.\n\nFeature requests are welcome, I will consider and see if they are achievable with available permissions and my skills. Nowadays what is not possible. :)\n\nWhy not on Play Store?\nI don\'t wanna risk getting my Developer account banned due to the highly sensitive and internal permissions and APIs being used in the app. But with the way Android sideloading is headed, let\'s see what we have to do. I do understand the concerns of sideloaded apps being malicious.\nWhile we are at the topic, Checkout my other app AirSync if you are a mac + Android user. *shameless plug*\n\nEnjoy, Keep building! (っ◕‿◕)っ - + Bug report copied to clipboard Bug report @@ -1273,7 +1273,8 @@ Keys Customize layout and behavior Keyboard Height - Adjust the total vertical size of the keyboard> + Adjust the total vertical size of the keyboard + > Bottom Padding Add space below the keyboard Haptic Feedback @@ -1353,26 +1354,26 @@ Show volume slider in tile Cycle Behavior Choose modes to cycle through - - + + Sound and Haptics Volume and haptic features - + Security and Privacy Protect and secure your device - + Notifications and Alerts Never miss your priorities - + Input and Actions Control your device with ease - + Widgets At a glance on your home screen - + Display Visuals to enhance your experience - + Watch Integrations with WearOS No Watch detected @@ -1528,7 +1529,7 @@ What\'s in Premium? April Fools! Just kidding, Essentials is and will always be free and open source. Enjoy! (っ◕‿◕)っ - + System Ripple Animation Bottom @@ -1611,7 +1612,7 @@ Purple Pink Teal - + Device Specs Retired Inaccurate GSMArena-powered specifications have been removed to keep device insights clean, fast, and completely reliable. @@ -1658,7 +1659,7 @@ Use ambient light level in addition to proximity for better accuracy Pocket mode active Press any volume key to dismiss - Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain. \This is not necessary for Google Pixel devices as they already got the feature built-in. + Warning: On some devices with missing sensors, enabling Pocket Mode may break deep sleep and cause higher battery drain Exclude apps Choose apps where Pocket Mode should not trigger. Pocket mode will not work when streaming or gaming by default Trigger delay diff --git a/app/src/main/res/xml/accessibility_service_config.xml b/app/src/main/res/xml/accessibility_service_config.xml index 3ab033113..ea94d4704 100644 --- a/app/src/main/res/xml/accessibility_service_config.xml +++ b/app/src/main/res/xml/accessibility_service_config.xml @@ -1,11 +1,11 @@ diff --git a/app/src/main/res/xml/batteries_widget_info.xml b/app/src/main/res/xml/batteries_widget_info.xml index 34f47dd95..fbacc626c 100644 --- a/app/src/main/res/xml/batteries_widget_info.xml +++ b/app/src/main/res/xml/batteries_widget_info.xml @@ -4,9 +4,9 @@ android:initialLayout="@layout/glance_default_loading_layout" android:minWidth="40dp" android:minHeight="40dp" - android:resizeMode="horizontal|vertical" android:minResizeWidth="40dp" android:minResizeHeight="40dp" + android:resizeMode="horizontal|vertical" android:targetCellWidth="1" android:targetCellHeight="1" android:updatePeriodMillis="1800000" diff --git a/app/src/main/res/xml/favorites_widget_info.xml b/app/src/main/res/xml/favorites_widget_info.xml index 3437da818..804fbad47 100644 --- a/app/src/main/res/xml/favorites_widget_info.xml +++ b/app/src/main/res/xml/favorites_widget_info.xml @@ -4,9 +4,9 @@ android:initialLayout="@layout/glance_default_loading_layout" android:minWidth="80dp" android:minHeight="80dp" - android:resizeMode="horizontal|vertical" android:minResizeWidth="40dp" android:minResizeHeight="40dp" + android:resizeMode="horizontal|vertical" android:targetCellWidth="2" android:targetCellHeight="1" android:updatePeriodMillis="0" diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml index d4e9e40e8..a0f2a03ba 100644 --- a/app/src/main/res/xml/file_paths.xml +++ b/app/src/main/res/xml/file_paths.xml @@ -1,5 +1,9 @@ - - + + diff --git a/app/src/main/res/xml/locales_config.xml b/app/src/main/res/xml/locales_config.xml index c59e4e531..344539713 100644 --- a/app/src/main/res/xml/locales_config.xml +++ b/app/src/main/res/xml/locales_config.xml @@ -1,34 +1,34 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/xml/method.xml b/app/src/main/res/xml/method.xml index 47c1d5720..b2ea3fd55 100644 --- a/app/src/main/res/xml/method.xml +++ b/app/src/main/res/xml/method.xml @@ -2,7 +2,7 @@ + android:imeSubtypeMode="keyboard" + android:label="@string/subtype_en_us" /> diff --git a/app/src/main/res/xml/pixel_searchbar_widget_info.xml b/app/src/main/res/xml/pixel_searchbar_widget_info.xml index b077b029b..cef5711b4 100644 --- a/app/src/main/res/xml/pixel_searchbar_widget_info.xml +++ b/app/src/main/res/xml/pixel_searchbar_widget_info.xml @@ -4,9 +4,9 @@ android:initialLayout="@layout/glance_default_loading_layout" android:minWidth="40dp" android:minHeight="40dp" - android:resizeMode="horizontal|vertical" android:minResizeWidth="40dp" android:minResizeHeight="40dp" + android:resizeMode="horizontal|vertical" android:targetCellWidth="4" android:targetCellHeight="1" android:updatePeriodMillis="1800000" diff --git a/app/src/main/res/xml/screen_off_widget_info.xml b/app/src/main/res/xml/screen_off_widget_info.xml index 26dd15327..900231c01 100644 --- a/app/src/main/res/xml/screen_off_widget_info.xml +++ b/app/src/main/res/xml/screen_off_widget_info.xml @@ -1,15 +1,15 @@ diff --git a/app/src/main/res/xml/shortcuts.xml b/app/src/main/res/xml/shortcuts.xml index 77b3812c6..7fa80e118 100644 --- a/app/src/main/res/xml/shortcuts.xml +++ b/app/src/main/res/xml/shortcuts.xml @@ -1,15 +1,15 @@ + android:shortcutId="app_freezing" + android:shortcutLongLabel="@string/freeze_shortcut_long_label" + android:shortcutShortLabel="@string/freeze_shortcut_short_label"> + android:targetClass="com.sameerasw.essentials.ui.activities.AppFreezingActivity" + android:targetPackage="com.sameerasw.essentials" /> diff --git a/app/src/test/java/com/sameerasw/essentials/ExampleUnitTest.kt b/app/src/test/java/com/sameerasw/essentials/ExampleUnitTest.kt index 5102900f4..4f09cd7bf 100644 --- a/app/src/test/java/com/sameerasw/essentials/ExampleUnitTest.kt +++ b/app/src/test/java/com/sameerasw/essentials/ExampleUnitTest.kt @@ -1,9 +1,8 @@ package com.sameerasw.essentials +import org.junit.Assert.assertEquals import org.junit.Test -import org.junit.Assert.* - /** * Example local unit test, which will execute on the development machine (host). *