help@rskworld.in +91 93305 39277
RSK World
  • Home
  • Development
    • Web Development
    • Mobile Apps
    • Software
    • Games
    • Project
  • Technologies
    • Data Science
    • AI Development
    • Cloud Development
    • Blockchain
    • Cyber Security
    • Dev Tools
    • Testing Tools
  • Blog
  • About
  • Contact

Theme Settings

Color Scheme
Display Options
Font Size
100%
Back to Project
RSK World
travel-assistant-bot
/
.venv
/
Lib
/
site-packages
/
pip
/
_vendor
/
resolvelib
RSK World
travel-assistant-bot
Travel Assistant Bot - Python + Flask + OpenAI API + Travel Bot + Flight Search + Hotel Booking + Weather
resolvelib
  • __pycache__
  • compat
  • __init__.py537 B
  • providers.py5.7 KB
  • py.typed0 B
  • reporters.py1.6 KB
  • resolvers.py20 KB
  • structs.py4.8 KB
pyopenssl.py_macos.pycookies.pylayout.pyconstrain.pyansi.pyprompt.pydiagnose.py_emoji_codes.py
.venv/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py
Raw Download
Find: Go to:
"""
TLS with SNI_-support for Python 2. Follow these instructions if you would
like to verify TLS certificates in Python 2. Note, the default libraries do
*not* do certificate checking; you need to do additional work to validate
certificates yourself.

This needs the following packages installed:

* `pyOpenSSL`_ (tested with 16.0.0)
* `cryptography`_ (minimum 1.3.4, from pyopenssl)
* `idna`_ (minimum 2.0, from cryptography)

However, pyopenssl depends on cryptography, which depends on idna, so while we
use all three directly here we end up having relatively few packages required.

You can install them with the following command:

.. code-block:: bash

    $ python -m pip install pyopenssl cryptography idna

To activate certificate checking, call
:func:`~urllib3.contrib.pyopenssl.inject_into_urllib3` from your Python code
before you begin making HTTP requests. This can be done in a ``sitecustomize``
module, or at any other time before your application begins using ``urllib3``,
like this:

.. code-block:: python

    try:
        import pip._vendor.urllib3.contrib.pyopenssl as pyopenssl
        pyopenssl.inject_into_urllib3()
    except ImportError:
        pass

Now you can use :mod:`urllib3` as you normally would, and it will support SNI
when the required modules are installed.

Activating this module also has the positive side effect of disabling SSL/TLS
compression in Python 2 (see `CRIME attack`_).

.. _sni: https://en.wikipedia.org/wiki/Server_Name_Indication
.. _crime attack: https://en.wikipedia.org/wiki/CRIME_(security_exploit)
.. _pyopenssl: https://www.pyopenssl.org
.. _cryptography: https://cryptography.io
.. _idna: https://github.com/kjd/idna
"""
from __future__ import absolute_import

import OpenSSL.crypto
import OpenSSL.SSL
from cryptography import x509
from cryptography.hazmat.backends.openssl import backend as openssl_backend

try:
    from cryptography.x509 import UnsupportedExtension
except ImportError:
    # UnsupportedExtension is gone in cryptography >= 2.1.0
    class UnsupportedExtension(Exception):
        pass


from io import BytesIO
from socket import error as SocketError
from socket import timeout

try:  # Platform-specific: Python 2
    from socket import _fileobject
except ImportError:  # Platform-specific: Python 3
    _fileobject = None
    from ..packages.backports.makefile import backport_makefile

import logging
import ssl
import sys
import warnings

from .. import util
from ..packages import six
from ..util.ssl_ import PROTOCOL_TLS_CLIENT

warnings.warn(
    "'urllib3.contrib.pyopenssl' module is deprecated and will be removed "
    "in a future release of urllib3 2.x. Read more in this issue: "
    "https://github.com/urllib3/urllib3/issues/2680",
    category=DeprecationWarning,
    stacklevel=2,
)

__all__ = ["inject_into_urllib3", "extract_from_urllib3"]

# SNI always works.
HAS_SNI = True

# Map from urllib3 to PyOpenSSL compatible parameter-values.
_openssl_versions = {
    util.PROTOCOL_TLS: OpenSSL.SSL.SSLv23_METHOD,
    PROTOCOL_TLS_CLIENT: OpenSSL.SSL.SSLv23_METHOD,
    ssl.PROTOCOL_TLSv1: OpenSSL.SSL.TLSv1_METHOD,
}

if hasattr(ssl, "PROTOCOL_SSLv3") and hasattr(OpenSSL.SSL, "SSLv3_METHOD"):
    _openssl_versions[ssl.PROTOCOL_SSLv3] = OpenSSL.SSL.SSLv3_METHOD

if hasattr(ssl, "PROTOCOL_TLSv1_1") and hasattr(OpenSSL.SSL, "TLSv1_1_METHOD"):
    _openssl_versions[ssl.PROTOCOL_TLSv1_1] = OpenSSL.SSL.TLSv1_1_METHOD

if hasattr(ssl, "PROTOCOL_TLSv1_2") and hasattr(OpenSSL.SSL, "TLSv1_2_METHOD"):
    _openssl_versions[ssl.PROTOCOL_TLSv1_2] = OpenSSL.SSL.TLSv1_2_METHOD


_stdlib_to_openssl_verify = {
    ssl.CERT_NONE: OpenSSL.SSL.VERIFY_NONE,
    ssl.CERT_OPTIONAL: OpenSSL.SSL.VERIFY_PEER,
    ssl.CERT_REQUIRED: OpenSSL.SSL.VERIFY_PEER
    + OpenSSL.SSL.VERIFY_FAIL_IF_NO_PEER_CERT,
}
_openssl_to_stdlib_verify = dict((v, k) for k, v in _stdlib_to_openssl_verify.items())

# OpenSSL will only write 16K at a time
SSL_WRITE_BLOCKSIZE = 16384

orig_util_HAS_SNI = util.HAS_SNI
orig_util_SSLContext = util.ssl_.SSLContext


log = logging.getLogger(__name__)


def inject_into_urllib3():
    "Monkey-patch urllib3 with PyOpenSSL-backed SSL-support."

    _validate_dependencies_met()

    util.SSLContext = PyOpenSSLContext
    util.ssl_.SSLContext = PyOpenSSLContext
    util.HAS_SNI = HAS_SNI
    util.ssl_.HAS_SNI = HAS_SNI
    util.IS_PYOPENSSL = True
    util.ssl_.IS_PYOPENSSL = True


def extract_from_urllib3():
    "Undo monkey-patching by :func:`inject_into_urllib3`."

    util.SSLContext = orig_util_SSLContext
    util.ssl_.SSLContext = orig_util_SSLContext
    util.HAS_SNI = orig_util_HAS_SNI
    util.ssl_.HAS_SNI = orig_util_HAS_SNI
    util.IS_PYOPENSSL = False
    util.ssl_.IS_PYOPENSSL = False


def _validate_dependencies_met():
    """
    Verifies that PyOpenSSL's package-level dependencies have been met.
    Throws `ImportError` if they are not met.
    """
    # Method added in `cryptography==1.1`; not available in older versions
    from cryptography.x509.extensions import Extensions

    if getattr(Extensions, "get_extension_for_class", None) is None:
        raise ImportError(
            "'cryptography' module missing required functionality.  "
            "Try upgrading to v1.3.4 or newer."
        )

    # pyOpenSSL 0.14 and above use cryptography for OpenSSL bindings. The _x509
    # attribute is only present on those versions.
    from OpenSSL.crypto import X509

    x509 = X509()
    if getattr(x509, "_x509", None) is None:
        raise ImportError(
            "'pyOpenSSL' module missing required functionality. "
            "Try upgrading to v0.14 or newer."
        )


def _dnsname_to_stdlib(name):
    """
    Converts a dNSName SubjectAlternativeName field to the form used by the
    standard library on the given Python version.

    Cryptography produces a dNSName as a unicode string that was idna-decoded
    from ASCII bytes. We need to idna-encode that string to get it back, and
    then on Python 3 we also need to convert to unicode via UTF-8 (the stdlib
    uses PyUnicode_FromStringAndSize on it, which decodes via UTF-8).

    If the name cannot be idna-encoded then we return None signalling that
    the name given should be skipped.
    """

    def idna_encode(name):
        """
        Borrowed wholesale from the Python Cryptography Project. It turns out
        that we can't just safely call `idna.encode`: it can explode for
        wildcard names. This avoids that problem.
        """
        from pip._vendor import idna

        try:
            for prefix in [u"*.", u"."]:
                if name.startswith(prefix):
                    name = name[len(prefix) :]
                    return prefix.encode("ascii") + idna.encode(name)
            return idna.encode(name)
        except idna.core.IDNAError:
            return None

    # Don't send IPv6 addresses through the IDNA encoder.
    if ":" in name:
        return name

    name = idna_encode(name)
    if name is None:
        return None
    elif sys.version_info >= (3, 0):
        name = name.decode("utf-8")
    return name


def get_subj_alt_name(peer_cert):
    """
    Given an PyOpenSSL certificate, provides all the subject alternative names.
    """
    # Pass the cert to cryptography, which has much better APIs for this.
    if hasattr(peer_cert, "to_cryptography"):
        cert = peer_cert.to_cryptography()
    else:
        der = OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_ASN1, peer_cert)
        cert = x509.load_der_x509_certificate(der, openssl_backend)

    # We want to find the SAN extension. Ask Cryptography to locate it (it's
    # faster than looping in Python)
    try:
        ext = cert.extensions.get_extension_for_class(x509.SubjectAlternativeName).value
    except x509.ExtensionNotFound:
        # No such extension, return the empty list.
        return []
    except (
        x509.DuplicateExtension,
        UnsupportedExtension,
        x509.UnsupportedGeneralNameType,
        UnicodeError,
    ) as e:
        # A problem has been found with the quality of the certificate. Assume
        # no SAN field is present.
        log.warning(
            "A problem was encountered with the certificate that prevented "
            "urllib3 from finding the SubjectAlternativeName field. This can "
            "affect certificate validation. The error was %s",
            e,
        )
        return []

    # We want to return dNSName and iPAddress fields. We need to cast the IPs
    # back to strings because the match_hostname function wants them as
    # strings.
    # Sadly the DNS names need to be idna encoded and then, on Python 3, UTF-8
    # decoded. This is pretty frustrating, but that's what the standard library
    # does with certificates, and so we need to attempt to do the same.
    # We also want to skip over names which cannot be idna encoded.
    names = [
        ("DNS", name)
        for name in map(_dnsname_to_stdlib, ext.get_values_for_type(x509.DNSName))
        if name is not None
    ]
    names.extend(
        ("IP Address", str(name)) for name in ext.get_values_for_type(x509.IPAddress)
    )

    return names


class WrappedSocket(object):
    """API-compatibility wrapper for Python OpenSSL's Connection-class.

    Note: _makefile_refs, _drop() and _reuse() are needed for the garbage
    collector of pypy.
    """

    def __init__(self, connection, socket, suppress_ragged_eofs=True):
        self.connection = connection
        self.socket = socket
        self.suppress_ragged_eofs = suppress_ragged_eofs
        self._makefile_refs = 0
        self._closed = False

    def fileno(self):
        return self.socket.fileno()

    # Copy-pasted from Python 3.5 source code
    def _decref_socketios(self):
        if self._makefile_refs > 0:
            self._makefile_refs -= 1
        if self._closed:
            self.close()

    def recv(self, *args, **kwargs):
        try:
            data = self.connection.recv(*args, **kwargs)
        except OpenSSL.SSL.SysCallError as e:
            if self.suppress_ragged_eofs and e.args == (-1, "Unexpected EOF"):
                return b""
            else:
                raise SocketError(str(e))
        except OpenSSL.SSL.ZeroReturnError:
            if self.connection.get_shutdown() == OpenSSL.SSL.RECEIVED_SHUTDOWN:
                return b""
            else:
                raise
        except OpenSSL.SSL.WantReadError:
            if not util.wait_for_read(self.socket, self.socket.gettimeout()):
                raise timeout("The read operation timed out")
            else:
                return self.recv(*args, **kwargs)

        # TLS 1.3 post-handshake authentication
        except OpenSSL.SSL.Error as e:
            raise ssl.SSLError("read error: %r" % e)
        else:
            return data

    def recv_into(self, *args, **kwargs):
        try:
            return self.connection.recv_into(*args, **kwargs)
        except OpenSSL.SSL.SysCallError as e:
            if self.suppress_ragged_eofs and e.args == (-1, "Unexpected EOF"):
                return 0
            else:
                raise SocketError(str(e))
        except OpenSSL.SSL.ZeroReturnError:
            if self.connection.get_shutdown() == OpenSSL.SSL.RECEIVED_SHUTDOWN:
                return 0
            else:
                raise
        except OpenSSL.SSL.WantReadError:
            if not util.wait_for_read(self.socket, self.socket.gettimeout()):
                raise timeout("The read operation timed out")
            else:
                return self.recv_into(*args, **kwargs)

        # TLS 1.3 post-handshake authentication
        except OpenSSL.SSL.Error as e:
            raise ssl.SSLError("read error: %r" % e)

    def settimeout(self, timeout):
        return self.socket.settimeout(timeout)

    def _send_until_done(self, data):
        while True:
            try:
                return self.connection.send(data)
            except OpenSSL.SSL.WantWriteError:
                if not util.wait_for_write(self.socket, self.socket.gettimeout()):
                    raise timeout()
                continue
            except OpenSSL.SSL.SysCallError as e:
                raise SocketError(str(e))

    def sendall(self, data):
        total_sent = 0
        while total_sent < len(data):
            sent = self._send_until_done(
                data[total_sent : total_sent + SSL_WRITE_BLOCKSIZE]
            )
            total_sent += sent

    def shutdown(self):
        # FIXME rethrow compatible exceptions should we ever use this
        self.connection.shutdown()

    def close(self):
        if self._makefile_refs < 1:
            try:
                self._closed = True
                return self.connection.close()
            except OpenSSL.SSL.Error:
                return
        else:
            self._makefile_refs -= 1

    def getpeercert(self, binary_form=False):
        x509 = self.connection.get_peer_certificate()

        if not x509:
            return x509

        if binary_form:
            return OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_ASN1, x509)

        return {
            "subject": ((("commonName", x509.get_subject().CN),),),
            "subjectAltName": get_subj_alt_name(x509),
        }

    def version(self):
        return self.connection.get_protocol_version_name()

    def _reuse(self):
        self._makefile_refs += 1

    def _drop(self):
        if self._makefile_refs < 1:
            self.close()
        else:
            self._makefile_refs -= 1


if _fileobject:  # Platform-specific: Python 2

    def makefile(self, mode, bufsize=-1):
        self._makefile_refs += 1
        return _fileobject(self, mode, bufsize, close=True)

else:  # Platform-specific: Python 3
    makefile = backport_makefile

WrappedSocket.makefile = makefile


class PyOpenSSLContext(object):
    """
    I am a wrapper class for the PyOpenSSL ``Context`` object. I am responsible
    for translating the interface of the standard library ``SSLContext`` object
    to calls into PyOpenSSL.
    """

    def __init__(self, protocol):
        self.protocol = _openssl_versions[protocol]
        self._ctx = OpenSSL.SSL.Context(self.protocol)
        self._options = 0
        self.check_hostname = False

    @property
    def options(self):
        return self._options

    @options.setter
    def options(self, value):
        self._options = value
        self._ctx.set_options(value)

    @property
    def verify_mode(self):
        return _openssl_to_stdlib_verify[self._ctx.get_verify_mode()]

    @verify_mode.setter
    def verify_mode(self, value):
        self._ctx.set_verify(_stdlib_to_openssl_verify[value], _verify_callback)

    def set_default_verify_paths(self):
        self._ctx.set_default_verify_paths()

    def set_ciphers(self, ciphers):
        if isinstance(ciphers, six.text_type):
            ciphers = ciphers.encode("utf-8")
        self._ctx.set_cipher_list(ciphers)

    def load_verify_locations(self, cafile=None, capath=None, cadata=None):
        if cafile is not None:
            cafile = cafile.encode("utf-8")
        if capath is not None:
            capath = capath.encode("utf-8")
        try:
            self._ctx.load_verify_locations(cafile, capath)
            if cadata is not None:
                self._ctx.load_verify_locations(BytesIO(cadata))
        except OpenSSL.SSL.Error as e:
            raise ssl.SSLError("unable to load trusted certificates: %r" % e)

    def load_cert_chain(self, certfile, keyfile=None, password=None):
        self._ctx.use_certificate_chain_file(certfile)
        if password is not None:
            if not isinstance(password, six.binary_type):
                password = password.encode("utf-8")
            self._ctx.set_passwd_cb(lambda *_: password)
        self._ctx.use_privatekey_file(keyfile or certfile)

    def set_alpn_protocols(self, protocols):
        protocols = [six.ensure_binary(p) for p in protocols]
        return self._ctx.set_alpn_protos(protocols)

    def wrap_socket(
        self,
        sock,
        server_side=False,
        do_handshake_on_connect=True,
        suppress_ragged_eofs=True,
        server_hostname=None,
    ):
        cnx = OpenSSL.SSL.Connection(self._ctx, sock)

        if isinstance(server_hostname, six.text_type):  # Platform-specific: Python 3
            server_hostname = server_hostname.encode("utf-8")

        if server_hostname is not None:
            cnx.set_tlsext_host_name(server_hostname)

        cnx.set_connect_state()

        while True:
            try:
                cnx.do_handshake()
            except OpenSSL.SSL.WantReadError:
                if not util.wait_for_read(sock, sock.gettimeout()):
                    raise timeout("select timed out")
                continue
            except OpenSSL.SSL.Error as e:
                raise ssl.SSLError("bad handshake: %r" % e)
            break

        return WrappedSocket(cnx, sock)


def _verify_callback(cnx, x509, err_no, err_depth, return_code):
    return err_no == 0
519 linesโ€ข16.7 KB
python
.venv/Lib/site-packages/pip/_vendor/truststore/_macos.py
Raw Download
Find: Go to:
import contextlib
import ctypes
import platform
import ssl
import typing
from ctypes import (
    CDLL,
    POINTER,
    c_bool,
    c_char_p,
    c_int32,
    c_long,
    c_uint32,
    c_ulong,
    c_void_p,
)
from ctypes.util import find_library

from ._ssl_constants import _set_ssl_context_verify_mode

_mac_version = platform.mac_ver()[0]
_mac_version_info = tuple(map(int, _mac_version.split(".")))
if _mac_version_info < (10, 8):
    raise ImportError(
        f"Only OS X 10.8 and newer are supported, not {_mac_version_info[0]}.{_mac_version_info[1]}"
    )

_is_macos_version_10_14_or_later = _mac_version_info >= (10, 14)


def _load_cdll(name: str, macos10_16_path: str) -> CDLL:
    """Loads a CDLL by name, falling back to known path on 10.16+"""
    try:
        # Big Sur is technically 11 but we use 10.16 due to the Big Sur
        # beta being labeled as 10.16.
        path: str | None
        if _mac_version_info >= (10, 16):
            path = macos10_16_path
        else:
            path = find_library(name)
        if not path:
            raise OSError  # Caught and reraised as 'ImportError'
        return CDLL(path, use_errno=True)
    except OSError:
        raise ImportError(f"The library {name} failed to load") from None


Security = _load_cdll(
    "Security", "/System/Library/Frameworks/Security.framework/Security"
)
CoreFoundation = _load_cdll(
    "CoreFoundation",
    "/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation",
)

Boolean = c_bool
CFIndex = c_long
CFStringEncoding = c_uint32
CFData = c_void_p
CFString = c_void_p
CFArray = c_void_p
CFMutableArray = c_void_p
CFError = c_void_p
CFType = c_void_p
CFTypeID = c_ulong
CFTypeRef = POINTER(CFType)
CFAllocatorRef = c_void_p

OSStatus = c_int32

CFErrorRef = POINTER(CFError)
CFDataRef = POINTER(CFData)
CFStringRef = POINTER(CFString)
CFArrayRef = POINTER(CFArray)
CFMutableArrayRef = POINTER(CFMutableArray)
CFArrayCallBacks = c_void_p
CFOptionFlags = c_uint32

SecCertificateRef = POINTER(c_void_p)
SecPolicyRef = POINTER(c_void_p)
SecTrustRef = POINTER(c_void_p)
SecTrustResultType = c_uint32
SecTrustOptionFlags = c_uint32

try:
    Security.SecCertificateCreateWithData.argtypes = [CFAllocatorRef, CFDataRef]
    Security.SecCertificateCreateWithData.restype = SecCertificateRef

    Security.SecCertificateCopyData.argtypes = [SecCertificateRef]
    Security.SecCertificateCopyData.restype = CFDataRef

    Security.SecCopyErrorMessageString.argtypes = [OSStatus, c_void_p]
    Security.SecCopyErrorMessageString.restype = CFStringRef

    Security.SecTrustSetAnchorCertificates.argtypes = [SecTrustRef, CFArrayRef]
    Security.SecTrustSetAnchorCertificates.restype = OSStatus

    Security.SecTrustSetAnchorCertificatesOnly.argtypes = [SecTrustRef, Boolean]
    Security.SecTrustSetAnchorCertificatesOnly.restype = OSStatus

    Security.SecPolicyCreateRevocation.argtypes = [CFOptionFlags]
    Security.SecPolicyCreateRevocation.restype = SecPolicyRef

    Security.SecPolicyCreateSSL.argtypes = [Boolean, CFStringRef]
    Security.SecPolicyCreateSSL.restype = SecPolicyRef

    Security.SecTrustCreateWithCertificates.argtypes = [
        CFTypeRef,
        CFTypeRef,
        POINTER(SecTrustRef),
    ]
    Security.SecTrustCreateWithCertificates.restype = OSStatus

    Security.SecTrustGetTrustResult.argtypes = [
        SecTrustRef,
        POINTER(SecTrustResultType),
    ]
    Security.SecTrustGetTrustResult.restype = OSStatus

    Security.SecTrustEvaluate.argtypes = [
        SecTrustRef,
        POINTER(SecTrustResultType),
    ]
    Security.SecTrustEvaluate.restype = OSStatus

    Security.SecTrustRef = SecTrustRef  # type: ignore[attr-defined]
    Security.SecTrustResultType = SecTrustResultType  # type: ignore[attr-defined]
    Security.OSStatus = OSStatus  # type: ignore[attr-defined]

    kSecRevocationUseAnyAvailableMethod = 3
    kSecRevocationRequirePositiveResponse = 8

    CoreFoundation.CFRelease.argtypes = [CFTypeRef]
    CoreFoundation.CFRelease.restype = None

    CoreFoundation.CFGetTypeID.argtypes = [CFTypeRef]
    CoreFoundation.CFGetTypeID.restype = CFTypeID

    CoreFoundation.CFStringCreateWithCString.argtypes = [
        CFAllocatorRef,
        c_char_p,
        CFStringEncoding,
    ]
    CoreFoundation.CFStringCreateWithCString.restype = CFStringRef

    CoreFoundation.CFStringGetCStringPtr.argtypes = [CFStringRef, CFStringEncoding]
    CoreFoundation.CFStringGetCStringPtr.restype = c_char_p

    CoreFoundation.CFStringGetCString.argtypes = [
        CFStringRef,
        c_char_p,
        CFIndex,
        CFStringEncoding,
    ]
    CoreFoundation.CFStringGetCString.restype = c_bool

    CoreFoundation.CFDataCreate.argtypes = [CFAllocatorRef, c_char_p, CFIndex]
    CoreFoundation.CFDataCreate.restype = CFDataRef

    CoreFoundation.CFDataGetLength.argtypes = [CFDataRef]
    CoreFoundation.CFDataGetLength.restype = CFIndex

    CoreFoundation.CFDataGetBytePtr.argtypes = [CFDataRef]
    CoreFoundation.CFDataGetBytePtr.restype = c_void_p

    CoreFoundation.CFArrayCreate.argtypes = [
        CFAllocatorRef,
        POINTER(CFTypeRef),
        CFIndex,
        CFArrayCallBacks,
    ]
    CoreFoundation.CFArrayCreate.restype = CFArrayRef

    CoreFoundation.CFArrayCreateMutable.argtypes = [
        CFAllocatorRef,
        CFIndex,
        CFArrayCallBacks,
    ]
    CoreFoundation.CFArrayCreateMutable.restype = CFMutableArrayRef

    CoreFoundation.CFArrayAppendValue.argtypes = [CFMutableArrayRef, c_void_p]
    CoreFoundation.CFArrayAppendValue.restype = None

    CoreFoundation.CFArrayGetCount.argtypes = [CFArrayRef]
    CoreFoundation.CFArrayGetCount.restype = CFIndex

    CoreFoundation.CFArrayGetValueAtIndex.argtypes = [CFArrayRef, CFIndex]
    CoreFoundation.CFArrayGetValueAtIndex.restype = c_void_p

    CoreFoundation.CFErrorGetCode.argtypes = [CFErrorRef]
    CoreFoundation.CFErrorGetCode.restype = CFIndex

    CoreFoundation.CFErrorCopyDescription.argtypes = [CFErrorRef]
    CoreFoundation.CFErrorCopyDescription.restype = CFStringRef

    CoreFoundation.kCFAllocatorDefault = CFAllocatorRef.in_dll(  # type: ignore[attr-defined]
        CoreFoundation, "kCFAllocatorDefault"
    )
    CoreFoundation.kCFTypeArrayCallBacks = c_void_p.in_dll(  # type: ignore[attr-defined]
        CoreFoundation, "kCFTypeArrayCallBacks"
    )

    CoreFoundation.CFTypeRef = CFTypeRef  # type: ignore[attr-defined]
    CoreFoundation.CFArrayRef = CFArrayRef  # type: ignore[attr-defined]
    CoreFoundation.CFStringRef = CFStringRef  # type: ignore[attr-defined]
    CoreFoundation.CFErrorRef = CFErrorRef  # type: ignore[attr-defined]

except AttributeError as e:
    raise ImportError(f"Error initializing ctypes: {e}") from None

# SecTrustEvaluateWithError is macOS 10.14+
if _is_macos_version_10_14_or_later:
    try:
        Security.SecTrustEvaluateWithError.argtypes = [
            SecTrustRef,
            POINTER(CFErrorRef),
        ]
        Security.SecTrustEvaluateWithError.restype = c_bool
    except AttributeError as e:
        raise ImportError(f"Error initializing ctypes: {e}") from None


def _handle_osstatus(result: OSStatus, _: typing.Any, args: typing.Any) -> typing.Any:
    """
    Raises an error if the OSStatus value is non-zero.
    """
    if int(result) == 0:
        return args

    # Returns a CFString which we need to transform
    # into a UTF-8 Python string.
    error_message_cfstring = None
    try:
        error_message_cfstring = Security.SecCopyErrorMessageString(result, None)

        # First step is convert the CFString into a C string pointer.
        # We try the fast no-copy way first.
        error_message_cfstring_c_void_p = ctypes.cast(
            error_message_cfstring, ctypes.POINTER(ctypes.c_void_p)
        )
        message = CoreFoundation.CFStringGetCStringPtr(
            error_message_cfstring_c_void_p, CFConst.kCFStringEncodingUTF8
        )

        # Quoting the Apple dev docs:
        #
        # "A pointer to a C string or NULL if the internal
        # storage of theString does not allow this to be
        # returned efficiently."
        #
        # So we need to get our hands dirty.
        if message is None:
            buffer = ctypes.create_string_buffer(1024)
            result = CoreFoundation.CFStringGetCString(
                error_message_cfstring_c_void_p,
                buffer,
                1024,
                CFConst.kCFStringEncodingUTF8,
            )
            if not result:
                raise OSError("Error copying C string from CFStringRef")
            message = buffer.value

    finally:
        if error_message_cfstring is not None:
            CoreFoundation.CFRelease(error_message_cfstring)

    # If no message can be found for this status we come
    # up with a generic one that forwards the status code.
    if message is None or message == "":
        message = f"SecureTransport operation returned a non-zero OSStatus: {result}"

    raise ssl.SSLError(message)


Security.SecTrustCreateWithCertificates.errcheck = _handle_osstatus  # type: ignore[assignment]
Security.SecTrustSetAnchorCertificates.errcheck = _handle_osstatus  # type: ignore[assignment]
Security.SecTrustSetAnchorCertificatesOnly.errcheck = _handle_osstatus  # type: ignore[assignment]
Security.SecTrustGetTrustResult.errcheck = _handle_osstatus  # type: ignore[assignment]
Security.SecTrustEvaluate.errcheck = _handle_osstatus  # type: ignore[assignment]


class CFConst:
    """CoreFoundation constants"""

    kCFStringEncodingUTF8 = CFStringEncoding(0x08000100)

    errSecIncompleteCertRevocationCheck = -67635
    errSecHostNameMismatch = -67602
    errSecCertificateExpired = -67818
    errSecNotTrusted = -67843


def _bytes_to_cf_data_ref(value: bytes) -> CFDataRef:  # type: ignore[valid-type]
    return CoreFoundation.CFDataCreate(  # type: ignore[no-any-return]
        CoreFoundation.kCFAllocatorDefault, value, len(value)
    )


def _bytes_to_cf_string(value: bytes) -> CFString:
    """
    Given a Python binary data, create a CFString.
    The string must be CFReleased by the caller.
    """
    c_str = ctypes.c_char_p(value)
    cf_str = CoreFoundation.CFStringCreateWithCString(
        CoreFoundation.kCFAllocatorDefault,
        c_str,
        CFConst.kCFStringEncodingUTF8,
    )
    return cf_str  # type: ignore[no-any-return]


def _cf_string_ref_to_str(cf_string_ref: CFStringRef) -> str | None:  # type: ignore[valid-type]
    """
    Creates a Unicode string from a CFString object. Used entirely for error
    reporting.
    Yes, it annoys me quite a lot that this function is this complex.
    """

    string = CoreFoundation.CFStringGetCStringPtr(
        cf_string_ref, CFConst.kCFStringEncodingUTF8
    )
    if string is None:
        buffer = ctypes.create_string_buffer(1024)
        result = CoreFoundation.CFStringGetCString(
            cf_string_ref, buffer, 1024, CFConst.kCFStringEncodingUTF8
        )
        if not result:
            raise OSError("Error copying C string from CFStringRef")
        string = buffer.value
    if string is not None:
        string = string.decode("utf-8")
    return string  # type: ignore[no-any-return]


def _der_certs_to_cf_cert_array(certs: list[bytes]) -> CFMutableArrayRef:  # type: ignore[valid-type]
    """Builds a CFArray of SecCertificateRefs from a list of DER-encoded certificates.
    Responsibility of the caller to call CoreFoundation.CFRelease on the CFArray.
    """
    cf_array = CoreFoundation.CFArrayCreateMutable(
        CoreFoundation.kCFAllocatorDefault,
        0,
        ctypes.byref(CoreFoundation.kCFTypeArrayCallBacks),
    )
    if not cf_array:
        raise MemoryError("Unable to allocate memory!")

    for cert_data in certs:
        cf_data = None
        sec_cert_ref = None
        try:
            cf_data = _bytes_to_cf_data_ref(cert_data)
            sec_cert_ref = Security.SecCertificateCreateWithData(
                CoreFoundation.kCFAllocatorDefault, cf_data
            )
            CoreFoundation.CFArrayAppendValue(cf_array, sec_cert_ref)
        finally:
            if cf_data:
                CoreFoundation.CFRelease(cf_data)
            if sec_cert_ref:
                CoreFoundation.CFRelease(sec_cert_ref)

    return cf_array  # type: ignore[no-any-return]


@contextlib.contextmanager
def _configure_context(ctx: ssl.SSLContext) -> typing.Iterator[None]:
    check_hostname = ctx.check_hostname
    verify_mode = ctx.verify_mode
    ctx.check_hostname = False
    _set_ssl_context_verify_mode(ctx, ssl.CERT_NONE)
    try:
        yield
    finally:
        ctx.check_hostname = check_hostname
        _set_ssl_context_verify_mode(ctx, verify_mode)


def _verify_peercerts_impl(
    ssl_context: ssl.SSLContext,
    cert_chain: list[bytes],
    server_hostname: str | None = None,
) -> None:
    certs = None
    policies = None
    trust = None
    try:
        # Only set a hostname on the policy if we're verifying the hostname
        # on the leaf certificate.
        if server_hostname is not None and ssl_context.check_hostname:
            cf_str_hostname = None
            try:
                cf_str_hostname = _bytes_to_cf_string(server_hostname.encode("ascii"))
                ssl_policy = Security.SecPolicyCreateSSL(True, cf_str_hostname)
            finally:
                if cf_str_hostname:
                    CoreFoundation.CFRelease(cf_str_hostname)
        else:
            ssl_policy = Security.SecPolicyCreateSSL(True, None)

        policies = ssl_policy
        if ssl_context.verify_flags & ssl.VERIFY_CRL_CHECK_CHAIN:
            # Add explicit policy requiring positive revocation checks
            policies = CoreFoundation.CFArrayCreateMutable(
                CoreFoundation.kCFAllocatorDefault,
                0,
                ctypes.byref(CoreFoundation.kCFTypeArrayCallBacks),
            )
            CoreFoundation.CFArrayAppendValue(policies, ssl_policy)
            CoreFoundation.CFRelease(ssl_policy)
            revocation_policy = Security.SecPolicyCreateRevocation(
                kSecRevocationUseAnyAvailableMethod
                | kSecRevocationRequirePositiveResponse
            )
            CoreFoundation.CFArrayAppendValue(policies, revocation_policy)
            CoreFoundation.CFRelease(revocation_policy)
        elif ssl_context.verify_flags & ssl.VERIFY_CRL_CHECK_LEAF:
            raise NotImplementedError("VERIFY_CRL_CHECK_LEAF not implemented for macOS")

        certs = None
        try:
            certs = _der_certs_to_cf_cert_array(cert_chain)

            # Now that we have certificates loaded and a SecPolicy
            # we can finally create a SecTrust object!
            trust = Security.SecTrustRef()
            Security.SecTrustCreateWithCertificates(
                certs, policies, ctypes.byref(trust)
            )

        finally:
            # The certs are now being held by SecTrust so we can
            # release our handles for the array.
            if certs:
                CoreFoundation.CFRelease(certs)

        # If there are additional trust anchors to load we need to transform
        # the list of DER-encoded certificates into a CFArray.
        ctx_ca_certs_der: list[bytes] | None = ssl_context.get_ca_certs(
            binary_form=True
        )
        if ctx_ca_certs_der:
            ctx_ca_certs = None
            try:
                ctx_ca_certs = _der_certs_to_cf_cert_array(ctx_ca_certs_der)
                Security.SecTrustSetAnchorCertificates(trust, ctx_ca_certs)
            finally:
                if ctx_ca_certs:
                    CoreFoundation.CFRelease(ctx_ca_certs)

        # We always want system certificates.
        Security.SecTrustSetAnchorCertificatesOnly(trust, False)

        # macOS 10.13 and earlier don't support SecTrustEvaluateWithError()
        # so we use SecTrustEvaluate() which means we need to construct error
        # messages ourselves.
        if _is_macos_version_10_14_or_later:
            _verify_peercerts_impl_macos_10_14(ssl_context, trust)
        else:
            _verify_peercerts_impl_macos_10_13(ssl_context, trust)
    finally:
        if policies:
            CoreFoundation.CFRelease(policies)
        if trust:
            CoreFoundation.CFRelease(trust)


def _verify_peercerts_impl_macos_10_13(
    ssl_context: ssl.SSLContext, sec_trust_ref: typing.Any
) -> None:
    """Verify using 'SecTrustEvaluate' API for macOS 10.13 and earlier.
    macOS 10.14 added the 'SecTrustEvaluateWithError' API.
    """
    sec_trust_result_type = Security.SecTrustResultType()
    Security.SecTrustEvaluate(sec_trust_ref, ctypes.byref(sec_trust_result_type))

    try:
        sec_trust_result_type_as_int = int(sec_trust_result_type.value)
    except (ValueError, TypeError):
        sec_trust_result_type_as_int = -1

    # Apple doesn't document these values in their own API docs.
    # See: https://github.com/xybp888/iOS-SDKs/blob/master/iPhoneOS13.0.sdk/System/Library/Frameworks/Security.framework/Headers/SecTrust.h#L84
    if (
        ssl_context.verify_mode == ssl.CERT_REQUIRED
        and sec_trust_result_type_as_int not in (1, 4)
    ):
        # Note that we're not able to ignore only hostname errors
        # for macOS 10.13 and earlier, so check_hostname=False will
        # still return an error.
        sec_trust_result_type_to_message = {
            0: "Invalid trust result type",
            # 1: "Trust evaluation succeeded",
            2: "User confirmation required",
            3: "User specified that certificate is not trusted",
            # 4: "Trust result is unspecified",
            5: "Recoverable trust failure occurred",
            6: "Fatal trust failure occurred",
            7: "Other error occurred, certificate may be revoked",
        }
        error_message = sec_trust_result_type_to_message.get(
            sec_trust_result_type_as_int,
            f"Unknown trust result: {sec_trust_result_type_as_int}",
        )

        err = ssl.SSLCertVerificationError(error_message)
        err.verify_message = error_message
        err.verify_code = sec_trust_result_type_as_int
        raise err


def _verify_peercerts_impl_macos_10_14(
    ssl_context: ssl.SSLContext, sec_trust_ref: typing.Any
) -> None:
    """Verify using 'SecTrustEvaluateWithError' API for macOS 10.14+."""
    cf_error = CoreFoundation.CFErrorRef()
    sec_trust_eval_result = Security.SecTrustEvaluateWithError(
        sec_trust_ref, ctypes.byref(cf_error)
    )
    # sec_trust_eval_result is a bool (0 or 1)
    # where 1 means that the certs are trusted.
    if sec_trust_eval_result == 1:
        is_trusted = True
    elif sec_trust_eval_result == 0:
        is_trusted = False
    else:
        raise ssl.SSLError(
            f"Unknown result from Security.SecTrustEvaluateWithError: {sec_trust_eval_result!r}"
        )

    cf_error_code = 0
    if not is_trusted:
        cf_error_code = CoreFoundation.CFErrorGetCode(cf_error)

        # If the error is a known failure that we're
        # explicitly okay with from SSLContext configuration
        # we can set is_trusted accordingly.
        if ssl_context.verify_mode != ssl.CERT_REQUIRED and (
            cf_error_code == CFConst.errSecNotTrusted
            or cf_error_code == CFConst.errSecCertificateExpired
        ):
            is_trusted = True

    # If we're still not trusted then we start to
    # construct and raise the SSLCertVerificationError.
    if not is_trusted:
        cf_error_string_ref = None
        try:
            cf_error_string_ref = CoreFoundation.CFErrorCopyDescription(cf_error)

            # Can this ever return 'None' if there's a CFError?
            cf_error_message = (
                _cf_string_ref_to_str(cf_error_string_ref)
                or "Certificate verification failed"
            )

            # TODO: Not sure if we need the SecTrustResultType for anything?
            # We only care whether or not it's a success or failure for now.
            sec_trust_result_type = Security.SecTrustResultType()
            Security.SecTrustGetTrustResult(
                sec_trust_ref, ctypes.byref(sec_trust_result_type)
            )

            err = ssl.SSLCertVerificationError(cf_error_message)
            err.verify_message = cf_error_message
            err.verify_code = cf_error_code
            raise err
        finally:
            if cf_error_string_ref:
                CoreFoundation.CFRelease(cf_error_string_ref)
572 linesโ€ข20 KB
python
.venv/Lib/site-packages/pip/_vendor/requests/cookies.py
Raw Download
Find: Go to:
"""
requests.cookies
~~~~~~~~~~~~~~~~

Compatibility code to be able to use `http.cookiejar.CookieJar` with requests.

requests.utils imports from here, so be careful with imports.
"""

import calendar
import copy
import time

from ._internal_utils import to_native_string
from .compat import Morsel, MutableMapping, cookielib, urlparse, urlunparse

try:
    import threading
except ImportError:
    import dummy_threading as threading


class MockRequest:
    """Wraps a `requests.Request` to mimic a `urllib2.Request`.

    The code in `http.cookiejar.CookieJar` expects this interface in order to correctly
    manage cookie policies, i.e., determine whether a cookie can be set, given the
    domains of the request and the cookie.

    The original request object is read-only. The client is responsible for collecting
    the new headers via `get_new_headers()` and interpreting them appropriately. You
    probably want `get_cookie_header`, defined below.
    """

    def __init__(self, request):
        self._r = request
        self._new_headers = {}
        self.type = urlparse(self._r.url).scheme

    def get_type(self):
        return self.type

    def get_host(self):
        return urlparse(self._r.url).netloc

    def get_origin_req_host(self):
        return self.get_host()

    def get_full_url(self):
        # Only return the response's URL if the user hadn't set the Host
        # header
        if not self._r.headers.get("Host"):
            return self._r.url
        # If they did set it, retrieve it and reconstruct the expected domain
        host = to_native_string(self._r.headers["Host"], encoding="utf-8")
        parsed = urlparse(self._r.url)
        # Reconstruct the URL as we expect it
        return urlunparse(
            [
                parsed.scheme,
                host,
                parsed.path,
                parsed.params,
                parsed.query,
                parsed.fragment,
            ]
        )

    def is_unverifiable(self):
        return True

    def has_header(self, name):
        return name in self._r.headers or name in self._new_headers

    def get_header(self, name, default=None):
        return self._r.headers.get(name, self._new_headers.get(name, default))

    def add_header(self, key, val):
        """cookiejar has no legitimate use for this method; add it back if you find one."""
        raise NotImplementedError(
            "Cookie headers should be added with add_unredirected_header()"
        )

    def add_unredirected_header(self, name, value):
        self._new_headers[name] = value

    def get_new_headers(self):
        return self._new_headers

    @property
    def unverifiable(self):
        return self.is_unverifiable()

    @property
    def origin_req_host(self):
        return self.get_origin_req_host()

    @property
    def host(self):
        return self.get_host()


class MockResponse:
    """Wraps a `httplib.HTTPMessage` to mimic a `urllib.addinfourl`.

    ...what? Basically, expose the parsed HTTP headers from the server response
    the way `http.cookiejar` expects to see them.
    """

    def __init__(self, headers):
        """Make a MockResponse for `cookiejar` to read.

        :param headers: a httplib.HTTPMessage or analogous carrying the headers
        """
        self._headers = headers

    def info(self):
        return self._headers

    def getheaders(self, name):
        self._headers.getheaders(name)


def extract_cookies_to_jar(jar, request, response):
    """Extract the cookies from the response into a CookieJar.

    :param jar: http.cookiejar.CookieJar (not necessarily a RequestsCookieJar)
    :param request: our own requests.Request object
    :param response: urllib3.HTTPResponse object
    """
    if not (hasattr(response, "_original_response") and response._original_response):
        return
    # the _original_response field is the wrapped httplib.HTTPResponse object,
    req = MockRequest(request)
    # pull out the HTTPMessage with the headers and put it in the mock:
    res = MockResponse(response._original_response.msg)
    jar.extract_cookies(res, req)


def get_cookie_header(jar, request):
    """
    Produce an appropriate Cookie header string to be sent with `request`, or None.

    :rtype: str
    """
    r = MockRequest(request)
    jar.add_cookie_header(r)
    return r.get_new_headers().get("Cookie")


def remove_cookie_by_name(cookiejar, name, domain=None, path=None):
    """Unsets a cookie by name, by default over all domains and paths.

    Wraps CookieJar.clear(), is O(n).
    """
    clearables = []
    for cookie in cookiejar:
        if cookie.name != name:
            continue
        if domain is not None and domain != cookie.domain:
            continue
        if path is not None and path != cookie.path:
            continue
        clearables.append((cookie.domain, cookie.path, cookie.name))

    for domain, path, name in clearables:
        cookiejar.clear(domain, path, name)


class CookieConflictError(RuntimeError):
    """There are two cookies that meet the criteria specified in the cookie jar.
    Use .get and .set and include domain and path args in order to be more specific.
    """


class RequestsCookieJar(cookielib.CookieJar, MutableMapping):
    """Compatibility class; is a http.cookiejar.CookieJar, but exposes a dict
    interface.

    This is the CookieJar we create by default for requests and sessions that
    don't specify one, since some clients may expect response.cookies and
    session.cookies to support dict operations.

    Requests does not use the dict interface internally; it's just for
    compatibility with external client code. All requests code should work
    out of the box with externally provided instances of ``CookieJar``, e.g.
    ``LWPCookieJar`` and ``FileCookieJar``.

    Unlike a regular CookieJar, this class is pickleable.

    .. warning:: dictionary operations that are normally O(1) may be O(n).
    """

    def get(self, name, default=None, domain=None, path=None):
        """Dict-like get() that also supports optional domain and path args in
        order to resolve naming collisions from using one cookie jar over
        multiple domains.

        .. warning:: operation is O(n), not O(1).
        """
        try:
            return self._find_no_duplicates(name, domain, path)
        except KeyError:
            return default

    def set(self, name, value, **kwargs):
        """Dict-like set() that also supports optional domain and path args in
        order to resolve naming collisions from using one cookie jar over
        multiple domains.
        """
        # support client code that unsets cookies by assignment of a None value:
        if value is None:
            remove_cookie_by_name(
                self, name, domain=kwargs.get("domain"), path=kwargs.get("path")
            )
            return

        if isinstance(value, Morsel):
            c = morsel_to_cookie(value)
        else:
            c = create_cookie(name, value, **kwargs)
        self.set_cookie(c)
        return c

    def iterkeys(self):
        """Dict-like iterkeys() that returns an iterator of names of cookies
        from the jar.

        .. seealso:: itervalues() and iteritems().
        """
        for cookie in iter(self):
            yield cookie.name

    def keys(self):
        """Dict-like keys() that returns a list of names of cookies from the
        jar.

        .. seealso:: values() and items().
        """
        return list(self.iterkeys())

    def itervalues(self):
        """Dict-like itervalues() that returns an iterator of values of cookies
        from the jar.

        .. seealso:: iterkeys() and iteritems().
        """
        for cookie in iter(self):
            yield cookie.value

    def values(self):
        """Dict-like values() that returns a list of values of cookies from the
        jar.

        .. seealso:: keys() and items().
        """
        return list(self.itervalues())

    def iteritems(self):
        """Dict-like iteritems() that returns an iterator of name-value tuples
        from the jar.

        .. seealso:: iterkeys() and itervalues().
        """
        for cookie in iter(self):
            yield cookie.name, cookie.value

    def items(self):
        """Dict-like items() that returns a list of name-value tuples from the
        jar. Allows client-code to call ``dict(RequestsCookieJar)`` and get a
        vanilla python dict of key value pairs.

        .. seealso:: keys() and values().
        """
        return list(self.iteritems())

    def list_domains(self):
        """Utility method to list all the domains in the jar."""
        domains = []
        for cookie in iter(self):
            if cookie.domain not in domains:
                domains.append(cookie.domain)
        return domains

    def list_paths(self):
        """Utility method to list all the paths in the jar."""
        paths = []
        for cookie in iter(self):
            if cookie.path not in paths:
                paths.append(cookie.path)
        return paths

    def multiple_domains(self):
        """Returns True if there are multiple domains in the jar.
        Returns False otherwise.

        :rtype: bool
        """
        domains = []
        for cookie in iter(self):
            if cookie.domain is not None and cookie.domain in domains:
                return True
            domains.append(cookie.domain)
        return False  # there is only one domain in jar

    def get_dict(self, domain=None, path=None):
        """Takes as an argument an optional domain and path and returns a plain
        old Python dict of name-value pairs of cookies that meet the
        requirements.

        :rtype: dict
        """
        dictionary = {}
        for cookie in iter(self):
            if (domain is None or cookie.domain == domain) and (
                path is None or cookie.path == path
            ):
                dictionary[cookie.name] = cookie.value
        return dictionary

    def __contains__(self, name):
        try:
            return super().__contains__(name)
        except CookieConflictError:
            return True

    def __getitem__(self, name):
        """Dict-like __getitem__() for compatibility with client code. Throws
        exception if there are more than one cookie with name. In that case,
        use the more explicit get() method instead.

        .. warning:: operation is O(n), not O(1).
        """
        return self._find_no_duplicates(name)

    def __setitem__(self, name, value):
        """Dict-like __setitem__ for compatibility with client code. Throws
        exception if there is already a cookie of that name in the jar. In that
        case, use the more explicit set() method instead.
        """
        self.set(name, value)

    def __delitem__(self, name):
        """Deletes a cookie given a name. Wraps ``http.cookiejar.CookieJar``'s
        ``remove_cookie_by_name()``.
        """
        remove_cookie_by_name(self, name)

    def set_cookie(self, cookie, *args, **kwargs):
        if (
            hasattr(cookie.value, "startswith")
            and cookie.value.startswith('"')
            and cookie.value.endswith('"')
        ):
            cookie.value = cookie.value.replace('\\"', "")
        return super().set_cookie(cookie, *args, **kwargs)

    def update(self, other):
        """Updates this jar with cookies from another CookieJar or dict-like"""
        if isinstance(other, cookielib.CookieJar):
            for cookie in other:
                self.set_cookie(copy.copy(cookie))
        else:
            super().update(other)

    def _find(self, name, domain=None, path=None):
        """Requests uses this method internally to get cookie values.

        If there are conflicting cookies, _find arbitrarily chooses one.
        See _find_no_duplicates if you want an exception thrown if there are
        conflicting cookies.

        :param name: a string containing name of cookie
        :param domain: (optional) string containing domain of cookie
        :param path: (optional) string containing path of cookie
        :return: cookie.value
        """
        for cookie in iter(self):
            if cookie.name == name:
                if domain is None or cookie.domain == domain:
                    if path is None or cookie.path == path:
                        return cookie.value

        raise KeyError(f"name={name!r}, domain={domain!r}, path={path!r}")

    def _find_no_duplicates(self, name, domain=None, path=None):
        """Both ``__get_item__`` and ``get`` call this function: it's never
        used elsewhere in Requests.

        :param name: a string containing name of cookie
        :param domain: (optional) string containing domain of cookie
        :param path: (optional) string containing path of cookie
        :raises KeyError: if cookie is not found
        :raises CookieConflictError: if there are multiple cookies
            that match name and optionally domain and path
        :return: cookie.value
        """
        toReturn = None
        for cookie in iter(self):
            if cookie.name == name:
                if domain is None or cookie.domain == domain:
                    if path is None or cookie.path == path:
                        if toReturn is not None:
                            # if there are multiple cookies that meet passed in criteria
                            raise CookieConflictError(
                                f"There are multiple cookies with name, {name!r}"
                            )
                        # we will eventually return this as long as no cookie conflict
                        toReturn = cookie.value

        if toReturn:
            return toReturn
        raise KeyError(f"name={name!r}, domain={domain!r}, path={path!r}")

    def __getstate__(self):
        """Unlike a normal CookieJar, this class is pickleable."""
        state = self.__dict__.copy()
        # remove the unpickleable RLock object
        state.pop("_cookies_lock")
        return state

    def __setstate__(self, state):
        """Unlike a normal CookieJar, this class is pickleable."""
        self.__dict__.update(state)
        if "_cookies_lock" not in self.__dict__:
            self._cookies_lock = threading.RLock()

    def copy(self):
        """Return a copy of this RequestsCookieJar."""
        new_cj = RequestsCookieJar()
        new_cj.set_policy(self.get_policy())
        new_cj.update(self)
        return new_cj

    def get_policy(self):
        """Return the CookiePolicy instance used."""
        return self._policy


def _copy_cookie_jar(jar):
    if jar is None:
        return None

    if hasattr(jar, "copy"):
        # We're dealing with an instance of RequestsCookieJar
        return jar.copy()
    # We're dealing with a generic CookieJar instance
    new_jar = copy.copy(jar)
    new_jar.clear()
    for cookie in jar:
        new_jar.set_cookie(copy.copy(cookie))
    return new_jar


def create_cookie(name, value, **kwargs):
    """Make a cookie from underspecified parameters.

    By default, the pair of `name` and `value` will be set for the domain ''
    and sent on every request (this is sometimes called a "supercookie").
    """
    result = {
        "version": 0,
        "name": name,
        "value": value,
        "port": None,
        "domain": "",
        "path": "/",
        "secure": False,
        "expires": None,
        "discard": True,
        "comment": None,
        "comment_url": None,
        "rest": {"HttpOnly": None},
        "rfc2109": False,
    }

    badargs = set(kwargs) - set(result)
    if badargs:
        raise TypeError(
            f"create_cookie() got unexpected keyword arguments: {list(badargs)}"
        )

    result.update(kwargs)
    result["port_specified"] = bool(result["port"])
    result["domain_specified"] = bool(result["domain"])
    result["domain_initial_dot"] = result["domain"].startswith(".")
    result["path_specified"] = bool(result["path"])

    return cookielib.Cookie(**result)


def morsel_to_cookie(morsel):
    """Convert a Morsel object into a Cookie containing the one k/v pair."""

    expires = None
    if morsel["max-age"]:
        try:
            expires = int(time.time() + int(morsel["max-age"]))
        except ValueError:
            raise TypeError(f"max-age: {morsel['max-age']} must be integer")
    elif morsel["expires"]:
        time_template = "%a, %d-%b-%Y %H:%M:%S GMT"
        expires = calendar.timegm(time.strptime(morsel["expires"], time_template))
    return create_cookie(
        comment=morsel["comment"],
        comment_url=bool(morsel["comment"]),
        discard=False,
        domain=morsel["domain"],
        expires=expires,
        name=morsel.key,
        path=morsel["path"],
        port=None,
        rest={"HttpOnly": morsel["httponly"]},
        rfc2109=False,
        secure=bool(morsel["secure"]),
        value=morsel.value,
        version=morsel["version"] or 0,
    )


def cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True):
    """Returns a CookieJar from a key/value dictionary.

    :param cookie_dict: Dict of key/values to insert into CookieJar.
    :param cookiejar: (optional) A cookiejar to add the cookies to.
    :param overwrite: (optional) If False, will not replace cookies
        already in the jar with new ones.
    :rtype: CookieJar
    """
    if cookiejar is None:
        cookiejar = RequestsCookieJar()

    if cookie_dict is not None:
        names_from_jar = [cookie.name for cookie in cookiejar]
        for name in cookie_dict:
            if overwrite or (name not in names_from_jar):
                cookiejar.set_cookie(create_cookie(name, cookie_dict[name]))

    return cookiejar


def merge_cookies(cookiejar, cookies):
    """Add cookies to cookiejar and returns a merged CookieJar.

    :param cookiejar: CookieJar object to add the cookies to.
    :param cookies: Dictionary or CookieJar object to be added.
    :rtype: CookieJar
    """
    if not isinstance(cookiejar, cookielib.CookieJar):
        raise ValueError("You can only merge into CookieJar")

    if isinstance(cookies, dict):
        cookiejar = cookiejar_from_dict(cookies, cookiejar=cookiejar, overwrite=False)
    elif isinstance(cookies, cookielib.CookieJar):
        try:
            cookiejar.update(cookies)
        except AttributeError:
            for cookie_in_jar in cookies:
                cookiejar.set_cookie(cookie_in_jar)

    return cookiejar
562 linesโ€ข18.2 KB
python
.venv/Lib/site-packages/pip/_vendor/rich/layout.py
Raw Download
Find: Go to:
from abc import ABC, abstractmethod
from itertools import islice
from operator import itemgetter
from threading import RLock
from typing import (
    TYPE_CHECKING,
    Dict,
    Iterable,
    List,
    NamedTuple,
    Optional,
    Sequence,
    Tuple,
    Union,
)

from ._ratio import ratio_resolve
from .align import Align
from .console import Console, ConsoleOptions, RenderableType, RenderResult
from .highlighter import ReprHighlighter
from .panel import Panel
from .pretty import Pretty
from .region import Region
from .repr import Result, rich_repr
from .segment import Segment
from .style import StyleType

if TYPE_CHECKING:
    from pip._vendor.rich.tree import Tree


class LayoutRender(NamedTuple):
    """An individual layout render."""

    region: Region
    render: List[List[Segment]]


RegionMap = Dict["Layout", Region]
RenderMap = Dict["Layout", LayoutRender]


class LayoutError(Exception):
    """Layout related error."""


class NoSplitter(LayoutError):
    """Requested splitter does not exist."""


class _Placeholder:
    """An internal renderable used as a Layout placeholder."""

    highlighter = ReprHighlighter()

    def __init__(self, layout: "Layout", style: StyleType = "") -> None:
        self.layout = layout
        self.style = style

    def __rich_console__(
        self, console: Console, options: ConsoleOptions
    ) -> RenderResult:
        width = options.max_width
        height = options.height or options.size.height
        layout = self.layout
        title = (
            f"{layout.name!r} ({width} x {height})"
            if layout.name
            else f"({width} x {height})"
        )
        yield Panel(
            Align.center(Pretty(layout), vertical="middle"),
            style=self.style,
            title=self.highlighter(title),
            border_style="blue",
            height=height,
        )


class Splitter(ABC):
    """Base class for a splitter."""

    name: str = ""

    @abstractmethod
    def get_tree_icon(self) -> str:
        """Get the icon (emoji) used in layout.tree"""

    @abstractmethod
    def divide(
        self, children: Sequence["Layout"], region: Region
    ) -> Iterable[Tuple["Layout", Region]]:
        """Divide a region amongst several child layouts.

        Args:
            children (Sequence(Layout)): A number of child layouts.
            region (Region): A rectangular region to divide.
        """


class RowSplitter(Splitter):
    """Split a layout region in to rows."""

    name = "row"

    def get_tree_icon(self) -> str:
        return "[layout.tree.row]โฌŒ"

    def divide(
        self, children: Sequence["Layout"], region: Region
    ) -> Iterable[Tuple["Layout", Region]]:
        x, y, width, height = region
        render_widths = ratio_resolve(width, children)
        offset = 0
        _Region = Region
        for child, child_width in zip(children, render_widths):
            yield child, _Region(x + offset, y, child_width, height)
            offset += child_width


class ColumnSplitter(Splitter):
    """Split a layout region in to columns."""

    name = "column"

    def get_tree_icon(self) -> str:
        return "[layout.tree.column]โฌ"

    def divide(
        self, children: Sequence["Layout"], region: Region
    ) -> Iterable[Tuple["Layout", Region]]:
        x, y, width, height = region
        render_heights = ratio_resolve(height, children)
        offset = 0
        _Region = Region
        for child, child_height in zip(children, render_heights):
            yield child, _Region(x, y + offset, width, child_height)
            offset += child_height


@rich_repr
class Layout:
    """A renderable to divide a fixed height in to rows or columns.

    Args:
        renderable (RenderableType, optional): Renderable content, or None for placeholder. Defaults to None.
        name (str, optional): Optional identifier for Layout. Defaults to None.
        size (int, optional): Optional fixed size of layout. Defaults to None.
        minimum_size (int, optional): Minimum size of layout. Defaults to 1.
        ratio (int, optional): Optional ratio for flexible layout. Defaults to 1.
        visible (bool, optional): Visibility of layout. Defaults to True.
    """

    splitters = {"row": RowSplitter, "column": ColumnSplitter}

    def __init__(
        self,
        renderable: Optional[RenderableType] = None,
        *,
        name: Optional[str] = None,
        size: Optional[int] = None,
        minimum_size: int = 1,
        ratio: int = 1,
        visible: bool = True,
    ) -> None:
        self._renderable = renderable or _Placeholder(self)
        self.size = size
        self.minimum_size = minimum_size
        self.ratio = ratio
        self.name = name
        self.visible = visible
        self.splitter: Splitter = self.splitters["column"]()
        self._children: List[Layout] = []
        self._render_map: RenderMap = {}
        self._lock = RLock()

    def __rich_repr__(self) -> Result:
        yield "name", self.name, None
        yield "size", self.size, None
        yield "minimum_size", self.minimum_size, 1
        yield "ratio", self.ratio, 1

    @property
    def renderable(self) -> RenderableType:
        """Layout renderable."""
        return self if self._children else self._renderable

    @property
    def children(self) -> List["Layout"]:
        """Gets (visible) layout children."""
        return [child for child in self._children if child.visible]

    @property
    def map(self) -> RenderMap:
        """Get a map of the last render."""
        return self._render_map

    def get(self, name: str) -> Optional["Layout"]:
        """Get a named layout, or None if it doesn't exist.

        Args:
            name (str): Name of layout.

        Returns:
            Optional[Layout]: Layout instance or None if no layout was found.
        """
        if self.name == name:
            return self
        else:
            for child in self._children:
                named_layout = child.get(name)
                if named_layout is not None:
                    return named_layout
        return None

    def __getitem__(self, name: str) -> "Layout":
        layout = self.get(name)
        if layout is None:
            raise KeyError(f"No layout with name {name!r}")
        return layout

    @property
    def tree(self) -> "Tree":
        """Get a tree renderable to show layout structure."""
        from pip._vendor.rich.styled import Styled
        from pip._vendor.rich.table import Table
        from pip._vendor.rich.tree import Tree

        def summary(layout: "Layout") -> Table:
            icon = layout.splitter.get_tree_icon()

            table = Table.grid(padding=(0, 1, 0, 0))

            text: RenderableType = (
                Pretty(layout) if layout.visible else Styled(Pretty(layout), "dim")
            )
            table.add_row(icon, text)
            _summary = table
            return _summary

        layout = self
        tree = Tree(
            summary(layout),
            guide_style=f"layout.tree.{layout.splitter.name}",
            highlight=True,
        )

        def recurse(tree: "Tree", layout: "Layout") -> None:
            for child in layout._children:
                recurse(
                    tree.add(
                        summary(child),
                        guide_style=f"layout.tree.{child.splitter.name}",
                    ),
                    child,
                )

        recurse(tree, self)
        return tree

    def split(
        self,
        *layouts: Union["Layout", RenderableType],
        splitter: Union[Splitter, str] = "column",
    ) -> None:
        """Split the layout in to multiple sub-layouts.

        Args:
            *layouts (Layout): Positional arguments should be (sub) Layout instances.
            splitter (Union[Splitter, str]): Splitter instance or name of splitter.
        """
        _layouts = [
            layout if isinstance(layout, Layout) else Layout(layout)
            for layout in layouts
        ]
        try:
            self.splitter = (
                splitter
                if isinstance(splitter, Splitter)
                else self.splitters[splitter]()
            )
        except KeyError:
            raise NoSplitter(f"No splitter called {splitter!r}")
        self._children[:] = _layouts

    def add_split(self, *layouts: Union["Layout", RenderableType]) -> None:
        """Add a new layout(s) to existing split.

        Args:
            *layouts (Union[Layout, RenderableType]): Positional arguments should be renderables or (sub) Layout instances.

        """
        _layouts = (
            layout if isinstance(layout, Layout) else Layout(layout)
            for layout in layouts
        )
        self._children.extend(_layouts)

    def split_row(self, *layouts: Union["Layout", RenderableType]) -> None:
        """Split the layout in to a row (layouts side by side).

        Args:
            *layouts (Layout): Positional arguments should be (sub) Layout instances.
        """
        self.split(*layouts, splitter="row")

    def split_column(self, *layouts: Union["Layout", RenderableType]) -> None:
        """Split the layout in to a column (layouts stacked on top of each other).

        Args:
            *layouts (Layout): Positional arguments should be (sub) Layout instances.
        """
        self.split(*layouts, splitter="column")

    def unsplit(self) -> None:
        """Reset splits to initial state."""
        del self._children[:]

    def update(self, renderable: RenderableType) -> None:
        """Update renderable.

        Args:
            renderable (RenderableType): New renderable object.
        """
        with self._lock:
            self._renderable = renderable

    def refresh_screen(self, console: "Console", layout_name: str) -> None:
        """Refresh a sub-layout.

        Args:
            console (Console): Console instance where Layout is to be rendered.
            layout_name (str): Name of layout.
        """
        with self._lock:
            layout = self[layout_name]
            region, _lines = self._render_map[layout]
            (x, y, width, height) = region
            lines = console.render_lines(
                layout, console.options.update_dimensions(width, height)
            )
            self._render_map[layout] = LayoutRender(region, lines)
            console.update_screen_lines(lines, x, y)

    def _make_region_map(self, width: int, height: int) -> RegionMap:
        """Create a dict that maps layout on to Region."""
        stack: List[Tuple[Layout, Region]] = [(self, Region(0, 0, width, height))]
        push = stack.append
        pop = stack.pop
        layout_regions: List[Tuple[Layout, Region]] = []
        append_layout_region = layout_regions.append
        while stack:
            append_layout_region(pop())
            layout, region = layout_regions[-1]
            children = layout.children
            if children:
                for child_and_region in layout.splitter.divide(children, region):
                    push(child_and_region)

        region_map = {
            layout: region
            for layout, region in sorted(layout_regions, key=itemgetter(1))
        }
        return region_map

    def render(self, console: Console, options: ConsoleOptions) -> RenderMap:
        """Render the sub_layouts.

        Args:
            console (Console): Console instance.
            options (ConsoleOptions): Console options.

        Returns:
            RenderMap: A dict that maps Layout on to a tuple of Region, lines
        """
        render_width = options.max_width
        render_height = options.height or console.height
        region_map = self._make_region_map(render_width, render_height)
        layout_regions = [
            (layout, region)
            for layout, region in region_map.items()
            if not layout.children
        ]
        render_map: Dict["Layout", "LayoutRender"] = {}
        render_lines = console.render_lines
        update_dimensions = options.update_dimensions

        for layout, region in layout_regions:
            lines = render_lines(
                layout.renderable, update_dimensions(region.width, region.height)
            )
            render_map[layout] = LayoutRender(region, lines)
        return render_map

    def __rich_console__(
        self, console: Console, options: ConsoleOptions
    ) -> RenderResult:
        with self._lock:
            width = options.max_width or console.width
            height = options.height or console.height
            render_map = self.render(console, options.update_dimensions(width, height))
            self._render_map = render_map
            layout_lines: List[List[Segment]] = [[] for _ in range(height)]
            _islice = islice
            for region, lines in render_map.values():
                _x, y, _layout_width, layout_height = region
                for row, line in zip(
                    _islice(layout_lines, y, y + layout_height), lines
                ):
                    row.extend(line)

            new_line = Segment.line()
            for layout_row in layout_lines:
                yield from layout_row
                yield new_line


if __name__ == "__main__":
    from pip._vendor.rich.console import Console

    console = Console()
    layout = Layout()

    layout.split_column(
        Layout(name="header", size=3),
        Layout(ratio=1, name="main"),
        Layout(size=10, name="footer"),
    )

    layout["main"].split_row(Layout(name="side"), Layout(name="body", ratio=2))

    layout["body"].split_row(Layout(name="content", ratio=2), Layout(name="s2"))

    layout["s2"].split_column(
        Layout(name="top"), Layout(name="middle"), Layout(name="bottom")
    )

    layout["side"].split_column(Layout(layout.tree, name="left1"), Layout(name="left2"))

    layout["content"].update("foo")

    console.print(layout)
443 linesโ€ข13.7 KB
python
.venv/Lib/site-packages/pip/_vendor/rich/constrain.py
Raw Download
Find: Go to:
from typing import Optional, TYPE_CHECKING

from .jupyter import JupyterMixin
from .measure import Measurement

if TYPE_CHECKING:
    from .console import Console, ConsoleOptions, RenderableType, RenderResult


class Constrain(JupyterMixin):
    """Constrain the width of a renderable to a given number of characters.

    Args:
        renderable (RenderableType): A renderable object.
        width (int, optional): The maximum width (in characters) to render. Defaults to 80.
    """

    def __init__(self, renderable: "RenderableType", width: Optional[int] = 80) -> None:
        self.renderable = renderable
        self.width = width

    def __rich_console__(
        self, console: "Console", options: "ConsoleOptions"
    ) -> "RenderResult":
        if self.width is None:
            yield self.renderable
        else:
            child_options = options.update_width(min(self.width, options.max_width))
            yield from console.render(self.renderable, child_options)

    def __rich_measure__(
        self, console: "Console", options: "ConsoleOptions"
    ) -> "Measurement":
        if self.width is not None:
            options = options.update_width(self.width)
        measurement = Measurement.get(console, options, self.renderable)
        return measurement
38 linesโ€ข1.3 KB
python
.venv/Lib/site-packages/pip/_vendor/rich/ansi.py
Raw Download
Find: Go to:
import re
import sys
from contextlib import suppress
from typing import Iterable, NamedTuple, Optional

from .color import Color
from .style import Style
from .text import Text

re_ansi = re.compile(
    r"""
(?:\x1b\](.*?)\x1b\\)|
(?:\x1b([(@-Z\\-_]|\[[0-?]*[ -/]*[@-~]))
""",
    re.VERBOSE,
)


class _AnsiToken(NamedTuple):
    """Result of ansi tokenized string."""

    plain: str = ""
    sgr: Optional[str] = ""
    osc: Optional[str] = ""


def _ansi_tokenize(ansi_text: str) -> Iterable[_AnsiToken]:
    """Tokenize a string in to plain text and ANSI codes.

    Args:
        ansi_text (str): A String containing ANSI codes.

    Yields:
        AnsiToken: A named tuple of (plain, sgr, osc)
    """

    position = 0
    sgr: Optional[str]
    osc: Optional[str]
    for match in re_ansi.finditer(ansi_text):
        start, end = match.span(0)
        osc, sgr = match.groups()
        if start > position:
            yield _AnsiToken(ansi_text[position:start])
        if sgr:
            if sgr == "(":
                position = end + 1
                continue
            if sgr.endswith("m"):
                yield _AnsiToken("", sgr[1:-1], osc)
        else:
            yield _AnsiToken("", sgr, osc)
        position = end
    if position < len(ansi_text):
        yield _AnsiToken(ansi_text[position:])


SGR_STYLE_MAP = {
    1: "bold",
    2: "dim",
    3: "italic",
    4: "underline",
    5: "blink",
    6: "blink2",
    7: "reverse",
    8: "conceal",
    9: "strike",
    21: "underline2",
    22: "not dim not bold",
    23: "not italic",
    24: "not underline",
    25: "not blink",
    26: "not blink2",
    27: "not reverse",
    28: "not conceal",
    29: "not strike",
    30: "color(0)",
    31: "color(1)",
    32: "color(2)",
    33: "color(3)",
    34: "color(4)",
    35: "color(5)",
    36: "color(6)",
    37: "color(7)",
    39: "default",
    40: "on color(0)",
    41: "on color(1)",
    42: "on color(2)",
    43: "on color(3)",
    44: "on color(4)",
    45: "on color(5)",
    46: "on color(6)",
    47: "on color(7)",
    49: "on default",
    51: "frame",
    52: "encircle",
    53: "overline",
    54: "not frame not encircle",
    55: "not overline",
    90: "color(8)",
    91: "color(9)",
    92: "color(10)",
    93: "color(11)",
    94: "color(12)",
    95: "color(13)",
    96: "color(14)",
    97: "color(15)",
    100: "on color(8)",
    101: "on color(9)",
    102: "on color(10)",
    103: "on color(11)",
    104: "on color(12)",
    105: "on color(13)",
    106: "on color(14)",
    107: "on color(15)",
}


class AnsiDecoder:
    """Translate ANSI code in to styled Text."""

    def __init__(self) -> None:
        self.style = Style.null()

    def decode(self, terminal_text: str) -> Iterable[Text]:
        """Decode ANSI codes in an iterable of lines.

        Args:
            lines (Iterable[str]): An iterable of lines of terminal output.

        Yields:
            Text: Marked up Text.
        """
        for line in terminal_text.splitlines():
            yield self.decode_line(line)

    def decode_line(self, line: str) -> Text:
        """Decode a line containing ansi codes.

        Args:
            line (str): A line of terminal output.

        Returns:
            Text: A Text instance marked up according to ansi codes.
        """
        from_ansi = Color.from_ansi
        from_rgb = Color.from_rgb
        _Style = Style
        text = Text()
        append = text.append
        line = line.rsplit("\r", 1)[-1]
        for plain_text, sgr, osc in _ansi_tokenize(line):
            if plain_text:
                append(plain_text, self.style or None)
            elif osc is not None:
                if osc.startswith("8;"):
                    _params, semicolon, link = osc[2:].partition(";")
                    if semicolon:
                        self.style = self.style.update_link(link or None)
            elif sgr is not None:
                # Translate in to semi-colon separated codes
                # Ignore invalid codes, because we want to be lenient
                codes = [
                    min(255, int(_code) if _code else 0)
                    for _code in sgr.split(";")
                    if _code.isdigit() or _code == ""
                ]
                iter_codes = iter(codes)
                for code in iter_codes:
                    if code == 0:
                        # reset
                        self.style = _Style.null()
                    elif code in SGR_STYLE_MAP:
                        # styles
                        self.style += _Style.parse(SGR_STYLE_MAP[code])
                    elif code == 38:
                        # ย Foreground
                        with suppress(StopIteration):
                            color_type = next(iter_codes)
                            if color_type == 5:
                                self.style += _Style.from_color(
                                    from_ansi(next(iter_codes))
                                )
                            elif color_type == 2:
                                self.style += _Style.from_color(
                                    from_rgb(
                                        next(iter_codes),
                                        next(iter_codes),
                                        next(iter_codes),
                                    )
                                )
                    elif code == 48:
                        # Background
                        with suppress(StopIteration):
                            color_type = next(iter_codes)
                            if color_type == 5:
                                self.style += _Style.from_color(
                                    None, from_ansi(next(iter_codes))
                                )
                            elif color_type == 2:
                                self.style += _Style.from_color(
                                    None,
                                    from_rgb(
                                        next(iter_codes),
                                        next(iter_codes),
                                        next(iter_codes),
                                    ),
                                )

        return text


if sys.platform != "win32" and __name__ == "__main__":  # pragma: no cover
    import io
    import os
    import pty
    import sys

    decoder = AnsiDecoder()

    stdout = io.BytesIO()

    def read(fd: int) -> bytes:
        data = os.read(fd, 1024)
        stdout.write(data)
        return data

    pty.spawn(sys.argv[1:], read)

    from .console import Console

    console = Console(record=True)

    stdout_result = stdout.getvalue().decode("utf-8")
    print(stdout_result)

    for line in decoder.decode(stdout_result):
        console.print(line)

    console.save_html("stdout.html")
241 linesโ€ข6.7 KB
python
.venv/Lib/site-packages/pip/_vendor/rich/prompt.py
Raw Download
Find: Go to:
from typing import Any, Generic, List, Optional, TextIO, TypeVar, Union, overload

from . import get_console
from .console import Console
from .text import Text, TextType

PromptType = TypeVar("PromptType")
DefaultType = TypeVar("DefaultType")


class PromptError(Exception):
    """Exception base class for prompt related errors."""


class InvalidResponse(PromptError):
    """Exception to indicate a response was invalid. Raise this within process_response() to indicate an error
    and provide an error message.

    Args:
        message (Union[str, Text]): Error message.
    """

    def __init__(self, message: TextType) -> None:
        self.message = message

    def __rich__(self) -> TextType:
        return self.message


class PromptBase(Generic[PromptType]):
    """Ask the user for input until a valid response is received. This is the base class, see one of
    the concrete classes for examples.

    Args:
        prompt (TextType, optional): Prompt text. Defaults to "".
        console (Console, optional): A Console instance or None to use global console. Defaults to None.
        password (bool, optional): Enable password input. Defaults to False.
        choices (List[str], optional): A list of valid choices. Defaults to None.
        show_default (bool, optional): Show default in prompt. Defaults to True.
        show_choices (bool, optional): Show choices in prompt. Defaults to True.
    """

    response_type: type = str

    validate_error_message = "[prompt.invalid]Please enter a valid value"
    illegal_choice_message = (
        "[prompt.invalid.choice]Please select one of the available options"
    )
    prompt_suffix = ": "

    choices: Optional[List[str]] = None

    def __init__(
        self,
        prompt: TextType = "",
        *,
        console: Optional[Console] = None,
        password: bool = False,
        choices: Optional[List[str]] = None,
        show_default: bool = True,
        show_choices: bool = True,
    ) -> None:
        self.console = console or get_console()
        self.prompt = (
            Text.from_markup(prompt, style="prompt")
            if isinstance(prompt, str)
            else prompt
        )
        self.password = password
        if choices is not None:
            self.choices = choices
        self.show_default = show_default
        self.show_choices = show_choices

    @classmethod
    @overload
    def ask(
        cls,
        prompt: TextType = "",
        *,
        console: Optional[Console] = None,
        password: bool = False,
        choices: Optional[List[str]] = None,
        show_default: bool = True,
        show_choices: bool = True,
        default: DefaultType,
        stream: Optional[TextIO] = None,
    ) -> Union[DefaultType, PromptType]:
        ...

    @classmethod
    @overload
    def ask(
        cls,
        prompt: TextType = "",
        *,
        console: Optional[Console] = None,
        password: bool = False,
        choices: Optional[List[str]] = None,
        show_default: bool = True,
        show_choices: bool = True,
        stream: Optional[TextIO] = None,
    ) -> PromptType:
        ...

    @classmethod
    def ask(
        cls,
        prompt: TextType = "",
        *,
        console: Optional[Console] = None,
        password: bool = False,
        choices: Optional[List[str]] = None,
        show_default: bool = True,
        show_choices: bool = True,
        default: Any = ...,
        stream: Optional[TextIO] = None,
    ) -> Any:
        """Shortcut to construct and run a prompt loop and return the result.

        Example:
            >>> filename = Prompt.ask("Enter a filename")

        Args:
            prompt (TextType, optional): Prompt text. Defaults to "".
            console (Console, optional): A Console instance or None to use global console. Defaults to None.
            password (bool, optional): Enable password input. Defaults to False.
            choices (List[str], optional): A list of valid choices. Defaults to None.
            show_default (bool, optional): Show default in prompt. Defaults to True.
            show_choices (bool, optional): Show choices in prompt. Defaults to True.
            stream (TextIO, optional): Optional text file open for reading to get input. Defaults to None.
        """
        _prompt = cls(
            prompt,
            console=console,
            password=password,
            choices=choices,
            show_default=show_default,
            show_choices=show_choices,
        )
        return _prompt(default=default, stream=stream)

    def render_default(self, default: DefaultType) -> Text:
        """Turn the supplied default in to a Text instance.

        Args:
            default (DefaultType): Default value.

        Returns:
            Text: Text containing rendering of default value.
        """
        return Text(f"({default})", "prompt.default")

    def make_prompt(self, default: DefaultType) -> Text:
        """Make prompt text.

        Args:
            default (DefaultType): Default value.

        Returns:
            Text: Text to display in prompt.
        """
        prompt = self.prompt.copy()
        prompt.end = ""

        if self.show_choices and self.choices:
            _choices = "/".join(self.choices)
            choices = f"[{_choices}]"
            prompt.append(" ")
            prompt.append(choices, "prompt.choices")

        if (
            default != ...
            and self.show_default
            and isinstance(default, (str, self.response_type))
        ):
            prompt.append(" ")
            _default = self.render_default(default)
            prompt.append(_default)

        prompt.append(self.prompt_suffix)

        return prompt

    @classmethod
    def get_input(
        cls,
        console: Console,
        prompt: TextType,
        password: bool,
        stream: Optional[TextIO] = None,
    ) -> str:
        """Get input from user.

        Args:
            console (Console): Console instance.
            prompt (TextType): Prompt text.
            password (bool): Enable password entry.

        Returns:
            str: String from user.
        """
        return console.input(prompt, password=password, stream=stream)

    def check_choice(self, value: str) -> bool:
        """Check value is in the list of valid choices.

        Args:
            value (str): Value entered by user.

        Returns:
            bool: True if choice was valid, otherwise False.
        """
        assert self.choices is not None
        return value.strip() in self.choices

    def process_response(self, value: str) -> PromptType:
        """Process response from user, convert to prompt type.

        Args:
            value (str): String typed by user.

        Raises:
            InvalidResponse: If ``value`` is invalid.

        Returns:
            PromptType: The value to be returned from ask method.
        """
        value = value.strip()
        try:
            return_value: PromptType = self.response_type(value)
        except ValueError:
            raise InvalidResponse(self.validate_error_message)

        if self.choices is not None and not self.check_choice(value):
            raise InvalidResponse(self.illegal_choice_message)

        return return_value

    def on_validate_error(self, value: str, error: InvalidResponse) -> None:
        """Called to handle validation error.

        Args:
            value (str): String entered by user.
            error (InvalidResponse): Exception instance the initiated the error.
        """
        self.console.print(error)

    def pre_prompt(self) -> None:
        """Hook to display something before the prompt."""

    @overload
    def __call__(self, *, stream: Optional[TextIO] = None) -> PromptType:
        ...

    @overload
    def __call__(
        self, *, default: DefaultType, stream: Optional[TextIO] = None
    ) -> Union[PromptType, DefaultType]:
        ...

    def __call__(self, *, default: Any = ..., stream: Optional[TextIO] = None) -> Any:
        """Run the prompt loop.

        Args:
            default (Any, optional): Optional default value.

        Returns:
            PromptType: Processed value.
        """
        while True:
            self.pre_prompt()
            prompt = self.make_prompt(default)
            value = self.get_input(self.console, prompt, self.password, stream=stream)
            if value == "" and default != ...:
                return default
            try:
                return_value = self.process_response(value)
            except InvalidResponse as error:
                self.on_validate_error(value, error)
                continue
            else:
                return return_value


class Prompt(PromptBase[str]):
    """A prompt that returns a str.

    Example:
        >>> name = Prompt.ask("Enter your name")


    """

    response_type = str


class IntPrompt(PromptBase[int]):
    """A prompt that returns an integer.

    Example:
        >>> burrito_count = IntPrompt.ask("How many burritos do you want to order")

    """

    response_type = int
    validate_error_message = "[prompt.invalid]Please enter a valid integer number"


class FloatPrompt(PromptBase[float]):
    """A prompt that returns a float.

    Example:
        >>> temperature = FloatPrompt.ask("Enter desired temperature")

    """

    response_type = float
    validate_error_message = "[prompt.invalid]Please enter a number"


class Confirm(PromptBase[bool]):
    """A yes / no confirmation prompt.

    Example:
        >>> if Confirm.ask("Continue"):
                run_job()

    """

    response_type = bool
    validate_error_message = "[prompt.invalid]Please enter Y or N"
    choices: List[str] = ["y", "n"]

    def render_default(self, default: DefaultType) -> Text:
        """Render the default as (y) or (n) rather than True/False."""
        yes, no = self.choices
        return Text(f"({yes})" if default else f"({no})", style="prompt.default")

    def process_response(self, value: str) -> bool:
        """Convert choices to a bool."""
        value = value.strip().lower()
        if value not in self.choices:
            raise InvalidResponse(self.validate_error_message)
        return value == self.choices[0]


if __name__ == "__main__":  # pragma: no cover
    from pip._vendor.rich import print

    if Confirm.ask("Run [i]prompt[/i] tests?", default=True):
        while True:
            result = IntPrompt.ask(
                ":rocket: Enter a number between [b]1[/b] and [b]10[/b]", default=5
            )
            if result >= 1 and result <= 10:
                break
            print(":pile_of_poo: [prompt.invalid]Number must be between 1 and 10")
        print(f"number={result}")

        while True:
            password = Prompt.ask(
                "Please enter a password [cyan](must be at least 5 characters)",
                password=True,
            )
            if len(password) >= 5:
                break
            print("[prompt.invalid]password too short")
        print(f"password={password!r}")

        fruit = Prompt.ask("Enter a fruit", choices=["apple", "orange", "pear"])
        print(f"fruit={fruit!r}")

    else:
        print("[b]OK :loudly_crying_face:")
376 linesโ€ข11 KB
python
.venv/Lib/site-packages/pip/_vendor/rich/diagnose.py
Raw Download
Find: Go to:
import os
import platform

from pip._vendor.rich import inspect
from pip._vendor.rich.console import Console, get_windows_console_features
from pip._vendor.rich.panel import Panel
from pip._vendor.rich.pretty import Pretty


def report() -> None:  # pragma: no cover
    """Print a report to the terminal with debugging information"""
    console = Console()
    inspect(console)
    features = get_windows_console_features()
    inspect(features)

    env_names = (
        "TERM",
        "COLORTERM",
        "CLICOLOR",
        "NO_COLOR",
        "TERM_PROGRAM",
        "COLUMNS",
        "LINES",
        "JUPYTER_COLUMNS",
        "JUPYTER_LINES",
        "JPY_PARENT_PID",
        "VSCODE_VERBOSE_LOGGING",
    )
    env = {name: os.getenv(name) for name in env_names}
    console.print(Panel.fit((Pretty(env)), title="[b]Environment Variables"))

    console.print(f'platform="{platform.system()}"')


if __name__ == "__main__":  # pragma: no cover
    report()
38 linesโ€ข972 B
python
.venv/Lib/site-packages/pip/_vendor/rich/_emoji_codes.py
Raw Download
Find: Go to:
EMOJI = {
    "1st_place_medal": "๐Ÿฅ‡",
    "2nd_place_medal": "๐Ÿฅˆ",
    "3rd_place_medal": "๐Ÿฅ‰",
    "ab_button_(blood_type)": "๐Ÿ†Ž",
    "atm_sign": "๐Ÿง",
    "a_button_(blood_type)": "๐Ÿ…ฐ",
    "afghanistan": "๐Ÿ‡ฆ๐Ÿ‡ซ",
    "albania": "๐Ÿ‡ฆ๐Ÿ‡ฑ",
    "algeria": "๐Ÿ‡ฉ๐Ÿ‡ฟ",
    "american_samoa": "๐Ÿ‡ฆ๐Ÿ‡ธ",
    "andorra": "๐Ÿ‡ฆ๐Ÿ‡ฉ",
    "angola": "๐Ÿ‡ฆ๐Ÿ‡ด",
    "anguilla": "๐Ÿ‡ฆ๐Ÿ‡ฎ",
    "antarctica": "๐Ÿ‡ฆ๐Ÿ‡ถ",
    "antigua_&_barbuda": "๐Ÿ‡ฆ๐Ÿ‡ฌ",
    "aquarius": "โ™’",
    "argentina": "๐Ÿ‡ฆ๐Ÿ‡ท",
    "aries": "โ™ˆ",
    "armenia": "๐Ÿ‡ฆ๐Ÿ‡ฒ",
    "aruba": "๐Ÿ‡ฆ๐Ÿ‡ผ",
    "ascension_island": "๐Ÿ‡ฆ๐Ÿ‡จ",
    "australia": "๐Ÿ‡ฆ๐Ÿ‡บ",
    "austria": "๐Ÿ‡ฆ๐Ÿ‡น",
    "azerbaijan": "๐Ÿ‡ฆ๐Ÿ‡ฟ",
    "back_arrow": "๐Ÿ”™",
    "b_button_(blood_type)": "๐Ÿ…ฑ",
    "bahamas": "๐Ÿ‡ง๐Ÿ‡ธ",
    "bahrain": "๐Ÿ‡ง๐Ÿ‡ญ",
    "bangladesh": "๐Ÿ‡ง๐Ÿ‡ฉ",
    "barbados": "๐Ÿ‡ง๐Ÿ‡ง",
    "belarus": "๐Ÿ‡ง๐Ÿ‡พ",
    "belgium": "๐Ÿ‡ง๐Ÿ‡ช",
    "belize": "๐Ÿ‡ง๐Ÿ‡ฟ",
    "benin": "๐Ÿ‡ง๐Ÿ‡ฏ",
    "bermuda": "๐Ÿ‡ง๐Ÿ‡ฒ",
    "bhutan": "๐Ÿ‡ง๐Ÿ‡น",
    "bolivia": "๐Ÿ‡ง๐Ÿ‡ด",
    "bosnia_&_herzegovina": "๐Ÿ‡ง๐Ÿ‡ฆ",
    "botswana": "๐Ÿ‡ง๐Ÿ‡ผ",
    "bouvet_island": "๐Ÿ‡ง๐Ÿ‡ป",
    "brazil": "๐Ÿ‡ง๐Ÿ‡ท",
    "british_indian_ocean_territory": "๐Ÿ‡ฎ๐Ÿ‡ด",
    "british_virgin_islands": "๐Ÿ‡ป๐Ÿ‡ฌ",
    "brunei": "๐Ÿ‡ง๐Ÿ‡ณ",
    "bulgaria": "๐Ÿ‡ง๐Ÿ‡ฌ",
    "burkina_faso": "๐Ÿ‡ง๐Ÿ‡ซ",
    "burundi": "๐Ÿ‡ง๐Ÿ‡ฎ",
    "cl_button": "๐Ÿ†‘",
    "cool_button": "๐Ÿ†’",
    "cambodia": "๐Ÿ‡ฐ๐Ÿ‡ญ",
    "cameroon": "๐Ÿ‡จ๐Ÿ‡ฒ",
    "canada": "๐Ÿ‡จ๐Ÿ‡ฆ",
    "canary_islands": "๐Ÿ‡ฎ๐Ÿ‡จ",
    "cancer": "โ™‹",
    "cape_verde": "๐Ÿ‡จ๐Ÿ‡ป",
    "capricorn": "โ™‘",
    "caribbean_netherlands": "๐Ÿ‡ง๐Ÿ‡ถ",
    "cayman_islands": "๐Ÿ‡ฐ๐Ÿ‡พ",
    "central_african_republic": "๐Ÿ‡จ๐Ÿ‡ซ",
    "ceuta_&_melilla": "๐Ÿ‡ช๐Ÿ‡ฆ",
    "chad": "๐Ÿ‡น๐Ÿ‡ฉ",
    "chile": "๐Ÿ‡จ๐Ÿ‡ฑ",
    "china": "๐Ÿ‡จ๐Ÿ‡ณ",
    "christmas_island": "๐Ÿ‡จ๐Ÿ‡ฝ",
    "christmas_tree": "๐ŸŽ„",
    "clipperton_island": "๐Ÿ‡จ๐Ÿ‡ต",
    "cocos_(keeling)_islands": "๐Ÿ‡จ๐Ÿ‡จ",
    "colombia": "๐Ÿ‡จ๐Ÿ‡ด",
    "comoros": "๐Ÿ‡ฐ๐Ÿ‡ฒ",
    "congo_-_brazzaville": "๐Ÿ‡จ๐Ÿ‡ฌ",
    "congo_-_kinshasa": "๐Ÿ‡จ๐Ÿ‡ฉ",
    "cook_islands": "๐Ÿ‡จ๐Ÿ‡ฐ",
    "costa_rica": "๐Ÿ‡จ๐Ÿ‡ท",
    "croatia": "๐Ÿ‡ญ๐Ÿ‡ท",
    "cuba": "๐Ÿ‡จ๐Ÿ‡บ",
    "curaรงao": "๐Ÿ‡จ๐Ÿ‡ผ",
    "cyprus": "๐Ÿ‡จ๐Ÿ‡พ",
    "czechia": "๐Ÿ‡จ๐Ÿ‡ฟ",
    "cรดte_dโ€™ivoire": "๐Ÿ‡จ๐Ÿ‡ฎ",
    "denmark": "๐Ÿ‡ฉ๐Ÿ‡ฐ",
    "diego_garcia": "๐Ÿ‡ฉ๐Ÿ‡ฌ",
    "djibouti": "๐Ÿ‡ฉ๐Ÿ‡ฏ",
    "dominica": "๐Ÿ‡ฉ๐Ÿ‡ฒ",
    "dominican_republic": "๐Ÿ‡ฉ๐Ÿ‡ด",
    "end_arrow": "๐Ÿ”š",
    "ecuador": "๐Ÿ‡ช๐Ÿ‡จ",
    "egypt": "๐Ÿ‡ช๐Ÿ‡ฌ",
    "el_salvador": "๐Ÿ‡ธ๐Ÿ‡ป",
    "england": "๐Ÿด\U000e0067\U000e0062\U000e0065\U000e006e\U000e0067\U000e007f",
    "equatorial_guinea": "๐Ÿ‡ฌ๐Ÿ‡ถ",
    "eritrea": "๐Ÿ‡ช๐Ÿ‡ท",
    "estonia": "๐Ÿ‡ช๐Ÿ‡ช",
    "ethiopia": "๐Ÿ‡ช๐Ÿ‡น",
    "european_union": "๐Ÿ‡ช๐Ÿ‡บ",
    "free_button": "๐Ÿ†“",
    "falkland_islands": "๐Ÿ‡ซ๐Ÿ‡ฐ",
    "faroe_islands": "๐Ÿ‡ซ๐Ÿ‡ด",
    "fiji": "๐Ÿ‡ซ๐Ÿ‡ฏ",
    "finland": "๐Ÿ‡ซ๐Ÿ‡ฎ",
    "france": "๐Ÿ‡ซ๐Ÿ‡ท",
    "french_guiana": "๐Ÿ‡ฌ๐Ÿ‡ซ",
    "french_polynesia": "๐Ÿ‡ต๐Ÿ‡ซ",
    "french_southern_territories": "๐Ÿ‡น๐Ÿ‡ซ",
    "gabon": "๐Ÿ‡ฌ๐Ÿ‡ฆ",
    "gambia": "๐Ÿ‡ฌ๐Ÿ‡ฒ",
    "gemini": "โ™Š",
    "georgia": "๐Ÿ‡ฌ๐Ÿ‡ช",
    "germany": "๐Ÿ‡ฉ๐Ÿ‡ช",
    "ghana": "๐Ÿ‡ฌ๐Ÿ‡ญ",
    "gibraltar": "๐Ÿ‡ฌ๐Ÿ‡ฎ",
    "greece": "๐Ÿ‡ฌ๐Ÿ‡ท",
    "greenland": "๐Ÿ‡ฌ๐Ÿ‡ฑ",
    "grenada": "๐Ÿ‡ฌ๐Ÿ‡ฉ",
    "guadeloupe": "๐Ÿ‡ฌ๐Ÿ‡ต",
    "guam": "๐Ÿ‡ฌ๐Ÿ‡บ",
    "guatemala": "๐Ÿ‡ฌ๐Ÿ‡น",
    "guernsey": "๐Ÿ‡ฌ๐Ÿ‡ฌ",
    "guinea": "๐Ÿ‡ฌ๐Ÿ‡ณ",
    "guinea-bissau": "๐Ÿ‡ฌ๐Ÿ‡ผ",
    "guyana": "๐Ÿ‡ฌ๐Ÿ‡พ",
    "haiti": "๐Ÿ‡ญ๐Ÿ‡น",
    "heard_&_mcdonald_islands": "๐Ÿ‡ญ๐Ÿ‡ฒ",
    "honduras": "๐Ÿ‡ญ๐Ÿ‡ณ",
    "hong_kong_sar_china": "๐Ÿ‡ญ๐Ÿ‡ฐ",
    "hungary": "๐Ÿ‡ญ๐Ÿ‡บ",
    "id_button": "๐Ÿ†”",
    "iceland": "๐Ÿ‡ฎ๐Ÿ‡ธ",
    "india": "๐Ÿ‡ฎ๐Ÿ‡ณ",
    "indonesia": "๐Ÿ‡ฎ๐Ÿ‡ฉ",
    "iran": "๐Ÿ‡ฎ๐Ÿ‡ท",
    "iraq": "๐Ÿ‡ฎ๐Ÿ‡ถ",
    "ireland": "๐Ÿ‡ฎ๐Ÿ‡ช",
    "isle_of_man": "๐Ÿ‡ฎ๐Ÿ‡ฒ",
    "israel": "๐Ÿ‡ฎ๐Ÿ‡ฑ",
    "italy": "๐Ÿ‡ฎ๐Ÿ‡น",
    "jamaica": "๐Ÿ‡ฏ๐Ÿ‡ฒ",
    "japan": "๐Ÿ—พ",
    "japanese_acceptable_button": "๐Ÿ‰‘",
    "japanese_application_button": "๐Ÿˆธ",
    "japanese_bargain_button": "๐Ÿ‰",
    "japanese_castle": "๐Ÿฏ",
    "japanese_congratulations_button": "ใŠ—",
    "japanese_discount_button": "๐Ÿˆน",
    "japanese_dolls": "๐ŸŽŽ",
    "japanese_free_of_charge_button": "๐Ÿˆš",
    "japanese_here_button": "๐Ÿˆ",
    "japanese_monthly_amount_button": "๐Ÿˆท",
    "japanese_no_vacancy_button": "๐Ÿˆต",
    "japanese_not_free_of_charge_button": "๐Ÿˆถ",
    "japanese_open_for_business_button": "๐Ÿˆบ",
    "japanese_passing_grade_button": "๐Ÿˆด",
    "japanese_post_office": "๐Ÿฃ",
    "japanese_prohibited_button": "๐Ÿˆฒ",
    "japanese_reserved_button": "๐Ÿˆฏ",
    "japanese_secret_button": "ใŠ™",
    "japanese_service_charge_button": "๐Ÿˆ‚",
    "japanese_symbol_for_beginner": "๐Ÿ”ฐ",
    "japanese_vacancy_button": "๐Ÿˆณ",
    "jersey": "๐Ÿ‡ฏ๐Ÿ‡ช",
    "jordan": "๐Ÿ‡ฏ๐Ÿ‡ด",
    "kazakhstan": "๐Ÿ‡ฐ๐Ÿ‡ฟ",
    "kenya": "๐Ÿ‡ฐ๐Ÿ‡ช",
    "kiribati": "๐Ÿ‡ฐ๐Ÿ‡ฎ",
    "kosovo": "๐Ÿ‡ฝ๐Ÿ‡ฐ",
    "kuwait": "๐Ÿ‡ฐ๐Ÿ‡ผ",
    "kyrgyzstan": "๐Ÿ‡ฐ๐Ÿ‡ฌ",
    "laos": "๐Ÿ‡ฑ๐Ÿ‡ฆ",
    "latvia": "๐Ÿ‡ฑ๐Ÿ‡ป",
    "lebanon": "๐Ÿ‡ฑ๐Ÿ‡ง",
    "leo": "โ™Œ",
    "lesotho": "๐Ÿ‡ฑ๐Ÿ‡ธ",
    "liberia": "๐Ÿ‡ฑ๐Ÿ‡ท",
    "libra": "โ™Ž",
    "libya": "๐Ÿ‡ฑ๐Ÿ‡พ",
    "liechtenstein": "๐Ÿ‡ฑ๐Ÿ‡ฎ",
    "lithuania": "๐Ÿ‡ฑ๐Ÿ‡น",
    "luxembourg": "๐Ÿ‡ฑ๐Ÿ‡บ",
    "macau_sar_china": "๐Ÿ‡ฒ๐Ÿ‡ด",
    "macedonia": "๐Ÿ‡ฒ๐Ÿ‡ฐ",
    "madagascar": "๐Ÿ‡ฒ๐Ÿ‡ฌ",
    "malawi": "๐Ÿ‡ฒ๐Ÿ‡ผ",
    "malaysia": "๐Ÿ‡ฒ๐Ÿ‡พ",
    "maldives": "๐Ÿ‡ฒ๐Ÿ‡ป",
    "mali": "๐Ÿ‡ฒ๐Ÿ‡ฑ",
    "malta": "๐Ÿ‡ฒ๐Ÿ‡น",
    "marshall_islands": "๐Ÿ‡ฒ๐Ÿ‡ญ",
    "martinique": "๐Ÿ‡ฒ๐Ÿ‡ถ",
    "mauritania": "๐Ÿ‡ฒ๐Ÿ‡ท",
    "mauritius": "๐Ÿ‡ฒ๐Ÿ‡บ",
    "mayotte": "๐Ÿ‡พ๐Ÿ‡น",
    "mexico": "๐Ÿ‡ฒ๐Ÿ‡ฝ",
    "micronesia": "๐Ÿ‡ซ๐Ÿ‡ฒ",
    "moldova": "๐Ÿ‡ฒ๐Ÿ‡ฉ",
    "monaco": "๐Ÿ‡ฒ๐Ÿ‡จ",
    "mongolia": "๐Ÿ‡ฒ๐Ÿ‡ณ",
    "montenegro": "๐Ÿ‡ฒ๐Ÿ‡ช",
    "montserrat": "๐Ÿ‡ฒ๐Ÿ‡ธ",
    "morocco": "๐Ÿ‡ฒ๐Ÿ‡ฆ",
    "mozambique": "๐Ÿ‡ฒ๐Ÿ‡ฟ",
    "mrs._claus": "๐Ÿคถ",
    "mrs._claus_dark_skin_tone": "๐Ÿคถ๐Ÿฟ",
    "mrs._claus_light_skin_tone": "๐Ÿคถ๐Ÿป",
    "mrs._claus_medium-dark_skin_tone": "๐Ÿคถ๐Ÿพ",
    "mrs._claus_medium-light_skin_tone": "๐Ÿคถ๐Ÿผ",
    "mrs._claus_medium_skin_tone": "๐Ÿคถ๐Ÿฝ",
    "myanmar_(burma)": "๐Ÿ‡ฒ๐Ÿ‡ฒ",
    "new_button": "๐Ÿ†•",
    "ng_button": "๐Ÿ†–",
    "namibia": "๐Ÿ‡ณ๐Ÿ‡ฆ",
    "nauru": "๐Ÿ‡ณ๐Ÿ‡ท",
    "nepal": "๐Ÿ‡ณ๐Ÿ‡ต",
    "netherlands": "๐Ÿ‡ณ๐Ÿ‡ฑ",
    "new_caledonia": "๐Ÿ‡ณ๐Ÿ‡จ",
    "new_zealand": "๐Ÿ‡ณ๐Ÿ‡ฟ",
    "nicaragua": "๐Ÿ‡ณ๐Ÿ‡ฎ",
    "niger": "๐Ÿ‡ณ๐Ÿ‡ช",
    "nigeria": "๐Ÿ‡ณ๐Ÿ‡ฌ",
    "niue": "๐Ÿ‡ณ๐Ÿ‡บ",
    "norfolk_island": "๐Ÿ‡ณ๐Ÿ‡ซ",
    "north_korea": "๐Ÿ‡ฐ๐Ÿ‡ต",
    "northern_mariana_islands": "๐Ÿ‡ฒ๐Ÿ‡ต",
    "norway": "๐Ÿ‡ณ๐Ÿ‡ด",
    "ok_button": "๐Ÿ†—",
    "ok_hand": "๐Ÿ‘Œ",
    "ok_hand_dark_skin_tone": "๐Ÿ‘Œ๐Ÿฟ",
    "ok_hand_light_skin_tone": "๐Ÿ‘Œ๐Ÿป",
    "ok_hand_medium-dark_skin_tone": "๐Ÿ‘Œ๐Ÿพ",
    "ok_hand_medium-light_skin_tone": "๐Ÿ‘Œ๐Ÿผ",
    "ok_hand_medium_skin_tone": "๐Ÿ‘Œ๐Ÿฝ",
    "on!_arrow": "๐Ÿ”›",
    "o_button_(blood_type)": "๐Ÿ…พ",
    "oman": "๐Ÿ‡ด๐Ÿ‡ฒ",
    "ophiuchus": "โ›Ž",
    "p_button": "๐Ÿ…ฟ",
    "pakistan": "๐Ÿ‡ต๐Ÿ‡ฐ",
    "palau": "๐Ÿ‡ต๐Ÿ‡ผ",
    "palestinian_territories": "๐Ÿ‡ต๐Ÿ‡ธ",
    "panama": "๐Ÿ‡ต๐Ÿ‡ฆ",
    "papua_new_guinea": "๐Ÿ‡ต๐Ÿ‡ฌ",
    "paraguay": "๐Ÿ‡ต๐Ÿ‡พ",
    "peru": "๐Ÿ‡ต๐Ÿ‡ช",
    "philippines": "๐Ÿ‡ต๐Ÿ‡ญ",
    "pisces": "โ™“",
    "pitcairn_islands": "๐Ÿ‡ต๐Ÿ‡ณ",
    "poland": "๐Ÿ‡ต๐Ÿ‡ฑ",
    "portugal": "๐Ÿ‡ต๐Ÿ‡น",
    "puerto_rico": "๐Ÿ‡ต๐Ÿ‡ท",
    "qatar": "๐Ÿ‡ถ๐Ÿ‡ฆ",
    "romania": "๐Ÿ‡ท๐Ÿ‡ด",
    "russia": "๐Ÿ‡ท๐Ÿ‡บ",
    "rwanda": "๐Ÿ‡ท๐Ÿ‡ผ",
    "rรฉunion": "๐Ÿ‡ท๐Ÿ‡ช",
    "soon_arrow": "๐Ÿ”œ",
    "sos_button": "๐Ÿ†˜",
    "sagittarius": "โ™",
    "samoa": "๐Ÿ‡ผ๐Ÿ‡ธ",
    "san_marino": "๐Ÿ‡ธ๐Ÿ‡ฒ",
    "santa_claus": "๐ŸŽ…",
    "santa_claus_dark_skin_tone": "๐ŸŽ…๐Ÿฟ",
    "santa_claus_light_skin_tone": "๐ŸŽ…๐Ÿป",
    "santa_claus_medium-dark_skin_tone": "๐ŸŽ…๐Ÿพ",
    "santa_claus_medium-light_skin_tone": "๐ŸŽ…๐Ÿผ",
    "santa_claus_medium_skin_tone": "๐ŸŽ…๐Ÿฝ",
    "saudi_arabia": "๐Ÿ‡ธ๐Ÿ‡ฆ",
    "scorpio": "โ™",
    "scotland": "๐Ÿด\U000e0067\U000e0062\U000e0073\U000e0063\U000e0074\U000e007f",
    "senegal": "๐Ÿ‡ธ๐Ÿ‡ณ",
    "serbia": "๐Ÿ‡ท๐Ÿ‡ธ",
    "seychelles": "๐Ÿ‡ธ๐Ÿ‡จ",
    "sierra_leone": "๐Ÿ‡ธ๐Ÿ‡ฑ",
    "singapore": "๐Ÿ‡ธ๐Ÿ‡ฌ",
    "sint_maarten": "๐Ÿ‡ธ๐Ÿ‡ฝ",
    "slovakia": "๐Ÿ‡ธ๐Ÿ‡ฐ",
    "slovenia": "๐Ÿ‡ธ๐Ÿ‡ฎ",
    "solomon_islands": "๐Ÿ‡ธ๐Ÿ‡ง",
    "somalia": "๐Ÿ‡ธ๐Ÿ‡ด",
    "south_africa": "๐Ÿ‡ฟ๐Ÿ‡ฆ",
    "south_georgia_&_south_sandwich_islands": "๐Ÿ‡ฌ๐Ÿ‡ธ",
    "south_korea": "๐Ÿ‡ฐ๐Ÿ‡ท",
    "south_sudan": "๐Ÿ‡ธ๐Ÿ‡ธ",
    "spain": "๐Ÿ‡ช๐Ÿ‡ธ",
    "sri_lanka": "๐Ÿ‡ฑ๐Ÿ‡ฐ",
    "st._barthรฉlemy": "๐Ÿ‡ง๐Ÿ‡ฑ",
    "st._helena": "๐Ÿ‡ธ๐Ÿ‡ญ",
    "st._kitts_&_nevis": "๐Ÿ‡ฐ๐Ÿ‡ณ",
    "st._lucia": "๐Ÿ‡ฑ๐Ÿ‡จ",
    "st._martin": "๐Ÿ‡ฒ๐Ÿ‡ซ",
    "st._pierre_&_miquelon": "๐Ÿ‡ต๐Ÿ‡ฒ",
    "st._vincent_&_grenadines": "๐Ÿ‡ป๐Ÿ‡จ",
    "statue_of_liberty": "๐Ÿ—ฝ",
    "sudan": "๐Ÿ‡ธ๐Ÿ‡ฉ",
    "suriname": "๐Ÿ‡ธ๐Ÿ‡ท",
    "svalbard_&_jan_mayen": "๐Ÿ‡ธ๐Ÿ‡ฏ",
    "swaziland": "๐Ÿ‡ธ๐Ÿ‡ฟ",
    "sweden": "๐Ÿ‡ธ๐Ÿ‡ช",
    "switzerland": "๐Ÿ‡จ๐Ÿ‡ญ",
    "syria": "๐Ÿ‡ธ๐Ÿ‡พ",
    "sรฃo_tomรฉ_&_prรญncipe": "๐Ÿ‡ธ๐Ÿ‡น",
    "t-rex": "๐Ÿฆ–",
    "top_arrow": "๐Ÿ”",
    "taiwan": "๐Ÿ‡น๐Ÿ‡ผ",
    "tajikistan": "๐Ÿ‡น๐Ÿ‡ฏ",
    "tanzania": "๐Ÿ‡น๐Ÿ‡ฟ",
    "taurus": "โ™‰",
    "thailand": "๐Ÿ‡น๐Ÿ‡ญ",
    "timor-leste": "๐Ÿ‡น๐Ÿ‡ฑ",
    "togo": "๐Ÿ‡น๐Ÿ‡ฌ",
    "tokelau": "๐Ÿ‡น๐Ÿ‡ฐ",
    "tokyo_tower": "๐Ÿ—ผ",
    "tonga": "๐Ÿ‡น๐Ÿ‡ด",
    "trinidad_&_tobago": "๐Ÿ‡น๐Ÿ‡น",
    "tristan_da_cunha": "๐Ÿ‡น๐Ÿ‡ฆ",
    "tunisia": "๐Ÿ‡น๐Ÿ‡ณ",
    "turkey": "๐Ÿฆƒ",
    "turkmenistan": "๐Ÿ‡น๐Ÿ‡ฒ",
    "turks_&_caicos_islands": "๐Ÿ‡น๐Ÿ‡จ",
    "tuvalu": "๐Ÿ‡น๐Ÿ‡ป",
    "u.s._outlying_islands": "๐Ÿ‡บ๐Ÿ‡ฒ",
    "u.s._virgin_islands": "๐Ÿ‡ป๐Ÿ‡ฎ",
    "up!_button": "๐Ÿ†™",
    "uganda": "๐Ÿ‡บ๐Ÿ‡ฌ",
    "ukraine": "๐Ÿ‡บ๐Ÿ‡ฆ",
    "united_arab_emirates": "๐Ÿ‡ฆ๐Ÿ‡ช",
    "united_kingdom": "๐Ÿ‡ฌ๐Ÿ‡ง",
    "united_nations": "๐Ÿ‡บ๐Ÿ‡ณ",
    "united_states": "๐Ÿ‡บ๐Ÿ‡ธ",
    "uruguay": "๐Ÿ‡บ๐Ÿ‡พ",
    "uzbekistan": "๐Ÿ‡บ๐Ÿ‡ฟ",
    "vs_button": "๐Ÿ†š",
    "vanuatu": "๐Ÿ‡ป๐Ÿ‡บ",
    "vatican_city": "๐Ÿ‡ป๐Ÿ‡ฆ",
    "venezuela": "๐Ÿ‡ป๐Ÿ‡ช",
    "vietnam": "๐Ÿ‡ป๐Ÿ‡ณ",
    "virgo": "โ™",
    "wales": "๐Ÿด\U000e0067\U000e0062\U000e0077\U000e006c\U000e0073\U000e007f",
    "wallis_&_futuna": "๐Ÿ‡ผ๐Ÿ‡ซ",
    "western_sahara": "๐Ÿ‡ช๐Ÿ‡ญ",
    "yemen": "๐Ÿ‡พ๐Ÿ‡ช",
    "zambia": "๐Ÿ‡ฟ๐Ÿ‡ฒ",
    "zimbabwe": "๐Ÿ‡ฟ๐Ÿ‡ผ",
    "abacus": "๐Ÿงฎ",
    "adhesive_bandage": "๐Ÿฉน",
    "admission_tickets": "๐ŸŽŸ",
    "adult": "๐Ÿง‘",
    "adult_dark_skin_tone": "๐Ÿง‘๐Ÿฟ",
    "adult_light_skin_tone": "๐Ÿง‘๐Ÿป",
    "adult_medium-dark_skin_tone": "๐Ÿง‘๐Ÿพ",
    "adult_medium-light_skin_tone": "๐Ÿง‘๐Ÿผ",
    "adult_medium_skin_tone": "๐Ÿง‘๐Ÿฝ",
    "aerial_tramway": "๐Ÿšก",
    "airplane": "โœˆ",
    "airplane_arrival": "๐Ÿ›ฌ",
    "airplane_departure": "๐Ÿ›ซ",
    "alarm_clock": "โฐ",
    "alembic": "โš—",
    "alien": "๐Ÿ‘ฝ",
    "alien_monster": "๐Ÿ‘พ",
    "ambulance": "๐Ÿš‘",
    "american_football": "๐Ÿˆ",
    "amphora": "๐Ÿบ",
    "anchor": "โš“",
    "anger_symbol": "๐Ÿ’ข",
    "angry_face": "๐Ÿ˜ ",
    "angry_face_with_horns": "๐Ÿ‘ฟ",
    "anguished_face": "๐Ÿ˜ง",
    "ant": "๐Ÿœ",
    "antenna_bars": "๐Ÿ“ถ",
    "anxious_face_with_sweat": "๐Ÿ˜ฐ",
    "articulated_lorry": "๐Ÿš›",
    "artist_palette": "๐ŸŽจ",
    "astonished_face": "๐Ÿ˜ฒ",
    "atom_symbol": "โš›",
    "auto_rickshaw": "๐Ÿ›บ",
    "automobile": "๐Ÿš—",
    "avocado": "๐Ÿฅ‘",
    "axe": "๐Ÿช“",
    "baby": "๐Ÿ‘ถ",
    "baby_angel": "๐Ÿ‘ผ",
    "baby_angel_dark_skin_tone": "๐Ÿ‘ผ๐Ÿฟ",
    "baby_angel_light_skin_tone": "๐Ÿ‘ผ๐Ÿป",
    "baby_angel_medium-dark_skin_tone": "๐Ÿ‘ผ๐Ÿพ",
    "baby_angel_medium-light_skin_tone": "๐Ÿ‘ผ๐Ÿผ",
    "baby_angel_medium_skin_tone": "๐Ÿ‘ผ๐Ÿฝ",
    "baby_bottle": "๐Ÿผ",
    "baby_chick": "๐Ÿค",
    "baby_dark_skin_tone": "๐Ÿ‘ถ๐Ÿฟ",
    "baby_light_skin_tone": "๐Ÿ‘ถ๐Ÿป",
    "baby_medium-dark_skin_tone": "๐Ÿ‘ถ๐Ÿพ",
    "baby_medium-light_skin_tone": "๐Ÿ‘ถ๐Ÿผ",
    "baby_medium_skin_tone": "๐Ÿ‘ถ๐Ÿฝ",
    "baby_symbol": "๐Ÿšผ",
    "backhand_index_pointing_down": "๐Ÿ‘‡",
    "backhand_index_pointing_down_dark_skin_tone": "๐Ÿ‘‡๐Ÿฟ",
    "backhand_index_pointing_down_light_skin_tone": "๐Ÿ‘‡๐Ÿป",
    "backhand_index_pointing_down_medium-dark_skin_tone": "๐Ÿ‘‡๐Ÿพ",
    "backhand_index_pointing_down_medium-light_skin_tone": "๐Ÿ‘‡๐Ÿผ",
    "backhand_index_pointing_down_medium_skin_tone": "๐Ÿ‘‡๐Ÿฝ",
    "backhand_index_pointing_left": "๐Ÿ‘ˆ",
    "backhand_index_pointing_left_dark_skin_tone": "๐Ÿ‘ˆ๐Ÿฟ",
    "backhand_index_pointing_left_light_skin_tone": "๐Ÿ‘ˆ๐Ÿป",
    "backhand_index_pointing_left_medium-dark_skin_tone": "๐Ÿ‘ˆ๐Ÿพ",
    "backhand_index_pointing_left_medium-light_skin_tone": "๐Ÿ‘ˆ๐Ÿผ",
    "backhand_index_pointing_left_medium_skin_tone": "๐Ÿ‘ˆ๐Ÿฝ",
    "backhand_index_pointing_right": "๐Ÿ‘‰",
    "backhand_index_pointing_right_dark_skin_tone": "๐Ÿ‘‰๐Ÿฟ",
    "backhand_index_pointing_right_light_skin_tone": "๐Ÿ‘‰๐Ÿป",
    "backhand_index_pointing_right_medium-dark_skin_tone": "๐Ÿ‘‰๐Ÿพ",
    "backhand_index_pointing_right_medium-light_skin_tone": "๐Ÿ‘‰๐Ÿผ",
    "backhand_index_pointing_right_medium_skin_tone": "๐Ÿ‘‰๐Ÿฝ",
    "backhand_index_pointing_up": "๐Ÿ‘†",
    "backhand_index_pointing_up_dark_skin_tone": "๐Ÿ‘†๐Ÿฟ",
    "backhand_index_pointing_up_light_skin_tone": "๐Ÿ‘†๐Ÿป",
    "backhand_index_pointing_up_medium-dark_skin_tone": "๐Ÿ‘†๐Ÿพ",
    "backhand_index_pointing_up_medium-light_skin_tone": "๐Ÿ‘†๐Ÿผ",
    "backhand_index_pointing_up_medium_skin_tone": "๐Ÿ‘†๐Ÿฝ",
    "bacon": "๐Ÿฅ“",
    "badger": "๐Ÿฆก",
    "badminton": "๐Ÿธ",
    "bagel": "๐Ÿฅฏ",
    "baggage_claim": "๐Ÿ›„",
    "baguette_bread": "๐Ÿฅ–",
    "balance_scale": "โš–",
    "bald": "๐Ÿฆฒ",
    "bald_man": "๐Ÿ‘จ\u200d๐Ÿฆฒ",
    "bald_woman": "๐Ÿ‘ฉ\u200d๐Ÿฆฒ",
    "ballet_shoes": "๐Ÿฉฐ",
    "balloon": "๐ŸŽˆ",
    "ballot_box_with_ballot": "๐Ÿ—ณ",
    "ballot_box_with_check": "โ˜‘",
    "banana": "๐ŸŒ",
    "banjo": "๐Ÿช•",
    "bank": "๐Ÿฆ",
    "bar_chart": "๐Ÿ“Š",
    "barber_pole": "๐Ÿ’ˆ",
    "baseball": "โšพ",
    "basket": "๐Ÿงบ",
    "basketball": "๐Ÿ€",
    "bat": "๐Ÿฆ‡",
    "bathtub": "๐Ÿ›",
    "battery": "๐Ÿ”‹",
    "beach_with_umbrella": "๐Ÿ–",
    "beaming_face_with_smiling_eyes": "๐Ÿ˜",
    "bear_face": "๐Ÿป",
    "bearded_person": "๐Ÿง”",
    "bearded_person_dark_skin_tone": "๐Ÿง”๐Ÿฟ",
    "bearded_person_light_skin_tone": "๐Ÿง”๐Ÿป",
    "bearded_person_medium-dark_skin_tone": "๐Ÿง”๐Ÿพ",
    "bearded_person_medium-light_skin_tone": "๐Ÿง”๐Ÿผ",
    "bearded_person_medium_skin_tone": "๐Ÿง”๐Ÿฝ",
    "beating_heart": "๐Ÿ’“",
    "bed": "๐Ÿ›",
    "beer_mug": "๐Ÿบ",
    "bell": "๐Ÿ””",
    "bell_with_slash": "๐Ÿ”•",
    "bellhop_bell": "๐Ÿ›Ž",
    "bento_box": "๐Ÿฑ",
    "beverage_box": "๐Ÿงƒ",
    "bicycle": "๐Ÿšฒ",
    "bikini": "๐Ÿ‘™",
    "billed_cap": "๐Ÿงข",
    "biohazard": "โ˜ฃ",
    "bird": "๐Ÿฆ",
    "birthday_cake": "๐ŸŽ‚",
    "black_circle": "โšซ",
    "black_flag": "๐Ÿด",
    "black_heart": "๐Ÿ–ค",
    "black_large_square": "โฌ›",
    "black_medium-small_square": "โ—พ",
    "black_medium_square": "โ—ผ",
    "black_nib": "โœ’",
    "black_small_square": "โ–ช",
    "black_square_button": "๐Ÿ”ฒ",
    "blond-haired_man": "๐Ÿ‘ฑ\u200dโ™‚๏ธ",
    "blond-haired_man_dark_skin_tone": "๐Ÿ‘ฑ๐Ÿฟ\u200dโ™‚๏ธ",
    "blond-haired_man_light_skin_tone": "๐Ÿ‘ฑ๐Ÿป\u200dโ™‚๏ธ",
    "blond-haired_man_medium-dark_skin_tone": "๐Ÿ‘ฑ๐Ÿพ\u200dโ™‚๏ธ",
    "blond-haired_man_medium-light_skin_tone": "๐Ÿ‘ฑ๐Ÿผ\u200dโ™‚๏ธ",
    "blond-haired_man_medium_skin_tone": "๐Ÿ‘ฑ๐Ÿฝ\u200dโ™‚๏ธ",
    "blond-haired_person": "๐Ÿ‘ฑ",
    "blond-haired_person_dark_skin_tone": "๐Ÿ‘ฑ๐Ÿฟ",
    "blond-haired_person_light_skin_tone": "๐Ÿ‘ฑ๐Ÿป",
    "blond-haired_person_medium-dark_skin_tone": "๐Ÿ‘ฑ๐Ÿพ",
    "blond-haired_person_medium-light_skin_tone": "๐Ÿ‘ฑ๐Ÿผ",
    "blond-haired_person_medium_skin_tone": "๐Ÿ‘ฑ๐Ÿฝ",
    "blond-haired_woman": "๐Ÿ‘ฑ\u200dโ™€๏ธ",
    "blond-haired_woman_dark_skin_tone": "๐Ÿ‘ฑ๐Ÿฟ\u200dโ™€๏ธ",
    "blond-haired_woman_light_skin_tone": "๐Ÿ‘ฑ๐Ÿป\u200dโ™€๏ธ",
    "blond-haired_woman_medium-dark_skin_tone": "๐Ÿ‘ฑ๐Ÿพ\u200dโ™€๏ธ",
    "blond-haired_woman_medium-light_skin_tone": "๐Ÿ‘ฑ๐Ÿผ\u200dโ™€๏ธ",
    "blond-haired_woman_medium_skin_tone": "๐Ÿ‘ฑ๐Ÿฝ\u200dโ™€๏ธ",
    "blossom": "๐ŸŒผ",
    "blowfish": "๐Ÿก",
    "blue_book": "๐Ÿ“˜",
    "blue_circle": "๐Ÿ”ต",
    "blue_heart": "๐Ÿ’™",
    "blue_square": "๐ŸŸฆ",
    "boar": "๐Ÿ—",
    "bomb": "๐Ÿ’ฃ",
    "bone": "๐Ÿฆด",
    "bookmark": "๐Ÿ”–",
    "bookmark_tabs": "๐Ÿ“‘",
    "books": "๐Ÿ“š",
    "bottle_with_popping_cork": "๐Ÿพ",
    "bouquet": "๐Ÿ’",
    "bow_and_arrow": "๐Ÿน",
    "bowl_with_spoon": "๐Ÿฅฃ",
    "bowling": "๐ŸŽณ",
    "boxing_glove": "๐ŸฅŠ",
    "boy": "๐Ÿ‘ฆ",
    "boy_dark_skin_tone": "๐Ÿ‘ฆ๐Ÿฟ",
    "boy_light_skin_tone": "๐Ÿ‘ฆ๐Ÿป",
    "boy_medium-dark_skin_tone": "๐Ÿ‘ฆ๐Ÿพ",
    "boy_medium-light_skin_tone": "๐Ÿ‘ฆ๐Ÿผ",
    "boy_medium_skin_tone": "๐Ÿ‘ฆ๐Ÿฝ",
    "brain": "๐Ÿง ",
    "bread": "๐Ÿž",
    "breast-feeding": "๐Ÿคฑ",
    "breast-feeding_dark_skin_tone": "๐Ÿคฑ๐Ÿฟ",
    "breast-feeding_light_skin_tone": "๐Ÿคฑ๐Ÿป",
    "breast-feeding_medium-dark_skin_tone": "๐Ÿคฑ๐Ÿพ",
    "breast-feeding_medium-light_skin_tone": "๐Ÿคฑ๐Ÿผ",
    "breast-feeding_medium_skin_tone": "๐Ÿคฑ๐Ÿฝ",
    "brick": "๐Ÿงฑ",
    "bride_with_veil": "๐Ÿ‘ฐ",
    "bride_with_veil_dark_skin_tone": "๐Ÿ‘ฐ๐Ÿฟ",
    "bride_with_veil_light_skin_tone": "๐Ÿ‘ฐ๐Ÿป",
    "bride_with_veil_medium-dark_skin_tone": "๐Ÿ‘ฐ๐Ÿพ",
    "bride_with_veil_medium-light_skin_tone": "๐Ÿ‘ฐ๐Ÿผ",
    "bride_with_veil_medium_skin_tone": "๐Ÿ‘ฐ๐Ÿฝ",
    "bridge_at_night": "๐ŸŒ‰",
    "briefcase": "๐Ÿ’ผ",
    "briefs": "๐Ÿฉฒ",
    "bright_button": "๐Ÿ”†",
    "broccoli": "๐Ÿฅฆ",
    "broken_heart": "๐Ÿ’”",
    "broom": "๐Ÿงน",
    "brown_circle": "๐ŸŸค",
    "brown_heart": "๐ŸคŽ",
    "brown_square": "๐ŸŸซ",
    "bug": "๐Ÿ›",
    "building_construction": "๐Ÿ—",
    "bullet_train": "๐Ÿš…",
    "burrito": "๐ŸŒฏ",
    "bus": "๐ŸšŒ",
    "bus_stop": "๐Ÿš",
    "bust_in_silhouette": "๐Ÿ‘ค",
    "busts_in_silhouette": "๐Ÿ‘ฅ",
    "butter": "๐Ÿงˆ",
    "butterfly": "๐Ÿฆ‹",
    "cactus": "๐ŸŒต",
    "calendar": "๐Ÿ“†",
    "call_me_hand": "๐Ÿค™",
    "call_me_hand_dark_skin_tone": "๐Ÿค™๐Ÿฟ",
    "call_me_hand_light_skin_tone": "๐Ÿค™๐Ÿป",
    "call_me_hand_medium-dark_skin_tone": "๐Ÿค™๐Ÿพ",
    "call_me_hand_medium-light_skin_tone": "๐Ÿค™๐Ÿผ",
    "call_me_hand_medium_skin_tone": "๐Ÿค™๐Ÿฝ",
    "camel": "๐Ÿซ",
    "camera": "๐Ÿ“ท",
    "camera_with_flash": "๐Ÿ“ธ",
    "camping": "๐Ÿ•",
    "candle": "๐Ÿ•ฏ",
    "candy": "๐Ÿฌ",
    "canned_food": "๐Ÿฅซ",
    "canoe": "๐Ÿ›ถ",
    "card_file_box": "๐Ÿ—ƒ",
    "card_index": "๐Ÿ“‡",
    "card_index_dividers": "๐Ÿ—‚",
    "carousel_horse": "๐ŸŽ ",
    "carp_streamer": "๐ŸŽ",
    "carrot": "๐Ÿฅ•",
    "castle": "๐Ÿฐ",
    "cat": "๐Ÿฑ",
    "cat_face": "๐Ÿฑ",
    "cat_face_with_tears_of_joy": "๐Ÿ˜น",
    "cat_face_with_wry_smile": "๐Ÿ˜ผ",
    "chains": "โ›“",
    "chair": "๐Ÿช‘",
    "chart_decreasing": "๐Ÿ“‰",
    "chart_increasing": "๐Ÿ“ˆ",
    "chart_increasing_with_yen": "๐Ÿ’น",
    "cheese_wedge": "๐Ÿง€",
    "chequered_flag": "๐Ÿ",
    "cherries": "๐Ÿ’",
    "cherry_blossom": "๐ŸŒธ",
    "chess_pawn": "โ™Ÿ",
    "chestnut": "๐ŸŒฐ",
    "chicken": "๐Ÿ”",
    "child": "๐Ÿง’",
    "child_dark_skin_tone": "๐Ÿง’๐Ÿฟ",
    "child_light_skin_tone": "๐Ÿง’๐Ÿป",
    "child_medium-dark_skin_tone": "๐Ÿง’๐Ÿพ",
    "child_medium-light_skin_tone": "๐Ÿง’๐Ÿผ",
    "child_medium_skin_tone": "๐Ÿง’๐Ÿฝ",
    "children_crossing": "๐Ÿšธ",
    "chipmunk": "๐Ÿฟ",
    "chocolate_bar": "๐Ÿซ",
    "chopsticks": "๐Ÿฅข",
    "church": "โ›ช",
    "cigarette": "๐Ÿšฌ",
    "cinema": "๐ŸŽฆ",
    "circled_m": "โ“‚",
    "circus_tent": "๐ŸŽช",
    "cityscape": "๐Ÿ™",
    "cityscape_at_dusk": "๐ŸŒ†",
    "clamp": "๐Ÿ—œ",
    "clapper_board": "๐ŸŽฌ",
    "clapping_hands": "๐Ÿ‘",
    "clapping_hands_dark_skin_tone": "๐Ÿ‘๐Ÿฟ",
    "clapping_hands_light_skin_tone": "๐Ÿ‘๐Ÿป",
    "clapping_hands_medium-dark_skin_tone": "๐Ÿ‘๐Ÿพ",
    "clapping_hands_medium-light_skin_tone": "๐Ÿ‘๐Ÿผ",
    "clapping_hands_medium_skin_tone": "๐Ÿ‘๐Ÿฝ",
    "classical_building": "๐Ÿ›",
    "clinking_beer_mugs": "๐Ÿป",
    "clinking_glasses": "๐Ÿฅ‚",
    "clipboard": "๐Ÿ“‹",
    "clockwise_vertical_arrows": "๐Ÿ”ƒ",
    "closed_book": "๐Ÿ“•",
    "closed_mailbox_with_lowered_flag": "๐Ÿ“ช",
    "closed_mailbox_with_raised_flag": "๐Ÿ“ซ",
    "closed_umbrella": "๐ŸŒ‚",
    "cloud": "โ˜",
    "cloud_with_lightning": "๐ŸŒฉ",
    "cloud_with_lightning_and_rain": "โ›ˆ",
    "cloud_with_rain": "๐ŸŒง",
    "cloud_with_snow": "๐ŸŒจ",
    "clown_face": "๐Ÿคก",
    "club_suit": "โ™ฃ",
    "clutch_bag": "๐Ÿ‘",
    "coat": "๐Ÿงฅ",
    "cocktail_glass": "๐Ÿธ",
    "coconut": "๐Ÿฅฅ",
    "coffin": "โšฐ",
    "cold_face": "๐Ÿฅถ",
    "collision": "๐Ÿ’ฅ",
    "comet": "โ˜„",
    "compass": "๐Ÿงญ",
    "computer_disk": "๐Ÿ’ฝ",
    "computer_mouse": "๐Ÿ–ฑ",
    "confetti_ball": "๐ŸŽŠ",
    "confounded_face": "๐Ÿ˜–",
    "confused_face": "๐Ÿ˜•",
    "construction": "๐Ÿšง",
    "construction_worker": "๐Ÿ‘ท",
    "construction_worker_dark_skin_tone": "๐Ÿ‘ท๐Ÿฟ",
    "construction_worker_light_skin_tone": "๐Ÿ‘ท๐Ÿป",
    "construction_worker_medium-dark_skin_tone": "๐Ÿ‘ท๐Ÿพ",
    "construction_worker_medium-light_skin_tone": "๐Ÿ‘ท๐Ÿผ",
    "construction_worker_medium_skin_tone": "๐Ÿ‘ท๐Ÿฝ",
    "control_knobs": "๐ŸŽ›",
    "convenience_store": "๐Ÿช",
    "cooked_rice": "๐Ÿš",
    "cookie": "๐Ÿช",
    "cooking": "๐Ÿณ",
    "copyright": "ยฉ",
    "couch_and_lamp": "๐Ÿ›‹",
    "counterclockwise_arrows_button": "๐Ÿ”„",
    "couple_with_heart": "๐Ÿ’‘",
    "couple_with_heart_man_man": "๐Ÿ‘จ\u200dโค๏ธ\u200d๐Ÿ‘จ",
    "couple_with_heart_woman_man": "๐Ÿ‘ฉ\u200dโค๏ธ\u200d๐Ÿ‘จ",
    "couple_with_heart_woman_woman": "๐Ÿ‘ฉ\u200dโค๏ธ\u200d๐Ÿ‘ฉ",
    "cow": "๐Ÿฎ",
    "cow_face": "๐Ÿฎ",
    "cowboy_hat_face": "๐Ÿค ",
    "crab": "๐Ÿฆ€",
    "crayon": "๐Ÿ–",
    "credit_card": "๐Ÿ’ณ",
    "crescent_moon": "๐ŸŒ™",
    "cricket": "๐Ÿฆ—",
    "cricket_game": "๐Ÿ",
    "crocodile": "๐ŸŠ",
    "croissant": "๐Ÿฅ",
    "cross_mark": "โŒ",
    "cross_mark_button": "โŽ",
    "crossed_fingers": "๐Ÿคž",
    "crossed_fingers_dark_skin_tone": "๐Ÿคž๐Ÿฟ",
    "crossed_fingers_light_skin_tone": "๐Ÿคž๐Ÿป",
    "crossed_fingers_medium-dark_skin_tone": "๐Ÿคž๐Ÿพ",
    "crossed_fingers_medium-light_skin_tone": "๐Ÿคž๐Ÿผ",
    "crossed_fingers_medium_skin_tone": "๐Ÿคž๐Ÿฝ",
    "crossed_flags": "๐ŸŽŒ",
    "crossed_swords": "โš”",
    "crown": "๐Ÿ‘‘",
    "crying_cat_face": "๐Ÿ˜ฟ",
    "crying_face": "๐Ÿ˜ข",
    "crystal_ball": "๐Ÿ”ฎ",
    "cucumber": "๐Ÿฅ’",
    "cupcake": "๐Ÿง",
    "cup_with_straw": "๐Ÿฅค",
    "curling_stone": "๐ŸฅŒ",
    "curly_hair": "๐Ÿฆฑ",
    "curly-haired_man": "๐Ÿ‘จ\u200d๐Ÿฆฑ",
    "curly-haired_woman": "๐Ÿ‘ฉ\u200d๐Ÿฆฑ",
    "curly_loop": "โžฐ",
    "currency_exchange": "๐Ÿ’ฑ",
    "curry_rice": "๐Ÿ›",
    "custard": "๐Ÿฎ",
    "customs": "๐Ÿ›ƒ",
    "cut_of_meat": "๐Ÿฅฉ",
    "cyclone": "๐ŸŒ€",
    "dagger": "๐Ÿ—ก",
    "dango": "๐Ÿก",
    "dashing_away": "๐Ÿ’จ",
    "deaf_person": "๐Ÿง",
    "deciduous_tree": "๐ŸŒณ",
    "deer": "๐ŸฆŒ",
    "delivery_truck": "๐Ÿšš",
    "department_store": "๐Ÿฌ",
    "derelict_house": "๐Ÿš",
    "desert": "๐Ÿœ",
    "desert_island": "๐Ÿ",
    "desktop_computer": "๐Ÿ–ฅ",
    "detective": "๐Ÿ•ต",
    "detective_dark_skin_tone": "๐Ÿ•ต๐Ÿฟ",
    "detective_light_skin_tone": "๐Ÿ•ต๐Ÿป",
    "detective_medium-dark_skin_tone": "๐Ÿ•ต๐Ÿพ",
    "detective_medium-light_skin_tone": "๐Ÿ•ต๐Ÿผ",
    "detective_medium_skin_tone": "๐Ÿ•ต๐Ÿฝ",
    "diamond_suit": "โ™ฆ",
    "diamond_with_a_dot": "๐Ÿ’ ",
    "dim_button": "๐Ÿ”…",
    "direct_hit": "๐ŸŽฏ",
    "disappointed_face": "๐Ÿ˜ž",
    "diving_mask": "๐Ÿคฟ",
    "diya_lamp": "๐Ÿช”",
    "dizzy": "๐Ÿ’ซ",
    "dizzy_face": "๐Ÿ˜ต",
    "dna": "๐Ÿงฌ",
    "dog": "๐Ÿถ",
    "dog_face": "๐Ÿถ",
    "dollar_banknote": "๐Ÿ’ต",
    "dolphin": "๐Ÿฌ",
    "door": "๐Ÿšช",
    "dotted_six-pointed_star": "๐Ÿ”ฏ",
    "double_curly_loop": "โžฟ",
    "double_exclamation_mark": "โ€ผ",
    "doughnut": "๐Ÿฉ",
    "dove": "๐Ÿ•Š",
    "down-left_arrow": "โ†™",
    "down-right_arrow": "โ†˜",
    "down_arrow": "โฌ‡",
    "downcast_face_with_sweat": "๐Ÿ˜“",
    "downwards_button": "๐Ÿ”ฝ",
    "dragon": "๐Ÿ‰",
    "dragon_face": "๐Ÿฒ",
    "dress": "๐Ÿ‘—",
    "drooling_face": "๐Ÿคค",
    "drop_of_blood": "๐Ÿฉธ",
    "droplet": "๐Ÿ’ง",
    "drum": "๐Ÿฅ",
    "duck": "๐Ÿฆ†",
    "dumpling": "๐ŸฅŸ",
    "dvd": "๐Ÿ“€",
    "e-mail": "๐Ÿ“ง",
    "eagle": "๐Ÿฆ…",
    "ear": "๐Ÿ‘‚",
    "ear_dark_skin_tone": "๐Ÿ‘‚๐Ÿฟ",
    "ear_light_skin_tone": "๐Ÿ‘‚๐Ÿป",
    "ear_medium-dark_skin_tone": "๐Ÿ‘‚๐Ÿพ",
    "ear_medium-light_skin_tone": "๐Ÿ‘‚๐Ÿผ",
    "ear_medium_skin_tone": "๐Ÿ‘‚๐Ÿฝ",
    "ear_of_corn": "๐ŸŒฝ",
    "ear_with_hearing_aid": "๐Ÿฆป",
    "egg": "๐Ÿณ",
    "eggplant": "๐Ÿ†",
    "eight-pointed_star": "โœด",
    "eight-spoked_asterisk": "โœณ",
    "eight-thirty": "๐Ÿ•ฃ",
    "eight_oโ€™clock": "๐Ÿ•—",
    "eject_button": "โ",
    "electric_plug": "๐Ÿ”Œ",
    "elephant": "๐Ÿ˜",
    "eleven-thirty": "๐Ÿ•ฆ",
    "eleven_oโ€™clock": "๐Ÿ•š",
    "elf": "๐Ÿง",
    "elf_dark_skin_tone": "๐Ÿง๐Ÿฟ",
    "elf_light_skin_tone": "๐Ÿง๐Ÿป",
    "elf_medium-dark_skin_tone": "๐Ÿง๐Ÿพ",
    "elf_medium-light_skin_tone": "๐Ÿง๐Ÿผ",
    "elf_medium_skin_tone": "๐Ÿง๐Ÿฝ",
    "envelope": "โœ‰",
    "envelope_with_arrow": "๐Ÿ“ฉ",
    "euro_banknote": "๐Ÿ’ถ",
    "evergreen_tree": "๐ŸŒฒ",
    "ewe": "๐Ÿ‘",
    "exclamation_mark": "โ—",
    "exclamation_question_mark": "โ‰",
    "exploding_head": "๐Ÿคฏ",
    "expressionless_face": "๐Ÿ˜‘",
    "eye": "๐Ÿ‘",
    "eye_in_speech_bubble": "๐Ÿ‘๏ธ\u200d๐Ÿ—จ๏ธ",
    "eyes": "๐Ÿ‘€",
    "face_blowing_a_kiss": "๐Ÿ˜˜",
    "face_savoring_food": "๐Ÿ˜‹",
    "face_screaming_in_fear": "๐Ÿ˜ฑ",
    "face_vomiting": "๐Ÿคฎ",
    "face_with_hand_over_mouth": "๐Ÿคญ",
    "face_with_head-bandage": "๐Ÿค•",
    "face_with_medical_mask": "๐Ÿ˜ท",
    "face_with_monocle": "๐Ÿง",
    "face_with_open_mouth": "๐Ÿ˜ฎ",
    "face_with_raised_eyebrow": "๐Ÿคจ",
    "face_with_rolling_eyes": "๐Ÿ™„",
    "face_with_steam_from_nose": "๐Ÿ˜ค",
    "face_with_symbols_on_mouth": "๐Ÿคฌ",
    "face_with_tears_of_joy": "๐Ÿ˜‚",
    "face_with_thermometer": "๐Ÿค’",
    "face_with_tongue": "๐Ÿ˜›",
    "face_without_mouth": "๐Ÿ˜ถ",
    "factory": "๐Ÿญ",
    "fairy": "๐Ÿงš",
    "fairy_dark_skin_tone": "๐Ÿงš๐Ÿฟ",
    "fairy_light_skin_tone": "๐Ÿงš๐Ÿป",
    "fairy_medium-dark_skin_tone": "๐Ÿงš๐Ÿพ",
    "fairy_medium-light_skin_tone": "๐Ÿงš๐Ÿผ",
    "fairy_medium_skin_tone": "๐Ÿงš๐Ÿฝ",
    "falafel": "๐Ÿง†",
    "fallen_leaf": "๐Ÿ‚",
    "family": "๐Ÿ‘ช",
    "family_man_boy": "๐Ÿ‘จ\u200d๐Ÿ‘ฆ",
    "family_man_boy_boy": "๐Ÿ‘จ\u200d๐Ÿ‘ฆ\u200d๐Ÿ‘ฆ",
    "family_man_girl": "๐Ÿ‘จ\u200d๐Ÿ‘ง",
    "family_man_girl_boy": "๐Ÿ‘จ\u200d๐Ÿ‘ง\u200d๐Ÿ‘ฆ",
    "family_man_girl_girl": "๐Ÿ‘จ\u200d๐Ÿ‘ง\u200d๐Ÿ‘ง",
    "family_man_man_boy": "๐Ÿ‘จ\u200d๐Ÿ‘จ\u200d๐Ÿ‘ฆ",
    "family_man_man_boy_boy": "๐Ÿ‘จ\u200d๐Ÿ‘จ\u200d๐Ÿ‘ฆ\u200d๐Ÿ‘ฆ",
    "family_man_man_girl": "๐Ÿ‘จ\u200d๐Ÿ‘จ\u200d๐Ÿ‘ง",
    "family_man_man_girl_boy": "๐Ÿ‘จ\u200d๐Ÿ‘จ\u200d๐Ÿ‘ง\u200d๐Ÿ‘ฆ",
    "family_man_man_girl_girl": "๐Ÿ‘จ\u200d๐Ÿ‘จ\u200d๐Ÿ‘ง\u200d๐Ÿ‘ง",
    "family_man_woman_boy": "๐Ÿ‘จ\u200d๐Ÿ‘ฉ\u200d๐Ÿ‘ฆ",
    "family_man_woman_boy_boy": "๐Ÿ‘จ\u200d๐Ÿ‘ฉ\u200d๐Ÿ‘ฆ\u200d๐Ÿ‘ฆ",
    "family_man_woman_girl": "๐Ÿ‘จ\u200d๐Ÿ‘ฉ\u200d๐Ÿ‘ง",
    "family_man_woman_girl_boy": "๐Ÿ‘จ\u200d๐Ÿ‘ฉ\u200d๐Ÿ‘ง\u200d๐Ÿ‘ฆ",
    "family_man_woman_girl_girl": "๐Ÿ‘จ\u200d๐Ÿ‘ฉ\u200d๐Ÿ‘ง\u200d๐Ÿ‘ง",
    "family_woman_boy": "๐Ÿ‘ฉ\u200d๐Ÿ‘ฆ",
    "family_woman_boy_boy": "๐Ÿ‘ฉ\u200d๐Ÿ‘ฆ\u200d๐Ÿ‘ฆ",
    "family_woman_girl": "๐Ÿ‘ฉ\u200d๐Ÿ‘ง",
    "family_woman_girl_boy": "๐Ÿ‘ฉ\u200d๐Ÿ‘ง\u200d๐Ÿ‘ฆ",
    "family_woman_girl_girl": "๐Ÿ‘ฉ\u200d๐Ÿ‘ง\u200d๐Ÿ‘ง",
    "family_woman_woman_boy": "๐Ÿ‘ฉ\u200d๐Ÿ‘ฉ\u200d๐Ÿ‘ฆ",
    "family_woman_woman_boy_boy": "๐Ÿ‘ฉ\u200d๐Ÿ‘ฉ\u200d๐Ÿ‘ฆ\u200d๐Ÿ‘ฆ",
    "family_woman_woman_girl": "๐Ÿ‘ฉ\u200d๐Ÿ‘ฉ\u200d๐Ÿ‘ง",
    "family_woman_woman_girl_boy": "๐Ÿ‘ฉ\u200d๐Ÿ‘ฉ\u200d๐Ÿ‘ง\u200d๐Ÿ‘ฆ",
    "family_woman_woman_girl_girl": "๐Ÿ‘ฉ\u200d๐Ÿ‘ฉ\u200d๐Ÿ‘ง\u200d๐Ÿ‘ง",
    "fast-forward_button": "โฉ",
    "fast_down_button": "โฌ",
    "fast_reverse_button": "โช",
    "fast_up_button": "โซ",
    "fax_machine": "๐Ÿ“ ",
    "fearful_face": "๐Ÿ˜จ",
    "female_sign": "โ™€",
    "ferris_wheel": "๐ŸŽก",
    "ferry": "โ›ด",
    "field_hockey": "๐Ÿ‘",
    "file_cabinet": "๐Ÿ—„",
    "file_folder": "๐Ÿ“",
    "film_frames": "๐ŸŽž",
    "film_projector": "๐Ÿ“ฝ",
    "fire": "๐Ÿ”ฅ",
    "fire_extinguisher": "๐Ÿงฏ",
    "firecracker": "๐Ÿงจ",
    "fire_engine": "๐Ÿš’",
    "fireworks": "๐ŸŽ†",
    "first_quarter_moon": "๐ŸŒ“",
    "first_quarter_moon_face": "๐ŸŒ›",
    "fish": "๐ŸŸ",
    "fish_cake_with_swirl": "๐Ÿฅ",
    "fishing_pole": "๐ŸŽฃ",
    "five-thirty": "๐Ÿ• ",
    "five_oโ€™clock": "๐Ÿ•”",
    "flag_in_hole": "โ›ณ",
    "flamingo": "๐Ÿฆฉ",
    "flashlight": "๐Ÿ”ฆ",
    "flat_shoe": "๐Ÿฅฟ",
    "fleur-de-lis": "โšœ",
    "flexed_biceps": "๐Ÿ’ช",
    "flexed_biceps_dark_skin_tone": "๐Ÿ’ช๐Ÿฟ",
    "flexed_biceps_light_skin_tone": "๐Ÿ’ช๐Ÿป",
    "flexed_biceps_medium-dark_skin_tone": "๐Ÿ’ช๐Ÿพ",
    "flexed_biceps_medium-light_skin_tone": "๐Ÿ’ช๐Ÿผ",
    "flexed_biceps_medium_skin_tone": "๐Ÿ’ช๐Ÿฝ",
    "floppy_disk": "๐Ÿ’พ",
    "flower_playing_cards": "๐ŸŽด",
    "flushed_face": "๐Ÿ˜ณ",
    "flying_disc": "๐Ÿฅ",
    "flying_saucer": "๐Ÿ›ธ",
    "fog": "๐ŸŒซ",
    "foggy": "๐ŸŒ",
    "folded_hands": "๐Ÿ™",
    "folded_hands_dark_skin_tone": "๐Ÿ™๐Ÿฟ",
    "folded_hands_light_skin_tone": "๐Ÿ™๐Ÿป",
    "folded_hands_medium-dark_skin_tone": "๐Ÿ™๐Ÿพ",
    "folded_hands_medium-light_skin_tone": "๐Ÿ™๐Ÿผ",
    "folded_hands_medium_skin_tone": "๐Ÿ™๐Ÿฝ",
    "foot": "๐Ÿฆถ",
    "footprints": "๐Ÿ‘ฃ",
    "fork_and_knife": "๐Ÿด",
    "fork_and_knife_with_plate": "๐Ÿฝ",
    "fortune_cookie": "๐Ÿฅ ",
    "fountain": "โ›ฒ",
    "fountain_pen": "๐Ÿ–‹",
    "four-thirty": "๐Ÿ•Ÿ",
    "four_leaf_clover": "๐Ÿ€",
    "four_oโ€™clock": "๐Ÿ•“",
    "fox_face": "๐ŸฆŠ",
    "framed_picture": "๐Ÿ–ผ",
    "french_fries": "๐ŸŸ",
    "fried_shrimp": "๐Ÿค",
    "frog_face": "๐Ÿธ",
    "front-facing_baby_chick": "๐Ÿฅ",
    "frowning_face": "โ˜น",
    "frowning_face_with_open_mouth": "๐Ÿ˜ฆ",
    "fuel_pump": "โ›ฝ",
    "full_moon": "๐ŸŒ•",
    "full_moon_face": "๐ŸŒ",
    "funeral_urn": "โšฑ",
    "game_die": "๐ŸŽฒ",
    "garlic": "๐Ÿง„",
    "gear": "โš™",
    "gem_stone": "๐Ÿ’Ž",
    "genie": "๐Ÿงž",
    "ghost": "๐Ÿ‘ป",
    "giraffe": "๐Ÿฆ’",
    "girl": "๐Ÿ‘ง",
    "girl_dark_skin_tone": "๐Ÿ‘ง๐Ÿฟ",
    "girl_light_skin_tone": "๐Ÿ‘ง๐Ÿป",
    "girl_medium-dark_skin_tone": "๐Ÿ‘ง๐Ÿพ",
    "girl_medium-light_skin_tone": "๐Ÿ‘ง๐Ÿผ",
    "girl_medium_skin_tone": "๐Ÿ‘ง๐Ÿฝ",
    "glass_of_milk": "๐Ÿฅ›",
    "glasses": "๐Ÿ‘“",
    "globe_showing_americas": "๐ŸŒŽ",
    "globe_showing_asia-australia": "๐ŸŒ",
    "globe_showing_europe-africa": "๐ŸŒ",
    "globe_with_meridians": "๐ŸŒ",
    "gloves": "๐Ÿงค",
    "glowing_star": "๐ŸŒŸ",
    "goal_net": "๐Ÿฅ…",
    "goat": "๐Ÿ",
    "goblin": "๐Ÿ‘บ",
    "goggles": "๐Ÿฅฝ",
    "gorilla": "๐Ÿฆ",
    "graduation_cap": "๐ŸŽ“",
    "grapes": "๐Ÿ‡",
    "green_apple": "๐Ÿ",
    "green_book": "๐Ÿ“—",
    "green_circle": "๐ŸŸข",
    "green_heart": "๐Ÿ’š",
    "green_salad": "๐Ÿฅ—",
    "green_square": "๐ŸŸฉ",
    "grimacing_face": "๐Ÿ˜ฌ",
    "grinning_cat_face": "๐Ÿ˜บ",
    "grinning_cat_face_with_smiling_eyes": "๐Ÿ˜ธ",
    "grinning_face": "๐Ÿ˜€",
    "grinning_face_with_big_eyes": "๐Ÿ˜ƒ",
    "grinning_face_with_smiling_eyes": "๐Ÿ˜„",
    "grinning_face_with_sweat": "๐Ÿ˜…",
    "grinning_squinting_face": "๐Ÿ˜†",
    "growing_heart": "๐Ÿ’—",
    "guard": "๐Ÿ’‚",
    "guard_dark_skin_tone": "๐Ÿ’‚๐Ÿฟ",
    "guard_light_skin_tone": "๐Ÿ’‚๐Ÿป",
    "guard_medium-dark_skin_tone": "๐Ÿ’‚๐Ÿพ",
    "guard_medium-light_skin_tone": "๐Ÿ’‚๐Ÿผ",
    "guard_medium_skin_tone": "๐Ÿ’‚๐Ÿฝ",
    "guide_dog": "๐Ÿฆฎ",
    "guitar": "๐ŸŽธ",
    "hamburger": "๐Ÿ”",
    "hammer": "๐Ÿ”จ",
    "hammer_and_pick": "โš’",
    "hammer_and_wrench": "๐Ÿ› ",
    "hamster_face": "๐Ÿน",
    "hand_with_fingers_splayed": "๐Ÿ–",
    "hand_with_fingers_splayed_dark_skin_tone": "๐Ÿ–๐Ÿฟ",
    "hand_with_fingers_splayed_light_skin_tone": "๐Ÿ–๐Ÿป",
    "hand_with_fingers_splayed_medium-dark_skin_tone": "๐Ÿ–๐Ÿพ",
    "hand_with_fingers_splayed_medium-light_skin_tone": "๐Ÿ–๐Ÿผ",
    "hand_with_fingers_splayed_medium_skin_tone": "๐Ÿ–๐Ÿฝ",
    "handbag": "๐Ÿ‘œ",
    "handshake": "๐Ÿค",
    "hatching_chick": "๐Ÿฃ",
    "headphone": "๐ŸŽง",
    "hear-no-evil_monkey": "๐Ÿ™‰",
    "heart_decoration": "๐Ÿ’Ÿ",
    "heart_suit": "โ™ฅ",
    "heart_with_arrow": "๐Ÿ’˜",
    "heart_with_ribbon": "๐Ÿ’",
    "heavy_check_mark": "โœ”",
    "heavy_division_sign": "โž—",
    "heavy_dollar_sign": "๐Ÿ’ฒ",
    "heavy_heart_exclamation": "โฃ",
    "heavy_large_circle": "โญ•",
    "heavy_minus_sign": "โž–",
    "heavy_multiplication_x": "โœ–",
    "heavy_plus_sign": "โž•",
    "hedgehog": "๐Ÿฆ”",
    "helicopter": "๐Ÿš",
    "herb": "๐ŸŒฟ",
    "hibiscus": "๐ŸŒบ",
    "high-heeled_shoe": "๐Ÿ‘ ",
    "high-speed_train": "๐Ÿš„",
    "high_voltage": "โšก",
    "hiking_boot": "๐Ÿฅพ",
    "hindu_temple": "๐Ÿ›•",
    "hippopotamus": "๐Ÿฆ›",
    "hole": "๐Ÿ•ณ",
    "honey_pot": "๐Ÿฏ",
    "honeybee": "๐Ÿ",
    "horizontal_traffic_light": "๐Ÿšฅ",
    "horse": "๐Ÿด",
    "horse_face": "๐Ÿด",
    "horse_racing": "๐Ÿ‡",
    "horse_racing_dark_skin_tone": "๐Ÿ‡๐Ÿฟ",
    "horse_racing_light_skin_tone": "๐Ÿ‡๐Ÿป",
    "horse_racing_medium-dark_skin_tone": "๐Ÿ‡๐Ÿพ",
    "horse_racing_medium-light_skin_tone": "๐Ÿ‡๐Ÿผ",
    "horse_racing_medium_skin_tone": "๐Ÿ‡๐Ÿฝ",
    "hospital": "๐Ÿฅ",
    "hot_beverage": "โ˜•",
    "hot_dog": "๐ŸŒญ",
    "hot_face": "๐Ÿฅต",
    "hot_pepper": "๐ŸŒถ",
    "hot_springs": "โ™จ",
    "hotel": "๐Ÿจ",
    "hourglass_done": "โŒ›",
    "hourglass_not_done": "โณ",
    "house": "๐Ÿ ",
    "house_with_garden": "๐Ÿก",
    "houses": "๐Ÿ˜",
    "hugging_face": "๐Ÿค—",
    "hundred_points": "๐Ÿ’ฏ",
    "hushed_face": "๐Ÿ˜ฏ",
    "ice": "๐ŸงŠ",
    "ice_cream": "๐Ÿจ",
    "ice_hockey": "๐Ÿ’",
    "ice_skate": "โ›ธ",
    "inbox_tray": "๐Ÿ“ฅ",
    "incoming_envelope": "๐Ÿ“จ",
    "index_pointing_up": "โ˜",
    "index_pointing_up_dark_skin_tone": "โ˜๐Ÿฟ",
    "index_pointing_up_light_skin_tone": "โ˜๐Ÿป",
    "index_pointing_up_medium-dark_skin_tone": "โ˜๐Ÿพ",
    "index_pointing_up_medium-light_skin_tone": "โ˜๐Ÿผ",
    "index_pointing_up_medium_skin_tone": "โ˜๐Ÿฝ",
    "infinity": "โ™พ",
    "information": "โ„น",
    "input_latin_letters": "๐Ÿ”ค",
    "input_latin_lowercase": "๐Ÿ”ก",
    "input_latin_uppercase": "๐Ÿ” ",
    "input_numbers": "๐Ÿ”ข",
    "input_symbols": "๐Ÿ”ฃ",
    "jack-o-lantern": "๐ŸŽƒ",
    "jeans": "๐Ÿ‘–",
    "jigsaw": "๐Ÿงฉ",
    "joker": "๐Ÿƒ",
    "joystick": "๐Ÿ•น",
    "kaaba": "๐Ÿ•‹",
    "kangaroo": "๐Ÿฆ˜",
    "key": "๐Ÿ”‘",
    "keyboard": "โŒจ",
    "keycap_#": "#๏ธโƒฃ",
    "keycap_*": "*๏ธโƒฃ",
    "keycap_0": "0๏ธโƒฃ",
    "keycap_1": "1๏ธโƒฃ",
    "keycap_10": "๐Ÿ”Ÿ",
    "keycap_2": "2๏ธโƒฃ",
    "keycap_3": "3๏ธโƒฃ",
    "keycap_4": "4๏ธโƒฃ",
    "keycap_5": "5๏ธโƒฃ",
    "keycap_6": "6๏ธโƒฃ",
    "keycap_7": "7๏ธโƒฃ",
    "keycap_8": "8๏ธโƒฃ",
    "keycap_9": "9๏ธโƒฃ",
    "kick_scooter": "๐Ÿ›ด",
    "kimono": "๐Ÿ‘˜",
    "kiss": "๐Ÿ’‹",
    "kiss_man_man": "๐Ÿ‘จ\u200dโค๏ธ\u200d๐Ÿ’‹\u200d๐Ÿ‘จ",
    "kiss_mark": "๐Ÿ’‹",
    "kiss_woman_man": "๐Ÿ‘ฉ\u200dโค๏ธ\u200d๐Ÿ’‹\u200d๐Ÿ‘จ",
    "kiss_woman_woman": "๐Ÿ‘ฉ\u200dโค๏ธ\u200d๐Ÿ’‹\u200d๐Ÿ‘ฉ",
    "kissing_cat_face": "๐Ÿ˜ฝ",
    "kissing_face": "๐Ÿ˜—",
    "kissing_face_with_closed_eyes": "๐Ÿ˜š",
    "kissing_face_with_smiling_eyes": "๐Ÿ˜™",
    "kitchen_knife": "๐Ÿ”ช",
    "kite": "๐Ÿช",
    "kiwi_fruit": "๐Ÿฅ",
    "koala": "๐Ÿจ",
    "lab_coat": "๐Ÿฅผ",
    "label": "๐Ÿท",
    "lacrosse": "๐Ÿฅ",
    "lady_beetle": "๐Ÿž",
    "laptop_computer": "๐Ÿ’ป",
    "large_blue_diamond": "๐Ÿ”ท",
    "large_orange_diamond": "๐Ÿ”ถ",
    "last_quarter_moon": "๐ŸŒ—",
    "last_quarter_moon_face": "๐ŸŒœ",
    "last_track_button": "โฎ",
    "latin_cross": "โœ",
    "leaf_fluttering_in_wind": "๐Ÿƒ",
    "leafy_green": "๐Ÿฅฌ",
    "ledger": "๐Ÿ“’",
    "left-facing_fist": "๐Ÿค›",
    "left-facing_fist_dark_skin_tone": "๐Ÿค›๐Ÿฟ",
    "left-facing_fist_light_skin_tone": "๐Ÿค›๐Ÿป",
    "left-facing_fist_medium-dark_skin_tone": "๐Ÿค›๐Ÿพ",
    "left-facing_fist_medium-light_skin_tone": "๐Ÿค›๐Ÿผ",
    "left-facing_fist_medium_skin_tone": "๐Ÿค›๐Ÿฝ",
    "left-right_arrow": "โ†”",
    "left_arrow": "โฌ…",
    "left_arrow_curving_right": "โ†ช",
    "left_luggage": "๐Ÿ›…",
    "left_speech_bubble": "๐Ÿ—จ",
    "leg": "๐Ÿฆต",
    "lemon": "๐Ÿ‹",
    "leopard": "๐Ÿ†",
    "level_slider": "๐ŸŽš",
    "light_bulb": "๐Ÿ’ก",
    "light_rail": "๐Ÿšˆ",
    "link": "๐Ÿ”—",
    "linked_paperclips": "๐Ÿ–‡",
    "lion_face": "๐Ÿฆ",
    "lipstick": "๐Ÿ’„",
    "litter_in_bin_sign": "๐Ÿšฎ",
    "lizard": "๐ŸฆŽ",
    "llama": "๐Ÿฆ™",
    "lobster": "๐Ÿฆž",
    "locked": "๐Ÿ”’",
    "locked_with_key": "๐Ÿ”",
    "locked_with_pen": "๐Ÿ”",
    "locomotive": "๐Ÿš‚",
    "lollipop": "๐Ÿญ",
    "lotion_bottle": "๐Ÿงด",
    "loudly_crying_face": "๐Ÿ˜ญ",
    "loudspeaker": "๐Ÿ“ข",
    "love-you_gesture": "๐ŸคŸ",
    "love-you_gesture_dark_skin_tone": "๐ŸคŸ๐Ÿฟ",
    "love-you_gesture_light_skin_tone": "๐ŸคŸ๐Ÿป",
    "love-you_gesture_medium-dark_skin_tone": "๐ŸคŸ๐Ÿพ",
    "love-you_gesture_medium-light_skin_tone": "๐ŸคŸ๐Ÿผ",
    "love-you_gesture_medium_skin_tone": "๐ŸคŸ๐Ÿฝ",
    "love_hotel": "๐Ÿฉ",
    "love_letter": "๐Ÿ’Œ",
    "luggage": "๐Ÿงณ",
    "lying_face": "๐Ÿคฅ",
    "mage": "๐Ÿง™",
    "mage_dark_skin_tone": "๐Ÿง™๐Ÿฟ",
    "mage_light_skin_tone": "๐Ÿง™๐Ÿป",
    "mage_medium-dark_skin_tone": "๐Ÿง™๐Ÿพ",
    "mage_medium-light_skin_tone": "๐Ÿง™๐Ÿผ",
    "mage_medium_skin_tone": "๐Ÿง™๐Ÿฝ",
    "magnet": "๐Ÿงฒ",
    "magnifying_glass_tilted_left": "๐Ÿ”",
    "magnifying_glass_tilted_right": "๐Ÿ”Ž",
    "mahjong_red_dragon": "๐Ÿ€„",
    "male_sign": "โ™‚",
    "man": "๐Ÿ‘จ",
    "man_and_woman_holding_hands": "๐Ÿ‘ซ",
    "man_artist": "๐Ÿ‘จ\u200d๐ŸŽจ",
    "man_artist_dark_skin_tone": "๐Ÿ‘จ๐Ÿฟ\u200d๐ŸŽจ",
    "man_artist_light_skin_tone": "๐Ÿ‘จ๐Ÿป\u200d๐ŸŽจ",
    "man_artist_medium-dark_skin_tone": "๐Ÿ‘จ๐Ÿพ\u200d๐ŸŽจ",
    "man_artist_medium-light_skin_tone": "๐Ÿ‘จ๐Ÿผ\u200d๐ŸŽจ",
    "man_artist_medium_skin_tone": "๐Ÿ‘จ๐Ÿฝ\u200d๐ŸŽจ",
    "man_astronaut": "๐Ÿ‘จ\u200d๐Ÿš€",
    "man_astronaut_dark_skin_tone": "๐Ÿ‘จ๐Ÿฟ\u200d๐Ÿš€",
    "man_astronaut_light_skin_tone": "๐Ÿ‘จ๐Ÿป\u200d๐Ÿš€",
    "man_astronaut_medium-dark_skin_tone": "๐Ÿ‘จ๐Ÿพ\u200d๐Ÿš€",
    "man_astronaut_medium-light_skin_tone": "๐Ÿ‘จ๐Ÿผ\u200d๐Ÿš€",
    "man_astronaut_medium_skin_tone": "๐Ÿ‘จ๐Ÿฝ\u200d๐Ÿš€",
    "man_biking": "๐Ÿšด\u200dโ™‚๏ธ",
    "man_biking_dark_skin_tone": "๐Ÿšด๐Ÿฟ\u200dโ™‚๏ธ",
    "man_biking_light_skin_tone": "๐Ÿšด๐Ÿป\u200dโ™‚๏ธ",
    "man_biking_medium-dark_skin_tone": "๐Ÿšด๐Ÿพ\u200dโ™‚๏ธ",
    "man_biking_medium-light_skin_tone": "๐Ÿšด๐Ÿผ\u200dโ™‚๏ธ",
    "man_biking_medium_skin_tone": "๐Ÿšด๐Ÿฝ\u200dโ™‚๏ธ",
    "man_bouncing_ball": "โ›น๏ธ\u200dโ™‚๏ธ",
    "man_bouncing_ball_dark_skin_tone": "โ›น๐Ÿฟ\u200dโ™‚๏ธ",
    "man_bouncing_ball_light_skin_tone": "โ›น๐Ÿป\u200dโ™‚๏ธ",
    "man_bouncing_ball_medium-dark_skin_tone": "โ›น๐Ÿพ\u200dโ™‚๏ธ",
    "man_bouncing_ball_medium-light_skin_tone": "โ›น๐Ÿผ\u200dโ™‚๏ธ",
    "man_bouncing_ball_medium_skin_tone": "โ›น๐Ÿฝ\u200dโ™‚๏ธ",
    "man_bowing": "๐Ÿ™‡\u200dโ™‚๏ธ",
    "man_bowing_dark_skin_tone": "๐Ÿ™‡๐Ÿฟ\u200dโ™‚๏ธ",
    "man_bowing_light_skin_tone": "๐Ÿ™‡๐Ÿป\u200dโ™‚๏ธ",
    "man_bowing_medium-dark_skin_tone": "๐Ÿ™‡๐Ÿพ\u200dโ™‚๏ธ",
    "man_bowing_medium-light_skin_tone": "๐Ÿ™‡๐Ÿผ\u200dโ™‚๏ธ",
    "man_bowing_medium_skin_tone": "๐Ÿ™‡๐Ÿฝ\u200dโ™‚๏ธ",
    "man_cartwheeling": "๐Ÿคธ\u200dโ™‚๏ธ",
    "man_cartwheeling_dark_skin_tone": "๐Ÿคธ๐Ÿฟ\u200dโ™‚๏ธ",
    "man_cartwheeling_light_skin_tone": "๐Ÿคธ๐Ÿป\u200dโ™‚๏ธ",
    "man_cartwheeling_medium-dark_skin_tone": "๐Ÿคธ๐Ÿพ\u200dโ™‚๏ธ",
    "man_cartwheeling_medium-light_skin_tone": "๐Ÿคธ๐Ÿผ\u200dโ™‚๏ธ",
    "man_cartwheeling_medium_skin_tone": "๐Ÿคธ๐Ÿฝ\u200dโ™‚๏ธ",
    "man_climbing": "๐Ÿง—\u200dโ™‚๏ธ",
    "man_climbing_dark_skin_tone": "๐Ÿง—๐Ÿฟ\u200dโ™‚๏ธ",
    "man_climbing_light_skin_tone": "๐Ÿง—๐Ÿป\u200dโ™‚๏ธ",
    "man_climbing_medium-dark_skin_tone": "๐Ÿง—๐Ÿพ\u200dโ™‚๏ธ",
    "man_climbing_medium-light_skin_tone": "๐Ÿง—๐Ÿผ\u200dโ™‚๏ธ",
    "man_climbing_medium_skin_tone": "๐Ÿง—๐Ÿฝ\u200dโ™‚๏ธ",
    "man_construction_worker": "๐Ÿ‘ท\u200dโ™‚๏ธ",
    "man_construction_worker_dark_skin_tone": "๐Ÿ‘ท๐Ÿฟ\u200dโ™‚๏ธ",
    "man_construction_worker_light_skin_tone": "๐Ÿ‘ท๐Ÿป\u200dโ™‚๏ธ",
    "man_construction_worker_medium-dark_skin_tone": "๐Ÿ‘ท๐Ÿพ\u200dโ™‚๏ธ",
    "man_construction_worker_medium-light_skin_tone": "๐Ÿ‘ท๐Ÿผ\u200dโ™‚๏ธ",
    "man_construction_worker_medium_skin_tone": "๐Ÿ‘ท๐Ÿฝ\u200dโ™‚๏ธ",
    "man_cook": "๐Ÿ‘จ\u200d๐Ÿณ",
    "man_cook_dark_skin_tone": "๐Ÿ‘จ๐Ÿฟ\u200d๐Ÿณ",
    "man_cook_light_skin_tone": "๐Ÿ‘จ๐Ÿป\u200d๐Ÿณ",
    "man_cook_medium-dark_skin_tone": "๐Ÿ‘จ๐Ÿพ\u200d๐Ÿณ",
    "man_cook_medium-light_skin_tone": "๐Ÿ‘จ๐Ÿผ\u200d๐Ÿณ",
    "man_cook_medium_skin_tone": "๐Ÿ‘จ๐Ÿฝ\u200d๐Ÿณ",
    "man_dancing": "๐Ÿ•บ",
    "man_dancing_dark_skin_tone": "๐Ÿ•บ๐Ÿฟ",
    "man_dancing_light_skin_tone": "๐Ÿ•บ๐Ÿป",
    "man_dancing_medium-dark_skin_tone": "๐Ÿ•บ๐Ÿพ",
    "man_dancing_medium-light_skin_tone": "๐Ÿ•บ๐Ÿผ",
    "man_dancing_medium_skin_tone": "๐Ÿ•บ๐Ÿฝ",
    "man_dark_skin_tone": "๐Ÿ‘จ๐Ÿฟ",
    "man_detective": "๐Ÿ•ต๏ธ\u200dโ™‚๏ธ",
    "man_detective_dark_skin_tone": "๐Ÿ•ต๐Ÿฟ\u200dโ™‚๏ธ",
    "man_detective_light_skin_tone": "๐Ÿ•ต๐Ÿป\u200dโ™‚๏ธ",
    "man_detective_medium-dark_skin_tone": "๐Ÿ•ต๐Ÿพ\u200dโ™‚๏ธ",
    "man_detective_medium-light_skin_tone": "๐Ÿ•ต๐Ÿผ\u200dโ™‚๏ธ",
    "man_detective_medium_skin_tone": "๐Ÿ•ต๐Ÿฝ\u200dโ™‚๏ธ",
    "man_elf": "๐Ÿง\u200dโ™‚๏ธ",
    "man_elf_dark_skin_tone": "๐Ÿง๐Ÿฟ\u200dโ™‚๏ธ",
    "man_elf_light_skin_tone": "๐Ÿง๐Ÿป\u200dโ™‚๏ธ",
    "man_elf_medium-dark_skin_tone": "๐Ÿง๐Ÿพ\u200dโ™‚๏ธ",
    "man_elf_medium-light_skin_tone": "๐Ÿง๐Ÿผ\u200dโ™‚๏ธ",
    "man_elf_medium_skin_tone": "๐Ÿง๐Ÿฝ\u200dโ™‚๏ธ",
    "man_facepalming": "๐Ÿคฆ\u200dโ™‚๏ธ",
    "man_facepalming_dark_skin_tone": "๐Ÿคฆ๐Ÿฟ\u200dโ™‚๏ธ",
    "man_facepalming_light_skin_tone": "๐Ÿคฆ๐Ÿป\u200dโ™‚๏ธ",
    "man_facepalming_medium-dark_skin_tone": "๐Ÿคฆ๐Ÿพ\u200dโ™‚๏ธ",
    "man_facepalming_medium-light_skin_tone": "๐Ÿคฆ๐Ÿผ\u200dโ™‚๏ธ",
    "man_facepalming_medium_skin_tone": "๐Ÿคฆ๐Ÿฝ\u200dโ™‚๏ธ",
    "man_factory_worker": "๐Ÿ‘จ\u200d๐Ÿญ",
    "man_factory_worker_dark_skin_tone": "๐Ÿ‘จ๐Ÿฟ\u200d๐Ÿญ",
    "man_factory_worker_light_skin_tone": "๐Ÿ‘จ๐Ÿป\u200d๐Ÿญ",
    "man_factory_worker_medium-dark_skin_tone": "๐Ÿ‘จ๐Ÿพ\u200d๐Ÿญ",
    "man_factory_worker_medium-light_skin_tone": "๐Ÿ‘จ๐Ÿผ\u200d๐Ÿญ",
    "man_factory_worker_medium_skin_tone": "๐Ÿ‘จ๐Ÿฝ\u200d๐Ÿญ",
    "man_fairy": "๐Ÿงš\u200dโ™‚๏ธ",
    "man_fairy_dark_skin_tone": "๐Ÿงš๐Ÿฟ\u200dโ™‚๏ธ",
    "man_fairy_light_skin_tone": "๐Ÿงš๐Ÿป\u200dโ™‚๏ธ",
    "man_fairy_medium-dark_skin_tone": "๐Ÿงš๐Ÿพ\u200dโ™‚๏ธ",
    "man_fairy_medium-light_skin_tone": "๐Ÿงš๐Ÿผ\u200dโ™‚๏ธ",
    "man_fairy_medium_skin_tone": "๐Ÿงš๐Ÿฝ\u200dโ™‚๏ธ",
    "man_farmer": "๐Ÿ‘จ\u200d๐ŸŒพ",
    "man_farmer_dark_skin_tone": "๐Ÿ‘จ๐Ÿฟ\u200d๐ŸŒพ",
    "man_farmer_light_skin_tone": "๐Ÿ‘จ๐Ÿป\u200d๐ŸŒพ",
    "man_farmer_medium-dark_skin_tone": "๐Ÿ‘จ๐Ÿพ\u200d๐ŸŒพ",
    "man_farmer_medium-light_skin_tone": "๐Ÿ‘จ๐Ÿผ\u200d๐ŸŒพ",
    "man_farmer_medium_skin_tone": "๐Ÿ‘จ๐Ÿฝ\u200d๐ŸŒพ",
    "man_firefighter": "๐Ÿ‘จ\u200d๐Ÿš’",
    "man_firefighter_dark_skin_tone": "๐Ÿ‘จ๐Ÿฟ\u200d๐Ÿš’",
    "man_firefighter_light_skin_tone": "๐Ÿ‘จ๐Ÿป\u200d๐Ÿš’",
    "man_firefighter_medium-dark_skin_tone": "๐Ÿ‘จ๐Ÿพ\u200d๐Ÿš’",
    "man_firefighter_medium-light_skin_tone": "๐Ÿ‘จ๐Ÿผ\u200d๐Ÿš’",
    "man_firefighter_medium_skin_tone": "๐Ÿ‘จ๐Ÿฝ\u200d๐Ÿš’",
    "man_frowning": "๐Ÿ™\u200dโ™‚๏ธ",
    "man_frowning_dark_skin_tone": "๐Ÿ™๐Ÿฟ\u200dโ™‚๏ธ",
    "man_frowning_light_skin_tone": "๐Ÿ™๐Ÿป\u200dโ™‚๏ธ",
    "man_frowning_medium-dark_skin_tone": "๐Ÿ™๐Ÿพ\u200dโ™‚๏ธ",
    "man_frowning_medium-light_skin_tone": "๐Ÿ™๐Ÿผ\u200dโ™‚๏ธ",
    "man_frowning_medium_skin_tone": "๐Ÿ™๐Ÿฝ\u200dโ™‚๏ธ",
    "man_genie": "๐Ÿงž\u200dโ™‚๏ธ",
    "man_gesturing_no": "๐Ÿ™…\u200dโ™‚๏ธ",
    "man_gesturing_no_dark_skin_tone": "๐Ÿ™…๐Ÿฟ\u200dโ™‚๏ธ",
    "man_gesturing_no_light_skin_tone": "๐Ÿ™…๐Ÿป\u200dโ™‚๏ธ",
    "man_gesturing_no_medium-dark_skin_tone": "๐Ÿ™…๐Ÿพ\u200dโ™‚๏ธ",
    "man_gesturing_no_medium-light_skin_tone": "๐Ÿ™…๐Ÿผ\u200dโ™‚๏ธ",
    "man_gesturing_no_medium_skin_tone": "๐Ÿ™…๐Ÿฝ\u200dโ™‚๏ธ",
    "man_gesturing_ok": "๐Ÿ™†\u200dโ™‚๏ธ",
    "man_gesturing_ok_dark_skin_tone": "๐Ÿ™†๐Ÿฟ\u200dโ™‚๏ธ",
    "man_gesturing_ok_light_skin_tone": "๐Ÿ™†๐Ÿป\u200dโ™‚๏ธ",
    "man_gesturing_ok_medium-dark_skin_tone": "๐Ÿ™†๐Ÿพ\u200dโ™‚๏ธ",
    "man_gesturing_ok_medium-light_skin_tone": "๐Ÿ™†๐Ÿผ\u200dโ™‚๏ธ",
    "man_gesturing_ok_medium_skin_tone": "๐Ÿ™†๐Ÿฝ\u200dโ™‚๏ธ",
    "man_getting_haircut": "๐Ÿ’‡\u200dโ™‚๏ธ",
    "man_getting_haircut_dark_skin_tone": "๐Ÿ’‡๐Ÿฟ\u200dโ™‚๏ธ",
    "man_getting_haircut_light_skin_tone": "๐Ÿ’‡๐Ÿป\u200dโ™‚๏ธ",
    "man_getting_haircut_medium-dark_skin_tone": "๐Ÿ’‡๐Ÿพ\u200dโ™‚๏ธ",
    "man_getting_haircut_medium-light_skin_tone": "๐Ÿ’‡๐Ÿผ\u200dโ™‚๏ธ",
    "man_getting_haircut_medium_skin_tone": "๐Ÿ’‡๐Ÿฝ\u200dโ™‚๏ธ",
    "man_getting_massage": "๐Ÿ’†\u200dโ™‚๏ธ",
    "man_getting_massage_dark_skin_tone": "๐Ÿ’†๐Ÿฟ\u200dโ™‚๏ธ",
    "man_getting_massage_light_skin_tone": "๐Ÿ’†๐Ÿป\u200dโ™‚๏ธ",
    "man_getting_massage_medium-dark_skin_tone": "๐Ÿ’†๐Ÿพ\u200dโ™‚๏ธ",
    "man_getting_massage_medium-light_skin_tone": "๐Ÿ’†๐Ÿผ\u200dโ™‚๏ธ",
    "man_getting_massage_medium_skin_tone": "๐Ÿ’†๐Ÿฝ\u200dโ™‚๏ธ",
    "man_golfing": "๐ŸŒ๏ธ\u200dโ™‚๏ธ",
    "man_golfing_dark_skin_tone": "๐ŸŒ๐Ÿฟ\u200dโ™‚๏ธ",
    "man_golfing_light_skin_tone": "๐ŸŒ๐Ÿป\u200dโ™‚๏ธ",
    "man_golfing_medium-dark_skin_tone": "๐ŸŒ๐Ÿพ\u200dโ™‚๏ธ",
    "man_golfing_medium-light_skin_tone": "๐ŸŒ๐Ÿผ\u200dโ™‚๏ธ",
    "man_golfing_medium_skin_tone": "๐ŸŒ๐Ÿฝ\u200dโ™‚๏ธ",
    "man_guard": "๐Ÿ’‚\u200dโ™‚๏ธ",
    "man_guard_dark_skin_tone": "๐Ÿ’‚๐Ÿฟ\u200dโ™‚๏ธ",
    "man_guard_light_skin_tone": "๐Ÿ’‚๐Ÿป\u200dโ™‚๏ธ",
    "man_guard_medium-dark_skin_tone": "๐Ÿ’‚๐Ÿพ\u200dโ™‚๏ธ",
    "man_guard_medium-light_skin_tone": "๐Ÿ’‚๐Ÿผ\u200dโ™‚๏ธ",
    "man_guard_medium_skin_tone": "๐Ÿ’‚๐Ÿฝ\u200dโ™‚๏ธ",
    "man_health_worker": "๐Ÿ‘จ\u200dโš•๏ธ",
    "man_health_worker_dark_skin_tone": "๐Ÿ‘จ๐Ÿฟ\u200dโš•๏ธ",
    "man_health_worker_light_skin_tone": "๐Ÿ‘จ๐Ÿป\u200dโš•๏ธ",
    "man_health_worker_medium-dark_skin_tone": "๐Ÿ‘จ๐Ÿพ\u200dโš•๏ธ",
    "man_health_worker_medium-light_skin_tone": "๐Ÿ‘จ๐Ÿผ\u200dโš•๏ธ",
    "man_health_worker_medium_skin_tone": "๐Ÿ‘จ๐Ÿฝ\u200dโš•๏ธ",
    "man_in_lotus_position": "๐Ÿง˜\u200dโ™‚๏ธ",
    "man_in_lotus_position_dark_skin_tone": "๐Ÿง˜๐Ÿฟ\u200dโ™‚๏ธ",
    "man_in_lotus_position_light_skin_tone": "๐Ÿง˜๐Ÿป\u200dโ™‚๏ธ",
    "man_in_lotus_position_medium-dark_skin_tone": "๐Ÿง˜๐Ÿพ\u200dโ™‚๏ธ",
    "man_in_lotus_position_medium-light_skin_tone": "๐Ÿง˜๐Ÿผ\u200dโ™‚๏ธ",
    "man_in_lotus_position_medium_skin_tone": "๐Ÿง˜๐Ÿฝ\u200dโ™‚๏ธ",
    "man_in_manual_wheelchair": "๐Ÿ‘จ\u200d๐Ÿฆฝ",
    "man_in_motorized_wheelchair": "๐Ÿ‘จ\u200d๐Ÿฆผ",
    "man_in_steamy_room": "๐Ÿง–\u200dโ™‚๏ธ",
    "man_in_steamy_room_dark_skin_tone": "๐Ÿง–๐Ÿฟ\u200dโ™‚๏ธ",
    "man_in_steamy_room_light_skin_tone": "๐Ÿง–๐Ÿป\u200dโ™‚๏ธ",
    "man_in_steamy_room_medium-dark_skin_tone": "๐Ÿง–๐Ÿพ\u200dโ™‚๏ธ",
    "man_in_steamy_room_medium-light_skin_tone": "๐Ÿง–๐Ÿผ\u200dโ™‚๏ธ",
    "man_in_steamy_room_medium_skin_tone": "๐Ÿง–๐Ÿฝ\u200dโ™‚๏ธ",
    "man_in_suit_levitating": "๐Ÿ•ด",
    "man_in_suit_levitating_dark_skin_tone": "๐Ÿ•ด๐Ÿฟ",
    "man_in_suit_levitating_light_skin_tone": "๐Ÿ•ด๐Ÿป",
    "man_in_suit_levitating_medium-dark_skin_tone": "๐Ÿ•ด๐Ÿพ",
    "man_in_suit_levitating_medium-light_skin_tone": "๐Ÿ•ด๐Ÿผ",
    "man_in_suit_levitating_medium_skin_tone": "๐Ÿ•ด๐Ÿฝ",
    "man_in_tuxedo": "๐Ÿคต",
    "man_in_tuxedo_dark_skin_tone": "๐Ÿคต๐Ÿฟ",
    "man_in_tuxedo_light_skin_tone": "๐Ÿคต๐Ÿป",
    "man_in_tuxedo_medium-dark_skin_tone": "๐Ÿคต๐Ÿพ",
    "man_in_tuxedo_medium-light_skin_tone": "๐Ÿคต๐Ÿผ",
    "man_in_tuxedo_medium_skin_tone": "๐Ÿคต๐Ÿฝ",
    "man_judge": "๐Ÿ‘จ\u200dโš–๏ธ",
    "man_judge_dark_skin_tone": "๐Ÿ‘จ๐Ÿฟ\u200dโš–๏ธ",
    "man_judge_light_skin_tone": "๐Ÿ‘จ๐Ÿป\u200dโš–๏ธ",
    "man_judge_medium-dark_skin_tone": "๐Ÿ‘จ๐Ÿพ\u200dโš–๏ธ",
    "man_judge_medium-light_skin_tone": "๐Ÿ‘จ๐Ÿผ\u200dโš–๏ธ",
    "man_judge_medium_skin_tone": "๐Ÿ‘จ๐Ÿฝ\u200dโš–๏ธ",
    "man_juggling": "๐Ÿคน\u200dโ™‚๏ธ",
    "man_juggling_dark_skin_tone": "๐Ÿคน๐Ÿฟ\u200dโ™‚๏ธ",
    "man_juggling_light_skin_tone": "๐Ÿคน๐Ÿป\u200dโ™‚๏ธ",
    "man_juggling_medium-dark_skin_tone": "๐Ÿคน๐Ÿพ\u200dโ™‚๏ธ",
    "man_juggling_medium-light_skin_tone": "๐Ÿคน๐Ÿผ\u200dโ™‚๏ธ",
    "man_juggling_medium_skin_tone": "๐Ÿคน๐Ÿฝ\u200dโ™‚๏ธ",
    "man_lifting_weights": "๐Ÿ‹๏ธ\u200dโ™‚๏ธ",
    "man_lifting_weights_dark_skin_tone": "๐Ÿ‹๐Ÿฟ\u200dโ™‚๏ธ",
    "man_lifting_weights_light_skin_tone": "๐Ÿ‹๐Ÿป\u200dโ™‚๏ธ",
    "man_lifting_weights_medium-dark_skin_tone": "๐Ÿ‹๐Ÿพ\u200dโ™‚๏ธ",
    "man_lifting_weights_medium-light_skin_tone": "๐Ÿ‹๐Ÿผ\u200dโ™‚๏ธ",
    "man_lifting_weights_medium_skin_tone": "๐Ÿ‹๐Ÿฝ\u200dโ™‚๏ธ",
    "man_light_skin_tone": "๐Ÿ‘จ๐Ÿป",
    "man_mage": "๐Ÿง™\u200dโ™‚๏ธ",
    "man_mage_dark_skin_tone": "๐Ÿง™๐Ÿฟ\u200dโ™‚๏ธ",
    "man_mage_light_skin_tone": "๐Ÿง™๐Ÿป\u200dโ™‚๏ธ",
    "man_mage_medium-dark_skin_tone": "๐Ÿง™๐Ÿพ\u200dโ™‚๏ธ",
    "man_mage_medium-light_skin_tone": "๐Ÿง™๐Ÿผ\u200dโ™‚๏ธ",
    "man_mage_medium_skin_tone": "๐Ÿง™๐Ÿฝ\u200dโ™‚๏ธ",
    "man_mechanic": "๐Ÿ‘จ\u200d๐Ÿ”ง",
    "man_mechanic_dark_skin_tone": "๐Ÿ‘จ๐Ÿฟ\u200d๐Ÿ”ง",
    "man_mechanic_light_skin_tone": "๐Ÿ‘จ๐Ÿป\u200d๐Ÿ”ง",
    "man_mechanic_medium-dark_skin_tone": "๐Ÿ‘จ๐Ÿพ\u200d๐Ÿ”ง",
    "man_mechanic_medium-light_skin_tone": "๐Ÿ‘จ๐Ÿผ\u200d๐Ÿ”ง",
    "man_mechanic_medium_skin_tone": "๐Ÿ‘จ๐Ÿฝ\u200d๐Ÿ”ง",
    "man_medium-dark_skin_tone": "๐Ÿ‘จ๐Ÿพ",
    "man_medium-light_skin_tone": "๐Ÿ‘จ๐Ÿผ",
    "man_medium_skin_tone": "๐Ÿ‘จ๐Ÿฝ",
    "man_mountain_biking": "๐Ÿšต\u200dโ™‚๏ธ",
    "man_mountain_biking_dark_skin_tone": "๐Ÿšต๐Ÿฟ\u200dโ™‚๏ธ",
    "man_mountain_biking_light_skin_tone": "๐Ÿšต๐Ÿป\u200dโ™‚๏ธ",
    "man_mountain_biking_medium-dark_skin_tone": "๐Ÿšต๐Ÿพ\u200dโ™‚๏ธ",
    "man_mountain_biking_medium-light_skin_tone": "๐Ÿšต๐Ÿผ\u200dโ™‚๏ธ",
    "man_mountain_biking_medium_skin_tone": "๐Ÿšต๐Ÿฝ\u200dโ™‚๏ธ",
    "man_office_worker": "๐Ÿ‘จ\u200d๐Ÿ’ผ",
    "man_office_worker_dark_skin_tone": "๐Ÿ‘จ๐Ÿฟ\u200d๐Ÿ’ผ",
    "man_office_worker_light_skin_tone": "๐Ÿ‘จ๐Ÿป\u200d๐Ÿ’ผ",
    "man_office_worker_medium-dark_skin_tone": "๐Ÿ‘จ๐Ÿพ\u200d๐Ÿ’ผ",
    "man_office_worker_medium-light_skin_tone": "๐Ÿ‘จ๐Ÿผ\u200d๐Ÿ’ผ",
    "man_office_worker_medium_skin_tone": "๐Ÿ‘จ๐Ÿฝ\u200d๐Ÿ’ผ",
    "man_pilot": "๐Ÿ‘จ\u200dโœˆ๏ธ",
    "man_pilot_dark_skin_tone": "๐Ÿ‘จ๐Ÿฟ\u200dโœˆ๏ธ",
    "man_pilot_light_skin_tone": "๐Ÿ‘จ๐Ÿป\u200dโœˆ๏ธ",
    "man_pilot_medium-dark_skin_tone": "๐Ÿ‘จ๐Ÿพ\u200dโœˆ๏ธ",
    "man_pilot_medium-light_skin_tone": "๐Ÿ‘จ๐Ÿผ\u200dโœˆ๏ธ",
    "man_pilot_medium_skin_tone": "๐Ÿ‘จ๐Ÿฝ\u200dโœˆ๏ธ",
    "man_playing_handball": "๐Ÿคพ\u200dโ™‚๏ธ",
    "man_playing_handball_dark_skin_tone": "๐Ÿคพ๐Ÿฟ\u200dโ™‚๏ธ",
    "man_playing_handball_light_skin_tone": "๐Ÿคพ๐Ÿป\u200dโ™‚๏ธ",
    "man_playing_handball_medium-dark_skin_tone": "๐Ÿคพ๐Ÿพ\u200dโ™‚๏ธ",
    "man_playing_handball_medium-light_skin_tone": "๐Ÿคพ๐Ÿผ\u200dโ™‚๏ธ",
    "man_playing_handball_medium_skin_tone": "๐Ÿคพ๐Ÿฝ\u200dโ™‚๏ธ",
    "man_playing_water_polo": "๐Ÿคฝ\u200dโ™‚๏ธ",
    "man_playing_water_polo_dark_skin_tone": "๐Ÿคฝ๐Ÿฟ\u200dโ™‚๏ธ",
    "man_playing_water_polo_light_skin_tone": "๐Ÿคฝ๐Ÿป\u200dโ™‚๏ธ",
    "man_playing_water_polo_medium-dark_skin_tone": "๐Ÿคฝ๐Ÿพ\u200dโ™‚๏ธ",
    "man_playing_water_polo_medium-light_skin_tone": "๐Ÿคฝ๐Ÿผ\u200dโ™‚๏ธ",
    "man_playing_water_polo_medium_skin_tone": "๐Ÿคฝ๐Ÿฝ\u200dโ™‚๏ธ",
    "man_police_officer": "๐Ÿ‘ฎ\u200dโ™‚๏ธ",
    "man_police_officer_dark_skin_tone": "๐Ÿ‘ฎ๐Ÿฟ\u200dโ™‚๏ธ",
    "man_police_officer_light_skin_tone": "๐Ÿ‘ฎ๐Ÿป\u200dโ™‚๏ธ",
    "man_police_officer_medium-dark_skin_tone": "๐Ÿ‘ฎ๐Ÿพ\u200dโ™‚๏ธ",
    "man_police_officer_medium-light_skin_tone": "๐Ÿ‘ฎ๐Ÿผ\u200dโ™‚๏ธ",
    "man_police_officer_medium_skin_tone": "๐Ÿ‘ฎ๐Ÿฝ\u200dโ™‚๏ธ",
    "man_pouting": "๐Ÿ™Ž\u200dโ™‚๏ธ",
    "man_pouting_dark_skin_tone": "๐Ÿ™Ž๐Ÿฟ\u200dโ™‚๏ธ",
    "man_pouting_light_skin_tone": "๐Ÿ™Ž๐Ÿป\u200dโ™‚๏ธ",
    "man_pouting_medium-dark_skin_tone": "๐Ÿ™Ž๐Ÿพ\u200dโ™‚๏ธ",
    "man_pouting_medium-light_skin_tone": "๐Ÿ™Ž๐Ÿผ\u200dโ™‚๏ธ",
    "man_pouting_medium_skin_tone": "๐Ÿ™Ž๐Ÿฝ\u200dโ™‚๏ธ",
    "man_raising_hand": "๐Ÿ™‹\u200dโ™‚๏ธ",
    "man_raising_hand_dark_skin_tone": "๐Ÿ™‹๐Ÿฟ\u200dโ™‚๏ธ",
    "man_raising_hand_light_skin_tone": "๐Ÿ™‹๐Ÿป\u200dโ™‚๏ธ",
    "man_raising_hand_medium-dark_skin_tone": "๐Ÿ™‹๐Ÿพ\u200dโ™‚๏ธ",
    "man_raising_hand_medium-light_skin_tone": "๐Ÿ™‹๐Ÿผ\u200dโ™‚๏ธ",
    "man_raising_hand_medium_skin_tone": "๐Ÿ™‹๐Ÿฝ\u200dโ™‚๏ธ",
    "man_rowing_boat": "๐Ÿšฃ\u200dโ™‚๏ธ",
    "man_rowing_boat_dark_skin_tone": "๐Ÿšฃ๐Ÿฟ\u200dโ™‚๏ธ",
    "man_rowing_boat_light_skin_tone": "๐Ÿšฃ๐Ÿป\u200dโ™‚๏ธ",
    "man_rowing_boat_medium-dark_skin_tone": "๐Ÿšฃ๐Ÿพ\u200dโ™‚๏ธ",
    "man_rowing_boat_medium-light_skin_tone": "๐Ÿšฃ๐Ÿผ\u200dโ™‚๏ธ",
    "man_rowing_boat_medium_skin_tone": "๐Ÿšฃ๐Ÿฝ\u200dโ™‚๏ธ",
    "man_running": "๐Ÿƒ\u200dโ™‚๏ธ",
    "man_running_dark_skin_tone": "๐Ÿƒ๐Ÿฟ\u200dโ™‚๏ธ",
    "man_running_light_skin_tone": "๐Ÿƒ๐Ÿป\u200dโ™‚๏ธ",
    "man_running_medium-dark_skin_tone": "๐Ÿƒ๐Ÿพ\u200dโ™‚๏ธ",
    "man_running_medium-light_skin_tone": "๐Ÿƒ๐Ÿผ\u200dโ™‚๏ธ",
    "man_running_medium_skin_tone": "๐Ÿƒ๐Ÿฝ\u200dโ™‚๏ธ",
    "man_scientist": "๐Ÿ‘จ\u200d๐Ÿ”ฌ",
    "man_scientist_dark_skin_tone": "๐Ÿ‘จ๐Ÿฟ\u200d๐Ÿ”ฌ",
    "man_scientist_light_skin_tone": "๐Ÿ‘จ๐Ÿป\u200d๐Ÿ”ฌ",
    "man_scientist_medium-dark_skin_tone": "๐Ÿ‘จ๐Ÿพ\u200d๐Ÿ”ฌ",
    "man_scientist_medium-light_skin_tone": "๐Ÿ‘จ๐Ÿผ\u200d๐Ÿ”ฌ",
    "man_scientist_medium_skin_tone": "๐Ÿ‘จ๐Ÿฝ\u200d๐Ÿ”ฌ",
    "man_shrugging": "๐Ÿคท\u200dโ™‚๏ธ",
    "man_shrugging_dark_skin_tone": "๐Ÿคท๐Ÿฟ\u200dโ™‚๏ธ",
    "man_shrugging_light_skin_tone": "๐Ÿคท๐Ÿป\u200dโ™‚๏ธ",
    "man_shrugging_medium-dark_skin_tone": "๐Ÿคท๐Ÿพ\u200dโ™‚๏ธ",
    "man_shrugging_medium-light_skin_tone": "๐Ÿคท๐Ÿผ\u200dโ™‚๏ธ",
    "man_shrugging_medium_skin_tone": "๐Ÿคท๐Ÿฝ\u200dโ™‚๏ธ",
    "man_singer": "๐Ÿ‘จ\u200d๐ŸŽค",
    "man_singer_dark_skin_tone": "๐Ÿ‘จ๐Ÿฟ\u200d๐ŸŽค",
    "man_singer_light_skin_tone": "๐Ÿ‘จ๐Ÿป\u200d๐ŸŽค",
    "man_singer_medium-dark_skin_tone": "๐Ÿ‘จ๐Ÿพ\u200d๐ŸŽค",
    "man_singer_medium-light_skin_tone": "๐Ÿ‘จ๐Ÿผ\u200d๐ŸŽค",
    "man_singer_medium_skin_tone": "๐Ÿ‘จ๐Ÿฝ\u200d๐ŸŽค",
    "man_student": "๐Ÿ‘จ\u200d๐ŸŽ“",
    "man_student_dark_skin_tone": "๐Ÿ‘จ๐Ÿฟ\u200d๐ŸŽ“",
    "man_student_light_skin_tone": "๐Ÿ‘จ๐Ÿป\u200d๐ŸŽ“",
    "man_student_medium-dark_skin_tone": "๐Ÿ‘จ๐Ÿพ\u200d๐ŸŽ“",
    "man_student_medium-light_skin_tone": "๐Ÿ‘จ๐Ÿผ\u200d๐ŸŽ“",
    "man_student_medium_skin_tone": "๐Ÿ‘จ๐Ÿฝ\u200d๐ŸŽ“",
    "man_surfing": "๐Ÿ„\u200dโ™‚๏ธ",
    "man_surfing_dark_skin_tone": "๐Ÿ„๐Ÿฟ\u200dโ™‚๏ธ",
    "man_surfing_light_skin_tone": "๐Ÿ„๐Ÿป\u200dโ™‚๏ธ",
    "man_surfing_medium-dark_skin_tone": "๐Ÿ„๐Ÿพ\u200dโ™‚๏ธ",
    "man_surfing_medium-light_skin_tone": "๐Ÿ„๐Ÿผ\u200dโ™‚๏ธ",
    "man_surfing_medium_skin_tone": "๐Ÿ„๐Ÿฝ\u200dโ™‚๏ธ",
    "man_swimming": "๐ŸŠ\u200dโ™‚๏ธ",
    "man_swimming_dark_skin_tone": "๐ŸŠ๐Ÿฟ\u200dโ™‚๏ธ",
    "man_swimming_light_skin_tone": "๐ŸŠ๐Ÿป\u200dโ™‚๏ธ",
    "man_swimming_medium-dark_skin_tone": "๐ŸŠ๐Ÿพ\u200dโ™‚๏ธ",
    "man_swimming_medium-light_skin_tone": "๐ŸŠ๐Ÿผ\u200dโ™‚๏ธ",
    "man_swimming_medium_skin_tone": "๐ŸŠ๐Ÿฝ\u200dโ™‚๏ธ",
    "man_teacher": "๐Ÿ‘จ\u200d๐Ÿซ",
    "man_teacher_dark_skin_tone": "๐Ÿ‘จ๐Ÿฟ\u200d๐Ÿซ",
    "man_teacher_light_skin_tone": "๐Ÿ‘จ๐Ÿป\u200d๐Ÿซ",
    "man_teacher_medium-dark_skin_tone": "๐Ÿ‘จ๐Ÿพ\u200d๐Ÿซ",
    "man_teacher_medium-light_skin_tone": "๐Ÿ‘จ๐Ÿผ\u200d๐Ÿซ",
    "man_teacher_medium_skin_tone": "๐Ÿ‘จ๐Ÿฝ\u200d๐Ÿซ",
    "man_technologist": "๐Ÿ‘จ\u200d๐Ÿ’ป",
    "man_technologist_dark_skin_tone": "๐Ÿ‘จ๐Ÿฟ\u200d๐Ÿ’ป",
    "man_technologist_light_skin_tone": "๐Ÿ‘จ๐Ÿป\u200d๐Ÿ’ป",
    "man_technologist_medium-dark_skin_tone": "๐Ÿ‘จ๐Ÿพ\u200d๐Ÿ’ป",
    "man_technologist_medium-light_skin_tone": "๐Ÿ‘จ๐Ÿผ\u200d๐Ÿ’ป",
    "man_technologist_medium_skin_tone": "๐Ÿ‘จ๐Ÿฝ\u200d๐Ÿ’ป",
    "man_tipping_hand": "๐Ÿ’\u200dโ™‚๏ธ",
    "man_tipping_hand_dark_skin_tone": "๐Ÿ’๐Ÿฟ\u200dโ™‚๏ธ",
    "man_tipping_hand_light_skin_tone": "๐Ÿ’๐Ÿป\u200dโ™‚๏ธ",
    "man_tipping_hand_medium-dark_skin_tone": "๐Ÿ’๐Ÿพ\u200dโ™‚๏ธ",
    "man_tipping_hand_medium-light_skin_tone": "๐Ÿ’๐Ÿผ\u200dโ™‚๏ธ",
    "man_tipping_hand_medium_skin_tone": "๐Ÿ’๐Ÿฝ\u200dโ™‚๏ธ",
    "man_vampire": "๐Ÿง›\u200dโ™‚๏ธ",
    "man_vampire_dark_skin_tone": "๐Ÿง›๐Ÿฟ\u200dโ™‚๏ธ",
    "man_vampire_light_skin_tone": "๐Ÿง›๐Ÿป\u200dโ™‚๏ธ",
    "man_vampire_medium-dark_skin_tone": "๐Ÿง›๐Ÿพ\u200dโ™‚๏ธ",
    "man_vampire_medium-light_skin_tone": "๐Ÿง›๐Ÿผ\u200dโ™‚๏ธ",
    "man_vampire_medium_skin_tone": "๐Ÿง›๐Ÿฝ\u200dโ™‚๏ธ",
    "man_walking": "๐Ÿšถ\u200dโ™‚๏ธ",
    "man_walking_dark_skin_tone": "๐Ÿšถ๐Ÿฟ\u200dโ™‚๏ธ",
    "man_walking_light_skin_tone": "๐Ÿšถ๐Ÿป\u200dโ™‚๏ธ",
    "man_walking_medium-dark_skin_tone": "๐Ÿšถ๐Ÿพ\u200dโ™‚๏ธ",
    "man_walking_medium-light_skin_tone": "๐Ÿšถ๐Ÿผ\u200dโ™‚๏ธ",
    "man_walking_medium_skin_tone": "๐Ÿšถ๐Ÿฝ\u200dโ™‚๏ธ",
    "man_wearing_turban": "๐Ÿ‘ณ\u200dโ™‚๏ธ",
    "man_wearing_turban_dark_skin_tone": "๐Ÿ‘ณ๐Ÿฟ\u200dโ™‚๏ธ",
    "man_wearing_turban_light_skin_tone": "๐Ÿ‘ณ๐Ÿป\u200dโ™‚๏ธ",
    "man_wearing_turban_medium-dark_skin_tone": "๐Ÿ‘ณ๐Ÿพ\u200dโ™‚๏ธ",
    "man_wearing_turban_medium-light_skin_tone": "๐Ÿ‘ณ๐Ÿผ\u200dโ™‚๏ธ",
    "man_wearing_turban_medium_skin_tone": "๐Ÿ‘ณ๐Ÿฝ\u200dโ™‚๏ธ",
    "man_with_probing_cane": "๐Ÿ‘จ\u200d๐Ÿฆฏ",
    "man_with_chinese_cap": "๐Ÿ‘ฒ",
    "man_with_chinese_cap_dark_skin_tone": "๐Ÿ‘ฒ๐Ÿฟ",
    "man_with_chinese_cap_light_skin_tone": "๐Ÿ‘ฒ๐Ÿป",
    "man_with_chinese_cap_medium-dark_skin_tone": "๐Ÿ‘ฒ๐Ÿพ",
    "man_with_chinese_cap_medium-light_skin_tone": "๐Ÿ‘ฒ๐Ÿผ",
    "man_with_chinese_cap_medium_skin_tone": "๐Ÿ‘ฒ๐Ÿฝ",
    "man_zombie": "๐ŸงŸ\u200dโ™‚๏ธ",
    "mango": "๐Ÿฅญ",
    "mantelpiece_clock": "๐Ÿ•ฐ",
    "manual_wheelchair": "๐Ÿฆฝ",
    "manโ€™s_shoe": "๐Ÿ‘ž",
    "map_of_japan": "๐Ÿ—พ",
    "maple_leaf": "๐Ÿ",
    "martial_arts_uniform": "๐Ÿฅ‹",
    "mate": "๐Ÿง‰",
    "meat_on_bone": "๐Ÿ–",
    "mechanical_arm": "๐Ÿฆพ",
    "mechanical_leg": "๐Ÿฆฟ",
    "medical_symbol": "โš•",
    "megaphone": "๐Ÿ“ฃ",
    "melon": "๐Ÿˆ",
    "memo": "๐Ÿ“",
    "men_with_bunny_ears": "๐Ÿ‘ฏ\u200dโ™‚๏ธ",
    "men_wrestling": "๐Ÿคผ\u200dโ™‚๏ธ",
    "menorah": "๐Ÿ•Ž",
    "menโ€™s_room": "๐Ÿšน",
    "mermaid": "๐Ÿงœ\u200dโ™€๏ธ",
    "mermaid_dark_skin_tone": "๐Ÿงœ๐Ÿฟ\u200dโ™€๏ธ",
    "mermaid_light_skin_tone": "๐Ÿงœ๐Ÿป\u200dโ™€๏ธ",
    "mermaid_medium-dark_skin_tone": "๐Ÿงœ๐Ÿพ\u200dโ™€๏ธ",
    "mermaid_medium-light_skin_tone": "๐Ÿงœ๐Ÿผ\u200dโ™€๏ธ",
    "mermaid_medium_skin_tone": "๐Ÿงœ๐Ÿฝ\u200dโ™€๏ธ",
    "merman": "๐Ÿงœ\u200dโ™‚๏ธ",
    "merman_dark_skin_tone": "๐Ÿงœ๐Ÿฟ\u200dโ™‚๏ธ",
    "merman_light_skin_tone": "๐Ÿงœ๐Ÿป\u200dโ™‚๏ธ",
    "merman_medium-dark_skin_tone": "๐Ÿงœ๐Ÿพ\u200dโ™‚๏ธ",
    "merman_medium-light_skin_tone": "๐Ÿงœ๐Ÿผ\u200dโ™‚๏ธ",
    "merman_medium_skin_tone": "๐Ÿงœ๐Ÿฝ\u200dโ™‚๏ธ",
    "merperson": "๐Ÿงœ",
    "merperson_dark_skin_tone": "๐Ÿงœ๐Ÿฟ",
    "merperson_light_skin_tone": "๐Ÿงœ๐Ÿป",
    "merperson_medium-dark_skin_tone": "๐Ÿงœ๐Ÿพ",
    "merperson_medium-light_skin_tone": "๐Ÿงœ๐Ÿผ",
    "merperson_medium_skin_tone": "๐Ÿงœ๐Ÿฝ",
    "metro": "๐Ÿš‡",
    "microbe": "๐Ÿฆ ",
    "microphone": "๐ŸŽค",
    "microscope": "๐Ÿ”ฌ",
    "middle_finger": "๐Ÿ–•",
    "middle_finger_dark_skin_tone": "๐Ÿ–•๐Ÿฟ",
    "middle_finger_light_skin_tone": "๐Ÿ–•๐Ÿป",
    "middle_finger_medium-dark_skin_tone": "๐Ÿ–•๐Ÿพ",
    "middle_finger_medium-light_skin_tone": "๐Ÿ–•๐Ÿผ",
    "middle_finger_medium_skin_tone": "๐Ÿ–•๐Ÿฝ",
    "military_medal": "๐ŸŽ–",
    "milky_way": "๐ŸŒŒ",
    "minibus": "๐Ÿš",
    "moai": "๐Ÿ—ฟ",
    "mobile_phone": "๐Ÿ“ฑ",
    "mobile_phone_off": "๐Ÿ“ด",
    "mobile_phone_with_arrow": "๐Ÿ“ฒ",
    "money-mouth_face": "๐Ÿค‘",
    "money_bag": "๐Ÿ’ฐ",
    "money_with_wings": "๐Ÿ’ธ",
    "monkey": "๐Ÿ’",
    "monkey_face": "๐Ÿต",
    "monorail": "๐Ÿš",
    "moon_cake": "๐Ÿฅฎ",
    "moon_viewing_ceremony": "๐ŸŽ‘",
    "mosque": "๐Ÿ•Œ",
    "mosquito": "๐ŸฆŸ",
    "motor_boat": "๐Ÿ›ฅ",
    "motor_scooter": "๐Ÿ›ต",
    "motorcycle": "๐Ÿ",
    "motorized_wheelchair": "๐Ÿฆผ",
    "motorway": "๐Ÿ›ฃ",
    "mount_fuji": "๐Ÿ—ป",
    "mountain": "โ›ฐ",
    "mountain_cableway": "๐Ÿš ",
    "mountain_railway": "๐Ÿšž",
    "mouse": "๐Ÿญ",
    "mouse_face": "๐Ÿญ",
    "mouth": "๐Ÿ‘„",
    "movie_camera": "๐ŸŽฅ",
    "mushroom": "๐Ÿ„",
    "musical_keyboard": "๐ŸŽน",
    "musical_note": "๐ŸŽต",
    "musical_notes": "๐ŸŽถ",
    "musical_score": "๐ŸŽผ",
    "muted_speaker": "๐Ÿ”‡",
    "nail_polish": "๐Ÿ’…",
    "nail_polish_dark_skin_tone": "๐Ÿ’…๐Ÿฟ",
    "nail_polish_light_skin_tone": "๐Ÿ’…๐Ÿป",
    "nail_polish_medium-dark_skin_tone": "๐Ÿ’…๐Ÿพ",
    "nail_polish_medium-light_skin_tone": "๐Ÿ’…๐Ÿผ",
    "nail_polish_medium_skin_tone": "๐Ÿ’…๐Ÿฝ",
    "name_badge": "๐Ÿ“›",
    "national_park": "๐Ÿž",
    "nauseated_face": "๐Ÿคข",
    "nazar_amulet": "๐Ÿงฟ",
    "necktie": "๐Ÿ‘”",
    "nerd_face": "๐Ÿค“",
    "neutral_face": "๐Ÿ˜",
    "new_moon": "๐ŸŒ‘",
    "new_moon_face": "๐ŸŒš",
    "newspaper": "๐Ÿ“ฐ",
    "next_track_button": "โญ",
    "night_with_stars": "๐ŸŒƒ",
    "nine-thirty": "๐Ÿ•ค",
    "nine_oโ€™clock": "๐Ÿ•˜",
    "no_bicycles": "๐Ÿšณ",
    "no_entry": "โ›”",
    "no_littering": "๐Ÿšฏ",
    "no_mobile_phones": "๐Ÿ“ต",
    "no_one_under_eighteen": "๐Ÿ”ž",
    "no_pedestrians": "๐Ÿšท",
    "no_smoking": "๐Ÿšญ",
    "non-potable_water": "๐Ÿšฑ",
    "nose": "๐Ÿ‘ƒ",
    "nose_dark_skin_tone": "๐Ÿ‘ƒ๐Ÿฟ",
    "nose_light_skin_tone": "๐Ÿ‘ƒ๐Ÿป",
    "nose_medium-dark_skin_tone": "๐Ÿ‘ƒ๐Ÿพ",
    "nose_medium-light_skin_tone": "๐Ÿ‘ƒ๐Ÿผ",
    "nose_medium_skin_tone": "๐Ÿ‘ƒ๐Ÿฝ",
    "notebook": "๐Ÿ““",
    "notebook_with_decorative_cover": "๐Ÿ“”",
    "nut_and_bolt": "๐Ÿ”ฉ",
    "octopus": "๐Ÿ™",
    "oden": "๐Ÿข",
    "office_building": "๐Ÿข",
    "ogre": "๐Ÿ‘น",
    "oil_drum": "๐Ÿ›ข",
    "old_key": "๐Ÿ—",
    "old_man": "๐Ÿ‘ด",
    "old_man_dark_skin_tone": "๐Ÿ‘ด๐Ÿฟ",
    "old_man_light_skin_tone": "๐Ÿ‘ด๐Ÿป",
    "old_man_medium-dark_skin_tone": "๐Ÿ‘ด๐Ÿพ",
    "old_man_medium-light_skin_tone": "๐Ÿ‘ด๐Ÿผ",
    "old_man_medium_skin_tone": "๐Ÿ‘ด๐Ÿฝ",
    "old_woman": "๐Ÿ‘ต",
    "old_woman_dark_skin_tone": "๐Ÿ‘ต๐Ÿฟ",
    "old_woman_light_skin_tone": "๐Ÿ‘ต๐Ÿป",
    "old_woman_medium-dark_skin_tone": "๐Ÿ‘ต๐Ÿพ",
    "old_woman_medium-light_skin_tone": "๐Ÿ‘ต๐Ÿผ",
    "old_woman_medium_skin_tone": "๐Ÿ‘ต๐Ÿฝ",
    "older_adult": "๐Ÿง“",
    "older_adult_dark_skin_tone": "๐Ÿง“๐Ÿฟ",
    "older_adult_light_skin_tone": "๐Ÿง“๐Ÿป",
    "older_adult_medium-dark_skin_tone": "๐Ÿง“๐Ÿพ",
    "older_adult_medium-light_skin_tone": "๐Ÿง“๐Ÿผ",
    "older_adult_medium_skin_tone": "๐Ÿง“๐Ÿฝ",
    "om": "๐Ÿ•‰",
    "oncoming_automobile": "๐Ÿš˜",
    "oncoming_bus": "๐Ÿš",
    "oncoming_fist": "๐Ÿ‘Š",
    "oncoming_fist_dark_skin_tone": "๐Ÿ‘Š๐Ÿฟ",
    "oncoming_fist_light_skin_tone": "๐Ÿ‘Š๐Ÿป",
    "oncoming_fist_medium-dark_skin_tone": "๐Ÿ‘Š๐Ÿพ",
    "oncoming_fist_medium-light_skin_tone": "๐Ÿ‘Š๐Ÿผ",
    "oncoming_fist_medium_skin_tone": "๐Ÿ‘Š๐Ÿฝ",
    "oncoming_police_car": "๐Ÿš”",
    "oncoming_taxi": "๐Ÿš–",
    "one-piece_swimsuit": "๐Ÿฉฑ",
    "one-thirty": "๐Ÿ•œ",
    "one_oโ€™clock": "๐Ÿ•",
    "onion": "๐Ÿง…",
    "open_book": "๐Ÿ“–",
    "open_file_folder": "๐Ÿ“‚",
    "open_hands": "๐Ÿ‘",
    "open_hands_dark_skin_tone": "๐Ÿ‘๐Ÿฟ",
    "open_hands_light_skin_tone": "๐Ÿ‘๐Ÿป",
    "open_hands_medium-dark_skin_tone": "๐Ÿ‘๐Ÿพ",
    "open_hands_medium-light_skin_tone": "๐Ÿ‘๐Ÿผ",
    "open_hands_medium_skin_tone": "๐Ÿ‘๐Ÿฝ",
    "open_mailbox_with_lowered_flag": "๐Ÿ“ญ",
    "open_mailbox_with_raised_flag": "๐Ÿ“ฌ",
    "optical_disk": "๐Ÿ’ฟ",
    "orange_book": "๐Ÿ“™",
    "orange_circle": "๐ŸŸ ",
    "orange_heart": "๐Ÿงก",
    "orange_square": "๐ŸŸง",
    "orangutan": "๐Ÿฆง",
    "orthodox_cross": "โ˜ฆ",
    "otter": "๐Ÿฆฆ",
    "outbox_tray": "๐Ÿ“ค",
    "owl": "๐Ÿฆ‰",
    "ox": "๐Ÿ‚",
    "oyster": "๐Ÿฆช",
    "package": "๐Ÿ“ฆ",
    "page_facing_up": "๐Ÿ“„",
    "page_with_curl": "๐Ÿ“ƒ",
    "pager": "๐Ÿ“Ÿ",
    "paintbrush": "๐Ÿ–Œ",
    "palm_tree": "๐ŸŒด",
    "palms_up_together": "๐Ÿคฒ",
    "palms_up_together_dark_skin_tone": "๐Ÿคฒ๐Ÿฟ",
    "palms_up_together_light_skin_tone": "๐Ÿคฒ๐Ÿป",
    "palms_up_together_medium-dark_skin_tone": "๐Ÿคฒ๐Ÿพ",
    "palms_up_together_medium-light_skin_tone": "๐Ÿคฒ๐Ÿผ",
    "palms_up_together_medium_skin_tone": "๐Ÿคฒ๐Ÿฝ",
    "pancakes": "๐Ÿฅž",
    "panda_face": "๐Ÿผ",
    "paperclip": "๐Ÿ“Ž",
    "parrot": "๐Ÿฆœ",
    "part_alternation_mark": "ใ€ฝ",
    "party_popper": "๐ŸŽ‰",
    "partying_face": "๐Ÿฅณ",
    "passenger_ship": "๐Ÿ›ณ",
    "passport_control": "๐Ÿ›‚",
    "pause_button": "โธ",
    "paw_prints": "๐Ÿพ",
    "peace_symbol": "โ˜ฎ",
    "peach": "๐Ÿ‘",
    "peacock": "๐Ÿฆš",
    "peanuts": "๐Ÿฅœ",
    "pear": "๐Ÿ",
    "pen": "๐Ÿ–Š",
    "pencil": "๐Ÿ“",
    "penguin": "๐Ÿง",
    "pensive_face": "๐Ÿ˜”",
    "people_holding_hands": "๐Ÿง‘\u200d๐Ÿค\u200d๐Ÿง‘",
    "people_with_bunny_ears": "๐Ÿ‘ฏ",
    "people_wrestling": "๐Ÿคผ",
    "performing_arts": "๐ŸŽญ",
    "persevering_face": "๐Ÿ˜ฃ",
    "person_biking": "๐Ÿšด",
    "person_biking_dark_skin_tone": "๐Ÿšด๐Ÿฟ",
    "person_biking_light_skin_tone": "๐Ÿšด๐Ÿป",
    "person_biking_medium-dark_skin_tone": "๐Ÿšด๐Ÿพ",
    "person_biking_medium-light_skin_tone": "๐Ÿšด๐Ÿผ",
    "person_biking_medium_skin_tone": "๐Ÿšด๐Ÿฝ",
    "person_bouncing_ball": "โ›น",
    "person_bouncing_ball_dark_skin_tone": "โ›น๐Ÿฟ",
    "person_bouncing_ball_light_skin_tone": "โ›น๐Ÿป",
    "person_bouncing_ball_medium-dark_skin_tone": "โ›น๐Ÿพ",
    "person_bouncing_ball_medium-light_skin_tone": "โ›น๐Ÿผ",
    "person_bouncing_ball_medium_skin_tone": "โ›น๐Ÿฝ",
    "person_bowing": "๐Ÿ™‡",
    "person_bowing_dark_skin_tone": "๐Ÿ™‡๐Ÿฟ",
    "person_bowing_light_skin_tone": "๐Ÿ™‡๐Ÿป",
    "person_bowing_medium-dark_skin_tone": "๐Ÿ™‡๐Ÿพ",
    "person_bowing_medium-light_skin_tone": "๐Ÿ™‡๐Ÿผ",
    "person_bowing_medium_skin_tone": "๐Ÿ™‡๐Ÿฝ",
    "person_cartwheeling": "๐Ÿคธ",
    "person_cartwheeling_dark_skin_tone": "๐Ÿคธ๐Ÿฟ",
    "person_cartwheeling_light_skin_tone": "๐Ÿคธ๐Ÿป",
    "person_cartwheeling_medium-dark_skin_tone": "๐Ÿคธ๐Ÿพ",
    "person_cartwheeling_medium-light_skin_tone": "๐Ÿคธ๐Ÿผ",
    "person_cartwheeling_medium_skin_tone": "๐Ÿคธ๐Ÿฝ",
    "person_climbing": "๐Ÿง—",
    "person_climbing_dark_skin_tone": "๐Ÿง—๐Ÿฟ",
    "person_climbing_light_skin_tone": "๐Ÿง—๐Ÿป",
    "person_climbing_medium-dark_skin_tone": "๐Ÿง—๐Ÿพ",
    "person_climbing_medium-light_skin_tone": "๐Ÿง—๐Ÿผ",
    "person_climbing_medium_skin_tone": "๐Ÿง—๐Ÿฝ",
    "person_facepalming": "๐Ÿคฆ",
    "person_facepalming_dark_skin_tone": "๐Ÿคฆ๐Ÿฟ",
    "person_facepalming_light_skin_tone": "๐Ÿคฆ๐Ÿป",
    "person_facepalming_medium-dark_skin_tone": "๐Ÿคฆ๐Ÿพ",
    "person_facepalming_medium-light_skin_tone": "๐Ÿคฆ๐Ÿผ",
    "person_facepalming_medium_skin_tone": "๐Ÿคฆ๐Ÿฝ",
    "person_fencing": "๐Ÿคบ",
    "person_frowning": "๐Ÿ™",
    "person_frowning_dark_skin_tone": "๐Ÿ™๐Ÿฟ",
    "person_frowning_light_skin_tone": "๐Ÿ™๐Ÿป",
    "person_frowning_medium-dark_skin_tone": "๐Ÿ™๐Ÿพ",
    "person_frowning_medium-light_skin_tone": "๐Ÿ™๐Ÿผ",
    "person_frowning_medium_skin_tone": "๐Ÿ™๐Ÿฝ",
    "person_gesturing_no": "๐Ÿ™…",
    "person_gesturing_no_dark_skin_tone": "๐Ÿ™…๐Ÿฟ",
    "person_gesturing_no_light_skin_tone": "๐Ÿ™…๐Ÿป",
    "person_gesturing_no_medium-dark_skin_tone": "๐Ÿ™…๐Ÿพ",
    "person_gesturing_no_medium-light_skin_tone": "๐Ÿ™…๐Ÿผ",
    "person_gesturing_no_medium_skin_tone": "๐Ÿ™…๐Ÿฝ",
    "person_gesturing_ok": "๐Ÿ™†",
    "person_gesturing_ok_dark_skin_tone": "๐Ÿ™†๐Ÿฟ",
    "person_gesturing_ok_light_skin_tone": "๐Ÿ™†๐Ÿป",
    "person_gesturing_ok_medium-dark_skin_tone": "๐Ÿ™†๐Ÿพ",
    "person_gesturing_ok_medium-light_skin_tone": "๐Ÿ™†๐Ÿผ",
    "person_gesturing_ok_medium_skin_tone": "๐Ÿ™†๐Ÿฝ",
    "person_getting_haircut": "๐Ÿ’‡",
    "person_getting_haircut_dark_skin_tone": "๐Ÿ’‡๐Ÿฟ",
    "person_getting_haircut_light_skin_tone": "๐Ÿ’‡๐Ÿป",
    "person_getting_haircut_medium-dark_skin_tone": "๐Ÿ’‡๐Ÿพ",
    "person_getting_haircut_medium-light_skin_tone": "๐Ÿ’‡๐Ÿผ",
    "person_getting_haircut_medium_skin_tone": "๐Ÿ’‡๐Ÿฝ",
    "person_getting_massage": "๐Ÿ’†",
    "person_getting_massage_dark_skin_tone": "๐Ÿ’†๐Ÿฟ",
    "person_getting_massage_light_skin_tone": "๐Ÿ’†๐Ÿป",
    "person_getting_massage_medium-dark_skin_tone": "๐Ÿ’†๐Ÿพ",
    "person_getting_massage_medium-light_skin_tone": "๐Ÿ’†๐Ÿผ",
    "person_getting_massage_medium_skin_tone": "๐Ÿ’†๐Ÿฝ",
    "person_golfing": "๐ŸŒ",
    "person_golfing_dark_skin_tone": "๐ŸŒ๐Ÿฟ",
    "person_golfing_light_skin_tone": "๐ŸŒ๐Ÿป",
    "person_golfing_medium-dark_skin_tone": "๐ŸŒ๐Ÿพ",
    "person_golfing_medium-light_skin_tone": "๐ŸŒ๐Ÿผ",
    "person_golfing_medium_skin_tone": "๐ŸŒ๐Ÿฝ",
    "person_in_bed": "๐Ÿ›Œ",
    "person_in_bed_dark_skin_tone": "๐Ÿ›Œ๐Ÿฟ",
    "person_in_bed_light_skin_tone": "๐Ÿ›Œ๐Ÿป",
    "person_in_bed_medium-dark_skin_tone": "๐Ÿ›Œ๐Ÿพ",
    "person_in_bed_medium-light_skin_tone": "๐Ÿ›Œ๐Ÿผ",
    "person_in_bed_medium_skin_tone": "๐Ÿ›Œ๐Ÿฝ",
    "person_in_lotus_position": "๐Ÿง˜",
    "person_in_lotus_position_dark_skin_tone": "๐Ÿง˜๐Ÿฟ",
    "person_in_lotus_position_light_skin_tone": "๐Ÿง˜๐Ÿป",
    "person_in_lotus_position_medium-dark_skin_tone": "๐Ÿง˜๐Ÿพ",
    "person_in_lotus_position_medium-light_skin_tone": "๐Ÿง˜๐Ÿผ",
    "person_in_lotus_position_medium_skin_tone": "๐Ÿง˜๐Ÿฝ",
    "person_in_steamy_room": "๐Ÿง–",
    "person_in_steamy_room_dark_skin_tone": "๐Ÿง–๐Ÿฟ",
    "person_in_steamy_room_light_skin_tone": "๐Ÿง–๐Ÿป",
    "person_in_steamy_room_medium-dark_skin_tone": "๐Ÿง–๐Ÿพ",
    "person_in_steamy_room_medium-light_skin_tone": "๐Ÿง–๐Ÿผ",
    "person_in_steamy_room_medium_skin_tone": "๐Ÿง–๐Ÿฝ",
    "person_juggling": "๐Ÿคน",
    "person_juggling_dark_skin_tone": "๐Ÿคน๐Ÿฟ",
    "person_juggling_light_skin_tone": "๐Ÿคน๐Ÿป",
    "person_juggling_medium-dark_skin_tone": "๐Ÿคน๐Ÿพ",
    "person_juggling_medium-light_skin_tone": "๐Ÿคน๐Ÿผ",
    "person_juggling_medium_skin_tone": "๐Ÿคน๐Ÿฝ",
    "person_kneeling": "๐ŸงŽ",
    "person_lifting_weights": "๐Ÿ‹",
    "person_lifting_weights_dark_skin_tone": "๐Ÿ‹๐Ÿฟ",
    "person_lifting_weights_light_skin_tone": "๐Ÿ‹๐Ÿป",
    "person_lifting_weights_medium-dark_skin_tone": "๐Ÿ‹๐Ÿพ",
    "person_lifting_weights_medium-light_skin_tone": "๐Ÿ‹๐Ÿผ",
    "person_lifting_weights_medium_skin_tone": "๐Ÿ‹๐Ÿฝ",
    "person_mountain_biking": "๐Ÿšต",
    "person_mountain_biking_dark_skin_tone": "๐Ÿšต๐Ÿฟ",
    "person_mountain_biking_light_skin_tone": "๐Ÿšต๐Ÿป",
    "person_mountain_biking_medium-dark_skin_tone": "๐Ÿšต๐Ÿพ",
    "person_mountain_biking_medium-light_skin_tone": "๐Ÿšต๐Ÿผ",
    "person_mountain_biking_medium_skin_tone": "๐Ÿšต๐Ÿฝ",
    "person_playing_handball": "๐Ÿคพ",
    "person_playing_handball_dark_skin_tone": "๐Ÿคพ๐Ÿฟ",
    "person_playing_handball_light_skin_tone": "๐Ÿคพ๐Ÿป",
    "person_playing_handball_medium-dark_skin_tone": "๐Ÿคพ๐Ÿพ",
    "person_playing_handball_medium-light_skin_tone": "๐Ÿคพ๐Ÿผ",
    "person_playing_handball_medium_skin_tone": "๐Ÿคพ๐Ÿฝ",
    "person_playing_water_polo": "๐Ÿคฝ",
    "person_playing_water_polo_dark_skin_tone": "๐Ÿคฝ๐Ÿฟ",
    "person_playing_water_polo_light_skin_tone": "๐Ÿคฝ๐Ÿป",
    "person_playing_water_polo_medium-dark_skin_tone": "๐Ÿคฝ๐Ÿพ",
    "person_playing_water_polo_medium-light_skin_tone": "๐Ÿคฝ๐Ÿผ",
    "person_playing_water_polo_medium_skin_tone": "๐Ÿคฝ๐Ÿฝ",
    "person_pouting": "๐Ÿ™Ž",
    "person_pouting_dark_skin_tone": "๐Ÿ™Ž๐Ÿฟ",
    "person_pouting_light_skin_tone": "๐Ÿ™Ž๐Ÿป",
    "person_pouting_medium-dark_skin_tone": "๐Ÿ™Ž๐Ÿพ",
    "person_pouting_medium-light_skin_tone": "๐Ÿ™Ž๐Ÿผ",
    "person_pouting_medium_skin_tone": "๐Ÿ™Ž๐Ÿฝ",
    "person_raising_hand": "๐Ÿ™‹",
    "person_raising_hand_dark_skin_tone": "๐Ÿ™‹๐Ÿฟ",
    "person_raising_hand_light_skin_tone": "๐Ÿ™‹๐Ÿป",
    "person_raising_hand_medium-dark_skin_tone": "๐Ÿ™‹๐Ÿพ",
    "person_raising_hand_medium-light_skin_tone": "๐Ÿ™‹๐Ÿผ",
    "person_raising_hand_medium_skin_tone": "๐Ÿ™‹๐Ÿฝ",
    "person_rowing_boat": "๐Ÿšฃ",
    "person_rowing_boat_dark_skin_tone": "๐Ÿšฃ๐Ÿฟ",
    "person_rowing_boat_light_skin_tone": "๐Ÿšฃ๐Ÿป",
    "person_rowing_boat_medium-dark_skin_tone": "๐Ÿšฃ๐Ÿพ",
    "person_rowing_boat_medium-light_skin_tone": "๐Ÿšฃ๐Ÿผ",
    "person_rowing_boat_medium_skin_tone": "๐Ÿšฃ๐Ÿฝ",
    "person_running": "๐Ÿƒ",
    "person_running_dark_skin_tone": "๐Ÿƒ๐Ÿฟ",
    "person_running_light_skin_tone": "๐Ÿƒ๐Ÿป",
    "person_running_medium-dark_skin_tone": "๐Ÿƒ๐Ÿพ",
    "person_running_medium-light_skin_tone": "๐Ÿƒ๐Ÿผ",
    "person_running_medium_skin_tone": "๐Ÿƒ๐Ÿฝ",
    "person_shrugging": "๐Ÿคท",
    "person_shrugging_dark_skin_tone": "๐Ÿคท๐Ÿฟ",
    "person_shrugging_light_skin_tone": "๐Ÿคท๐Ÿป",
    "person_shrugging_medium-dark_skin_tone": "๐Ÿคท๐Ÿพ",
    "person_shrugging_medium-light_skin_tone": "๐Ÿคท๐Ÿผ",
    "person_shrugging_medium_skin_tone": "๐Ÿคท๐Ÿฝ",
    "person_standing": "๐Ÿง",
    "person_surfing": "๐Ÿ„",
    "person_surfing_dark_skin_tone": "๐Ÿ„๐Ÿฟ",
    "person_surfing_light_skin_tone": "๐Ÿ„๐Ÿป",
    "person_surfing_medium-dark_skin_tone": "๐Ÿ„๐Ÿพ",
    "person_surfing_medium-light_skin_tone": "๐Ÿ„๐Ÿผ",
    "person_surfing_medium_skin_tone": "๐Ÿ„๐Ÿฝ",
    "person_swimming": "๐ŸŠ",
    "person_swimming_dark_skin_tone": "๐ŸŠ๐Ÿฟ",
    "person_swimming_light_skin_tone": "๐ŸŠ๐Ÿป",
    "person_swimming_medium-dark_skin_tone": "๐ŸŠ๐Ÿพ",
    "person_swimming_medium-light_skin_tone": "๐ŸŠ๐Ÿผ",
    "person_swimming_medium_skin_tone": "๐ŸŠ๐Ÿฝ",
    "person_taking_bath": "๐Ÿ›€",
    "person_taking_bath_dark_skin_tone": "๐Ÿ›€๐Ÿฟ",
    "person_taking_bath_light_skin_tone": "๐Ÿ›€๐Ÿป",
    "person_taking_bath_medium-dark_skin_tone": "๐Ÿ›€๐Ÿพ",
    "person_taking_bath_medium-light_skin_tone": "๐Ÿ›€๐Ÿผ",
    "person_taking_bath_medium_skin_tone": "๐Ÿ›€๐Ÿฝ",
    "person_tipping_hand": "๐Ÿ’",
    "person_tipping_hand_dark_skin_tone": "๐Ÿ’๐Ÿฟ",
    "person_tipping_hand_light_skin_tone": "๐Ÿ’๐Ÿป",
    "person_tipping_hand_medium-dark_skin_tone": "๐Ÿ’๐Ÿพ",
    "person_tipping_hand_medium-light_skin_tone": "๐Ÿ’๐Ÿผ",
    "person_tipping_hand_medium_skin_tone": "๐Ÿ’๐Ÿฝ",
    "person_walking": "๐Ÿšถ",
    "person_walking_dark_skin_tone": "๐Ÿšถ๐Ÿฟ",
    "person_walking_light_skin_tone": "๐Ÿšถ๐Ÿป",
    "person_walking_medium-dark_skin_tone": "๐Ÿšถ๐Ÿพ",
    "person_walking_medium-light_skin_tone": "๐Ÿšถ๐Ÿผ",
    "person_walking_medium_skin_tone": "๐Ÿšถ๐Ÿฝ",
    "person_wearing_turban": "๐Ÿ‘ณ",
    "person_wearing_turban_dark_skin_tone": "๐Ÿ‘ณ๐Ÿฟ",
    "person_wearing_turban_light_skin_tone": "๐Ÿ‘ณ๐Ÿป",
    "person_wearing_turban_medium-dark_skin_tone": "๐Ÿ‘ณ๐Ÿพ",
    "person_wearing_turban_medium-light_skin_tone": "๐Ÿ‘ณ๐Ÿผ",
    "person_wearing_turban_medium_skin_tone": "๐Ÿ‘ณ๐Ÿฝ",
    "petri_dish": "๐Ÿงซ",
    "pick": "โ›",
    "pie": "๐Ÿฅง",
    "pig": "๐Ÿท",
    "pig_face": "๐Ÿท",
    "pig_nose": "๐Ÿฝ",
    "pile_of_poo": "๐Ÿ’ฉ",
    "pill": "๐Ÿ’Š",
    "pinching_hand": "๐Ÿค",
    "pine_decoration": "๐ŸŽ",
    "pineapple": "๐Ÿ",
    "ping_pong": "๐Ÿ“",
    "pirate_flag": "๐Ÿด\u200dโ˜ ๏ธ",
    "pistol": "๐Ÿ”ซ",
    "pizza": "๐Ÿ•",
    "place_of_worship": "๐Ÿ›",
    "play_button": "โ–ถ",
    "play_or_pause_button": "โฏ",
    "pleading_face": "๐Ÿฅบ",
    "police_car": "๐Ÿš“",
    "police_car_light": "๐Ÿšจ",
    "police_officer": "๐Ÿ‘ฎ",
    "police_officer_dark_skin_tone": "๐Ÿ‘ฎ๐Ÿฟ",
    "police_officer_light_skin_tone": "๐Ÿ‘ฎ๐Ÿป",
    "police_officer_medium-dark_skin_tone": "๐Ÿ‘ฎ๐Ÿพ",
    "police_officer_medium-light_skin_tone": "๐Ÿ‘ฎ๐Ÿผ",
    "police_officer_medium_skin_tone": "๐Ÿ‘ฎ๐Ÿฝ",
    "poodle": "๐Ÿฉ",
    "pool_8_ball": "๐ŸŽฑ",
    "popcorn": "๐Ÿฟ",
    "post_office": "๐Ÿฃ",
    "postal_horn": "๐Ÿ“ฏ",
    "postbox": "๐Ÿ“ฎ",
    "pot_of_food": "๐Ÿฒ",
    "potable_water": "๐Ÿšฐ",
    "potato": "๐Ÿฅ”",
    "poultry_leg": "๐Ÿ—",
    "pound_banknote": "๐Ÿ’ท",
    "pouting_cat_face": "๐Ÿ˜พ",
    "pouting_face": "๐Ÿ˜ก",
    "prayer_beads": "๐Ÿ“ฟ",
    "pregnant_woman": "๐Ÿคฐ",
    "pregnant_woman_dark_skin_tone": "๐Ÿคฐ๐Ÿฟ",
    "pregnant_woman_light_skin_tone": "๐Ÿคฐ๐Ÿป",
    "pregnant_woman_medium-dark_skin_tone": "๐Ÿคฐ๐Ÿพ",
    "pregnant_woman_medium-light_skin_tone": "๐Ÿคฐ๐Ÿผ",
    "pregnant_woman_medium_skin_tone": "๐Ÿคฐ๐Ÿฝ",
    "pretzel": "๐Ÿฅจ",
    "probing_cane": "๐Ÿฆฏ",
    "prince": "๐Ÿคด",
    "prince_dark_skin_tone": "๐Ÿคด๐Ÿฟ",
    "prince_light_skin_tone": "๐Ÿคด๐Ÿป",
    "prince_medium-dark_skin_tone": "๐Ÿคด๐Ÿพ",
    "prince_medium-light_skin_tone": "๐Ÿคด๐Ÿผ",
    "prince_medium_skin_tone": "๐Ÿคด๐Ÿฝ",
    "princess": "๐Ÿ‘ธ",
    "princess_dark_skin_tone": "๐Ÿ‘ธ๐Ÿฟ",
    "princess_light_skin_tone": "๐Ÿ‘ธ๐Ÿป",
    "princess_medium-dark_skin_tone": "๐Ÿ‘ธ๐Ÿพ",
    "princess_medium-light_skin_tone": "๐Ÿ‘ธ๐Ÿผ",
    "princess_medium_skin_tone": "๐Ÿ‘ธ๐Ÿฝ",
    "printer": "๐Ÿ–จ",
    "prohibited": "๐Ÿšซ",
    "purple_circle": "๐ŸŸฃ",
    "purple_heart": "๐Ÿ’œ",
    "purple_square": "๐ŸŸช",
    "purse": "๐Ÿ‘›",
    "pushpin": "๐Ÿ“Œ",
    "question_mark": "โ“",
    "rabbit": "๐Ÿฐ",
    "rabbit_face": "๐Ÿฐ",
    "raccoon": "๐Ÿฆ",
    "racing_car": "๐ŸŽ",
    "radio": "๐Ÿ“ป",
    "radio_button": "๐Ÿ”˜",
    "radioactive": "โ˜ข",
    "railway_car": "๐Ÿšƒ",
    "railway_track": "๐Ÿ›ค",
    "rainbow": "๐ŸŒˆ",
    "rainbow_flag": "๐Ÿณ๏ธ\u200d๐ŸŒˆ",
    "raised_back_of_hand": "๐Ÿคš",
    "raised_back_of_hand_dark_skin_tone": "๐Ÿคš๐Ÿฟ",
    "raised_back_of_hand_light_skin_tone": "๐Ÿคš๐Ÿป",
    "raised_back_of_hand_medium-dark_skin_tone": "๐Ÿคš๐Ÿพ",
    "raised_back_of_hand_medium-light_skin_tone": "๐Ÿคš๐Ÿผ",
    "raised_back_of_hand_medium_skin_tone": "๐Ÿคš๐Ÿฝ",
    "raised_fist": "โœŠ",
    "raised_fist_dark_skin_tone": "โœŠ๐Ÿฟ",
    "raised_fist_light_skin_tone": "โœŠ๐Ÿป",
    "raised_fist_medium-dark_skin_tone": "โœŠ๐Ÿพ",
    "raised_fist_medium-light_skin_tone": "โœŠ๐Ÿผ",
    "raised_fist_medium_skin_tone": "โœŠ๐Ÿฝ",
    "raised_hand": "โœ‹",
    "raised_hand_dark_skin_tone": "โœ‹๐Ÿฟ",
    "raised_hand_light_skin_tone": "โœ‹๐Ÿป",
    "raised_hand_medium-dark_skin_tone": "โœ‹๐Ÿพ",
    "raised_hand_medium-light_skin_tone": "โœ‹๐Ÿผ",
    "raised_hand_medium_skin_tone": "โœ‹๐Ÿฝ",
    "raising_hands": "๐Ÿ™Œ",
    "raising_hands_dark_skin_tone": "๐Ÿ™Œ๐Ÿฟ",
    "raising_hands_light_skin_tone": "๐Ÿ™Œ๐Ÿป",
    "raising_hands_medium-dark_skin_tone": "๐Ÿ™Œ๐Ÿพ",
    "raising_hands_medium-light_skin_tone": "๐Ÿ™Œ๐Ÿผ",
    "raising_hands_medium_skin_tone": "๐Ÿ™Œ๐Ÿฝ",
    "ram": "๐Ÿ",
    "rat": "๐Ÿ€",
    "razor": "๐Ÿช’",
    "ringed_planet": "๐Ÿช",
    "receipt": "๐Ÿงพ",
    "record_button": "โบ",
    "recycling_symbol": "โ™ป",
    "red_apple": "๐ŸŽ",
    "red_circle": "๐Ÿ”ด",
    "red_envelope": "๐Ÿงง",
    "red_hair": "๐Ÿฆฐ",
    "red-haired_man": "๐Ÿ‘จ\u200d๐Ÿฆฐ",
    "red-haired_woman": "๐Ÿ‘ฉ\u200d๐Ÿฆฐ",
    "red_heart": "โค",
    "red_paper_lantern": "๐Ÿฎ",
    "red_square": "๐ŸŸฅ",
    "red_triangle_pointed_down": "๐Ÿ”ป",
    "red_triangle_pointed_up": "๐Ÿ”บ",
    "registered": "ยฎ",
    "relieved_face": "๐Ÿ˜Œ",
    "reminder_ribbon": "๐ŸŽ—",
    "repeat_button": "๐Ÿ”",
    "repeat_single_button": "๐Ÿ”‚",
    "rescue_workerโ€™s_helmet": "โ›‘",
    "restroom": "๐Ÿšป",
    "reverse_button": "โ—€",
    "revolving_hearts": "๐Ÿ’ž",
    "rhinoceros": "๐Ÿฆ",
    "ribbon": "๐ŸŽ€",
    "rice_ball": "๐Ÿ™",
    "rice_cracker": "๐Ÿ˜",
    "right-facing_fist": "๐Ÿคœ",
    "right-facing_fist_dark_skin_tone": "๐Ÿคœ๐Ÿฟ",
    "right-facing_fist_light_skin_tone": "๐Ÿคœ๐Ÿป",
    "right-facing_fist_medium-dark_skin_tone": "๐Ÿคœ๐Ÿพ",
    "right-facing_fist_medium-light_skin_tone": "๐Ÿคœ๐Ÿผ",
    "right-facing_fist_medium_skin_tone": "๐Ÿคœ๐Ÿฝ",
    "right_anger_bubble": "๐Ÿ—ฏ",
    "right_arrow": "โžก",
    "right_arrow_curving_down": "โคต",
    "right_arrow_curving_left": "โ†ฉ",
    "right_arrow_curving_up": "โคด",
    "ring": "๐Ÿ’",
    "roasted_sweet_potato": "๐Ÿ ",
    "robot_face": "๐Ÿค–",
    "rocket": "๐Ÿš€",
    "roll_of_paper": "๐Ÿงป",
    "rolled-up_newspaper": "๐Ÿ—ž",
    "roller_coaster": "๐ŸŽข",
    "rolling_on_the_floor_laughing": "๐Ÿคฃ",
    "rooster": "๐Ÿ“",
    "rose": "๐ŸŒน",
    "rosette": "๐Ÿต",
    "round_pushpin": "๐Ÿ“",
    "rugby_football": "๐Ÿ‰",
    "running_shirt": "๐ŸŽฝ",
    "running_shoe": "๐Ÿ‘Ÿ",
    "sad_but_relieved_face": "๐Ÿ˜ฅ",
    "safety_pin": "๐Ÿงท",
    "safety_vest": "๐Ÿฆบ",
    "salt": "๐Ÿง‚",
    "sailboat": "โ›ต",
    "sake": "๐Ÿถ",
    "sandwich": "๐Ÿฅช",
    "sari": "๐Ÿฅป",
    "satellite": "๐Ÿ“ก",
    "satellite_antenna": "๐Ÿ“ก",
    "sauropod": "๐Ÿฆ•",
    "saxophone": "๐ŸŽท",
    "scarf": "๐Ÿงฃ",
    "school": "๐Ÿซ",
    "school_backpack": "๐ŸŽ’",
    "scissors": "โœ‚",
    "scorpion": "๐Ÿฆ‚",
    "scroll": "๐Ÿ“œ",
    "seat": "๐Ÿ’บ",
    "see-no-evil_monkey": "๐Ÿ™ˆ",
    "seedling": "๐ŸŒฑ",
    "selfie": "๐Ÿคณ",
    "selfie_dark_skin_tone": "๐Ÿคณ๐Ÿฟ",
    "selfie_light_skin_tone": "๐Ÿคณ๐Ÿป",
    "selfie_medium-dark_skin_tone": "๐Ÿคณ๐Ÿพ",
    "selfie_medium-light_skin_tone": "๐Ÿคณ๐Ÿผ",
    "selfie_medium_skin_tone": "๐Ÿคณ๐Ÿฝ",
    "service_dog": "๐Ÿ•\u200d๐Ÿฆบ",
    "seven-thirty": "๐Ÿ•ข",
    "seven_oโ€™clock": "๐Ÿ•–",
    "shallow_pan_of_food": "๐Ÿฅ˜",
    "shamrock": "โ˜˜",
    "shark": "๐Ÿฆˆ",
    "shaved_ice": "๐Ÿง",
    "sheaf_of_rice": "๐ŸŒพ",
    "shield": "๐Ÿ›ก",
    "shinto_shrine": "โ›ฉ",
    "ship": "๐Ÿšข",
    "shooting_star": "๐ŸŒ ",
    "shopping_bags": "๐Ÿ›",
    "shopping_cart": "๐Ÿ›’",
    "shortcake": "๐Ÿฐ",
    "shorts": "๐Ÿฉณ",
    "shower": "๐Ÿšฟ",
    "shrimp": "๐Ÿฆ",
    "shuffle_tracks_button": "๐Ÿ”€",
    "shushing_face": "๐Ÿคซ",
    "sign_of_the_horns": "๐Ÿค˜",
    "sign_of_the_horns_dark_skin_tone": "๐Ÿค˜๐Ÿฟ",
    "sign_of_the_horns_light_skin_tone": "๐Ÿค˜๐Ÿป",
    "sign_of_the_horns_medium-dark_skin_tone": "๐Ÿค˜๐Ÿพ",
    "sign_of_the_horns_medium-light_skin_tone": "๐Ÿค˜๐Ÿผ",
    "sign_of_the_horns_medium_skin_tone": "๐Ÿค˜๐Ÿฝ",
    "six-thirty": "๐Ÿ•ก",
    "six_oโ€™clock": "๐Ÿ••",
    "skateboard": "๐Ÿ›น",
    "skier": "โ›ท",
    "skis": "๐ŸŽฟ",
    "skull": "๐Ÿ’€",
    "skull_and_crossbones": "โ˜ ",
    "skunk": "๐Ÿฆจ",
    "sled": "๐Ÿ›ท",
    "sleeping_face": "๐Ÿ˜ด",
    "sleepy_face": "๐Ÿ˜ช",
    "slightly_frowning_face": "๐Ÿ™",
    "slightly_smiling_face": "๐Ÿ™‚",
    "slot_machine": "๐ŸŽฐ",
    "sloth": "๐Ÿฆฅ",
    "small_airplane": "๐Ÿ›ฉ",
    "small_blue_diamond": "๐Ÿ”น",
    "small_orange_diamond": "๐Ÿ”ธ",
    "smiling_cat_face_with_heart-eyes": "๐Ÿ˜ป",
    "smiling_face": "โ˜บ",
    "smiling_face_with_halo": "๐Ÿ˜‡",
    "smiling_face_with_3_hearts": "๐Ÿฅฐ",
    "smiling_face_with_heart-eyes": "๐Ÿ˜",
    "smiling_face_with_horns": "๐Ÿ˜ˆ",
    "smiling_face_with_smiling_eyes": "๐Ÿ˜Š",
    "smiling_face_with_sunglasses": "๐Ÿ˜Ž",
    "smirking_face": "๐Ÿ˜",
    "snail": "๐ŸŒ",
    "snake": "๐Ÿ",
    "sneezing_face": "๐Ÿคง",
    "snow-capped_mountain": "๐Ÿ”",
    "snowboarder": "๐Ÿ‚",
    "snowboarder_dark_skin_tone": "๐Ÿ‚๐Ÿฟ",
    "snowboarder_light_skin_tone": "๐Ÿ‚๐Ÿป",
    "snowboarder_medium-dark_skin_tone": "๐Ÿ‚๐Ÿพ",
    "snowboarder_medium-light_skin_tone": "๐Ÿ‚๐Ÿผ",
    "snowboarder_medium_skin_tone": "๐Ÿ‚๐Ÿฝ",
    "snowflake": "โ„",
    "snowman": "โ˜ƒ",
    "snowman_without_snow": "โ›„",
    "soap": "๐Ÿงผ",
    "soccer_ball": "โšฝ",
    "socks": "๐Ÿงฆ",
    "softball": "๐ŸฅŽ",
    "soft_ice_cream": "๐Ÿฆ",
    "spade_suit": "โ™ ",
    "spaghetti": "๐Ÿ",
    "sparkle": "โ‡",
    "sparkler": "๐ŸŽ‡",
    "sparkles": "โœจ",
    "sparkling_heart": "๐Ÿ’–",
    "speak-no-evil_monkey": "๐Ÿ™Š",
    "speaker_high_volume": "๐Ÿ”Š",
    "speaker_low_volume": "๐Ÿ”ˆ",
    "speaker_medium_volume": "๐Ÿ”‰",
    "speaking_head": "๐Ÿ—ฃ",
    "speech_balloon": "๐Ÿ’ฌ",
    "speedboat": "๐Ÿšค",
    "spider": "๐Ÿ•ท",
    "spider_web": "๐Ÿ•ธ",
    "spiral_calendar": "๐Ÿ—“",
    "spiral_notepad": "๐Ÿ—’",
    "spiral_shell": "๐Ÿš",
    "spoon": "๐Ÿฅ„",
    "sponge": "๐Ÿงฝ",
    "sport_utility_vehicle": "๐Ÿš™",
    "sports_medal": "๐Ÿ…",
    "spouting_whale": "๐Ÿณ",
    "squid": "๐Ÿฆ‘",
    "squinting_face_with_tongue": "๐Ÿ˜",
    "stadium": "๐ŸŸ",
    "star-struck": "๐Ÿคฉ",
    "star_and_crescent": "โ˜ช",
    "star_of_david": "โœก",
    "station": "๐Ÿš‰",
    "steaming_bowl": "๐Ÿœ",
    "stethoscope": "๐Ÿฉบ",
    "stop_button": "โน",
    "stop_sign": "๐Ÿ›‘",
    "stopwatch": "โฑ",
    "straight_ruler": "๐Ÿ“",
    "strawberry": "๐Ÿ“",
    "studio_microphone": "๐ŸŽ™",
    "stuffed_flatbread": "๐Ÿฅ™",
    "sun": "โ˜€",
    "sun_behind_cloud": "โ›…",
    "sun_behind_large_cloud": "๐ŸŒฅ",
    "sun_behind_rain_cloud": "๐ŸŒฆ",
    "sun_behind_small_cloud": "๐ŸŒค",
    "sun_with_face": "๐ŸŒž",
    "sunflower": "๐ŸŒป",
    "sunglasses": "๐Ÿ˜Ž",
    "sunrise": "๐ŸŒ…",
    "sunrise_over_mountains": "๐ŸŒ„",
    "sunset": "๐ŸŒ‡",
    "superhero": "๐Ÿฆธ",
    "supervillain": "๐Ÿฆน",
    "sushi": "๐Ÿฃ",
    "suspension_railway": "๐ŸšŸ",
    "swan": "๐Ÿฆข",
    "sweat_droplets": "๐Ÿ’ฆ",
    "synagogue": "๐Ÿ•",
    "syringe": "๐Ÿ’‰",
    "t-shirt": "๐Ÿ‘•",
    "taco": "๐ŸŒฎ",
    "takeout_box": "๐Ÿฅก",
    "tanabata_tree": "๐ŸŽ‹",
    "tangerine": "๐ŸŠ",
    "taxi": "๐Ÿš•",
    "teacup_without_handle": "๐Ÿต",
    "tear-off_calendar": "๐Ÿ“†",
    "teddy_bear": "๐Ÿงธ",
    "telephone": "โ˜Ž",
    "telephone_receiver": "๐Ÿ“ž",
    "telescope": "๐Ÿ”ญ",
    "television": "๐Ÿ“บ",
    "ten-thirty": "๐Ÿ•ฅ",
    "ten_oโ€™clock": "๐Ÿ•™",
    "tennis": "๐ŸŽพ",
    "tent": "โ›บ",
    "test_tube": "๐Ÿงช",
    "thermometer": "๐ŸŒก",
    "thinking_face": "๐Ÿค”",
    "thought_balloon": "๐Ÿ’ญ",
    "thread": "๐Ÿงต",
    "three-thirty": "๐Ÿ•ž",
    "three_oโ€™clock": "๐Ÿ•’",
    "thumbs_down": "๐Ÿ‘Ž",
    "thumbs_down_dark_skin_tone": "๐Ÿ‘Ž๐Ÿฟ",
    "thumbs_down_light_skin_tone": "๐Ÿ‘Ž๐Ÿป",
    "thumbs_down_medium-dark_skin_tone": "๐Ÿ‘Ž๐Ÿพ",
    "thumbs_down_medium-light_skin_tone": "๐Ÿ‘Ž๐Ÿผ",
    "thumbs_down_medium_skin_tone": "๐Ÿ‘Ž๐Ÿฝ",
    "thumbs_up": "๐Ÿ‘",
    "thumbs_up_dark_skin_tone": "๐Ÿ‘๐Ÿฟ",
    "thumbs_up_light_skin_tone": "๐Ÿ‘๐Ÿป",
    "thumbs_up_medium-dark_skin_tone": "๐Ÿ‘๐Ÿพ",
    "thumbs_up_medium-light_skin_tone": "๐Ÿ‘๐Ÿผ",
    "thumbs_up_medium_skin_tone": "๐Ÿ‘๐Ÿฝ",
    "ticket": "๐ŸŽซ",
    "tiger": "๐Ÿฏ",
    "tiger_face": "๐Ÿฏ",
    "timer_clock": "โฒ",
    "tired_face": "๐Ÿ˜ซ",
    "toolbox": "๐Ÿงฐ",
    "toilet": "๐Ÿšฝ",
    "tomato": "๐Ÿ…",
    "tongue": "๐Ÿ‘…",
    "tooth": "๐Ÿฆท",
    "top_hat": "๐ŸŽฉ",
    "tornado": "๐ŸŒช",
    "trackball": "๐Ÿ–ฒ",
    "tractor": "๐Ÿšœ",
    "trade_mark": "โ„ข",
    "train": "๐Ÿš‹",
    "tram": "๐ŸšŠ",
    "tram_car": "๐Ÿš‹",
    "triangular_flag": "๐Ÿšฉ",
    "triangular_ruler": "๐Ÿ“",
    "trident_emblem": "๐Ÿ”ฑ",
    "trolleybus": "๐ŸšŽ",
    "trophy": "๐Ÿ†",
    "tropical_drink": "๐Ÿน",
    "tropical_fish": "๐Ÿ ",
    "trumpet": "๐ŸŽบ",
    "tulip": "๐ŸŒท",
    "tumbler_glass": "๐Ÿฅƒ",
    "turtle": "๐Ÿข",
    "twelve-thirty": "๐Ÿ•ง",
    "twelve_oโ€™clock": "๐Ÿ•›",
    "two-hump_camel": "๐Ÿซ",
    "two-thirty": "๐Ÿ•",
    "two_hearts": "๐Ÿ’•",
    "two_men_holding_hands": "๐Ÿ‘ฌ",
    "two_oโ€™clock": "๐Ÿ•‘",
    "two_women_holding_hands": "๐Ÿ‘ญ",
    "umbrella": "โ˜‚",
    "umbrella_on_ground": "โ›ฑ",
    "umbrella_with_rain_drops": "โ˜”",
    "unamused_face": "๐Ÿ˜’",
    "unicorn_face": "๐Ÿฆ„",
    "unlocked": "๐Ÿ”“",
    "up-down_arrow": "โ†•",
    "up-left_arrow": "โ†–",
    "up-right_arrow": "โ†—",
    "up_arrow": "โฌ†",
    "upside-down_face": "๐Ÿ™ƒ",
    "upwards_button": "๐Ÿ”ผ",
    "vampire": "๐Ÿง›",
    "vampire_dark_skin_tone": "๐Ÿง›๐Ÿฟ",
    "vampire_light_skin_tone": "๐Ÿง›๐Ÿป",
    "vampire_medium-dark_skin_tone": "๐Ÿง›๐Ÿพ",
    "vampire_medium-light_skin_tone": "๐Ÿง›๐Ÿผ",
    "vampire_medium_skin_tone": "๐Ÿง›๐Ÿฝ",
    "vertical_traffic_light": "๐Ÿšฆ",
    "vibration_mode": "๐Ÿ“ณ",
    "victory_hand": "โœŒ",
    "victory_hand_dark_skin_tone": "โœŒ๐Ÿฟ",
    "victory_hand_light_skin_tone": "โœŒ๐Ÿป",
    "victory_hand_medium-dark_skin_tone": "โœŒ๐Ÿพ",
    "victory_hand_medium-light_skin_tone": "โœŒ๐Ÿผ",
    "victory_hand_medium_skin_tone": "โœŒ๐Ÿฝ",
    "video_camera": "๐Ÿ“น",
    "video_game": "๐ŸŽฎ",
    "videocassette": "๐Ÿ“ผ",
    "violin": "๐ŸŽป",
    "volcano": "๐ŸŒ‹",
    "volleyball": "๐Ÿ",
    "vulcan_salute": "๐Ÿ––",
    "vulcan_salute_dark_skin_tone": "๐Ÿ––๐Ÿฟ",
    "vulcan_salute_light_skin_tone": "๐Ÿ––๐Ÿป",
    "vulcan_salute_medium-dark_skin_tone": "๐Ÿ––๐Ÿพ",
    "vulcan_salute_medium-light_skin_tone": "๐Ÿ––๐Ÿผ",
    "vulcan_salute_medium_skin_tone": "๐Ÿ––๐Ÿฝ",
    "waffle": "๐Ÿง‡",
    "waning_crescent_moon": "๐ŸŒ˜",
    "waning_gibbous_moon": "๐ŸŒ–",
    "warning": "โš ",
    "wastebasket": "๐Ÿ—‘",
    "watch": "โŒš",
    "water_buffalo": "๐Ÿƒ",
    "water_closet": "๐Ÿšพ",
    "water_wave": "๐ŸŒŠ",
    "watermelon": "๐Ÿ‰",
    "waving_hand": "๐Ÿ‘‹",
    "waving_hand_dark_skin_tone": "๐Ÿ‘‹๐Ÿฟ",
    "waving_hand_light_skin_tone": "๐Ÿ‘‹๐Ÿป",
    "waving_hand_medium-dark_skin_tone": "๐Ÿ‘‹๐Ÿพ",
    "waving_hand_medium-light_skin_tone": "๐Ÿ‘‹๐Ÿผ",
    "waving_hand_medium_skin_tone": "๐Ÿ‘‹๐Ÿฝ",
    "wavy_dash": "ใ€ฐ",
    "waxing_crescent_moon": "๐ŸŒ’",
    "waxing_gibbous_moon": "๐ŸŒ”",
    "weary_cat_face": "๐Ÿ™€",
    "weary_face": "๐Ÿ˜ฉ",
    "wedding": "๐Ÿ’’",
    "whale": "๐Ÿณ",
    "wheel_of_dharma": "โ˜ธ",
    "wheelchair_symbol": "โ™ฟ",
    "white_circle": "โšช",
    "white_exclamation_mark": "โ•",
    "white_flag": "๐Ÿณ",
    "white_flower": "๐Ÿ’ฎ",
    "white_hair": "๐Ÿฆณ",
    "white-haired_man": "๐Ÿ‘จ\u200d๐Ÿฆณ",
    "white-haired_woman": "๐Ÿ‘ฉ\u200d๐Ÿฆณ",
    "white_heart": "๐Ÿค",
    "white_heavy_check_mark": "โœ…",
    "white_large_square": "โฌœ",
    "white_medium-small_square": "โ—ฝ",
    "white_medium_square": "โ—ป",
    "white_medium_star": "โญ",
    "white_question_mark": "โ”",
    "white_small_square": "โ–ซ",
    "white_square_button": "๐Ÿ”ณ",
    "wilted_flower": "๐Ÿฅ€",
    "wind_chime": "๐ŸŽ",
    "wind_face": "๐ŸŒฌ",
    "wine_glass": "๐Ÿท",
    "winking_face": "๐Ÿ˜‰",
    "winking_face_with_tongue": "๐Ÿ˜œ",
    "wolf_face": "๐Ÿบ",
    "woman": "๐Ÿ‘ฉ",
    "woman_artist": "๐Ÿ‘ฉ\u200d๐ŸŽจ",
    "woman_artist_dark_skin_tone": "๐Ÿ‘ฉ๐Ÿฟ\u200d๐ŸŽจ",
    "woman_artist_light_skin_tone": "๐Ÿ‘ฉ๐Ÿป\u200d๐ŸŽจ",
    "woman_artist_medium-dark_skin_tone": "๐Ÿ‘ฉ๐Ÿพ\u200d๐ŸŽจ",
    "woman_artist_medium-light_skin_tone": "๐Ÿ‘ฉ๐Ÿผ\u200d๐ŸŽจ",
    "woman_artist_medium_skin_tone": "๐Ÿ‘ฉ๐Ÿฝ\u200d๐ŸŽจ",
    "woman_astronaut": "๐Ÿ‘ฉ\u200d๐Ÿš€",
    "woman_astronaut_dark_skin_tone": "๐Ÿ‘ฉ๐Ÿฟ\u200d๐Ÿš€",
    "woman_astronaut_light_skin_tone": "๐Ÿ‘ฉ๐Ÿป\u200d๐Ÿš€",
    "woman_astronaut_medium-dark_skin_tone": "๐Ÿ‘ฉ๐Ÿพ\u200d๐Ÿš€",
    "woman_astronaut_medium-light_skin_tone": "๐Ÿ‘ฉ๐Ÿผ\u200d๐Ÿš€",
    "woman_astronaut_medium_skin_tone": "๐Ÿ‘ฉ๐Ÿฝ\u200d๐Ÿš€",
    "woman_biking": "๐Ÿšด\u200dโ™€๏ธ",
    "woman_biking_dark_skin_tone": "๐Ÿšด๐Ÿฟ\u200dโ™€๏ธ",
    "woman_biking_light_skin_tone": "๐Ÿšด๐Ÿป\u200dโ™€๏ธ",
    "woman_biking_medium-dark_skin_tone": "๐Ÿšด๐Ÿพ\u200dโ™€๏ธ",
    "woman_biking_medium-light_skin_tone": "๐Ÿšด๐Ÿผ\u200dโ™€๏ธ",
    "woman_biking_medium_skin_tone": "๐Ÿšด๐Ÿฝ\u200dโ™€๏ธ",
    "woman_bouncing_ball": "โ›น๏ธ\u200dโ™€๏ธ",
    "woman_bouncing_ball_dark_skin_tone": "โ›น๐Ÿฟ\u200dโ™€๏ธ",
    "woman_bouncing_ball_light_skin_tone": "โ›น๐Ÿป\u200dโ™€๏ธ",
    "woman_bouncing_ball_medium-dark_skin_tone": "โ›น๐Ÿพ\u200dโ™€๏ธ",
    "woman_bouncing_ball_medium-light_skin_tone": "โ›น๐Ÿผ\u200dโ™€๏ธ",
    "woman_bouncing_ball_medium_skin_tone": "โ›น๐Ÿฝ\u200dโ™€๏ธ",
    "woman_bowing": "๐Ÿ™‡\u200dโ™€๏ธ",
    "woman_bowing_dark_skin_tone": "๐Ÿ™‡๐Ÿฟ\u200dโ™€๏ธ",
    "woman_bowing_light_skin_tone": "๐Ÿ™‡๐Ÿป\u200dโ™€๏ธ",
    "woman_bowing_medium-dark_skin_tone": "๐Ÿ™‡๐Ÿพ\u200dโ™€๏ธ",
    "woman_bowing_medium-light_skin_tone": "๐Ÿ™‡๐Ÿผ\u200dโ™€๏ธ",
    "woman_bowing_medium_skin_tone": "๐Ÿ™‡๐Ÿฝ\u200dโ™€๏ธ",
    "woman_cartwheeling": "๐Ÿคธ\u200dโ™€๏ธ",
    "woman_cartwheeling_dark_skin_tone": "๐Ÿคธ๐Ÿฟ\u200dโ™€๏ธ",
    "woman_cartwheeling_light_skin_tone": "๐Ÿคธ๐Ÿป\u200dโ™€๏ธ",
    "woman_cartwheeling_medium-dark_skin_tone": "๐Ÿคธ๐Ÿพ\u200dโ™€๏ธ",
    "woman_cartwheeling_medium-light_skin_tone": "๐Ÿคธ๐Ÿผ\u200dโ™€๏ธ",
    "woman_cartwheeling_medium_skin_tone": "๐Ÿคธ๐Ÿฝ\u200dโ™€๏ธ",
    "woman_climbing": "๐Ÿง—\u200dโ™€๏ธ",
    "woman_climbing_dark_skin_tone": "๐Ÿง—๐Ÿฟ\u200dโ™€๏ธ",
    "woman_climbing_light_skin_tone": "๐Ÿง—๐Ÿป\u200dโ™€๏ธ",
    "woman_climbing_medium-dark_skin_tone": "๐Ÿง—๐Ÿพ\u200dโ™€๏ธ",
    "woman_climbing_medium-light_skin_tone": "๐Ÿง—๐Ÿผ\u200dโ™€๏ธ",
    "woman_climbing_medium_skin_tone": "๐Ÿง—๐Ÿฝ\u200dโ™€๏ธ",
    "woman_construction_worker": "๐Ÿ‘ท\u200dโ™€๏ธ",
    "woman_construction_worker_dark_skin_tone": "๐Ÿ‘ท๐Ÿฟ\u200dโ™€๏ธ",
    "woman_construction_worker_light_skin_tone": "๐Ÿ‘ท๐Ÿป\u200dโ™€๏ธ",
    "woman_construction_worker_medium-dark_skin_tone": "๐Ÿ‘ท๐Ÿพ\u200dโ™€๏ธ",
    "woman_construction_worker_medium-light_skin_tone": "๐Ÿ‘ท๐Ÿผ\u200dโ™€๏ธ",
    "woman_construction_worker_medium_skin_tone": "๐Ÿ‘ท๐Ÿฝ\u200dโ™€๏ธ",
    "woman_cook": "๐Ÿ‘ฉ\u200d๐Ÿณ",
    "woman_cook_dark_skin_tone": "๐Ÿ‘ฉ๐Ÿฟ\u200d๐Ÿณ",
    "woman_cook_light_skin_tone": "๐Ÿ‘ฉ๐Ÿป\u200d๐Ÿณ",
    "woman_cook_medium-dark_skin_tone": "๐Ÿ‘ฉ๐Ÿพ\u200d๐Ÿณ",
    "woman_cook_medium-light_skin_tone": "๐Ÿ‘ฉ๐Ÿผ\u200d๐Ÿณ",
    "woman_cook_medium_skin_tone": "๐Ÿ‘ฉ๐Ÿฝ\u200d๐Ÿณ",
    "woman_dancing": "๐Ÿ’ƒ",
    "woman_dancing_dark_skin_tone": "๐Ÿ’ƒ๐Ÿฟ",
    "woman_dancing_light_skin_tone": "๐Ÿ’ƒ๐Ÿป",
    "woman_dancing_medium-dark_skin_tone": "๐Ÿ’ƒ๐Ÿพ",
    "woman_dancing_medium-light_skin_tone": "๐Ÿ’ƒ๐Ÿผ",
    "woman_dancing_medium_skin_tone": "๐Ÿ’ƒ๐Ÿฝ",
    "woman_dark_skin_tone": "๐Ÿ‘ฉ๐Ÿฟ",
    "woman_detective": "๐Ÿ•ต๏ธ\u200dโ™€๏ธ",
    "woman_detective_dark_skin_tone": "๐Ÿ•ต๐Ÿฟ\u200dโ™€๏ธ",
    "woman_detective_light_skin_tone": "๐Ÿ•ต๐Ÿป\u200dโ™€๏ธ",
    "woman_detective_medium-dark_skin_tone": "๐Ÿ•ต๐Ÿพ\u200dโ™€๏ธ",
    "woman_detective_medium-light_skin_tone": "๐Ÿ•ต๐Ÿผ\u200dโ™€๏ธ",
    "woman_detective_medium_skin_tone": "๐Ÿ•ต๐Ÿฝ\u200dโ™€๏ธ",
    "woman_elf": "๐Ÿง\u200dโ™€๏ธ",
    "woman_elf_dark_skin_tone": "๐Ÿง๐Ÿฟ\u200dโ™€๏ธ",
    "woman_elf_light_skin_tone": "๐Ÿง๐Ÿป\u200dโ™€๏ธ",
    "woman_elf_medium-dark_skin_tone": "๐Ÿง๐Ÿพ\u200dโ™€๏ธ",
    "woman_elf_medium-light_skin_tone": "๐Ÿง๐Ÿผ\u200dโ™€๏ธ",
    "woman_elf_medium_skin_tone": "๐Ÿง๐Ÿฝ\u200dโ™€๏ธ",
    "woman_facepalming": "๐Ÿคฆ\u200dโ™€๏ธ",
    "woman_facepalming_dark_skin_tone": "๐Ÿคฆ๐Ÿฟ\u200dโ™€๏ธ",
    "woman_facepalming_light_skin_tone": "๐Ÿคฆ๐Ÿป\u200dโ™€๏ธ",
    "woman_facepalming_medium-dark_skin_tone": "๐Ÿคฆ๐Ÿพ\u200dโ™€๏ธ",
    "woman_facepalming_medium-light_skin_tone": "๐Ÿคฆ๐Ÿผ\u200dโ™€๏ธ",
    "woman_facepalming_medium_skin_tone": "๐Ÿคฆ๐Ÿฝ\u200dโ™€๏ธ",
    "woman_factory_worker": "๐Ÿ‘ฉ\u200d๐Ÿญ",
    "woman_factory_worker_dark_skin_tone": "๐Ÿ‘ฉ๐Ÿฟ\u200d๐Ÿญ",
    "woman_factory_worker_light_skin_tone": "๐Ÿ‘ฉ๐Ÿป\u200d๐Ÿญ",
    "woman_factory_worker_medium-dark_skin_tone": "๐Ÿ‘ฉ๐Ÿพ\u200d๐Ÿญ",
    "woman_factory_worker_medium-light_skin_tone": "๐Ÿ‘ฉ๐Ÿผ\u200d๐Ÿญ",
    "woman_factory_worker_medium_skin_tone": "๐Ÿ‘ฉ๐Ÿฝ\u200d๐Ÿญ",
    "woman_fairy": "๐Ÿงš\u200dโ™€๏ธ",
    "woman_fairy_dark_skin_tone": "๐Ÿงš๐Ÿฟ\u200dโ™€๏ธ",
    "woman_fairy_light_skin_tone": "๐Ÿงš๐Ÿป\u200dโ™€๏ธ",
    "woman_fairy_medium-dark_skin_tone": "๐Ÿงš๐Ÿพ\u200dโ™€๏ธ",
    "woman_fairy_medium-light_skin_tone": "๐Ÿงš๐Ÿผ\u200dโ™€๏ธ",
    "woman_fairy_medium_skin_tone": "๐Ÿงš๐Ÿฝ\u200dโ™€๏ธ",
    "woman_farmer": "๐Ÿ‘ฉ\u200d๐ŸŒพ",
    "woman_farmer_dark_skin_tone": "๐Ÿ‘ฉ๐Ÿฟ\u200d๐ŸŒพ",
    "woman_farmer_light_skin_tone": "๐Ÿ‘ฉ๐Ÿป\u200d๐ŸŒพ",
    "woman_farmer_medium-dark_skin_tone": "๐Ÿ‘ฉ๐Ÿพ\u200d๐ŸŒพ",
    "woman_farmer_medium-light_skin_tone": "๐Ÿ‘ฉ๐Ÿผ\u200d๐ŸŒพ",
    "woman_farmer_medium_skin_tone": "๐Ÿ‘ฉ๐Ÿฝ\u200d๐ŸŒพ",
    "woman_firefighter": "๐Ÿ‘ฉ\u200d๐Ÿš’",
    "woman_firefighter_dark_skin_tone": "๐Ÿ‘ฉ๐Ÿฟ\u200d๐Ÿš’",
    "woman_firefighter_light_skin_tone": "๐Ÿ‘ฉ๐Ÿป\u200d๐Ÿš’",
    "woman_firefighter_medium-dark_skin_tone": "๐Ÿ‘ฉ๐Ÿพ\u200d๐Ÿš’",
    "woman_firefighter_medium-light_skin_tone": "๐Ÿ‘ฉ๐Ÿผ\u200d๐Ÿš’",
    "woman_firefighter_medium_skin_tone": "๐Ÿ‘ฉ๐Ÿฝ\u200d๐Ÿš’",
    "woman_frowning": "๐Ÿ™\u200dโ™€๏ธ",
    "woman_frowning_dark_skin_tone": "๐Ÿ™๐Ÿฟ\u200dโ™€๏ธ",
    "woman_frowning_light_skin_tone": "๐Ÿ™๐Ÿป\u200dโ™€๏ธ",
    "woman_frowning_medium-dark_skin_tone": "๐Ÿ™๐Ÿพ\u200dโ™€๏ธ",
    "woman_frowning_medium-light_skin_tone": "๐Ÿ™๐Ÿผ\u200dโ™€๏ธ",
    "woman_frowning_medium_skin_tone": "๐Ÿ™๐Ÿฝ\u200dโ™€๏ธ",
    "woman_genie": "๐Ÿงž\u200dโ™€๏ธ",
    "woman_gesturing_no": "๐Ÿ™…\u200dโ™€๏ธ",
    "woman_gesturing_no_dark_skin_tone": "๐Ÿ™…๐Ÿฟ\u200dโ™€๏ธ",
    "woman_gesturing_no_light_skin_tone": "๐Ÿ™…๐Ÿป\u200dโ™€๏ธ",
    "woman_gesturing_no_medium-dark_skin_tone": "๐Ÿ™…๐Ÿพ\u200dโ™€๏ธ",
    "woman_gesturing_no_medium-light_skin_tone": "๐Ÿ™…๐Ÿผ\u200dโ™€๏ธ",
    "woman_gesturing_no_medium_skin_tone": "๐Ÿ™…๐Ÿฝ\u200dโ™€๏ธ",
    "woman_gesturing_ok": "๐Ÿ™†\u200dโ™€๏ธ",
    "woman_gesturing_ok_dark_skin_tone": "๐Ÿ™†๐Ÿฟ\u200dโ™€๏ธ",
    "woman_gesturing_ok_light_skin_tone": "๐Ÿ™†๐Ÿป\u200dโ™€๏ธ",
    "woman_gesturing_ok_medium-dark_skin_tone": "๐Ÿ™†๐Ÿพ\u200dโ™€๏ธ",
    "woman_gesturing_ok_medium-light_skin_tone": "๐Ÿ™†๐Ÿผ\u200dโ™€๏ธ",
    "woman_gesturing_ok_medium_skin_tone": "๐Ÿ™†๐Ÿฝ\u200dโ™€๏ธ",
    "woman_getting_haircut": "๐Ÿ’‡\u200dโ™€๏ธ",
    "woman_getting_haircut_dark_skin_tone": "๐Ÿ’‡๐Ÿฟ\u200dโ™€๏ธ",
    "woman_getting_haircut_light_skin_tone": "๐Ÿ’‡๐Ÿป\u200dโ™€๏ธ",
    "woman_getting_haircut_medium-dark_skin_tone": "๐Ÿ’‡๐Ÿพ\u200dโ™€๏ธ",
    "woman_getting_haircut_medium-light_skin_tone": "๐Ÿ’‡๐Ÿผ\u200dโ™€๏ธ",
    "woman_getting_haircut_medium_skin_tone": "๐Ÿ’‡๐Ÿฝ\u200dโ™€๏ธ",
    "woman_getting_massage": "๐Ÿ’†\u200dโ™€๏ธ",
    "woman_getting_massage_dark_skin_tone": "๐Ÿ’†๐Ÿฟ\u200dโ™€๏ธ",
    "woman_getting_massage_light_skin_tone": "๐Ÿ’†๐Ÿป\u200dโ™€๏ธ",
    "woman_getting_massage_medium-dark_skin_tone": "๐Ÿ’†๐Ÿพ\u200dโ™€๏ธ",
    "woman_getting_massage_medium-light_skin_tone": "๐Ÿ’†๐Ÿผ\u200dโ™€๏ธ",
    "woman_getting_massage_medium_skin_tone": "๐Ÿ’†๐Ÿฝ\u200dโ™€๏ธ",
    "woman_golfing": "๐ŸŒ๏ธ\u200dโ™€๏ธ",
    "woman_golfing_dark_skin_tone": "๐ŸŒ๐Ÿฟ\u200dโ™€๏ธ",
    "woman_golfing_light_skin_tone": "๐ŸŒ๐Ÿป\u200dโ™€๏ธ",
    "woman_golfing_medium-dark_skin_tone": "๐ŸŒ๐Ÿพ\u200dโ™€๏ธ",
    "woman_golfing_medium-light_skin_tone": "๐ŸŒ๐Ÿผ\u200dโ™€๏ธ",
    "woman_golfing_medium_skin_tone": "๐ŸŒ๐Ÿฝ\u200dโ™€๏ธ",
    "woman_guard": "๐Ÿ’‚\u200dโ™€๏ธ",
    "woman_guard_dark_skin_tone": "๐Ÿ’‚๐Ÿฟ\u200dโ™€๏ธ",
    "woman_guard_light_skin_tone": "๐Ÿ’‚๐Ÿป\u200dโ™€๏ธ",
    "woman_guard_medium-dark_skin_tone": "๐Ÿ’‚๐Ÿพ\u200dโ™€๏ธ",
    "woman_guard_medium-light_skin_tone": "๐Ÿ’‚๐Ÿผ\u200dโ™€๏ธ",
    "woman_guard_medium_skin_tone": "๐Ÿ’‚๐Ÿฝ\u200dโ™€๏ธ",
    "woman_health_worker": "๐Ÿ‘ฉ\u200dโš•๏ธ",
    "woman_health_worker_dark_skin_tone": "๐Ÿ‘ฉ๐Ÿฟ\u200dโš•๏ธ",
    "woman_health_worker_light_skin_tone": "๐Ÿ‘ฉ๐Ÿป\u200dโš•๏ธ",
    "woman_health_worker_medium-dark_skin_tone": "๐Ÿ‘ฉ๐Ÿพ\u200dโš•๏ธ",
    "woman_health_worker_medium-light_skin_tone": "๐Ÿ‘ฉ๐Ÿผ\u200dโš•๏ธ",
    "woman_health_worker_medium_skin_tone": "๐Ÿ‘ฉ๐Ÿฝ\u200dโš•๏ธ",
    "woman_in_lotus_position": "๐Ÿง˜\u200dโ™€๏ธ",
    "woman_in_lotus_position_dark_skin_tone": "๐Ÿง˜๐Ÿฟ\u200dโ™€๏ธ",
    "woman_in_lotus_position_light_skin_tone": "๐Ÿง˜๐Ÿป\u200dโ™€๏ธ",
    "woman_in_lotus_position_medium-dark_skin_tone": "๐Ÿง˜๐Ÿพ\u200dโ™€๏ธ",
    "woman_in_lotus_position_medium-light_skin_tone": "๐Ÿง˜๐Ÿผ\u200dโ™€๏ธ",
    "woman_in_lotus_position_medium_skin_tone": "๐Ÿง˜๐Ÿฝ\u200dโ™€๏ธ",
    "woman_in_manual_wheelchair": "๐Ÿ‘ฉ\u200d๐Ÿฆฝ",
    "woman_in_motorized_wheelchair": "๐Ÿ‘ฉ\u200d๐Ÿฆผ",
    "woman_in_steamy_room": "๐Ÿง–\u200dโ™€๏ธ",
    "woman_in_steamy_room_dark_skin_tone": "๐Ÿง–๐Ÿฟ\u200dโ™€๏ธ",
    "woman_in_steamy_room_light_skin_tone": "๐Ÿง–๐Ÿป\u200dโ™€๏ธ",
    "woman_in_steamy_room_medium-dark_skin_tone": "๐Ÿง–๐Ÿพ\u200dโ™€๏ธ",
    "woman_in_steamy_room_medium-light_skin_tone": "๐Ÿง–๐Ÿผ\u200dโ™€๏ธ",
    "woman_in_steamy_room_medium_skin_tone": "๐Ÿง–๐Ÿฝ\u200dโ™€๏ธ",
    "woman_judge": "๐Ÿ‘ฉ\u200dโš–๏ธ",
    "woman_judge_dark_skin_tone": "๐Ÿ‘ฉ๐Ÿฟ\u200dโš–๏ธ",
    "woman_judge_light_skin_tone": "๐Ÿ‘ฉ๐Ÿป\u200dโš–๏ธ",
    "woman_judge_medium-dark_skin_tone": "๐Ÿ‘ฉ๐Ÿพ\u200dโš–๏ธ",
    "woman_judge_medium-light_skin_tone": "๐Ÿ‘ฉ๐Ÿผ\u200dโš–๏ธ",
    "woman_judge_medium_skin_tone": "๐Ÿ‘ฉ๐Ÿฝ\u200dโš–๏ธ",
    "woman_juggling": "๐Ÿคน\u200dโ™€๏ธ",
    "woman_juggling_dark_skin_tone": "๐Ÿคน๐Ÿฟ\u200dโ™€๏ธ",
    "woman_juggling_light_skin_tone": "๐Ÿคน๐Ÿป\u200dโ™€๏ธ",
    "woman_juggling_medium-dark_skin_tone": "๐Ÿคน๐Ÿพ\u200dโ™€๏ธ",
    "woman_juggling_medium-light_skin_tone": "๐Ÿคน๐Ÿผ\u200dโ™€๏ธ",
    "woman_juggling_medium_skin_tone": "๐Ÿคน๐Ÿฝ\u200dโ™€๏ธ",
    "woman_lifting_weights": "๐Ÿ‹๏ธ\u200dโ™€๏ธ",
    "woman_lifting_weights_dark_skin_tone": "๐Ÿ‹๐Ÿฟ\u200dโ™€๏ธ",
    "woman_lifting_weights_light_skin_tone": "๐Ÿ‹๐Ÿป\u200dโ™€๏ธ",
    "woman_lifting_weights_medium-dark_skin_tone": "๐Ÿ‹๐Ÿพ\u200dโ™€๏ธ",
    "woman_lifting_weights_medium-light_skin_tone": "๐Ÿ‹๐Ÿผ\u200dโ™€๏ธ",
    "woman_lifting_weights_medium_skin_tone": "๐Ÿ‹๐Ÿฝ\u200dโ™€๏ธ",
    "woman_light_skin_tone": "๐Ÿ‘ฉ๐Ÿป",
    "woman_mage": "๐Ÿง™\u200dโ™€๏ธ",
    "woman_mage_dark_skin_tone": "๐Ÿง™๐Ÿฟ\u200dโ™€๏ธ",
    "woman_mage_light_skin_tone": "๐Ÿง™๐Ÿป\u200dโ™€๏ธ",
    "woman_mage_medium-dark_skin_tone": "๐Ÿง™๐Ÿพ\u200dโ™€๏ธ",
    "woman_mage_medium-light_skin_tone": "๐Ÿง™๐Ÿผ\u200dโ™€๏ธ",
    "woman_mage_medium_skin_tone": "๐Ÿง™๐Ÿฝ\u200dโ™€๏ธ",
    "woman_mechanic": "๐Ÿ‘ฉ\u200d๐Ÿ”ง",
    "woman_mechanic_dark_skin_tone": "๐Ÿ‘ฉ๐Ÿฟ\u200d๐Ÿ”ง",
    "woman_mechanic_light_skin_tone": "๐Ÿ‘ฉ๐Ÿป\u200d๐Ÿ”ง",
    "woman_mechanic_medium-dark_skin_tone": "๐Ÿ‘ฉ๐Ÿพ\u200d๐Ÿ”ง",
    "woman_mechanic_medium-light_skin_tone": "๐Ÿ‘ฉ๐Ÿผ\u200d๐Ÿ”ง",
    "woman_mechanic_medium_skin_tone": "๐Ÿ‘ฉ๐Ÿฝ\u200d๐Ÿ”ง",
    "woman_medium-dark_skin_tone": "๐Ÿ‘ฉ๐Ÿพ",
    "woman_medium-light_skin_tone": "๐Ÿ‘ฉ๐Ÿผ",
    "woman_medium_skin_tone": "๐Ÿ‘ฉ๐Ÿฝ",
    "woman_mountain_biking": "๐Ÿšต\u200dโ™€๏ธ",
    "woman_mountain_biking_dark_skin_tone": "๐Ÿšต๐Ÿฟ\u200dโ™€๏ธ",
    "woman_mountain_biking_light_skin_tone": "๐Ÿšต๐Ÿป\u200dโ™€๏ธ",
    "woman_mountain_biking_medium-dark_skin_tone": "๐Ÿšต๐Ÿพ\u200dโ™€๏ธ",
    "woman_mountain_biking_medium-light_skin_tone": "๐Ÿšต๐Ÿผ\u200dโ™€๏ธ",
    "woman_mountain_biking_medium_skin_tone": "๐Ÿšต๐Ÿฝ\u200dโ™€๏ธ",
    "woman_office_worker": "๐Ÿ‘ฉ\u200d๐Ÿ’ผ",
    "woman_office_worker_dark_skin_tone": "๐Ÿ‘ฉ๐Ÿฟ\u200d๐Ÿ’ผ",
    "woman_office_worker_light_skin_tone": "๐Ÿ‘ฉ๐Ÿป\u200d๐Ÿ’ผ",
    "woman_office_worker_medium-dark_skin_tone": "๐Ÿ‘ฉ๐Ÿพ\u200d๐Ÿ’ผ",
    "woman_office_worker_medium-light_skin_tone": "๐Ÿ‘ฉ๐Ÿผ\u200d๐Ÿ’ผ",
    "woman_office_worker_medium_skin_tone": "๐Ÿ‘ฉ๐Ÿฝ\u200d๐Ÿ’ผ",
    "woman_pilot": "๐Ÿ‘ฉ\u200dโœˆ๏ธ",
    "woman_pilot_dark_skin_tone": "๐Ÿ‘ฉ๐Ÿฟ\u200dโœˆ๏ธ",
    "woman_pilot_light_skin_tone": "๐Ÿ‘ฉ๐Ÿป\u200dโœˆ๏ธ",
    "woman_pilot_medium-dark_skin_tone": "๐Ÿ‘ฉ๐Ÿพ\u200dโœˆ๏ธ",
    "woman_pilot_medium-light_skin_tone": "๐Ÿ‘ฉ๐Ÿผ\u200dโœˆ๏ธ",
    "woman_pilot_medium_skin_tone": "๐Ÿ‘ฉ๐Ÿฝ\u200dโœˆ๏ธ",
    "woman_playing_handball": "๐Ÿคพ\u200dโ™€๏ธ",
    "woman_playing_handball_dark_skin_tone": "๐Ÿคพ๐Ÿฟ\u200dโ™€๏ธ",
    "woman_playing_handball_light_skin_tone": "๐Ÿคพ๐Ÿป\u200dโ™€๏ธ",
    "woman_playing_handball_medium-dark_skin_tone": "๐Ÿคพ๐Ÿพ\u200dโ™€๏ธ",
    "woman_playing_handball_medium-light_skin_tone": "๐Ÿคพ๐Ÿผ\u200dโ™€๏ธ",
    "woman_playing_handball_medium_skin_tone": "๐Ÿคพ๐Ÿฝ\u200dโ™€๏ธ",
    "woman_playing_water_polo": "๐Ÿคฝ\u200dโ™€๏ธ",
    "woman_playing_water_polo_dark_skin_tone": "๐Ÿคฝ๐Ÿฟ\u200dโ™€๏ธ",
    "woman_playing_water_polo_light_skin_tone": "๐Ÿคฝ๐Ÿป\u200dโ™€๏ธ",
    "woman_playing_water_polo_medium-dark_skin_tone": "๐Ÿคฝ๐Ÿพ\u200dโ™€๏ธ",
    "woman_playing_water_polo_medium-light_skin_tone": "๐Ÿคฝ๐Ÿผ\u200dโ™€๏ธ",
    "woman_playing_water_polo_medium_skin_tone": "๐Ÿคฝ๐Ÿฝ\u200dโ™€๏ธ",
    "woman_police_officer": "๐Ÿ‘ฎ\u200dโ™€๏ธ",
    "woman_police_officer_dark_skin_tone": "๐Ÿ‘ฎ๐Ÿฟ\u200dโ™€๏ธ",
    "woman_police_officer_light_skin_tone": "๐Ÿ‘ฎ๐Ÿป\u200dโ™€๏ธ",
    "woman_police_officer_medium-dark_skin_tone": "๐Ÿ‘ฎ๐Ÿพ\u200dโ™€๏ธ",
    "woman_police_officer_medium-light_skin_tone": "๐Ÿ‘ฎ๐Ÿผ\u200dโ™€๏ธ",
    "woman_police_officer_medium_skin_tone": "๐Ÿ‘ฎ๐Ÿฝ\u200dโ™€๏ธ",
    "woman_pouting": "๐Ÿ™Ž\u200dโ™€๏ธ",
    "woman_pouting_dark_skin_tone": "๐Ÿ™Ž๐Ÿฟ\u200dโ™€๏ธ",
    "woman_pouting_light_skin_tone": "๐Ÿ™Ž๐Ÿป\u200dโ™€๏ธ",
    "woman_pouting_medium-dark_skin_tone": "๐Ÿ™Ž๐Ÿพ\u200dโ™€๏ธ",
    "woman_pouting_medium-light_skin_tone": "๐Ÿ™Ž๐Ÿผ\u200dโ™€๏ธ",
    "woman_pouting_medium_skin_tone": "๐Ÿ™Ž๐Ÿฝ\u200dโ™€๏ธ",
    "woman_raising_hand": "๐Ÿ™‹\u200dโ™€๏ธ",
    "woman_raising_hand_dark_skin_tone": "๐Ÿ™‹๐Ÿฟ\u200dโ™€๏ธ",
    "woman_raising_hand_light_skin_tone": "๐Ÿ™‹๐Ÿป\u200dโ™€๏ธ",
    "woman_raising_hand_medium-dark_skin_tone": "๐Ÿ™‹๐Ÿพ\u200dโ™€๏ธ",
    "woman_raising_hand_medium-light_skin_tone": "๐Ÿ™‹๐Ÿผ\u200dโ™€๏ธ",
    "woman_raising_hand_medium_skin_tone": "๐Ÿ™‹๐Ÿฝ\u200dโ™€๏ธ",
    "woman_rowing_boat": "๐Ÿšฃ\u200dโ™€๏ธ",
    "woman_rowing_boat_dark_skin_tone": "๐Ÿšฃ๐Ÿฟ\u200dโ™€๏ธ",
    "woman_rowing_boat_light_skin_tone": "๐Ÿšฃ๐Ÿป\u200dโ™€๏ธ",
    "woman_rowing_boat_medium-dark_skin_tone": "๐Ÿšฃ๐Ÿพ\u200dโ™€๏ธ",
    "woman_rowing_boat_medium-light_skin_tone": "๐Ÿšฃ๐Ÿผ\u200dโ™€๏ธ",
    "woman_rowing_boat_medium_skin_tone": "๐Ÿšฃ๐Ÿฝ\u200dโ™€๏ธ",
    "woman_running": "๐Ÿƒ\u200dโ™€๏ธ",
    "woman_running_dark_skin_tone": "๐Ÿƒ๐Ÿฟ\u200dโ™€๏ธ",
    "woman_running_light_skin_tone": "๐Ÿƒ๐Ÿป\u200dโ™€๏ธ",
    "woman_running_medium-dark_skin_tone": "๐Ÿƒ๐Ÿพ\u200dโ™€๏ธ",
    "woman_running_medium-light_skin_tone": "๐Ÿƒ๐Ÿผ\u200dโ™€๏ธ",
    "woman_running_medium_skin_tone": "๐Ÿƒ๐Ÿฝ\u200dโ™€๏ธ",
    "woman_scientist": "๐Ÿ‘ฉ\u200d๐Ÿ”ฌ",
    "woman_scientist_dark_skin_tone": "๐Ÿ‘ฉ๐Ÿฟ\u200d๐Ÿ”ฌ",
    "woman_scientist_light_skin_tone": "๐Ÿ‘ฉ๐Ÿป\u200d๐Ÿ”ฌ",
    "woman_scientist_medium-dark_skin_tone": "๐Ÿ‘ฉ๐Ÿพ\u200d๐Ÿ”ฌ",
    "woman_scientist_medium-light_skin_tone": "๐Ÿ‘ฉ๐Ÿผ\u200d๐Ÿ”ฌ",
    "woman_scientist_medium_skin_tone": "๐Ÿ‘ฉ๐Ÿฝ\u200d๐Ÿ”ฌ",
    "woman_shrugging": "๐Ÿคท\u200dโ™€๏ธ",
    "woman_shrugging_dark_skin_tone": "๐Ÿคท๐Ÿฟ\u200dโ™€๏ธ",
    "woman_shrugging_light_skin_tone": "๐Ÿคท๐Ÿป\u200dโ™€๏ธ",
    "woman_shrugging_medium-dark_skin_tone": "๐Ÿคท๐Ÿพ\u200dโ™€๏ธ",
    "woman_shrugging_medium-light_skin_tone": "๐Ÿคท๐Ÿผ\u200dโ™€๏ธ",
    "woman_shrugging_medium_skin_tone": "๐Ÿคท๐Ÿฝ\u200dโ™€๏ธ",
    "woman_singer": "๐Ÿ‘ฉ\u200d๐ŸŽค",
    "woman_singer_dark_skin_tone": "๐Ÿ‘ฉ๐Ÿฟ\u200d๐ŸŽค",
    "woman_singer_light_skin_tone": "๐Ÿ‘ฉ๐Ÿป\u200d๐ŸŽค",
    "woman_singer_medium-dark_skin_tone": "๐Ÿ‘ฉ๐Ÿพ\u200d๐ŸŽค",
    "woman_singer_medium-light_skin_tone": "๐Ÿ‘ฉ๐Ÿผ\u200d๐ŸŽค",
    "woman_singer_medium_skin_tone": "๐Ÿ‘ฉ๐Ÿฝ\u200d๐ŸŽค",
    "woman_student": "๐Ÿ‘ฉ\u200d๐ŸŽ“",
    "woman_student_dark_skin_tone": "๐Ÿ‘ฉ๐Ÿฟ\u200d๐ŸŽ“",
    "woman_student_light_skin_tone": "๐Ÿ‘ฉ๐Ÿป\u200d๐ŸŽ“",
    "woman_student_medium-dark_skin_tone": "๐Ÿ‘ฉ๐Ÿพ\u200d๐ŸŽ“",
    "woman_student_medium-light_skin_tone": "๐Ÿ‘ฉ๐Ÿผ\u200d๐ŸŽ“",
    "woman_student_medium_skin_tone": "๐Ÿ‘ฉ๐Ÿฝ\u200d๐ŸŽ“",
    "woman_surfing": "๐Ÿ„\u200dโ™€๏ธ",
    "woman_surfing_dark_skin_tone": "๐Ÿ„๐Ÿฟ\u200dโ™€๏ธ",
    "woman_surfing_light_skin_tone": "๐Ÿ„๐Ÿป\u200dโ™€๏ธ",
    "woman_surfing_medium-dark_skin_tone": "๐Ÿ„๐Ÿพ\u200dโ™€๏ธ",
    "woman_surfing_medium-light_skin_tone": "๐Ÿ„๐Ÿผ\u200dโ™€๏ธ",
    "woman_surfing_medium_skin_tone": "๐Ÿ„๐Ÿฝ\u200dโ™€๏ธ",
    "woman_swimming": "๐ŸŠ\u200dโ™€๏ธ",
    "woman_swimming_dark_skin_tone": "๐ŸŠ๐Ÿฟ\u200dโ™€๏ธ",
    "woman_swimming_light_skin_tone": "๐ŸŠ๐Ÿป\u200dโ™€๏ธ",
    "woman_swimming_medium-dark_skin_tone": "๐ŸŠ๐Ÿพ\u200dโ™€๏ธ",
    "woman_swimming_medium-light_skin_tone": "๐ŸŠ๐Ÿผ\u200dโ™€๏ธ",
    "woman_swimming_medium_skin_tone": "๐ŸŠ๐Ÿฝ\u200dโ™€๏ธ",
    "woman_teacher": "๐Ÿ‘ฉ\u200d๐Ÿซ",
    "woman_teacher_dark_skin_tone": "๐Ÿ‘ฉ๐Ÿฟ\u200d๐Ÿซ",
    "woman_teacher_light_skin_tone": "๐Ÿ‘ฉ๐Ÿป\u200d๐Ÿซ",
    "woman_teacher_medium-dark_skin_tone": "๐Ÿ‘ฉ๐Ÿพ\u200d๐Ÿซ",
    "woman_teacher_medium-light_skin_tone": "๐Ÿ‘ฉ๐Ÿผ\u200d๐Ÿซ",
    "woman_teacher_medium_skin_tone": "๐Ÿ‘ฉ๐Ÿฝ\u200d๐Ÿซ",
    "woman_technologist": "๐Ÿ‘ฉ\u200d๐Ÿ’ป",
    "woman_technologist_dark_skin_tone": "๐Ÿ‘ฉ๐Ÿฟ\u200d๐Ÿ’ป",
    "woman_technologist_light_skin_tone": "๐Ÿ‘ฉ๐Ÿป\u200d๐Ÿ’ป",
    "woman_technologist_medium-dark_skin_tone": "๐Ÿ‘ฉ๐Ÿพ\u200d๐Ÿ’ป",
    "woman_technologist_medium-light_skin_tone": "๐Ÿ‘ฉ๐Ÿผ\u200d๐Ÿ’ป",
    "woman_technologist_medium_skin_tone": "๐Ÿ‘ฉ๐Ÿฝ\u200d๐Ÿ’ป",
    "woman_tipping_hand": "๐Ÿ’\u200dโ™€๏ธ",
    "woman_tipping_hand_dark_skin_tone": "๐Ÿ’๐Ÿฟ\u200dโ™€๏ธ",
    "woman_tipping_hand_light_skin_tone": "๐Ÿ’๐Ÿป\u200dโ™€๏ธ",
    "woman_tipping_hand_medium-dark_skin_tone": "๐Ÿ’๐Ÿพ\u200dโ™€๏ธ",
    "woman_tipping_hand_medium-light_skin_tone": "๐Ÿ’๐Ÿผ\u200dโ™€๏ธ",
    "woman_tipping_hand_medium_skin_tone": "๐Ÿ’๐Ÿฝ\u200dโ™€๏ธ",
    "woman_vampire": "๐Ÿง›\u200dโ™€๏ธ",
    "woman_vampire_dark_skin_tone": "๐Ÿง›๐Ÿฟ\u200dโ™€๏ธ",
    "woman_vampire_light_skin_tone": "๐Ÿง›๐Ÿป\u200dโ™€๏ธ",
    "woman_vampire_medium-dark_skin_tone": "๐Ÿง›๐Ÿพ\u200dโ™€๏ธ",
    "woman_vampire_medium-light_skin_tone": "๐Ÿง›๐Ÿผ\u200dโ™€๏ธ",
    "woman_vampire_medium_skin_tone": "๐Ÿง›๐Ÿฝ\u200dโ™€๏ธ",
    "woman_walking": "๐Ÿšถ\u200dโ™€๏ธ",
    "woman_walking_dark_skin_tone": "๐Ÿšถ๐Ÿฟ\u200dโ™€๏ธ",
    "woman_walking_light_skin_tone": "๐Ÿšถ๐Ÿป\u200dโ™€๏ธ",
    "woman_walking_medium-dark_skin_tone": "๐Ÿšถ๐Ÿพ\u200dโ™€๏ธ",
    "woman_walking_medium-light_skin_tone": "๐Ÿšถ๐Ÿผ\u200dโ™€๏ธ",
    "woman_walking_medium_skin_tone": "๐Ÿšถ๐Ÿฝ\u200dโ™€๏ธ",
    "woman_wearing_turban": "๐Ÿ‘ณ\u200dโ™€๏ธ",
    "woman_wearing_turban_dark_skin_tone": "๐Ÿ‘ณ๐Ÿฟ\u200dโ™€๏ธ",
    "woman_wearing_turban_light_skin_tone": "๐Ÿ‘ณ๐Ÿป\u200dโ™€๏ธ",
    "woman_wearing_turban_medium-dark_skin_tone": "๐Ÿ‘ณ๐Ÿพ\u200dโ™€๏ธ",
    "woman_wearing_turban_medium-light_skin_tone": "๐Ÿ‘ณ๐Ÿผ\u200dโ™€๏ธ",
    "woman_wearing_turban_medium_skin_tone": "๐Ÿ‘ณ๐Ÿฝ\u200dโ™€๏ธ",
    "woman_with_headscarf": "๐Ÿง•",
    "woman_with_headscarf_dark_skin_tone": "๐Ÿง•๐Ÿฟ",
    "woman_with_headscarf_light_skin_tone": "๐Ÿง•๐Ÿป",
    "woman_with_headscarf_medium-dark_skin_tone": "๐Ÿง•๐Ÿพ",
    "woman_with_headscarf_medium-light_skin_tone": "๐Ÿง•๐Ÿผ",
    "woman_with_headscarf_medium_skin_tone": "๐Ÿง•๐Ÿฝ",
    "woman_with_probing_cane": "๐Ÿ‘ฉ\u200d๐Ÿฆฏ",
    "woman_zombie": "๐ŸงŸ\u200dโ™€๏ธ",
    "womanโ€™s_boot": "๐Ÿ‘ข",
    "womanโ€™s_clothes": "๐Ÿ‘š",
    "womanโ€™s_hat": "๐Ÿ‘’",
    "womanโ€™s_sandal": "๐Ÿ‘ก",
    "women_with_bunny_ears": "๐Ÿ‘ฏ\u200dโ™€๏ธ",
    "women_wrestling": "๐Ÿคผ\u200dโ™€๏ธ",
    "womenโ€™s_room": "๐Ÿšบ",
    "woozy_face": "๐Ÿฅด",
    "world_map": "๐Ÿ—บ",
    "worried_face": "๐Ÿ˜Ÿ",
    "wrapped_gift": "๐ŸŽ",
    "wrench": "๐Ÿ”ง",
    "writing_hand": "โœ",
    "writing_hand_dark_skin_tone": "โœ๐Ÿฟ",
    "writing_hand_light_skin_tone": "โœ๐Ÿป",
    "writing_hand_medium-dark_skin_tone": "โœ๐Ÿพ",
    "writing_hand_medium-light_skin_tone": "โœ๐Ÿผ",
    "writing_hand_medium_skin_tone": "โœ๐Ÿฝ",
    "yarn": "๐Ÿงถ",
    "yawning_face": "๐Ÿฅฑ",
    "yellow_circle": "๐ŸŸก",
    "yellow_heart": "๐Ÿ’›",
    "yellow_square": "๐ŸŸจ",
    "yen_banknote": "๐Ÿ’ด",
    "yo-yo": "๐Ÿช€",
    "yin_yang": "โ˜ฏ",
    "zany_face": "๐Ÿคช",
    "zebra": "๐Ÿฆ“",
    "zipper-mouth_face": "๐Ÿค",
    "zombie": "๐ŸงŸ",
    "zzz": "๐Ÿ’ค",
    "รฅland_islands": "๐Ÿ‡ฆ๐Ÿ‡ฝ",
    "keycap_asterisk": "*โƒฃ",
    "keycap_digit_eight": "8โƒฃ",
    "keycap_digit_five": "5โƒฃ",
    "keycap_digit_four": "4โƒฃ",
    "keycap_digit_nine": "9โƒฃ",
    "keycap_digit_one": "1โƒฃ",
    "keycap_digit_seven": "7โƒฃ",
    "keycap_digit_six": "6โƒฃ",
    "keycap_digit_three": "3โƒฃ",
    "keycap_digit_two": "2โƒฃ",
    "keycap_digit_zero": "0โƒฃ",
    "keycap_number_sign": "#โƒฃ",
    "light_skin_tone": "๐Ÿป",
    "medium_light_skin_tone": "๐Ÿผ",
    "medium_skin_tone": "๐Ÿฝ",
    "medium_dark_skin_tone": "๐Ÿพ",
    "dark_skin_tone": "๐Ÿฟ",
    "regional_indicator_symbol_letter_a": "๐Ÿ‡ฆ",
    "regional_indicator_symbol_letter_b": "๐Ÿ‡ง",
    "regional_indicator_symbol_letter_c": "๐Ÿ‡จ",
    "regional_indicator_symbol_letter_d": "๐Ÿ‡ฉ",
    "regional_indicator_symbol_letter_e": "๐Ÿ‡ช",
    "regional_indicator_symbol_letter_f": "๐Ÿ‡ซ",
    "regional_indicator_symbol_letter_g": "๐Ÿ‡ฌ",
    "regional_indicator_symbol_letter_h": "๐Ÿ‡ญ",
    "regional_indicator_symbol_letter_i": "๐Ÿ‡ฎ",
    "regional_indicator_symbol_letter_j": "๐Ÿ‡ฏ",
    "regional_indicator_symbol_letter_k": "๐Ÿ‡ฐ",
    "regional_indicator_symbol_letter_l": "๐Ÿ‡ฑ",
    "regional_indicator_symbol_letter_m": "๐Ÿ‡ฒ",
    "regional_indicator_symbol_letter_n": "๐Ÿ‡ณ",
    "regional_indicator_symbol_letter_o": "๐Ÿ‡ด",
    "regional_indicator_symbol_letter_p": "๐Ÿ‡ต",
    "regional_indicator_symbol_letter_q": "๐Ÿ‡ถ",
    "regional_indicator_symbol_letter_r": "๐Ÿ‡ท",
    "regional_indicator_symbol_letter_s": "๐Ÿ‡ธ",
    "regional_indicator_symbol_letter_t": "๐Ÿ‡น",
    "regional_indicator_symbol_letter_u": "๐Ÿ‡บ",
    "regional_indicator_symbol_letter_v": "๐Ÿ‡ป",
    "regional_indicator_symbol_letter_w": "๐Ÿ‡ผ",
    "regional_indicator_symbol_letter_x": "๐Ÿ‡ฝ",
    "regional_indicator_symbol_letter_y": "๐Ÿ‡พ",
    "regional_indicator_symbol_letter_z": "๐Ÿ‡ฟ",
    "airplane_arriving": "๐Ÿ›ฌ",
    "space_invader": "๐Ÿ‘พ",
    "football": "๐Ÿˆ",
    "anger": "๐Ÿ’ข",
    "angry": "๐Ÿ˜ ",
    "anguished": "๐Ÿ˜ง",
    "signal_strength": "๐Ÿ“ถ",
    "arrows_counterclockwise": "๐Ÿ”„",
    "arrow_heading_down": "โคต",
    "arrow_heading_up": "โคด",
    "art": "๐ŸŽจ",
    "astonished": "๐Ÿ˜ฒ",
    "athletic_shoe": "๐Ÿ‘Ÿ",
    "atm": "๐Ÿง",
    "car": "๐Ÿš—",
    "red_car": "๐Ÿš—",
    "angel": "๐Ÿ‘ผ",
    "back": "๐Ÿ”™",
    "badminton_racquet_and_shuttlecock": "๐Ÿธ",
    "dollar": "๐Ÿ’ต",
    "euro": "๐Ÿ’ถ",
    "pound": "๐Ÿ’ท",
    "yen": "๐Ÿ’ด",
    "barber": "๐Ÿ’ˆ",
    "bath": "๐Ÿ›€",
    "bear": "๐Ÿป",
    "heartbeat": "๐Ÿ’“",
    "beer": "๐Ÿบ",
    "no_bell": "๐Ÿ”•",
    "bento": "๐Ÿฑ",
    "bike": "๐Ÿšฒ",
    "bicyclist": "๐Ÿšด",
    "8ball": "๐ŸŽฑ",
    "biohazard_sign": "โ˜ฃ",
    "birthday": "๐ŸŽ‚",
    "black_circle_for_record": "โบ",
    "clubs": "โ™ฃ",
    "diamonds": "โ™ฆ",
    "arrow_double_down": "โฌ",
    "hearts": "โ™ฅ",
    "rewind": "โช",
    "black_left__pointing_double_triangle_with_vertical_bar": "โฎ",
    "arrow_backward": "โ—€",
    "black_medium_small_square": "โ—พ",
    "question": "โ“",
    "fast_forward": "โฉ",
    "black_right__pointing_double_triangle_with_vertical_bar": "โญ",
    "arrow_forward": "โ–ถ",
    "black_right__pointing_triangle_with_double_vertical_bar": "โฏ",
    "arrow_right": "โžก",
    "spades": "โ™ ",
    "black_square_for_stop": "โน",
    "sunny": "โ˜€",
    "phone": "โ˜Ž",
    "recycle": "โ™ป",
    "arrow_double_up": "โซ",
    "busstop": "๐Ÿš",
    "date": "๐Ÿ“…",
    "flags": "๐ŸŽ",
    "cat2": "๐Ÿˆ",
    "joy_cat": "๐Ÿ˜น",
    "smirk_cat": "๐Ÿ˜ผ",
    "chart_with_downwards_trend": "๐Ÿ“‰",
    "chart_with_upwards_trend": "๐Ÿ“ˆ",
    "chart": "๐Ÿ’น",
    "mega": "๐Ÿ“ฃ",
    "checkered_flag": "๐Ÿ",
    "accept": "๐Ÿ‰‘",
    "ideograph_advantage": "๐Ÿ‰",
    "congratulations": "ใŠ—",
    "secret": "ใŠ™",
    "m": "โ“‚",
    "city_sunset": "๐ŸŒ†",
    "clapper": "๐ŸŽฌ",
    "clap": "๐Ÿ‘",
    "beers": "๐Ÿป",
    "clock830": "๐Ÿ•ฃ",
    "clock8": "๐Ÿ•—",
    "clock1130": "๐Ÿ•ฆ",
    "clock11": "๐Ÿ•š",
    "clock530": "๐Ÿ• ",
    "clock5": "๐Ÿ•”",
    "clock430": "๐Ÿ•Ÿ",
    "clock4": "๐Ÿ•“",
    "clock930": "๐Ÿ•ค",
    "clock9": "๐Ÿ•˜",
    "clock130": "๐Ÿ•œ",
    "clock1": "๐Ÿ•",
    "clock730": "๐Ÿ•ข",
    "clock7": "๐Ÿ•–",
    "clock630": "๐Ÿ•ก",
    "clock6": "๐Ÿ••",
    "clock1030": "๐Ÿ•ฅ",
    "clock10": "๐Ÿ•™",
    "clock330": "๐Ÿ•ž",
    "clock3": "๐Ÿ•’",
    "clock1230": "๐Ÿ•ง",
    "clock12": "๐Ÿ•›",
    "clock230": "๐Ÿ•",
    "clock2": "๐Ÿ•‘",
    "arrows_clockwise": "๐Ÿ”ƒ",
    "repeat": "๐Ÿ”",
    "repeat_one": "๐Ÿ”‚",
    "closed_lock_with_key": "๐Ÿ”",
    "mailbox_closed": "๐Ÿ“ช",
    "mailbox": "๐Ÿ“ซ",
    "cloud_with_tornado": "๐ŸŒช",
    "cocktail": "๐Ÿธ",
    "boom": "๐Ÿ’ฅ",
    "compression": "๐Ÿ—œ",
    "confounded": "๐Ÿ˜–",
    "confused": "๐Ÿ˜•",
    "rice": "๐Ÿš",
    "cow2": "๐Ÿ„",
    "cricket_bat_and_ball": "๐Ÿ",
    "x": "โŒ",
    "cry": "๐Ÿ˜ข",
    "curry": "๐Ÿ›",
    "dagger_knife": "๐Ÿ—ก",
    "dancer": "๐Ÿ’ƒ",
    "dark_sunglasses": "๐Ÿ•ถ",
    "dash": "๐Ÿ’จ",
    "truck": "๐Ÿšš",
    "derelict_house_building": "๐Ÿš",
    "diamond_shape_with_a_dot_inside": "๐Ÿ’ ",
    "dart": "๐ŸŽฏ",
    "disappointed_relieved": "๐Ÿ˜ฅ",
    "disappointed": "๐Ÿ˜ž",
    "do_not_litter": "๐Ÿšฏ",
    "dog2": "๐Ÿ•",
    "flipper": "๐Ÿฌ",
    "loop": "โžฟ",
    "bangbang": "โ€ผ",
    "double_vertical_bar": "โธ",
    "dove_of_peace": "๐Ÿ•Š",
    "small_red_triangle_down": "๐Ÿ”ป",
    "arrow_down_small": "๐Ÿ”ฝ",
    "arrow_down": "โฌ‡",
    "dromedary_camel": "๐Ÿช",
    "e__mail": "๐Ÿ“ง",
    "corn": "๐ŸŒฝ",
    "ear_of_rice": "๐ŸŒพ",
    "earth_americas": "๐ŸŒŽ",
    "earth_asia": "๐ŸŒ",
    "earth_africa": "๐ŸŒ",
    "eight_pointed_black_star": "โœด",
    "eight_spoked_asterisk": "โœณ",
    "eject_symbol": "โ",
    "bulb": "๐Ÿ’ก",
    "emoji_modifier_fitzpatrick_type__1__2": "๐Ÿป",
    "emoji_modifier_fitzpatrick_type__3": "๐Ÿผ",
    "emoji_modifier_fitzpatrick_type__4": "๐Ÿฝ",
    "emoji_modifier_fitzpatrick_type__5": "๐Ÿพ",
    "emoji_modifier_fitzpatrick_type__6": "๐Ÿฟ",
    "end": "๐Ÿ”š",
    "email": "โœ‰",
    "european_castle": "๐Ÿฐ",
    "european_post_office": "๐Ÿค",
    "interrobang": "โ‰",
    "expressionless": "๐Ÿ˜‘",
    "eyeglasses": "๐Ÿ‘“",
    "massage": "๐Ÿ’†",
    "yum": "๐Ÿ˜‹",
    "scream": "๐Ÿ˜ฑ",
    "kissing_heart": "๐Ÿ˜˜",
    "sweat": "๐Ÿ˜“",
    "face_with_head__bandage": "๐Ÿค•",
    "triumph": "๐Ÿ˜ค",
    "mask": "๐Ÿ˜ท",
    "no_good": "๐Ÿ™…",
    "ok_woman": "๐Ÿ™†",
    "open_mouth": "๐Ÿ˜ฎ",
    "cold_sweat": "๐Ÿ˜ฐ",
    "stuck_out_tongue": "๐Ÿ˜›",
    "stuck_out_tongue_closed_eyes": "๐Ÿ˜",
    "stuck_out_tongue_winking_eye": "๐Ÿ˜œ",
    "joy": "๐Ÿ˜‚",
    "no_mouth": "๐Ÿ˜ถ",
    "santa": "๐ŸŽ…",
    "fax": "๐Ÿ“ ",
    "fearful": "๐Ÿ˜จ",
    "field_hockey_stick_and_ball": "๐Ÿ‘",
    "first_quarter_moon_with_face": "๐ŸŒ›",
    "fish_cake": "๐Ÿฅ",
    "fishing_pole_and_fish": "๐ŸŽฃ",
    "facepunch": "๐Ÿ‘Š",
    "punch": "๐Ÿ‘Š",
    "flag_for_afghanistan": "๐Ÿ‡ฆ๐Ÿ‡ซ",
    "flag_for_albania": "๐Ÿ‡ฆ๐Ÿ‡ฑ",
    "flag_for_algeria": "๐Ÿ‡ฉ๐Ÿ‡ฟ",
    "flag_for_american_samoa": "๐Ÿ‡ฆ๐Ÿ‡ธ",
    "flag_for_andorra": "๐Ÿ‡ฆ๐Ÿ‡ฉ",
    "flag_for_angola": "๐Ÿ‡ฆ๐Ÿ‡ด",
    "flag_for_anguilla": "๐Ÿ‡ฆ๐Ÿ‡ฎ",
    "flag_for_antarctica": "๐Ÿ‡ฆ๐Ÿ‡ถ",
    "flag_for_antigua_&_barbuda": "๐Ÿ‡ฆ๐Ÿ‡ฌ",
    "flag_for_argentina": "๐Ÿ‡ฆ๐Ÿ‡ท",
    "flag_for_armenia": "๐Ÿ‡ฆ๐Ÿ‡ฒ",
    "flag_for_aruba": "๐Ÿ‡ฆ๐Ÿ‡ผ",
    "flag_for_ascension_island": "๐Ÿ‡ฆ๐Ÿ‡จ",
    "flag_for_australia": "๐Ÿ‡ฆ๐Ÿ‡บ",
    "flag_for_austria": "๐Ÿ‡ฆ๐Ÿ‡น",
    "flag_for_azerbaijan": "๐Ÿ‡ฆ๐Ÿ‡ฟ",
    "flag_for_bahamas": "๐Ÿ‡ง๐Ÿ‡ธ",
    "flag_for_bahrain": "๐Ÿ‡ง๐Ÿ‡ญ",
    "flag_for_bangladesh": "๐Ÿ‡ง๐Ÿ‡ฉ",
    "flag_for_barbados": "๐Ÿ‡ง๐Ÿ‡ง",
    "flag_for_belarus": "๐Ÿ‡ง๐Ÿ‡พ",
    "flag_for_belgium": "๐Ÿ‡ง๐Ÿ‡ช",
    "flag_for_belize": "๐Ÿ‡ง๐Ÿ‡ฟ",
    "flag_for_benin": "๐Ÿ‡ง๐Ÿ‡ฏ",
    "flag_for_bermuda": "๐Ÿ‡ง๐Ÿ‡ฒ",
    "flag_for_bhutan": "๐Ÿ‡ง๐Ÿ‡น",
    "flag_for_bolivia": "๐Ÿ‡ง๐Ÿ‡ด",
    "flag_for_bosnia_&_herzegovina": "๐Ÿ‡ง๐Ÿ‡ฆ",
    "flag_for_botswana": "๐Ÿ‡ง๐Ÿ‡ผ",
    "flag_for_bouvet_island": "๐Ÿ‡ง๐Ÿ‡ป",
    "flag_for_brazil": "๐Ÿ‡ง๐Ÿ‡ท",
    "flag_for_british_indian_ocean_territory": "๐Ÿ‡ฎ๐Ÿ‡ด",
    "flag_for_british_virgin_islands": "๐Ÿ‡ป๐Ÿ‡ฌ",
    "flag_for_brunei": "๐Ÿ‡ง๐Ÿ‡ณ",
    "flag_for_bulgaria": "๐Ÿ‡ง๐Ÿ‡ฌ",
    "flag_for_burkina_faso": "๐Ÿ‡ง๐Ÿ‡ซ",
    "flag_for_burundi": "๐Ÿ‡ง๐Ÿ‡ฎ",
    "flag_for_cambodia": "๐Ÿ‡ฐ๐Ÿ‡ญ",
    "flag_for_cameroon": "๐Ÿ‡จ๐Ÿ‡ฒ",
    "flag_for_canada": "๐Ÿ‡จ๐Ÿ‡ฆ",
    "flag_for_canary_islands": "๐Ÿ‡ฎ๐Ÿ‡จ",
    "flag_for_cape_verde": "๐Ÿ‡จ๐Ÿ‡ป",
    "flag_for_caribbean_netherlands": "๐Ÿ‡ง๐Ÿ‡ถ",
    "flag_for_cayman_islands": "๐Ÿ‡ฐ๐Ÿ‡พ",
    "flag_for_central_african_republic": "๐Ÿ‡จ๐Ÿ‡ซ",
    "flag_for_ceuta_&_melilla": "๐Ÿ‡ช๐Ÿ‡ฆ",
    "flag_for_chad": "๐Ÿ‡น๐Ÿ‡ฉ",
    "flag_for_chile": "๐Ÿ‡จ๐Ÿ‡ฑ",
    "flag_for_china": "๐Ÿ‡จ๐Ÿ‡ณ",
    "flag_for_christmas_island": "๐Ÿ‡จ๐Ÿ‡ฝ",
    "flag_for_clipperton_island": "๐Ÿ‡จ๐Ÿ‡ต",
    "flag_for_cocos__islands": "๐Ÿ‡จ๐Ÿ‡จ",
    "flag_for_colombia": "๐Ÿ‡จ๐Ÿ‡ด",
    "flag_for_comoros": "๐Ÿ‡ฐ๐Ÿ‡ฒ",
    "flag_for_congo____brazzaville": "๐Ÿ‡จ๐Ÿ‡ฌ",
    "flag_for_congo____kinshasa": "๐Ÿ‡จ๐Ÿ‡ฉ",
    "flag_for_cook_islands": "๐Ÿ‡จ๐Ÿ‡ฐ",
    "flag_for_costa_rica": "๐Ÿ‡จ๐Ÿ‡ท",
    "flag_for_croatia": "๐Ÿ‡ญ๐Ÿ‡ท",
    "flag_for_cuba": "๐Ÿ‡จ๐Ÿ‡บ",
    "flag_for_curaรงao": "๐Ÿ‡จ๐Ÿ‡ผ",
    "flag_for_cyprus": "๐Ÿ‡จ๐Ÿ‡พ",
    "flag_for_czech_republic": "๐Ÿ‡จ๐Ÿ‡ฟ",
    "flag_for_cรดte_dโ€™ivoire": "๐Ÿ‡จ๐Ÿ‡ฎ",
    "flag_for_denmark": "๐Ÿ‡ฉ๐Ÿ‡ฐ",
    "flag_for_diego_garcia": "๐Ÿ‡ฉ๐Ÿ‡ฌ",
    "flag_for_djibouti": "๐Ÿ‡ฉ๐Ÿ‡ฏ",
    "flag_for_dominica": "๐Ÿ‡ฉ๐Ÿ‡ฒ",
    "flag_for_dominican_republic": "๐Ÿ‡ฉ๐Ÿ‡ด",
    "flag_for_ecuador": "๐Ÿ‡ช๐Ÿ‡จ",
    "flag_for_egypt": "๐Ÿ‡ช๐Ÿ‡ฌ",
    "flag_for_el_salvador": "๐Ÿ‡ธ๐Ÿ‡ป",
    "flag_for_equatorial_guinea": "๐Ÿ‡ฌ๐Ÿ‡ถ",
    "flag_for_eritrea": "๐Ÿ‡ช๐Ÿ‡ท",
    "flag_for_estonia": "๐Ÿ‡ช๐Ÿ‡ช",
    "flag_for_ethiopia": "๐Ÿ‡ช๐Ÿ‡น",
    "flag_for_european_union": "๐Ÿ‡ช๐Ÿ‡บ",
    "flag_for_falkland_islands": "๐Ÿ‡ซ๐Ÿ‡ฐ",
    "flag_for_faroe_islands": "๐Ÿ‡ซ๐Ÿ‡ด",
    "flag_for_fiji": "๐Ÿ‡ซ๐Ÿ‡ฏ",
    "flag_for_finland": "๐Ÿ‡ซ๐Ÿ‡ฎ",
    "flag_for_france": "๐Ÿ‡ซ๐Ÿ‡ท",
    "flag_for_french_guiana": "๐Ÿ‡ฌ๐Ÿ‡ซ",
    "flag_for_french_polynesia": "๐Ÿ‡ต๐Ÿ‡ซ",
    "flag_for_french_southern_territories": "๐Ÿ‡น๐Ÿ‡ซ",
    "flag_for_gabon": "๐Ÿ‡ฌ๐Ÿ‡ฆ",
    "flag_for_gambia": "๐Ÿ‡ฌ๐Ÿ‡ฒ",
    "flag_for_georgia": "๐Ÿ‡ฌ๐Ÿ‡ช",
    "flag_for_germany": "๐Ÿ‡ฉ๐Ÿ‡ช",
    "flag_for_ghana": "๐Ÿ‡ฌ๐Ÿ‡ญ",
    "flag_for_gibraltar": "๐Ÿ‡ฌ๐Ÿ‡ฎ",
    "flag_for_greece": "๐Ÿ‡ฌ๐Ÿ‡ท",
    "flag_for_greenland": "๐Ÿ‡ฌ๐Ÿ‡ฑ",
    "flag_for_grenada": "๐Ÿ‡ฌ๐Ÿ‡ฉ",
    "flag_for_guadeloupe": "๐Ÿ‡ฌ๐Ÿ‡ต",
    "flag_for_guam": "๐Ÿ‡ฌ๐Ÿ‡บ",
    "flag_for_guatemala": "๐Ÿ‡ฌ๐Ÿ‡น",
    "flag_for_guernsey": "๐Ÿ‡ฌ๐Ÿ‡ฌ",
    "flag_for_guinea": "๐Ÿ‡ฌ๐Ÿ‡ณ",
    "flag_for_guinea__bissau": "๐Ÿ‡ฌ๐Ÿ‡ผ",
    "flag_for_guyana": "๐Ÿ‡ฌ๐Ÿ‡พ",
    "flag_for_haiti": "๐Ÿ‡ญ๐Ÿ‡น",
    "flag_for_heard_&_mcdonald_islands": "๐Ÿ‡ญ๐Ÿ‡ฒ",
    "flag_for_honduras": "๐Ÿ‡ญ๐Ÿ‡ณ",
    "flag_for_hong_kong": "๐Ÿ‡ญ๐Ÿ‡ฐ",
    "flag_for_hungary": "๐Ÿ‡ญ๐Ÿ‡บ",
    "flag_for_iceland": "๐Ÿ‡ฎ๐Ÿ‡ธ",
    "flag_for_india": "๐Ÿ‡ฎ๐Ÿ‡ณ",
    "flag_for_indonesia": "๐Ÿ‡ฎ๐Ÿ‡ฉ",
    "flag_for_iran": "๐Ÿ‡ฎ๐Ÿ‡ท",
    "flag_for_iraq": "๐Ÿ‡ฎ๐Ÿ‡ถ",
    "flag_for_ireland": "๐Ÿ‡ฎ๐Ÿ‡ช",
    "flag_for_isle_of_man": "๐Ÿ‡ฎ๐Ÿ‡ฒ",
    "flag_for_israel": "๐Ÿ‡ฎ๐Ÿ‡ฑ",
    "flag_for_italy": "๐Ÿ‡ฎ๐Ÿ‡น",
    "flag_for_jamaica": "๐Ÿ‡ฏ๐Ÿ‡ฒ",
    "flag_for_japan": "๐Ÿ‡ฏ๐Ÿ‡ต",
    "flag_for_jersey": "๐Ÿ‡ฏ๐Ÿ‡ช",
    "flag_for_jordan": "๐Ÿ‡ฏ๐Ÿ‡ด",
    "flag_for_kazakhstan": "๐Ÿ‡ฐ๐Ÿ‡ฟ",
    "flag_for_kenya": "๐Ÿ‡ฐ๐Ÿ‡ช",
    "flag_for_kiribati": "๐Ÿ‡ฐ๐Ÿ‡ฎ",
    "flag_for_kosovo": "๐Ÿ‡ฝ๐Ÿ‡ฐ",
    "flag_for_kuwait": "๐Ÿ‡ฐ๐Ÿ‡ผ",
    "flag_for_kyrgyzstan": "๐Ÿ‡ฐ๐Ÿ‡ฌ",
    "flag_for_laos": "๐Ÿ‡ฑ๐Ÿ‡ฆ",
    "flag_for_latvia": "๐Ÿ‡ฑ๐Ÿ‡ป",
    "flag_for_lebanon": "๐Ÿ‡ฑ๐Ÿ‡ง",
    "flag_for_lesotho": "๐Ÿ‡ฑ๐Ÿ‡ธ",
    "flag_for_liberia": "๐Ÿ‡ฑ๐Ÿ‡ท",
    "flag_for_libya": "๐Ÿ‡ฑ๐Ÿ‡พ",
    "flag_for_liechtenstein": "๐Ÿ‡ฑ๐Ÿ‡ฎ",
    "flag_for_lithuania": "๐Ÿ‡ฑ๐Ÿ‡น",
    "flag_for_luxembourg": "๐Ÿ‡ฑ๐Ÿ‡บ",
    "flag_for_macau": "๐Ÿ‡ฒ๐Ÿ‡ด",
    "flag_for_macedonia": "๐Ÿ‡ฒ๐Ÿ‡ฐ",
    "flag_for_madagascar": "๐Ÿ‡ฒ๐Ÿ‡ฌ",
    "flag_for_malawi": "๐Ÿ‡ฒ๐Ÿ‡ผ",
    "flag_for_malaysia": "๐Ÿ‡ฒ๐Ÿ‡พ",
    "flag_for_maldives": "๐Ÿ‡ฒ๐Ÿ‡ป",
    "flag_for_mali": "๐Ÿ‡ฒ๐Ÿ‡ฑ",
    "flag_for_malta": "๐Ÿ‡ฒ๐Ÿ‡น",
    "flag_for_marshall_islands": "๐Ÿ‡ฒ๐Ÿ‡ญ",
    "flag_for_martinique": "๐Ÿ‡ฒ๐Ÿ‡ถ",
    "flag_for_mauritania": "๐Ÿ‡ฒ๐Ÿ‡ท",
    "flag_for_mauritius": "๐Ÿ‡ฒ๐Ÿ‡บ",
    "flag_for_mayotte": "๐Ÿ‡พ๐Ÿ‡น",
    "flag_for_mexico": "๐Ÿ‡ฒ๐Ÿ‡ฝ",
    "flag_for_micronesia": "๐Ÿ‡ซ๐Ÿ‡ฒ",
    "flag_for_moldova": "๐Ÿ‡ฒ๐Ÿ‡ฉ",
    "flag_for_monaco": "๐Ÿ‡ฒ๐Ÿ‡จ",
    "flag_for_mongolia": "๐Ÿ‡ฒ๐Ÿ‡ณ",
    "flag_for_montenegro": "๐Ÿ‡ฒ๐Ÿ‡ช",
    "flag_for_montserrat": "๐Ÿ‡ฒ๐Ÿ‡ธ",
    "flag_for_morocco": "๐Ÿ‡ฒ๐Ÿ‡ฆ",
    "flag_for_mozambique": "๐Ÿ‡ฒ๐Ÿ‡ฟ",
    "flag_for_myanmar": "๐Ÿ‡ฒ๐Ÿ‡ฒ",
    "flag_for_namibia": "๐Ÿ‡ณ๐Ÿ‡ฆ",
    "flag_for_nauru": "๐Ÿ‡ณ๐Ÿ‡ท",
    "flag_for_nepal": "๐Ÿ‡ณ๐Ÿ‡ต",
    "flag_for_netherlands": "๐Ÿ‡ณ๐Ÿ‡ฑ",
    "flag_for_new_caledonia": "๐Ÿ‡ณ๐Ÿ‡จ",
    "flag_for_new_zealand": "๐Ÿ‡ณ๐Ÿ‡ฟ",
    "flag_for_nicaragua": "๐Ÿ‡ณ๐Ÿ‡ฎ",
    "flag_for_niger": "๐Ÿ‡ณ๐Ÿ‡ช",
    "flag_for_nigeria": "๐Ÿ‡ณ๐Ÿ‡ฌ",
    "flag_for_niue": "๐Ÿ‡ณ๐Ÿ‡บ",
    "flag_for_norfolk_island": "๐Ÿ‡ณ๐Ÿ‡ซ",
    "flag_for_north_korea": "๐Ÿ‡ฐ๐Ÿ‡ต",
    "flag_for_northern_mariana_islands": "๐Ÿ‡ฒ๐Ÿ‡ต",
    "flag_for_norway": "๐Ÿ‡ณ๐Ÿ‡ด",
    "flag_for_oman": "๐Ÿ‡ด๐Ÿ‡ฒ",
    "flag_for_pakistan": "๐Ÿ‡ต๐Ÿ‡ฐ",
    "flag_for_palau": "๐Ÿ‡ต๐Ÿ‡ผ",
    "flag_for_palestinian_territories": "๐Ÿ‡ต๐Ÿ‡ธ",
    "flag_for_panama": "๐Ÿ‡ต๐Ÿ‡ฆ",
    "flag_for_papua_new_guinea": "๐Ÿ‡ต๐Ÿ‡ฌ",
    "flag_for_paraguay": "๐Ÿ‡ต๐Ÿ‡พ",
    "flag_for_peru": "๐Ÿ‡ต๐Ÿ‡ช",
    "flag_for_philippines": "๐Ÿ‡ต๐Ÿ‡ญ",
    "flag_for_pitcairn_islands": "๐Ÿ‡ต๐Ÿ‡ณ",
    "flag_for_poland": "๐Ÿ‡ต๐Ÿ‡ฑ",
    "flag_for_portugal": "๐Ÿ‡ต๐Ÿ‡น",
    "flag_for_puerto_rico": "๐Ÿ‡ต๐Ÿ‡ท",
    "flag_for_qatar": "๐Ÿ‡ถ๐Ÿ‡ฆ",
    "flag_for_romania": "๐Ÿ‡ท๐Ÿ‡ด",
    "flag_for_russia": "๐Ÿ‡ท๐Ÿ‡บ",
    "flag_for_rwanda": "๐Ÿ‡ท๐Ÿ‡ผ",
    "flag_for_rรฉunion": "๐Ÿ‡ท๐Ÿ‡ช",
    "flag_for_samoa": "๐Ÿ‡ผ๐Ÿ‡ธ",
    "flag_for_san_marino": "๐Ÿ‡ธ๐Ÿ‡ฒ",
    "flag_for_saudi_arabia": "๐Ÿ‡ธ๐Ÿ‡ฆ",
    "flag_for_senegal": "๐Ÿ‡ธ๐Ÿ‡ณ",
    "flag_for_serbia": "๐Ÿ‡ท๐Ÿ‡ธ",
    "flag_for_seychelles": "๐Ÿ‡ธ๐Ÿ‡จ",
    "flag_for_sierra_leone": "๐Ÿ‡ธ๐Ÿ‡ฑ",
    "flag_for_singapore": "๐Ÿ‡ธ๐Ÿ‡ฌ",
    "flag_for_sint_maarten": "๐Ÿ‡ธ๐Ÿ‡ฝ",
    "flag_for_slovakia": "๐Ÿ‡ธ๐Ÿ‡ฐ",
    "flag_for_slovenia": "๐Ÿ‡ธ๐Ÿ‡ฎ",
    "flag_for_solomon_islands": "๐Ÿ‡ธ๐Ÿ‡ง",
    "flag_for_somalia": "๐Ÿ‡ธ๐Ÿ‡ด",
    "flag_for_south_africa": "๐Ÿ‡ฟ๐Ÿ‡ฆ",
    "flag_for_south_georgia_&_south_sandwich_islands": "๐Ÿ‡ฌ๐Ÿ‡ธ",
    "flag_for_south_korea": "๐Ÿ‡ฐ๐Ÿ‡ท",
    "flag_for_south_sudan": "๐Ÿ‡ธ๐Ÿ‡ธ",
    "flag_for_spain": "๐Ÿ‡ช๐Ÿ‡ธ",
    "flag_for_sri_lanka": "๐Ÿ‡ฑ๐Ÿ‡ฐ",
    "flag_for_st._barthรฉlemy": "๐Ÿ‡ง๐Ÿ‡ฑ",
    "flag_for_st._helena": "๐Ÿ‡ธ๐Ÿ‡ญ",
    "flag_for_st._kitts_&_nevis": "๐Ÿ‡ฐ๐Ÿ‡ณ",
    "flag_for_st._lucia": "๐Ÿ‡ฑ๐Ÿ‡จ",
    "flag_for_st._martin": "๐Ÿ‡ฒ๐Ÿ‡ซ",
    "flag_for_st._pierre_&_miquelon": "๐Ÿ‡ต๐Ÿ‡ฒ",
    "flag_for_st._vincent_&_grenadines": "๐Ÿ‡ป๐Ÿ‡จ",
    "flag_for_sudan": "๐Ÿ‡ธ๐Ÿ‡ฉ",
    "flag_for_suriname": "๐Ÿ‡ธ๐Ÿ‡ท",
    "flag_for_svalbard_&_jan_mayen": "๐Ÿ‡ธ๐Ÿ‡ฏ",
    "flag_for_swaziland": "๐Ÿ‡ธ๐Ÿ‡ฟ",
    "flag_for_sweden": "๐Ÿ‡ธ๐Ÿ‡ช",
    "flag_for_switzerland": "๐Ÿ‡จ๐Ÿ‡ญ",
    "flag_for_syria": "๐Ÿ‡ธ๐Ÿ‡พ",
    "flag_for_sรฃo_tomรฉ_&_prรญncipe": "๐Ÿ‡ธ๐Ÿ‡น",
    "flag_for_taiwan": "๐Ÿ‡น๐Ÿ‡ผ",
    "flag_for_tajikistan": "๐Ÿ‡น๐Ÿ‡ฏ",
    "flag_for_tanzania": "๐Ÿ‡น๐Ÿ‡ฟ",
    "flag_for_thailand": "๐Ÿ‡น๐Ÿ‡ญ",
    "flag_for_timor__leste": "๐Ÿ‡น๐Ÿ‡ฑ",
    "flag_for_togo": "๐Ÿ‡น๐Ÿ‡ฌ",
    "flag_for_tokelau": "๐Ÿ‡น๐Ÿ‡ฐ",
    "flag_for_tonga": "๐Ÿ‡น๐Ÿ‡ด",
    "flag_for_trinidad_&_tobago": "๐Ÿ‡น๐Ÿ‡น",
    "flag_for_tristan_da_cunha": "๐Ÿ‡น๐Ÿ‡ฆ",
    "flag_for_tunisia": "๐Ÿ‡น๐Ÿ‡ณ",
    "flag_for_turkey": "๐Ÿ‡น๐Ÿ‡ท",
    "flag_for_turkmenistan": "๐Ÿ‡น๐Ÿ‡ฒ",
    "flag_for_turks_&_caicos_islands": "๐Ÿ‡น๐Ÿ‡จ",
    "flag_for_tuvalu": "๐Ÿ‡น๐Ÿ‡ป",
    "flag_for_u.s._outlying_islands": "๐Ÿ‡บ๐Ÿ‡ฒ",
    "flag_for_u.s._virgin_islands": "๐Ÿ‡ป๐Ÿ‡ฎ",
    "flag_for_uganda": "๐Ÿ‡บ๐Ÿ‡ฌ",
    "flag_for_ukraine": "๐Ÿ‡บ๐Ÿ‡ฆ",
    "flag_for_united_arab_emirates": "๐Ÿ‡ฆ๐Ÿ‡ช",
    "flag_for_united_kingdom": "๐Ÿ‡ฌ๐Ÿ‡ง",
    "flag_for_united_states": "๐Ÿ‡บ๐Ÿ‡ธ",
    "flag_for_uruguay": "๐Ÿ‡บ๐Ÿ‡พ",
    "flag_for_uzbekistan": "๐Ÿ‡บ๐Ÿ‡ฟ",
    "flag_for_vanuatu": "๐Ÿ‡ป๐Ÿ‡บ",
    "flag_for_vatican_city": "๐Ÿ‡ป๐Ÿ‡ฆ",
    "flag_for_venezuela": "๐Ÿ‡ป๐Ÿ‡ช",
    "flag_for_vietnam": "๐Ÿ‡ป๐Ÿ‡ณ",
    "flag_for_wallis_&_futuna": "๐Ÿ‡ผ๐Ÿ‡ซ",
    "flag_for_western_sahara": "๐Ÿ‡ช๐Ÿ‡ญ",
    "flag_for_yemen": "๐Ÿ‡พ๐Ÿ‡ช",
    "flag_for_zambia": "๐Ÿ‡ฟ๐Ÿ‡ฒ",
    "flag_for_zimbabwe": "๐Ÿ‡ฟ๐Ÿ‡ผ",
    "flag_for_รฅland_islands": "๐Ÿ‡ฆ๐Ÿ‡ฝ",
    "golf": "โ›ณ",
    "fleur__de__lis": "โšœ",
    "muscle": "๐Ÿ’ช",
    "flushed": "๐Ÿ˜ณ",
    "frame_with_picture": "๐Ÿ–ผ",
    "fries": "๐ŸŸ",
    "frog": "๐Ÿธ",
    "hatched_chick": "๐Ÿฅ",
    "frowning": "๐Ÿ˜ฆ",
    "fuelpump": "โ›ฝ",
    "full_moon_with_face": "๐ŸŒ",
    "gem": "๐Ÿ’Ž",
    "star2": "๐ŸŒŸ",
    "golfer": "๐ŸŒ",
    "mortar_board": "๐ŸŽ“",
    "grimacing": "๐Ÿ˜ฌ",
    "smile_cat": "๐Ÿ˜ธ",
    "grinning": "๐Ÿ˜€",
    "grin": "๐Ÿ˜",
    "heartpulse": "๐Ÿ’—",
    "guardsman": "๐Ÿ’‚",
    "haircut": "๐Ÿ’‡",
    "hamster": "๐Ÿน",
    "raising_hand": "๐Ÿ™‹",
    "headphones": "๐ŸŽง",
    "hear_no_evil": "๐Ÿ™‰",
    "cupid": "๐Ÿ’˜",
    "gift_heart": "๐Ÿ’",
    "heart": "โค",
    "exclamation": "โ—",
    "heavy_exclamation_mark": "โ—",
    "heavy_heart_exclamation_mark_ornament": "โฃ",
    "o": "โญ•",
    "helm_symbol": "โŽˆ",
    "helmet_with_white_cross": "โ›‘",
    "high_heel": "๐Ÿ‘ ",
    "bullettrain_side": "๐Ÿš„",
    "bullettrain_front": "๐Ÿš…",
    "high_brightness": "๐Ÿ”†",
    "zap": "โšก",
    "hocho": "๐Ÿ”ช",
    "knife": "๐Ÿ”ช",
    "bee": "๐Ÿ",
    "traffic_light": "๐Ÿšฅ",
    "racehorse": "๐ŸŽ",
    "coffee": "โ˜•",
    "hotsprings": "โ™จ",
    "hourglass": "โŒ›",
    "hourglass_flowing_sand": "โณ",
    "house_buildings": "๐Ÿ˜",
    "100": "๐Ÿ’ฏ",
    "hushed": "๐Ÿ˜ฏ",
    "ice_hockey_stick_and_puck": "๐Ÿ’",
    "imp": "๐Ÿ‘ฟ",
    "information_desk_person": "๐Ÿ’",
    "information_source": "โ„น",
    "capital_abcd": "๐Ÿ” ",
    "abc": "๐Ÿ”ค",
    "abcd": "๐Ÿ”ก",
    "1234": "๐Ÿ”ข",
    "symbols": "๐Ÿ”ฃ",
    "izakaya_lantern": "๐Ÿฎ",
    "lantern": "๐Ÿฎ",
    "jack_o_lantern": "๐ŸŽƒ",
    "dolls": "๐ŸŽŽ",
    "japanese_goblin": "๐Ÿ‘บ",
    "japanese_ogre": "๐Ÿ‘น",
    "beginner": "๐Ÿ”ฐ",
    "zero": "0๏ธโƒฃ",
    "one": "1๏ธโƒฃ",
    "ten": "๐Ÿ”Ÿ",
    "two": "2๏ธโƒฃ",
    "three": "3๏ธโƒฃ",
    "four": "4๏ธโƒฃ",
    "five": "5๏ธโƒฃ",
    "six": "6๏ธโƒฃ",
    "seven": "7๏ธโƒฃ",
    "eight": "8๏ธโƒฃ",
    "nine": "9๏ธโƒฃ",
    "couplekiss": "๐Ÿ’",
    "kissing_cat": "๐Ÿ˜ฝ",
    "kissing": "๐Ÿ˜—",
    "kissing_closed_eyes": "๐Ÿ˜š",
    "kissing_smiling_eyes": "๐Ÿ˜™",
    "beetle": "๐Ÿž",
    "large_blue_circle": "๐Ÿ”ต",
    "last_quarter_moon_with_face": "๐ŸŒœ",
    "leaves": "๐Ÿƒ",
    "mag": "๐Ÿ”",
    "left_right_arrow": "โ†”",
    "leftwards_arrow_with_hook": "โ†ฉ",
    "arrow_left": "โฌ…",
    "lock": "๐Ÿ”’",
    "lock_with_ink_pen": "๐Ÿ”",
    "sob": "๐Ÿ˜ญ",
    "low_brightness": "๐Ÿ”…",
    "lower_left_ballpoint_pen": "๐Ÿ–Š",
    "lower_left_crayon": "๐Ÿ–",
    "lower_left_fountain_pen": "๐Ÿ–‹",
    "lower_left_paintbrush": "๐Ÿ–Œ",
    "mahjong": "๐Ÿ€„",
    "couple": "๐Ÿ‘ซ",
    "man_in_business_suit_levitating": "๐Ÿ•ด",
    "man_with_gua_pi_mao": "๐Ÿ‘ฒ",
    "man_with_turban": "๐Ÿ‘ณ",
    "mans_shoe": "๐Ÿ‘ž",
    "shoe": "๐Ÿ‘ž",
    "menorah_with_nine_branches": "๐Ÿ•Ž",
    "mens": "๐Ÿšน",
    "minidisc": "๐Ÿ’ฝ",
    "iphone": "๐Ÿ“ฑ",
    "calling": "๐Ÿ“ฒ",
    "money__mouth_face": "๐Ÿค‘",
    "moneybag": "๐Ÿ’ฐ",
    "rice_scene": "๐ŸŽ‘",
    "mountain_bicyclist": "๐Ÿšต",
    "mouse2": "๐Ÿ",
    "lips": "๐Ÿ‘„",
    "moyai": "๐Ÿ—ฟ",
    "notes": "๐ŸŽถ",
    "nail_care": "๐Ÿ’…",
    "ab": "๐Ÿ†Ž",
    "negative_squared_cross_mark": "โŽ",
    "a": "๐Ÿ…ฐ",
    "b": "๐Ÿ…ฑ",
    "o2": "๐Ÿ…พ",
    "parking": "๐Ÿ…ฟ",
    "new_moon_with_face": "๐ŸŒš",
    "no_entry_sign": "๐Ÿšซ",
    "underage": "๐Ÿ”ž",
    "non__potable_water": "๐Ÿšฑ",
    "arrow_upper_right": "โ†—",
    "arrow_upper_left": "โ†–",
    "office": "๐Ÿข",
    "older_man": "๐Ÿ‘ด",
    "older_woman": "๐Ÿ‘ต",
    "om_symbol": "๐Ÿ•‰",
    "on": "๐Ÿ”›",
    "book": "๐Ÿ“–",
    "unlock": "๐Ÿ”“",
    "mailbox_with_no_mail": "๐Ÿ“ญ",
    "mailbox_with_mail": "๐Ÿ“ฌ",
    "cd": "๐Ÿ’ฟ",
    "tada": "๐ŸŽ‰",
    "feet": "๐Ÿพ",
    "walking": "๐Ÿšถ",
    "pencil2": "โœ",
    "pensive": "๐Ÿ˜”",
    "persevere": "๐Ÿ˜ฃ",
    "bow": "๐Ÿ™‡",
    "raised_hands": "๐Ÿ™Œ",
    "person_with_ball": "โ›น",
    "person_with_blond_hair": "๐Ÿ‘ฑ",
    "pray": "๐Ÿ™",
    "person_with_pouting_face": "๐Ÿ™Ž",
    "computer": "๐Ÿ’ป",
    "pig2": "๐Ÿ–",
    "hankey": "๐Ÿ’ฉ",
    "poop": "๐Ÿ’ฉ",
    "shit": "๐Ÿ’ฉ",
    "bamboo": "๐ŸŽ",
    "gun": "๐Ÿ”ซ",
    "black_joker": "๐Ÿƒ",
    "rotating_light": "๐Ÿšจ",
    "cop": "๐Ÿ‘ฎ",
    "stew": "๐Ÿฒ",
    "pouch": "๐Ÿ‘",
    "pouting_cat": "๐Ÿ˜พ",
    "rage": "๐Ÿ˜ก",
    "put_litter_in_its_place": "๐Ÿšฎ",
    "rabbit2": "๐Ÿ‡",
    "racing_motorcycle": "๐Ÿ",
    "radioactive_sign": "โ˜ข",
    "fist": "โœŠ",
    "hand": "โœ‹",
    "raised_hand_with_fingers_splayed": "๐Ÿ–",
    "raised_hand_with_part_between_middle_and_ring_fingers": "๐Ÿ––",
    "blue_car": "๐Ÿš™",
    "apple": "๐ŸŽ",
    "relieved": "๐Ÿ˜Œ",
    "reversed_hand_with_middle_finger_extended": "๐Ÿ–•",
    "mag_right": "๐Ÿ”Ž",
    "arrow_right_hook": "โ†ช",
    "sweet_potato": "๐Ÿ ",
    "robot": "๐Ÿค–",
    "rolled__up_newspaper": "๐Ÿ—ž",
    "rowboat": "๐Ÿšฃ",
    "runner": "๐Ÿƒ",
    "running": "๐Ÿƒ",
    "running_shirt_with_sash": "๐ŸŽฝ",
    "boat": "โ›ต",
    "scales": "โš–",
    "school_satchel": "๐ŸŽ’",
    "scorpius": "โ™",
    "see_no_evil": "๐Ÿ™ˆ",
    "sheep": "๐Ÿ‘",
    "stars": "๐ŸŒ ",
    "cake": "๐Ÿฐ",
    "six_pointed_star": "๐Ÿ”ฏ",
    "ski": "๐ŸŽฟ",
    "sleeping_accommodation": "๐Ÿ›Œ",
    "sleeping": "๐Ÿ˜ด",
    "sleepy": "๐Ÿ˜ช",
    "sleuth_or_spy": "๐Ÿ•ต",
    "heart_eyes_cat": "๐Ÿ˜ป",
    "smiley_cat": "๐Ÿ˜บ",
    "innocent": "๐Ÿ˜‡",
    "heart_eyes": "๐Ÿ˜",
    "smiling_imp": "๐Ÿ˜ˆ",
    "smiley": "๐Ÿ˜ƒ",
    "sweat_smile": "๐Ÿ˜…",
    "smile": "๐Ÿ˜„",
    "laughing": "๐Ÿ˜†",
    "satisfied": "๐Ÿ˜†",
    "blush": "๐Ÿ˜Š",
    "smirk": "๐Ÿ˜",
    "smoking": "๐Ÿšฌ",
    "snow_capped_mountain": "๐Ÿ”",
    "soccer": "โšฝ",
    "icecream": "๐Ÿฆ",
    "soon": "๐Ÿ”œ",
    "arrow_lower_right": "โ†˜",
    "arrow_lower_left": "โ†™",
    "speak_no_evil": "๐Ÿ™Š",
    "speaker": "๐Ÿ”ˆ",
    "mute": "๐Ÿ”‡",
    "sound": "๐Ÿ”‰",
    "loud_sound": "๐Ÿ”Š",
    "speaking_head_in_silhouette": "๐Ÿ—ฃ",
    "spiral_calendar_pad": "๐Ÿ—“",
    "spiral_note_pad": "๐Ÿ—’",
    "shell": "๐Ÿš",
    "sweat_drops": "๐Ÿ’ฆ",
    "u5272": "๐Ÿˆน",
    "u5408": "๐Ÿˆด",
    "u55b6": "๐Ÿˆบ",
    "u6307": "๐Ÿˆฏ",
    "u6708": "๐Ÿˆท",
    "u6709": "๐Ÿˆถ",
    "u6e80": "๐Ÿˆต",
    "u7121": "๐Ÿˆš",
    "u7533": "๐Ÿˆธ",
    "u7981": "๐Ÿˆฒ",
    "u7a7a": "๐Ÿˆณ",
    "cl": "๐Ÿ†‘",
    "cool": "๐Ÿ†’",
    "free": "๐Ÿ†“",
    "id": "๐Ÿ†”",
    "koko": "๐Ÿˆ",
    "sa": "๐Ÿˆ‚",
    "new": "๐Ÿ†•",
    "ng": "๐Ÿ†–",
    "ok": "๐Ÿ†—",
    "sos": "๐Ÿ†˜",
    "up": "๐Ÿ†™",
    "vs": "๐Ÿ†š",
    "steam_locomotive": "๐Ÿš‚",
    "ramen": "๐Ÿœ",
    "partly_sunny": "โ›…",
    "city_sunrise": "๐ŸŒ‡",
    "surfer": "๐Ÿ„",
    "swimmer": "๐ŸŠ",
    "shirt": "๐Ÿ‘•",
    "tshirt": "๐Ÿ‘•",
    "table_tennis_paddle_and_ball": "๐Ÿ“",
    "tea": "๐Ÿต",
    "tv": "๐Ÿ“บ",
    "three_button_mouse": "๐Ÿ–ฑ",
    "+1": "๐Ÿ‘",
    "thumbsup": "๐Ÿ‘",
    "__1": "๐Ÿ‘Ž",
    "-1": "๐Ÿ‘Ž",
    "thumbsdown": "๐Ÿ‘Ž",
    "thunder_cloud_and_rain": "โ›ˆ",
    "tiger2": "๐Ÿ…",
    "tophat": "๐ŸŽฉ",
    "top": "๐Ÿ”",
    "tm": "โ„ข",
    "train2": "๐Ÿš†",
    "triangular_flag_on_post": "๐Ÿšฉ",
    "trident": "๐Ÿ”ฑ",
    "twisted_rightwards_arrows": "๐Ÿ”€",
    "unamused": "๐Ÿ˜’",
    "small_red_triangle": "๐Ÿ”บ",
    "arrow_up_small": "๐Ÿ”ผ",
    "arrow_up_down": "โ†•",
    "upside__down_face": "๐Ÿ™ƒ",
    "arrow_up": "โฌ†",
    "v": "โœŒ",
    "vhs": "๐Ÿ“ผ",
    "wc": "๐Ÿšพ",
    "ocean": "๐ŸŒŠ",
    "waving_black_flag": "๐Ÿด",
    "wave": "๐Ÿ‘‹",
    "waving_white_flag": "๐Ÿณ",
    "moon": "๐ŸŒ”",
    "scream_cat": "๐Ÿ™€",
    "weary": "๐Ÿ˜ฉ",
    "weight_lifter": "๐Ÿ‹",
    "whale2": "๐Ÿ‹",
    "wheelchair": "โ™ฟ",
    "point_down": "๐Ÿ‘‡",
    "grey_exclamation": "โ•",
    "white_frowning_face": "โ˜น",
    "white_check_mark": "โœ…",
    "point_left": "๐Ÿ‘ˆ",
    "white_medium_small_square": "โ—ฝ",
    "star": "โญ",
    "grey_question": "โ”",
    "point_right": "๐Ÿ‘‰",
    "relaxed": "โ˜บ",
    "white_sun_behind_cloud": "๐ŸŒฅ",
    "white_sun_behind_cloud_with_rain": "๐ŸŒฆ",
    "white_sun_with_small_cloud": "๐ŸŒค",
    "point_up_2": "๐Ÿ‘†",
    "point_up": "โ˜",
    "wind_blowing_face": "๐ŸŒฌ",
    "wink": "๐Ÿ˜‰",
    "wolf": "๐Ÿบ",
    "dancers": "๐Ÿ‘ฏ",
    "boot": "๐Ÿ‘ข",
    "womans_clothes": "๐Ÿ‘š",
    "womans_hat": "๐Ÿ‘’",
    "sandal": "๐Ÿ‘ก",
    "womens": "๐Ÿšบ",
    "worried": "๐Ÿ˜Ÿ",
    "gift": "๐ŸŽ",
    "zipper__mouth_face": "๐Ÿค",
    "regional_indicator_a": "๐Ÿ‡ฆ",
    "regional_indicator_b": "๐Ÿ‡ง",
    "regional_indicator_c": "๐Ÿ‡จ",
    "regional_indicator_d": "๐Ÿ‡ฉ",
    "regional_indicator_e": "๐Ÿ‡ช",
    "regional_indicator_f": "๐Ÿ‡ซ",
    "regional_indicator_g": "๐Ÿ‡ฌ",
    "regional_indicator_h": "๐Ÿ‡ญ",
    "regional_indicator_i": "๐Ÿ‡ฎ",
    "regional_indicator_j": "๐Ÿ‡ฏ",
    "regional_indicator_k": "๐Ÿ‡ฐ",
    "regional_indicator_l": "๐Ÿ‡ฑ",
    "regional_indicator_m": "๐Ÿ‡ฒ",
    "regional_indicator_n": "๐Ÿ‡ณ",
    "regional_indicator_o": "๐Ÿ‡ด",
    "regional_indicator_p": "๐Ÿ‡ต",
    "regional_indicator_q": "๐Ÿ‡ถ",
    "regional_indicator_r": "๐Ÿ‡ท",
    "regional_indicator_s": "๐Ÿ‡ธ",
    "regional_indicator_t": "๐Ÿ‡น",
    "regional_indicator_u": "๐Ÿ‡บ",
    "regional_indicator_v": "๐Ÿ‡ป",
    "regional_indicator_w": "๐Ÿ‡ผ",
    "regional_indicator_x": "๐Ÿ‡ฝ",
    "regional_indicator_y": "๐Ÿ‡พ",
    "regional_indicator_z": "๐Ÿ‡ฟ",
}
3,611 linesโ€ข136.9 KB
python
๐Ÿš€ Support RSK World

Subscribe to our YouTube channel for latest tutorials & updates!



Click subscribe & support our work โค๏ธ

About RSK World

Founded by Molla Samser, with Designer & Tester Rima Khatun, RSK World is your one-stop destination for free programming resources, source code, and development tools.

Founder: Molla Samser
Designer & Tester: Rima Khatun

Development

  • Game Development
  • Web Development
  • Mobile Development
  • AI Development
  • Development Tools

Legal

  • Terms & Conditions
  • Privacy Policy
  • Disclaimer

Contact Info

Nutanhat, Mongolkote
Purba Burdwan, West Bengal
India, 713147

+91 93305 39277

hello@rskworld.in
support@rskworld.in

© 2026 RSK World. All rights reserved.

Content used for educational purposes only. View Disclaimer