From 810ee6d4c4fde12158982cc828ab84795ffc989f Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 16 Mar 2021 22:09:41 +0100 Subject: [PATCH 01/49] Version++ --- CHANGES.md | 27 +++++++++++++++++++++++++++ vector/build.gradle | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 491b779582..69d793e479 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,30 @@ +Changes in Element 1.1.3 (2021-XX-XX) +=================================================== + +Features ✨: + - + +Improvements πŸ™Œ: + - + +Bugfix πŸ›: + - + +Translations πŸ—£: + - + +SDK API changes ⚠️: + - + +Build 🧱: + - + +Test: + - + +Other changes: + - + Changes in Element 1.1.2 (2021-03-16) =================================================== diff --git a/vector/build.gradle b/vector/build.gradle index deb3bdba26..0468c68614 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -14,7 +14,7 @@ kapt { // Note: 2 digits max for each value ext.versionMajor = 1 ext.versionMinor = 1 -ext.versionPatch = 2 +ext.versionPatch = 3 static def getGitTimestamp() { def cmd = 'git show -s --format=%ct' From 1596df64a6af4a8242edb79c2ccb9bdf236fc068 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 16 Mar 2021 22:09:41 +0100 Subject: [PATCH 02/49] Revert "Version++" This reverts commit 810ee6d4c4fde12158982cc828ab84795ffc989f. --- CHANGES.md | 27 --------------------------- vector/build.gradle | 2 +- 2 files changed, 1 insertion(+), 28 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 69d793e479..491b779582 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,30 +1,3 @@ -Changes in Element 1.1.3 (2021-XX-XX) -=================================================== - -Features ✨: - - - -Improvements πŸ™Œ: - - - -Bugfix πŸ›: - - - -Translations πŸ—£: - - - -SDK API changes ⚠️: - - - -Build 🧱: - - - -Test: - - - -Other changes: - - - Changes in Element 1.1.2 (2021-03-16) =================================================== diff --git a/vector/build.gradle b/vector/build.gradle index 0468c68614..deb3bdba26 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -14,7 +14,7 @@ kapt { // Note: 2 digits max for each value ext.versionMajor = 1 ext.versionMinor = 1 -ext.versionPatch = 3 +ext.versionPatch = 2 static def getGitTimestamp() { def cmd = 'git show -s --format=%ct' From 55e8f519dfb638081f19ac7c98a641b74c5d9cfa Mon Sep 17 00:00:00 2001 From: Dominic Fischer Date: Fri, 2 Apr 2021 11:02:32 +0100 Subject: [PATCH 03/49] Convert RoomService to suspend functions Signed-off-by: Dominic Fischer --- .../org/matrix/android/sdk/rx/RxSession.kt | 8 +-- .../android/sdk/common/CryptoTestHelper.kt | 22 +++---- .../crypto/gossiping/KeyShareTests.kt | 14 ++--- .../sdk/api/session/room/RoomService.kt | 32 ++++------ .../session/room/DefaultRoomService.kt | 61 +++++-------------- .../features/createdirect/DirectRoomHelper.kt | 5 +- .../VerificationBottomSheetViewModel.kt | 52 ++++++++-------- .../home/room/detail/RoomDetailViewModel.kt | 29 +++++---- .../home/room/list/RoomListViewModel.kt | 10 ++- .../roomdirectory/RoomDirectoryViewModel.kt | 12 ++-- .../createroom/CreateRoomViewModel.kt | 32 +++++----- .../roompreview/RoomPreviewViewModel.kt | 17 ++---- 12 files changed, 129 insertions(+), 165 deletions(-) diff --git a/matrix-sdk-android-rx/src/main/java/org/matrix/android/sdk/rx/RxSession.kt b/matrix-sdk-android-rx/src/main/java/org/matrix/android/sdk/rx/RxSession.kt index 0d5b5ed821..cac0a32232 100644 --- a/matrix-sdk-android-rx/src/main/java/org/matrix/android/sdk/rx/RxSession.kt +++ b/matrix-sdk-android-rx/src/main/java/org/matrix/android/sdk/rx/RxSession.kt @@ -124,8 +124,8 @@ class RxSession(private val session: Session) { .startWithCallable { session.getPendingThreePids() } } - fun createRoom(roomParams: CreateRoomParams): Single = singleBuilder { - session.createRoom(roomParams, it) + fun createRoom(roomParams: CreateRoomParams): Single = rxSingle { + session.createRoom(roomParams) } fun searchUsersDirectory(search: String, @@ -136,8 +136,8 @@ class RxSession(private val session: Session) { fun joinRoom(roomIdOrAlias: String, reason: String? = null, - viaServers: List = emptyList()): Single = singleBuilder { - session.joinRoom(roomIdOrAlias, reason, viaServers, it) + viaServers: List = emptyList()): Single = rxSingle { + session.joinRoom(roomIdOrAlias, reason, viaServers) } fun getRoomIdByAlias(roomAlias: String, diff --git a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/common/CryptoTestHelper.kt b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/common/CryptoTestHelper.kt index 5815b23c06..da176491c6 100644 --- a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/common/CryptoTestHelper.kt +++ b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/common/CryptoTestHelper.kt @@ -66,8 +66,8 @@ class CryptoTestHelper(private val mTestHelper: CommonTestHelper) { fun doE2ETestWithAliceInARoom(encryptedRoom: Boolean = true): CryptoTestData { val aliceSession = mTestHelper.createAccount(TestConstants.USER_ALICE, defaultSessionParams) - val roomId = mTestHelper.doSync { - aliceSession.createRoom(CreateRoomParams().apply { name = "MyRoom" }, it) + val roomId = mTestHelper.runBlockingTest { + aliceSession.createRoom(CreateRoomParams().apply { name = "MyRoom" }) } if (encryptedRoom) { @@ -135,7 +135,7 @@ class CryptoTestHelper(private val mTestHelper: CommonTestHelper) { bobRoomSummariesLive.observeForever(roomJoinedObserver) } - mTestHelper.doSync { bobSession.joinRoom(aliceRoomId, callback = it) } + mTestHelper.runBlockingTest { bobSession.joinRoom(aliceRoomId) } mTestHelper.await(lock) @@ -176,8 +176,8 @@ class CryptoTestHelper(private val mTestHelper: CommonTestHelper) { room.invite(samSession.myUserId, null) } - mTestHelper.doSync { - samSession.joinRoom(room.roomId, null, emptyList(), it) + mTestHelper.runBlockingTest { + samSession.joinRoom(room.roomId, null, emptyList()) } return samSession @@ -256,8 +256,8 @@ class CryptoTestHelper(private val mTestHelper: CommonTestHelper) { } fun createDM(alice: Session, bob: Session): String { - val roomId = mTestHelper.doSync { - alice.createDirectRoom(bob.myUserId, it) + val roomId = mTestHelper.runBlockingTest { + alice.createDirectRoom(bob.myUserId) } mTestHelper.waitWithLatch { latch -> @@ -300,7 +300,7 @@ class CryptoTestHelper(private val mTestHelper: CommonTestHelper) { bobRoomSummariesLive.observeForever(newRoomObserver) } - mTestHelper.doSync { bob.joinRoom(roomId, callback = it) } + mTestHelper.runBlockingTest { bob.joinRoom(roomId) } } return roomId @@ -398,8 +398,8 @@ class CryptoTestHelper(private val mTestHelper: CommonTestHelper) { val aliceSession = mTestHelper.createAccount(TestConstants.USER_ALICE, defaultSessionParams) aliceSession.cryptoService().setWarnOnUnknownDevices(false) - val roomId = mTestHelper.doSync { - aliceSession.createRoom(CreateRoomParams().apply { name = "MyRoom" }, it) + val roomId = mTestHelper.runBlockingTest { + aliceSession.createRoom(CreateRoomParams().apply { name = "MyRoom" }) } val room = aliceSession.getRoom(roomId)!! @@ -412,7 +412,7 @@ class CryptoTestHelper(private val mTestHelper: CommonTestHelper) { val session = mTestHelper.createAccount("User_$index", defaultSessionParams) mTestHelper.runBlockingTest(timeout = 600_000) { room.invite(session.myUserId, null) } println("TEST -> " + session.myUserId + " invited") - mTestHelper.doSync { session.joinRoom(room.roomId, null, emptyList(), it) } + mTestHelper.runBlockingTest { session.joinRoom(room.roomId, null, emptyList()) } println("TEST -> " + session.myUserId + " joined") sessions.add(session) } diff --git a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/gossiping/KeyShareTests.kt b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/gossiping/KeyShareTests.kt index e6b364f3fb..40659cef11 100644 --- a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/gossiping/KeyShareTests.kt +++ b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/gossiping/KeyShareTests.kt @@ -71,13 +71,12 @@ class KeyShareTests : InstrumentedTest { val aliceSession = mTestHelper.createAccount(TestConstants.USER_ALICE, SessionTestParams(true)) // Create an encrypted room and add a message - val roomId = mTestHelper.doSync { + val roomId = mTestHelper.runBlockingTest { aliceSession.createRoom( CreateRoomParams().apply { visibility = RoomDirectoryVisibility.PRIVATE enableEncryption() - }, - it + } ) } val room = aliceSession.getRoom(roomId) @@ -332,13 +331,12 @@ class KeyShareTests : InstrumentedTest { } // Create an encrypted room and send a couple of messages - val roomId = mTestHelper.doSync { + val roomId = mTestHelper.runBlockingTest { aliceSession.createRoom( CreateRoomParams().apply { visibility = RoomDirectoryVisibility.PRIVATE enableEncryption() - }, - it + } ) } val roomAlicePov = aliceSession.getRoom(roomId) @@ -371,8 +369,8 @@ class KeyShareTests : InstrumentedTest { roomAlicePov.invite(bobSession.myUserId, null) } - mTestHelper.doSync { - bobSession.joinRoom(roomAlicePov.roomId, null, emptyList(), it) + mTestHelper.runBlockingTest { + bobSession.joinRoom(roomAlicePov.roomId, null, emptyList()) } // we want to discard alice outbound session diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/RoomService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/RoomService.kt index 5f02b77a1e..bc5cb3c8f4 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/RoomService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/RoomService.kt @@ -17,14 +17,12 @@ package org.matrix.android.sdk.api.session.room import androidx.lifecycle.LiveData -import org.matrix.android.sdk.api.MatrixCallback import org.matrix.android.sdk.api.session.events.model.Event import org.matrix.android.sdk.api.session.room.members.ChangeMembershipState import org.matrix.android.sdk.api.session.room.model.RoomMemberSummary import org.matrix.android.sdk.api.session.room.model.RoomSummary import org.matrix.android.sdk.api.session.room.model.create.CreateRoomParams import org.matrix.android.sdk.api.session.room.peeking.PeekResult -import org.matrix.android.sdk.api.util.Cancelable import org.matrix.android.sdk.api.util.Optional import org.matrix.android.sdk.internal.session.room.alias.RoomAliasDescription @@ -36,22 +34,19 @@ interface RoomService { /** * Create a room asynchronously */ - fun createRoom(createRoomParams: CreateRoomParams, - callback: MatrixCallback): Cancelable + suspend fun createRoom(createRoomParams: CreateRoomParams): String /** * Create a direct room asynchronously. This is a facility method to create a direct room with the necessary parameters */ - fun createDirectRoom(otherUserId: String, - callback: MatrixCallback): Cancelable { + suspend fun createDirectRoom(otherUserId: String): String { return createRoom( CreateRoomParams() .apply { invitedUserIds.add(otherUserId) setDirectMessage() enableEncryptionIfInvitedUsersSupportIt = true - }, - callback + } ) } @@ -61,10 +56,9 @@ interface RoomService { * @param reason optional reason for joining the room * @param viaServers the servers to attempt to join the room through. One of the servers must be participating in the room. */ - fun joinRoom(roomIdOrAlias: String, - reason: String? = null, - viaServers: List = emptyList(), - callback: MatrixCallback): Cancelable + suspend fun joinRoom(roomIdOrAlias: String, + reason: String? = null, + viaServers: List = emptyList()) /** * Get a room from a roomId @@ -110,20 +104,18 @@ interface RoomService { * Inform the Matrix SDK that a room is displayed. * The SDK will update the breadcrumbs in the user account data */ - fun onRoomDisplayed(roomId: String): Cancelable + suspend fun onRoomDisplayed(roomId: String) /** * Mark all rooms as read */ - fun markAllAsRead(roomIds: List, - callback: MatrixCallback): Cancelable + suspend fun markAllAsRead(roomIds: List) /** * Resolve a room alias to a room ID. */ - fun getRoomIdByAlias(roomAlias: String, - searchOnServer: Boolean, - callback: MatrixCallback>): Cancelable + suspend fun getRoomIdByAlias(roomAlias: String, + searchOnServer: Boolean): Optional /** * Delete a room alias @@ -170,12 +162,12 @@ interface RoomService { /** * Get some state events about a room */ - fun getRoomState(roomId: String, callback: MatrixCallback>) + suspend fun getRoomState(roomId: String): List /** * Use this if you want to get information from a room that you are not yet in (or invited) * It might be possible to get some information on this room if it is public or if guest access is allowed * This call will try to gather some information on this room, but it could fail and get nothing more */ - fun peekRoom(roomIdOrAlias: String, callback: MatrixCallback) + suspend fun peekRoom(roomIdOrAlias: String): PeekResult } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/DefaultRoomService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/DefaultRoomService.kt index 383dd876d3..f510b3c997 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/DefaultRoomService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/DefaultRoomService.kt @@ -19,7 +19,6 @@ package org.matrix.android.sdk.internal.session.room import androidx.lifecycle.LiveData import androidx.lifecycle.Transformations import com.zhuinden.monarchy.Monarchy -import org.matrix.android.sdk.api.MatrixCallback import org.matrix.android.sdk.api.session.events.model.Event import org.matrix.android.sdk.api.session.room.Room import org.matrix.android.sdk.api.session.room.RoomService @@ -29,7 +28,6 @@ import org.matrix.android.sdk.api.session.room.model.RoomMemberSummary import org.matrix.android.sdk.api.session.room.model.RoomSummary import org.matrix.android.sdk.api.session.room.model.create.CreateRoomParams import org.matrix.android.sdk.api.session.room.peeking.PeekResult -import org.matrix.android.sdk.api.util.Cancelable import org.matrix.android.sdk.api.util.Optional import org.matrix.android.sdk.api.util.toOptional import org.matrix.android.sdk.internal.database.mapper.asDomain @@ -47,8 +45,6 @@ import org.matrix.android.sdk.internal.session.room.peeking.ResolveRoomStateTask import org.matrix.android.sdk.internal.session.room.read.MarkAllRoomsReadTask import org.matrix.android.sdk.internal.session.room.summary.RoomSummaryDataSource import org.matrix.android.sdk.internal.session.user.accountdata.UpdateBreadcrumbsTask -import org.matrix.android.sdk.internal.task.TaskExecutor -import org.matrix.android.sdk.internal.task.configureWith import org.matrix.android.sdk.internal.util.fetchCopied import javax.inject.Inject @@ -64,16 +60,11 @@ internal class DefaultRoomService @Inject constructor( private val peekRoomTask: PeekRoomTask, private val roomGetter: RoomGetter, private val roomSummaryDataSource: RoomSummaryDataSource, - private val roomChangeMembershipStateDataSource: RoomChangeMembershipStateDataSource, - private val taskExecutor: TaskExecutor + private val roomChangeMembershipStateDataSource: RoomChangeMembershipStateDataSource ) : RoomService { - override fun createRoom(createRoomParams: CreateRoomParams, callback: MatrixCallback): Cancelable { - return createRoomTask - .configureWith(createRoomParams) { - this.callback = callback - } - .executeBy(taskExecutor) + override suspend fun createRoom(createRoomParams: CreateRoomParams): String { + return createRoomTask.execute(createRoomParams) } override fun getRoom(roomId: String): Room? { @@ -104,34 +95,20 @@ internal class DefaultRoomService @Inject constructor( return roomSummaryDataSource.getBreadcrumbsLive(queryParams) } - override fun onRoomDisplayed(roomId: String): Cancelable { - return updateBreadcrumbsTask - .configureWith(UpdateBreadcrumbsTask.Params(roomId)) - .executeBy(taskExecutor) + override suspend fun onRoomDisplayed(roomId: String) { + updateBreadcrumbsTask.execute(UpdateBreadcrumbsTask.Params(roomId)) } - override fun joinRoom(roomIdOrAlias: String, reason: String?, viaServers: List, callback: MatrixCallback): Cancelable { - return joinRoomTask - .configureWith(JoinRoomTask.Params(roomIdOrAlias, reason, viaServers)) { - this.callback = callback - } - .executeBy(taskExecutor) + override suspend fun joinRoom(roomIdOrAlias: String, reason: String?, viaServers: List) { + joinRoomTask.execute(JoinRoomTask.Params(roomIdOrAlias, reason, viaServers)) } - override fun markAllAsRead(roomIds: List, callback: MatrixCallback): Cancelable { - return markAllRoomsReadTask - .configureWith(MarkAllRoomsReadTask.Params(roomIds)) { - this.callback = callback - } - .executeBy(taskExecutor) + override suspend fun markAllAsRead(roomIds: List) { + markAllRoomsReadTask.execute(MarkAllRoomsReadTask.Params(roomIds)) } - override fun getRoomIdByAlias(roomAlias: String, searchOnServer: Boolean, callback: MatrixCallback>): Cancelable { - return roomIdByAliasTask - .configureWith(GetRoomIdByAliasTask.Params(roomAlias, searchOnServer)) { - this.callback = callback - } - .executeBy(taskExecutor) + override suspend fun getRoomIdByAlias(roomAlias: String, searchOnServer: Boolean): Optional { + return roomIdByAliasTask.execute(GetRoomIdByAliasTask.Params(roomAlias, searchOnServer)) } override suspend fun deleteRoomAlias(roomAlias: String) { @@ -162,19 +139,11 @@ internal class DefaultRoomService @Inject constructor( } } - override fun getRoomState(roomId: String, callback: MatrixCallback>) { - resolveRoomStateTask - .configureWith(ResolveRoomStateTask.Params(roomId)) { - this.callback = callback - } - .executeBy(taskExecutor) + override suspend fun getRoomState(roomId: String): List { + return resolveRoomStateTask.execute(ResolveRoomStateTask.Params(roomId)) } - override fun peekRoom(roomIdOrAlias: String, callback: MatrixCallback) { - peekRoomTask - .configureWith(PeekRoomTask.Params(roomIdOrAlias)) { - this.callback = callback - } - .executeBy(taskExecutor) + override suspend fun peekRoom(roomIdOrAlias: String): PeekResult { + return peekRoomTask.execute(PeekRoomTask.Params(roomIdOrAlias)) } } diff --git a/vector/src/main/java/im/vector/app/features/createdirect/DirectRoomHelper.kt b/vector/src/main/java/im/vector/app/features/createdirect/DirectRoomHelper.kt index 171970ec1e..bfa56cfb9e 100644 --- a/vector/src/main/java/im/vector/app/features/createdirect/DirectRoomHelper.kt +++ b/vector/src/main/java/im/vector/app/features/createdirect/DirectRoomHelper.kt @@ -22,7 +22,6 @@ import org.matrix.android.sdk.api.extensions.tryOrNull import org.matrix.android.sdk.api.raw.RawService import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.room.model.create.CreateRoomParams -import org.matrix.android.sdk.internal.util.awaitCallback import javax.inject.Inject class DirectRoomHelper @Inject constructor( @@ -45,9 +44,7 @@ class DirectRoomHelper @Inject constructor( setDirectMessage() enableEncryptionIfInvitedUsersSupportIt = adminE2EByDefault } - roomId = awaitCallback { - session.createRoom(roomParams, it) - } + roomId = session.createRoom(roomParams) } return roomId } diff --git a/vector/src/main/java/im/vector/app/features/crypto/verification/VerificationBottomSheetViewModel.kt b/vector/src/main/java/im/vector/app/features/crypto/verification/VerificationBottomSheetViewModel.kt index 0e230c6727..a67cb96d37 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/verification/VerificationBottomSheetViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/verification/VerificationBottomSheetViewModel.kt @@ -249,32 +249,34 @@ class VerificationBottomSheetViewModel @AssistedInject constructor( pendingRequest = Loading() ) } - session.createDirectRoom(otherUserId, object : MatrixCallback { - override fun onSuccess(data: String) { - setState { - copy( - roomId = data, - pendingRequest = Success( - session - .cryptoService() - .verificationService() - .requestKeyVerificationInDMs( - supportedVerificationMethodsProvider.provide(), - otherUserId, - data, - pendingLocalId - ) + viewModelScope.launch { + val result = runCatching { session.createDirectRoom(otherUserId) } + result.fold( + { data -> + setState { + copy( + roomId = data, + pendingRequest = Success( + session + .cryptoService() + .verificationService() + .requestKeyVerificationInDMs( + supportedVerificationMethodsProvider.provide(), + otherUserId, + data, + pendingLocalId + ) + ) ) - ) - } - } - - override fun onFailure(failure: Throwable) { - setState { - copy(pendingRequest = Fail(failure)) - } - } - }) + } + }, + { failure -> + setState { + copy(pendingRequest = Fail(failure)) + } + } + ) + } } else { setState { copy( diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt index 6152562850..ce53c72376 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt @@ -184,7 +184,12 @@ class RoomDetailViewModel @AssistedInject constructor( } } // Inform the SDK that the room is displayed - session.onRoomDisplayed(initialState.roomId) + viewModelScope.launch { + try { + session.onRoomDisplayed(initialState.roomId) + } catch (_: Exception) { + } + } callManager.addPstnSupportListener(this) callManager.checkForPSTNSupportIfNeeded() chatEffectManager.delegate = this @@ -902,19 +907,19 @@ class RoomDetailViewModel @AssistedInject constructor( } private fun handleJoinToAnotherRoomSlashCommand(command: ParsedCommand.JoinRoom) { - session.joinRoom(command.roomAlias, command.reason, emptyList(), object : MatrixCallback { - override fun onSuccess(data: Unit) { - session.getRoomSummary(command.roomAlias) - ?.roomId - ?.let { - _viewEvents.post(RoomDetailViewEvents.JoinRoomCommandSuccess(it)) - } - } - - override fun onFailure(failure: Throwable) { + viewModelScope.launch { + try { + session.joinRoom(command.roomAlias, command.reason, emptyList()) + } catch (failure: Throwable) { _viewEvents.post(RoomDetailViewEvents.SlashCommandResultError(failure)) + return@launch } - }) + session.getRoomSummary(command.roomAlias) + ?.roomId + ?.let { + _viewEvents.post(RoomDetailViewEvents.JoinRoomCommandSuccess(it)) + } + } } private fun legacyRiotQuoteText(quotedText: String?, myText: String): String { diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListViewModel.kt index 3a5e797f98..f4cfbe94d0 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListViewModel.kt @@ -26,7 +26,6 @@ import im.vector.app.core.utils.DataSource import io.reactivex.schedulers.Schedulers import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import org.matrix.android.sdk.api.NoOpMatrixCallback import org.matrix.android.sdk.api.extensions.orFalse import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.room.model.Membership @@ -169,7 +168,14 @@ class RoomListViewModel @Inject constructor(initialState: RoomListViewState, ?.filter { it.membership == Membership.JOIN } ?.map { it.roomId } ?.toList() - ?.let { session.markAllAsRead(it, NoOpMatrixCallback()) } + ?.let { + viewModelScope.launch { + try { + session.markAllAsRead(it) + } catch (_: Exception) { + } + } + } } private fun handleChangeNotificationMode(action: RoomListAction.ChangeRoomNotificationState) { diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryViewModel.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryViewModel.kt index 4ef38758c7..5012243e96 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryViewModel.kt @@ -31,7 +31,6 @@ import im.vector.app.core.platform.VectorViewModel import im.vector.app.features.settings.VectorPreferences import kotlinx.coroutines.Job import kotlinx.coroutines.launch -import org.matrix.android.sdk.api.MatrixCallback import org.matrix.android.sdk.api.extensions.orFalse import org.matrix.android.sdk.api.failure.Failure import org.matrix.android.sdk.api.session.Session @@ -232,17 +231,16 @@ class RoomDirectoryViewModel @AssistedInject constructor( val viaServers = state.roomDirectoryData.homeServer ?.let { listOf(it) } .orEmpty() - session.joinRoom(action.roomId, viaServers = viaServers, callback = object : MatrixCallback { - override fun onSuccess(data: Unit) { + viewModelScope.launch { + try { + session.joinRoom(action.roomId, viaServers = viaServers) // We do not update the joiningRoomsIds here, because, the room is not joined yet regarding the sync data. // Instead, we wait for the room to be joined - } - - override fun onFailure(failure: Throwable) { + } catch (failure: Throwable) { // Notify the user _viewEvents.post(RoomDirectoryViewEvents.Failure(failure)) } - }) + } } override fun onCleared() { diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomViewModel.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomViewModel.kt index 3c027c4845..af63f23a8c 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomViewModel.kt @@ -34,7 +34,6 @@ import im.vector.app.features.raw.wellknown.getElementWellknown import im.vector.app.features.raw.wellknown.isE2EByDefault import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import org.matrix.android.sdk.api.MatrixCallback import org.matrix.android.sdk.api.extensions.tryOrNull import org.matrix.android.sdk.api.raw.RawService import org.matrix.android.sdk.api.session.Session @@ -216,19 +215,22 @@ class CreateRoomViewModel @AssistedInject constructor(@Assisted initialState: Cr } } - session.createRoom(createRoomParams, object : MatrixCallback { - override fun onSuccess(data: String) { - setState { - copy(asyncCreateRoomRequest = Success(data)) - } - } - - override fun onFailure(failure: Throwable) { - setState { - copy(asyncCreateRoomRequest = Fail(failure)) - } - _viewEvents.post(CreateRoomViewEvents.Failure(failure)) - } - }) + // TODO: Should this be non-cancellable? + viewModelScope.launch { + val result = runCatching { session.createRoom(createRoomParams) } + result.fold( + { roomId -> + setState { + copy(asyncCreateRoomRequest = Success(roomId)) + } + }, + { failure -> + setState { + copy(asyncCreateRoomRequest = Fail(failure)) + } + _viewEvents.post(CreateRoomViewEvents.Failure(failure)) + } + ) + } } } diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewViewModel.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewViewModel.kt index c99213d890..c4d479374b 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewViewModel.kt @@ -31,7 +31,6 @@ import im.vector.app.core.platform.VectorViewModel import im.vector.app.features.roomdirectory.JoinState import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import org.matrix.android.sdk.api.MatrixCallback import org.matrix.android.sdk.api.extensions.tryOrNull import org.matrix.android.sdk.api.query.QueryStringValue import org.matrix.android.sdk.api.session.Session @@ -39,7 +38,6 @@ import org.matrix.android.sdk.api.session.room.members.ChangeMembershipState import org.matrix.android.sdk.api.session.room.model.Membership import org.matrix.android.sdk.api.session.room.peeking.PeekResult import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams -import org.matrix.android.sdk.internal.util.awaitCallback import org.matrix.android.sdk.rx.rx import timber.log.Timber @@ -77,9 +75,7 @@ class RoomPreviewViewModel @AssistedInject constructor(@Assisted private val ini } viewModelScope.launch(Dispatchers.IO) { val peekResult = tryOrNull { - awaitCallback { - session.peekRoom(initialState.roomAlias ?: initialState.roomId, it) - } + session.peekRoom(initialState.roomAlias ?: initialState.roomId) } when (peekResult) { @@ -177,15 +173,14 @@ class RoomPreviewViewModel @AssistedInject constructor(@Assisted private val ini Timber.w("Try to join an already joining room. Should not happen") return@withState } - session.joinRoom(state.roomId, viaServers = state.homeServers, callback = object : MatrixCallback { - override fun onSuccess(data: Unit) { + viewModelScope.launch { + try { + session.joinRoom(state.roomId, viaServers = state.homeServers) // We do not update the joiningRoomsIds here, because, the room is not joined yet regarding the sync data. // Instead, we wait for the room to be joined - } - - override fun onFailure(failure: Throwable) { + } catch (failure: Throwable) { setState { copy(lastError = failure) } } - }) + } } } From 505b01ad97a141288738f17ca779037bcff0b4d2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Apr 2021 07:19:20 +0000 Subject: [PATCH 04/49] Bump daggerVersion from 2.33 to 2.34 Bumps `daggerVersion` from 2.33 to 2.34. Updates `dagger` from 2.33 to 2.34 - [Release notes](https://github.com/google/dagger/releases) - [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md) - [Commits](https://github.com/google/dagger/compare/dagger-2.33...dagger-2.34) Updates `dagger-compiler` from 2.33 to 2.34 - [Release notes](https://github.com/google/dagger/releases) - [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md) - [Commits](https://github.com/google/dagger/compare/dagger-2.33...dagger-2.34) Signed-off-by: dependabot[bot] --- matrix-sdk-android/build.gradle | 2 +- vector/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/matrix-sdk-android/build.gradle b/matrix-sdk-android/build.gradle index 34460c6ab5..669444d563 100644 --- a/matrix-sdk-android/build.gradle +++ b/matrix-sdk-android/build.gradle @@ -112,7 +112,7 @@ dependencies { def lifecycle_version = '2.2.0' def arch_version = '2.1.0' def markwon_version = '3.1.0' - def daggerVersion = '2.33' + def daggerVersion = '2.34' def work_version = '2.5.0' def retrofit_version = '2.9.0' diff --git a/vector/build.gradle b/vector/build.gradle index d5a105d893..38d3a4abbc 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -297,7 +297,7 @@ dependencies { def big_image_viewer_version = '1.7.1' def glide_version = '4.12.0' def moshi_version = '1.12.0' - def daggerVersion = '2.33' + def daggerVersion = '2.34' def autofill_version = "1.1.0" def work_version = '2.5.0' def arch_version = '2.1.0' From 3ca00969c53cc84f0497d094968fd45bf6a10f70 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Apr 2021 07:22:02 +0000 Subject: [PATCH 05/49] Bump media from 1.2.1 to 1.3.0 Bumps media from 1.2.1 to 1.3.0. Signed-off-by: dependabot[bot] --- vector/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/build.gradle b/vector/build.gradle index d5a105d893..511e2f7561 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -326,7 +326,7 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation "androidx.sharetarget:sharetarget:1.1.0" implementation 'androidx.core:core-ktx:1.3.2' - implementation "androidx.media:media:1.2.1" + implementation "androidx.media:media:1.3.0" implementation "org.threeten:threetenbp:1.4.0:no-tzdb" implementation "com.gabrielittner.threetenbp:lazythreetenbp:0.9.0" From 68efa63de4cde655b6fd0b82834129c567e655ed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Apr 2021 07:22:33 +0000 Subject: [PATCH 06/49] Bump recyclerview from 1.2.0-rc01 to 1.2.0 Bumps recyclerview from 1.2.0-rc01 to 1.2.0. Signed-off-by: dependabot[bot] --- attachment-viewer/build.gradle | 2 +- vector/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/attachment-viewer/build.gradle b/attachment-viewer/build.gradle index 5a8cce92e8..8db57a59af 100644 --- a/attachment-viewer/build.gradle +++ b/attachment-viewer/build.gradle @@ -69,7 +69,7 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation 'androidx.core:core-ktx:1.3.2' implementation 'androidx.appcompat:appcompat:1.2.0' - implementation "androidx.recyclerview:recyclerview:1.2.0-rc01" + implementation "androidx.recyclerview:recyclerview:1.2.0" implementation 'com.google.android.material:material:1.3.0' } \ No newline at end of file diff --git a/vector/build.gradle b/vector/build.gradle index d5a105d893..2da7349a5e 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -320,7 +320,7 @@ dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_coroutines_version" - implementation "androidx.recyclerview:recyclerview:1.2.0-rc01" + implementation "androidx.recyclerview:recyclerview:1.2.0" implementation 'androidx.appcompat:appcompat:1.2.0' implementation "androidx.fragment:fragment-ktx:$fragment_version" implementation 'androidx.constraintlayout:constraintlayout:2.0.4' From 9b5bc60fa9674523c2de1eadd31ab5d17f8b57ab Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 8 Apr 2021 09:54:51 +0200 Subject: [PATCH 07/49] Remove unused parameter and use same value than the JS SDK --- .../org/matrix/android/sdk/internal/network/Request.kt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/network/Request.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/network/Request.kt index e39bce6c67..170ce09149 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/network/Request.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/network/Request.kt @@ -28,22 +28,21 @@ import java.io.IOException /** * Execute a request from the requestBlock and handle some of the Exception it could generate + * Ref: https://github.com/matrix-org/matrix-js-sdk/blob/develop/src/scheduler.js#L138-L175 * * @param globalErrorReceiver will be use to notify error such as invalid token error. See [GlobalError] * @param canRetry if set to true, the request will be executed again in case of error, after a delay - * @param initialDelayBeforeRetry the first delay to wait before a request is retried. Will be doubled after each retry * @param maxDelayBeforeRetry the max delay to wait before a retry * @param maxRetriesCount the max number of retries * @param requestBlock a suspend lambda to perform the network request */ internal suspend inline fun executeRequest(globalErrorReceiver: GlobalErrorReceiver?, canRetry: Boolean = false, - initialDelayBeforeRetry: Long = 100L, - maxDelayBeforeRetry: Long = 10_000L, - maxRetriesCount: Int = Int.MAX_VALUE, + maxDelayBeforeRetry: Long = 32_000L, + maxRetriesCount: Int = 4, noinline requestBlock: suspend () -> DATA): DATA { var currentRetryCount = 0 - var currentDelay = initialDelayBeforeRetry + var currentDelay = 1_000L while (true) { try { From 8dead986a5c5d6d7febb5729e68623f4a9dbc764 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 8 Apr 2021 10:59:51 +0200 Subject: [PATCH 08/49] Always try to retry Http requests in case of 429 (#1300) --- CHANGES.md | 1 + .../matrix/android/sdk/internal/network/Request.kt | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 86ba91c9df..1a684ee56f 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -18,6 +18,7 @@ Improvements πŸ™Œ: - Room list improvements (paging) - Fix quick click action (#3127) - Get Event after a Push for a faster notification display in some conditions + - Always try to retry Http requests in case of 429 (#1300) Bugfix πŸ›: - Fix bad theme change for the MainActivity diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/network/Request.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/network/Request.kt index 170ce09149..0246bae024 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/network/Request.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/network/Request.kt @@ -19,6 +19,7 @@ package org.matrix.android.sdk.internal.network import kotlinx.coroutines.CancellationException import kotlinx.coroutines.delay import org.matrix.android.sdk.api.failure.Failure +import org.matrix.android.sdk.api.failure.MatrixError import org.matrix.android.sdk.api.failure.getRetryDelay import org.matrix.android.sdk.api.failure.shouldBeRetried import org.matrix.android.sdk.internal.network.ssl.CertUtil @@ -71,9 +72,16 @@ internal suspend inline fun executeRequest(globalErrorReceiver: GlobalErr // } ?.also { unrecognizedCertificateException -> throw unrecognizedCertificateException } - if (canRetry && currentRetryCount++ < maxRetriesCount && exception.shouldBeRetried()) { - // In case of 429, ensure we wait enough - delay(currentDelay.coerceAtLeast(exception.getRetryDelay(0))) + currentRetryCount++ + + if (exception is Failure.ServerError + && exception.httpCode == 429 + && exception.error.code == MatrixError.M_LIMIT_EXCEEDED + && currentRetryCount < maxRetriesCount) { + // 429, we can retry + delay(exception.getRetryDelay(1_000)) + } else if (canRetry && currentRetryCount < maxRetriesCount && exception.shouldBeRetried()) { + delay(currentDelay) currentDelay = currentDelay.times(2L).coerceAtMost(maxDelayBeforeRetry) // Try again (loop) } else { From 760e14531f31bc4bd6a61ae931c94eddc750bf6e Mon Sep 17 00:00:00 2001 From: Valere Date: Thu, 8 Apr 2021 12:09:35 +0200 Subject: [PATCH 09/49] Fix EW-EA compatibility for verification --- .../verification/IncomingVerificationRequestHandler.kt | 10 +++++++++- .../vector/app/features/home/HomeActivityViewModel.kt | 5 ++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/crypto/verification/IncomingVerificationRequestHandler.kt b/vector/src/main/java/im/vector/app/features/crypto/verification/IncomingVerificationRequestHandler.kt index fc526b5322..45feaa47c3 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/verification/IncomingVerificationRequestHandler.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/verification/IncomingVerificationRequestHandler.kt @@ -60,7 +60,7 @@ class IncomingVerificationRequestHandler @Inject constructor( // TODO maybe check also if val uid = "kvr_${tx.transactionId}" when (tx.state) { - is VerificationTxState.OnStarted -> { + is VerificationTxState.OnStarted -> { // Add a notification for every incoming request val user = session?.getUser(tx.otherUserId) val name = user?.getBestName() ?: tx.otherUserId @@ -119,6 +119,14 @@ class IncomingVerificationRequestHandler @Inject constructor( Timber.v("## SAS verificationRequestCreated ${pr.transactionId}") // For incoming request we should prompt (if not in activity where this request apply) if (pr.isIncoming) { + + // if it's a self verification for my devices, we can discard the review login alert + // if not this request will be underneath and not visible by the user... + // it will re-appear later + if (pr.otherUserId == session?.myUserId) { + // XXX this is a bit hard coded :/ + popupAlertManager.cancelAlert("review_login") + } val user = session?.getUser(pr.otherUserId)?.toMatrixItem() val name = user?.getBestName() ?: pr.otherUserId val description = if (name == pr.otherUserId) { diff --git a/vector/src/main/java/im/vector/app/features/home/HomeActivityViewModel.kt b/vector/src/main/java/im/vector/app/features/home/HomeActivityViewModel.kt index ad61928509..523898e0f5 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeActivityViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeActivityViewModel.kt @@ -203,9 +203,8 @@ class HomeActivityViewModel @AssistedInject constructor( _viewEvents.post( HomeActivityViewEvents.OnNewSession( session.getUser(session.myUserId)?.toMatrixItem(), - // If it's an old unverified, we should send requests - // instead of waiting for an incoming one - reAuthHelper.data != null + //Always send request instead of waiting for an incoming as per recent EW changes + false ) ) } From c6bd37810457c93a6605a2d65d86579a227dd4bf Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 8 Apr 2021 12:44:28 +0200 Subject: [PATCH 10/49] Test is passing --- .../androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/vector/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt b/vector/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt index 6f8056de13..53e1645f09 100644 --- a/vector/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt +++ b/vector/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt @@ -78,6 +78,7 @@ class UiAllScreensSanityTest { // Last passing: // 2020-11-09 // 2020-12-16 After ViewBinding huge change + // 2021-04-08 Testing 429 change @Test fun allScreensTest() { // Create an account From 7b1d313e8ee2e56406f8285aaf8ec4a766ff7788 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 8 Apr 2021 12:46:55 +0200 Subject: [PATCH 11/49] Small cleanup --- .../android/sdk/internal/session/room/send/SendEventWorker.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/SendEventWorker.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/SendEventWorker.kt index c1fc2fd9fe..d55dce57af 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/SendEventWorker.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/SendEventWorker.kt @@ -91,7 +91,7 @@ internal class SendEventWorker(context: Context, if (/*currentAttemptCount >= MAX_NUMBER_OF_RETRY_BEFORE_FAILING ||**/ !exception.shouldBeRetried()) { Timber.e("## SendEvent: [${System.currentTimeMillis()}] Send event Failed cannot retry ${params.eventId} > ${exception.localizedMessage}") localEchoRepository.updateSendState(event.eventId, event.roomId, SendState.UNDELIVERED) - return Result.success() + Result.success() } else { Timber.e("## SendEvent: [${System.currentTimeMillis()}] Send event Failed schedule retry ${params.eventId} > ${exception.localizedMessage}") Result.retry() From 1715143b85175993625acac274eda2cd6cb50b46 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 8 Apr 2021 16:18:58 +0200 Subject: [PATCH 12/49] Filter some other words Cannot filter canonical alias anymore, as we now use word boundaries --- .../roomdirectory/ExplicitTermFilterTest.kt | 118 ++++++++++++++++++ vector/src/main/assets/forbidden_terms.txt | 71 +++++++++++ .../roomdirectory/ExplicitTermFilter.kt | 39 ++++++ .../roomdirectory/RoomDirectoryViewModel.kt | 15 +-- 4 files changed, 231 insertions(+), 12 deletions(-) create mode 100644 vector/src/androidTest/java/im/vector/app/features/roomdirectory/ExplicitTermFilterTest.kt create mode 100644 vector/src/main/assets/forbidden_terms.txt create mode 100644 vector/src/main/java/im/vector/app/features/roomdirectory/ExplicitTermFilter.kt diff --git a/vector/src/androidTest/java/im/vector/app/features/roomdirectory/ExplicitTermFilterTest.kt b/vector/src/androidTest/java/im/vector/app/features/roomdirectory/ExplicitTermFilterTest.kt new file mode 100644 index 0000000000..a5d8108ae9 --- /dev/null +++ b/vector/src/androidTest/java/im/vector/app/features/roomdirectory/ExplicitTermFilterTest.kt @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2021 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.roomdirectory + +import im.vector.app.InstrumentedTest +import im.vector.app.core.utils.AssetReader +import org.amshove.kluent.shouldBe +import org.junit.FixMethodOrder +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 +import org.junit.runners.MethodSorters + +@RunWith(JUnit4::class) +@FixMethodOrder(MethodSorters.JVM) +class ExplicitTermFilterTest : InstrumentedTest { + + private val explicitTermFilter = ExplicitTermFilter(AssetReader(context())) + + @Test + fun isValidEmptyTrue() { + explicitTermFilter.isValid("") shouldBe true + } + + @Test + fun isValidTrue() { + explicitTermFilter.isValid("Hello") shouldBe true + } + + @Test + fun isValidFalse() { + explicitTermFilter.isValid("nsfw") shouldBe false + } + + @Test + fun isValidUpCaseFalse() { + explicitTermFilter.isValid("Nsfw") shouldBe false + } + + @Test + fun isValidMultilineTrue() { + explicitTermFilter.isValid("Hello\nWorld") shouldBe true + } + + @Test + fun isValidMultilineFalse() { + explicitTermFilter.isValid("Hello\nnsfw") shouldBe false + } + + @Test + fun isValidMultilineFalse2() { + explicitTermFilter.isValid("nsfw\nHello") shouldBe false + } + + @Test + fun isValidAnalFalse() { + explicitTermFilter.isValid("anal") shouldBe false + } + + @Test + fun isValidAnal2False() { + explicitTermFilter.isValid("There is some anal in this room") shouldBe false + } + + @Test + fun isValidAnalysisTrue() { + explicitTermFilter.isValid("analysis") shouldBe true + } + + @Test + fun isValidAnalysis2True() { + explicitTermFilter.isValid("There is some analysis in the room") shouldBe true + } + + @Test + fun isValidSpecialCharFalse() { + explicitTermFilter.isValid("18+") shouldBe false + } + + @Test + fun isValidSpecialChar2False() { + explicitTermFilter.isValid("This is a room with 18+ content") shouldBe false + } + + @Test + fun isValidOtherSpecialCharFalse() { + explicitTermFilter.isValid("strap-on") shouldBe false + } + + @Test + fun isValidOtherSpecialChar2False() { + explicitTermFilter.isValid("This is a room with strap-on content") shouldBe false + } + + @Test + fun isValid18True() { + explicitTermFilter.isValid("18") shouldBe true + } + + @Test + fun isValidLastFalse() { + explicitTermFilter.isValid("zoo") shouldBe false + } +} \ No newline at end of file diff --git a/vector/src/main/assets/forbidden_terms.txt b/vector/src/main/assets/forbidden_terms.txt new file mode 100644 index 0000000000..693da9c520 --- /dev/null +++ b/vector/src/main/assets/forbidden_terms.txt @@ -0,0 +1,71 @@ +anal +bbc +bbw +bdsm +beast +bestiality +blowjob +bondage +boobs +clit +cock +cuck +cum +cunt +daddy +dick +dildo +erotic +exhibitionism +faggot +feet +femboy +fisting +flogging +fmf +foursome +futa +gangbang +gore +h3ntai +handjob +hentai +incest +jizz +kink +loli +m4f +masturbation +mfm +mfm +milf +moresome +naked +neet +nipple +nsfw +nude +nudity +orgy +pedo +pegging +penis +petplay +porn +pussy +rape +rimming +sadism +sadomasochism +sexy +shota +spank +squirt +strap-on +threesome +vagina +vibrator +voyeur +watersports +xxx +zoo \ No newline at end of file diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/ExplicitTermFilter.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/ExplicitTermFilter.kt new file mode 100644 index 0000000000..addc04ed96 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/ExplicitTermFilter.kt @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2021 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.app.features.roomdirectory + +import im.vector.app.core.utils.AssetReader +import javax.inject.Inject + +class ExplicitTermFilter @Inject constructor( + assetReader: AssetReader +) { + // List of forbidden terms is in file asset forbidden_terms.txt, in lower case + private val explicitContentRegex = assetReader.readAssetFile("forbidden_terms.txt") + .orEmpty() + .split("\n") + .map { it.trim() } + .filter { it.isNotEmpty() } + .joinToString(prefix = ".*\\b(", separator = "|", postfix = ")\\b.*") + .toRegex(RegexOption.IGNORE_CASE) + + fun isValid(str: String): Boolean { + return explicitContentRegex.matches(str.replace("\n", " ")).not() + // Special treatment for "18+" since word boundaries does not work here + && str.contains("18+").not() + } +} diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryViewModel.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryViewModel.kt index 4ef38758c7..9932fdb551 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryViewModel.kt @@ -42,12 +42,12 @@ import org.matrix.android.sdk.api.session.room.model.thirdparty.RoomDirectoryDat import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams import org.matrix.android.sdk.rx.rx import timber.log.Timber -import java.util.Locale class RoomDirectoryViewModel @AssistedInject constructor( @Assisted initialState: PublicRoomsViewState, vectorPreferences: VectorPreferences, - private val session: Session + private val session: Session, + private val explicitTermFilter: ExplicitTermFilter ) : VectorViewModel(initialState) { @AssistedFactory @@ -58,11 +58,6 @@ class RoomDirectoryViewModel @AssistedInject constructor( companion object : MvRxViewModelFactory { private const val PUBLIC_ROOMS_LIMIT = 20 - // List of forbidden terms, in lower case - private val explicitContentTerms = listOf( - "nsfw" - ) - @JvmStatic override fun create(viewModelContext: ViewModelContext, state: PublicRoomsViewState): RoomDirectoryViewModel? { val activity: RoomDirectoryActivity = (viewModelContext as ActivityViewModelContext).activity() @@ -202,11 +197,7 @@ class RoomDirectoryViewModel @AssistedInject constructor( // Filter val newPublicRooms = data.chunk.orEmpty() .filter { - showAllRooms - || "${it.name.orEmpty()} ${it.topic.orEmpty()} ${it.canonicalAlias.orEmpty()}".toLowerCase(Locale.ROOT) - .let { str -> - explicitContentTerms.all { term -> term !in str } - } + showAllRooms || explicitTermFilter.isValid("${it.name.orEmpty()} ${it.topic.orEmpty()}") } setState { From 153d393bf1a9a33316bd7fd7a22da653f6279a87 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 8 Apr 2021 17:28:47 +0200 Subject: [PATCH 13/49] Prevent searching for forbidden terms --- .../features/roomdirectory/ExplicitTermFilterTest.kt | 10 ++++++++++ .../app/features/roomdirectory/ExplicitTermFilter.kt | 8 +++++++- .../features/roomdirectory/RoomDirectoryViewModel.kt | 11 +++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/vector/src/androidTest/java/im/vector/app/features/roomdirectory/ExplicitTermFilterTest.kt b/vector/src/androidTest/java/im/vector/app/features/roomdirectory/ExplicitTermFilterTest.kt index a5d8108ae9..7c66ad7462 100644 --- a/vector/src/androidTest/java/im/vector/app/features/roomdirectory/ExplicitTermFilterTest.kt +++ b/vector/src/androidTest/java/im/vector/app/features/roomdirectory/ExplicitTermFilterTest.kt @@ -115,4 +115,14 @@ class ExplicitTermFilterTest : InstrumentedTest { fun isValidLastFalse() { explicitTermFilter.isValid("zoo") shouldBe false } + + @Test + fun canSearchForFalse() { + explicitTermFilter.canSearchFor("zoo") shouldBe false + } + + @Test + fun canSearchForTrue() { + explicitTermFilter.canSearchFor("android") shouldBe true + } } \ No newline at end of file diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/ExplicitTermFilter.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/ExplicitTermFilter.kt index addc04ed96..8abccbbe5e 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/ExplicitTermFilter.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/ExplicitTermFilter.kt @@ -23,14 +23,20 @@ class ExplicitTermFilter @Inject constructor( assetReader: AssetReader ) { // List of forbidden terms is in file asset forbidden_terms.txt, in lower case - private val explicitContentRegex = assetReader.readAssetFile("forbidden_terms.txt") + private val explicitTerms = assetReader.readAssetFile("forbidden_terms.txt") .orEmpty() .split("\n") .map { it.trim() } .filter { it.isNotEmpty() } + + private val explicitContentRegex = explicitTerms .joinToString(prefix = ".*\\b(", separator = "|", postfix = ")\\b.*") .toRegex(RegexOption.IGNORE_CASE) + fun canSearchFor(term: String): Boolean { + return term !in explicitTerms && term != "18+" + } + fun isValid(str: String): Boolean { return explicitContentRegex.matches(str.replace("\n", " ")).not() // Special treatment for "18+" since word boundaries does not work here diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryViewModel.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryViewModel.kt index 9932fdb551..a6c4646f8c 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryViewModel.kt @@ -161,6 +161,17 @@ class RoomDirectoryViewModel @AssistedInject constructor( } private fun load(filter: String, roomDirectoryData: RoomDirectoryData) { + if (!showAllRooms && !explicitTermFilter.canSearchFor(filter)) { + setState { + copy( + asyncPublicRoomsRequest = Success(Unit), + publicRooms = emptyList(), + hasMore = false + ) + } + return + } + currentJob = viewModelScope.launch { val data = try { session.getPublicRooms(roomDirectoryData.homeServer, From 2e9f8ae6ae728a1d2a279d455cf2fdabf154ef8a Mon Sep 17 00:00:00 2001 From: Aleks Date: Mon, 29 Mar 2021 09:20:22 +0200 Subject: [PATCH 14/49] registration availability endpoint added --- .../android/sdk/api/auth/data/Availability.kt | 26 ++++++++++++++++ .../registration/RegistrationAvailability.kt | 24 +++++++++++++++ .../auth/registration/RegistrationWizard.kt | 2 ++ .../android/sdk/api/failure/Extensions.kt | 8 +++++ .../android/sdk/internal/auth/AuthAPI.kt | 15 ++++++---- .../registration/DefaultRegistrationWizard.kt | 21 ++++++++++--- .../registration/RegisterAvailableTask.kt | 30 +++++++++++++++++++ 7 files changed, 116 insertions(+), 10 deletions(-) create mode 100644 matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/Availability.kt create mode 100644 matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationAvailability.kt create mode 100644 matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegisterAvailableTask.kt diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/Availability.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/Availability.kt new file mode 100644 index 0000000000..3fbbdd161f --- /dev/null +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/Availability.kt @@ -0,0 +1,26 @@ +/* + * Copyright 2020 The Matrix.org Foundation C.I.C. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.matrix.android.sdk.api.auth.data + +import com.squareup.moshi.Json +import com.squareup.moshi.JsonClass + +@JsonClass(generateAdapter = true) +data class Availability( + @Json(name = "available") + val available: Boolean +) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationAvailability.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationAvailability.kt new file mode 100644 index 0000000000..7c7d769a35 --- /dev/null +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationAvailability.kt @@ -0,0 +1,24 @@ +/* + * Copyright 2020 The Matrix.org Foundation C.I.C. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.matrix.android.sdk.api.auth.registration + +import org.matrix.android.sdk.api.failure.Failure + +sealed class RegistrationAvailability { + data class Available(val available: Boolean): RegistrationAvailability() + data class NotAvailable(val failure: Failure.ServerError): RegistrationAvailability() +} \ No newline at end of file diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationWizard.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationWizard.kt index d00c9a0c82..38a5a77291 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationWizard.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationWizard.kt @@ -36,6 +36,8 @@ interface RegistrationWizard { suspend fun checkIfEmailHasBeenValidated(delayMillis: Long): RegistrationResult + suspend fun registrationAvailable(userName: String): RegistrationAvailability + val currentThreePid: String? // True when login and password has been sent with success to the homeserver diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/failure/Extensions.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/failure/Extensions.kt index 17362ff8d7..7f25eedb23 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/failure/Extensions.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/failure/Extensions.kt @@ -87,3 +87,11 @@ fun Throwable.toRegistrationFlowResponse(): RegistrationFlowResponse? { null } } + +fun Throwable.isRegistrationAvailabilityError(): Boolean { + return this is Failure.ServerError + && (error.code == MatrixError.M_USER_IN_USE + || error.code == MatrixError.M_INVALID_USERNAME + || error.code == MatrixError.M_EXCLUSIVE) + && httpCode == 400 +} diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/AuthAPI.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/AuthAPI.kt index 2ce5c67a94..6566aae5fe 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/AuthAPI.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/AuthAPI.kt @@ -16,6 +16,7 @@ package org.matrix.android.sdk.internal.auth +import org.matrix.android.sdk.api.auth.data.Availability import org.matrix.android.sdk.api.auth.data.Credentials import org.matrix.android.sdk.internal.auth.data.LoginFlowResponse import org.matrix.android.sdk.internal.auth.data.PasswordLoginParams @@ -29,12 +30,8 @@ import org.matrix.android.sdk.internal.auth.registration.SuccessResult import org.matrix.android.sdk.internal.auth.registration.ValidationCodeBody import org.matrix.android.sdk.internal.auth.version.Versions import org.matrix.android.sdk.internal.network.NetworkConstants -import retrofit2.http.Body -import retrofit2.http.GET -import retrofit2.http.Headers -import retrofit2.http.POST -import retrofit2.http.Path -import retrofit2.http.Url +import retrofit2.Call +import retrofit2.http.* /** * The login REST API. @@ -65,6 +62,12 @@ internal interface AuthAPI { @POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "register") suspend fun register(@Body registrationParams: RegistrationParams): Credentials + /** + * Checks to see if a username is available, and valid, for the server. + */ + @GET(NetworkConstants.URI_API_PREFIX_PATH_R0 + "register/available") + fun registerAvailable(@Query("username") username: String): Call + /** * Add 3Pid during registration * Ref: https://gist.github.com/jryans/839a09bf0c5a70e2f36ed990d50ed928 diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt index 91e414e689..3be95f6a4a 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt @@ -18,12 +18,10 @@ package org.matrix.android.sdk.internal.auth.registration import kotlinx.coroutines.delay import org.matrix.android.sdk.api.auth.data.LoginFlowTypes -import org.matrix.android.sdk.api.auth.registration.RegisterThreePid -import org.matrix.android.sdk.api.auth.registration.RegistrationResult -import org.matrix.android.sdk.api.auth.registration.RegistrationWizard -import org.matrix.android.sdk.api.auth.registration.toFlowResult +import org.matrix.android.sdk.api.auth.registration.* import org.matrix.android.sdk.api.failure.Failure import org.matrix.android.sdk.api.failure.Failure.RegistrationFlowError +import org.matrix.android.sdk.api.failure.isRegistrationAvailabilityError import org.matrix.android.sdk.internal.auth.AuthAPI import org.matrix.android.sdk.internal.auth.PendingSessionStore import org.matrix.android.sdk.internal.auth.SessionCreator @@ -41,6 +39,7 @@ internal class DefaultRegistrationWizard( private var pendingSessionData: PendingSessionData = pendingSessionStore.getPendingSessionData() ?: error("Pending session data should exist here") private val registerTask = DefaultRegisterTask(authAPI) + private val registerAvailableTask = RegisterAvailableTask(authAPI) private val registerAddThreePidTask = DefaultRegisterAddThreePidTask(authAPI) private val validateCodeTask = DefaultValidateCodeTask(authAPI) @@ -203,4 +202,18 @@ internal class DefaultRegistrationWizard( val session = sessionCreator.createSession(credentials, pendingSessionData.homeServerConnectionConfig) return RegistrationResult.Success(session) } + + override suspend fun registrationAvailable(userName: String): RegistrationAvailability { + val availability = try { + registerAvailableTask.execute(userName) + } catch (exception: Throwable) { + if(exception.isRegistrationAvailabilityError()) { + return RegistrationAvailability.NotAvailable(exception as Failure.ServerError) + } else { + throw exception + } + } + + return RegistrationAvailability.Available(availability.available) + } } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegisterAvailableTask.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegisterAvailableTask.kt new file mode 100644 index 0000000000..aa2bb767f9 --- /dev/null +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegisterAvailableTask.kt @@ -0,0 +1,30 @@ +/* + * Copyright 2020 The Matrix.org Foundation C.I.C. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.matrix.android.sdk.internal.auth.registration + +import org.matrix.android.sdk.api.auth.data.Availability +import org.matrix.android.sdk.internal.auth.AuthAPI +import org.matrix.android.sdk.internal.network.executeRequest +import org.matrix.android.sdk.internal.task.Task + +internal class RegisterAvailableTask(private val authAPI: AuthAPI) : Task { + override suspend fun execute(params: String): Availability { + return executeRequest(null) { + apiCall = authAPI.registerAvailable(params) + } + } +} \ No newline at end of file From 9ce9d1e5491b800bc3291bd575f45ad5742959cb Mon Sep 17 00:00:00 2001 From: Aleks Date: Mon, 29 Mar 2021 15:31:53 +0200 Subject: [PATCH 15/49] CHANGES.md updated --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 1a684ee56f..3362588cf8 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -19,6 +19,7 @@ Improvements πŸ™Œ: - Fix quick click action (#3127) - Get Event after a Push for a faster notification display in some conditions - Always try to retry Http requests in case of 429 (#1300) + - registration availability endpoint added to matrix-sdk Bugfix πŸ›: - Fix bad theme change for the MainActivity From 4451b682b17ba9d4cb6a853a747fad94e93f5d6a Mon Sep 17 00:00:00 2001 From: Aleks Date: Thu, 8 Apr 2021 11:30:41 +0200 Subject: [PATCH 16/49] merge + register/available endpoint corrections --- .../android/sdk/api/auth/data/Availability.kt | 2 +- .../registration/RegistrationAvailability.kt | 4 ++-- .../android/sdk/internal/auth/AuthAPI.kt | 2 +- .../registration/DefaultRegistrationWizard.kt | 15 +----------- .../registration/RegisterAvailableTask.kt | 24 ++++++++++++++----- 5 files changed, 23 insertions(+), 24 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/Availability.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/Availability.kt index 3fbbdd161f..93e0ac4e44 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/Availability.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/Availability.kt @@ -20,7 +20,7 @@ import com.squareup.moshi.Json import com.squareup.moshi.JsonClass @JsonClass(generateAdapter = true) -data class Availability( +internal data class Availability( @Json(name = "available") val available: Boolean ) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationAvailability.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationAvailability.kt index 7c7d769a35..5f944a86d9 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationAvailability.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationAvailability.kt @@ -19,6 +19,6 @@ package org.matrix.android.sdk.api.auth.registration import org.matrix.android.sdk.api.failure.Failure sealed class RegistrationAvailability { - data class Available(val available: Boolean): RegistrationAvailability() + object Available : RegistrationAvailability() data class NotAvailable(val failure: Failure.ServerError): RegistrationAvailability() -} \ No newline at end of file +} diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/AuthAPI.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/AuthAPI.kt index 6566aae5fe..216be83ea3 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/AuthAPI.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/AuthAPI.kt @@ -66,7 +66,7 @@ internal interface AuthAPI { * Checks to see if a username is available, and valid, for the server. */ @GET(NetworkConstants.URI_API_PREFIX_PATH_R0 + "register/available") - fun registerAvailable(@Query("username") username: String): Call + suspend fun registerAvailable(@Query("username") username: String): Availability /** * Add 3Pid during registration diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt index 3be95f6a4a..ace2e62043 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt @@ -21,7 +21,6 @@ import org.matrix.android.sdk.api.auth.data.LoginFlowTypes import org.matrix.android.sdk.api.auth.registration.* import org.matrix.android.sdk.api.failure.Failure import org.matrix.android.sdk.api.failure.Failure.RegistrationFlowError -import org.matrix.android.sdk.api.failure.isRegistrationAvailabilityError import org.matrix.android.sdk.internal.auth.AuthAPI import org.matrix.android.sdk.internal.auth.PendingSessionStore import org.matrix.android.sdk.internal.auth.SessionCreator @@ -203,17 +202,5 @@ internal class DefaultRegistrationWizard( return RegistrationResult.Success(session) } - override suspend fun registrationAvailable(userName: String): RegistrationAvailability { - val availability = try { - registerAvailableTask.execute(userName) - } catch (exception: Throwable) { - if(exception.isRegistrationAvailabilityError()) { - return RegistrationAvailability.NotAvailable(exception as Failure.ServerError) - } else { - throw exception - } - } - - return RegistrationAvailability.Available(availability.available) - } + override suspend fun registrationAvailable(userName: String): RegistrationAvailability = registerAvailableTask.execute(userName) } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegisterAvailableTask.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegisterAvailableTask.kt index aa2bb767f9..791b725357 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegisterAvailableTask.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegisterAvailableTask.kt @@ -16,15 +16,27 @@ package org.matrix.android.sdk.internal.auth.registration -import org.matrix.android.sdk.api.auth.data.Availability +import org.matrix.android.sdk.api.auth.registration.RegistrationAvailability +import org.matrix.android.sdk.api.failure.Failure +import org.matrix.android.sdk.api.failure.isRegistrationAvailabilityError import org.matrix.android.sdk.internal.auth.AuthAPI import org.matrix.android.sdk.internal.network.executeRequest import org.matrix.android.sdk.internal.task.Task -internal class RegisterAvailableTask(private val authAPI: AuthAPI) : Task { - override suspend fun execute(params: String): Availability { - return executeRequest(null) { - apiCall = authAPI.registerAvailable(params) +internal class RegisterAvailableTask(private val authAPI: AuthAPI) : Task { + override suspend fun execute(params: String): RegistrationAvailability { + try { + executeRequest(null) { + authAPI.registerAvailable(params) + } + } catch (exception: Throwable) { + if(exception.isRegistrationAvailabilityError()) { + return RegistrationAvailability.NotAvailable(exception as Failure.ServerError) + } else { + throw exception + } } + + return RegistrationAvailability.Available } -} \ No newline at end of file +} From 9d96f90e49dcd05319b06ae6457989add0578b0e Mon Sep 17 00:00:00 2001 From: Aleks Date: Thu, 8 Apr 2021 12:15:19 +0200 Subject: [PATCH 17/49] keyword-spacing fix + wildcard-imports fix --- .../internal/auth/registration/DefaultRegistrationWizard.kt | 6 +++++- .../sdk/internal/auth/registration/RegisterAvailableTask.kt | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt index ace2e62043..16c05dd8a9 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt @@ -18,7 +18,11 @@ package org.matrix.android.sdk.internal.auth.registration import kotlinx.coroutines.delay import org.matrix.android.sdk.api.auth.data.LoginFlowTypes -import org.matrix.android.sdk.api.auth.registration.* +import org.matrix.android.sdk.api.auth.registration.RegisterThreePid +import org.matrix.android.sdk.api.auth.registration.RegistrationAvailability +import org.matrix.android.sdk.api.auth.registration.RegistrationResult +import org.matrix.android.sdk.api.auth.registration.RegistrationWizard +import org.matrix.android.sdk.api.auth.registration.toFlowResult import org.matrix.android.sdk.api.failure.Failure import org.matrix.android.sdk.api.failure.Failure.RegistrationFlowError import org.matrix.android.sdk.internal.auth.AuthAPI diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegisterAvailableTask.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegisterAvailableTask.kt index 791b725357..d1aa265636 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegisterAvailableTask.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegisterAvailableTask.kt @@ -30,7 +30,7 @@ internal class RegisterAvailableTask(private val authAPI: AuthAPI) : Task Date: Thu, 8 Apr 2021 18:48:43 +0200 Subject: [PATCH 18/49] Some cleanup after merge of #3084 --- .../registration/RegistrationAvailability.kt | 4 ++-- .../android/sdk/api/failure/Extensions.kt | 13 +++++++----- .../android/sdk/internal/auth/AuthAPI.kt | 2 +- .../auth/data/Availability.kt | 11 ++++++---- .../registration/DefaultRegistrationWizard.kt | 12 ++++++----- .../registration/RegisterAvailableTask.kt | 21 ++++++++++++------- 6 files changed, 38 insertions(+), 25 deletions(-) rename matrix-sdk-android/src/main/java/org/matrix/android/sdk/{api => internal}/auth/data/Availability.kt (68%) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationAvailability.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationAvailability.kt index 5f944a86d9..f9a7ace7ba 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationAvailability.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationAvailability.kt @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Matrix.org Foundation C.I.C. + * Copyright 2021 The Matrix.org Foundation C.I.C. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,5 +20,5 @@ import org.matrix.android.sdk.api.failure.Failure sealed class RegistrationAvailability { object Available : RegistrationAvailability() - data class NotAvailable(val failure: Failure.ServerError): RegistrationAvailability() + data class NotAvailable(val failure: Failure.ServerError) : RegistrationAvailability() } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/failure/Extensions.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/failure/Extensions.kt index 7f25eedb23..0ba61e5890 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/failure/Extensions.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/failure/Extensions.kt @@ -65,13 +65,16 @@ fun Throwable.isInvalidUIAAuth(): Boolean { * Try to convert to a RegistrationFlowResponse. Return null in the cases it's not possible */ fun Throwable.toRegistrationFlowResponse(): RegistrationFlowResponse? { - return if (this is Failure.OtherServerError && httpCode == 401) { + return if (this is Failure.OtherServerError + && httpCode == HttpsURLConnection.HTTP_UNAUTHORIZED /* 401 */) { tryOrNull { MoshiProvider.providesMoshi() .adapter(RegistrationFlowResponse::class.java) .fromJson(errorBody) } - } else if (this is Failure.ServerError && httpCode == 401 && error.code == MatrixError.M_FORBIDDEN) { + } else if (this is Failure.ServerError + && httpCode == HttpsURLConnection.HTTP_UNAUTHORIZED /* 401 */ + && error.code == MatrixError.M_FORBIDDEN) { // This happens when the submission for this stage was bad (like bad password) if (error.session != null && error.flows != null) { RegistrationFlowResponse( @@ -90,8 +93,8 @@ fun Throwable.toRegistrationFlowResponse(): RegistrationFlowResponse? { fun Throwable.isRegistrationAvailabilityError(): Boolean { return this is Failure.ServerError + && httpCode == HttpsURLConnection.HTTP_BAD_REQUEST /* 400 */ && (error.code == MatrixError.M_USER_IN_USE - || error.code == MatrixError.M_INVALID_USERNAME - || error.code == MatrixError.M_EXCLUSIVE) - && httpCode == 400 + || error.code == MatrixError.M_INVALID_USERNAME + || error.code == MatrixError.M_EXCLUSIVE) } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/AuthAPI.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/AuthAPI.kt index 216be83ea3..d6a197b06b 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/AuthAPI.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/AuthAPI.kt @@ -16,8 +16,8 @@ package org.matrix.android.sdk.internal.auth -import org.matrix.android.sdk.api.auth.data.Availability import org.matrix.android.sdk.api.auth.data.Credentials +import org.matrix.android.sdk.internal.auth.data.Availability import org.matrix.android.sdk.internal.auth.data.LoginFlowResponse import org.matrix.android.sdk.internal.auth.data.PasswordLoginParams import org.matrix.android.sdk.internal.auth.data.RiotConfig diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/Availability.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/data/Availability.kt similarity index 68% rename from matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/Availability.kt rename to matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/data/Availability.kt index 93e0ac4e44..5ef3c0d06a 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/Availability.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/data/Availability.kt @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Matrix.org Foundation C.I.C. + * Copyright 2021 The Matrix.org Foundation C.I.C. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,13 +14,16 @@ * limitations under the License. */ -package org.matrix.android.sdk.api.auth.data +package org.matrix.android.sdk.internal.auth.data import com.squareup.moshi.Json import com.squareup.moshi.JsonClass @JsonClass(generateAdapter = true) internal data class Availability( - @Json(name = "available") - val available: Boolean + /** + * A flag to indicate that the username is available. This should always be true when the server replies with 200 OK. + */ + @Json(name = "available") + val available: Boolean? = null ) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt index 16c05dd8a9..4a3d53a8fc 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/DefaultRegistrationWizard.kt @@ -41,10 +41,10 @@ internal class DefaultRegistrationWizard( private var pendingSessionData: PendingSessionData = pendingSessionStore.getPendingSessionData() ?: error("Pending session data should exist here") - private val registerTask = DefaultRegisterTask(authAPI) - private val registerAvailableTask = RegisterAvailableTask(authAPI) - private val registerAddThreePidTask = DefaultRegisterAddThreePidTask(authAPI) - private val validateCodeTask = DefaultValidateCodeTask(authAPI) + private val registerTask: RegisterTask = DefaultRegisterTask(authAPI) + private val registerAvailableTask: RegisterAvailableTask = DefaultRegisterAvailableTask(authAPI) + private val registerAddThreePidTask: RegisterAddThreePidTask = DefaultRegisterAddThreePidTask(authAPI) + private val validateCodeTask: ValidateCodeTask = DefaultValidateCodeTask(authAPI) override val currentThreePid: String? get() { @@ -206,5 +206,7 @@ internal class DefaultRegistrationWizard( return RegistrationResult.Success(session) } - override suspend fun registrationAvailable(userName: String): RegistrationAvailability = registerAvailableTask.execute(userName) + override suspend fun registrationAvailable(userName: String): RegistrationAvailability { + return registerAvailableTask.execute(RegisterAvailableTask.Params(userName)) + } } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegisterAvailableTask.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegisterAvailableTask.kt index d1aa265636..314a24dad4 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegisterAvailableTask.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/registration/RegisterAvailableTask.kt @@ -1,5 +1,5 @@ /* - * Copyright 2020 The Matrix.org Foundation C.I.C. + * Copyright 2021 The Matrix.org Foundation C.I.C. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,20 +23,25 @@ import org.matrix.android.sdk.internal.auth.AuthAPI import org.matrix.android.sdk.internal.network.executeRequest import org.matrix.android.sdk.internal.task.Task -internal class RegisterAvailableTask(private val authAPI: AuthAPI) : Task { - override suspend fun execute(params: String): RegistrationAvailability { - try { +internal interface RegisterAvailableTask : Task { + data class Params( + val userName: String + ) +} + +internal class DefaultRegisterAvailableTask(private val authAPI: AuthAPI) : RegisterAvailableTask { + override suspend fun execute(params: RegisterAvailableTask.Params): RegistrationAvailability { + return try { executeRequest(null) { - authAPI.registerAvailable(params) + authAPI.registerAvailable(params.userName) } + RegistrationAvailability.Available } catch (exception: Throwable) { if (exception.isRegistrationAvailabilityError()) { - return RegistrationAvailability.NotAvailable(exception as Failure.ServerError) + RegistrationAvailability.NotAvailable(exception as Failure.ServerError) } else { throw exception } } - - return RegistrationAvailability.Available } } From ee3eb8e1d6744049e524f8e55342506437cc019d Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 8 Apr 2021 18:52:53 +0200 Subject: [PATCH 19/49] Cleanup --- .../java/org/matrix/android/sdk/internal/auth/AuthAPI.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/AuthAPI.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/AuthAPI.kt index d6a197b06b..f93f285c6e 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/AuthAPI.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/AuthAPI.kt @@ -30,8 +30,13 @@ import org.matrix.android.sdk.internal.auth.registration.SuccessResult import org.matrix.android.sdk.internal.auth.registration.ValidationCodeBody import org.matrix.android.sdk.internal.auth.version.Versions import org.matrix.android.sdk.internal.network.NetworkConstants -import retrofit2.Call -import retrofit2.http.* +import retrofit2.http.Body +import retrofit2.http.GET +import retrofit2.http.Headers +import retrofit2.http.POST +import retrofit2.http.Path +import retrofit2.http.Query +import retrofit2.http.Url /** * The login REST API. From 1233fde2617ceaf40dc52e79514d2c0660e6c83f Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Thu, 8 Apr 2021 18:26:55 +0100 Subject: [PATCH 20/49] Update forbidden_terms.txt --- vector/src/main/assets/forbidden_terms.txt | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/vector/src/main/assets/forbidden_terms.txt b/vector/src/main/assets/forbidden_terms.txt index 693da9c520..84e7fe1d28 100644 --- a/vector/src/main/assets/forbidden_terms.txt +++ b/vector/src/main/assets/forbidden_terms.txt @@ -1,5 +1,4 @@ anal -bbc bbw bdsm beast @@ -18,7 +17,6 @@ dildo erotic exhibitionism faggot -feet femboy fisting flogging @@ -35,14 +33,13 @@ jizz kink loli m4f +masturbate masturbation mfm -mfm milf moresome naked neet -nipple nsfw nude nudity @@ -68,4 +65,4 @@ vibrator voyeur watersports xxx -zoo \ No newline at end of file +zoo From f1e280827de7043d3c1a5a77d001bbf0e545b9f0 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 8 Apr 2021 19:39:49 +0200 Subject: [PATCH 21/49] Ensure there is no dup and cleanup --- .../vector/app/features/roomdirectory/ExplicitTermFilterTest.kt | 2 +- .../im/vector/app/features/roomdirectory/ExplicitTermFilter.kt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/vector/src/androidTest/java/im/vector/app/features/roomdirectory/ExplicitTermFilterTest.kt b/vector/src/androidTest/java/im/vector/app/features/roomdirectory/ExplicitTermFilterTest.kt index 7c66ad7462..b2beec5b66 100644 --- a/vector/src/androidTest/java/im/vector/app/features/roomdirectory/ExplicitTermFilterTest.kt +++ b/vector/src/androidTest/java/im/vector/app/features/roomdirectory/ExplicitTermFilterTest.kt @@ -125,4 +125,4 @@ class ExplicitTermFilterTest : InstrumentedTest { fun canSearchForTrue() { explicitTermFilter.canSearchFor("android") shouldBe true } -} \ No newline at end of file +} diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/ExplicitTermFilter.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/ExplicitTermFilter.kt index 8abccbbe5e..0d1f55485c 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/ExplicitTermFilter.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/ExplicitTermFilter.kt @@ -27,6 +27,7 @@ class ExplicitTermFilter @Inject constructor( .orEmpty() .split("\n") .map { it.trim() } + .distinct() .filter { it.isNotEmpty() } private val explicitContentRegex = explicitTerms From a4a37777229fd4fe6afd6e5beeba4f9342850699 Mon Sep 17 00:00:00 2001 From: oogm Date: Thu, 8 Apr 2021 22:14:41 +0200 Subject: [PATCH 22/49] Update import_emojis.py to retain keyword order --- tools/import_emojis.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tools/import_emojis.py b/tools/import_emojis.py index a626a5a260..30db3b0b13 100755 --- a/tools/import_emojis.py +++ b/tools/import_emojis.py @@ -114,11 +114,13 @@ for emoji in emoji_picker_datasource_emojis: # If additional keywords exist, add them to emoji_picker_datasource_emojis # Avoid duplicates and keep order. Put official unicode.com keywords first and extend up with emojilib ones. - new_keywords = OrderedDict.fromkeys(emoji_picker_datasource_emojis[emoji]["j"] + emoji_additional_keywords).keys() + new_keywords = OrderedDict.fromkeys(emoji_picker_datasource_emojis[emoji]["j"] + emoji_additional_keywords) # Remove the ones derived from the unicode name - new_keywords = new_keywords - {emoji.replace("-", "_")} - {emoji.replace("-", " ")} - {emoji_name} + for keyword in [emoji.replace("-", "_")] + [emoji.replace("-", " ")] + [emoji_name]: + if keyword in new_keywords: + new_keywords.pop(keyword) # Write new keywords back - emoji_picker_datasource_emojis[emoji]["j"] = list(new_keywords) + emoji_picker_datasource_emojis[emoji]["j"] = list(new_keywords.keys()) # Filter out components from unicode 13.1 (as they are not suitable for single-emoji reactions) emoji_picker_datasource['categories'] = [x for x in emoji_picker_datasource['categories'] if x['id'] != 'component'] From 327e75e8e59cdcbbf628ff0e262def8606b6cf7c Mon Sep 17 00:00:00 2001 From: oogm Date: Thu, 8 Apr 2021 22:26:31 +0200 Subject: [PATCH 23/49] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 3362588cf8..e419cccba7 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -28,6 +28,7 @@ Bugfix πŸ›: - Fix avatar rendering for DMs, after initial sync (#2693) - Fix mandatory parameter in API (#3065) - If signout request fails, do not start LoginActivity, but restart the app (#3099) + - Retain keyword order in emoji import script (#3147) Translations πŸ—£: - From b5b651244b8af586eb7a57aa039781fdb2c0a857 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 9 Apr 2021 07:25:53 +0000 Subject: [PATCH 24/49] Bump firebase-messaging from 21.0.1 to 21.1.0 Bumps firebase-messaging from 21.0.1 to 21.1.0. Signed-off-by: dependabot[bot] --- vector/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/build.gradle b/vector/build.gradle index d5a105d893..393db17033 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -423,7 +423,7 @@ dependencies { kapt "com.google.dagger:dagger-compiler:$daggerVersion" // gplay flavor only - gplayImplementation('com.google.firebase:firebase-messaging:21.0.1') { + gplayImplementation('com.google.firebase:firebase-messaging:21.1.0') { exclude group: 'com.google.firebase', module: 'firebase-core' exclude group: 'com.google.firebase', module: 'firebase-analytics' exclude group: 'com.google.firebase', module: 'firebase-measurement-connector' From 5311bacfff8eb5464a8032e8967f883b067f1a57 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 9 Apr 2021 10:26:28 +0200 Subject: [PATCH 25/49] ktlint --- .../crypto/verification/IncomingVerificationRequestHandler.kt | 1 - .../java/im/vector/app/features/home/HomeActivityViewModel.kt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/crypto/verification/IncomingVerificationRequestHandler.kt b/vector/src/main/java/im/vector/app/features/crypto/verification/IncomingVerificationRequestHandler.kt index 45feaa47c3..0b93120b52 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/verification/IncomingVerificationRequestHandler.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/verification/IncomingVerificationRequestHandler.kt @@ -119,7 +119,6 @@ class IncomingVerificationRequestHandler @Inject constructor( Timber.v("## SAS verificationRequestCreated ${pr.transactionId}") // For incoming request we should prompt (if not in activity where this request apply) if (pr.isIncoming) { - // if it's a self verification for my devices, we can discard the review login alert // if not this request will be underneath and not visible by the user... // it will re-appear later diff --git a/vector/src/main/java/im/vector/app/features/home/HomeActivityViewModel.kt b/vector/src/main/java/im/vector/app/features/home/HomeActivityViewModel.kt index 523898e0f5..447a567cf4 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeActivityViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeActivityViewModel.kt @@ -203,7 +203,7 @@ class HomeActivityViewModel @AssistedInject constructor( _viewEvents.post( HomeActivityViewEvents.OnNewSession( session.getUser(session.myUserId)?.toMatrixItem(), - //Always send request instead of waiting for an incoming as per recent EW changes + // Always send request instead of waiting for an incoming as per recent EW changes false ) ) From 93bc5abcb58f47b7574c7395cbd0bebf1b24d0cd Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 9 Apr 2021 10:32:11 +0200 Subject: [PATCH 26/49] Update the Emoji source file --- CHANGES.md | 2 +- vector/src/main/res/raw/emoji_picker_datasource.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index e419cccba7..996e59a00c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -28,7 +28,7 @@ Bugfix πŸ›: - Fix avatar rendering for DMs, after initial sync (#2693) - Fix mandatory parameter in API (#3065) - If signout request fails, do not start LoginActivity, but restart the app (#3099) - - Retain keyword order in emoji import script (#3147) + - Retain keyword order in emoji import script, and update the generated file (#3147) Translations πŸ—£: - diff --git a/vector/src/main/res/raw/emoji_picker_datasource.json b/vector/src/main/res/raw/emoji_picker_datasource.json index cc676a4dd0..6aa3799cf0 100644 --- a/vector/src/main/res/raw/emoji_picker_datasource.json +++ b/vector/src/main/res/raw/emoji_picker_datasource.json @@ -1 +1 @@ -{"compressed":true,"categories":[{"id":"smileys_&_emotion","name":"Smileys & Emotion","emojis":["grinning-face","grinning-face-with-big-eyes","grinning-face-with-smiling-eyes","beaming-face-with-smiling-eyes","grinning-squinting-face","grinning-face-with-sweat","rolling-on-the-floor-laughing","face-with-tears-of-joy","slightly-smiling-face","upsidedown-face","winking-face","smiling-face-with-smiling-eyes","smiling-face-with-halo","smiling-face-with-hearts","smiling-face-with-hearteyes","starstruck","face-blowing-a-kiss","kissing-face","smiling-face","kissing-face-with-closed-eyes","kissing-face-with-smiling-eyes","smiling-face-with-tear","face-savoring-food","face-with-tongue","winking-face-with-tongue","zany-face","squinting-face-with-tongue","moneymouth-face","hugging-face","face-with-hand-over-mouth","shushing-face","thinking-face","zippermouth-face","face-with-raised-eyebrow","neutral-face","expressionless-face","face-without-mouth","face-in-clouds","smirking-face","unamused-face","face-with-rolling-eyes","grimacing-face","face-exhaling","lying-face","relieved-face","pensive-face","sleepy-face","drooling-face","sleeping-face","face-with-medical-mask","face-with-thermometer","face-with-headbandage","nauseated-face","face-vomiting","sneezing-face","hot-face","cold-face","woozy-face","knockedout-face","face-with-spiral-eyes","exploding-head","cowboy-hat-face","partying-face","disguised-face","smiling-face-with-sunglasses","nerd-face","face-with-monocle","confused-face","worried-face","slightly-frowning-face","frowning-face","face-with-open-mouth","hushed-face","astonished-face","flushed-face","pleading-face","frowning-face-with-open-mouth","anguished-face","fearful-face","anxious-face-with-sweat","sad-but-relieved-face","crying-face","loudly-crying-face","face-screaming-in-fear","confounded-face","persevering-face","disappointed-face","downcast-face-with-sweat","weary-face","tired-face","yawning-face","face-with-steam-from-nose","pouting-face","angry-face","face-with-symbols-on-mouth","smiling-face-with-horns","angry-face-with-horns","skull","skull-and-crossbones","pile-of-poo","clown-face","ogre","goblin","ghost","alien","alien-monster","robot","grinning-cat","grinning-cat-with-smiling-eyes","cat-with-tears-of-joy","smiling-cat-with-hearteyes","cat-with-wry-smile","kissing-cat","weary-cat","crying-cat","pouting-cat","seenoevil-monkey","hearnoevil-monkey","speaknoevil-monkey","kiss-mark","love-letter","heart-with-arrow","heart-with-ribbon","sparkling-heart","growing-heart","beating-heart","revolving-hearts","two-hearts","heart-decoration","heart-exclamation","broken-heart","heart-on-fire","mending-heart","red-heart","orange-heart","yellow-heart","green-heart","blue-heart","purple-heart","brown-heart","black-heart","white-heart","hundred-points","anger-symbol","collision","dizzy","sweat-droplets","dashing-away","hole","bomb","speech-balloon","eye-in-speech-bubble","left-speech-bubble","right-anger-bubble","thought-balloon","zzz"]},{"id":"people_&_body","name":"People & Body","emojis":["waving-hand","raised-back-of-hand","hand-with-fingers-splayed","raised-hand","vulcan-salute","ok-hand","pinched-fingers","pinching-hand","victory-hand","crossed-fingers","loveyou-gesture","sign-of-the-horns","call-me-hand","backhand-index-pointing-left","backhand-index-pointing-right","backhand-index-pointing-up","middle-finger","backhand-index-pointing-down","index-pointing-up","thumbs-up","thumbs-down","raised-fist","oncoming-fist","leftfacing-fist","rightfacing-fist","clapping-hands","raising-hands","open-hands","palms-up-together","handshake","folded-hands","writing-hand","nail-polish","selfie","flexed-biceps","mechanical-arm","mechanical-leg","leg","foot","ear","ear-with-hearing-aid","nose","brain","anatomical-heart","lungs","tooth","bone","eyes","eye","tongue","mouth","baby","child","boy","girl","person","person-blond-hair","man","person-beard","man-beard","woman-beard","man-red-hair","man-curly-hair","man-white-hair","man-bald","woman","woman-red-hair","person-red-hair","woman-curly-hair","person-curly-hair","woman-white-hair","person-white-hair","woman-bald","person-bald","woman-blond-hair","man-blond-hair","older-person","old-man","old-woman","person-frowning","man-frowning","woman-frowning","person-pouting","man-pouting","woman-pouting","person-gesturing-no","man-gesturing-no","woman-gesturing-no","person-gesturing-ok","man-gesturing-ok","woman-gesturing-ok","person-tipping-hand","man-tipping-hand","woman-tipping-hand","person-raising-hand","man-raising-hand","woman-raising-hand","deaf-person","deaf-man","deaf-woman","person-bowing","man-bowing","woman-bowing","person-facepalming","man-facepalming","woman-facepalming","person-shrugging","man-shrugging","woman-shrugging","health-worker","man-health-worker","woman-health-worker","student","man-student","woman-student","teacher","man-teacher","woman-teacher","judge","man-judge","woman-judge","farmer","man-farmer","woman-farmer","cook","man-cook","woman-cook","mechanic","man-mechanic","woman-mechanic","factory-worker","man-factory-worker","woman-factory-worker","office-worker","man-office-worker","woman-office-worker","scientist","man-scientist","woman-scientist","technologist","man-technologist","woman-technologist","singer","man-singer","woman-singer","artist","man-artist","woman-artist","pilot","man-pilot","woman-pilot","astronaut","man-astronaut","woman-astronaut","firefighter","man-firefighter","woman-firefighter","police-officer","man-police-officer","woman-police-officer","detective","man-detective","woman-detective","guard","man-guard","woman-guard","ninja","construction-worker","man-construction-worker","woman-construction-worker","prince","princess","person-wearing-turban","man-wearing-turban","woman-wearing-turban","person-with-skullcap","woman-with-headscarf","person-in-tuxedo","man-in-tuxedo","woman-in-tuxedo","person-with-veil","man-with-veil","woman-with-veil","pregnant-woman","breastfeeding","woman-feeding-baby","man-feeding-baby","person-feeding-baby","baby-angel","santa-claus","mrs-claus","mx-claus","superhero","man-superhero","woman-superhero","supervillain","man-supervillain","woman-supervillain","mage","man-mage","woman-mage","fairy","man-fairy","woman-fairy","vampire","man-vampire","woman-vampire","merperson","merman","mermaid","elf","man-elf","woman-elf","genie","man-genie","woman-genie","zombie","man-zombie","woman-zombie","person-getting-massage","man-getting-massage","woman-getting-massage","person-getting-haircut","man-getting-haircut","woman-getting-haircut","person-walking","man-walking","woman-walking","person-standing","man-standing","woman-standing","person-kneeling","man-kneeling","woman-kneeling","person-with-white-cane","man-with-white-cane","woman-with-white-cane","person-in-motorized-wheelchair","man-in-motorized-wheelchair","woman-in-motorized-wheelchair","person-in-manual-wheelchair","man-in-manual-wheelchair","woman-in-manual-wheelchair","person-running","man-running","woman-running","woman-dancing","man-dancing","person-in-suit-levitating","people-with-bunny-ears","men-with-bunny-ears","women-with-bunny-ears","person-in-steamy-room","man-in-steamy-room","woman-in-steamy-room","person-climbing","man-climbing","woman-climbing","person-fencing","horse-racing","skier","snowboarder","person-golfing","man-golfing","woman-golfing","person-surfing","man-surfing","woman-surfing","person-rowing-boat","man-rowing-boat","woman-rowing-boat","person-swimming","man-swimming","woman-swimming","person-bouncing-ball","man-bouncing-ball","woman-bouncing-ball","person-lifting-weights","man-lifting-weights","woman-lifting-weights","person-biking","man-biking","woman-biking","person-mountain-biking","man-mountain-biking","woman-mountain-biking","person-cartwheeling","man-cartwheeling","woman-cartwheeling","people-wrestling","men-wrestling","women-wrestling","person-playing-water-polo","man-playing-water-polo","woman-playing-water-polo","person-playing-handball","man-playing-handball","woman-playing-handball","person-juggling","man-juggling","woman-juggling","person-in-lotus-position","man-in-lotus-position","woman-in-lotus-position","person-taking-bath","person-in-bed","people-holding-hands","women-holding-hands","woman-and-man-holding-hands","men-holding-hands","kiss","kiss-woman-man","kiss-man-man","kiss-woman-woman","couple-with-heart","couple-with-heart-woman-man","couple-with-heart-man-man","couple-with-heart-woman-woman","family","family-man-woman-boy","family-man-woman-girl","family-man-woman-girl-boy","family-man-woman-boy-boy","family-man-woman-girl-girl","family-man-man-boy","family-man-man-girl","family-man-man-girl-boy","family-man-man-boy-boy","family-man-man-girl-girl","family-woman-woman-boy","family-woman-woman-girl","family-woman-woman-girl-boy","family-woman-woman-boy-boy","family-woman-woman-girl-girl","family-man-boy","family-man-boy-boy","family-man-girl","family-man-girl-boy","family-man-girl-girl","family-woman-boy","family-woman-boy-boy","family-woman-girl","family-woman-girl-boy","family-woman-girl-girl","speaking-head","bust-in-silhouette","busts-in-silhouette","people-hugging","footprints"]},{"id":"animals_&_nature","name":"Animals & Nature","emojis":["monkey-face","monkey","gorilla","orangutan","dog-face","dog","guide-dog","service-dog","poodle","wolf","fox","raccoon","cat-face","cat","black-cat","lion","tiger-face","tiger","leopard","horse-face","horse","unicorn","zebra","deer","bison","cow-face","ox","water-buffalo","cow","pig-face","pig","boar","pig-nose","ram","ewe","goat","camel","twohump-camel","llama","giraffe","elephant","mammoth","rhinoceros","hippopotamus","mouse-face","mouse","rat","hamster","rabbit-face","rabbit","chipmunk","beaver","hedgehog","bat","bear","polar-bear","koala","panda","sloth","otter","skunk","kangaroo","badger","paw-prints","turkey","chicken","rooster","hatching-chick","baby-chick","frontfacing-baby-chick","bird","penguin","dove","eagle","duck","swan","owl","dodo","feather","flamingo","peacock","parrot","frog","crocodile","turtle","lizard","snake","dragon-face","dragon","sauropod","trex","spouting-whale","whale","dolphin","seal","fish","tropical-fish","blowfish","shark","octopus","spiral-shell","snail","butterfly","bug","ant","honeybee","beetle","lady-beetle","cricket","cockroach","spider","spider-web","scorpion","mosquito","fly","worm","microbe","bouquet","cherry-blossom","white-flower","rosette","rose","wilted-flower","hibiscus","sunflower","blossom","tulip","seedling","potted-plant","evergreen-tree","deciduous-tree","palm-tree","cactus","sheaf-of-rice","herb","shamrock","four-leaf-clover","maple-leaf","fallen-leaf","leaf-fluttering-in-wind"]},{"id":"food_&_drink","name":"Food & Drink","emojis":["grapes","melon","watermelon","tangerine","lemon","banana","pineapple","mango","red-apple","green-apple","pear","peach","cherries","strawberry","blueberries","kiwi-fruit","tomato","olive","coconut","avocado","eggplant","potato","carrot","ear-of-corn","hot-pepper","bell-pepper","cucumber","leafy-green","broccoli","garlic","onion","mushroom","peanuts","chestnut","bread","croissant","baguette-bread","flatbread","pretzel","bagel","pancakes","waffle","cheese-wedge","meat-on-bone","poultry-leg","cut-of-meat","bacon","hamburger","french-fries","pizza","hot-dog","sandwich","taco","burrito","tamale","stuffed-flatbread","falafel","egg","cooking","shallow-pan-of-food","pot-of-food","fondue","bowl-with-spoon","green-salad","popcorn","butter","salt","canned-food","bento-box","rice-cracker","rice-ball","cooked-rice","curry-rice","steaming-bowl","spaghetti","roasted-sweet-potato","oden","sushi","fried-shrimp","fish-cake-with-swirl","moon-cake","dango","dumpling","fortune-cookie","takeout-box","crab","lobster","shrimp","squid","oyster","soft-ice-cream","shaved-ice","ice-cream","doughnut","cookie","birthday-cake","shortcake","cupcake","pie","chocolate-bar","candy","lollipop","custard","honey-pot","baby-bottle","glass-of-milk","hot-beverage","teapot","teacup-without-handle","sake","bottle-with-popping-cork","wine-glass","cocktail-glass","tropical-drink","beer-mug","clinking-beer-mugs","clinking-glasses","tumbler-glass","cup-with-straw","bubble-tea","beverage-box","mate","ice","chopsticks","fork-and-knife-with-plate","fork-and-knife","spoon","kitchen-knife","amphora"]},{"id":"travel_&_places","name":"Travel & Places","emojis":["globe-showing-europeafrica","globe-showing-americas","globe-showing-asiaaustralia","globe-with-meridians","world-map","map-of-japan","compass","snowcapped-mountain","mountain","volcano","mount-fuji","camping","beach-with-umbrella","desert","desert-island","national-park","stadium","classical-building","building-construction","brick","rock","wood","hut","houses","derelict-house","house","house-with-garden","office-building","japanese-post-office","post-office","hospital","bank","hotel","love-hotel","convenience-store","school","department-store","factory","japanese-castle","castle","wedding","tokyo-tower","statue-of-liberty","church","mosque","hindu-temple","synagogue","shinto-shrine","kaaba","fountain","tent","foggy","night-with-stars","cityscape","sunrise-over-mountains","sunrise","cityscape-at-dusk","sunset","bridge-at-night","hot-springs","carousel-horse","ferris-wheel","roller-coaster","barber-pole","circus-tent","locomotive","railway-car","highspeed-train","bullet-train","train","metro","light-rail","station","tram","monorail","mountain-railway","tram-car","bus","oncoming-bus","trolleybus","minibus","ambulance","fire-engine","police-car","oncoming-police-car","taxi","oncoming-taxi","automobile","oncoming-automobile","sport-utility-vehicle","pickup-truck","delivery-truck","articulated-lorry","tractor","racing-car","motorcycle","motor-scooter","manual-wheelchair","motorized-wheelchair","auto-rickshaw","bicycle","kick-scooter","skateboard","roller-skate","bus-stop","motorway","railway-track","oil-drum","fuel-pump","police-car-light","horizontal-traffic-light","vertical-traffic-light","stop-sign","construction","anchor","sailboat","canoe","speedboat","passenger-ship","ferry","motor-boat","ship","airplane","small-airplane","airplane-departure","airplane-arrival","parachute","seat","helicopter","suspension-railway","mountain-cableway","aerial-tramway","satellite","rocket","flying-saucer","bellhop-bell","luggage","hourglass-done","hourglass-not-done","watch","alarm-clock","stopwatch","timer-clock","mantelpiece-clock","twelve-oclock","twelvethirty","one-oclock","onethirty","two-oclock","twothirty","three-oclock","threethirty","four-oclock","fourthirty","five-oclock","fivethirty","six-oclock","sixthirty","seven-oclock","seventhirty","eight-oclock","eightthirty","nine-oclock","ninethirty","ten-oclock","tenthirty","eleven-oclock","eleventhirty","new-moon","waxing-crescent-moon","first-quarter-moon","waxing-gibbous-moon","full-moon","waning-gibbous-moon","last-quarter-moon","waning-crescent-moon","crescent-moon","new-moon-face","first-quarter-moon-face","last-quarter-moon-face","thermometer","sun","full-moon-face","sun-with-face","ringed-planet","star","glowing-star","shooting-star","milky-way","cloud","sun-behind-cloud","cloud-with-lightning-and-rain","sun-behind-small-cloud","sun-behind-large-cloud","sun-behind-rain-cloud","cloud-with-rain","cloud-with-snow","cloud-with-lightning","tornado","fog","wind-face","cyclone","rainbow","closed-umbrella","umbrella","umbrella-with-rain-drops","umbrella-on-ground","high-voltage","snowflake","snowman","snowman-without-snow","comet","fire","droplet","water-wave"]},{"id":"activities","name":"Activities","emojis":["jackolantern","christmas-tree","fireworks","sparkler","firecracker","sparkles","balloon","party-popper","confetti-ball","tanabata-tree","pine-decoration","japanese-dolls","carp-streamer","wind-chime","moon-viewing-ceremony","red-envelope","ribbon","wrapped-gift","reminder-ribbon","admission-tickets","ticket","military-medal","trophy","sports-medal","1st-place-medal","2nd-place-medal","3rd-place-medal","soccer-ball","baseball","softball","basketball","volleyball","american-football","rugby-football","tennis","flying-disc","bowling","cricket-game","field-hockey","ice-hockey","lacrosse","ping-pong","badminton","boxing-glove","martial-arts-uniform","goal-net","flag-in-hole","ice-skate","fishing-pole","diving-mask","running-shirt","skis","sled","curling-stone","bullseye","yoyo","kite","pool-8-ball","crystal-ball","magic-wand","nazar-amulet","video-game","joystick","slot-machine","game-die","puzzle-piece","teddy-bear","piata","nesting-dolls","spade-suit","heart-suit","diamond-suit","club-suit","chess-pawn","joker","mahjong-red-dragon","flower-playing-cards","performing-arts","framed-picture","artist-palette","thread","sewing-needle","yarn","knot"]},{"id":"objects","name":"Objects","emojis":["glasses","sunglasses","goggles","lab-coat","safety-vest","necktie","tshirt","jeans","scarf","gloves","coat","socks","dress","kimono","sari","onepiece-swimsuit","briefs","shorts","bikini","womans-clothes","purse","handbag","clutch-bag","shopping-bags","backpack","thong-sandal","mans-shoe","running-shoe","hiking-boot","flat-shoe","highheeled-shoe","womans-sandal","ballet-shoes","womans-boot","crown","womans-hat","top-hat","graduation-cap","billed-cap","military-helmet","rescue-workers-helmet","prayer-beads","lipstick","ring","gem-stone","muted-speaker","speaker-low-volume","speaker-medium-volume","speaker-high-volume","loudspeaker","megaphone","postal-horn","bell","bell-with-slash","musical-score","musical-note","musical-notes","studio-microphone","level-slider","control-knobs","microphone","headphone","radio","saxophone","accordion","guitar","musical-keyboard","trumpet","violin","banjo","drum","long-drum","mobile-phone","mobile-phone-with-arrow","telephone","telephone-receiver","pager","fax-machine","battery","electric-plug","laptop","desktop-computer","printer","keyboard","computer-mouse","trackball","computer-disk","floppy-disk","optical-disk","dvd","abacus","movie-camera","film-frames","film-projector","clapper-board","television","camera","camera-with-flash","video-camera","videocassette","magnifying-glass-tilted-left","magnifying-glass-tilted-right","candle","light-bulb","flashlight","red-paper-lantern","diya-lamp","notebook-with-decorative-cover","closed-book","open-book","green-book","blue-book","orange-book","books","notebook","ledger","page-with-curl","scroll","page-facing-up","newspaper","rolledup-newspaper","bookmark-tabs","bookmark","label","money-bag","coin","yen-banknote","dollar-banknote","euro-banknote","pound-banknote","money-with-wings","credit-card","receipt","chart-increasing-with-yen","envelope","email","incoming-envelope","envelope-with-arrow","outbox-tray","inbox-tray","package","closed-mailbox-with-raised-flag","closed-mailbox-with-lowered-flag","open-mailbox-with-raised-flag","open-mailbox-with-lowered-flag","postbox","ballot-box-with-ballot","pencil","black-nib","fountain-pen","pen","paintbrush","crayon","memo","briefcase","file-folder","open-file-folder","card-index-dividers","calendar","tearoff-calendar","spiral-notepad","spiral-calendar","card-index","chart-increasing","chart-decreasing","bar-chart","clipboard","pushpin","round-pushpin","paperclip","linked-paperclips","straight-ruler","triangular-ruler","scissors","card-file-box","file-cabinet","wastebasket","locked","unlocked","locked-with-pen","locked-with-key","key","old-key","hammer","axe","pick","hammer-and-pick","hammer-and-wrench","dagger","crossed-swords","water-pistol","boomerang","bow-and-arrow","shield","carpentry-saw","wrench","screwdriver","nut-and-bolt","gear","clamp","balance-scale","white-cane","link","chains","hook","toolbox","magnet","ladder","alembic","test-tube","petri-dish","dna","microscope","telescope","satellite-antenna","syringe","drop-of-blood","pill","adhesive-bandage","stethoscope","door","elevator","mirror","window","bed","couch-and-lamp","chair","toilet","plunger","shower","bathtub","mouse-trap","razor","lotion-bottle","safety-pin","broom","basket","roll-of-paper","bucket","soap","toothbrush","sponge","fire-extinguisher","shopping-cart","cigarette","coffin","headstone","funeral-urn","moai","placard"]},{"id":"symbols","name":"Symbols","emojis":["atm-sign","litter-in-bin-sign","potable-water","wheelchair-symbol","mens-room","womens-room","restroom","baby-symbol","water-closet","passport-control","customs","baggage-claim","left-luggage","warning","children-crossing","no-entry","prohibited","no-bicycles","no-smoking","no-littering","nonpotable-water","no-pedestrians","no-mobile-phones","no-one-under-eighteen","radioactive","biohazard","up-arrow","upright-arrow","right-arrow","downright-arrow","down-arrow","downleft-arrow","left-arrow","upleft-arrow","updown-arrow","leftright-arrow","right-arrow-curving-left","left-arrow-curving-right","right-arrow-curving-up","right-arrow-curving-down","clockwise-vertical-arrows","counterclockwise-arrows-button","back-arrow","end-arrow","on-arrow","soon-arrow","top-arrow","place-of-worship","atom-symbol","om","star-of-david","wheel-of-dharma","yin-yang","latin-cross","orthodox-cross","star-and-crescent","peace-symbol","menorah","dotted-sixpointed-star","aries","taurus","gemini","cancer","leo","virgo","libra","scorpio","sagittarius","capricorn","aquarius","pisces","ophiuchus","shuffle-tracks-button","repeat-button","repeat-single-button","play-button","fastforward-button","next-track-button","play-or-pause-button","reverse-button","fast-reverse-button","last-track-button","upwards-button","fast-up-button","downwards-button","fast-down-button","pause-button","stop-button","record-button","eject-button","cinema","dim-button","bright-button","antenna-bars","vibration-mode","mobile-phone-off","female-sign","male-sign","transgender-symbol","multiply","plus","minus","divide","infinity","double-exclamation-mark","exclamation-question-mark","red-question-mark","white-question-mark","white-exclamation-mark","red-exclamation-mark","wavy-dash","currency-exchange","heavy-dollar-sign","medical-symbol","recycling-symbol","fleurdelis","trident-emblem","name-badge","japanese-symbol-for-beginner","hollow-red-circle","check-mark-button","check-box-with-check","check-mark","cross-mark","cross-mark-button","curly-loop","double-curly-loop","part-alternation-mark","eightspoked-asterisk","eightpointed-star","sparkle","copyright","registered","trade-mark","keycap","keycap","keycap-0","keycap-1","keycap-2","keycap-3","keycap-4","keycap-5","keycap-6","keycap-7","keycap-8","keycap-9","keycap-10","input-latin-uppercase","input-latin-lowercase","input-numbers","input-symbols","input-latin-letters","a-button-blood-type","ab-button-blood-type","b-button-blood-type","cl-button","cool-button","free-button","information","id-button","circled-m","new-button","ng-button","o-button-blood-type","ok-button","p-button","sos-button","up-button","vs-button","japanese-here-button","japanese-service-charge-button","japanese-monthly-amount-button","japanese-not-free-of-charge-button","japanese-reserved-button","japanese-bargain-button","japanese-discount-button","japanese-free-of-charge-button","japanese-prohibited-button","japanese-acceptable-button","japanese-application-button","japanese-passing-grade-button","japanese-vacancy-button","japanese-congratulations-button","japanese-secret-button","japanese-open-for-business-button","japanese-no-vacancy-button","red-circle","orange-circle","yellow-circle","green-circle","blue-circle","purple-circle","brown-circle","black-circle","white-circle","red-square","orange-square","yellow-square","green-square","blue-square","purple-square","brown-square","black-large-square","white-large-square","black-medium-square","white-medium-square","black-mediumsmall-square","white-mediumsmall-square","black-small-square","white-small-square","large-orange-diamond","large-blue-diamond","small-orange-diamond","small-blue-diamond","red-triangle-pointed-up","red-triangle-pointed-down","diamond-with-a-dot","radio-button","white-square-button","black-square-button"]},{"id":"flags","name":"Flags","emojis":["chequered-flag","triangular-flag","crossed-flags","black-flag","white-flag","rainbow-flag","transgender-flag","pirate-flag","flag-ascension-island","flag-andorra","flag-united-arab-emirates","flag-afghanistan","flag-antigua--barbuda","flag-anguilla","flag-albania","flag-armenia","flag-angola","flag-antarctica","flag-argentina","flag-american-samoa","flag-austria","flag-australia","flag-aruba","flag-land-islands","flag-azerbaijan","flag-bosnia--herzegovina","flag-barbados","flag-bangladesh","flag-belgium","flag-burkina-faso","flag-bulgaria","flag-bahrain","flag-burundi","flag-benin","flag-st-barthlemy","flag-bermuda","flag-brunei","flag-bolivia","flag-caribbean-netherlands","flag-brazil","flag-bahamas","flag-bhutan","flag-bouvet-island","flag-botswana","flag-belarus","flag-belize","flag-canada","flag-cocos-keeling-islands","flag-congo--kinshasa","flag-central-african-republic","flag-congo--brazzaville","flag-switzerland","flag-cte-divoire","flag-cook-islands","flag-chile","flag-cameroon","flag-china","flag-colombia","flag-clipperton-island","flag-costa-rica","flag-cuba","flag-cape-verde","flag-curaao","flag-christmas-island","flag-cyprus","flag-czechia","flag-germany","flag-diego-garcia","flag-djibouti","flag-denmark","flag-dominica","flag-dominican-republic","flag-algeria","flag-ceuta--melilla","flag-ecuador","flag-estonia","flag-egypt","flag-western-sahara","flag-eritrea","flag-spain","flag-ethiopia","flag-european-union","flag-finland","flag-fiji","flag-falkland-islands","flag-micronesia","flag-faroe-islands","flag-france","flag-gabon","flag-united-kingdom","flag-grenada","flag-georgia","flag-french-guiana","flag-guernsey","flag-ghana","flag-gibraltar","flag-greenland","flag-gambia","flag-guinea","flag-guadeloupe","flag-equatorial-guinea","flag-greece","flag-south-georgia--south-sandwich-islands","flag-guatemala","flag-guam","flag-guineabissau","flag-guyana","flag-hong-kong-sar-china","flag-heard--mcdonald-islands","flag-honduras","flag-croatia","flag-haiti","flag-hungary","flag-canary-islands","flag-indonesia","flag-ireland","flag-israel","flag-isle-of-man","flag-india","flag-british-indian-ocean-territory","flag-iraq","flag-iran","flag-iceland","flag-italy","flag-jersey","flag-jamaica","flag-jordan","flag-japan","flag-kenya","flag-kyrgyzstan","flag-cambodia","flag-kiribati","flag-comoros","flag-st-kitts--nevis","flag-north-korea","flag-south-korea","flag-kuwait","flag-cayman-islands","flag-kazakhstan","flag-laos","flag-lebanon","flag-st-lucia","flag-liechtenstein","flag-sri-lanka","flag-liberia","flag-lesotho","flag-lithuania","flag-luxembourg","flag-latvia","flag-libya","flag-morocco","flag-monaco","flag-moldova","flag-montenegro","flag-st-martin","flag-madagascar","flag-marshall-islands","flag-north-macedonia","flag-mali","flag-myanmar-burma","flag-mongolia","flag-macao-sar-china","flag-northern-mariana-islands","flag-martinique","flag-mauritania","flag-montserrat","flag-malta","flag-mauritius","flag-maldives","flag-malawi","flag-mexico","flag-malaysia","flag-mozambique","flag-namibia","flag-new-caledonia","flag-niger","flag-norfolk-island","flag-nigeria","flag-nicaragua","flag-netherlands","flag-norway","flag-nepal","flag-nauru","flag-niue","flag-new-zealand","flag-oman","flag-panama","flag-peru","flag-french-polynesia","flag-papua-new-guinea","flag-philippines","flag-pakistan","flag-poland","flag-st-pierre--miquelon","flag-pitcairn-islands","flag-puerto-rico","flag-palestinian-territories","flag-portugal","flag-palau","flag-paraguay","flag-qatar","flag-runion","flag-romania","flag-serbia","flag-russia","flag-rwanda","flag-saudi-arabia","flag-solomon-islands","flag-seychelles","flag-sudan","flag-sweden","flag-singapore","flag-st-helena","flag-slovenia","flag-svalbard--jan-mayen","flag-slovakia","flag-sierra-leone","flag-san-marino","flag-senegal","flag-somalia","flag-suriname","flag-south-sudan","flag-so-tom--prncipe","flag-el-salvador","flag-sint-maarten","flag-syria","flag-eswatini","flag-tristan-da-cunha","flag-turks--caicos-islands","flag-chad","flag-french-southern-territories","flag-togo","flag-thailand","flag-tajikistan","flag-tokelau","flag-timorleste","flag-turkmenistan","flag-tunisia","flag-tonga","flag-turkey","flag-trinidad--tobago","flag-tuvalu","flag-taiwan","flag-tanzania","flag-ukraine","flag-uganda","flag-us-outlying-islands","flag-united-nations","flag-united-states","flag-uruguay","flag-uzbekistan","flag-vatican-city","flag-st-vincent--grenadines","flag-venezuela","flag-british-virgin-islands","flag-us-virgin-islands","flag-vietnam","flag-vanuatu","flag-wallis--futuna","flag-samoa","flag-kosovo","flag-yemen","flag-mayotte","flag-south-africa","flag-zambia","flag-zimbabwe","flag-england","flag-scotland","flag-wales"]}],"emojis":{"grinning-face":{"a":"Grinning Face","b":"1F600","j":["grin","joy",":D","smile","happy","face"]},"grinning-face-with-big-eyes":{"a":"Grinning Face with Big Eyes","b":"1F603","j":["mouth","open","joy",":)",":D","funny","smile","happy","face","haha"]},"grinning-face-with-smiling-eyes":{"a":"Grinning Face with Smiling Eyes","b":"1F604","j":["mouth","open","eye","joy",":)","like",":D","funny","smile","happy","laugh","face","haha"]},"beaming-face-with-smiling-eyes":{"a":"Beaming Face with Smiling Eyes","b":"1F601","j":["grin","joy","eye","smile","kawaii","happy","face"]},"grinning-squinting-face":{"a":"Grinning Squinting Face","b":"1F606","j":["mouth","lol","joy","glad","XD","haha","smile","happy","laugh","face","satisfied"]},"grinning-face-with-sweat":{"a":"Grinning Face with Sweat","b":"1F605","j":["relief","open","sweat","hot","smile","cold","happy","laugh","face"]},"rolling-on-the-floor-laughing":{"a":"Rolling on the Floor Laughing","b":"1F923","j":["floor","lol","rolling","rotfl","rofl","laughing","laugh","face","haha"]},"face-with-tears-of-joy":{"a":"Face with Tears of Joy","b":"1F602","j":["tears","weep","tear","cry","joy","happytears","happy","laugh","face","haha"]},"slightly-smiling-face":{"a":"Slightly Smiling Face","b":"1F642","j":["smile","face"]},"upsidedown-face":{"a":"Upside-Down Face","b":"1F643","j":["upside_down_face","flipped","upside-down","smile","face","silly"]},"winking-face":{"a":"Winking Face","b":"1F609","j":["mischievous",";)","wink","eye","smile","secret","happy","face"]},"smiling-face-with-smiling-eyes":{"a":"Smiling Face with Smiling Eyes","b":"1F60A","j":["blush","eye","joy","smile","embarrassed","shy","crush","happy","flushed","face"]},"smiling-face-with-halo":{"a":"Smiling Face with Halo","b":"1F607","j":["halo","fantasy","innocent","angel","face","heaven"]},"smiling-face-with-hearts":{"a":"Smiling Face with Hearts","b":"1F970","j":["infatuation","hearts","love","like","valentines","affection","in love","crush","adore","face"]},"smiling-face-with-hearteyes":{"a":"Smiling Face with Heart-Eyes","b":"1F60D","j":["heart","smiling face with heart-eyes","eye","love","infatuation","like","affection","smile","valentines","smiling_face_with_heart_eyes","crush","face"]},"starstruck":{"a":"Star-Struck","b":"1F929","j":["starry-eyed","eyes","star_struck","grinning","smile","star-struck","starry","face","star"]},"face-blowing-a-kiss":{"a":"Face Blowing a Kiss","b":"1F618","j":["infatuation","love","kiss","like","valentines","affection","face"]},"kissing-face":{"a":"Kissing Face","b":"1F617","j":["3","infatuation","kiss","love","like","valentines","face"]},"smiling-face":{"a":"Smiling Face","b":"263A","j":["massage","outlined","blush","smile","happiness","relaxed","face"]},"kissing-face-with-closed-eyes":{"a":"Kissing Face with Closed Eyes","b":"1F61A","j":["closed","infatuation","eye","kiss","love","like","valentines","affection","face"]},"kissing-face-with-smiling-eyes":{"a":"Kissing Face with Smiling Eyes","b":"1F619","j":["infatuation","eye","kiss","valentines","smile","affection","face"]},"smiling-face-with-tear":{"a":"Smiling Face with Tear","b":"1F972","j":["touched","sad","grateful","tear","relieved","cry","smiling","proud","pretend"]},"face-savoring-food":{"a":"Face Savoring Food","b":"1F60B","j":["joy","nom","tongue","savouring","smile","delicious","yummy","yum","happy","face","silly"]},"face-with-tongue":{"a":"Face with Tongue","b":"1F61B","j":["prank","mischievous","playful","childish","tongue","smile","face"]},"winking-face-with-tongue":{"a":"Winking Face with Tongue","b":"1F61C","j":["prank","mischievous","playful","childish","wink","eye","tongue","smile","joke","face"]},"zany-face":{"a":"Zany Face","b":"1F92A","j":["eye","small","large","crazy","goofy","face"]},"squinting-face-with-tongue":{"a":"Squinting Face with Tongue","b":"1F61D","j":["prank","mischievous","taste","playful","eye","tongue","horrible","smile","face"]},"moneymouth-face":{"a":"Money-Mouth Face","b":"1F911","j":["mouth","dollar","money-mouth face","money","rich","face","money_mouth_face"]},"hugging-face":{"a":"Hugging Face","b":"1F917","j":["hugging","smile","hug","face"]},"face-with-hand-over-mouth":{"a":"Face with Hand over Mouth","b":"1F92D","j":["surprise","whoops","shock","face","sudden realization"]},"shushing-face":{"a":"Shushing Face","b":"1F92B","j":["shhh","shush","quiet","face"]},"thinking-face":{"a":"Thinking Face","b":"1F914","j":["consider","face","thinking","think","hmmm"]},"zippermouth-face":{"a":"Zipper-Mouth Face","b":"1F910","j":["zipper-mouth face","mouth","sealed","zipper_mouth_face","zipper","secret","face"]},"face-with-raised-eyebrow":{"a":"Face with Raised Eyebrow","b":"1F928","j":["disbelief","surprise","mild surprise","scepticism","disapproval","distrust","face","skeptic"]},"neutral-face":{"a":"Neutral Face","b":"1F610","j":["deadpan",":|","neutral","meh","face","indifference"]},"expressionless-face":{"a":"Expressionless Face","b":"1F611","j":["unexpressive","expressionless","-_-","deadpan","indifferent","meh","face","inexpressive"]},"face-without-mouth":{"a":"Face Without Mouth","b":"1F636","j":["mouth","silent","hellokitty","quiet","face"]},"face-in-clouds":{"a":"βŠ› Face in Clouds","b":"1F636-200D-1F32B-FE0F","j":["absentminded","face in clouds","face in the fog","head in clouds"]},"smirking-face":{"a":"Smirking Face","b":"1F60F","j":["prank","smug","mean","sarcasm","smirk","smile","face"]},"unamused-face":{"a":"Unamused Face","b":"1F612","j":["unhappy","straight face","bored","side_eye","skeptical","dubious","sarcasm","unamused","serious","unimpressed","face","indifference"]},"face-with-rolling-eyes":{"a":"Face with Rolling Eyes","b":"1F644","j":["eyeroll","frustrated","rolling","eyes","face"]},"grimacing-face":{"a":"Grimacing Face","b":"1F62C","j":["teeth","grimace","face"]},"face-exhaling":{"a":"βŠ› Face Exhaling","b":"1F62E-200D-1F4A8","j":["exhale","face exhaling","gasp","groan","relief","whisper","whistle"]},"lying-face":{"a":"Lying Face","b":"1F925","j":["lie","face","pinocchio"]},"relieved-face":{"a":"Relieved Face","b":"1F60C","j":["massage","relieved","phew","happiness","relaxed","face"]},"pensive-face":{"a":"Pensive Face","b":"1F614","j":["dejected","sad","pensive","depressed","upset","face"]},"sleepy-face":{"a":"Sleepy Face","b":"1F62A","j":["tired","rest","nap","face","sleep"]},"drooling-face":{"a":"Drooling Face","b":"1F924","j":["face","drooling"]},"sleeping-face":{"a":"Sleeping Face","b":"1F634","j":["night","sleepy","zzz","tired","face","sleep"]},"face-with-medical-mask":{"a":"Face with Medical Mask","b":"1F637","j":["sick","doctor","ill","disease","mask","cold","face"]},"face-with-thermometer":{"a":"Face with Thermometer","b":"1F912","j":["sick","thermometer","temperature","fever","ill","cold","face"]},"face-with-headbandage":{"a":"Face with Head-Bandage","b":"1F915","j":["face_with_head_bandage","injured","injury","clumsy","face with head-bandage","bandage","face","hurt"]},"nauseated-face":{"a":"Nauseated Face","b":"1F922","j":["sick","throw up","nauseated","ill","green","vomit","gross","face"]},"face-vomiting":{"a":"Face Vomiting","b":"1F92E","j":["puke","vomit","face","sick"]},"sneezing-face":{"a":"Sneezing Face","b":"1F927","j":["sick","allergy","sneeze","gesundheit","face"]},"hot-face":{"a":"Hot Face","b":"1F975","j":["red","hot","heat","feverish","heat stroke","sweating","face","red-faced"]},"cold-face":{"a":"Cold Face","b":"1F976","j":["icicles","freezing","frozen","blue-faced","frostbite","cold","face","blue"]},"woozy-face":{"a":"Woozy Face","b":"1F974","j":["dizzy","face","wavy mouth","tipsy","wavy","uneven eyes","intoxicated"]},"knockedout-face":{"a":"Knocked-out Face","b":"1F635","j":["knocked-out face","dizzy_face","dizzy","knocked out","xox","spent","unconscious","face","dead"]},"face-with-spiral-eyes":{"a":"βŠ› Face with Spiral Eyes","b":"1F635-200D-1F4AB","j":["dizzy","face with spiral eyes","hypnotized","spiral","trouble","whoa"]},"exploding-head":{"a":"Exploding Head","b":"1F92F","j":["shocked","mind","blown","mind blown","face"]},"cowboy-hat-face":{"a":"Cowboy Hat Face","b":"1F920","j":["cowboy","cowgirl","face","hat"]},"partying-face":{"a":"Partying Face","b":"1F973","j":["hat","celebration","horn","woohoo","face","party"]},"disguised-face":{"a":"Disguised Face","b":"1F978","j":["brows","glasses","incognito","moustache","disguise","nose","face","pretent"]},"smiling-face-with-sunglasses":{"a":"Smiling Face with Sunglasses","b":"1F60E","j":["cool","sunglass","sun","smile","bright","beach","summer","sunglasses","face"]},"nerd-face":{"a":"Nerd Face","b":"1F913","j":["nerdy","dork","nerd","geek","face"]},"face-with-monocle":{"a":"Face with Monocle","b":"1F9D0","j":["wealthy","stuffy","face"]},"confused-face":{"a":"Confused Face","b":"1F615","j":[":/","face","meh","confused","huh","hmmm","weird","indifference"]},"worried-face":{"a":"Worried Face","b":"1F61F","j":[":(","worried","nervous","concern","face"]},"slightly-frowning-face":{"a":"Slightly Frowning Face","b":"1F641","j":["sad","frowning","frown","disappointed","upset","face"]},"frowning-face":{"a":"Frowning Face","b":"2639","j":["sad","upset","face","frown"]},"face-with-open-mouth":{"a":"Face with Open Mouth","b":"1F62E","j":["surprise","mouth","wow","whoa","open","sympathy","impressed",":O","face"]},"hushed-face":{"a":"Hushed Face","b":"1F62F","j":["shh","woo","surprised","hushed","stunned","face"]},"astonished-face":{"a":"Astonished Face","b":"1F632","j":["shocked","poisoned","totally","surprised","astonished","xox","face"]},"flushed-face":{"a":"Flushed Face","b":"1F633","j":["blush","flattered","shy","dazed","flushed","face"]},"pleading-face":{"a":"Pleading Face","b":"1F97A","j":["begging","mercy","face","puppy eyes"]},"frowning-face-with-open-mouth":{"a":"Frowning Face with Open Mouth","b":"1F626","j":["mouth","aw","what","open","frown","face"]},"anguished-face":{"a":"Anguished Face","b":"1F627","j":["stunned","anguished","face","nervous"]},"fearful-face":{"a":"Fearful Face","b":"1F628","j":["fearful","terrified","oops","scared","fear","nervous","huh","face"]},"anxious-face-with-sweat":{"a":"Anxious Face with Sweat","b":"1F630","j":["sweat","nervous","cold","rushed","face","blue"]},"sad-but-relieved-face":{"a":"Sad but Relieved Face","b":"1F625","j":["whew","relieved","sweat","phew","disappointed","nervous","face"]},"crying-face":{"a":"Crying Face","b":"1F622","j":["sad","tears","tear",":'(","cry","depressed","upset","face"]},"loudly-crying-face":{"a":"Loudly Crying Face","b":"1F62D","j":["sad","tears","tear","cry","depressed","sob","upset","face"]},"face-screaming-in-fear":{"a":"Face Screaming in Fear","b":"1F631","j":["munch","scared","scream","omg","fear","face"]},"confounded-face":{"a":"Confounded Face","b":"1F616","j":["unwell","sick","confounded","oops",":S","confused","face"]},"persevering-face":{"a":"Persevering Face","b":"1F623","j":["sick","no","oops","upset","face","persevere"]},"disappointed-face":{"a":"Disappointed Face","b":"1F61E","j":["sad","depressed","disappointed",":(","upset","face"]},"downcast-face-with-sweat":{"a":"Downcast Face with Sweat","b":"1F613","j":["sad","exercise","sweat","hot","tired","cold","face"]},"weary-face":{"a":"Weary Face","b":"1F629","j":["sad","weary","sleepy","frustrated","tired","upset","face"]},"tired-face":{"a":"Tired Face","b":"1F62B","j":["sick","frustrated","tired","upset","whine","face"]},"yawning-face":{"a":"Yawning Face","b":"1F971","j":["","bored","yawn","tired","sleepy"]},"face-with-steam-from-nose":{"a":"Face with Steam From Nose","b":"1F624","j":["gas","won","pride","phew","proud","face","triumph"]},"pouting-face":{"a":"Pouting Face","b":"1F621","j":["despise","red","mad","hate","angry","pouting","face","rage"]},"angry-face":{"a":"Angry Face","b":"1F620","j":["annoyed","mad","frustrated","angry","anger","face"]},"face-with-symbols-on-mouth":{"a":"Face with Symbols on Mouth","b":"1F92C","j":["swearing","profanity","cursing","expletive","cussing","face"]},"smiling-face-with-horns":{"a":"Smiling Face with Horns","b":"1F608","j":["devil","horns","fairy tale","fantasy","smile","face"]},"angry-face-with-horns":{"a":"Angry Face with Horns","b":"1F47F","j":["demon","imp","devil","horns","fantasy","angry","face"]},"skull":{"a":"Skull","b":"1F480","j":["monster","skeleton","fairy tale","creepy","death","face","dead"]},"skull-and-crossbones":{"a":"Skull and Crossbones","b":"2620","j":["monster","scary","poison","skull","crossbones","deadly","evil","danger","death","face","pirate"]},"pile-of-poo":{"a":"Pile of Poo","b":"1F4A9","j":["monster","poop","dung","shitface","hankey","poo","shit","turd","face","fail"]},"clown-face":{"a":"Clown Face","b":"1F921","j":["face","clown"]},"ogre":{"a":"Ogre","b":"1F479","j":["monster","demon","devil","red","fairy tale","fantasy","troll","halloween","creepy","creature","mask","japanese","scary","face"]},"goblin":{"a":"Goblin","b":"1F47A","j":["monster","red","fairy tale","fantasy","creature","creepy","mask","japanese","scary","evil","face"]},"ghost":{"a":"Ghost","b":"1F47B","j":["monster","fairy tale","fantasy","halloween","spooky","creature","scary","face"]},"alien":{"a":"Alien","b":"1F47D","j":["paul","ufo","outer_space","UFO","extraterrestrial","fantasy","creature","face","weird"]},"alien-monster":{"a":"Alien Monster","b":"1F47E","j":["monster","ufo","arcade","alien","extraterrestrial","creature","game","face","play"]},"robot":{"a":"Robot","b":"1F916","j":["monster","machine","bot","computer","face"]},"grinning-cat":{"a":"Grinning Cat","b":"1F63A","j":["mouth","open","animal","grinning","smile","cats","happy","cat","face"]},"grinning-cat-with-smiling-eyes":{"a":"Grinning Cat with Smiling Eyes","b":"1F638","j":["grin","animal","eye","cats","smile","cat","face"]},"cat-with-tears-of-joy":{"a":"Cat with Tears of Joy","b":"1F639","j":["tears","tear","joy","animal","cats","happy","cat","face","haha"]},"smiling-cat-with-hearteyes":{"a":"Smiling Cat with Heart-Eyes","b":"1F63B","j":["heart","smiling cat with heart-eyes","smiling_cat_with_heart_eyes","eye","love","animal","like","affection","smile","cats","valentines","cat","face"]},"cat-with-wry-smile":{"a":"Cat with Wry Smile","b":"1F63C","j":["animal","ironic","smirk","smile","cats","wry","cat","face"]},"kissing-cat":{"a":"Kissing Cat","b":"1F63D","j":["animal","kiss","eye","cats","cat","face"]},"weary-cat":{"a":"Weary Cat","b":"1F640","j":["weary","cat","animal","munch","scared","surprised","scream","cats","oh","face"]},"crying-cat":{"a":"Crying Cat","b":"1F63F","j":["sad","tears","tear","weep","cry","animal","cats","upset","cat","face"]},"pouting-cat":{"a":"Pouting Cat","b":"1F63E","j":["animal","cats","pouting","cat","face"]},"seenoevil-monkey":{"a":"See-No-Evil Monkey","b":"1F648","j":["animal","see","see-no-evil monkey","face","see_no_evil_monkey","nature","forbidden","evil","monkey","haha"]},"hearnoevil-monkey":{"a":"Hear-No-Evil Monkey","b":"1F649","j":["hear-no-evil monkey","hear","monkey","animal","hear_no_evil_monkey","nature","forbidden","evil","face"]},"speaknoevil-monkey":{"a":"Speak-No-Evil Monkey","b":"1F64A","j":["speak","speak-no-evil monkey","animal","face","omg","speak_no_evil_monkey","nature","forbidden","evil","monkey"]},"kiss-mark":{"a":"Kiss Mark","b":"1F48B","j":["lips","love","kiss","like","valentines","affection","face"]},"love-letter":{"a":"Love Letter","b":"1F48C","j":["heart","letter","envelope","email","love","like","valentines","mail","affection"]},"heart-with-arrow":{"a":"Heart with Arrow","b":"1F498","j":["cupid","heart","arrow","love","like","valentines","affection"]},"heart-with-ribbon":{"a":"Heart with Ribbon","b":"1F49D","j":["ribbon","love","valentines","valentine"]},"sparkling-heart":{"a":"Sparkling Heart","b":"1F496","j":["sparkle","love","like","valentines","excited","affection"]},"growing-heart":{"a":"Growing Heart","b":"1F497","j":["pink","pulse","growing","love","like","valentines","nervous","excited","affection"]},"beating-heart":{"a":"Beating Heart","b":"1F493","j":["heartbeat","pink","heart","love","like","valentines","beating","affection","pulsating"]},"revolving-hearts":{"a":"Revolving Hearts","b":"1F49E","j":["love","like","valentines","revolving","affection"]},"two-hearts":{"a":"Two Hearts","b":"1F495","j":["heart","love","like","valentines","affection"]},"heart-decoration":{"a":"Heart Decoration","b":"1F49F","j":["purple-square","heart","love","like"]},"heart-exclamation":{"a":"Heart Exclamation","b":"2763","j":["exclamation","decoration","punctuation","love","mark"]},"broken-heart":{"a":"Broken Heart","b":"1F494","j":["sad","heart","heartbreak","break","sorry","broken"]},"heart-on-fire":{"a":"βŠ› Heart on Fire","b":"2764-FE0F-200D-1F525","j":["burn","heart","heart on fire","love","lust","sacred heart"]},"mending-heart":{"a":"βŠ› Mending Heart","b":"2764-FE0F-200D-1FA79","j":["healthier","improving","mending","mending heart","recovering","recuperating","well"]},"red-heart":{"a":"Red Heart","b":"2764","j":["heart","love","valentines","like"]},"orange-heart":{"a":"Orange Heart","b":"1F9E1","j":["love","like","orange","valentines","affection"]},"yellow-heart":{"a":"Yellow Heart","b":"1F49B","j":["yellow","love","like","valentines","affection"]},"green-heart":{"a":"Green Heart","b":"1F49A","j":["love","like","green","valentines","affection"]},"blue-heart":{"a":"Blue Heart","b":"1F499","j":["love","like","valentines","affection","blue"]},"purple-heart":{"a":"Purple Heart","b":"1F49C","j":["love","like","purple","valentines","affection"]},"brown-heart":{"a":"Brown Heart","b":"1F90E","j":["brown","coffee","heart"]},"black-heart":{"a":"Black Heart","b":"1F5A4","j":["black","wicked","evil"]},"white-heart":{"a":"White Heart","b":"1F90D","j":["heart","pure","white"]},"hundred-points":{"a":"Hundred Points","b":"1F4AF","j":["test","100","exam","score","numbers","full","quiz","hundred","century","pass","perfect"]},"anger-symbol":{"a":"Anger Symbol","b":"1F4A2","j":["mad","comic","angry"]},"collision":{"a":"Collision","b":"1F4A5","j":["explode","boom","bomb","comic","blown","explosion"]},"dizzy":{"a":"Dizzy","b":"1F4AB","j":["sparkle","magic","shoot","comic","star"]},"sweat-droplets":{"a":"Sweat Droplets","b":"1F4A6","j":["sweat","oops","water","drip","comic","splashing"]},"dashing-away":{"a":"Dashing Away","b":"1F4A8","j":["running","air","fart","shoo","wind","smoke","comic","fast","puff","dash"]},"hole":{"a":"Hole","b":"1F573","j":["embarrassing"]},"bomb":{"a":"Bomb","b":"1F4A3","j":["explode","terrorism","boom","comic","explosion"]},"speech-balloon":{"a":"Speech Balloon","b":"1F4AC","j":["chatting","dialog","speech","bubble","words","message","balloon","comic","talk"]},"eye-in-speech-bubble":{"a":"Eye in Speech Bubble","b":"1F441-FE0F-200D-1F5E8-FE0F","j":["speech bubble","info","eye","witness"]},"left-speech-bubble":{"a":"Left Speech Bubble","b":"1F5E8","j":["chatting","dialog","speech","words","message","talk"]},"right-anger-bubble":{"a":"Right Anger Bubble","b":"1F5EF","j":["mad","speech","bubble","thinking","balloon","angry","caption"]},"thought-balloon":{"a":"Thought Balloon","b":"1F4AD","j":["thought","dream","cloud","bubble","speech","thinking","balloon","comic"]},"zzz":{"a":"Zzz","b":"1F4A4","j":["dream","tired","comic","sleepy","sleep"]},"waving-hand":{"a":"Waving Hand","b":"1F44B","j":["palm","gesture","farewell","wave","hands","hello","hi","solong","waving","hand","goodbye"]},"raised-back-of-hand":{"a":"Raised Back of Hand","b":"1F91A","j":["raised","fingers","backhand"]},"hand-with-fingers-splayed":{"a":"Hand with Fingers Splayed","b":"1F590","j":["splayed","palm","finger","hand","fingers"]},"raised-hand":{"a":"Raised Hand","b":"270B","j":["stop","palm","high 5","highfive","high five","hand","fingers","ban"]},"vulcan-salute":{"a":"Vulcan Salute","b":"1F596","j":["spock","finger","hand","star trek","fingers","vulcan"]},"ok-hand":{"a":"Ok Hand","b":"1F44C","j":["ok","perfect","limbs","hand","OK","okay","fingers"]},"pinched-fingers":{"a":"Pinched Fingers","b":"1F90C","j":["pinched","small","interrogation","hand gesture","sarcastic","size","fingers","tiny"]},"pinching-hand":{"a":"Pinching Hand","b":"1F90F","j":["small","size","small amount","tiny"]},"victory-hand":{"a":"Victory Hand","b":"270C","j":["victory","ohyeah","peace","two","v","hand","fingers"]},"crossed-fingers":{"a":"Crossed Fingers","b":"1F91E","j":["lucky","cross","luck","finger","good","hand"]},"loveyou-gesture":{"a":"Love-You Gesture","b":"1F91F","j":["gesture","love-you gesture","hand","ILY","fingers","love_you_gesture"]},"sign-of-the-horns":{"a":"Sign of the Horns","b":"1F918","j":["evil_eye","sign_of_horns","horns","finger","rock_on","hand","fingers","rock-on"]},"call-me-hand":{"a":"Call Me Hand","b":"1F919","j":["hand","gesture","call","hands"]},"backhand-index-pointing-left":{"a":"Backhand Index Pointing Left","b":"1F448","j":["point","backhand","index","left","direction","finger","hand","fingers"]},"backhand-index-pointing-right":{"a":"Backhand Index Pointing Right","b":"1F449","j":["point","backhand","index","direction","right","finger","hand","fingers"]},"backhand-index-pointing-up":{"a":"Backhand Index Pointing Up","b":"1F446","j":["up","point","backhand","direction","finger","hand","fingers"]},"middle-finger":{"a":"Middle Finger","b":"1F595","j":["flipping","rude","middle","finger","hand","fingers"]},"backhand-index-pointing-down":{"a":"Backhand Index Pointing Down","b":"1F447","j":["point","backhand","direction","down","finger","hand","fingers"]},"index-pointing-up":{"a":"Index Pointing Up","b":"261D","j":["up","point","index","direction","finger","hand","fingers"]},"thumbs-up":{"a":"Thumbs Up","b":"1F44D","j":["up","cool","thumb","+1","thumbsup","awesome","like","good","accept","hand","yes","agree"]},"thumbs-down":{"a":"Thumbs Down","b":"1F44E","j":["-1","thumb","no","dislike","down","thumbsdown","hand"]},"raised-fist":{"a":"Raised Fist","b":"270A","j":["punch","fist","grasp","clenched","hand","fingers"]},"oncoming-fist":{"a":"Oncoming Fist","b":"1F44A","j":["punch","attack","fist","hit","clenched","angry","hand","violence"]},"leftfacing-fist":{"a":"Left-Facing Fist","b":"1F91B","j":["fist","left-facing fist","leftwards","left_facing_fist","hand","fistbump"]},"rightfacing-fist":{"a":"Right-Facing Fist","b":"1F91C","j":["rightwards","fist","right-facing fist","right_facing_fist","hand","fistbump"]},"clapping-hands":{"a":"Clapping Hands","b":"1F44F","j":["congrats","praise","applause","yay","hands","hand","clap"]},"raising-hands":{"a":"Raising Hands","b":"1F64C","j":["hooray","gesture","celebration","raised","yea","hands","hand"]},"open-hands":{"a":"Open Hands","b":"1F450","j":["open","butterfly","hands","hand","fingers"]},"palms-up-together":{"a":"Palms Up Together","b":"1F932","j":["gesture","hands","cupped hands","cupped","prayer"]},"handshake":{"a":"Handshake","b":"1F91D","j":["agreement","hand","meeting","shake"]},"folded-hands":{"a":"Folded Hands","b":"1F64F","j":["thanks","wish","please","high 5","hope","namaste","pray","highfive","high five","hand","ask"]},"writing-hand":{"a":"Writing Hand","b":"270D","j":["lower_left_ballpoint_pen","write","stationery","compose","hand"]},"nail-polish":{"a":"Nail Polish","b":"1F485","j":["manicure","polish","beauty","finger","fashion","nail","cosmetics","care"]},"selfie":{"a":"Selfie","b":"1F933","j":["camera","phone"]},"flexed-biceps":{"a":"Flexed Biceps","b":"1F4AA","j":["strong","hand","flex","biceps","comic","arm","summer","muscle"]},"mechanical-arm":{"a":"Mechanical Arm","b":"1F9BE","j":["accessibility","prosthetic"]},"mechanical-leg":{"a":"Mechanical Leg","b":"1F9BF","j":["accessibility","prosthetic"]},"leg":{"a":"Leg","b":"1F9B5","j":["limb","kick"]},"foot":{"a":"Foot","b":"1F9B6","j":["stomp","kick"]},"ear":{"a":"Ear","b":"1F442","j":["listen","hear","body","sound","face"]},"ear-with-hearing-aid":{"a":"Ear with Hearing Aid","b":"1F9BB","j":["accessibility","hard of hearing"]},"nose":{"a":"Nose","b":"1F443","j":["body","smell","sniff"]},"brain":{"a":"Brain","b":"1F9E0","j":["smart","intelligent"]},"anatomical-heart":{"a":"Anatomical Heart","b":"1FAC0","j":["heartbeat","heart","pulse","health","organ","anatomical","cardiology"]},"lungs":{"a":"Lungs","b":"1FAC1","j":["organ","respiration","breathe","exhalation","breath","inhalation"]},"tooth":{"a":"Tooth","b":"1F9B7","j":["teeth","dentist"]},"bone":{"a":"Bone","b":"1F9B4","j":["skeleton"]},"eyes":{"a":"Eyes","b":"1F440","j":["stalk","eye","see","peek","watch","look","face"]},"eye":{"a":"Eye","b":"1F441","j":["body","stare","see","watch","look","face"]},"tongue":{"a":"Tongue","b":"1F445","j":["body","mouth","playful"]},"mouth":{"a":"Mouth","b":"1F444","j":["lips","kiss"]},"baby":{"a":"Baby","b":"1F476","j":["young","child","girl","boy","toddler"]},"child":{"a":"Child","b":"1F9D2","j":["gender-neutral","unspecified gender","young"]},"boy":{"a":"Boy","b":"1F466","j":["male","man","teenager","young","guy"]},"girl":{"a":"Girl","b":"1F467","j":["Virgo","woman","teenager","young","female","zodiac"]},"person":{"a":"Person","b":"1F9D1","j":["gender-neutral","unspecified gender","adult"]},"person-blond-hair":{"a":"Person: Blond Hair","b":"1F471","j":["blond","blond-haired person","hair","person: blond hair","hairstyle"]},"man":{"a":"Man","b":"1F468","j":["dad","classy","adult","mustache","guy","moustache","father","sir"]},"person-beard":{"a":"Person: Beard","b":"1F9D4","j":["man_beard","beard","bewhiskered","person: beard","person"]},"man-beard":{"a":"βŠ› Man: Beard","b":"1F9D4-200D-2642-FE0F","j":["beard","man","man: beard"]},"woman-beard":{"a":"βŠ› Woman: Beard","b":"1F9D4-200D-2640-FE0F","j":["beard","woman","woman: beard"]},"man-red-hair":{"a":"Man: Red Hair","b":"1F468-200D-1F9B0","j":["man","hairstyle","adult","red hair"]},"man-curly-hair":{"a":"Man: Curly Hair","b":"1F468-200D-1F9B1","j":["man","curly hair","hairstyle","adult"]},"man-white-hair":{"a":"Man: White Hair","b":"1F468-200D-1F9B3","j":["man","old","adult","white hair","elder"]},"man-bald":{"a":"Man: Bald","b":"1F468-200D-1F9B2","j":["man","hairless","bald","adult"]},"woman":{"a":"Woman","b":"1F469","j":["female","lady","adult","girls"]},"woman-red-hair":{"a":"Woman: Red Hair","b":"1F469-200D-1F9B0","j":["woman","hairstyle","adult","red hair"]},"person-red-hair":{"a":"Person: Red Hair","b":"1F9D1-200D-1F9B0","j":["gender-neutral","unspecified gender","adult","red hair","hairstyle","person"]},"woman-curly-hair":{"a":"Woman: Curly Hair","b":"1F469-200D-1F9B1","j":["curly hair","hairstyle","woman","adult"]},"person-curly-hair":{"a":"Person: Curly Hair","b":"1F9D1-200D-1F9B1","j":["gender-neutral","unspecified gender","adult","curly hair","hairstyle","person"]},"woman-white-hair":{"a":"Woman: White Hair","b":"1F469-200D-1F9B3","j":["woman","old","adult","white hair","elder"]},"person-white-hair":{"a":"Person: White Hair","b":"1F9D1-200D-1F9B3","j":["gender-neutral","unspecified gender","old","adult","white hair","person","elder"]},"woman-bald":{"a":"Woman: Bald","b":"1F469-200D-1F9B2","j":["woman","bald","hairless","adult"]},"person-bald":{"a":"Person: Bald","b":"1F9D1-200D-1F9B2","j":["gender-neutral","bald","unspecified gender","adult","hairless","person"]},"woman-blond-hair":{"a":"Woman: Blond Hair","b":"1F471-200D-2640-FE0F","j":["blond-haired woman","woman","female","hair","girl","woman: blond hair","person","blonde"]},"man-blond-hair":{"a":"Man: Blond Hair","b":"1F471-200D-2642-FE0F","j":["blond","male","man","blond-haired man","man: blond hair","hair","guy","boy","person","blonde"]},"older-person":{"a":"Older Person","b":"1F9D3","j":["gender-neutral","unspecified gender","old","adult","senior","human","elder"]},"old-man":{"a":"Old Man","b":"1F474","j":["male","men","man","old","adult","senior","human","elder"]},"old-woman":{"a":"Old Woman","b":"1F475","j":["old","woman","adult","female","lady","senior","women","human","elder"]},"person-frowning":{"a":"Person Frowning","b":"1F64D","j":["frown","gesture","worried"]},"man-frowning":{"a":"Man Frowning","b":"1F64D-200D-2642-FE0F","j":["sad","unhappy","frowning","male","man","gesture","depressed","boy","discouraged"]},"woman-frowning":{"a":"Woman Frowning","b":"1F64D-200D-2640-FE0F","j":["sad","unhappy","frowning","gesture","woman","depressed","female","girl","discouraged"]},"person-pouting":{"a":"Person Pouting","b":"1F64E","j":["gesture","upset","pouting"]},"man-pouting":{"a":"Man Pouting","b":"1F64E-200D-2642-FE0F","j":["male","man","gesture","pouting","boy"]},"woman-pouting":{"a":"Woman Pouting","b":"1F64E-200D-2640-FE0F","j":["gesture","woman","female","girl","pouting"]},"person-gesturing-no":{"a":"Person Gesturing No","b":"1F645","j":["prohibited","gesture","hand","forbidden","decline","person gesturing NO"]},"man-gesturing-no":{"a":"Man Gesturing No","b":"1F645-200D-2642-FE0F","j":["male","nope","man","gesture","prohibited","hand","forbidden","boy","man gesturing NO"]},"woman-gesturing-no":{"a":"Woman Gesturing No","b":"1F645-200D-2640-FE0F","j":["nope","prohibited","gesture","woman","woman gesturing NO","female","girl","hand","forbidden"]},"person-gesturing-ok":{"a":"Person Gesturing Ok","b":"1F646","j":["person gesturing OK","gesture","hand","OK","agree"]},"man-gesturing-ok":{"a":"Man Gesturing Ok","b":"1F646-200D-2642-FE0F","j":["male","men","OK","man","gesture","man gesturing OK","hand","boy","human","blue"]},"woman-gesturing-ok":{"a":"Woman Gesturing Ok","b":"1F646-200D-2640-FE0F","j":["pink","OK","gesture","woman","female","woman gesturing OK","girl","hand","women","human"]},"person-tipping-hand":{"a":"Person Tipping Hand","b":"1F481","j":["information","tipping","sassy","help","hand"]},"man-tipping-hand":{"a":"Man Tipping Hand","b":"1F481-200D-2642-FE0F","j":["male","information","man","sassy","tipping hand","boy","human"]},"woman-tipping-hand":{"a":"Woman Tipping Hand","b":"1F481-200D-2640-FE0F","j":["information","woman","sassy","female","girl","tipping hand","human"]},"person-raising-hand":{"a":"Person Raising Hand","b":"1F64B","j":["gesture","raised","question","hand","happy"]},"man-raising-hand":{"a":"Man Raising Hand","b":"1F64B-200D-2642-FE0F","j":["male","man","gesture","raising hand","boy"]},"woman-raising-hand":{"a":"Woman Raising Hand","b":"1F64B-200D-2640-FE0F","j":["gesture","woman","female","raising hand","girl"]},"deaf-person":{"a":"Deaf Person","b":"1F9CF","j":["accessibility","ear","deaf","hear"]},"deaf-man":{"a":"Deaf Man","b":"1F9CF-200D-2642-FE0F","j":["man","accessibility","deaf"]},"deaf-woman":{"a":"Deaf Woman","b":"1F9CF-200D-2640-FE0F","j":["woman","deaf","accessibility"]},"person-bowing":{"a":"Person Bowing","b":"1F647","j":["bow","gesture","sorry","respectiful","apology"]},"man-bowing":{"a":"Man Bowing","b":"1F647-200D-2642-FE0F","j":["favor","male","man","gesture","sorry","apology","boy","bowing"]},"woman-bowing":{"a":"Woman Bowing","b":"1F647-200D-2640-FE0F","j":["favor","gesture","woman","sorry","apology","female","girl","bowing"]},"person-facepalming":{"a":"Person Facepalming","b":"1F926","j":["disbelief","palm","exasperation","disappointed","face"]},"man-facepalming":{"a":"Man Facepalming","b":"1F926-200D-2642-FE0F","j":["disbelief","male","exasperation","man","facepalm","boy"]},"woman-facepalming":{"a":"Woman Facepalming","b":"1F926-200D-2640-FE0F","j":["disbelief","exasperation","woman","facepalm","female","girl"]},"person-shrugging":{"a":"Person Shrugging","b":"1F937","j":["shrug","ignorance","regardless","doubt","indifference"]},"man-shrugging":{"a":"Man Shrugging","b":"1F937-200D-2642-FE0F","j":["male","shrug","ignorance","man","indifferent","confused","boy","doubt","indifference"]},"woman-shrugging":{"a":"Woman Shrugging","b":"1F937-200D-2640-FE0F","j":["shrug","ignorance","woman","indifferent","female","girl","confused","doubt","indifference"]},"health-worker":{"a":"Health Worker","b":"1F9D1-200D-2695-FE0F","j":["nurse","doctor","healthcare","hospital","therapist"]},"man-health-worker":{"a":"Man Health Worker","b":"1F468-200D-2695-FE0F","j":["nurse","man","doctor","healthcare","human","therapist"]},"woman-health-worker":{"a":"Woman Health Worker","b":"1F469-200D-2695-FE0F","j":["nurse","woman","doctor","healthcare","human","therapist"]},"student":{"a":"Student","b":"1F9D1-200D-1F393","j":["graduate","learn"]},"man-student":{"a":"Man Student","b":"1F468-200D-1F393","j":["man","student","human","graduate"]},"woman-student":{"a":"Woman Student","b":"1F469-200D-1F393","j":["woman","student","human","graduate"]},"teacher":{"a":"Teacher","b":"1F9D1-200D-1F3EB","j":["instructor","professor"]},"man-teacher":{"a":"Man Teacher","b":"1F468-200D-1F3EB","j":["man","teacher","professor","instructor","human"]},"woman-teacher":{"a":"Woman Teacher","b":"1F469-200D-1F3EB","j":["woman","teacher","professor","instructor","human"]},"judge":{"a":"Judge","b":"1F9D1-200D-2696-FE0F","j":["law","scales","justice"]},"man-judge":{"a":"Man Judge","b":"1F468-200D-2696-FE0F","j":["man","scales","court","judge","human","justice"]},"woman-judge":{"a":"Woman Judge","b":"1F469-200D-2696-FE0F","j":["woman","scales","court","judge","human","justice"]},"farmer":{"a":"Farmer","b":"1F9D1-200D-1F33E","j":["rancher","crops","gardener"]},"man-farmer":{"a":"Man Farmer","b":"1F468-200D-1F33E","j":["man","rancher","farmer","gardener","human"]},"woman-farmer":{"a":"Woman Farmer","b":"1F469-200D-1F33E","j":["rancher","woman","farmer","gardener","human"]},"cook":{"a":"Cook","b":"1F9D1-200D-1F373","j":["culinary","kitchen","chef","food"]},"man-cook":{"a":"Man Cook","b":"1F468-200D-1F373","j":["cook","human","chef","man"]},"woman-cook":{"a":"Woman Cook","b":"1F469-200D-1F373","j":["cook","woman","human","chef"]},"mechanic":{"a":"Mechanic","b":"1F9D1-200D-1F527","j":["tradesperson","plumber","electrician","worker","technician"]},"man-mechanic":{"a":"Man Mechanic","b":"1F468-200D-1F527","j":["plumber","tradesperson","wrench","man","electrician","mechanic","human"]},"woman-mechanic":{"a":"Woman Mechanic","b":"1F469-200D-1F527","j":["tradesperson","plumber","wrench","woman","electrician","mechanic","human"]},"factory-worker":{"a":"Factory Worker","b":"1F9D1-200D-1F3ED","j":["industrial","assembly","worker","factory","labor"]},"man-factory-worker":{"a":"Man Factory Worker","b":"1F468-200D-1F3ED","j":["man","industrial","assembly","worker","factory","human"]},"woman-factory-worker":{"a":"Woman Factory Worker","b":"1F469-200D-1F3ED","j":["woman","industrial","assembly","worker","factory","human"]},"office-worker":{"a":"Office Worker","b":"1F9D1-200D-1F4BC","j":["business","white-collar","architect","manager"]},"man-office-worker":{"a":"Man Office Worker","b":"1F468-200D-1F4BC","j":["business","architect","man","white-collar","human","manager"]},"woman-office-worker":{"a":"Woman Office Worker","b":"1F469-200D-1F4BC","j":["business","architect","woman","white-collar","human","manager"]},"scientist":{"a":"Scientist","b":"1F9D1-200D-1F52C","j":["chemist","chemistry","biologist","physicist","engineer"]},"man-scientist":{"a":"Man Scientist","b":"1F468-200D-1F52C","j":["man","chemist","biologist","physicist","human","engineer","scientist"]},"woman-scientist":{"a":"Woman Scientist","b":"1F469-200D-1F52C","j":["woman","chemist","biologist","physicist","human","engineer","scientist"]},"technologist":{"a":"Technologist","b":"1F9D1-200D-1F4BB","j":["inventor","software","computer","developer","coder"]},"man-technologist":{"a":"Man Technologist","b":"1F468-200D-1F4BB","j":["inventor","man","engineer","software","laptop","computer","developer","coder","technologist","human","programmer"]},"woman-technologist":{"a":"Woman Technologist","b":"1F469-200D-1F4BB","j":["inventor","woman","engineer","software","laptop","computer","developer","coder","technologist","human","programmer"]},"singer":{"a":"Singer","b":"1F9D1-200D-1F3A4","j":["actor","entertainer","performer","rock","song","artist","star"]},"man-singer":{"a":"Man Singer","b":"1F468-200D-1F3A4","j":["actor","entertainer","singer","rockstar","man","rock","human","star"]},"woman-singer":{"a":"Woman Singer","b":"1F469-200D-1F3A4","j":["actor","entertainer","singer","rockstar","woman","rock","human","star"]},"artist":{"a":"Artist","b":"1F9D1-200D-1F3A8","j":["palette","creativity","draw","painting"]},"man-artist":{"a":"Man Artist","b":"1F468-200D-1F3A8","j":["man","painter","palette","artist","human"]},"woman-artist":{"a":"Woman Artist","b":"1F469-200D-1F3A8","j":["woman","painter","palette","artist","human"]},"pilot":{"a":"Pilot","b":"1F9D1-200D-2708-FE0F","j":["airplane","plane","fly"]},"man-pilot":{"a":"Man Pilot","b":"1F468-200D-2708-FE0F","j":["man","plane","pilot","human","aviator"]},"woman-pilot":{"a":"Woman Pilot","b":"1F469-200D-2708-FE0F","j":["woman","plane","pilot","human","aviator"]},"astronaut":{"a":"Astronaut","b":"1F9D1-200D-1F680","j":["outerspace","rocket"]},"man-astronaut":{"a":"Man Astronaut","b":"1F468-200D-1F680","j":["man","space","astronaut","rocket","human"]},"woman-astronaut":{"a":"Woman Astronaut","b":"1F469-200D-1F680","j":["woman","space","astronaut","rocket","human"]},"firefighter":{"a":"Firefighter","b":"1F9D1-200D-1F692","j":["fire","firetruck"]},"man-firefighter":{"a":"Man Firefighter","b":"1F468-200D-1F692","j":["man","firetruck","firefighter","human","fireman"]},"woman-firefighter":{"a":"Woman Firefighter","b":"1F469-200D-1F692","j":["firetruck","woman","firefighter","human","fireman"]},"police-officer":{"a":"Police Officer","b":"1F46E","j":["cop","officer","police"]},"man-police-officer":{"a":"Man Police Officer","b":"1F46E-200D-2642-FE0F","j":["arrest","cop","man","911","officer","police","enforcement","legal","law"]},"woman-police-officer":{"a":"Woman Police Officer","b":"1F46E-200D-2640-FE0F","j":["arrest","cop","woman","911","female","officer","police","enforcement","legal","law"]},"detective":{"a":"Detective","b":"1F575","j":["spy","sleuth","human"]},"man-detective":{"a":"Man Detective","b":"1F575-FE0F-200D-2642-FE0F","j":["sleuth","man","spy","crime","detective"]},"woman-detective":{"a":"Woman Detective","b":"1F575-FE0F-200D-2640-FE0F","j":["sleuth","spy","woman","detective","female","human"]},"guard":{"a":"Guard","b":"1F482","j":["protect"]},"man-guard":{"a":"Man Guard","b":"1F482-200D-2642-FE0F","j":["uk","male","british","man","royal","guy","gb","guard"]},"woman-guard":{"a":"Woman Guard","b":"1F482-200D-2640-FE0F","j":["uk","british","royal","woman","female","gb","guard"]},"ninja":{"a":"Ninja","b":"1F977","j":["fighter","ninjutsu","stealth","skills","hidden","japanese"]},"construction-worker":{"a":"Construction Worker","b":"1F477","j":["hat","construction","build","worker","labor"]},"man-construction-worker":{"a":"Man Construction Worker","b":"1F477-200D-2642-FE0F","j":["male","wip","man","construction","build","guy","worker","human","labor"]},"woman-construction-worker":{"a":"Woman Construction Worker","b":"1F477-200D-2640-FE0F","j":["wip","woman","construction","build","female","worker","human","labor"]},"prince":{"a":"Prince","b":"1F934","j":["male","man","royal","crown","boy","king"]},"princess":{"a":"Princess","b":"1F478","j":["blond","queen","fairy tale","royal","woman","crown","fantasy","female","girl"]},"person-wearing-turban":{"a":"Person Wearing Turban","b":"1F473","j":["headdress","turban"]},"man-wearing-turban":{"a":"Man Wearing Turban","b":"1F473-200D-2642-FE0F","j":["male","turban","hinduism","man","indian","arabs"]},"woman-wearing-turban":{"a":"Woman Wearing Turban","b":"1F473-200D-2640-FE0F","j":["turban","hinduism","woman","female","indian","arabs"]},"person-with-skullcap":{"a":"Person with Skullcap","b":"1F472","j":["male","hat","cap","man_with_skullcap","skullcap","chinese","gua pi mao","boy","person"]},"woman-with-headscarf":{"a":"Woman with Headscarf","b":"1F9D5","j":["hijab","head kerchief","mantilla","bandana","female","tichel","headscarf"]},"person-in-tuxedo":{"a":"Person in Tuxedo","b":"1F935","j":["wedding","marriage","couple","groom","tuxedo","person","man_in_tuxedo"]},"man-in-tuxedo":{"a":"Man in Tuxedo","b":"1F935-200D-2642-FE0F","j":["man","tuxedo","fashion","formal"]},"woman-in-tuxedo":{"a":"Woman in Tuxedo","b":"1F935-200D-2640-FE0F","j":["woman","tuxedo","fashion","formal"]},"person-with-veil":{"a":"Person with Veil","b":"1F470","j":["bride","wedding","veil","marriage","woman","couple","bride_with_veil","person"]},"man-with-veil":{"a":"Man with Veil","b":"1F470-200D-2642-FE0F","j":["man","marriage","wedding","veil"]},"woman-with-veil":{"a":"Woman with Veil","b":"1F470-200D-2640-FE0F","j":["woman","marriage","wedding","veil"]},"pregnant-woman":{"a":"Pregnant Woman","b":"1F930","j":["woman","pregnant","baby"]},"breastfeeding":{"a":"Breast-Feeding","b":"1F931","j":["breast","breast-feeding","breast_feeding","nursing","baby"]},"woman-feeding-baby":{"a":"Woman Feeding Baby","b":"1F469-200D-1F37C","j":["food","birth","woman","feeding","nursing","baby"]},"man-feeding-baby":{"a":"Man Feeding Baby","b":"1F468-200D-1F37C","j":["food","birth","man","feeding","nursing","baby"]},"person-feeding-baby":{"a":"Person Feeding Baby","b":"1F9D1-200D-1F37C","j":["food","birth","feeding","nursing","baby","person"]},"baby-angel":{"a":"Baby Angel","b":"1F47C","j":["fairy tale","halo","fantasy","wings","baby","angel","face","heaven"]},"santa-claus":{"a":"Santa Claus","b":"1F385","j":["xmas","male","festival","man","father christmas","celebration","santa","Christmas","claus","father"]},"mrs-claus":{"a":"Mrs. Claus","b":"1F936","j":["xmas","mother","Mrs.","woman","celebration","female","mother christmas","Christmas","claus"]},"mx-claus":{"a":"Mx Claus","b":"1F9D1-200D-1F384","j":["Claus, christmas","christmas"]},"superhero":{"a":"Superhero","b":"1F9B8","j":["heroine","marvel","good","superpower","hero"]},"man-superhero":{"a":"Man Superhero","b":"1F9B8-200D-2642-FE0F","j":["male","man","superpowers","good","superpower","hero"]},"woman-superhero":{"a":"Woman Superhero","b":"1F9B8-200D-2640-FE0F","j":["woman","heroine","superpowers","female","good","superpower","hero"]},"supervillain":{"a":"Supervillain","b":"1F9B9","j":["villain","marvel","criminal","superpower","evil"]},"man-supervillain":{"a":"Man Supervillain","b":"1F9B9-200D-2642-FE0F","j":["villain","male","man","criminal","superpowers","bad","superpower","evil","hero"]},"woman-supervillain":{"a":"Woman Supervillain","b":"1F9B9-200D-2640-FE0F","j":["villain","woman","heroine","criminal","female","superpowers","bad","superpower","evil"]},"mage":{"a":"Mage","b":"1F9D9","j":["sorcerer","wizard","witch","sorceress","magic"]},"man-mage":{"a":"Man Mage","b":"1F9D9-200D-2642-FE0F","j":["sorcerer","male","wizard","man","mage"]},"woman-mage":{"a":"Woman Mage","b":"1F9D9-200D-2640-FE0F","j":["woman","witch","sorceress","mage","female"]},"fairy":{"a":"Fairy","b":"1F9DA","j":["Titania","wings","Oberon","Puck","magical"]},"man-fairy":{"a":"Man Fairy","b":"1F9DA-200D-2642-FE0F","j":["man","Puck","male","Oberon"]},"woman-fairy":{"a":"Woman Fairy","b":"1F9DA-200D-2640-FE0F","j":["Titania","female","woman"]},"vampire":{"a":"Vampire","b":"1F9DB","j":["undead","blood","twilight","Dracula"]},"man-vampire":{"a":"Man Vampire","b":"1F9DB-200D-2642-FE0F","j":["male","Dracula","man","dracula","undead"]},"woman-vampire":{"a":"Woman Vampire","b":"1F9DB-200D-2640-FE0F","j":["woman","female","undead"]},"merperson":{"a":"Merperson","b":"1F9DC","j":["mermaid","sea","merman","merwoman"]},"merman":{"a":"Merman","b":"1F9DC-200D-2642-FE0F","j":["man","male","Triton","triton"]},"mermaid":{"a":"Mermaid","b":"1F9DC-200D-2640-FE0F","j":["woman","female","merwoman","ariel"]},"elf":{"a":"Elf","b":"1F9DD","j":["LOTR style","magical"]},"man-elf":{"a":"Man Elf","b":"1F9DD-200D-2642-FE0F","j":["man","male","magical"]},"woman-elf":{"a":"Woman Elf","b":"1F9DD-200D-2640-FE0F","j":["woman","female","magical"]},"genie":{"a":"Genie","b":"1F9DE","j":["(non-human color)","djinn","wishes","magical"]},"man-genie":{"a":"Man Genie","b":"1F9DE-200D-2642-FE0F","j":["man","male","djinn"]},"woman-genie":{"a":"Woman Genie","b":"1F9DE-200D-2640-FE0F","j":["woman","female","djinn"]},"zombie":{"a":"Zombie","b":"1F9DF","j":["(non-human color)","undead","walking dead","dead"]},"man-zombie":{"a":"Man Zombie","b":"1F9DF-200D-2642-FE0F","j":["walking dead","male","man","dracula","undead"]},"woman-zombie":{"a":"Woman Zombie","b":"1F9DF-200D-2640-FE0F","j":["woman","female","walking dead","undead"]},"person-getting-massage":{"a":"Person Getting Massage","b":"1F486","j":["relax","massage","face","salon"]},"man-getting-massage":{"a":"Man Getting Massage","b":"1F486-200D-2642-FE0F","j":["massage","male","man","head","boy","face"]},"woman-getting-massage":{"a":"Woman Getting Massage","b":"1F486-200D-2640-FE0F","j":["massage","woman","female","head","girl","face"]},"person-getting-haircut":{"a":"Person Getting Haircut","b":"1F487","j":["parlor","haircut","beauty","barber","hairstyle"]},"man-getting-haircut":{"a":"Man Getting Haircut","b":"1F487-200D-2642-FE0F","j":["man","boy","haircut","male"]},"woman-getting-haircut":{"a":"Woman Getting Haircut","b":"1F487-200D-2640-FE0F","j":["woman","female","haircut","girl"]},"person-walking":{"a":"Person Walking","b":"1F6B6","j":["walk","move","walking","hike"]},"man-walking":{"a":"Man Walking","b":"1F6B6-200D-2642-FE0F","j":["feet","walk","man","hike","human","steps"]},"woman-walking":{"a":"Woman Walking","b":"1F6B6-200D-2640-FE0F","j":["feet","walk","woman","hike","female","human","steps"]},"person-standing":{"a":"Person Standing","b":"1F9CD","j":["standing","stand","still"]},"man-standing":{"a":"Man Standing","b":"1F9CD-200D-2642-FE0F","j":["man","standing","still"]},"woman-standing":{"a":"Woman Standing","b":"1F9CD-200D-2640-FE0F","j":["standing","woman","still"]},"person-kneeling":{"a":"Person Kneeling","b":"1F9CE","j":["kneel","kneeling","pray","respectful"]},"man-kneeling":{"a":"Man Kneeling","b":"1F9CE-200D-2642-FE0F","j":["man","kneeling","pray","respectful"]},"woman-kneeling":{"a":"Woman Kneeling","b":"1F9CE-200D-2640-FE0F","j":["woman","pray","kneeling","respectful"]},"person-with-white-cane":{"a":"Person with White Cane","b":"1F9D1-200D-1F9AF","j":["accessibility","blind","person_with_probing_cane"]},"man-with-white-cane":{"a":"Man with White Cane","b":"1F468-200D-1F9AF","j":["man","accessibility","blind","man_with_probing_cane"]},"woman-with-white-cane":{"a":"Woman with White Cane","b":"1F469-200D-1F9AF","j":["woman","blind","woman_with_probing_cane","accessibility"]},"person-in-motorized-wheelchair":{"a":"Person in Motorized Wheelchair","b":"1F9D1-200D-1F9BC","j":["accessibility","disability","wheelchair"]},"man-in-motorized-wheelchair":{"a":"Man in Motorized Wheelchair","b":"1F468-200D-1F9BC","j":["man","accessibility","disability","wheelchair"]},"woman-in-motorized-wheelchair":{"a":"Woman in Motorized Wheelchair","b":"1F469-200D-1F9BC","j":["wheelchair","woman","disability","accessibility"]},"person-in-manual-wheelchair":{"a":"Person in Manual Wheelchair","b":"1F9D1-200D-1F9BD","j":["accessibility","disability","wheelchair"]},"man-in-manual-wheelchair":{"a":"Man in Manual Wheelchair","b":"1F468-200D-1F9BD","j":["man","accessibility","disability","wheelchair"]},"woman-in-manual-wheelchair":{"a":"Woman in Manual Wheelchair","b":"1F469-200D-1F9BD","j":["wheelchair","woman","disability","accessibility"]},"person-running":{"a":"Person Running","b":"1F3C3","j":["running","move","marathon"]},"man-running":{"a":"Man Running","b":"1F3C3-200D-2642-FE0F","j":["exercise","running","man","racing","race","marathon","walking"]},"woman-running":{"a":"Woman Running","b":"1F3C3-200D-2640-FE0F","j":["exercise","running","woman","racing","race","marathon","female","walking"]},"woman-dancing":{"a":"Woman Dancing","b":"1F483","j":["dance","woman","female","dancing","girl","fun"]},"man-dancing":{"a":"Man Dancing","b":"1F57A","j":["dancer","male","dance","man","dancing","boy","fun"]},"person-in-suit-levitating":{"a":"Person in Suit Levitating","b":"1F574","j":["business","jump","hover","levitate","suit","man_in_suit_levitating","person"]},"people-with-bunny-ears":{"a":"People with Bunny Ears","b":"1F46F","j":["dancer","partying","bunny ear","costume","perform"]},"men-with-bunny-ears":{"a":"Men with Bunny Ears","b":"1F46F-200D-2642-FE0F","j":["dancer","male","bunny","men","boys","partying","bunny ear"]},"women-with-bunny-ears":{"a":"Women with Bunny Ears","b":"1F46F-200D-2640-FE0F","j":["dancer","bunny","partying","female","bunny ear","women","girls"]},"person-in-steamy-room":{"a":"Person in Steamy Room","b":"1F9D6","j":["relax","sauna","spa","steambath","hamam","steam room"]},"man-in-steamy-room":{"a":"Man in Steamy Room","b":"1F9D6-200D-2642-FE0F","j":["sauna","male","spa","man","steamroom","steam room"]},"woman-in-steamy-room":{"a":"Woman in Steamy Room","b":"1F9D6-200D-2640-FE0F","j":["sauna","spa","woman","steamroom","female","steam room"]},"person-climbing":{"a":"Person Climbing","b":"1F9D7","j":["sport","climber"]},"man-climbing":{"a":"Man Climbing","b":"1F9D7-200D-2642-FE0F","j":["male","sports","man","rock","hobby","climber"]},"woman-climbing":{"a":"Woman Climbing","b":"1F9D7-200D-2640-FE0F","j":["sports","woman","rock","hobby","female","climber"]},"person-fencing":{"a":"Person Fencing","b":"1F93A","j":["sword","fencing","sports","fencer"]},"horse-racing":{"a":"Horse Racing","b":"1F3C7","j":["racehorse","racing","animal","competition","horse","luck","betting","gambling","jockey"]},"skier":{"a":"Skier","b":"26F7","j":["ski","winter","sports","snow"]},"snowboarder":{"a":"Snowboarder","b":"1F3C2","j":["sports","snow","winter","snowboard","ski"]},"person-golfing":{"a":"Person Golfing","b":"1F3CC","j":["business","golf","sports","ball"]},"man-golfing":{"a":"Man Golfing","b":"1F3CC-FE0F-200D-2642-FE0F","j":["golf","sport","man"]},"woman-golfing":{"a":"Woman Golfing","b":"1F3CC-FE0F-200D-2640-FE0F","j":["business","sports","golf","woman","female"]},"person-surfing":{"a":"Person Surfing","b":"1F3C4","j":["sport","sea","surfing"]},"man-surfing":{"a":"Man Surfing","b":"1F3C4-200D-2642-FE0F","j":["sports","man","sea","ocean","surfing","beach","summer"]},"woman-surfing":{"a":"Woman Surfing","b":"1F3C4-200D-2640-FE0F","j":["sports","woman","ocean","sea","female","surfing","beach","summer"]},"person-rowing-boat":{"a":"Person Rowing Boat","b":"1F6A3","j":["sport","rowboat","boat","move"]},"man-rowing-boat":{"a":"Man Rowing Boat","b":"1F6A3-200D-2642-FE0F","j":["rowboat","boat","sports","man","ship","water","hobby"]},"woman-rowing-boat":{"a":"Woman Rowing Boat","b":"1F6A3-200D-2640-FE0F","j":["rowboat","boat","sports","woman","water","ship","hobby","female"]},"person-swimming":{"a":"Person Swimming","b":"1F3CA","j":["swim","sport","pool"]},"man-swimming":{"a":"Man Swimming","b":"1F3CA-200D-2642-FE0F","j":["swim","exercise","athlete","sports","man","water","summer","human"]},"woman-swimming":{"a":"Woman Swimming","b":"1F3CA-200D-2640-FE0F","j":["swim","exercise","athlete","sports","woman","water","female","summer","human"]},"person-bouncing-ball":{"a":"Person Bouncing Ball","b":"26F9","j":["human","sports","ball"]},"man-bouncing-ball":{"a":"Man Bouncing Ball","b":"26F9-FE0F-200D-2642-FE0F","j":["man","sport","ball"]},"woman-bouncing-ball":{"a":"Woman Bouncing Ball","b":"26F9-FE0F-200D-2640-FE0F","j":["sports","woman","female","ball","human"]},"person-lifting-weights":{"a":"Person Lifting Weights","b":"1F3CB","j":["exercise","sports","lifter","training","weight"]},"man-lifting-weights":{"a":"Man Lifting Weights","b":"1F3CB-FE0F-200D-2642-FE0F","j":["man","sport","weight lifter"]},"woman-lifting-weights":{"a":"Woman Lifting Weights","b":"1F3CB-FE0F-200D-2640-FE0F","j":["exercise","sports","woman","female","training","weight lifter"]},"person-biking":{"a":"Person Biking","b":"1F6B4","j":["cyclist","sport","move","biking","bicycle"]},"man-biking":{"a":"Man Biking","b":"1F6B4-200D-2642-FE0F","j":["exercise","sports","cyclist","man","bike","bicycle","biking","hipster"]},"woman-biking":{"a":"Woman Biking","b":"1F6B4-200D-2640-FE0F","j":["exercise","sports","cyclist","woman","bike","bicycle","biking","hipster","female"]},"person-mountain-biking":{"a":"Person Mountain Biking","b":"1F6B5","j":["cyclist","sport","bike","move","bicycle","mountain","bicyclist"]},"man-mountain-biking":{"a":"Man Mountain Biking","b":"1F6B5-200D-2642-FE0F","j":["transportation","cyclist","man","bike","sports","race","bicycle","mountain","human"]},"woman-mountain-biking":{"a":"Woman Mountain Biking","b":"1F6B5-200D-2640-FE0F","j":["transportation","cyclist","sports","bike","woman","race","bicycle","biking","female","mountain","human"]},"person-cartwheeling":{"a":"Person Cartwheeling","b":"1F938","j":["cartwheel","gymnastic","gymnastics","sport"]},"man-cartwheeling":{"a":"Man Cartwheeling","b":"1F938-200D-2642-FE0F","j":["cartwheel","gymnastics","man"]},"woman-cartwheeling":{"a":"Woman Cartwheeling","b":"1F938-200D-2640-FE0F","j":["cartwheel","woman","gymnastics"]},"people-wrestling":{"a":"People Wrestling","b":"1F93C","j":["sport","wrestle","wrestler"]},"men-wrestling":{"a":"Men Wrestling","b":"1F93C-200D-2642-FE0F","j":["wrestle","men","sports","wrestlers"]},"women-wrestling":{"a":"Women Wrestling","b":"1F93C-200D-2640-FE0F","j":["wrestle","women","sports","wrestlers"]},"person-playing-water-polo":{"a":"Person Playing Water Polo","b":"1F93D","j":["sport","water","polo"]},"man-playing-water-polo":{"a":"Man Playing Water Polo","b":"1F93D-200D-2642-FE0F","j":["man","water polo","sports","pool"]},"woman-playing-water-polo":{"a":"Woman Playing Water Polo","b":"1F93D-200D-2640-FE0F","j":["woman","water polo","sports","pool"]},"person-playing-handball":{"a":"Person Playing Handball","b":"1F93E","j":["sport","handball","ball"]},"man-playing-handball":{"a":"Man Playing Handball","b":"1F93E-200D-2642-FE0F","j":["man","handball","sports"]},"woman-playing-handball":{"a":"Woman Playing Handball","b":"1F93E-200D-2640-FE0F","j":["woman","handball","sports"]},"person-juggling":{"a":"Person Juggling","b":"1F939","j":["balance","juggle","skill","multitask","performance"]},"man-juggling":{"a":"Man Juggling","b":"1F939-200D-2642-FE0F","j":["balance","man","juggle","juggling","skill","multitask"]},"woman-juggling":{"a":"Woman Juggling","b":"1F939-200D-2640-FE0F","j":["balance","woman","juggle","juggling","skill","multitask"]},"person-in-lotus-position":{"a":"Person in Lotus Position","b":"1F9D8","j":["meditation","yoga","serenity","meditate"]},"man-in-lotus-position":{"a":"Man in Lotus Position","b":"1F9D8-200D-2642-FE0F","j":["meditation","yoga","male","man","mindfulness","serenity","zen"]},"woman-in-lotus-position":{"a":"Woman in Lotus Position","b":"1F9D8-200D-2640-FE0F","j":["meditation","yoga","woman","female","mindfulness","serenity","zen"]},"person-taking-bath":{"a":"Person Taking Bath","b":"1F6C0","j":["bath","bathtub","bathroom","clean","shower"]},"person-in-bed":{"a":"Person in Bed","b":"1F6CC","j":["rest","hotel","bed","sleep"]},"people-holding-hands":{"a":"People Holding Hands","b":"1F9D1-200D-1F91D-200D-1F9D1","j":["friendship","couple","hold","holding hands","hand","person"]},"women-holding-hands":{"a":"Women Holding Hands","b":"1F46D","j":["hand","pair","friendship","couple","love","like","female","holding hands","people","women","human"]},"woman-and-man-holding-hands":{"a":"Woman and Man Holding Hands","b":"1F46B","j":["dating","man","marriage","couple","love","like","valentines","hold","people","hand","human","affection","pair","woman","holding hands","date"]},"men-holding-hands":{"a":"Men Holding Hands","b":"1F46C","j":["Gemini","men","pair","man","twins","friendship","couple","love","like","holding hands","people","human","zodiac","bromance"]},"kiss":{"a":"Kiss","b":"1F48F","j":["pair","marriage","love","couple","like","valentines","dating"]},"kiss-woman-man":{"a":"Kiss: Woman, Man","b":"1F469-200D-2764-FE0F-200D-1F48B-200D-1F468","j":["man","woman","kiss","love","couple"]},"kiss-man-man":{"a":"Kiss: Man, Man","b":"1F468-200D-2764-FE0F-200D-1F48B-200D-1F468","j":["pair","man","marriage","kiss","couple","love","like","valentines","dating"]},"kiss-woman-woman":{"a":"Kiss: Woman, Woman","b":"1F469-200D-2764-FE0F-200D-1F48B-200D-1F469","j":["pair","woman","marriage","kiss","couple","love","like","valentines","dating"]},"couple-with-heart":{"a":"Couple with Heart","b":"1F491","j":["pair","marriage","love","couple","like","valentines","dating","human","affection"]},"couple-with-heart-woman-man":{"a":"Couple with Heart: Woman, Man","b":"1F469-200D-2764-FE0F-200D-1F468","j":["man","woman","love","couple with heart","couple"]},"couple-with-heart-man-man":{"a":"Couple with Heart: Man, Man","b":"1F468-200D-2764-FE0F-200D-1F468","j":["pair","man","marriage","love","couple","couple with heart","like","valentines","dating","human","affection"]},"couple-with-heart-woman-woman":{"a":"Couple with Heart: Woman, Woman","b":"1F469-200D-2764-FE0F-200D-1F469","j":["pair","woman","marriage","love","couple","couple with heart","like","valentines","dating","human","affection"]},"family":{"a":"Family","b":"1F46A","j":["mom","mother","dad","father","parents","child","home","people","human"]},"family-man-woman-boy":{"a":"Family: Man, Woman, Boy","b":"1F468-200D-1F469-200D-1F466","j":["man","woman","family","love","boy"]},"family-man-woman-girl":{"a":"Family: Man, Woman, Girl","b":"1F468-200D-1F469-200D-1F467","j":["parents","man","woman","family","child","girl","home","people","human"]},"family-man-woman-girl-boy":{"a":"Family: Man, Woman, Girl, Boy","b":"1F468-200D-1F469-200D-1F467-200D-1F466","j":["children","parents","man","woman","family","girl","home","people","boy","human"]},"family-man-woman-boy-boy":{"a":"Family: Man, Woman, Boy, Boy","b":"1F468-200D-1F469-200D-1F466-200D-1F466","j":["children","parents","man","woman","family","home","people","boy","human"]},"family-man-woman-girl-girl":{"a":"Family: Man, Woman, Girl, Girl","b":"1F468-200D-1F469-200D-1F467-200D-1F467","j":["children","parents","man","woman","family","girl","home","people","human"]},"family-man-man-boy":{"a":"Family: Man, Man, Boy","b":"1F468-200D-1F468-200D-1F466","j":["children","parents","man","family","home","people","boy","human"]},"family-man-man-girl":{"a":"Family: Man, Man, Girl","b":"1F468-200D-1F468-200D-1F467","j":["children","parents","man","family","girl","home","people","human"]},"family-man-man-girl-boy":{"a":"Family: Man, Man, Girl, Boy","b":"1F468-200D-1F468-200D-1F467-200D-1F466","j":["children","parents","man","family","girl","home","people","boy","human"]},"family-man-man-boy-boy":{"a":"Family: Man, Man, Boy, Boy","b":"1F468-200D-1F468-200D-1F466-200D-1F466","j":["children","parents","man","family","home","people","boy","human"]},"family-man-man-girl-girl":{"a":"Family: Man, Man, Girl, Girl","b":"1F468-200D-1F468-200D-1F467-200D-1F467","j":["children","parents","man","family","girl","home","people","human"]},"family-woman-woman-boy":{"a":"Family: Woman, Woman, Boy","b":"1F469-200D-1F469-200D-1F466","j":["children","parents","woman","family","home","people","boy","human"]},"family-woman-woman-girl":{"a":"Family: Woman, Woman, Girl","b":"1F469-200D-1F469-200D-1F467","j":["children","parents","woman","family","girl","home","people","human"]},"family-woman-woman-girl-boy":{"a":"Family: Woman, Woman, Girl, Boy","b":"1F469-200D-1F469-200D-1F467-200D-1F466","j":["children","parents","woman","family","girl","home","people","boy","human"]},"family-woman-woman-boy-boy":{"a":"Family: Woman, Woman, Boy, Boy","b":"1F469-200D-1F469-200D-1F466-200D-1F466","j":["children","parents","woman","family","home","people","boy","human"]},"family-woman-woman-girl-girl":{"a":"Family: Woman, Woman, Girl, Girl","b":"1F469-200D-1F469-200D-1F467-200D-1F467","j":["children","parents","woman","family","girl","home","people","human"]},"family-man-boy":{"a":"Family: Man, Boy","b":"1F468-200D-1F466","j":["man","parent","family","child","home","people","boy","human"]},"family-man-boy-boy":{"a":"Family: Man, Boy, Boy","b":"1F468-200D-1F466-200D-1F466","j":["children","man","parent","family","home","people","boy","human"]},"family-man-girl":{"a":"Family: Man, Girl","b":"1F468-200D-1F467","j":["man","parent","family","child","girl","home","people","human"]},"family-man-girl-boy":{"a":"Family: Man, Girl, Boy","b":"1F468-200D-1F467-200D-1F466","j":["children","man","parent","family","girl","home","people","boy","human"]},"family-man-girl-girl":{"a":"Family: Man, Girl, Girl","b":"1F468-200D-1F467-200D-1F467","j":["children","man","parent","family","girl","home","people","human"]},"family-woman-boy":{"a":"Family: Woman, Boy","b":"1F469-200D-1F466","j":["woman","family","parent","child","home","people","boy","human"]},"family-woman-boy-boy":{"a":"Family: Woman, Boy, Boy","b":"1F469-200D-1F466-200D-1F466","j":["children","woman","family","parent","home","people","boy","human"]},"family-woman-girl":{"a":"Family: Woman, Girl","b":"1F469-200D-1F467","j":["woman","family","parent","child","girl","home","people","human"]},"family-woman-girl-boy":{"a":"Family: Woman, Girl, Boy","b":"1F469-200D-1F467-200D-1F466","j":["children","woman","family","parent","girl","home","people","boy","human"]},"family-woman-girl-girl":{"a":"Family: Woman, Girl, Girl","b":"1F469-200D-1F467-200D-1F467","j":["children","woman","family","parent","girl","home","people","human"]},"speaking-head":{"a":"Speaking Head","b":"1F5E3","j":["speak","talk","say","sing","user","face","head","silhouette","speaking","human","person"]},"bust-in-silhouette":{"a":"Bust in Silhouette","b":"1F464","j":["bust","user","silhouette","human","person"]},"busts-in-silhouette":{"a":"Busts in Silhouette","b":"1F465","j":["group","bust","user","team","silhouette","human","person"]},"people-hugging":{"a":"People Hugging","b":"1FAC2","j":["thanks","hug","goodbye","hello","care"]},"footprints":{"a":"Footprints","b":"1F463","j":["clothing","print","tracking","feet","footprint","walking","beach"]},"red-hair":{"a":"Red Hair","b":"1F9B0","j":["ginger","red hair","redhead"]},"curly-hair":{"a":"Curly Hair","b":"1F9B1","j":["afro","curly","curly hair","ringlets"]},"white-hair":{"a":"White Hair","b":"1F9B3","j":["gray","hair","old","white"]},"bald":{"a":"Bald","b":"1F9B2","j":["bald","chemotherapy","hairless","no hair","shaven"]},"monkey-face":{"a":"Monkey Face","b":"1F435","j":["animal","circus","face","nature","monkey"]},"monkey":{"a":"Monkey","b":"1F412","j":["banana","animal","circus","nature"]},"gorilla":{"a":"Gorilla","b":"1F98D","j":["animal","circus","nature"]},"orangutan":{"a":"Orangutan","b":"1F9A7","j":["ape","animal"]},"dog-face":{"a":"Dog Face","b":"1F436","j":["animal","dog","pet","friend","nature","puppy","faithful","face","woof"]},"dog":{"a":"Dog","b":"1F415","j":["animal","pet","friend","nature","doge","faithful"]},"guide-dog":{"a":"Guide Dog","b":"1F9AE","j":["accessibility","animal","blind","guide"]},"service-dog":{"a":"Service Dog","b":"1F415-200D-1F9BA","j":["blind","animal","assistance","dog","accessibility","service"]},"poodle":{"a":"Poodle","b":"1F429","j":["animal","dog","pet","nature","101"]},"wolf":{"a":"Wolf","b":"1F43A","j":["animal","face","wild","nature"]},"fox":{"a":"Fox","b":"1F98A","j":["animal","face","nature"]},"raccoon":{"a":"Raccoon","b":"1F99D","j":["curious","animal","sly","nature"]},"cat-face":{"a":"Cat Face","b":"1F431","j":["meow","animal","pet","nature","kitten","cat","face"]},"cat":{"a":"Cat","b":"1F408","j":["animal","pet","cats","meow"]},"black-cat":{"a":"Black Cat","b":"1F408-200D-2B1B","j":["black","unlucky","luck","cat","superstition"]},"lion":{"a":"Lion","b":"1F981","j":["animal","Leo","nature","face","zodiac"]},"tiger-face":{"a":"Tiger Face","b":"1F42F","j":["tiger","animal","roar","wild","nature","danger","cat","face"]},"tiger":{"a":"Tiger","b":"1F405","j":["roar","animal","nature"]},"leopard":{"a":"Leopard","b":"1F406","j":["animal","nature"]},"horse-face":{"a":"Horse Face","b":"1F434","j":["brown","animal","horse","nature","face"]},"horse":{"a":"Horse","b":"1F40E","j":["racehorse","equestrian","animal","racing","luck","gamble"]},"unicorn":{"a":"Unicorn","b":"1F984","j":["nature","animal","mystical","face"]},"zebra":{"a":"Zebra","b":"1F993","j":["safari","stripes","animal","stripe","nature"]},"deer":{"a":"Deer","b":"1F98C","j":["venison","animal","horns","nature"]},"bison":{"a":"Bison","b":"1F9AC","j":["ox","herd","buffalo","wisent"]},"cow-face":{"a":"Cow Face","b":"1F42E","j":["nature","ox","cow","animal","beef","milk","moo","face"]},"ox":{"a":"Ox","b":"1F402","j":["Taurus","animal","cow","beef","bull","zodiac"]},"water-buffalo":{"a":"Water Buffalo","b":"1F403","j":["ox","water","animal","cow","buffalo","nature"]},"cow":{"a":"Cow","b":"1F404","j":["ox","animal","moo","beef","milk","nature"]},"pig-face":{"a":"Pig Face","b":"1F437","j":["pig","animal","nature","face","oink"]},"pig":{"a":"Pig","b":"1F416","j":["animal","sow","nature"]},"boar":{"a":"Boar","b":"1F417","j":["pig","animal","nature"]},"pig-nose":{"a":"Pig Nose","b":"1F43D","j":["pig","animal","nose","face","oink"]},"ram":{"a":"Ram","b":"1F40F","j":["Aries","sheep","male","animal","nature","zodiac"]},"ewe":{"a":"Ewe","b":"1F411","j":["sheep","shipit","animal","wool","female","nature"]},"goat":{"a":"Goat","b":"1F410","j":["Capricorn","animal","zodiac","nature"]},"camel":{"a":"Camel","b":"1F42A","j":["dromedary","hot","animal","desert","hump"]},"twohump-camel":{"a":"Two-Hump Camel","b":"1F42B","j":["camel","two_hump_camel","hot","animal","two-hump camel","desert","nature","bactrian","hump"]},"llama":{"a":"Llama","b":"1F999","j":["alpaca","nature","animal","wool","vicuΓ±a","guanaco"]},"giraffe":{"a":"Giraffe","b":"1F992","j":["nature","spots","animal","safari"]},"elephant":{"a":"Elephant","b":"1F418","j":["animal","nature","th","nose","circus"]},"mammoth":{"a":"Mammoth","b":"1F9A3","j":["tusk","extinction","large","woolly","elephant","tusks"]},"rhinoceros":{"a":"Rhinoceros","b":"1F98F","j":["nature","animal","horn"]},"hippopotamus":{"a":"Hippopotamus","b":"1F99B","j":["hippo","animal","nature"]},"mouse-face":{"a":"Mouse Face","b":"1F42D","j":["mouse","animal","cheese_wedge","nature","face","rodent"]},"mouse":{"a":"Mouse","b":"1F401","j":["animal","rodent","nature"]},"rat":{"a":"Rat","b":"1F400","j":["mouse","animal","rodent"]},"hamster":{"a":"Hamster","b":"1F439","j":["pet","animal","face","nature"]},"rabbit-face":{"a":"Rabbit Face","b":"1F430","j":["bunny","animal","spring","magic","pet","rabbit","nature","face"]},"rabbit":{"a":"Rabbit","b":"1F407","j":["bunny","animal","spring","magic","pet","nature"]},"chipmunk":{"a":"Chipmunk","b":"1F43F","j":["animal","squirrel","rodent","nature"]},"beaver":{"a":"Beaver","b":"1F9AB","j":["animal","dam","rodent"]},"hedgehog":{"a":"Hedgehog","b":"1F994","j":["animal","spiny","nature"]},"bat":{"a":"Bat","b":"1F987","j":["blind","vampire","animal","nature"]},"bear":{"a":"Bear","b":"1F43B","j":["animal","face","wild","nature"]},"polar-bear":{"a":"Polar Bear","b":"1F43B-200D-2744-FE0F","j":["bear","animal","white","arctic"]},"koala":{"a":"Koala","b":"1F428","j":["bear","animal","nature"]},"panda":{"a":"Panda","b":"1F43C","j":["animal","face","nature"]},"sloth":{"a":"Sloth","b":"1F9A5","j":["slow","lazy","animal"]},"otter":{"a":"Otter","b":"1F9A6","j":["fishing","animal","playful"]},"skunk":{"a":"Skunk","b":"1F9A8","j":["stink","animal"]},"kangaroo":{"a":"Kangaroo","b":"1F998","j":["jump","hop","australia","marsupial","animal","Australia","nature","joey"]},"badger":{"a":"Badger","b":"1F9A1","j":["animal","pester","nature","honey","honey badger"]},"paw-prints":{"a":"Paw Prints","b":"1F43E","j":["print","tracking","feet","cat","animal","paw","dog","pet","footprints"]},"turkey":{"a":"Turkey","b":"1F983","j":["animal","bird"]},"chicken":{"a":"Chicken","b":"1F414","j":["animal","cluck","bird","nature"]},"rooster":{"a":"Rooster","b":"1F413","j":["nature","animal","chicken","bird"]},"hatching-chick":{"a":"Hatching Chick","b":"1F423","j":["animal","chick","egg","born","baby","bird","hatching","chicken"]},"baby-chick":{"a":"Baby Chick","b":"1F424","j":["animal","chick","baby","bird","chicken"]},"frontfacing-baby-chick":{"a":"Front-Facing Baby Chick","b":"1F425","j":["chicken","animal","front_facing_baby_chick","chick","front-facing baby chick","baby","bird"]},"bird":{"a":"Bird","b":"1F426","j":["fly","animal","spring","tweet","nature"]},"penguin":{"a":"Penguin","b":"1F427","j":["nature","animal","bird"]},"dove":{"a":"Dove","b":"1F54A","j":["animal","fly","peace","bird"]},"eagle":{"a":"Eagle","b":"1F985","j":["nature","animal","bird"]},"duck":{"a":"Duck","b":"1F986","j":["nature","animal","mallard","bird"]},"swan":{"a":"Swan","b":"1F9A2","j":["nature","animal","ugly duckling","cygnet","bird"]},"owl":{"a":"Owl","b":"1F989","j":["wise","nature","animal","bird","hoot"]},"dodo":{"a":"Dodo","b":"1F9A4","j":["extinction","Mauritius","animal","large","bird"]},"feather":{"a":"Feather","b":"1FAB6","j":["fly","flight","plumage","light","bird"]},"flamingo":{"a":"Flamingo","b":"1F9A9","j":["animal","flamboyant","tropical"]},"peacock":{"a":"Peacock","b":"1F99A","j":["ostentatious","animal","peahen","proud","nature","bird"]},"parrot":{"a":"Parrot","b":"1F99C","j":["nature","animal","bird","talk","pirate"]},"frog":{"a":"Frog","b":"1F438","j":["animal","toad","croak","nature","face"]},"crocodile":{"a":"Crocodile","b":"1F40A","j":["alligator","animal","nature","reptile","lizard"]},"turtle":{"a":"Turtle","b":"1F422","j":["slow","animal","tortoise","terrapin","nature"]},"lizard":{"a":"Lizard","b":"1F98E","j":["reptile","animal","nature"]},"snake":{"a":"Snake","b":"1F40D","j":["python","animal","bearer","Ophiuchus","hiss","nature","serpent","evil","zodiac"]},"dragon-face":{"a":"Dragon Face","b":"1F432","j":["dragon","fairy tale","myth","animal","green","chinese","nature","face"]},"dragon":{"a":"Dragon","b":"1F409","j":["fairy tale","myth","animal","green","chinese","nature"]},"sauropod":{"a":"Sauropod","b":"1F995","j":["dinosaur","brontosaurus","animal","brachiosaurus","diplodocus","nature","extinct"]},"trex":{"a":"T-Rex","b":"1F996","j":["dinosaur","t_rex","animal","Tyrannosaurus Rex","tyrannosaurus","nature","extinct"]},"spouting-whale":{"a":"Spouting Whale","b":"1F433","j":["nature","sea","ocean","animal","spouting","whale","face"]},"whale":{"a":"Whale","b":"1F40B","j":["sea","ocean","animal","nature"]},"dolphin":{"a":"Dolphin","b":"1F42C","j":["fish","sea","ocean","animal","flipper","fins","beach","nature"]},"seal":{"a":"Seal","b":"1F9AD","j":["sea","animal","sea lion","creature"]},"fish":{"a":"Fish","b":"1F41F","j":["Pisces","food","animal","nature","zodiac"]},"tropical-fish":{"a":"Tropical Fish","b":"1F420","j":["swim","fish","nemo","ocean","animal","beach","tropical"]},"blowfish":{"a":"Blowfish","b":"1F421","j":["fish","food","sea","ocean","animal","nature"]},"shark":{"a":"Shark","b":"1F988","j":["fish","sea","ocean","animal","fins","beach","nature","jaws"]},"octopus":{"a":"Octopus","b":"1F419","j":["sea","ocean","animal","beach","nature","creature"]},"spiral-shell":{"a":"Spiral Shell","b":"1F41A","j":["sea","beach","nature","spiral","shell"]},"snail":{"a":"Snail","b":"1F40C","j":["slow","animal","shell"]},"butterfly":{"a":"Butterfly","b":"1F98B","j":["pretty","animal","caterpillar","nature","insect"]},"bug":{"a":"Bug","b":"1F41B","j":["nature","animal","worm","insect"]},"ant":{"a":"Ant","b":"1F41C","j":["nature","bug","animal","insect"]},"honeybee":{"a":"Honeybee","b":"1F41D","j":["bee","animal","spring","nature","honey","bug","insect"]},"beetle":{"a":"Beetle","b":"1FAB2","j":["bug","insect"]},"lady-beetle":{"a":"Lady Beetle","b":"1F41E","j":["ladybird","beetle","animal","ladybug","nature","insect"]},"cricket":{"a":"Cricket","b":"1F997","j":["chirp","animal","grasshopper","Orthoptera"]},"cockroach":{"a":"Cockroach","b":"1FAB3","j":["pest","roach","pests","insect"]},"spider":{"a":"Spider","b":"1F577","j":["arachnid","animal","insect"]},"spider-web":{"a":"Spider Web","b":"1F578","j":["spider","web","animal","arachnid","silk","insect"]},"scorpion":{"a":"Scorpion","b":"1F982","j":["Scorpio","animal","scorpio","arachnid","zodiac"]},"mosquito":{"a":"Mosquito","b":"1F99F","j":["virus","animal","fever","disease","malaria","nature","pest","insect"]},"fly":{"a":"Fly","b":"1FAB0","j":["maggot","disease","pest","rotting","insect"]},"worm":{"a":"Worm","b":"1FAB1","j":["annelid","earthworm","animal","parasite"]},"microbe":{"a":"Microbe","b":"1F9A0","j":["amoeba","virus","bacteria","germs"]},"bouquet":{"a":"Bouquet","b":"1F490","j":["flowers","spring","flower","nature"]},"cherry-blossom":{"a":"Cherry Blossom","b":"1F338","j":["blossom","spring","flower","nature","plant","cherry"]},"white-flower":{"a":"White Flower","b":"1F4AE","j":["japanese","spring","flower"]},"rosette":{"a":"Rosette","b":"1F3F5","j":["plant","military","flower","decoration"]},"rose":{"a":"Rose","b":"1F339","j":["flowers","spring","love","valentines","flower"]},"wilted-flower":{"a":"Wilted Flower","b":"1F940","j":["plant","wilted","flower","nature"]},"hibiscus":{"a":"Hibiscus","b":"1F33A","j":["flowers","vegetable","beach","flower","plant"]},"sunflower":{"a":"Sunflower","b":"1F33B","j":["sun","flower","nature","plant","fall"]},"blossom":{"a":"Blossom","b":"1F33C","j":["flowers","yellow","flower","nature"]},"tulip":{"a":"Tulip","b":"1F337","j":["flowers","spring","flower","nature","summer","plant"]},"seedling":{"a":"Seedling","b":"1F331","j":["lawn","spring","young","nature","plant","grass"]},"potted-plant":{"a":"Potted Plant","b":"1FAB4","j":["useless","boring","greenery","house","nurturing","plant","grow"]},"evergreen-tree":{"a":"Evergreen Tree","b":"1F332","j":["plant","tree","nature"]},"deciduous-tree":{"a":"Deciduous Tree","b":"1F333","j":["deciduous","shedding","tree","nature","plant"]},"palm-tree":{"a":"Palm Tree","b":"1F334","j":["mojito","vegetable","palm","beach","tree","nature","summer","plant","tropical"]},"cactus":{"a":"Cactus","b":"1F335","j":["plant","vegetable","nature"]},"sheaf-of-rice":{"a":"Sheaf of Rice","b":"1F33E","j":["rice","grain","nature","ear","plant"]},"herb":{"a":"Herb","b":"1F33F","j":["lawn","vegetable","medicine","leaf","plant","weed","grass"]},"shamrock":{"a":"Shamrock","b":"2618","j":["irish","vegetable","clover","nature","plant"]},"four-leaf-clover":{"a":"Four Leaf Clover","b":"1F340","j":["lucky","irish","four","vegetable","clover","four-leaf clover","leaf","4","nature","plant"]},"maple-leaf":{"a":"Maple Leaf","b":"1F341","j":["ca","vegetable","leaf","falling","nature","plant","maple","fall"]},"fallen-leaf":{"a":"Fallen Leaf","b":"1F342","j":["vegetable","leaf","leaves","falling","nature","plant"]},"leaf-fluttering-in-wind":{"a":"Leaf Fluttering in Wind","b":"1F343","j":["grass","lawn","vegetable","leaf","spring","flutter","wind","tree","nature","plant","blow"]},"grapes":{"a":"Grapes","b":"1F347","j":["wine","food","grape","fruit"]},"melon":{"a":"Melon","b":"1F348","j":["food","fruit","nature"]},"watermelon":{"a":"Watermelon","b":"1F349","j":["summer","food","picnic","fruit"]},"tangerine":{"a":"Tangerine","b":"1F34A","j":["food","orange","fruit","nature"]},"lemon":{"a":"Lemon","b":"1F34B","j":["fruit","citrus","nature"]},"banana":{"a":"Banana","b":"1F34C","j":["food","monkey","fruit"]},"pineapple":{"a":"Pineapple","b":"1F34D","j":["food","fruit","nature"]},"mango":{"a":"Mango","b":"1F96D","j":["food","fruit","tropical"]},"red-apple":{"a":"Red Apple","b":"1F34E","j":["red","fruit","school","mac","apple"]},"green-apple":{"a":"Green Apple","b":"1F34F","j":["green","fruit","apple","nature"]},"pear":{"a":"Pear","b":"1F350","j":["food","fruit","nature"]},"peach":{"a":"Peach","b":"1F351","j":["food","fruit","nature"]},"cherries":{"a":"Cherries","b":"1F352","j":["food","red","fruit","berries","cherry"]},"strawberry":{"a":"Strawberry","b":"1F353","j":["food","nature","berry","fruit"]},"blueberries":{"a":"Blueberries","b":"1FAD0","j":["fruit","berry","blue","bilberry","blueberry"]},"kiwi-fruit":{"a":"Kiwi Fruit","b":"1F95D","j":["food","kiwi","fruit"]},"tomato":{"a":"Tomato","b":"1F345","j":["food","fruit","vegetable","nature"]},"olive":{"a":"Olive","b":"1FAD2","j":["food","fruit"]},"coconut":{"a":"Coconut","b":"1F965","j":["food","fruit","palm","nature","piΓ±a colada"]},"avocado":{"a":"Avocado","b":"1F951","j":["food","fruit"]},"eggplant":{"a":"Eggplant","b":"1F346","j":["food","aubergine","vegetable","nature"]},"potato":{"a":"Potato","b":"1F954","j":["food","tuber","vegetable","vegatable","starch"]},"carrot":{"a":"Carrot","b":"1F955","j":["food","vegetable","orange"]},"ear-of-corn":{"a":"Ear of Corn","b":"1F33D","j":["food","vegetable","corn","maize","maze","ear","plant"]},"hot-pepper":{"a":"Hot Pepper","b":"1F336","j":["food","hot","spicy","chili","pepper","chilli"]},"bell-pepper":{"a":"Bell Pepper","b":"1FAD1","j":["fruit","vegetable","capsicum","pepper","plant"]},"cucumber":{"a":"Cucumber","b":"1F952","j":["food","pickle","vegetable","fruit"]},"leafy-green":{"a":"Leafy Green","b":"1F96C","j":["food","vegetable","cabbage","kale","plant","lettuce","bok choy"]},"broccoli":{"a":"Broccoli","b":"1F966","j":["food","wild cabbage","fruit","vegetable"]},"garlic":{"a":"Garlic","b":"1F9C4","j":["cook","food","spice","flavoring"]},"onion":{"a":"Onion","b":"1F9C5","j":["cook","food","spice","flavoring"]},"mushroom":{"a":"Mushroom","b":"1F344","j":["toadstool","plant","vegetable"]},"peanuts":{"a":"Peanuts","b":"1F95C","j":["nut","food","peanut","vegetable"]},"chestnut":{"a":"Chestnut","b":"1F330","j":["plant","squirrel","food"]},"bread":{"a":"Bread","b":"1F35E","j":["food","wheat","loaf","breakfast","toast"]},"croissant":{"a":"Croissant","b":"1F950","j":["food","bread","breakfast","french","roll"]},"baguette-bread":{"a":"Baguette Bread","b":"1F956","j":["food","bread","french","baguette"]},"flatbread":{"a":"Flatbread","b":"1FAD3","j":["food","pita","naan","arepa","lavash","flour"]},"pretzel":{"a":"Pretzel","b":"1F968","j":["twisted","food","bread","convoluted"]},"bagel":{"a":"Bagel","b":"1F96F","j":["food","bread","breakfast","schmear","bakery"]},"pancakes":{"a":"Pancakes","b":"1F95E","j":["flapjacks","food","pancake","hotcakes","breakfast","crΓͺpe","hotcake"]},"waffle":{"a":"Waffle","b":"1F9C7","j":["food","breakfast","indecisive","iron"]},"cheese-wedge":{"a":"Cheese Wedge","b":"1F9C0","j":["food","chadder","cheese"]},"meat-on-bone":{"a":"Meat on Bone","b":"1F356","j":["food","drumstick","bone","good","meat"]},"poultry-leg":{"a":"Poultry Leg","b":"1F357","j":["food","turkey","drumstick","bone","leg","poultry","bird","meat","chicken"]},"cut-of-meat":{"a":"Cut of Meat","b":"1F969","j":["food","porkchop","chop","cow","cut","lambchop","steak","meat"]},"bacon":{"a":"Bacon","b":"1F953","j":["pig","food","pork","breakfast","meat"]},"hamburger":{"a":"Hamburger","b":"1F354","j":["burger","cheeseburger","beef","fast food","burger king","meat","mcdonalds"]},"french-fries":{"a":"French Fries","b":"1F35F","j":["fries","fast food","french","chips","snack"]},"pizza":{"a":"Pizza","b":"1F355","j":["food","cheese","party","slice"]},"hot-dog":{"a":"Hot Dog","b":"1F32D","j":["hotdog","food","sausage","frankfurter"]},"sandwich":{"a":"Sandwich","b":"1F96A","j":["lunch","bread","food"]},"taco":{"a":"Taco","b":"1F32E","j":["mexican","food"]},"burrito":{"a":"Burrito","b":"1F32F","j":["wrap","mexican","food"]},"tamale":{"a":"Tamale","b":"1FAD4","j":["mexican","food","wrapped","masa"]},"stuffed-flatbread":{"a":"Stuffed Flatbread","b":"1F959","j":["food","kebab","stuffed","gyro","falafel","flatbread"]},"falafel":{"a":"Falafel","b":"1F9C6","j":["chickpea","food","meatball"]},"egg":{"a":"Egg","b":"1F95A","j":["food","chicken","breakfast"]},"cooking":{"a":"Cooking","b":"1F373","j":["food","frying","kitchen","breakfast","egg","pan"]},"shallow-pan-of-food":{"a":"Shallow Pan of Food","b":"1F958","j":["food","casserole","cooking","paella","pan","shallow"]},"pot-of-food":{"a":"Pot of Food","b":"1F372","j":["food","stew","pot","soup","meat"]},"fondue":{"a":"Fondue","b":"1FAD5","j":["food","pot","chocolate","melted","Swiss","cheese"]},"bowl-with-spoon":{"a":"Bowl with Spoon","b":"1F963","j":["food","congee","porridge","breakfast","cereal","oatmeal"]},"green-salad":{"a":"Green Salad","b":"1F957","j":["food","healthy","green","lettuce","salad"]},"popcorn":{"a":"Popcorn","b":"1F37F","j":["movie theater","food","films","snack"]},"butter":{"a":"Butter","b":"1F9C8","j":["cook","food","dairy"]},"salt":{"a":"Salt","b":"1F9C2","j":["shaker","condiment"]},"canned-food":{"a":"Canned Food","b":"1F96B","j":["soup","food","can"]},"bento-box":{"a":"Bento Box","b":"1F371","j":["bento","food","japanese","box"]},"rice-cracker":{"a":"Rice Cracker","b":"1F358","j":["rice","japanese","food","cracker"]},"rice-ball":{"a":"Rice Ball","b":"1F359","j":["food","Japanese","rice","ball","japanese"]},"cooked-rice":{"a":"Cooked Rice","b":"1F35A","j":["food","china","rice","asian","cooked"]},"curry-rice":{"a":"Curry Rice","b":"1F35B","j":["food","hot","spicy","curry","rice","indian"]},"steaming-bowl":{"a":"Steaming Bowl","b":"1F35C","j":["food","noodle","steaming","bowl","chopsticks","japanese","ramen"]},"spaghetti":{"a":"Spaghetti","b":"1F35D","j":["pasta","italian","noodle","food"]},"roasted-sweet-potato":{"a":"Roasted Sweet Potato","b":"1F360","j":["food","potato","roasted","nature","sweet"]},"oden":{"a":"Oden","b":"1F362","j":["food","kebab","seafood","skewer","japanese","stick"]},"sushi":{"a":"Sushi","b":"1F363","j":["rice","fish","food","japanese"]},"fried-shrimp":{"a":"Fried Shrimp","b":"1F364","j":["tempura","food","shrimp","animal","prawn","appetizer","summer","fried"]},"fish-cake-with-swirl":{"a":"Fish Cake with Swirl","b":"1F365","j":["fish","food","pink","kamaboko","sea","pastry","narutomaki","cake","swirl","beach","japan","ramen","surimi"]},"moon-cake":{"a":"Moon Cake","b":"1F96E","j":["yuΓ¨bǐng","autumn","food","festival"]},"dango":{"a":"Dango","b":"1F361","j":["food","stick","Japanese","skewer","japanese","dessert","sweet","barbecue","meat"]},"dumpling":{"a":"Dumpling","b":"1F95F","j":["food","empanada","jiaozi","potsticker","gyōza","pierogi"]},"fortune-cookie":{"a":"Fortune Cookie","b":"1F960","j":["food","prophecy"]},"takeout-box":{"a":"Takeout Box","b":"1F961","j":["leftovers","food","oyster pail"]},"crab":{"a":"Crab","b":"1F980","j":["Cancer","animal","crustacean","zodiac"]},"lobster":{"a":"Lobster","b":"1F99E","j":["bisque","animal","seafood","claws","nature"]},"shrimp":{"a":"Shrimp","b":"1F990","j":["food","shellfish","ocean","animal","small","seafood","nature"]},"squid":{"a":"Squid","b":"1F991","j":["food","sea","ocean","animal","nature","molusc"]},"oyster":{"a":"Oyster","b":"1F9AA","j":["diving","food","pearl"]},"soft-ice-cream":{"a":"Soft Ice Cream","b":"1F366","j":["food","soft","icecream","ice","hot","dessert","summer","sweet","cream"]},"shaved-ice":{"a":"Shaved Ice","b":"1F367","j":["ice","shaved","hot","dessert","summer","sweet"]},"ice-cream":{"a":"Ice Cream","b":"1F368","j":["food","ice","hot","dessert","sweet","cream"]},"doughnut":{"a":"Doughnut","b":"1F369","j":["food","breakfast","donut","dessert","sweet","snack"]},"cookie":{"a":"Cookie","b":"1F36A","j":["food","oreo","chocolate","dessert","sweet","snack"]},"birthday-cake":{"a":"Birthday Cake","b":"1F382","j":["food","birthday","celebration","pastry","cake","dessert","sweet"]},"shortcake":{"a":"Shortcake","b":"1F370","j":["food","pastry","cake","dessert","sweet","slice"]},"cupcake":{"a":"Cupcake","b":"1F9C1","j":["bakery","food","sweet","dessert"]},"pie":{"a":"Pie","b":"1F967","j":["food","fruit","pastry","filling","dessert","meat"]},"chocolate-bar":{"a":"Chocolate Bar","b":"1F36B","j":["food","chocolate","bar","dessert","sweet","snack"]},"candy":{"a":"Candy","b":"1F36C","j":["sweet","snack","lolly","dessert"]},"lollipop":{"a":"Lollipop","b":"1F36D","j":["candy","food","dessert","sweet","snack"]},"custard":{"a":"Custard","b":"1F36E","j":["sweet","food","dessert","pudding"]},"honey-pot":{"a":"Honey Pot","b":"1F36F","j":["honeypot","pot","kitchen","bees","honey","sweet"]},"baby-bottle":{"a":"Baby Bottle","b":"1F37C","j":["bottle","food","container","milk","drink","baby"]},"glass-of-milk":{"a":"Glass of Milk","b":"1F95B","j":["cow","milk","beverage","drink","glass"]},"hot-beverage":{"a":"Hot Beverage","b":"2615","j":["latte","tea","steaming","coffee","caffeine","hot","espresso","beverage","drink"]},"teapot":{"a":"Teapot","b":"1FAD6","j":["tea","hot","drink","pot"]},"teacup-without-handle":{"a":"Teacup Without Handle","b":"1F375","j":["tea","teacup","british","breakfast","green","beverage","drink","bowl","cup"]},"sake":{"a":"Sake","b":"1F376","j":["bottle","drunk","wine","booze","beverage","bar","drink","japanese","alcohol","cup"]},"bottle-with-popping-cork":{"a":"Bottle with Popping Cork","b":"1F37E","j":["bottle","wine","celebration","cork","bar","drink","popping"]},"wine-glass":{"a":"Wine Glass","b":"1F377","j":["wine","booze","beverage","bar","drink","drunk","alcohol","glass"]},"cocktail-glass":{"a":"Cocktail Glass","b":"1F378","j":["mojito","booze","beverage","bar","cocktail","drink","drunk","alcohol","glass"]},"tropical-drink":{"a":"Tropical Drink","b":"1F379","j":["mojito","booze","beverage","bar","drink","cocktail","beach","summer","alcohol","tropical"]},"beer-mug":{"a":"Beer Mug","b":"1F37A","j":["relax","beer","booze","beverage","bar","drink","summer","drunk","alcohol","pub","mug","party"]},"clinking-beer-mugs":{"a":"Clinking Beer Mugs","b":"1F37B","j":["relax","beer","booze","beverage","bar","drink","summer","drunk","alcohol","pub","mug","clink","party"]},"clinking-glasses":{"a":"Clinking Glasses","b":"1F942","j":["wine","champagne","cheers","toast","beverage","drink","celebrate","alcohol","glass","clink","party"]},"tumbler-glass":{"a":"Tumbler Glass","b":"1F943","j":["whisky","booze","liquor","bourbon","shot","beverage","drink","scotch","drunk","alcohol","glass","tumbler"]},"cup-with-straw":{"a":"Cup with Straw","b":"1F964","j":["soda","soft drink","water","juice","malt","drink"]},"bubble-tea":{"a":"Bubble Tea","b":"1F9CB","j":["tea","boba","milk tea","bubble","straw","milk","taiwan","pearl"]},"beverage-box":{"a":"Beverage Box","b":"1F9C3","j":["straw","juice","beverage","drink","box","sweet"]},"mate":{"a":"Mate","b":"1F9C9","j":["beverage","tea","drink"]},"ice":{"a":"Ice","b":"1F9CA","j":["cold","water","ice cube","iceberg"]},"chopsticks":{"a":"Chopsticks","b":"1F962","j":["jeotgarak","food","hashi","kuaizi"]},"fork-and-knife-with-plate":{"a":"Fork and Knife with Plate","b":"1F37D","j":["food","dinner","knife","cooking","restaurant","plate","meal","lunch","fork","eat"]},"fork-and-knife":{"a":"Fork and Knife","b":"1F374","j":["cooking","knife","kitchen","cutlery","fork"]},"spoon":{"a":"Spoon","b":"1F944","j":["tableware","kitchen","cutlery"]},"kitchen-knife":{"a":"Kitchen Knife","b":"1F52A","j":["blade","cooking","knife","hocho","tool","kitchen","cutlery","weapon"]},"amphora":{"a":"Amphora","b":"1F3FA","j":["jar","cooking","Aquarius","jug","drink","vase","zodiac"]},"globe-showing-europeafrica":{"a":"Globe Showing Europe-Africa","b":"1F30D","j":["Europe","globe showing Europe-Africa","world","international","Africa","globe_showing_europe_africa","earth","globe"]},"globe-showing-americas":{"a":"Globe Showing Americas","b":"1F30E","j":["USA","world","international","globe showing Americas","earth","Americas","globe"]},"globe-showing-asiaaustralia":{"a":"Globe Showing Asia-Australia","b":"1F30F","j":["globe showing Asia-Australia","world","international","Asia","earth","globe_showing_asia_australia","east","Australia","globe"]},"globe-with-meridians":{"a":"Globe with Meridians","b":"1F310","j":["world","international","meridians","internet","earth","interweb","globe","i18n"]},"world-map":{"a":"World Map","b":"1F5FA","j":["location","direction","map","world"]},"map-of-japan":{"a":"Map of Japan","b":"1F5FE","j":["map of Japan","Japan","asia","japanese","country","map","nation"]},"compass":{"a":"Compass","b":"1F9ED","j":["magnetic","orienteering","navigation"]},"snowcapped-mountain":{"a":"Snow-Capped Mountain","b":"1F3D4","j":["snow-capped mountain","snow_capped_mountain","snow","photo","winter","mountain","nature","cold","environment"]},"mountain":{"a":"Mountain","b":"26F0","j":["photo","environment","nature"]},"volcano":{"a":"Volcano","b":"1F30B","j":["photo","eruption","disaster","mountain","nature"]},"mount-fuji":{"a":"Mount Fuji","b":"1F5FB","j":["fuji","photo","mountain","nature","japanese"]},"camping":{"a":"Camping","b":"1F3D5","j":["photo","outdoors","tent"]},"beach-with-umbrella":{"a":"Beach with Umbrella","b":"1F3D6","j":["mojito","sand","umbrella","sunny","beach","summer","weather"]},"desert":{"a":"Desert","b":"1F3DC","j":["photo","saharah","warm"]},"desert-island":{"a":"Desert Island","b":"1F3DD","j":["mojito","photo","desert","island","tropical"]},"national-park":{"a":"National Park","b":"1F3DE","j":["photo","park","environment","nature"]},"stadium":{"a":"Stadium","b":"1F3DF","j":["sports","photo","concert","venue","place"]},"classical-building":{"a":"Classical Building","b":"1F3DB","j":["history","classical","art","culture"]},"building-construction":{"a":"Building Construction","b":"1F3D7","j":["working","construction","progress","wip"]},"brick":{"a":"Brick","b":"1F9F1","j":["clay","bricks","mortar","wall"]},"rock":{"a":"Rock","b":"1FAA8","j":["heavy","solid","boulder","stone"]},"wood":{"a":"Wood","b":"1FAB5","j":["log","trunk","timber","nature","lumber"]},"hut":{"a":"Hut","b":"1F6D6","j":["yurt","roundhouse","structure","house"]},"houses":{"a":"Houses","b":"1F3D8","j":["photo","buildings"]},"derelict-house":{"a":"Derelict House","b":"1F3DA","j":["evict","house","broken","derelict","building","abandon"]},"house":{"a":"House","b":"1F3E0","j":["building","home"]},"house-with-garden":{"a":"House with Garden","b":"1F3E1","j":["nature","house","home","plant","garden"]},"office-building":{"a":"Office Building","b":"1F3E2","j":["building","work","bureau"]},"japanese-post-office":{"a":"Japanese Post Office","b":"1F3E3","j":["communication","envelope","Japanese post office","Japanese","building","post"]},"post-office":{"a":"Post Office","b":"1F3E4","j":["email","building","European","post"]},"hospital":{"a":"Hospital","b":"1F3E5","j":["health","medicine","surgery","doctor","building"]},"bank":{"a":"Bank","b":"1F3E6","j":["business","enterprise","cash","money","building","sales"]},"hotel":{"a":"Hotel","b":"1F3E8","j":["accomodation","building","checkin"]},"love-hotel":{"a":"Love Hotel","b":"1F3E9","j":["love","like","dating","hotel","affection"]},"convenience-store":{"a":"Convenience Store","b":"1F3EA","j":["store","building","groceries","convenience","shopping"]},"school":{"a":"School","b":"1F3EB","j":["student","learn","teach","education","building"]},"department-store":{"a":"Department Store","b":"1F3EC","j":["store","building","department","mall","shopping"]},"factory":{"a":"Factory","b":"1F3ED","j":["smoke","building","pollution","industry"]},"japanese-castle":{"a":"Japanese Castle","b":"1F3EF","j":["castle","building","Japanese","photo"]},"castle":{"a":"Castle","b":"1F3F0","j":["building","royalty","history","European"]},"wedding":{"a":"Wedding","b":"1F492","j":["romance","bride","marriage","love","couple","like","chapel","groom","affection"]},"tokyo-tower":{"a":"Tokyo Tower","b":"1F5FC","j":["photo","japanese","tower","Tokyo"]},"statue-of-liberty":{"a":"Statue of Liberty","b":"1F5FD","j":["statue","newyork","liberty","american"]},"church":{"a":"Church","b":"26EA","j":["religion","cross","building","Christian","christ"]},"mosque":{"a":"Mosque","b":"1F54C","j":["islam","worship","minaret","religion","Muslim"]},"hindu-temple":{"a":"Hindu Temple","b":"1F6D5","j":["temple","religion","hindu"]},"synagogue":{"a":"Synagogue","b":"1F54D","j":["Jew","worship","religion","jewish","temple","Jewish","judaism"]},"shinto-shrine":{"a":"Shinto Shrine","b":"26E9","j":["kyoto","shrine","religion","temple","japan","shinto"]},"kaaba":{"a":"Kaaba","b":"1F54B","j":["islam","religion","mosque","mecca","Muslim"]},"fountain":{"a":"Fountain","b":"26F2","j":["photo","water","fresh","summer"]},"tent":{"a":"Tent","b":"26FA","j":["photo","outdoors","camping"]},"foggy":{"a":"Foggy","b":"1F301","j":["photo","fog","mountain"]},"night-with-stars":{"a":"Night with Stars","b":"1F303","j":["night","downtown","city","evening","star"]},"cityscape":{"a":"Cityscape","b":"1F3D9","j":["photo","night life","urban","city"]},"sunrise-over-mountains":{"a":"Sunrise over Mountains","b":"1F304","j":["morning","photo","sunrise","sun","mountain","view","vacation"]},"sunrise":{"a":"Sunrise","b":"1F305","j":["morning","photo","sun","view","vacation"]},"cityscape-at-dusk":{"a":"Cityscape at Dusk","b":"1F306","j":["dusk","photo","sunset","city","sky","evening","landscape","buildings"]},"sunset":{"a":"Sunset","b":"1F307","j":["dusk","photo","good morning","dawn","sun"]},"bridge-at-night":{"a":"Bridge at Night","b":"1F309","j":["photo","night","bridge","sanfrancisco"]},"hot-springs":{"a":"Hot Springs","b":"2668","j":["relax","steaming","bath","springs","hot","warm","hotsprings"]},"carousel-horse":{"a":"Carousel Horse","b":"1F3A0","j":["photo","carnival","carousel","horse"]},"ferris-wheel":{"a":"Ferris Wheel","b":"1F3A1","j":["photo","wheel","londoneye","amusement park","ferris","carnival"]},"roller-coaster":{"a":"Roller Coaster","b":"1F3A2","j":["roller","photo","playground","amusement park","carnival","coaster","fun"]},"barber-pole":{"a":"Barber Pole","b":"1F488","j":["pole","style","haircut","barber","hair","salon"]},"circus-tent":{"a":"Circus Tent","b":"1F3AA","j":["festival","circus","carnival","party","tent"]},"locomotive":{"a":"Locomotive","b":"1F682","j":["vehicle","train","transportation","steam","railway","engine"]},"railway-car":{"a":"Railway Car","b":"1F683","j":["car","electric","vehicle","train","trolleybus","transportation","railway","tram"]},"highspeed-train":{"a":"High-Speed Train","b":"1F684","j":["vehicle","high_speed_train","train","speed","transportation","shinkansen","railway","high-speed train"]},"bullet-train":{"a":"Bullet Train","b":"1F685","j":["vehicle","train","speed","transportation","bullet","shinkansen","railway","travel","fast","public"]},"train":{"a":"Train","b":"1F686","j":["vehicle","railway","transportation"]},"metro":{"a":"Metro","b":"1F687","j":["transportation","subway","tube","blue-square","mrt","underground"]},"light-rail":{"a":"Light Rail","b":"1F688","j":["vehicle","railway","transportation"]},"station":{"a":"Station","b":"1F689","j":["vehicle","train","transportation","railway","public"]},"tram":{"a":"Tram","b":"1F68A","j":["vehicle","trolleybus","transportation"]},"monorail":{"a":"Monorail","b":"1F69D","j":["vehicle","transportation"]},"mountain-railway":{"a":"Mountain Railway","b":"1F69E","j":["car","vehicle","transportation","railway","mountain"]},"tram-car":{"a":"Tram Car","b":"1F68B","j":["car","vehicle","trolleybus","transportation","carriage","travel","public","tram"]},"bus":{"a":"Bus","b":"1F68C","j":["car","vehicle","transportation"]},"oncoming-bus":{"a":"Oncoming Bus","b":"1F68D","j":["bus","vehicle","transportation","oncoming"]},"trolleybus":{"a":"Trolleybus","b":"1F68E","j":["bus","vehicle","transportation","trolley","bart","tram"]},"minibus":{"a":"Minibus","b":"1F690","j":["bus","vehicle","transportation","car"]},"ambulance":{"a":"Ambulance","b":"1F691","j":["911","vehicle","health","hospital"]},"fire-engine":{"a":"Fire Engine","b":"1F692","j":["cars","truck","vehicle","transportation","fire","engine"]},"police-car":{"a":"Police Car","b":"1F693","j":["cars","car","vehicle","transportation","patrol","police","enforcement","legal","law"]},"oncoming-police-car":{"a":"Oncoming Police Car","b":"1F694","j":["car","vehicle","oncoming","911","police","enforcement","legal","law"]},"taxi":{"a":"Taxi","b":"1F695","j":["cars","vehicle","uber","transportation"]},"oncoming-taxi":{"a":"Oncoming Taxi","b":"1F696","j":["cars","vehicle","oncoming","taxi","uber"]},"automobile":{"a":"Automobile","b":"1F697","j":["car","vehicle","red","transportation"]},"oncoming-automobile":{"a":"Oncoming Automobile","b":"1F698","j":["car","vehicle","automobile","transportation","oncoming"]},"sport-utility-vehicle":{"a":"Sport Utility Vehicle","b":"1F699","j":["vehicle","recreational","transportation","sport utility"]},"pickup-truck":{"a":"Pickup Truck","b":"1F6FB","j":["car","truck","transportation","pickup","pick-up"]},"delivery-truck":{"a":"Delivery Truck","b":"1F69A","j":["cars","truck","transportation","delivery"]},"articulated-lorry":{"a":"Articulated Lorry","b":"1F69B","j":["cars","truck","vehicle","transportation","semi","lorry","express"]},"tractor":{"a":"Tractor","b":"1F69C","j":["car","vehicle","farming","agriculture"]},"racing-car":{"a":"Racing Car","b":"1F3CE","j":["car","sports","racing","race","f1","fast","formula"]},"motorcycle":{"a":"Motorcycle","b":"1F3CD","j":["racing","fast","sports","race"]},"motor-scooter":{"a":"Motor Scooter","b":"1F6F5","j":["vehicle","vespa","sasha","motor","scooter"]},"manual-wheelchair":{"a":"Manual Wheelchair","b":"1F9BD","j":["accessibility"]},"motorized-wheelchair":{"a":"Motorized Wheelchair","b":"1F9BC","j":["accessibility"]},"auto-rickshaw":{"a":"Auto Rickshaw","b":"1F6FA","j":["move","tuk tuk","transportation"]},"bicycle":{"a":"Bicycle","b":"1F6B2","j":["exercise","bike","sports","hipster"]},"kick-scooter":{"a":"Kick Scooter","b":"1F6F4","j":["vehicle","razor","scooter","kick"]},"skateboard":{"a":"Skateboard","b":"1F6F9","j":["board"]},"roller-skate":{"a":"Roller Skate","b":"1F6FC","j":["roller","skate","sports","footwear"]},"bus-stop":{"a":"Bus Stop","b":"1F68F","j":["bus","stop","busstop","transportation","wait"]},"motorway":{"a":"Motorway","b":"1F6E3","j":["highway","road","cupertino","interstate"]},"railway-track":{"a":"Railway Track","b":"1F6E4","j":["railway","train","transportation"]},"oil-drum":{"a":"Oil Drum","b":"1F6E2","j":["oil","barrell","drum"]},"fuel-pump":{"a":"Fuel Pump","b":"26FD","j":["gas","fuel","diesel","pump","fuelpump","station","petroleum","gas station"]},"police-car-light":{"a":"Police Car Light","b":"1F6A8","j":["car","ambulance","911","beacon","light","error","emergency","pinged","police","revolving","legal","law","alert"]},"horizontal-traffic-light":{"a":"Horizontal Traffic Light","b":"1F6A5","j":["light","traffic","signal","transportation"]},"vertical-traffic-light":{"a":"Vertical Traffic Light","b":"1F6A6","j":["traffic","transportation","driving","light","signal"]},"stop-sign":{"a":"Stop Sign","b":"1F6D1","j":["octagonal","stop","sign"]},"construction":{"a":"Construction","b":"1F6A7","j":["progress","caution","wip","barrier","warning"]},"anchor":{"a":"Anchor","b":"2693","j":["boat","ship","sea","tool","ferry"]},"sailboat":{"a":"Sailboat","b":"26F5","j":["boat","yacht","transportation","sea","ship","resort","water","summer","sailing"]},"canoe":{"a":"Canoe","b":"1F6F6","j":["ship","water","boat","paddle"]},"speedboat":{"a":"Speedboat","b":"1F6A4","j":["vehicle","boat","transportation","ship","summer"]},"passenger-ship":{"a":"Passenger Ship","b":"1F6F3","j":["yacht","ship","cruise","ferry","passenger"]},"ferry":{"a":"Ferry","b":"26F4","j":["ship","yacht","boat","passenger"]},"motor-boat":{"a":"Motor Boat","b":"1F6E5","j":["motorboat","ship","boat"]},"ship":{"a":"Ship","b":"1F6A2","j":["boat","transportation","titanic","deploy","passenger"]},"airplane":{"a":"Airplane","b":"2708","j":["vehicle","transportation","flight","aeroplane","fly"]},"small-airplane":{"a":"Small Airplane","b":"1F6E9","j":["vehicle","transportation","flight","aeroplane","fly","airplane"]},"airplane-departure":{"a":"Airplane Departure","b":"1F6EB","j":["check-in","departures","departure","flight","airport","aeroplane","airplane","landing"]},"airplane-arrival":{"a":"Airplane Arrival","b":"1F6EC","j":["flight","airport","arrivals","aeroplane","boarding","arriving","airplane","landing"]},"parachute":{"a":"Parachute","b":"1FA82","j":["hang-glide","parasail","skydive","fly","glide"]},"seat":{"a":"Seat","b":"1F4BA","j":["bus","chair","flight","transport","sit","fly","airplane"]},"helicopter":{"a":"Helicopter","b":"1F681","j":["vehicle","transportation","fly"]},"suspension-railway":{"a":"Suspension Railway","b":"1F69F","j":["vehicle","railway","suspension","transportation"]},"mountain-cableway":{"a":"Mountain Cableway","b":"1F6A0","j":["vehicle","transportation","gondola","cable","mountain","ski"]},"aerial-tramway":{"a":"Aerial Tramway","b":"1F6A1","j":["car","vehicle","transportation","gondola","cable","aerial","ski","tramway"]},"satellite":{"a":"Satellite","b":"1F6F0","j":["communication","gps","spaceflight","ISS","NASA","space","orbit"]},"rocket":{"a":"Rocket","b":"1F680","j":["staffmode","outer_space","NASA","ship","space","fly","outer space","launch"]},"flying-saucer":{"a":"Flying Saucer","b":"1F6F8","j":["vehicle","ufo","transportation","UFO"]},"bellhop-bell":{"a":"Bellhop Bell","b":"1F6CE","j":["bell","bellhop","hotel","service"]},"luggage":{"a":"Luggage","b":"1F9F3","j":["travel","packing"]},"hourglass-done":{"a":"Hourglass Done","b":"231B","j":["test","clock","exam","sand","limit","time","quiz","timer","oldschool"]},"hourglass-not-done":{"a":"Hourglass Not Done","b":"23F3","j":["sand","hourglass","time","countdown","timer","oldschool"]},"watch":{"a":"Watch","b":"231A","j":["time","clock","accessories"]},"alarm-clock":{"a":"Alarm Clock","b":"23F0","j":["time","clock","alarm","wake"]},"stopwatch":{"a":"Stopwatch","b":"23F1","j":["time","clock","deadline"]},"timer-clock":{"a":"Timer Clock","b":"23F2","j":["clock","timer","alarm"]},"mantelpiece-clock":{"a":"Mantelpiece Clock","b":"1F570","j":["time","clock"]},"twelve-oclock":{"a":"Twelve O’Clock","b":"1F55B","j":["o’clock","clock","twelve_o_clock","noon","12","00","late","time","early","twelve","midnight","12:00","midday","schedule"]},"twelvethirty":{"a":"Twelve-Thirty","b":"1F567","j":["clock","late","12","time","schedule","early","twelve_thirty","twelve","twelve-thirty","thirty","12:30"]},"one-oclock":{"a":"One O’Clock","b":"1F550","j":["o’clock","clock","late","00","time","early","one","1","1:00","one_o_clock","schedule"]},"onethirty":{"a":"One-Thirty","b":"1F55C","j":["clock","late","time","schedule","early","one","1","1:30","one_thirty","thirty","one-thirty"]},"two-oclock":{"a":"Two O’Clock","b":"1F551","j":["o’clock","clock","late","00","time","early","two","two_o_clock","2:00","2","schedule"]},"twothirty":{"a":"Two-Thirty","b":"1F55D","j":["2:30","clock","late","two_thirty","time","early","two","two-thirty","2","thirty","schedule"]},"three-oclock":{"a":"Three O’Clock","b":"1F552","j":["o’clock","clock","late","00","three","3","time","early","3:00","three_o_clock","schedule"]},"threethirty":{"a":"Three-Thirty","b":"1F55E","j":["clock","late","three","3","time","early","three_thirty","schedule","three-thirty","thirty","3:30"]},"four-oclock":{"a":"Four O’Clock","b":"1F553","j":["o’clock","clock","four","00","late","time","early","four_o_clock","4","4:00","schedule"]},"fourthirty":{"a":"Four-Thirty","b":"1F55F","j":["clock","four","four-thirty","late","time","4:30","early","four_thirty","4","thirty","schedule"]},"five-oclock":{"a":"Five O’Clock","b":"1F554","j":["o’clock","clock","5:00","00","late","five_o_clock","five","time","early","5","schedule"]},"fivethirty":{"a":"Five-Thirty","b":"1F560","j":["clock","5:30","late","five","time","early","five_thirty","5","five-thirty","thirty","schedule"]},"six-oclock":{"a":"Six O’Clock","b":"1F555","j":["o’clock","clock","late","00","dusk","time","six_o_clock","six","early","dawn","6","6:00","schedule"]},"sixthirty":{"a":"Six-Thirty","b":"1F561","j":["clock","late","six_thirty","time","six","early","6","six-thirty","6:30","thirty","schedule"]},"seven-oclock":{"a":"Seven O’Clock","b":"1F556","j":["o’clock","clock","seven","late","00","7","time","early","seven_o_clock","7:00","schedule"]},"seventhirty":{"a":"Seven-Thirty","b":"1F562","j":["seven_thirty","clock","seven","late","7","time","7:30","early","seven-thirty","thirty","schedule"]},"eight-oclock":{"a":"Eight O’Clock","b":"1F557","j":["o’clock","clock","late","00","8:00","time","early","eight","8","eight_o_clock","schedule"]},"eightthirty":{"a":"Eight-Thirty","b":"1F563","j":["clock","late","eight_thirty","time","8:30","early","eight-thirty","eight","8","thirty","schedule"]},"nine-oclock":{"a":"Nine O’Clock","b":"1F558","j":["o’clock","clock","late","00","nine","nine_o_clock","time","early","9:00","9","schedule"]},"ninethirty":{"a":"Nine-Thirty","b":"1F564","j":["clock","late","nine","time","early","nine-thirty","nine_thirty","9:30","9","thirty","schedule"]},"ten-oclock":{"a":"Ten O’Clock","b":"1F559","j":["o’clock","clock","10","late","00","ten_o_clock","time","early","ten","10:00","schedule"]},"tenthirty":{"a":"Ten-Thirty","b":"1F565","j":["ten-thirty","clock","10","late","time","ten_thirty","early","10:30","ten","thirty","schedule"]},"eleven-oclock":{"a":"Eleven O’Clock","b":"1F55A","j":["o’clock","clock","late","00","time","eleven","11","early","11:00","eleven_o_clock","schedule"]},"eleventhirty":{"a":"Eleven-Thirty","b":"1F566","j":["clock","late","eleven-thirty","time","schedule","eleven","11","early","eleven_thirty","thirty","11:30"]},"new-moon":{"a":"New Moon","b":"1F311","j":["planet","night","space","evening","twilight","nature","dark","moon","sleep"]},"waxing-crescent-moon":{"a":"Waxing Crescent Moon","b":"1F312","j":["planet","night","waxing","space","evening","crescent","twilight","nature","moon","sleep"]},"first-quarter-moon":{"a":"First Quarter Moon","b":"1F313","j":["quarter","planet","night","space","evening","twilight","nature","moon","sleep"]},"waxing-gibbous-moon":{"a":"Waxing Gibbous Moon","b":"1F314","j":["planet","night","waxing","gibbous","gray","space","sky","evening","twilight","nature","moon","sleep"]},"full-moon":{"a":"Full Moon","b":"1F315","j":["yellow","planet","night","full","space","evening","twilight","nature","moon","sleep"]},"waning-gibbous-moon":{"a":"Waning Gibbous Moon","b":"1F316","j":["waning","planet","night","gibbous","space","waxing_gibbous_moon","evening","twilight","nature","moon","sleep"]},"last-quarter-moon":{"a":"Last Quarter Moon","b":"1F317","j":["quarter","planet","night","space","evening","twilight","nature","moon","sleep"]},"waning-crescent-moon":{"a":"Waning Crescent Moon","b":"1F318","j":["waning","planet","night","space","evening","crescent","twilight","nature","moon","sleep"]},"crescent-moon":{"a":"Crescent Moon","b":"1F319","j":["night","magic","sky","evening","crescent","moon","sleep"]},"new-moon-face":{"a":"New Moon Face","b":"1F31A","j":["planet","night","space","evening","twilight","nature","moon","face","sleep"]},"first-quarter-moon-face":{"a":"First Quarter Moon Face","b":"1F31B","j":["quarter","planet","night","space","evening","twilight","nature","moon","face","sleep"]},"last-quarter-moon-face":{"a":"Last Quarter Moon Face","b":"1F31C","j":["quarter","planet","night","space","evening","twilight","nature","moon","face","sleep"]},"thermometer":{"a":"Thermometer","b":"1F321","j":["cold","hot","temperature","weather"]},"sun":{"a":"Sun","b":"2600","j":["rays","spring","sunny","bright","nature","summer","beach","brightness","weather"]},"full-moon-face":{"a":"Full Moon Face","b":"1F31D","j":["planet","night","full","space","evening","bright","twilight","nature","moon","face","sleep"]},"sun-with-face":{"a":"Sun with Face","b":"1F31E","j":["morning","sun","sky","bright","nature","face"]},"ringed-planet":{"a":"Ringed Planet","b":"1FA90","j":["saturn","outerspace","saturnine"]},"star":{"a":"Star","b":"2B50","j":["yellow","night"]},"glowing-star":{"a":"Glowing Star","b":"1F31F","j":["sparkle","night","glow","awesome","glittery","magic","good","star","shining"]},"shooting-star":{"a":"Shooting Star","b":"1F320","j":["night","shooting","photo","falling","star"]},"milky-way":{"a":"Milky Way","b":"1F30C","j":["photo","space","stars"]},"cloud":{"a":"Cloud","b":"2601","j":["sky","weather"]},"sun-behind-cloud":{"a":"Sun Behind Cloud","b":"26C5","j":["morning","cloud","spring","cloudy","sun","nature","fall","weather"]},"cloud-with-lightning-and-rain":{"a":"Cloud with Lightning and Rain","b":"26C8","j":["rain","lightning","thunder","cloud","weather"]},"sun-behind-small-cloud":{"a":"Sun Behind Small Cloud","b":"1F324","j":["sun","cloud","weather"]},"sun-behind-large-cloud":{"a":"Sun Behind Large Cloud","b":"1F325","j":["sun","cloud","weather"]},"sun-behind-rain-cloud":{"a":"Sun Behind Rain Cloud","b":"1F326","j":["rain","sun","cloud","weather"]},"cloud-with-rain":{"a":"Cloud with Rain","b":"1F327","j":["rain","cloud","weather"]},"cloud-with-snow":{"a":"Cloud with Snow","b":"1F328","j":["cold","cloud","snow","weather"]},"cloud-with-lightning":{"a":"Cloud with Lightning","b":"1F329","j":["lightning","cloud","thunder","weather"]},"tornado":{"a":"Tornado","b":"1F32A","j":["whirlwind","twister","cyclone","cloud","weather"]},"fog":{"a":"Fog","b":"1F32B","j":["cloud","weather"]},"wind-face":{"a":"Wind Face","b":"1F32C","j":["air","gust","cloud","wind","blow","face"]},"cyclone":{"a":"Cyclone","b":"1F300","j":["vortex","dizzy","tornado","twister","cloud","hurricane","typhoon","spin","weather","swirl","whirlpool","spiral","blue"]},"rainbow":{"a":"Rainbow","b":"1F308","j":["rain","photo","spring","sky","nature","unicorn_face","happy"]},"closed-umbrella":{"a":"Closed Umbrella","b":"1F302","j":["clothing","drizzle","umbrella","rain","weather"]},"umbrella":{"a":"Umbrella","b":"2602","j":["rain","clothing","spring","weather"]},"umbrella-with-rain-drops":{"a":"Umbrella with Rain Drops","b":"2614","j":["clothing","umbrella","drop","rain","spring","rainy","weather"]},"umbrella-on-ground":{"a":"Umbrella on Ground","b":"26F1","j":["umbrella","rain","sun","summer","weather"]},"high-voltage":{"a":"High Voltage","b":"26A1","j":["electric","zap","lightning","thunder","lightning bolt","fast","voltage","danger","weather"]},"snowflake":{"a":"Snowflake","b":"2744","j":["xmas","snow","christmas","season","winter","cold","weather"]},"snowman":{"a":"Snowman","b":"2603","j":["xmas","snow","christmas","season","winter","weather","cold","frozen"]},"snowman-without-snow":{"a":"Snowman Without Snow","b":"26C4","j":["xmas","snow","christmas","winter","season","frozen","cold","without_snow","snowman","weather"]},"comet":{"a":"Comet","b":"2604","j":["space"]},"fire":{"a":"Fire","b":"1F525","j":["cook","hot","tool","flame"]},"droplet":{"a":"Droplet","b":"1F4A7","j":["sweat","drop","water","spring","drip","comic","cold","faucet"]},"water-wave":{"a":"Water Wave","b":"1F30A","j":["sea","water","ocean","tsunami","disaster","nature","wave"]},"jackolantern":{"a":"Jack-O-Lantern","b":"1F383","j":["jack_o_lantern","pumpkin","jack-o-lantern","celebration","halloween","creepy","light","jack","fall","lantern"]},"christmas-tree":{"a":"Christmas Tree","b":"1F384","j":["xmas","festival","celebration","Christmas","december","tree","vacation"]},"fireworks":{"a":"Fireworks","b":"1F386","j":["festival","photo","celebration","carnival","congratulations"]},"sparkler":{"a":"Sparkler","b":"1F387","j":["stars","night","sparkle","fireworks","celebration","shine"]},"firecracker":{"a":"Firecracker","b":"1F9E8","j":["explode","explosive","fireworks","boom","dynamite","explosion"]},"sparkles":{"a":"Sparkles","b":"2728","j":["*","stars","sparkle","cool","awesome","magic","shiny","good","shine","star"]},"balloon":{"a":"Balloon","b":"1F388","j":["birthday","celebration","circus","party"]},"party-popper":{"a":"Party Popper","b":"1F389","j":["birthday","celebration","tada","magic","popper","congratulations","circus","party"]},"confetti-ball":{"a":"Confetti Ball","b":"1F38A","j":["festival","birthday","celebration","ball","confetti","circus","party"]},"tanabata-tree":{"a":"Tanabata Tree","b":"1F38B","j":["branch","celebration","Japanese","banner","tree","nature","summer","plant"]},"pine-decoration":{"a":"Pine Decoration","b":"1F38D","j":["pine","panda","vegetable","bamboo","celebration","Japanese","nature","plant"]},"japanese-dolls":{"a":"Japanese Dolls","b":"1F38E","j":["Japanese dolls","festival","toy","celebration","Japanese","kimono","japanese","doll"]},"carp-streamer":{"a":"Carp Streamer","b":"1F38F","j":["fish","celebration","carp","banner","streamer","japanese","koinobori"]},"wind-chime":{"a":"Wind Chime","b":"1F390","j":["spring","celebration","ding","chime","bell","wind","nature"]},"moon-viewing-ceremony":{"a":"Moon Viewing Ceremony","b":"1F391","j":["ceremony","photo","celebration","tsukimi","asia","japan","moon"]},"red-envelope":{"a":"Red Envelope","b":"1F9E7","j":["good luck","hΓ³ngbāo","lai see","gift","money"]},"ribbon":{"a":"Ribbon","b":"1F380","j":["pink","decoration","celebration","girl","bowtie"]},"wrapped-gift":{"a":"Wrapped Gift","b":"1F381","j":["xmas","wrapped","christmas","birthday","celebration","present","gift","box"]},"reminder-ribbon":{"a":"Reminder Ribbon","b":"1F397","j":["cause","ribbon","sports","support","celebration","reminder","awareness"]},"admission-tickets":{"a":"Admission Tickets","b":"1F39F","j":["entrance","sports","admission","concert","ticket"]},"ticket":{"a":"Ticket","b":"1F3AB","j":["concert","admission","pass","event"]},"military-medal":{"a":"Military Medal","b":"1F396","j":["winning","military","award","celebration","army","medal"]},"trophy":{"a":"Trophy","b":"1F3C6","j":["ftw","win","prize","award","ceremony","contest","place"]},"sports-medal":{"a":"Sports Medal","b":"1F3C5","j":["medal","winning","award"]},"1st-place-medal":{"a":"1st Place Medal","b":"1F947","j":["winning","gold","award","first","medal"]},"2nd-place-medal":{"a":"2nd Place Medal","b":"1F948","j":["medal","second","silver","award"]},"3rd-place-medal":{"a":"3rd Place Medal","b":"1F949","j":["medal","third","bronze","award"]},"soccer-ball":{"a":"Soccer Ball","b":"26BD","j":["football","soccer","sports","ball"]},"baseball":{"a":"Baseball","b":"26BE","j":["balls","sports","ball"]},"softball":{"a":"Softball","b":"1F94E","j":["sports","balls","underarm","glove","ball"]},"basketball":{"a":"Basketball","b":"1F3C0","j":["sports","balls","ball","NBA","hoop"]},"volleyball":{"a":"Volleyball","b":"1F3D0","j":["game","balls","sports","ball"]},"american-football":{"a":"American Football","b":"1F3C8","j":["NFL","sports","balls","ball","football","american"]},"rugby-football":{"a":"Rugby Football","b":"1F3C9","j":["sports","team","rugby","ball","football"]},"tennis":{"a":"Tennis","b":"1F3BE","j":["sports","balls","green","racquet","ball"]},"flying-disc":{"a":"Flying Disc","b":"1F94F","j":["ultimate","sports","frisbee"]},"bowling":{"a":"Bowling","b":"1F3B3","j":["sports","ball","game","play","fun"]},"cricket-game":{"a":"Cricket Game","b":"1F3CF","j":["game","bat","sports","ball"]},"field-hockey":{"a":"Field Hockey","b":"1F3D1","j":["sports","hockey","ball","stick","game","field"]},"ice-hockey":{"a":"Ice Hockey","b":"1F3D2","j":["ice","sports","hockey","puck","stick","game"]},"lacrosse":{"a":"Lacrosse","b":"1F94D","j":["stick","sports","goal","ball"]},"ping-pong":{"a":"Ping Pong","b":"1F3D3","j":["bat","pingpong","sports","paddle","table tennis","ball","game"]},"badminton":{"a":"Badminton","b":"1F3F8","j":["birdie","sports","racquet","game","shuttlecock"]},"boxing-glove":{"a":"Boxing Glove","b":"1F94A","j":["boxing","glove","sports","fighting"]},"martial-arts-uniform":{"a":"Martial Arts Uniform","b":"1F94B","j":["taekwondo","karate","uniform","martial arts","judo"]},"goal-net":{"a":"Goal Net","b":"1F945","j":["net","sports","goal"]},"flag-in-hole":{"a":"Flag in Hole","b":"26F3","j":["business","hole","sports","golf","flag","summer"]},"ice-skate":{"a":"Ice Skate","b":"26F8","j":["skate","sports","ice"]},"fishing-pole":{"a":"Fishing Pole","b":"1F3A3","j":["pole","fish","food","hobby","summer"]},"diving-mask":{"a":"Diving Mask","b":"1F93F","j":["scuba","sport","ocean","diving","snorkeling"]},"running-shirt":{"a":"Running Shirt","b":"1F3BD","j":["running","sash","pageant","shirt","athletics","play"]},"skis":{"a":"Skis","b":"1F3BF","j":["sports","snow","winter","cold","ski"]},"sled":{"a":"Sled","b":"1F6F7","j":["luge","sledge","sleigh","toboggan"]},"curling-stone":{"a":"Curling Stone","b":"1F94C","j":["game","sports","rock"]},"bullseye":{"a":"Bullseye","b":"1F3AF","j":["dart","direct hit","target","bar","hit","game","direct_hit","play"]},"yoyo":{"a":"Yo-Yo","b":"1FA80","j":["toy","yo-yo","fluctuate","yo_yo"]},"kite":{"a":"Kite","b":"1FA81","j":["wind","soar","fly"]},"pool-8-ball":{"a":"Pool 8 Ball","b":"1F3B1","j":["8","billiard","pool","hobby","luck","magic","eight","ball","game"]},"crystal-ball":{"a":"Crystal Ball","b":"1F52E","j":["fairy tale","tool","fantasy","magic","crystal","fortune_teller","ball","fortune","disco","circus","party"]},"magic-wand":{"a":"Magic Wand","b":"1FA84","j":["wizard","witch","magic","supernature","power"]},"nazar-amulet":{"a":"Nazar Amulet","b":"1F9FF","j":["nazar","talisman","evil-eye","bead","charm"]},"video-game":{"a":"Video Game","b":"1F3AE","j":["console","PS4","controller","game","play"]},"joystick":{"a":"Joystick","b":"1F579","j":["game","video game","play"]},"slot-machine":{"a":"Slot Machine","b":"1F3B0","j":["casino","bet","vegas","luck","slot","gamble","game","fruit machine"]},"game-die":{"a":"Game Die","b":"1F3B2","j":["random","tabletop","luck","die","game","dice","play"]},"puzzle-piece":{"a":"Puzzle Piece","b":"1F9E9","j":["puzzle","piece","jigsaw","interlocking","clue"]},"teddy-bear":{"a":"Teddy Bear","b":"1F9F8","j":["toy","plaything","plush","stuffed"]},"piata":{"a":"PiΓ±ata","b":"1FA85","j":["candy","celebration","mexico","pinata","piΓ±ata","party"]},"nesting-dolls":{"a":"Nesting Dolls","b":"1FA86","j":["matryoshka","toy","nesting","doll","russia"]},"spade-suit":{"a":"Spade Suit","b":"2660","j":["cards","suits","card","magic","game","poker"]},"heart-suit":{"a":"Heart Suit","b":"2665","j":["cards","suits","card","magic","game","poker"]},"diamond-suit":{"a":"Diamond Suit","b":"2666","j":["cards","suits","card","magic","game","poker"]},"club-suit":{"a":"Club Suit","b":"2663","j":["cards","suits","card","magic","game","poker"]},"chess-pawn":{"a":"Chess Pawn","b":"265F","j":["chess","dupe","expendable"]},"joker":{"a":"Joker","b":"1F0CF","j":["cards","card","magic","wildcard","game","poker","play"]},"mahjong-red-dragon":{"a":"Mahjong Red Dragon","b":"1F004","j":["red","mahjong","chinese","kanji","game","play"]},"flower-playing-cards":{"a":"Flower Playing Cards","b":"1F3B4","j":["card","red","sunset","Japanese","playing","flower","game"]},"performing-arts":{"a":"Performing Arts","b":"1F3AD","j":["theatre","drama","acting","mask","performing","art","theater"]},"framed-picture":{"a":"Framed Picture","b":"1F5BC","j":["frame","photography","museum","art","picture","painting"]},"artist-palette":{"a":"Artist Palette","b":"1F3A8","j":["draw","paint","museum","palette","design","colors","art","painting"]},"thread":{"a":"Thread","b":"1F9F5","j":["needle","spool","sewing","string"]},"sewing-needle":{"a":"Sewing Needle","b":"1FAA1","j":["needle","sewing","embroidery","sutures","stitches","tailoring"]},"yarn":{"a":"Yarn","b":"1F9F6","j":["knit","crochet","ball"]},"knot":{"a":"Knot","b":"1FAA2","j":["rope","twist","tangled","tie","twine","scout"]},"glasses":{"a":"Glasses","b":"1F453","j":["eyeglasses","nerdy","clothing","dork","eye","accessories","eyesight","fashion","geek","eyewear"]},"sunglasses":{"a":"Sunglasses","b":"1F576","j":["cool","glasses","eye","accessories","dark","eyewear","face"]},"goggles":{"a":"Goggles","b":"1F97D","j":["swimming","eyes","eye protection","welding","safety","protection"]},"lab-coat":{"a":"Lab Coat","b":"1F97C","j":["chemist","doctor","scientist","experiment"]},"safety-vest":{"a":"Safety Vest","b":"1F9BA","j":["vest","emergency","safety","protection"]},"necktie":{"a":"Necktie","b":"1F454","j":["business","clothing","suitup","shirt","tie","fashion","formal","cloth"]},"tshirt":{"a":"T-Shirt","b":"1F455","j":["casual","clothing","t_shirt","shirt","fashion","tee","t-shirt","cloth"]},"jeans":{"a":"Jeans","b":"1F456","j":["clothing","trousers","fashion","pants","shopping"]},"scarf":{"a":"Scarf","b":"1F9E3","j":["clothes","neck","winter"]},"gloves":{"a":"Gloves","b":"1F9E4","j":["clothes","hand","winter","hands"]},"coat":{"a":"Coat","b":"1F9E5","j":["jacket"]},"socks":{"a":"Socks","b":"1F9E6","j":["clothes","stockings","stocking"]},"dress":{"a":"Dress","b":"1F457","j":["clothes","clothing","fashion","shopping"]},"kimono":{"a":"Kimono","b":"1F458","j":["clothing","dress","female","fashion","japanese","women"]},"sari":{"a":"Sari","b":"1F97B","j":["clothing","dress"]},"onepiece-swimsuit":{"a":"One-Piece Swimsuit","b":"1FA71","j":["bathing suit","fashion","one-piece swimsuit","one_piece_swimsuit"]},"briefs":{"a":"Briefs","b":"1FA72","j":["clothing","swimsuit","one-piece","bathing suit","underwear"]},"shorts":{"a":"Shorts","b":"1FA73","j":["underwear","clothing","pants","bathing suit"]},"bikini":{"a":"Bikini","b":"1F459","j":["swim","clothing","woman","swimming","female","girl","fashion","beach","summer"]},"womans-clothes":{"a":"Woman’S Clothes","b":"1F45A","j":["clothing","shopping_bags","woman","woman_s_clothes","female","woman’s clothes","fashion"]},"purse":{"a":"Purse","b":"1F45B","j":["clothing","accessories","shopping","money","sales","fashion","coin"]},"handbag":{"a":"Handbag","b":"1F45C","j":["clothing","purse","accessory","accessories","fashion","bag","shopping"]},"clutch-bag":{"a":"Clutch Bag","b":"1F45D","j":["clothing","accessories","shopping","bag","pouch"]},"shopping-bags":{"a":"Shopping Bags","b":"1F6CD","j":["purchase","buy","bag","hotel","mall","shopping"]},"backpack":{"a":"Backpack","b":"1F392","j":["satchel","school","student","education","bag","rucksack"]},"thong-sandal":{"a":"Thong Sandal","b":"1FA74","j":["zōri","thongs","sandals","thong sandals","footwear","summer","beach sandals"]},"mans-shoe":{"a":"Man’S Shoe","b":"1F45E","j":["shoe","clothing","male","man","fashion","man_s_shoe","man’s shoe"]},"running-shoe":{"a":"Running Shoe","b":"1F45F","j":["shoe","clothing","sports","shoes","sneakers","athletic","sneaker"]},"hiking-boot":{"a":"Hiking Boot","b":"1F97E","j":["hiking","backpacking","camping","boot"]},"flat-shoe":{"a":"Flat Shoe","b":"1F97F","j":["slipper","slip-on","ballet flat","ballet"]},"highheeled-shoe":{"a":"High-Heeled Shoe","b":"1F460","j":["shoe","clothing","shoes","woman","stiletto","female","heel","pumps","fashion","high_heeled_shoe","high-heeled shoe"]},"womans-sandal":{"a":"Woman’S Sandal","b":"1F461","j":["shoe","flip flops","clothing","shoes","woman","woman_s_sandal","sandal","fashion","woman’s sandal"]},"ballet-shoes":{"a":"Ballet Shoes","b":"1FA70","j":["ballet","dance"]},"womans-boot":{"a":"Woman’S Boot","b":"1F462","j":["shoe","clothing","shoes","woman","woman’s boot","fashion","boot","woman_s_boot"]},"crown":{"a":"Crown","b":"1F451","j":["clothing","royalty","queen","leader","lord","kod","king"]},"womans-hat":{"a":"Woman’S Hat","b":"1F452","j":["clothing","hat","woman’s hat","woman","spring","woman_s_hat","accessories","female","fashion","lady"]},"top-hat":{"a":"Top Hat","b":"1F3A9","j":["clothing","hat","tophat","classy","top","magic","gentleman","circus"]},"graduation-cap":{"a":"Graduation Cap","b":"1F393","j":["clothing","hat","school","cap","celebration","degree","learn","education","university","graduation","legal","college"]},"billed-cap":{"a":"Billed Cap","b":"1F9E2","j":["cap","baseball","baseball cap"]},"military-helmet":{"a":"Military Helmet","b":"1FA96","j":["military","army","helmet","protection","warrior","soldier"]},"rescue-workers-helmet":{"a":"Rescue Worker’S Helmet","b":"26D1","j":["hat","rescue worker’s helmet","construction","build","cross","aid","helmet","rescue_worker_s_helmet","face"]},"prayer-beads":{"a":"Prayer Beads","b":"1F4FF","j":["beads","clothing","religion","religious","dhikr","necklace","prayer"]},"lipstick":{"a":"Lipstick","b":"1F484","j":["woman","female","makeup","girl","fashion","cosmetics"]},"ring":{"a":"Ring","b":"1F48D","j":["wedding","gem","marriage","jewelry","valentines","propose","fashion","diamond","engagement"]},"gem-stone":{"a":"Gem Stone","b":"1F48E","j":["gem","ruby","jewel","jewelry","diamond","blue"]},"muted-speaker":{"a":"Muted Speaker","b":"1F507","j":["speaker","sound","silent","mute","silence","volume","quiet"]},"speaker-low-volume":{"a":"Speaker Low Volume","b":"1F508","j":["broadcast","soft","silence","volume","sound"]},"speaker-medium-volume":{"a":"Speaker Medium Volume","b":"1F509","j":["speaker","volume","medium","broadcast"]},"speaker-high-volume":{"a":"Speaker High Volume","b":"1F50A","j":["speaker","broadcast","noise","loud","volume","noisy"]},"loudspeaker":{"a":"Loudspeaker","b":"1F4E2","j":["volume","public address","sound","loud"]},"megaphone":{"a":"Megaphone","b":"1F4E3","j":["speaker","cheering","sound","volume"]},"postal-horn":{"a":"Postal Horn","b":"1F4EF","j":["postal","horn","music","post","instrument"]},"bell":{"a":"Bell","b":"1F514","j":["xmas","christmas","chime","notification","sound"]},"bell-with-slash":{"a":"Bell with Slash","b":"1F515","j":["silent","mute","bell","volume","sound","forbidden","quiet"]},"musical-score":{"a":"Musical Score","b":"1F3BC","j":["score","treble","clef","compose","music"]},"musical-note":{"a":"Musical Note","b":"1F3B5","j":["score","note","music","tone","sound"]},"musical-notes":{"a":"Musical Notes","b":"1F3B6","j":["note","score","music","notes"]},"studio-microphone":{"a":"Studio Microphone","b":"1F399","j":["mic","recording","microphone","sing","talkshow","music","artist","studio"]},"level-slider":{"a":"Level Slider","b":"1F39A","j":["scale","slider","music","level"]},"control-knobs":{"a":"Control Knobs","b":"1F39B","j":["control","dial","music","knobs"]},"microphone":{"a":"Microphone","b":"1F3A4","j":["mic","karaoke","sing","PA","talkshow","music","sound"]},"headphone":{"a":"Headphone","b":"1F3A7","j":["gadgets","earbud","music","score"]},"radio":{"a":"Radio","b":"1F4FB","j":["podcast","communication","video","program","music"]},"saxophone":{"a":"Saxophone","b":"1F3B7","j":["sax","jazz","blues","music","instrument"]},"accordion":{"a":"Accordion","b":"1FA97","j":["concertina","music","squeeze box"]},"guitar":{"a":"Guitar","b":"1F3B8","j":["instrument","music"]},"musical-keyboard":{"a":"Musical Keyboard","b":"1F3B9","j":["piano","keyboard","compose","music","instrument"]},"trumpet":{"a":"Trumpet","b":"1F3BA","j":["brass","instrument","music"]},"violin":{"a":"Violin","b":"1F3BB","j":["orchestra","instrument","music","symphony"]},"banjo":{"a":"Banjo","b":"1FA95","j":["instructment","stringed","music"]},"drum":{"a":"Drum","b":"1F941","j":["drumsticks","instrument","music","snare"]},"long-drum":{"a":"Long Drum","b":"1FA98","j":["beat","rhythm","drum","music","conga"]},"mobile-phone":{"a":"Mobile Phone","b":"1F4F1","j":["gadgets","dial","mobile","cell","phone","telephone","technology","apple"]},"mobile-phone-with-arrow":{"a":"Mobile Phone with Arrow","b":"1F4F2","j":["mobile","receive","arrow","cell","incoming","iphone","phone"]},"telephone":{"a":"Telephone","b":"260E","j":["dial","communication","phone","technology"]},"telephone-receiver":{"a":"Telephone Receiver","b":"1F4DE","j":["communication","dial","receiver","telephone","technology","phone"]},"pager":{"a":"Pager","b":"1F4DF","j":["bbcall","90s","oldschool"]},"fax-machine":{"a":"Fax Machine","b":"1F4E0","j":["communication","fax","technology"]},"battery":{"a":"Battery","b":"1F50B","j":["sustain","energy","power"]},"electric-plug":{"a":"Electric Plug","b":"1F50C","j":["electric","electricity","plug","charger","power"]},"laptop":{"a":"Laptop","b":"1F4BB","j":["screen","personal","display","technology","computer","pc","monitor"]},"desktop-computer":{"a":"Desktop Computer","b":"1F5A5","j":["screen","desktop","technology","computer","computing"]},"printer":{"a":"Printer","b":"1F5A8","j":["paper","ink","computer"]},"keyboard":{"a":"Keyboard","b":"2328","j":["type","text","technology","computer","input"]},"computer-mouse":{"a":"Computer Mouse","b":"1F5B1","j":["click","computer"]},"trackball":{"a":"Trackball","b":"1F5B2","j":["trackpad","technology","computer"]},"computer-disk":{"a":"Computer Disk","b":"1F4BD","j":["90s","optical","minidisk","technology","computer","record","data","disk"]},"floppy-disk":{"a":"Floppy Disk","b":"1F4BE","j":["oldschool","80s","90s","floppy","technology","computer","save","disk"]},"optical-disk":{"a":"Optical Disk","b":"1F4BF","j":["90s","disc","optical","cd","technology","computer","dvd","disk"]},"dvd":{"a":"Dvd","b":"1F4C0","j":["blu-ray","disc","optical","cd","computer","disk"]},"abacus":{"a":"Abacus","b":"1F9EE","j":["calculation"]},"movie-camera":{"a":"Movie Camera","b":"1F3A5","j":["movie","camera","cinema","film","record"]},"film-frames":{"a":"Film Frames","b":"1F39E","j":["cinema","frames","movie","film"]},"film-projector":{"a":"Film Projector","b":"1F4FD","j":["movie","cinema","projector","video","film","record","tape"]},"clapper-board":{"a":"Clapper Board","b":"1F3AC","j":["clapper","movie","record","film"]},"television":{"a":"Television","b":"1F4FA","j":["video","program","tv","technology","oldschool","show"]},"camera":{"a":"Camera","b":"1F4F7","j":["gadgets","video","photography"]},"camera-with-flash":{"a":"Camera with Flash","b":"1F4F8","j":["gadgets","camera","photography","flash","video"]},"video-camera":{"a":"Video Camera","b":"1F4F9","j":["record","camera","video","film"]},"videocassette":{"a":"Videocassette","b":"1F4FC","j":["vhs","80s","90s","video","oldschool","record","tape"]},"magnifying-glass-tilted-left":{"a":"Magnifying Glass Tilted Left","b":"1F50D","j":["find","zoom","detective","search","tool","magnifying","glass"]},"magnifying-glass-tilted-right":{"a":"Magnifying Glass Tilted Right","b":"1F50E","j":["find","zoom","detective","search","tool","magnifying","glass"]},"candle":{"a":"Candle","b":"1F56F","j":["light","fire","wax"]},"light-bulb":{"a":"Light Bulb","b":"1F4A1","j":["electric","electricity","idea","light","comic","bulb"]},"flashlight":{"a":"Flashlight","b":"1F526","j":["electric","torch","sight","night","tool","light","dark","camping"]},"red-paper-lantern":{"a":"Red Paper Lantern","b":"1F3EE","j":["red","paper","halloween","spooky","light","bar","lantern"]},"diya-lamp":{"a":"Diya Lamp","b":"1FA94","j":["oil","lamp","diya","lighting"]},"notebook-with-decorative-cover":{"a":"Notebook with Decorative Cover","b":"1F4D4","j":["decorated","notebook","cover","paper","book","record","study","notes","classroom"]},"closed-book":{"a":"Closed Book","b":"1F4D5","j":["closed","read","learn","textbook","book","knowledge","library"]},"open-book":{"a":"Open Book","b":"1F4D6","j":["open","read","learn","book","literature","knowledge","library","study"]},"green-book":{"a":"Green Book","b":"1F4D7","j":["read","green","book","knowledge","library","study"]},"blue-book":{"a":"Blue Book","b":"1F4D8","j":["read","learn","book","knowledge","library","study","blue"]},"orange-book":{"a":"Orange Book","b":"1F4D9","j":["read","orange","textbook","book","knowledge","library","study"]},"books":{"a":"Books","b":"1F4DA","j":["library","book","study","literature"]},"notebook":{"a":"Notebook","b":"1F4D3","j":["paper","stationery","record","study","notes"]},"ledger":{"a":"Ledger","b":"1F4D2","j":["paper","notes","notebook"]},"page-with-curl":{"a":"Page with Curl","b":"1F4C3","j":["document","paper","documents","page","office","curl"]},"scroll":{"a":"Scroll","b":"1F4DC","j":["paper","documents","ancient","history"]},"page-facing-up":{"a":"Page Facing Up","b":"1F4C4","j":["document","information","paper","documents","page","office"]},"newspaper":{"a":"Newspaper","b":"1F4F0","j":["paper","news","press","headline"]},"rolledup-newspaper":{"a":"Rolled-Up Newspaper","b":"1F5DE","j":["rolled","paper","press","newspaper","news","rolled-up newspaper","rolled_up_newspaper","headline"]},"bookmark-tabs":{"a":"Bookmark Tabs","b":"1F4D1","j":["order","bookmark","tidy","mark","marker","save","favorite","tabs"]},"bookmark":{"a":"Bookmark","b":"1F516","j":["save","label","mark","favorite"]},"label":{"a":"Label","b":"1F3F7","j":["tag","sale"]},"money-bag":{"a":"Money Bag","b":"1F4B0","j":["sale","payment","coins","dollar","moneybag","money","bag"]},"coin":{"a":"Coin","b":"1FA99","j":["gold","currency","money","treasure","silver","metal"]},"yen-banknote":{"a":"Yen Banknote","b":"1F4B4","j":["banknote","currency","bill","note","dollar","money","sales","yen","japanese"]},"dollar-banknote":{"a":"Dollar Banknote","b":"1F4B5","j":["banknote","currency","bill","dollar","note","money","sales"]},"euro-banknote":{"a":"Euro Banknote","b":"1F4B6","j":["banknote","currency","bill","euro","note","dollar","money","sales"]},"pound-banknote":{"a":"Pound Banknote","b":"1F4B7","j":["banknote","uk","currency","bill","british","sterling","note","money","sales","bills","england","pound"]},"money-with-wings":{"a":"Money with Wings","b":"1F4B8","j":["banknote","bill","sale","wings","payment","dollar","money","bills","fly"]},"credit-card":{"a":"Credit Card","b":"1F4B3","j":["credit","card","bill","payment","dollar","money","sales","shopping"]},"receipt":{"a":"Receipt","b":"1F9FE","j":["evidence","proof","accounting","expenses","bookkeeping"]},"chart-increasing-with-yen":{"a":"Chart Increasing with Yen","b":"1F4B9","j":["stats","presentation","growth","green-square","money","chart","yen","graph"]},"envelope":{"a":"Envelope","b":"2709","j":["postal","letter","communication","email","inbox"]},"email":{"a":"E-Mail","b":"1F4E7","j":["letter","communication","e_mail","inbox","e-mail","mail"]},"incoming-envelope":{"a":"Incoming Envelope","b":"1F4E8","j":["letter","envelope","receive","email","incoming","e-mail","inbox"]},"envelope-with-arrow":{"a":"Envelope with Arrow","b":"1F4E9","j":["communication","envelope","email","arrow","outgoing","e-mail"]},"outbox-tray":{"a":"Outbox Tray","b":"1F4E4","j":["letter","sent","email","outbox","tray","box","mail","inbox"]},"inbox-tray":{"a":"Inbox Tray","b":"1F4E5","j":["letter","receive","email","documents","tray","box","mail","inbox"]},"package":{"a":"Package","b":"1F4E6","j":["cardboard","gift","moving","box","parcel","mail"]},"closed-mailbox-with-raised-flag":{"a":"Closed Mailbox with Raised Flag","b":"1F4EB","j":["communication","closed","email","inbox","mailbox","mail","postbox"]},"closed-mailbox-with-lowered-flag":{"a":"Closed Mailbox with Lowered Flag","b":"1F4EA","j":["communication","closed","email","lowered","inbox","mailbox","mail","postbox"]},"open-mailbox-with-raised-flag":{"a":"Open Mailbox with Raised Flag","b":"1F4EC","j":["communication","open","email","inbox","mailbox","mail","postbox"]},"open-mailbox-with-lowered-flag":{"a":"Open Mailbox with Lowered Flag","b":"1F4ED","j":["open","email","lowered","inbox","mailbox","mail","postbox"]},"postbox":{"a":"Postbox","b":"1F4EE","j":["letter","envelope","email","mailbox","mail"]},"ballot-box-with-ballot":{"a":"Ballot Box with Ballot","b":"1F5F3","j":["election","ballot","box","vote"]},"pencil":{"a":"Pencil","b":"270F","j":["paper","school","write","stationery","writing","study"]},"black-nib":{"a":"Black Nib","b":"2712","j":["pen","write","stationery","writing","nib"]},"fountain-pen":{"a":"Fountain Pen","b":"1F58B","j":["pen","write","stationery","fountain","writing"]},"pen":{"a":"Pen","b":"1F58A","j":["stationery","ballpoint","writing","write"]},"paintbrush":{"a":"Paintbrush","b":"1F58C","j":["drawing","art","creativity","painting"]},"crayon":{"a":"Crayon","b":"1F58D","j":["drawing","creativity"]},"memo":{"a":"Memo","b":"1F4DD","j":["test","exam","paper","quiz","write","pencil","stationery","documents","compose","legal","writing","study"]},"briefcase":{"a":"Briefcase","b":"1F4BC","j":["business","documents","work","legal","job","law","career"]},"file-folder":{"a":"File Folder","b":"1F4C1","j":["business","file","folder","documents","office"]},"open-file-folder":{"a":"Open File Folder","b":"1F4C2","j":["open","file","load","folder","documents"]},"card-index-dividers":{"a":"Card Index Dividers","b":"1F5C2","j":["business","card","index","dividers","stationery","organizing"]},"calendar":{"a":"Calendar","b":"1F4C5","j":["date","schedule"]},"tearoff-calendar":{"a":"Tear-off Calendar","b":"1F4C6","j":["tear-off calendar","tear_off_calendar","planning","calendar","date","schedule"]},"spiral-notepad":{"a":"Spiral Notepad","b":"1F5D2","j":["memo","stationery","note","pad","spiral"]},"spiral-calendar":{"a":"Spiral Calendar","b":"1F5D3","j":["pad","planning","calendar","date","spiral","schedule"]},"card-index":{"a":"Card Index","b":"1F4C7","j":["business","card","index","rolodex","stationery"]},"chart-increasing":{"a":"Chart Increasing","b":"1F4C8","j":["business","stats","presentation","growth","success","money","chart","sales","good","recovery","graph","trend","upward","economics"]},"chart-decreasing":{"a":"Chart Decreasing","b":"1F4C9","j":["business","stats","failure","presentation","down","money","chart","recession","sales","bad","graph","trend","economics"]},"bar-chart":{"a":"Bar Chart","b":"1F4CA","j":["stats","presentation","bar","chart","graph"]},"clipboard":{"a":"Clipboard","b":"1F4CB","j":["stationery","documents"]},"pushpin":{"a":"Pushpin","b":"1F4CC","j":["stationery","mark","here","pin"]},"round-pushpin":{"a":"Round Pushpin","b":"1F4CD","j":["pushpin","location","stationery","map","here","pin"]},"paperclip":{"a":"Paperclip","b":"1F4CE","j":["stationery","documents"]},"linked-paperclips":{"a":"Linked Paperclips","b":"1F587","j":["stationery","link","documents","paperclip"]},"straight-ruler":{"a":"Straight Ruler","b":"1F4CF","j":["drawing","architect","sketch","school","math","stationery","calculate","straight edge","ruler","length"]},"triangular-ruler":{"a":"Triangular Ruler","b":"1F4D0","j":["sketch","architect","math","triangle","stationery","ruler","set"]},"scissors":{"a":"Scissors","b":"2702","j":["stationery","tool","cut","cutting"]},"card-file-box":{"a":"Card File Box","b":"1F5C3","j":["business","card","file","stationery","box"]},"file-cabinet":{"a":"File Cabinet","b":"1F5C4","j":["cabinet","file","filing","organizing"]},"wastebasket":{"a":"Wastebasket","b":"1F5D1","j":["rubbish","trash","garbage","bin","toss"]},"locked":{"a":"Locked","b":"1F512","j":["padlock","closed","password","security"]},"unlocked":{"a":"Unlocked","b":"1F513","j":["privacy","unlock","open","lock","security"]},"locked-with-pen":{"a":"Locked with Pen","b":"1F50F","j":["privacy","pen","lock","ink","security","secret","nib"]},"locked-with-key":{"a":"Locked with Key","b":"1F510","j":["privacy","closed","lock","key","security","secure"]},"key":{"a":"Key","b":"1F511","j":["door","password","lock"]},"old-key":{"a":"Old Key","b":"1F5DD","j":["password","lock","old","door","key","clue"]},"hammer":{"a":"Hammer","b":"1F528","j":["create","tools","tool","build"]},"axe":{"a":"Axe","b":"1FA93","j":["chop","hatchet","wood","tool","split","cut"]},"pick":{"a":"Pick","b":"26CF","j":["dig","tools","tool","mining"]},"hammer-and-pick":{"a":"Hammer and Pick","b":"2692","j":["hammer","build","tool","pick","create","tools"]},"hammer-and-wrench":{"a":"Hammer and Wrench","b":"1F6E0","j":["spanner","wrench","hammer","build","tool","create","tools"]},"dagger":{"a":"Dagger","b":"1F5E1","j":["knife","weapon"]},"crossed-swords":{"a":"Crossed Swords","b":"2694","j":["crossed","weapon","swords"]},"water-pistol":{"a":"Water Pistol","b":"1F52B","j":["gun","water","revolver","tool","weapon","handgun","pistol","violence"]},"boomerang":{"a":"Boomerang","b":"1FA83","j":["repercussion","rebound","australia","weapon"]},"bow-and-arrow":{"a":"Bow and Arrow","b":"1F3F9","j":["archer","sports","bow","Sagittarius","arrow","zodiac"]},"shield":{"a":"Shield","b":"1F6E1","j":["protection","security","weapon"]},"carpentry-saw":{"a":"Carpentry Saw","b":"1FA9A","j":["chop","carpenter","tool","cut","lumber","saw"]},"wrench":{"a":"Wrench","b":"1F527","j":["spanner","fix","tool","diy","ikea","maintainer","tools"]},"screwdriver":{"a":"Screwdriver","b":"1FA9B","j":["screw","tools","tool"]},"nut-and-bolt":{"a":"Nut and Bolt","b":"1F529","j":["fix","nut","bolt","tool","handy","tools"]},"gear":{"a":"Gear","b":"2699","j":["cogwheel","tool","cog"]},"clamp":{"a":"Clamp","b":"1F5DC","j":["compress","vice","tool"]},"balance-scale":{"a":"Balance Scale","b":"2696","j":["balance","scale","Libra","weight","law","justice","zodiac","fairness"]},"white-cane":{"a":"White Cane","b":"1F9AF","j":["accessibility","blind","probing_cane"]},"link":{"a":"Link","b":"1F517","j":["rings","url"]},"chains":{"a":"Chains","b":"26D3","j":["arrest","chain","lock"]},"hook":{"a":"Hook","b":"1FA9D","j":["crook","catch","ensnare","curve","selling point","tools"]},"toolbox":{"a":"Toolbox","b":"1F9F0","j":["fix","chest","tool","diy","mechanic","maintainer","tools"]},"magnet":{"a":"Magnet","b":"1F9F2","j":["magnetic","attraction","horseshoe"]},"ladder":{"a":"Ladder","b":"1FA9C","j":["rung","tools","climb","step"]},"alembic":{"a":"Alembic","b":"2697","j":["tool","chemistry","experiment","distilling","science"]},"test-tube":{"a":"Test Tube","b":"1F9EA","j":["chemist","experiment","chemistry","lab","science"]},"petri-dish":{"a":"Petri Dish","b":"1F9EB","j":["bacteria","culture","biology","lab","biologist"]},"dna":{"a":"Dna","b":"1F9EC","j":["genetics","gene","biologist","life","evolution"]},"microscope":{"a":"Microscope","b":"1F52C","j":["tool","experiment","zoomin","laboratory","study","science"]},"telescope":{"a":"Telescope","b":"1F52D","j":["stars","zoom","space","tool","astronomy","science"]},"satellite-antenna":{"a":"Satellite Antenna","b":"1F4E1","j":["communication","space","satellite","future","antenna","radio","dish"]},"syringe":{"a":"Syringe","b":"1F489","j":["sick","needle","drugs","blood","health","nurse","medicine","doctor","shot","hospital"]},"drop-of-blood":{"a":"Drop of Blood","b":"1FA78","j":["period","harm","injury","medicine","menstruation","wound","bleed","blood donation","hurt"]},"pill":{"a":"Pill","b":"1F48A","j":["sick","health","medicine","doctor","drug","pharmacy"]},"adhesive-bandage":{"a":"Adhesive Bandage","b":"1FA79","j":["bandage","heal"]},"stethoscope":{"a":"Stethoscope","b":"1FA7A","j":["medicine","heart","doctor","health"]},"door":{"a":"Door","b":"1F6AA","j":["entry","exit","house"]},"elevator":{"a":"Elevator","b":"1F6D7","j":["accessibility","hoist","lift"]},"mirror":{"a":"Mirror","b":"1FA9E","j":["speculum","reflection","reflector"]},"window":{"a":"Window","b":"1FA9F","j":["frame","transparent","scenery","fresh air","opening","view"]},"bed":{"a":"Bed","b":"1F6CF","j":["rest","hotel","sleep"]},"couch-and-lamp":{"a":"Couch and Lamp","b":"1F6CB","j":["lamp","read","chill","couch","hotel"]},"chair":{"a":"Chair","b":"1FA91","j":["furniture","sit","seat"]},"toilet":{"a":"Toilet","b":"1F6BD","j":["washroom","bathroom","potty","restroom","wc"]},"plunger":{"a":"Plunger","b":"1FAA0","j":["suction","plumber","toilet","force cup"]},"shower":{"a":"Shower","b":"1F6BF","j":["water","bathroom","clean"]},"bathtub":{"a":"Bathtub","b":"1F6C1","j":["shower","bath","bathroom","clean"]},"mouse-trap":{"a":"Mouse Trap","b":"1FAA4","j":["trap","bait","snare","cheese","mousetrap"]},"razor":{"a":"Razor","b":"1FA92","j":["cut","sharp","shave"]},"lotion-bottle":{"a":"Lotion Bottle","b":"1F9F4","j":["moisturizer","lotion","sunscreen","shampoo"]},"safety-pin":{"a":"Safety Pin","b":"1F9F7","j":["diaper","punk rock"]},"broom":{"a":"Broom","b":"1F9F9","j":["cleaning","sweeping","witch"]},"basket":{"a":"Basket","b":"1F9FA","j":["picnic","farming","laundry"]},"roll-of-paper":{"a":"Roll of Paper","b":"1F9FB","j":["roll","paper towels","toilet paper"]},"bucket":{"a":"Bucket","b":"1FAA3","j":["vat","water","container","cask","pail"]},"soap":{"a":"Soap","b":"1F9FC","j":["soapdish","lather","bar","bathing","cleaning"]},"toothbrush":{"a":"Toothbrush","b":"1FAA5","j":["hygiene","teeth","dental","bathroom","clean","brush"]},"sponge":{"a":"Sponge","b":"1F9FD","j":["porous","cleaning","absorbing"]},"fire-extinguisher":{"a":"Fire Extinguisher","b":"1F9EF","j":["fire","extinguish","quench"]},"shopping-cart":{"a":"Shopping Cart","b":"1F6D2","j":["trolley","cart","shopping"]},"cigarette":{"a":"Cigarette","b":"1F6AC","j":["kills","smoking","smoke","joint","tobacco"]},"coffin":{"a":"Coffin","b":"26B0","j":["funeral","cemetery","vampire","rip","die","graveyard","box","death","casket","dead"]},"headstone":{"a":"Headstone","b":"1FAA6","j":["cemetery","rip","graveyard","grave","tombstone","death"]},"funeral-urn":{"a":"Funeral Urn","b":"26B1","j":["funeral","rip","ashes","die","urn","death","dead"]},"moai":{"a":"Moai","b":"1F5FF","j":["moyai","rock","statue","face","easter island"]},"placard":{"a":"Placard","b":"1FAA7","j":["demonstration","picket","sign","announcement","protest"]},"atm-sign":{"a":"Atm Sign","b":"1F3E7","j":["teller","cash","payment","ATM sign","money","sales","automated","blue-square","atm","bank"]},"litter-in-bin-sign":{"a":"Litter in Bin Sign","b":"1F6AE","j":["info","litter bin","sign","blue-square","litter","human"]},"potable-water":{"a":"Potable Water","b":"1F6B0","j":["cleaning","water","restroom","potable","blue-square","drinking","faucet","liquid"]},"wheelchair-symbol":{"a":"Wheelchair Symbol","b":"267F","j":["accessibility","disabled","blue-square","access"]},"mens-room":{"a":"Men’S Room","b":"1F6B9","j":["lavatory","men_s_room","male","man","toilet","gender","restroom","blue-square","men’s room","wc"]},"womens-room":{"a":"Women’S Room","b":"1F6BA","j":["lavatory","purple-square","loo","women_s_room","woman","toilet","gender","female","restroom","women’s room","wc"]},"restroom":{"a":"Restroom","b":"1F6BB","j":["lavatory","toilet","gender","refresh","WC","blue-square","wc"]},"baby-symbol":{"a":"Baby Symbol","b":"1F6BC","j":["orange-square","child","changing","baby"]},"water-closet":{"a":"Water Closet","b":"1F6BE","j":["lavatory","water","toilet","closet","restroom","blue-square","wc"]},"passport-control":{"a":"Passport Control","b":"1F6C2","j":["control","passport","blue-square","custom"]},"customs":{"a":"Customs","b":"1F6C3","j":["border","blue-square","passport"]},"baggage-claim":{"a":"Baggage Claim","b":"1F6C4","j":["baggage","claim","transport","airport","blue-square"]},"left-luggage":{"a":"Left Luggage","b":"1F6C5","j":["baggage","luggage","travel","blue-square","locker"]},"warning":{"a":"Warning","b":"26A0","j":["exclamation","wip","issue","error","problem","alert"]},"children-crossing":{"a":"Children Crossing","b":"1F6B8","j":["traffic","driving","school","sign","child","pedestrian","crossing","warning","danger","yellow-diamond"]},"no-entry":{"a":"No Entry","b":"26D4","j":["privacy","traffic","limit","stop","no","not","prohibited","denied","entry","circle","bad","security","forbidden"]},"prohibited":{"a":"Prohibited","b":"1F6AB","j":["limit","stop","disallow","no","not","denied","forbid","entry","circle","forbidden"]},"no-bicycles":{"a":"No Bicycles","b":"1F6B3","j":["cyclist","no","bike","prohibited","bicycle","circle","forbidden"]},"no-smoking":{"a":"No Smoking","b":"1F6AD","j":["cigarette","no","prohibited","not","smoking","smell","smoke","blue-square","forbidden"]},"no-littering":{"a":"No Littering","b":"1F6AF","j":["trash","not","no","prohibited","garbage","bin","circle","litter","forbidden"]},"nonpotable-water":{"a":"Non-Potable Water","b":"1F6B1","j":["non_potable_water","faucet","water","drink","circle","tap","non-drinking","non-potable"]},"no-pedestrians":{"a":"No Pedestrians","b":"1F6B7","j":["no","not","prohibited","rules","circle","walking","pedestrian","crossing","forbidden"]},"no-mobile-phones":{"a":"No Mobile Phones","b":"1F4F5","j":["mobile","no","mute","cell","circle","iphone","forbidden","phone"]},"no-one-under-eighteen":{"a":"No One Under Eighteen","b":"1F51E","j":["night","prohibited","underage","eighteen","drink","circle","18","minor","pub","age restriction"]},"radioactive":{"a":"Radioactive","b":"2622","j":["nuclear","danger","sign"]},"biohazard":{"a":"Biohazard","b":"2623","j":["danger","sign"]},"up-arrow":{"a":"Up Arrow","b":"2B06","j":["north","arrow","direction","cardinal","continue","top","blue-square"]},"upright-arrow":{"a":"Up-Right Arrow","b":"2197","j":["point","up_right_arrow","arrow","direction","northeast","diagonal","blue-square","intercardinal","up-right arrow"]},"right-arrow":{"a":"Right Arrow","b":"27A1","j":["arrow","direction","cardinal","east","next","blue-square"]},"downright-arrow":{"a":"Down-Right Arrow","b":"2198","j":["down_right_arrow","arrow","direction","southeast","diagonal","blue-square","down-right arrow","intercardinal"]},"down-arrow":{"a":"Down Arrow","b":"2B07","j":["south","arrow","direction","cardinal","down","blue-square","bottom"]},"downleft-arrow":{"a":"Down-Left Arrow","b":"2199","j":["arrow","direction","down_left_arrow","down-left arrow","southwest","diagonal","blue-square","intercardinal"]},"left-arrow":{"a":"Left Arrow","b":"2B05","j":["previous","arrow","cardinal","direction","west","blue-square","back"]},"upleft-arrow":{"a":"Up-Left Arrow","b":"2196","j":["point","arrow","direction","northwest","diagonal","blue-square","intercardinal","up_left_arrow","up-left arrow"]},"updown-arrow":{"a":"Up-Down Arrow","b":"2195","j":["arrow","direction","way","up_down_arrow","blue-square","vertical","up-down arrow"]},"leftright-arrow":{"a":"Left-Right Arrow","b":"2194","j":["sideways","horizontal","left-right arrow","arrow","direction","shape","left_right_arrow"]},"right-arrow-curving-left":{"a":"Right Arrow Curving Left","b":"21A9","j":["enter","arrow","return","blue-square","undo","back"]},"left-arrow-curving-right":{"a":"Left Arrow Curving Right","b":"21AA","j":["arrow","direction","rotate","return","blue-square"]},"right-arrow-curving-up":{"a":"Right Arrow Curving Up","b":"2934","j":["top","arrow","direction","blue-square"]},"right-arrow-curving-down":{"a":"Right Arrow Curving Down","b":"2935","j":["arrow","direction","down","blue-square","bottom"]},"clockwise-vertical-arrows":{"a":"Clockwise Vertical Arrows","b":"1F503","j":["reload","clockwise","arrow","cycle","repeat","sync","round"]},"counterclockwise-arrows-button":{"a":"Counterclockwise Arrows Button","b":"1F504","j":["withershins","arrow","cycle","sync","blue-square","anticlockwise","counterclockwise"]},"back-arrow":{"a":"Back Arrow","b":"1F519","j":["arrow","return","words","BACK arrow","back"]},"end-arrow":{"a":"End Arrow","b":"1F51A","j":["words","arrow","END arrow","end"]},"on-arrow":{"a":"On! Arrow","b":"1F51B","j":["on","arrow","words","ON! arrow","mark"]},"soon-arrow":{"a":"Soon Arrow","b":"1F51C","j":["words","arrow","SOON arrow","soon"]},"top-arrow":{"a":"Top Arrow","b":"1F51D","j":["up","TOP arrow","top","arrow","words","blue-square"]},"place-of-worship":{"a":"Place of Worship","b":"1F6D0","j":["church","worship","religion","temple","prayer"]},"atom-symbol":{"a":"Atom Symbol","b":"269B","j":["atheist","atom","chemistry","physics","science"]},"om":{"a":"Om","b":"1F549","j":["hinduism","religion","sikhism","jainism","Hindu","buddhism"]},"star-of-david":{"a":"Star of David","b":"2721","j":["Jew","star of David","religion","Jewish","David","judaism","star"]},"wheel-of-dharma":{"a":"Wheel of Dharma","b":"2638","j":["dharma","hinduism","Buddhist","wheel","religion","sikhism","jainism","buddhism"]},"yin-yang":{"a":"Yin Yang","b":"262F","j":["taoist","balance","religion","yang","yin","tao"]},"latin-cross":{"a":"Latin Cross","b":"271D","j":["religion","Christian","christianity","cross"]},"orthodox-cross":{"a":"Orthodox Cross","b":"2626","j":["religion","suppedaneum","Christian","cross"]},"star-and-crescent":{"a":"Star and Crescent","b":"262A","j":["religion","islam","Muslim"]},"peace-symbol":{"a":"Peace Symbol","b":"262E","j":["peace","hippie"]},"menorah":{"a":"Menorah","b":"1F54E","j":["religion","candelabrum","jewish","candlestick","hanukkah","candles"]},"dotted-sixpointed-star":{"a":"Dotted Six-Pointed Star","b":"1F52F","j":["purple-square","dotted six-pointed star","dotted_six_pointed_star","religion","jewish","hexagram","fortune","star"]},"aries":{"a":"Aries","b":"2648","j":["purple-square","sign","ram","astrology","zodiac"]},"taurus":{"a":"Taurus","b":"2649","j":["purple-square","ox","sign","bull","astrology","zodiac"]},"gemini":{"a":"Gemini","b":"264A","j":["purple-square","twins","sign","astrology","zodiac"]},"cancer":{"a":"Cancer","b":"264B","j":["purple-square","sign","astrology","crab","zodiac"]},"leo":{"a":"Leo","b":"264C","j":["purple-square","lion","sign","astrology","zodiac"]},"virgo":{"a":"Virgo","b":"264D","j":["zodiac","purple-square","sign","astrology"]},"libra":{"a":"Libra","b":"264E","j":["balance","purple-square","scales","sign","astrology","justice","zodiac"]},"scorpio":{"a":"Scorpio","b":"264F","j":["purple-square","scorpius","sign","astrology","zodiac","scorpion"]},"sagittarius":{"a":"Sagittarius","b":"2650","j":["purple-square","archer","sign","astrology","zodiac"]},"capricorn":{"a":"Capricorn","b":"2651","j":["purple-square","sign","goat","astrology","zodiac"]},"aquarius":{"a":"Aquarius","b":"2652","j":["purple-square","water","sign","astrology","bearer","zodiac"]},"pisces":{"a":"Pisces","b":"2653","j":["fish","purple-square","sign","astrology","zodiac"]},"ophiuchus":{"a":"Ophiuchus","b":"26CE","j":["purple-square","constellation","sign","astrology","snake","bearer","serpent","zodiac"]},"shuffle-tracks-button":{"a":"Shuffle Tracks Button","b":"1F500","j":["shuffle","random","arrow","music","blue-square","crossed"]},"repeat-button":{"a":"Repeat Button","b":"1F501","j":["loop","clockwise","arrow","repeat","record"]},"repeat-single-button":{"a":"Repeat Single Button","b":"1F502","j":["loop","clockwise","arrow","once","blue-square"]},"play-button":{"a":"Play Button","b":"25B6","j":["right","arrow","direction","triangle","blue-square","play"]},"fastforward-button":{"a":"Fast-Forward Button","b":"23E9","j":["speed","forward","arrow","fast_forward_button","continue","double","fast","blue-square","fast-forward button","play"]},"next-track-button":{"a":"Next Track Button","b":"23ED","j":["next scene","forward","arrow","triangle","next","blue-square","next track"]},"play-or-pause-button":{"a":"Play or Pause Button","b":"23EF","j":["right","arrow","triangle","blue-square","pause","play"]},"reverse-button":{"a":"Reverse Button","b":"25C0","j":["left","arrow","direction","triangle","reverse","blue-square"]},"fast-reverse-button":{"a":"Fast Reverse Button","b":"23EA","j":["arrow","double","blue-square","rewind","play"]},"last-track-button":{"a":"Last Track Button","b":"23EE","j":["previous track","arrow","triangle","backward","previous scene"]},"upwards-button":{"a":"Upwards Button","b":"1F53C","j":["point","red","forward","arrow","direction","top","triangle","button","blue-square"]},"fast-up-button":{"a":"Fast Up Button","b":"23EB","j":["top","arrow","direction","double","blue-square"]},"downwards-button":{"a":"Downwards Button","b":"1F53D","j":["red","arrow","direction","down","button","blue-square","bottom"]},"fast-down-button":{"a":"Fast Down Button","b":"23EC","j":["arrow","direction","down","double","blue-square","bottom"]},"pause-button":{"a":"Pause Button","b":"23F8","j":["double","bar","blue-square","pause","vertical"]},"stop-button":{"a":"Stop Button","b":"23F9","j":["square","stop","blue-square"]},"record-button":{"a":"Record Button","b":"23FA","j":["record","circle","blue-square"]},"eject-button":{"a":"Eject Button","b":"23CF","j":["eject","blue-square"]},"cinema":{"a":"Cinema","b":"1F3A6","j":["movie","camera","film","stage","curtain","blue-square","record","theater"]},"dim-button":{"a":"Dim Button","b":"1F505","j":["dim","low","warm","sun","summer","afternoon","brightness"]},"bright-button":{"a":"Bright Button","b":"1F506","j":["light","sun","brightness","bright"]},"antenna-bars":{"a":"Antenna Bars","b":"1F4F6","j":["mobile","internet","connection","wifi","cell","bar","bars","reception","blue-square","antenna","bluetooth","phone"]},"vibration-mode":{"a":"Vibration Mode","b":"1F4F3","j":["orange-square","mobile","mode","vibration","cell","telephone","phone"]},"mobile-phone-off":{"a":"Mobile Phone off","b":"1F4F4","j":["orange-square","mobile","mute","cell","off","telephone","silence","quiet","phone"]},"female-sign":{"a":"Female Sign","b":"2640","j":["woman","women","girl","lady"]},"male-sign":{"a":"Male Sign","b":"2642","j":["man","boy","men"]},"transgender-symbol":{"a":"Transgender Symbol","b":"26A7","j":["lgbtq","transgender"]},"multiply":{"a":"Multiply","b":"2716","j":["cancel","multiplication_sign","x","math","sign","multiplication","calculation","Γ—"]},"plus":{"a":"Plus","b":"2795","j":["+","addition","math","more","sign","increase","calculation","plus_sign"]},"minus":{"a":"Minus","b":"2796","j":["-","math","less","sign","βˆ’","minus_sign","subtract","calculation"]},"divide":{"a":"Divide","b":"2797","j":["Γ·","math","division","sign","calculation","division_sign"]},"infinity":{"a":"Infinity","b":"267E","j":["universal","forever","unbounded"]},"double-exclamation-mark":{"a":"Double Exclamation Mark","b":"203C","j":["exclamation","surprise","!","mark","!!","bangbang"]},"exclamation-question-mark":{"a":"Exclamation Question Mark","b":"2049","j":["exclamation","surprise","wat","punctuation","!","?","mark","question","interrobang","!?"]},"red-question-mark":{"a":"Red Question Mark","b":"2753","j":["punctuation","question_mark","confused","question","?","mark","doubt"]},"white-question-mark":{"a":"White Question Mark","b":"2754","j":["outlined","gray","punctuation","doubts","confused","question","?","huh","mark"]},"white-exclamation-mark":{"a":"White Exclamation Mark","b":"2755","j":["exclamation","surprise","wow","outlined","gray","punctuation","!","mark","warning"]},"red-exclamation-mark":{"a":"Red Exclamation Mark","b":"2757","j":["exclamation","surprise","wow","punctuation","exclamation_mark","!","mark","warning","danger","heavy_exclamation_mark"]},"wavy-dash":{"a":"Wavy Dash","b":"3030","j":["draw","punctuation","mustache","line","moustache","squiggle","wavy","scribble","dash"]},"currency-exchange":{"a":"Currency Exchange","b":"1F4B1","j":["exchange","currency","dollar","money","sales","travel","bank"]},"heavy-dollar-sign":{"a":"Heavy Dollar Sign","b":"1F4B2","j":["currency","buck","payment","dollar","money","sales"]},"medical-symbol":{"a":"Medical Symbol","b":"2695","j":["health","medicine","staff","aesculapius","hospital"]},"recycling-symbol":{"a":"Recycling Symbol","b":"267B","j":["recycle","trash","garbage","arrow","environment"]},"fleurdelis":{"a":"Fleur-De-Lis","b":"269C","j":["scout","fleur-de-lis","decorative","fleur_de_lis"]},"trident-emblem":{"a":"Trident Emblem","b":"1F531","j":["trident","ship","spear","tool","emblem","weapon","anchor"]},"name-badge":{"a":"Name Badge","b":"1F4DB","j":["name","fire","badge","forbid"]},"japanese-symbol-for-beginner":{"a":"Japanese Symbol for Beginner","b":"1F530","j":["shield","badge","leaf","Japanese","chevron","Japanese symbol for beginner","beginner"]},"hollow-red-circle":{"a":"Hollow Red Circle","b":"2B55","j":["red","o","large","circle","round"]},"check-mark-button":{"a":"Check Mark Button","b":"2705","j":["ok","answer","check","green-square","tick","election","βœ“","button","mark","vote","agree"]},"check-box-with-check":{"a":"Check Box with Check","b":"2611","j":["confirm","ok","black-square","check","tick","election","βœ“","box","vote","yes","agree"]},"check-mark":{"a":"Check Mark","b":"2714","j":["ok","answer","check","nike","tick","βœ“","mark","yes"]},"cross-mark":{"a":"Cross Mark","b":"274C","j":["cancel","multiply","red","no","x","cross","delete","remove","multiplication","mark","Γ—"]},"cross-mark-button":{"a":"Cross Mark Button","b":"274E","j":["no","x","green-square","mark","Γ—","square","deny"]},"curly-loop":{"a":"Curly Loop","b":"27B0","j":["loop","draw","shape","squiggle","scribble","curl"]},"double-curly-loop":{"a":"Double Curly Loop","b":"27BF","j":["loop","cassette","double","tape","curl"]},"part-alternation-mark":{"a":"Part Alternation Mark","b":"303D","j":["business","stats","presentation","bad","mark","graph","part","economics"]},"eightspoked-asterisk":{"a":"Eight-Spoked Asterisk","b":"2733","j":["*","sparkle","green-square","eight_spoked_asterisk","asterisk","eight-spoked asterisk","star"]},"eightpointed-star":{"a":"Eight-Pointed Star","b":"2734","j":["*","orange-square","polygon","eight_pointed_star","eight-pointed star","shape","star"]},"sparkle":{"a":"Sparkle","b":"2747","j":["*","stars","fireworks","awesome","green-square","good"]},"copyright":{"a":"Copyright","b":"00A9","j":["license","ip","circle","c","legal","law"]},"registered":{"a":"Registered","b":"00AE","j":["alphabet","circle","r"]},"trade-mark":{"a":"Trade Mark","b":"2122","j":["trademark","brand","tm","mark","legal","law"]},"keycap":{"a":"Keycap: *","b":"002A-FE0F-20E3","j":["star","keycap_"]},"keycap-0":{"a":"Keycap: 0","b":"0030-FE0F-20E3","j":["null","numbers","0","blue-square","keycap"]},"keycap-1":{"a":"Keycap: 1","b":"0031-FE0F-20E3","j":["1","numbers","keycap","blue-square"]},"keycap-2":{"a":"Keycap: 2","b":"0032-FE0F-20E3","j":["numbers","prime","blue-square","keycap","2"]},"keycap-3":{"a":"Keycap: 3","b":"0033-FE0F-20E3","j":["numbers","3","prime","blue-square","keycap"]},"keycap-4":{"a":"Keycap: 4","b":"0034-FE0F-20E3","j":["numbers","keycap","4","blue-square"]},"keycap-5":{"a":"Keycap: 5","b":"0035-FE0F-20E3","j":["numbers","5","prime","blue-square","keycap"]},"keycap-6":{"a":"Keycap: 6","b":"0036-FE0F-20E3","j":["6","numbers","keycap","blue-square"]},"keycap-7":{"a":"Keycap: 7","b":"0037-FE0F-20E3","j":["numbers","7","prime","blue-square","keycap"]},"keycap-8":{"a":"Keycap: 8","b":"0038-FE0F-20E3","j":["numbers","keycap","8","blue-square"]},"keycap-9":{"a":"Keycap: 9","b":"0039-FE0F-20E3","j":["numbers","keycap","9","blue-square"]},"keycap-10":{"a":"Keycap: 10","b":"1F51F","j":["10","numbers","keycap","blue-square"]},"input-latin-uppercase":{"a":"Input Latin Uppercase","b":"1F520","j":["alphabet","ABCD","uppercase","words","blue-square","letters","latin","input"]},"input-latin-lowercase":{"a":"Input Latin Lowercase","b":"1F521","j":["alphabet","abcd","blue-square","letters","latin","input","lowercase"]},"input-numbers":{"a":"Input Numbers","b":"1F522","j":["numbers","1234","input","blue-square"]},"input-symbols":{"a":"Input Symbols","b":"1F523","j":["γ€’β™ͺ&%","characters","glyphs","note","music","blue-square","percent","ampersand","input"]},"input-latin-letters":{"a":"Input Latin Letters","b":"1F524","j":["alphabet","abc","blue-square","letters","latin","input"]},"a-button-blood-type":{"a":"A Button (Blood Type)","b":"1F170","j":["a","letter","alphabet","a_button","red-square","A button (blood type)","blood type"]},"ab-button-blood-type":{"a":"Ab Button (Blood Type)","b":"1F18E","j":["ab","alphabet","ab_button","red-square","AB button (blood type)","blood type"]},"b-button-blood-type":{"a":"B Button (Blood Type)","b":"1F171","j":["letter","alphabet","b","B button (blood type)","red-square","b_button","blood type"]},"cl-button":{"a":"Cl Button","b":"1F191","j":["cl","alphabet","CL button","words","red-square"]},"cool-button":{"a":"Cool Button","b":"1F192","j":["words","cool","COOL button","blue-square"]},"free-button":{"a":"Free Button","b":"1F193","j":["words","FREE button","free","blue-square"]},"information":{"a":"Information","b":"2139","j":["alphabet","letter","i","blue-square"]},"id-button":{"a":"Id Button","b":"1F194","j":["purple-square","id","ID button","words","identity"]},"circled-m":{"a":"Circled M","b":"24C2","j":["blue-circle","letter","alphabet","circle","circled M","m"]},"new-button":{"a":"New Button","b":"1F195","j":["start","words","NEW button","blue-square","new"]},"ng-button":{"a":"Ng Button","b":"1F196","j":["NG button","ng","icon","words","shape","blue-square"]},"o-button-blood-type":{"a":"O Button (Blood Type)","b":"1F17E","j":["letter","O button (blood type)","o","alphabet","o_button","red-square","blood type"]},"ok-button":{"a":"Ok Button","b":"1F197","j":["OK button","good","blue-square","OK","yes","agree"]},"p-button":{"a":"P Button","b":"1F17F","j":["cars","letter","alphabet","blue-square","parking","P button"]},"sos-button":{"a":"Sos Button","b":"1F198","j":["SOS button","911","help","words","emergency","red-square","sos"]},"up-button":{"a":"Up! Button","b":"1F199","j":["up","high","above","mark","blue-square","UP! button"]},"vs-button":{"a":"Vs Button","b":"1F19A","j":["orange-square","vs","words","VS button","versus"]},"japanese-here-button":{"a":"Japanese β€œHere” Button","b":"1F201","j":["Japanese β€œhere” button","Japanese","destination","katakana","β€œhere”","blue-square","japanese","γ‚³γ‚³","here"]},"japanese-service-charge-button":{"a":"Japanese β€œService Charge” Button","b":"1F202","j":["β€œservice charge”","Japanese","katakana","Japanese β€œservice charge” button","γ‚΅","blue-square","japanese"]},"japanese-monthly-amount-button":{"a":"Japanese β€œMonthly Amount” Button","b":"1F237","j":["orange-square","month","Japanese","Japanese β€œmonthly amount” button","β€œmonthly amount”","chinese","月","kanji","japanese","ideograph","moon"]},"japanese-not-free-of-charge-button":{"a":"Japanese β€œNot Free of Charge” Button","b":"1F236","j":["orange-square","ζœ‰","β€œnot free of charge”","Japanese","Japanese β€œnot free of charge” button","chinese","kanji","ideograph","have"]},"japanese-reserved-button":{"a":"Japanese β€œReserved” Button","b":"1F22F","j":["point","Japanese β€œreserved” button","green-square","Japanese","chinese","ζŒ‡","kanji","ideograph","β€œreserved”"]},"japanese-bargain-button":{"a":"Japanese β€œBargain” Button","b":"1F250","j":["β€œbargain”","εΎ—","Japanese β€œbargain” button","Japanese","get","circle","chinese","kanji","ideograph","obtain"]},"japanese-discount-button":{"a":"Japanese β€œDiscount” Button","b":"1F239","j":["β€œdiscount”","Japanese","Japanese β€œdiscount” button","divide","chinese","kanji","ideograph","pink-square","cut","割"]},"japanese-free-of-charge-button":{"a":"Japanese β€œFree of Charge” Button","b":"1F21A","j":["β€œfree of charge”","orange-square","η„‘","Japanese","Japanese β€œfree of charge” button","chinese","kanji","japanese","ideograph","nothing"]},"japanese-prohibited-button":{"a":"Japanese β€œProhibited” Button","b":"1F232","j":["禁","limit","forbidden","β€œprohibited”","Japanese β€œprohibited” button","Japanese","restricted","kanji","chinese","japanese","red-square","ideograph"]},"japanese-acceptable-button":{"a":"Japanese β€œAcceptable” Button","b":"1F251","j":["ok","Japanese β€œacceptable” button","Japanese","可","chinese","good","kanji","ideograph","orange-circle","yes","β€œacceptable”","agree"]},"japanese-application-button":{"a":"Japanese β€œApplication” Button","b":"1F238","j":["orange-square","η”³","β€œapplication”","Japanese","chinese","kanji","japanese","Japanese β€œapplication” button","ideograph"]},"japanese-passing-grade-button":{"a":"Japanese β€œPassing Grade” Button","b":"1F234","j":["β€œpassing grade”","Japanese β€œpassing grade” button","Japanese","join","chinese","kanji","合","japanese","red-square","ideograph"]},"japanese-vacancy-button":{"a":"Japanese β€œVacancy” Button","b":"1F233","j":["Japanese β€œvacancy” button","Japanese","sky","japanese","kanji","chinese","empty","blue-square","β€œvacancy”","η©Ί","ideograph"]},"japanese-congratulations-button":{"a":"Japanese β€œCongratulations” Button","b":"3297","j":["Japanese","η₯","Japanese β€œcongratulations” button","chinese","kanji","β€œcongratulations”","japanese","ideograph","red-circle"]},"japanese-secret-button":{"a":"Japanese β€œSecret” Button","b":"3299","j":["Japanese β€œsecret” button","privacy","sshh","秘","Japanese","chinese","kanji","ideograph","β€œsecret”","red-circle"]},"japanese-open-for-business-button":{"a":"Japanese β€œOpen for Business” Button","b":"1F23A","j":["β€œopen for business”","orange-square","opening hours","Japanese β€œopen for business” button","Japanese","ε–Ά","japanese","ideograph"]},"japanese-no-vacancy-button":{"a":"Japanese β€œNo Vacancy” Button","b":"1F235","j":["full","ζΊ€","Japanese","β€œno vacancy”","chinese","kanji","japanese","red-square","ideograph","Japanese β€œno vacancy” button"]},"red-circle":{"a":"Red Circle","b":"1F534","j":["geometric","red","shape","error","circle","danger"]},"orange-circle":{"a":"Orange Circle","b":"1F7E0","j":["circle","round","orange"]},"yellow-circle":{"a":"Yellow Circle","b":"1F7E1","j":["yellow","circle","round"]},"green-circle":{"a":"Green Circle","b":"1F7E2","j":["green","circle","round"]},"blue-circle":{"a":"Blue Circle","b":"1F535","j":["geometric","icon","shape","button","circle","blue"]},"purple-circle":{"a":"Purple Circle","b":"1F7E3","j":["circle","round","purple"]},"brown-circle":{"a":"Brown Circle","b":"1F7E4","j":["brown","circle","round"]},"black-circle":{"a":"Black Circle","b":"26AB","j":["geometric","shape","button","circle","round"]},"white-circle":{"a":"White Circle","b":"26AA","j":["shape","geometric","round","circle"]},"red-square":{"a":"Red Square","b":"1F7E5","j":["square","red"]},"orange-square":{"a":"Orange Square","b":"1F7E7","j":["square","orange"]},"yellow-square":{"a":"Yellow Square","b":"1F7E8","j":["yellow","square"]},"green-square":{"a":"Green Square","b":"1F7E9","j":["green","square"]},"blue-square":{"a":"Blue Square","b":"1F7E6","j":["square","blue"]},"purple-square":{"a":"Purple Square","b":"1F7EA","j":["square","purple"]},"brown-square":{"a":"Brown Square","b":"1F7EB","j":["brown","square"]},"black-large-square":{"a":"Black Large Square","b":"2B1B","j":["geometric","icon","shape","button","square"]},"white-large-square":{"a":"White Large Square","b":"2B1C","j":["geometric","icon","stone","shape","button","square"]},"black-medium-square":{"a":"Black Medium Square","b":"25FC","j":["geometric","icon","shape","button","square"]},"white-medium-square":{"a":"White Medium Square","b":"25FB","j":["geometric","icon","stone","shape","square"]},"black-mediumsmall-square":{"a":"Black Medium-Small Square","b":"25FE","j":["black medium-small square","geometric","icon","black_medium_small_square","shape","button","square"]},"white-mediumsmall-square":{"a":"White Medium-Small Square","b":"25FD","j":["geometric","white medium-small square","white_medium_small_square","icon","stone","shape","button","square"]},"black-small-square":{"a":"Black Small Square","b":"25AA","j":["icon","shape","square","geometric"]},"white-small-square":{"a":"White Small Square","b":"25AB","j":["icon","shape","square","geometric"]},"large-orange-diamond":{"a":"Large Orange Diamond","b":"1F536","j":["geometric","gem","jewel","orange","shape","diamond"]},"large-blue-diamond":{"a":"Large Blue Diamond","b":"1F537","j":["geometric","gem","jewel","shape","diamond","blue"]},"small-orange-diamond":{"a":"Small Orange Diamond","b":"1F538","j":["geometric","gem","jewel","orange","shape","diamond"]},"small-blue-diamond":{"a":"Small Blue Diamond","b":"1F539","j":["geometric","gem","jewel","shape","diamond","blue"]},"red-triangle-pointed-up":{"a":"Red Triangle Pointed Up","b":"1F53A","j":["up","geometric","red","top","direction","shape"]},"red-triangle-pointed-down":{"a":"Red Triangle Pointed Down","b":"1F53B","j":["geometric","red","direction","down","shape","bottom"]},"diamond-with-a-dot":{"a":"Diamond with a Dot","b":"1F4A0","j":["geometric","gem","fancy","jewel","inside","comic","diamond","crystal","blue"]},"radio-button":{"a":"Radio Button","b":"1F518","j":["geometric","old","button","circle","music","radio","input"]},"white-square-button":{"a":"White Square Button","b":"1F533","j":["geometric","outlined","shape","button","square","input"]},"black-square-button":{"a":"Black Square Button","b":"1F532","j":["frame","geometric","shape","button","square","input"]},"chequered-flag":{"a":"Chequered Flag","b":"1F3C1","j":["chequered","checkered","race","racing","gokart","finishline","contest"]},"triangular-flag":{"a":"Triangular Flag","b":"1F6A9","j":["milestone","place","mark","post"]},"crossed-flags":{"a":"Crossed Flags","b":"1F38C","j":["nation","celebration","cross","Japanese","border","japanese","country","crossed"]},"black-flag":{"a":"Black Flag","b":"1F3F4","j":["waving","pirate"]},"white-flag":{"a":"White Flag","b":"1F3F3","j":["loser","give up","surrender","lost","waving","losing","fail"]},"rainbow-flag":{"a":"Rainbow Flag","b":"1F3F3-FE0F-200D-1F308","j":["gay","glbt","pride","lesbian","homosexual","flag","lgbt","bisexual","rainbow","queer","transgender"]},"transgender-flag":{"a":"Transgender Flag","b":"1F3F3-FE0F-200D-26A7-FE0F","j":["pink","lgbtq","light blue","flag","white","transgender"]},"pirate-flag":{"a":"Pirate Flag","b":"1F3F4-200D-2620-FE0F","j":["skull","crossbones","plunder","flag","Jolly Roger","treasure","banner","pirate"]},"flag-ascension-island":{"a":"Flag: Ascension Island","b":"1F1E6-1F1E8","j":["flag"]},"flag-andorra":{"a":"Flag: Andorra","b":"1F1E6-1F1E9","j":["flag","ad","banner","country","nation"]},"flag-united-arab-emirates":{"a":"Flag: United Arab Emirates","b":"1F1E6-1F1EA","j":["united","flag","emirates","banner","arab","country","nation"]},"flag-afghanistan":{"a":"Flag: Afghanistan","b":"1F1E6-1F1EB","j":["af","flag","banner","country","nation"]},"flag-antigua--barbuda":{"a":"Flag: Antigua & Barbuda","b":"1F1E6-1F1EC","j":["barbuda","antigua","flag","banner","country","nation","flag_antigua_barbuda"]},"flag-anguilla":{"a":"Flag: Anguilla","b":"1F1E6-1F1EE","j":["ai","flag","banner","country","nation"]},"flag-albania":{"a":"Flag: Albania","b":"1F1E6-1F1F1","j":["al","flag","banner","country","nation"]},"flag-armenia":{"a":"Flag: Armenia","b":"1F1E6-1F1F2","j":["country","flag","banner","am","nation"]},"flag-angola":{"a":"Flag: Angola","b":"1F1E6-1F1F4","j":["ao","flag","banner","country","nation"]},"flag-antarctica":{"a":"Flag: Antarctica","b":"1F1E6-1F1F6","j":["aq","flag","banner","country","nation"]},"flag-argentina":{"a":"Flag: Argentina","b":"1F1E6-1F1F7","j":["ar","flag","banner","country","nation"]},"flag-american-samoa":{"a":"Flag: American Samoa","b":"1F1E6-1F1F8","j":["ws","flag","banner","country","nation","american"]},"flag-austria":{"a":"Flag: Austria","b":"1F1E6-1F1F9","j":["at","flag","banner","country","nation"]},"flag-australia":{"a":"Flag: Australia","b":"1F1E6-1F1FA","j":["flag","banner","au","country","nation"]},"flag-aruba":{"a":"Flag: Aruba","b":"1F1E6-1F1FC","j":["aw","flag","banner","country","nation"]},"flag-land-islands":{"a":"Flag: Γ…land Islands","b":"1F1E6-1F1FD","j":["islands","flag","flag_aland_islands","Γ…land","banner","country","nation"]},"flag-azerbaijan":{"a":"Flag: Azerbaijan","b":"1F1E6-1F1FF","j":["az","flag","banner","country","nation"]},"flag-bosnia--herzegovina":{"a":"Flag: Bosnia & Herzegovina","b":"1F1E7-1F1E6","j":["bosnia","flag_bosnia_herzegovina","flag","herzegovina","banner","country","nation"]},"flag-barbados":{"a":"Flag: Barbados","b":"1F1E7-1F1E7","j":["bb","flag","banner","country","nation"]},"flag-bangladesh":{"a":"Flag: Bangladesh","b":"1F1E7-1F1E9","j":["bd","flag","banner","country","nation"]},"flag-belgium":{"a":"Flag: Belgium","b":"1F1E7-1F1EA","j":["country","flag","banner","be","nation"]},"flag-burkina-faso":{"a":"Flag: Burkina Faso","b":"1F1E7-1F1EB","j":["flag","burkina","banner","faso","country","nation"]},"flag-bulgaria":{"a":"Flag: Bulgaria","b":"1F1E7-1F1EC","j":["flag","banner","bg","country","nation"]},"flag-bahrain":{"a":"Flag: Bahrain","b":"1F1E7-1F1ED","j":["bh","flag","banner","country","nation"]},"flag-burundi":{"a":"Flag: Burundi","b":"1F1E7-1F1EE","j":["flag","banner","bi","country","nation"]},"flag-benin":{"a":"Flag: Benin","b":"1F1E7-1F1EF","j":["country","flag","banner","bj","nation"]},"flag-st-barthlemy":{"a":"Flag: St. BarthΓ©lemy","b":"1F1E7-1F1F1","j":["flag_st_barthelemy","saint","flag","banner","country","barthΓ©lemy","nation"]},"flag-bermuda":{"a":"Flag: Bermuda","b":"1F1E7-1F1F2","j":["bm","flag","banner","country","nation"]},"flag-brunei":{"a":"Flag: Brunei","b":"1F1E7-1F1F3","j":["darussalam","bn","flag","banner","country","nation"]},"flag-bolivia":{"a":"Flag: Bolivia","b":"1F1E7-1F1F4","j":["country","flag","banner","bo","nation"]},"flag-caribbean-netherlands":{"a":"Flag: Caribbean Netherlands","b":"1F1E7-1F1F6","j":["flag","banner","country","bonaire","nation"]},"flag-brazil":{"a":"Flag: Brazil","b":"1F1E7-1F1F7","j":["flag","banner","br","country","nation"]},"flag-bahamas":{"a":"Flag: Bahamas","b":"1F1E7-1F1F8","j":["bs","flag","banner","country","nation"]},"flag-bhutan":{"a":"Flag: Bhutan","b":"1F1E7-1F1F9","j":["bt","flag","banner","country","nation"]},"flag-bouvet-island":{"a":"Flag: Bouvet Island","b":"1F1E7-1F1FB","j":["flag","norway"]},"flag-botswana":{"a":"Flag: Botswana","b":"1F1E7-1F1FC","j":["flag","bw","banner","country","nation"]},"flag-belarus":{"a":"Flag: Belarus","b":"1F1E7-1F1FE","j":["country","flag","banner","by","nation"]},"flag-belize":{"a":"Flag: Belize","b":"1F1E7-1F1FF","j":["flag","banner","bz","country","nation"]},"flag-canada":{"a":"Flag: Canada","b":"1F1E8-1F1E6","j":["ca","flag","banner","country","nation"]},"flag-cocos-keeling-islands":{"a":"Flag: Cocos (Keeling) Islands","b":"1F1E8-1F1E8","j":["islands","cocos","flag","keeling","banner","flag_cocos_islands","country","nation"]},"flag-congo--kinshasa":{"a":"Flag: Congo - Kinshasa","b":"1F1E8-1F1E9","j":["democratic","congo","flag","banner","flag_congo_kinshasa","republic","country","nation"]},"flag-central-african-republic":{"a":"Flag: Central African Republic","b":"1F1E8-1F1EB","j":["african","central","flag","banner","republic","country","nation"]},"flag-congo--brazzaville":{"a":"Flag: Congo - Brazzaville","b":"1F1E8-1F1EC","j":["flag_congo_brazzaville","congo","flag","banner","country","nation"]},"flag-switzerland":{"a":"Flag: Switzerland","b":"1F1E8-1F1ED","j":["ch","flag","banner","country","nation"]},"flag-cte-divoire":{"a":"Flag: CΓ΄te D’Ivoire","b":"1F1E8-1F1EE","j":["flag","flag_cote_d_ivoire","banner","ivory","coast","country","nation"]},"flag-cook-islands":{"a":"Flag: Cook Islands","b":"1F1E8-1F1F0","j":["islands","cook","flag","banner","country","nation"]},"flag-chile":{"a":"Flag: Chile","b":"1F1E8-1F1F1","j":["flag","country","banner","nation"]},"flag-cameroon":{"a":"Flag: Cameroon","b":"1F1E8-1F1F2","j":["cm","flag","banner","country","nation"]},"flag-china":{"a":"Flag: China","b":"1F1E8-1F1F3","j":["china","flag","chinese","banner","country","prc","nation"]},"flag-colombia":{"a":"Flag: Colombia","b":"1F1E8-1F1F4","j":["co","flag","banner","country","nation"]},"flag-clipperton-island":{"a":"Flag: Clipperton Island","b":"1F1E8-1F1F5","j":["flag"]},"flag-costa-rica":{"a":"Flag: Costa Rica","b":"1F1E8-1F1F7","j":["rica","costa","flag","banner","country","nation"]},"flag-cuba":{"a":"Flag: Cuba","b":"1F1E8-1F1FA","j":["cu","flag","banner","country","nation"]},"flag-cape-verde":{"a":"Flag: Cape Verde","b":"1F1E8-1F1FB","j":["cabo","flag","banner","verde","country","nation"]},"flag-curaao":{"a":"Flag: CuraΓ§ao","b":"1F1E8-1F1FC","j":["flag_curacao","curaΓ§ao","flag","banner","country","nation"]},"flag-christmas-island":{"a":"Flag: Christmas Island","b":"1F1E8-1F1FD","j":["christmas","flag","banner","country","island","nation"]},"flag-cyprus":{"a":"Flag: Cyprus","b":"1F1E8-1F1FE","j":["flag","banner","country","nation","cy"]},"flag-czechia":{"a":"Flag: Czechia","b":"1F1E8-1F1FF","j":["cz","flag","banner","country","nation"]},"flag-germany":{"a":"Flag: Germany","b":"1F1E9-1F1EA","j":["country","flag","banner","german","nation"]},"flag-diego-garcia":{"a":"Flag: Diego Garcia","b":"1F1E9-1F1EC","j":["flag"]},"flag-djibouti":{"a":"Flag: Djibouti","b":"1F1E9-1F1EF","j":["dj","flag","banner","country","nation"]},"flag-denmark":{"a":"Flag: Denmark","b":"1F1E9-1F1F0","j":["flag","banner","dk","country","nation"]},"flag-dominica":{"a":"Flag: Dominica","b":"1F1E9-1F1F2","j":["flag","dm","banner","country","nation"]},"flag-dominican-republic":{"a":"Flag: Dominican Republic","b":"1F1E9-1F1F4","j":["flag","banner","republic","country","dominican","nation"]},"flag-algeria":{"a":"Flag: Algeria","b":"1F1E9-1F1FF","j":["flag","banner","dz","country","nation"]},"flag-ceuta--melilla":{"a":"Flag: Ceuta & Melilla","b":"1F1EA-1F1E6","j":["flag_ceuta_melilla","flag"]},"flag-ecuador":{"a":"Flag: Ecuador","b":"1F1EA-1F1E8","j":["nation","flag","banner","country","ec"]},"flag-estonia":{"a":"Flag: Estonia","b":"1F1EA-1F1EA","j":["ee","flag","banner","country","nation"]},"flag-egypt":{"a":"Flag: Egypt","b":"1F1EA-1F1EC","j":["flag","eg","banner","country","nation"]},"flag-western-sahara":{"a":"Flag: Western Sahara","b":"1F1EA-1F1ED","j":["sahara","flag","western","banner","country","nation"]},"flag-eritrea":{"a":"Flag: Eritrea","b":"1F1EA-1F1F7","j":["flag","banner","country","nation","er"]},"flag-spain":{"a":"Flag: Spain","b":"1F1EA-1F1F8","j":["spain","flag","banner","country","nation"]},"flag-ethiopia":{"a":"Flag: Ethiopia","b":"1F1EA-1F1F9","j":["et","flag","banner","country","nation"]},"flag-european-union":{"a":"Flag: European Union","b":"1F1EA-1F1FA","j":["european","flag","banner","union"]},"flag-finland":{"a":"Flag: Finland","b":"1F1EB-1F1EE","j":["flag","banner","fi","country","nation"]},"flag-fiji":{"a":"Flag: Fiji","b":"1F1EB-1F1EF","j":["flag","banner","fj","country","nation"]},"flag-falkland-islands":{"a":"Flag: Falkland Islands","b":"1F1EB-1F1F0","j":["islands","falkland","flag","banner","malvinas","country","nation"]},"flag-micronesia":{"a":"Flag: Micronesia","b":"1F1EB-1F1F2","j":["federated","country","states","flag","banner","micronesia","nation"]},"flag-faroe-islands":{"a":"Flag: Faroe Islands","b":"1F1EB-1F1F4","j":["faroe","islands","flag","banner","country","nation"]},"flag-france":{"a":"Flag: France","b":"1F1EB-1F1F7","j":["flag","banner","french","france","country","nation"]},"flag-gabon":{"a":"Flag: Gabon","b":"1F1EC-1F1E6","j":["flag","ga","banner","country","nation"]},"flag-united-kingdom":{"a":"Flag: United Kingdom","b":"1F1EC-1F1E7","j":["northern","great","british","UK","english","kingdom","united","flag","banner","england","britain","ireland","country","union jack","nation"]},"flag-grenada":{"a":"Flag: Grenada","b":"1F1EC-1F1E9","j":["gd","flag","banner","country","nation"]},"flag-georgia":{"a":"Flag: Georgia","b":"1F1EC-1F1EA","j":["ge","flag","banner","country","nation"]},"flag-french-guiana":{"a":"Flag: French Guiana","b":"1F1EC-1F1EB","j":["guiana","flag","banner","french","country","nation"]},"flag-guernsey":{"a":"Flag: Guernsey","b":"1F1EC-1F1EC","j":["gg","flag","banner","country","nation"]},"flag-ghana":{"a":"Flag: Ghana","b":"1F1EC-1F1ED","j":["gh","flag","banner","country","nation"]},"flag-gibraltar":{"a":"Flag: Gibraltar","b":"1F1EC-1F1EE","j":["flag","banner","country","nation","gi"]},"flag-greenland":{"a":"Flag: Greenland","b":"1F1EC-1F1F1","j":["gl","flag","banner","country","nation"]},"flag-gambia":{"a":"Flag: Gambia","b":"1F1EC-1F1F2","j":["gm","flag","banner","country","nation"]},"flag-guinea":{"a":"Flag: Guinea","b":"1F1EC-1F1F3","j":["gn","flag","banner","country","nation"]},"flag-guadeloupe":{"a":"Flag: Guadeloupe","b":"1F1EC-1F1F5","j":["gp","flag","banner","country","nation"]},"flag-equatorial-guinea":{"a":"Flag: Equatorial Guinea","b":"1F1EC-1F1F6","j":["equatorial","gn","flag","banner","country","nation"]},"flag-greece":{"a":"Flag: Greece","b":"1F1EC-1F1F7","j":["gr","flag","banner","country","nation"]},"flag-south-georgia--south-sandwich-islands":{"a":"Flag: South Georgia & South Sandwich Islands","b":"1F1EC-1F1F8","j":["georgia","islands","south","flag_south_georgia_south_sandwich_islands","flag","sandwich","banner","country","nation"]},"flag-guatemala":{"a":"Flag: Guatemala","b":"1F1EC-1F1F9","j":["flag","gt","banner","country","nation"]},"flag-guam":{"a":"Flag: Guam","b":"1F1EC-1F1FA","j":["gu","flag","banner","country","nation"]},"flag-guineabissau":{"a":"Flag: Guinea-Bissau","b":"1F1EC-1F1FC","j":["bissau","nation","gw","flag","banner","country","flag_guinea_bissau"]},"flag-guyana":{"a":"Flag: Guyana","b":"1F1EC-1F1FE","j":["gy","flag","banner","country","nation"]},"flag-hong-kong-sar-china":{"a":"Flag: Hong Kong Sar China","b":"1F1ED-1F1F0","j":["flag","banner","hong","kong","country","nation"]},"flag-heard--mcdonald-islands":{"a":"Flag: Heard & Mcdonald Islands","b":"1F1ED-1F1F2","j":["flag","flag_heard_mcdonald_islands"]},"flag-honduras":{"a":"Flag: Honduras","b":"1F1ED-1F1F3","j":["country","flag","banner","hn","nation"]},"flag-croatia":{"a":"Flag: Croatia","b":"1F1ED-1F1F7","j":["flag","banner","hr","country","nation"]},"flag-haiti":{"a":"Flag: Haiti","b":"1F1ED-1F1F9","j":["ht","flag","banner","country","nation"]},"flag-hungary":{"a":"Flag: Hungary","b":"1F1ED-1F1FA","j":["flag","banner","hu","country","nation"]},"flag-canary-islands":{"a":"Flag: Canary Islands","b":"1F1EE-1F1E8","j":["islands","canary","flag","banner","country","nation"]},"flag-indonesia":{"a":"Flag: Indonesia","b":"1F1EE-1F1E9","j":["flag","country","banner","nation"]},"flag-ireland":{"a":"Flag: Ireland","b":"1F1EE-1F1EA","j":["ie","flag","banner","country","nation"]},"flag-israel":{"a":"Flag: Israel","b":"1F1EE-1F1F1","j":["il","flag","banner","country","nation"]},"flag-isle-of-man":{"a":"Flag: Isle of Man","b":"1F1EE-1F1F2","j":["man","isle","flag","banner","country","nation"]},"flag-india":{"a":"Flag: India","b":"1F1EE-1F1F3","j":["country","flag","banner","in","nation"]},"flag-british-indian-ocean-territory":{"a":"Flag: British Indian Ocean Territory","b":"1F1EE-1F1F4","j":["british","ocean","flag","banner","territory","indian","country","nation"]},"flag-iraq":{"a":"Flag: Iraq","b":"1F1EE-1F1F6","j":["iq","flag","banner","country","nation"]},"flag-iran":{"a":"Flag: Iran","b":"1F1EE-1F1F7","j":["iran","islamic","flag","banner","republic","country","nation"]},"flag-iceland":{"a":"Flag: Iceland","b":"1F1EE-1F1F8","j":["flag","banner","country","is","nation"]},"flag-italy":{"a":"Flag: Italy","b":"1F1EE-1F1F9","j":["italy","flag","banner","country","nation"]},"flag-jersey":{"a":"Flag: Jersey","b":"1F1EF-1F1EA","j":["je","flag","banner","country","nation"]},"flag-jamaica":{"a":"Flag: Jamaica","b":"1F1EF-1F1F2","j":["flag","banner","jm","country","nation"]},"flag-jordan":{"a":"Flag: Jordan","b":"1F1EF-1F1F4","j":["jo","flag","banner","country","nation"]},"flag-japan":{"a":"Flag: Japan","b":"1F1EF-1F1F5","j":["flag","banner","japanese","country","nation"]},"flag-kenya":{"a":"Flag: Kenya","b":"1F1F0-1F1EA","j":["flag","banner","ke","country","nation"]},"flag-kyrgyzstan":{"a":"Flag: Kyrgyzstan","b":"1F1F0-1F1EC","j":["kg","flag","banner","country","nation"]},"flag-cambodia":{"a":"Flag: Cambodia","b":"1F1F0-1F1ED","j":["kh","flag","banner","country","nation"]},"flag-kiribati":{"a":"Flag: Kiribati","b":"1F1F0-1F1EE","j":["ki","flag","banner","country","nation"]},"flag-comoros":{"a":"Flag: Comoros","b":"1F1F0-1F1F2","j":["km","flag","banner","country","nation"]},"flag-st-kitts--nevis":{"a":"Flag: St. Kitts & Nevis","b":"1F1F0-1F1F3","j":["nation","nevis","flag","kitts","flag_st_kitts_nevis","banner","country","saint"]},"flag-north-korea":{"a":"Flag: North Korea","b":"1F1F0-1F1F5","j":["north","flag","banner","korea","country","nation"]},"flag-south-korea":{"a":"Flag: South Korea","b":"1F1F0-1F1F7","j":["south","flag","banner","korea","country","nation"]},"flag-kuwait":{"a":"Flag: Kuwait","b":"1F1F0-1F1FC","j":["kw","flag","banner","country","nation"]},"flag-cayman-islands":{"a":"Flag: Cayman Islands","b":"1F1F0-1F1FE","j":["islands","flag","banner","cayman","country","nation"]},"flag-kazakhstan":{"a":"Flag: Kazakhstan","b":"1F1F0-1F1FF","j":["kz","flag","banner","country","nation"]},"flag-laos":{"a":"Flag: Laos","b":"1F1F1-1F1E6","j":["democratic","flag","banner","lao","republic","country","nation"]},"flag-lebanon":{"a":"Flag: Lebanon","b":"1F1F1-1F1E7","j":["lb","flag","banner","country","nation"]},"flag-st-lucia":{"a":"Flag: St. Lucia","b":"1F1F1-1F1E8","j":["nation","saint","flag","banner","country","lucia"]},"flag-liechtenstein":{"a":"Flag: Liechtenstein","b":"1F1F1-1F1EE","j":["flag","li","banner","country","nation"]},"flag-sri-lanka":{"a":"Flag: Sri Lanka","b":"1F1F1-1F1F0","j":["lanka","sri","flag","banner","country","nation"]},"flag-liberia":{"a":"Flag: Liberia","b":"1F1F1-1F1F7","j":["flag","lr","banner","country","nation"]},"flag-lesotho":{"a":"Flag: Lesotho","b":"1F1F1-1F1F8","j":["ls","flag","banner","country","nation"]},"flag-lithuania":{"a":"Flag: Lithuania","b":"1F1F1-1F1F9","j":["flag","banner","country","nation","lt"]},"flag-luxembourg":{"a":"Flag: Luxembourg","b":"1F1F1-1F1FA","j":["lu","flag","banner","country","nation"]},"flag-latvia":{"a":"Flag: Latvia","b":"1F1F1-1F1FB","j":["flag","banner","lv","country","nation"]},"flag-libya":{"a":"Flag: Libya","b":"1F1F1-1F1FE","j":["ly","flag","banner","country","nation"]},"flag-morocco":{"a":"Flag: Morocco","b":"1F1F2-1F1E6","j":["ma","flag","banner","country","nation"]},"flag-monaco":{"a":"Flag: Monaco","b":"1F1F2-1F1E8","j":["mc","flag","banner","country","nation"]},"flag-moldova":{"a":"Flag: Moldova","b":"1F1F2-1F1E9","j":["flag","banner","republic","country","moldova","nation"]},"flag-montenegro":{"a":"Flag: Montenegro","b":"1F1F2-1F1EA","j":["me","flag","banner","country","nation"]},"flag-st-martin":{"a":"Flag: St. Martin","b":"1F1F2-1F1EB","j":["flag"]},"flag-madagascar":{"a":"Flag: Madagascar","b":"1F1F2-1F1EC","j":["mg","flag","banner","country","nation"]},"flag-marshall-islands":{"a":"Flag: Marshall Islands","b":"1F1F2-1F1ED","j":["islands","marshall","flag","banner","country","nation"]},"flag-north-macedonia":{"a":"Flag: North Macedonia","b":"1F1F2-1F1F0","j":["macedonia","flag","banner","country","nation"]},"flag-mali":{"a":"Flag: Mali","b":"1F1F2-1F1F1","j":["ml","flag","banner","country","nation"]},"flag-myanmar-burma":{"a":"Flag: Myanmar (Burma)","b":"1F1F2-1F1F2","j":["mm","country","flag","banner","flag_myanmar","nation"]},"flag-mongolia":{"a":"Flag: Mongolia","b":"1F1F2-1F1F3","j":["country","flag","banner","mn","nation"]},"flag-macao-sar-china":{"a":"Flag: Macao Sar China","b":"1F1F2-1F1F4","j":["flag","banner","country","nation","macao"]},"flag-northern-mariana-islands":{"a":"Flag: Northern Mariana Islands","b":"1F1F2-1F1F5","j":["northern","islands","flag","mariana","banner","country","nation"]},"flag-martinique":{"a":"Flag: Martinique","b":"1F1F2-1F1F6","j":["mq","flag","banner","country","nation"]},"flag-mauritania":{"a":"Flag: Mauritania","b":"1F1F2-1F1F7","j":["flag","banner","mr","country","nation"]},"flag-montserrat":{"a":"Flag: Montserrat","b":"1F1F2-1F1F8","j":["flag","banner","ms","country","nation"]},"flag-malta":{"a":"Flag: Malta","b":"1F1F2-1F1F9","j":["mt","flag","banner","country","nation"]},"flag-mauritius":{"a":"Flag: Mauritius","b":"1F1F2-1F1FA","j":["mu","flag","banner","country","nation"]},"flag-maldives":{"a":"Flag: Maldives","b":"1F1F2-1F1FB","j":["flag","banner","mv","country","nation"]},"flag-malawi":{"a":"Flag: Malawi","b":"1F1F2-1F1FC","j":["mw","flag","banner","country","nation"]},"flag-mexico":{"a":"Flag: Mexico","b":"1F1F2-1F1FD","j":["mx","flag","banner","country","nation"]},"flag-malaysia":{"a":"Flag: Malaysia","b":"1F1F2-1F1FE","j":["flag","my","banner","country","nation"]},"flag-mozambique":{"a":"Flag: Mozambique","b":"1F1F2-1F1FF","j":["flag","banner","mz","country","nation"]},"flag-namibia":{"a":"Flag: Namibia","b":"1F1F3-1F1E6","j":["na","flag","banner","country","nation"]},"flag-new-caledonia":{"a":"Flag: New Caledonia","b":"1F1F3-1F1E8","j":["country","flag","banner","caledonia","nation","new"]},"flag-niger":{"a":"Flag: Niger","b":"1F1F3-1F1EA","j":["flag","banner","ne","country","nation"]},"flag-norfolk-island":{"a":"Flag: Norfolk Island","b":"1F1F3-1F1EB","j":["norfolk","flag","banner","country","island","nation"]},"flag-nigeria":{"a":"Flag: Nigeria","b":"1F1F3-1F1EC","j":["flag","country","banner","nation"]},"flag-nicaragua":{"a":"Flag: Nicaragua","b":"1F1F3-1F1EE","j":["flag","banner","country","nation","ni"]},"flag-netherlands":{"a":"Flag: Netherlands","b":"1F1F3-1F1F1","j":["flag","banner","nl","country","nation"]},"flag-norway":{"a":"Flag: Norway","b":"1F1F3-1F1F4","j":["no","flag","banner","country","nation"]},"flag-nepal":{"a":"Flag: Nepal","b":"1F1F3-1F1F5","j":["flag","np","banner","country","nation"]},"flag-nauru":{"a":"Flag: Nauru","b":"1F1F3-1F1F7","j":["nr","flag","banner","country","nation"]},"flag-niue":{"a":"Flag: Niue","b":"1F1F3-1F1FA","j":["nu","flag","banner","country","nation"]},"flag-new-zealand":{"a":"Flag: New Zealand","b":"1F1F3-1F1FF","j":["flag","banner","country","zealand","nation","new"]},"flag-oman":{"a":"Flag: Oman","b":"1F1F4-1F1F2","j":["om_symbol","flag","banner","country","nation"]},"flag-panama":{"a":"Flag: Panama","b":"1F1F5-1F1E6","j":["flag","banner","country","nation","pa"]},"flag-peru":{"a":"Flag: Peru","b":"1F1F5-1F1EA","j":["flag","banner","pe","country","nation"]},"flag-french-polynesia":{"a":"Flag: French Polynesia","b":"1F1F5-1F1EB","j":["flag","banner","french","country","nation","polynesia"]},"flag-papua-new-guinea":{"a":"Flag: Papua New Guinea","b":"1F1F5-1F1EC","j":["flag","banner","guinea","country","nation","papua","new"]},"flag-philippines":{"a":"Flag: Philippines","b":"1F1F5-1F1ED","j":["ph","flag","banner","country","nation"]},"flag-pakistan":{"a":"Flag: Pakistan","b":"1F1F5-1F1F0","j":["pk","flag","banner","country","nation"]},"flag-poland":{"a":"Flag: Poland","b":"1F1F5-1F1F1","j":["flag","pl","banner","country","nation"]},"flag-st-pierre--miquelon":{"a":"Flag: St. Pierre & Miquelon","b":"1F1F5-1F1F2","j":["pierre","nation","flag_st_pierre_miquelon","flag","miquelon","banner","country","saint"]},"flag-pitcairn-islands":{"a":"Flag: Pitcairn Islands","b":"1F1F5-1F1F3","j":["country","flag","banner","pitcairn","nation"]},"flag-puerto-rico":{"a":"Flag: Puerto Rico","b":"1F1F5-1F1F7","j":["flag","banner","rico","country","puerto","nation"]},"flag-palestinian-territories":{"a":"Flag: Palestinian Territories","b":"1F1F5-1F1F8","j":["palestine","nation","territories","flag","banner","country","palestinian"]},"flag-portugal":{"a":"Flag: Portugal","b":"1F1F5-1F1F9","j":["flag","pt","banner","country","nation"]},"flag-palau":{"a":"Flag: Palau","b":"1F1F5-1F1FC","j":["flag","banner","pw","country","nation"]},"flag-paraguay":{"a":"Flag: Paraguay","b":"1F1F5-1F1FE","j":["py","flag","banner","country","nation"]},"flag-qatar":{"a":"Flag: Qatar","b":"1F1F6-1F1E6","j":["flag","qa","banner","country","nation"]},"flag-runion":{"a":"Flag: RΓ©union","b":"1F1F7-1F1EA","j":["flag_reunion","rΓ©union","flag","banner","country","nation"]},"flag-romania":{"a":"Flag: Romania","b":"1F1F7-1F1F4","j":["ro","flag","banner","country","nation"]},"flag-serbia":{"a":"Flag: Serbia","b":"1F1F7-1F1F8","j":["flag","banner","rs","country","nation"]},"flag-russia":{"a":"Flag: Russia","b":"1F1F7-1F1FA","j":["russian","federation","flag","banner","country","nation"]},"flag-rwanda":{"a":"Flag: Rwanda","b":"1F1F7-1F1FC","j":["rw","flag","banner","country","nation"]},"flag-saudi-arabia":{"a":"Flag: Saudi Arabia","b":"1F1F8-1F1E6","j":["flag","country","banner","nation"]},"flag-solomon-islands":{"a":"Flag: Solomon Islands","b":"1F1F8-1F1E7","j":["islands","flag","banner","country","nation","solomon"]},"flag-seychelles":{"a":"Flag: Seychelles","b":"1F1F8-1F1E8","j":["flag","banner","sc","country","nation"]},"flag-sudan":{"a":"Flag: Sudan","b":"1F1F8-1F1E9","j":["sd","flag","banner","country","nation"]},"flag-sweden":{"a":"Flag: Sweden","b":"1F1F8-1F1EA","j":["flag","banner","country","nation","se"]},"flag-singapore":{"a":"Flag: Singapore","b":"1F1F8-1F1EC","j":["flag","banner","sg","country","nation"]},"flag-st-helena":{"a":"Flag: St. Helena","b":"1F1F8-1F1ED","j":["cunha","saint","flag","tristan","banner","helena","ascension","country","nation"]},"flag-slovenia":{"a":"Flag: Slovenia","b":"1F1F8-1F1EE","j":["flag","si","banner","country","nation"]},"flag-svalbard--jan-mayen":{"a":"Flag: Svalbard & Jan Mayen","b":"1F1F8-1F1EF","j":["flag_svalbard_jan_mayen","flag"]},"flag-slovakia":{"a":"Flag: Slovakia","b":"1F1F8-1F1F0","j":["flag","sk","banner","country","nation"]},"flag-sierra-leone":{"a":"Flag: Sierra Leone","b":"1F1F8-1F1F1","j":["sierra","leone","flag","banner","country","nation"]},"flag-san-marino":{"a":"Flag: San Marino","b":"1F1F8-1F1F2","j":["san","marino","flag","banner","country","nation"]},"flag-senegal":{"a":"Flag: Senegal","b":"1F1F8-1F1F3","j":["sn","flag","banner","country","nation"]},"flag-somalia":{"a":"Flag: Somalia","b":"1F1F8-1F1F4","j":["flag","banner","so","country","nation"]},"flag-suriname":{"a":"Flag: Suriname","b":"1F1F8-1F1F7","j":["sr","flag","banner","country","nation"]},"flag-south-sudan":{"a":"Flag: South Sudan","b":"1F1F8-1F1F8","j":["sd","south","flag","banner","country","nation"]},"flag-so-tom--prncipe":{"a":"Flag: SΓ£o TomΓ© & PrΓ­ncipe","b":"1F1F8-1F1F9","j":["principe","tome","flag","flag_sao_tome_principe","banner","country","nation","sao"]},"flag-el-salvador":{"a":"Flag: El Salvador","b":"1F1F8-1F1FB","j":["el","flag","banner","salvador","country","nation"]},"flag-sint-maarten":{"a":"Flag: Sint Maarten","b":"1F1F8-1F1FD","j":["maarten","sint","dutch","flag","banner","country","nation"]},"flag-syria":{"a":"Flag: Syria","b":"1F1F8-1F1FE","j":["syrian","flag","banner","arab","republic","country","nation"]},"flag-eswatini":{"a":"Flag: Eswatini","b":"1F1F8-1F1FF","j":["sz","flag","banner","country","nation"]},"flag-tristan-da-cunha":{"a":"Flag: Tristan Da Cunha","b":"1F1F9-1F1E6","j":["flag"]},"flag-turks--caicos-islands":{"a":"Flag: Turks & Caicos Islands","b":"1F1F9-1F1E8","j":["islands","turks","flag","flag_turks_caicos_islands","banner","caicos","country","nation"]},"flag-chad":{"a":"Flag: Chad","b":"1F1F9-1F1E9","j":["td","flag","banner","country","nation"]},"flag-french-southern-territories":{"a":"Flag: French Southern Territories","b":"1F1F9-1F1EB","j":["territories","southern","flag","banner","french","country","nation"]},"flag-togo":{"a":"Flag: Togo","b":"1F1F9-1F1EC","j":["tg","flag","banner","country","nation"]},"flag-thailand":{"a":"Flag: Thailand","b":"1F1F9-1F1ED","j":["flag","banner","th","country","nation"]},"flag-tajikistan":{"a":"Flag: Tajikistan","b":"1F1F9-1F1EF","j":["tj","flag","banner","country","nation"]},"flag-tokelau":{"a":"Flag: Tokelau","b":"1F1F9-1F1F0","j":["tk","flag","banner","country","nation"]},"flag-timorleste":{"a":"Flag: Timor-Leste","b":"1F1F9-1F1F1","j":["timor","flag_timor_leste","flag","banner","leste","country","nation"]},"flag-turkmenistan":{"a":"Flag: Turkmenistan","b":"1F1F9-1F1F2","j":["flag","country","banner","nation"]},"flag-tunisia":{"a":"Flag: Tunisia","b":"1F1F9-1F1F3","j":["tn","flag","banner","country","nation"]},"flag-tonga":{"a":"Flag: Tonga","b":"1F1F9-1F1F4","j":["to","flag","banner","country","nation"]},"flag-turkey":{"a":"Flag: Turkey","b":"1F1F9-1F1F7","j":["turkey","flag","banner","country","nation"]},"flag-trinidad--tobago":{"a":"Flag: Trinidad & Tobago","b":"1F1F9-1F1F9","j":["flag_trinidad_tobago","flag","banner","trinidad","tobago","country","nation"]},"flag-tuvalu":{"a":"Flag: Tuvalu","b":"1F1F9-1F1FB","j":["flag","country","banner","nation"]},"flag-taiwan":{"a":"Flag: Taiwan","b":"1F1F9-1F1FC","j":["tw","flag","banner","country","nation"]},"flag-tanzania":{"a":"Flag: Tanzania","b":"1F1F9-1F1FF","j":["tanzania","united","flag","banner","republic","country","nation"]},"flag-ukraine":{"a":"Flag: Ukraine","b":"1F1FA-1F1E6","j":["flag","banner","country","nation","ua"]},"flag-uganda":{"a":"Flag: Uganda","b":"1F1FA-1F1EC","j":["ug","flag","banner","country","nation"]},"flag-us-outlying-islands":{"a":"Flag: U.S. Outlying Islands","b":"1F1FA-1F1F2","j":["flag","flag_u_s_outlying_islands"]},"flag-united-nations":{"a":"Flag: United Nations","b":"1F1FA-1F1F3","j":["flag","un","banner"]},"flag-united-states":{"a":"Flag: United States","b":"1F1FA-1F1F8","j":["america","united","flag","states","banner","country","nation"]},"flag-uruguay":{"a":"Flag: Uruguay","b":"1F1FA-1F1FE","j":["flag","uy","banner","country","nation"]},"flag-uzbekistan":{"a":"Flag: Uzbekistan","b":"1F1FA-1F1FF","j":["uz","flag","banner","country","nation"]},"flag-vatican-city":{"a":"Flag: Vatican City","b":"1F1FB-1F1E6","j":["vatican","city","flag","banner","country","nation"]},"flag-st-vincent--grenadines":{"a":"Flag: St. Vincent & Grenadines","b":"1F1FB-1F1E8","j":["nation","flag_st_vincent_grenadines","vincent","grenadines","flag","banner","country","saint"]},"flag-venezuela":{"a":"Flag: Venezuela","b":"1F1FB-1F1EA","j":["bolivarian","ve","flag","banner","republic","country","nation"]},"flag-british-virgin-islands":{"a":"Flag: British Virgin Islands","b":"1F1FB-1F1EC","j":["virgin","bvi","islands","british","flag","banner","country","nation"]},"flag-us-virgin-islands":{"a":"Flag: U.S. Virgin Islands","b":"1F1FB-1F1EE","j":["virgin","islands","us","flag","banner","country","nation","flag_u_s_virgin_islands"]},"flag-vietnam":{"a":"Flag: Vietnam","b":"1F1FB-1F1F3","j":["nam","flag","banner","viet","country","nation"]},"flag-vanuatu":{"a":"Flag: Vanuatu","b":"1F1FB-1F1FA","j":["flag","banner","vu","country","nation"]},"flag-wallis--futuna":{"a":"Flag: Wallis & Futuna","b":"1F1FC-1F1EB","j":["flag_wallis_futuna","flag","wallis","futuna","banner","country","nation"]},"flag-samoa":{"a":"Flag: Samoa","b":"1F1FC-1F1F8","j":["ws","flag","banner","country","nation"]},"flag-kosovo":{"a":"Flag: Kosovo","b":"1F1FD-1F1F0","j":["flag","banner","country","nation","xk"]},"flag-yemen":{"a":"Flag: Yemen","b":"1F1FE-1F1EA","j":["flag","banner","ye","country","nation"]},"flag-mayotte":{"a":"Flag: Mayotte","b":"1F1FE-1F1F9","j":["flag","banner","country","yt","nation"]},"flag-south-africa":{"a":"Flag: South Africa","b":"1F1FF-1F1E6","j":["south","africa","flag","banner","country","nation"]},"flag-zambia":{"a":"Flag: Zambia","b":"1F1FF-1F1F2","j":["zm","flag","banner","country","nation"]},"flag-zimbabwe":{"a":"Flag: Zimbabwe","b":"1F1FF-1F1FC","j":["zw","flag","banner","country","nation"]},"flag-england":{"a":"Flag: England","b":"1F3F4-E0067-E0062-E0065-E006E-E0067-E007F","j":["flag","english"]},"flag-scotland":{"a":"Flag: Scotland","b":"1F3F4-E0067-E0062-E0073-E0063-E0074-E007F","j":["scottish","flag"]},"flag-wales":{"a":"Flag: Wales","b":"1F3F4-E0067-E0062-E0077-E006C-E0073-E007F","j":["flag","welsh"]}},"aliases":{}} \ No newline at end of file +{"compressed":true,"categories":[{"id":"smileys_&_emotion","name":"Smileys & Emotion","emojis":["grinning-face","grinning-face-with-big-eyes","grinning-face-with-smiling-eyes","beaming-face-with-smiling-eyes","grinning-squinting-face","grinning-face-with-sweat","rolling-on-the-floor-laughing","face-with-tears-of-joy","slightly-smiling-face","upsidedown-face","winking-face","smiling-face-with-smiling-eyes","smiling-face-with-halo","smiling-face-with-hearts","smiling-face-with-hearteyes","starstruck","face-blowing-a-kiss","kissing-face","smiling-face","kissing-face-with-closed-eyes","kissing-face-with-smiling-eyes","smiling-face-with-tear","face-savoring-food","face-with-tongue","winking-face-with-tongue","zany-face","squinting-face-with-tongue","moneymouth-face","hugging-face","face-with-hand-over-mouth","shushing-face","thinking-face","zippermouth-face","face-with-raised-eyebrow","neutral-face","expressionless-face","face-without-mouth","face-in-clouds","smirking-face","unamused-face","face-with-rolling-eyes","grimacing-face","face-exhaling","lying-face","relieved-face","pensive-face","sleepy-face","drooling-face","sleeping-face","face-with-medical-mask","face-with-thermometer","face-with-headbandage","nauseated-face","face-vomiting","sneezing-face","hot-face","cold-face","woozy-face","knockedout-face","face-with-spiral-eyes","exploding-head","cowboy-hat-face","partying-face","disguised-face","smiling-face-with-sunglasses","nerd-face","face-with-monocle","confused-face","worried-face","slightly-frowning-face","frowning-face","face-with-open-mouth","hushed-face","astonished-face","flushed-face","pleading-face","frowning-face-with-open-mouth","anguished-face","fearful-face","anxious-face-with-sweat","sad-but-relieved-face","crying-face","loudly-crying-face","face-screaming-in-fear","confounded-face","persevering-face","disappointed-face","downcast-face-with-sweat","weary-face","tired-face","yawning-face","face-with-steam-from-nose","pouting-face","angry-face","face-with-symbols-on-mouth","smiling-face-with-horns","angry-face-with-horns","skull","skull-and-crossbones","pile-of-poo","clown-face","ogre","goblin","ghost","alien","alien-monster","robot","grinning-cat","grinning-cat-with-smiling-eyes","cat-with-tears-of-joy","smiling-cat-with-hearteyes","cat-with-wry-smile","kissing-cat","weary-cat","crying-cat","pouting-cat","seenoevil-monkey","hearnoevil-monkey","speaknoevil-monkey","kiss-mark","love-letter","heart-with-arrow","heart-with-ribbon","sparkling-heart","growing-heart","beating-heart","revolving-hearts","two-hearts","heart-decoration","heart-exclamation","broken-heart","heart-on-fire","mending-heart","red-heart","orange-heart","yellow-heart","green-heart","blue-heart","purple-heart","brown-heart","black-heart","white-heart","hundred-points","anger-symbol","collision","dizzy","sweat-droplets","dashing-away","hole","bomb","speech-balloon","eye-in-speech-bubble","left-speech-bubble","right-anger-bubble","thought-balloon","zzz"]},{"id":"people_&_body","name":"People & Body","emojis":["waving-hand","raised-back-of-hand","hand-with-fingers-splayed","raised-hand","vulcan-salute","ok-hand","pinched-fingers","pinching-hand","victory-hand","crossed-fingers","loveyou-gesture","sign-of-the-horns","call-me-hand","backhand-index-pointing-left","backhand-index-pointing-right","backhand-index-pointing-up","middle-finger","backhand-index-pointing-down","index-pointing-up","thumbs-up","thumbs-down","raised-fist","oncoming-fist","leftfacing-fist","rightfacing-fist","clapping-hands","raising-hands","open-hands","palms-up-together","handshake","folded-hands","writing-hand","nail-polish","selfie","flexed-biceps","mechanical-arm","mechanical-leg","leg","foot","ear","ear-with-hearing-aid","nose","brain","anatomical-heart","lungs","tooth","bone","eyes","eye","tongue","mouth","baby","child","boy","girl","person","person-blond-hair","man","person-beard","man-beard","woman-beard","man-red-hair","man-curly-hair","man-white-hair","man-bald","woman","woman-red-hair","person-red-hair","woman-curly-hair","person-curly-hair","woman-white-hair","person-white-hair","woman-bald","person-bald","woman-blond-hair","man-blond-hair","older-person","old-man","old-woman","person-frowning","man-frowning","woman-frowning","person-pouting","man-pouting","woman-pouting","person-gesturing-no","man-gesturing-no","woman-gesturing-no","person-gesturing-ok","man-gesturing-ok","woman-gesturing-ok","person-tipping-hand","man-tipping-hand","woman-tipping-hand","person-raising-hand","man-raising-hand","woman-raising-hand","deaf-person","deaf-man","deaf-woman","person-bowing","man-bowing","woman-bowing","person-facepalming","man-facepalming","woman-facepalming","person-shrugging","man-shrugging","woman-shrugging","health-worker","man-health-worker","woman-health-worker","student","man-student","woman-student","teacher","man-teacher","woman-teacher","judge","man-judge","woman-judge","farmer","man-farmer","woman-farmer","cook","man-cook","woman-cook","mechanic","man-mechanic","woman-mechanic","factory-worker","man-factory-worker","woman-factory-worker","office-worker","man-office-worker","woman-office-worker","scientist","man-scientist","woman-scientist","technologist","man-technologist","woman-technologist","singer","man-singer","woman-singer","artist","man-artist","woman-artist","pilot","man-pilot","woman-pilot","astronaut","man-astronaut","woman-astronaut","firefighter","man-firefighter","woman-firefighter","police-officer","man-police-officer","woman-police-officer","detective","man-detective","woman-detective","guard","man-guard","woman-guard","ninja","construction-worker","man-construction-worker","woman-construction-worker","prince","princess","person-wearing-turban","man-wearing-turban","woman-wearing-turban","person-with-skullcap","woman-with-headscarf","person-in-tuxedo","man-in-tuxedo","woman-in-tuxedo","person-with-veil","man-with-veil","woman-with-veil","pregnant-woman","breastfeeding","woman-feeding-baby","man-feeding-baby","person-feeding-baby","baby-angel","santa-claus","mrs-claus","mx-claus","superhero","man-superhero","woman-superhero","supervillain","man-supervillain","woman-supervillain","mage","man-mage","woman-mage","fairy","man-fairy","woman-fairy","vampire","man-vampire","woman-vampire","merperson","merman","mermaid","elf","man-elf","woman-elf","genie","man-genie","woman-genie","zombie","man-zombie","woman-zombie","person-getting-massage","man-getting-massage","woman-getting-massage","person-getting-haircut","man-getting-haircut","woman-getting-haircut","person-walking","man-walking","woman-walking","person-standing","man-standing","woman-standing","person-kneeling","man-kneeling","woman-kneeling","person-with-white-cane","man-with-white-cane","woman-with-white-cane","person-in-motorized-wheelchair","man-in-motorized-wheelchair","woman-in-motorized-wheelchair","person-in-manual-wheelchair","man-in-manual-wheelchair","woman-in-manual-wheelchair","person-running","man-running","woman-running","woman-dancing","man-dancing","person-in-suit-levitating","people-with-bunny-ears","men-with-bunny-ears","women-with-bunny-ears","person-in-steamy-room","man-in-steamy-room","woman-in-steamy-room","person-climbing","man-climbing","woman-climbing","person-fencing","horse-racing","skier","snowboarder","person-golfing","man-golfing","woman-golfing","person-surfing","man-surfing","woman-surfing","person-rowing-boat","man-rowing-boat","woman-rowing-boat","person-swimming","man-swimming","woman-swimming","person-bouncing-ball","man-bouncing-ball","woman-bouncing-ball","person-lifting-weights","man-lifting-weights","woman-lifting-weights","person-biking","man-biking","woman-biking","person-mountain-biking","man-mountain-biking","woman-mountain-biking","person-cartwheeling","man-cartwheeling","woman-cartwheeling","people-wrestling","men-wrestling","women-wrestling","person-playing-water-polo","man-playing-water-polo","woman-playing-water-polo","person-playing-handball","man-playing-handball","woman-playing-handball","person-juggling","man-juggling","woman-juggling","person-in-lotus-position","man-in-lotus-position","woman-in-lotus-position","person-taking-bath","person-in-bed","people-holding-hands","women-holding-hands","woman-and-man-holding-hands","men-holding-hands","kiss","kiss-woman-man","kiss-man-man","kiss-woman-woman","couple-with-heart","couple-with-heart-woman-man","couple-with-heart-man-man","couple-with-heart-woman-woman","family","family-man-woman-boy","family-man-woman-girl","family-man-woman-girl-boy","family-man-woman-boy-boy","family-man-woman-girl-girl","family-man-man-boy","family-man-man-girl","family-man-man-girl-boy","family-man-man-boy-boy","family-man-man-girl-girl","family-woman-woman-boy","family-woman-woman-girl","family-woman-woman-girl-boy","family-woman-woman-boy-boy","family-woman-woman-girl-girl","family-man-boy","family-man-boy-boy","family-man-girl","family-man-girl-boy","family-man-girl-girl","family-woman-boy","family-woman-boy-boy","family-woman-girl","family-woman-girl-boy","family-woman-girl-girl","speaking-head","bust-in-silhouette","busts-in-silhouette","people-hugging","footprints"]},{"id":"animals_&_nature","name":"Animals & Nature","emojis":["monkey-face","monkey","gorilla","orangutan","dog-face","dog","guide-dog","service-dog","poodle","wolf","fox","raccoon","cat-face","cat","black-cat","lion","tiger-face","tiger","leopard","horse-face","horse","unicorn","zebra","deer","bison","cow-face","ox","water-buffalo","cow","pig-face","pig","boar","pig-nose","ram","ewe","goat","camel","twohump-camel","llama","giraffe","elephant","mammoth","rhinoceros","hippopotamus","mouse-face","mouse","rat","hamster","rabbit-face","rabbit","chipmunk","beaver","hedgehog","bat","bear","polar-bear","koala","panda","sloth","otter","skunk","kangaroo","badger","paw-prints","turkey","chicken","rooster","hatching-chick","baby-chick","frontfacing-baby-chick","bird","penguin","dove","eagle","duck","swan","owl","dodo","feather","flamingo","peacock","parrot","frog","crocodile","turtle","lizard","snake","dragon-face","dragon","sauropod","trex","spouting-whale","whale","dolphin","seal","fish","tropical-fish","blowfish","shark","octopus","spiral-shell","snail","butterfly","bug","ant","honeybee","beetle","lady-beetle","cricket","cockroach","spider","spider-web","scorpion","mosquito","fly","worm","microbe","bouquet","cherry-blossom","white-flower","rosette","rose","wilted-flower","hibiscus","sunflower","blossom","tulip","seedling","potted-plant","evergreen-tree","deciduous-tree","palm-tree","cactus","sheaf-of-rice","herb","shamrock","four-leaf-clover","maple-leaf","fallen-leaf","leaf-fluttering-in-wind"]},{"id":"food_&_drink","name":"Food & Drink","emojis":["grapes","melon","watermelon","tangerine","lemon","banana","pineapple","mango","red-apple","green-apple","pear","peach","cherries","strawberry","blueberries","kiwi-fruit","tomato","olive","coconut","avocado","eggplant","potato","carrot","ear-of-corn","hot-pepper","bell-pepper","cucumber","leafy-green","broccoli","garlic","onion","mushroom","peanuts","chestnut","bread","croissant","baguette-bread","flatbread","pretzel","bagel","pancakes","waffle","cheese-wedge","meat-on-bone","poultry-leg","cut-of-meat","bacon","hamburger","french-fries","pizza","hot-dog","sandwich","taco","burrito","tamale","stuffed-flatbread","falafel","egg","cooking","shallow-pan-of-food","pot-of-food","fondue","bowl-with-spoon","green-salad","popcorn","butter","salt","canned-food","bento-box","rice-cracker","rice-ball","cooked-rice","curry-rice","steaming-bowl","spaghetti","roasted-sweet-potato","oden","sushi","fried-shrimp","fish-cake-with-swirl","moon-cake","dango","dumpling","fortune-cookie","takeout-box","crab","lobster","shrimp","squid","oyster","soft-ice-cream","shaved-ice","ice-cream","doughnut","cookie","birthday-cake","shortcake","cupcake","pie","chocolate-bar","candy","lollipop","custard","honey-pot","baby-bottle","glass-of-milk","hot-beverage","teapot","teacup-without-handle","sake","bottle-with-popping-cork","wine-glass","cocktail-glass","tropical-drink","beer-mug","clinking-beer-mugs","clinking-glasses","tumbler-glass","cup-with-straw","bubble-tea","beverage-box","mate","ice","chopsticks","fork-and-knife-with-plate","fork-and-knife","spoon","kitchen-knife","amphora"]},{"id":"travel_&_places","name":"Travel & Places","emojis":["globe-showing-europeafrica","globe-showing-americas","globe-showing-asiaaustralia","globe-with-meridians","world-map","map-of-japan","compass","snowcapped-mountain","mountain","volcano","mount-fuji","camping","beach-with-umbrella","desert","desert-island","national-park","stadium","classical-building","building-construction","brick","rock","wood","hut","houses","derelict-house","house","house-with-garden","office-building","japanese-post-office","post-office","hospital","bank","hotel","love-hotel","convenience-store","school","department-store","factory","japanese-castle","castle","wedding","tokyo-tower","statue-of-liberty","church","mosque","hindu-temple","synagogue","shinto-shrine","kaaba","fountain","tent","foggy","night-with-stars","cityscape","sunrise-over-mountains","sunrise","cityscape-at-dusk","sunset","bridge-at-night","hot-springs","carousel-horse","ferris-wheel","roller-coaster","barber-pole","circus-tent","locomotive","railway-car","highspeed-train","bullet-train","train","metro","light-rail","station","tram","monorail","mountain-railway","tram-car","bus","oncoming-bus","trolleybus","minibus","ambulance","fire-engine","police-car","oncoming-police-car","taxi","oncoming-taxi","automobile","oncoming-automobile","sport-utility-vehicle","pickup-truck","delivery-truck","articulated-lorry","tractor","racing-car","motorcycle","motor-scooter","manual-wheelchair","motorized-wheelchair","auto-rickshaw","bicycle","kick-scooter","skateboard","roller-skate","bus-stop","motorway","railway-track","oil-drum","fuel-pump","police-car-light","horizontal-traffic-light","vertical-traffic-light","stop-sign","construction","anchor","sailboat","canoe","speedboat","passenger-ship","ferry","motor-boat","ship","airplane","small-airplane","airplane-departure","airplane-arrival","parachute","seat","helicopter","suspension-railway","mountain-cableway","aerial-tramway","satellite","rocket","flying-saucer","bellhop-bell","luggage","hourglass-done","hourglass-not-done","watch","alarm-clock","stopwatch","timer-clock","mantelpiece-clock","twelve-oclock","twelvethirty","one-oclock","onethirty","two-oclock","twothirty","three-oclock","threethirty","four-oclock","fourthirty","five-oclock","fivethirty","six-oclock","sixthirty","seven-oclock","seventhirty","eight-oclock","eightthirty","nine-oclock","ninethirty","ten-oclock","tenthirty","eleven-oclock","eleventhirty","new-moon","waxing-crescent-moon","first-quarter-moon","waxing-gibbous-moon","full-moon","waning-gibbous-moon","last-quarter-moon","waning-crescent-moon","crescent-moon","new-moon-face","first-quarter-moon-face","last-quarter-moon-face","thermometer","sun","full-moon-face","sun-with-face","ringed-planet","star","glowing-star","shooting-star","milky-way","cloud","sun-behind-cloud","cloud-with-lightning-and-rain","sun-behind-small-cloud","sun-behind-large-cloud","sun-behind-rain-cloud","cloud-with-rain","cloud-with-snow","cloud-with-lightning","tornado","fog","wind-face","cyclone","rainbow","closed-umbrella","umbrella","umbrella-with-rain-drops","umbrella-on-ground","high-voltage","snowflake","snowman","snowman-without-snow","comet","fire","droplet","water-wave"]},{"id":"activities","name":"Activities","emojis":["jackolantern","christmas-tree","fireworks","sparkler","firecracker","sparkles","balloon","party-popper","confetti-ball","tanabata-tree","pine-decoration","japanese-dolls","carp-streamer","wind-chime","moon-viewing-ceremony","red-envelope","ribbon","wrapped-gift","reminder-ribbon","admission-tickets","ticket","military-medal","trophy","sports-medal","1st-place-medal","2nd-place-medal","3rd-place-medal","soccer-ball","baseball","softball","basketball","volleyball","american-football","rugby-football","tennis","flying-disc","bowling","cricket-game","field-hockey","ice-hockey","lacrosse","ping-pong","badminton","boxing-glove","martial-arts-uniform","goal-net","flag-in-hole","ice-skate","fishing-pole","diving-mask","running-shirt","skis","sled","curling-stone","bullseye","yoyo","kite","pool-8-ball","crystal-ball","magic-wand","nazar-amulet","video-game","joystick","slot-machine","game-die","puzzle-piece","teddy-bear","piata","nesting-dolls","spade-suit","heart-suit","diamond-suit","club-suit","chess-pawn","joker","mahjong-red-dragon","flower-playing-cards","performing-arts","framed-picture","artist-palette","thread","sewing-needle","yarn","knot"]},{"id":"objects","name":"Objects","emojis":["glasses","sunglasses","goggles","lab-coat","safety-vest","necktie","tshirt","jeans","scarf","gloves","coat","socks","dress","kimono","sari","onepiece-swimsuit","briefs","shorts","bikini","womans-clothes","purse","handbag","clutch-bag","shopping-bags","backpack","thong-sandal","mans-shoe","running-shoe","hiking-boot","flat-shoe","highheeled-shoe","womans-sandal","ballet-shoes","womans-boot","crown","womans-hat","top-hat","graduation-cap","billed-cap","military-helmet","rescue-workers-helmet","prayer-beads","lipstick","ring","gem-stone","muted-speaker","speaker-low-volume","speaker-medium-volume","speaker-high-volume","loudspeaker","megaphone","postal-horn","bell","bell-with-slash","musical-score","musical-note","musical-notes","studio-microphone","level-slider","control-knobs","microphone","headphone","radio","saxophone","accordion","guitar","musical-keyboard","trumpet","violin","banjo","drum","long-drum","mobile-phone","mobile-phone-with-arrow","telephone","telephone-receiver","pager","fax-machine","battery","electric-plug","laptop","desktop-computer","printer","keyboard","computer-mouse","trackball","computer-disk","floppy-disk","optical-disk","dvd","abacus","movie-camera","film-frames","film-projector","clapper-board","television","camera","camera-with-flash","video-camera","videocassette","magnifying-glass-tilted-left","magnifying-glass-tilted-right","candle","light-bulb","flashlight","red-paper-lantern","diya-lamp","notebook-with-decorative-cover","closed-book","open-book","green-book","blue-book","orange-book","books","notebook","ledger","page-with-curl","scroll","page-facing-up","newspaper","rolledup-newspaper","bookmark-tabs","bookmark","label","money-bag","coin","yen-banknote","dollar-banknote","euro-banknote","pound-banknote","money-with-wings","credit-card","receipt","chart-increasing-with-yen","envelope","email","incoming-envelope","envelope-with-arrow","outbox-tray","inbox-tray","package","closed-mailbox-with-raised-flag","closed-mailbox-with-lowered-flag","open-mailbox-with-raised-flag","open-mailbox-with-lowered-flag","postbox","ballot-box-with-ballot","pencil","black-nib","fountain-pen","pen","paintbrush","crayon","memo","briefcase","file-folder","open-file-folder","card-index-dividers","calendar","tearoff-calendar","spiral-notepad","spiral-calendar","card-index","chart-increasing","chart-decreasing","bar-chart","clipboard","pushpin","round-pushpin","paperclip","linked-paperclips","straight-ruler","triangular-ruler","scissors","card-file-box","file-cabinet","wastebasket","locked","unlocked","locked-with-pen","locked-with-key","key","old-key","hammer","axe","pick","hammer-and-pick","hammer-and-wrench","dagger","crossed-swords","water-pistol","boomerang","bow-and-arrow","shield","carpentry-saw","wrench","screwdriver","nut-and-bolt","gear","clamp","balance-scale","white-cane","link","chains","hook","toolbox","magnet","ladder","alembic","test-tube","petri-dish","dna","microscope","telescope","satellite-antenna","syringe","drop-of-blood","pill","adhesive-bandage","stethoscope","door","elevator","mirror","window","bed","couch-and-lamp","chair","toilet","plunger","shower","bathtub","mouse-trap","razor","lotion-bottle","safety-pin","broom","basket","roll-of-paper","bucket","soap","toothbrush","sponge","fire-extinguisher","shopping-cart","cigarette","coffin","headstone","funeral-urn","moai","placard"]},{"id":"symbols","name":"Symbols","emojis":["atm-sign","litter-in-bin-sign","potable-water","wheelchair-symbol","mens-room","womens-room","restroom","baby-symbol","water-closet","passport-control","customs","baggage-claim","left-luggage","warning","children-crossing","no-entry","prohibited","no-bicycles","no-smoking","no-littering","nonpotable-water","no-pedestrians","no-mobile-phones","no-one-under-eighteen","radioactive","biohazard","up-arrow","upright-arrow","right-arrow","downright-arrow","down-arrow","downleft-arrow","left-arrow","upleft-arrow","updown-arrow","leftright-arrow","right-arrow-curving-left","left-arrow-curving-right","right-arrow-curving-up","right-arrow-curving-down","clockwise-vertical-arrows","counterclockwise-arrows-button","back-arrow","end-arrow","on-arrow","soon-arrow","top-arrow","place-of-worship","atom-symbol","om","star-of-david","wheel-of-dharma","yin-yang","latin-cross","orthodox-cross","star-and-crescent","peace-symbol","menorah","dotted-sixpointed-star","aries","taurus","gemini","cancer","leo","virgo","libra","scorpio","sagittarius","capricorn","aquarius","pisces","ophiuchus","shuffle-tracks-button","repeat-button","repeat-single-button","play-button","fastforward-button","next-track-button","play-or-pause-button","reverse-button","fast-reverse-button","last-track-button","upwards-button","fast-up-button","downwards-button","fast-down-button","pause-button","stop-button","record-button","eject-button","cinema","dim-button","bright-button","antenna-bars","vibration-mode","mobile-phone-off","female-sign","male-sign","transgender-symbol","multiply","plus","minus","divide","infinity","double-exclamation-mark","exclamation-question-mark","red-question-mark","white-question-mark","white-exclamation-mark","red-exclamation-mark","wavy-dash","currency-exchange","heavy-dollar-sign","medical-symbol","recycling-symbol","fleurdelis","trident-emblem","name-badge","japanese-symbol-for-beginner","hollow-red-circle","check-mark-button","check-box-with-check","check-mark","cross-mark","cross-mark-button","curly-loop","double-curly-loop","part-alternation-mark","eightspoked-asterisk","eightpointed-star","sparkle","copyright","registered","trade-mark","keycap","keycap","keycap-0","keycap-1","keycap-2","keycap-3","keycap-4","keycap-5","keycap-6","keycap-7","keycap-8","keycap-9","keycap-10","input-latin-uppercase","input-latin-lowercase","input-numbers","input-symbols","input-latin-letters","a-button-blood-type","ab-button-blood-type","b-button-blood-type","cl-button","cool-button","free-button","information","id-button","circled-m","new-button","ng-button","o-button-blood-type","ok-button","p-button","sos-button","up-button","vs-button","japanese-here-button","japanese-service-charge-button","japanese-monthly-amount-button","japanese-not-free-of-charge-button","japanese-reserved-button","japanese-bargain-button","japanese-discount-button","japanese-free-of-charge-button","japanese-prohibited-button","japanese-acceptable-button","japanese-application-button","japanese-passing-grade-button","japanese-vacancy-button","japanese-congratulations-button","japanese-secret-button","japanese-open-for-business-button","japanese-no-vacancy-button","red-circle","orange-circle","yellow-circle","green-circle","blue-circle","purple-circle","brown-circle","black-circle","white-circle","red-square","orange-square","yellow-square","green-square","blue-square","purple-square","brown-square","black-large-square","white-large-square","black-medium-square","white-medium-square","black-mediumsmall-square","white-mediumsmall-square","black-small-square","white-small-square","large-orange-diamond","large-blue-diamond","small-orange-diamond","small-blue-diamond","red-triangle-pointed-up","red-triangle-pointed-down","diamond-with-a-dot","radio-button","white-square-button","black-square-button"]},{"id":"flags","name":"Flags","emojis":["chequered-flag","triangular-flag","crossed-flags","black-flag","white-flag","rainbow-flag","transgender-flag","pirate-flag","flag-ascension-island","flag-andorra","flag-united-arab-emirates","flag-afghanistan","flag-antigua--barbuda","flag-anguilla","flag-albania","flag-armenia","flag-angola","flag-antarctica","flag-argentina","flag-american-samoa","flag-austria","flag-australia","flag-aruba","flag-land-islands","flag-azerbaijan","flag-bosnia--herzegovina","flag-barbados","flag-bangladesh","flag-belgium","flag-burkina-faso","flag-bulgaria","flag-bahrain","flag-burundi","flag-benin","flag-st-barthlemy","flag-bermuda","flag-brunei","flag-bolivia","flag-caribbean-netherlands","flag-brazil","flag-bahamas","flag-bhutan","flag-bouvet-island","flag-botswana","flag-belarus","flag-belize","flag-canada","flag-cocos-keeling-islands","flag-congo--kinshasa","flag-central-african-republic","flag-congo--brazzaville","flag-switzerland","flag-cte-divoire","flag-cook-islands","flag-chile","flag-cameroon","flag-china","flag-colombia","flag-clipperton-island","flag-costa-rica","flag-cuba","flag-cape-verde","flag-curaao","flag-christmas-island","flag-cyprus","flag-czechia","flag-germany","flag-diego-garcia","flag-djibouti","flag-denmark","flag-dominica","flag-dominican-republic","flag-algeria","flag-ceuta--melilla","flag-ecuador","flag-estonia","flag-egypt","flag-western-sahara","flag-eritrea","flag-spain","flag-ethiopia","flag-european-union","flag-finland","flag-fiji","flag-falkland-islands","flag-micronesia","flag-faroe-islands","flag-france","flag-gabon","flag-united-kingdom","flag-grenada","flag-georgia","flag-french-guiana","flag-guernsey","flag-ghana","flag-gibraltar","flag-greenland","flag-gambia","flag-guinea","flag-guadeloupe","flag-equatorial-guinea","flag-greece","flag-south-georgia--south-sandwich-islands","flag-guatemala","flag-guam","flag-guineabissau","flag-guyana","flag-hong-kong-sar-china","flag-heard--mcdonald-islands","flag-honduras","flag-croatia","flag-haiti","flag-hungary","flag-canary-islands","flag-indonesia","flag-ireland","flag-israel","flag-isle-of-man","flag-india","flag-british-indian-ocean-territory","flag-iraq","flag-iran","flag-iceland","flag-italy","flag-jersey","flag-jamaica","flag-jordan","flag-japan","flag-kenya","flag-kyrgyzstan","flag-cambodia","flag-kiribati","flag-comoros","flag-st-kitts--nevis","flag-north-korea","flag-south-korea","flag-kuwait","flag-cayman-islands","flag-kazakhstan","flag-laos","flag-lebanon","flag-st-lucia","flag-liechtenstein","flag-sri-lanka","flag-liberia","flag-lesotho","flag-lithuania","flag-luxembourg","flag-latvia","flag-libya","flag-morocco","flag-monaco","flag-moldova","flag-montenegro","flag-st-martin","flag-madagascar","flag-marshall-islands","flag-north-macedonia","flag-mali","flag-myanmar-burma","flag-mongolia","flag-macao-sar-china","flag-northern-mariana-islands","flag-martinique","flag-mauritania","flag-montserrat","flag-malta","flag-mauritius","flag-maldives","flag-malawi","flag-mexico","flag-malaysia","flag-mozambique","flag-namibia","flag-new-caledonia","flag-niger","flag-norfolk-island","flag-nigeria","flag-nicaragua","flag-netherlands","flag-norway","flag-nepal","flag-nauru","flag-niue","flag-new-zealand","flag-oman","flag-panama","flag-peru","flag-french-polynesia","flag-papua-new-guinea","flag-philippines","flag-pakistan","flag-poland","flag-st-pierre--miquelon","flag-pitcairn-islands","flag-puerto-rico","flag-palestinian-territories","flag-portugal","flag-palau","flag-paraguay","flag-qatar","flag-runion","flag-romania","flag-serbia","flag-russia","flag-rwanda","flag-saudi-arabia","flag-solomon-islands","flag-seychelles","flag-sudan","flag-sweden","flag-singapore","flag-st-helena","flag-slovenia","flag-svalbard--jan-mayen","flag-slovakia","flag-sierra-leone","flag-san-marino","flag-senegal","flag-somalia","flag-suriname","flag-south-sudan","flag-so-tom--prncipe","flag-el-salvador","flag-sint-maarten","flag-syria","flag-eswatini","flag-tristan-da-cunha","flag-turks--caicos-islands","flag-chad","flag-french-southern-territories","flag-togo","flag-thailand","flag-tajikistan","flag-tokelau","flag-timorleste","flag-turkmenistan","flag-tunisia","flag-tonga","flag-turkey","flag-trinidad--tobago","flag-tuvalu","flag-taiwan","flag-tanzania","flag-ukraine","flag-uganda","flag-us-outlying-islands","flag-united-nations","flag-united-states","flag-uruguay","flag-uzbekistan","flag-vatican-city","flag-st-vincent--grenadines","flag-venezuela","flag-british-virgin-islands","flag-us-virgin-islands","flag-vietnam","flag-vanuatu","flag-wallis--futuna","flag-samoa","flag-kosovo","flag-yemen","flag-mayotte","flag-south-africa","flag-zambia","flag-zimbabwe","flag-england","flag-scotland","flag-wales"]}],"emojis":{"grinning-face":{"a":"Grinning Face","b":"1F600","j":["face","grin","smile","happy","joy",":D"]},"grinning-face-with-big-eyes":{"a":"Grinning Face with Big Eyes","b":"1F603","j":["face","mouth","open","smile","happy","joy","haha",":D",":)","funny"]},"grinning-face-with-smiling-eyes":{"a":"Grinning Face with Smiling Eyes","b":"1F604","j":["eye","face","mouth","open","smile","happy","joy","funny","haha","laugh","like",":D",":)"]},"beaming-face-with-smiling-eyes":{"a":"Beaming Face with Smiling Eyes","b":"1F601","j":["eye","face","grin","smile","happy","joy","kawaii"]},"grinning-squinting-face":{"a":"Grinning Squinting Face","b":"1F606","j":["face","laugh","mouth","satisfied","smile","happy","joy","lol","haha","glad","XD"]},"grinning-face-with-sweat":{"a":"Grinning Face with Sweat","b":"1F605","j":["cold","face","open","smile","sweat","hot","happy","laugh","relief"]},"rolling-on-the-floor-laughing":{"a":"Rolling on the Floor Laughing","b":"1F923","j":["face","floor","laugh","rofl","rolling","rotfl","laughing","lol","haha"]},"face-with-tears-of-joy":{"a":"Face with Tears of Joy","b":"1F602","j":["face","joy","laugh","tear","cry","tears","weep","happy","happytears","haha"]},"slightly-smiling-face":{"a":"Slightly Smiling Face","b":"1F642","j":["face","smile"]},"upsidedown-face":{"a":"Upside-Down Face","b":"1F643","j":["face","upside-down","upside_down_face","flipped","silly","smile"]},"winking-face":{"a":"Winking Face","b":"1F609","j":["face","wink","happy","mischievous","secret",";)","smile","eye"]},"smiling-face-with-smiling-eyes":{"a":"Smiling Face with Smiling Eyes","b":"1F60A","j":["blush","eye","face","smile","happy","flushed","crush","embarrassed","shy","joy"]},"smiling-face-with-halo":{"a":"Smiling Face with Halo","b":"1F607","j":["angel","face","fantasy","halo","innocent","heaven"]},"smiling-face-with-hearts":{"a":"Smiling Face with Hearts","b":"1F970","j":["adore","crush","hearts","in love","face","love","like","affection","valentines","infatuation"]},"smiling-face-with-hearteyes":{"a":"Smiling Face with Heart-Eyes","b":"1F60D","j":["eye","face","love","smile","smiling face with heart-eyes","smiling_face_with_heart_eyes","like","affection","valentines","infatuation","crush","heart"]},"starstruck":{"a":"Star-Struck","b":"1F929","j":["eyes","face","grinning","star","star-struck","starry-eyed","star_struck","smile","starry"]},"face-blowing-a-kiss":{"a":"Face Blowing a Kiss","b":"1F618","j":["face","kiss","love","like","affection","valentines","infatuation"]},"kissing-face":{"a":"Kissing Face","b":"1F617","j":["face","kiss","love","like","3","valentines","infatuation"]},"smiling-face":{"a":"Smiling Face","b":"263A","j":["face","outlined","relaxed","smile","blush","massage","happiness"]},"kissing-face-with-closed-eyes":{"a":"Kissing Face with Closed Eyes","b":"1F61A","j":["closed","eye","face","kiss","love","like","affection","valentines","infatuation"]},"kissing-face-with-smiling-eyes":{"a":"Kissing Face with Smiling Eyes","b":"1F619","j":["eye","face","kiss","smile","affection","valentines","infatuation"]},"smiling-face-with-tear":{"a":"Smiling Face with Tear","b":"1F972","j":["grateful","proud","relieved","smiling","tear","touched","sad","cry","pretend"]},"face-savoring-food":{"a":"Face Savoring Food","b":"1F60B","j":["delicious","face","savouring","smile","yum","happy","joy","tongue","silly","yummy","nom"]},"face-with-tongue":{"a":"Face with Tongue","b":"1F61B","j":["face","tongue","prank","childish","playful","mischievous","smile"]},"winking-face-with-tongue":{"a":"Winking Face with Tongue","b":"1F61C","j":["eye","face","joke","tongue","wink","prank","childish","playful","mischievous","smile"]},"zany-face":{"a":"Zany Face","b":"1F92A","j":["eye","goofy","large","small","face","crazy"]},"squinting-face-with-tongue":{"a":"Squinting Face with Tongue","b":"1F61D","j":["eye","face","horrible","taste","tongue","prank","playful","mischievous","smile"]},"moneymouth-face":{"a":"Money-Mouth Face","b":"1F911","j":["face","money","money-mouth face","mouth","money_mouth_face","rich","dollar"]},"hugging-face":{"a":"Hugging Face","b":"1F917","j":["face","hug","hugging","smile"]},"face-with-hand-over-mouth":{"a":"Face with Hand over Mouth","b":"1F92D","j":["whoops","shock","sudden realization","surprise","face"]},"shushing-face":{"a":"Shushing Face","b":"1F92B","j":["quiet","shush","face","shhh"]},"thinking-face":{"a":"Thinking Face","b":"1F914","j":["face","thinking","hmmm","think","consider"]},"zippermouth-face":{"a":"Zipper-Mouth Face","b":"1F910","j":["face","mouth","zipper","zipper-mouth face","zipper_mouth_face","sealed","secret"]},"face-with-raised-eyebrow":{"a":"Face with Raised Eyebrow","b":"1F928","j":["distrust","skeptic","disapproval","disbelief","mild surprise","scepticism","face","surprise"]},"neutral-face":{"a":"Neutral Face","b":"1F610","j":["deadpan","face","meh","neutral","indifference",":|"]},"expressionless-face":{"a":"Expressionless Face","b":"1F611","j":["expressionless","face","inexpressive","meh","unexpressive","indifferent","-_-","deadpan"]},"face-without-mouth":{"a":"Face Without Mouth","b":"1F636","j":["face","mouth","quiet","silent","hellokitty"]},"face-in-clouds":{"a":"βŠ› Face in Clouds","b":"1F636-200D-1F32B-FE0F","j":["absentminded","face in clouds","face in the fog","head in clouds"]},"smirking-face":{"a":"Smirking Face","b":"1F60F","j":["face","smirk","smile","mean","prank","smug","sarcasm"]},"unamused-face":{"a":"Unamused Face","b":"1F612","j":["face","unamused","unhappy","indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"]},"face-with-rolling-eyes":{"a":"Face with Rolling Eyes","b":"1F644","j":["eyeroll","eyes","face","rolling","frustrated"]},"grimacing-face":{"a":"Grimacing Face","b":"1F62C","j":["face","grimace","teeth"]},"face-exhaling":{"a":"βŠ› Face Exhaling","b":"1F62E-200D-1F4A8","j":["exhale","face exhaling","gasp","groan","relief","whisper","whistle"]},"lying-face":{"a":"Lying Face","b":"1F925","j":["face","lie","pinocchio"]},"relieved-face":{"a":"Relieved Face","b":"1F60C","j":["face","relieved","relaxed","phew","massage","happiness"]},"pensive-face":{"a":"Pensive Face","b":"1F614","j":["dejected","face","pensive","sad","depressed","upset"]},"sleepy-face":{"a":"Sleepy Face","b":"1F62A","j":["face","sleep","tired","rest","nap"]},"drooling-face":{"a":"Drooling Face","b":"1F924","j":["drooling","face"]},"sleeping-face":{"a":"Sleeping Face","b":"1F634","j":["face","sleep","zzz","tired","sleepy","night"]},"face-with-medical-mask":{"a":"Face with Medical Mask","b":"1F637","j":["cold","doctor","face","mask","sick","ill","disease"]},"face-with-thermometer":{"a":"Face with Thermometer","b":"1F912","j":["face","ill","sick","thermometer","temperature","cold","fever"]},"face-with-headbandage":{"a":"Face with Head-Bandage","b":"1F915","j":["bandage","face","face with head-bandage","hurt","injury","face_with_head_bandage","injured","clumsy"]},"nauseated-face":{"a":"Nauseated Face","b":"1F922","j":["face","nauseated","vomit","gross","green","sick","throw up","ill"]},"face-vomiting":{"a":"Face Vomiting","b":"1F92E","j":["puke","sick","vomit","face"]},"sneezing-face":{"a":"Sneezing Face","b":"1F927","j":["face","gesundheit","sneeze","sick","allergy"]},"hot-face":{"a":"Hot Face","b":"1F975","j":["feverish","heat stroke","hot","red-faced","sweating","face","heat","red"]},"cold-face":{"a":"Cold Face","b":"1F976","j":["blue-faced","cold","freezing","frostbite","icicles","face","blue","frozen"]},"woozy-face":{"a":"Woozy Face","b":"1F974","j":["dizzy","intoxicated","tipsy","uneven eyes","wavy mouth","face","wavy"]},"knockedout-face":{"a":"Knocked-out Face","b":"1F635","j":["dead","face","knocked out","knocked-out face","dizzy_face","spent","unconscious","xox","dizzy"]},"face-with-spiral-eyes":{"a":"βŠ› Face with Spiral Eyes","b":"1F635-200D-1F4AB","j":["dizzy","face with spiral eyes","hypnotized","spiral","trouble","whoa"]},"exploding-head":{"a":"Exploding Head","b":"1F92F","j":["mind blown","shocked","face","mind","blown"]},"cowboy-hat-face":{"a":"Cowboy Hat Face","b":"1F920","j":["cowboy","cowgirl","face","hat"]},"partying-face":{"a":"Partying Face","b":"1F973","j":["celebration","hat","horn","party","face","woohoo"]},"disguised-face":{"a":"Disguised Face","b":"1F978","j":["disguise","face","glasses","incognito","nose","pretent","brows","moustache"]},"smiling-face-with-sunglasses":{"a":"Smiling Face with Sunglasses","b":"1F60E","j":["bright","cool","face","sun","sunglasses","smile","summer","beach","sunglass"]},"nerd-face":{"a":"Nerd Face","b":"1F913","j":["face","geek","nerd","nerdy","dork"]},"face-with-monocle":{"a":"Face with Monocle","b":"1F9D0","j":["stuffy","wealthy","face"]},"confused-face":{"a":"Confused Face","b":"1F615","j":["confused","face","meh","indifference","huh","weird","hmmm",":/"]},"worried-face":{"a":"Worried Face","b":"1F61F","j":["face","worried","concern","nervous",":("]},"slightly-frowning-face":{"a":"Slightly Frowning Face","b":"1F641","j":["face","frown","frowning","disappointed","sad","upset"]},"frowning-face":{"a":"Frowning Face","b":"2639","j":["face","frown","sad","upset"]},"face-with-open-mouth":{"a":"Face with Open Mouth","b":"1F62E","j":["face","mouth","open","sympathy","surprise","impressed","wow","whoa",":O"]},"hushed-face":{"a":"Hushed Face","b":"1F62F","j":["face","hushed","stunned","surprised","woo","shh"]},"astonished-face":{"a":"Astonished Face","b":"1F632","j":["astonished","face","shocked","totally","xox","surprised","poisoned"]},"flushed-face":{"a":"Flushed Face","b":"1F633","j":["dazed","face","flushed","blush","shy","flattered"]},"pleading-face":{"a":"Pleading Face","b":"1F97A","j":["begging","mercy","puppy eyes","face"]},"frowning-face-with-open-mouth":{"a":"Frowning Face with Open Mouth","b":"1F626","j":["face","frown","mouth","open","aw","what"]},"anguished-face":{"a":"Anguished Face","b":"1F627","j":["anguished","face","stunned","nervous"]},"fearful-face":{"a":"Fearful Face","b":"1F628","j":["face","fear","fearful","scared","terrified","nervous","oops","huh"]},"anxious-face-with-sweat":{"a":"Anxious Face with Sweat","b":"1F630","j":["blue","cold","face","rushed","sweat","nervous"]},"sad-but-relieved-face":{"a":"Sad but Relieved Face","b":"1F625","j":["disappointed","face","relieved","whew","phew","sweat","nervous"]},"crying-face":{"a":"Crying Face","b":"1F622","j":["cry","face","sad","tear","tears","depressed","upset",":'("]},"loudly-crying-face":{"a":"Loudly Crying Face","b":"1F62D","j":["cry","face","sad","sob","tear","tears","upset","depressed"]},"face-screaming-in-fear":{"a":"Face Screaming in Fear","b":"1F631","j":["face","fear","munch","scared","scream","omg"]},"confounded-face":{"a":"Confounded Face","b":"1F616","j":["confounded","face","confused","sick","unwell","oops",":S"]},"persevering-face":{"a":"Persevering Face","b":"1F623","j":["face","persevere","sick","no","upset","oops"]},"disappointed-face":{"a":"Disappointed Face","b":"1F61E","j":["disappointed","face","sad","upset","depressed",":("]},"downcast-face-with-sweat":{"a":"Downcast Face with Sweat","b":"1F613","j":["cold","face","sweat","hot","sad","tired","exercise"]},"weary-face":{"a":"Weary Face","b":"1F629","j":["face","tired","weary","sleepy","sad","frustrated","upset"]},"tired-face":{"a":"Tired Face","b":"1F62B","j":["face","tired","sick","whine","upset","frustrated"]},"yawning-face":{"a":"Yawning Face","b":"1F971","j":["bored","tired","yawn","sleepy",""]},"face-with-steam-from-nose":{"a":"Face with Steam From Nose","b":"1F624","j":["face","triumph","won","gas","phew","proud","pride"]},"pouting-face":{"a":"Pouting Face","b":"1F621","j":["angry","face","mad","pouting","rage","red","hate","despise"]},"angry-face":{"a":"Angry Face","b":"1F620","j":["anger","angry","face","mad","annoyed","frustrated"]},"face-with-symbols-on-mouth":{"a":"Face with Symbols on Mouth","b":"1F92C","j":["swearing","cursing","face","cussing","profanity","expletive"]},"smiling-face-with-horns":{"a":"Smiling Face with Horns","b":"1F608","j":["face","fairy tale","fantasy","horns","smile","devil"]},"angry-face-with-horns":{"a":"Angry Face with Horns","b":"1F47F","j":["demon","devil","face","fantasy","imp","angry","horns"]},"skull":{"a":"Skull","b":"1F480","j":["death","face","fairy tale","monster","dead","skeleton","creepy"]},"skull-and-crossbones":{"a":"Skull and Crossbones","b":"2620","j":["crossbones","death","face","monster","skull","poison","danger","deadly","scary","pirate","evil"]},"pile-of-poo":{"a":"Pile of Poo","b":"1F4A9","j":["dung","face","monster","poo","poop","hankey","shitface","fail","turd","shit"]},"clown-face":{"a":"Clown Face","b":"1F921","j":["clown","face"]},"ogre":{"a":"Ogre","b":"1F479","j":["creature","face","fairy tale","fantasy","monster","troll","red","mask","halloween","scary","creepy","devil","demon","japanese"]},"goblin":{"a":"Goblin","b":"1F47A","j":["creature","face","fairy tale","fantasy","monster","red","evil","mask","scary","creepy","japanese"]},"ghost":{"a":"Ghost","b":"1F47B","j":["creature","face","fairy tale","fantasy","monster","halloween","spooky","scary"]},"alien":{"a":"Alien","b":"1F47D","j":["creature","extraterrestrial","face","fantasy","ufo","UFO","paul","weird","outer_space"]},"alien-monster":{"a":"Alien Monster","b":"1F47E","j":["alien","creature","extraterrestrial","face","monster","ufo","game","arcade","play"]},"robot":{"a":"Robot","b":"1F916","j":["face","monster","computer","machine","bot"]},"grinning-cat":{"a":"Grinning Cat","b":"1F63A","j":["cat","face","grinning","mouth","open","smile","animal","cats","happy"]},"grinning-cat-with-smiling-eyes":{"a":"Grinning Cat with Smiling Eyes","b":"1F638","j":["cat","eye","face","grin","smile","animal","cats"]},"cat-with-tears-of-joy":{"a":"Cat with Tears of Joy","b":"1F639","j":["cat","face","joy","tear","animal","cats","haha","happy","tears"]},"smiling-cat-with-hearteyes":{"a":"Smiling Cat with Heart-Eyes","b":"1F63B","j":["cat","eye","face","heart","love","smile","smiling cat with heart-eyes","smiling_cat_with_heart_eyes","animal","like","affection","cats","valentines"]},"cat-with-wry-smile":{"a":"Cat with Wry Smile","b":"1F63C","j":["cat","face","ironic","smile","wry","animal","cats","smirk"]},"kissing-cat":{"a":"Kissing Cat","b":"1F63D","j":["cat","eye","face","kiss","animal","cats"]},"weary-cat":{"a":"Weary Cat","b":"1F640","j":["cat","face","oh","surprised","weary","animal","cats","munch","scared","scream"]},"crying-cat":{"a":"Crying Cat","b":"1F63F","j":["cat","cry","face","sad","tear","animal","tears","weep","cats","upset"]},"pouting-cat":{"a":"Pouting Cat","b":"1F63E","j":["cat","face","pouting","animal","cats"]},"seenoevil-monkey":{"a":"See-No-Evil Monkey","b":"1F648","j":["evil","face","forbidden","monkey","see","see-no-evil monkey","see_no_evil_monkey","animal","nature","haha"]},"hearnoevil-monkey":{"a":"Hear-No-Evil Monkey","b":"1F649","j":["evil","face","forbidden","hear","hear-no-evil monkey","monkey","hear_no_evil_monkey","animal","nature"]},"speaknoevil-monkey":{"a":"Speak-No-Evil Monkey","b":"1F64A","j":["evil","face","forbidden","monkey","speak","speak-no-evil monkey","speak_no_evil_monkey","animal","nature","omg"]},"kiss-mark":{"a":"Kiss Mark","b":"1F48B","j":["kiss","lips","face","love","like","affection","valentines"]},"love-letter":{"a":"Love Letter","b":"1F48C","j":["heart","letter","love","mail","email","like","affection","envelope","valentines"]},"heart-with-arrow":{"a":"Heart with Arrow","b":"1F498","j":["arrow","cupid","love","like","heart","affection","valentines"]},"heart-with-ribbon":{"a":"Heart with Ribbon","b":"1F49D","j":["ribbon","valentine","love","valentines"]},"sparkling-heart":{"a":"Sparkling Heart","b":"1F496","j":["excited","sparkle","love","like","affection","valentines"]},"growing-heart":{"a":"Growing Heart","b":"1F497","j":["excited","growing","nervous","pulse","like","love","affection","valentines","pink"]},"beating-heart":{"a":"Beating Heart","b":"1F493","j":["beating","heartbeat","pulsating","love","like","affection","valentines","pink","heart"]},"revolving-hearts":{"a":"Revolving Hearts","b":"1F49E","j":["revolving","love","like","affection","valentines"]},"two-hearts":{"a":"Two Hearts","b":"1F495","j":["love","like","affection","valentines","heart"]},"heart-decoration":{"a":"Heart Decoration","b":"1F49F","j":["heart","purple-square","love","like"]},"heart-exclamation":{"a":"Heart Exclamation","b":"2763","j":["exclamation","mark","punctuation","decoration","love"]},"broken-heart":{"a":"Broken Heart","b":"1F494","j":["break","broken","sad","sorry","heart","heartbreak"]},"heart-on-fire":{"a":"βŠ› Heart on Fire","b":"2764-FE0F-200D-1F525","j":["burn","heart","heart on fire","love","lust","sacred heart"]},"mending-heart":{"a":"βŠ› Mending Heart","b":"2764-FE0F-200D-1FA79","j":["healthier","improving","mending","mending heart","recovering","recuperating","well"]},"red-heart":{"a":"Red Heart","b":"2764","j":["heart","love","like","valentines"]},"orange-heart":{"a":"Orange Heart","b":"1F9E1","j":["orange","love","like","affection","valentines"]},"yellow-heart":{"a":"Yellow Heart","b":"1F49B","j":["yellow","love","like","affection","valentines"]},"green-heart":{"a":"Green Heart","b":"1F49A","j":["green","love","like","affection","valentines"]},"blue-heart":{"a":"Blue Heart","b":"1F499","j":["blue","love","like","affection","valentines"]},"purple-heart":{"a":"Purple Heart","b":"1F49C","j":["purple","love","like","affection","valentines"]},"brown-heart":{"a":"Brown Heart","b":"1F90E","j":["brown","heart","coffee"]},"black-heart":{"a":"Black Heart","b":"1F5A4","j":["black","evil","wicked"]},"white-heart":{"a":"White Heart","b":"1F90D","j":["heart","white","pure"]},"hundred-points":{"a":"Hundred Points","b":"1F4AF","j":["100","full","hundred","score","perfect","numbers","century","exam","quiz","test","pass"]},"anger-symbol":{"a":"Anger Symbol","b":"1F4A2","j":["angry","comic","mad"]},"collision":{"a":"Collision","b":"1F4A5","j":["boom","comic","bomb","explode","explosion","blown"]},"dizzy":{"a":"Dizzy","b":"1F4AB","j":["comic","star","sparkle","shoot","magic"]},"sweat-droplets":{"a":"Sweat Droplets","b":"1F4A6","j":["comic","splashing","sweat","water","drip","oops"]},"dashing-away":{"a":"Dashing Away","b":"1F4A8","j":["comic","dash","running","wind","air","fast","shoo","fart","smoke","puff"]},"hole":{"a":"Hole","b":"1F573","j":["embarrassing"]},"bomb":{"a":"Bomb","b":"1F4A3","j":["comic","boom","explode","explosion","terrorism"]},"speech-balloon":{"a":"Speech Balloon","b":"1F4AC","j":["balloon","bubble","comic","dialog","speech","words","message","talk","chatting"]},"eye-in-speech-bubble":{"a":"Eye in Speech Bubble","b":"1F441-FE0F-200D-1F5E8-FE0F","j":["eye","speech bubble","witness","info"]},"left-speech-bubble":{"a":"Left Speech Bubble","b":"1F5E8","j":["dialog","speech","words","message","talk","chatting"]},"right-anger-bubble":{"a":"Right Anger Bubble","b":"1F5EF","j":["angry","balloon","bubble","mad","caption","speech","thinking"]},"thought-balloon":{"a":"Thought Balloon","b":"1F4AD","j":["balloon","bubble","comic","thought","cloud","speech","thinking","dream"]},"zzz":{"a":"Zzz","b":"1F4A4","j":["comic","sleep","sleepy","tired","dream"]},"waving-hand":{"a":"Waving Hand","b":"1F44B","j":["hand","wave","waving","hands","gesture","goodbye","solong","farewell","hello","hi","palm"]},"raised-back-of-hand":{"a":"Raised Back of Hand","b":"1F91A","j":["backhand","raised","fingers"]},"hand-with-fingers-splayed":{"a":"Hand with Fingers Splayed","b":"1F590","j":["finger","hand","splayed","fingers","palm"]},"raised-hand":{"a":"Raised Hand","b":"270B","j":["hand","high 5","high five","fingers","stop","highfive","palm","ban"]},"vulcan-salute":{"a":"Vulcan Salute","b":"1F596","j":["finger","hand","spock","vulcan","fingers","star trek"]},"ok-hand":{"a":"Ok Hand","b":"1F44C","j":["hand","OK","fingers","limbs","perfect","ok","okay"]},"pinched-fingers":{"a":"Pinched Fingers","b":"1F90C","j":["fingers","hand gesture","interrogation","pinched","sarcastic","size","tiny","small"]},"pinching-hand":{"a":"Pinching Hand","b":"1F90F","j":["small amount","tiny","small","size"]},"victory-hand":{"a":"Victory Hand","b":"270C","j":["hand","v","victory","fingers","ohyeah","peace","two"]},"crossed-fingers":{"a":"Crossed Fingers","b":"1F91E","j":["cross","finger","hand","luck","good","lucky"]},"loveyou-gesture":{"a":"Love-You Gesture","b":"1F91F","j":["hand","ILY","love-you gesture","love_you_gesture","fingers","gesture"]},"sign-of-the-horns":{"a":"Sign of the Horns","b":"1F918","j":["finger","hand","horns","rock-on","fingers","evil_eye","sign_of_horns","rock_on"]},"call-me-hand":{"a":"Call Me Hand","b":"1F919","j":["call","hand","hands","gesture"]},"backhand-index-pointing-left":{"a":"Backhand Index Pointing Left","b":"1F448","j":["backhand","finger","hand","index","point","direction","fingers","left"]},"backhand-index-pointing-right":{"a":"Backhand Index Pointing Right","b":"1F449","j":["backhand","finger","hand","index","point","fingers","direction","right"]},"backhand-index-pointing-up":{"a":"Backhand Index Pointing Up","b":"1F446","j":["backhand","finger","hand","point","up","fingers","direction"]},"middle-finger":{"a":"Middle Finger","b":"1F595","j":["finger","hand","fingers","rude","middle","flipping"]},"backhand-index-pointing-down":{"a":"Backhand Index Pointing Down","b":"1F447","j":["backhand","down","finger","hand","point","fingers","direction"]},"index-pointing-up":{"a":"Index Pointing Up","b":"261D","j":["finger","hand","index","point","up","fingers","direction"]},"thumbs-up":{"a":"Thumbs Up","b":"1F44D","j":["+1","hand","thumb","up","thumbsup","yes","awesome","good","agree","accept","cool","like"]},"thumbs-down":{"a":"Thumbs Down","b":"1F44E","j":["-1","down","hand","thumb","thumbsdown","no","dislike"]},"raised-fist":{"a":"Raised Fist","b":"270A","j":["clenched","fist","hand","punch","fingers","grasp"]},"oncoming-fist":{"a":"Oncoming Fist","b":"1F44A","j":["clenched","fist","hand","punch","angry","violence","hit","attack"]},"leftfacing-fist":{"a":"Left-Facing Fist","b":"1F91B","j":["fist","left-facing fist","leftwards","left_facing_fist","hand","fistbump"]},"rightfacing-fist":{"a":"Right-Facing Fist","b":"1F91C","j":["fist","right-facing fist","rightwards","right_facing_fist","hand","fistbump"]},"clapping-hands":{"a":"Clapping Hands","b":"1F44F","j":["clap","hand","hands","praise","applause","congrats","yay"]},"raising-hands":{"a":"Raising Hands","b":"1F64C","j":["celebration","gesture","hand","hooray","raised","yea","hands"]},"open-hands":{"a":"Open Hands","b":"1F450","j":["hand","open","fingers","butterfly","hands"]},"palms-up-together":{"a":"Palms Up Together","b":"1F932","j":["prayer","cupped hands","hands","gesture","cupped"]},"handshake":{"a":"Handshake","b":"1F91D","j":["agreement","hand","meeting","shake"]},"folded-hands":{"a":"Folded Hands","b":"1F64F","j":["ask","hand","high 5","high five","please","pray","thanks","hope","wish","namaste","highfive"]},"writing-hand":{"a":"Writing Hand","b":"270D","j":["hand","write","lower_left_ballpoint_pen","stationery","compose"]},"nail-polish":{"a":"Nail Polish","b":"1F485","j":["care","cosmetics","manicure","nail","polish","beauty","finger","fashion"]},"selfie":{"a":"Selfie","b":"1F933","j":["camera","phone"]},"flexed-biceps":{"a":"Flexed Biceps","b":"1F4AA","j":["biceps","comic","flex","muscle","arm","hand","summer","strong"]},"mechanical-arm":{"a":"Mechanical Arm","b":"1F9BE","j":["accessibility","prosthetic"]},"mechanical-leg":{"a":"Mechanical Leg","b":"1F9BF","j":["accessibility","prosthetic"]},"leg":{"a":"Leg","b":"1F9B5","j":["kick","limb"]},"foot":{"a":"Foot","b":"1F9B6","j":["kick","stomp"]},"ear":{"a":"Ear","b":"1F442","j":["body","face","hear","sound","listen"]},"ear-with-hearing-aid":{"a":"Ear with Hearing Aid","b":"1F9BB","j":["accessibility","hard of hearing"]},"nose":{"a":"Nose","b":"1F443","j":["body","smell","sniff"]},"brain":{"a":"Brain","b":"1F9E0","j":["intelligent","smart"]},"anatomical-heart":{"a":"Anatomical Heart","b":"1FAC0","j":["anatomical","cardiology","heart","organ","pulse","health","heartbeat"]},"lungs":{"a":"Lungs","b":"1FAC1","j":["breath","exhalation","inhalation","organ","respiration","breathe"]},"tooth":{"a":"Tooth","b":"1F9B7","j":["dentist","teeth"]},"bone":{"a":"Bone","b":"1F9B4","j":["skeleton"]},"eyes":{"a":"Eyes","b":"1F440","j":["eye","face","look","watch","stalk","peek","see"]},"eye":{"a":"Eye","b":"1F441","j":["body","face","look","see","watch","stare"]},"tongue":{"a":"Tongue","b":"1F445","j":["body","mouth","playful"]},"mouth":{"a":"Mouth","b":"1F444","j":["lips","kiss"]},"baby":{"a":"Baby","b":"1F476","j":["young","child","boy","girl","toddler"]},"child":{"a":"Child","b":"1F9D2","j":["gender-neutral","unspecified gender","young"]},"boy":{"a":"Boy","b":"1F466","j":["young","man","male","guy","teenager"]},"girl":{"a":"Girl","b":"1F467","j":["Virgo","young","zodiac","female","woman","teenager"]},"person":{"a":"Person","b":"1F9D1","j":["adult","gender-neutral","unspecified gender"]},"person-blond-hair":{"a":"Person: Blond Hair","b":"1F471","j":["blond","blond-haired person","hair","person: blond hair","hairstyle"]},"man":{"a":"Man","b":"1F468","j":["adult","mustache","father","dad","guy","classy","sir","moustache"]},"person-beard":{"a":"Person: Beard","b":"1F9D4","j":["beard","person","person: beard","bewhiskered","man_beard"]},"man-beard":{"a":"βŠ› Man: Beard","b":"1F9D4-200D-2642-FE0F","j":["beard","man","man: beard"]},"woman-beard":{"a":"βŠ› Woman: Beard","b":"1F9D4-200D-2640-FE0F","j":["beard","woman","woman: beard"]},"man-red-hair":{"a":"Man: Red Hair","b":"1F468-200D-1F9B0","j":["adult","man","red hair","hairstyle"]},"man-curly-hair":{"a":"Man: Curly Hair","b":"1F468-200D-1F9B1","j":["adult","curly hair","man","hairstyle"]},"man-white-hair":{"a":"Man: White Hair","b":"1F468-200D-1F9B3","j":["adult","man","white hair","old","elder"]},"man-bald":{"a":"Man: Bald","b":"1F468-200D-1F9B2","j":["adult","bald","man","hairless"]},"woman":{"a":"Woman","b":"1F469","j":["adult","female","girls","lady"]},"woman-red-hair":{"a":"Woman: Red Hair","b":"1F469-200D-1F9B0","j":["adult","red hair","woman","hairstyle"]},"person-red-hair":{"a":"Person: Red Hair","b":"1F9D1-200D-1F9B0","j":["adult","gender-neutral","person","red hair","unspecified gender","hairstyle"]},"woman-curly-hair":{"a":"Woman: Curly Hair","b":"1F469-200D-1F9B1","j":["adult","curly hair","woman","hairstyle"]},"person-curly-hair":{"a":"Person: Curly Hair","b":"1F9D1-200D-1F9B1","j":["adult","curly hair","gender-neutral","person","unspecified gender","hairstyle"]},"woman-white-hair":{"a":"Woman: White Hair","b":"1F469-200D-1F9B3","j":["adult","white hair","woman","old","elder"]},"person-white-hair":{"a":"Person: White Hair","b":"1F9D1-200D-1F9B3","j":["adult","gender-neutral","person","unspecified gender","white hair","elder","old"]},"woman-bald":{"a":"Woman: Bald","b":"1F469-200D-1F9B2","j":["adult","bald","woman","hairless"]},"person-bald":{"a":"Person: Bald","b":"1F9D1-200D-1F9B2","j":["adult","bald","gender-neutral","person","unspecified gender","hairless"]},"woman-blond-hair":{"a":"Woman: Blond Hair","b":"1F471-200D-2640-FE0F","j":["blond-haired woman","blonde","hair","woman","woman: blond hair","female","girl","person"]},"man-blond-hair":{"a":"Man: Blond Hair","b":"1F471-200D-2642-FE0F","j":["blond","blond-haired man","hair","man","man: blond hair","male","boy","blonde","guy","person"]},"older-person":{"a":"Older Person","b":"1F9D3","j":["adult","gender-neutral","old","unspecified gender","human","elder","senior"]},"old-man":{"a":"Old Man","b":"1F474","j":["adult","man","old","human","male","men","elder","senior"]},"old-woman":{"a":"Old Woman","b":"1F475","j":["adult","old","woman","human","female","women","lady","elder","senior"]},"person-frowning":{"a":"Person Frowning","b":"1F64D","j":["frown","gesture","worried"]},"man-frowning":{"a":"Man Frowning","b":"1F64D-200D-2642-FE0F","j":["frowning","gesture","man","male","boy","sad","depressed","discouraged","unhappy"]},"woman-frowning":{"a":"Woman Frowning","b":"1F64D-200D-2640-FE0F","j":["frowning","gesture","woman","female","girl","sad","depressed","discouraged","unhappy"]},"person-pouting":{"a":"Person Pouting","b":"1F64E","j":["gesture","pouting","upset"]},"man-pouting":{"a":"Man Pouting","b":"1F64E-200D-2642-FE0F","j":["gesture","man","pouting","male","boy"]},"woman-pouting":{"a":"Woman Pouting","b":"1F64E-200D-2640-FE0F","j":["gesture","pouting","woman","female","girl"]},"person-gesturing-no":{"a":"Person Gesturing No","b":"1F645","j":["forbidden","gesture","hand","person gesturing NO","prohibited","decline"]},"man-gesturing-no":{"a":"Man Gesturing No","b":"1F645-200D-2642-FE0F","j":["forbidden","gesture","hand","man","man gesturing NO","prohibited","male","boy","nope"]},"woman-gesturing-no":{"a":"Woman Gesturing No","b":"1F645-200D-2640-FE0F","j":["forbidden","gesture","hand","prohibited","woman","woman gesturing NO","female","girl","nope"]},"person-gesturing-ok":{"a":"Person Gesturing Ok","b":"1F646","j":["gesture","hand","OK","person gesturing OK","agree"]},"man-gesturing-ok":{"a":"Man Gesturing Ok","b":"1F646-200D-2642-FE0F","j":["gesture","hand","man","man gesturing OK","OK","men","boy","male","blue","human"]},"woman-gesturing-ok":{"a":"Woman Gesturing Ok","b":"1F646-200D-2640-FE0F","j":["gesture","hand","OK","woman","woman gesturing OK","women","girl","female","pink","human"]},"person-tipping-hand":{"a":"Person Tipping Hand","b":"1F481","j":["hand","help","information","sassy","tipping"]},"man-tipping-hand":{"a":"Man Tipping Hand","b":"1F481-200D-2642-FE0F","j":["man","sassy","tipping hand","male","boy","human","information"]},"woman-tipping-hand":{"a":"Woman Tipping Hand","b":"1F481-200D-2640-FE0F","j":["sassy","tipping hand","woman","female","girl","human","information"]},"person-raising-hand":{"a":"Person Raising Hand","b":"1F64B","j":["gesture","hand","happy","raised","question"]},"man-raising-hand":{"a":"Man Raising Hand","b":"1F64B-200D-2642-FE0F","j":["gesture","man","raising hand","male","boy"]},"woman-raising-hand":{"a":"Woman Raising Hand","b":"1F64B-200D-2640-FE0F","j":["gesture","raising hand","woman","female","girl"]},"deaf-person":{"a":"Deaf Person","b":"1F9CF","j":["accessibility","deaf","ear","hear"]},"deaf-man":{"a":"Deaf Man","b":"1F9CF-200D-2642-FE0F","j":["deaf","man","accessibility"]},"deaf-woman":{"a":"Deaf Woman","b":"1F9CF-200D-2640-FE0F","j":["deaf","woman","accessibility"]},"person-bowing":{"a":"Person Bowing","b":"1F647","j":["apology","bow","gesture","sorry","respectiful"]},"man-bowing":{"a":"Man Bowing","b":"1F647-200D-2642-FE0F","j":["apology","bowing","favor","gesture","man","sorry","male","boy"]},"woman-bowing":{"a":"Woman Bowing","b":"1F647-200D-2640-FE0F","j":["apology","bowing","favor","gesture","sorry","woman","female","girl"]},"person-facepalming":{"a":"Person Facepalming","b":"1F926","j":["disbelief","exasperation","face","palm","disappointed"]},"man-facepalming":{"a":"Man Facepalming","b":"1F926-200D-2642-FE0F","j":["disbelief","exasperation","facepalm","man","male","boy"]},"woman-facepalming":{"a":"Woman Facepalming","b":"1F926-200D-2640-FE0F","j":["disbelief","exasperation","facepalm","woman","female","girl"]},"person-shrugging":{"a":"Person Shrugging","b":"1F937","j":["doubt","ignorance","indifference","shrug","regardless"]},"man-shrugging":{"a":"Man Shrugging","b":"1F937-200D-2642-FE0F","j":["doubt","ignorance","indifference","man","shrug","male","boy","confused","indifferent"]},"woman-shrugging":{"a":"Woman Shrugging","b":"1F937-200D-2640-FE0F","j":["doubt","ignorance","indifference","shrug","woman","female","girl","confused","indifferent"]},"health-worker":{"a":"Health Worker","b":"1F9D1-200D-2695-FE0F","j":["doctor","healthcare","nurse","therapist","hospital"]},"man-health-worker":{"a":"Man Health Worker","b":"1F468-200D-2695-FE0F","j":["doctor","healthcare","man","nurse","therapist","human"]},"woman-health-worker":{"a":"Woman Health Worker","b":"1F469-200D-2695-FE0F","j":["doctor","healthcare","nurse","therapist","woman","human"]},"student":{"a":"Student","b":"1F9D1-200D-1F393","j":["graduate","learn"]},"man-student":{"a":"Man Student","b":"1F468-200D-1F393","j":["graduate","man","student","human"]},"woman-student":{"a":"Woman Student","b":"1F469-200D-1F393","j":["graduate","student","woman","human"]},"teacher":{"a":"Teacher","b":"1F9D1-200D-1F3EB","j":["instructor","professor"]},"man-teacher":{"a":"Man Teacher","b":"1F468-200D-1F3EB","j":["instructor","man","professor","teacher","human"]},"woman-teacher":{"a":"Woman Teacher","b":"1F469-200D-1F3EB","j":["instructor","professor","teacher","woman","human"]},"judge":{"a":"Judge","b":"1F9D1-200D-2696-FE0F","j":["justice","scales","law"]},"man-judge":{"a":"Man Judge","b":"1F468-200D-2696-FE0F","j":["judge","justice","man","scales","court","human"]},"woman-judge":{"a":"Woman Judge","b":"1F469-200D-2696-FE0F","j":["judge","justice","scales","woman","court","human"]},"farmer":{"a":"Farmer","b":"1F9D1-200D-1F33E","j":["gardener","rancher","crops"]},"man-farmer":{"a":"Man Farmer","b":"1F468-200D-1F33E","j":["farmer","gardener","man","rancher","human"]},"woman-farmer":{"a":"Woman Farmer","b":"1F469-200D-1F33E","j":["farmer","gardener","rancher","woman","human"]},"cook":{"a":"Cook","b":"1F9D1-200D-1F373","j":["chef","food","kitchen","culinary"]},"man-cook":{"a":"Man Cook","b":"1F468-200D-1F373","j":["chef","cook","man","human"]},"woman-cook":{"a":"Woman Cook","b":"1F469-200D-1F373","j":["chef","cook","woman","human"]},"mechanic":{"a":"Mechanic","b":"1F9D1-200D-1F527","j":["electrician","plumber","tradesperson","worker","technician"]},"man-mechanic":{"a":"Man Mechanic","b":"1F468-200D-1F527","j":["electrician","man","mechanic","plumber","tradesperson","human","wrench"]},"woman-mechanic":{"a":"Woman Mechanic","b":"1F469-200D-1F527","j":["electrician","mechanic","plumber","tradesperson","woman","human","wrench"]},"factory-worker":{"a":"Factory Worker","b":"1F9D1-200D-1F3ED","j":["assembly","factory","industrial","worker","labor"]},"man-factory-worker":{"a":"Man Factory Worker","b":"1F468-200D-1F3ED","j":["assembly","factory","industrial","man","worker","human"]},"woman-factory-worker":{"a":"Woman Factory Worker","b":"1F469-200D-1F3ED","j":["assembly","factory","industrial","woman","worker","human"]},"office-worker":{"a":"Office Worker","b":"1F9D1-200D-1F4BC","j":["architect","business","manager","white-collar"]},"man-office-worker":{"a":"Man Office Worker","b":"1F468-200D-1F4BC","j":["architect","business","man","manager","white-collar","human"]},"woman-office-worker":{"a":"Woman Office Worker","b":"1F469-200D-1F4BC","j":["architect","business","manager","white-collar","woman","human"]},"scientist":{"a":"Scientist","b":"1F9D1-200D-1F52C","j":["biologist","chemist","engineer","physicist","chemistry"]},"man-scientist":{"a":"Man Scientist","b":"1F468-200D-1F52C","j":["biologist","chemist","engineer","man","physicist","scientist","human"]},"woman-scientist":{"a":"Woman Scientist","b":"1F469-200D-1F52C","j":["biologist","chemist","engineer","physicist","scientist","woman","human"]},"technologist":{"a":"Technologist","b":"1F9D1-200D-1F4BB","j":["coder","developer","inventor","software","computer"]},"man-technologist":{"a":"Man Technologist","b":"1F468-200D-1F4BB","j":["coder","developer","inventor","man","software","technologist","engineer","programmer","human","laptop","computer"]},"woman-technologist":{"a":"Woman Technologist","b":"1F469-200D-1F4BB","j":["coder","developer","inventor","software","technologist","woman","engineer","programmer","human","laptop","computer"]},"singer":{"a":"Singer","b":"1F9D1-200D-1F3A4","j":["actor","entertainer","rock","star","song","artist","performer"]},"man-singer":{"a":"Man Singer","b":"1F468-200D-1F3A4","j":["actor","entertainer","man","rock","singer","star","rockstar","human"]},"woman-singer":{"a":"Woman Singer","b":"1F469-200D-1F3A4","j":["actor","entertainer","rock","singer","star","woman","rockstar","human"]},"artist":{"a":"Artist","b":"1F9D1-200D-1F3A8","j":["palette","painting","draw","creativity"]},"man-artist":{"a":"Man Artist","b":"1F468-200D-1F3A8","j":["artist","man","palette","painter","human"]},"woman-artist":{"a":"Woman Artist","b":"1F469-200D-1F3A8","j":["artist","palette","woman","painter","human"]},"pilot":{"a":"Pilot","b":"1F9D1-200D-2708-FE0F","j":["plane","fly","airplane"]},"man-pilot":{"a":"Man Pilot","b":"1F468-200D-2708-FE0F","j":["man","pilot","plane","aviator","human"]},"woman-pilot":{"a":"Woman Pilot","b":"1F469-200D-2708-FE0F","j":["pilot","plane","woman","aviator","human"]},"astronaut":{"a":"Astronaut","b":"1F9D1-200D-1F680","j":["rocket","outerspace"]},"man-astronaut":{"a":"Man Astronaut","b":"1F468-200D-1F680","j":["astronaut","man","rocket","space","human"]},"woman-astronaut":{"a":"Woman Astronaut","b":"1F469-200D-1F680","j":["astronaut","rocket","woman","space","human"]},"firefighter":{"a":"Firefighter","b":"1F9D1-200D-1F692","j":["firetruck","fire"]},"man-firefighter":{"a":"Man Firefighter","b":"1F468-200D-1F692","j":["firefighter","firetruck","man","fireman","human"]},"woman-firefighter":{"a":"Woman Firefighter","b":"1F469-200D-1F692","j":["firefighter","firetruck","woman","fireman","human"]},"police-officer":{"a":"Police Officer","b":"1F46E","j":["cop","officer","police"]},"man-police-officer":{"a":"Man Police Officer","b":"1F46E-200D-2642-FE0F","j":["cop","man","officer","police","law","legal","enforcement","arrest","911"]},"woman-police-officer":{"a":"Woman Police Officer","b":"1F46E-200D-2640-FE0F","j":["cop","officer","police","woman","law","legal","enforcement","arrest","911","female"]},"detective":{"a":"Detective","b":"1F575","j":["sleuth","spy","human"]},"man-detective":{"a":"Man Detective","b":"1F575-FE0F-200D-2642-FE0F","j":["detective","man","sleuth","spy","crime"]},"woman-detective":{"a":"Woman Detective","b":"1F575-FE0F-200D-2640-FE0F","j":["detective","sleuth","spy","woman","human","female"]},"guard":{"a":"Guard","b":"1F482","j":["protect"]},"man-guard":{"a":"Man Guard","b":"1F482-200D-2642-FE0F","j":["guard","man","uk","gb","british","male","guy","royal"]},"woman-guard":{"a":"Woman Guard","b":"1F482-200D-2640-FE0F","j":["guard","woman","uk","gb","british","female","royal"]},"ninja":{"a":"Ninja","b":"1F977","j":["fighter","hidden","stealth","ninjutsu","skills","japanese"]},"construction-worker":{"a":"Construction Worker","b":"1F477","j":["construction","hat","worker","labor","build"]},"man-construction-worker":{"a":"Man Construction Worker","b":"1F477-200D-2642-FE0F","j":["construction","man","worker","male","human","wip","guy","build","labor"]},"woman-construction-worker":{"a":"Woman Construction Worker","b":"1F477-200D-2640-FE0F","j":["construction","woman","worker","female","human","wip","build","labor"]},"prince":{"a":"Prince","b":"1F934","j":["boy","man","male","crown","royal","king"]},"princess":{"a":"Princess","b":"1F478","j":["fairy tale","fantasy","girl","woman","female","blond","crown","royal","queen"]},"person-wearing-turban":{"a":"Person Wearing Turban","b":"1F473","j":["turban","headdress"]},"man-wearing-turban":{"a":"Man Wearing Turban","b":"1F473-200D-2642-FE0F","j":["man","turban","male","indian","hinduism","arabs"]},"woman-wearing-turban":{"a":"Woman Wearing Turban","b":"1F473-200D-2640-FE0F","j":["turban","woman","female","indian","hinduism","arabs"]},"person-with-skullcap":{"a":"Person with Skullcap","b":"1F472","j":["cap","gua pi mao","hat","person","skullcap","man_with_skullcap","male","boy","chinese"]},"woman-with-headscarf":{"a":"Woman with Headscarf","b":"1F9D5","j":["headscarf","hijab","mantilla","tichel","bandana","head kerchief","female"]},"person-in-tuxedo":{"a":"Person in Tuxedo","b":"1F935","j":["groom","person","tuxedo","man_in_tuxedo","couple","marriage","wedding"]},"man-in-tuxedo":{"a":"Man in Tuxedo","b":"1F935-200D-2642-FE0F","j":["man","tuxedo","formal","fashion"]},"woman-in-tuxedo":{"a":"Woman in Tuxedo","b":"1F935-200D-2640-FE0F","j":["tuxedo","woman","formal","fashion"]},"person-with-veil":{"a":"Person with Veil","b":"1F470","j":["bride","person","veil","wedding","bride_with_veil","couple","marriage","woman"]},"man-with-veil":{"a":"Man with Veil","b":"1F470-200D-2642-FE0F","j":["man","veil","wedding","marriage"]},"woman-with-veil":{"a":"Woman with Veil","b":"1F470-200D-2640-FE0F","j":["veil","woman","wedding","marriage"]},"pregnant-woman":{"a":"Pregnant Woman","b":"1F930","j":["pregnant","woman","baby"]},"breastfeeding":{"a":"Breast-Feeding","b":"1F931","j":["baby","breast","breast-feeding","nursing","breast_feeding"]},"woman-feeding-baby":{"a":"Woman Feeding Baby","b":"1F469-200D-1F37C","j":["baby","feeding","nursing","woman","birth","food"]},"man-feeding-baby":{"a":"Man Feeding Baby","b":"1F468-200D-1F37C","j":["baby","feeding","man","nursing","birth","food"]},"person-feeding-baby":{"a":"Person Feeding Baby","b":"1F9D1-200D-1F37C","j":["baby","feeding","nursing","person","birth","food"]},"baby-angel":{"a":"Baby Angel","b":"1F47C","j":["angel","baby","face","fairy tale","fantasy","heaven","wings","halo"]},"santa-claus":{"a":"Santa Claus","b":"1F385","j":["celebration","Christmas","claus","father","santa","festival","man","male","xmas","father christmas"]},"mrs-claus":{"a":"Mrs. Claus","b":"1F936","j":["celebration","Christmas","claus","mother","Mrs.","woman","female","xmas","mother christmas"]},"mx-claus":{"a":"Mx Claus","b":"1F9D1-200D-1F384","j":["Claus, christmas","christmas"]},"superhero":{"a":"Superhero","b":"1F9B8","j":["good","hero","heroine","superpower","marvel"]},"man-superhero":{"a":"Man Superhero","b":"1F9B8-200D-2642-FE0F","j":["good","hero","man","superpower","male","superpowers"]},"woman-superhero":{"a":"Woman Superhero","b":"1F9B8-200D-2640-FE0F","j":["good","hero","heroine","superpower","woman","female","superpowers"]},"supervillain":{"a":"Supervillain","b":"1F9B9","j":["criminal","evil","superpower","villain","marvel"]},"man-supervillain":{"a":"Man Supervillain","b":"1F9B9-200D-2642-FE0F","j":["criminal","evil","man","superpower","villain","male","bad","hero","superpowers"]},"woman-supervillain":{"a":"Woman Supervillain","b":"1F9B9-200D-2640-FE0F","j":["criminal","evil","superpower","villain","woman","female","bad","heroine","superpowers"]},"mage":{"a":"Mage","b":"1F9D9","j":["sorcerer","sorceress","witch","wizard","magic"]},"man-mage":{"a":"Man Mage","b":"1F9D9-200D-2642-FE0F","j":["sorcerer","wizard","man","male","mage"]},"woman-mage":{"a":"Woman Mage","b":"1F9D9-200D-2640-FE0F","j":["sorceress","witch","woman","female","mage"]},"fairy":{"a":"Fairy","b":"1F9DA","j":["Oberon","Puck","Titania","wings","magical"]},"man-fairy":{"a":"Man Fairy","b":"1F9DA-200D-2642-FE0F","j":["Oberon","Puck","man","male"]},"woman-fairy":{"a":"Woman Fairy","b":"1F9DA-200D-2640-FE0F","j":["Titania","woman","female"]},"vampire":{"a":"Vampire","b":"1F9DB","j":["Dracula","undead","blood","twilight"]},"man-vampire":{"a":"Man Vampire","b":"1F9DB-200D-2642-FE0F","j":["Dracula","undead","man","male","dracula"]},"woman-vampire":{"a":"Woman Vampire","b":"1F9DB-200D-2640-FE0F","j":["undead","woman","female"]},"merperson":{"a":"Merperson","b":"1F9DC","j":["mermaid","merman","merwoman","sea"]},"merman":{"a":"Merman","b":"1F9DC-200D-2642-FE0F","j":["Triton","man","male","triton"]},"mermaid":{"a":"Mermaid","b":"1F9DC-200D-2640-FE0F","j":["merwoman","woman","female","ariel"]},"elf":{"a":"Elf","b":"1F9DD","j":["magical","LOTR style"]},"man-elf":{"a":"Man Elf","b":"1F9DD-200D-2642-FE0F","j":["magical","man","male"]},"woman-elf":{"a":"Woman Elf","b":"1F9DD-200D-2640-FE0F","j":["magical","woman","female"]},"genie":{"a":"Genie","b":"1F9DE","j":["djinn","(non-human color)","magical","wishes"]},"man-genie":{"a":"Man Genie","b":"1F9DE-200D-2642-FE0F","j":["djinn","man","male"]},"woman-genie":{"a":"Woman Genie","b":"1F9DE-200D-2640-FE0F","j":["djinn","woman","female"]},"zombie":{"a":"Zombie","b":"1F9DF","j":["undead","walking dead","(non-human color)","dead"]},"man-zombie":{"a":"Man Zombie","b":"1F9DF-200D-2642-FE0F","j":["undead","walking dead","man","male","dracula"]},"woman-zombie":{"a":"Woman Zombie","b":"1F9DF-200D-2640-FE0F","j":["undead","walking dead","woman","female"]},"person-getting-massage":{"a":"Person Getting Massage","b":"1F486","j":["face","massage","salon","relax"]},"man-getting-massage":{"a":"Man Getting Massage","b":"1F486-200D-2642-FE0F","j":["face","man","massage","male","boy","head"]},"woman-getting-massage":{"a":"Woman Getting Massage","b":"1F486-200D-2640-FE0F","j":["face","massage","woman","female","girl","head"]},"person-getting-haircut":{"a":"Person Getting Haircut","b":"1F487","j":["barber","beauty","haircut","parlor","hairstyle"]},"man-getting-haircut":{"a":"Man Getting Haircut","b":"1F487-200D-2642-FE0F","j":["haircut","man","male","boy"]},"woman-getting-haircut":{"a":"Woman Getting Haircut","b":"1F487-200D-2640-FE0F","j":["haircut","woman","female","girl"]},"person-walking":{"a":"Person Walking","b":"1F6B6","j":["hike","walk","walking","move"]},"man-walking":{"a":"Man Walking","b":"1F6B6-200D-2642-FE0F","j":["hike","man","walk","human","feet","steps"]},"woman-walking":{"a":"Woman Walking","b":"1F6B6-200D-2640-FE0F","j":["hike","walk","woman","human","feet","steps","female"]},"person-standing":{"a":"Person Standing","b":"1F9CD","j":["stand","standing","still"]},"man-standing":{"a":"Man Standing","b":"1F9CD-200D-2642-FE0F","j":["man","standing","still"]},"woman-standing":{"a":"Woman Standing","b":"1F9CD-200D-2640-FE0F","j":["standing","woman","still"]},"person-kneeling":{"a":"Person Kneeling","b":"1F9CE","j":["kneel","kneeling","pray","respectful"]},"man-kneeling":{"a":"Man Kneeling","b":"1F9CE-200D-2642-FE0F","j":["kneeling","man","pray","respectful"]},"woman-kneeling":{"a":"Woman Kneeling","b":"1F9CE-200D-2640-FE0F","j":["kneeling","woman","respectful","pray"]},"person-with-white-cane":{"a":"Person with White Cane","b":"1F9D1-200D-1F9AF","j":["accessibility","blind","person_with_probing_cane"]},"man-with-white-cane":{"a":"Man with White Cane","b":"1F468-200D-1F9AF","j":["accessibility","blind","man","man_with_probing_cane"]},"woman-with-white-cane":{"a":"Woman with White Cane","b":"1F469-200D-1F9AF","j":["accessibility","blind","woman","woman_with_probing_cane"]},"person-in-motorized-wheelchair":{"a":"Person in Motorized Wheelchair","b":"1F9D1-200D-1F9BC","j":["accessibility","wheelchair","disability"]},"man-in-motorized-wheelchair":{"a":"Man in Motorized Wheelchair","b":"1F468-200D-1F9BC","j":["accessibility","man","wheelchair","disability"]},"woman-in-motorized-wheelchair":{"a":"Woman in Motorized Wheelchair","b":"1F469-200D-1F9BC","j":["accessibility","wheelchair","woman","disability"]},"person-in-manual-wheelchair":{"a":"Person in Manual Wheelchair","b":"1F9D1-200D-1F9BD","j":["accessibility","wheelchair","disability"]},"man-in-manual-wheelchair":{"a":"Man in Manual Wheelchair","b":"1F468-200D-1F9BD","j":["accessibility","man","wheelchair","disability"]},"woman-in-manual-wheelchair":{"a":"Woman in Manual Wheelchair","b":"1F469-200D-1F9BD","j":["accessibility","wheelchair","woman","disability"]},"person-running":{"a":"Person Running","b":"1F3C3","j":["marathon","running","move"]},"man-running":{"a":"Man Running","b":"1F3C3-200D-2642-FE0F","j":["man","marathon","racing","running","walking","exercise","race"]},"woman-running":{"a":"Woman Running","b":"1F3C3-200D-2640-FE0F","j":["marathon","racing","running","woman","walking","exercise","race","female"]},"woman-dancing":{"a":"Woman Dancing","b":"1F483","j":["dance","dancing","woman","female","girl","fun"]},"man-dancing":{"a":"Man Dancing","b":"1F57A","j":["dance","dancing","man","male","boy","fun","dancer"]},"person-in-suit-levitating":{"a":"Person in Suit Levitating","b":"1F574","j":["business","person","suit","man_in_suit_levitating","levitate","hover","jump"]},"people-with-bunny-ears":{"a":"People with Bunny Ears","b":"1F46F","j":["bunny ear","dancer","partying","perform","costume"]},"men-with-bunny-ears":{"a":"Men with Bunny Ears","b":"1F46F-200D-2642-FE0F","j":["bunny ear","dancer","men","partying","male","bunny","boys"]},"women-with-bunny-ears":{"a":"Women with Bunny Ears","b":"1F46F-200D-2640-FE0F","j":["bunny ear","dancer","partying","women","female","bunny","girls"]},"person-in-steamy-room":{"a":"Person in Steamy Room","b":"1F9D6","j":["sauna","steam room","hamam","steambath","relax","spa"]},"man-in-steamy-room":{"a":"Man in Steamy Room","b":"1F9D6-200D-2642-FE0F","j":["sauna","steam room","male","man","spa","steamroom"]},"woman-in-steamy-room":{"a":"Woman in Steamy Room","b":"1F9D6-200D-2640-FE0F","j":["sauna","steam room","female","woman","spa","steamroom"]},"person-climbing":{"a":"Person Climbing","b":"1F9D7","j":["climber","sport"]},"man-climbing":{"a":"Man Climbing","b":"1F9D7-200D-2642-FE0F","j":["climber","sports","hobby","man","male","rock"]},"woman-climbing":{"a":"Woman Climbing","b":"1F9D7-200D-2640-FE0F","j":["climber","sports","hobby","woman","female","rock"]},"person-fencing":{"a":"Person Fencing","b":"1F93A","j":["fencer","fencing","sword","sports"]},"horse-racing":{"a":"Horse Racing","b":"1F3C7","j":["horse","jockey","racehorse","racing","animal","betting","competition","gambling","luck"]},"skier":{"a":"Skier","b":"26F7","j":["ski","snow","sports","winter"]},"snowboarder":{"a":"Snowboarder","b":"1F3C2","j":["ski","snow","snowboard","sports","winter"]},"person-golfing":{"a":"Person Golfing","b":"1F3CC","j":["ball","golf","sports","business"]},"man-golfing":{"a":"Man Golfing","b":"1F3CC-FE0F-200D-2642-FE0F","j":["golf","man","sport"]},"woman-golfing":{"a":"Woman Golfing","b":"1F3CC-FE0F-200D-2640-FE0F","j":["golf","woman","sports","business","female"]},"person-surfing":{"a":"Person Surfing","b":"1F3C4","j":["surfing","sport","sea"]},"man-surfing":{"a":"Man Surfing","b":"1F3C4-200D-2642-FE0F","j":["man","surfing","sports","ocean","sea","summer","beach"]},"woman-surfing":{"a":"Woman Surfing","b":"1F3C4-200D-2640-FE0F","j":["surfing","woman","sports","ocean","sea","summer","beach","female"]},"person-rowing-boat":{"a":"Person Rowing Boat","b":"1F6A3","j":["boat","rowboat","sport","move"]},"man-rowing-boat":{"a":"Man Rowing Boat","b":"1F6A3-200D-2642-FE0F","j":["boat","man","rowboat","sports","hobby","water","ship"]},"woman-rowing-boat":{"a":"Woman Rowing Boat","b":"1F6A3-200D-2640-FE0F","j":["boat","rowboat","woman","sports","hobby","water","ship","female"]},"person-swimming":{"a":"Person Swimming","b":"1F3CA","j":["swim","sport","pool"]},"man-swimming":{"a":"Man Swimming","b":"1F3CA-200D-2642-FE0F","j":["man","swim","sports","exercise","human","athlete","water","summer"]},"woman-swimming":{"a":"Woman Swimming","b":"1F3CA-200D-2640-FE0F","j":["swim","woman","sports","exercise","human","athlete","water","summer","female"]},"person-bouncing-ball":{"a":"Person Bouncing Ball","b":"26F9","j":["ball","sports","human"]},"man-bouncing-ball":{"a":"Man Bouncing Ball","b":"26F9-FE0F-200D-2642-FE0F","j":["ball","man","sport"]},"woman-bouncing-ball":{"a":"Woman Bouncing Ball","b":"26F9-FE0F-200D-2640-FE0F","j":["ball","woman","sports","human","female"]},"person-lifting-weights":{"a":"Person Lifting Weights","b":"1F3CB","j":["lifter","weight","sports","training","exercise"]},"man-lifting-weights":{"a":"Man Lifting Weights","b":"1F3CB-FE0F-200D-2642-FE0F","j":["man","weight lifter","sport"]},"woman-lifting-weights":{"a":"Woman Lifting Weights","b":"1F3CB-FE0F-200D-2640-FE0F","j":["weight lifter","woman","sports","training","exercise","female"]},"person-biking":{"a":"Person Biking","b":"1F6B4","j":["bicycle","biking","cyclist","sport","move"]},"man-biking":{"a":"Man Biking","b":"1F6B4-200D-2642-FE0F","j":["bicycle","biking","cyclist","man","sports","bike","exercise","hipster"]},"woman-biking":{"a":"Woman Biking","b":"1F6B4-200D-2640-FE0F","j":["bicycle","biking","cyclist","woman","sports","bike","exercise","hipster","female"]},"person-mountain-biking":{"a":"Person Mountain Biking","b":"1F6B5","j":["bicycle","bicyclist","bike","cyclist","mountain","sport","move"]},"man-mountain-biking":{"a":"Man Mountain Biking","b":"1F6B5-200D-2642-FE0F","j":["bicycle","bike","cyclist","man","mountain","transportation","sports","human","race"]},"woman-mountain-biking":{"a":"Woman Mountain Biking","b":"1F6B5-200D-2640-FE0F","j":["bicycle","bike","biking","cyclist","mountain","woman","transportation","sports","human","race","female"]},"person-cartwheeling":{"a":"Person Cartwheeling","b":"1F938","j":["cartwheel","gymnastics","sport","gymnastic"]},"man-cartwheeling":{"a":"Man Cartwheeling","b":"1F938-200D-2642-FE0F","j":["cartwheel","gymnastics","man"]},"woman-cartwheeling":{"a":"Woman Cartwheeling","b":"1F938-200D-2640-FE0F","j":["cartwheel","gymnastics","woman"]},"people-wrestling":{"a":"People Wrestling","b":"1F93C","j":["wrestle","wrestler","sport"]},"men-wrestling":{"a":"Men Wrestling","b":"1F93C-200D-2642-FE0F","j":["men","wrestle","sports","wrestlers"]},"women-wrestling":{"a":"Women Wrestling","b":"1F93C-200D-2640-FE0F","j":["women","wrestle","sports","wrestlers"]},"person-playing-water-polo":{"a":"Person Playing Water Polo","b":"1F93D","j":["polo","water","sport"]},"man-playing-water-polo":{"a":"Man Playing Water Polo","b":"1F93D-200D-2642-FE0F","j":["man","water polo","sports","pool"]},"woman-playing-water-polo":{"a":"Woman Playing Water Polo","b":"1F93D-200D-2640-FE0F","j":["water polo","woman","sports","pool"]},"person-playing-handball":{"a":"Person Playing Handball","b":"1F93E","j":["ball","handball","sport"]},"man-playing-handball":{"a":"Man Playing Handball","b":"1F93E-200D-2642-FE0F","j":["handball","man","sports"]},"woman-playing-handball":{"a":"Woman Playing Handball","b":"1F93E-200D-2640-FE0F","j":["handball","woman","sports"]},"person-juggling":{"a":"Person Juggling","b":"1F939","j":["balance","juggle","multitask","skill","performance"]},"man-juggling":{"a":"Man Juggling","b":"1F939-200D-2642-FE0F","j":["juggling","man","multitask","juggle","balance","skill"]},"woman-juggling":{"a":"Woman Juggling","b":"1F939-200D-2640-FE0F","j":["juggling","multitask","woman","juggle","balance","skill"]},"person-in-lotus-position":{"a":"Person in Lotus Position","b":"1F9D8","j":["meditation","yoga","serenity","meditate"]},"man-in-lotus-position":{"a":"Man in Lotus Position","b":"1F9D8-200D-2642-FE0F","j":["meditation","yoga","man","male","serenity","zen","mindfulness"]},"woman-in-lotus-position":{"a":"Woman in Lotus Position","b":"1F9D8-200D-2640-FE0F","j":["meditation","yoga","woman","female","serenity","zen","mindfulness"]},"person-taking-bath":{"a":"Person Taking Bath","b":"1F6C0","j":["bath","bathtub","clean","shower","bathroom"]},"person-in-bed":{"a":"Person in Bed","b":"1F6CC","j":["hotel","sleep","bed","rest"]},"people-holding-hands":{"a":"People Holding Hands","b":"1F9D1-200D-1F91D-200D-1F9D1","j":["couple","hand","hold","holding hands","person","friendship"]},"women-holding-hands":{"a":"Women Holding Hands","b":"1F46D","j":["couple","hand","holding hands","women","pair","friendship","love","like","female","people","human"]},"woman-and-man-holding-hands":{"a":"Woman and Man Holding Hands","b":"1F46B","j":["couple","hand","hold","holding hands","man","woman","pair","people","human","love","date","dating","like","affection","valentines","marriage"]},"men-holding-hands":{"a":"Men Holding Hands","b":"1F46C","j":["couple","Gemini","holding hands","man","men","twins","zodiac","pair","love","like","bromance","friendship","people","human"]},"kiss":{"a":"Kiss","b":"1F48F","j":["couple","pair","valentines","love","like","dating","marriage"]},"kiss-woman-man":{"a":"Kiss: Woman, Man","b":"1F469-200D-2764-FE0F-200D-1F48B-200D-1F468","j":["couple","kiss","man","woman","love"]},"kiss-man-man":{"a":"Kiss: Man, Man","b":"1F468-200D-2764-FE0F-200D-1F48B-200D-1F468","j":["couple","kiss","man","pair","valentines","love","like","dating","marriage"]},"kiss-woman-woman":{"a":"Kiss: Woman, Woman","b":"1F469-200D-2764-FE0F-200D-1F48B-200D-1F469","j":["couple","kiss","woman","pair","valentines","love","like","dating","marriage"]},"couple-with-heart":{"a":"Couple with Heart","b":"1F491","j":["couple","love","pair","like","affection","human","dating","valentines","marriage"]},"couple-with-heart-woman-man":{"a":"Couple with Heart: Woman, Man","b":"1F469-200D-2764-FE0F-200D-1F468","j":["couple","couple with heart","love","man","woman"]},"couple-with-heart-man-man":{"a":"Couple with Heart: Man, Man","b":"1F468-200D-2764-FE0F-200D-1F468","j":["couple","couple with heart","love","man","pair","like","affection","human","dating","valentines","marriage"]},"couple-with-heart-woman-woman":{"a":"Couple with Heart: Woman, Woman","b":"1F469-200D-2764-FE0F-200D-1F469","j":["couple","couple with heart","love","woman","pair","like","affection","human","dating","valentines","marriage"]},"family":{"a":"Family","b":"1F46A","j":["home","parents","child","mom","dad","father","mother","people","human"]},"family-man-woman-boy":{"a":"Family: Man, Woman, Boy","b":"1F468-200D-1F469-200D-1F466","j":["boy","family","man","woman","love"]},"family-man-woman-girl":{"a":"Family: Man, Woman, Girl","b":"1F468-200D-1F469-200D-1F467","j":["family","girl","man","woman","home","parents","people","human","child"]},"family-man-woman-girl-boy":{"a":"Family: Man, Woman, Girl, Boy","b":"1F468-200D-1F469-200D-1F467-200D-1F466","j":["boy","family","girl","man","woman","home","parents","people","human","children"]},"family-man-woman-boy-boy":{"a":"Family: Man, Woman, Boy, Boy","b":"1F468-200D-1F469-200D-1F466-200D-1F466","j":["boy","family","man","woman","home","parents","people","human","children"]},"family-man-woman-girl-girl":{"a":"Family: Man, Woman, Girl, Girl","b":"1F468-200D-1F469-200D-1F467-200D-1F467","j":["family","girl","man","woman","home","parents","people","human","children"]},"family-man-man-boy":{"a":"Family: Man, Man, Boy","b":"1F468-200D-1F468-200D-1F466","j":["boy","family","man","home","parents","people","human","children"]},"family-man-man-girl":{"a":"Family: Man, Man, Girl","b":"1F468-200D-1F468-200D-1F467","j":["family","girl","man","home","parents","people","human","children"]},"family-man-man-girl-boy":{"a":"Family: Man, Man, Girl, Boy","b":"1F468-200D-1F468-200D-1F467-200D-1F466","j":["boy","family","girl","man","home","parents","people","human","children"]},"family-man-man-boy-boy":{"a":"Family: Man, Man, Boy, Boy","b":"1F468-200D-1F468-200D-1F466-200D-1F466","j":["boy","family","man","home","parents","people","human","children"]},"family-man-man-girl-girl":{"a":"Family: Man, Man, Girl, Girl","b":"1F468-200D-1F468-200D-1F467-200D-1F467","j":["family","girl","man","home","parents","people","human","children"]},"family-woman-woman-boy":{"a":"Family: Woman, Woman, Boy","b":"1F469-200D-1F469-200D-1F466","j":["boy","family","woman","home","parents","people","human","children"]},"family-woman-woman-girl":{"a":"Family: Woman, Woman, Girl","b":"1F469-200D-1F469-200D-1F467","j":["family","girl","woman","home","parents","people","human","children"]},"family-woman-woman-girl-boy":{"a":"Family: Woman, Woman, Girl, Boy","b":"1F469-200D-1F469-200D-1F467-200D-1F466","j":["boy","family","girl","woman","home","parents","people","human","children"]},"family-woman-woman-boy-boy":{"a":"Family: Woman, Woman, Boy, Boy","b":"1F469-200D-1F469-200D-1F466-200D-1F466","j":["boy","family","woman","home","parents","people","human","children"]},"family-woman-woman-girl-girl":{"a":"Family: Woman, Woman, Girl, Girl","b":"1F469-200D-1F469-200D-1F467-200D-1F467","j":["family","girl","woman","home","parents","people","human","children"]},"family-man-boy":{"a":"Family: Man, Boy","b":"1F468-200D-1F466","j":["boy","family","man","home","parent","people","human","child"]},"family-man-boy-boy":{"a":"Family: Man, Boy, Boy","b":"1F468-200D-1F466-200D-1F466","j":["boy","family","man","home","parent","people","human","children"]},"family-man-girl":{"a":"Family: Man, Girl","b":"1F468-200D-1F467","j":["family","girl","man","home","parent","people","human","child"]},"family-man-girl-boy":{"a":"Family: Man, Girl, Boy","b":"1F468-200D-1F467-200D-1F466","j":["boy","family","girl","man","home","parent","people","human","children"]},"family-man-girl-girl":{"a":"Family: Man, Girl, Girl","b":"1F468-200D-1F467-200D-1F467","j":["family","girl","man","home","parent","people","human","children"]},"family-woman-boy":{"a":"Family: Woman, Boy","b":"1F469-200D-1F466","j":["boy","family","woman","home","parent","people","human","child"]},"family-woman-boy-boy":{"a":"Family: Woman, Boy, Boy","b":"1F469-200D-1F466-200D-1F466","j":["boy","family","woman","home","parent","people","human","children"]},"family-woman-girl":{"a":"Family: Woman, Girl","b":"1F469-200D-1F467","j":["family","girl","woman","home","parent","people","human","child"]},"family-woman-girl-boy":{"a":"Family: Woman, Girl, Boy","b":"1F469-200D-1F467-200D-1F466","j":["boy","family","girl","woman","home","parent","people","human","children"]},"family-woman-girl-girl":{"a":"Family: Woman, Girl, Girl","b":"1F469-200D-1F467-200D-1F467","j":["family","girl","woman","home","parent","people","human","children"]},"speaking-head":{"a":"Speaking Head","b":"1F5E3","j":["face","head","silhouette","speak","speaking","user","person","human","sing","say","talk"]},"bust-in-silhouette":{"a":"Bust in Silhouette","b":"1F464","j":["bust","silhouette","user","person","human"]},"busts-in-silhouette":{"a":"Busts in Silhouette","b":"1F465","j":["bust","silhouette","user","person","human","group","team"]},"people-hugging":{"a":"People Hugging","b":"1FAC2","j":["goodbye","hello","hug","thanks","care"]},"footprints":{"a":"Footprints","b":"1F463","j":["clothing","footprint","print","feet","tracking","walking","beach"]},"red-hair":{"a":"Red Hair","b":"1F9B0","j":["ginger","red hair","redhead"]},"curly-hair":{"a":"Curly Hair","b":"1F9B1","j":["afro","curly","curly hair","ringlets"]},"white-hair":{"a":"White Hair","b":"1F9B3","j":["gray","hair","old","white"]},"bald":{"a":"Bald","b":"1F9B2","j":["bald","chemotherapy","hairless","no hair","shaven"]},"monkey-face":{"a":"Monkey Face","b":"1F435","j":["face","monkey","animal","nature","circus"]},"monkey":{"a":"Monkey","b":"1F412","j":["animal","nature","banana","circus"]},"gorilla":{"a":"Gorilla","b":"1F98D","j":["animal","nature","circus"]},"orangutan":{"a":"Orangutan","b":"1F9A7","j":["ape","animal"]},"dog-face":{"a":"Dog Face","b":"1F436","j":["dog","face","pet","animal","friend","nature","woof","puppy","faithful"]},"dog":{"a":"Dog","b":"1F415","j":["pet","animal","nature","friend","doge","faithful"]},"guide-dog":{"a":"Guide Dog","b":"1F9AE","j":["accessibility","blind","guide","animal"]},"service-dog":{"a":"Service Dog","b":"1F415-200D-1F9BA","j":["accessibility","assistance","dog","service","blind","animal"]},"poodle":{"a":"Poodle","b":"1F429","j":["dog","animal","101","nature","pet"]},"wolf":{"a":"Wolf","b":"1F43A","j":["face","animal","nature","wild"]},"fox":{"a":"Fox","b":"1F98A","j":["face","animal","nature"]},"raccoon":{"a":"Raccoon","b":"1F99D","j":["curious","sly","animal","nature"]},"cat-face":{"a":"Cat Face","b":"1F431","j":["cat","face","pet","animal","meow","nature","kitten"]},"cat":{"a":"Cat","b":"1F408","j":["pet","animal","meow","cats"]},"black-cat":{"a":"Black Cat","b":"1F408-200D-2B1B","j":["black","cat","unlucky","superstition","luck"]},"lion":{"a":"Lion","b":"1F981","j":["face","Leo","zodiac","animal","nature"]},"tiger-face":{"a":"Tiger Face","b":"1F42F","j":["face","tiger","animal","cat","danger","wild","nature","roar"]},"tiger":{"a":"Tiger","b":"1F405","j":["animal","nature","roar"]},"leopard":{"a":"Leopard","b":"1F406","j":["animal","nature"]},"horse-face":{"a":"Horse Face","b":"1F434","j":["face","horse","animal","brown","nature"]},"horse":{"a":"Horse","b":"1F40E","j":["equestrian","racehorse","racing","animal","gamble","luck"]},"unicorn":{"a":"Unicorn","b":"1F984","j":["face","animal","nature","mystical"]},"zebra":{"a":"Zebra","b":"1F993","j":["stripe","animal","nature","stripes","safari"]},"deer":{"a":"Deer","b":"1F98C","j":["animal","nature","horns","venison"]},"bison":{"a":"Bison","b":"1F9AC","j":["buffalo","herd","wisent","ox"]},"cow-face":{"a":"Cow Face","b":"1F42E","j":["cow","face","beef","ox","animal","nature","moo","milk"]},"ox":{"a":"Ox","b":"1F402","j":["bull","Taurus","zodiac","animal","cow","beef"]},"water-buffalo":{"a":"Water Buffalo","b":"1F403","j":["buffalo","water","animal","nature","ox","cow"]},"cow":{"a":"Cow","b":"1F404","j":["beef","ox","animal","nature","moo","milk"]},"pig-face":{"a":"Pig Face","b":"1F437","j":["face","pig","animal","oink","nature"]},"pig":{"a":"Pig","b":"1F416","j":["sow","animal","nature"]},"boar":{"a":"Boar","b":"1F417","j":["pig","animal","nature"]},"pig-nose":{"a":"Pig Nose","b":"1F43D","j":["face","nose","pig","animal","oink"]},"ram":{"a":"Ram","b":"1F40F","j":["Aries","male","sheep","zodiac","animal","nature"]},"ewe":{"a":"Ewe","b":"1F411","j":["female","sheep","animal","nature","wool","shipit"]},"goat":{"a":"Goat","b":"1F410","j":["Capricorn","zodiac","animal","nature"]},"camel":{"a":"Camel","b":"1F42A","j":["dromedary","hump","animal","hot","desert"]},"twohump-camel":{"a":"Two-Hump Camel","b":"1F42B","j":["bactrian","camel","hump","two-hump camel","two_hump_camel","animal","nature","hot","desert"]},"llama":{"a":"Llama","b":"1F999","j":["alpaca","guanaco","vicuΓ±a","wool","animal","nature"]},"giraffe":{"a":"Giraffe","b":"1F992","j":["spots","animal","nature","safari"]},"elephant":{"a":"Elephant","b":"1F418","j":["animal","nature","nose","th","circus"]},"mammoth":{"a":"Mammoth","b":"1F9A3","j":["extinction","large","tusk","woolly","elephant","tusks"]},"rhinoceros":{"a":"Rhinoceros","b":"1F98F","j":["animal","nature","horn"]},"hippopotamus":{"a":"Hippopotamus","b":"1F99B","j":["hippo","animal","nature"]},"mouse-face":{"a":"Mouse Face","b":"1F42D","j":["face","mouse","animal","nature","cheese_wedge","rodent"]},"mouse":{"a":"Mouse","b":"1F401","j":["animal","nature","rodent"]},"rat":{"a":"Rat","b":"1F400","j":["animal","mouse","rodent"]},"hamster":{"a":"Hamster","b":"1F439","j":["face","pet","animal","nature"]},"rabbit-face":{"a":"Rabbit Face","b":"1F430","j":["bunny","face","pet","rabbit","animal","nature","spring","magic"]},"rabbit":{"a":"Rabbit","b":"1F407","j":["bunny","pet","animal","nature","magic","spring"]},"chipmunk":{"a":"Chipmunk","b":"1F43F","j":["squirrel","animal","nature","rodent"]},"beaver":{"a":"Beaver","b":"1F9AB","j":["dam","animal","rodent"]},"hedgehog":{"a":"Hedgehog","b":"1F994","j":["spiny","animal","nature"]},"bat":{"a":"Bat","b":"1F987","j":["vampire","animal","nature","blind"]},"bear":{"a":"Bear","b":"1F43B","j":["face","animal","nature","wild"]},"polar-bear":{"a":"Polar Bear","b":"1F43B-200D-2744-FE0F","j":["arctic","bear","white","animal"]},"koala":{"a":"Koala","b":"1F428","j":["bear","animal","nature"]},"panda":{"a":"Panda","b":"1F43C","j":["face","animal","nature"]},"sloth":{"a":"Sloth","b":"1F9A5","j":["lazy","slow","animal"]},"otter":{"a":"Otter","b":"1F9A6","j":["fishing","playful","animal"]},"skunk":{"a":"Skunk","b":"1F9A8","j":["stink","animal"]},"kangaroo":{"a":"Kangaroo","b":"1F998","j":["Australia","joey","jump","marsupial","animal","nature","australia","hop"]},"badger":{"a":"Badger","b":"1F9A1","j":["honey badger","pester","animal","nature","honey"]},"paw-prints":{"a":"Paw Prints","b":"1F43E","j":["feet","paw","print","animal","tracking","footprints","dog","cat","pet"]},"turkey":{"a":"Turkey","b":"1F983","j":["bird","animal"]},"chicken":{"a":"Chicken","b":"1F414","j":["bird","animal","cluck","nature"]},"rooster":{"a":"Rooster","b":"1F413","j":["bird","animal","nature","chicken"]},"hatching-chick":{"a":"Hatching Chick","b":"1F423","j":["baby","bird","chick","hatching","animal","chicken","egg","born"]},"baby-chick":{"a":"Baby Chick","b":"1F424","j":["baby","bird","chick","animal","chicken"]},"frontfacing-baby-chick":{"a":"Front-Facing Baby Chick","b":"1F425","j":["baby","bird","chick","front-facing baby chick","front_facing_baby_chick","animal","chicken"]},"bird":{"a":"Bird","b":"1F426","j":["animal","nature","fly","tweet","spring"]},"penguin":{"a":"Penguin","b":"1F427","j":["bird","animal","nature"]},"dove":{"a":"Dove","b":"1F54A","j":["bird","fly","peace","animal"]},"eagle":{"a":"Eagle","b":"1F985","j":["bird","animal","nature"]},"duck":{"a":"Duck","b":"1F986","j":["bird","animal","nature","mallard"]},"swan":{"a":"Swan","b":"1F9A2","j":["bird","cygnet","ugly duckling","animal","nature"]},"owl":{"a":"Owl","b":"1F989","j":["bird","wise","animal","nature","hoot"]},"dodo":{"a":"Dodo","b":"1F9A4","j":["extinction","large","Mauritius","animal","bird"]},"feather":{"a":"Feather","b":"1FAB6","j":["bird","flight","light","plumage","fly"]},"flamingo":{"a":"Flamingo","b":"1F9A9","j":["flamboyant","tropical","animal"]},"peacock":{"a":"Peacock","b":"1F99A","j":["bird","ostentatious","peahen","proud","animal","nature"]},"parrot":{"a":"Parrot","b":"1F99C","j":["bird","pirate","talk","animal","nature"]},"frog":{"a":"Frog","b":"1F438","j":["face","animal","nature","croak","toad"]},"crocodile":{"a":"Crocodile","b":"1F40A","j":["animal","nature","reptile","lizard","alligator"]},"turtle":{"a":"Turtle","b":"1F422","j":["terrapin","tortoise","animal","slow","nature"]},"lizard":{"a":"Lizard","b":"1F98E","j":["reptile","animal","nature"]},"snake":{"a":"Snake","b":"1F40D","j":["bearer","Ophiuchus","serpent","zodiac","animal","evil","nature","hiss","python"]},"dragon-face":{"a":"Dragon Face","b":"1F432","j":["dragon","face","fairy tale","animal","myth","nature","chinese","green"]},"dragon":{"a":"Dragon","b":"1F409","j":["fairy tale","animal","myth","nature","chinese","green"]},"sauropod":{"a":"Sauropod","b":"1F995","j":["brachiosaurus","brontosaurus","diplodocus","animal","nature","dinosaur","extinct"]},"trex":{"a":"T-Rex","b":"1F996","j":["Tyrannosaurus Rex","t_rex","animal","nature","dinosaur","tyrannosaurus","extinct"]},"spouting-whale":{"a":"Spouting Whale","b":"1F433","j":["face","spouting","whale","animal","nature","sea","ocean"]},"whale":{"a":"Whale","b":"1F40B","j":["animal","nature","sea","ocean"]},"dolphin":{"a":"Dolphin","b":"1F42C","j":["flipper","animal","nature","fish","sea","ocean","fins","beach"]},"seal":{"a":"Seal","b":"1F9AD","j":["sea lion","animal","creature","sea"]},"fish":{"a":"Fish","b":"1F41F","j":["Pisces","zodiac","animal","food","nature"]},"tropical-fish":{"a":"Tropical Fish","b":"1F420","j":["fish","tropical","animal","swim","ocean","beach","nemo"]},"blowfish":{"a":"Blowfish","b":"1F421","j":["fish","animal","nature","food","sea","ocean"]},"shark":{"a":"Shark","b":"1F988","j":["fish","animal","nature","sea","ocean","jaws","fins","beach"]},"octopus":{"a":"Octopus","b":"1F419","j":["animal","creature","ocean","sea","nature","beach"]},"spiral-shell":{"a":"Spiral Shell","b":"1F41A","j":["shell","spiral","nature","sea","beach"]},"snail":{"a":"Snail","b":"1F40C","j":["slow","animal","shell"]},"butterfly":{"a":"Butterfly","b":"1F98B","j":["insect","pretty","animal","nature","caterpillar"]},"bug":{"a":"Bug","b":"1F41B","j":["insect","animal","nature","worm"]},"ant":{"a":"Ant","b":"1F41C","j":["insect","animal","nature","bug"]},"honeybee":{"a":"Honeybee","b":"1F41D","j":["bee","insect","animal","nature","bug","spring","honey"]},"beetle":{"a":"Beetle","b":"1FAB2","j":["bug","insect"]},"lady-beetle":{"a":"Lady Beetle","b":"1F41E","j":["beetle","insect","ladybird","ladybug","animal","nature"]},"cricket":{"a":"Cricket","b":"1F997","j":["grasshopper","Orthoptera","animal","chirp"]},"cockroach":{"a":"Cockroach","b":"1FAB3","j":["insect","pest","roach","pests"]},"spider":{"a":"Spider","b":"1F577","j":["insect","animal","arachnid"]},"spider-web":{"a":"Spider Web","b":"1F578","j":["spider","web","animal","insect","arachnid","silk"]},"scorpion":{"a":"Scorpion","b":"1F982","j":["scorpio","Scorpio","zodiac","animal","arachnid"]},"mosquito":{"a":"Mosquito","b":"1F99F","j":["disease","fever","malaria","pest","virus","animal","nature","insect"]},"fly":{"a":"Fly","b":"1FAB0","j":["disease","maggot","pest","rotting","insect"]},"worm":{"a":"Worm","b":"1FAB1","j":["annelid","earthworm","parasite","animal"]},"microbe":{"a":"Microbe","b":"1F9A0","j":["amoeba","bacteria","virus","germs"]},"bouquet":{"a":"Bouquet","b":"1F490","j":["flower","flowers","nature","spring"]},"cherry-blossom":{"a":"Cherry Blossom","b":"1F338","j":["blossom","cherry","flower","nature","plant","spring"]},"white-flower":{"a":"White Flower","b":"1F4AE","j":["flower","japanese","spring"]},"rosette":{"a":"Rosette","b":"1F3F5","j":["plant","flower","decoration","military"]},"rose":{"a":"Rose","b":"1F339","j":["flower","flowers","valentines","love","spring"]},"wilted-flower":{"a":"Wilted Flower","b":"1F940","j":["flower","wilted","plant","nature"]},"hibiscus":{"a":"Hibiscus","b":"1F33A","j":["flower","plant","vegetable","flowers","beach"]},"sunflower":{"a":"Sunflower","b":"1F33B","j":["flower","sun","nature","plant","fall"]},"blossom":{"a":"Blossom","b":"1F33C","j":["flower","nature","flowers","yellow"]},"tulip":{"a":"Tulip","b":"1F337","j":["flower","flowers","plant","nature","summer","spring"]},"seedling":{"a":"Seedling","b":"1F331","j":["young","plant","nature","grass","lawn","spring"]},"potted-plant":{"a":"Potted Plant","b":"1FAB4","j":["boring","grow","house","nurturing","plant","useless","greenery"]},"evergreen-tree":{"a":"Evergreen Tree","b":"1F332","j":["tree","plant","nature"]},"deciduous-tree":{"a":"Deciduous Tree","b":"1F333","j":["deciduous","shedding","tree","plant","nature"]},"palm-tree":{"a":"Palm Tree","b":"1F334","j":["palm","tree","plant","vegetable","nature","summer","beach","mojito","tropical"]},"cactus":{"a":"Cactus","b":"1F335","j":["plant","vegetable","nature"]},"sheaf-of-rice":{"a":"Sheaf of Rice","b":"1F33E","j":["ear","grain","rice","nature","plant"]},"herb":{"a":"Herb","b":"1F33F","j":["leaf","vegetable","plant","medicine","weed","grass","lawn"]},"shamrock":{"a":"Shamrock","b":"2618","j":["plant","vegetable","nature","irish","clover"]},"four-leaf-clover":{"a":"Four Leaf Clover","b":"1F340","j":["4","clover","four","four-leaf clover","leaf","vegetable","plant","nature","lucky","irish"]},"maple-leaf":{"a":"Maple Leaf","b":"1F341","j":["falling","leaf","maple","nature","plant","vegetable","ca","fall"]},"fallen-leaf":{"a":"Fallen Leaf","b":"1F342","j":["falling","leaf","nature","plant","vegetable","leaves"]},"leaf-fluttering-in-wind":{"a":"Leaf Fluttering in Wind","b":"1F343","j":["blow","flutter","leaf","wind","nature","plant","tree","vegetable","grass","lawn","spring"]},"grapes":{"a":"Grapes","b":"1F347","j":["fruit","grape","food","wine"]},"melon":{"a":"Melon","b":"1F348","j":["fruit","nature","food"]},"watermelon":{"a":"Watermelon","b":"1F349","j":["fruit","food","picnic","summer"]},"tangerine":{"a":"Tangerine","b":"1F34A","j":["fruit","orange","food","nature"]},"lemon":{"a":"Lemon","b":"1F34B","j":["citrus","fruit","nature"]},"banana":{"a":"Banana","b":"1F34C","j":["fruit","food","monkey"]},"pineapple":{"a":"Pineapple","b":"1F34D","j":["fruit","nature","food"]},"mango":{"a":"Mango","b":"1F96D","j":["fruit","tropical","food"]},"red-apple":{"a":"Red Apple","b":"1F34E","j":["apple","fruit","red","mac","school"]},"green-apple":{"a":"Green Apple","b":"1F34F","j":["apple","fruit","green","nature"]},"pear":{"a":"Pear","b":"1F350","j":["fruit","nature","food"]},"peach":{"a":"Peach","b":"1F351","j":["fruit","nature","food"]},"cherries":{"a":"Cherries","b":"1F352","j":["berries","cherry","fruit","red","food"]},"strawberry":{"a":"Strawberry","b":"1F353","j":["berry","fruit","food","nature"]},"blueberries":{"a":"Blueberries","b":"1FAD0","j":["berry","bilberry","blue","blueberry","fruit"]},"kiwi-fruit":{"a":"Kiwi Fruit","b":"1F95D","j":["food","fruit","kiwi"]},"tomato":{"a":"Tomato","b":"1F345","j":["fruit","vegetable","nature","food"]},"olive":{"a":"Olive","b":"1FAD2","j":["food","fruit"]},"coconut":{"a":"Coconut","b":"1F965","j":["palm","piΓ±a colada","fruit","nature","food"]},"avocado":{"a":"Avocado","b":"1F951","j":["food","fruit"]},"eggplant":{"a":"Eggplant","b":"1F346","j":["aubergine","vegetable","nature","food"]},"potato":{"a":"Potato","b":"1F954","j":["food","vegetable","tuber","vegatable","starch"]},"carrot":{"a":"Carrot","b":"1F955","j":["food","vegetable","orange"]},"ear-of-corn":{"a":"Ear of Corn","b":"1F33D","j":["corn","ear","maize","maze","food","vegetable","plant"]},"hot-pepper":{"a":"Hot Pepper","b":"1F336","j":["hot","pepper","food","spicy","chilli","chili"]},"bell-pepper":{"a":"Bell Pepper","b":"1FAD1","j":["capsicum","pepper","vegetable","fruit","plant"]},"cucumber":{"a":"Cucumber","b":"1F952","j":["food","pickle","vegetable","fruit"]},"leafy-green":{"a":"Leafy Green","b":"1F96C","j":["bok choy","cabbage","kale","lettuce","food","vegetable","plant"]},"broccoli":{"a":"Broccoli","b":"1F966","j":["wild cabbage","fruit","food","vegetable"]},"garlic":{"a":"Garlic","b":"1F9C4","j":["flavoring","food","spice","cook"]},"onion":{"a":"Onion","b":"1F9C5","j":["flavoring","cook","food","spice"]},"mushroom":{"a":"Mushroom","b":"1F344","j":["toadstool","plant","vegetable"]},"peanuts":{"a":"Peanuts","b":"1F95C","j":["food","nut","peanut","vegetable"]},"chestnut":{"a":"Chestnut","b":"1F330","j":["plant","food","squirrel"]},"bread":{"a":"Bread","b":"1F35E","j":["loaf","food","wheat","breakfast","toast"]},"croissant":{"a":"Croissant","b":"1F950","j":["bread","breakfast","food","french","roll"]},"baguette-bread":{"a":"Baguette Bread","b":"1F956","j":["baguette","bread","food","french"]},"flatbread":{"a":"Flatbread","b":"1FAD3","j":["arepa","lavash","naan","pita","flour","food"]},"pretzel":{"a":"Pretzel","b":"1F968","j":["twisted","convoluted","food","bread"]},"bagel":{"a":"Bagel","b":"1F96F","j":["bakery","breakfast","schmear","food","bread"]},"pancakes":{"a":"Pancakes","b":"1F95E","j":["breakfast","crΓͺpe","food","hotcake","pancake","flapjacks","hotcakes"]},"waffle":{"a":"Waffle","b":"1F9C7","j":["breakfast","indecisive","iron","food"]},"cheese-wedge":{"a":"Cheese Wedge","b":"1F9C0","j":["cheese","food","chadder"]},"meat-on-bone":{"a":"Meat on Bone","b":"1F356","j":["bone","meat","good","food","drumstick"]},"poultry-leg":{"a":"Poultry Leg","b":"1F357","j":["bone","chicken","drumstick","leg","poultry","food","meat","bird","turkey"]},"cut-of-meat":{"a":"Cut of Meat","b":"1F969","j":["chop","lambchop","porkchop","steak","food","cow","meat","cut"]},"bacon":{"a":"Bacon","b":"1F953","j":["breakfast","food","meat","pork","pig"]},"hamburger":{"a":"Hamburger","b":"1F354","j":["burger","meat","fast food","beef","cheeseburger","mcdonalds","burger king"]},"french-fries":{"a":"French Fries","b":"1F35F","j":["french","fries","chips","snack","fast food"]},"pizza":{"a":"Pizza","b":"1F355","j":["cheese","slice","food","party"]},"hot-dog":{"a":"Hot Dog","b":"1F32D","j":["frankfurter","hotdog","sausage","food"]},"sandwich":{"a":"Sandwich","b":"1F96A","j":["bread","food","lunch"]},"taco":{"a":"Taco","b":"1F32E","j":["mexican","food"]},"burrito":{"a":"Burrito","b":"1F32F","j":["mexican","wrap","food"]},"tamale":{"a":"Tamale","b":"1FAD4","j":["mexican","wrapped","food","masa"]},"stuffed-flatbread":{"a":"Stuffed Flatbread","b":"1F959","j":["falafel","flatbread","food","gyro","kebab","stuffed"]},"falafel":{"a":"Falafel","b":"1F9C6","j":["chickpea","meatball","food"]},"egg":{"a":"Egg","b":"1F95A","j":["breakfast","food","chicken"]},"cooking":{"a":"Cooking","b":"1F373","j":["breakfast","egg","frying","pan","food","kitchen"]},"shallow-pan-of-food":{"a":"Shallow Pan of Food","b":"1F958","j":["casserole","food","paella","pan","shallow","cooking"]},"pot-of-food":{"a":"Pot of Food","b":"1F372","j":["pot","stew","food","meat","soup"]},"fondue":{"a":"Fondue","b":"1FAD5","j":["cheese","chocolate","melted","pot","Swiss","food"]},"bowl-with-spoon":{"a":"Bowl with Spoon","b":"1F963","j":["breakfast","cereal","congee","oatmeal","porridge","food"]},"green-salad":{"a":"Green Salad","b":"1F957","j":["food","green","salad","healthy","lettuce"]},"popcorn":{"a":"Popcorn","b":"1F37F","j":["food","movie theater","films","snack"]},"butter":{"a":"Butter","b":"1F9C8","j":["dairy","food","cook"]},"salt":{"a":"Salt","b":"1F9C2","j":["condiment","shaker"]},"canned-food":{"a":"Canned Food","b":"1F96B","j":["can","food","soup"]},"bento-box":{"a":"Bento Box","b":"1F371","j":["bento","box","food","japanese"]},"rice-cracker":{"a":"Rice Cracker","b":"1F358","j":["cracker","rice","food","japanese"]},"rice-ball":{"a":"Rice Ball","b":"1F359","j":["ball","Japanese","rice","food","japanese"]},"cooked-rice":{"a":"Cooked Rice","b":"1F35A","j":["cooked","rice","food","china","asian"]},"curry-rice":{"a":"Curry Rice","b":"1F35B","j":["curry","rice","food","spicy","hot","indian"]},"steaming-bowl":{"a":"Steaming Bowl","b":"1F35C","j":["bowl","noodle","ramen","steaming","food","japanese","chopsticks"]},"spaghetti":{"a":"Spaghetti","b":"1F35D","j":["pasta","food","italian","noodle"]},"roasted-sweet-potato":{"a":"Roasted Sweet Potato","b":"1F360","j":["potato","roasted","sweet","food","nature"]},"oden":{"a":"Oden","b":"1F362","j":["kebab","seafood","skewer","stick","food","japanese"]},"sushi":{"a":"Sushi","b":"1F363","j":["food","fish","japanese","rice"]},"fried-shrimp":{"a":"Fried Shrimp","b":"1F364","j":["fried","prawn","shrimp","tempura","food","animal","appetizer","summer"]},"fish-cake-with-swirl":{"a":"Fish Cake with Swirl","b":"1F365","j":["cake","fish","pastry","swirl","food","japan","sea","beach","narutomaki","pink","kamaboko","surimi","ramen"]},"moon-cake":{"a":"Moon Cake","b":"1F96E","j":["autumn","festival","yuΓ¨bǐng","food"]},"dango":{"a":"Dango","b":"1F361","j":["dessert","Japanese","skewer","stick","sweet","food","japanese","barbecue","meat"]},"dumpling":{"a":"Dumpling","b":"1F95F","j":["empanada","gyōza","jiaozi","pierogi","potsticker","food"]},"fortune-cookie":{"a":"Fortune Cookie","b":"1F960","j":["prophecy","food"]},"takeout-box":{"a":"Takeout Box","b":"1F961","j":["oyster pail","food","leftovers"]},"crab":{"a":"Crab","b":"1F980","j":["Cancer","zodiac","animal","crustacean"]},"lobster":{"a":"Lobster","b":"1F99E","j":["bisque","claws","seafood","animal","nature"]},"shrimp":{"a":"Shrimp","b":"1F990","j":["food","shellfish","small","animal","ocean","nature","seafood"]},"squid":{"a":"Squid","b":"1F991","j":["food","molusc","animal","nature","ocean","sea"]},"oyster":{"a":"Oyster","b":"1F9AA","j":["diving","pearl","food"]},"soft-ice-cream":{"a":"Soft Ice Cream","b":"1F366","j":["cream","dessert","ice","icecream","soft","sweet","food","hot","summer"]},"shaved-ice":{"a":"Shaved Ice","b":"1F367","j":["dessert","ice","shaved","sweet","hot","summer"]},"ice-cream":{"a":"Ice Cream","b":"1F368","j":["cream","dessert","ice","sweet","food","hot"]},"doughnut":{"a":"Doughnut","b":"1F369","j":["breakfast","dessert","donut","sweet","food","snack"]},"cookie":{"a":"Cookie","b":"1F36A","j":["dessert","sweet","food","snack","oreo","chocolate"]},"birthday-cake":{"a":"Birthday Cake","b":"1F382","j":["birthday","cake","celebration","dessert","pastry","sweet","food"]},"shortcake":{"a":"Shortcake","b":"1F370","j":["cake","dessert","pastry","slice","sweet","food"]},"cupcake":{"a":"Cupcake","b":"1F9C1","j":["bakery","sweet","food","dessert"]},"pie":{"a":"Pie","b":"1F967","j":["filling","pastry","fruit","meat","food","dessert"]},"chocolate-bar":{"a":"Chocolate Bar","b":"1F36B","j":["bar","chocolate","dessert","sweet","food","snack"]},"candy":{"a":"Candy","b":"1F36C","j":["dessert","sweet","snack","lolly"]},"lollipop":{"a":"Lollipop","b":"1F36D","j":["candy","dessert","sweet","food","snack"]},"custard":{"a":"Custard","b":"1F36E","j":["dessert","pudding","sweet","food"]},"honey-pot":{"a":"Honey Pot","b":"1F36F","j":["honey","honeypot","pot","sweet","bees","kitchen"]},"baby-bottle":{"a":"Baby Bottle","b":"1F37C","j":["baby","bottle","drink","milk","food","container"]},"glass-of-milk":{"a":"Glass of Milk","b":"1F95B","j":["drink","glass","milk","beverage","cow"]},"hot-beverage":{"a":"Hot Beverage","b":"2615","j":["beverage","coffee","drink","hot","steaming","tea","caffeine","latte","espresso"]},"teapot":{"a":"Teapot","b":"1FAD6","j":["drink","pot","tea","hot"]},"teacup-without-handle":{"a":"Teacup Without Handle","b":"1F375","j":["beverage","cup","drink","tea","teacup","bowl","breakfast","green","british"]},"sake":{"a":"Sake","b":"1F376","j":["bar","beverage","bottle","cup","drink","wine","drunk","japanese","alcohol","booze"]},"bottle-with-popping-cork":{"a":"Bottle with Popping Cork","b":"1F37E","j":["bar","bottle","cork","drink","popping","wine","celebration"]},"wine-glass":{"a":"Wine Glass","b":"1F377","j":["bar","beverage","drink","glass","wine","drunk","alcohol","booze"]},"cocktail-glass":{"a":"Cocktail Glass","b":"1F378","j":["bar","cocktail","drink","glass","drunk","alcohol","beverage","booze","mojito"]},"tropical-drink":{"a":"Tropical Drink","b":"1F379","j":["bar","drink","tropical","beverage","cocktail","summer","beach","alcohol","booze","mojito"]},"beer-mug":{"a":"Beer Mug","b":"1F37A","j":["bar","beer","drink","mug","relax","beverage","drunk","party","pub","summer","alcohol","booze"]},"clinking-beer-mugs":{"a":"Clinking Beer Mugs","b":"1F37B","j":["bar","beer","clink","drink","mug","relax","beverage","drunk","party","pub","summer","alcohol","booze"]},"clinking-glasses":{"a":"Clinking Glasses","b":"1F942","j":["celebrate","clink","drink","glass","beverage","party","alcohol","cheers","wine","champagne","toast"]},"tumbler-glass":{"a":"Tumbler Glass","b":"1F943","j":["glass","liquor","shot","tumbler","whisky","drink","beverage","drunk","alcohol","booze","bourbon","scotch"]},"cup-with-straw":{"a":"Cup with Straw","b":"1F964","j":["juice","soda","malt","soft drink","water","drink"]},"bubble-tea":{"a":"Bubble Tea","b":"1F9CB","j":["bubble","milk","pearl","tea","taiwan","boba","milk tea","straw"]},"beverage-box":{"a":"Beverage Box","b":"1F9C3","j":["beverage","box","juice","straw","sweet","drink"]},"mate":{"a":"Mate","b":"1F9C9","j":["drink","tea","beverage"]},"ice":{"a":"Ice","b":"1F9CA","j":["cold","ice cube","iceberg","water"]},"chopsticks":{"a":"Chopsticks","b":"1F962","j":["hashi","jeotgarak","kuaizi","food"]},"fork-and-knife-with-plate":{"a":"Fork and Knife with Plate","b":"1F37D","j":["cooking","fork","knife","plate","food","eat","meal","lunch","dinner","restaurant"]},"fork-and-knife":{"a":"Fork and Knife","b":"1F374","j":["cooking","cutlery","fork","knife","kitchen"]},"spoon":{"a":"Spoon","b":"1F944","j":["tableware","cutlery","kitchen"]},"kitchen-knife":{"a":"Kitchen Knife","b":"1F52A","j":["cooking","hocho","knife","tool","weapon","blade","cutlery","kitchen"]},"amphora":{"a":"Amphora","b":"1F3FA","j":["Aquarius","cooking","drink","jug","zodiac","vase","jar"]},"globe-showing-europeafrica":{"a":"Globe Showing Europe-Africa","b":"1F30D","j":["Africa","earth","Europe","globe","globe showing Europe-Africa","world","globe_showing_europe_africa","international"]},"globe-showing-americas":{"a":"Globe Showing Americas","b":"1F30E","j":["Americas","earth","globe","globe showing Americas","world","USA","international"]},"globe-showing-asiaaustralia":{"a":"Globe Showing Asia-Australia","b":"1F30F","j":["Asia","Australia","earth","globe","globe showing Asia-Australia","world","globe_showing_asia_australia","east","international"]},"globe-with-meridians":{"a":"Globe with Meridians","b":"1F310","j":["earth","globe","meridians","world","international","internet","interweb","i18n"]},"world-map":{"a":"World Map","b":"1F5FA","j":["map","world","location","direction"]},"map-of-japan":{"a":"Map of Japan","b":"1F5FE","j":["Japan","map","map of Japan","nation","country","japanese","asia"]},"compass":{"a":"Compass","b":"1F9ED","j":["magnetic","navigation","orienteering"]},"snowcapped-mountain":{"a":"Snow-Capped Mountain","b":"1F3D4","j":["cold","mountain","snow","snow-capped mountain","snow_capped_mountain","photo","nature","environment","winter"]},"mountain":{"a":"Mountain","b":"26F0","j":["photo","nature","environment"]},"volcano":{"a":"Volcano","b":"1F30B","j":["eruption","mountain","photo","nature","disaster"]},"mount-fuji":{"a":"Mount Fuji","b":"1F5FB","j":["fuji","mountain","photo","nature","japanese"]},"camping":{"a":"Camping","b":"1F3D5","j":["photo","outdoors","tent"]},"beach-with-umbrella":{"a":"Beach with Umbrella","b":"1F3D6","j":["beach","umbrella","weather","summer","sunny","sand","mojito"]},"desert":{"a":"Desert","b":"1F3DC","j":["photo","warm","saharah"]},"desert-island":{"a":"Desert Island","b":"1F3DD","j":["desert","island","photo","tropical","mojito"]},"national-park":{"a":"National Park","b":"1F3DE","j":["park","photo","environment","nature"]},"stadium":{"a":"Stadium","b":"1F3DF","j":["photo","place","sports","concert","venue"]},"classical-building":{"a":"Classical Building","b":"1F3DB","j":["classical","art","culture","history"]},"building-construction":{"a":"Building Construction","b":"1F3D7","j":["construction","wip","working","progress"]},"brick":{"a":"Brick","b":"1F9F1","j":["bricks","clay","mortar","wall"]},"rock":{"a":"Rock","b":"1FAA8","j":["boulder","heavy","solid","stone"]},"wood":{"a":"Wood","b":"1FAB5","j":["log","lumber","timber","nature","trunk"]},"hut":{"a":"Hut","b":"1F6D6","j":["house","roundhouse","yurt","structure"]},"houses":{"a":"Houses","b":"1F3D8","j":["buildings","photo"]},"derelict-house":{"a":"Derelict House","b":"1F3DA","j":["derelict","house","abandon","evict","broken","building"]},"house":{"a":"House","b":"1F3E0","j":["home","building"]},"house-with-garden":{"a":"House with Garden","b":"1F3E1","j":["garden","home","house","plant","nature"]},"office-building":{"a":"Office Building","b":"1F3E2","j":["building","bureau","work"]},"japanese-post-office":{"a":"Japanese Post Office","b":"1F3E3","j":["Japanese","Japanese post office","post","building","envelope","communication"]},"post-office":{"a":"Post Office","b":"1F3E4","j":["European","post","building","email"]},"hospital":{"a":"Hospital","b":"1F3E5","j":["doctor","medicine","building","health","surgery"]},"bank":{"a":"Bank","b":"1F3E6","j":["building","money","sales","cash","business","enterprise"]},"hotel":{"a":"Hotel","b":"1F3E8","j":["building","accomodation","checkin"]},"love-hotel":{"a":"Love Hotel","b":"1F3E9","j":["hotel","love","like","affection","dating"]},"convenience-store":{"a":"Convenience Store","b":"1F3EA","j":["convenience","store","building","shopping","groceries"]},"school":{"a":"School","b":"1F3EB","j":["building","student","education","learn","teach"]},"department-store":{"a":"Department Store","b":"1F3EC","j":["department","store","building","shopping","mall"]},"factory":{"a":"Factory","b":"1F3ED","j":["building","industry","pollution","smoke"]},"japanese-castle":{"a":"Japanese Castle","b":"1F3EF","j":["castle","Japanese","photo","building"]},"castle":{"a":"Castle","b":"1F3F0","j":["European","building","royalty","history"]},"wedding":{"a":"Wedding","b":"1F492","j":["chapel","romance","love","like","affection","couple","marriage","bride","groom"]},"tokyo-tower":{"a":"Tokyo Tower","b":"1F5FC","j":["Tokyo","tower","photo","japanese"]},"statue-of-liberty":{"a":"Statue of Liberty","b":"1F5FD","j":["liberty","statue","american","newyork"]},"church":{"a":"Church","b":"26EA","j":["Christian","cross","religion","building","christ"]},"mosque":{"a":"Mosque","b":"1F54C","j":["islam","Muslim","religion","worship","minaret"]},"hindu-temple":{"a":"Hindu Temple","b":"1F6D5","j":["hindu","temple","religion"]},"synagogue":{"a":"Synagogue","b":"1F54D","j":["Jew","Jewish","religion","temple","judaism","worship","jewish"]},"shinto-shrine":{"a":"Shinto Shrine","b":"26E9","j":["religion","shinto","shrine","temple","japan","kyoto"]},"kaaba":{"a":"Kaaba","b":"1F54B","j":["islam","Muslim","religion","mecca","mosque"]},"fountain":{"a":"Fountain","b":"26F2","j":["photo","summer","water","fresh"]},"tent":{"a":"Tent","b":"26FA","j":["camping","photo","outdoors"]},"foggy":{"a":"Foggy","b":"1F301","j":["fog","photo","mountain"]},"night-with-stars":{"a":"Night with Stars","b":"1F303","j":["night","star","evening","city","downtown"]},"cityscape":{"a":"Cityscape","b":"1F3D9","j":["city","photo","night life","urban"]},"sunrise-over-mountains":{"a":"Sunrise over Mountains","b":"1F304","j":["morning","mountain","sun","sunrise","view","vacation","photo"]},"sunrise":{"a":"Sunrise","b":"1F305","j":["morning","sun","view","vacation","photo"]},"cityscape-at-dusk":{"a":"Cityscape at Dusk","b":"1F306","j":["city","dusk","evening","landscape","sunset","photo","sky","buildings"]},"sunset":{"a":"Sunset","b":"1F307","j":["dusk","sun","photo","good morning","dawn"]},"bridge-at-night":{"a":"Bridge at Night","b":"1F309","j":["bridge","night","photo","sanfrancisco"]},"hot-springs":{"a":"Hot Springs","b":"2668","j":["hot","hotsprings","springs","steaming","bath","warm","relax"]},"carousel-horse":{"a":"Carousel Horse","b":"1F3A0","j":["carousel","horse","photo","carnival"]},"ferris-wheel":{"a":"Ferris Wheel","b":"1F3A1","j":["amusement park","ferris","wheel","photo","carnival","londoneye"]},"roller-coaster":{"a":"Roller Coaster","b":"1F3A2","j":["amusement park","coaster","roller","carnival","playground","photo","fun"]},"barber-pole":{"a":"Barber Pole","b":"1F488","j":["barber","haircut","pole","hair","salon","style"]},"circus-tent":{"a":"Circus Tent","b":"1F3AA","j":["circus","tent","festival","carnival","party"]},"locomotive":{"a":"Locomotive","b":"1F682","j":["engine","railway","steam","train","transportation","vehicle"]},"railway-car":{"a":"Railway Car","b":"1F683","j":["car","electric","railway","train","tram","trolleybus","transportation","vehicle"]},"highspeed-train":{"a":"High-Speed Train","b":"1F684","j":["high-speed train","railway","shinkansen","speed","train","high_speed_train","transportation","vehicle"]},"bullet-train":{"a":"Bullet Train","b":"1F685","j":["bullet","railway","shinkansen","speed","train","transportation","vehicle","fast","public","travel"]},"train":{"a":"Train","b":"1F686","j":["railway","transportation","vehicle"]},"metro":{"a":"Metro","b":"1F687","j":["subway","transportation","blue-square","mrt","underground","tube"]},"light-rail":{"a":"Light Rail","b":"1F688","j":["railway","transportation","vehicle"]},"station":{"a":"Station","b":"1F689","j":["railway","train","transportation","vehicle","public"]},"tram":{"a":"Tram","b":"1F68A","j":["trolleybus","transportation","vehicle"]},"monorail":{"a":"Monorail","b":"1F69D","j":["vehicle","transportation"]},"mountain-railway":{"a":"Mountain Railway","b":"1F69E","j":["car","mountain","railway","transportation","vehicle"]},"tram-car":{"a":"Tram Car","b":"1F68B","j":["car","tram","trolleybus","transportation","vehicle","carriage","public","travel"]},"bus":{"a":"Bus","b":"1F68C","j":["vehicle","car","transportation"]},"oncoming-bus":{"a":"Oncoming Bus","b":"1F68D","j":["bus","oncoming","vehicle","transportation"]},"trolleybus":{"a":"Trolleybus","b":"1F68E","j":["bus","tram","trolley","bart","transportation","vehicle"]},"minibus":{"a":"Minibus","b":"1F690","j":["bus","vehicle","car","transportation"]},"ambulance":{"a":"Ambulance","b":"1F691","j":["vehicle","health","911","hospital"]},"fire-engine":{"a":"Fire Engine","b":"1F692","j":["engine","fire","truck","transportation","cars","vehicle"]},"police-car":{"a":"Police Car","b":"1F693","j":["car","patrol","police","vehicle","cars","transportation","law","legal","enforcement"]},"oncoming-police-car":{"a":"Oncoming Police Car","b":"1F694","j":["car","oncoming","police","vehicle","law","legal","enforcement","911"]},"taxi":{"a":"Taxi","b":"1F695","j":["vehicle","uber","cars","transportation"]},"oncoming-taxi":{"a":"Oncoming Taxi","b":"1F696","j":["oncoming","taxi","vehicle","cars","uber"]},"automobile":{"a":"Automobile","b":"1F697","j":["car","red","transportation","vehicle"]},"oncoming-automobile":{"a":"Oncoming Automobile","b":"1F698","j":["automobile","car","oncoming","vehicle","transportation"]},"sport-utility-vehicle":{"a":"Sport Utility Vehicle","b":"1F699","j":["recreational","sport utility","transportation","vehicle"]},"pickup-truck":{"a":"Pickup Truck","b":"1F6FB","j":["pick-up","pickup","truck","car","transportation"]},"delivery-truck":{"a":"Delivery Truck","b":"1F69A","j":["delivery","truck","cars","transportation"]},"articulated-lorry":{"a":"Articulated Lorry","b":"1F69B","j":["lorry","semi","truck","vehicle","cars","transportation","express"]},"tractor":{"a":"Tractor","b":"1F69C","j":["vehicle","car","farming","agriculture"]},"racing-car":{"a":"Racing Car","b":"1F3CE","j":["car","racing","sports","race","fast","formula","f1"]},"motorcycle":{"a":"Motorcycle","b":"1F3CD","j":["racing","race","sports","fast"]},"motor-scooter":{"a":"Motor Scooter","b":"1F6F5","j":["motor","scooter","vehicle","vespa","sasha"]},"manual-wheelchair":{"a":"Manual Wheelchair","b":"1F9BD","j":["accessibility"]},"motorized-wheelchair":{"a":"Motorized Wheelchair","b":"1F9BC","j":["accessibility"]},"auto-rickshaw":{"a":"Auto Rickshaw","b":"1F6FA","j":["tuk tuk","move","transportation"]},"bicycle":{"a":"Bicycle","b":"1F6B2","j":["bike","sports","exercise","hipster"]},"kick-scooter":{"a":"Kick Scooter","b":"1F6F4","j":["kick","scooter","vehicle","razor"]},"skateboard":{"a":"Skateboard","b":"1F6F9","j":["board"]},"roller-skate":{"a":"Roller Skate","b":"1F6FC","j":["roller","skate","footwear","sports"]},"bus-stop":{"a":"Bus Stop","b":"1F68F","j":["bus","busstop","stop","transportation","wait"]},"motorway":{"a":"Motorway","b":"1F6E3","j":["highway","road","cupertino","interstate"]},"railway-track":{"a":"Railway Track","b":"1F6E4","j":["railway","train","transportation"]},"oil-drum":{"a":"Oil Drum","b":"1F6E2","j":["drum","oil","barrell"]},"fuel-pump":{"a":"Fuel Pump","b":"26FD","j":["diesel","fuel","fuelpump","gas","pump","station","gas station","petroleum"]},"police-car-light":{"a":"Police Car Light","b":"1F6A8","j":["beacon","car","light","police","revolving","ambulance","911","emergency","alert","error","pinged","law","legal"]},"horizontal-traffic-light":{"a":"Horizontal Traffic Light","b":"1F6A5","j":["light","signal","traffic","transportation"]},"vertical-traffic-light":{"a":"Vertical Traffic Light","b":"1F6A6","j":["light","signal","traffic","transportation","driving"]},"stop-sign":{"a":"Stop Sign","b":"1F6D1","j":["octagonal","sign","stop"]},"construction":{"a":"Construction","b":"1F6A7","j":["barrier","wip","progress","caution","warning"]},"anchor":{"a":"Anchor","b":"2693","j":["ship","tool","ferry","sea","boat"]},"sailboat":{"a":"Sailboat","b":"26F5","j":["boat","resort","sea","yacht","ship","summer","transportation","water","sailing"]},"canoe":{"a":"Canoe","b":"1F6F6","j":["boat","paddle","water","ship"]},"speedboat":{"a":"Speedboat","b":"1F6A4","j":["boat","ship","transportation","vehicle","summer"]},"passenger-ship":{"a":"Passenger Ship","b":"1F6F3","j":["passenger","ship","yacht","cruise","ferry"]},"ferry":{"a":"Ferry","b":"26F4","j":["boat","passenger","ship","yacht"]},"motor-boat":{"a":"Motor Boat","b":"1F6E5","j":["boat","motorboat","ship"]},"ship":{"a":"Ship","b":"1F6A2","j":["boat","passenger","transportation","titanic","deploy"]},"airplane":{"a":"Airplane","b":"2708","j":["aeroplane","vehicle","transportation","flight","fly"]},"small-airplane":{"a":"Small Airplane","b":"1F6E9","j":["aeroplane","airplane","flight","transportation","fly","vehicle"]},"airplane-departure":{"a":"Airplane Departure","b":"1F6EB","j":["aeroplane","airplane","check-in","departure","departures","airport","flight","landing"]},"airplane-arrival":{"a":"Airplane Arrival","b":"1F6EC","j":["aeroplane","airplane","arrivals","arriving","landing","airport","flight","boarding"]},"parachute":{"a":"Parachute","b":"1FA82","j":["hang-glide","parasail","skydive","fly","glide"]},"seat":{"a":"Seat","b":"1F4BA","j":["chair","sit","airplane","transport","bus","flight","fly"]},"helicopter":{"a":"Helicopter","b":"1F681","j":["vehicle","transportation","fly"]},"suspension-railway":{"a":"Suspension Railway","b":"1F69F","j":["railway","suspension","vehicle","transportation"]},"mountain-cableway":{"a":"Mountain Cableway","b":"1F6A0","j":["cable","gondola","mountain","transportation","vehicle","ski"]},"aerial-tramway":{"a":"Aerial Tramway","b":"1F6A1","j":["aerial","cable","car","gondola","tramway","transportation","vehicle","ski"]},"satellite":{"a":"Satellite","b":"1F6F0","j":["space","communication","gps","orbit","spaceflight","NASA","ISS"]},"rocket":{"a":"Rocket","b":"1F680","j":["space","launch","ship","staffmode","NASA","outer space","outer_space","fly"]},"flying-saucer":{"a":"Flying Saucer","b":"1F6F8","j":["UFO","transportation","vehicle","ufo"]},"bellhop-bell":{"a":"Bellhop Bell","b":"1F6CE","j":["bell","bellhop","hotel","service"]},"luggage":{"a":"Luggage","b":"1F9F3","j":["packing","travel"]},"hourglass-done":{"a":"Hourglass Done","b":"231B","j":["sand","timer","time","clock","oldschool","limit","exam","quiz","test"]},"hourglass-not-done":{"a":"Hourglass Not Done","b":"23F3","j":["hourglass","sand","timer","oldschool","time","countdown"]},"watch":{"a":"Watch","b":"231A","j":["clock","time","accessories"]},"alarm-clock":{"a":"Alarm Clock","b":"23F0","j":["alarm","clock","time","wake"]},"stopwatch":{"a":"Stopwatch","b":"23F1","j":["clock","time","deadline"]},"timer-clock":{"a":"Timer Clock","b":"23F2","j":["clock","timer","alarm"]},"mantelpiece-clock":{"a":"Mantelpiece Clock","b":"1F570","j":["clock","time"]},"twelve-oclock":{"a":"Twelve O’Clock","b":"1F55B","j":["00","12","12:00","clock","o’clock","twelve","twelve_o_clock","time","noon","midnight","midday","late","early","schedule"]},"twelvethirty":{"a":"Twelve-Thirty","b":"1F567","j":["12","12:30","clock","thirty","twelve","twelve-thirty","twelve_thirty","time","late","early","schedule"]},"one-oclock":{"a":"One O’Clock","b":"1F550","j":["00","1","1:00","clock","o’clock","one","one_o_clock","time","late","early","schedule"]},"onethirty":{"a":"One-Thirty","b":"1F55C","j":["1","1:30","clock","one","one-thirty","thirty","one_thirty","time","late","early","schedule"]},"two-oclock":{"a":"Two O’Clock","b":"1F551","j":["00","2","2:00","clock","o’clock","two","two_o_clock","time","late","early","schedule"]},"twothirty":{"a":"Two-Thirty","b":"1F55D","j":["2","2:30","clock","thirty","two","two-thirty","two_thirty","time","late","early","schedule"]},"three-oclock":{"a":"Three O’Clock","b":"1F552","j":["00","3","3:00","clock","o’clock","three","three_o_clock","time","late","early","schedule"]},"threethirty":{"a":"Three-Thirty","b":"1F55E","j":["3","3:30","clock","thirty","three","three-thirty","three_thirty","time","late","early","schedule"]},"four-oclock":{"a":"Four O’Clock","b":"1F553","j":["00","4","4:00","clock","four","o’clock","four_o_clock","time","late","early","schedule"]},"fourthirty":{"a":"Four-Thirty","b":"1F55F","j":["4","4:30","clock","four","four-thirty","thirty","four_thirty","time","late","early","schedule"]},"five-oclock":{"a":"Five O’Clock","b":"1F554","j":["00","5","5:00","clock","five","o’clock","five_o_clock","time","late","early","schedule"]},"fivethirty":{"a":"Five-Thirty","b":"1F560","j":["5","5:30","clock","five","five-thirty","thirty","five_thirty","time","late","early","schedule"]},"six-oclock":{"a":"Six O’Clock","b":"1F555","j":["00","6","6:00","clock","o’clock","six","six_o_clock","time","late","early","schedule","dawn","dusk"]},"sixthirty":{"a":"Six-Thirty","b":"1F561","j":["6","6:30","clock","six","six-thirty","thirty","six_thirty","time","late","early","schedule"]},"seven-oclock":{"a":"Seven O’Clock","b":"1F556","j":["00","7","7:00","clock","o’clock","seven","seven_o_clock","time","late","early","schedule"]},"seventhirty":{"a":"Seven-Thirty","b":"1F562","j":["7","7:30","clock","seven","seven-thirty","thirty","seven_thirty","time","late","early","schedule"]},"eight-oclock":{"a":"Eight O’Clock","b":"1F557","j":["00","8","8:00","clock","eight","o’clock","eight_o_clock","time","late","early","schedule"]},"eightthirty":{"a":"Eight-Thirty","b":"1F563","j":["8","8:30","clock","eight","eight-thirty","thirty","eight_thirty","time","late","early","schedule"]},"nine-oclock":{"a":"Nine O’Clock","b":"1F558","j":["00","9","9:00","clock","nine","o’clock","nine_o_clock","time","late","early","schedule"]},"ninethirty":{"a":"Nine-Thirty","b":"1F564","j":["9","9:30","clock","nine","nine-thirty","thirty","nine_thirty","time","late","early","schedule"]},"ten-oclock":{"a":"Ten O’Clock","b":"1F559","j":["00","10","10:00","clock","o’clock","ten","ten_o_clock","time","late","early","schedule"]},"tenthirty":{"a":"Ten-Thirty","b":"1F565","j":["10","10:30","clock","ten","ten-thirty","thirty","ten_thirty","time","late","early","schedule"]},"eleven-oclock":{"a":"Eleven O’Clock","b":"1F55A","j":["00","11","11:00","clock","eleven","o’clock","eleven_o_clock","time","late","early","schedule"]},"eleventhirty":{"a":"Eleven-Thirty","b":"1F566","j":["11","11:30","clock","eleven","eleven-thirty","thirty","eleven_thirty","time","late","early","schedule"]},"new-moon":{"a":"New Moon","b":"1F311","j":["dark","moon","nature","twilight","planet","space","night","evening","sleep"]},"waxing-crescent-moon":{"a":"Waxing Crescent Moon","b":"1F312","j":["crescent","moon","waxing","nature","twilight","planet","space","night","evening","sleep"]},"first-quarter-moon":{"a":"First Quarter Moon","b":"1F313","j":["moon","quarter","nature","twilight","planet","space","night","evening","sleep"]},"waxing-gibbous-moon":{"a":"Waxing Gibbous Moon","b":"1F314","j":["gibbous","moon","waxing","nature","night","sky","gray","twilight","planet","space","evening","sleep"]},"full-moon":{"a":"Full Moon","b":"1F315","j":["full","moon","nature","yellow","twilight","planet","space","night","evening","sleep"]},"waning-gibbous-moon":{"a":"Waning Gibbous Moon","b":"1F316","j":["gibbous","moon","waning","nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"]},"last-quarter-moon":{"a":"Last Quarter Moon","b":"1F317","j":["moon","quarter","nature","twilight","planet","space","night","evening","sleep"]},"waning-crescent-moon":{"a":"Waning Crescent Moon","b":"1F318","j":["crescent","moon","waning","nature","twilight","planet","space","night","evening","sleep"]},"crescent-moon":{"a":"Crescent Moon","b":"1F319","j":["crescent","moon","night","sleep","sky","evening","magic"]},"new-moon-face":{"a":"New Moon Face","b":"1F31A","j":["face","moon","nature","twilight","planet","space","night","evening","sleep"]},"first-quarter-moon-face":{"a":"First Quarter Moon Face","b":"1F31B","j":["face","moon","quarter","nature","twilight","planet","space","night","evening","sleep"]},"last-quarter-moon-face":{"a":"Last Quarter Moon Face","b":"1F31C","j":["face","moon","quarter","nature","twilight","planet","space","night","evening","sleep"]},"thermometer":{"a":"Thermometer","b":"1F321","j":["weather","temperature","hot","cold"]},"sun":{"a":"Sun","b":"2600","j":["bright","rays","sunny","weather","nature","brightness","summer","beach","spring"]},"full-moon-face":{"a":"Full Moon Face","b":"1F31D","j":["bright","face","full","moon","nature","twilight","planet","space","night","evening","sleep"]},"sun-with-face":{"a":"Sun with Face","b":"1F31E","j":["bright","face","sun","nature","morning","sky"]},"ringed-planet":{"a":"Ringed Planet","b":"1FA90","j":["saturn","saturnine","outerspace"]},"star":{"a":"Star","b":"2B50","j":["night","yellow"]},"glowing-star":{"a":"Glowing Star","b":"1F31F","j":["glittery","glow","shining","sparkle","star","night","awesome","good","magic"]},"shooting-star":{"a":"Shooting Star","b":"1F320","j":["falling","shooting","star","night","photo"]},"milky-way":{"a":"Milky Way","b":"1F30C","j":["space","photo","stars"]},"cloud":{"a":"Cloud","b":"2601","j":["weather","sky"]},"sun-behind-cloud":{"a":"Sun Behind Cloud","b":"26C5","j":["cloud","sun","weather","nature","cloudy","morning","fall","spring"]},"cloud-with-lightning-and-rain":{"a":"Cloud with Lightning and Rain","b":"26C8","j":["cloud","rain","thunder","weather","lightning"]},"sun-behind-small-cloud":{"a":"Sun Behind Small Cloud","b":"1F324","j":["cloud","sun","weather"]},"sun-behind-large-cloud":{"a":"Sun Behind Large Cloud","b":"1F325","j":["cloud","sun","weather"]},"sun-behind-rain-cloud":{"a":"Sun Behind Rain Cloud","b":"1F326","j":["cloud","rain","sun","weather"]},"cloud-with-rain":{"a":"Cloud with Rain","b":"1F327","j":["cloud","rain","weather"]},"cloud-with-snow":{"a":"Cloud with Snow","b":"1F328","j":["cloud","cold","snow","weather"]},"cloud-with-lightning":{"a":"Cloud with Lightning","b":"1F329","j":["cloud","lightning","weather","thunder"]},"tornado":{"a":"Tornado","b":"1F32A","j":["cloud","whirlwind","weather","cyclone","twister"]},"fog":{"a":"Fog","b":"1F32B","j":["cloud","weather"]},"wind-face":{"a":"Wind Face","b":"1F32C","j":["blow","cloud","face","wind","gust","air"]},"cyclone":{"a":"Cyclone","b":"1F300","j":["dizzy","hurricane","twister","typhoon","weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado"]},"rainbow":{"a":"Rainbow","b":"1F308","j":["rain","nature","happy","unicorn_face","photo","sky","spring"]},"closed-umbrella":{"a":"Closed Umbrella","b":"1F302","j":["clothing","rain","umbrella","weather","drizzle"]},"umbrella":{"a":"Umbrella","b":"2602","j":["clothing","rain","weather","spring"]},"umbrella-with-rain-drops":{"a":"Umbrella with Rain Drops","b":"2614","j":["clothing","drop","rain","umbrella","rainy","weather","spring"]},"umbrella-on-ground":{"a":"Umbrella on Ground","b":"26F1","j":["rain","sun","umbrella","weather","summer"]},"high-voltage":{"a":"High Voltage","b":"26A1","j":["danger","electric","lightning","voltage","zap","thunder","weather","lightning bolt","fast"]},"snowflake":{"a":"Snowflake","b":"2744","j":["cold","snow","winter","season","weather","christmas","xmas"]},"snowman":{"a":"Snowman","b":"2603","j":["cold","snow","winter","season","weather","christmas","xmas","frozen"]},"snowman-without-snow":{"a":"Snowman Without Snow","b":"26C4","j":["cold","snow","snowman","winter","season","weather","christmas","xmas","frozen","without_snow"]},"comet":{"a":"Comet","b":"2604","j":["space"]},"fire":{"a":"Fire","b":"1F525","j":["flame","tool","hot","cook"]},"droplet":{"a":"Droplet","b":"1F4A7","j":["cold","comic","drop","sweat","water","drip","faucet","spring"]},"water-wave":{"a":"Water Wave","b":"1F30A","j":["ocean","water","wave","sea","nature","tsunami","disaster"]},"jackolantern":{"a":"Jack-O-Lantern","b":"1F383","j":["celebration","halloween","jack","jack-o-lantern","lantern","jack_o_lantern","light","pumpkin","creepy","fall"]},"christmas-tree":{"a":"Christmas Tree","b":"1F384","j":["celebration","Christmas","tree","festival","vacation","december","xmas"]},"fireworks":{"a":"Fireworks","b":"1F386","j":["celebration","photo","festival","carnival","congratulations"]},"sparkler":{"a":"Sparkler","b":"1F387","j":["celebration","fireworks","sparkle","stars","night","shine"]},"firecracker":{"a":"Firecracker","b":"1F9E8","j":["dynamite","explosive","fireworks","boom","explode","explosion"]},"sparkles":{"a":"Sparkles","b":"2728","j":["*","sparkle","star","stars","shine","shiny","cool","awesome","good","magic"]},"balloon":{"a":"Balloon","b":"1F388","j":["celebration","party","birthday","circus"]},"party-popper":{"a":"Party Popper","b":"1F389","j":["celebration","party","popper","tada","congratulations","birthday","magic","circus"]},"confetti-ball":{"a":"Confetti Ball","b":"1F38A","j":["ball","celebration","confetti","festival","party","birthday","circus"]},"tanabata-tree":{"a":"Tanabata Tree","b":"1F38B","j":["banner","celebration","Japanese","tree","plant","nature","branch","summer"]},"pine-decoration":{"a":"Pine Decoration","b":"1F38D","j":["bamboo","celebration","Japanese","pine","plant","nature","vegetable","panda"]},"japanese-dolls":{"a":"Japanese Dolls","b":"1F38E","j":["celebration","doll","festival","Japanese","Japanese dolls","japanese","toy","kimono"]},"carp-streamer":{"a":"Carp Streamer","b":"1F38F","j":["carp","celebration","streamer","fish","japanese","koinobori","banner"]},"wind-chime":{"a":"Wind Chime","b":"1F390","j":["bell","celebration","chime","wind","nature","ding","spring"]},"moon-viewing-ceremony":{"a":"Moon Viewing Ceremony","b":"1F391","j":["celebration","ceremony","moon","photo","japan","asia","tsukimi"]},"red-envelope":{"a":"Red Envelope","b":"1F9E7","j":["gift","good luck","hΓ³ngbāo","lai see","money"]},"ribbon":{"a":"Ribbon","b":"1F380","j":["celebration","decoration","pink","girl","bowtie"]},"wrapped-gift":{"a":"Wrapped Gift","b":"1F381","j":["box","celebration","gift","present","wrapped","birthday","christmas","xmas"]},"reminder-ribbon":{"a":"Reminder Ribbon","b":"1F397","j":["celebration","reminder","ribbon","sports","cause","support","awareness"]},"admission-tickets":{"a":"Admission Tickets","b":"1F39F","j":["admission","ticket","sports","concert","entrance"]},"ticket":{"a":"Ticket","b":"1F3AB","j":["admission","event","concert","pass"]},"military-medal":{"a":"Military Medal","b":"1F396","j":["celebration","medal","military","award","winning","army"]},"trophy":{"a":"Trophy","b":"1F3C6","j":["prize","win","award","contest","place","ftw","ceremony"]},"sports-medal":{"a":"Sports Medal","b":"1F3C5","j":["medal","award","winning"]},"1st-place-medal":{"a":"1st Place Medal","b":"1F947","j":["first","gold","medal","award","winning"]},"2nd-place-medal":{"a":"2nd Place Medal","b":"1F948","j":["medal","second","silver","award"]},"3rd-place-medal":{"a":"3rd Place Medal","b":"1F949","j":["bronze","medal","third","award"]},"soccer-ball":{"a":"Soccer Ball","b":"26BD","j":["ball","football","soccer","sports"]},"baseball":{"a":"Baseball","b":"26BE","j":["ball","sports","balls"]},"softball":{"a":"Softball","b":"1F94E","j":["ball","glove","underarm","sports","balls"]},"basketball":{"a":"Basketball","b":"1F3C0","j":["ball","hoop","sports","balls","NBA"]},"volleyball":{"a":"Volleyball","b":"1F3D0","j":["ball","game","sports","balls"]},"american-football":{"a":"American Football","b":"1F3C8","j":["american","ball","football","sports","balls","NFL"]},"rugby-football":{"a":"Rugby Football","b":"1F3C9","j":["ball","football","rugby","sports","team"]},"tennis":{"a":"Tennis","b":"1F3BE","j":["ball","racquet","sports","balls","green"]},"flying-disc":{"a":"Flying Disc","b":"1F94F","j":["ultimate","sports","frisbee"]},"bowling":{"a":"Bowling","b":"1F3B3","j":["ball","game","sports","fun","play"]},"cricket-game":{"a":"Cricket Game","b":"1F3CF","j":["ball","bat","game","sports"]},"field-hockey":{"a":"Field Hockey","b":"1F3D1","j":["ball","field","game","hockey","stick","sports"]},"ice-hockey":{"a":"Ice Hockey","b":"1F3D2","j":["game","hockey","ice","puck","stick","sports"]},"lacrosse":{"a":"Lacrosse","b":"1F94D","j":["ball","goal","stick","sports"]},"ping-pong":{"a":"Ping Pong","b":"1F3D3","j":["ball","bat","game","paddle","table tennis","sports","pingpong"]},"badminton":{"a":"Badminton","b":"1F3F8","j":["birdie","game","racquet","shuttlecock","sports"]},"boxing-glove":{"a":"Boxing Glove","b":"1F94A","j":["boxing","glove","sports","fighting"]},"martial-arts-uniform":{"a":"Martial Arts Uniform","b":"1F94B","j":["judo","karate","martial arts","taekwondo","uniform"]},"goal-net":{"a":"Goal Net","b":"1F945","j":["goal","net","sports"]},"flag-in-hole":{"a":"Flag in Hole","b":"26F3","j":["golf","hole","sports","business","flag","summer"]},"ice-skate":{"a":"Ice Skate","b":"26F8","j":["ice","skate","sports"]},"fishing-pole":{"a":"Fishing Pole","b":"1F3A3","j":["fish","pole","food","hobby","summer"]},"diving-mask":{"a":"Diving Mask","b":"1F93F","j":["diving","scuba","snorkeling","sport","ocean"]},"running-shirt":{"a":"Running Shirt","b":"1F3BD","j":["athletics","running","sash","shirt","play","pageant"]},"skis":{"a":"Skis","b":"1F3BF","j":["ski","snow","sports","winter","cold"]},"sled":{"a":"Sled","b":"1F6F7","j":["sledge","sleigh","luge","toboggan"]},"curling-stone":{"a":"Curling Stone","b":"1F94C","j":["game","rock","sports"]},"bullseye":{"a":"Bullseye","b":"1F3AF","j":["dart","direct hit","game","hit","target","direct_hit","play","bar"]},"yoyo":{"a":"Yo-Yo","b":"1FA80","j":["fluctuate","toy","yo-yo","yo_yo"]},"kite":{"a":"Kite","b":"1FA81","j":["fly","soar","wind"]},"pool-8-ball":{"a":"Pool 8 Ball","b":"1F3B1","j":["8","ball","billiard","eight","game","pool","hobby","luck","magic"]},"crystal-ball":{"a":"Crystal Ball","b":"1F52E","j":["ball","crystal","fairy tale","fantasy","fortune","tool","disco","party","magic","circus","fortune_teller"]},"magic-wand":{"a":"Magic Wand","b":"1FA84","j":["magic","witch","wizard","supernature","power"]},"nazar-amulet":{"a":"Nazar Amulet","b":"1F9FF","j":["bead","charm","evil-eye","nazar","talisman"]},"video-game":{"a":"Video Game","b":"1F3AE","j":["controller","game","play","console","PS4"]},"joystick":{"a":"Joystick","b":"1F579","j":["game","video game","play"]},"slot-machine":{"a":"Slot Machine","b":"1F3B0","j":["game","slot","bet","gamble","vegas","fruit machine","luck","casino"]},"game-die":{"a":"Game Die","b":"1F3B2","j":["dice","die","game","random","tabletop","play","luck"]},"puzzle-piece":{"a":"Puzzle Piece","b":"1F9E9","j":["clue","interlocking","jigsaw","piece","puzzle"]},"teddy-bear":{"a":"Teddy Bear","b":"1F9F8","j":["plaything","plush","stuffed","toy"]},"piata":{"a":"PiΓ±ata","b":"1FA85","j":["celebration","party","piΓ±ata","pinata","mexico","candy"]},"nesting-dolls":{"a":"Nesting Dolls","b":"1FA86","j":["doll","nesting","russia","matryoshka","toy"]},"spade-suit":{"a":"Spade Suit","b":"2660","j":["card","game","poker","cards","suits","magic"]},"heart-suit":{"a":"Heart Suit","b":"2665","j":["card","game","poker","cards","magic","suits"]},"diamond-suit":{"a":"Diamond Suit","b":"2666","j":["card","game","poker","cards","magic","suits"]},"club-suit":{"a":"Club Suit","b":"2663","j":["card","game","poker","cards","magic","suits"]},"chess-pawn":{"a":"Chess Pawn","b":"265F","j":["chess","dupe","expendable"]},"joker":{"a":"Joker","b":"1F0CF","j":["card","game","wildcard","poker","cards","play","magic"]},"mahjong-red-dragon":{"a":"Mahjong Red Dragon","b":"1F004","j":["game","mahjong","red","play","chinese","kanji"]},"flower-playing-cards":{"a":"Flower Playing Cards","b":"1F3B4","j":["card","flower","game","Japanese","playing","sunset","red"]},"performing-arts":{"a":"Performing Arts","b":"1F3AD","j":["art","mask","performing","theater","theatre","acting","drama"]},"framed-picture":{"a":"Framed Picture","b":"1F5BC","j":["art","frame","museum","painting","picture","photography"]},"artist-palette":{"a":"Artist Palette","b":"1F3A8","j":["art","museum","painting","palette","design","paint","draw","colors"]},"thread":{"a":"Thread","b":"1F9F5","j":["needle","sewing","spool","string"]},"sewing-needle":{"a":"Sewing Needle","b":"1FAA1","j":["embroidery","needle","sewing","stitches","sutures","tailoring"]},"yarn":{"a":"Yarn","b":"1F9F6","j":["ball","crochet","knit"]},"knot":{"a":"Knot","b":"1FAA2","j":["rope","tangled","tie","twine","twist","scout"]},"glasses":{"a":"Glasses","b":"1F453","j":["clothing","eye","eyeglasses","eyewear","fashion","accessories","eyesight","nerdy","dork","geek"]},"sunglasses":{"a":"Sunglasses","b":"1F576","j":["dark","eye","eyewear","glasses","face","cool","accessories"]},"goggles":{"a":"Goggles","b":"1F97D","j":["eye protection","swimming","welding","eyes","protection","safety"]},"lab-coat":{"a":"Lab Coat","b":"1F97C","j":["doctor","experiment","scientist","chemist"]},"safety-vest":{"a":"Safety Vest","b":"1F9BA","j":["emergency","safety","vest","protection"]},"necktie":{"a":"Necktie","b":"1F454","j":["clothing","tie","shirt","suitup","formal","fashion","cloth","business"]},"tshirt":{"a":"T-Shirt","b":"1F455","j":["clothing","shirt","t-shirt","t_shirt","fashion","cloth","casual","tee"]},"jeans":{"a":"Jeans","b":"1F456","j":["clothing","pants","trousers","fashion","shopping"]},"scarf":{"a":"Scarf","b":"1F9E3","j":["neck","winter","clothes"]},"gloves":{"a":"Gloves","b":"1F9E4","j":["hand","hands","winter","clothes"]},"coat":{"a":"Coat","b":"1F9E5","j":["jacket"]},"socks":{"a":"Socks","b":"1F9E6","j":["stocking","stockings","clothes"]},"dress":{"a":"Dress","b":"1F457","j":["clothing","clothes","fashion","shopping"]},"kimono":{"a":"Kimono","b":"1F458","j":["clothing","dress","fashion","women","female","japanese"]},"sari":{"a":"Sari","b":"1F97B","j":["clothing","dress"]},"onepiece-swimsuit":{"a":"One-Piece Swimsuit","b":"1FA71","j":["bathing suit","one-piece swimsuit","one_piece_swimsuit","fashion"]},"briefs":{"a":"Briefs","b":"1FA72","j":["bathing suit","one-piece","swimsuit","underwear","clothing"]},"shorts":{"a":"Shorts","b":"1FA73","j":["bathing suit","pants","underwear","clothing"]},"bikini":{"a":"Bikini","b":"1F459","j":["clothing","swim","swimming","female","woman","girl","fashion","beach","summer"]},"womans-clothes":{"a":"Woman’S Clothes","b":"1F45A","j":["clothing","woman","woman’s clothes","woman_s_clothes","fashion","shopping_bags","female"]},"purse":{"a":"Purse","b":"1F45B","j":["clothing","coin","fashion","accessories","money","sales","shopping"]},"handbag":{"a":"Handbag","b":"1F45C","j":["bag","clothing","purse","fashion","accessory","accessories","shopping"]},"clutch-bag":{"a":"Clutch Bag","b":"1F45D","j":["bag","clothing","pouch","accessories","shopping"]},"shopping-bags":{"a":"Shopping Bags","b":"1F6CD","j":["bag","hotel","shopping","mall","buy","purchase"]},"backpack":{"a":"Backpack","b":"1F392","j":["bag","rucksack","satchel","school","student","education"]},"thong-sandal":{"a":"Thong Sandal","b":"1FA74","j":["beach sandals","sandals","thong sandals","thongs","zōri","footwear","summer"]},"mans-shoe":{"a":"Man’S Shoe","b":"1F45E","j":["clothing","man","man’s shoe","shoe","man_s_shoe","fashion","male"]},"running-shoe":{"a":"Running Shoe","b":"1F45F","j":["athletic","clothing","shoe","sneaker","shoes","sports","sneakers"]},"hiking-boot":{"a":"Hiking Boot","b":"1F97E","j":["backpacking","boot","camping","hiking"]},"flat-shoe":{"a":"Flat Shoe","b":"1F97F","j":["ballet flat","slip-on","slipper","ballet"]},"highheeled-shoe":{"a":"High-Heeled Shoe","b":"1F460","j":["clothing","heel","high-heeled shoe","shoe","woman","high_heeled_shoe","fashion","shoes","female","pumps","stiletto"]},"womans-sandal":{"a":"Woman’S Sandal","b":"1F461","j":["clothing","sandal","shoe","woman","woman’s sandal","woman_s_sandal","shoes","fashion","flip flops"]},"ballet-shoes":{"a":"Ballet Shoes","b":"1FA70","j":["ballet","dance"]},"womans-boot":{"a":"Woman’S Boot","b":"1F462","j":["boot","clothing","shoe","woman","woman’s boot","woman_s_boot","shoes","fashion"]},"crown":{"a":"Crown","b":"1F451","j":["clothing","king","queen","kod","leader","royalty","lord"]},"womans-hat":{"a":"Woman’S Hat","b":"1F452","j":["clothing","hat","woman","woman’s hat","woman_s_hat","fashion","accessories","female","lady","spring"]},"top-hat":{"a":"Top Hat","b":"1F3A9","j":["clothing","hat","top","tophat","magic","gentleman","classy","circus"]},"graduation-cap":{"a":"Graduation Cap","b":"1F393","j":["cap","celebration","clothing","graduation","hat","school","college","degree","university","legal","learn","education"]},"billed-cap":{"a":"Billed Cap","b":"1F9E2","j":["baseball cap","cap","baseball"]},"military-helmet":{"a":"Military Helmet","b":"1FA96","j":["army","helmet","military","soldier","warrior","protection"]},"rescue-workers-helmet":{"a":"Rescue Worker’S Helmet","b":"26D1","j":["aid","cross","face","hat","helmet","rescue worker’s helmet","rescue_worker_s_helmet","construction","build"]},"prayer-beads":{"a":"Prayer Beads","b":"1F4FF","j":["beads","clothing","necklace","prayer","religion","dhikr","religious"]},"lipstick":{"a":"Lipstick","b":"1F484","j":["cosmetics","makeup","female","girl","fashion","woman"]},"ring":{"a":"Ring","b":"1F48D","j":["diamond","wedding","propose","marriage","valentines","fashion","jewelry","gem","engagement"]},"gem-stone":{"a":"Gem Stone","b":"1F48E","j":["diamond","gem","jewel","blue","ruby","jewelry"]},"muted-speaker":{"a":"Muted Speaker","b":"1F507","j":["mute","quiet","silent","speaker","sound","volume","silence"]},"speaker-low-volume":{"a":"Speaker Low Volume","b":"1F508","j":["soft","sound","volume","silence","broadcast"]},"speaker-medium-volume":{"a":"Speaker Medium Volume","b":"1F509","j":["medium","volume","speaker","broadcast"]},"speaker-high-volume":{"a":"Speaker High Volume","b":"1F50A","j":["loud","volume","noise","noisy","speaker","broadcast"]},"loudspeaker":{"a":"Loudspeaker","b":"1F4E2","j":["loud","public address","volume","sound"]},"megaphone":{"a":"Megaphone","b":"1F4E3","j":["cheering","sound","speaker","volume"]},"postal-horn":{"a":"Postal Horn","b":"1F4EF","j":["horn","post","postal","instrument","music"]},"bell":{"a":"Bell","b":"1F514","j":["sound","notification","christmas","xmas","chime"]},"bell-with-slash":{"a":"Bell with Slash","b":"1F515","j":["bell","forbidden","mute","quiet","silent","sound","volume"]},"musical-score":{"a":"Musical Score","b":"1F3BC","j":["music","score","treble","clef","compose"]},"musical-note":{"a":"Musical Note","b":"1F3B5","j":["music","note","score","tone","sound"]},"musical-notes":{"a":"Musical Notes","b":"1F3B6","j":["music","note","notes","score"]},"studio-microphone":{"a":"Studio Microphone","b":"1F399","j":["mic","microphone","music","studio","sing","recording","artist","talkshow"]},"level-slider":{"a":"Level Slider","b":"1F39A","j":["level","music","slider","scale"]},"control-knobs":{"a":"Control Knobs","b":"1F39B","j":["control","knobs","music","dial"]},"microphone":{"a":"Microphone","b":"1F3A4","j":["karaoke","mic","sound","music","PA","sing","talkshow"]},"headphone":{"a":"Headphone","b":"1F3A7","j":["earbud","music","score","gadgets"]},"radio":{"a":"Radio","b":"1F4FB","j":["video","communication","music","podcast","program"]},"saxophone":{"a":"Saxophone","b":"1F3B7","j":["instrument","music","sax","jazz","blues"]},"accordion":{"a":"Accordion","b":"1FA97","j":["concertina","squeeze box","music"]},"guitar":{"a":"Guitar","b":"1F3B8","j":["instrument","music"]},"musical-keyboard":{"a":"Musical Keyboard","b":"1F3B9","j":["instrument","keyboard","music","piano","compose"]},"trumpet":{"a":"Trumpet","b":"1F3BA","j":["instrument","music","brass"]},"violin":{"a":"Violin","b":"1F3BB","j":["instrument","music","orchestra","symphony"]},"banjo":{"a":"Banjo","b":"1FA95","j":["music","stringed","instructment"]},"drum":{"a":"Drum","b":"1F941","j":["drumsticks","music","instrument","snare"]},"long-drum":{"a":"Long Drum","b":"1FA98","j":["beat","conga","drum","rhythm","music"]},"mobile-phone":{"a":"Mobile Phone","b":"1F4F1","j":["cell","mobile","phone","telephone","technology","apple","gadgets","dial"]},"mobile-phone-with-arrow":{"a":"Mobile Phone with Arrow","b":"1F4F2","j":["arrow","cell","mobile","phone","receive","iphone","incoming"]},"telephone":{"a":"Telephone","b":"260E","j":["phone","technology","communication","dial"]},"telephone-receiver":{"a":"Telephone Receiver","b":"1F4DE","j":["phone","receiver","telephone","technology","communication","dial"]},"pager":{"a":"Pager","b":"1F4DF","j":["bbcall","oldschool","90s"]},"fax-machine":{"a":"Fax Machine","b":"1F4E0","j":["fax","communication","technology"]},"battery":{"a":"Battery","b":"1F50B","j":["power","energy","sustain"]},"electric-plug":{"a":"Electric Plug","b":"1F50C","j":["electric","electricity","plug","charger","power"]},"laptop":{"a":"Laptop","b":"1F4BB","j":["computer","pc","personal","technology","screen","display","monitor"]},"desktop-computer":{"a":"Desktop Computer","b":"1F5A5","j":["computer","desktop","technology","computing","screen"]},"printer":{"a":"Printer","b":"1F5A8","j":["computer","paper","ink"]},"keyboard":{"a":"Keyboard","b":"2328","j":["computer","technology","type","input","text"]},"computer-mouse":{"a":"Computer Mouse","b":"1F5B1","j":["computer","click"]},"trackball":{"a":"Trackball","b":"1F5B2","j":["computer","technology","trackpad"]},"computer-disk":{"a":"Computer Disk","b":"1F4BD","j":["computer","disk","minidisk","optical","technology","record","data","90s"]},"floppy-disk":{"a":"Floppy Disk","b":"1F4BE","j":["computer","disk","floppy","oldschool","technology","save","90s","80s"]},"optical-disk":{"a":"Optical Disk","b":"1F4BF","j":["cd","computer","disk","optical","technology","dvd","disc","90s"]},"dvd":{"a":"Dvd","b":"1F4C0","j":["blu-ray","computer","disk","optical","cd","disc"]},"abacus":{"a":"Abacus","b":"1F9EE","j":["calculation"]},"movie-camera":{"a":"Movie Camera","b":"1F3A5","j":["camera","cinema","movie","film","record"]},"film-frames":{"a":"Film Frames","b":"1F39E","j":["cinema","film","frames","movie"]},"film-projector":{"a":"Film Projector","b":"1F4FD","j":["cinema","film","movie","projector","video","tape","record"]},"clapper-board":{"a":"Clapper Board","b":"1F3AC","j":["clapper","movie","film","record"]},"television":{"a":"Television","b":"1F4FA","j":["tv","video","technology","program","oldschool","show"]},"camera":{"a":"Camera","b":"1F4F7","j":["video","gadgets","photography"]},"camera-with-flash":{"a":"Camera with Flash","b":"1F4F8","j":["camera","flash","video","photography","gadgets"]},"video-camera":{"a":"Video Camera","b":"1F4F9","j":["camera","video","film","record"]},"videocassette":{"a":"Videocassette","b":"1F4FC","j":["tape","vhs","video","record","oldschool","90s","80s"]},"magnifying-glass-tilted-left":{"a":"Magnifying Glass Tilted Left","b":"1F50D","j":["glass","magnifying","search","tool","zoom","find","detective"]},"magnifying-glass-tilted-right":{"a":"Magnifying Glass Tilted Right","b":"1F50E","j":["glass","magnifying","search","tool","zoom","find","detective"]},"candle":{"a":"Candle","b":"1F56F","j":["light","fire","wax"]},"light-bulb":{"a":"Light Bulb","b":"1F4A1","j":["bulb","comic","electric","idea","light","electricity"]},"flashlight":{"a":"Flashlight","b":"1F526","j":["electric","light","tool","torch","dark","camping","sight","night"]},"red-paper-lantern":{"a":"Red Paper Lantern","b":"1F3EE","j":["bar","lantern","light","red","paper","halloween","spooky"]},"diya-lamp":{"a":"Diya Lamp","b":"1FA94","j":["diya","lamp","oil","lighting"]},"notebook-with-decorative-cover":{"a":"Notebook with Decorative Cover","b":"1F4D4","j":["book","cover","decorated","notebook","classroom","notes","record","paper","study"]},"closed-book":{"a":"Closed Book","b":"1F4D5","j":["book","closed","read","library","knowledge","textbook","learn"]},"open-book":{"a":"Open Book","b":"1F4D6","j":["book","open","read","library","knowledge","literature","learn","study"]},"green-book":{"a":"Green Book","b":"1F4D7","j":["book","green","read","library","knowledge","study"]},"blue-book":{"a":"Blue Book","b":"1F4D8","j":["blue","book","read","library","knowledge","learn","study"]},"orange-book":{"a":"Orange Book","b":"1F4D9","j":["book","orange","read","library","knowledge","textbook","study"]},"books":{"a":"Books","b":"1F4DA","j":["book","literature","library","study"]},"notebook":{"a":"Notebook","b":"1F4D3","j":["stationery","record","notes","paper","study"]},"ledger":{"a":"Ledger","b":"1F4D2","j":["notebook","notes","paper"]},"page-with-curl":{"a":"Page with Curl","b":"1F4C3","j":["curl","document","page","documents","office","paper"]},"scroll":{"a":"Scroll","b":"1F4DC","j":["paper","documents","ancient","history"]},"page-facing-up":{"a":"Page Facing Up","b":"1F4C4","j":["document","page","documents","office","paper","information"]},"newspaper":{"a":"Newspaper","b":"1F4F0","j":["news","paper","press","headline"]},"rolledup-newspaper":{"a":"Rolled-Up Newspaper","b":"1F5DE","j":["news","newspaper","paper","rolled","rolled-up newspaper","rolled_up_newspaper","press","headline"]},"bookmark-tabs":{"a":"Bookmark Tabs","b":"1F4D1","j":["bookmark","mark","marker","tabs","favorite","save","order","tidy"]},"bookmark":{"a":"Bookmark","b":"1F516","j":["mark","favorite","label","save"]},"label":{"a":"Label","b":"1F3F7","j":["sale","tag"]},"money-bag":{"a":"Money Bag","b":"1F4B0","j":["bag","dollar","money","moneybag","payment","coins","sale"]},"coin":{"a":"Coin","b":"1FA99","j":["gold","metal","money","silver","treasure","currency"]},"yen-banknote":{"a":"Yen Banknote","b":"1F4B4","j":["banknote","bill","currency","money","note","yen","sales","japanese","dollar"]},"dollar-banknote":{"a":"Dollar Banknote","b":"1F4B5","j":["banknote","bill","currency","dollar","money","note","sales"]},"euro-banknote":{"a":"Euro Banknote","b":"1F4B6","j":["banknote","bill","currency","euro","money","note","sales","dollar"]},"pound-banknote":{"a":"Pound Banknote","b":"1F4B7","j":["banknote","bill","currency","money","note","pound","british","sterling","sales","bills","uk","england"]},"money-with-wings":{"a":"Money with Wings","b":"1F4B8","j":["banknote","bill","fly","money","wings","dollar","bills","payment","sale"]},"credit-card":{"a":"Credit Card","b":"1F4B3","j":["card","credit","money","sales","dollar","bill","payment","shopping"]},"receipt":{"a":"Receipt","b":"1F9FE","j":["accounting","bookkeeping","evidence","proof","expenses"]},"chart-increasing-with-yen":{"a":"Chart Increasing with Yen","b":"1F4B9","j":["chart","graph","growth","money","yen","green-square","presentation","stats"]},"envelope":{"a":"Envelope","b":"2709","j":["email","letter","postal","inbox","communication"]},"email":{"a":"E-Mail","b":"1F4E7","j":["e-mail","letter","mail","e_mail","communication","inbox"]},"incoming-envelope":{"a":"Incoming Envelope","b":"1F4E8","j":["e-mail","email","envelope","incoming","letter","receive","inbox"]},"envelope-with-arrow":{"a":"Envelope with Arrow","b":"1F4E9","j":["arrow","e-mail","email","envelope","outgoing","communication"]},"outbox-tray":{"a":"Outbox Tray","b":"1F4E4","j":["box","letter","mail","outbox","sent","tray","inbox","email"]},"inbox-tray":{"a":"Inbox Tray","b":"1F4E5","j":["box","inbox","letter","mail","receive","tray","email","documents"]},"package":{"a":"Package","b":"1F4E6","j":["box","parcel","mail","gift","cardboard","moving"]},"closed-mailbox-with-raised-flag":{"a":"Closed Mailbox with Raised Flag","b":"1F4EB","j":["closed","mail","mailbox","postbox","email","inbox","communication"]},"closed-mailbox-with-lowered-flag":{"a":"Closed Mailbox with Lowered Flag","b":"1F4EA","j":["closed","lowered","mail","mailbox","postbox","email","communication","inbox"]},"open-mailbox-with-raised-flag":{"a":"Open Mailbox with Raised Flag","b":"1F4EC","j":["mail","mailbox","open","postbox","email","inbox","communication"]},"open-mailbox-with-lowered-flag":{"a":"Open Mailbox with Lowered Flag","b":"1F4ED","j":["lowered","mail","mailbox","open","postbox","email","inbox"]},"postbox":{"a":"Postbox","b":"1F4EE","j":["mail","mailbox","email","letter","envelope"]},"ballot-box-with-ballot":{"a":"Ballot Box with Ballot","b":"1F5F3","j":["ballot","box","election","vote"]},"pencil":{"a":"Pencil","b":"270F","j":["stationery","write","paper","writing","school","study"]},"black-nib":{"a":"Black Nib","b":"2712","j":["nib","pen","stationery","writing","write"]},"fountain-pen":{"a":"Fountain Pen","b":"1F58B","j":["fountain","pen","stationery","writing","write"]},"pen":{"a":"Pen","b":"1F58A","j":["ballpoint","stationery","writing","write"]},"paintbrush":{"a":"Paintbrush","b":"1F58C","j":["painting","drawing","creativity","art"]},"crayon":{"a":"Crayon","b":"1F58D","j":["drawing","creativity"]},"memo":{"a":"Memo","b":"1F4DD","j":["pencil","write","documents","stationery","paper","writing","legal","exam","quiz","test","study","compose"]},"briefcase":{"a":"Briefcase","b":"1F4BC","j":["business","documents","work","law","legal","job","career"]},"file-folder":{"a":"File Folder","b":"1F4C1","j":["file","folder","documents","business","office"]},"open-file-folder":{"a":"Open File Folder","b":"1F4C2","j":["file","folder","open","documents","load"]},"card-index-dividers":{"a":"Card Index Dividers","b":"1F5C2","j":["card","dividers","index","organizing","business","stationery"]},"calendar":{"a":"Calendar","b":"1F4C5","j":["date","schedule"]},"tearoff-calendar":{"a":"Tear-off Calendar","b":"1F4C6","j":["calendar","tear-off calendar","tear_off_calendar","schedule","date","planning"]},"spiral-notepad":{"a":"Spiral Notepad","b":"1F5D2","j":["note","pad","spiral","memo","stationery"]},"spiral-calendar":{"a":"Spiral Calendar","b":"1F5D3","j":["calendar","pad","spiral","date","schedule","planning"]},"card-index":{"a":"Card Index","b":"1F4C7","j":["card","index","rolodex","business","stationery"]},"chart-increasing":{"a":"Chart Increasing","b":"1F4C8","j":["chart","graph","growth","trend","upward","presentation","stats","recovery","business","economics","money","sales","good","success"]},"chart-decreasing":{"a":"Chart Decreasing","b":"1F4C9","j":["chart","down","graph","trend","presentation","stats","recession","business","economics","money","sales","bad","failure"]},"bar-chart":{"a":"Bar Chart","b":"1F4CA","j":["bar","chart","graph","presentation","stats"]},"clipboard":{"a":"Clipboard","b":"1F4CB","j":["stationery","documents"]},"pushpin":{"a":"Pushpin","b":"1F4CC","j":["pin","stationery","mark","here"]},"round-pushpin":{"a":"Round Pushpin","b":"1F4CD","j":["pin","pushpin","stationery","location","map","here"]},"paperclip":{"a":"Paperclip","b":"1F4CE","j":["documents","stationery"]},"linked-paperclips":{"a":"Linked Paperclips","b":"1F587","j":["link","paperclip","documents","stationery"]},"straight-ruler":{"a":"Straight Ruler","b":"1F4CF","j":["ruler","straight edge","stationery","calculate","length","math","school","drawing","architect","sketch"]},"triangular-ruler":{"a":"Triangular Ruler","b":"1F4D0","j":["ruler","set","triangle","stationery","math","architect","sketch"]},"scissors":{"a":"Scissors","b":"2702","j":["cutting","tool","stationery","cut"]},"card-file-box":{"a":"Card File Box","b":"1F5C3","j":["box","card","file","business","stationery"]},"file-cabinet":{"a":"File Cabinet","b":"1F5C4","j":["cabinet","file","filing","organizing"]},"wastebasket":{"a":"Wastebasket","b":"1F5D1","j":["bin","trash","rubbish","garbage","toss"]},"locked":{"a":"Locked","b":"1F512","j":["closed","security","password","padlock"]},"unlocked":{"a":"Unlocked","b":"1F513","j":["lock","open","unlock","privacy","security"]},"locked-with-pen":{"a":"Locked with Pen","b":"1F50F","j":["ink","lock","nib","pen","privacy","security","secret"]},"locked-with-key":{"a":"Locked with Key","b":"1F510","j":["closed","key","lock","secure","security","privacy"]},"key":{"a":"Key","b":"1F511","j":["lock","password","door"]},"old-key":{"a":"Old Key","b":"1F5DD","j":["clue","key","lock","old","door","password"]},"hammer":{"a":"Hammer","b":"1F528","j":["tool","tools","build","create"]},"axe":{"a":"Axe","b":"1FA93","j":["chop","hatchet","split","wood","tool","cut"]},"pick":{"a":"Pick","b":"26CF","j":["mining","tool","tools","dig"]},"hammer-and-pick":{"a":"Hammer and Pick","b":"2692","j":["hammer","pick","tool","tools","build","create"]},"hammer-and-wrench":{"a":"Hammer and Wrench","b":"1F6E0","j":["hammer","spanner","tool","wrench","tools","build","create"]},"dagger":{"a":"Dagger","b":"1F5E1","j":["knife","weapon"]},"crossed-swords":{"a":"Crossed Swords","b":"2694","j":["crossed","swords","weapon"]},"water-pistol":{"a":"Water Pistol","b":"1F52B","j":["gun","handgun","pistol","revolver","tool","water","weapon","violence"]},"boomerang":{"a":"Boomerang","b":"1FA83","j":["australia","rebound","repercussion","weapon"]},"bow-and-arrow":{"a":"Bow and Arrow","b":"1F3F9","j":["archer","arrow","bow","Sagittarius","zodiac","sports"]},"shield":{"a":"Shield","b":"1F6E1","j":["weapon","protection","security"]},"carpentry-saw":{"a":"Carpentry Saw","b":"1FA9A","j":["carpenter","lumber","saw","tool","cut","chop"]},"wrench":{"a":"Wrench","b":"1F527","j":["spanner","tool","tools","diy","ikea","fix","maintainer"]},"screwdriver":{"a":"Screwdriver","b":"1FA9B","j":["screw","tool","tools"]},"nut-and-bolt":{"a":"Nut and Bolt","b":"1F529","j":["bolt","nut","tool","handy","tools","fix"]},"gear":{"a":"Gear","b":"2699","j":["cog","cogwheel","tool"]},"clamp":{"a":"Clamp","b":"1F5DC","j":["compress","tool","vice"]},"balance-scale":{"a":"Balance Scale","b":"2696","j":["balance","justice","Libra","scale","zodiac","law","fairness","weight"]},"white-cane":{"a":"White Cane","b":"1F9AF","j":["accessibility","blind","probing_cane"]},"link":{"a":"Link","b":"1F517","j":["rings","url"]},"chains":{"a":"Chains","b":"26D3","j":["chain","lock","arrest"]},"hook":{"a":"Hook","b":"1FA9D","j":["catch","crook","curve","ensnare","selling point","tools"]},"toolbox":{"a":"Toolbox","b":"1F9F0","j":["chest","mechanic","tool","tools","diy","fix","maintainer"]},"magnet":{"a":"Magnet","b":"1F9F2","j":["attraction","horseshoe","magnetic"]},"ladder":{"a":"Ladder","b":"1FA9C","j":["climb","rung","step","tools"]},"alembic":{"a":"Alembic","b":"2697","j":["chemistry","tool","distilling","science","experiment"]},"test-tube":{"a":"Test Tube","b":"1F9EA","j":["chemist","chemistry","experiment","lab","science"]},"petri-dish":{"a":"Petri Dish","b":"1F9EB","j":["bacteria","biologist","biology","culture","lab"]},"dna":{"a":"Dna","b":"1F9EC","j":["biologist","evolution","gene","genetics","life"]},"microscope":{"a":"Microscope","b":"1F52C","j":["science","tool","laboratory","experiment","zoomin","study"]},"telescope":{"a":"Telescope","b":"1F52D","j":["science","tool","stars","space","zoom","astronomy"]},"satellite-antenna":{"a":"Satellite Antenna","b":"1F4E1","j":["antenna","dish","satellite","communication","future","radio","space"]},"syringe":{"a":"Syringe","b":"1F489","j":["medicine","needle","shot","sick","health","hospital","drugs","blood","doctor","nurse"]},"drop-of-blood":{"a":"Drop of Blood","b":"1FA78","j":["bleed","blood donation","injury","medicine","menstruation","period","hurt","harm","wound"]},"pill":{"a":"Pill","b":"1F48A","j":["doctor","medicine","sick","health","pharmacy","drug"]},"adhesive-bandage":{"a":"Adhesive Bandage","b":"1FA79","j":["bandage","heal"]},"stethoscope":{"a":"Stethoscope","b":"1FA7A","j":["doctor","heart","medicine","health"]},"door":{"a":"Door","b":"1F6AA","j":["house","entry","exit"]},"elevator":{"a":"Elevator","b":"1F6D7","j":["accessibility","hoist","lift"]},"mirror":{"a":"Mirror","b":"1FA9E","j":["reflection","reflector","speculum"]},"window":{"a":"Window","b":"1FA9F","j":["frame","fresh air","opening","transparent","view","scenery"]},"bed":{"a":"Bed","b":"1F6CF","j":["hotel","sleep","rest"]},"couch-and-lamp":{"a":"Couch and Lamp","b":"1F6CB","j":["couch","hotel","lamp","read","chill"]},"chair":{"a":"Chair","b":"1FA91","j":["seat","sit","furniture"]},"toilet":{"a":"Toilet","b":"1F6BD","j":["restroom","wc","washroom","bathroom","potty"]},"plunger":{"a":"Plunger","b":"1FAA0","j":["force cup","plumber","suction","toilet"]},"shower":{"a":"Shower","b":"1F6BF","j":["water","clean","bathroom"]},"bathtub":{"a":"Bathtub","b":"1F6C1","j":["bath","clean","shower","bathroom"]},"mouse-trap":{"a":"Mouse Trap","b":"1FAA4","j":["bait","mousetrap","snare","trap","cheese"]},"razor":{"a":"Razor","b":"1FA92","j":["sharp","shave","cut"]},"lotion-bottle":{"a":"Lotion Bottle","b":"1F9F4","j":["lotion","moisturizer","shampoo","sunscreen"]},"safety-pin":{"a":"Safety Pin","b":"1F9F7","j":["diaper","punk rock"]},"broom":{"a":"Broom","b":"1F9F9","j":["cleaning","sweeping","witch"]},"basket":{"a":"Basket","b":"1F9FA","j":["farming","laundry","picnic"]},"roll-of-paper":{"a":"Roll of Paper","b":"1F9FB","j":["paper towels","toilet paper","roll"]},"bucket":{"a":"Bucket","b":"1FAA3","j":["cask","pail","vat","water","container"]},"soap":{"a":"Soap","b":"1F9FC","j":["bar","bathing","cleaning","lather","soapdish"]},"toothbrush":{"a":"Toothbrush","b":"1FAA5","j":["bathroom","brush","clean","dental","hygiene","teeth"]},"sponge":{"a":"Sponge","b":"1F9FD","j":["absorbing","cleaning","porous"]},"fire-extinguisher":{"a":"Fire Extinguisher","b":"1F9EF","j":["extinguish","fire","quench"]},"shopping-cart":{"a":"Shopping Cart","b":"1F6D2","j":["cart","shopping","trolley"]},"cigarette":{"a":"Cigarette","b":"1F6AC","j":["smoking","kills","tobacco","joint","smoke"]},"coffin":{"a":"Coffin","b":"26B0","j":["death","vampire","dead","die","rip","graveyard","cemetery","casket","funeral","box"]},"headstone":{"a":"Headstone","b":"1FAA6","j":["cemetery","grave","graveyard","tombstone","death","rip"]},"funeral-urn":{"a":"Funeral Urn","b":"26B1","j":["ashes","death","funeral","urn","dead","die","rip"]},"moai":{"a":"Moai","b":"1F5FF","j":["face","moyai","statue","rock","easter island"]},"placard":{"a":"Placard","b":"1FAA7","j":["demonstration","picket","protest","sign","announcement"]},"atm-sign":{"a":"Atm Sign","b":"1F3E7","j":["atm","ATM sign","automated","bank","teller","money","sales","cash","blue-square","payment"]},"litter-in-bin-sign":{"a":"Litter in Bin Sign","b":"1F6AE","j":["litter","litter bin","blue-square","sign","human","info"]},"potable-water":{"a":"Potable Water","b":"1F6B0","j":["drinking","potable","water","blue-square","liquid","restroom","cleaning","faucet"]},"wheelchair-symbol":{"a":"Wheelchair Symbol","b":"267F","j":["access","blue-square","disabled","accessibility"]},"mens-room":{"a":"Men’S Room","b":"1F6B9","j":["lavatory","man","men’s room","restroom","wc","men_s_room","toilet","blue-square","gender","male"]},"womens-room":{"a":"Women’S Room","b":"1F6BA","j":["lavatory","restroom","wc","woman","women’s room","women_s_room","purple-square","female","toilet","loo","gender"]},"restroom":{"a":"Restroom","b":"1F6BB","j":["lavatory","WC","blue-square","toilet","refresh","wc","gender"]},"baby-symbol":{"a":"Baby Symbol","b":"1F6BC","j":["baby","changing","orange-square","child"]},"water-closet":{"a":"Water Closet","b":"1F6BE","j":["closet","lavatory","restroom","water","wc","toilet","blue-square"]},"passport-control":{"a":"Passport Control","b":"1F6C2","j":["control","passport","custom","blue-square"]},"customs":{"a":"Customs","b":"1F6C3","j":["passport","border","blue-square"]},"baggage-claim":{"a":"Baggage Claim","b":"1F6C4","j":["baggage","claim","blue-square","airport","transport"]},"left-luggage":{"a":"Left Luggage","b":"1F6C5","j":["baggage","locker","luggage","blue-square","travel"]},"warning":{"a":"Warning","b":"26A0","j":["exclamation","wip","alert","error","problem","issue"]},"children-crossing":{"a":"Children Crossing","b":"1F6B8","j":["child","crossing","pedestrian","traffic","school","warning","danger","sign","driving","yellow-diamond"]},"no-entry":{"a":"No Entry","b":"26D4","j":["entry","forbidden","no","not","prohibited","traffic","limit","security","privacy","bad","denied","stop","circle"]},"prohibited":{"a":"Prohibited","b":"1F6AB","j":["entry","forbidden","no","not","forbid","stop","limit","denied","disallow","circle"]},"no-bicycles":{"a":"No Bicycles","b":"1F6B3","j":["bicycle","bike","forbidden","no","prohibited","cyclist","circle"]},"no-smoking":{"a":"No Smoking","b":"1F6AD","j":["forbidden","no","not","prohibited","smoking","cigarette","blue-square","smell","smoke"]},"no-littering":{"a":"No Littering","b":"1F6AF","j":["forbidden","litter","no","not","prohibited","trash","bin","garbage","circle"]},"nonpotable-water":{"a":"Non-Potable Water","b":"1F6B1","j":["non-drinking","non-potable","water","non_potable_water","drink","faucet","tap","circle"]},"no-pedestrians":{"a":"No Pedestrians","b":"1F6B7","j":["forbidden","no","not","pedestrian","prohibited","rules","crossing","walking","circle"]},"no-mobile-phones":{"a":"No Mobile Phones","b":"1F4F5","j":["cell","forbidden","mobile","no","phone","iphone","mute","circle"]},"no-one-under-eighteen":{"a":"No One Under Eighteen","b":"1F51E","j":["18","age restriction","eighteen","prohibited","underage","drink","pub","night","minor","circle"]},"radioactive":{"a":"Radioactive","b":"2622","j":["sign","nuclear","danger"]},"biohazard":{"a":"Biohazard","b":"2623","j":["sign","danger"]},"up-arrow":{"a":"Up Arrow","b":"2B06","j":["arrow","cardinal","direction","north","blue-square","continue","top"]},"upright-arrow":{"a":"Up-Right Arrow","b":"2197","j":["arrow","direction","intercardinal","northeast","up-right arrow","up_right_arrow","blue-square","point","diagonal"]},"right-arrow":{"a":"Right Arrow","b":"27A1","j":["arrow","cardinal","direction","east","blue-square","next"]},"downright-arrow":{"a":"Down-Right Arrow","b":"2198","j":["arrow","direction","down-right arrow","intercardinal","southeast","down_right_arrow","blue-square","diagonal"]},"down-arrow":{"a":"Down Arrow","b":"2B07","j":["arrow","cardinal","direction","down","south","blue-square","bottom"]},"downleft-arrow":{"a":"Down-Left Arrow","b":"2199","j":["arrow","direction","down-left arrow","intercardinal","southwest","down_left_arrow","blue-square","diagonal"]},"left-arrow":{"a":"Left Arrow","b":"2B05","j":["arrow","cardinal","direction","west","blue-square","previous","back"]},"upleft-arrow":{"a":"Up-Left Arrow","b":"2196","j":["arrow","direction","intercardinal","northwest","up-left arrow","up_left_arrow","blue-square","point","diagonal"]},"updown-arrow":{"a":"Up-Down Arrow","b":"2195","j":["arrow","up-down arrow","up_down_arrow","blue-square","direction","way","vertical"]},"leftright-arrow":{"a":"Left-Right Arrow","b":"2194","j":["arrow","left-right arrow","left_right_arrow","shape","direction","horizontal","sideways"]},"right-arrow-curving-left":{"a":"Right Arrow Curving Left","b":"21A9","j":["arrow","back","return","blue-square","undo","enter"]},"left-arrow-curving-right":{"a":"Left Arrow Curving Right","b":"21AA","j":["arrow","blue-square","return","rotate","direction"]},"right-arrow-curving-up":{"a":"Right Arrow Curving Up","b":"2934","j":["arrow","blue-square","direction","top"]},"right-arrow-curving-down":{"a":"Right Arrow Curving Down","b":"2935","j":["arrow","down","blue-square","direction","bottom"]},"clockwise-vertical-arrows":{"a":"Clockwise Vertical Arrows","b":"1F503","j":["arrow","clockwise","reload","sync","cycle","round","repeat"]},"counterclockwise-arrows-button":{"a":"Counterclockwise Arrows Button","b":"1F504","j":["anticlockwise","arrow","counterclockwise","withershins","blue-square","sync","cycle"]},"back-arrow":{"a":"Back Arrow","b":"1F519","j":["arrow","back","BACK arrow","words","return"]},"end-arrow":{"a":"End Arrow","b":"1F51A","j":["arrow","end","END arrow","words"]},"on-arrow":{"a":"On! Arrow","b":"1F51B","j":["arrow","mark","on","ON! arrow","words"]},"soon-arrow":{"a":"Soon Arrow","b":"1F51C","j":["arrow","soon","SOON arrow","words"]},"top-arrow":{"a":"Top Arrow","b":"1F51D","j":["arrow","top","TOP arrow","up","words","blue-square"]},"place-of-worship":{"a":"Place of Worship","b":"1F6D0","j":["religion","worship","church","temple","prayer"]},"atom-symbol":{"a":"Atom Symbol","b":"269B","j":["atheist","atom","science","physics","chemistry"]},"om":{"a":"Om","b":"1F549","j":["Hindu","religion","hinduism","buddhism","sikhism","jainism"]},"star-of-david":{"a":"Star of David","b":"2721","j":["David","Jew","Jewish","religion","star","star of David","judaism"]},"wheel-of-dharma":{"a":"Wheel of Dharma","b":"2638","j":["Buddhist","dharma","religion","wheel","hinduism","buddhism","sikhism","jainism"]},"yin-yang":{"a":"Yin Yang","b":"262F","j":["religion","tao","taoist","yang","yin","balance"]},"latin-cross":{"a":"Latin Cross","b":"271D","j":["Christian","cross","religion","christianity"]},"orthodox-cross":{"a":"Orthodox Cross","b":"2626","j":["Christian","cross","religion","suppedaneum"]},"star-and-crescent":{"a":"Star and Crescent","b":"262A","j":["islam","Muslim","religion"]},"peace-symbol":{"a":"Peace Symbol","b":"262E","j":["peace","hippie"]},"menorah":{"a":"Menorah","b":"1F54E","j":["candelabrum","candlestick","religion","hanukkah","candles","jewish"]},"dotted-sixpointed-star":{"a":"Dotted Six-Pointed Star","b":"1F52F","j":["dotted six-pointed star","fortune","star","dotted_six_pointed_star","purple-square","religion","jewish","hexagram"]},"aries":{"a":"Aries","b":"2648","j":["ram","zodiac","sign","purple-square","astrology"]},"taurus":{"a":"Taurus","b":"2649","j":["bull","ox","zodiac","purple-square","sign","astrology"]},"gemini":{"a":"Gemini","b":"264A","j":["twins","zodiac","sign","purple-square","astrology"]},"cancer":{"a":"Cancer","b":"264B","j":["crab","zodiac","sign","purple-square","astrology"]},"leo":{"a":"Leo","b":"264C","j":["lion","zodiac","sign","purple-square","astrology"]},"virgo":{"a":"Virgo","b":"264D","j":["zodiac","sign","purple-square","astrology"]},"libra":{"a":"Libra","b":"264E","j":["balance","justice","scales","zodiac","sign","purple-square","astrology"]},"scorpio":{"a":"Scorpio","b":"264F","j":["scorpion","scorpius","zodiac","sign","purple-square","astrology"]},"sagittarius":{"a":"Sagittarius","b":"2650","j":["archer","zodiac","sign","purple-square","astrology"]},"capricorn":{"a":"Capricorn","b":"2651","j":["goat","zodiac","sign","purple-square","astrology"]},"aquarius":{"a":"Aquarius","b":"2652","j":["bearer","water","zodiac","sign","purple-square","astrology"]},"pisces":{"a":"Pisces","b":"2653","j":["fish","zodiac","purple-square","sign","astrology"]},"ophiuchus":{"a":"Ophiuchus","b":"26CE","j":["bearer","serpent","snake","zodiac","sign","purple-square","constellation","astrology"]},"shuffle-tracks-button":{"a":"Shuffle Tracks Button","b":"1F500","j":["arrow","crossed","blue-square","shuffle","music","random"]},"repeat-button":{"a":"Repeat Button","b":"1F501","j":["arrow","clockwise","repeat","loop","record"]},"repeat-single-button":{"a":"Repeat Single Button","b":"1F502","j":["arrow","clockwise","once","blue-square","loop"]},"play-button":{"a":"Play Button","b":"25B6","j":["arrow","play","right","triangle","blue-square","direction"]},"fastforward-button":{"a":"Fast-Forward Button","b":"23E9","j":["arrow","double","fast","fast-forward button","forward","fast_forward_button","blue-square","play","speed","continue"]},"next-track-button":{"a":"Next Track Button","b":"23ED","j":["arrow","next scene","next track","triangle","forward","next","blue-square"]},"play-or-pause-button":{"a":"Play or Pause Button","b":"23EF","j":["arrow","pause","play","right","triangle","blue-square"]},"reverse-button":{"a":"Reverse Button","b":"25C0","j":["arrow","left","reverse","triangle","blue-square","direction"]},"fast-reverse-button":{"a":"Fast Reverse Button","b":"23EA","j":["arrow","double","rewind","play","blue-square"]},"last-track-button":{"a":"Last Track Button","b":"23EE","j":["arrow","previous scene","previous track","triangle","backward"]},"upwards-button":{"a":"Upwards Button","b":"1F53C","j":["arrow","button","red","blue-square","triangle","direction","point","forward","top"]},"fast-up-button":{"a":"Fast Up Button","b":"23EB","j":["arrow","double","blue-square","direction","top"]},"downwards-button":{"a":"Downwards Button","b":"1F53D","j":["arrow","button","down","red","blue-square","direction","bottom"]},"fast-down-button":{"a":"Fast Down Button","b":"23EC","j":["arrow","double","down","blue-square","direction","bottom"]},"pause-button":{"a":"Pause Button","b":"23F8","j":["bar","double","pause","vertical","blue-square"]},"stop-button":{"a":"Stop Button","b":"23F9","j":["square","stop","blue-square"]},"record-button":{"a":"Record Button","b":"23FA","j":["circle","record","blue-square"]},"eject-button":{"a":"Eject Button","b":"23CF","j":["eject","blue-square"]},"cinema":{"a":"Cinema","b":"1F3A6","j":["camera","film","movie","blue-square","record","curtain","stage","theater"]},"dim-button":{"a":"Dim Button","b":"1F505","j":["brightness","dim","low","sun","afternoon","warm","summer"]},"bright-button":{"a":"Bright Button","b":"1F506","j":["bright","brightness","sun","light"]},"antenna-bars":{"a":"Antenna Bars","b":"1F4F6","j":["antenna","bar","cell","mobile","phone","blue-square","reception","internet","connection","wifi","bluetooth","bars"]},"vibration-mode":{"a":"Vibration Mode","b":"1F4F3","j":["cell","mobile","mode","phone","telephone","vibration","orange-square"]},"mobile-phone-off":{"a":"Mobile Phone off","b":"1F4F4","j":["cell","mobile","off","phone","telephone","mute","orange-square","silence","quiet"]},"female-sign":{"a":"Female Sign","b":"2640","j":["woman","women","lady","girl"]},"male-sign":{"a":"Male Sign","b":"2642","j":["man","boy","men"]},"transgender-symbol":{"a":"Transgender Symbol","b":"26A7","j":["transgender","lgbtq"]},"multiply":{"a":"Multiply","b":"2716","j":["Γ—","cancel","multiplication","sign","x","multiplication_sign","math","calculation"]},"plus":{"a":"Plus","b":"2795","j":["+","math","sign","plus_sign","calculation","addition","more","increase"]},"minus":{"a":"Minus","b":"2796","j":["-","βˆ’","math","sign","minus_sign","calculation","subtract","less"]},"divide":{"a":"Divide","b":"2797","j":["Γ·","division","math","sign","division_sign","calculation"]},"infinity":{"a":"Infinity","b":"267E","j":["forever","unbounded","universal"]},"double-exclamation-mark":{"a":"Double Exclamation Mark","b":"203C","j":["!","!!","bangbang","exclamation","mark","surprise"]},"exclamation-question-mark":{"a":"Exclamation Question Mark","b":"2049","j":["!","!?","?","exclamation","interrobang","mark","punctuation","question","wat","surprise"]},"red-question-mark":{"a":"Red Question Mark","b":"2753","j":["?","mark","punctuation","question","question_mark","doubt","confused"]},"white-question-mark":{"a":"White Question Mark","b":"2754","j":["?","mark","outlined","punctuation","question","doubts","gray","huh","confused"]},"white-exclamation-mark":{"a":"White Exclamation Mark","b":"2755","j":["!","exclamation","mark","outlined","punctuation","surprise","gray","wow","warning"]},"red-exclamation-mark":{"a":"Red Exclamation Mark","b":"2757","j":["!","exclamation","mark","punctuation","exclamation_mark","heavy_exclamation_mark","danger","surprise","wow","warning"]},"wavy-dash":{"a":"Wavy Dash","b":"3030","j":["dash","punctuation","wavy","draw","line","moustache","mustache","squiggle","scribble"]},"currency-exchange":{"a":"Currency Exchange","b":"1F4B1","j":["bank","currency","exchange","money","sales","dollar","travel"]},"heavy-dollar-sign":{"a":"Heavy Dollar Sign","b":"1F4B2","j":["currency","dollar","money","sales","payment","buck"]},"medical-symbol":{"a":"Medical Symbol","b":"2695","j":["aesculapius","medicine","staff","health","hospital"]},"recycling-symbol":{"a":"Recycling Symbol","b":"267B","j":["recycle","arrow","environment","garbage","trash"]},"fleurdelis":{"a":"Fleur-De-Lis","b":"269C","j":["fleur-de-lis","fleur_de_lis","decorative","scout"]},"trident-emblem":{"a":"Trident Emblem","b":"1F531","j":["anchor","emblem","ship","tool","trident","weapon","spear"]},"name-badge":{"a":"Name Badge","b":"1F4DB","j":["badge","name","fire","forbid"]},"japanese-symbol-for-beginner":{"a":"Japanese Symbol for Beginner","b":"1F530","j":["beginner","chevron","Japanese","Japanese symbol for beginner","leaf","badge","shield"]},"hollow-red-circle":{"a":"Hollow Red Circle","b":"2B55","j":["circle","large","o","red","round"]},"check-mark-button":{"a":"Check Mark Button","b":"2705","j":["βœ“","button","check","mark","green-square","ok","agree","vote","election","answer","tick"]},"check-box-with-check":{"a":"Check Box with Check","b":"2611","j":["βœ“","box","check","ok","agree","confirm","black-square","vote","election","yes","tick"]},"check-mark":{"a":"Check Mark","b":"2714","j":["βœ“","check","mark","ok","nike","answer","yes","tick"]},"cross-mark":{"a":"Cross Mark","b":"274C","j":["Γ—","cancel","cross","mark","multiplication","multiply","x","no","delete","remove","red"]},"cross-mark-button":{"a":"Cross Mark Button","b":"274E","j":["Γ—","mark","square","x","green-square","no","deny"]},"curly-loop":{"a":"Curly Loop","b":"27B0","j":["curl","loop","scribble","draw","shape","squiggle"]},"double-curly-loop":{"a":"Double Curly Loop","b":"27BF","j":["curl","double","loop","tape","cassette"]},"part-alternation-mark":{"a":"Part Alternation Mark","b":"303D","j":["mark","part","graph","presentation","stats","business","economics","bad"]},"eightspoked-asterisk":{"a":"Eight-Spoked Asterisk","b":"2733","j":["*","asterisk","eight-spoked asterisk","eight_spoked_asterisk","star","sparkle","green-square"]},"eightpointed-star":{"a":"Eight-Pointed Star","b":"2734","j":["*","eight-pointed star","star","eight_pointed_star","orange-square","shape","polygon"]},"sparkle":{"a":"Sparkle","b":"2747","j":["*","stars","green-square","awesome","good","fireworks"]},"copyright":{"a":"Copyright","b":"00A9","j":["c","ip","license","circle","law","legal"]},"registered":{"a":"Registered","b":"00AE","j":["r","alphabet","circle"]},"trade-mark":{"a":"Trade Mark","b":"2122","j":["mark","tm","trademark","brand","law","legal"]},"keycap":{"a":"Keycap: *","b":"002A-FE0F-20E3","j":["keycap_","star"]},"keycap-0":{"a":"Keycap: 0","b":"0030-FE0F-20E3","j":["keycap","0","numbers","blue-square","null"]},"keycap-1":{"a":"Keycap: 1","b":"0031-FE0F-20E3","j":["keycap","blue-square","numbers","1"]},"keycap-2":{"a":"Keycap: 2","b":"0032-FE0F-20E3","j":["keycap","numbers","2","prime","blue-square"]},"keycap-3":{"a":"Keycap: 3","b":"0033-FE0F-20E3","j":["keycap","3","numbers","prime","blue-square"]},"keycap-4":{"a":"Keycap: 4","b":"0034-FE0F-20E3","j":["keycap","4","numbers","blue-square"]},"keycap-5":{"a":"Keycap: 5","b":"0035-FE0F-20E3","j":["keycap","5","numbers","blue-square","prime"]},"keycap-6":{"a":"Keycap: 6","b":"0036-FE0F-20E3","j":["keycap","6","numbers","blue-square"]},"keycap-7":{"a":"Keycap: 7","b":"0037-FE0F-20E3","j":["keycap","7","numbers","blue-square","prime"]},"keycap-8":{"a":"Keycap: 8","b":"0038-FE0F-20E3","j":["keycap","8","blue-square","numbers"]},"keycap-9":{"a":"Keycap: 9","b":"0039-FE0F-20E3","j":["keycap","blue-square","numbers","9"]},"keycap-10":{"a":"Keycap: 10","b":"1F51F","j":["keycap","numbers","10","blue-square"]},"input-latin-uppercase":{"a":"Input Latin Uppercase","b":"1F520","j":["ABCD","input","latin","letters","uppercase","alphabet","words","blue-square"]},"input-latin-lowercase":{"a":"Input Latin Lowercase","b":"1F521","j":["abcd","input","latin","letters","lowercase","blue-square","alphabet"]},"input-numbers":{"a":"Input Numbers","b":"1F522","j":["1234","input","numbers","blue-square"]},"input-symbols":{"a":"Input Symbols","b":"1F523","j":["γ€’β™ͺ&%","input","blue-square","music","note","ampersand","percent","glyphs","characters"]},"input-latin-letters":{"a":"Input Latin Letters","b":"1F524","j":["abc","alphabet","input","latin","letters","blue-square"]},"a-button-blood-type":{"a":"A Button (Blood Type)","b":"1F170","j":["a","A button (blood type)","blood type","a_button","red-square","alphabet","letter"]},"ab-button-blood-type":{"a":"Ab Button (Blood Type)","b":"1F18E","j":["ab","AB button (blood type)","blood type","ab_button","red-square","alphabet"]},"b-button-blood-type":{"a":"B Button (Blood Type)","b":"1F171","j":["b","B button (blood type)","blood type","b_button","red-square","alphabet","letter"]},"cl-button":{"a":"Cl Button","b":"1F191","j":["cl","CL button","alphabet","words","red-square"]},"cool-button":{"a":"Cool Button","b":"1F192","j":["cool","COOL button","words","blue-square"]},"free-button":{"a":"Free Button","b":"1F193","j":["free","FREE button","blue-square","words"]},"information":{"a":"Information","b":"2139","j":["i","blue-square","alphabet","letter"]},"id-button":{"a":"Id Button","b":"1F194","j":["id","ID button","identity","purple-square","words"]},"circled-m":{"a":"Circled M","b":"24C2","j":["circle","circled M","m","alphabet","blue-circle","letter"]},"new-button":{"a":"New Button","b":"1F195","j":["new","NEW button","blue-square","words","start"]},"ng-button":{"a":"Ng Button","b":"1F196","j":["ng","NG button","blue-square","words","shape","icon"]},"o-button-blood-type":{"a":"O Button (Blood Type)","b":"1F17E","j":["blood type","o","O button (blood type)","o_button","alphabet","red-square","letter"]},"ok-button":{"a":"Ok Button","b":"1F197","j":["OK","OK button","good","agree","yes","blue-square"]},"p-button":{"a":"P Button","b":"1F17F","j":["P button","parking","cars","blue-square","alphabet","letter"]},"sos-button":{"a":"Sos Button","b":"1F198","j":["help","sos","SOS button","red-square","words","emergency","911"]},"up-button":{"a":"Up! Button","b":"1F199","j":["mark","up","UP! button","blue-square","above","high"]},"vs-button":{"a":"Vs Button","b":"1F19A","j":["versus","vs","VS button","words","orange-square"]},"japanese-here-button":{"a":"Japanese β€œHere” Button","b":"1F201","j":["β€œhere”","Japanese","Japanese β€œhere” button","katakana","γ‚³γ‚³","blue-square","here","japanese","destination"]},"japanese-service-charge-button":{"a":"Japanese β€œService Charge” Button","b":"1F202","j":["β€œservice charge”","Japanese","Japanese β€œservice charge” button","katakana","γ‚΅","japanese","blue-square"]},"japanese-monthly-amount-button":{"a":"Japanese β€œMonthly Amount” Button","b":"1F237","j":["β€œmonthly amount”","ideograph","Japanese","Japanese β€œmonthly amount” button","月","chinese","month","moon","japanese","orange-square","kanji"]},"japanese-not-free-of-charge-button":{"a":"Japanese β€œNot Free of Charge” Button","b":"1F236","j":["β€œnot free of charge”","ideograph","Japanese","Japanese β€œnot free of charge” button","ζœ‰","orange-square","chinese","have","kanji"]},"japanese-reserved-button":{"a":"Japanese β€œReserved” Button","b":"1F22F","j":["β€œreserved”","ideograph","Japanese","Japanese β€œreserved” button","ζŒ‡","chinese","point","green-square","kanji"]},"japanese-bargain-button":{"a":"Japanese β€œBargain” Button","b":"1F250","j":["β€œbargain”","ideograph","Japanese","Japanese β€œbargain” button","εΎ—","chinese","kanji","obtain","get","circle"]},"japanese-discount-button":{"a":"Japanese β€œDiscount” Button","b":"1F239","j":["β€œdiscount”","ideograph","Japanese","Japanese β€œdiscount” button","割","cut","divide","chinese","kanji","pink-square"]},"japanese-free-of-charge-button":{"a":"Japanese β€œFree of Charge” Button","b":"1F21A","j":["β€œfree of charge”","ideograph","Japanese","Japanese β€œfree of charge” button","η„‘","nothing","chinese","kanji","japanese","orange-square"]},"japanese-prohibited-button":{"a":"Japanese β€œProhibited” Button","b":"1F232","j":["β€œprohibited”","ideograph","Japanese","Japanese β€œprohibited” button","禁","kanji","japanese","chinese","forbidden","limit","restricted","red-square"]},"japanese-acceptable-button":{"a":"Japanese β€œAcceptable” Button","b":"1F251","j":["β€œacceptable”","ideograph","Japanese","Japanese β€œacceptable” button","可","ok","good","chinese","kanji","agree","yes","orange-circle"]},"japanese-application-button":{"a":"Japanese β€œApplication” Button","b":"1F238","j":["β€œapplication”","ideograph","Japanese","Japanese β€œapplication” button","η”³","chinese","japanese","kanji","orange-square"]},"japanese-passing-grade-button":{"a":"Japanese β€œPassing Grade” Button","b":"1F234","j":["β€œpassing grade”","ideograph","Japanese","Japanese β€œpassing grade” button","合","japanese","chinese","join","kanji","red-square"]},"japanese-vacancy-button":{"a":"Japanese β€œVacancy” Button","b":"1F233","j":["β€œvacancy”","ideograph","Japanese","Japanese β€œvacancy” button","η©Ί","kanji","japanese","chinese","empty","sky","blue-square"]},"japanese-congratulations-button":{"a":"Japanese β€œCongratulations” Button","b":"3297","j":["β€œcongratulations”","ideograph","Japanese","Japanese β€œcongratulations” button","η₯","chinese","kanji","japanese","red-circle"]},"japanese-secret-button":{"a":"Japanese β€œSecret” Button","b":"3299","j":["β€œsecret”","ideograph","Japanese","Japanese β€œsecret” button","秘","privacy","chinese","sshh","kanji","red-circle"]},"japanese-open-for-business-button":{"a":"Japanese β€œOpen for Business” Button","b":"1F23A","j":["β€œopen for business”","ideograph","Japanese","Japanese β€œopen for business” button","ε–Ά","japanese","opening hours","orange-square"]},"japanese-no-vacancy-button":{"a":"Japanese β€œNo Vacancy” Button","b":"1F235","j":["β€œno vacancy”","ideograph","Japanese","Japanese β€œno vacancy” button","ζΊ€","full","chinese","japanese","red-square","kanji"]},"red-circle":{"a":"Red Circle","b":"1F534","j":["circle","geometric","red","shape","error","danger"]},"orange-circle":{"a":"Orange Circle","b":"1F7E0","j":["circle","orange","round"]},"yellow-circle":{"a":"Yellow Circle","b":"1F7E1","j":["circle","yellow","round"]},"green-circle":{"a":"Green Circle","b":"1F7E2","j":["circle","green","round"]},"blue-circle":{"a":"Blue Circle","b":"1F535","j":["blue","circle","geometric","shape","icon","button"]},"purple-circle":{"a":"Purple Circle","b":"1F7E3","j":["circle","purple","round"]},"brown-circle":{"a":"Brown Circle","b":"1F7E4","j":["brown","circle","round"]},"black-circle":{"a":"Black Circle","b":"26AB","j":["circle","geometric","shape","button","round"]},"white-circle":{"a":"White Circle","b":"26AA","j":["circle","geometric","shape","round"]},"red-square":{"a":"Red Square","b":"1F7E5","j":["red","square"]},"orange-square":{"a":"Orange Square","b":"1F7E7","j":["orange","square"]},"yellow-square":{"a":"Yellow Square","b":"1F7E8","j":["square","yellow"]},"green-square":{"a":"Green Square","b":"1F7E9","j":["green","square"]},"blue-square":{"a":"Blue Square","b":"1F7E6","j":["blue","square"]},"purple-square":{"a":"Purple Square","b":"1F7EA","j":["purple","square"]},"brown-square":{"a":"Brown Square","b":"1F7EB","j":["brown","square"]},"black-large-square":{"a":"Black Large Square","b":"2B1B","j":["geometric","square","shape","icon","button"]},"white-large-square":{"a":"White Large Square","b":"2B1C","j":["geometric","square","shape","icon","stone","button"]},"black-medium-square":{"a":"Black Medium Square","b":"25FC","j":["geometric","square","shape","button","icon"]},"white-medium-square":{"a":"White Medium Square","b":"25FB","j":["geometric","square","shape","stone","icon"]},"black-mediumsmall-square":{"a":"Black Medium-Small Square","b":"25FE","j":["black medium-small square","geometric","square","black_medium_small_square","icon","shape","button"]},"white-mediumsmall-square":{"a":"White Medium-Small Square","b":"25FD","j":["geometric","square","white medium-small square","white_medium_small_square","shape","stone","icon","button"]},"black-small-square":{"a":"Black Small Square","b":"25AA","j":["geometric","square","shape","icon"]},"white-small-square":{"a":"White Small Square","b":"25AB","j":["geometric","square","shape","icon"]},"large-orange-diamond":{"a":"Large Orange Diamond","b":"1F536","j":["diamond","geometric","orange","shape","jewel","gem"]},"large-blue-diamond":{"a":"Large Blue Diamond","b":"1F537","j":["blue","diamond","geometric","shape","jewel","gem"]},"small-orange-diamond":{"a":"Small Orange Diamond","b":"1F538","j":["diamond","geometric","orange","shape","jewel","gem"]},"small-blue-diamond":{"a":"Small Blue Diamond","b":"1F539","j":["blue","diamond","geometric","shape","jewel","gem"]},"red-triangle-pointed-up":{"a":"Red Triangle Pointed Up","b":"1F53A","j":["geometric","red","shape","direction","up","top"]},"red-triangle-pointed-down":{"a":"Red Triangle Pointed Down","b":"1F53B","j":["down","geometric","red","shape","direction","bottom"]},"diamond-with-a-dot":{"a":"Diamond with a Dot","b":"1F4A0","j":["comic","diamond","geometric","inside","jewel","blue","gem","crystal","fancy"]},"radio-button":{"a":"Radio Button","b":"1F518","j":["button","geometric","radio","input","old","music","circle"]},"white-square-button":{"a":"White Square Button","b":"1F533","j":["button","geometric","outlined","square","shape","input"]},"black-square-button":{"a":"Black Square Button","b":"1F532","j":["button","geometric","square","shape","input","frame"]},"chequered-flag":{"a":"Chequered Flag","b":"1F3C1","j":["checkered","chequered","racing","contest","finishline","race","gokart"]},"triangular-flag":{"a":"Triangular Flag","b":"1F6A9","j":["post","mark","milestone","place"]},"crossed-flags":{"a":"Crossed Flags","b":"1F38C","j":["celebration","cross","crossed","Japanese","japanese","nation","country","border"]},"black-flag":{"a":"Black Flag","b":"1F3F4","j":["waving","pirate"]},"white-flag":{"a":"White Flag","b":"1F3F3","j":["waving","losing","loser","lost","surrender","give up","fail"]},"rainbow-flag":{"a":"Rainbow Flag","b":"1F3F3-FE0F-200D-1F308","j":["pride","rainbow","flag","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"]},"transgender-flag":{"a":"Transgender Flag","b":"1F3F3-FE0F-200D-26A7-FE0F","j":["flag","light blue","pink","transgender","white","lgbtq"]},"pirate-flag":{"a":"Pirate Flag","b":"1F3F4-200D-2620-FE0F","j":["Jolly Roger","pirate","plunder","treasure","skull","crossbones","flag","banner"]},"flag-ascension-island":{"a":"Flag: Ascension Island","b":"1F1E6-1F1E8","j":["flag"]},"flag-andorra":{"a":"Flag: Andorra","b":"1F1E6-1F1E9","j":["flag","ad","nation","country","banner"]},"flag-united-arab-emirates":{"a":"Flag: United Arab Emirates","b":"1F1E6-1F1EA","j":["flag","united","arab","emirates","nation","country","banner"]},"flag-afghanistan":{"a":"Flag: Afghanistan","b":"1F1E6-1F1EB","j":["flag","af","nation","country","banner"]},"flag-antigua--barbuda":{"a":"Flag: Antigua & Barbuda","b":"1F1E6-1F1EC","j":["flag","flag_antigua_barbuda","antigua","barbuda","nation","country","banner"]},"flag-anguilla":{"a":"Flag: Anguilla","b":"1F1E6-1F1EE","j":["flag","ai","nation","country","banner"]},"flag-albania":{"a":"Flag: Albania","b":"1F1E6-1F1F1","j":["flag","al","nation","country","banner"]},"flag-armenia":{"a":"Flag: Armenia","b":"1F1E6-1F1F2","j":["flag","am","nation","country","banner"]},"flag-angola":{"a":"Flag: Angola","b":"1F1E6-1F1F4","j":["flag","ao","nation","country","banner"]},"flag-antarctica":{"a":"Flag: Antarctica","b":"1F1E6-1F1F6","j":["flag","aq","nation","country","banner"]},"flag-argentina":{"a":"Flag: Argentina","b":"1F1E6-1F1F7","j":["flag","ar","nation","country","banner"]},"flag-american-samoa":{"a":"Flag: American Samoa","b":"1F1E6-1F1F8","j":["flag","american","ws","nation","country","banner"]},"flag-austria":{"a":"Flag: Austria","b":"1F1E6-1F1F9","j":["flag","at","nation","country","banner"]},"flag-australia":{"a":"Flag: Australia","b":"1F1E6-1F1FA","j":["flag","au","nation","country","banner"]},"flag-aruba":{"a":"Flag: Aruba","b":"1F1E6-1F1FC","j":["flag","aw","nation","country","banner"]},"flag-land-islands":{"a":"Flag: Γ…land Islands","b":"1F1E6-1F1FD","j":["flag","flag_aland_islands","Γ…land","islands","nation","country","banner"]},"flag-azerbaijan":{"a":"Flag: Azerbaijan","b":"1F1E6-1F1FF","j":["flag","az","nation","country","banner"]},"flag-bosnia--herzegovina":{"a":"Flag: Bosnia & Herzegovina","b":"1F1E7-1F1E6","j":["flag","flag_bosnia_herzegovina","bosnia","herzegovina","nation","country","banner"]},"flag-barbados":{"a":"Flag: Barbados","b":"1F1E7-1F1E7","j":["flag","bb","nation","country","banner"]},"flag-bangladesh":{"a":"Flag: Bangladesh","b":"1F1E7-1F1E9","j":["flag","bd","nation","country","banner"]},"flag-belgium":{"a":"Flag: Belgium","b":"1F1E7-1F1EA","j":["flag","be","nation","country","banner"]},"flag-burkina-faso":{"a":"Flag: Burkina Faso","b":"1F1E7-1F1EB","j":["flag","burkina","faso","nation","country","banner"]},"flag-bulgaria":{"a":"Flag: Bulgaria","b":"1F1E7-1F1EC","j":["flag","bg","nation","country","banner"]},"flag-bahrain":{"a":"Flag: Bahrain","b":"1F1E7-1F1ED","j":["flag","bh","nation","country","banner"]},"flag-burundi":{"a":"Flag: Burundi","b":"1F1E7-1F1EE","j":["flag","bi","nation","country","banner"]},"flag-benin":{"a":"Flag: Benin","b":"1F1E7-1F1EF","j":["flag","bj","nation","country","banner"]},"flag-st-barthlemy":{"a":"Flag: St. BarthΓ©lemy","b":"1F1E7-1F1F1","j":["flag","flag_st_barthelemy","saint","barthΓ©lemy","nation","country","banner"]},"flag-bermuda":{"a":"Flag: Bermuda","b":"1F1E7-1F1F2","j":["flag","bm","nation","country","banner"]},"flag-brunei":{"a":"Flag: Brunei","b":"1F1E7-1F1F3","j":["flag","bn","darussalam","nation","country","banner"]},"flag-bolivia":{"a":"Flag: Bolivia","b":"1F1E7-1F1F4","j":["flag","bo","nation","country","banner"]},"flag-caribbean-netherlands":{"a":"Flag: Caribbean Netherlands","b":"1F1E7-1F1F6","j":["flag","bonaire","nation","country","banner"]},"flag-brazil":{"a":"Flag: Brazil","b":"1F1E7-1F1F7","j":["flag","br","nation","country","banner"]},"flag-bahamas":{"a":"Flag: Bahamas","b":"1F1E7-1F1F8","j":["flag","bs","nation","country","banner"]},"flag-bhutan":{"a":"Flag: Bhutan","b":"1F1E7-1F1F9","j":["flag","bt","nation","country","banner"]},"flag-bouvet-island":{"a":"Flag: Bouvet Island","b":"1F1E7-1F1FB","j":["flag","norway"]},"flag-botswana":{"a":"Flag: Botswana","b":"1F1E7-1F1FC","j":["flag","bw","nation","country","banner"]},"flag-belarus":{"a":"Flag: Belarus","b":"1F1E7-1F1FE","j":["flag","by","nation","country","banner"]},"flag-belize":{"a":"Flag: Belize","b":"1F1E7-1F1FF","j":["flag","bz","nation","country","banner"]},"flag-canada":{"a":"Flag: Canada","b":"1F1E8-1F1E6","j":["flag","ca","nation","country","banner"]},"flag-cocos-keeling-islands":{"a":"Flag: Cocos (Keeling) Islands","b":"1F1E8-1F1E8","j":["flag","flag_cocos_islands","cocos","keeling","islands","nation","country","banner"]},"flag-congo--kinshasa":{"a":"Flag: Congo - Kinshasa","b":"1F1E8-1F1E9","j":["flag","flag_congo_kinshasa","congo","democratic","republic","nation","country","banner"]},"flag-central-african-republic":{"a":"Flag: Central African Republic","b":"1F1E8-1F1EB","j":["flag","central","african","republic","nation","country","banner"]},"flag-congo--brazzaville":{"a":"Flag: Congo - Brazzaville","b":"1F1E8-1F1EC","j":["flag","flag_congo_brazzaville","congo","nation","country","banner"]},"flag-switzerland":{"a":"Flag: Switzerland","b":"1F1E8-1F1ED","j":["flag","ch","nation","country","banner"]},"flag-cte-divoire":{"a":"Flag: CΓ΄te D’Ivoire","b":"1F1E8-1F1EE","j":["flag","flag_cote_d_ivoire","ivory","coast","nation","country","banner"]},"flag-cook-islands":{"a":"Flag: Cook Islands","b":"1F1E8-1F1F0","j":["flag","cook","islands","nation","country","banner"]},"flag-chile":{"a":"Flag: Chile","b":"1F1E8-1F1F1","j":["flag","nation","country","banner"]},"flag-cameroon":{"a":"Flag: Cameroon","b":"1F1E8-1F1F2","j":["flag","cm","nation","country","banner"]},"flag-china":{"a":"Flag: China","b":"1F1E8-1F1F3","j":["flag","china","chinese","prc","country","nation","banner"]},"flag-colombia":{"a":"Flag: Colombia","b":"1F1E8-1F1F4","j":["flag","co","nation","country","banner"]},"flag-clipperton-island":{"a":"Flag: Clipperton Island","b":"1F1E8-1F1F5","j":["flag"]},"flag-costa-rica":{"a":"Flag: Costa Rica","b":"1F1E8-1F1F7","j":["flag","costa","rica","nation","country","banner"]},"flag-cuba":{"a":"Flag: Cuba","b":"1F1E8-1F1FA","j":["flag","cu","nation","country","banner"]},"flag-cape-verde":{"a":"Flag: Cape Verde","b":"1F1E8-1F1FB","j":["flag","cabo","verde","nation","country","banner"]},"flag-curaao":{"a":"Flag: CuraΓ§ao","b":"1F1E8-1F1FC","j":["flag","flag_curacao","curaΓ§ao","nation","country","banner"]},"flag-christmas-island":{"a":"Flag: Christmas Island","b":"1F1E8-1F1FD","j":["flag","christmas","island","nation","country","banner"]},"flag-cyprus":{"a":"Flag: Cyprus","b":"1F1E8-1F1FE","j":["flag","cy","nation","country","banner"]},"flag-czechia":{"a":"Flag: Czechia","b":"1F1E8-1F1FF","j":["flag","cz","nation","country","banner"]},"flag-germany":{"a":"Flag: Germany","b":"1F1E9-1F1EA","j":["flag","german","nation","country","banner"]},"flag-diego-garcia":{"a":"Flag: Diego Garcia","b":"1F1E9-1F1EC","j":["flag"]},"flag-djibouti":{"a":"Flag: Djibouti","b":"1F1E9-1F1EF","j":["flag","dj","nation","country","banner"]},"flag-denmark":{"a":"Flag: Denmark","b":"1F1E9-1F1F0","j":["flag","dk","nation","country","banner"]},"flag-dominica":{"a":"Flag: Dominica","b":"1F1E9-1F1F2","j":["flag","dm","nation","country","banner"]},"flag-dominican-republic":{"a":"Flag: Dominican Republic","b":"1F1E9-1F1F4","j":["flag","dominican","republic","nation","country","banner"]},"flag-algeria":{"a":"Flag: Algeria","b":"1F1E9-1F1FF","j":["flag","dz","nation","country","banner"]},"flag-ceuta--melilla":{"a":"Flag: Ceuta & Melilla","b":"1F1EA-1F1E6","j":["flag","flag_ceuta_melilla"]},"flag-ecuador":{"a":"Flag: Ecuador","b":"1F1EA-1F1E8","j":["flag","ec","nation","country","banner"]},"flag-estonia":{"a":"Flag: Estonia","b":"1F1EA-1F1EA","j":["flag","ee","nation","country","banner"]},"flag-egypt":{"a":"Flag: Egypt","b":"1F1EA-1F1EC","j":["flag","eg","nation","country","banner"]},"flag-western-sahara":{"a":"Flag: Western Sahara","b":"1F1EA-1F1ED","j":["flag","western","sahara","nation","country","banner"]},"flag-eritrea":{"a":"Flag: Eritrea","b":"1F1EA-1F1F7","j":["flag","er","nation","country","banner"]},"flag-spain":{"a":"Flag: Spain","b":"1F1EA-1F1F8","j":["flag","spain","nation","country","banner"]},"flag-ethiopia":{"a":"Flag: Ethiopia","b":"1F1EA-1F1F9","j":["flag","et","nation","country","banner"]},"flag-european-union":{"a":"Flag: European Union","b":"1F1EA-1F1FA","j":["flag","european","union","banner"]},"flag-finland":{"a":"Flag: Finland","b":"1F1EB-1F1EE","j":["flag","fi","nation","country","banner"]},"flag-fiji":{"a":"Flag: Fiji","b":"1F1EB-1F1EF","j":["flag","fj","nation","country","banner"]},"flag-falkland-islands":{"a":"Flag: Falkland Islands","b":"1F1EB-1F1F0","j":["flag","falkland","islands","malvinas","nation","country","banner"]},"flag-micronesia":{"a":"Flag: Micronesia","b":"1F1EB-1F1F2","j":["flag","micronesia","federated","states","nation","country","banner"]},"flag-faroe-islands":{"a":"Flag: Faroe Islands","b":"1F1EB-1F1F4","j":["flag","faroe","islands","nation","country","banner"]},"flag-france":{"a":"Flag: France","b":"1F1EB-1F1F7","j":["flag","banner","nation","france","french","country"]},"flag-gabon":{"a":"Flag: Gabon","b":"1F1EC-1F1E6","j":["flag","ga","nation","country","banner"]},"flag-united-kingdom":{"a":"Flag: United Kingdom","b":"1F1EC-1F1E7","j":["flag","united","kingdom","great","britain","northern","ireland","nation","country","banner","british","UK","english","england","union jack"]},"flag-grenada":{"a":"Flag: Grenada","b":"1F1EC-1F1E9","j":["flag","gd","nation","country","banner"]},"flag-georgia":{"a":"Flag: Georgia","b":"1F1EC-1F1EA","j":["flag","ge","nation","country","banner"]},"flag-french-guiana":{"a":"Flag: French Guiana","b":"1F1EC-1F1EB","j":["flag","french","guiana","nation","country","banner"]},"flag-guernsey":{"a":"Flag: Guernsey","b":"1F1EC-1F1EC","j":["flag","gg","nation","country","banner"]},"flag-ghana":{"a":"Flag: Ghana","b":"1F1EC-1F1ED","j":["flag","gh","nation","country","banner"]},"flag-gibraltar":{"a":"Flag: Gibraltar","b":"1F1EC-1F1EE","j":["flag","gi","nation","country","banner"]},"flag-greenland":{"a":"Flag: Greenland","b":"1F1EC-1F1F1","j":["flag","gl","nation","country","banner"]},"flag-gambia":{"a":"Flag: Gambia","b":"1F1EC-1F1F2","j":["flag","gm","nation","country","banner"]},"flag-guinea":{"a":"Flag: Guinea","b":"1F1EC-1F1F3","j":["flag","gn","nation","country","banner"]},"flag-guadeloupe":{"a":"Flag: Guadeloupe","b":"1F1EC-1F1F5","j":["flag","gp","nation","country","banner"]},"flag-equatorial-guinea":{"a":"Flag: Equatorial Guinea","b":"1F1EC-1F1F6","j":["flag","equatorial","gn","nation","country","banner"]},"flag-greece":{"a":"Flag: Greece","b":"1F1EC-1F1F7","j":["flag","gr","nation","country","banner"]},"flag-south-georgia--south-sandwich-islands":{"a":"Flag: South Georgia & South Sandwich Islands","b":"1F1EC-1F1F8","j":["flag","flag_south_georgia_south_sandwich_islands","south","georgia","sandwich","islands","nation","country","banner"]},"flag-guatemala":{"a":"Flag: Guatemala","b":"1F1EC-1F1F9","j":["flag","gt","nation","country","banner"]},"flag-guam":{"a":"Flag: Guam","b":"1F1EC-1F1FA","j":["flag","gu","nation","country","banner"]},"flag-guineabissau":{"a":"Flag: Guinea-Bissau","b":"1F1EC-1F1FC","j":["flag","flag_guinea_bissau","gw","bissau","nation","country","banner"]},"flag-guyana":{"a":"Flag: Guyana","b":"1F1EC-1F1FE","j":["flag","gy","nation","country","banner"]},"flag-hong-kong-sar-china":{"a":"Flag: Hong Kong Sar China","b":"1F1ED-1F1F0","j":["flag","hong","kong","nation","country","banner"]},"flag-heard--mcdonald-islands":{"a":"Flag: Heard & Mcdonald Islands","b":"1F1ED-1F1F2","j":["flag","flag_heard_mcdonald_islands"]},"flag-honduras":{"a":"Flag: Honduras","b":"1F1ED-1F1F3","j":["flag","hn","nation","country","banner"]},"flag-croatia":{"a":"Flag: Croatia","b":"1F1ED-1F1F7","j":["flag","hr","nation","country","banner"]},"flag-haiti":{"a":"Flag: Haiti","b":"1F1ED-1F1F9","j":["flag","ht","nation","country","banner"]},"flag-hungary":{"a":"Flag: Hungary","b":"1F1ED-1F1FA","j":["flag","hu","nation","country","banner"]},"flag-canary-islands":{"a":"Flag: Canary Islands","b":"1F1EE-1F1E8","j":["flag","canary","islands","nation","country","banner"]},"flag-indonesia":{"a":"Flag: Indonesia","b":"1F1EE-1F1E9","j":["flag","nation","country","banner"]},"flag-ireland":{"a":"Flag: Ireland","b":"1F1EE-1F1EA","j":["flag","ie","nation","country","banner"]},"flag-israel":{"a":"Flag: Israel","b":"1F1EE-1F1F1","j":["flag","il","nation","country","banner"]},"flag-isle-of-man":{"a":"Flag: Isle of Man","b":"1F1EE-1F1F2","j":["flag","isle","man","nation","country","banner"]},"flag-india":{"a":"Flag: India","b":"1F1EE-1F1F3","j":["flag","in","nation","country","banner"]},"flag-british-indian-ocean-territory":{"a":"Flag: British Indian Ocean Territory","b":"1F1EE-1F1F4","j":["flag","british","indian","ocean","territory","nation","country","banner"]},"flag-iraq":{"a":"Flag: Iraq","b":"1F1EE-1F1F6","j":["flag","iq","nation","country","banner"]},"flag-iran":{"a":"Flag: Iran","b":"1F1EE-1F1F7","j":["flag","iran","islamic","republic","nation","country","banner"]},"flag-iceland":{"a":"Flag: Iceland","b":"1F1EE-1F1F8","j":["flag","is","nation","country","banner"]},"flag-italy":{"a":"Flag: Italy","b":"1F1EE-1F1F9","j":["flag","italy","nation","country","banner"]},"flag-jersey":{"a":"Flag: Jersey","b":"1F1EF-1F1EA","j":["flag","je","nation","country","banner"]},"flag-jamaica":{"a":"Flag: Jamaica","b":"1F1EF-1F1F2","j":["flag","jm","nation","country","banner"]},"flag-jordan":{"a":"Flag: Jordan","b":"1F1EF-1F1F4","j":["flag","jo","nation","country","banner"]},"flag-japan":{"a":"Flag: Japan","b":"1F1EF-1F1F5","j":["flag","japanese","nation","country","banner"]},"flag-kenya":{"a":"Flag: Kenya","b":"1F1F0-1F1EA","j":["flag","ke","nation","country","banner"]},"flag-kyrgyzstan":{"a":"Flag: Kyrgyzstan","b":"1F1F0-1F1EC","j":["flag","kg","nation","country","banner"]},"flag-cambodia":{"a":"Flag: Cambodia","b":"1F1F0-1F1ED","j":["flag","kh","nation","country","banner"]},"flag-kiribati":{"a":"Flag: Kiribati","b":"1F1F0-1F1EE","j":["flag","ki","nation","country","banner"]},"flag-comoros":{"a":"Flag: Comoros","b":"1F1F0-1F1F2","j":["flag","km","nation","country","banner"]},"flag-st-kitts--nevis":{"a":"Flag: St. Kitts & Nevis","b":"1F1F0-1F1F3","j":["flag","flag_st_kitts_nevis","saint","kitts","nevis","nation","country","banner"]},"flag-north-korea":{"a":"Flag: North Korea","b":"1F1F0-1F1F5","j":["flag","north","korea","nation","country","banner"]},"flag-south-korea":{"a":"Flag: South Korea","b":"1F1F0-1F1F7","j":["flag","south","korea","nation","country","banner"]},"flag-kuwait":{"a":"Flag: Kuwait","b":"1F1F0-1F1FC","j":["flag","kw","nation","country","banner"]},"flag-cayman-islands":{"a":"Flag: Cayman Islands","b":"1F1F0-1F1FE","j":["flag","cayman","islands","nation","country","banner"]},"flag-kazakhstan":{"a":"Flag: Kazakhstan","b":"1F1F0-1F1FF","j":["flag","kz","nation","country","banner"]},"flag-laos":{"a":"Flag: Laos","b":"1F1F1-1F1E6","j":["flag","lao","democratic","republic","nation","country","banner"]},"flag-lebanon":{"a":"Flag: Lebanon","b":"1F1F1-1F1E7","j":["flag","lb","nation","country","banner"]},"flag-st-lucia":{"a":"Flag: St. Lucia","b":"1F1F1-1F1E8","j":["flag","saint","lucia","nation","country","banner"]},"flag-liechtenstein":{"a":"Flag: Liechtenstein","b":"1F1F1-1F1EE","j":["flag","li","nation","country","banner"]},"flag-sri-lanka":{"a":"Flag: Sri Lanka","b":"1F1F1-1F1F0","j":["flag","sri","lanka","nation","country","banner"]},"flag-liberia":{"a":"Flag: Liberia","b":"1F1F1-1F1F7","j":["flag","lr","nation","country","banner"]},"flag-lesotho":{"a":"Flag: Lesotho","b":"1F1F1-1F1F8","j":["flag","ls","nation","country","banner"]},"flag-lithuania":{"a":"Flag: Lithuania","b":"1F1F1-1F1F9","j":["flag","lt","nation","country","banner"]},"flag-luxembourg":{"a":"Flag: Luxembourg","b":"1F1F1-1F1FA","j":["flag","lu","nation","country","banner"]},"flag-latvia":{"a":"Flag: Latvia","b":"1F1F1-1F1FB","j":["flag","lv","nation","country","banner"]},"flag-libya":{"a":"Flag: Libya","b":"1F1F1-1F1FE","j":["flag","ly","nation","country","banner"]},"flag-morocco":{"a":"Flag: Morocco","b":"1F1F2-1F1E6","j":["flag","ma","nation","country","banner"]},"flag-monaco":{"a":"Flag: Monaco","b":"1F1F2-1F1E8","j":["flag","mc","nation","country","banner"]},"flag-moldova":{"a":"Flag: Moldova","b":"1F1F2-1F1E9","j":["flag","moldova","republic","nation","country","banner"]},"flag-montenegro":{"a":"Flag: Montenegro","b":"1F1F2-1F1EA","j":["flag","me","nation","country","banner"]},"flag-st-martin":{"a":"Flag: St. Martin","b":"1F1F2-1F1EB","j":["flag"]},"flag-madagascar":{"a":"Flag: Madagascar","b":"1F1F2-1F1EC","j":["flag","mg","nation","country","banner"]},"flag-marshall-islands":{"a":"Flag: Marshall Islands","b":"1F1F2-1F1ED","j":["flag","marshall","islands","nation","country","banner"]},"flag-north-macedonia":{"a":"Flag: North Macedonia","b":"1F1F2-1F1F0","j":["flag","macedonia","nation","country","banner"]},"flag-mali":{"a":"Flag: Mali","b":"1F1F2-1F1F1","j":["flag","ml","nation","country","banner"]},"flag-myanmar-burma":{"a":"Flag: Myanmar (Burma)","b":"1F1F2-1F1F2","j":["flag","flag_myanmar","mm","nation","country","banner"]},"flag-mongolia":{"a":"Flag: Mongolia","b":"1F1F2-1F1F3","j":["flag","mn","nation","country","banner"]},"flag-macao-sar-china":{"a":"Flag: Macao Sar China","b":"1F1F2-1F1F4","j":["flag","macao","nation","country","banner"]},"flag-northern-mariana-islands":{"a":"Flag: Northern Mariana Islands","b":"1F1F2-1F1F5","j":["flag","northern","mariana","islands","nation","country","banner"]},"flag-martinique":{"a":"Flag: Martinique","b":"1F1F2-1F1F6","j":["flag","mq","nation","country","banner"]},"flag-mauritania":{"a":"Flag: Mauritania","b":"1F1F2-1F1F7","j":["flag","mr","nation","country","banner"]},"flag-montserrat":{"a":"Flag: Montserrat","b":"1F1F2-1F1F8","j":["flag","ms","nation","country","banner"]},"flag-malta":{"a":"Flag: Malta","b":"1F1F2-1F1F9","j":["flag","mt","nation","country","banner"]},"flag-mauritius":{"a":"Flag: Mauritius","b":"1F1F2-1F1FA","j":["flag","mu","nation","country","banner"]},"flag-maldives":{"a":"Flag: Maldives","b":"1F1F2-1F1FB","j":["flag","mv","nation","country","banner"]},"flag-malawi":{"a":"Flag: Malawi","b":"1F1F2-1F1FC","j":["flag","mw","nation","country","banner"]},"flag-mexico":{"a":"Flag: Mexico","b":"1F1F2-1F1FD","j":["flag","mx","nation","country","banner"]},"flag-malaysia":{"a":"Flag: Malaysia","b":"1F1F2-1F1FE","j":["flag","my","nation","country","banner"]},"flag-mozambique":{"a":"Flag: Mozambique","b":"1F1F2-1F1FF","j":["flag","mz","nation","country","banner"]},"flag-namibia":{"a":"Flag: Namibia","b":"1F1F3-1F1E6","j":["flag","na","nation","country","banner"]},"flag-new-caledonia":{"a":"Flag: New Caledonia","b":"1F1F3-1F1E8","j":["flag","new","caledonia","nation","country","banner"]},"flag-niger":{"a":"Flag: Niger","b":"1F1F3-1F1EA","j":["flag","ne","nation","country","banner"]},"flag-norfolk-island":{"a":"Flag: Norfolk Island","b":"1F1F3-1F1EB","j":["flag","norfolk","island","nation","country","banner"]},"flag-nigeria":{"a":"Flag: Nigeria","b":"1F1F3-1F1EC","j":["flag","nation","country","banner"]},"flag-nicaragua":{"a":"Flag: Nicaragua","b":"1F1F3-1F1EE","j":["flag","ni","nation","country","banner"]},"flag-netherlands":{"a":"Flag: Netherlands","b":"1F1F3-1F1F1","j":["flag","nl","nation","country","banner"]},"flag-norway":{"a":"Flag: Norway","b":"1F1F3-1F1F4","j":["flag","no","nation","country","banner"]},"flag-nepal":{"a":"Flag: Nepal","b":"1F1F3-1F1F5","j":["flag","np","nation","country","banner"]},"flag-nauru":{"a":"Flag: Nauru","b":"1F1F3-1F1F7","j":["flag","nr","nation","country","banner"]},"flag-niue":{"a":"Flag: Niue","b":"1F1F3-1F1FA","j":["flag","nu","nation","country","banner"]},"flag-new-zealand":{"a":"Flag: New Zealand","b":"1F1F3-1F1FF","j":["flag","new","zealand","nation","country","banner"]},"flag-oman":{"a":"Flag: Oman","b":"1F1F4-1F1F2","j":["flag","om_symbol","nation","country","banner"]},"flag-panama":{"a":"Flag: Panama","b":"1F1F5-1F1E6","j":["flag","pa","nation","country","banner"]},"flag-peru":{"a":"Flag: Peru","b":"1F1F5-1F1EA","j":["flag","pe","nation","country","banner"]},"flag-french-polynesia":{"a":"Flag: French Polynesia","b":"1F1F5-1F1EB","j":["flag","french","polynesia","nation","country","banner"]},"flag-papua-new-guinea":{"a":"Flag: Papua New Guinea","b":"1F1F5-1F1EC","j":["flag","papua","new","guinea","nation","country","banner"]},"flag-philippines":{"a":"Flag: Philippines","b":"1F1F5-1F1ED","j":["flag","ph","nation","country","banner"]},"flag-pakistan":{"a":"Flag: Pakistan","b":"1F1F5-1F1F0","j":["flag","pk","nation","country","banner"]},"flag-poland":{"a":"Flag: Poland","b":"1F1F5-1F1F1","j":["flag","pl","nation","country","banner"]},"flag-st-pierre--miquelon":{"a":"Flag: St. Pierre & Miquelon","b":"1F1F5-1F1F2","j":["flag","flag_st_pierre_miquelon","saint","pierre","miquelon","nation","country","banner"]},"flag-pitcairn-islands":{"a":"Flag: Pitcairn Islands","b":"1F1F5-1F1F3","j":["flag","pitcairn","nation","country","banner"]},"flag-puerto-rico":{"a":"Flag: Puerto Rico","b":"1F1F5-1F1F7","j":["flag","puerto","rico","nation","country","banner"]},"flag-palestinian-territories":{"a":"Flag: Palestinian Territories","b":"1F1F5-1F1F8","j":["flag","palestine","palestinian","territories","nation","country","banner"]},"flag-portugal":{"a":"Flag: Portugal","b":"1F1F5-1F1F9","j":["flag","pt","nation","country","banner"]},"flag-palau":{"a":"Flag: Palau","b":"1F1F5-1F1FC","j":["flag","pw","nation","country","banner"]},"flag-paraguay":{"a":"Flag: Paraguay","b":"1F1F5-1F1FE","j":["flag","py","nation","country","banner"]},"flag-qatar":{"a":"Flag: Qatar","b":"1F1F6-1F1E6","j":["flag","qa","nation","country","banner"]},"flag-runion":{"a":"Flag: RΓ©union","b":"1F1F7-1F1EA","j":["flag","flag_reunion","rΓ©union","nation","country","banner"]},"flag-romania":{"a":"Flag: Romania","b":"1F1F7-1F1F4","j":["flag","ro","nation","country","banner"]},"flag-serbia":{"a":"Flag: Serbia","b":"1F1F7-1F1F8","j":["flag","rs","nation","country","banner"]},"flag-russia":{"a":"Flag: Russia","b":"1F1F7-1F1FA","j":["flag","russian","federation","nation","country","banner"]},"flag-rwanda":{"a":"Flag: Rwanda","b":"1F1F7-1F1FC","j":["flag","rw","nation","country","banner"]},"flag-saudi-arabia":{"a":"Flag: Saudi Arabia","b":"1F1F8-1F1E6","j":["flag","nation","country","banner"]},"flag-solomon-islands":{"a":"Flag: Solomon Islands","b":"1F1F8-1F1E7","j":["flag","solomon","islands","nation","country","banner"]},"flag-seychelles":{"a":"Flag: Seychelles","b":"1F1F8-1F1E8","j":["flag","sc","nation","country","banner"]},"flag-sudan":{"a":"Flag: Sudan","b":"1F1F8-1F1E9","j":["flag","sd","nation","country","banner"]},"flag-sweden":{"a":"Flag: Sweden","b":"1F1F8-1F1EA","j":["flag","se","nation","country","banner"]},"flag-singapore":{"a":"Flag: Singapore","b":"1F1F8-1F1EC","j":["flag","sg","nation","country","banner"]},"flag-st-helena":{"a":"Flag: St. Helena","b":"1F1F8-1F1ED","j":["flag","saint","helena","ascension","tristan","cunha","nation","country","banner"]},"flag-slovenia":{"a":"Flag: Slovenia","b":"1F1F8-1F1EE","j":["flag","si","nation","country","banner"]},"flag-svalbard--jan-mayen":{"a":"Flag: Svalbard & Jan Mayen","b":"1F1F8-1F1EF","j":["flag","flag_svalbard_jan_mayen"]},"flag-slovakia":{"a":"Flag: Slovakia","b":"1F1F8-1F1F0","j":["flag","sk","nation","country","banner"]},"flag-sierra-leone":{"a":"Flag: Sierra Leone","b":"1F1F8-1F1F1","j":["flag","sierra","leone","nation","country","banner"]},"flag-san-marino":{"a":"Flag: San Marino","b":"1F1F8-1F1F2","j":["flag","san","marino","nation","country","banner"]},"flag-senegal":{"a":"Flag: Senegal","b":"1F1F8-1F1F3","j":["flag","sn","nation","country","banner"]},"flag-somalia":{"a":"Flag: Somalia","b":"1F1F8-1F1F4","j":["flag","so","nation","country","banner"]},"flag-suriname":{"a":"Flag: Suriname","b":"1F1F8-1F1F7","j":["flag","sr","nation","country","banner"]},"flag-south-sudan":{"a":"Flag: South Sudan","b":"1F1F8-1F1F8","j":["flag","south","sd","nation","country","banner"]},"flag-so-tom--prncipe":{"a":"Flag: SΓ£o TomΓ© & PrΓ­ncipe","b":"1F1F8-1F1F9","j":["flag","flag_sao_tome_principe","sao","tome","principe","nation","country","banner"]},"flag-el-salvador":{"a":"Flag: El Salvador","b":"1F1F8-1F1FB","j":["flag","el","salvador","nation","country","banner"]},"flag-sint-maarten":{"a":"Flag: Sint Maarten","b":"1F1F8-1F1FD","j":["flag","sint","maarten","dutch","nation","country","banner"]},"flag-syria":{"a":"Flag: Syria","b":"1F1F8-1F1FE","j":["flag","syrian","arab","republic","nation","country","banner"]},"flag-eswatini":{"a":"Flag: Eswatini","b":"1F1F8-1F1FF","j":["flag","sz","nation","country","banner"]},"flag-tristan-da-cunha":{"a":"Flag: Tristan Da Cunha","b":"1F1F9-1F1E6","j":["flag"]},"flag-turks--caicos-islands":{"a":"Flag: Turks & Caicos Islands","b":"1F1F9-1F1E8","j":["flag","flag_turks_caicos_islands","turks","caicos","islands","nation","country","banner"]},"flag-chad":{"a":"Flag: Chad","b":"1F1F9-1F1E9","j":["flag","td","nation","country","banner"]},"flag-french-southern-territories":{"a":"Flag: French Southern Territories","b":"1F1F9-1F1EB","j":["flag","french","southern","territories","nation","country","banner"]},"flag-togo":{"a":"Flag: Togo","b":"1F1F9-1F1EC","j":["flag","tg","nation","country","banner"]},"flag-thailand":{"a":"Flag: Thailand","b":"1F1F9-1F1ED","j":["flag","th","nation","country","banner"]},"flag-tajikistan":{"a":"Flag: Tajikistan","b":"1F1F9-1F1EF","j":["flag","tj","nation","country","banner"]},"flag-tokelau":{"a":"Flag: Tokelau","b":"1F1F9-1F1F0","j":["flag","tk","nation","country","banner"]},"flag-timorleste":{"a":"Flag: Timor-Leste","b":"1F1F9-1F1F1","j":["flag","flag_timor_leste","timor","leste","nation","country","banner"]},"flag-turkmenistan":{"a":"Flag: Turkmenistan","b":"1F1F9-1F1F2","j":["flag","nation","country","banner"]},"flag-tunisia":{"a":"Flag: Tunisia","b":"1F1F9-1F1F3","j":["flag","tn","nation","country","banner"]},"flag-tonga":{"a":"Flag: Tonga","b":"1F1F9-1F1F4","j":["flag","to","nation","country","banner"]},"flag-turkey":{"a":"Flag: Turkey","b":"1F1F9-1F1F7","j":["flag","turkey","nation","country","banner"]},"flag-trinidad--tobago":{"a":"Flag: Trinidad & Tobago","b":"1F1F9-1F1F9","j":["flag","flag_trinidad_tobago","trinidad","tobago","nation","country","banner"]},"flag-tuvalu":{"a":"Flag: Tuvalu","b":"1F1F9-1F1FB","j":["flag","nation","country","banner"]},"flag-taiwan":{"a":"Flag: Taiwan","b":"1F1F9-1F1FC","j":["flag","tw","nation","country","banner"]},"flag-tanzania":{"a":"Flag: Tanzania","b":"1F1F9-1F1FF","j":["flag","tanzania","united","republic","nation","country","banner"]},"flag-ukraine":{"a":"Flag: Ukraine","b":"1F1FA-1F1E6","j":["flag","ua","nation","country","banner"]},"flag-uganda":{"a":"Flag: Uganda","b":"1F1FA-1F1EC","j":["flag","ug","nation","country","banner"]},"flag-us-outlying-islands":{"a":"Flag: U.S. Outlying Islands","b":"1F1FA-1F1F2","j":["flag","flag_u_s_outlying_islands"]},"flag-united-nations":{"a":"Flag: United Nations","b":"1F1FA-1F1F3","j":["flag","un","banner"]},"flag-united-states":{"a":"Flag: United States","b":"1F1FA-1F1F8","j":["flag","united","states","america","nation","country","banner"]},"flag-uruguay":{"a":"Flag: Uruguay","b":"1F1FA-1F1FE","j":["flag","uy","nation","country","banner"]},"flag-uzbekistan":{"a":"Flag: Uzbekistan","b":"1F1FA-1F1FF","j":["flag","uz","nation","country","banner"]},"flag-vatican-city":{"a":"Flag: Vatican City","b":"1F1FB-1F1E6","j":["flag","vatican","city","nation","country","banner"]},"flag-st-vincent--grenadines":{"a":"Flag: St. Vincent & Grenadines","b":"1F1FB-1F1E8","j":["flag","flag_st_vincent_grenadines","saint","vincent","grenadines","nation","country","banner"]},"flag-venezuela":{"a":"Flag: Venezuela","b":"1F1FB-1F1EA","j":["flag","ve","bolivarian","republic","nation","country","banner"]},"flag-british-virgin-islands":{"a":"Flag: British Virgin Islands","b":"1F1FB-1F1EC","j":["flag","british","virgin","islands","bvi","nation","country","banner"]},"flag-us-virgin-islands":{"a":"Flag: U.S. Virgin Islands","b":"1F1FB-1F1EE","j":["flag","flag_u_s_virgin_islands","virgin","islands","us","nation","country","banner"]},"flag-vietnam":{"a":"Flag: Vietnam","b":"1F1FB-1F1F3","j":["flag","viet","nam","nation","country","banner"]},"flag-vanuatu":{"a":"Flag: Vanuatu","b":"1F1FB-1F1FA","j":["flag","vu","nation","country","banner"]},"flag-wallis--futuna":{"a":"Flag: Wallis & Futuna","b":"1F1FC-1F1EB","j":["flag","flag_wallis_futuna","wallis","futuna","nation","country","banner"]},"flag-samoa":{"a":"Flag: Samoa","b":"1F1FC-1F1F8","j":["flag","ws","nation","country","banner"]},"flag-kosovo":{"a":"Flag: Kosovo","b":"1F1FD-1F1F0","j":["flag","xk","nation","country","banner"]},"flag-yemen":{"a":"Flag: Yemen","b":"1F1FE-1F1EA","j":["flag","ye","nation","country","banner"]},"flag-mayotte":{"a":"Flag: Mayotte","b":"1F1FE-1F1F9","j":["flag","yt","nation","country","banner"]},"flag-south-africa":{"a":"Flag: South Africa","b":"1F1FF-1F1E6","j":["flag","south","africa","nation","country","banner"]},"flag-zambia":{"a":"Flag: Zambia","b":"1F1FF-1F1F2","j":["flag","zm","nation","country","banner"]},"flag-zimbabwe":{"a":"Flag: Zimbabwe","b":"1F1FF-1F1FC","j":["flag","zw","nation","country","banner"]},"flag-england":{"a":"Flag: England","b":"1F3F4-E0067-E0062-E0065-E006E-E0067-E007F","j":["flag","english"]},"flag-scotland":{"a":"Flag: Scotland","b":"1F3F4-E0067-E0062-E0073-E0063-E0074-E007F","j":["flag","scottish"]},"flag-wales":{"a":"Flag: Wales","b":"1F3F4-E0067-E0062-E0077-E006C-E0073-E007F","j":["flag","welsh"]}},"aliases":{}} \ No newline at end of file From 5ee8cf7ebf6cbda0bdd292fd264f8dfe62e61027 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 9 Apr 2021 12:38:55 +0200 Subject: [PATCH 27/49] Prepare release 1.1.4 --- CHANGES.md | 11 +---------- .../metadata/android/en-US/changelogs/40101040.txt | 2 ++ 2 files changed, 3 insertions(+), 10 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/40101040.txt diff --git a/CHANGES.md b/CHANGES.md index 996e59a00c..40228f7db8 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,9 +1,6 @@ -Changes in Element 1.1.4 (2021-XX-XX) +Changes in Element 1.1.4 (2021-04-09) =================================================== -Features ✨: - - - Improvements πŸ™Œ: - Split network request `/keys/query` into smaller requests (250 users max) (#2925) - Crypto improvement |Β Bulk send NO_OLM withheld code @@ -30,9 +27,6 @@ Bugfix πŸ›: - If signout request fails, do not start LoginActivity, but restart the app (#3099) - Retain keyword order in emoji import script, and update the generated file (#3147) -Translations πŸ—£: - - - SDK API changes ⚠️: - Several Services have been migrated to coroutines (#2449) - Removes filtering options on Timeline. @@ -40,9 +34,6 @@ SDK API changes ⚠️: Build 🧱: - Properly exclude gms dependencies in fdroid build flavour which were pulled in through the jitsi SDK (#3125) -Test: - - - Other changes: - Add version details on the login screen, in debug or developer mode - Migrate Retrofit interface to coroutine calls diff --git a/fastlane/metadata/android/en-US/changelogs/40101040.txt b/fastlane/metadata/android/en-US/changelogs/40101040.txt new file mode 100644 index 0000000000..e8977f3211 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/40101040.txt @@ -0,0 +1,2 @@ +Main changes in this version: performance improvement and bug fixes! +Full changelog: https://github.com/vector-im/element-android/releases/tag/v1.1.4 \ No newline at end of file From bec6cfc46dd4f790391c66434ddd066815b10153 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 9 Apr 2021 12:42:59 +0200 Subject: [PATCH 28/49] Version++ --- CHANGES.md | 27 +++++++++++++++++++++++++++ vector/build.gradle | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 40228f7db8..a73551cc33 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,30 @@ +Changes in Element 1.1.5 (2021-XX-XX) +=================================================== + +Features ✨: + - + +Improvements πŸ™Œ: + - + +Bugfix πŸ›: + - + +Translations πŸ—£: + - + +SDK API changes ⚠️: + - + +Build 🧱: + - + +Test: + - + +Other changes: + - + Changes in Element 1.1.4 (2021-04-09) =================================================== diff --git a/vector/build.gradle b/vector/build.gradle index d5a105d893..d561382e2d 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -14,7 +14,7 @@ kapt { // Note: 2 digits max for each value ext.versionMajor = 1 ext.versionMinor = 1 -ext.versionPatch = 4 +ext.versionPatch = 5 static def getGitTimestamp() { def cmd = 'git show -s --format=%ct' From 37226a1641d9d437def9a1304f3d58e00d031a80 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 9 Apr 2021 16:58:41 +0200 Subject: [PATCH 29/49] Small cleanup --- matrix-sdk-android-rx/src/main/AndroidManifest.xml | 3 +-- .../android/sdk/internal/crypto/model/CryptoDeviceInfo.kt | 4 ++-- .../android/sdk/internal/crypto/model/MXDeviceInfo.kt | 4 ++-- .../java/im/vector/app/core/resources/AppNameProvider.kt | 6 +++--- .../im/vector/app/features/call/dialpad/DialPadFragment.kt | 2 +- vector/src/main/res/layout/dialog_export_e2e_keys.xml | 1 - 6 files changed, 9 insertions(+), 11 deletions(-) diff --git a/matrix-sdk-android-rx/src/main/AndroidManifest.xml b/matrix-sdk-android-rx/src/main/AndroidManifest.xml index f1bb42638f..5f399e9f84 100644 --- a/matrix-sdk-android-rx/src/main/AndroidManifest.xml +++ b/matrix-sdk-android-rx/src/main/AndroidManifest.xml @@ -1,2 +1 @@ - + diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/CryptoDeviceInfo.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/CryptoDeviceInfo.kt index 7eebbd9b2c..4004294d97 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/CryptoDeviceInfo.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/CryptoDeviceInfo.kt @@ -44,7 +44,7 @@ data class CryptoDeviceInfo( */ fun fingerprint(): String? { return keys - ?.takeIf { !deviceId.isBlank() } + ?.takeIf { deviceId.isNotBlank() } ?.get("ed25519:$deviceId") } @@ -53,7 +53,7 @@ data class CryptoDeviceInfo( */ fun identityKey(): String? { return keys - ?.takeIf { !deviceId.isBlank() } + ?.takeIf { deviceId.isNotBlank() } ?.get("curve25519:$deviceId") } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/MXDeviceInfo.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/MXDeviceInfo.kt index 3c651c27a0..00b8bde5d9 100755 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/MXDeviceInfo.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/MXDeviceInfo.kt @@ -103,7 +103,7 @@ data class MXDeviceInfo( */ fun fingerprint(): String? { return keys - ?.takeIf { !deviceId.isBlank() } + ?.takeIf { deviceId.isNotBlank() } ?.get("ed25519:$deviceId") } @@ -112,7 +112,7 @@ data class MXDeviceInfo( */ fun identityKey(): String? { return keys - ?.takeIf { !deviceId.isBlank() } + ?.takeIf { deviceId.isNotBlank() } ?.get("curve25519:$deviceId") } diff --git a/vector/src/main/java/im/vector/app/core/resources/AppNameProvider.kt b/vector/src/main/java/im/vector/app/core/resources/AppNameProvider.kt index 9874c1744f..90558e35b7 100644 --- a/vector/src/main/java/im/vector/app/core/resources/AppNameProvider.kt +++ b/vector/src/main/java/im/vector/app/core/resources/AppNameProvider.kt @@ -23,7 +23,7 @@ import javax.inject.Inject class AppNameProvider @Inject constructor(private val context: Context) { fun getAppName(): String { - try { + return try { val appPackageName = context.applicationContext.packageName val pm = context.packageManager val appInfo = pm.getApplicationInfo(appPackageName, 0) @@ -33,10 +33,10 @@ class AppNameProvider @Inject constructor(private val context: Context) { if (!appName.matches("\\A\\p{ASCII}*\\z".toRegex())) { appName = appPackageName } - return appName + appName } catch (e: Exception) { Timber.e(e, "## AppNameProvider() : failed") - return "ElementAndroid" + "ElementAndroid" } } } diff --git a/vector/src/main/java/im/vector/app/features/call/dialpad/DialPadFragment.kt b/vector/src/main/java/im/vector/app/features/call/dialpad/DialPadFragment.kt index b488a1af0e..11c3af9394 100644 --- a/vector/src/main/java/im/vector/app/features/call/dialpad/DialPadFragment.kt +++ b/vector/src/main/java/im/vector/app/features/call/dialpad/DialPadFragment.kt @@ -146,7 +146,7 @@ class DialPadFragment : Fragment() { } private fun poll() { - if (!input.isEmpty()) { + if (input.isNotEmpty()) { input = input.substring(0, input.length - 1) formatter = PhoneNumberUtil.getInstance().getAsYouTypeFormatter(regionCode) if (formatAsYouType) { diff --git a/vector/src/main/res/layout/dialog_export_e2e_keys.xml b/vector/src/main/res/layout/dialog_export_e2e_keys.xml index 10c9dcd59b..eedaa81857 100644 --- a/vector/src/main/res/layout/dialog_export_e2e_keys.xml +++ b/vector/src/main/res/layout/dialog_export_e2e_keys.xml @@ -1,7 +1,6 @@ Date: Fri, 9 Apr 2021 17:05:09 +0200 Subject: [PATCH 30/49] Small cleanup --- vector/src/debug/res/layout/item_sas_emoji.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vector/src/debug/res/layout/item_sas_emoji.xml b/vector/src/debug/res/layout/item_sas_emoji.xml index 53fd448f90..fc56bc1948 100644 --- a/vector/src/debug/res/layout/item_sas_emoji.xml +++ b/vector/src/debug/res/layout/item_sas_emoji.xml @@ -39,7 +39,7 @@ android:layout_height="wrap_content" android:layout_marginStart="8dp" android:textSize="16sp" - tools:text="@string/verification_emoji_wrench" /> + tools:text="@string/verification_emoji_spanner" /> + tools:text="verification_emoji_spanner" /> From a1209c83bb832252101d68b3e5f260c9855c70e6 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 9 Apr 2021 19:58:29 +0200 Subject: [PATCH 31/49] New store descriptions --- CHANGES.md | 2 +- .../android/en-US/full_description.txt | 45 +++++++++++-------- .../android/en-US/short_description.txt | 2 +- fastlane/metadata/android/en-US/title.txt | 2 +- 4 files changed, 30 insertions(+), 21 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index a73551cc33..d946f6ef8a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -23,7 +23,7 @@ Test: - Other changes: - - + - New store descriptions Changes in Element 1.1.4 (2021-04-09) =================================================== diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt index e939b75bb7..853885944c 100644 --- a/fastlane/metadata/android/en-US/full_description.txt +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -1,30 +1,39 @@ -Element is a new type of messenger and collaboration app that: +Element is both a secure messenger and a productivity team collaboration app that is ideal for group chats while remote working. This chat app uses end-to-end encryption to provide powerful video conferencing, file sharing and voice calls. -1. Puts you in control to preserve your privacy -2. Lets you communicate with anyone in the Matrix network, and even beyond by integrating with apps such as Slack -3. Protects you from advertising, datamining and walled gardens -4. Secures you through end-to-end encryption, with cross-signing to verify others +Element’s features include: +- Advanced online communication tools +- Fully encrypted messages to allow safer corporate communication, even for remote workers +- Decentralized chat based on the Matrix open source framework +- File sharing securely with encrypted data while managing projects +- Video chats with Voice over IP and screen sharing +- Easy integration with your favourite online collaboration tools, project management tools, VoIP services and other team messaging apps -Element is completely different from other messaging and collaboration apps because it is decentralised and open source. +Element is completely different from other messaging and collaboration apps. It operates on Matrix, an open network for secure messaging and decentralized communication. It allows self-hosting to give users maximum ownership and control of their data and messages. -Element lets you self-host - or choose a host - so that you have privacy, ownership and control of your data and conversations. It gives you access to an open network; so you’re not just stuck speaking to other Element users only. And it is very secure. +Privacy and encrypted messaging +Element protects you from unwanted ads, data mining and walled gardens. It also secures all your data, one-to-one video and voice communication through end-to-end encryption and cross-signed device verification. -Element is able to do all this because it operates on Matrix - the standard for open, decentralised communication. +Element gives you control over your privacy while allowing you to communicate securely with anyone on the Matrix network, or other business collaboration tools by integrating with apps such as Slack. -Element puts you in control by letting you choose who hosts your conversations. From the Element app, you can choose to host in different ways: +Element can be self-hosted +To allow more control of your sensitive data and conversations, Element can be self-hosted or you can choose any Matrix-based host - the standard for open source, decentralized communication. Element gives you privacy, security compliance and integration flexibility. +Own your data +You decide where to keep your data and messages. Without the risk of data mining or access from third parties. + +Element puts you in control in different ways: 1. Get a free account on the matrix.org public server hosted by the Matrix developers, or choose from thousands of public servers hosted by volunteers -2. Self-host your account by running a server on your own hardware +2. Self-host your account by running a server on your own IT infrastructure 3. Sign up for an account on a custom server by simply subscribing to the Element Matrix Services hosting platform -Why choose Element? +Open messaging and collaboration +You can chat with anyone on the Matrix network, whether they’re using Element, another Matrix app or even if they are using a different messaging app. -OWN YOUR DATA: You decide where to keep your data and messages. You own it and control it, not some MEGACORP that mines your data or gives access to third parties. +Super secure +Real end-to-end encryption (only those in the conversation can decrypt messages), and cross-signed device verification. -OPEN MESSAGING AND COLLABORATION: You can chat with anyone else in the Matrix network, whether they’re using Element or another Matrix app, and even if they are using a different messaging system of the likes of Slack, IRC or XMPP. +Complete communication and integration +Messaging, voice and video calls, file sharing, screen sharing and a whole bunch of integrations, bots and widgets. Build rooms, communities, stay in touch and get things done. -SUPER-SECURE: Real end-to-end encryption (only those in the conversation can decrypt messages), and cross-signing to verify the devices of conversation participants. - -COMPLETE COMMUNICATION: Messaging, voice and video calls, file sharing, screen sharing and a whole bunch of integrations, bots and widgets. Build rooms, communities, stay in touch and get things done. - -EVERYWHERE YOU ARE: Stay in touch wherever you are with fully synchronised message history across all your devices and on the web at https://app.element.io. +Pick up where you left off +Stay in touch wherever you are with fully synchronised message history across all your devices and on the web at https://app.element.io \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/short_description.txt b/fastlane/metadata/android/en-US/short_description.txt index 023b366c9a..5a98f6f772 100644 --- a/fastlane/metadata/android/en-US/short_description.txt +++ b/fastlane/metadata/android/en-US/short_description.txt @@ -1 +1 @@ -Secure decentralised chat & VoIP. Keep your data safe from third parties. \ No newline at end of file +Group messenger - encrypted messaging, group chat and video calls \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/title.txt b/fastlane/metadata/android/en-US/title.txt index 039da1fc3b..12fa89b99b 100644 --- a/fastlane/metadata/android/en-US/title.txt +++ b/fastlane/metadata/android/en-US/title.txt @@ -1 +1 @@ -Element (previously Riot.im) \ No newline at end of file +Element - Secure Messenger \ No newline at end of file From e404589544f73e2ad3cd6869dd67cc71ee74e565 Mon Sep 17 00:00:00 2001 From: gradle-update-robot Date: Sat, 10 Apr 2021 01:06:51 +0000 Subject: [PATCH 32/49] Update Gradle Wrapper from 6.8.3 to 7.0. Signed-off-by: gradle-update-robot --- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 6e61ea7487..9d174797f7 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=9af5c8e7e2cd1a3b0f694a4ac262b9f38c75262e74a9e8b5101af302a6beadd7 -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-all.zip +distributionSha256Sum=81003f83b0056d20eedf48cddd4f52a9813163d4ba185bcf8abd34b8eeea4cbd +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From a9ef58912f360309e90a6d51e520fdbf051865a5 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Sat, 10 Apr 2021 08:45:27 +0200 Subject: [PATCH 33/49] http -> https Fix the followinf error, since gradle 7: `Using insecure protocols with repositories, without explicit opt-in, is unsupported. Switch Maven repository 'maven2(http://dl.bintray.com/piasy/maven)' to redirect to a secure protocol (like HTTPS) or allow insecure protocols. See https://docs.gradle.org/7.0/dsl/org.gradle.api.artifacts.repositories.UrlArtifactRepository.html#org.gradle.api.artifacts.repositories.UrlArtifactRepository:allowInsecureProtocol for more details.` --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index b8da6c3864..d645382015 100644 --- a/build.gradle +++ b/build.gradle @@ -51,7 +51,7 @@ allprojects { } } maven { - url "http://dl.bintray.com/piasy/maven" + url "https://dl.bintray.com/piasy/maven" content { includeGroupByRegex "com\\.github\\.piasy" } From 66db67e8571a3f3edfa7de2438e5b4a99f8d3704 Mon Sep 17 00:00:00 2001 From: Dominic Fischer Date: Sat, 10 Apr 2021 16:43:16 +0100 Subject: [PATCH 34/49] Missed a spot Signed-off-by: Dominic Fischer --- .../src/main/java/org/matrix/android/sdk/rx/RxSession.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/matrix-sdk-android-rx/src/main/java/org/matrix/android/sdk/rx/RxSession.kt b/matrix-sdk-android-rx/src/main/java/org/matrix/android/sdk/rx/RxSession.kt index cac0a32232..0fe2b01576 100644 --- a/matrix-sdk-android-rx/src/main/java/org/matrix/android/sdk/rx/RxSession.kt +++ b/matrix-sdk-android-rx/src/main/java/org/matrix/android/sdk/rx/RxSession.kt @@ -141,8 +141,8 @@ class RxSession(private val session: Session) { } fun getRoomIdByAlias(roomAlias: String, - searchOnServer: Boolean): Single> = singleBuilder { - session.getRoomIdByAlias(roomAlias, searchOnServer, it) + searchOnServer: Boolean): Single> = rxSingle { + session.getRoomIdByAlias(roomAlias, searchOnServer) } fun getProfileInfo(userId: String): Single = rxSingle { From 759528f19a543b6899caf8de65415e1e42f5cad1 Mon Sep 17 00:00:00 2001 From: Dominic Fischer Date: Sun, 11 Apr 2021 10:54:17 +0100 Subject: [PATCH 35/49] Missed another spot Signed-off-by: Dominic Fischer --- .../java/im/vector/app/features/home/HomeDetailViewModel.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt index c87b19f0e6..908270cb79 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt @@ -109,9 +109,7 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho ) .map { it.roomId } try { - awaitCallback { - session.markAllAsRead(roomIds, it) - } + session.markAllAsRead(roomIds) } catch (failure: Throwable) { Timber.d(failure, "Failed to mark all as read") } From 35667db29c3c2a82cee53edcea9940d3ebec543b Mon Sep 17 00:00:00 2001 From: Dominic Fischer Date: Sun, 11 Apr 2021 11:35:28 +0100 Subject: [PATCH 36/49] Lint --- .../main/java/im/vector/app/features/home/HomeDetailViewModel.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt index 908270cb79..d6a8b075f4 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt @@ -35,7 +35,6 @@ import org.matrix.android.sdk.api.query.RoomCategoryFilter import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.room.model.Membership import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams -import org.matrix.android.sdk.internal.util.awaitCallback import org.matrix.android.sdk.rx.asObservable import org.matrix.android.sdk.rx.rx import timber.log.Timber From 984342a6ddc2f9a2d4c677c8c331c14bab2b105f Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Sun, 11 Apr 2021 21:07:08 +0200 Subject: [PATCH 37/49] Upgrade com.likethesalad.android:string-reference to 1.2.2 Compatible with gradle7, see https://github.com/LikeTheSalad/android-string-reference/issues/11 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index d645382015..3268cfa084 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ buildscript { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.1.1' classpath 'com.google.android.gms:oss-licenses-plugin:0.10.3' - classpath "com.likethesalad.android:string-reference:1.2.1" + classpath "com.likethesalad.android:string-reference:1.2.2" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files From 5ca71a10ec9d8aa0f2c1c2ae1a957c453937f5e8 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 12 Apr 2021 10:46:03 +0200 Subject: [PATCH 38/49] Changelog --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index a73551cc33..79fc7eba95 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -17,7 +17,7 @@ SDK API changes ⚠️: - Build 🧱: - - + - Upgrade to gradle 7 Test: - From ce7e00a499c7adf0aaf8d5fec559ad7a3a6e82fa Mon Sep 17 00:00:00 2001 From: Onuray Sahin Date: Tue, 13 Apr 2021 11:48:12 +0300 Subject: [PATCH 39/49] Fix send state image color on dark theme. --- CHANGES.md | 2 +- vector/src/main/res/layout/item_timeline_event_base.xml | 2 ++ vector/src/main/res/values/colors.xml | 6 ++---- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 3012560ed6..9c50c2a2ee 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -8,7 +8,7 @@ Improvements πŸ™Œ: - Bugfix πŸ›: - - + - Message states cosmetic changes (#3007) Translations πŸ—£: - diff --git a/vector/src/main/res/layout/item_timeline_event_base.xml b/vector/src/main/res/layout/item_timeline_event_base.xml index f9562f65b0..0515ace033 100644 --- a/vector/src/main/res/layout/item_timeline_event_base.xml +++ b/vector/src/main/res/layout/item_timeline_event_base.xml @@ -145,6 +145,7 @@ android:layout_marginBottom="4dp" android:contentDescription="@string/event_status_a11y_sending" android:src="@drawable/ic_sending_message" + android:tint="?riotx_text_tertiary" android:visibility="gone" tools:visibility="visible" /> @@ -158,6 +159,7 @@ android:layout_marginStart="8dp" android:layout_marginEnd="8dp" android:layout_marginBottom="4dp" + android:tint="?riotx_text_tertiary" android:visibility="gone" tools:visibility="visible" /> diff --git a/vector/src/main/res/values/colors.xml b/vector/src/main/res/values/colors.xml index 7561e6f843..f4a026bea3 100644 --- a/vector/src/main/res/values/colors.xml +++ b/vector/src/main/res/values/colors.xml @@ -198,10 +198,8 @@ #FF8D99A5 - - #FF8D99A5 - - #FF8D99A5 + #FF8E99A4 + #FF8E99A4 #FF61708B From 699b1429b73cb217bf9cafd32bb65349f33aed11 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 14 Apr 2021 12:42:47 +0200 Subject: [PATCH 40/49] Simplify `LoginFlowResult` model --- .../sdk/api/auth/data/LoginFlowResult.kt | 16 +++--- .../auth/DefaultAuthenticationService.kt | 28 +++++----- .../app/features/login/LoginViewModel.kt | 52 +++++++++---------- .../signout/soft/SoftLogoutViewModel.kt | 28 +++++----- 4 files changed, 60 insertions(+), 64 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/LoginFlowResult.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/LoginFlowResult.kt index f1f9ba3916..7d1407c0d8 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/LoginFlowResult.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/LoginFlowResult.kt @@ -16,12 +16,10 @@ package org.matrix.android.sdk.api.auth.data -sealed class LoginFlowResult { - data class Success( - val supportedLoginTypes: List, - val ssoIdentityProviders: List?, - val isLoginAndRegistrationSupported: Boolean, - val homeServerUrl: String, - val isOutdatedHomeserver: Boolean - ) : LoginFlowResult() -} +data class LoginFlowResult( + val supportedLoginTypes: List, + val ssoIdentityProviders: List?, + val isLoginAndRegistrationSupported: Boolean, + val homeServerUrl: String, + val isOutdatedHomeserver: Boolean +) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/DefaultAuthenticationService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/DefaultAuthenticationService.kt index e26286ad2f..46256f4b81 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/DefaultAuthenticationService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/DefaultAuthenticationService.kt @@ -144,16 +144,14 @@ internal class DefaultAuthenticationService @Inject constructor( } return result.fold( { - if (it is LoginFlowResult.Success) { - // The homeserver exists and up to date, keep the config - // Homeserver url may have been changed, if it was a Riot url - val alteredHomeServerConnectionConfig = homeServerConnectionConfig.copy( - homeServerUri = Uri.parse(it.homeServerUrl) - ) + // The homeserver exists and up to date, keep the config + // Homeserver url may have been changed, if it was a Riot url + val alteredHomeServerConnectionConfig = homeServerConnectionConfig.copy( + homeServerUri = Uri.parse(it.homeServerUrl) + ) - pendingSessionData = PendingSessionData(alteredHomeServerConnectionConfig) - .also { data -> pendingSessionStore.savePendingSessionData(data) } - } + pendingSessionData = PendingSessionData(alteredHomeServerConnectionConfig) + .also { data -> pendingSessionStore.savePendingSessionData(data) } it }, { @@ -307,12 +305,12 @@ internal class DefaultAuthenticationService @Inject constructor( val loginFlowResponse = executeRequest(null) { authAPI.getLoginFlows() } - return LoginFlowResult.Success( - loginFlowResponse.flows.orEmpty().mapNotNull { it.type }, - loginFlowResponse.flows.orEmpty().firstOrNull { it.type == LoginFlowTypes.SSO }?.ssoIdentityProvider, - versions.isLoginAndRegistrationSupportedBySdk(), - homeServerUrl, - !versions.isSupportedBySdk() + return LoginFlowResult( + supportedLoginTypes = loginFlowResponse.flows.orEmpty().mapNotNull { it.type }, + ssoIdentityProviders = loginFlowResponse.flows.orEmpty().firstOrNull { it.type == LoginFlowTypes.SSO }?.ssoIdentityProvider, + isLoginAndRegistrationSupported = versions.isLoginAndRegistrationSupportedBySdk(), + homeServerUrl = homeServerUrl, + isOutdatedHomeserver = !versions.isSupportedBySdk() ) } diff --git a/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt b/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt index 792c74e019..dd1b024b31 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt @@ -773,34 +773,34 @@ class LoginViewModel @AssistedInject constructor( null } - if (data is LoginFlowResult.Success) { - // Valid Homeserver, add it to the history. - // Note: we add what the user has input, data.homeServerUrl can be different - rememberHomeServer(homeServerConnectionConfig.homeServerUri.toString()) + data ?: return@launch - val loginMode = when { - // SSO login is taken first - data.supportedLoginTypes.contains(LoginFlowTypes.SSO) - && data.supportedLoginTypes.contains(LoginFlowTypes.PASSWORD) -> LoginMode.SsoAndPassword(data.ssoIdentityProviders) - data.supportedLoginTypes.contains(LoginFlowTypes.SSO) -> LoginMode.Sso(data.ssoIdentityProviders) - data.supportedLoginTypes.contains(LoginFlowTypes.PASSWORD) -> LoginMode.Password - else -> LoginMode.Unsupported - } + // Valid Homeserver, add it to the history. + // Note: we add what the user has input, data.homeServerUrl can be different + rememberHomeServer(homeServerConnectionConfig.homeServerUri.toString()) - // FIXME We should post a view event here normally? - setState { - copy( - asyncHomeServerLoginFlowRequest = Uninitialized, - homeServerUrl = data.homeServerUrl, - loginMode = loginMode, - loginModeSupportedTypes = data.supportedLoginTypes.toList() - ) - } - if ((loginMode == LoginMode.Password && !data.isLoginAndRegistrationSupported) - || data.isOutdatedHomeserver) { - // Notify the UI - _viewEvents.post(LoginViewEvents.OutdatedHomeserver) - } + val loginMode = when { + // SSO login is taken first + data.supportedLoginTypes.contains(LoginFlowTypes.SSO) + && data.supportedLoginTypes.contains(LoginFlowTypes.PASSWORD) -> LoginMode.SsoAndPassword(data.ssoIdentityProviders) + data.supportedLoginTypes.contains(LoginFlowTypes.SSO) -> LoginMode.Sso(data.ssoIdentityProviders) + data.supportedLoginTypes.contains(LoginFlowTypes.PASSWORD) -> LoginMode.Password + else -> LoginMode.Unsupported + } + + // FIXME We should post a view event here normally? + setState { + copy( + asyncHomeServerLoginFlowRequest = Uninitialized, + homeServerUrl = data.homeServerUrl, + loginMode = loginMode, + loginModeSupportedTypes = data.supportedLoginTypes.toList() + ) + } + if ((loginMode == LoginMode.Password && !data.isLoginAndRegistrationSupported) + || data.isOutdatedHomeserver) { + // Notify the UI + _viewEvents.post(LoginViewEvents.OutdatedHomeserver) } } } diff --git a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewModel.kt b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewModel.kt index 2c0b78a546..4bce45dfc2 100644 --- a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewModel.kt @@ -100,21 +100,21 @@ class SoftLogoutViewModel @AssistedInject constructor( null } - if (data is LoginFlowResult.Success) { - val loginMode = when { - // SSO login is taken first - data.supportedLoginTypes.contains(LoginFlowTypes.SSO) - && data.supportedLoginTypes.contains(LoginFlowTypes.PASSWORD) -> LoginMode.SsoAndPassword(data.ssoIdentityProviders) - data.supportedLoginTypes.contains(LoginFlowTypes.SSO) -> LoginMode.Sso(data.ssoIdentityProviders) - data.supportedLoginTypes.contains(LoginFlowTypes.PASSWORD) -> LoginMode.Password - else -> LoginMode.Unsupported - } + data ?: return@launch - setState { - copy( - asyncHomeServerLoginFlowRequest = Success(loginMode) - ) - } + val loginMode = when { + // SSO login is taken first + data.supportedLoginTypes.contains(LoginFlowTypes.SSO) + && data.supportedLoginTypes.contains(LoginFlowTypes.PASSWORD) -> LoginMode.SsoAndPassword(data.ssoIdentityProviders) + data.supportedLoginTypes.contains(LoginFlowTypes.SSO) -> LoginMode.Sso(data.ssoIdentityProviders) + data.supportedLoginTypes.contains(LoginFlowTypes.PASSWORD) -> LoginMode.Password + else -> LoginMode.Unsupported + } + + setState { + copy( + asyncHomeServerLoginFlowRequest = Success(loginMode) + ) } } } From 89c2662e09ea290ff6a00011d7b967d5fb830dd7 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 14 Apr 2021 12:44:48 +0200 Subject: [PATCH 41/49] Fix social login button rendering on old OS --- .../vector/app/features/login/LoginFragment.kt | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt b/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt index 5ba1fa394b..85ed6702ad 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt @@ -91,18 +91,29 @@ class LoginFragment @Inject constructor() : AbstractSSOLoginFragment { views.loginField.setAutofillHints(HintConstants.AUTOFILL_HINT_NEW_USERNAME) views.passwordField.setAutofillHints(HintConstants.AUTOFILL_HINT_NEW_PASSWORD) - views.loginSocialLoginButtons.mode = SocialLoginButtonsView.Mode.MODE_SIGN_UP } SignMode.SignIn, SignMode.SignInWithMatrixId -> { views.loginField.setAutofillHints(HintConstants.AUTOFILL_HINT_USERNAME) views.passwordField.setAutofillHints(HintConstants.AUTOFILL_HINT_PASSWORD) - views.loginSocialLoginButtons.mode = SocialLoginButtonsView.Mode.MODE_SIGN_IN } }.exhaustive } } + private fun setupSocialLoginButtons(state: LoginViewState) { + when (state.signMode) { + SignMode.Unknown -> error("developer error") + SignMode.SignUp -> { + views.loginSocialLoginButtons.mode = SocialLoginButtonsView.Mode.MODE_SIGN_UP + } + SignMode.SignIn, + SignMode.SignInWithMatrixId -> { + views.loginSocialLoginButtons.mode = SocialLoginButtonsView.Mode.MODE_SIGN_IN + } + }.exhaustive + } + private fun submit() { cleanupUi() @@ -277,6 +288,7 @@ class LoginFragment @Inject constructor() : AbstractSSOLoginFragment Date: Wed, 14 Apr 2021 12:48:33 +0200 Subject: [PATCH 42/49] compact code --- .../java/im/vector/app/features/login/LoginFragment.kt | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt b/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt index 85ed6702ad..389895c179 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginFragment.kt @@ -102,15 +102,11 @@ class LoginFragment @Inject constructor() : AbstractSSOLoginFragment error("developer error") - SignMode.SignUp -> { - views.loginSocialLoginButtons.mode = SocialLoginButtonsView.Mode.MODE_SIGN_UP - } + SignMode.SignUp -> SocialLoginButtonsView.Mode.MODE_SIGN_UP SignMode.SignIn, - SignMode.SignInWithMatrixId -> { - views.loginSocialLoginButtons.mode = SocialLoginButtonsView.Mode.MODE_SIGN_IN - } + SignMode.SignInWithMatrixId -> SocialLoginButtonsView.Mode.MODE_SIGN_IN }.exhaustive } From 057295c155b206ff6b0498c081707a7c1b5268ba Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 14 Apr 2021 20:12:57 +0200 Subject: [PATCH 43/49] Cleanup --- .../src/main/java/im/vector/app/features/login/LoginViewModel.kt | 1 - .../im/vector/app/features/signout/soft/SoftLogoutViewModel.kt | 1 - 2 files changed, 2 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt b/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt index dd1b024b31..ce68ff4f38 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginViewModel.kt @@ -43,7 +43,6 @@ import kotlinx.coroutines.launch import org.matrix.android.sdk.api.auth.AuthenticationService import org.matrix.android.sdk.api.auth.HomeServerHistoryService import org.matrix.android.sdk.api.auth.data.HomeServerConnectionConfig -import org.matrix.android.sdk.api.auth.data.LoginFlowResult import org.matrix.android.sdk.api.auth.data.LoginFlowTypes import org.matrix.android.sdk.api.auth.login.LoginWizard import org.matrix.android.sdk.api.auth.registration.FlowResult diff --git a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewModel.kt b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewModel.kt index 4bce45dfc2..5fa14b7f08 100644 --- a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewModel.kt @@ -33,7 +33,6 @@ import im.vector.app.core.platform.VectorViewModel import im.vector.app.features.login.LoginMode import kotlinx.coroutines.launch import org.matrix.android.sdk.api.auth.AuthenticationService -import org.matrix.android.sdk.api.auth.data.LoginFlowResult import org.matrix.android.sdk.api.auth.data.LoginFlowTypes import org.matrix.android.sdk.api.session.Session import timber.log.Timber From 59637c4a6bcfd3545a8e72a20c2bf8113aab6f86 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 14 Apr 2021 21:30:29 +0200 Subject: [PATCH 44/49] Revert to Realm 10.3.1 to fix issue with migration Waiting for https://github.com/realm/realm-java/issues/7402 --- CHANGES.md | 6 ++++++ matrix-sdk-android/build.gradle | 7 +++++-- vector/build.gradle | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 40228f7db8..7201c75850 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,9 @@ +Changes in Element 1.1.5 (2021-XX-XX) +=================================================== + +Bugfix πŸ›: + - Fix crash during Realm migration + Changes in Element 1.1.4 (2021-04-09) =================================================== diff --git a/matrix-sdk-android/build.gradle b/matrix-sdk-android/build.gradle index 34460c6ab5..1191e11b11 100644 --- a/matrix-sdk-android/build.gradle +++ b/matrix-sdk-android/build.gradle @@ -6,10 +6,13 @@ apply plugin: 'realm-android' buildscript { repositories { - mavenCentral() + // mavenCentral() + //noinspection GrDeprecatedAPIUsage + jcenter() } dependencies { - classpath "io.realm:realm-gradle-plugin:10.4.0" + // Stick to this version until https://github.com/realm/realm-java/issues/7402 is fixed + classpath "io.realm:realm-gradle-plugin:10.3.1" } } diff --git a/vector/build.gradle b/vector/build.gradle index d5a105d893..d561382e2d 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -14,7 +14,7 @@ kapt { // Note: 2 digits max for each value ext.versionMajor = 1 ext.versionMinor = 1 -ext.versionPatch = 4 +ext.versionPatch = 5 static def getGitTimestamp() { def cmd = 'git show -s --format=%ct' From e4375522ff558b9cc5010d4adcdd447ecd4322a1 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 14 Apr 2021 22:35:30 +0200 Subject: [PATCH 45/49] Fix crash when playing video (#3179) --- CHANGES.md | 1 + .../app/core/glide/VectorGlideModelLoader.kt | 12 ++-- .../features/media/BaseAttachmentProvider.kt | 12 ++-- .../media/DataAttachmentRoomProvider.kt | 6 +- .../media/RoomEventsAttachmentProvider.kt | 6 +- .../features/media/VideoContentRenderer.kt | 62 ++++++++++--------- 6 files changed, 61 insertions(+), 38 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 7201c75850..1652443c63 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,7 @@ Changes in Element 1.1.5 (2021-XX-XX) Bugfix πŸ›: - Fix crash during Realm migration + - Fix crash when playing video (#3179) Changes in Element 1.1.4 (2021-04-09) =================================================== diff --git a/vector/src/main/java/im/vector/app/core/glide/VectorGlideModelLoader.kt b/vector/src/main/java/im/vector/app/core/glide/VectorGlideModelLoader.kt index cbc5effe44..fb2f59d6b5 100644 --- a/vector/src/main/java/im/vector/app/core/glide/VectorGlideModelLoader.kt +++ b/vector/src/main/java/im/vector/app/core/glide/VectorGlideModelLoader.kt @@ -28,8 +28,10 @@ import com.bumptech.glide.signature.ObjectKey import im.vector.app.core.extensions.vectorComponent import im.vector.app.core.files.LocalFilesHelper import im.vector.app.features.media.ImageContentRenderer +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import okhttp3.OkHttpClient import timber.log.Timber import java.io.IOException @@ -121,10 +123,12 @@ class VectorGlideDataFetcher(context: Context, url = data.url, elementToDecrypt = data.elementToDecrypt) } - result.fold( - { callback.onDataReady(it.inputStream()) }, - { callback.onLoadFailed(it as? Exception ?: IOException(it.localizedMessage)) } - ) + withContext(Dispatchers.Main) { + result.fold( + { callback.onDataReady(it.inputStream()) }, + { callback.onLoadFailed(it as? Exception ?: IOException(it.localizedMessage)) } + ) + } } // val url = contentUrlResolver.resolveFullSize(data.url) // ?: return diff --git a/vector/src/main/java/im/vector/app/features/media/BaseAttachmentProvider.kt b/vector/src/main/java/im/vector/app/features/media/BaseAttachmentProvider.kt index 103f42e903..d3ab39abef 100644 --- a/vector/src/main/java/im/vector/app/features/media/BaseAttachmentProvider.kt +++ b/vector/src/main/java/im/vector/app/features/media/BaseAttachmentProvider.kt @@ -31,8 +31,10 @@ import im.vector.lib.attachmentviewer.AttachmentInfo import im.vector.lib.attachmentviewer.AttachmentSourceProvider import im.vector.lib.attachmentviewer.ImageLoaderTarget import im.vector.lib.attachmentviewer.VideoLoaderTarget +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import org.matrix.android.sdk.api.session.events.model.isVideoMessage import org.matrix.android.sdk.api.session.file.FileService import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent @@ -162,10 +164,12 @@ abstract class BaseAttachmentProvider( elementToDecrypt = data.elementToDecrypt ) } - result.fold( - { target.onVideoFileReady(info.uid, it) }, - { target.onVideoFileLoadFailed(info.uid) } - ) + withContext(Dispatchers.Main) { + result.fold( + { target.onVideoFileReady(info.uid, it) }, + { target.onVideoFileLoadFailed(info.uid) } + ) + } } } } diff --git a/vector/src/main/java/im/vector/app/features/media/DataAttachmentRoomProvider.kt b/vector/src/main/java/im/vector/app/features/media/DataAttachmentRoomProvider.kt index d326b8e50a..630433506f 100644 --- a/vector/src/main/java/im/vector/app/features/media/DataAttachmentRoomProvider.kt +++ b/vector/src/main/java/im/vector/app/features/media/DataAttachmentRoomProvider.kt @@ -19,8 +19,10 @@ package im.vector.app.features.media import im.vector.app.core.date.VectorDateFormatter import im.vector.app.core.resources.StringProvider import im.vector.lib.attachmentviewer.AttachmentInfo +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import org.matrix.android.sdk.api.session.file.FileService import org.matrix.android.sdk.api.session.room.Room import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent @@ -87,7 +89,9 @@ class DataAttachmentRoomProvider( elementToDecrypt = item.elementToDecrypt ) } - callback(result.getOrNull()) + withContext(Dispatchers.Main) { + callback(result.getOrNull()) + } } } } diff --git a/vector/src/main/java/im/vector/app/features/media/RoomEventsAttachmentProvider.kt b/vector/src/main/java/im/vector/app/features/media/RoomEventsAttachmentProvider.kt index fd3386826a..976f13df58 100644 --- a/vector/src/main/java/im/vector/app/features/media/RoomEventsAttachmentProvider.kt +++ b/vector/src/main/java/im/vector/app/features/media/RoomEventsAttachmentProvider.kt @@ -19,8 +19,10 @@ package im.vector.app.features.media import im.vector.app.core.date.VectorDateFormatter import im.vector.app.core.resources.StringProvider import im.vector.lib.attachmentviewer.AttachmentInfo +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import org.matrix.android.sdk.api.session.events.model.toModel import org.matrix.android.sdk.api.session.file.FileService import org.matrix.android.sdk.api.session.room.model.message.MessageContent @@ -134,7 +136,9 @@ class RoomEventsAttachmentProvider( url = messageContent.getFileUrl(), elementToDecrypt = messageContent.encryptedFileInfo?.toElementToDecrypt()) } - callback(result.getOrNull()) + withContext(Dispatchers.Main) { + callback(result.getOrNull()) + } } } } diff --git a/vector/src/main/java/im/vector/app/features/media/VideoContentRenderer.kt b/vector/src/main/java/im/vector/app/features/media/VideoContentRenderer.kt index 59b612afb1..80d2d8ba45 100644 --- a/vector/src/main/java/im/vector/app/features/media/VideoContentRenderer.kt +++ b/vector/src/main/java/im/vector/app/features/media/VideoContentRenderer.kt @@ -25,8 +25,10 @@ import im.vector.app.R import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.error.ErrorFormatter import im.vector.app.core.files.LocalFilesHelper +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import kotlinx.parcelize.Parcelize import org.matrix.android.sdk.internal.crypto.attachments.ElementToDecrypt import timber.log.Timber @@ -83,21 +85,23 @@ class VideoContentRenderer @Inject constructor(private val localFilesHelper: Loc url = data.url, elementToDecrypt = data.elementToDecrypt) } - result.fold( - { data -> - thumbnailView.isVisible = false - loadingView.isVisible = false - videoView.isVisible = true + withContext(Dispatchers.Main) { + result.fold( + { data -> + thumbnailView.isVisible = false + loadingView.isVisible = false + videoView.isVisible = true - videoView.setVideoPath(data.path) - videoView.start() - }, - { - loadingView.isVisible = false - errorView.isVisible = true - errorView.text = errorFormatter.toHumanReadable(it) - } - ) + videoView.setVideoPath(data.path) + videoView.start() + }, + { + loadingView.isVisible = false + errorView.isVisible = true + errorView.text = errorFormatter.toHumanReadable(it) + } + ) + } } } } else { @@ -124,21 +128,23 @@ class VideoContentRenderer @Inject constructor(private val localFilesHelper: Loc url = data.url, elementToDecrypt = null) } - result.fold( - { data -> - thumbnailView.isVisible = false - loadingView.isVisible = false - videoView.isVisible = true + withContext(Dispatchers.Main) { + result.fold( + { data -> + thumbnailView.isVisible = false + loadingView.isVisible = false + videoView.isVisible = true - videoView.setVideoPath(data.path) - videoView.start() - }, - { - loadingView.isVisible = false - errorView.isVisible = true - errorView.text = errorFormatter.toHumanReadable(it) - } - ) + videoView.setVideoPath(data.path) + videoView.start() + }, + { + loadingView.isVisible = false + errorView.isVisible = true + errorView.text = errorFormatter.toHumanReadable(it) + } + ) + } } } } From ccf7dd9583a07e7d7bdb7489700009e50e957d0b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 14 Apr 2021 22:41:57 +0200 Subject: [PATCH 46/49] Add changelog file --- fastlane/metadata/android/en-US/changelogs/40101050.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 fastlane/metadata/android/en-US/changelogs/40101050.txt diff --git a/fastlane/metadata/android/en-US/changelogs/40101050.txt b/fastlane/metadata/android/en-US/changelogs/40101050.txt new file mode 100644 index 0000000000..917dbee284 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/40101050.txt @@ -0,0 +1,2 @@ +Main changes in this version: hot fixes for 1.1.4 +Full changelog: https://github.com/vector-im/element-android/releases/tag/v1.1.5 \ No newline at end of file From c08868bc3cb7a70716e11936adfa36fe4e17b037 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 16 Apr 2021 13:15:35 +0200 Subject: [PATCH 47/49] Protect call to suspend fun --- CHANGES.md | 8 +++++++- .../home/room/detail/RoomDetailViewModel.kt | 17 ++++------------- .../NotificationBroadcastReceiver.kt | 10 ++++------ 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 1652443c63..bb7668accf 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,10 @@ -Changes in Element 1.1.5 (2021-XX-XX) +Changes in Element 1.1.6 (2021-04-16) +=================================================== + +Bugfix πŸ›: + - Fix crash on the timeline + +Changes in Element 1.1.5 (2021-04-15) =================================================== Bugfix πŸ›: diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt index 6152562850..5c18bfa11b 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt @@ -178,10 +178,7 @@ class RoomDetailViewModel @AssistedInject constructor( updateShowDialerOptionState() room.getRoomSummaryLive() viewModelScope.launch { - try { - room.markAsRead(ReadService.MarkAsReadParams.READ_RECEIPT) - } catch (_: Exception) { - } + tryOrNull { room.markAsRead(ReadService.MarkAsReadParams.READ_RECEIPT) } } // Inform the SDK that the room is displayed session.onRoomDisplayed(initialState.roomId) @@ -546,10 +543,7 @@ class RoomDetailViewModel @AssistedInject constructor( if (trackUnreadMessages.getAndSet(false)) { mostRecentDisplayedEvent?.root?.eventId?.also { viewModelScope.launch { - try { - room.setReadMarker(it) - } catch (_: Exception) { - } + tryOrNull { room.setReadMarker(it) } } } mostRecentDisplayedEvent = null @@ -1254,7 +1248,7 @@ class RoomDetailViewModel @AssistedInject constructor( } bufferedMostRecentDisplayedEvent.root.eventId?.let { eventId -> viewModelScope.launch { - room.setReadReceipt(eventId) + tryOrNull { room.setReadReceipt(eventId) } } } }) @@ -1263,10 +1257,7 @@ class RoomDetailViewModel @AssistedInject constructor( private fun handleMarkAllAsRead() { viewModelScope.launch { - try { - room.markAsRead(ReadService.MarkAsReadParams.BOTH) - } catch (_: Exception) { - } + tryOrNull { room.markAsRead(ReadService.MarkAsReadParams.BOTH) } } } diff --git a/vector/src/main/java/im/vector/app/features/notifications/NotificationBroadcastReceiver.kt b/vector/src/main/java/im/vector/app/features/notifications/NotificationBroadcastReceiver.kt index 7125c22342..f265a5bd5f 100644 --- a/vector/src/main/java/im/vector/app/features/notifications/NotificationBroadcastReceiver.kt +++ b/vector/src/main/java/im/vector/app/features/notifications/NotificationBroadcastReceiver.kt @@ -25,6 +25,7 @@ import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.extensions.vectorComponent import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch +import org.matrix.android.sdk.api.extensions.tryOrNull import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.room.Room import org.matrix.android.sdk.api.session.room.read.ReadService @@ -78,7 +79,7 @@ class NotificationBroadcastReceiver : BroadcastReceiver() { val room = session.getRoom(roomId) if (room != null) { GlobalScope.launch { - room.join() + tryOrNull { room.join() } } } } @@ -89,7 +90,7 @@ class NotificationBroadcastReceiver : BroadcastReceiver() { val room = session.getRoom(roomId) if (room != null) { GlobalScope.launch { - room.leave() + tryOrNull { room.leave() } } } } @@ -100,10 +101,7 @@ class NotificationBroadcastReceiver : BroadcastReceiver() { val room = session.getRoom(roomId) if (room != null) { GlobalScope.launch { - try { - room.markAsRead(ReadService.MarkAsReadParams.READ_RECEIPT) - } catch (_: Exception) { - } + tryOrNull { room.markAsRead(ReadService.MarkAsReadParams.READ_RECEIPT) } } } } From 9fc00fe6ff5245cbd967ab6a5b33b6c66ea114b0 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 16 Apr 2021 14:32:38 +0200 Subject: [PATCH 48/49] App crashes on "troubleshoot notifications" button (#3187) --- CHANGES.md | 1 + .../troubleshoot/TestPushFromPushGateway.kt | 36 +++++++++++-------- .../troubleshoot/TestAccountSettings.kt | 9 +++-- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index bb7668accf..a6221116b7 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,7 @@ Changes in Element 1.1.6 (2021-04-16) Bugfix πŸ›: - Fix crash on the timeline + - App crashes on "troubleshoot notifications" button (#3187) Changes in Element 1.1.5 (2021-04-15) =================================================== diff --git a/vector/src/gplay/java/im/vector/app/gplay/features/settings/troubleshoot/TestPushFromPushGateway.kt b/vector/src/gplay/java/im/vector/app/gplay/features/settings/troubleshoot/TestPushFromPushGateway.kt index 015754145f..ad4b9ecb01 100644 --- a/vector/src/gplay/java/im/vector/app/gplay/features/settings/troubleshoot/TestPushFromPushGateway.kt +++ b/vector/src/gplay/java/im/vector/app/gplay/features/settings/troubleshoot/TestPushFromPushGateway.kt @@ -24,9 +24,11 @@ import im.vector.app.core.pushers.PushersManager import im.vector.app.core.resources.StringProvider import im.vector.app.features.settings.troubleshoot.TroubleshootTest import im.vector.app.push.fcm.FcmHelper +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.Job import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import org.matrix.android.sdk.api.session.pushers.PushGatewayFailure import javax.inject.Inject @@ -47,22 +49,26 @@ class TestPushFromPushGateway @Inject constructor(private val context: AppCompat return } action = GlobalScope.launch { - status = runCatching { pushersManager.testPush(fcmToken) } - .fold( - { - // Wait for the push to be received - description = stringProvider.getString(R.string.settings_troubleshoot_test_push_loop_waiting_for_push) - TestStatus.RUNNING - }, - { - description = if (it is PushGatewayFailure.PusherRejected) { - stringProvider.getString(R.string.settings_troubleshoot_test_push_loop_failed) - } else { - errorFormatter.toHumanReadable(it) + val result = runCatching { pushersManager.testPush(fcmToken) } + + withContext(Dispatchers.Main) { + status = result + .fold( + { + // Wait for the push to be received + description = stringProvider.getString(R.string.settings_troubleshoot_test_push_loop_waiting_for_push) + TestStatus.RUNNING + }, + { + description = if (it is PushGatewayFailure.PusherRejected) { + stringProvider.getString(R.string.settings_troubleshoot_test_push_loop_failed) + } else { + errorFormatter.toHumanReadable(it) + } + TestStatus.FAILED } - TestStatus.FAILED - } - ) + ) + } } } diff --git a/vector/src/main/java/im/vector/app/features/settings/troubleshoot/TestAccountSettings.kt b/vector/src/main/java/im/vector/app/features/settings/troubleshoot/TestAccountSettings.kt index b78dba07f5..1f9b59af54 100644 --- a/vector/src/main/java/im/vector/app/features/settings/troubleshoot/TestAccountSettings.kt +++ b/vector/src/main/java/im/vector/app/features/settings/troubleshoot/TestAccountSettings.kt @@ -20,8 +20,11 @@ import androidx.activity.result.ActivityResultLauncher import im.vector.app.R import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.resources.StringProvider +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import org.matrix.android.sdk.api.extensions.tryOrNull import org.matrix.android.sdk.api.pushrules.RuleIds import org.matrix.android.sdk.api.pushrules.RuleKind import javax.inject.Inject @@ -50,10 +53,12 @@ class TestAccountSettings @Inject constructor(private val stringProvider: String if (manager?.diagStatus == TestStatus.RUNNING) return // wait before all is finished GlobalScope.launch { - runCatching { + tryOrNull { session.updatePushRuleEnableStatus(RuleKind.OVERRIDE, defaultRule, !defaultRule.enabled) } - manager?.retry(activityResultLauncher) + withContext(Dispatchers.Main) { + manager?.retry(activityResultLauncher) + } } } } From 72515ee6353427334d217f294d2837cca2d05c26 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 16 Apr 2021 13:28:57 +0200 Subject: [PATCH 49/49] Prepare corrective release 1.1.6 --- fastlane/metadata/android/en-US/changelogs/40101060.txt | 2 ++ vector/build.gradle | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/40101060.txt diff --git a/fastlane/metadata/android/en-US/changelogs/40101060.txt b/fastlane/metadata/android/en-US/changelogs/40101060.txt new file mode 100644 index 0000000000..6d895542eb --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/40101060.txt @@ -0,0 +1,2 @@ +Main changes in this version: hot fixes for 1.1.5 +Full changelog: https://github.com/vector-im/element-android/releases/tag/v1.1.6 \ No newline at end of file diff --git a/vector/build.gradle b/vector/build.gradle index d561382e2d..8de31e58f7 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -14,7 +14,7 @@ kapt { // Note: 2 digits max for each value ext.versionMajor = 1 ext.versionMinor = 1 -ext.versionPatch = 5 +ext.versionPatch = 6 static def getGitTimestamp() { def cmd = 'git show -s --format=%ct'