@algenium/blocks 1.13.0 → 1.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +160 -0
- package/dist/index.cjs +1752 -168
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +291 -7
- package/dist/index.d.ts +291 -7
- package/dist/index.js +1600 -26
- package/dist/index.js.map +1 -1
- package/package.json +15 -5
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var React7 = require('react');
|
|
5
5
|
var lucideReact = require('lucide-react');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
var nextThemes = require('next-themes');
|
|
@@ -39,7 +39,7 @@ function _interopNamespace(e) {
|
|
|
39
39
|
return Object.freeze(n);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
var
|
|
42
|
+
var React7__namespace = /*#__PURE__*/_interopNamespace(React7);
|
|
43
43
|
var DropdownMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(DropdownMenuPrimitive);
|
|
44
44
|
var SliderPrimitive__namespace = /*#__PURE__*/_interopNamespace(SliderPrimitive);
|
|
45
45
|
var TogglePrimitive__namespace = /*#__PURE__*/_interopNamespace(TogglePrimitive);
|
|
@@ -49,15 +49,15 @@ var ScrollAreaPrimitive__namespace = /*#__PURE__*/_interopNamespace(ScrollAreaPr
|
|
|
49
49
|
var TooltipPrimitive__namespace = /*#__PURE__*/_interopNamespace(TooltipPrimitive);
|
|
50
50
|
var valid__default = /*#__PURE__*/_interopDefault(valid);
|
|
51
51
|
|
|
52
|
-
var CalendarContext =
|
|
52
|
+
var CalendarContext = React7.createContext(null);
|
|
53
53
|
function useCalendarContext() {
|
|
54
|
-
return
|
|
54
|
+
return React7.useContext(CalendarContext);
|
|
55
55
|
}
|
|
56
|
-
var ChatSidebarContext =
|
|
56
|
+
var ChatSidebarContext = React7.createContext(
|
|
57
57
|
null
|
|
58
58
|
);
|
|
59
59
|
function useChatSidebar() {
|
|
60
|
-
const ctx =
|
|
60
|
+
const ctx = React7.useContext(ChatSidebarContext);
|
|
61
61
|
if (!ctx) {
|
|
62
62
|
throw new Error("useChatSidebar must be used within a ChatSidebarProvider");
|
|
63
63
|
}
|
|
@@ -65,13 +65,13 @@ function useChatSidebar() {
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
// src/contexts/index.ts
|
|
68
|
-
var NotificationsContext =
|
|
68
|
+
var NotificationsContext = React7.createContext(null);
|
|
69
69
|
function useNotificationsContext() {
|
|
70
|
-
return
|
|
70
|
+
return React7.useContext(NotificationsContext);
|
|
71
71
|
}
|
|
72
|
-
var LanguageContext =
|
|
72
|
+
var LanguageContext = React7.createContext(null);
|
|
73
73
|
function useLanguageContext() {
|
|
74
|
-
return
|
|
74
|
+
return React7.useContext(LanguageContext);
|
|
75
75
|
}
|
|
76
76
|
var BLOCKS_DATA_ENVIRONMENTS = [
|
|
77
77
|
"production",
|
|
@@ -81,11 +81,11 @@ var BLOCKS_DATA_ENVIRONMENTS = [
|
|
|
81
81
|
function isBlocksDataEnvironment(value) {
|
|
82
82
|
return BLOCKS_DATA_ENVIRONMENTS.includes(value);
|
|
83
83
|
}
|
|
84
|
-
var EnvironmentContext =
|
|
84
|
+
var EnvironmentContext = React7.createContext(
|
|
85
85
|
null
|
|
86
86
|
);
|
|
87
87
|
function useEnvironmentContext() {
|
|
88
|
-
return
|
|
88
|
+
return React7.useContext(EnvironmentContext);
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
// node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
|
|
@@ -3549,17 +3549,17 @@ function ThemeSwitcher({
|
|
|
3549
3549
|
labels: userLabels
|
|
3550
3550
|
}) {
|
|
3551
3551
|
const { theme, setTheme } = nextThemes.useTheme();
|
|
3552
|
-
const [mounted, setMounted] =
|
|
3552
|
+
const [mounted, setMounted] = React7.useState(false);
|
|
3553
3553
|
const sizes = sizeClasses[size];
|
|
3554
3554
|
const shapeClass = shapeClasses[shape];
|
|
3555
3555
|
const labels = { ...defaultLabels, ...userLabels };
|
|
3556
|
-
const handleThemeClick =
|
|
3556
|
+
const handleThemeClick = React7.useCallback(
|
|
3557
3557
|
(themeKey) => {
|
|
3558
3558
|
setTheme(themeKey);
|
|
3559
3559
|
},
|
|
3560
3560
|
[setTheme]
|
|
3561
3561
|
);
|
|
3562
|
-
|
|
3562
|
+
React7.useEffect(() => {
|
|
3563
3563
|
setMounted(true);
|
|
3564
3564
|
}, []);
|
|
3565
3565
|
if (!mounted) {
|
|
@@ -4295,9 +4295,9 @@ function EnvironmentBanner({
|
|
|
4295
4295
|
}) {
|
|
4296
4296
|
const ctx = useEnvironmentContext();
|
|
4297
4297
|
const labels = { ...defaultLabels4, ...userLabels };
|
|
4298
|
-
const [dismissed, setDismissed] =
|
|
4298
|
+
const [dismissed, setDismissed] = React7.useState(false);
|
|
4299
4299
|
const environment = propEnvironment ?? ctx?.environment ?? "production";
|
|
4300
|
-
const handleDismiss =
|
|
4300
|
+
const handleDismiss = React7.useCallback(() => {
|
|
4301
4301
|
setDismissed(true);
|
|
4302
4302
|
}, []);
|
|
4303
4303
|
if (!enabled || dismissed || environment === "production") {
|
|
@@ -4341,7 +4341,7 @@ function Slider({
|
|
|
4341
4341
|
max = 100,
|
|
4342
4342
|
...props
|
|
4343
4343
|
}) {
|
|
4344
|
-
const _values =
|
|
4344
|
+
const _values = React7__namespace.useMemo(
|
|
4345
4345
|
() => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
|
|
4346
4346
|
[value, defaultValue, min, max]
|
|
4347
4347
|
);
|
|
@@ -4435,18 +4435,18 @@ function AvatarEditor({
|
|
|
4435
4435
|
className,
|
|
4436
4436
|
controlSize = "default"
|
|
4437
4437
|
}) {
|
|
4438
|
-
const canvasRef =
|
|
4439
|
-
const fileInputRef =
|
|
4440
|
-
const containerRef =
|
|
4441
|
-
const [image, setImage] =
|
|
4442
|
-
const [imageLoaded, setImageLoaded] =
|
|
4443
|
-
const [zoom, setZoom] =
|
|
4444
|
-
const [rotation, setRotation] =
|
|
4445
|
-
const [position, setPosition] =
|
|
4446
|
-
const [isDragging, setIsDragging] =
|
|
4447
|
-
const [dragStart, setDragStart] =
|
|
4448
|
-
const [showGrid, setShowGrid] =
|
|
4449
|
-
const generateOutput =
|
|
4438
|
+
const canvasRef = React7.useRef(null);
|
|
4439
|
+
const fileInputRef = React7.useRef(null);
|
|
4440
|
+
const containerRef = React7.useRef(null);
|
|
4441
|
+
const [image, setImage] = React7.useState(null);
|
|
4442
|
+
const [imageLoaded, setImageLoaded] = React7.useState(false);
|
|
4443
|
+
const [zoom, setZoom] = React7.useState(1);
|
|
4444
|
+
const [rotation, setRotation] = React7.useState(0);
|
|
4445
|
+
const [position, setPosition] = React7.useState({ x: 0, y: 0 });
|
|
4446
|
+
const [isDragging, setIsDragging] = React7.useState(false);
|
|
4447
|
+
const [dragStart, setDragStart] = React7.useState({ x: 0, y: 0 });
|
|
4448
|
+
const [showGrid, setShowGrid] = React7.useState(initialShowGrid);
|
|
4449
|
+
const generateOutput = React7.useCallback(() => {
|
|
4450
4450
|
if (!canvasRef.current || !image) return null;
|
|
4451
4451
|
const outputCanvas = document.createElement("canvas");
|
|
4452
4452
|
outputCanvas.width = outputSize;
|
|
@@ -4457,7 +4457,7 @@ function AvatarEditor({
|
|
|
4457
4457
|
const mimeType = `image/${outputFormat}`;
|
|
4458
4458
|
return outputCanvas.toDataURL(mimeType, outputQuality);
|
|
4459
4459
|
}, [image, outputSize, outputFormat, outputQuality]);
|
|
4460
|
-
|
|
4460
|
+
React7.useEffect(() => {
|
|
4461
4461
|
if (!canvasRef.current || !image || !imageLoaded) return;
|
|
4462
4462
|
const canvas = canvasRef.current;
|
|
4463
4463
|
const ctx = canvas.getContext("2d");
|
|
@@ -4525,12 +4525,12 @@ function AvatarEditor({
|
|
|
4525
4525
|
generateOutput,
|
|
4526
4526
|
onChange
|
|
4527
4527
|
]);
|
|
4528
|
-
const resetTransforms =
|
|
4528
|
+
const resetTransforms = React7.useCallback(() => {
|
|
4529
4529
|
setZoom(1);
|
|
4530
4530
|
setRotation(0);
|
|
4531
4531
|
setPosition({ x: 0, y: 0 });
|
|
4532
4532
|
}, []);
|
|
4533
|
-
const handleFileSelect =
|
|
4533
|
+
const handleFileSelect = React7.useCallback(
|
|
4534
4534
|
(e) => {
|
|
4535
4535
|
const file = e.target.files?.[0];
|
|
4536
4536
|
if (!file) return;
|
|
@@ -4549,7 +4549,7 @@ function AvatarEditor({
|
|
|
4549
4549
|
},
|
|
4550
4550
|
[resetTransforms]
|
|
4551
4551
|
);
|
|
4552
|
-
const handleMouseDown =
|
|
4552
|
+
const handleMouseDown = React7.useCallback(
|
|
4553
4553
|
(e) => {
|
|
4554
4554
|
if (!imageLoaded) return;
|
|
4555
4555
|
setIsDragging(true);
|
|
@@ -4557,7 +4557,7 @@ function AvatarEditor({
|
|
|
4557
4557
|
},
|
|
4558
4558
|
[imageLoaded, position]
|
|
4559
4559
|
);
|
|
4560
|
-
const handleMouseMove =
|
|
4560
|
+
const handleMouseMove = React7.useCallback(
|
|
4561
4561
|
(e) => {
|
|
4562
4562
|
if (!isDragging) return;
|
|
4563
4563
|
setPosition({
|
|
@@ -4567,10 +4567,10 @@ function AvatarEditor({
|
|
|
4567
4567
|
},
|
|
4568
4568
|
[isDragging, dragStart]
|
|
4569
4569
|
);
|
|
4570
|
-
const handleMouseUp =
|
|
4570
|
+
const handleMouseUp = React7.useCallback(() => {
|
|
4571
4571
|
setIsDragging(false);
|
|
4572
4572
|
}, []);
|
|
4573
|
-
const handleTouchStart =
|
|
4573
|
+
const handleTouchStart = React7.useCallback(
|
|
4574
4574
|
(e) => {
|
|
4575
4575
|
if (!imageLoaded) return;
|
|
4576
4576
|
const touch = e.touches[0];
|
|
@@ -4582,7 +4582,7 @@ function AvatarEditor({
|
|
|
4582
4582
|
},
|
|
4583
4583
|
[imageLoaded, position]
|
|
4584
4584
|
);
|
|
4585
|
-
const handleTouchMove =
|
|
4585
|
+
const handleTouchMove = React7.useCallback(
|
|
4586
4586
|
(e) => {
|
|
4587
4587
|
if (!isDragging) return;
|
|
4588
4588
|
const touch = e.touches[0];
|
|
@@ -4593,7 +4593,7 @@ function AvatarEditor({
|
|
|
4593
4593
|
},
|
|
4594
4594
|
[isDragging, dragStart]
|
|
4595
4595
|
);
|
|
4596
|
-
const handleDiscard =
|
|
4596
|
+
const handleDiscard = React7.useCallback(() => {
|
|
4597
4597
|
setImage(null);
|
|
4598
4598
|
setImageLoaded(false);
|
|
4599
4599
|
resetTransforms();
|
|
@@ -5165,8 +5165,8 @@ function DrawerDescription({
|
|
|
5165
5165
|
);
|
|
5166
5166
|
}
|
|
5167
5167
|
function useMediaQuery(query) {
|
|
5168
|
-
const [matches, setMatches] =
|
|
5169
|
-
|
|
5168
|
+
const [matches, setMatches] = React7.useState(false);
|
|
5169
|
+
React7.useEffect(() => {
|
|
5170
5170
|
const media = window.matchMedia(query);
|
|
5171
5171
|
if (media.matches !== matches) {
|
|
5172
5172
|
setMatches(media.matches);
|
|
@@ -5193,13 +5193,13 @@ function AvatarEditorDialog({
|
|
|
5193
5193
|
errorMessage = "Failed to save avatar. Please try again.",
|
|
5194
5194
|
className
|
|
5195
5195
|
}) {
|
|
5196
|
-
const [isOpen, setIsOpen] =
|
|
5197
|
-
const [editedValue, setEditedValue] =
|
|
5198
|
-
const [isSaving, setIsSaving] =
|
|
5199
|
-
const [feedback, setFeedback] =
|
|
5196
|
+
const [isOpen, setIsOpen] = React7.useState(false);
|
|
5197
|
+
const [editedValue, setEditedValue] = React7.useState(value ?? null);
|
|
5198
|
+
const [isSaving, setIsSaving] = React7.useState(false);
|
|
5199
|
+
const [feedback, setFeedback] = React7.useState(null);
|
|
5200
5200
|
const isMobile = useMediaQuery("(max-width: 640px)");
|
|
5201
5201
|
const caption = (placeholder ?? "").trim();
|
|
5202
|
-
const handleOpenChange =
|
|
5202
|
+
const handleOpenChange = React7.useCallback(
|
|
5203
5203
|
(open) => {
|
|
5204
5204
|
if (open) {
|
|
5205
5205
|
setEditedValue(value ?? null);
|
|
@@ -5209,7 +5209,7 @@ function AvatarEditorDialog({
|
|
|
5209
5209
|
},
|
|
5210
5210
|
[value]
|
|
5211
5211
|
);
|
|
5212
|
-
const handleAccept =
|
|
5212
|
+
const handleAccept = React7.useCallback(async () => {
|
|
5213
5213
|
if (!editedValue) return;
|
|
5214
5214
|
setIsSaving(true);
|
|
5215
5215
|
setFeedback(null);
|
|
@@ -5585,33 +5585,33 @@ function NotificationsWidget({
|
|
|
5585
5585
|
const onDismiss = propOnDismiss ?? context?.dismiss;
|
|
5586
5586
|
const onClearAll = propOnClearAll ?? context?.clearAll;
|
|
5587
5587
|
const onNotificationClick = propOnNotificationClick ?? context?.onNotificationClick;
|
|
5588
|
-
const [isOpen, setIsOpen] =
|
|
5589
|
-
const [prevCount, setPrevCount] =
|
|
5590
|
-
const lastSoundPlayedRef =
|
|
5588
|
+
const [isOpen, setIsOpen] = React7__namespace.useState(false);
|
|
5589
|
+
const [prevCount, setPrevCount] = React7__namespace.useState(0);
|
|
5590
|
+
const lastSoundPlayedRef = React7__namespace.useRef(0);
|
|
5591
5591
|
const styles = sizeConfig[size];
|
|
5592
5592
|
const dotBgColor = dotColorConfig[dotColor];
|
|
5593
|
-
const [optimisticReadIds, setOptimisticReadIds] =
|
|
5593
|
+
const [optimisticReadIds, setOptimisticReadIds] = React7__namespace.useState(
|
|
5594
5594
|
/* @__PURE__ */ new Set()
|
|
5595
5595
|
);
|
|
5596
|
-
const processingIdsRef =
|
|
5597
|
-
const intersectedIdsRef =
|
|
5598
|
-
const scrollContainerRef =
|
|
5599
|
-
const getIsRead =
|
|
5596
|
+
const processingIdsRef = React7__namespace.useRef(/* @__PURE__ */ new Set());
|
|
5597
|
+
const intersectedIdsRef = React7__namespace.useRef(/* @__PURE__ */ new Set());
|
|
5598
|
+
const scrollContainerRef = React7__namespace.useRef(null);
|
|
5599
|
+
const getIsRead = React7__namespace.useCallback(
|
|
5600
5600
|
(notification) => {
|
|
5601
5601
|
return notification.read || optimisticReadIds.has(notification.id);
|
|
5602
5602
|
},
|
|
5603
5603
|
[optimisticReadIds]
|
|
5604
5604
|
);
|
|
5605
|
-
const notificationsRef =
|
|
5606
|
-
const getIsReadRef =
|
|
5607
|
-
|
|
5605
|
+
const notificationsRef = React7__namespace.useRef(notifications);
|
|
5606
|
+
const getIsReadRef = React7__namespace.useRef(getIsRead);
|
|
5607
|
+
React7__namespace.useEffect(() => {
|
|
5608
5608
|
notificationsRef.current = notifications;
|
|
5609
5609
|
}, [notifications]);
|
|
5610
|
-
|
|
5610
|
+
React7__namespace.useEffect(() => {
|
|
5611
5611
|
getIsReadRef.current = getIsRead;
|
|
5612
5612
|
}, [getIsRead]);
|
|
5613
5613
|
const unreadCount = notifications.filter((n) => !getIsRead(n)).length;
|
|
5614
|
-
|
|
5614
|
+
React7__namespace.useEffect(() => {
|
|
5615
5615
|
setOptimisticReadIds((prev) => {
|
|
5616
5616
|
const next = new Set(prev);
|
|
5617
5617
|
let changed = false;
|
|
@@ -5631,7 +5631,7 @@ function NotificationsWidget({
|
|
|
5631
5631
|
return changed ? next : prev;
|
|
5632
5632
|
});
|
|
5633
5633
|
}, [notifications]);
|
|
5634
|
-
const sortedNotifications =
|
|
5634
|
+
const sortedNotifications = React7__namespace.useMemo(
|
|
5635
5635
|
() => [...notifications].sort(
|
|
5636
5636
|
(a, b) => b.timestamp.getTime() - a.timestamp.getTime()
|
|
5637
5637
|
),
|
|
@@ -5640,7 +5640,7 @@ function NotificationsWidget({
|
|
|
5640
5640
|
const notificationHeight = 72;
|
|
5641
5641
|
const maxListHeight = Math.min(maxVisible, 5) * notificationHeight;
|
|
5642
5642
|
const hasMore = sortedNotifications.length > maxVisible;
|
|
5643
|
-
|
|
5643
|
+
React7__namespace.useEffect(() => {
|
|
5644
5644
|
if (playSound && soundType !== "none" && unreadCount > prevCount) {
|
|
5645
5645
|
const now = Date.now();
|
|
5646
5646
|
if (now - lastSoundPlayedRef.current >= soundCooldown) {
|
|
@@ -5650,7 +5650,7 @@ function NotificationsWidget({
|
|
|
5650
5650
|
}
|
|
5651
5651
|
setPrevCount(unreadCount);
|
|
5652
5652
|
}, [unreadCount, prevCount, soundType, soundUrl, soundCooldown, playSound]);
|
|
5653
|
-
const handleMarkAsRead =
|
|
5653
|
+
const handleMarkAsRead = React7__namespace.useCallback(
|
|
5654
5654
|
async (notificationId) => {
|
|
5655
5655
|
if (!onMarkAsRead) return;
|
|
5656
5656
|
if (processingIdsRef.current.has(notificationId)) return;
|
|
@@ -5676,7 +5676,7 @@ function NotificationsWidget({
|
|
|
5676
5676
|
},
|
|
5677
5677
|
[onMarkAsRead]
|
|
5678
5678
|
);
|
|
5679
|
-
const handleMarkAllAsRead =
|
|
5679
|
+
const handleMarkAllAsRead = React7__namespace.useCallback(async () => {
|
|
5680
5680
|
if (!onMarkAllAsRead) return;
|
|
5681
5681
|
const unreadIds = notifications.filter((n) => !getIsRead(n)).map((n) => n.id);
|
|
5682
5682
|
if (unreadIds.length === 0) return;
|
|
@@ -5695,7 +5695,7 @@ function NotificationsWidget({
|
|
|
5695
5695
|
});
|
|
5696
5696
|
}
|
|
5697
5697
|
}, [notifications, onMarkAllAsRead, getIsRead]);
|
|
5698
|
-
|
|
5698
|
+
React7__namespace.useEffect(() => {
|
|
5699
5699
|
if (!isOpen || !onMarkAsRead) return;
|
|
5700
5700
|
intersectedIdsRef.current.clear();
|
|
5701
5701
|
const timeoutId = setTimeout(() => {
|
|
@@ -6111,7 +6111,7 @@ function CalendarSubscribeButton({
|
|
|
6111
6111
|
feedUrl,
|
|
6112
6112
|
label
|
|
6113
6113
|
}) {
|
|
6114
|
-
const [copied, setCopied] =
|
|
6114
|
+
const [copied, setCopied] = React7.useState(false);
|
|
6115
6115
|
const webcalUrl = feedUrl.replace(/^https?:\/\//, "webcal://");
|
|
6116
6116
|
const handleCopy = async () => {
|
|
6117
6117
|
try {
|
|
@@ -6196,9 +6196,9 @@ function CalendarView({
|
|
|
6196
6196
|
labels = {},
|
|
6197
6197
|
className
|
|
6198
6198
|
}) {
|
|
6199
|
-
const [viewMode, setViewMode] =
|
|
6200
|
-
const [currentDate, setCurrentDate] =
|
|
6201
|
-
const [selectedDate, setSelectedDate] =
|
|
6199
|
+
const [viewMode, setViewMode] = React7.useState("month");
|
|
6200
|
+
const [currentDate, setCurrentDate] = React7.useState(/* @__PURE__ */ new Date());
|
|
6201
|
+
const [selectedDate, setSelectedDate] = React7.useState();
|
|
6202
6202
|
const navigateBack = () => {
|
|
6203
6203
|
if (viewMode === "month") {
|
|
6204
6204
|
setCurrentDate((d) => dateFns.subMonths(d, 1));
|
|
@@ -6225,7 +6225,7 @@ function CalendarView({
|
|
|
6225
6225
|
setSelectedDate(date);
|
|
6226
6226
|
onDateSelect?.(date);
|
|
6227
6227
|
};
|
|
6228
|
-
const eventsByDate =
|
|
6228
|
+
const eventsByDate = React7.useMemo(() => {
|
|
6229
6229
|
const map = /* @__PURE__ */ new Map();
|
|
6230
6230
|
for (const event of events) {
|
|
6231
6231
|
const key = new Date(event.dtstart).toDateString();
|
|
@@ -6235,7 +6235,7 @@ function CalendarView({
|
|
|
6235
6235
|
}
|
|
6236
6236
|
return map;
|
|
6237
6237
|
}, [events]);
|
|
6238
|
-
const visibleDays =
|
|
6238
|
+
const visibleDays = React7.useMemo(() => {
|
|
6239
6239
|
if (viewMode === "month") {
|
|
6240
6240
|
const monthStart = dateFns.startOfMonth(currentDate);
|
|
6241
6241
|
const monthEnd = dateFns.endOfMonth(currentDate);
|
|
@@ -6471,17 +6471,17 @@ function EventDialog({
|
|
|
6471
6471
|
labels = {}
|
|
6472
6472
|
}) {
|
|
6473
6473
|
const isEdit = !!event?.id;
|
|
6474
|
-
const [summary, setSummary] =
|
|
6475
|
-
const [description, setDescription] =
|
|
6476
|
-
const [location, setLocation] =
|
|
6477
|
-
const [dtstart, setDtstart] =
|
|
6474
|
+
const [summary, setSummary] = React7.useState(event?.summary ?? "");
|
|
6475
|
+
const [description, setDescription] = React7.useState(event?.description ?? "");
|
|
6476
|
+
const [location, setLocation] = React7.useState(event?.location ?? "");
|
|
6477
|
+
const [dtstart, setDtstart] = React7.useState(
|
|
6478
6478
|
event?.dtstart ? new Date(event.dtstart).toISOString().slice(0, 16) : ""
|
|
6479
6479
|
);
|
|
6480
|
-
const [dtend, setDtend] =
|
|
6480
|
+
const [dtend, setDtend] = React7.useState(
|
|
6481
6481
|
event?.dtend ? new Date(event.dtend).toISOString().slice(0, 16) : ""
|
|
6482
6482
|
);
|
|
6483
|
-
const [allDay, setAllDay] =
|
|
6484
|
-
const [saving, setSaving] =
|
|
6483
|
+
const [allDay, setAllDay] = React7.useState(event?.allDay ?? false);
|
|
6484
|
+
const [saving, setSaving] = React7.useState(false);
|
|
6485
6485
|
const handleSave = async () => {
|
|
6486
6486
|
if (!summary.trim() || !dtstart || !dtend) return;
|
|
6487
6487
|
setSaving(true);
|
|
@@ -6680,7 +6680,7 @@ function EventRsvpBadge({
|
|
|
6680
6680
|
onRsvp,
|
|
6681
6681
|
className
|
|
6682
6682
|
}) {
|
|
6683
|
-
const [loading, setLoading] =
|
|
6683
|
+
const [loading, setLoading] = React7.useState(null);
|
|
6684
6684
|
const status = currentStatus?.toUpperCase() || "NEEDS-ACTION";
|
|
6685
6685
|
const handleRsvp = async (partstat) => {
|
|
6686
6686
|
if (partstat === status) return;
|
|
@@ -6718,7 +6718,7 @@ function ChatSidebarProvider({
|
|
|
6718
6718
|
children,
|
|
6719
6719
|
defaultOpen
|
|
6720
6720
|
}) {
|
|
6721
|
-
const [isOpen, setIsOpen] =
|
|
6721
|
+
const [isOpen, setIsOpen] = React7.useState(() => {
|
|
6722
6722
|
if (defaultOpen !== void 0) return defaultOpen;
|
|
6723
6723
|
if (typeof window === "undefined") return false;
|
|
6724
6724
|
try {
|
|
@@ -6727,21 +6727,21 @@ function ChatSidebarProvider({
|
|
|
6727
6727
|
return false;
|
|
6728
6728
|
}
|
|
6729
6729
|
});
|
|
6730
|
-
const [view, setView] =
|
|
6731
|
-
const [conversations, setConversations] =
|
|
6732
|
-
const [isLoading, setIsLoading] =
|
|
6733
|
-
const [activeCaseId, setActiveCaseId] =
|
|
6734
|
-
const [activeRoomId, setActiveRoomId] =
|
|
6735
|
-
const fetchRef =
|
|
6730
|
+
const [view, setView] = React7.useState("list");
|
|
6731
|
+
const [conversations, setConversations] = React7.useState([]);
|
|
6732
|
+
const [isLoading, setIsLoading] = React7.useState(false);
|
|
6733
|
+
const [activeCaseId, setActiveCaseId] = React7.useState(null);
|
|
6734
|
+
const [activeRoomId, setActiveRoomId] = React7.useState(null);
|
|
6735
|
+
const fetchRef = React7.useRef(fetchConversations);
|
|
6736
6736
|
fetchRef.current = fetchConversations;
|
|
6737
|
-
const persistOpen =
|
|
6737
|
+
const persistOpen = React7.useCallback((open2) => {
|
|
6738
6738
|
setIsOpen(open2);
|
|
6739
6739
|
try {
|
|
6740
6740
|
localStorage.setItem(STORAGE_KEY, String(open2));
|
|
6741
6741
|
} catch {
|
|
6742
6742
|
}
|
|
6743
6743
|
}, []);
|
|
6744
|
-
const loadConversations =
|
|
6744
|
+
const loadConversations = React7.useCallback(async () => {
|
|
6745
6745
|
setIsLoading(true);
|
|
6746
6746
|
try {
|
|
6747
6747
|
const result = await fetchRef.current();
|
|
@@ -6751,18 +6751,18 @@ function ChatSidebarProvider({
|
|
|
6751
6751
|
setIsLoading(false);
|
|
6752
6752
|
}
|
|
6753
6753
|
}, []);
|
|
6754
|
-
|
|
6754
|
+
React7.useEffect(() => {
|
|
6755
6755
|
void loadConversations();
|
|
6756
6756
|
}, [loadConversations]);
|
|
6757
|
-
const toggle =
|
|
6758
|
-
const open =
|
|
6759
|
-
const close =
|
|
6757
|
+
const toggle = React7.useCallback(() => persistOpen(!isOpen), [isOpen, persistOpen]);
|
|
6758
|
+
const open = React7.useCallback(() => persistOpen(true), [persistOpen]);
|
|
6759
|
+
const close = React7.useCallback(() => {
|
|
6760
6760
|
persistOpen(false);
|
|
6761
6761
|
setView("list");
|
|
6762
6762
|
setActiveCaseId(null);
|
|
6763
6763
|
setActiveRoomId(null);
|
|
6764
6764
|
}, [persistOpen]);
|
|
6765
|
-
const openChat =
|
|
6765
|
+
const openChat = React7.useCallback(
|
|
6766
6766
|
(caseId, roomId) => {
|
|
6767
6767
|
persistOpen(true);
|
|
6768
6768
|
setActiveCaseId(caseId);
|
|
@@ -6782,7 +6782,7 @@ function ChatSidebarProvider({
|
|
|
6782
6782
|
},
|
|
6783
6783
|
[persistOpen, conversations]
|
|
6784
6784
|
);
|
|
6785
|
-
const selectRoom =
|
|
6785
|
+
const selectRoom = React7.useCallback(
|
|
6786
6786
|
(roomId, caseId) => {
|
|
6787
6787
|
setActiveCaseId(caseId);
|
|
6788
6788
|
setActiveRoomId(roomId);
|
|
@@ -6791,7 +6791,7 @@ function ChatSidebarProvider({
|
|
|
6791
6791
|
},
|
|
6792
6792
|
[isOpen, persistOpen]
|
|
6793
6793
|
);
|
|
6794
|
-
const back =
|
|
6794
|
+
const back = React7.useCallback(() => {
|
|
6795
6795
|
setView("list");
|
|
6796
6796
|
setActiveRoomId(null);
|
|
6797
6797
|
}, []);
|
|
@@ -6821,27 +6821,27 @@ function useChatRoom(roomId, config, options = {}) {
|
|
|
6821
6821
|
maxReconnectDelay = MAX_RECONNECT_DELAY,
|
|
6822
6822
|
pingInterval = PING_INTERVAL
|
|
6823
6823
|
} = options;
|
|
6824
|
-
const [messages, setMessages] =
|
|
6825
|
-
const [isConnected, setIsConnected] =
|
|
6826
|
-
const [error, setError] =
|
|
6827
|
-
const [typingUsers, setTypingUsers] =
|
|
6828
|
-
const [hasMoreHistory, setHasMoreHistory] =
|
|
6829
|
-
const [isLoadingHistory, setIsLoadingHistory] =
|
|
6830
|
-
const wsRef =
|
|
6831
|
-
const mountedRef =
|
|
6832
|
-
const reconnectDelayRef =
|
|
6833
|
-
const reconnectTimerRef =
|
|
6834
|
-
const pingTimerRef =
|
|
6835
|
-
const roomIdRef =
|
|
6836
|
-
const cursorRef =
|
|
6837
|
-
const messageIdsRef =
|
|
6838
|
-
const loadMoreHistoryRef =
|
|
6824
|
+
const [messages, setMessages] = React7.useState([]);
|
|
6825
|
+
const [isConnected, setIsConnected] = React7.useState(false);
|
|
6826
|
+
const [error, setError] = React7.useState(null);
|
|
6827
|
+
const [typingUsers, setTypingUsers] = React7.useState([]);
|
|
6828
|
+
const [hasMoreHistory, setHasMoreHistory] = React7.useState(true);
|
|
6829
|
+
const [isLoadingHistory, setIsLoadingHistory] = React7.useState(false);
|
|
6830
|
+
const wsRef = React7.useRef(null);
|
|
6831
|
+
const mountedRef = React7.useRef(true);
|
|
6832
|
+
const reconnectDelayRef = React7.useRef(minReconnectDelay);
|
|
6833
|
+
const reconnectTimerRef = React7.useRef(null);
|
|
6834
|
+
const pingTimerRef = React7.useRef(null);
|
|
6835
|
+
const roomIdRef = React7.useRef(roomId);
|
|
6836
|
+
const cursorRef = React7.useRef(null);
|
|
6837
|
+
const messageIdsRef = React7.useRef(/* @__PURE__ */ new Set());
|
|
6838
|
+
const loadMoreHistoryRef = React7.useRef(
|
|
6839
6839
|
() => Promise.resolve()
|
|
6840
6840
|
);
|
|
6841
|
-
const configRef =
|
|
6841
|
+
const configRef = React7.useRef(config);
|
|
6842
6842
|
roomIdRef.current = roomId;
|
|
6843
6843
|
configRef.current = config;
|
|
6844
|
-
const clearTimers =
|
|
6844
|
+
const clearTimers = React7.useCallback(() => {
|
|
6845
6845
|
if (reconnectTimerRef.current) {
|
|
6846
6846
|
clearTimeout(reconnectTimerRef.current);
|
|
6847
6847
|
reconnectTimerRef.current = null;
|
|
@@ -6851,7 +6851,7 @@ function useChatRoom(roomId, config, options = {}) {
|
|
|
6851
6851
|
pingTimerRef.current = null;
|
|
6852
6852
|
}
|
|
6853
6853
|
}, []);
|
|
6854
|
-
const loadMoreHistory =
|
|
6854
|
+
const loadMoreHistory = React7.useCallback(async () => {
|
|
6855
6855
|
if (!roomIdRef.current || isLoadingHistory || !hasMoreHistory) return;
|
|
6856
6856
|
setIsLoadingHistory(true);
|
|
6857
6857
|
try {
|
|
@@ -6885,7 +6885,7 @@ function useChatRoom(roomId, config, options = {}) {
|
|
|
6885
6885
|
setIsLoadingHistory(false);
|
|
6886
6886
|
}
|
|
6887
6887
|
}, [isLoadingHistory, hasMoreHistory]);
|
|
6888
|
-
const sendMessage =
|
|
6888
|
+
const sendMessage = React7.useCallback(
|
|
6889
6889
|
(content, attachmentIds) => {
|
|
6890
6890
|
const ws = wsRef.current;
|
|
6891
6891
|
if (!ws || ws.readyState !== WebSocket.OPEN) return;
|
|
@@ -6900,15 +6900,15 @@ function useChatRoom(roomId, config, options = {}) {
|
|
|
6900
6900
|
},
|
|
6901
6901
|
[]
|
|
6902
6902
|
);
|
|
6903
|
-
const sendTyping =
|
|
6903
|
+
const sendTyping = React7.useCallback((isTyping) => {
|
|
6904
6904
|
const ws = wsRef.current;
|
|
6905
6905
|
if (!ws || ws.readyState !== WebSocket.OPEN) return;
|
|
6906
6906
|
ws.send(JSON.stringify({ type: "typing", isTyping }));
|
|
6907
6907
|
}, []);
|
|
6908
|
-
|
|
6908
|
+
React7.useEffect(() => {
|
|
6909
6909
|
loadMoreHistoryRef.current = loadMoreHistory;
|
|
6910
6910
|
}, [loadMoreHistory]);
|
|
6911
|
-
const connect =
|
|
6911
|
+
const connect = React7.useCallback(async () => {
|
|
6912
6912
|
if (!roomIdRef.current || !mountedRef.current) return;
|
|
6913
6913
|
let jwt = null;
|
|
6914
6914
|
try {
|
|
@@ -7011,7 +7011,7 @@ function useChatRoom(roomId, config, options = {}) {
|
|
|
7011
7011
|
}, delay);
|
|
7012
7012
|
};
|
|
7013
7013
|
}, [minReconnectDelay, maxReconnectDelay, pingInterval]);
|
|
7014
|
-
|
|
7014
|
+
React7.useEffect(() => {
|
|
7015
7015
|
mountedRef.current = true;
|
|
7016
7016
|
if (!roomId) {
|
|
7017
7017
|
setMessages([]);
|
|
@@ -7078,14 +7078,14 @@ function ChatRoomView({
|
|
|
7078
7078
|
hasMoreHistory,
|
|
7079
7079
|
isLoadingHistory
|
|
7080
7080
|
} = useChatRoom(roomId, config);
|
|
7081
|
-
const [newMessage, setNewMessage] =
|
|
7082
|
-
const [pendingAttachments, setPendingAttachments] =
|
|
7083
|
-
const scrollRef =
|
|
7084
|
-
const inputRef =
|
|
7085
|
-
const fileInputRef =
|
|
7086
|
-
const typingTimeoutRef =
|
|
7087
|
-
const prevMessageCountRef =
|
|
7088
|
-
|
|
7081
|
+
const [newMessage, setNewMessage] = React7.useState("");
|
|
7082
|
+
const [pendingAttachments, setPendingAttachments] = React7.useState([]);
|
|
7083
|
+
const scrollRef = React7.useRef(null);
|
|
7084
|
+
const inputRef = React7.useRef(null);
|
|
7085
|
+
const fileInputRef = React7.useRef(null);
|
|
7086
|
+
const typingTimeoutRef = React7.useRef(null);
|
|
7087
|
+
const prevMessageCountRef = React7.useRef(0);
|
|
7088
|
+
React7.useEffect(() => {
|
|
7089
7089
|
const el = scrollRef.current;
|
|
7090
7090
|
if (!el) return;
|
|
7091
7091
|
if (messages.length > prevMessageCountRef.current) {
|
|
@@ -7093,19 +7093,19 @@ function ChatRoomView({
|
|
|
7093
7093
|
}
|
|
7094
7094
|
prevMessageCountRef.current = messages.length;
|
|
7095
7095
|
}, [messages.length]);
|
|
7096
|
-
const handleScroll =
|
|
7096
|
+
const handleScroll = React7.useCallback(() => {
|
|
7097
7097
|
const el = scrollRef.current;
|
|
7098
7098
|
if (!el) return;
|
|
7099
7099
|
if (el.scrollTop < 50 && hasMoreHistory && !isLoadingHistory) {
|
|
7100
7100
|
void loadMoreHistory();
|
|
7101
7101
|
}
|
|
7102
7102
|
}, [hasMoreHistory, isLoadingHistory, loadMoreHistory]);
|
|
7103
|
-
const handleTyping =
|
|
7103
|
+
const handleTyping = React7.useCallback(() => {
|
|
7104
7104
|
sendTyping(true);
|
|
7105
7105
|
if (typingTimeoutRef.current) clearTimeout(typingTimeoutRef.current);
|
|
7106
7106
|
typingTimeoutRef.current = setTimeout(() => sendTyping(false), 2e3);
|
|
7107
7107
|
}, [sendTyping]);
|
|
7108
|
-
const handleSendMessage =
|
|
7108
|
+
const handleSendMessage = React7.useCallback(() => {
|
|
7109
7109
|
const content = newMessage.trim();
|
|
7110
7110
|
const attachmentIds = pendingAttachments.filter((a) => !a.uploading).map((a) => a.id);
|
|
7111
7111
|
if (!content && attachmentIds.length === 0) return;
|
|
@@ -7164,7 +7164,7 @@ function ChatRoomView({
|
|
|
7164
7164
|
const removeAttachment = (id) => {
|
|
7165
7165
|
setPendingAttachments((prev) => prev.filter((a) => a.id !== id));
|
|
7166
7166
|
};
|
|
7167
|
-
const
|
|
7167
|
+
const formatTime2 = (timestamp) => {
|
|
7168
7168
|
return new Date(timestamp).toLocaleTimeString([], {
|
|
7169
7169
|
hour: "2-digit",
|
|
7170
7170
|
minute: "2-digit"
|
|
@@ -7272,7 +7272,7 @@ function ChatRoomView({
|
|
|
7272
7272
|
children: getRoleLabel(message.senderRole)
|
|
7273
7273
|
}
|
|
7274
7274
|
),
|
|
7275
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground", children:
|
|
7275
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground", children: formatTime2(message.createdAt) })
|
|
7276
7276
|
] }),
|
|
7277
7277
|
message.content && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7278
7278
|
"div",
|
|
@@ -7450,7 +7450,7 @@ function ChatSidebar({
|
|
|
7450
7450
|
selectRoom,
|
|
7451
7451
|
back
|
|
7452
7452
|
} = useChatSidebar();
|
|
7453
|
-
|
|
7453
|
+
React7.useEffect(() => {
|
|
7454
7454
|
if (!isOpen || typeof window === "undefined") return;
|
|
7455
7455
|
const mq = window.matchMedia("(max-width: 767px)");
|
|
7456
7456
|
const apply = () => {
|
|
@@ -7601,17 +7601,1591 @@ function formatRelativeTime(dateStr) {
|
|
|
7601
7601
|
if (diffD < 7) return `${diffD}d`;
|
|
7602
7602
|
return date.toLocaleDateString([], { month: "short", day: "numeric" });
|
|
7603
7603
|
}
|
|
7604
|
+
|
|
7605
|
+
// src/components/emoji/emoji-data.ts
|
|
7606
|
+
var EMOJI_CATEGORIES = [{ "key": "smileys", "emojis": [{ "e": "\u{1F600}", "n": "grinning face", "k": "grinning face cheerful cheery grin happy laugh nice smile smiling teeth cara sonriendo divertido feliz sonrisa" }, { "e": "\u{1F603}", "n": "grinning face with big eyes", "k": "grinning face with big eyes awesome grin happy mouth open smile smiling teeth yay cara sonriendo con ojos grandes divertido risa" }, { "e": "\u{1F604}", "n": "grinning face with smiling eyes", "k": "grinning face with smiling eyes eye grin happy laugh lol mouth open smile cara sonriendo con ojos sonrientes abierta ojo sonrisa" }, { "e": "\u{1F601}", "n": "beaming face with smiling eyes", "k": "beaming face with smiling eyes eye grin grinning happy nice smile teeth cara radiante con ojos sonrientes ojo risa sonrisa" }, { "e": "\u{1F606}", "n": "grinning squinting face", "k": "grinning squinting face closed eyes haha hahaha happy laugh lol mouth open rofl smile smiling cara sonriendo con los ojos cerrados abierta boca risa" }, { "e": "\u{1F605}", "n": "grinning face with sweat", "k": "grinning face with sweat cold dejected excited mouth nervous open smile smiling stress stressed cara sonriendo con sudor frio risa" }, { "e": "\u{1F923}", "n": "rolling on the floor laughing", "k": "rolling on the floor laughing crying face funny haha happy hehe hilarious joy laugh lmao lol rofl roflmao tear cara revolviendose de la risa carcajada ojos cerrados" }, { "e": "\u{1F602}", "n": "face with tears of joy", "k": "face with tears of joy crying feels funny haha happy hehe hilarious laugh lmao lol rofl roflmao tear cara llorando de risa felicidad lagrima" }, { "e": "\u{1F642}", "n": "slightly smiling face", "k": "slightly smiling face happy smile cara sonriendo ligeramente sonrisa" }, { "e": "\u{1F643}", "n": "upside-down face", "k": "upside down face hehe smile cara al reves" }, { "e": "\u{1FAE0}", "n": "melting face", "k": "melting face disappear dissolve embarrassed haha heat hot liquid lol melt sarcasm sarcastic cara derritiendose calor derretido derretirse desaparecer fundirse liquido" }, { "e": "\u{1F609}", "n": "winking face", "k": "winking face flirt heartbreaker sexy slide tease wink winks cara guinando el ojo guino" }, { "e": "\u{1F60A}", "n": "smiling face with smiling eyes", "k": "smiling face with eyes blush eye glad satisfied smile cara feliz con ojos sonrientes ojo rubor sonrisa" }, { "e": "\u{1F607}", "n": "smiling face with halo", "k": "smiling face with halo angel angelic angels blessed fairy fairytale fantasy happy innocent peaceful smile spirit tale cara sonriendo con aureola sonrisa" }, { "e": "\u{1F970}", "n": "smiling face with hearts", "k": "smiling face with hearts 3 adore crush heart ily love romance smile you cara sonriendo con corazones adorar amor enamorada enamorado" }, { "e": "\u{1F60D}", "n": "smiling face with heart-eyes", "k": "smiling face with heart eyes 143 bae eye feels hearts ily kisses love romance romantic smile xoxo cara sonriendo con ojos de corazon amor sonrisa" }, { "e": "\u{1F929}", "n": "star-struck", "k": "star struck excited eyes face grinning smile starry eyed wow cara sonriendo con estrellas sonrisa" }, { "e": "\u{1F618}", "n": "face blowing a kiss", "k": "face blowing a kiss adorbs bae flirt heart ily love lover miss muah romantic smooch xoxo you cara lanzando un beso" }, { "e": "\u{1F617}", "n": "kissing face", "k": "kissing face 143 date dating flirt ily kiss love smooch smooches xoxo you cara besando beso" }, { "e": "\u263A\uFE0F", "n": "smiling face", "k": "smiling face happy outlined relaxed smile cara sonriente contorno relajado sonrisa" }, { "e": "\u{1F61A}", "n": "kissing face with closed eyes", "k": "kissing face with closed eyes 143 bae blush date dating eye flirt ily kisses smooches xoxo cara besando con los ojos cerrados beso cerrado ojo" }, { "e": "\u{1F619}", "n": "kissing face with smiling eyes", "k": "kissing face with smiling eyes 143 closed date dating eye flirt ily kiss kisses love night smile cara besando con ojos sonrientes beso ojo sonrisa" }, { "e": "\u{1F972}", "n": "smiling face with tear", "k": "smiling face with tear glad grateful happy joy pain proud relieved smile smiley touched cara sonriente con lagrima agradecido aliviado emocionado orgulloso sonrisa" }, { "e": "\u{1F60B}", "n": "face savoring food", "k": "face savoring food delicious eat full hungry savor smile smiling tasty um yum yummy cara saboreando comida delicioso hambre rico" }, { "e": "\u{1F61B}", "n": "face with tongue", "k": "face with tongue awesome cool nice party stuck out sweet cara sacando la lengua" }, { "e": "\u{1F61C}", "n": "winking face with tongue", "k": "winking face with tongue crazy epic eye funny joke loopy nutty party stuck out wacky weirdo wink yolo cara sacando la lengua y guinando un ojo guino" }, { "e": "\u{1F92A}", "n": "zany face", "k": "zany face crazy eye eyes goofy large small cara de loco grande ojo pequeno" }, { "e": "\u{1F61D}", "n": "squinting face with tongue", "k": "squinting face with tongue closed eye eyes gross horrible omg stuck out taste whatever yolo cara con ojos cerrados y lengua fuera ojo sabor" }, { "e": "\u{1F911}", "n": "money-mouth face", "k": "money mouth face paid cara con lengua de dinero boca" }, { "e": "\u{1F917}", "n": "smiling face with open hands", "k": "smiling face with open hands hug hugging cara con manos abrazando abrazo sonrisa" }, { "e": "\u{1F92D}", "n": "face with hand over mouth", "k": "face with hand over mouth giggle giggling oops realization secret shock sudden surprise whoops cara con mano sobre la boca ostras uy vaya" }, { "e": "\u{1FAE2}", "n": "face with open eyes and hand over mouth", "k": "face with open eyes and hand over mouth amazement awe disbelief embarrass gasp omg quiet scared shock surprise cara con ojos abiertos y boca tapada alucinar asombro increible sorpresa verguenza" }, { "e": "\u{1FAE3}", "n": "face with peeking eye", "k": "face with peeking eye captivated embarrass hide hiding peek peep scared shy stare cara tapada con ojo espiando espiar fascinado mirar vistazo" }, { "e": "\u{1F92B}", "n": "shushing face", "k": "shushing face quiet shh shush cara pidiendo silencio callado" }, { "e": "\u{1F914}", "n": "thinking face", "k": "thinking face chin consider hmm ponder pondering wondering cara pensativa duda pensando" }, { "e": "\u{1FAE1}", "n": "saluting face", "k": "saluting face good luck ma am ok respect salute sir troops yes cara saludando ejercito orden saludo sol si vale" }, { "e": "\u{1F910}", "n": "zipper-mouth face", "k": "zipper mouth face keep quiet secret shut zip cara con la boca cerrada cremallera" }, { "e": "\u{1F928}", "n": "face with raised eyebrow", "k": "face with raised eyebrow disapproval disbelief distrust emoji hmm mild skeptic skeptical skepticism surprise what cara con ceja alzada desconfiado esceptico" }, { "e": "\u{1F610}\uFE0F", "n": "neutral face", "k": "neutral face awkward blank deadpan expressionless fine jealous meh oh shade straight unamused unhappy unimpressed whatever cara inexpresivo" }, { "e": "\u{1F611}", "n": "expressionless face", "k": "expressionless face awkward dead fine inexpressive jealous meh not oh omg straight uh unhappy unimpressed whatever cara sin expresion inexpresiva inexpresivo inexpresion" }, { "e": "\u{1F636}", "n": "face without mouth", "k": "face without mouth awkward blank expressionless mouthless mute quiet secret silence silent speechless cara sin boca callado silencio" }, { "e": "\u{1FAE5}", "n": "dotted line face", "k": "dotted line face depressed disappear hidden hide introvert invisible meh whatever wtv cara con linea de puntos depresivo deprimido desaparecer esconderse introvertido" }, { "e": "\u{1F636}\u200D\u{1F32B}\uFE0F", "n": "face in clouds", "k": "face in clouds absentminded fog head cara entre las nubes ausente cabeza en la niebla" }, { "e": "\u{1F60F}", "n": "smirking face", "k": "smirking face boss dapper flirt homie kidding leer shade slick sly smirk smug snicker suave suspicious swag cara sonriendo con superioridad listillo" }, { "e": "\u{1F612}", "n": "unamused face", "k": "unamused face bored fine jealous jel jelly pissed smh ugh uhh unhappy weird whatever cara de desaprobacion insatisfaccion rechazo" }, { "e": "\u{1F644}", "n": "face with rolling eyes", "k": "face with rolling eyes eyeroll shade ugh whatever cara con ojos en blanco frustracion vueltos" }, { "e": "\u{1F62C}", "n": "grimacing face", "k": "grimacing face awk awkward dentist grimace grinning smile smiling cara haciendo una mueca" }, { "e": "\u{1F62E}\u200D\u{1F4A8}", "n": "face exhaling", "k": "face exhaling blow blowing exhale exhausted gasp groan relief sigh smiley smoke whisper whistle cara exhalando alivio bocanada exhalar jadear resoplido silbar" }, { "e": "\u{1F925}", "n": "lying face", "k": "lying face liar lie pinocchio cara de mentiroso nariz pinocho" }, { "e": "\u{1FAE8}", "n": "shaking face", "k": "shaking face crazy daze earthquake omg panic shock surprise vibrate whoa wow cara temblorosa temblar terremoto vibrar" }, { "e": "\u{1F642}\u200D\u2194\uFE0F", "n": "head shaking horizontally", "k": "head shaking horizontally no shake cabeza negando moviendose horizontalmente negar" }, { "e": "\u{1F642}\u200D\u2195\uFE0F", "n": "head shaking vertically", "k": "head shaking vertically nod yes cabeza asintiendo asentir moviendose verticalmente si" }, { "e": "\u{1F60C}", "n": "relieved face", "k": "relieved face calm peace relief zen cara de alivio aliviado" }, { "e": "\u{1F614}", "n": "pensive face", "k": "pensive face awful bored dejected died disappointed losing lost sad sucks cara desanimada alicaido desanimado pensativo" }, { "e": "\u{1F62A}", "n": "sleepy face", "k": "sleepy face crying good night sad sleep sleeping tired cara de sueno dormir" }, { "e": "\u{1F924}", "n": "drooling face", "k": "drooling face cara babeando baba" }, { "e": "\u{1F634}", "n": "sleeping face", "k": "sleeping face bed bedtime good goodnight nap night sleep tired whatever yawn zzz cara durmiendo dormido sueno" }, { "e": "\u{1F637}", "n": "face with medical mask", "k": "face with medical mask cold dentist dermatologist doctor dr germs medicine sick cara con mascarilla medica enfermo malo mascara" }, { "e": "\u{1F912}", "n": "face with thermometer", "k": "face with thermometer ill sick cara con termometro enfermo malo" }, { "e": "\u{1F915}", "n": "face with head-bandage", "k": "face with head bandage hurt injury ouch cara con la cabeza vendada dolor herida venda" }, { "e": "\u{1F922}", "n": "nauseated face", "k": "nauseated face gross nasty sick vomit cara de nauseas vomitar" }, { "e": "\u{1F92E}", "n": "face vomiting", "k": "face vomiting barf ew gross puke sick spew throw up vomit cara vomitando enfermo malo vomitar" }, { "e": "\u{1F927}", "n": "sneezing face", "k": "sneezing face fever flu gesundheit sick sneeze cara estornudando estornudar estornudo panuelo" }, { "e": "\u{1F975}", "n": "hot face", "k": "hot face dying feverish heat panting red faced stroke sweating tongue cara con calor roja fiebre golpe de sudor" }, { "e": "\u{1F976}", "n": "cold face", "k": "cold face blue faced freezing frostbite icicles subzero teeth cara con frio congelada congelado helado" }, { "e": "\u{1F974}", "n": "woozy face", "k": "woozy face dizzy drunk eyes intoxicated mouth tipsy uneven wavy cara de grogui atontado entonado intoxicado mareado" }, { "e": "\u{1F635}", "n": "face with crossed-out eyes", "k": "face with crossed out eyes dead dizzy feels knocked sick tired cara mareada mareo" }, { "e": "\u{1F635}\u200D\u{1F4AB}", "n": "face with spiral eyes", "k": "face with spiral eyes confused dizzy hypnotized omg smiley trouble whoa woah woozy cara con ojos en espiral hipnotizado indispuesto mareado mareo problema" }, { "e": "\u{1F92F}", "n": "exploding head", "k": "exploding head blown explode mind mindblown no shocked way cabeza explotando explosion" }, { "e": "\u{1F920}", "n": "cowboy hat face", "k": "cowboy hat face cowgirl cara con sombrero de vaquero vaquera" }, { "e": "\u{1F973}", "n": "partying face", "k": "partying face bday birthday celebrate celebration excited happy hat hooray horn party cara de fiesta capirote celebracion gorro matasuegras" }, { "e": "\u{1F978}", "n": "disguised face", "k": "disguised face disguise eyebrow glasses incognito moustache mustache nose person spy tache tash cara disfrazada careta disfraz disimulo gafas nariz" }, { "e": "\u{1F60E}", "n": "smiling face with sunglasses", "k": "smiling face with sunglasses awesome beach bright bro chilling cool rad relaxed shades slay smile style swag win cara sonriendo con gafas de sol guay" }, { "e": "\u{1F913}", "n": "nerd face", "k": "nerd face brainy clever expert geek gifted glasses intelligent smart cara de empollon friki friqui" }, { "e": "\u{1F9D0}", "n": "face with monocle", "k": "face with monocle classy fancy rich stuffy wealthy cara con monoculo aristocratico estirado" }, { "e": "\u{1F615}", "n": "confused face", "k": "confused face befuddled confusing dunno frown hm meh not sad sorry sure cara de confusion confuso" }, { "e": "\u{1FAE4}", "n": "face with diagonal mouth", "k": "face with diagonal mouth confused confusion disappointed doubt doubtful frustrated frustration meh skeptical unsure whatever wtv cara con boca decepcionado decepcion esceptico inseguro jo vaya" }, { "e": "\u{1F61F}", "n": "worried face", "k": "worried face anxious butterflies nerves nervous sad stress stressed surprised worry cara preocupada preocupacion preocupado" }, { "e": "\u{1F641}", "n": "slightly frowning face", "k": "slightly frowning face frown sad cara con el ceno ligeramente fruncido" }, { "e": "\u2639\uFE0F", "n": "frowning face", "k": "frowning face frown sad cara con el ceno fruncido" }, { "e": "\u{1F62E}", "n": "face with open mouth", "k": "face with open mouth believe forgot omg shocked surprised sympathy unbelievable unreal whoa wow you cara con la boca abierta" }, { "e": "\u{1F62F}", "n": "hushed face", "k": "hushed face epic omg stunned surprised whoa woah cara estupefacta alucinado estupefacto sorprendido" }, { "e": "\u{1F632}", "n": "astonished face", "k": "astonished face cost no omg shocked totally way cara asombrada alucinado asombrado pasmado" }, { "e": "\u{1F633}", "n": "flushed face", "k": "flushed face amazed awkward crazy dazed dead disbelief embarrassed geez heat hot impressed jeez what wow cara sonrojada colorado sonrojado" }, { "e": "\u{1F97A}", "n": "pleading face", "k": "pleading face begging big eyes mercy not please pretty puppy sad why cara suplicante implorar ojos adorables piedad por favor" }, { "e": "\u{1F979}", "n": "face holding back tears", "k": "face holding back tears admiration aww cry embarrassed feelings grateful gratitude joy please proud resist sad cara aguantandose las lagrimas emocionado emocion llorar orgulloso resistir triste" }, { "e": "\u{1F626}", "n": "frowning face with open mouth", "k": "frowning face with open mouth caught frown guard scared scary surprise what wow cara con el ceno fruncido y la boca abierta" }, { "e": "\u{1F627}", "n": "anguished face", "k": "anguished face forgot scared scary stressed surprise unhappy what wow cara angustiada angustia angustiado" }, { "e": "\u{1F628}", "n": "fearful face", "k": "fearful face afraid anxious blame fear scared worried cara asustada asustado miedo miedoso" }, { "e": "\u{1F630}", "n": "anxious face with sweat", "k": "anxious face with sweat blue cold eek mouth nervous open rushed scared yikes cara con ansiedad y sudor frio" }, { "e": "\u{1F625}", "n": "sad but relieved face", "k": "sad but relieved face anxious call close complicated disappointed not sweat time whew cara triste pero aliviada aliviado decepcionado menos mal" }, { "e": "\u{1F622}", "n": "crying face", "k": "crying face awful cry feels miss sad tear triste unhappy cara llorando llorar lagrima" }, { "e": "\u{1F62D}", "n": "loudly crying face", "k": "loudly crying face bawling cry sad sob tear tears unhappy cara llorando fuerte llorar lagrima triste" }, { "e": "\u{1F631}", "n": "face screaming in fear", "k": "face screaming in fear epic fearful munch scared scream screamer shocked surprised woah cara gritando de miedo asustado panico" }, { "e": "\u{1F616}", "n": "confounded face", "k": "confounded face annoyed confused cringe distraught feels frustrated mad sad cara de frustracion frustrado" }, { "e": "\u{1F623}", "n": "persevering face", "k": "persevering face concentrate concentration focus headache persevere cara desesperada desesperacion frustracion" }, { "e": "\u{1F61E}", "n": "disappointed face", "k": "disappointed face awful blame dejected fail losing sad unhappy cara decepcionada decepcionado decepcion" }, { "e": "\u{1F613}", "n": "downcast face with sweat", "k": "downcast face with sweat close cold feels headache nervous sad scared yikes cara con sudor frio" }, { "e": "\u{1F629}", "n": "weary face", "k": "weary face crying fail feels hungry mad nooo sad sleepy tired unhappy cara agotada agotado cansado" }, { "e": "\u{1F62B}", "n": "tired face", "k": "tired face cost feels nap sad sneeze cara cansada cansado" }, { "e": "\u{1F971}", "n": "yawning face", "k": "yawning face bedtime bored goodnight nap night sleep sleepy tired whatever yawn zzz cara de bostezo aburrido cansado dormido sueno" }, { "e": "\u{1F624}", "n": "face with steam from nose", "k": "face with steam from nose anger angry feels fume fuming furious fury mad triumph unhappy won cara resoplando cabreo enfado" }, { "e": "\u{1F621}", "n": "enraged face", "k": "enraged face anger angry feels mad maddening pouting rage red shade unhappy upset cara cabreada cabreo enfadado furia" }, { "e": "\u{1F620}", "n": "angry face", "k": "angry face anger blame feels frustrated mad maddening rage shade unhappy upset cara enfadada enfadado histerico" }, { "e": "\u{1F92C}", "n": "face with symbols on mouth", "k": "face with symbols on mouth censor cursing cussing mad pissed swearing cara con simbolos en la boca maldecir palabrota simbolo" }, { "e": "\u{1F608}", "n": "smiling face with horns", "k": "smiling face with horns demon devil evil fairy fairytale fantasy purple shade smile tale cara sonriendo con cuernos demonio sonrisa" }, { "e": "\u{1F47F}", "n": "angry face with horns", "k": "angry face with horns demon devil evil fairy fairytale fantasy imp mischievous purple shade tale cara enfadada con cuernos demonio diablo" }, { "e": "\u{1F480}", "n": "skull", "k": "skull body dead death face fairy fairytale i m lmao monster tale yolo calavera cara cuento monstruo muerte" }, { "e": "\u2620\uFE0F", "n": "skull and crossbones", "k": "skull and crossbones bone dead death face monster calavera y huesos cruzados cara muerte" }, { "e": "\u{1F4A9}", "n": "pile of poo", "k": "pile of poo bs comic doo dung face fml monster poop smelly smh stink stinks stinky turd caca con ojos mierda mojon" }, { "e": "\u{1F921}", "n": "clown face", "k": "clown face cara de payaso" }, { "e": "\u{1F479}", "n": "ogre", "k": "ogre creature devil face fairy fairytale fantasy mask monster scary tale demonio japones oni cara cuento cuernos sonrisa" }, { "e": "\u{1F47A}", "n": "goblin", "k": "goblin angry creature face fairy fairytale fantasy mask mean monster tale demonio japones tengu cara cuento fantasia monstruo" }, { "e": "\u{1F47B}", "n": "ghost", "k": "ghost boo creature excited face fairy fairytale fantasy halloween haunting monster scary silly tale fantasma cara criatura cuento monstruo" }, { "e": "\u{1F47D}\uFE0F", "n": "alien", "k": "alien creature extraterrestrial face fairy fairytale fantasy monster space tale ufo alienigena cara criatura extraterrestre ovni" }, { "e": "\u{1F47E}", "n": "alien monster", "k": "alien monster creature extraterrestrial face fairy fairytale fantasy game gamer games pixelated space tale ufo monstruo alienigena cara criatura extraterrestre ovni" }, { "e": "\u{1F916}", "n": "robot", "k": "robot face monster cara monstruo" }, { "e": "\u{1F63A}", "n": "grinning cat", "k": "grinning cat animal face mouth open smile smiling gato sonriendo cara feliz alegre sonrisa" }, { "e": "\u{1F638}", "n": "grinning cat with smiling eyes", "k": "grinning cat with smiling eyes animal eye face grin smile gato sonriendo con ojos sonrientes cara sonriente sonrisa" }, { "e": "\u{1F639}", "n": "cat with tears of joy", "k": "cat with tears of joy animal face laugh laughing lol tear gato llorando de risa cara lagrima" }, { "e": "\u{1F63B}", "n": "smiling cat with heart-eyes", "k": "smiling cat with heart eyes animal eye face love smile gato sonriendo con ojos de corazon cara enamorado" }, { "e": "\u{1F63C}", "n": "cat with wry smile", "k": "cat with wry smile animal face ironic gato haciendo una mueca cara ironico sonrisa" }, { "e": "\u{1F63D}", "n": "kissing cat", "k": "kissing cat animal closed eye eyes face kiss gato besando beso cara carinoso" }, { "e": "\u{1F640}", "n": "weary cat", "k": "weary cat animal face oh surprised gato asustado cara preocupacion panico sorpresa" }, { "e": "\u{1F63F}", "n": "crying cat", "k": "crying cat animal cry face sad tear gato llorando cara lagrima pena triste" }, { "e": "\u{1F63E}", "n": "pouting cat", "k": "pouting cat animal face gato enfadado cara" }, { "e": "\u{1F648}", "n": "see-no-evil monkey", "k": "see no evil monkey embarrassed face forbidden forgot gesture hide omg prohibited scared secret smh watch mono con los ojos tapados cara mal prohibido" }, { "e": "\u{1F649}", "n": "hear-no-evil monkey", "k": "hear no evil monkey animal ears face forbidden gesture listen not prohibited secret shh tmi mono con los oidos tapados cara mal prohibido" }, { "e": "\u{1F64A}", "n": "speak-no-evil monkey", "k": "speak no evil monkey animal face forbidden gesture not oops prohibited quiet secret stealth mono con la boca tapada cara mal prohibido" }, { "e": "\u{1F48C}", "n": "love letter", "k": "love letter heart mail romance valentine carta de amor corazon correo" }, { "e": "\u{1F498}", "n": "heart with arrow", "k": "heart with arrow 143 adorbs cupid date emotion ily love romance valentine corazon con flecha amor emocion" }, { "e": "\u{1F49D}", "n": "heart with ribbon", "k": "heart with ribbon 143 anniversary emotion ily kisses valentine xoxo corazon con lazo emocion san valentin" }, { "e": "\u{1F496}", "n": "sparkling heart", "k": "sparkling heart 143 emotion excited good ily kisses morning night sparkle xoxo corazon brillante amor emocion" }, { "e": "\u{1F497}", "n": "growing heart", "k": "growing heart 143 emotion excited heartpulse ily kisses muah nervous pulse xoxo corazon creciente emocionado latido nervioso" }, { "e": "\u{1F493}", "n": "beating heart", "k": "beating heart 143 cardio emotion heartbeat ily love pulsating pulse corazon latiendo amor emocion latido" }, { "e": "\u{1F49E}", "n": "revolving hearts", "k": "revolving hearts 143 adorbs anniversary emotion heart corazones giratorios corazon giratorio" }, { "e": "\u{1F495}", "n": "two hearts", "k": "two hearts 143 anniversary date dating emotion heart ily kisses love loving xoxo dos corazones amantes amor corazon" }, { "e": "\u{1F49F}", "n": "heart decoration", "k": "heart decoration 143 emotion hearth purple white adorno de corazon" }, { "e": "\u2763\uFE0F", "n": "heart exclamation", "k": "heart exclamation heavy mark punctuation exclamacion de corazon puntuacion" }, { "e": "\u{1F494}", "n": "broken heart", "k": "broken heart break crushed emotion heartbroken lonely sad corazon roto emocion partido" }, { "e": "\u2764\uFE0F\u200D\u{1F525}", "n": "heart on fire", "k": "heart on fire burn love lust sacred corazon en llamas amor fuego lujuria pasion" }, { "e": "\u2764\uFE0F\u200D\u{1FA79}", "n": "mending heart", "k": "mending heart healthier improving recovering recuperating well corazon vendado bien curarse mejor mejorar recuperacion salud" }, { "e": "\u2764\uFE0F", "n": "red heart", "k": "red heart emotion love corazon rojo emocion" }, { "e": "\u{1FA77}", "n": "pink heart", "k": "pink heart 143 adorable cute emotion ily like love special sweet corazon rosa amor bonito gustar" }, { "e": "\u{1F9E1}", "n": "orange heart", "k": "orange heart 143 corazon naranja emocion" }, { "e": "\u{1F49B}", "n": "yellow heart", "k": "yellow heart 143 cardiac emotion ily love corazon amarillo emocion" }, { "e": "\u{1F49A}", "n": "green heart", "k": "green heart 143 emotion ily love romantic corazon verde emocion" }, { "e": "\u{1F499}", "n": "blue heart", "k": "blue heart 143 emotion ily love romance corazon azul emocion" }, { "e": "\u{1FA75}", "n": "light blue heart", "k": "light blue heart 143 cute cyan emotion ily like love sky special teal corazon azul claro celeste cian" }, { "e": "\u{1F49C}", "n": "purple heart", "k": "purple heart 143 bestest emotion ily love corazon morado emocion" }, { "e": "\u{1F90E}", "n": "brown heart", "k": "brown heart 143 corazon marron emocion" }, { "e": "\u{1F5A4}", "n": "black heart", "k": "black heart evil wicked corazon negro" }, { "e": "\u{1FA76}", "n": "grey heart", "k": "grey heart 143 emotion gray ily love silver slate special corazon gris pizarra plata" }, { "e": "\u{1F90D}", "n": "white heart", "k": "white heart 143 corazon blanco emocion" }, { "e": "\u{1F48B}", "n": "kiss mark", "k": "kiss mark dating emotion heart kissing lips romance sexy marca de beso labios" }, { "e": "\u{1F4AF}", "n": "hundred points", "k": "hundred points 100 a agree clearly definitely faithful fleek full keep perfect point score true truth yup cien puntos pleno" }, { "e": "\u{1F4A2}", "n": "anger symbol", "k": "anger symbol angry comic mad upset simbolo de enfado enfadado" }, { "e": "\u{1F4A5}", "n": "collision", "k": "collision bomb boom collide comic explode colision" }, { "e": "\u{1F4AB}", "n": "dizzy", "k": "dizzy comic shining shooting star stars simbolo de mareo emocion estrella" }, { "e": "\u{1F4A6}", "n": "sweat droplets", "k": "sweat droplets comic drip droplet drops splashing squirt water wet work workout gotas de sudor emocion" }, { "e": "\u{1F4A8}", "n": "dashing away", "k": "dashing away cloud comic dash fart fast go gone gotta running smoke salir corriendo carrera correr humo" }, { "e": "\u{1F573}\uFE0F", "n": "hole", "k": "hole agujero orificio" }, { "e": "\u{1F4AC}", "n": "speech balloon", "k": "speech balloon bubble comic dialog message sms talk text typing bocadillo de dialogo conversacion" }, { "e": "\u{1F441}\uFE0F\u200D\u{1F5E8}\uFE0F", "n": "eye in speech bubble", "k": "eye in speech bubble balloon witness ojo en bocadillo de texto testigo" }, { "e": "\u{1F5E8}\uFE0F", "n": "left speech bubble", "k": "left speech bubble balloon dialog bocadillo de dialogo por la izquierda burbuja conversacion" }, { "e": "\u{1F5EF}\uFE0F", "n": "right anger bubble", "k": "right anger bubble angry balloon mad bocadillo de enfado por la derecha cabreo rabia" }, { "e": "\u{1F4AD}", "n": "thought balloon", "k": "thought balloon bubble cartoon cloud comic daydream decisions dream idea invent invention realize think thoughts wonder bocadillo de pensamiento burbuja" }, { "e": "\u{1F4A4}", "n": "ZZZ", "k": "zzz comic good goodnight night sleep sleeping sleepy tired simbolo de sueno dormir" }] }, { "key": "people", "emojis": [{ "e": "\u{1F44B}", "n": "waving hand", "k": "waving hand bye cya g2g greetings gtg hello hey hi later outtie ttfn ttyl wave yo you mano saludando agitar saludar saludo", "t": ["\u{1F44B}\u{1F3FB}", "\u{1F44B}\u{1F3FC}", "\u{1F44B}\u{1F3FD}", "\u{1F44B}\u{1F3FE}", "\u{1F44B}\u{1F3FF}"] }, { "e": "\u{1F91A}", "n": "raised back of hand", "k": "raised back of hand backhand dorso de la mano levantado", "t": ["\u{1F91A}\u{1F3FB}", "\u{1F91A}\u{1F3FC}", "\u{1F91A}\u{1F3FD}", "\u{1F91A}\u{1F3FE}", "\u{1F91A}\u{1F3FF}"] }, { "e": "\u{1F590}\uFE0F", "n": "hand with fingers splayed", "k": "hand with fingers splayed finger raised stop mano abierta dedo", "t": ["\u{1F590}\u{1F3FB}", "\u{1F590}\u{1F3FC}", "\u{1F590}\u{1F3FD}", "\u{1F590}\u{1F3FE}", "\u{1F590}\u{1F3FF}"] }, { "e": "\u270B\uFE0F", "n": "raised hand", "k": "raised hand 5 five high stop mano levantada choca esos cinco", "t": ["\u270B\u{1F3FB}", "\u270B\u{1F3FC}", "\u270B\u{1F3FD}", "\u270B\u{1F3FE}", "\u270B\u{1F3FF}"] }, { "e": "\u{1F596}", "n": "vulcan salute", "k": "vulcan salute finger hand hands saludo vulcano mano spock", "t": ["\u{1F596}\u{1F3FB}", "\u{1F596}\u{1F3FC}", "\u{1F596}\u{1F3FD}", "\u{1F596}\u{1F3FE}", "\u{1F596}\u{1F3FF}"] }, { "e": "\u{1FAF1}", "n": "rightwards hand", "k": "rightwards hand handshake hold reach right rightward shake mano hacia la derecha a", "t": ["\u{1FAF1}\u{1F3FB}", "\u{1FAF1}\u{1F3FC}", "\u{1FAF1}\u{1F3FD}", "\u{1FAF1}\u{1F3FE}", "\u{1FAF1}\u{1F3FF}"] }, { "e": "\u{1FAF2}", "n": "leftwards hand", "k": "leftwards hand handshake hold left leftward reach shake mano hacia la izquierda a", "t": ["\u{1FAF2}\u{1F3FB}", "\u{1FAF2}\u{1F3FC}", "\u{1FAF2}\u{1F3FD}", "\u{1FAF2}\u{1F3FE}", "\u{1FAF2}\u{1F3FF}"] }, { "e": "\u{1FAF3}", "n": "palm down hand", "k": "palm down hand dismiss drop dropped pick shoo up mano con la palma hacia abajo bajar descartar fuera no quita rechazar", "t": ["\u{1FAF3}\u{1F3FB}", "\u{1FAF3}\u{1F3FC}", "\u{1FAF3}\u{1F3FD}", "\u{1FAF3}\u{1F3FE}", "\u{1FAF3}\u{1F3FF}"] }, { "e": "\u{1FAF4}", "n": "palm up hand", "k": "palm up hand beckon catch come hold know lift me offer tell mano con la palma hacia arriba acercate dame ofrecer trae ven", "t": ["\u{1FAF4}\u{1F3FB}", "\u{1FAF4}\u{1F3FC}", "\u{1FAF4}\u{1F3FD}", "\u{1FAF4}\u{1F3FE}", "\u{1FAF4}\u{1F3FF}"] }, { "e": "\u{1FAF7}", "n": "leftwards pushing hand", "k": "leftwards pushing hand block five halt high hold leftward pause push refuse slap stop wait mano empujando hacia la izquierda a choca esos cinco detener empujar rechazar", "t": ["\u{1FAF7}\u{1F3FB}", "\u{1FAF7}\u{1F3FC}", "\u{1FAF7}\u{1F3FD}", "\u{1FAF7}\u{1F3FE}", "\u{1FAF7}\u{1F3FF}"] }, { "e": "\u{1FAF8}", "n": "rightwards pushing hand", "k": "rightwards pushing hand block five halt high hold pause push refuse rightward slap stop wait mano empujando hacia la derecha a choca esos cinco detener empujar rechazar", "t": ["\u{1FAF8}\u{1F3FB}", "\u{1FAF8}\u{1F3FC}", "\u{1FAF8}\u{1F3FD}", "\u{1FAF8}\u{1F3FE}", "\u{1FAF8}\u{1F3FF}"] }, { "e": "\u{1F44C}", "n": "OK hand", "k": "ok hand awesome bet dope fleek fosho got gotcha legit okay pinch rad sure sweet three senal de aprobacion con la mano", "t": ["\u{1F44C}\u{1F3FB}", "\u{1F44C}\u{1F3FC}", "\u{1F44C}\u{1F3FD}", "\u{1F44C}\u{1F3FE}", "\u{1F44C}\u{1F3FF}"] }, { "e": "\u{1F90C}", "n": "pinched fingers", "k": "pinched fingers gesture hand hold huh interrogation patience relax sarcastic ugh what zip dedos juntos apuntando hacia arriba gesto italia italiano mano sarcasmo", "t": ["\u{1F90C}\u{1F3FB}", "\u{1F90C}\u{1F3FC}", "\u{1F90C}\u{1F3FD}", "\u{1F90C}\u{1F3FE}", "\u{1F90C}\u{1F3FF}"] }, { "e": "\u{1F90F}", "n": "pinching hand", "k": "pinching hand amount bit fingers little small sort mano pellizcando pellizco poco poquito", "t": ["\u{1F90F}\u{1F3FB}", "\u{1F90F}\u{1F3FC}", "\u{1F90F}\u{1F3FD}", "\u{1F90F}\u{1F3FE}", "\u{1F90F}\u{1F3FF}"] }, { "e": "\u270C\uFE0F", "n": "victory hand", "k": "victory hand peace v mano con senal de victoria", "t": ["\u270C\u{1F3FB}", "\u270C\u{1F3FC}", "\u270C\u{1F3FD}", "\u270C\u{1F3FE}", "\u270C\u{1F3FF}"] }, { "e": "\u{1F91E}", "n": "crossed fingers", "k": "crossed fingers cross finger hand luck dedos cruzados cruzar mano suerte", "t": ["\u{1F91E}\u{1F3FB}", "\u{1F91E}\u{1F3FC}", "\u{1F91E}\u{1F3FD}", "\u{1F91E}\u{1F3FE}", "\u{1F91E}\u{1F3FF}"] }, { "e": "\u{1FAF0}", "n": "hand with index finger and thumb crossed", "k": "hand with index finger and thumb crossed 3 expensive heart love money snap mano con dedo indice y pulgar cruzados amor caro chasquido corazon dinero", "t": ["\u{1FAF0}\u{1F3FB}", "\u{1FAF0}\u{1F3FC}", "\u{1FAF0}\u{1F3FD}", "\u{1FAF0}\u{1F3FE}", "\u{1FAF0}\u{1F3FF}"] }, { "e": "\u{1F91F}", "n": "love-you gesture", "k": "love you gesture fingers hand ily three gesto de te quiero mano", "t": ["\u{1F91F}\u{1F3FB}", "\u{1F91F}\u{1F3FC}", "\u{1F91F}\u{1F3FD}", "\u{1F91F}\u{1F3FE}", "\u{1F91F}\u{1F3FF}"] }, { "e": "\u{1F918}", "n": "sign of the horns", "k": "sign of the horns finger hand rock on mano haciendo el signo de cuernos dedo", "t": ["\u{1F918}\u{1F3FB}", "\u{1F918}\u{1F3FC}", "\u{1F918}\u{1F3FD}", "\u{1F918}\u{1F3FE}", "\u{1F918}\u{1F3FF}"] }, { "e": "\u{1F919}", "n": "call me hand", "k": "call me hand hang loose shaka mano haciendo el gesto de llamar menique pulgar", "t": ["\u{1F919}\u{1F3FB}", "\u{1F919}\u{1F3FC}", "\u{1F919}\u{1F3FD}", "\u{1F919}\u{1F3FE}", "\u{1F919}\u{1F3FF}"] }, { "e": "\u{1F448}\uFE0F", "n": "backhand index pointing left", "k": "backhand index pointing left finger hand point dorso de mano con indice a la izquierda dedo", "t": ["\u{1F448}\u{1F3FB}", "\u{1F448}\u{1F3FC}", "\u{1F448}\u{1F3FD}", "\u{1F448}\u{1F3FE}", "\u{1F448}\u{1F3FF}"] }, { "e": "\u{1F449}\uFE0F", "n": "backhand index pointing right", "k": "backhand index pointing right finger hand point dorso de mano con indice a la derecha dedo", "t": ["\u{1F449}\u{1F3FB}", "\u{1F449}\u{1F3FC}", "\u{1F449}\u{1F3FD}", "\u{1F449}\u{1F3FE}", "\u{1F449}\u{1F3FF}"] }, { "e": "\u{1F446}\uFE0F", "n": "backhand index pointing up", "k": "backhand index pointing up finger hand point dorso de mano con indice hacia arriba apuntar dedo", "t": ["\u{1F446}\u{1F3FB}", "\u{1F446}\u{1F3FC}", "\u{1F446}\u{1F3FD}", "\u{1F446}\u{1F3FE}", "\u{1F446}\u{1F3FF}"] }, { "e": "\u{1F595}", "n": "middle finger", "k": "middle finger hand dedo corazon hacia arriba mano peineta", "t": ["\u{1F595}\u{1F3FB}", "\u{1F595}\u{1F3FC}", "\u{1F595}\u{1F3FD}", "\u{1F595}\u{1F3FE}", "\u{1F595}\u{1F3FF}"] }, { "e": "\u{1F447}\uFE0F", "n": "backhand index pointing down", "k": "backhand index pointing down finger hand point dorso de mano con indice hacia abajo apuntar dedo", "t": ["\u{1F447}\u{1F3FB}", "\u{1F447}\u{1F3FC}", "\u{1F447}\u{1F3FD}", "\u{1F447}\u{1F3FE}", "\u{1F447}\u{1F3FF}"] }, { "e": "\u261D\uFE0F", "n": "index pointing up", "k": "index pointing up finger hand point this dedo indice hacia arriba apuntar mano", "t": ["\u261D\u{1F3FB}", "\u261D\u{1F3FC}", "\u261D\u{1F3FD}", "\u261D\u{1F3FE}", "\u261D\u{1F3FF}"] }, { "e": "\u{1FAF5}", "n": "index pointing at the viewer", "k": "index pointing at the viewer finger hand poke you dedo indice apuntandote a ti apuntar tu", "t": ["\u{1FAF5}\u{1F3FB}", "\u{1FAF5}\u{1F3FC}", "\u{1FAF5}\u{1F3FD}", "\u{1FAF5}\u{1F3FE}", "\u{1FAF5}\u{1F3FF}"] }, { "e": "\u{1F44D}\uFE0F", "n": "thumbs up", "k": "thumbs up 1 good hand like thumb yes pulgar hacia arriba mano senal", "t": ["\u{1F44D}\u{1F3FB}", "\u{1F44D}\u{1F3FC}", "\u{1F44D}\u{1F3FD}", "\u{1F44D}\u{1F3FE}", "\u{1F44D}\u{1F3FF}"] }, { "e": "\u{1F44E}\uFE0F", "n": "thumbs down", "k": "thumbs down 1 bad dislike good hand no nope thumb pulgar hacia abajo mano senal", "t": ["\u{1F44E}\u{1F3FB}", "\u{1F44E}\u{1F3FC}", "\u{1F44E}\u{1F3FD}", "\u{1F44E}\u{1F3FE}", "\u{1F44E}\u{1F3FF}"] }, { "e": "\u270A\uFE0F", "n": "raised fist", "k": "raised fist clenched hand punch solidarity puno en alto cerrado mano punetazo", "t": ["\u270A\u{1F3FB}", "\u270A\u{1F3FC}", "\u270A\u{1F3FD}", "\u270A\u{1F3FE}", "\u270A\u{1F3FF}"] }, { "e": "\u{1F44A}", "n": "oncoming fist", "k": "oncoming fist absolutely agree boom bro bruh bump clenched correct hand knuckle pound punch rock ttyl puno cerrado punetazo", "t": ["\u{1F44A}\u{1F3FB}", "\u{1F44A}\u{1F3FC}", "\u{1F44A}\u{1F3FD}", "\u{1F44A}\u{1F3FE}", "\u{1F44A}\u{1F3FF}"] }, { "e": "\u{1F91B}", "n": "left-facing fist", "k": "left facing fist leftwards puno hacia la izquierda", "t": ["\u{1F91B}\u{1F3FB}", "\u{1F91B}\u{1F3FC}", "\u{1F91B}\u{1F3FD}", "\u{1F91B}\u{1F3FE}", "\u{1F91B}\u{1F3FF}"] }, { "e": "\u{1F91C}", "n": "right-facing fist", "k": "right facing fist rightwards puno hacia la derecha", "t": ["\u{1F91C}\u{1F3FB}", "\u{1F91C}\u{1F3FC}", "\u{1F91C}\u{1F3FD}", "\u{1F91C}\u{1F3FE}", "\u{1F91C}\u{1F3FF}"] }, { "e": "\u{1F44F}", "n": "clapping hands", "k": "clapping hands applause approval awesome clap congrats congratulations excited good great hand homie job nice prayed well yay manos aplaudiendo aplaudir palmas senal", "t": ["\u{1F44F}\u{1F3FB}", "\u{1F44F}\u{1F3FC}", "\u{1F44F}\u{1F3FD}", "\u{1F44F}\u{1F3FE}", "\u{1F44F}\u{1F3FF}"] }, { "e": "\u{1F64C}", "n": "raising hands", "k": "raising hands celebration gesture hand hooray praise raised manos levantadas celebrando celebracion gesto hurra mano", "t": ["\u{1F64C}\u{1F3FB}", "\u{1F64C}\u{1F3FC}", "\u{1F64C}\u{1F3FD}", "\u{1F64C}\u{1F3FE}", "\u{1F64C}\u{1F3FF}"] }, { "e": "\u{1FAF6}", "n": "heart hands", "k": "heart hands 3 love you manos formando un corazon amor", "t": ["\u{1FAF6}\u{1F3FB}", "\u{1FAF6}\u{1F3FC}", "\u{1FAF6}\u{1F3FD}", "\u{1FAF6}\u{1F3FE}", "\u{1FAF6}\u{1F3FF}"] }, { "e": "\u{1F450}", "n": "open hands", "k": "open hands hand hug jazz swerve manos abiertas", "t": ["\u{1F450}\u{1F3FB}", "\u{1F450}\u{1F3FC}", "\u{1F450}\u{1F3FD}", "\u{1F450}\u{1F3FE}", "\u{1F450}\u{1F3FF}"] }, { "e": "\u{1F932}", "n": "palms up together", "k": "palms up together cupped dua hands pray prayer wish palmas hacia arriba juntas oracion", "t": ["\u{1F932}\u{1F3FB}", "\u{1F932}\u{1F3FC}", "\u{1F932}\u{1F3FD}", "\u{1F932}\u{1F3FE}", "\u{1F932}\u{1F3FF}"] }, { "e": "\u{1F91D}", "n": "handshake", "k": "handshake agreement deal hand meeting shake apreton de manos acuerdo", "t": ["\u{1F91D}\u{1F3FB}", "\u{1F91D}\u{1F3FC}", "\u{1F91D}\u{1F3FD}", "\u{1F91D}\u{1F3FE}", "\u{1F91D}\u{1F3FF}"] }, { "e": "\u{1F64F}", "n": "folded hands", "k": "folded hands appreciate ask beg blessed bow cmon five gesture hand high please pray thanks thx manos en oracion gracias mano orar por favor rezar", "t": ["\u{1F64F}\u{1F3FB}", "\u{1F64F}\u{1F3FC}", "\u{1F64F}\u{1F3FD}", "\u{1F64F}\u{1F3FE}", "\u{1F64F}\u{1F3FF}"] }, { "e": "\u270D\uFE0F", "n": "writing hand", "k": "writing hand write mano escribiendo escribir lapiz", "t": ["\u270D\u{1F3FB}", "\u270D\u{1F3FC}", "\u270D\u{1F3FD}", "\u270D\u{1F3FE}", "\u270D\u{1F3FF}"] }, { "e": "\u{1F485}", "n": "nail polish", "k": "nail polish bored care cosmetics done makeup manicure whatever pintarse las unas cosmetica esmalte manicura", "t": ["\u{1F485}\u{1F3FB}", "\u{1F485}\u{1F3FC}", "\u{1F485}\u{1F3FD}", "\u{1F485}\u{1F3FE}", "\u{1F485}\u{1F3FF}"] }, { "e": "\u{1F933}", "n": "selfie", "k": "selfie camera phone selfi autofoto camara telefono", "t": ["\u{1F933}\u{1F3FB}", "\u{1F933}\u{1F3FC}", "\u{1F933}\u{1F3FD}", "\u{1F933}\u{1F3FE}", "\u{1F933}\u{1F3FF}"] }, { "e": "\u{1F4AA}", "n": "flexed biceps", "k": "flexed biceps arm beast bench bodybuilder bro curls flex gains gym jacked muscle press ripped strong weightlift flexionado comic fuerte musculo", "t": ["\u{1F4AA}\u{1F3FB}", "\u{1F4AA}\u{1F3FC}", "\u{1F4AA}\u{1F3FD}", "\u{1F4AA}\u{1F3FE}", "\u{1F4AA}\u{1F3FF}"] }, { "e": "\u{1F9BE}", "n": "mechanical arm", "k": "mechanical arm accessibility prosthetic brazo mecanico accesibilidad ortopedia protesis" }, { "e": "\u{1F9BF}", "n": "mechanical leg", "k": "mechanical leg accessibility prosthetic pierna mecanica accesibilidad ortopedia protesis" }, { "e": "\u{1F9B5}", "n": "leg", "k": "leg bent foot kick knee limb pierna extremidad patada", "t": ["\u{1F9B5}\u{1F3FB}", "\u{1F9B5}\u{1F3FC}", "\u{1F9B5}\u{1F3FD}", "\u{1F9B5}\u{1F3FE}", "\u{1F9B5}\u{1F3FF}"] }, { "e": "\u{1F9B6}", "n": "foot", "k": "foot ankle feet kick stomp pie patada pisoton", "t": ["\u{1F9B6}\u{1F3FB}", "\u{1F9B6}\u{1F3FC}", "\u{1F9B6}\u{1F3FD}", "\u{1F9B6}\u{1F3FE}", "\u{1F9B6}\u{1F3FF}"] }, { "e": "\u{1F442}\uFE0F", "n": "ear", "k": "ear body ears hear hearing listen listening sound oreja cuerpo", "t": ["\u{1F442}\u{1F3FB}", "\u{1F442}\u{1F3FC}", "\u{1F442}\u{1F3FD}", "\u{1F442}\u{1F3FE}", "\u{1F442}\u{1F3FF}"] }, { "e": "\u{1F9BB}", "n": "ear with hearing aid", "k": "ear with hearing aid accessibility hard oreja con audifono accesibilidad protesis auditiva sordo", "t": ["\u{1F9BB}\u{1F3FB}", "\u{1F9BB}\u{1F3FC}", "\u{1F9BB}\u{1F3FD}", "\u{1F9BB}\u{1F3FE}", "\u{1F9BB}\u{1F3FF}"] }, { "e": "\u{1F443}", "n": "nose", "k": "nose body noses nosey odor smell smells nariz cuerpo", "t": ["\u{1F443}\u{1F3FB}", "\u{1F443}\u{1F3FC}", "\u{1F443}\u{1F3FD}", "\u{1F443}\u{1F3FE}", "\u{1F443}\u{1F3FF}"] }, { "e": "\u{1F9E0}", "n": "brain", "k": "brain intelligent smart cerebro inteligente" }, { "e": "\u{1FAC0}", "n": "anatomical heart", "k": "anatomical heart beat cardiology heartbeat organ pulse real red corazon humano anatomia cardiologia latido pulso organo" }, { "e": "\u{1FAC1}", "n": "lungs", "k": "lungs breath breathe exhalation inhalation lung organ respiration pulmones exhalar inhalar respiracion respirar organo" }, { "e": "\u{1F9B7}", "n": "tooth", "k": "tooth dentist pearly teeth white diente dentista molar muela" }, { "e": "\u{1F9B4}", "n": "bone", "k": "bone bones dog skeleton wishbone hueso esqueleto" }, { "e": "\u{1F440}", "n": "eyes", "k": "eyes body eye face googly look looking omg peep see seeing ojos cara" }, { "e": "\u{1F441}\uFE0F", "n": "eye", "k": "eye 1 body one ojo cuerpo" }, { "e": "\u{1F445}", "n": "tongue", "k": "tongue body lick slurp lengua cuerpo" }, { "e": "\u{1F444}", "n": "mouth", "k": "mouth beauty body kiss kissing lips lipstick boca labios" }, { "e": "\u{1FAE6}", "n": "biting lip", "k": "biting lip anxious bite fear flirt flirting kiss lipstick nervous sexy uncomfortable worried worry labio mordido ansioso incomodo ligar miedo nervioso preocupado" }, { "e": "\u{1F476}", "n": "baby", "k": "baby babies children goo infant newborn pregnant young bebe joven nino", "t": ["\u{1F476}\u{1F3FB}", "\u{1F476}\u{1F3FC}", "\u{1F476}\u{1F3FD}", "\u{1F476}\u{1F3FE}", "\u{1F476}\u{1F3FF}"] }, { "e": "\u{1F9D2}", "n": "child", "k": "child bright eyed grandchild kid young younger infante crio genero joven neutro", "t": ["\u{1F9D2}\u{1F3FB}", "\u{1F9D2}\u{1F3FC}", "\u{1F9D2}\u{1F3FD}", "\u{1F9D2}\u{1F3FE}", "\u{1F9D2}\u{1F3FF}"] }, { "e": "\u{1F466}", "n": "boy", "k": "boy bright eyed child grandson kid son young younger nino joven", "t": ["\u{1F466}\u{1F3FB}", "\u{1F466}\u{1F3FC}", "\u{1F466}\u{1F3FD}", "\u{1F466}\u{1F3FE}", "\u{1F466}\u{1F3FF}"] }, { "e": "\u{1F467}", "n": "girl", "k": "girl bright eyed child daughter granddaughter kid virgo young younger zodiac nina chica joven", "t": ["\u{1F467}\u{1F3FB}", "\u{1F467}\u{1F3FC}", "\u{1F467}\u{1F3FD}", "\u{1F467}\u{1F3FE}", "\u{1F467}\u{1F3FF}"] }, { "e": "\u{1F9D1}", "n": "person", "k": "person adult persona adulta genero neutro", "t": ["\u{1F9D1}\u{1F3FB}", "\u{1F9D1}\u{1F3FC}", "\u{1F9D1}\u{1F3FD}", "\u{1F9D1}\u{1F3FE}", "\u{1F9D1}\u{1F3FF}"] }, { "e": "\u{1F471}", "n": "person: blond hair", "k": "person blond hair haired human persona adulta rubia rubias rubio rubios", "t": ["\u{1F471}\u{1F3FB}", "\u{1F471}\u{1F3FC}", "\u{1F471}\u{1F3FD}", "\u{1F471}\u{1F3FE}", "\u{1F471}\u{1F3FF}"] }, { "e": "\u{1F468}", "n": "man", "k": "man adult bro hombre adulto", "t": ["\u{1F468}\u{1F3FB}", "\u{1F468}\u{1F3FC}", "\u{1F468}\u{1F3FD}", "\u{1F468}\u{1F3FE}", "\u{1F468}\u{1F3FF}"] }, { "e": "\u{1F9D4}", "n": "person: beard", "k": "person beard bearded whiskers persona con barba barbas barbudo", "t": ["\u{1F9D4}\u{1F3FB}", "\u{1F9D4}\u{1F3FC}", "\u{1F9D4}\u{1F3FD}", "\u{1F9D4}\u{1F3FE}", "\u{1F9D4}\u{1F3FF}"] }, { "e": "\u{1F9D4}\u200D\u2642\uFE0F", "n": "man: beard", "k": "man beard bearded whiskers hombre barba", "t": ["\u{1F9D4}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F9D4}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F9D4}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F9D4}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F9D4}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F9D4}\u200D\u2640\uFE0F", "n": "woman: beard", "k": "woman beard bearded whiskers mujer barba", "t": ["\u{1F9D4}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F9D4}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F9D4}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F9D4}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F9D4}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F468}\u200D\u{1F9B0}", "n": "man: red hair", "k": "man red hair adult bro hombre pelo pelirrojo adulto", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F9B0}", "\u{1F468}\u{1F3FC}\u200D\u{1F9B0}", "\u{1F468}\u{1F3FD}\u200D\u{1F9B0}", "\u{1F468}\u{1F3FE}\u200D\u{1F9B0}", "\u{1F468}\u{1F3FF}\u200D\u{1F9B0}"] }, { "e": "\u{1F468}\u200D\u{1F9B1}", "n": "man: curly hair", "k": "man curly hair adult bro hombre pelo rizado adulto", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F9B1}", "\u{1F468}\u{1F3FC}\u200D\u{1F9B1}", "\u{1F468}\u{1F3FD}\u200D\u{1F9B1}", "\u{1F468}\u{1F3FE}\u200D\u{1F9B1}", "\u{1F468}\u{1F3FF}\u200D\u{1F9B1}"] }, { "e": "\u{1F468}\u200D\u{1F9B3}", "n": "man: white hair", "k": "man white hair adult bro hombre pelo blanco adulto", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F9B3}", "\u{1F468}\u{1F3FC}\u200D\u{1F9B3}", "\u{1F468}\u{1F3FD}\u200D\u{1F9B3}", "\u{1F468}\u{1F3FE}\u200D\u{1F9B3}", "\u{1F468}\u{1F3FF}\u200D\u{1F9B3}"] }, { "e": "\u{1F468}\u200D\u{1F9B2}", "n": "man: bald", "k": "man bald adult bro hombre sin pelo adulto", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F9B2}", "\u{1F468}\u{1F3FC}\u200D\u{1F9B2}", "\u{1F468}\u{1F3FD}\u200D\u{1F9B2}", "\u{1F468}\u{1F3FE}\u200D\u{1F9B2}", "\u{1F468}\u{1F3FF}\u200D\u{1F9B2}"] }, { "e": "\u{1F469}", "n": "woman", "k": "woman adult lady mujer adulta", "t": ["\u{1F469}\u{1F3FB}", "\u{1F469}\u{1F3FC}", "\u{1F469}\u{1F3FD}", "\u{1F469}\u{1F3FE}", "\u{1F469}\u{1F3FF}"] }, { "e": "\u{1F469}\u200D\u{1F9B0}", "n": "woman: red hair", "k": "woman red hair adult lady mujer pelo pelirrojo adulta", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F9B0}", "\u{1F469}\u{1F3FC}\u200D\u{1F9B0}", "\u{1F469}\u{1F3FD}\u200D\u{1F9B0}", "\u{1F469}\u{1F3FE}\u200D\u{1F9B0}", "\u{1F469}\u{1F3FF}\u200D\u{1F9B0}"] }, { "e": "\u{1F9D1}\u200D\u{1F9B0}", "n": "person: red hair", "k": "person red hair adult persona adulta pelo pelirrojo genero neutro", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F9B0}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9B0}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9B0}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9B0}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B0}"] }, { "e": "\u{1F469}\u200D\u{1F9B1}", "n": "woman: curly hair", "k": "woman curly hair adult lady mujer pelo rizado adulta", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F9B1}", "\u{1F469}\u{1F3FC}\u200D\u{1F9B1}", "\u{1F469}\u{1F3FD}\u200D\u{1F9B1}", "\u{1F469}\u{1F3FE}\u200D\u{1F9B1}", "\u{1F469}\u{1F3FF}\u200D\u{1F9B1}"] }, { "e": "\u{1F9D1}\u200D\u{1F9B1}", "n": "person: curly hair", "k": "person curly hair adult persona adulta pelo rizado genero neutro", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F9B1}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9B1}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9B1}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9B1}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B1}"] }, { "e": "\u{1F469}\u200D\u{1F9B3}", "n": "woman: white hair", "k": "woman white hair adult lady mujer pelo blanco adulta", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F9B3}", "\u{1F469}\u{1F3FC}\u200D\u{1F9B3}", "\u{1F469}\u{1F3FD}\u200D\u{1F9B3}", "\u{1F469}\u{1F3FE}\u200D\u{1F9B3}", "\u{1F469}\u{1F3FF}\u200D\u{1F9B3}"] }, { "e": "\u{1F9D1}\u200D\u{1F9B3}", "n": "person: white hair", "k": "person white hair adult persona adulta pelo blanco genero neutro", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F9B3}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9B3}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9B3}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9B3}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B3}"] }, { "e": "\u{1F469}\u200D\u{1F9B2}", "n": "woman: bald", "k": "woman bald adult lady mujer sin pelo adulta", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F9B2}", "\u{1F469}\u{1F3FC}\u200D\u{1F9B2}", "\u{1F469}\u{1F3FD}\u200D\u{1F9B2}", "\u{1F469}\u{1F3FE}\u200D\u{1F9B2}", "\u{1F469}\u{1F3FF}\u200D\u{1F9B2}"] }, { "e": "\u{1F9D1}\u200D\u{1F9B2}", "n": "person: bald", "k": "person bald adult persona adulta sin pelo genero neutro", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F9B2}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9B2}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9B2}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9B2}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B2}"] }, { "e": "\u{1F471}\u200D\u2640\uFE0F", "n": "woman: blond hair", "k": "woman blond hair haired blonde mujer rubia rubiales", "t": ["\u{1F471}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F471}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F471}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F471}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F471}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F471}\u200D\u2642\uFE0F", "n": "man: blond hair", "k": "man blond hair haired hombre rubio rubiales", "t": ["\u{1F471}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F471}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F471}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F471}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F471}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F9D3}", "n": "older person", "k": "older person adult elderly grandparent old wise persona mayor adulto genero neutro no especificado maduro", "t": ["\u{1F9D3}\u{1F3FB}", "\u{1F9D3}\u{1F3FC}", "\u{1F9D3}\u{1F3FD}", "\u{1F9D3}\u{1F3FE}", "\u{1F9D3}\u{1F3FF}"] }, { "e": "\u{1F474}", "n": "old man", "k": "old man adult bald elderly gramps grandfather grandpa wise anciano hombre mayor", "t": ["\u{1F474}\u{1F3FB}", "\u{1F474}\u{1F3FC}", "\u{1F474}\u{1F3FD}", "\u{1F474}\u{1F3FE}", "\u{1F474}\u{1F3FF}"] }, { "e": "\u{1F475}", "n": "old woman", "k": "old woman adult elderly grandma grandmother granny lady wise anciana mayor mujer", "t": ["\u{1F475}\u{1F3FB}", "\u{1F475}\u{1F3FC}", "\u{1F475}\u{1F3FD}", "\u{1F475}\u{1F3FE}", "\u{1F475}\u{1F3FF}"] }, { "e": "\u{1F64D}", "n": "person frowning", "k": "person frowning annoyed disappointed disgruntled disturbed frown frustrated gesture irritated upset persona frunciendo el ceno fruncido gesto", "t": ["\u{1F64D}\u{1F3FB}", "\u{1F64D}\u{1F3FC}", "\u{1F64D}\u{1F3FD}", "\u{1F64D}\u{1F3FE}", "\u{1F64D}\u{1F3FF}"] }, { "e": "\u{1F64D}\u200D\u2642\uFE0F", "n": "man frowning", "k": "man frowning annoyed disappointed disgruntled disturbed frown frustrated gesture irritated upset hombre frunciendo el ceno fruncido gesto", "t": ["\u{1F64D}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F64D}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F64D}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F64D}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F64D}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F64D}\u200D\u2640\uFE0F", "n": "woman frowning", "k": "woman frowning annoyed disappointed disgruntled disturbed frown frustrated gesture irritated upset mujer frunciendo el ceno fruncido gesto", "t": ["\u{1F64D}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F64D}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F64D}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F64D}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F64D}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F64E}", "n": "person pouting", "k": "person pouting disappointed downtrodden frown grimace scowl sulk upset whine persona haciendo pucheros gesto", "t": ["\u{1F64E}\u{1F3FB}", "\u{1F64E}\u{1F3FC}", "\u{1F64E}\u{1F3FD}", "\u{1F64E}\u{1F3FE}", "\u{1F64E}\u{1F3FF}"] }, { "e": "\u{1F64E}\u200D\u2642\uFE0F", "n": "man pouting", "k": "man pouting disappointed downtrodden frown grimace scowl sulk upset whine hombre haciendo pucheros gesto", "t": ["\u{1F64E}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F64E}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F64E}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F64E}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F64E}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F64E}\u200D\u2640\uFE0F", "n": "woman pouting", "k": "woman pouting disappointed downtrodden frown grimace scowl sulk upset whine mujer haciendo pucheros gesto", "t": ["\u{1F64E}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F64E}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F64E}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F64E}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F64E}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F645}", "n": "person gesturing NO", "k": "person gesturing no forbidden gesture hand not prohibit persona haciendo el gesto de mano prohibido", "t": ["\u{1F645}\u{1F3FB}", "\u{1F645}\u{1F3FC}", "\u{1F645}\u{1F3FD}", "\u{1F645}\u{1F3FE}", "\u{1F645}\u{1F3FF}"] }, { "e": "\u{1F645}\u200D\u2642\uFE0F", "n": "man gesturing NO", "k": "man gesturing no forbidden gesture hand not prohibit hombre haciendo el gesto de mano prohibido", "t": ["\u{1F645}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F645}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F645}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F645}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F645}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F645}\u200D\u2640\uFE0F", "n": "woman gesturing NO", "k": "woman gesturing no forbidden gesture hand not prohibit mujer haciendo el gesto de mano prohibido", "t": ["\u{1F645}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F645}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F645}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F645}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F645}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F646}", "n": "person gesturing OK", "k": "person gesturing ok exercise gesture hand omg persona haciendo el gesto de acuerdo mano vale", "t": ["\u{1F646}\u{1F3FB}", "\u{1F646}\u{1F3FC}", "\u{1F646}\u{1F3FD}", "\u{1F646}\u{1F3FE}", "\u{1F646}\u{1F3FF}"] }, { "e": "\u{1F646}\u200D\u2642\uFE0F", "n": "man gesturing OK", "k": "man gesturing ok exercise gesture hand omg hombre haciendo el gesto de acuerdo mano vale", "t": ["\u{1F646}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F646}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F646}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F646}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F646}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F646}\u200D\u2640\uFE0F", "n": "woman gesturing OK", "k": "woman gesturing ok exercise gesture hand omg mujer haciendo el gesto de acuerdo mano vale", "t": ["\u{1F646}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F646}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F646}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F646}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F646}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F481}", "n": "person tipping hand", "k": "person tipping hand fetch flick flip gossip sarcasm sarcastic sassy seriously whatever persona de mostrador informacion mano", "t": ["\u{1F481}\u{1F3FB}", "\u{1F481}\u{1F3FC}", "\u{1F481}\u{1F3FD}", "\u{1F481}\u{1F3FE}", "\u{1F481}\u{1F3FF}"] }, { "e": "\u{1F481}\u200D\u2642\uFE0F", "n": "man tipping hand", "k": "man tipping hand fetch flick flip gossip sarcasm sarcastic sassy seriously whatever empleado de mostrador informacion hombre mano", "t": ["\u{1F481}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F481}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F481}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F481}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F481}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F481}\u200D\u2640\uFE0F", "n": "woman tipping hand", "k": "woman tipping hand fetch flick flip gossip sarcasm sarcastic sassy seriously whatever empleada de mostrador informacion mano mujer", "t": ["\u{1F481}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F481}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F481}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F481}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F481}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F64B}", "n": "person raising hand", "k": "person raising hand gesture here know me pick question raise persona con la mano levantada feliz gesto levantar", "t": ["\u{1F64B}\u{1F3FB}", "\u{1F64B}\u{1F3FC}", "\u{1F64B}\u{1F3FD}", "\u{1F64B}\u{1F3FE}", "\u{1F64B}\u{1F3FF}"] }, { "e": "\u{1F64B}\u200D\u2642\uFE0F", "n": "man raising hand", "k": "man raising hand gesture here know me pick question raise hombre con la mano levantada gesto levantar", "t": ["\u{1F64B}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F64B}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F64B}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F64B}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F64B}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F64B}\u200D\u2640\uFE0F", "n": "woman raising hand", "k": "woman raising hand gesture here know me pick question raise mujer con la mano levantada gesto levantar", "t": ["\u{1F64B}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F64B}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F64B}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F64B}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F64B}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F9CF}", "n": "deaf person", "k": "deaf person accessibility ear gesture hear persona sorda accesibilidad escuchar oido oir sordera", "t": ["\u{1F9CF}\u{1F3FB}", "\u{1F9CF}\u{1F3FC}", "\u{1F9CF}\u{1F3FD}", "\u{1F9CF}\u{1F3FE}", "\u{1F9CF}\u{1F3FF}"] }, { "e": "\u{1F9CF}\u200D\u2642\uFE0F", "n": "deaf man", "k": "deaf man accessibility ear gesture hear hombre sordo sordera", "t": ["\u{1F9CF}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F9CF}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F9CF}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F9CF}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F9CF}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F9CF}\u200D\u2640\uFE0F", "n": "deaf woman", "k": "deaf woman accessibility ear gesture hear mujer sorda sordera", "t": ["\u{1F9CF}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F9CF}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F9CF}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F9CF}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F9CF}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F647}", "n": "person bowing", "k": "person bowing apology ask beg bow favor forgive gesture meditate meditation pity regret sorry persona haciendo una reverencia disculpa gesto perdon", "t": ["\u{1F647}\u{1F3FB}", "\u{1F647}\u{1F3FC}", "\u{1F647}\u{1F3FD}", "\u{1F647}\u{1F3FE}", "\u{1F647}\u{1F3FF}"] }, { "e": "\u{1F647}\u200D\u2642\uFE0F", "n": "man bowing", "k": "man bowing apology ask beg bow favor forgive gesture meditate meditation pity regret sorry hombre haciendo una reverencia disculpa gesto perdon", "t": ["\u{1F647}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F647}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F647}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F647}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F647}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F647}\u200D\u2640\uFE0F", "n": "woman bowing", "k": "woman bowing apology ask beg bow favor forgive gesture meditate meditation pity regret sorry mujer haciendo una reverencia disculpa gesto perdon", "t": ["\u{1F647}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F647}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F647}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F647}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F647}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F926}", "n": "person facepalming", "k": "person facepalming again bewilder disbelief exasperation facepalm no not oh omg shock smh persona con la mano en frente incredulidad", "t": ["\u{1F926}\u{1F3FB}", "\u{1F926}\u{1F3FC}", "\u{1F926}\u{1F3FD}", "\u{1F926}\u{1F3FE}", "\u{1F926}\u{1F3FF}"] }, { "e": "\u{1F926}\u200D\u2642\uFE0F", "n": "man facepalming", "k": "man facepalming again bewilder disbelief exasperation facepalm no not oh omg shock smh hombre con la mano en frente incredulidad", "t": ["\u{1F926}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F926}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F926}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F926}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F926}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F926}\u200D\u2640\uFE0F", "n": "woman facepalming", "k": "woman facepalming again bewilder disbelief exasperation facepalm no not oh omg shock smh mujer con la mano en frente incredulidad", "t": ["\u{1F926}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F926}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F926}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F926}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F926}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F937}", "n": "person shrugging", "k": "person shrugging doubt dunno guess idk ignorance indifference knows maybe shrug whatever who persona encogida de hombros duda encogerse indiferencia", "t": ["\u{1F937}\u{1F3FB}", "\u{1F937}\u{1F3FC}", "\u{1F937}\u{1F3FD}", "\u{1F937}\u{1F3FE}", "\u{1F937}\u{1F3FF}"] }, { "e": "\u{1F937}\u200D\u2642\uFE0F", "n": "man shrugging", "k": "man shrugging doubt dunno guess idk ignorance indifference knows maybe shrug whatever who hombre encogido de hombros duda encogerse indiferencia", "t": ["\u{1F937}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F937}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F937}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F937}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F937}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F937}\u200D\u2640\uFE0F", "n": "woman shrugging", "k": "woman shrugging doubt dunno guess idk ignorance indifference knows maybe shrug whatever who mujer encogida de hombros duda encogerse indiferencia", "t": ["\u{1F937}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F937}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F937}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F937}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F937}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F9D1}\u200D\u2695\uFE0F", "n": "health worker", "k": "health worker doctor healthcare nurse therapist profesional sanitario enfermero medico salud terapeuta", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u2695\uFE0F", "\u{1F9D1}\u{1F3FC}\u200D\u2695\uFE0F", "\u{1F9D1}\u{1F3FD}\u200D\u2695\uFE0F", "\u{1F9D1}\u{1F3FE}\u200D\u2695\uFE0F", "\u{1F9D1}\u{1F3FF}\u200D\u2695\uFE0F"] }, { "e": "\u{1F468}\u200D\u2695\uFE0F", "n": "man health worker", "k": "man health worker doctor healthcare nurse therapist profesional sanitario hombre enfermero medico terapeuta", "t": ["\u{1F468}\u{1F3FB}\u200D\u2695\uFE0F", "\u{1F468}\u{1F3FC}\u200D\u2695\uFE0F", "\u{1F468}\u{1F3FD}\u200D\u2695\uFE0F", "\u{1F468}\u{1F3FE}\u200D\u2695\uFE0F", "\u{1F468}\u{1F3FF}\u200D\u2695\uFE0F"] }, { "e": "\u{1F469}\u200D\u2695\uFE0F", "n": "woman health worker", "k": "woman health worker doctor healthcare nurse therapist profesional sanitario mujer doctora enfermera medica sanitaria terapeuta", "t": ["\u{1F469}\u{1F3FB}\u200D\u2695\uFE0F", "\u{1F469}\u{1F3FC}\u200D\u2695\uFE0F", "\u{1F469}\u{1F3FD}\u200D\u2695\uFE0F", "\u{1F469}\u{1F3FE}\u200D\u2695\uFE0F", "\u{1F469}\u{1F3FF}\u200D\u2695\uFE0F"] }, { "e": "\u{1F9D1}\u200D\u{1F393}", "n": "student", "k": "student graduate estudiante graduado licenciado universitario", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F393}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F393}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F393}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F393}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F393}"] }, { "e": "\u{1F468}\u200D\u{1F393}", "n": "man student", "k": "man student graduate estudiante hombre graduado licenciado universitario", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F393}", "\u{1F468}\u{1F3FC}\u200D\u{1F393}", "\u{1F468}\u{1F3FD}\u200D\u{1F393}", "\u{1F468}\u{1F3FE}\u200D\u{1F393}", "\u{1F468}\u{1F3FF}\u200D\u{1F393}"] }, { "e": "\u{1F469}\u200D\u{1F393}", "n": "woman student", "k": "woman student graduate estudiante mujer graduada licenciada universitaria", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F393}", "\u{1F469}\u{1F3FC}\u200D\u{1F393}", "\u{1F469}\u{1F3FD}\u200D\u{1F393}", "\u{1F469}\u{1F3FE}\u200D\u{1F393}", "\u{1F469}\u{1F3FF}\u200D\u{1F393}"] }, { "e": "\u{1F9D1}\u200D\u{1F3EB}", "n": "teacher", "k": "teacher instructor lecturer professor docente educador ensenanza maestro profesor", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F3EB}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F3EB}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F3EB}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F3EB}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F3EB}"] }, { "e": "\u{1F468}\u200D\u{1F3EB}", "n": "man teacher", "k": "man teacher instructor lecturer professor docente hombre educador maestro profesor", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F3EB}", "\u{1F468}\u{1F3FC}\u200D\u{1F3EB}", "\u{1F468}\u{1F3FD}\u200D\u{1F3EB}", "\u{1F468}\u{1F3FE}\u200D\u{1F3EB}", "\u{1F468}\u{1F3FF}\u200D\u{1F3EB}"] }, { "e": "\u{1F469}\u200D\u{1F3EB}", "n": "woman teacher", "k": "woman teacher instructor lecturer professor docente mujer educadora instructora maestra profesora", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F3EB}", "\u{1F469}\u{1F3FC}\u200D\u{1F3EB}", "\u{1F469}\u{1F3FD}\u200D\u{1F3EB}", "\u{1F469}\u{1F3FE}\u200D\u{1F3EB}", "\u{1F469}\u{1F3FF}\u200D\u{1F3EB}"] }, { "e": "\u{1F9D1}\u200D\u2696\uFE0F", "n": "judge", "k": "judge justice law scales fiscal juez juicio magistrado", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u2696\uFE0F", "\u{1F9D1}\u{1F3FC}\u200D\u2696\uFE0F", "\u{1F9D1}\u{1F3FD}\u200D\u2696\uFE0F", "\u{1F9D1}\u{1F3FE}\u200D\u2696\uFE0F", "\u{1F9D1}\u{1F3FF}\u200D\u2696\uFE0F"] }, { "e": "\u{1F468}\u200D\u2696\uFE0F", "n": "man judge", "k": "man judge justice law scales fiscal hombre juez justicia magistrado", "t": ["\u{1F468}\u{1F3FB}\u200D\u2696\uFE0F", "\u{1F468}\u{1F3FC}\u200D\u2696\uFE0F", "\u{1F468}\u{1F3FD}\u200D\u2696\uFE0F", "\u{1F468}\u{1F3FE}\u200D\u2696\uFE0F", "\u{1F468}\u{1F3FF}\u200D\u2696\uFE0F"] }, { "e": "\u{1F469}\u200D\u2696\uFE0F", "n": "woman judge", "k": "woman judge justice law scales fiscal mujer jueza justicia magistrada", "t": ["\u{1F469}\u{1F3FB}\u200D\u2696\uFE0F", "\u{1F469}\u{1F3FC}\u200D\u2696\uFE0F", "\u{1F469}\u{1F3FD}\u200D\u2696\uFE0F", "\u{1F469}\u{1F3FE}\u200D\u2696\uFE0F", "\u{1F469}\u{1F3FF}\u200D\u2696\uFE0F"] }, { "e": "\u{1F9D1}\u200D\u{1F33E}", "n": "farmer", "k": "farmer gardener rancher profesional de la agricultura agricultor cultivador granjero jardinero labrador", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F33E}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F33E}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F33E}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F33E}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F33E}"] }, { "e": "\u{1F468}\u200D\u{1F33E}", "n": "man farmer", "k": "man farmer gardener rancher profesional de la agricultura hombre agricultor campo granjero labrador", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F33E}", "\u{1F468}\u{1F3FC}\u200D\u{1F33E}", "\u{1F468}\u{1F3FD}\u200D\u{1F33E}", "\u{1F468}\u{1F3FE}\u200D\u{1F33E}", "\u{1F468}\u{1F3FF}\u200D\u{1F33E}"] }, { "e": "\u{1F469}\u200D\u{1F33E}", "n": "woman farmer", "k": "woman farmer gardener rancher profesional de la agricultura mujer agricultora campo granjera labradora", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F33E}", "\u{1F469}\u{1F3FC}\u200D\u{1F33E}", "\u{1F469}\u{1F3FD}\u200D\u{1F33E}", "\u{1F469}\u{1F3FE}\u200D\u{1F33E}", "\u{1F469}\u{1F3FF}\u200D\u{1F33E}"] }, { "e": "\u{1F9D1}\u200D\u{1F373}", "n": "cook", "k": "cook chef cocinero cocinillas guisandero pinche", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F373}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F373}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F373}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F373}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F373}"] }, { "e": "\u{1F468}\u200D\u{1F373}", "n": "man cook", "k": "man cook chef hombre cocinero pinche", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F373}", "\u{1F468}\u{1F3FC}\u200D\u{1F373}", "\u{1F468}\u{1F3FD}\u200D\u{1F373}", "\u{1F468}\u{1F3FE}\u200D\u{1F373}", "\u{1F468}\u{1F3FF}\u200D\u{1F373}"] }, { "e": "\u{1F469}\u200D\u{1F373}", "n": "woman cook", "k": "woman cook chef mujer cocinera pinche", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F373}", "\u{1F469}\u{1F3FC}\u200D\u{1F373}", "\u{1F469}\u{1F3FD}\u200D\u{1F373}", "\u{1F469}\u{1F3FE}\u200D\u{1F373}", "\u{1F469}\u{1F3FF}\u200D\u{1F373}"] }, { "e": "\u{1F9D1}\u200D\u{1F527}", "n": "mechanic", "k": "mechanic electrician plumber tradesperson profesional de la mecanica electricista fontanero mecanico operario tecnico", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F527}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F527}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F527}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F527}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F527}"] }, { "e": "\u{1F468}\u200D\u{1F527}", "n": "man mechanic", "k": "man mechanic electrician plumber tradesperson profesional de la mecanica hombre electricista fontanero mecanico operario", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F527}", "\u{1F468}\u{1F3FC}\u200D\u{1F527}", "\u{1F468}\u{1F3FD}\u200D\u{1F527}", "\u{1F468}\u{1F3FE}\u200D\u{1F527}", "\u{1F468}\u{1F3FF}\u200D\u{1F527}"] }, { "e": "\u{1F469}\u200D\u{1F527}", "n": "woman mechanic", "k": "woman mechanic electrician plumber tradesperson profesional de la mecanica mujer electricista fontanera operaria", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F527}", "\u{1F469}\u{1F3FC}\u200D\u{1F527}", "\u{1F469}\u{1F3FD}\u200D\u{1F527}", "\u{1F469}\u{1F3FE}\u200D\u{1F527}", "\u{1F469}\u{1F3FF}\u200D\u{1F527}"] }, { "e": "\u{1F9D1}\u200D\u{1F3ED}", "n": "factory worker", "k": "factory worker assembly industrial profesional fabrica montaje obrero operario trabajador", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F3ED}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F3ED}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F3ED}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F3ED}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F3ED}"] }, { "e": "\u{1F468}\u200D\u{1F3ED}", "n": "man factory worker", "k": "man factory worker assembly industrial profesional hombre fabrica montaje obrero operario trabajador", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F3ED}", "\u{1F468}\u{1F3FC}\u200D\u{1F3ED}", "\u{1F468}\u{1F3FD}\u200D\u{1F3ED}", "\u{1F468}\u{1F3FE}\u200D\u{1F3ED}", "\u{1F468}\u{1F3FF}\u200D\u{1F3ED}"] }, { "e": "\u{1F469}\u200D\u{1F3ED}", "n": "woman factory worker", "k": "woman factory worker assembly industrial profesional mujer fabrica montaje obrera operaria trabajadora", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F3ED}", "\u{1F469}\u{1F3FC}\u200D\u{1F3ED}", "\u{1F469}\u{1F3FD}\u200D\u{1F3ED}", "\u{1F469}\u{1F3FE}\u200D\u{1F3ED}", "\u{1F469}\u{1F3FF}\u200D\u{1F3ED}"] }, { "e": "\u{1F9D1}\u200D\u{1F4BC}", "n": "office worker", "k": "office worker architect business manager white collar oficinista arquitecto director ejecutivo empresa", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F4BC}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F4BC}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F4BC}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F4BC}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F4BC}"] }, { "e": "\u{1F468}\u200D\u{1F4BC}", "n": "man office worker", "k": "man office worker architect business manager white collar oficinista hombre director ejecutivo empresa oficina", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F4BC}", "\u{1F468}\u{1F3FC}\u200D\u{1F4BC}", "\u{1F468}\u{1F3FD}\u200D\u{1F4BC}", "\u{1F468}\u{1F3FE}\u200D\u{1F4BC}", "\u{1F468}\u{1F3FF}\u200D\u{1F4BC}"] }, { "e": "\u{1F469}\u200D\u{1F4BC}", "n": "woman office worker", "k": "woman office worker architect business manager white collar oficinista mujer directora ejecutiva empresa oficina", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F4BC}", "\u{1F469}\u{1F3FC}\u200D\u{1F4BC}", "\u{1F469}\u{1F3FD}\u200D\u{1F4BC}", "\u{1F469}\u{1F3FE}\u200D\u{1F4BC}", "\u{1F469}\u{1F3FF}\u200D\u{1F4BC}"] }, { "e": "\u{1F9D1}\u200D\u{1F52C}", "n": "scientist", "k": "scientist biologist chemist engineer mathematician physicist profesional de la ciencia biologo cientifico fisico investigador quimico", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F52C}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F52C}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F52C}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F52C}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F52C}"] }, { "e": "\u{1F468}\u200D\u{1F52C}", "n": "man scientist", "k": "man scientist biologist chemist engineer mathematician physicist profesional de la ciencia hombre biologo cientifico fisico quimico", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F52C}", "\u{1F468}\u{1F3FC}\u200D\u{1F52C}", "\u{1F468}\u{1F3FD}\u200D\u{1F52C}", "\u{1F468}\u{1F3FE}\u200D\u{1F52C}", "\u{1F468}\u{1F3FF}\u200D\u{1F52C}"] }, { "e": "\u{1F469}\u200D\u{1F52C}", "n": "woman scientist", "k": "woman scientist biologist chemist engineer mathematician physicist profesional de la ciencia mujer biologa cientifica fisica quimica", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F52C}", "\u{1F469}\u{1F3FC}\u200D\u{1F52C}", "\u{1F469}\u{1F3FD}\u200D\u{1F52C}", "\u{1F469}\u{1F3FE}\u200D\u{1F52C}", "\u{1F469}\u{1F3FF}\u200D\u{1F52C}"] }, { "e": "\u{1F9D1}\u200D\u{1F4BB}", "n": "technologist", "k": "technologist coder computer developer inventor software profesional de la tecnologia desarrollador informatico programador tecnologo", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F4BB}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F4BB}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F4BB}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F4BB}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F4BB}"] }, { "e": "\u{1F468}\u200D\u{1F4BB}", "n": "man technologist", "k": "man technologist coder computer developer inventor software profesional de la tecnologia hombre desarrollador informatico programador tecnologo", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F4BB}", "\u{1F468}\u{1F3FC}\u200D\u{1F4BB}", "\u{1F468}\u{1F3FD}\u200D\u{1F4BB}", "\u{1F468}\u{1F3FE}\u200D\u{1F4BB}", "\u{1F468}\u{1F3FF}\u200D\u{1F4BB}"] }, { "e": "\u{1F469}\u200D\u{1F4BB}", "n": "woman technologist", "k": "woman technologist coder computer developer inventor software profesional de la tecnologia mujer desarrolladora informatica programadora tecnologa", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F4BB}", "\u{1F469}\u{1F3FC}\u200D\u{1F4BB}", "\u{1F469}\u{1F3FD}\u200D\u{1F4BB}", "\u{1F469}\u{1F3FE}\u200D\u{1F4BB}", "\u{1F469}\u{1F3FF}\u200D\u{1F4BB}"] }, { "e": "\u{1F9D1}\u200D\u{1F3A4}", "n": "singer", "k": "singer actor entertainer rock rockstar star cantante artista estrella", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F3A4}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F3A4}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F3A4}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F3A4}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F3A4}"] }, { "e": "\u{1F468}\u200D\u{1F3A4}", "n": "man singer", "k": "man singer actor entertainer rock rockstar star cantante hombre artista estrella", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F3A4}", "\u{1F468}\u{1F3FC}\u200D\u{1F3A4}", "\u{1F468}\u{1F3FD}\u200D\u{1F3A4}", "\u{1F468}\u{1F3FE}\u200D\u{1F3A4}", "\u{1F468}\u{1F3FF}\u200D\u{1F3A4}"] }, { "e": "\u{1F469}\u200D\u{1F3A4}", "n": "woman singer", "k": "woman singer actor entertainer rock rockstar star cantante mujer artista estrella", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F3A4}", "\u{1F469}\u{1F3FC}\u200D\u{1F3A4}", "\u{1F469}\u{1F3FD}\u200D\u{1F3A4}", "\u{1F469}\u{1F3FE}\u200D\u{1F3A4}", "\u{1F469}\u{1F3FF}\u200D\u{1F3A4}"] }, { "e": "\u{1F9D1}\u200D\u{1F3A8}", "n": "artist", "k": "artist palette artista paleta pintor pinturas", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F3A8}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F3A8}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F3A8}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F3A8}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F3A8}"] }, { "e": "\u{1F468}\u200D\u{1F3A8}", "n": "man artist", "k": "man artist palette artista hombre paleta pintor pinturas", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F3A8}", "\u{1F468}\u{1F3FC}\u200D\u{1F3A8}", "\u{1F468}\u{1F3FD}\u200D\u{1F3A8}", "\u{1F468}\u{1F3FE}\u200D\u{1F3A8}", "\u{1F468}\u{1F3FF}\u200D\u{1F3A8}"] }, { "e": "\u{1F469}\u200D\u{1F3A8}", "n": "woman artist", "k": "woman artist palette artista mujer paleta pintora pinturas", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F3A8}", "\u{1F469}\u{1F3FC}\u200D\u{1F3A8}", "\u{1F469}\u{1F3FD}\u200D\u{1F3A8}", "\u{1F469}\u{1F3FE}\u200D\u{1F3A8}", "\u{1F469}\u{1F3FF}\u200D\u{1F3A8}"] }, { "e": "\u{1F9D1}\u200D\u2708\uFE0F", "n": "pilot", "k": "pilot plane piloto avion capitan vuelo", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u2708\uFE0F", "\u{1F9D1}\u{1F3FC}\u200D\u2708\uFE0F", "\u{1F9D1}\u{1F3FD}\u200D\u2708\uFE0F", "\u{1F9D1}\u{1F3FE}\u200D\u2708\uFE0F", "\u{1F9D1}\u{1F3FF}\u200D\u2708\uFE0F"] }, { "e": "\u{1F468}\u200D\u2708\uFE0F", "n": "man pilot", "k": "man pilot plane piloto hombre avion capitan vuelo", "t": ["\u{1F468}\u{1F3FB}\u200D\u2708\uFE0F", "\u{1F468}\u{1F3FC}\u200D\u2708\uFE0F", "\u{1F468}\u{1F3FD}\u200D\u2708\uFE0F", "\u{1F468}\u{1F3FE}\u200D\u2708\uFE0F", "\u{1F468}\u{1F3FF}\u200D\u2708\uFE0F"] }, { "e": "\u{1F469}\u200D\u2708\uFE0F", "n": "woman pilot", "k": "woman pilot plane piloto mujer avion capitana vuelo", "t": ["\u{1F469}\u{1F3FB}\u200D\u2708\uFE0F", "\u{1F469}\u{1F3FC}\u200D\u2708\uFE0F", "\u{1F469}\u{1F3FD}\u200D\u2708\uFE0F", "\u{1F469}\u{1F3FE}\u200D\u2708\uFE0F", "\u{1F469}\u{1F3FF}\u200D\u2708\uFE0F"] }, { "e": "\u{1F9D1}\u200D\u{1F680}", "n": "astronaut", "k": "astronaut rocket space astronauta cohete espacio", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F680}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F680}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F680}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F680}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F680}"] }, { "e": "\u{1F468}\u200D\u{1F680}", "n": "man astronaut", "k": "man astronaut rocket space astronauta hombre cohete espacio", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F680}", "\u{1F468}\u{1F3FC}\u200D\u{1F680}", "\u{1F468}\u{1F3FD}\u200D\u{1F680}", "\u{1F468}\u{1F3FE}\u200D\u{1F680}", "\u{1F468}\u{1F3FF}\u200D\u{1F680}"] }, { "e": "\u{1F469}\u200D\u{1F680}", "n": "woman astronaut", "k": "woman astronaut rocket space astronauta mujer cohete espacio", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F680}", "\u{1F469}\u{1F3FC}\u200D\u{1F680}", "\u{1F469}\u{1F3FD}\u200D\u{1F680}", "\u{1F469}\u{1F3FE}\u200D\u{1F680}", "\u{1F469}\u{1F3FF}\u200D\u{1F680}"] }, { "e": "\u{1F9D1}\u200D\u{1F692}", "n": "firefighter", "k": "firefighter fire firetruck bombero camion manguera", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F692}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F692}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F692}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F692}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F692}"] }, { "e": "\u{1F468}\u200D\u{1F692}", "n": "man firefighter", "k": "man firefighter fire firetruck bombero hombre apagafuegos camion manguera", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F692}", "\u{1F468}\u{1F3FC}\u200D\u{1F692}", "\u{1F468}\u{1F3FD}\u200D\u{1F692}", "\u{1F468}\u{1F3FE}\u200D\u{1F692}", "\u{1F468}\u{1F3FF}\u200D\u{1F692}"] }, { "e": "\u{1F469}\u200D\u{1F692}", "n": "woman firefighter", "k": "woman firefighter fire firetruck bombera apagafuegos mujera camion manguera", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F692}", "\u{1F469}\u{1F3FC}\u200D\u{1F692}", "\u{1F469}\u{1F3FD}\u200D\u{1F692}", "\u{1F469}\u{1F3FE}\u200D\u{1F692}", "\u{1F469}\u{1F3FF}\u200D\u{1F692}"] }, { "e": "\u{1F46E}", "n": "police officer", "k": "police officer apprehend arrest citation cop law over pulled undercover agente de policia personas", "t": ["\u{1F46E}\u{1F3FB}", "\u{1F46E}\u{1F3FC}", "\u{1F46E}\u{1F3FD}", "\u{1F46E}\u{1F3FE}", "\u{1F46E}\u{1F3FF}"] }, { "e": "\u{1F46E}\u200D\u2642\uFE0F", "n": "man police officer", "k": "man police officer apprehend arrest citation cop law over pulled undercover agente de policia hombre poli", "t": ["\u{1F46E}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F46E}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F46E}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F46E}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F46E}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F46E}\u200D\u2640\uFE0F", "n": "woman police officer", "k": "woman police officer apprehend arrest citation cop law over pulled undercover agente de policia mujer poli", "t": ["\u{1F46E}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F46E}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F46E}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F46E}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F46E}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F575}\uFE0F", "n": "detective", "k": "detective sleuth spy cara espia", "t": ["\u{1F575}\u{1F3FB}", "\u{1F575}\u{1F3FC}", "\u{1F575}\u{1F3FD}", "\u{1F575}\u{1F3FE}", "\u{1F575}\u{1F3FF}"] }, { "e": "\u{1F575}\uFE0F\u200D\u2642\uFE0F", "n": "man detective", "k": "man detective sleuth spy hombre agente espia investigador", "t": ["\u{1F575}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F575}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F575}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F575}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F575}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F575}\uFE0F\u200D\u2640\uFE0F", "n": "woman detective", "k": "woman detective sleuth spy mujer agente espia investigadora", "t": ["\u{1F575}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F575}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F575}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F575}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F575}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F482}", "n": "guard", "k": "guard buckingham helmet london palace guardia real britanica", "t": ["\u{1F482}\u{1F3FB}", "\u{1F482}\u{1F3FC}", "\u{1F482}\u{1F3FD}", "\u{1F482}\u{1F3FE}", "\u{1F482}\u{1F3FF}"] }, { "e": "\u{1F482}\u200D\u2642\uFE0F", "n": "man guard", "k": "man guard buckingham helmet london palace guardia hombre vigilante", "t": ["\u{1F482}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F482}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F482}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F482}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F482}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F482}\u200D\u2640\uFE0F", "n": "woman guard", "k": "woman guard buckingham helmet london palace guardia mujer vigilante", "t": ["\u{1F482}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F482}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F482}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F482}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F482}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F977}", "n": "ninja", "k": "ninja assassin fight fighter hidden person secret skills sly soldier stealth war furtivo guerrero luchador oculto sigilo", "t": ["\u{1F977}\u{1F3FB}", "\u{1F977}\u{1F3FC}", "\u{1F977}\u{1F3FD}", "\u{1F977}\u{1F3FE}", "\u{1F977}\u{1F3FF}"] }, { "e": "\u{1F477}", "n": "construction worker", "k": "construction worker build fix hardhat hat man person rebuild remodel repair work profesional de la construccion casco obrero trabajador", "t": ["\u{1F477}\u{1F3FB}", "\u{1F477}\u{1F3FC}", "\u{1F477}\u{1F3FD}", "\u{1F477}\u{1F3FE}", "\u{1F477}\u{1F3FF}"] }, { "e": "\u{1F477}\u200D\u2642\uFE0F", "n": "man construction worker", "k": "man construction worker build fix hardhat hat rebuild remodel repair work profesional de la construccion hombre albanil obrero trabajador", "t": ["\u{1F477}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F477}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F477}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F477}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F477}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F477}\u200D\u2640\uFE0F", "n": "woman construction worker", "k": "woman construction worker build fix hardhat hat man rebuild remodel repair work profesional de la construccion mujer albanila obrera trabajadora", "t": ["\u{1F477}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F477}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F477}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F477}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F477}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1FAC5}", "n": "person with crown", "k": "person with crown monarch noble regal royal royalty persona con corona majestad monarca monarquia real realeza", "t": ["\u{1FAC5}\u{1F3FB}", "\u{1FAC5}\u{1F3FC}", "\u{1FAC5}\u{1F3FD}", "\u{1FAC5}\u{1F3FE}", "\u{1FAC5}\u{1F3FF}"] }, { "e": "\u{1F934}", "n": "prince", "k": "prince crown fairy fairytale fantasy king royal royalty tale principe corona", "t": ["\u{1F934}\u{1F3FB}", "\u{1F934}\u{1F3FC}", "\u{1F934}\u{1F3FD}", "\u{1F934}\u{1F3FE}", "\u{1F934}\u{1F3FF}"] }, { "e": "\u{1F478}", "n": "princess", "k": "princess crown fairy fairytale fantasy queen royal royalty tale princesa cuento fantasia hadas", "t": ["\u{1F478}\u{1F3FB}", "\u{1F478}\u{1F3FC}", "\u{1F478}\u{1F3FD}", "\u{1F478}\u{1F3FE}", "\u{1F478}\u{1F3FF}"] }, { "e": "\u{1F473}", "n": "person wearing turban", "k": "person wearing turban persona con turbante", "t": ["\u{1F473}\u{1F3FB}", "\u{1F473}\u{1F3FC}", "\u{1F473}\u{1F3FD}", "\u{1F473}\u{1F3FE}", "\u{1F473}\u{1F3FF}"] }, { "e": "\u{1F473}\u200D\u2642\uFE0F", "n": "man wearing turban", "k": "man wearing turban hombre con turbante", "t": ["\u{1F473}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F473}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F473}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F473}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F473}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F473}\u200D\u2640\uFE0F", "n": "woman wearing turban", "k": "woman wearing turban mujer con turbante", "t": ["\u{1F473}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F473}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F473}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F473}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F473}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F472}", "n": "person with skullcap", "k": "person with skullcap cap chinese gua guapi hat mao pi persona con gorro chino", "t": ["\u{1F472}\u{1F3FB}", "\u{1F472}\u{1F3FC}", "\u{1F472}\u{1F3FD}", "\u{1F472}\u{1F3FE}", "\u{1F472}\u{1F3FF}"] }, { "e": "\u{1F9D5}", "n": "woman with headscarf", "k": "woman with headscarf bandana head hijab kerchief mantilla tichel mujer con hiyab panuelo", "t": ["\u{1F9D5}\u{1F3FB}", "\u{1F9D5}\u{1F3FC}", "\u{1F9D5}\u{1F3FD}", "\u{1F9D5}\u{1F3FE}", "\u{1F9D5}\u{1F3FF}"] }, { "e": "\u{1F935}", "n": "person in tuxedo", "k": "person in tuxedo formal wedding persona con esmoquin novio", "t": ["\u{1F935}\u{1F3FB}", "\u{1F935}\u{1F3FC}", "\u{1F935}\u{1F3FD}", "\u{1F935}\u{1F3FE}", "\u{1F935}\u{1F3FF}"] }, { "e": "\u{1F935}\u200D\u2642\uFE0F", "n": "man in tuxedo", "k": "man in tuxedo formal groom wedding hombre con esmoquin", "t": ["\u{1F935}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F935}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F935}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F935}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F935}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F935}\u200D\u2640\uFE0F", "n": "woman in tuxedo", "k": "woman in tuxedo formal wedding mujer con esmoquin", "t": ["\u{1F935}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F935}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F935}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F935}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F935}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F470}", "n": "person with veil", "k": "person with veil wedding persona con velo boda novia", "t": ["\u{1F470}\u{1F3FB}", "\u{1F470}\u{1F3FC}", "\u{1F470}\u{1F3FD}", "\u{1F470}\u{1F3FE}", "\u{1F470}\u{1F3FF}"] }, { "e": "\u{1F470}\u200D\u2642\uFE0F", "n": "man with veil", "k": "man with veil wedding hombre con velo boda novio", "t": ["\u{1F470}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F470}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F470}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F470}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F470}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F470}\u200D\u2640\uFE0F", "n": "woman with veil", "k": "woman with veil bride wedding mujer con velo boda novia", "t": ["\u{1F470}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F470}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F470}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F470}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F470}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F930}", "n": "pregnant woman", "k": "pregnant woman mujer embarazada", "t": ["\u{1F930}\u{1F3FB}", "\u{1F930}\u{1F3FC}", "\u{1F930}\u{1F3FD}", "\u{1F930}\u{1F3FE}", "\u{1F930}\u{1F3FF}"] }, { "e": "\u{1FAC3}", "n": "pregnant man", "k": "pregnant man belly bloated full overeat hombre embarazado barriga hinchado hinchazon inflado lleno", "t": ["\u{1FAC3}\u{1F3FB}", "\u{1FAC3}\u{1F3FC}", "\u{1FAC3}\u{1F3FD}", "\u{1FAC3}\u{1F3FE}", "\u{1FAC3}\u{1F3FF}"] }, { "e": "\u{1FAC4}", "n": "pregnant person", "k": "pregnant person belly bloated full overeat stuffed persona embarazada barriga embarazo gestacion hinchazon", "t": ["\u{1FAC4}\u{1F3FB}", "\u{1FAC4}\u{1F3FC}", "\u{1FAC4}\u{1F3FD}", "\u{1FAC4}\u{1F3FE}", "\u{1FAC4}\u{1F3FF}"] }, { "e": "\u{1F931}", "n": "breast-feeding", "k": "breast feeding baby mom mother nursing woman lactancia materna amamantar bebe dar pecho", "t": ["\u{1F931}\u{1F3FB}", "\u{1F931}\u{1F3FC}", "\u{1F931}\u{1F3FD}", "\u{1F931}\u{1F3FE}", "\u{1F931}\u{1F3FF}"] }, { "e": "\u{1F469}\u200D\u{1F37C}", "n": "woman feeding baby", "k": "woman feeding baby feed mom mother nanny newborn nursing mujer alimentando a bebe alimentar amamantar lactancia", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F37C}", "\u{1F469}\u{1F3FC}\u200D\u{1F37C}", "\u{1F469}\u{1F3FD}\u200D\u{1F37C}", "\u{1F469}\u{1F3FE}\u200D\u{1F37C}", "\u{1F469}\u{1F3FF}\u200D\u{1F37C}"] }, { "e": "\u{1F468}\u200D\u{1F37C}", "n": "man feeding baby", "k": "man feeding baby dad father feed nanny newborn nursing hombre alimentando a bebe alimentar amamantar lactancia", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F37C}", "\u{1F468}\u{1F3FC}\u200D\u{1F37C}", "\u{1F468}\u{1F3FD}\u200D\u{1F37C}", "\u{1F468}\u{1F3FE}\u200D\u{1F37C}", "\u{1F468}\u{1F3FF}\u200D\u{1F37C}"] }, { "e": "\u{1F9D1}\u200D\u{1F37C}", "n": "person feeding baby", "k": "person feeding baby feed nanny newborn nursing parent persona alimentando a bebe alimentar amamantar lactancia", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F37C}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F37C}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F37C}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F37C}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F37C}"] }, { "e": "\u{1F47C}", "n": "baby angel", "k": "baby angel church face fairy fairytale fantasy tale bebe cara cuento", "t": ["\u{1F47C}\u{1F3FB}", "\u{1F47C}\u{1F3FC}", "\u{1F47C}\u{1F3FD}", "\u{1F47C}\u{1F3FE}", "\u{1F47C}\u{1F3FF}"] }, { "e": "\u{1F385}", "n": "Santa Claus", "k": "santa claus celebration christmas fairy fantasy father holiday merry tale xmas papa noel celebracion cuento fantasia feliz fiestas navidad padre", "t": ["\u{1F385}\u{1F3FB}", "\u{1F385}\u{1F3FC}", "\u{1F385}\u{1F3FD}", "\u{1F385}\u{1F3FE}", "\u{1F385}\u{1F3FF}"] }, { "e": "\u{1F936}", "n": "Mrs. Claus", "k": "mrs claus celebration christmas fairy fantasy holiday merry mother santa tale xmas mama noel celebracion cuento fantasia feliz fiestas madre navidad", "t": ["\u{1F936}\u{1F3FB}", "\u{1F936}\u{1F3FC}", "\u{1F936}\u{1F3FD}", "\u{1F936}\u{1F3FE}", "\u{1F936}\u{1F3FF}"] }, { "e": "\u{1F9D1}\u200D\u{1F384}", "n": "Mx Claus", "k": "mx claus celebration christmas fairy fantasy holiday merry santa tale xmas noel celebracion cuento fantasia feliz fiestas navidad", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F384}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F384}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F384}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F384}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F384}"] }, { "e": "\u{1F9B8}", "n": "superhero", "k": "superhero good hero superpower personaje de superheroe bien heroina heroe superheroina superpoder", "t": ["\u{1F9B8}\u{1F3FB}", "\u{1F9B8}\u{1F3FC}", "\u{1F9B8}\u{1F3FD}", "\u{1F9B8}\u{1F3FE}", "\u{1F9B8}\u{1F3FF}"] }, { "e": "\u{1F9B8}\u200D\u2642\uFE0F", "n": "man superhero", "k": "man superhero good hero superpower superheroe bueno hombre heroe superhombre superpoder", "t": ["\u{1F9B8}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F9B8}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F9B8}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F9B8}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F9B8}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F9B8}\u200D\u2640\uFE0F", "n": "woman superhero", "k": "woman superhero good hero heroine superpower superheroina bondad heroina heroe mujer superheroe superpoder", "t": ["\u{1F9B8}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F9B8}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F9B8}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F9B8}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F9B8}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F9B9}", "n": "supervillain", "k": "supervillain bad criminal evil superpower villain personaje de supervillano mal superpoder supervillana villana villano", "t": ["\u{1F9B9}\u{1F3FB}", "\u{1F9B9}\u{1F3FC}", "\u{1F9B9}\u{1F3FD}", "\u{1F9B9}\u{1F3FE}", "\u{1F9B9}\u{1F3FF}"] }, { "e": "\u{1F9B9}\u200D\u2642\uFE0F", "n": "man supervillain", "k": "man supervillain bad criminal evil superpower villain supervillano hombre mal malvado villano", "t": ["\u{1F9B9}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F9B9}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F9B9}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F9B9}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F9B9}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F9B9}\u200D\u2640\uFE0F", "n": "woman supervillain", "k": "woman supervillain bad criminal evil superpower villain supervillana mal malvada mujer villana", "t": ["\u{1F9B9}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F9B9}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F9B9}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F9B9}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F9B9}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F9D9}", "n": "mage", "k": "mage fantasy magic play sorcerer sorceress sorcery spell summon witch wizard persona maga bruja brujo hechicera hechicero", "t": ["\u{1F9D9}\u{1F3FB}", "\u{1F9D9}\u{1F3FC}", "\u{1F9D9}\u{1F3FD}", "\u{1F9D9}\u{1F3FE}", "\u{1F9D9}\u{1F3FF}"] }, { "e": "\u{1F9D9}\u200D\u2642\uFE0F", "n": "man mage", "k": "man mage fantasy magic play sorcerer sorceress sorcery spell summon witch wizard mago brujo hechicero", "t": ["\u{1F9D9}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F9D9}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F9D9}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F9D9}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F9D9}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F9D9}\u200D\u2640\uFE0F", "n": "woman mage", "k": "woman mage fantasy magic play sorcerer sorceress sorcery spell summon witch wizard maga bruja hechicera", "t": ["\u{1F9D9}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F9D9}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F9D9}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F9D9}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F9D9}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F9DA}", "n": "fairy", "k": "fairy fairytale fantasy myth person pixie tale wings hada campanilla oberon puck titania", "t": ["\u{1F9DA}\u{1F3FB}", "\u{1F9DA}\u{1F3FC}", "\u{1F9DA}\u{1F3FD}", "\u{1F9DA}\u{1F3FE}", "\u{1F9DA}\u{1F3FF}"] }, { "e": "\u{1F9DA}\u200D\u2642\uFE0F", "n": "man fairy", "k": "man fairy fairytale fantasy myth oberon person pixie puck tale wings hada hombre", "t": ["\u{1F9DA}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F9DA}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F9DA}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F9DA}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F9DA}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F9DA}\u200D\u2640\uFE0F", "n": "woman fairy", "k": "woman fairy fairytale fantasy myth person pixie tale titania wings hada mujer campanilla", "t": ["\u{1F9DA}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F9DA}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F9DA}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F9DA}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F9DA}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F9DB}", "n": "vampire", "k": "vampire blood dracula fangs halloween scary supernatural teeth undead vampiro muerto viviente no", "t": ["\u{1F9DB}\u{1F3FB}", "\u{1F9DB}\u{1F3FC}", "\u{1F9DB}\u{1F3FD}", "\u{1F9DB}\u{1F3FE}", "\u{1F9DB}\u{1F3FF}"] }, { "e": "\u{1F9DB}\u200D\u2642\uFE0F", "n": "man vampire", "k": "man vampire blood fangs halloween scary supernatural teeth undead vampiro hombre dracula muerto viviente no", "t": ["\u{1F9DB}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F9DB}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F9DB}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F9DB}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F9DB}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F9DB}\u200D\u2640\uFE0F", "n": "woman vampire", "k": "woman vampire blood fangs halloween scary supernatural teeth undead vampiresa muerta viviente no", "t": ["\u{1F9DB}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F9DB}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F9DB}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F9DB}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F9DB}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F9DC}", "n": "merperson", "k": "merperson creature fairytale folklore ocean sea siren trident persona sirena triton", "t": ["\u{1F9DC}\u{1F3FB}", "\u{1F9DC}\u{1F3FC}", "\u{1F9DC}\u{1F3FD}", "\u{1F9DC}\u{1F3FE}", "\u{1F9DC}\u{1F3FF}"] }, { "e": "\u{1F9DC}\u200D\u2642\uFE0F", "n": "merman", "k": "merman creature fairytale folklore neptune ocean poseidon sea siren trident triton sirena hombre", "t": ["\u{1F9DC}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F9DC}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F9DC}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F9DC}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F9DC}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F9DC}\u200D\u2640\uFE0F", "n": "mermaid", "k": "mermaid creature fairytale folklore merwoman ocean sea siren trident sirena", "t": ["\u{1F9DC}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F9DC}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F9DC}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F9DC}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F9DC}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F9DD}", "n": "elf", "k": "elf elves enchantment fantasy folklore magic magical myth elfo magico", "t": ["\u{1F9DD}\u{1F3FB}", "\u{1F9DD}\u{1F3FC}", "\u{1F9DD}\u{1F3FD}", "\u{1F9DD}\u{1F3FE}", "\u{1F9DD}\u{1F3FF}"] }, { "e": "\u{1F9DD}\u200D\u2642\uFE0F", "n": "man elf", "k": "man elf elves enchantment fantasy folklore magic magical myth elfo hombre magico", "t": ["\u{1F9DD}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F9DD}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F9DD}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F9DD}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F9DD}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F9DD}\u200D\u2640\uFE0F", "n": "woman elf", "k": "woman elf elves enchantment fantasy folklore magic magical myth elfa mujer magico", "t": ["\u{1F9DD}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F9DD}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F9DD}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F9DD}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F9DD}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F9DE}", "n": "genie", "k": "genie djinn fantasy jinn lamp myth rub wishes genio lampara" }, { "e": "\u{1F9DE}\u200D\u2642\uFE0F", "n": "man genie", "k": "man genie djinn fantasy jinn lamp myth rub wishes genio hombre lampara" }, { "e": "\u{1F9DE}\u200D\u2640\uFE0F", "n": "woman genie", "k": "woman genie djinn fantasy jinn lamp myth rub wishes genio mujer lampara" }, { "e": "\u{1F9DF}", "n": "zombie", "k": "zombie apocalypse dead halloween horror scary undead walking zombi muerto viviente no" }, { "e": "\u{1F9DF}\u200D\u2642\uFE0F", "n": "man zombie", "k": "man zombie apocalypse dead halloween horror scary undead walking zombi hombre caminante muerto viviente no" }, { "e": "\u{1F9DF}\u200D\u2640\uFE0F", "n": "woman zombie", "k": "woman zombie apocalypse dead halloween horror scary undead walking zombi mujer caminante muerta viviente no" }, { "e": "\u{1F9CC}", "n": "troll", "k": "troll fairy fantasy monster tale trolling trol cuento de hadas fantasia monstruo" }, { "e": "\u{1F486}", "n": "person getting massage", "k": "person getting massage face headache relax relaxing salon soothe spa tension therapy treatment persona recibiendo masaje cara facial", "t": ["\u{1F486}\u{1F3FB}", "\u{1F486}\u{1F3FC}", "\u{1F486}\u{1F3FD}", "\u{1F486}\u{1F3FE}", "\u{1F486}\u{1F3FF}"] }, { "e": "\u{1F486}\u200D\u2642\uFE0F", "n": "man getting massage", "k": "man getting massage face headache relax relaxing salon soothe spa tension therapy treatment hombre recibiendo masaje cara facial", "t": ["\u{1F486}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F486}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F486}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F486}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F486}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F486}\u200D\u2640\uFE0F", "n": "woman getting massage", "k": "woman getting massage face headache relax relaxing salon soothe spa tension therapy treatment mujer recibiendo masaje cara facial", "t": ["\u{1F486}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F486}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F486}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F486}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F486}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F487}", "n": "person getting haircut", "k": "person getting haircut barber beauty chop cosmetology cut groom hair parlor shears style persona cortandose el pelo belleza corte peluquero", "t": ["\u{1F487}\u{1F3FB}", "\u{1F487}\u{1F3FC}", "\u{1F487}\u{1F3FD}", "\u{1F487}\u{1F3FE}", "\u{1F487}\u{1F3FF}"] }, { "e": "\u{1F487}\u200D\u2642\uFE0F", "n": "man getting haircut", "k": "man getting haircut barber beauty chop cosmetology cut groom hair parlor person shears style hombre cortandose el pelo belleza corte peluquero", "t": ["\u{1F487}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F487}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F487}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F487}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F487}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F487}\u200D\u2640\uFE0F", "n": "woman getting haircut", "k": "woman getting haircut barber beauty chop cosmetology cut groom hair parlor person shears style mujer cortandose el pelo belleza corte peluquero", "t": ["\u{1F487}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F487}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F487}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F487}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F487}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F6B6}", "n": "person walking", "k": "person walking amble gait hike man pace pedestrian stride stroll walk persona caminando andar caminar", "t": ["\u{1F6B6}\u{1F3FB}", "\u{1F6B6}\u{1F3FC}", "\u{1F6B6}\u{1F3FD}", "\u{1F6B6}\u{1F3FE}", "\u{1F6B6}\u{1F3FF}"] }, { "e": "\u{1F6B6}\u200D\u2642\uFE0F", "n": "man walking", "k": "man walking amble gait hike pace pedestrian stride stroll walk hombre caminando andar caminata marcha", "t": ["\u{1F6B6}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F6B6}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F6B6}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F6B6}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F6B6}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F6B6}\u200D\u2640\uFE0F", "n": "woman walking", "k": "woman walking amble gait hike man pace pedestrian stride stroll walk mujer caminando andar caminata marcha", "t": ["\u{1F6B6}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F6B6}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F6B6}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F6B6}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F6B6}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F6B6}\u200D\u27A1\uFE0F", "n": "person walking: facing right", "k": "person walking facing right amble gait hike man pace pedestrian stride stroll walk persona caminando hacia la derecha andar caminar", "t": ["\u{1F6B6}\u{1F3FB}\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FC}\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FD}\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FE}\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FF}\u200D\u27A1\uFE0F"] }, { "e": "\u{1F6B6}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "n": "woman walking: facing right", "k": "woman walking facing right amble gait hike man pace pedestrian stride stroll walk mujer caminando hacia la derecha andar caminata marcha", "t": ["\u{1F6B6}\u{1F3FB}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FC}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FD}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FF}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F"] }, { "e": "\u{1F6B6}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "n": "man walking: facing right", "k": "man walking facing right amble gait hike pace pedestrian stride stroll walk hombre caminando hacia la derecha andar caminata marcha", "t": ["\u{1F6B6}\u{1F3FB}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FC}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FD}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F6B6}\u{1F3FF}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F"] }, { "e": "\u{1F9CD}", "n": "person standing", "k": "person standing stand persona de pie levantada levantado levantarse", "t": ["\u{1F9CD}\u{1F3FB}", "\u{1F9CD}\u{1F3FC}", "\u{1F9CD}\u{1F3FD}", "\u{1F9CD}\u{1F3FE}", "\u{1F9CD}\u{1F3FF}"] }, { "e": "\u{1F9CD}\u200D\u2642\uFE0F", "n": "man standing", "k": "man standing stand hombre de pie levantado levantarse", "t": ["\u{1F9CD}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F9CD}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F9CD}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F9CD}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F9CD}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F9CD}\u200D\u2640\uFE0F", "n": "woman standing", "k": "woman standing stand mujer de pie levantada levantarse", "t": ["\u{1F9CD}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F9CD}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F9CD}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F9CD}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F9CD}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F9CE}", "n": "person kneeling", "k": "person kneeling kneel knees persona de rodillas arrodillada arrodillado arrodillarse", "t": ["\u{1F9CE}\u{1F3FB}", "\u{1F9CE}\u{1F3FC}", "\u{1F9CE}\u{1F3FD}", "\u{1F9CE}\u{1F3FE}", "\u{1F9CE}\u{1F3FF}"] }, { "e": "\u{1F9CE}\u200D\u2642\uFE0F", "n": "man kneeling", "k": "man kneeling kneel knees hombre de rodillas arrodillado arrodillarse", "t": ["\u{1F9CE}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F9CE}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F9CE}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F9CE}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F9CE}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F9CE}\u200D\u2640\uFE0F", "n": "woman kneeling", "k": "woman kneeling kneel knees mujer de rodillas arrodillada arrodillarse", "t": ["\u{1F9CE}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F9CE}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F9CE}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F9CE}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F9CE}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F9CE}\u200D\u27A1\uFE0F", "n": "person kneeling: facing right", "k": "person kneeling facing right kneel knees persona de rodillas hacia la derecha arrodillada arrodillado arrodillarse", "t": ["\u{1F9CE}\u{1F3FB}\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FC}\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FD}\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FE}\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FF}\u200D\u27A1\uFE0F"] }, { "e": "\u{1F9CE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "n": "woman kneeling: facing right", "k": "woman kneeling facing right kneel knees mujer de rodillas hacia la derecha arrodillada arrodillarse", "t": ["\u{1F9CE}\u{1F3FB}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FC}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FD}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FF}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F"] }, { "e": "\u{1F9CE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "n": "man kneeling: facing right", "k": "man kneeling facing right kneel knees hombre de rodillas hacia la derecha arrodillado arrodillarse", "t": ["\u{1F9CE}\u{1F3FB}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FC}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FD}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F9CE}\u{1F3FF}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F"] }, { "e": "\u{1F9D1}\u200D\u{1F9AF}", "n": "person with white cane", "k": "person with white cane accessibility blind probing persona con baston accesibilidad ciego invidente", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F9AF}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9AF}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9AF}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9AF}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9AF}"] }, { "e": "\u{1F9D1}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "n": "person with white cane: facing right", "k": "person with white cane facing right accessibility blind probing persona con baston hacia la derecha accesibilidad ciego invidente", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9AF}\u200D\u27A1\uFE0F"] }, { "e": "\u{1F468}\u200D\u{1F9AF}", "n": "man with white cane", "k": "man with white cane accessibility blind probing hombre con baston accesibilidad ciego invidente", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F9AF}", "\u{1F468}\u{1F3FC}\u200D\u{1F9AF}", "\u{1F468}\u{1F3FD}\u200D\u{1F9AF}", "\u{1F468}\u{1F3FE}\u200D\u{1F9AF}", "\u{1F468}\u{1F3FF}\u200D\u{1F9AF}"] }, { "e": "\u{1F468}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "n": "man with white cane: facing right", "k": "man with white cane facing right accessibility blind probing hombre con baston hacia la derecha accesibilidad ciego invidente", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FC}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FD}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FE}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FF}\u200D\u{1F9AF}\u200D\u27A1\uFE0F"] }, { "e": "\u{1F469}\u200D\u{1F9AF}", "n": "woman with white cane", "k": "woman with white cane accessibility blind probing mujer con baston accesibilidad ciega invidente", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F9AF}", "\u{1F469}\u{1F3FC}\u200D\u{1F9AF}", "\u{1F469}\u{1F3FD}\u200D\u{1F9AF}", "\u{1F469}\u{1F3FE}\u200D\u{1F9AF}", "\u{1F469}\u{1F3FF}\u200D\u{1F9AF}"] }, { "e": "\u{1F469}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "n": "woman with white cane: facing right", "k": "woman with white cane facing right accessibility blind probing mujer con baston hacia la derecha accesibilidad ciega invidente", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FC}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FD}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FE}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FF}\u200D\u{1F9AF}\u200D\u27A1\uFE0F"] }, { "e": "\u{1F9D1}\u200D\u{1F9BC}", "n": "person in motorized wheelchair", "k": "person in motorized wheelchair accessibility persona en silla de ruedas electrica accesibilidad", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F9BC}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BC}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BC}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BC}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BC}"] }, { "e": "\u{1F9D1}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "n": "person in motorized wheelchair: facing right", "k": "person in motorized wheelchair facing right accessibility persona en silla de ruedas electrica hacia la derecha accesibilidad", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BC}\u200D\u27A1\uFE0F"] }, { "e": "\u{1F468}\u200D\u{1F9BC}", "n": "man in motorized wheelchair", "k": "man in motorized wheelchair accessibility hombre en silla de ruedas electrica accesibilidad", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F9BC}", "\u{1F468}\u{1F3FC}\u200D\u{1F9BC}", "\u{1F468}\u{1F3FD}\u200D\u{1F9BC}", "\u{1F468}\u{1F3FE}\u200D\u{1F9BC}", "\u{1F468}\u{1F3FF}\u200D\u{1F9BC}"] }, { "e": "\u{1F468}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "n": "man in motorized wheelchair: facing right", "k": "man in motorized wheelchair facing right accessibility hombre en silla de ruedas electrica hacia la derecha accesibilidad", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FC}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FD}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FE}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FF}\u200D\u{1F9BC}\u200D\u27A1\uFE0F"] }, { "e": "\u{1F469}\u200D\u{1F9BC}", "n": "woman in motorized wheelchair", "k": "woman in motorized wheelchair accessibility mujer en silla de ruedas electrica accesibilidad", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F9BC}", "\u{1F469}\u{1F3FC}\u200D\u{1F9BC}", "\u{1F469}\u{1F3FD}\u200D\u{1F9BC}", "\u{1F469}\u{1F3FE}\u200D\u{1F9BC}", "\u{1F469}\u{1F3FF}\u200D\u{1F9BC}"] }, { "e": "\u{1F469}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "n": "woman in motorized wheelchair: facing right", "k": "woman in motorized wheelchair facing right accessibility mujer en silla de ruedas electrica hacia la derecha accesibilidad", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FC}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FD}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FE}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FF}\u200D\u{1F9BC}\u200D\u27A1\uFE0F"] }, { "e": "\u{1F9D1}\u200D\u{1F9BD}", "n": "person in manual wheelchair", "k": "person in manual wheelchair accessibility persona en silla de ruedas accesibilidad", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F9BD}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BD}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BD}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BD}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BD}"] }, { "e": "\u{1F9D1}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "n": "person in manual wheelchair: facing right", "k": "person in manual wheelchair facing right accessibility persona en silla de ruedas hacia la derecha accesibilidad", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BD}\u200D\u27A1\uFE0F"] }, { "e": "\u{1F468}\u200D\u{1F9BD}", "n": "man in manual wheelchair", "k": "man in manual wheelchair accessibility hombre en silla de ruedas accesibilidad", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F9BD}", "\u{1F468}\u{1F3FC}\u200D\u{1F9BD}", "\u{1F468}\u{1F3FD}\u200D\u{1F9BD}", "\u{1F468}\u{1F3FE}\u200D\u{1F9BD}", "\u{1F468}\u{1F3FF}\u200D\u{1F9BD}"] }, { "e": "\u{1F468}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "n": "man in manual wheelchair: facing right", "k": "man in manual wheelchair facing right accessibility hombre en silla de ruedas hacia la derecha accesibilidad", "t": ["\u{1F468}\u{1F3FB}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FC}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FD}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FE}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F468}\u{1F3FF}\u200D\u{1F9BD}\u200D\u27A1\uFE0F"] }, { "e": "\u{1F469}\u200D\u{1F9BD}", "n": "woman in manual wheelchair", "k": "woman in manual wheelchair accessibility mujer en silla de ruedas accesibilidad", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F9BD}", "\u{1F469}\u{1F3FC}\u200D\u{1F9BD}", "\u{1F469}\u{1F3FD}\u200D\u{1F9BD}", "\u{1F469}\u{1F3FE}\u200D\u{1F9BD}", "\u{1F469}\u{1F3FF}\u200D\u{1F9BD}"] }, { "e": "\u{1F469}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "n": "woman in manual wheelchair: facing right", "k": "woman in manual wheelchair facing right accessibility mujer en silla de ruedas hacia la derecha accesibilidad", "t": ["\u{1F469}\u{1F3FB}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FC}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FD}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FE}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", "\u{1F469}\u{1F3FF}\u200D\u{1F9BD}\u200D\u27A1\uFE0F"] }, { "e": "\u{1F3C3}", "n": "person running", "k": "person running fast hurry marathon move quick race racing run rush speed persona corriendo carrera deporte maraton", "t": ["\u{1F3C3}\u{1F3FB}", "\u{1F3C3}\u{1F3FC}", "\u{1F3C3}\u{1F3FD}", "\u{1F3C3}\u{1F3FE}", "\u{1F3C3}\u{1F3FF}"] }, { "e": "\u{1F3C3}\u200D\u2642\uFE0F", "n": "man running", "k": "man running fast hurry marathon move quick race racing run rush speed hombre corriendo carrera correr maraton", "t": ["\u{1F3C3}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F3C3}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F3C3}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F3C3}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F3C3}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F3C3}\u200D\u2640\uFE0F", "n": "woman running", "k": "woman running fast hurry marathon move quick race racing run rush speed mujer corriendo carrera correr maraton", "t": ["\u{1F3C3}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F3C3}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F3C3}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F3C3}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F3C3}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F3C3}\u200D\u27A1\uFE0F", "n": "person running: facing right", "k": "person running facing right fast hurry marathon move quick race racing run rush speed persona corriendo hacia la derecha carrera deporte maraton", "t": ["\u{1F3C3}\u{1F3FB}\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FC}\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FD}\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FE}\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FF}\u200D\u27A1\uFE0F"] }, { "e": "\u{1F3C3}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "n": "woman running: facing right", "k": "woman running facing right fast hurry marathon move quick race racing run rush speed mujer corriendo hacia la derecha carrera correr maraton", "t": ["\u{1F3C3}\u{1F3FB}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FC}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FD}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FF}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F"] }, { "e": "\u{1F3C3}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "n": "man running: facing right", "k": "man running facing right fast hurry marathon move quick race racing run rush speed hombre corriendo hacia la derecha carrera correr maraton", "t": ["\u{1F3C3}\u{1F3FB}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FC}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FD}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\u{1F3C3}\u{1F3FF}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F"] }, { "e": "\u{1F483}", "n": "woman dancing", "k": "woman dancing dance dancer elegant festive flair flamenco groove let s salsa tango mujer bailando bailar", "t": ["\u{1F483}\u{1F3FB}", "\u{1F483}\u{1F3FC}", "\u{1F483}\u{1F3FD}", "\u{1F483}\u{1F3FE}", "\u{1F483}\u{1F3FF}"] }, { "e": "\u{1F57A}", "n": "man dancing", "k": "man dancing dance dancer elegant festive flair flamenco groove let s salsa tango hombre bailando bailar", "t": ["\u{1F57A}\u{1F3FB}", "\u{1F57A}\u{1F3FC}", "\u{1F57A}\u{1F3FD}", "\u{1F57A}\u{1F3FE}", "\u{1F57A}\u{1F3FF}"] }, { "e": "\u{1F574}\uFE0F", "n": "person in suit levitating", "k": "person in suit levitating business persona trajeada levitando levitar negocios traje", "t": ["\u{1F574}\u{1F3FB}", "\u{1F574}\u{1F3FC}", "\u{1F574}\u{1F3FD}", "\u{1F574}\u{1F3FE}", "\u{1F574}\u{1F3FF}"] }, { "e": "\u{1F46F}", "n": "people with bunny ears", "k": "people with bunny ears bestie bff counterpart dancer double ear identical pair party partying soulmate twin twinsies personas con orejas de conejo bailar fiesta", "t": ["\u{1F46F}\u{1F3FB}", "\u{1F46F}\u{1F3FC}", "\u{1F46F}\u{1F3FD}", "\u{1F46F}\u{1F3FE}", "\u{1F46F}\u{1F3FF}"] }, { "e": "\u{1F46F}\u200D\u2642\uFE0F", "n": "men with bunny ears", "k": "men with bunny ears bestie bff counterpart dancer double ear identical pair party partying people soulmate twin twinsies hombres con orejas de conejo bailar fiesta hombre", "t": ["\u{1F46F}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F46F}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F46F}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F46F}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F46F}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F46F}\u200D\u2640\uFE0F", "n": "women with bunny ears", "k": "women with bunny ears bestie bff counterpart dancer double ear identical pair party partying people soulmate twin twinsies mujeres con orejas de conejo bailar fiesta mujer", "t": ["\u{1F46F}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F46F}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F46F}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F46F}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F46F}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F9D6}", "n": "person in steamy room", "k": "person in steamy room day luxurious pamper relax sauna spa steam steambath unwind persona en una vapor", "t": ["\u{1F9D6}\u{1F3FB}", "\u{1F9D6}\u{1F3FC}", "\u{1F9D6}\u{1F3FD}", "\u{1F9D6}\u{1F3FE}", "\u{1F9D6}\u{1F3FF}"] }, { "e": "\u{1F9D6}\u200D\u2642\uFE0F", "n": "man in steamy room", "k": "man in steamy room day luxurious pamper relax sauna spa steam steambath unwind hombre en una vapor", "t": ["\u{1F9D6}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F9D6}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F9D6}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F9D6}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F9D6}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F9D6}\u200D\u2640\uFE0F", "n": "woman in steamy room", "k": "woman in steamy room day luxurious pamper relax sauna spa steam steambath unwind mujer en una vapor", "t": ["\u{1F9D6}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F9D6}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F9D6}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F9D6}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F9D6}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F9D7}", "n": "person climbing", "k": "person climbing climb climber mountain rock scale up persona escalando alpinista escalador", "t": ["\u{1F9D7}\u{1F3FB}", "\u{1F9D7}\u{1F3FC}", "\u{1F9D7}\u{1F3FD}", "\u{1F9D7}\u{1F3FE}", "\u{1F9D7}\u{1F3FF}"] }, { "e": "\u{1F9D7}\u200D\u2642\uFE0F", "n": "man climbing", "k": "man climbing climb climber mountain rock scale up hombre escalando alpinista escalador", "t": ["\u{1F9D7}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F9D7}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F9D7}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F9D7}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F9D7}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F9D7}\u200D\u2640\uFE0F", "n": "woman climbing", "k": "woman climbing climb climber mountain rock scale up mujer escalando alpinista escaladora", "t": ["\u{1F9D7}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F9D7}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F9D7}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F9D7}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F9D7}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F93A}", "n": "person fencing", "k": "person fencing fencer sword persona haciendo esgrima esgrimista espada" }, { "e": "\u{1F3C7}", "n": "horse racing", "k": "horse racing jockey racehorse riding sport carrera de caballos caballo carreras jinete", "t": ["\u{1F3C7}\u{1F3FB}", "\u{1F3C7}\u{1F3FC}", "\u{1F3C7}\u{1F3FD}", "\u{1F3C7}\u{1F3FE}", "\u{1F3C7}\u{1F3FF}"] }, { "e": "\u26F7\uFE0F", "n": "skier", "k": "skier ski snow persona esquiando esquiador esqui nieve" }, { "e": "\u{1F3C2}\uFE0F", "n": "snowboarder", "k": "snowboarder ski snow snowboard sport practicante de nieve", "t": ["\u{1F3C2}\u{1F3FB}", "\u{1F3C2}\u{1F3FC}", "\u{1F3C2}\u{1F3FD}", "\u{1F3C2}\u{1F3FE}", "\u{1F3C2}\u{1F3FF}"] }, { "e": "\u{1F3CC}\uFE0F", "n": "person golfing", "k": "person golfing ball birdie caddy driving golf green pga putt range tee persona jugando al golfista pelota", "t": ["\u{1F3CC}\u{1F3FB}", "\u{1F3CC}\u{1F3FC}", "\u{1F3CC}\u{1F3FD}", "\u{1F3CC}\u{1F3FE}", "\u{1F3CC}\u{1F3FF}"] }, { "e": "\u{1F3CC}\uFE0F\u200D\u2642\uFE0F", "n": "man golfing", "k": "man golfing ball birdie caddy driving golf green pga putt range tee hombre jugando al jugador", "t": ["\u{1F3CC}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F3CC}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F3CC}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F3CC}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F3CC}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F3CC}\uFE0F\u200D\u2640\uFE0F", "n": "woman golfing", "k": "woman golfing ball birdie caddy driving golf green pga putt range tee mujer jugando al jugadora", "t": ["\u{1F3CC}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F3CC}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F3CC}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F3CC}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F3CC}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F3C4}\uFE0F", "n": "person surfing", "k": "person surfing beach ocean sport surf surfer swell waves persona haciendo surfear", "t": ["\u{1F3C4}\u{1F3FB}", "\u{1F3C4}\u{1F3FC}", "\u{1F3C4}\u{1F3FD}", "\u{1F3C4}\u{1F3FE}", "\u{1F3C4}\u{1F3FF}"] }, { "e": "\u{1F3C4}\u200D\u2642\uFE0F", "n": "man surfing", "k": "man surfing beach ocean sport surf surfer swell waves hombre haciendo surfero surfista", "t": ["\u{1F3C4}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F3C4}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F3C4}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F3C4}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F3C4}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F3C4}\u200D\u2640\uFE0F", "n": "woman surfing", "k": "woman surfing beach ocean person sport surf surfer swell waves mujer haciendo surfera surfista", "t": ["\u{1F3C4}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F3C4}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F3C4}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F3C4}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F3C4}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F6A3}", "n": "person rowing boat", "k": "person rowing boat canoe cruise fishing lake oar paddle raft river row rowboat persona remando en un bote barca remo", "t": ["\u{1F6A3}\u{1F3FB}", "\u{1F6A3}\u{1F3FC}", "\u{1F6A3}\u{1F3FD}", "\u{1F6A3}\u{1F3FE}", "\u{1F6A3}\u{1F3FF}"] }, { "e": "\u{1F6A3}\u200D\u2642\uFE0F", "n": "man rowing boat", "k": "man rowing boat canoe cruise fishing lake oar paddle raft river row rowboat hombre remando en un bote barca remo", "t": ["\u{1F6A3}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F6A3}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F6A3}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F6A3}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F6A3}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F6A3}\u200D\u2640\uFE0F", "n": "woman rowing boat", "k": "woman rowing boat canoe cruise fishing lake oar paddle raft river row rowboat mujer remando en un bote barca remo", "t": ["\u{1F6A3}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F6A3}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F6A3}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F6A3}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F6A3}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F3CA}\uFE0F", "n": "person swimming", "k": "person swimming freestyle sport swim swimmer triathlon persona nadando nadar natacion", "t": ["\u{1F3CA}\u{1F3FB}", "\u{1F3CA}\u{1F3FC}", "\u{1F3CA}\u{1F3FD}", "\u{1F3CA}\u{1F3FE}", "\u{1F3CA}\u{1F3FF}"] }, { "e": "\u{1F3CA}\u200D\u2642\uFE0F", "n": "man swimming", "k": "man swimming freestyle sport swim swimmer triathlon hombre nadando nadar", "t": ["\u{1F3CA}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F3CA}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F3CA}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F3CA}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F3CA}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F3CA}\u200D\u2640\uFE0F", "n": "woman swimming", "k": "woman swimming freestyle man sport swim swimmer triathlon mujer nadando nadar", "t": ["\u{1F3CA}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F3CA}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F3CA}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F3CA}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F3CA}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u26F9\uFE0F", "n": "person bouncing ball", "k": "person bouncing ball athletic basketball championship dribble net player throw persona botando un balon botar pelota", "t": ["\u26F9\u{1F3FB}", "\u26F9\u{1F3FC}", "\u26F9\u{1F3FD}", "\u26F9\u{1F3FE}", "\u26F9\u{1F3FF}"] }, { "e": "\u26F9\uFE0F\u200D\u2642\uFE0F", "n": "man bouncing ball", "k": "man bouncing ball athletic basketball championship dribble net player throw hombre botando un balon botar pelota", "t": ["\u26F9\u{1F3FB}\u200D\u2642\uFE0F", "\u26F9\u{1F3FC}\u200D\u2642\uFE0F", "\u26F9\u{1F3FD}\u200D\u2642\uFE0F", "\u26F9\u{1F3FE}\u200D\u2642\uFE0F", "\u26F9\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u26F9\uFE0F\u200D\u2640\uFE0F", "n": "woman bouncing ball", "k": "woman bouncing ball athletic basketball championship dribble net player throw mujer botando un balon botar pelota", "t": ["\u26F9\u{1F3FB}\u200D\u2640\uFE0F", "\u26F9\u{1F3FC}\u200D\u2640\uFE0F", "\u26F9\u{1F3FD}\u200D\u2640\uFE0F", "\u26F9\u{1F3FE}\u200D\u2640\uFE0F", "\u26F9\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F3CB}\uFE0F", "n": "person lifting weights", "k": "person lifting weights barbell bodybuilder deadlift lifter powerlifting weight weightlifter workout persona levantando pesas halterofilia levantador peso", "t": ["\u{1F3CB}\u{1F3FB}", "\u{1F3CB}\u{1F3FC}", "\u{1F3CB}\u{1F3FD}", "\u{1F3CB}\u{1F3FE}", "\u{1F3CB}\u{1F3FF}"] }, { "e": "\u{1F3CB}\uFE0F\u200D\u2642\uFE0F", "n": "man lifting weights", "k": "man lifting weights barbell bodybuilder deadlift lifter powerlifting weight weightlifter workout hombre levantando pesas halterofilia levantador de", "t": ["\u{1F3CB}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F3CB}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F3CB}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F3CB}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F3CB}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F3CB}\uFE0F\u200D\u2640\uFE0F", "n": "woman lifting weights", "k": "woman lifting weights barbell bodybuilder deadlift lifter powerlifting weight weightlifter workout mujer levantando pesas halterofilia levantadora de", "t": ["\u{1F3CB}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F3CB}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F3CB}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F3CB}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F3CB}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F6B4}", "n": "person biking", "k": "person biking bicycle bicyclist bike cycle cyclist riding sport persona en bicicleta ciclismo ciclista", "t": ["\u{1F6B4}\u{1F3FB}", "\u{1F6B4}\u{1F3FC}", "\u{1F6B4}\u{1F3FD}", "\u{1F6B4}\u{1F3FE}", "\u{1F6B4}\u{1F3FF}"] }, { "e": "\u{1F6B4}\u200D\u2642\uFE0F", "n": "man biking", "k": "man biking bicycle bicyclist bike cycle cyclist riding sport hombre en bicicleta ciclismo ciclista", "t": ["\u{1F6B4}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F6B4}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F6B4}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F6B4}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F6B4}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F6B4}\u200D\u2640\uFE0F", "n": "woman biking", "k": "woman biking bicycle bicyclist bike cycle cyclist riding sport mujer en bicicleta ciclismo ciclista", "t": ["\u{1F6B4}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F6B4}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F6B4}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F6B4}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F6B4}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F6B5}", "n": "person mountain biking", "k": "person mountain biking bicycle bicyclist bike cycle cyclist riding sport persona en bicicleta de montana ciclista", "t": ["\u{1F6B5}\u{1F3FB}", "\u{1F6B5}\u{1F3FC}", "\u{1F6B5}\u{1F3FD}", "\u{1F6B5}\u{1F3FE}", "\u{1F6B5}\u{1F3FF}"] }, { "e": "\u{1F6B5}\u200D\u2642\uFE0F", "n": "man mountain biking", "k": "man mountain biking bicycle bicyclist bike cycle cyclist riding sport hombre en bicicleta de montana ciclista", "t": ["\u{1F6B5}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F6B5}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F6B5}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F6B5}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F6B5}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F6B5}\u200D\u2640\uFE0F", "n": "woman mountain biking", "k": "woman mountain biking bicycle bicyclist bike cycle cyclist riding sport mujer en bicicleta de montana ciclista", "t": ["\u{1F6B5}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F6B5}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F6B5}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F6B5}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F6B5}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F938}", "n": "person cartwheeling", "k": "person cartwheeling active cartwheel excited flip gymnastics happy somersault persona haciendo voltereta lateral acrobacia gimnasia pirueta rueda", "t": ["\u{1F938}\u{1F3FB}", "\u{1F938}\u{1F3FC}", "\u{1F938}\u{1F3FD}", "\u{1F938}\u{1F3FE}", "\u{1F938}\u{1F3FF}"] }, { "e": "\u{1F938}\u200D\u2642\uFE0F", "n": "man cartwheeling", "k": "man cartwheeling active cartwheel excited flip gymnastics happy somersault hombre dando una voltereta lateral deporte gimnasia rueda", "t": ["\u{1F938}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F938}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F938}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F938}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F938}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F938}\u200D\u2640\uFE0F", "n": "woman cartwheeling", "k": "woman cartwheeling active cartwheel excited flip gymnastics happy somersault mujer dando una voltereta lateral deporte gimnasia rueda", "t": ["\u{1F938}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F938}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F938}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F938}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F938}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F93C}", "n": "people wrestling", "k": "people wrestling combat duel grapple ring tournament wrestle personas luchando lucha luchador", "t": ["\u{1F93C}\u{1F3FB}", "\u{1F93C}\u{1F3FC}", "\u{1F93C}\u{1F3FD}", "\u{1F93C}\u{1F3FE}", "\u{1F93C}\u{1F3FF}"] }, { "e": "\u{1F93C}\u200D\u2642\uFE0F", "n": "men wrestling", "k": "men wrestling combat duel grapple ring tournament wrestle hombres luchando deporte hombre lucha luchador", "t": ["\u{1F93C}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F93C}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F93C}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F93C}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F93C}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F93C}\u200D\u2640\uFE0F", "n": "women wrestling", "k": "women wrestling combat duel grapple ring tournament wrestle mujeres luchando deporte lucha luchadora mujer", "t": ["\u{1F93C}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F93C}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F93C}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F93C}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F93C}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F93D}", "n": "person playing water polo", "k": "person playing water polo sport swimming waterpolo persona jugando al waterpolista", "t": ["\u{1F93D}\u{1F3FB}", "\u{1F93D}\u{1F3FC}", "\u{1F93D}\u{1F3FD}", "\u{1F93D}\u{1F3FE}", "\u{1F93D}\u{1F3FF}"] }, { "e": "\u{1F93D}\u200D\u2642\uFE0F", "n": "man playing water polo", "k": "man playing water polo sport swimming waterpolo hombre jugando al agua deporte waterpolista", "t": ["\u{1F93D}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F93D}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F93D}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F93D}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F93D}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F93D}\u200D\u2640\uFE0F", "n": "woman playing water polo", "k": "woman playing water polo sport swimming waterpolo mujer jugando al agua deporte waterpolista", "t": ["\u{1F93D}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F93D}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F93D}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F93D}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F93D}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F93E}", "n": "person playing handball", "k": "person playing handball athletics ball catch chuck hurl lob pitch sport throw toss persona jugando al balonmano balonmanista", "t": ["\u{1F93E}\u{1F3FB}", "\u{1F93E}\u{1F3FC}", "\u{1F93E}\u{1F3FD}", "\u{1F93E}\u{1F3FE}", "\u{1F93E}\u{1F3FF}"] }, { "e": "\u{1F93E}\u200D\u2642\uFE0F", "n": "man playing handball", "k": "man playing handball athletics ball catch chuck hurl lob pitch sport throw toss hombre jugando al balonmano balonmanista deporte", "t": ["\u{1F93E}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F93E}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F93E}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F93E}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F93E}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F93E}\u200D\u2640\uFE0F", "n": "woman playing handball", "k": "woman playing handball athletics ball catch chuck hurl lob pitch sport throw toss mujer jugando al balonmano balonmanista deporte", "t": ["\u{1F93E}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F93E}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F93E}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F93E}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F93E}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F939}", "n": "person juggling", "k": "person juggling act balance balancing handle juggle manage multitask skill persona haciendo malabares equilibrio malabarismo malabarista", "t": ["\u{1F939}\u{1F3FB}", "\u{1F939}\u{1F3FC}", "\u{1F939}\u{1F3FD}", "\u{1F939}\u{1F3FE}", "\u{1F939}\u{1F3FF}"] }, { "e": "\u{1F939}\u200D\u2642\uFE0F", "n": "man juggling", "k": "man juggling act balance balancing handle juggle manage multitask skill hombre haciendo malabares malabarismo malabarista", "t": ["\u{1F939}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F939}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F939}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F939}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F939}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F939}\u200D\u2640\uFE0F", "n": "woman juggling", "k": "woman juggling act balance balancing handle juggle manage multitask skill mujer haciendo malabares malabarismo malabarista", "t": ["\u{1F939}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F939}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F939}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F939}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F939}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F9D8}", "n": "person in lotus position", "k": "person in lotus position cross legged legs meditation peace relax serenity yoga yogi zen persona en posicion de loto meditacion", "t": ["\u{1F9D8}\u{1F3FB}", "\u{1F9D8}\u{1F3FC}", "\u{1F9D8}\u{1F3FD}", "\u{1F9D8}\u{1F3FE}", "\u{1F9D8}\u{1F3FF}"] }, { "e": "\u{1F9D8}\u200D\u2642\uFE0F", "n": "man in lotus position", "k": "man in lotus position cross legged legs meditation peace relax serenity yoga yogi zen hombre en posicion de loto meditacion", "t": ["\u{1F9D8}\u{1F3FB}\u200D\u2642\uFE0F", "\u{1F9D8}\u{1F3FC}\u200D\u2642\uFE0F", "\u{1F9D8}\u{1F3FD}\u200D\u2642\uFE0F", "\u{1F9D8}\u{1F3FE}\u200D\u2642\uFE0F", "\u{1F9D8}\u{1F3FF}\u200D\u2642\uFE0F"] }, { "e": "\u{1F9D8}\u200D\u2640\uFE0F", "n": "woman in lotus position", "k": "woman in lotus position cross legged legs meditation peace relax serenity yoga yogi zen mujer en posicion de loto meditacion", "t": ["\u{1F9D8}\u{1F3FB}\u200D\u2640\uFE0F", "\u{1F9D8}\u{1F3FC}\u200D\u2640\uFE0F", "\u{1F9D8}\u{1F3FD}\u200D\u2640\uFE0F", "\u{1F9D8}\u{1F3FE}\u200D\u2640\uFE0F", "\u{1F9D8}\u{1F3FF}\u200D\u2640\uFE0F"] }, { "e": "\u{1F6C0}", "n": "person taking bath", "k": "person taking bath bathtub tub persona en la banera bano", "t": ["\u{1F6C0}\u{1F3FB}", "\u{1F6C0}\u{1F3FC}", "\u{1F6C0}\u{1F3FD}", "\u{1F6C0}\u{1F3FE}", "\u{1F6C0}\u{1F3FF}"] }, { "e": "\u{1F6CC}", "n": "person in bed", "k": "person in bed bedtime good goodnight hotel nap night sleep tired zzz persona en la cama dormir", "t": ["\u{1F6CC}\u{1F3FB}", "\u{1F6CC}\u{1F3FC}", "\u{1F6CC}\u{1F3FD}", "\u{1F6CC}\u{1F3FE}", "\u{1F6CC}\u{1F3FF}"] }, { "e": "\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}", "n": "people holding hands", "k": "people holding hands bae bestie bff couple dating flirt friends hand hold twins dos personas de la mano pareja persona", "t": ["\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}", "\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}", "\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}", "\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}", "\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}"] }, { "e": "\u{1F46D}", "n": "women holding hands", "k": "women holding hands bae bestie bff couple dating flirt friends girls hand hold sisters twins mujeres de la mano lesbianas novias pareja", "t": ["\u{1F46D}\u{1F3FB}", "\u{1F46D}\u{1F3FC}", "\u{1F46D}\u{1F3FD}", "\u{1F46D}\u{1F3FE}", "\u{1F46D}\u{1F3FF}"] }, { "e": "\u{1F46B}", "n": "woman and man holding hands", "k": "woman and man holding hands bae bestie bff couple dating flirt friends hand hold twins mujer y hombre de la mano novios pareja", "t": ["\u{1F46B}\u{1F3FB}", "\u{1F46B}\u{1F3FC}", "\u{1F46B}\u{1F3FD}", "\u{1F46B}\u{1F3FE}", "\u{1F46B}\u{1F3FF}"] }, { "e": "\u{1F46C}", "n": "men holding hands", "k": "men holding hands bae bestie bff boys brothers couple dating flirt friends hand hold twins hombres de la mano gays novios pareja", "t": ["\u{1F46C}\u{1F3FB}", "\u{1F46C}\u{1F3FC}", "\u{1F46C}\u{1F3FD}", "\u{1F46C}\u{1F3FE}", "\u{1F46C}\u{1F3FF}"] }, { "e": "\u{1F48F}", "n": "kiss", "k": "kiss anniversary babe bae couple date dating heart love mwah person romance together xoxo beso personas", "t": ["\u{1F48F}\u{1F3FB}", "\u{1F48F}\u{1F3FC}", "\u{1F48F}\u{1F3FD}", "\u{1F48F}\u{1F3FE}", "\u{1F48F}\u{1F3FF}"] }, { "e": "\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}", "n": "kiss: woman, man", "k": "kiss woman man anniversary babe bae couple date dating heart love mwah person romance together xoxo beso mujer y hombre personas", "t": ["\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}"] }, { "e": "\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}", "n": "kiss: man, man", "k": "kiss man anniversary babe bae couple date dating heart love mwah person romance together xoxo beso hombre y personas", "t": ["\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}"] }, { "e": "\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}", "n": "kiss: woman, woman", "k": "kiss woman anniversary babe bae couple date dating heart love mwah person romance together xoxo beso mujer y personas", "t": ["\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}"] }, { "e": "\u{1F491}", "n": "couple with heart", "k": "couple with heart anniversary babe bae dating kiss love person relationship romance together you pareja enamorada amor personas enamoradas", "t": ["\u{1F491}\u{1F3FB}", "\u{1F491}\u{1F3FC}", "\u{1F491}\u{1F3FD}", "\u{1F491}\u{1F3FE}", "\u{1F491}\u{1F3FF}"] }, { "e": "\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F468}", "n": "couple with heart: woman, man", "k": "couple with heart woman man anniversary babe bae dating kiss love person relationship romance together you pareja enamorada mujer y hombre amor personas enamoradas", "t": ["\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}"] }, { "e": "\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F468}", "n": "couple with heart: man, man", "k": "couple with heart man anniversary babe bae dating kiss love person relationship romance together you pareja enamorada hombre y amor personas enamoradas", "t": ["\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}"] }, { "e": "\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F469}", "n": "couple with heart: woman, woman", "k": "couple with heart woman anniversary babe bae dating kiss love person relationship romance together you pareja enamorada mujer y amor personas enamoradas", "t": ["\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}"] }, { "e": "\u{1F468}\u200D\u{1F469}\u200D\u{1F466}", "n": "family: man, woman, boy", "k": "family man woman boy child familia hombre mujer nino" }, { "e": "\u{1F468}\u200D\u{1F469}\u200D\u{1F467}", "n": "family: man, woman, girl", "k": "family man woman girl child familia hombre mujer nina" }, { "e": "\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}", "n": "family: man, woman, girl, boy", "k": "family man woman girl boy child familia hombre mujer nina nino" }, { "e": "\u{1F468}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}", "n": "family: man, woman, boy, boy", "k": "family man woman boy child familia hombre mujer nino" }, { "e": "\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}", "n": "family: man, woman, girl, girl", "k": "family man woman girl child familia hombre mujer nina" }, { "e": "\u{1F468}\u200D\u{1F468}\u200D\u{1F466}", "n": "family: man, man, boy", "k": "family man boy child familia hombre nino" }, { "e": "\u{1F468}\u200D\u{1F468}\u200D\u{1F467}", "n": "family: man, man, girl", "k": "family man girl child familia hombre nina" }, { "e": "\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F466}", "n": "family: man, man, girl, boy", "k": "family man girl boy child familia hombre nina nino" }, { "e": "\u{1F468}\u200D\u{1F468}\u200D\u{1F466}\u200D\u{1F466}", "n": "family: man, man, boy, boy", "k": "family man boy child familia hombre nino" }, { "e": "\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F467}", "n": "family: man, man, girl, girl", "k": "family man girl child familia hombre nina" }, { "e": "\u{1F469}\u200D\u{1F469}\u200D\u{1F466}", "n": "family: woman, woman, boy", "k": "family woman boy child familia mujer nino" }, { "e": "\u{1F469}\u200D\u{1F469}\u200D\u{1F467}", "n": "family: woman, woman, girl", "k": "family woman girl child familia mujer nina" }, { "e": "\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}", "n": "family: woman, woman, girl, boy", "k": "family woman girl boy child familia mujer nina nino" }, { "e": "\u{1F469}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}", "n": "family: woman, woman, boy, boy", "k": "family woman boy child familia mujer nino" }, { "e": "\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}", "n": "family: woman, woman, girl, girl", "k": "family woman girl child familia mujer nina" }, { "e": "\u{1F468}\u200D\u{1F466}", "n": "family: man, boy", "k": "family man boy child familia hombre y nino" }, { "e": "\u{1F468}\u200D\u{1F466}\u200D\u{1F466}", "n": "family: man, boy, boy", "k": "family man boy child familia hombre nino" }, { "e": "\u{1F468}\u200D\u{1F467}", "n": "family: man, girl", "k": "family man girl child familia hombre y nina" }, { "e": "\u{1F468}\u200D\u{1F467}\u200D\u{1F466}", "n": "family: man, girl, boy", "k": "family man girl boy child familia hombre nina nino" }, { "e": "\u{1F468}\u200D\u{1F467}\u200D\u{1F467}", "n": "family: man, girl, girl", "k": "family man girl child familia hombre nina" }, { "e": "\u{1F469}\u200D\u{1F466}", "n": "family: woman, boy", "k": "family woman boy child familia mujer y nino" }, { "e": "\u{1F469}\u200D\u{1F466}\u200D\u{1F466}", "n": "family: woman, boy, boy", "k": "family woman boy child familia mujer nino" }, { "e": "\u{1F469}\u200D\u{1F467}", "n": "family: woman, girl", "k": "family woman girl child familia mujer y nina" }, { "e": "\u{1F469}\u200D\u{1F467}\u200D\u{1F466}", "n": "family: woman, girl, boy", "k": "family woman girl boy child familia mujer nina nino" }, { "e": "\u{1F469}\u200D\u{1F467}\u200D\u{1F467}", "n": "family: woman, girl, girl", "k": "family woman girl child familia mujer nina" }, { "e": "\u{1F5E3}\uFE0F", "n": "speaking head", "k": "speaking head face silhouette speak cabeza parlante cara hablar silueta" }, { "e": "\u{1F464}", "n": "bust in silhouette", "k": "bust in silhouette mysterious shadow silueta de busto" }, { "e": "\u{1F465}", "n": "busts in silhouette", "k": "busts in silhouette bff bust everyone friend friends people dos siluetas de bustos" }, { "e": "\u{1FAC2}", "n": "people hugging", "k": "people hugging comfort embrace farewell friendship goodbye hello hug love thanks personas abrazandose abrazo adios despedida gracias saludo" }, { "e": "\u{1F46A}\uFE0F", "n": "family", "k": "family child familia" }, { "e": "\u{1F9D1}\u200D\u{1F9D1}\u200D\u{1F9D2}", "n": "family: adult, adult, child", "k": "family adult child familia adulto nino" }, { "e": "\u{1F9D1}\u200D\u{1F9D1}\u200D\u{1F9D2}\u200D\u{1F9D2}", "n": "family: adult, adult, child, child", "k": "family adult child familia adulto nino" }, { "e": "\u{1F9D1}\u200D\u{1F9D2}", "n": "family: adult, child", "k": "family adult child familia adulto nino" }, { "e": "\u{1F9D1}\u200D\u{1F9D2}\u200D\u{1F9D2}", "n": "family: adult, child, child", "k": "family adult child familia adulto nino" }, { "e": "\u{1F463}", "n": "footprints", "k": "footprints barefoot clothing footprint omw print walk huellas de pies" }] }, { "key": "nature", "emojis": [{ "e": "\u{1F435}", "n": "monkey face", "k": "monkey face animal banana cara de mono" }, { "e": "\u{1F412}", "n": "monkey", "k": "monkey animal banana mono macaco simio" }, { "e": "\u{1F98D}", "n": "gorilla", "k": "gorilla animal gorila primate simio" }, { "e": "\u{1F9A7}", "n": "orangutan", "k": "orangutan animal ape monkey mono primate simio" }, { "e": "\u{1F436}", "n": "dog face", "k": "dog face adorbs animal pet puppies puppy cara de perro mascota" }, { "e": "\u{1F415}\uFE0F", "n": "dog", "k": "dog animal animals dogs pet perro cachorro perrete perrito" }, { "e": "\u{1F9AE}", "n": "guide dog", "k": "guide dog accessibility animal blind perro guia accesibilidad ciego invidente lazarillo" }, { "e": "\u{1F415}\u200D\u{1F9BA}", "n": "service dog", "k": "service dog accessibility animal assistance perro de servicio accesibilidad apoyo asistencia" }, { "e": "\u{1F429}", "n": "poodle", "k": "poodle animal dog fluffy caniche perrito perro" }, { "e": "\u{1F43A}", "n": "wolf", "k": "wolf animal face lobo cara" }, { "e": "\u{1F98A}", "n": "fox", "k": "fox animal face zorro cara" }, { "e": "\u{1F99D}", "n": "raccoon", "k": "raccoon animal curious sly mapache astuto curioso ladino maquillaje ojeras" }, { "e": "\u{1F431}", "n": "cat face", "k": "cat face animal kitten kitty pet cara de gato mascota" }, { "e": "\u{1F408}\uFE0F", "n": "cat", "k": "cat animal animals cats kitten pet gato gatete minino" }, { "e": "\u{1F408}\u200D\u2B1B", "n": "black cat", "k": "black cat animal feline halloween meow unlucky gato negro mala suerte" }, { "e": "\u{1F981}", "n": "lion", "k": "lion alpha animal face leo mane order rawr roar safari strong zodiac leon cara zodiaco" }, { "e": "\u{1F42F}", "n": "tiger face", "k": "tiger face animal big cat predator cara de tigre" }, { "e": "\u{1F405}", "n": "tiger", "k": "tiger animal big cat predator zoo tigre felino" }, { "e": "\u{1F406}", "n": "leopard", "k": "leopard animal big cat predator zoo leopardo felino" }, { "e": "\u{1F434}", "n": "horse face", "k": "horse face animal dressage equine farm horses cara de caballo" }, { "e": "\u{1FACE}", "n": "moose", "k": "moose alces animal antlers elk mammal alce asta ciervo canadiense cuernos mamifero uapiti" }, { "e": "\u{1FACF}", "n": "donkey", "k": "donkey animal ass burro hinny mammal mule stubborn asno borrico mamifero mula terco" }, { "e": "\u{1F40E}", "n": "horse", "k": "horse animal equestrian farm racehorse racing caballo de carreras caballos ecuestre" }, { "e": "\u{1F984}", "n": "unicorn", "k": "unicorn face unicornio cara" }, { "e": "\u{1F993}", "n": "zebra", "k": "zebra animal stripe cebra raya" }, { "e": "\u{1F98C}", "n": "deer", "k": "deer animal ciervo bambi cervatillo" }, { "e": "\u{1F9AC}", "n": "bison", "k": "bison animal buffalo herd wisent bisonte bufalo cibolo" }, { "e": "\u{1F42E}", "n": "cow face", "k": "cow face animal farm milk moo cara de vaca" }, { "e": "\u{1F402}", "n": "ox", "k": "ox animal animals bull farm taurus zodiac buey cabestro tauro zodiaco" }, { "e": "\u{1F403}", "n": "water buffalo", "k": "water buffalo animal zoo bufalo de agua" }, { "e": "\u{1F404}", "n": "cow", "k": "cow animal animals farm milk moo vaca bovino res" }, { "e": "\u{1F437}", "n": "pig face", "k": "pig face animal bacon farm pork cara de cerdo gorrino" }, { "e": "\u{1F416}", "n": "pig", "k": "pig animal bacon farm pork sow cerdo cochino gorrino puerco" }, { "e": "\u{1F417}", "n": "boar", "k": "boar animal pig jabali cerdo salvaje" }, { "e": "\u{1F43D}", "n": "pig nose", "k": "pig nose animal face farm smell snout nariz de cerdo cara morro" }, { "e": "\u{1F40F}", "n": "ram", "k": "ram animal aries horns male sheep zodiac zoo carnero morueco zodiaco" }, { "e": "\u{1F411}", "n": "ewe", "k": "ewe animal baa farm female fluffy lamb sheep wool oveja borrego cordero ovino" }, { "e": "\u{1F410}", "n": "goat", "k": "goat animal capricorn farm milk zodiac cabra capricornio caprino chivo zodiaco" }, { "e": "\u{1F42A}", "n": "camel", "k": "camel animal desert dromedary hump one dromedario camello desierto joroba" }, { "e": "\u{1F42B}", "n": "two-hump camel", "k": "two hump camel animal bactrian desert camello bactriano desierto dromedario jorobas" }, { "e": "\u{1F999}", "n": "llama", "k": "llama alpaca animal guanaco vicuna wool lana" }, { "e": "\u{1F992}", "n": "giraffe", "k": "giraffe animal spots jirafa manchas" }, { "e": "\u{1F418}", "n": "elephant", "k": "elephant animal elefante paquidermo" }, { "e": "\u{1F9A3}", "n": "mammoth", "k": "mammoth animal extinction large tusk wooly mamut colmillo extinguido lanudo" }, { "e": "\u{1F98F}", "n": "rhinoceros", "k": "rhinoceros animal rinoceronte paquidermo" }, { "e": "\u{1F99B}", "n": "hippopotamus", "k": "hippopotamus animal hippo hipopotamo paquidermo" }, { "e": "\u{1F42D}", "n": "mouse face", "k": "mouse face animal cara de raton" }, { "e": "\u{1F401}", "n": "mouse", "k": "mouse animal animals raton roedor" }, { "e": "\u{1F400}", "n": "rat", "k": "rat animal rata roedor" }, { "e": "\u{1F439}", "n": "hamster", "k": "hamster animal face pet cara mascota" }, { "e": "\u{1F430}", "n": "rabbit face", "k": "rabbit face animal bunny pet cara de conejo mascota" }, { "e": "\u{1F407}", "n": "rabbit", "k": "rabbit animal bunny pet conejo conejito gazapo" }, { "e": "\u{1F43F}\uFE0F", "n": "chipmunk", "k": "chipmunk animal squirrel ardilla" }, { "e": "\u{1F9AB}", "n": "beaver", "k": "beaver animal dam teeth castor roedor" }, { "e": "\u{1F994}", "n": "hedgehog", "k": "hedgehog animal spiny erizo espinas puas" }, { "e": "\u{1F987}", "n": "bat", "k": "bat animal vampire murcielago vampiro" }, { "e": "\u{1F43B}", "n": "bear", "k": "bear animal face grizzly growl honey oso cara" }, { "e": "\u{1F43B}\u200D\u2744\uFE0F", "n": "polar bear", "k": "polar bear animal arctic white oso blanco artico" }, { "e": "\u{1F428}", "n": "koala", "k": "koala animal australia bear down face marsupial under cara" }, { "e": "\u{1F43C}", "n": "panda", "k": "panda animal bamboo face cara oso" }, { "e": "\u{1F9A5}", "n": "sloth", "k": "sloth lazy slow perezoso gandul lento vago" }, { "e": "\u{1F9A6}", "n": "otter", "k": "otter animal fishing playful nutria bromista jugueton pesca" }, { "e": "\u{1F9A8}", "n": "skunk", "k": "skunk animal stink mofeta apestar hedor mal olor peste tufo" }, { "e": "\u{1F998}", "n": "kangaroo", "k": "kangaroo animal joey jump marsupial canguro saltar salto" }, { "e": "\u{1F9A1}", "n": "badger", "k": "badger animal honey pester tejon ratel de la miel melero" }, { "e": "\u{1F43E}", "n": "paw prints", "k": "paw prints feet paws print huellas de pezunas" }, { "e": "\u{1F983}", "n": "turkey", "k": "turkey bird gobble thanksgiving pavo ave" }, { "e": "\u{1F414}", "n": "chicken", "k": "chicken animal bird ornithology gallina ave gallinacea pollo" }, { "e": "\u{1F413}", "n": "rooster", "k": "rooster animal bird ornithology gallo ave gallina gallinacea pollo" }, { "e": "\u{1F423}", "n": "hatching chick", "k": "hatching chick animal baby bird egg pollito rompiendo el cascaron ave huevo pollo" }, { "e": "\u{1F424}", "n": "baby chick", "k": "baby chick animal bird ornithology pollito ave pollo polluelo" }, { "e": "\u{1F425}", "n": "front-facing baby chick", "k": "front facing baby chick animal bird newborn ornithology pollito de frente ave pollo" }, { "e": "\u{1F426}\uFE0F", "n": "bird", "k": "bird animal ornithology pajaro ave pajarillo" }, { "e": "\u{1F427}", "n": "penguin", "k": "penguin animal antarctica bird ornithology pinguino ave" }, { "e": "\u{1F54A}\uFE0F", "n": "dove", "k": "dove bird fly ornithology peace paloma ave paz pajaro" }, { "e": "\u{1F985}", "n": "eagle", "k": "eagle animal bird ornithology aguila ave" }, { "e": "\u{1F986}", "n": "duck", "k": "duck animal bird ornithology pato ave" }, { "e": "\u{1F9A2}", "n": "swan", "k": "swan animal bird cygnet duckling ornithology ugly cisne ave patito feo" }, { "e": "\u{1F989}", "n": "owl", "k": "owl animal bird ornithology wise buho ave lechuza pajaro" }, { "e": "\u{1F9A4}", "n": "dodo", "k": "dodo animal bird extinction large ornithology ave dronte extinguido mauricio pajaro" }, { "e": "\u{1FAB6}", "n": "feather", "k": "feather bird flight light plumage pluma ave ligero plumaje pajaro" }, { "e": "\u{1F9A9}", "n": "flamingo", "k": "flamingo animal bird flamboyant ornithology tropical flamenco extravangante ostentoso" }, { "e": "\u{1F99A}", "n": "peacock", "k": "peacock animal bird colorful ornithology ostentatious peahen pretty proud pavo real ave orgulloso plumas" }, { "e": "\u{1F99C}", "n": "parrot", "k": "parrot animal bird ornithology pirate talk loro ave hablar papagayo pirata" }, { "e": "\u{1FABD}", "n": "wing", "k": "wing angelic ascend aviation bird fly flying heavenly mythology soar ala angelical ave mitologia pajaro volar angel" }, { "e": "\u{1F426}\u200D\u2B1B", "n": "black bird", "k": "black bird animal beak caw corvid crow ornithology raven rook pajaro negro cuervo grajo mirlo" }, { "e": "\u{1FABF}", "n": "goose", "k": "goose animal bird duck flock fowl gaggle gander geese honk ornithology silly oca ave ganso graznar pajaro" }, { "e": "\u{1F426}\u200D\u{1F525}", "n": "phoenix", "k": "phoenix ascend ascension emerge fantasy firebird glory immortal rebirth reincarnation reinvent renewal revival revive rise transform fenix ave de fuego fantasia reencarnacion renacer" }, { "e": "\u{1F438}", "n": "frog", "k": "frog animal face rana cara" }, { "e": "\u{1F40A}", "n": "crocodile", "k": "crocodile animal zoo cocodrilo caiman" }, { "e": "\u{1F422}", "n": "turtle", "k": "turtle animal terrapin tortoise tortuga galapago" }, { "e": "\u{1F98E}", "n": "lizard", "k": "lizard animal reptile lagarto lagartija reptil" }, { "e": "\u{1F40D}", "n": "snake", "k": "snake animal bearer ophiuchus serpent zodiac serpiente culebra reptil vibora" }, { "e": "\u{1F432}", "n": "dragon face", "k": "dragon face animal fairy fairytale tale cara de cuento fantasia" }, { "e": "\u{1F409}", "n": "dragon", "k": "dragon animal fairy fairytale knights tale cuento fantasia" }, { "e": "\u{1F995}", "n": "sauropod", "k": "sauropod brachiosaurus brontosaurus dinosaur diplodocus sauropodo braquiosaurio brontosaurio" }, { "e": "\u{1F996}", "n": "T-Rex", "k": "t rex dinosaur tyrannosaurus tiranosaurio" }, { "e": "\u{1F433}", "n": "spouting whale", "k": "spouting whale animal beach face ocean ballena soltando un chorro de agua" }, { "e": "\u{1F40B}", "n": "whale", "k": "whale animal beach ocean ballena cachalote cetaceo" }, { "e": "\u{1F42C}", "n": "dolphin", "k": "dolphin animal beach flipper ocean delfin cetaceo" }, { "e": "\u{1F9AD}", "n": "seal", "k": "seal animal lion ocean sea foca leon marino" }, { "e": "\u{1F41F}\uFE0F", "n": "fish", "k": "fish animal dinner fishes fishing pisces zodiac pez pececillo pescado piscis zodiaco" }, { "e": "\u{1F420}", "n": "tropical fish", "k": "tropical fish animal fishes pez" }, { "e": "\u{1F421}", "n": "blowfish", "k": "blowfish animal fish pez globo" }, { "e": "\u{1F988}", "n": "shark", "k": "shark animal fish tiburon pez" }, { "e": "\u{1F419}", "n": "octopus", "k": "octopus animal creature ocean pulpo cefalopodo octopodo" }, { "e": "\u{1F41A}", "n": "spiral shell", "k": "spiral shell animal beach conch sea caracola concha espiral" }, { "e": "\u{1FAB8}", "n": "coral", "k": "coral change climate ocean reef sea arrecife oceano" }, { "e": "\u{1FABC}", "n": "jellyfish", "k": "jellyfish animal aquarium burn invertebrate jelly life marine ocean ouch plankton sea sting stinger tentacles medusa invertebrado marino picadura picar" }, { "e": "\u{1F980}", "n": "crab", "k": "crab cancer zodiac cangrejo animal zodiaco" }, { "e": "\u{1F99E}", "n": "lobster", "k": "lobster animal bisque claws seafood bogavante langosta marisco pinzas" }, { "e": "\u{1F990}", "n": "shrimp", "k": "shrimp food shellfish small gamba camaron comida langostino marisco" }, { "e": "\u{1F991}", "n": "squid", "k": "squid animal food mollusk calamar comida molusco" }, { "e": "\u{1F9AA}", "n": "oyster", "k": "oyster diving pearl ostra buceo perla" }, { "e": "\u{1F40C}", "n": "snail", "k": "snail animal escargot garden nature slug caracol caracola molusco" }, { "e": "\u{1F98B}", "n": "butterfly", "k": "butterfly insect pretty mariposa bonito insecto" }, { "e": "\u{1F41B}", "n": "bug", "k": "bug animal garden insect bicho gusano insecto" }, { "e": "\u{1F41C}", "n": "ant", "k": "ant animal garden insect hormiga antenas insecto" }, { "e": "\u{1F41D}", "n": "honeybee", "k": "honeybee animal bee bumblebee honey insect nature spring abeja insecto miel" }, { "e": "\u{1FAB2}", "n": "beetle", "k": "beetle animal bug insect escarabajo bicho insecto" }, { "e": "\u{1F41E}", "n": "lady beetle", "k": "lady beetle animal garden insect ladybird ladybug nature mariquita cochinilla insecto" }, { "e": "\u{1F997}", "n": "cricket", "k": "cricket animal bug grasshopper insect orthoptera grillo saltamontes" }, { "e": "\u{1FAB3}", "n": "cockroach", "k": "cockroach animal insect pest roach cucaracha alimana bicho insecto plaga" }, { "e": "\u{1F577}\uFE0F", "n": "spider", "k": "spider animal insect arana insecto" }, { "e": "\u{1F578}\uFE0F", "n": "spider web", "k": "spider web tela de arana telarana" }, { "e": "\u{1F982}", "n": "scorpion", "k": "scorpion scorpio scorpius zodiac escorpion escorpio zodiaco" }, { "e": "\u{1F99F}", "n": "mosquito", "k": "mosquito bite disease fever insect malaria pest virus fiebre insecto" }, { "e": "\u{1FAB0}", "n": "fly", "k": "fly animal disease insect maggot pest rotting mosca basura bicho mal olor podrido" }, { "e": "\u{1FAB1}", "n": "worm", "k": "worm animal annelid earthworm parasite gusano lombriz oruga parasito" }, { "e": "\u{1F9A0}", "n": "microbe", "k": "microbe amoeba bacteria science virus microbio ameba germen" }, { "e": "\u{1F490}", "n": "bouquet", "k": "bouquet anniversary birthday date flower love plant romance ramo de flores" }, { "e": "\u{1F338}", "n": "cherry blossom", "k": "cherry blossom flower plant spring springtime flor de cerezo" }, { "e": "\u{1F4AE}", "n": "white flower", "k": "white flower flor blanca" }, { "e": "\u{1FAB7}", "n": "lotus", "k": "lotus beauty buddhism calm flower hinduism peace purity serenity loto budismo flor hinduismo pureza" }, { "e": "\u{1F3F5}\uFE0F", "n": "rosette", "k": "rosette plant roseta flor planta" }, { "e": "\u{1F339}", "n": "rose", "k": "rose beauty elegant flower love plant red valentine rosa flor" }, { "e": "\u{1F940}", "n": "wilted flower", "k": "wilted flower dying flor marchita marchitada marchitarse" }, { "e": "\u{1F33A}", "n": "hibiscus", "k": "hibiscus flower plant flor de hibisco" }, { "e": "\u{1F33B}", "n": "sunflower", "k": "sunflower flower outdoors plant sun girasol flor sol" }, { "e": "\u{1F33C}", "n": "blossom", "k": "blossom buttercup dandelion flower plant flor" }, { "e": "\u{1F337}", "n": "tulip", "k": "tulip blossom flower growth plant tulipan flor" }, { "e": "\u{1FABB}", "n": "hyacinth", "k": "hyacinth bloom bluebonnet flower indigo lavender lilac lupine plant purple shrub snapdragon spring violet campanilla boca de dragon flor jacinto lavanda lila lupino" }, { "e": "\u{1F331}", "n": "seedling", "k": "seedling plant sapling sprout young planta joven planton" }, { "e": "\u{1FAB4}", "n": "potted plant", "k": "potted plant decor grow house nurturing pot planta de maceta crecer tiesto" }, { "e": "\u{1F332}", "n": "evergreen tree", "k": "evergreen tree christmas forest pine arbol de hoja perenne" }, { "e": "\u{1F333}", "n": "deciduous tree", "k": "deciduous tree forest green habitat shedding arbol de hoja caduca caducifolio" }, { "e": "\u{1F334}", "n": "palm tree", "k": "palm tree beach plant tropical palmera arbol de palma" }, { "e": "\u{1F335}", "n": "cactus", "k": "cactus desert drought nature plant planta" }, { "e": "\u{1F33E}", "n": "sheaf of rice", "k": "sheaf of rice ear grain grains plant espiga de arroz planta" }, { "e": "\u{1F33F}", "n": "herb", "k": "herb leaf plant hierba hoja verde" }, { "e": "\u2618\uFE0F", "n": "shamrock", "k": "shamrock irish plant trebol planta" }, { "e": "\u{1F340}", "n": "four leaf clover", "k": "four leaf clover 4 irish lucky plant trebol de cuatro hojas suerte" }, { "e": "\u{1F341}", "n": "maple leaf", "k": "maple leaf falling hoja de arce" }, { "e": "\u{1F342}", "n": "fallen leaf", "k": "fallen leaf autumn fall falling hojas caidas caida" }, { "e": "\u{1F343}", "n": "leaf fluttering in wind", "k": "leaf fluttering in wind blow flutter hojas revoloteando al viento hoja revolotear soplar" }, { "e": "\u{1FAB9}", "n": "empty nest", "k": "empty nest branch home nesting nido vacio anidacion anidamiento anidar" }, { "e": "\u{1FABA}", "n": "nest with eggs", "k": "nest with eggs bird branch egg nesting nido con huevos anidacion anidamiento anidar" }, { "e": "\u{1F344}", "n": "mushroom", "k": "mushroom fungus toadstool champinon hongo seta" }] }, { "key": "food", "emojis": [{ "e": "\u{1F347}", "n": "grapes", "k": "grapes dionysus fruit grape uvas agracejo fruta racimo uva" }, { "e": "\u{1F348}", "n": "melon", "k": "melon cantaloupe fruit fruta" }, { "e": "\u{1F349}", "n": "watermelon", "k": "watermelon fruit sandia fruta" }, { "e": "\u{1F34A}", "n": "tangerine", "k": "tangerine c citrus fruit nectarine orange vitamin mandarina fruta naranja" }, { "e": "\u{1F34B}", "n": "lemon", "k": "lemon citrus fruit sour limon citron citrico fruta" }, { "e": "\u{1F34B}\u200D\u{1F7E9}", "n": "lime", "k": "lime acidity citrus cocktail fruit garnish key margarita mojito refreshing salsa sour tangy tequila tropical zest lima citrico fruta" }, { "e": "\u{1F34C}", "n": "banana", "k": "banana fruit potassium platano fruta" }, { "e": "\u{1F34D}", "n": "pineapple", "k": "pineapple colada fruit pina tropical ananas fruta" }, { "e": "\u{1F96D}", "n": "mango", "k": "mango food fruit tropical fruta" }, { "e": "\u{1F34E}", "n": "red apple", "k": "red apple diet food fruit health ripe manzana roja fruta poma" }, { "e": "\u{1F34F}", "n": "green apple", "k": "green apple fruit manzana verde fruta poma" }, { "e": "\u{1F350}", "n": "pear", "k": "pear fruit pera fruta perilla" }, { "e": "\u{1F351}", "n": "peach", "k": "peach fruit melocoton durazno fruta" }, { "e": "\u{1F352}", "n": "cherries", "k": "cherries berries cherry fruit red cerezas cereza fruta guindas" }, { "e": "\u{1F353}", "n": "strawberry", "k": "strawberry berry fruit fresa freson fruta" }, { "e": "\u{1FAD0}", "n": "blueberries", "k": "blueberries berries berry bilberry blue blueberry food fruit arandanos arandano azul baya frutos del bosque mirtilo" }, { "e": "\u{1F95D}", "n": "kiwi fruit", "k": "kiwi fruit food comida fruta" }, { "e": "\u{1F345}", "n": "tomato", "k": "tomato food fruit vegetable tomate ensalada fruta verdura" }, { "e": "\u{1FAD2}", "n": "olive", "k": "olive food aceituna aperitivo comida oliva" }, { "e": "\u{1F965}", "n": "coconut", "k": "coconut colada palm pina coco palmera" }, { "e": "\u{1F951}", "n": "avocado", "k": "avocado food fruit aguacate comida fruta" }, { "e": "\u{1F346}", "n": "eggplant", "k": "eggplant aubergine vegetable berenjena fruto verdura" }, { "e": "\u{1F954}", "n": "potato", "k": "potato food vegetable patata comida papa verdura" }, { "e": "\u{1F955}", "n": "carrot", "k": "carrot food vegetable zanahoria comida verdura" }, { "e": "\u{1F33D}", "n": "ear of corn", "k": "ear of corn crops farm maize maze espiga de maiz mazorca mijo" }, { "e": "\u{1F336}\uFE0F", "n": "hot pepper", "k": "hot pepper chile picante planta" }, { "e": "\u{1FAD1}", "n": "bell pepper", "k": "bell pepper capsicum food vegetable pimiento aji chile morron rojo verdura" }, { "e": "\u{1F952}", "n": "cucumber", "k": "cucumber food pickle vegetable pepino comida pepinillo verdura" }, { "e": "\u{1F96C}", "n": "leafy green", "k": "leafy green bok burgers cabbage choy kale lettuce salad verdura de hoja verde col lechuga pak choi" }, { "e": "\u{1F966}", "n": "broccoli", "k": "broccoli cabbage wild brocoli col repollo" }, { "e": "\u{1F9C4}", "n": "garlic", "k": "garlic flavoring ajo condimento vampiro" }, { "e": "\u{1F9C5}", "n": "onion", "k": "onion flavoring cebolla condimento llorar" }, { "e": "\u{1F95C}", "n": "peanuts", "k": "peanuts food nut peanut vegetable cacahuetes cacahuete comida fruto seco verdura" }, { "e": "\u{1FAD8}", "n": "beans", "k": "beans food kidney legume small alubias comida habichuela roja habichuelas judia judias legumbre" }, { "e": "\u{1F330}", "n": "chestnut", "k": "chestnut almond plant castana castano fruto seco" }, { "e": "\u{1FADA}", "n": "ginger root", "k": "ginger root beer health herb natural spice raiz de jengibre cerveza especia garganta" }, { "e": "\u{1FADB}", "n": "pea pod", "k": "pea pod beans beanstalk edamame legume soybean vegetable veggie vaina guisante judias legumbre soja verdura" }, { "e": "\u{1F344}\u200D\u{1F7EB}", "n": "brown mushroom", "k": "brown mushroom food fungi fungus nature pizza portobello shiitake shroom spore sprout toppings truffle vegetable vegetarian veggie champinon marron comida hongo naturaleza seta vegetal" }, { "e": "\u{1F35E}", "n": "bread", "k": "bread carbs food grain loaf restaurant toast wheat pan de molde rebanada tostada" }, { "e": "\u{1F950}", "n": "croissant", "k": "croissant bread breakfast crescent food french roll cruasan bollo comida frances" }, { "e": "\u{1F956}", "n": "baguette bread", "k": "baguette bread food french baguete barra comida frances pan" }, { "e": "\u{1FAD3}", "n": "flatbread", "k": "flatbread arepa bread food gordita lavash naan pita pan sin levadura tortilla" }, { "e": "\u{1F968}", "n": "pretzel", "k": "pretzel convoluted twisted bretzel galleta salada" }, { "e": "\u{1F96F}", "n": "bagel", "k": "bagel bakery bread breakfast schmear bocadillo pan panaderia" }, { "e": "\u{1F95E}", "n": "pancakes", "k": "pancakes breakfast crepe food hotcake pancake tortitas comida dulce postre tortita" }, { "e": "\u{1F9C7}", "n": "waffle", "k": "waffle breakfast indecisive iron gofre" }, { "e": "\u{1F9C0}", "n": "cheese wedge", "k": "cheese wedge cuna de queso trozo" }, { "e": "\u{1F356}", "n": "meat on bone", "k": "meat on bone carne con hueso restaurante" }, { "e": "\u{1F357}", "n": "poultry leg", "k": "poultry leg bone chicken drumstick hungry turkey muslo de pollo restaurante" }, { "e": "\u{1F969}", "n": "cut of meat", "k": "cut of meat chop lambchop porkchop red steak corte de carne chuleta filete" }, { "e": "\u{1F953}", "n": "bacon", "k": "bacon breakfast food meat beicon carne comida panceta" }, { "e": "\u{1F354}", "n": "hamburger", "k": "hamburger burger eat fast food hungry hamburguesa" }, { "e": "\u{1F35F}", "n": "french fries", "k": "french fries fast food patatas fritas papas restaurante" }, { "e": "\u{1F355}", "n": "pizza", "k": "pizza cheese food hungry pepperoni slice porcion restaurante" }, { "e": "\u{1F32D}", "n": "hot dog", "k": "hot dog frankfurter hotdog sausage perrito caliente salchicha" }, { "e": "\u{1F96A}", "n": "sandwich", "k": "sandwich bread bocadillo bocata emparedado" }, { "e": "\u{1F32E}", "n": "taco", "k": "taco mexican comida mexicano" }, { "e": "\u{1F32F}", "n": "burrito", "k": "burrito mexican wrap comida mexicano tex mex" }, { "e": "\u{1FAD4}", "n": "tamale", "k": "tamale food mexican pamonha wrapped tamal mejicano mexicano wrap" }, { "e": "\u{1F959}", "n": "stuffed flatbread", "k": "stuffed flatbread falafel food gyro kebab pan relleno comida durum de pita" }, { "e": "\u{1F9C6}", "n": "falafel", "k": "falafel chickpea meatball albondiga garbanzo" }, { "e": "\u{1F95A}", "n": "egg", "k": "egg breakfast food huevo comida" }, { "e": "\u{1F373}", "n": "cooking", "k": "cooking breakfast easy egg fry frying over pan restaurant side sunny up cocinar freir huevo sarten" }, { "e": "\u{1F958}", "n": "shallow pan of food", "k": "shallow pan of food casserole paella arroz comida" }, { "e": "\u{1F372}", "n": "pot of food", "k": "pot of food soup stew olla de comida puchero restaurante" }, { "e": "\u{1FAD5}", "n": "fondue", "k": "fondue cheese chocolate food melted pot ski olla queso suizo" }, { "e": "\u{1F963}", "n": "bowl with spoon", "k": "bowl with spoon breakfast cereal congee oatmeal porridge cuenco con cuchara desayuno" }, { "e": "\u{1F957}", "n": "green salad", "k": "green salad food ensalada bol comida verde" }, { "e": "\u{1F37F}", "n": "popcorn", "k": "popcorn corn movie pop palomitas maiz" }, { "e": "\u{1F9C8}", "n": "butter", "k": "butter dairy mantequilla lacteo" }, { "e": "\u{1F9C2}", "n": "salt", "k": "salt condiment flavor mad salty shaker taste upset sal condimento salero" }, { "e": "\u{1F96B}", "n": "canned food", "k": "canned food can comida enlatada conserva lata" }, { "e": "\u{1F371}", "n": "bento box", "k": "bento box food caja de comida restaurante" }, { "e": "\u{1F358}", "n": "rice cracker", "k": "rice cracker food galleta de arroz" }, { "e": "\u{1F359}", "n": "rice ball", "k": "rice ball food japanese bola de arroz japones onigiri restaurante" }, { "e": "\u{1F35A}", "n": "cooked rice", "k": "cooked rice food arroz cocido restaurante" }, { "e": "\u{1F35B}", "n": "curry rice", "k": "curry rice food arroz con restaurante" }, { "e": "\u{1F35C}", "n": "steaming bowl", "k": "steaming bowl chopsticks food noodle pho ramen soup tazon de fideos calientes chinos" }, { "e": "\u{1F35D}", "n": "spaghetti", "k": "spaghetti food meatballs pasta restaurant espagueti restaurante" }, { "e": "\u{1F360}", "n": "roasted sweet potato", "k": "roasted sweet potato food patata asada papa restaurante" }, { "e": "\u{1F362}", "n": "oden", "k": "oden food kebab restaurant seafood skewer stick brocheta japones marisco pincho" }, { "e": "\u{1F363}", "n": "sushi", "k": "sushi food restaurante" }, { "e": "\u{1F364}", "n": "fried shrimp", "k": "fried shrimp prawn tempura gamba frita frito restaurante" }, { "e": "\u{1F365}", "n": "fish cake with swirl", "k": "fish cake with swirl food pastry restaurant pastel de pescado japones comida japonesa" }, { "e": "\u{1F96E}", "n": "moon cake", "k": "moon cake autumn festival yuebing pastel de luna otono" }, { "e": "\u{1F361}", "n": "dango", "k": "dango dessert japanese skewer stick sweet japones pincho postre restaurante" }, { "e": "\u{1F95F}", "n": "dumpling", "k": "dumpling empanada gyoza jiaozi pierogi potsticker comida masa" }, { "e": "\u{1F960}", "n": "fortune cookie", "k": "fortune cookie prophecy galleta de la fortuna adivinacion profecia supersticion" }, { "e": "\u{1F961}", "n": "takeout box", "k": "takeout box chopsticks delivery food oyster pail caja para llevar recipiente restaurante" }, { "e": "\u{1F366}", "n": "soft ice cream", "k": "soft ice cream dessert food icecream restaurant serve sweet cucurucho de helado dulce restaurante" }, { "e": "\u{1F367}", "n": "shaved ice", "k": "shaved ice dessert restaurant sweet granizado hawaiano helado hielo postre raspado" }, { "e": "\u{1F368}", "n": "ice cream", "k": "ice cream dessert food restaurant sweet helado postre sorbete" }, { "e": "\u{1F369}", "n": "doughnut", "k": "doughnut breakfast dessert donut food sweet berlina pastel rosquilla" }, { "e": "\u{1F36A}", "n": "cookie", "k": "cookie chip chocolate dessert sweet galleta dulce pasta postre" }, { "e": "\u{1F382}", "n": "birthday cake", "k": "birthday cake bday celebration dessert happy pastry sweet tarta de cumpleanos celebracion" }, { "e": "\u{1F370}", "n": "shortcake", "k": "shortcake cake dessert pastry slice sweet trozo de tarta pedazo restaurante" }, { "e": "\u{1F9C1}", "n": "cupcake", "k": "cupcake bakery dessert sprinkles sugar sweet treat magdalena dulce reposteria" }, { "e": "\u{1F967}", "n": "pie", "k": "pie apple filling fruit meat pastry pumpkin slice pastel masa relleno" }, { "e": "\u{1F36B}", "n": "chocolate bar", "k": "chocolate bar candy dessert halloween sweet tooth tableta de barra restaurante" }, { "e": "\u{1F36C}", "n": "candy", "k": "candy cavities dessert halloween restaurant sweet tooth wrapper caramelo chuche chucheria dulce golosina" }, { "e": "\u{1F36D}", "n": "lollipop", "k": "lollipop candy dessert food restaurant sweet piruleta chuche chucheria dulce golosina" }, { "e": "\u{1F36E}", "n": "custard", "k": "custard dessert pudding sweet flan dulce postre" }, { "e": "\u{1F36F}", "n": "honey pot", "k": "honey pot barrel bear food honeypot jar sweet tarro de miel dulce" }, { "e": "\u{1F37C}", "n": "baby bottle", "k": "baby bottle babies birth born drink infant milk newborn biberon bebe bibe bibi botella leche" }, { "e": "\u{1F95B}", "n": "glass of milk", "k": "glass of milk drink vaso de leche bebida" }, { "e": "\u2615\uFE0F", "n": "hot beverage", "k": "hot beverage cafe caffeine chai coffee drink morning steaming tea bebida caliente te" }, { "e": "\u{1FAD6}", "n": "teapot", "k": "teapot brew drink food pot tea tetera bebida infusion te" }, { "e": "\u{1F375}", "n": "teacup without handle", "k": "teacup without handle beverage cup drink oolong tea tazon de te bebida taza" }, { "e": "\u{1F376}", "n": "sake", "k": "sake bar beverage bottle cup drink restaurant bebida botella restaurante tazon" }, { "e": "\u{1F37E}", "n": "bottle with popping cork", "k": "bottle with popping cork bar drink botella descorchada beber cava corcho" }, { "e": "\u{1F377}", "n": "wine glass", "k": "wine glass alcohol bar beverage booze club drink drinking drinks restaurant copa de vino bebida vaso" }, { "e": "\u{1F378}\uFE0F", "n": "cocktail glass", "k": "cocktail glass alcohol bar booze club drink drinking drinks mad martini men copa de coctel restaurante" }, { "e": "\u{1F379}", "n": "tropical drink", "k": "tropical drink alcohol bar booze club cocktail drinking drinks drunk mai party tai tropics bebida restaurante" }, { "e": "\u{1F37A}", "n": "beer mug", "k": "beer mug alcohol ale bar booze drink drinking drinks octoberfest oktoberfest pint stein summer jarra de cerveza restaurante" }, { "e": "\u{1F37B}", "n": "clinking beer mugs", "k": "clinking beer mugs alcohol bar booze bottoms cheers clink drinking drinks jarras de cerveza brindando jarra restaurante" }, { "e": "\u{1F942}", "n": "clinking glasses", "k": "clinking glasses celebrate clink drink glass copas brindando bebida brindar brindis celebracion copa" }, { "e": "\u{1F943}", "n": "tumbler glass", "k": "tumbler glass liquor scotch shot whiskey whisky vaso de chupito copa licor" }, { "e": "\u{1FAD7}", "n": "pouring liquid", "k": "pouring liquid accident drink empty glass oops pour spill water liquido derramandose bebida derramar vacio vaso verter" }, { "e": "\u{1F964}", "n": "cup with straw", "k": "cup with straw drink juice malt soda soft water vaso con pajita refresco zumo" }, { "e": "\u{1F9CB}", "n": "bubble tea", "k": "bubble tea boba food milk pearl te de burbujas burbuja leche perla" }, { "e": "\u{1F9C3}", "n": "beverage box", "k": "beverage box juice straw sweet tetrabrik brick carton envase zumo" }, { "e": "\u{1F9C9}", "n": "mate", "k": "mate drink bebida infusion" }, { "e": "\u{1F9CA}", "n": "ice", "k": "ice cold cube iceberg cubito de hielo frio" }, { "e": "\u{1F962}", "n": "chopsticks", "k": "chopsticks hashi jeotgarak kuaizi palillos cubiertos" }, { "e": "\u{1F37D}\uFE0F", "n": "fork and knife with plate", "k": "fork and knife with plate cooking dinner eat cuchillo y tenedor con un plato restaurante" }, { "e": "\u{1F374}", "n": "fork and knife", "k": "fork and knife breakfast breaky cooking cutlery delicious dinner eat feed food hungry lunch restaurant yum yummy tenedor y cuchillo restaurante" }, { "e": "\u{1F944}", "n": "spoon", "k": "spoon eat tableware cuchara cubiertos cucharilla" }, { "e": "\u{1F52A}", "n": "kitchen knife", "k": "kitchen knife chef cooking hocho tool weapon cuchillo de cocina arma cocinar" }, { "e": "\u{1FAD9}", "n": "jar", "k": "jar condiment container empty nothing sauce store tarro almacenar condimento frasco recipiente salsa vacio" }, { "e": "\u{1F3FA}", "n": "amphora", "k": "amphora aquarius cooking drink jug tool weapon zodiac anfora acuario beber jarra zodiaco" }] }, { "key": "travel", "emojis": [{ "e": "\u{1F30D}\uFE0F", "n": "globe showing Europe-Africa", "k": "globe showing europe africa earth world globo terraqueo mostrando europa y mundo planeta tierra" }, { "e": "\u{1F30E}\uFE0F", "n": "globe showing Americas", "k": "globe showing americas earth world globo terraqueo mostrando america mundo planeta tierra" }, { "e": "\u{1F30F}\uFE0F", "n": "globe showing Asia-Australia", "k": "globe showing asia australia earth world globo terraqueo mostrando y mundo planeta tierra" }, { "e": "\u{1F310}", "n": "globe with meridians", "k": "globe with meridians earth internet web world worldwide globo terraqueo con meridianos mundo tierra" }, { "e": "\u{1F5FA}\uFE0F", "n": "world map", "k": "world map mapa mundial mapamundi mundo" }, { "e": "\u{1F5FE}", "n": "map of Japan", "k": "map of japan mapa de japon" }, { "e": "\u{1F9ED}", "n": "compass", "k": "compass direction magnetic navigation orienteering brujula compas magnetico navegacion orientacion" }, { "e": "\u{1F3D4}\uFE0F", "n": "snow-capped mountain", "k": "snow capped mountain cold montana con nieve frio" }, { "e": "\u26F0\uFE0F", "n": "mountain", "k": "mountain montana monte" }, { "e": "\u{1F30B}", "n": "volcano", "k": "volcano eruption mountain nature volcan erupcion volcanica" }, { "e": "\u{1F5FB}", "n": "mount fuji", "k": "mount fuji mountain nature monte montana naturaleza" }, { "e": "\u{1F3D5}\uFE0F", "n": "camping", "k": "camping acampada campamento vacaciones" }, { "e": "\u{1F3D6}\uFE0F", "n": "beach with umbrella", "k": "beach with umbrella playa y sombrilla" }, { "e": "\u{1F3DC}\uFE0F", "n": "desert", "k": "desert desierto arena" }, { "e": "\u{1F3DD}\uFE0F", "n": "desert island", "k": "desert island isla desierta" }, { "e": "\u{1F3DE}\uFE0F", "n": "national park", "k": "national park parque nacional" }, { "e": "\u{1F3DF}\uFE0F", "n": "stadium", "k": "stadium estadio" }, { "e": "\u{1F3DB}\uFE0F", "n": "classical building", "k": "classical building edificio clasico" }, { "e": "\u{1F3D7}\uFE0F", "n": "building construction", "k": "building construction crane construccion edificio obra" }, { "e": "\u{1F9F1}", "n": "brick", "k": "brick bricks clay mortar wall ladrillo arcilla cemento muro pared" }, { "e": "\u{1FAA8}", "n": "rock", "k": "rock boulder heavy solid stone tough piedra pedrusco pena penasco roca" }, { "e": "\u{1FAB5}", "n": "wood", "k": "wood log lumber timber madera hoguera lena madero palos tronco" }, { "e": "\u{1F6D6}", "n": "hut", "k": "hut home house roundhouse shelter yurt cabana casa yurta" }, { "e": "\u{1F3D8}\uFE0F", "n": "houses", "k": "houses house casas edificio urbanizacion" }, { "e": "\u{1F3DA}\uFE0F", "n": "derelict house", "k": "derelict house home casa abandonada deshabitada inhabitada vacia" }, { "e": "\u{1F3E0}\uFE0F", "n": "house", "k": "house building country heart home ranch settle simple suburban suburbia where casa vivienda" }, { "e": "\u{1F3E1}", "n": "house with garden", "k": "house with garden building country heart home ranch settle simple suburban suburbia where casa con jardin construccion vivienda" }, { "e": "\u{1F3E2}", "n": "office building", "k": "office building city cubical job edificio de oficinas construccion" }, { "e": "\u{1F3E3}", "n": "Japanese post office", "k": "japanese post office building oficina de correos japonesa edificio japon" }, { "e": "\u{1F3E4}", "n": "post office", "k": "post office building european oficina de correos europea edificio europa" }, { "e": "\u{1F3E5}", "n": "hospital", "k": "hospital building doctor medicine edificio medicina medico" }, { "e": "\u{1F3E6}", "n": "bank", "k": "bank building banco banca edificio" }, { "e": "\u{1F3E8}", "n": "hotel", "k": "hotel building alojamiento edificio turismo" }, { "e": "\u{1F3E9}", "n": "love hotel", "k": "love hotel building del amor edificio" }, { "e": "\u{1F3EA}", "n": "convenience store", "k": "convenience store 24 building hours tienda horas edificio establecimiento de comestibles" }, { "e": "\u{1F3EB}", "n": "school", "k": "school building colegio edificio escuela" }, { "e": "\u{1F3EC}", "n": "department store", "k": "department store building grandes almacenes comercio" }, { "e": "\u{1F3ED}\uFE0F", "n": "factory", "k": "factory building fabrica edificio industria" }, { "e": "\u{1F3EF}", "n": "Japanese castle", "k": "japanese castle building castillo japones construccion" }, { "e": "\u{1F3F0}", "n": "castle", "k": "castle building european castillo europeo construccion" }, { "e": "\u{1F492}", "n": "wedding", "k": "wedding chapel hitched nuptials romance iglesia celebrando boda" }, { "e": "\u{1F5FC}", "n": "Tokyo tower", "k": "tokyo tower torre de tokio" }, { "e": "\u{1F5FD}", "n": "Statue of Liberty", "k": "statue of liberty new ny nyc york estatua de la libertad nueva" }, { "e": "\u26EA\uFE0F", "n": "church", "k": "church bless chapel christian cross religion iglesia cristianismo cruz edificio" }, { "e": "\u{1F54C}", "n": "mosque", "k": "mosque islam masjid muslim religion mezquita" }, { "e": "\u{1F6D5}", "n": "hindu temple", "k": "hindu temple templo" }, { "e": "\u{1F54D}", "n": "synagogue", "k": "synagogue jew jewish judaism religion temple sinagoga judaismo" }, { "e": "\u26E9\uFE0F", "n": "shinto shrine", "k": "shinto shrine religion santuario sintoista japon sintoismo" }, { "e": "\u{1F54B}", "n": "kaaba", "k": "kaaba hajj islam muslim religion umrah hach musulman" }, { "e": "\u26F2\uFE0F", "n": "fountain", "k": "fountain fuente" }, { "e": "\u26FA\uFE0F", "n": "tent", "k": "tent camping tienda de campana vacaciones" }, { "e": "\u{1F301}", "n": "foggy", "k": "foggy fog bruma niebla" }, { "e": "\u{1F303}", "n": "night with stars", "k": "night with stars star noche estrellada estrellas" }, { "e": "\u{1F3D9}\uFE0F", "n": "cityscape", "k": "cityscape city paisaje urbano ciudad edificio" }, { "e": "\u{1F304}", "n": "sunrise over mountains", "k": "sunrise over mountains morning sun amanecer sobre montanas montana salida sol" }, { "e": "\u{1F305}", "n": "sunrise", "k": "sunrise morning nature sun amanecer salida del sol" }, { "e": "\u{1F306}", "n": "cityscape at dusk", "k": "cityscape at dusk building city evening landscape sun sunset ciudad al atardecer edificios paisaje" }, { "e": "\u{1F307}", "n": "sunset", "k": "sunset building dusk sun puesta del sol edificios" }, { "e": "\u{1F309}", "n": "bridge at night", "k": "bridge at night puente de noche" }, { "e": "\u2668\uFE0F", "n": "hot springs", "k": "hot springs hotsprings steaming aguas termales termas vapor" }, { "e": "\u{1F3A0}", "n": "carousel horse", "k": "carousel horse entertainment caballo de tiovivo entretenimiento" }, { "e": "\u{1F6DD}", "n": "playground slide", "k": "playground slide amusement park play playing sliding theme tobogan jugar parque de atracciones" }, { "e": "\u{1F3A1}", "n": "ferris wheel", "k": "ferris wheel amusement park theme noria de feria atracciones entretenimiento" }, { "e": "\u{1F3A2}", "n": "roller coaster", "k": "roller coaster amusement park theme montana rusa atracciones entretenimiento feria parque" }, { "e": "\u{1F488}", "n": "barber pole", "k": "barber pole cut fresh haircut shave poste de barbero barberia peluquero" }, { "e": "\u{1F3AA}", "n": "circus tent", "k": "circus tent carpa de circo entretenimiento" }, { "e": "\u{1F682}", "n": "locomotive", "k": "locomotive caboose engine railway steam train trains travel locomotora de vapor tren vehiculo" }, { "e": "\u{1F683}", "n": "railway car", "k": "railway car electric train tram travel trolleybus vagon ferrocarril tranvia tren electrico vehiculo" }, { "e": "\u{1F684}", "n": "high-speed train", "k": "high speed train railway shinkansen tren de alta velocidad ave ferrocarril rapido" }, { "e": "\u{1F685}", "n": "bullet train", "k": "bullet train high speed nose railway shinkansen travel tren bala vehiculo velocidad" }, { "e": "\u{1F686}", "n": "train", "k": "train arrived choo railway tren ferrocarril vehiculo" }, { "e": "\u{1F687}\uFE0F", "n": "metro", "k": "metro subway travel subterraneo suburbano transporte" }, { "e": "\u{1F688}", "n": "light rail", "k": "light rail arrived monorail railway tren ligero ferrocarril transporte" }, { "e": "\u{1F689}", "n": "station", "k": "station railway train estacion de tren" }, { "e": "\u{1F68A}", "n": "tram", "k": "tram trolleybus tranvia transporte trolebus" }, { "e": "\u{1F69D}", "n": "monorail", "k": "monorail vehicle monorrail ferrocarril monocarril transporte tren" }, { "e": "\u{1F69E}", "n": "mountain railway", "k": "mountain railway car trip ferrocarril de montana vehiculo" }, { "e": "\u{1F68B}", "n": "tram car", "k": "tram car bus trolley trolleybus vagon de tranvia vehiculo" }, { "e": "\u{1F68C}", "n": "bus", "k": "bus school vehicle autobus transporte" }, { "e": "\u{1F68D}\uFE0F", "n": "oncoming bus", "k": "oncoming bus cars autobus proximo vehiculo" }, { "e": "\u{1F68E}", "n": "trolleybus", "k": "trolleybus bus tram trolley trolebus transporte tranvia" }, { "e": "\u{1F690}", "n": "minibus", "k": "minibus bus drive van vehicle autobus transporte" }, { "e": "\u{1F691}\uFE0F", "n": "ambulance", "k": "ambulance emergency vehicle ambulancia asistencia medica transporte vehiculo" }, { "e": "\u{1F692}", "n": "fire engine", "k": "fire engine truck coche de bomberos camion fuego vehiculo" }, { "e": "\u{1F693}", "n": "police car", "k": "police car 5 0 cops patrol coche de policia patrulla vehiculo" }, { "e": "\u{1F694}\uFE0F", "n": "oncoming police car", "k": "oncoming police car coche de policia proximo patrulla vehiculo" }, { "e": "\u{1F695}", "n": "taxi", "k": "taxi cab cabbie car drive vehicle yellow coche vehiculo" }, { "e": "\u{1F696}", "n": "oncoming taxi", "k": "oncoming taxi cab cabbie cars drove hail yellow proximo vehiculo" }, { "e": "\u{1F697}", "n": "automobile", "k": "automobile car driving vehicle coche automovil vehiculo" }, { "e": "\u{1F698}\uFE0F", "n": "oncoming automobile", "k": "oncoming automobile car cars drove vehicle coche proximo automovil vehiculo" }, { "e": "\u{1F699}", "n": "sport utility vehicle", "k": "sport utility vehicle car drive recreational sportutility vehiculo deportivo utilitario camping caravana furgoneta vacaciones" }, { "e": "\u{1F6FB}", "n": "pickup truck", "k": "pickup truck automobile car flatbed pick up transportation camioneta ranchera" }, { "e": "\u{1F69A}", "n": "delivery truck", "k": "delivery truck car drive vehicle camion de reparto mercancias transporte vehiculo" }, { "e": "\u{1F69B}", "n": "articulated lorry", "k": "articulated lorry car drive move semi truck vehicle camion articulado trailer vehiculo" }, { "e": "\u{1F69C}", "n": "tractor", "k": "tractor vehicle agricultura vehiculo" }, { "e": "\u{1F3CE}\uFE0F", "n": "racing car", "k": "racing car zoom coche de carreras" }, { "e": "\u{1F3CD}\uFE0F", "n": "motorcycle", "k": "motorcycle racing moto carreras motocicleta vehiculo" }, { "e": "\u{1F6F5}", "n": "motor scooter", "k": "motor scooter escuter moto" }, { "e": "\u{1F9BD}", "n": "manual wheelchair", "k": "manual wheelchair accessibility silla de ruedas accesibilidad" }, { "e": "\u{1F9BC}", "n": "motorized wheelchair", "k": "motorized wheelchair accessibility silla de ruedas electrica accesibilidad" }, { "e": "\u{1F6FA}", "n": "auto rickshaw", "k": "auto rickshaw tuk mototaxi" }, { "e": "\u{1F6B2}\uFE0F", "n": "bicycle", "k": "bicycle bike class cycle cycling cyclist gang ride spin spinning bicicleta bici vehiculo" }, { "e": "\u{1F6F4}", "n": "kick scooter", "k": "kick scooter patinete" }, { "e": "\u{1F6F9}", "n": "skateboard", "k": "skateboard board skate skater wheels monopatin tabla" }, { "e": "\u{1F6FC}", "n": "roller skate", "k": "roller skate blades skates sport patines patin de 4 ruedas cuatro" }, { "e": "\u{1F68F}", "n": "bus stop", "k": "bus stop busstop parada de autobus" }, { "e": "\u{1F6E3}\uFE0F", "n": "motorway", "k": "motorway highway road autopista carretera" }, { "e": "\u{1F6E4}\uFE0F", "n": "railway track", "k": "railway track train via de tren" }, { "e": "\u{1F6E2}\uFE0F", "n": "oil drum", "k": "oil drum barril de petroleo bidon" }, { "e": "\u26FD\uFE0F", "n": "fuel pump", "k": "fuel pump diesel fuelpump gas gasoline station surtidor de gasolina bomba combustible" }, { "e": "\u{1F6DE}", "n": "wheel", "k": "wheel car circle tire turn vehicle rueda circulo girar neumatico rodar" }, { "e": "\u{1F6A8}", "n": "police car light", "k": "police car light alarm alert beacon emergency revolving siren luces de policia coche" }, { "e": "\u{1F6A5}", "n": "horizontal traffic light", "k": "horizontal traffic light intersection signal stop stoplight semaforo luz senales de trafico" }, { "e": "\u{1F6A6}", "n": "vertical traffic light", "k": "vertical traffic light drove intersection signal stop stoplight semaforo luz senales de trafico" }, { "e": "\u{1F6D1}", "n": "stop sign", "k": "stop sign octagonal senal de octagono parada" }, { "e": "\u{1F6A7}", "n": "construction", "k": "construction barrier obras construccion senal de" }, { "e": "\u2693\uFE0F", "n": "anchor", "k": "anchor ship tool ancla barco gancho" }, { "e": "\u{1F6DF}", "n": "ring buoy", "k": "ring buoy float life lifesaver preserver rescue safety save saver swim salvavidas flotador rescate seguridad socorrista" }, { "e": "\u26F5\uFE0F", "n": "sailboat", "k": "sailboat boat resort sailing sea yacht velero barco de vela yate" }, { "e": "\u{1F6F6}", "n": "canoe", "k": "canoe boat canoa barca barco piragua" }, { "e": "\u{1F6A4}", "n": "speedboat", "k": "speedboat billionaire boat lake luxury millionaire summer travel lancha motora barco vehiculo" }, { "e": "\u{1F6F3}\uFE0F", "n": "passenger ship", "k": "passenger ship barco de pasajeros vehiculo" }, { "e": "\u26F4\uFE0F", "n": "ferry", "k": "ferry boat passenger ferri barco" }, { "e": "\u{1F6E5}\uFE0F", "n": "motor boat", "k": "motor boat motorboat barco a vehiculo" }, { "e": "\u{1F6A2}", "n": "ship", "k": "ship boat passenger travel barco vehiculo" }, { "e": "\u2708\uFE0F", "n": "airplane", "k": "airplane aeroplane fly flying jet plane travel avion aeroplano" }, { "e": "\u{1F6E9}\uFE0F", "n": "small airplane", "k": "small airplane aeroplane plane avioneta avion" }, { "e": "\u{1F6EB}", "n": "airplane departure", "k": "airplane departure aeroplane check in departures plane avion despegando aeroplano salida" }, { "e": "\u{1F6EC}", "n": "airplane arrival", "k": "airplane arrival aeroplane arrivals arriving landing plane avion aterrizando aeroplano llegada" }, { "e": "\u{1FA82}", "n": "parachute", "k": "parachute hang glide parasail skydive paracaidas ala delta paracaidismo paravela volar" }, { "e": "\u{1F4BA}", "n": "seat", "k": "seat chair asiento de transporte plaza silla" }, { "e": "\u{1F681}", "n": "helicopter", "k": "helicopter copter roflcopter travel vehicle helicoptero aspas rotores vehiculo volar" }, { "e": "\u{1F69F}", "n": "suspension railway", "k": "suspension railway ferrocarril de vehiculo" }, { "e": "\u{1F6A0}", "n": "mountain cableway", "k": "mountain cableway cable gondola lift ski teleferico de montana funicular vehiculo" }, { "e": "\u{1F6A1}", "n": "aerial tramway", "k": "aerial tramway cable car gondola ropeway teleferico aereo tranvia vehiculo" }, { "e": "\u{1F6F0}\uFE0F", "n": "satellite", "k": "satellite space satelite espacio vehiculo" }, { "e": "\u{1F680}", "n": "rocket", "k": "rocket launch rockets space travel cohete espacio vehiculo" }, { "e": "\u{1F6F8}", "n": "flying saucer", "k": "flying saucer aliens extra terrestrial ufo platillo volante ovni" }, { "e": "\u{1F6CE}\uFE0F", "n": "bellhop bell", "k": "bellhop bell hotel timbre de botones campanilla" }, { "e": "\u{1F9F3}", "n": "luggage", "k": "luggage bag packing roller suitcase travel equipaje maleta viajar" }, { "e": "\u231B\uFE0F", "n": "hourglass done", "k": "hourglass done sand time timer reloj de arena sin tiempo temporizador" }, { "e": "\u23F3\uFE0F", "n": "hourglass not done", "k": "hourglass not done flowing hours sand timer waiting yolo reloj de arena con tiempo cayendo temporizador" }, { "e": "\u231A\uFE0F", "n": "watch", "k": "watch clock time reloj" }, { "e": "\u23F0\uFE0F", "n": "alarm clock", "k": "alarm clock hours hrs late time waiting reloj despertador alarma" }, { "e": "\u23F1\uFE0F", "n": "stopwatch", "k": "stopwatch clock time cronometro reloj" }, { "e": "\u23F2\uFE0F", "n": "timer clock", "k": "timer clock temporizador reloj" }, { "e": "\u{1F570}\uFE0F", "n": "mantelpiece clock", "k": "mantelpiece clock time reloj de sobremesa" }, { "e": "\u{1F55B}\uFE0F", "n": "twelve o\u2019clock", "k": "twelve o clock 12 00 time en punto doce reloj" }, { "e": "\u{1F567}\uFE0F", "n": "twelve-thirty", "k": "twelve thirty 12 30 clock time doce y media reloj" }, { "e": "\u{1F550}\uFE0F", "n": "one o\u2019clock", "k": "one o clock 1 00 time en punto reloj una" }, { "e": "\u{1F55C}\uFE0F", "n": "one-thirty", "k": "one thirty 1 30 clock time una y media reloj" }, { "e": "\u{1F551}\uFE0F", "n": "two o\u2019clock", "k": "two o clock 2 00 time en punto dos reloj" }, { "e": "\u{1F55D}\uFE0F", "n": "two-thirty", "k": "two thirty 2 30 clock time dos y media reloj" }, { "e": "\u{1F552}\uFE0F", "n": "three o\u2019clock", "k": "three o clock 3 00 time en punto reloj tres" }, { "e": "\u{1F55E}\uFE0F", "n": "three-thirty", "k": "three thirty 3 30 clock time tres y media reloj" }, { "e": "\u{1F553}\uFE0F", "n": "four o\u2019clock", "k": "four o clock 4 00 time en punto cuatro reloj" }, { "e": "\u{1F55F}\uFE0F", "n": "four-thirty", "k": "four thirty 30 4 clock time cuatro y media reloj" }, { "e": "\u{1F554}\uFE0F", "n": "five o\u2019clock", "k": "five o clock 5 00 time en punto cinco reloj" }, { "e": "\u{1F560}\uFE0F", "n": "five-thirty", "k": "five thirty 30 5 clock time cinco y media reloj" }, { "e": "\u{1F555}\uFE0F", "n": "six o\u2019clock", "k": "six o clock 6 00 time en punto reloj seis" }, { "e": "\u{1F561}\uFE0F", "n": "six-thirty", "k": "six thirty 30 6 clock seis y media reloj" }, { "e": "\u{1F556}\uFE0F", "n": "seven o\u2019clock", "k": "seven o clock 0 7 00 en punto reloj siete" }, { "e": "\u{1F562}\uFE0F", "n": "seven-thirty", "k": "seven thirty 30 7 clock siete y media reloj" }, { "e": "\u{1F557}\uFE0F", "n": "eight o\u2019clock", "k": "eight o clock 8 00 time en punto ocho reloj" }, { "e": "\u{1F563}\uFE0F", "n": "eight-thirty", "k": "eight thirty 30 8 clock time ocho y media reloj" }, { "e": "\u{1F558}\uFE0F", "n": "nine o\u2019clock", "k": "nine o clock 9 00 time en punto nueve reloj" }, { "e": "\u{1F564}\uFE0F", "n": "nine-thirty", "k": "nine thirty 30 9 clock time nueve y media reloj" }, { "e": "\u{1F559}\uFE0F", "n": "ten o\u2019clock", "k": "ten o clock 0 10 00 en punto diez reloj" }, { "e": "\u{1F565}\uFE0F", "n": "ten-thirty", "k": "ten thirty 10 30 clock time diez y media reloj" }, { "e": "\u{1F55A}\uFE0F", "n": "eleven o\u2019clock", "k": "eleven o clock 11 00 time en punto once reloj" }, { "e": "\u{1F566}\uFE0F", "n": "eleven-thirty", "k": "eleven thirty 11 30 clock time once y media reloj" }, { "e": "\u{1F311}", "n": "new moon", "k": "new moon dark space luna nueva oscuridad" }, { "e": "\u{1F312}", "n": "waxing crescent moon", "k": "waxing crescent moon dreams space luna creciente cuarto espacio" }, { "e": "\u{1F313}", "n": "first quarter moon", "k": "first quarter moon space luna en cuarto creciente espacio" }, { "e": "\u{1F314}", "n": "waxing gibbous moon", "k": "waxing gibbous moon space luna gibosa creciente" }, { "e": "\u{1F315}\uFE0F", "n": "full moon", "k": "full moon space luna llena plenilunio" }, { "e": "\u{1F316}", "n": "waning gibbous moon", "k": "waning gibbous moon space luna gibosa menguante" }, { "e": "\u{1F317}", "n": "last quarter moon", "k": "last quarter moon space luna en cuarto menguante" }, { "e": "\u{1F318}", "n": "waning crescent moon", "k": "waning crescent moon space luna menguante" }, { "e": "\u{1F319}", "n": "crescent moon", "k": "crescent moon ramadan space luna creciente espacio" }, { "e": "\u{1F31A}", "n": "new moon face", "k": "new moon face space luna nueva con cara espacio" }, { "e": "\u{1F31B}", "n": "first quarter moon face", "k": "first quarter moon face space luna de cuarto creciente con cara espacio" }, { "e": "\u{1F31C}\uFE0F", "n": "last quarter moon face", "k": "last quarter moon face dreams luna de cuarto menguante con cara creciente espacio" }, { "e": "\u{1F321}\uFE0F", "n": "thermometer", "k": "thermometer weather termometro temperatura" }, { "e": "\u2600\uFE0F", "n": "sun", "k": "sun bright rays space sunny weather sol espacio rayos soleado" }, { "e": "\u{1F31D}", "n": "full moon face", "k": "full moon face bright luna llena con cara" }, { "e": "\u{1F31E}", "n": "sun with face", "k": "sun with face beach bright day heat shine sunny sunshine weather sol con cara brillante" }, { "e": "\u{1FA90}", "n": "ringed planet", "k": "ringed planet saturn saturnine planeta con anillos saturnino saturno" }, { "e": "\u2B50\uFE0F", "n": "star", "k": "star astronomy medium stars white estrella estelar" }, { "e": "\u{1F31F}", "n": "glowing star", "k": "glowing star glittery glow night shining sparkle win estrella brillante resplandeciente" }, { "e": "\u{1F320}", "n": "shooting star", "k": "shooting star falling night space estrella fugaz lluvia" }, { "e": "\u{1F30C}", "n": "milky way", "k": "milky way space via lactea espacio galaxia" }, { "e": "\u2601\uFE0F", "n": "cloud", "k": "cloud weather nube tiempo" }, { "e": "\u26C5\uFE0F", "n": "sun behind cloud", "k": "sun behind cloud cloudy weather sol detras de una nube con nubes" }, { "e": "\u26C8\uFE0F", "n": "cloud with lightning and rain", "k": "cloud with lightning and rain thunder thunderstorm nube con rayo y lluvia trueno" }, { "e": "\u{1F324}\uFE0F", "n": "sun behind small cloud", "k": "sun behind small cloud weather sol detras de una nube pequena" }, { "e": "\u{1F325}\uFE0F", "n": "sun behind large cloud", "k": "sun behind large cloud weather sol detras de una nube grande" }, { "e": "\u{1F326}\uFE0F", "n": "sun behind rain cloud", "k": "sun behind rain cloud weather sol detras de una nube con lluvia" }, { "e": "\u{1F327}\uFE0F", "n": "cloud with rain", "k": "cloud with rain weather nube con lluvia" }, { "e": "\u{1F328}\uFE0F", "n": "cloud with snow", "k": "cloud with snow cold weather nube con nieve frio" }, { "e": "\u{1F329}\uFE0F", "n": "cloud with lightning", "k": "cloud with lightning weather nube con rayo" }, { "e": "\u{1F32A}\uFE0F", "n": "tornado", "k": "tornado cloud weather whirlwind nube torbellino" }, { "e": "\u{1F32B}\uFE0F", "n": "fog", "k": "fog cloud weather niebla nube" }, { "e": "\u{1F32C}\uFE0F", "n": "wind face", "k": "wind face blow cloud cara de viento nube soplar" }, { "e": "\u{1F300}", "n": "cyclone", "k": "cyclone dizzy hurricane twister typhoon weather ciclon mareo tifon tornado" }, { "e": "\u{1F308}", "n": "rainbow", "k": "rainbow gay genderqueer glbt glbtq lesbian lgbt lgbtq lgbtqia nature pride queer rain trans transgender weather arcoiris colores lluvia" }, { "e": "\u{1F302}", "n": "closed umbrella", "k": "closed umbrella clothing rain paraguas cerrado accesorios lluvia" }, { "e": "\u2602\uFE0F", "n": "umbrella", "k": "umbrella clothing rain paraguas lluvia abierto" }, { "e": "\u2614\uFE0F", "n": "umbrella with rain drops", "k": "umbrella with rain drops clothing drop weather paraguas con gotas de lluvia" }, { "e": "\u26F1\uFE0F", "n": "umbrella on ground", "k": "umbrella on ground rain sun sombrilla en la arena sol" }, { "e": "\u26A1\uFE0F", "n": "high voltage", "k": "high voltage danger electric electricity lightning nature thunder thunderbolt zap alto voltaje electricidad peligro de senal" }, { "e": "\u2744\uFE0F", "n": "snowflake", "k": "snowflake cold snow weather copo de nieve frio" }, { "e": "\u2603\uFE0F", "n": "snowman", "k": "snowman cold man snow muneco de nieve con" }, { "e": "\u26C4\uFE0F", "n": "snowman without snow", "k": "snowman without snow cold man muneco de nieve sin" }, { "e": "\u2604\uFE0F", "n": "comet", "k": "comet space meteorito cometa espacio" }, { "e": "\u{1F525}", "n": "fire", "k": "fire af burn flame hot lit litaf tool fuego llama" }, { "e": "\u{1F4A7}", "n": "droplet", "k": "droplet cold comic drop nature sad sweat tear water weather gota agua sudor" }, { "e": "\u{1F30A}", "n": "water wave", "k": "water wave nature ocean surf surfer surfing ola de mar oceano" }] }, { "key": "activities", "emojis": [{ "e": "\u{1F383}", "n": "jack-o-lantern", "k": "jack o lantern celebration halloween pumpkin calabaza de celebracion linterna" }, { "e": "\u{1F384}", "n": "Christmas tree", "k": "christmas tree celebration arbol de navidad abeto celebracion" }, { "e": "\u{1F386}", "n": "fireworks", "k": "fireworks boom celebration entertainment yolo fuegos artificiales celebracion" }, { "e": "\u{1F387}", "n": "sparkler", "k": "sparkler boom celebration fireworks sparkle bengala celebracion fuegos artificiales" }, { "e": "\u{1F9E8}", "n": "firecracker", "k": "firecracker dynamite explosive fire fireworks light pop popping spark petardo dinamita explosivo fuegos artificiales" }, { "e": "\u2728\uFE0F", "n": "sparkles", "k": "sparkles magic sparkle star chispas bengala estrellas" }, { "e": "\u{1F388}", "n": "balloon", "k": "balloon birthday celebrate celebration globo celebracion" }, { "e": "\u{1F389}", "n": "party popper", "k": "party popper awesome birthday celebrate celebration excited hooray tada woohoo canon de confeti celebracion fiesta" }, { "e": "\u{1F38A}", "n": "confetti ball", "k": "confetti ball celebrate celebration party woohoo bola de confeti celebracion" }, { "e": "\u{1F38B}", "n": "tanabata tree", "k": "tanabata tree banner celebration japanese arbol de celebracion festividad" }, { "e": "\u{1F38D}", "n": "pine decoration", "k": "pine decoration bamboo celebration japanese plant decoracion de pino ano nuevo japones bambu celebracion kadomatsu" }, { "e": "\u{1F38E}", "n": "Japanese dolls", "k": "japanese dolls celebration doll festival munecas japonesas celebracion hinamatsuri" }, { "e": "\u{1F38F}", "n": "carp streamer", "k": "carp streamer celebration banderin de carpas carpa celebracion koinobori" }, { "e": "\u{1F390}", "n": "wind chime", "k": "wind chime bell celebration campanilla de viento furin" }, { "e": "\u{1F391}", "n": "moon viewing ceremony", "k": "moon viewing ceremony celebration ceremonia de contemplacion la luna celebracion tsukimi" }, { "e": "\u{1F9E7}", "n": "red envelope", "k": "red envelope gift good hongbao lai luck money see sobre rojo buena suerte regalo" }, { "e": "\u{1F380}", "n": "ribbon", "k": "ribbon celebration lazo celebracion" }, { "e": "\u{1F381}", "n": "wrapped gift", "k": "wrapped gift birthday bow box celebration christmas present surprise regalo celebracion envoltorio presente envuelto" }, { "e": "\u{1F397}\uFE0F", "n": "reminder ribbon", "k": "reminder ribbon celebration lazo conmemorativo" }, { "e": "\u{1F39F}\uFE0F", "n": "admission tickets", "k": "admission tickets ticket entradas acceso admision entrada evento" }, { "e": "\u{1F3AB}", "n": "ticket", "k": "ticket admission stub tique acceso admision" }, { "e": "\u{1F396}\uFE0F", "n": "military medal", "k": "military medal award celebration medalla militar celebracion" }, { "e": "\u{1F3C6}\uFE0F", "n": "trophy", "k": "trophy champion champs prize slay sport victory win winning trofeo premio" }, { "e": "\u{1F3C5}", "n": "sports medal", "k": "sports medal award gold winner medalla deportiva premio" }, { "e": "\u{1F947}", "n": "1st place medal", "k": "1st place medal first gold medalla de oro primero" }, { "e": "\u{1F948}", "n": "2nd place medal", "k": "2nd place medal second silver medalla de plata segundo" }, { "e": "\u{1F949}", "n": "3rd place medal", "k": "3rd place medal bronze third medalla de bronce tercero" }, { "e": "\u26BD\uFE0F", "n": "soccer ball", "k": "soccer ball football futbol sport balon de" }, { "e": "\u26BE\uFE0F", "n": "baseball", "k": "baseball ball sport beisbol balon pelota" }, { "e": "\u{1F94E}", "n": "softball", "k": "softball ball glove sports underarm pelota de bola" }, { "e": "\u{1F3C0}", "n": "basketball", "k": "basketball ball hoop sport balon de baloncesto canasta deporte" }, { "e": "\u{1F3D0}", "n": "volleyball", "k": "volleyball ball game pelota de voleibol balon juego" }, { "e": "\u{1F3C8}", "n": "american football", "k": "american football ball bowl sport super balon de futbol americano deporte" }, { "e": "\u{1F3C9}", "n": "rugby football", "k": "rugby football ball sport balon de deporte" }, { "e": "\u{1F3BE}", "n": "tennis", "k": "tennis ball racquet sport pelota de tenis deporte" }, { "e": "\u{1F94F}", "n": "flying disc", "k": "flying disc ultimate disco volador frisbee" }, { "e": "\u{1F3B3}", "n": "bowling", "k": "bowling ball game sport strike bolos bola de juego" }, { "e": "\u{1F3CF}", "n": "cricket game", "k": "cricket game ball bat criquet juego pelota" }, { "e": "\u{1F3D1}", "n": "field hockey", "k": "field hockey ball game stick sobre hierba juego palo pelota" }, { "e": "\u{1F3D2}", "n": "ice hockey", "k": "ice hockey game puck stick sobre hielo disco palo" }, { "e": "\u{1F94D}", "n": "lacrosse", "k": "lacrosse ball goal sports stick bola palo pelota raqueta" }, { "e": "\u{1F3D3}", "n": "ping pong", "k": "ping pong ball bat game paddle pingpong table tennis tenis de mesa juego pelota" }, { "e": "\u{1F3F8}", "n": "badminton", "k": "badminton birdie game racquet shuttlecock pluma raqueta volante" }, { "e": "\u{1F94A}", "n": "boxing glove", "k": "boxing glove guante de boxeo deporte" }, { "e": "\u{1F94B}", "n": "martial arts uniform", "k": "martial arts uniform judo karate taekwondo uniforme de artes marciales" }, { "e": "\u{1F945}", "n": "goal net", "k": "goal net porteria deporte red" }, { "e": "\u26F3\uFE0F", "n": "flag in hole", "k": "flag in hole golf sport banderin en hoyo" }, { "e": "\u26F8\uFE0F", "n": "ice skate", "k": "ice skate skating patin de hielo" }, { "e": "\u{1F3A3}", "n": "fishing pole", "k": "fishing pole entertainment fish sport cana de pescar entretenimiento esparcimiento pesca pez" }, { "e": "\u{1F93F}", "n": "diving mask", "k": "diving mask scuba snorkeling mascara de buceo bucear buzo esnorquel tubo" }, { "e": "\u{1F3BD}", "n": "running shirt", "k": "running shirt athletics sash camiseta sin mangas banda con de correr deporte" }, { "e": "\u{1F3BF}", "n": "skis", "k": "skis ski snow sport esquis esqui esquies nieve" }, { "e": "\u{1F6F7}", "n": "sled", "k": "sled luge sledge sleigh snow toboggan trineo" }, { "e": "\u{1F94C}", "n": "curling stone", "k": "curling stone game rock piedra de juego roca" }, { "e": "\u{1F3AF}", "n": "bullseye", "k": "bullseye bull dart direct entertainment game hit target diana blanco en el juego" }, { "e": "\u{1FA80}", "n": "yo-yo", "k": "yo fluctuate toy yoyo dieta efecto fluctuar juguete" }, { "e": "\u{1FA81}", "n": "kite", "k": "kite fly soar cometa juguete planear viento volar" }, { "e": "\u{1F52B}", "n": "water pistol", "k": "water pistol gun handgun revolver tool weapon pistola de agua juguete verano" }, { "e": "\u{1F3B1}", "n": "pool 8 ball", "k": "pool 8 ball 8ball billiard eight game bola negra de billar ocho juego" }, { "e": "\u{1F52E}", "n": "crystal ball", "k": "crystal ball fairy fairytale fantasy fortune future magic tale tool bola de cristal adivinacion buena fortuna" }, { "e": "\u{1FA84}", "n": "magic wand", "k": "magic wand magician witch wizard varita magica bruja hechicero magia mago prestidigitacion" }, { "e": "\u{1F3AE}\uFE0F", "n": "video game", "k": "video game controller entertainment mando de videoconsola juego videojuego" }, { "e": "\u{1F579}\uFE0F", "n": "joystick", "k": "joystick game video videogame juego mando palanca videojuego" }, { "e": "\u{1F3B0}", "n": "slot machine", "k": "slot machine casino gamble gambling game slots maquina tragaperras juego" }, { "e": "\u{1F3B2}", "n": "game die", "k": "game die dice entertainment dado juego" }, { "e": "\u{1F9E9}", "n": "puzzle piece", "k": "puzzle piece clue interlocking jigsaw pieza de puzle conectar pista rompecabezas" }, { "e": "\u{1F9F8}", "n": "teddy bear", "k": "teddy bear plaything plush stuffed toy osito de peluche juguete oso" }, { "e": "\u{1FA85}", "n": "pi\xF1ata", "k": "pinata candy celebrate celebration cinco de festive mayo party pinada caballito celebracion fiesta" }, { "e": "\u{1FAA9}", "n": "mirror ball", "k": "mirror ball dance disco glitter party bola de espejos bailar brillar discoteca fiesta" }, { "e": "\u{1FA86}", "n": "nesting dolls", "k": "nesting dolls babooshka baboushka babushka doll matryoshka russia muneca rusa mamushka matrioska rusia" }, { "e": "\u2660\uFE0F", "n": "spade suit", "k": "spade suit card game palo de picas carta juego" }, { "e": "\u2665\uFE0F", "n": "heart suit", "k": "heart suit card emotion game hearts palo de corazones carta juego" }, { "e": "\u2666\uFE0F", "n": "diamond suit", "k": "diamond suit card game palo de diamantes carta juego" }, { "e": "\u2663\uFE0F", "n": "club suit", "k": "club suit card clubs game palo de treboles carta juego" }, { "e": "\u265F\uFE0F", "n": "chess pawn", "k": "chess pawn dupe expendable peon de ajedrez" }, { "e": "\u{1F0CF}", "n": "joker", "k": "joker card game wildcard comodin" }, { "e": "\u{1F004}\uFE0F", "n": "mahjong red dragon", "k": "mahjong red dragon game rojo de juego" }, { "e": "\u{1F3B4}", "n": "flower playing cards", "k": "flower playing cards card game japanese cartas de flores carta flor hanafuda naipe japones" }, { "e": "\u{1F3AD}\uFE0F", "n": "performing arts", "k": "performing arts actor actress art entertainment mask theater theatre thespian mascaras de teatro actuacion arte artes escenicas entretenimiento" }, { "e": "\u{1F5BC}\uFE0F", "n": "framed picture", "k": "framed picture art frame museum painting cuadro enmarcado marco museo" }, { "e": "\u{1F3A8}", "n": "artist palette", "k": "artist palette art artsy arty colorful creative entertainment museum painter painting paleta de pintor arte artista pintura" }, { "e": "\u{1F9F5}", "n": "thread", "k": "thread needle sewing spool string hilo aguja carrete coser costura" }, { "e": "\u{1FAA1}", "n": "sewing needle", "k": "sewing needle embroidery sew stitches sutures tailoring thread aguja de coser bordado hilar punto tejer" }, { "e": "\u{1F9F6}", "n": "yarn", "k": "yarn ball crochet knit ovillo bola croche punto tejer" }, { "e": "\u{1FAA2}", "n": "knot", "k": "knot cord rope tangled tie twine twist nudo anudar atar enredar trenzar" }] }, { "key": "objects", "emojis": [{ "e": "\u{1F453}\uFE0F", "n": "glasses", "k": "glasses clothing eye eyeglasses eyewear gafas accesorios ojo ropa" }, { "e": "\u{1F576}\uFE0F", "n": "sunglasses", "k": "sunglasses dark eye eyewear glasses gafas de sol ojo oscuras" }, { "e": "\u{1F97D}", "n": "goggles", "k": "goggles dive eye protection scuba swimming welding gafas de proteccion nadar ocular soldar" }, { "e": "\u{1F97C}", "n": "lab coat", "k": "lab coat clothes doctor dr experiment jacket scientist white bata de laboratorio cientifico experimento medico" }, { "e": "\u{1F9BA}", "n": "safety vest", "k": "safety vest emergency chaleco de seguridad emergencia" }, { "e": "\u{1F454}", "n": "necktie", "k": "necktie clothing employed serious shirt tie corbata accesorio ropa" }, { "e": "\u{1F455}", "n": "t-shirt", "k": "t shirt blue casual clothes clothing collar dressed shopping tshirt weekend camiseta ropa" }, { "e": "\u{1F456}", "n": "jeans", "k": "jeans blue casual clothes clothing denim dressed pants shopping trousers weekend vaqueros pantalones ropa" }, { "e": "\u{1F9E3}", "n": "scarf", "k": "scarf bundle cold neck up bufanda abrigo cuello" }, { "e": "\u{1F9E4}", "n": "gloves", "k": "gloves hand guantes mano" }, { "e": "\u{1F9E5}", "n": "coat", "k": "coat brr bundle cold jacket up abrigo chaqueton" }, { "e": "\u{1F9E6}", "n": "socks", "k": "socks stocking calcetines pies ropa" }, { "e": "\u{1F457}", "n": "dress", "k": "dress clothes clothing dressed fancy shopping vestido mujer ropa" }, { "e": "\u{1F458}", "n": "kimono", "k": "kimono clothing comfortable japones ropa" }, { "e": "\u{1F97B}", "n": "sari", "k": "sari clothing dress prenda ropa vestido" }, { "e": "\u{1FA71}", "n": "one-piece swimsuit", "k": "one piece swimsuit bathing suit traje de bano una pieza banador" }, { "e": "\u{1FA72}", "n": "briefs", "k": "briefs bathing one piece suit swimsuit underwear ropa interior banador bragas braguitas calzoncillos slip" }, { "e": "\u{1FA73}", "n": "shorts", "k": "shorts bathing pants suit swimsuit underwear pantalones cortos banador bermudas calzoncillos ropa interior" }, { "e": "\u{1F459}", "n": "bikini", "k": "bikini bathing beach clothing pool suit swim bano playa ropa" }, { "e": "\u{1F45A}", "n": "woman\u2019s clothes", "k": "woman s clothes blouse clothing collar dress dressed lady shirt shopping ropa de mujer blusa camisa femenina" }, { "e": "\u{1FAAD}", "n": "folding hand fan", "k": "folding hand fan clack clap cool cooling dance flirt flutter hot shy abanico abierto airear bailar calor feria flamenco" }, { "e": "\u{1F45B}", "n": "purse", "k": "purse clothes clothing coin dress fancy handbag shopping monedero accesorios cartera complementos" }, { "e": "\u{1F45C}", "n": "handbag", "k": "handbag bag clothes clothing dress lady purse shopping bolso accesorios complementos" }, { "e": "\u{1F45D}", "n": "clutch bag", "k": "clutch bag clothes clothing dress handbag pouch purse bolso de mano accesorios cartera complementos" }, { "e": "\u{1F6CD}\uFE0F", "n": "shopping bags", "k": "shopping bags bag hotel bolsas de compras bolsa compra" }, { "e": "\u{1F392}", "n": "backpack", "k": "backpack backpacking bag bookbag education rucksack satchel school mochila escolar colegio" }, { "e": "\u{1FA74}", "n": "thong sandal", "k": "thong sandal beach flip flop sandals shoe thongs zori chancla de dedo chancleta chinela sandalia" }, { "e": "\u{1F45E}", "n": "man\u2019s shoe", "k": "man s shoe brown clothes clothing feet foot kick shoes shopping zapato de hombre calzado ropa" }, { "e": "\u{1F45F}", "n": "running shoe", "k": "running shoe athletic clothes clothing fast kick shoes shopping sneaker tennis zapatilla deportiva calzado correr ropa tenis" }, { "e": "\u{1F97E}", "n": "hiking boot", "k": "hiking boot backpacking brown camping outdoors shoe bota de senderismo mochilero" }, { "e": "\u{1F97F}", "n": "flat shoe", "k": "flat shoe ballet comfy flats slip on slipper bailarina calzado zapato" }, { "e": "\u{1F460}", "n": "high-heeled shoe", "k": "high heeled shoe clothes clothing dress fashion heel heels shoes shopping stiletto woman zapato de tacon mujer" }, { "e": "\u{1F461}", "n": "woman\u2019s sandal", "k": "woman s sandal clothing shoe sandalia de mujer calzado ropa" }, { "e": "\u{1FA70}", "n": "ballet shoes", "k": "ballet shoes dance zapatillas de bailar bale danza" }, { "e": "\u{1F462}", "n": "woman\u2019s boot", "k": "woman s boot clothes clothing dress shoe shoes shopping bota de mujer calzado ropa" }, { "e": "\u{1FAAE}", "n": "hair pick", "k": "hair pick afro comb groom peineta peine pelo" }, { "e": "\u{1F451}", "n": "crown", "k": "crown clothing family king medieval queen royal royalty win corona accesorios complementos reina rey" }, { "e": "\u{1F452}", "n": "woman\u2019s hat", "k": "woman s hat clothes clothing garden hats party sombrero de mujer accesorio ropa" }, { "e": "\u{1F3A9}", "n": "top hat", "k": "top hat clothes clothing fancy formal magic tophat sombrero de copa chistera ropa" }, { "e": "\u{1F393}\uFE0F", "n": "graduation cap", "k": "graduation cap celebration clothing education hat scholar birrete celebracion gorro graduacion" }, { "e": "\u{1F9E2}", "n": "billed cap", "k": "billed cap baseball bent dad hat gorra con visera beisbol" }, { "e": "\u{1FA96}", "n": "military helmet", "k": "military helmet army soldier war warrior casco militar ejercito guerra guerrero soldado" }, { "e": "\u26D1\uFE0F", "n": "rescue worker\u2019s helmet", "k": "rescue worker s helmet aid cross face hat casco con una cruz blanca ayuda cara" }, { "e": "\u{1F4FF}", "n": "prayer beads", "k": "prayer beads clothing necklace religion rosario collar cuentas" }, { "e": "\u{1F484}", "n": "lipstick", "k": "lipstick cosmetics date makeup pintalabios barra cosmetica labios maquillaje" }, { "e": "\u{1F48D}", "n": "ring", "k": "ring diamond engaged engagement married romance shiny sparkling wedding anillo diamante" }, { "e": "\u{1F48E}", "n": "gem stone", "k": "gem stone diamond engagement jewel money romance wedding piedra preciosa diamante gema joya" }, { "e": "\u{1F507}", "n": "muted speaker", "k": "muted speaker mute quiet silent sound altavoz silenciado con marca de cancelacion silencio" }, { "e": "\u{1F508}\uFE0F", "n": "speaker low volume", "k": "speaker low volume soft sound altavoz a volumen bajo" }, { "e": "\u{1F509}", "n": "speaker medium volume", "k": "speaker medium volume sound altavoz a volumen medio con" }, { "e": "\u{1F50A}", "n": "speaker high volume", "k": "speaker high volume loud music sound altavoz a volumen alto" }, { "e": "\u{1F4E2}", "n": "loudspeaker", "k": "loudspeaker address communication loud public sound altavoz de mano comunicacion" }, { "e": "\u{1F4E3}", "n": "megaphone", "k": "megaphone cheering sound megafono comunicacion" }, { "e": "\u{1F4EF}", "n": "postal horn", "k": "postal horn post corneta de posta" }, { "e": "\u{1F514}", "n": "bell", "k": "bell break church sound campana" }, { "e": "\u{1F515}", "n": "bell with slash", "k": "bell with slash forbidden mute no not prohibited quiet silent sound campana con signo de cancelacion ruido" }, { "e": "\u{1F3BC}", "n": "musical score", "k": "musical score music note pentagrama musica partitura" }, { "e": "\u{1F3B5}", "n": "musical note", "k": "musical note music sound nota musica" }, { "e": "\u{1F3B6}", "n": "musical notes", "k": "musical notes music note sound notas musicales musica" }, { "e": "\u{1F399}\uFE0F", "n": "studio microphone", "k": "studio microphone mic music microfono de estudio musica" }, { "e": "\u{1F39A}\uFE0F", "n": "level slider", "k": "level slider music control de volumen fader" }, { "e": "\u{1F39B}\uFE0F", "n": "control knobs", "k": "control knobs music ruedas de diales musica potenciometros" }, { "e": "\u{1F3A4}", "n": "microphone", "k": "microphone karaoke mic music sing sound microfono entretenimiento micro" }, { "e": "\u{1F3A7}\uFE0F", "n": "headphone", "k": "headphone earbud sound auricular cascos" }, { "e": "\u{1F4FB}\uFE0F", "n": "radio", "k": "radio entertainment tbt video" }, { "e": "\u{1F3B7}", "n": "saxophone", "k": "saxophone instrument music sax saxofon instrumento musical musica saxo" }, { "e": "\u{1F3BA}", "n": "trumpet", "k": "trumpet instrument music trompeta instrumento musical musica" }, { "e": "\u{1FA97}", "n": "accordion", "k": "accordion box concertina instrument music squeeze squeezebox acordeon" }, { "e": "\u{1F3B8}", "n": "guitar", "k": "guitar instrument music strat guitarra instrumento musical musica" }, { "e": "\u{1F3B9}", "n": "musical keyboard", "k": "musical keyboard instrument music piano teclado instrumento musica" }, { "e": "\u{1F3BB}", "n": "violin", "k": "violin instrument music instrumento musical musica" }, { "e": "\u{1FA95}", "n": "banjo", "k": "banjo music stringed banyo cuerda instrumento musica" }, { "e": "\u{1F941}", "n": "drum", "k": "drum drumsticks music tambor baquetas musica" }, { "e": "\u{1FA98}", "n": "long drum", "k": "long drum beat conga instrument rhythm tamboril ritmo tambor" }, { "e": "\u{1FA87}", "n": "maracas", "k": "maracas cha dance instrument music party percussion rattle shake shaker agitar brasil instrumento movimiento musica percusion" }, { "e": "\u{1FA88}", "n": "flute", "k": "flute band fife flautist instrument marching music orchestra piccolo pipe recorder woodwind flauta flautin instrumento de viento madera musica" }, { "e": "\u{1F4F1}", "n": "mobile phone", "k": "mobile phone cell communication telephone telefono movil celular" }, { "e": "\u{1F4F2}", "n": "mobile phone with arrow", "k": "mobile phone with arrow build call cell communication receive telephone movil con una flecha llamada recibir telefono" }, { "e": "\u260E\uFE0F", "n": "telephone", "k": "telephone phone telefono" }, { "e": "\u{1F4DE}", "n": "telephone receiver", "k": "telephone receiver communication phone voip auricular de telefono comunicacion" }, { "e": "\u{1F4DF}\uFE0F", "n": "pager", "k": "pager communication busca comunicacion localizador" }, { "e": "\u{1F4E0}", "n": "fax machine", "k": "fax machine communication maquina de comunicacion" }, { "e": "\u{1F50B}", "n": "battery", "k": "battery pila bateria" }, { "e": "\u{1FAAB}", "n": "low battery", "k": "low battery drained electronic energy power bateria baja carga electronico energia pila" }, { "e": "\u{1F50C}", "n": "electric plug", "k": "electric plug electricity enchufe electrico corriente electricidad" }, { "e": "\u{1F4BB}\uFE0F", "n": "laptop", "k": "laptop computer office pc personal ordenador portatil" }, { "e": "\u{1F5A5}\uFE0F", "n": "desktop computer", "k": "desktop computer monitor ordenador de sobremesa" }, { "e": "\u{1F5A8}\uFE0F", "n": "printer", "k": "printer computer impresora ordenador" }, { "e": "\u2328\uFE0F", "n": "keyboard", "k": "keyboard computer teclado ordenador" }, { "e": "\u{1F5B1}\uFE0F", "n": "computer mouse", "k": "computer mouse raton de ordenador" }, { "e": "\u{1F5B2}\uFE0F", "n": "trackball", "k": "trackball computer bola de desplazamiento ordenador" }, { "e": "\u{1F4BD}", "n": "computer disk", "k": "computer disk minidisk optical minidisc disco md" }, { "e": "\u{1F4BE}", "n": "floppy disk", "k": "floppy disk computer disquete disco de 3 1 2" }, { "e": "\u{1F4BF}\uFE0F", "n": "optical disk", "k": "optical disk blu ray cd computer dvd disco optico" }, { "e": "\u{1F4C0}", "n": "dvd", "k": "dvd blu ray cd computer disk optical disco" }, { "e": "\u{1F9EE}", "n": "abacus", "k": "abacus calculation calculator abaco contar calculo matematicas" }, { "e": "\u{1F3A5}", "n": "movie camera", "k": "movie camera bollywood cinema film hollywood record camara de cine entretenimiento pelicula" }, { "e": "\u{1F39E}\uFE0F", "n": "film frames", "k": "film frames cinema movie fotograma de pelicula cine" }, { "e": "\u{1F4FD}\uFE0F", "n": "film projector", "k": "film projector cinema movie video proyector de cine pelicula" }, { "e": "\u{1F3AC}\uFE0F", "n": "clapper board", "k": "clapper board action movie claqueta cine de entretenimiento pelicula" }, { "e": "\u{1F4FA}\uFE0F", "n": "television", "k": "television tv video" }, { "e": "\u{1F4F7}\uFE0F", "n": "camera", "k": "camera photo selfie snap tbt trip video camara de fotos" }, { "e": "\u{1F4F8}", "n": "camera with flash", "k": "camera with flash video camara con" }, { "e": "\u{1F4F9}\uFE0F", "n": "video camera", "k": "video camera camcorder tbt videocamara camara" }, { "e": "\u{1F4FC}", "n": "videocassette", "k": "videocassette old school tape vcr vhs video cinta de" }, { "e": "\u{1F50D}\uFE0F", "n": "magnifying glass tilted left", "k": "magnifying glass tilted left lab pointing science search tool lupa orientada hacia la izquierda buscar" }, { "e": "\u{1F50E}", "n": "magnifying glass tilted right", "k": "magnifying glass tilted right contact lab pointing science search tool lupa orientada hacia la derecha buscar" }, { "e": "\u{1F56F}\uFE0F", "n": "candle", "k": "candle light vela luz" }, { "e": "\u{1F4A1}", "n": "light bulb", "k": "light bulb comic electric idea bombilla electricidad luz" }, { "e": "\u{1F526}", "n": "flashlight", "k": "flashlight electric light tool torch linterna luz" }, { "e": "\u{1F3EE}", "n": "red paper lantern", "k": "red paper lantern bar light restaurant lampara japonesa izakaya linterna roja restaurante" }, { "e": "\u{1FA94}", "n": "diya lamp", "k": "diya lamp light oil lampara de aceite" }, { "e": "\u{1F4D4}", "n": "notebook with decorative cover", "k": "notebook with decorative cover book decorated education school writing cuaderno con tapa decorativa decoracion" }, { "e": "\u{1F4D5}", "n": "closed book", "k": "closed book education libro cerrado" }, { "e": "\u{1F4D6}", "n": "open book", "k": "open book education fantasy knowledge library novels reading libro abierto" }, { "e": "\u{1F4D7}", "n": "green book", "k": "green book education fantasy library reading libro verde" }, { "e": "\u{1F4D8}", "n": "blue book", "k": "blue book education fantasy library reading libro azul" }, { "e": "\u{1F4D9}", "n": "orange book", "k": "orange book education fantasy library reading libro naranja" }, { "e": "\u{1F4DA}\uFE0F", "n": "books", "k": "books book education fantasy knowledge library novels reading school study libros libro" }, { "e": "\u{1F4D3}", "n": "notebook", "k": "notebook cuaderno libreta" }, { "e": "\u{1F4D2}", "n": "ledger", "k": "ledger notebook libro de contabilidad cuaderno" }, { "e": "\u{1F4C3}", "n": "page with curl", "k": "page with curl document paper pagina doblada documento" }, { "e": "\u{1F4DC}", "n": "scroll", "k": "scroll paper pergamino de papel" }, { "e": "\u{1F4C4}", "n": "page facing up", "k": "page facing up document paper pagina hacia arriba anverso documento" }, { "e": "\u{1F4F0}", "n": "newspaper", "k": "newspaper communication news paper periodico diario" }, { "e": "\u{1F5DE}\uFE0F", "n": "rolled-up newspaper", "k": "rolled up newspaper news paper periodico enrollado noticias papel" }, { "e": "\u{1F4D1}", "n": "bookmark tabs", "k": "bookmark tabs mark marker marcadores pestanas" }, { "e": "\u{1F516}", "n": "bookmark", "k": "bookmark mark marcapaginas marcador" }, { "e": "\u{1F3F7}\uFE0F", "n": "label", "k": "label tag etiqueta" }, { "e": "\u{1FA99}", "n": "coin", "k": "coin dollar euro gold metal money rich silver treasure moneda dinero oro plata tesoro" }, { "e": "\u{1F4B0}\uFE0F", "n": "money bag", "k": "money bag bank bet billion cash cost dollar gold million moneybag paid paying pot rich win bolsa de dinero dolares" }, { "e": "\u{1F4B4}", "n": "yen banknote", "k": "yen banknote bank bill currency money note billete de banco dinero" }, { "e": "\u{1F4B5}", "n": "dollar banknote", "k": "dollar banknote bank bill currency money note billete de dolar banco dinero" }, { "e": "\u{1F4B6}", "n": "euro banknote", "k": "euro banknote 100 bank bill currency money note rich billete de banco dinero" }, { "e": "\u{1F4B7}", "n": "pound banknote", "k": "pound banknote bank bill billion cash currency money note pounds billete de libra banco dinero" }, { "e": "\u{1F4B8}", "n": "money with wings", "k": "money with wings bank banknote bill billion cash dollar fly million note pay billete con alas de banco dinero" }, { "e": "\u{1F4B3}\uFE0F", "n": "credit card", "k": "credit card bank cash charge money pay tarjeta de credito" }, { "e": "\u{1F9FE}", "n": "receipt", "k": "receipt accounting bookkeeping evidence invoice proof recibo contabilidad prueba teneduria de libros testimonio" }, { "e": "\u{1F4B9}", "n": "chart increasing with yen", "k": "chart increasing with yen bank currency graph growth market money rise trend upward mercado al alza alcista tabla" }, { "e": "\u2709\uFE0F", "n": "envelope", "k": "envelope e mail email letter sobre carta correo" }, { "e": "\u{1F4E7}", "n": "e-mail", "k": "e mail email letter correo electronico comunicacion sobre" }, { "e": "\u{1F4E8}", "n": "incoming envelope", "k": "incoming envelope delivering e mail email letter receive sent sobre entrante carta comunicacion correo electronico" }, { "e": "\u{1F4E9}", "n": "envelope with arrow", "k": "envelope with arrow communication down e mail email letter outgoing send sent sobre con flecha carta comunicacion correo electronico" }, { "e": "\u{1F4E4}\uFE0F", "n": "outbox tray", "k": "outbox tray box email letter mail sent bandeja de salida comunicacion correo enviado" }, { "e": "\u{1F4E5}\uFE0F", "n": "inbox tray", "k": "inbox tray box email letter mail receive zero bandeja de entrada comunicacion correo recibido" }, { "e": "\u{1F4E6}\uFE0F", "n": "package", "k": "package box communication delivery parcel shipping paquete caja" }, { "e": "\u{1F4EB}\uFE0F", "n": "closed mailbox with raised flag", "k": "closed mailbox with raised flag communication mail postbox buzon cerrado con la bandera levantada contenido" }, { "e": "\u{1F4EA}\uFE0F", "n": "closed mailbox with lowered flag", "k": "closed mailbox with lowered flag mail postbox buzon cerrado con la bandera bajada vacio" }, { "e": "\u{1F4EC}\uFE0F", "n": "open mailbox with raised flag", "k": "open mailbox with raised flag mail postbox buzon abierto con la bandera levantada contenido" }, { "e": "\u{1F4ED}\uFE0F", "n": "open mailbox with lowered flag", "k": "open mailbox with lowered flag mail postbox buzon abierto con la bandera bajada vacio" }, { "e": "\u{1F4EE}", "n": "postbox", "k": "postbox mail mailbox buzon cartas correo" }, { "e": "\u{1F5F3}\uFE0F", "n": "ballot box with ballot", "k": "ballot box with urna con papeleta voto" }, { "e": "\u270F\uFE0F", "n": "pencil", "k": "pencil lapiz escolar escribir lapicero" }, { "e": "\u2712\uFE0F", "n": "black nib", "k": "black nib pen pluma negra boligrafo escribir tinta" }, { "e": "\u{1F58B}\uFE0F", "n": "fountain pen", "k": "fountain pen estilografica boligrafo escribir pluma tinta" }, { "e": "\u{1F58A}\uFE0F", "n": "pen", "k": "pen ballpoint boligrafo boli escribir" }, { "e": "\u{1F58C}\uFE0F", "n": "paintbrush", "k": "paintbrush painting pincel pintar" }, { "e": "\u{1F58D}\uFE0F", "n": "crayon", "k": "crayon lapiz de cera" }, { "e": "\u{1F4DD}", "n": "memo", "k": "memo communication media notes pencil cuaderno de notas comunicacion" }, { "e": "\u{1F4BC}", "n": "briefcase", "k": "briefcase office maletin cartera documentos" }, { "e": "\u{1F4C1}", "n": "file folder", "k": "file folder carpeta de archivos archivo" }, { "e": "\u{1F4C2}", "n": "open file folder", "k": "open file folder carpeta de archivos abierta archivo" }, { "e": "\u{1F5C2}\uFE0F", "n": "card index dividers", "k": "card index dividers separador de fichas fichero" }, { "e": "\u{1F4C5}", "n": "calendar", "k": "calendar date calendario fecha" }, { "e": "\u{1F4C6}", "n": "tear-off calendar", "k": "tear off calendar calendario recortable fecha" }, { "e": "\u{1F5D2}\uFE0F", "n": "spiral notepad", "k": "spiral notepad note pad bloc de notas espiral cuaderno" }, { "e": "\u{1F5D3}\uFE0F", "n": "spiral calendar", "k": "spiral calendar pad calendario de espiral" }, { "e": "\u{1F4C7}", "n": "card index", "k": "card index old rolodex school organizador de fichas cartera ficha tarjetas" }, { "e": "\u{1F4C8}", "n": "chart increasing", "k": "chart increasing data graph growth right trend up upward grafica de evolucion ascendente grafico tendencia" }, { "e": "\u{1F4C9}", "n": "chart decreasing", "k": "chart decreasing data down downward graph negative trend grafica de evolucion descendente grafico tendencia" }, { "e": "\u{1F4CA}", "n": "bar chart", "k": "bar chart data graph grafico de barras" }, { "e": "\u{1F4CB}\uFE0F", "n": "clipboard", "k": "clipboard do list notes portapapeles papeles pinza tabla" }, { "e": "\u{1F4CC}", "n": "pushpin", "k": "pushpin collage pin chincheta tachuela" }, { "e": "\u{1F4CD}", "n": "round pushpin", "k": "round pushpin location map pin chincheta redonda" }, { "e": "\u{1F4CE}", "n": "paperclip", "k": "paperclip clip" }, { "e": "\u{1F587}\uFE0F", "n": "linked paperclips", "k": "linked paperclips link paperclip clips unidos union" }, { "e": "\u{1F4CF}", "n": "straight ruler", "k": "straight ruler angle edge math straightedge regla" }, { "e": "\u{1F4D0}", "n": "triangular ruler", "k": "triangular ruler angle math rule set slide triangle escuadra regla triangulo" }, { "e": "\u2702\uFE0F", "n": "scissors", "k": "scissors cut cutting paper tool tijeras cortar herramienta" }, { "e": "\u{1F5C3}\uFE0F", "n": "card file box", "k": "card file box archivador de tarjetas archivo caja" }, { "e": "\u{1F5C4}\uFE0F", "n": "file cabinet", "k": "file cabinet filing paper archivador archivos oficina organizador" }, { "e": "\u{1F5D1}\uFE0F", "n": "wastebasket", "k": "wastebasket can garbage trash waste papelera basura cubo" }, { "e": "\u{1F512}\uFE0F", "n": "locked", "k": "locked closed lock private candado cerrado cerrar" }, { "e": "\u{1F513}\uFE0F", "n": "unlocked", "k": "unlocked cracked lock open unlock candado abierto abrir" }, { "e": "\u{1F50F}", "n": "locked with pen", "k": "locked with pen ink lock nib privacy candado con pluma estilografica cerrado privacidad" }, { "e": "\u{1F510}", "n": "locked with key", "k": "locked with key bike closed lock secure candado cerrado y llave seguro" }, { "e": "\u{1F511}", "n": "key", "k": "key keys lock major password unlock llave contrasena" }, { "e": "\u{1F5DD}\uFE0F", "n": "old key", "k": "old key clue lock llave antigua" }, { "e": "\u{1F528}", "n": "hammer", "k": "hammer home improvement repairs tool martillo herramienta" }, { "e": "\u{1FA93}", "n": "axe", "k": "axe ax chop hatchet split wood hacha cortar dividir hachuela madera talar" }, { "e": "\u26CF\uFE0F", "n": "pick", "k": "pick hammer mining tool pico herramienta mina" }, { "e": "\u2692\uFE0F", "n": "hammer and pick", "k": "hammer and pick tool martillo y pico herramienta" }, { "e": "\u{1F6E0}\uFE0F", "n": "hammer and wrench", "k": "hammer and wrench spanner tool martillo y llave inglesa herramienta" }, { "e": "\u{1F5E1}\uFE0F", "n": "dagger", "k": "dagger knife weapon punal arma cuchillo daga" }, { "e": "\u2694\uFE0F", "n": "crossed swords", "k": "crossed swords weapon espadas cruzadas arma" }, { "e": "\u{1F4A3}\uFE0F", "n": "bomb", "k": "bomb boom comic dangerous explosion hot bomba emocion" }, { "e": "\u{1FA83}", "n": "boomerang", "k": "boomerang rebound repercussion weapon bumeran rebotar" }, { "e": "\u{1F3F9}", "n": "bow and arrow", "k": "bow and arrow archer archery sagittarius tool weapon zodiac arco y flecha arquero sagitario zodiaco" }, { "e": "\u{1F6E1}\uFE0F", "n": "shield", "k": "shield weapon escudo defensa" }, { "e": "\u{1FA9A}", "n": "carpentry saw", "k": "carpentry saw carpenter cut lumber tool trim sierra de carpinteria carpintero herramienta talar" }, { "e": "\u{1F527}", "n": "wrench", "k": "wrench home improvement spanner tool llave inglesa herramienta" }, { "e": "\u{1FA9B}", "n": "screwdriver", "k": "screwdriver flathead handy screw tool destornillador atornillador herramienta tornillo" }, { "e": "\u{1F529}", "n": "nut and bolt", "k": "nut and bolt home improvement tool tornillo y tuerca herramienta" }, { "e": "\u2699\uFE0F", "n": "gear", "k": "gear cog cogwheel tool engranaje herramienta" }, { "e": "\u{1F5DC}\uFE0F", "n": "clamp", "k": "clamp compress tool vice tornillo de banco herramienta" }, { "e": "\u2696\uFE0F", "n": "balance scale", "k": "balance scale justice libra scales tool weight zodiac balanza justicia peso zodiaco" }, { "e": "\u{1F9AF}", "n": "white cane", "k": "white cane accessibility blind probing baston accesibilidad ceguera ciega ciego invidente" }, { "e": "\u{1F517}", "n": "link", "k": "link links eslabon" }, { "e": "\u26D3\uFE0F\u200D\u{1F4A5}", "n": "broken chain", "k": "broken chain break breaking cuffs freedom cadena rota esposas libertad romper rotura" }, { "e": "\u26D3\uFE0F", "n": "chains", "k": "chains chain cadenas cadena" }, { "e": "\u{1FA9D}", "n": "hook", "k": "hook catch crook curve ensnare point selling gancho agarrar anzuelo atrapar garfio" }, { "e": "\u{1F9F0}", "n": "toolbox", "k": "toolbox box chest mechanic red tool caja de herramientas armario herramienta mecanico" }, { "e": "\u{1F9F2}", "n": "magnet", "k": "magnet attraction horseshoe magnetic negative positive shape u iman atraccion herradura magnetico" }, { "e": "\u{1FA9C}", "n": "ladder", "k": "ladder climb rung step escalera escalar escalerilla escalon peldano" }, { "e": "\u2697\uFE0F", "n": "alembic", "k": "alembic chemistry tool alambique herramienta quimica" }, { "e": "\u{1F9EA}", "n": "test tube", "k": "test tube chemist chemistry experiment lab science tubo de ensayo ciencia experimento laboratorio quimica quimico" }, { "e": "\u{1F9EB}", "n": "petri dish", "k": "petri dish bacteria biologist biology culture lab placa de bacterias biologia biologo cultivo laboratorio" }, { "e": "\u{1F9EC}", "n": "dna", "k": "dna biologist evolution gene genetics life adn biologo evolucion gen genetica vida" }, { "e": "\u{1F52C}", "n": "microscope", "k": "microscope experiment lab science tool microscopio instrumento laboratorio" }, { "e": "\u{1F52D}", "n": "telescope", "k": "telescope contact extraterrestrial science tool telescopio astronomia instrumento" }, { "e": "\u{1F4E1}", "n": "satellite antenna", "k": "satellite antenna aliens contact dish science antena de satelite comunicacion" }, { "e": "\u{1F489}", "n": "syringe", "k": "syringe doctor flu medicine needle shot sick tool vaccination jeringuilla aguja jeringa medicina medico" }, { "e": "\u{1FA78}", "n": "drop of blood", "k": "drop of blood bleed donation injury medicine menstruation gota de sangre donacion donar herida medicina" }, { "e": "\u{1F48A}", "n": "pill", "k": "pill doctor drugs medicated medicine pills sick vitamin pildora comprimido medicina medico pastilla" }, { "e": "\u{1FA79}", "n": "adhesive bandage", "k": "adhesive bandage tirita aposito" }, { "e": "\u{1FA7C}", "n": "crutch", "k": "crutch aid cane disability help hurt injured mobility stick muleta ayuda para la movilidad baston discapacidad lesion palo" }, { "e": "\u{1FA7A}", "n": "stethoscope", "k": "stethoscope doctor heart medicine estetoscopio corazon fonendoscopio latido medicina medico" }, { "e": "\u{1FA7B}", "n": "x-ray", "k": "x ray bones doctor medical skeleton skull xray radiografia doctora esqueleto huesos medico rayos" }, { "e": "\u{1F6AA}", "n": "door", "k": "door back closet front puerta" }, { "e": "\u{1F6D7}", "n": "elevator", "k": "elevator accessibility hoist lift ascensor accesibilidad elevador montacargas" }, { "e": "\u{1FA9E}", "n": "mirror", "k": "mirror makeup reflection reflector speculum espejo especulo reflejo" }, { "e": "\u{1FA9F}", "n": "window", "k": "window air frame fresh opening transparent view ventana abertura apertura cristal marco transparente vista" }, { "e": "\u{1F6CF}\uFE0F", "n": "bed", "k": "bed hotel sleep cama dormir" }, { "e": "\u{1F6CB}\uFE0F", "n": "couch and lamp", "k": "couch and lamp hotel sofa y lampara" }, { "e": "\u{1FA91}", "n": "chair", "k": "chair seat sit silla asiento sentarse" }, { "e": "\u{1F6BD}", "n": "toilet", "k": "toilet bathroom inodoro bano vater wc" }, { "e": "\u{1FAA0}", "n": "plunger", "k": "plunger cup force plumber poop suction toilet desatascador fontanero retrete servicio succion" }, { "e": "\u{1F6BF}", "n": "shower", "k": "shower water ducha agua bano" }, { "e": "\u{1F6C1}", "n": "bathtub", "k": "bathtub bath banera bano" }, { "e": "\u{1FAA4}", "n": "mouse trap", "k": "mouse trap bait cheese lure mousetrap snare trampa de ratones cebo cepo enganar ratonera raton" }, { "e": "\u{1FA92}", "n": "razor", "k": "razor sharp shave cuchilla de afeitar afeitado afilado barbero navaja" }, { "e": "\u{1F9F4}", "n": "lotion bottle", "k": "lotion bottle moisturizer shampoo sunscreen bote de crema champu hidratante protector solar" }, { "e": "\u{1F9F7}", "n": "safety pin", "k": "safety pin diaper punk rock imperdible panal" }, { "e": "\u{1F9F9}", "n": "broom", "k": "broom cleaning sweeping witch escoba barrer bruja fregar" }, { "e": "\u{1F9FA}", "n": "basket", "k": "basket farming laundry picnic cesta colada cosecha" }, { "e": "\u{1F9FB}", "n": "roll of paper", "k": "roll of paper toilet towels rollo de papel absorbente higienico" }, { "e": "\u{1FAA3}", "n": "bucket", "k": "bucket cask pail vat cubo balde barreno cuba cubeta" }, { "e": "\u{1F9FC}", "n": "soap", "k": "soap bar bathing clean cleaning lather soapdish jabon banarse enjabonarse jabonera lavarse pastilla" }, { "e": "\u{1FAE7}", "n": "bubbles", "k": "bubbles bubble burp clean floating pearl soap underwater burbujas bajo el agua eructar jabon limpiar" }, { "e": "\u{1FAA5}", "n": "toothbrush", "k": "toothbrush bathroom brush clean dental hygiene teeth toiletry cepillo de dientes higiene limpio servicio" }, { "e": "\u{1F9FD}", "n": "sponge", "k": "sponge absorbing cleaning porous soak esponja absorbente limpiar poroso" }, { "e": "\u{1F9EF}", "n": "fire extinguisher", "k": "fire extinguisher extinguish quench extintor apagar extinguir incendio" }, { "e": "\u{1F6D2}", "n": "shopping cart", "k": "shopping cart trolley carrito de la compra carro supermercado" }, { "e": "\u{1F6AC}", "n": "cigarette", "k": "cigarette smoking cigarrillo cigarro fumar" }, { "e": "\u26B0\uFE0F", "n": "coffin", "k": "coffin dead death vampire ataud muerte" }, { "e": "\u{1FAA6}", "n": "headstone", "k": "headstone cemetery dead grave graveyard memorial rip tomb tombstone lapida cementario estela sepulcro tumba" }, { "e": "\u26B1\uFE0F", "n": "funeral urn", "k": "funeral urn ashes death urna funeraria muerte" }, { "e": "\u{1F9FF}", "n": "nazar amulet", "k": "nazar amulet bead blue charm evil eye talisman ojo turco amuleto mal de" }, { "e": "\u{1FAAC}", "n": "hamsa", "k": "hamsa amulet fatima fortune guide hand mary miriam palm protect protection amuleto jamsa mano maria" }, { "e": "\u{1F5FF}", "n": "moai", "k": "moai face moyai statue stoneface travel estatua pascua" }, { "e": "\u{1FAA7}", "n": "placard", "k": "placard card demonstration notice picket plaque protest sign letrero anuncio aviso cartel pancarta poste" }, { "e": "\u{1FAAA}", "n": "identification card", "k": "identification card credentials document id license security carne de identidad conducir credenciales identificacion permiso seguridad" }] }, { "key": "symbols", "emojis": [{ "e": "\u{1F3E7}", "n": "ATM sign", "k": "atm sign automated bank cash money teller senal de cajero automatico banco" }, { "e": "\u{1F6AE}", "n": "litter in bin sign", "k": "litter in bin sign litterbin senal de usar papelera basura tirar la en" }, { "e": "\u{1F6B0}", "n": "potable water", "k": "potable water drinking agua" }, { "e": "\u267F\uFE0F", "n": "wheelchair symbol", "k": "wheelchair symbol access handicap simbolo de silla ruedas acceso senal" }, { "e": "\u{1F6B9}\uFE0F", "n": "men\u2019s room", "k": "men s room bathroom lavatory man restroom toilet wc aseo para hombres de caballeros bano servicio senal con un hombre" }, { "e": "\u{1F6BA}\uFE0F", "n": "women\u2019s room", "k": "women s room bathroom lavatory restroom toilet wc woman senal de aseo para mujeres senoras bano servicio con una mujer" }, { "e": "\u{1F6BB}", "n": "restroom", "k": "restroom bathroom lavatory toilet wc senal de aseos servicios" }, { "e": "\u{1F6BC}\uFE0F", "n": "baby symbol", "k": "baby symbol changing senal de bebe cambiar lactancia" }, { "e": "\u{1F6BE}", "n": "water closet", "k": "water closet bathroom lavatory restroom toilet wc aseos lavabo servicios" }, { "e": "\u{1F6C2}", "n": "passport control", "k": "passport control de pasaportes" }, { "e": "\u{1F6C3}", "n": "customs", "k": "customs packing aduana" }, { "e": "\u{1F6C4}", "n": "baggage claim", "k": "baggage claim arrived bags case checked journey packing plane ready travel trip recogida de equipajes equipaje maleta" }, { "e": "\u{1F6C5}", "n": "left luggage", "k": "left luggage baggage case locker consigna deposito equipaje servicio de en" }, { "e": "\u26A0\uFE0F", "n": "warning", "k": "warning caution advertencia cuidado senal" }, { "e": "\u{1F6B8}", "n": "children crossing", "k": "children crossing child pedestrian traffic ninos cruzando senal" }, { "e": "\u26D4\uFE0F", "n": "no entry", "k": "no entry do fail forbidden not pass prohibited traffic direccion prohibida prohibido senal de" }, { "e": "\u{1F6AB}", "n": "prohibited", "k": "prohibited entry forbidden no not smoke prohibido entrar pasar prohibicion" }, { "e": "\u{1F6B3}", "n": "no bicycles", "k": "no bicycles bicycle bike forbidden not prohibited bicicletas prohibidas bicicleta prohibido vehiculo" }, { "e": "\u{1F6AD}\uFE0F", "n": "no smoking", "k": "no smoking forbidden not prohibited smoke prohibido fumar senal" }, { "e": "\u{1F6AF}", "n": "no littering", "k": "no littering forbidden litter not prohibited prohibido tirar basura senal de" }, { "e": "\u{1F6B1}", "n": "non-potable water", "k": "non potable water dry drinking prohibited agua no" }, { "e": "\u{1F6B7}", "n": "no pedestrians", "k": "no pedestrians forbidden not pedestrian prohibited prohibido el paso de peatones peaton senal" }, { "e": "\u{1F4F5}", "n": "no mobile phones", "k": "no mobile phones cell forbidden not phone prohibited telephone prohibido el uso de moviles movil hacer llamadas telefono" }, { "e": "\u{1F51E}", "n": "no one under eighteen", "k": "no one under eighteen 18 age forbidden not prohibited restriction underage prohibido para menos de anos apto menores" }, { "e": "\u2622\uFE0F", "n": "radioactive", "k": "radioactive sign radiactivo radiactividad radioactividad radioactivo senal" }, { "e": "\u2623\uFE0F", "n": "biohazard", "k": "biohazard sign riesgo biologico peligro senal" }, { "e": "\u2B06\uFE0F", "n": "up arrow", "k": "up arrow cardinal direction north flecha hacia arriba direccion norte" }, { "e": "\u2197\uFE0F", "n": "up-right arrow", "k": "up right arrow direction intercardinal northeast flecha hacia la esquina superior derecha arriba direccion noreste" }, { "e": "\u27A1\uFE0F", "n": "right arrow", "k": "right arrow cardinal direction east flecha hacia la derecha direccion este" }, { "e": "\u2198\uFE0F", "n": "down-right arrow", "k": "down right arrow direction intercardinal southeast flecha hacia la esquina inferior derecha abajo direccion sudeste" }, { "e": "\u2B07\uFE0F", "n": "down arrow", "k": "down arrow cardinal direction south flecha hacia abajo direccion sur" }, { "e": "\u2199\uFE0F", "n": "down-left arrow", "k": "down left arrow direction intercardinal southwest flecha hacia la esquina inferior izquierda abajo direccion suroeste" }, { "e": "\u2B05\uFE0F", "n": "left arrow", "k": "left arrow cardinal direction west flecha hacia la izquierda oeste" }, { "e": "\u2196\uFE0F", "n": "up-left arrow", "k": "up left arrow direction intercardinal northwest flecha hacia la esquina superior izquierda arriba direccion noroeste" }, { "e": "\u2195\uFE0F", "n": "up-down arrow", "k": "up down arrow flecha arriba y abajo direccion" }, { "e": "\u2194\uFE0F", "n": "left-right arrow", "k": "left right arrow flecha izquierda y derecha direccion" }, { "e": "\u21A9\uFE0F", "n": "right arrow curving left", "k": "right arrow curving left flecha derecha curvandose a la izquierda curva direccion" }, { "e": "\u21AA\uFE0F", "n": "left arrow curving right", "k": "left arrow curving right flecha izquierda curvandose a la derecha curva direccion" }, { "e": "\u2934\uFE0F", "n": "right arrow curving up", "k": "right arrow curving up flecha derecha curvandose hacia arriba curva direccion" }, { "e": "\u2935\uFE0F", "n": "right arrow curving down", "k": "right arrow curving down flecha derecha curvandose hacia abajo curva direccion" }, { "e": "\u{1F503}", "n": "clockwise vertical arrows", "k": "clockwise vertical arrows arrow refresh reload flechas verticales en sentido horario senal de recarga" }, { "e": "\u{1F504}", "n": "counterclockwise arrows button", "k": "counterclockwise arrows button again anticlockwise arrow deja refresh rewindershins vu flechas en sentido antihorario direccion senal de recarga" }, { "e": "\u{1F519}", "n": "BACK arrow", "k": "back arrow flecha atras con izquierda a la" }, { "e": "\u{1F51A}", "n": "END arrow", "k": "end arrow flecha final con izquierda a la" }, { "e": "\u{1F51B}", "n": "ON! arrow", "k": "on arrow mark flecha de doble punta con la palabra encima senal" }, { "e": "\u{1F51C}", "n": "SOON arrow", "k": "soon arrow brb omw flecha con a la derecha" }, { "e": "\u{1F51D}", "n": "TOP arrow", "k": "top arrow homie up flecha arriba hacia con" }, { "e": "\u{1F6D0}", "n": "place of worship", "k": "place of worship pray religion lugar de culto" }, { "e": "\u269B\uFE0F", "n": "atom symbol", "k": "atom symbol atheist simbolo de atomo" }, { "e": "\u{1F549}\uFE0F", "n": "om", "k": "om hindu religion" }, { "e": "\u2721\uFE0F", "n": "star of David", "k": "star of david jew jewish judaism religion estrella de judaismo judio" }, { "e": "\u2638\uFE0F", "n": "wheel of dharma", "k": "wheel of dharma buddhist religion rueda del budismo" }, { "e": "\u262F\uFE0F", "n": "yin yang", "k": "yin yang difficult lives religion tao taoist total yinyang taoismo" }, { "e": "\u271D\uFE0F", "n": "latin cross", "k": "latin cross christ christian religion cruz latina cristianismo" }, { "e": "\u2626\uFE0F", "n": "orthodox cross", "k": "orthodox cross christian religion cruz ortodoxa" }, { "e": "\u262A\uFE0F", "n": "star and crescent", "k": "star and crescent islam muslim ramadan religion media luna y estrella" }, { "e": "\u262E\uFE0F", "n": "peace symbol", "k": "peace symbol healing peaceful simbolo de la paz" }, { "e": "\u{1F54E}", "n": "menorah", "k": "menorah candelabrum candlestick hanukkah jewish judaism religion menora candelabro" }, { "e": "\u{1F52F}", "n": "dotted six-pointed star", "k": "dotted six pointed star fortune jewish judaism estrella de seis puntas adivinacion buena fortuna" }, { "e": "\u{1FAAF}", "n": "khanda", "k": "khanda deg fateh khalsa religion sikh sikhism tegh sij sijismo" }, { "e": "\u2648\uFE0F", "n": "Aries", "k": "aries horoscope ram zodiac carnero horoscopo zodiaco" }, { "e": "\u2649\uFE0F", "n": "Taurus", "k": "taurus bull horoscope ox zodiac tauro buey horoscopo toro zodiaco" }, { "e": "\u264A\uFE0F", "n": "Gemini", "k": "gemini horoscope twins zodiac geminis gemelos horoscopo zodiaco" }, { "e": "\u264B\uFE0F", "n": "Cancer", "k": "cancer crab horoscope zodiac cangrejo horoscopo zodiaco" }, { "e": "\u264C\uFE0F", "n": "Leo", "k": "leo horoscope lion zodiac horoscopo leon zodiaco" }, { "e": "\u264D\uFE0F", "n": "Virgo", "k": "virgo horoscope zodiac horoscopo zodiaco" }, { "e": "\u264E\uFE0F", "n": "Libra", "k": "libra balance horoscope justice scales zodiac balanza escala horoscopo justicia zodiaco" }, { "e": "\u264F\uFE0F", "n": "Scorpio", "k": "scorpio horoscope scorpion scorpius zodiac escorpio escorpion horoscopo zodiaco" }, { "e": "\u2650\uFE0F", "n": "Sagittarius", "k": "sagittarius archer horoscope zodiac sagitario arquero horoscopo zodiaco" }, { "e": "\u2651\uFE0F", "n": "Capricorn", "k": "capricorn goat horoscope zodiac capricornio cabra horoscopo zodiaco" }, { "e": "\u2652\uFE0F", "n": "Aquarius", "k": "aquarius bearer horoscope water zodiac acuario agua horoscopo zodiaco" }, { "e": "\u2653\uFE0F", "n": "Pisces", "k": "pisces fish horoscope zodiac piscis horoscopo pescado pez zodiaco" }, { "e": "\u26CE\uFE0F", "n": "Ophiuchus", "k": "ophiuchus bearer serpent snake zodiac ofiuco horoscopo portador serpiente zodiaco" }, { "e": "\u{1F500}", "n": "shuffle tracks button", "k": "shuffle tracks button arrow crossed reproduccion aleatoria cruzado flechas entrecruzadas" }, { "e": "\u{1F501}", "n": "repeat button", "k": "repeat button arrow clockwise repetir flechas repeticion" }, { "e": "\u{1F502}", "n": "repeat single button", "k": "repeat single button arrow clockwise once repetir una vez flechas repeticion uno" }, { "e": "\u25B6\uFE0F", "n": "play button", "k": "play button arrow right triangle reproducir boton de reproduccion flecha triangulo" }, { "e": "\u23E9\uFE0F", "n": "fast-forward button", "k": "fast forward button arrow double avance rapido avanzar doble flecha" }, { "e": "\u23ED\uFE0F", "n": "next track button", "k": "next track button arrow scene triangle pista siguiente raya vertical triangulos" }, { "e": "\u23EF\uFE0F", "n": "play or pause button", "k": "play or pause button arrow right triangle reproducir o pausa triangulo" }, { "e": "\u25C0\uFE0F", "n": "reverse button", "k": "reverse button arrow left triangle retroceso izquierda triangulo" }, { "e": "\u23EA\uFE0F", "n": "fast reverse button", "k": "fast reverse button arrow double rewind retroceso rapido flecha doble a la izquierda rebobinado rebobinar" }, { "e": "\u23EE\uFE0F", "n": "last track button", "k": "last track button arrow previous scene triangle pista anterior atras escena triangulo" }, { "e": "\u{1F53C}", "n": "upwards button", "k": "upwards button arrow red up triangulo hacia arriba boton" }, { "e": "\u23EB\uFE0F", "n": "fast up button", "k": "fast up button arrow double triangulo doble hacia arriba flecha" }, { "e": "\u{1F53D}", "n": "downwards button", "k": "downwards button arrow down red triangulo hacia abajo boton" }, { "e": "\u23EC\uFE0F", "n": "fast down button", "k": "fast down button arrow double triangulo doble hacia abajo" }, { "e": "\u23F8\uFE0F", "n": "pause button", "k": "pause button bar double vertical pausa barras boton" }, { "e": "\u23F9\uFE0F", "n": "stop button", "k": "stop button square detener boton cuadrado parar" }, { "e": "\u23FA\uFE0F", "n": "record button", "k": "record button circle grabar boton circulo" }, { "e": "\u23CF\uFE0F", "n": "eject button", "k": "eject button expulsar boton" }, { "e": "\u{1F3A6}", "n": "cinema", "k": "cinema camera film movie cine entretenimiento pelicula" }, { "e": "\u{1F505}", "n": "dim button", "k": "dim button brightness low brillo bajo senal de tenue" }, { "e": "\u{1F506}", "n": "bright button", "k": "bright button brightness light brillo alto brillante senal de" }, { "e": "\u{1F4F6}", "n": "antenna bars", "k": "antenna bars bar cell communication mobile phone signal telephone barras de cobertura antena celular movil senal telefono" }, { "e": "\u{1F6DC}", "n": "wireless", "k": "wireless broadband computer connectivity hotspot internet network router smartphone wi fi wifi wlan conexion inalambrica red" }, { "e": "\u{1F4F3}", "n": "vibration mode", "k": "vibration mode cell communication mobile phone telephone modo vibracion movil telefono celular" }, { "e": "\u{1F4F4}", "n": "mobile phone off", "k": "mobile phone off cell telephone telefono movil apagado celular" }, { "e": "\u2640\uFE0F", "n": "female sign", "k": "female sign woman signo femenino mujer simbolo" }, { "e": "\u2642\uFE0F", "n": "male sign", "k": "male sign man signo masculino hombre simbolo" }, { "e": "\u26A7\uFE0F", "n": "transgender symbol", "k": "transgender symbol simbolo de transgenero" }, { "e": "\u2716\uFE0F", "n": "multiply", "k": "multiply cancel multiplication sign x multiplicacion cancelar marca prohibido signo de" }, { "e": "\u2795\uFE0F", "n": "plus", "k": "plus mas signo suma" }, { "e": "\u2796\uFE0F", "n": "minus", "k": "minus heavy math sign menos resta signo" }, { "e": "\u2797\uFE0F", "n": "divide", "k": "divide division heavy math sign signo de" }, { "e": "\u{1F7F0}", "n": "heavy equals sign", "k": "heavy equals sign answer equal equality math signo igual grueso equivalencia igualdad matematicas mates" }, { "e": "\u267E\uFE0F", "n": "infinity", "k": "infinity forever unbounded universal infinito ilimitado siempre" }, { "e": "\u203C\uFE0F", "n": "double exclamation mark", "k": "double exclamation mark bangbang punctuation exclamacion doble puntuacion sorpresa" }, { "e": "\u2049\uFE0F", "n": "exclamation question mark", "k": "exclamation question mark interrobang punctuation exclamacion e interrogacion" }, { "e": "\u2753\uFE0F", "n": "red question mark", "k": "red question mark punctuation interrogacion roja pregunta puntuacion signo de" }, { "e": "\u2754\uFE0F", "n": "white question mark", "k": "white question mark outlined punctuation interrogacion blanca pregunta puntuacion" }, { "e": "\u2755\uFE0F", "n": "white exclamation mark", "k": "white exclamation mark outlined punctuation exclamacion blanca puntuacion" }, { "e": "\u2757\uFE0F", "n": "red exclamation mark", "k": "red exclamation mark punctuation exclamacion roja puntuacion signo de" }, { "e": "\u3030\uFE0F", "n": "wavy dash", "k": "wavy dash punctuation guion ondulado marca de sonido largo" }, { "e": "\u{1F4B1}", "n": "currency exchange", "k": "currency exchange bank money cambio de divisas dinero divisa moneda" }, { "e": "\u{1F4B2}", "n": "heavy dollar sign", "k": "heavy dollar sign billion cash charge currency million money pay simbolo de dolar dinero" }, { "e": "\u2695\uFE0F", "n": "medical symbol", "k": "medical symbol aesculapius medicine staff simbolo de medicina asclepio esculapio serpiente" }, { "e": "\u267B\uFE0F", "n": "recycling symbol", "k": "recycling symbol recycle simbolo de reciclaje reciclar senal universal solido" }, { "e": "\u269C\uFE0F", "n": "fleur-de-lis", "k": "fleur de lis knights flor" }, { "e": "\u{1F531}", "n": "trident emblem", "k": "trident emblem anchor poseidon ship tool emblema de tridente ancla" }, { "e": "\u{1F4DB}", "n": "name badge", "k": "name badge etiqueta identificativa nombre" }, { "e": "\u{1F530}", "n": "Japanese symbol for beginner", "k": "japanese symbol for beginner chevron green leaf tool yellow simbolo japones para principiante amarillo verde" }, { "e": "\u2B55\uFE0F", "n": "hollow red circle", "k": "hollow red circle heavy large o circulo rojo hueco aro" }, { "e": "\u2705\uFE0F", "n": "check mark button", "k": "check mark button checked checkmark complete completed done fixed tick boton de marca verificacion seleccion" }, { "e": "\u2611\uFE0F", "n": "check box with check", "k": "check box with ballot checked done off tick casilla con marca de verificacion seleccion" }, { "e": "\u2714\uFE0F", "n": "check mark", "k": "check mark checked checkmark done heavy tick marca de verificacion seleccion" }, { "e": "\u274C\uFE0F", "n": "cross mark", "k": "cross mark cancel multiplication multiply x marca de cruz cancelar tachado tachar" }, { "e": "\u274E\uFE0F", "n": "cross mark button", "k": "cross mark button multiplication multiply square x boton con marca de cruz casilla" }, { "e": "\u27B0\uFE0F", "n": "curly loop", "k": "curly loop curl bucle giro tirabuzon" }, { "e": "\u27BF\uFE0F", "n": "double curly loop", "k": "double curly loop curl bucle doble" }, { "e": "\u303D\uFE0F", "n": "part alternation mark", "k": "part alternation mark marca de alternancia" }, { "e": "\u2733\uFE0F", "n": "eight-spoked asterisk", "k": "eight spoked asterisk asterisco de ocho puntas" }, { "e": "\u2734\uFE0F", "n": "eight-pointed star", "k": "eight pointed star estrella de ocho puntas" }, { "e": "\u2747\uFE0F", "n": "sparkle", "k": "sparkle chispa" }, { "e": "\xA9\uFE0F", "n": "copyright", "k": "copyright c simbolo" }, { "e": "\xAE\uFE0F", "n": "registered", "k": "registered r marca registrada simbolo de" }, { "e": "\u2122\uFE0F", "n": "trade mark", "k": "trade mark tm trademark simbolo de marca comercial" }, { "e": "#\uFE0F\u20E3", "n": "keycap: #", "k": "keycap teclas" }, { "e": "*\uFE0F\u20E3", "n": "keycap: *", "k": "keycap teclas" }, { "e": "0\uFE0F\u20E3", "n": "keycap: 0", "k": "keycap 0 zero tecla cero" }, { "e": "1\uFE0F\u20E3", "n": "keycap: 1", "k": "keycap 1 one tecla uno" }, { "e": "2\uFE0F\u20E3", "n": "keycap: 2", "k": "keycap 2 two tecla dos" }, { "e": "3\uFE0F\u20E3", "n": "keycap: 3", "k": "keycap 3 three tecla tres" }, { "e": "4\uFE0F\u20E3", "n": "keycap: 4", "k": "keycap 4 four tecla cuatro" }, { "e": "5\uFE0F\u20E3", "n": "keycap: 5", "k": "keycap 5 five tecla cinco" }, { "e": "6\uFE0F\u20E3", "n": "keycap: 6", "k": "keycap 6 six tecla seis" }, { "e": "7\uFE0F\u20E3", "n": "keycap: 7", "k": "keycap 7 seven tecla siete" }, { "e": "8\uFE0F\u20E3", "n": "keycap: 8", "k": "keycap 8 eight tecla ocho" }, { "e": "9\uFE0F\u20E3", "n": "keycap: 9", "k": "keycap 9 nine tecla nueve" }, { "e": "\u{1F51F}", "n": "keycap: 10", "k": "keycap 10 teclas" }, { "e": "\u{1F520}", "n": "input latin uppercase", "k": "input latin uppercase abcd letters letras latinas mayusculas" }, { "e": "\u{1F521}", "n": "input latin lowercase", "k": "input latin lowercase abcd letters letras latinas minusculas" }, { "e": "\u{1F522}", "n": "input numbers", "k": "input numbers 1234 numeros digitos" }, { "e": "\u{1F523}", "n": "input symbols", "k": "input symbols simbolos" }, { "e": "\u{1F524}", "n": "input latin letters", "k": "input latin letters abc alphabet alfabeto latino" }, { "e": "\u{1F170}\uFE0F", "n": "A button (blood type)", "k": "a button blood type grupo sanguineo tipo" }, { "e": "\u{1F18E}", "n": "AB button (blood type)", "k": "ab button blood type grupo sanguineo tipo" }, { "e": "\u{1F171}\uFE0F", "n": "B button (blood type)", "k": "b button blood type grupo sanguineo tipo" }, { "e": "\u{1F191}", "n": "CL button", "k": "cl button borrar simbolo" }, { "e": "\u{1F192}", "n": "COOL button", "k": "cool button boton mola" }, { "e": "\u{1F193}", "n": "FREE button", "k": "free button boton gratis simbolo" }, { "e": "\u2139\uFE0F", "n": "information", "k": "information i informacion" }, { "e": "\u{1F194}", "n": "ID button", "k": "id button identity simbolo de identificacion identidad" }, { "e": "\u24C2\uFE0F", "n": "circled M", "k": "circled m circle en circulo" }, { "e": "\u{1F195}", "n": "NEW button", "k": "new button boton nuevo" }, { "e": "\u{1F196}", "n": "NG button", "k": "ng button boton nuevo" }, { "e": "\u{1F17E}\uFE0F", "n": "O button (blood type)", "k": "o button blood type grupo sanguineo tipo" }, { "e": "\u{1F197}", "n": "OK button", "k": "ok button okay boton" }, { "e": "\u{1F17F}\uFE0F", "n": "P button", "k": "p button parking aparcamiento" }, { "e": "\u{1F198}", "n": "SOS button", "k": "sos button help simbolo de socorro ayuda" }, { "e": "\u{1F199}", "n": "UP! button", "k": "up button mark boton arriba informacion novedad simbolo" }, { "e": "\u{1F19A}", "n": "VS button", "k": "vs button versus boton contra frente a simbolo" }, { "e": "\u{1F201}", "n": "Japanese \u201Chere\u201D button", "k": "japanese here button katakana ideograma japones para aqui" }, { "e": "\u{1F202}\uFE0F", "n": "Japanese \u201Cservice charge\u201D button", "k": "japanese service charge button katakana ideograma japones para de cortesia" }, { "e": "\u{1F237}\uFE0F", "n": "Japanese \u201Cmonthly amount\u201D button", "k": "japanese monthly amount button ideograph ideograma japones para cantidad mensual kanji" }, { "e": "\u{1F236}", "n": "Japanese \u201Cnot free of charge\u201D button", "k": "japanese not free of charge button ideograph ideograma japones para de pago kanji" }, { "e": "\u{1F22F}\uFE0F", "n": "Japanese \u201Creserved\u201D button", "k": "japanese reserved button ideograph ideograma japones para reservado kanji" }, { "e": "\u{1F250}", "n": "Japanese \u201Cbargain\u201D button", "k": "japanese bargain button ideograph ideograma japones para ganga kanji" }, { "e": "\u{1F239}", "n": "Japanese \u201Cdiscount\u201D button", "k": "japanese discount button ideograph ideograma japones para descuento kanji" }, { "e": "\u{1F21A}\uFE0F", "n": "Japanese \u201Cfree of charge\u201D button", "k": "japanese free of charge button ideograph ideograma japones para gratis kanji" }, { "e": "\u{1F232}", "n": "Japanese \u201Cprohibited\u201D button", "k": "japanese prohibited button ideograph ideograma japones para prohibido kanji" }, { "e": "\u{1F251}", "n": "Japanese \u201Cacceptable\u201D button", "k": "japanese acceptable button ideograph ideograma japones para aceptable kanji" }, { "e": "\u{1F238}", "n": "Japanese \u201Capplication\u201D button", "k": "japanese application button ideograph ideograma japones para aplicacion kanji" }, { "e": "\u{1F234}", "n": "Japanese \u201Cpassing grade\u201D button", "k": "japanese passing grade button ideograph ideograma japones para aprobado kanji" }, { "e": "\u{1F233}", "n": "Japanese \u201Cvacancy\u201D button", "k": "japanese vacancy button ideograph ideograma japones para vacante kanji" }, { "e": "\u3297\uFE0F", "n": "Japanese \u201Ccongratulations\u201D button", "k": "japanese congratulations button ideograph ideograma japones para enhorabuena kanji" }, { "e": "\u3299\uFE0F", "n": "Japanese \u201Csecret\u201D button", "k": "japanese secret button ideograph ideograma japones para secreto kanji" }, { "e": "\u{1F23A}", "n": "Japanese \u201Copen for business\u201D button", "k": "japanese open for business button ideograph ideograma japones para abierto kanji" }, { "e": "\u{1F235}", "n": "Japanese \u201Cno vacancy\u201D button", "k": "japanese no vacancy button ideograph ideograma japones para completo kanji lleno" }, { "e": "\u{1F534}", "n": "red circle", "k": "red circle geometric circulo rojo geometria" }, { "e": "\u{1F7E0}", "n": "orange circle", "k": "orange circle circulo naranja" }, { "e": "\u{1F7E1}", "n": "yellow circle", "k": "yellow circle circulo amarillo" }, { "e": "\u{1F7E2}", "n": "green circle", "k": "green circle circulo verde" }, { "e": "\u{1F535}", "n": "blue circle", "k": "blue circle geometric circulo azul geometria" }, { "e": "\u{1F7E3}", "n": "purple circle", "k": "purple circle circulo morado lila purpura" }, { "e": "\u{1F7E4}", "n": "brown circle", "k": "brown circle circulo marron" }, { "e": "\u26AB\uFE0F", "n": "black circle", "k": "black circle geometric circulo negro geometria" }, { "e": "\u26AA\uFE0F", "n": "white circle", "k": "white circle geometric circulo blanco geometria" }, { "e": "\u{1F7E5}", "n": "red square", "k": "red square card penalty cuadrado rojo" }, { "e": "\u{1F7E7}", "n": "orange square", "k": "orange square cuadrado naranja" }, { "e": "\u{1F7E8}", "n": "yellow square", "k": "yellow square card penalty cuadrado amarillo" }, { "e": "\u{1F7E9}", "n": "green square", "k": "green square cuadrado verde" }, { "e": "\u{1F7E6}", "n": "blue square", "k": "blue square cuadrado azul" }, { "e": "\u{1F7EA}", "n": "purple square", "k": "purple square cuadrado morado lila purpura" }, { "e": "\u{1F7EB}", "n": "brown square", "k": "brown square cuadrado marron" }, { "e": "\u2B1B\uFE0F", "n": "black large square", "k": "black large square geometric cuadrado negro grande geometria" }, { "e": "\u2B1C\uFE0F", "n": "white large square", "k": "white large square geometric cuadrado blanco grande geometria" }, { "e": "\u25FC\uFE0F", "n": "black medium square", "k": "black medium square geometric cuadrado negro mediano geometria" }, { "e": "\u25FB\uFE0F", "n": "white medium square", "k": "white medium square geometric cuadrado blanco mediano geometria" }, { "e": "\u25FE\uFE0F", "n": "black medium-small square", "k": "black medium small square geometric cuadrado negro mediano pequeno geometria" }, { "e": "\u25FD\uFE0F", "n": "white medium-small square", "k": "white medium small square geometric cuadrado blanco mediano pequeno geometria" }, { "e": "\u25AA\uFE0F", "n": "black small square", "k": "black small square geometric cuadrado negro pequeno geometria" }, { "e": "\u25AB\uFE0F", "n": "white small square", "k": "white small square geometric cuadrado blanco pequeno geometria" }, { "e": "\u{1F536}", "n": "large orange diamond", "k": "large orange diamond geometric rombo naranja grande geometria" }, { "e": "\u{1F537}", "n": "large blue diamond", "k": "large blue diamond geometric rombo azul grande geometria" }, { "e": "\u{1F538}", "n": "small orange diamond", "k": "small orange diamond geometric rombo naranja pequeno geometria" }, { "e": "\u{1F539}", "n": "small blue diamond", "k": "small blue diamond geometric rombo azul pequeno geometria" }, { "e": "\u{1F53A}", "n": "red triangle pointed up", "k": "red triangle pointed up geometric triangulo rojo hacia arriba geometria" }, { "e": "\u{1F53B}", "n": "red triangle pointed down", "k": "red triangle pointed down geometric triangulo rojo hacia abajo geometria" }, { "e": "\u{1F4A0}", "n": "diamond with a dot", "k": "diamond with a dot comic geometric rombo con petalo flor geometria" }, { "e": "\u{1F518}", "n": "radio button", "k": "radio button geometric boton de opcion" }, { "e": "\u{1F533}", "n": "white square button", "k": "white square button geometric outlined boton cuadrado con borde blanco" }, { "e": "\u{1F532}", "n": "black square button", "k": "black square button geometric boton cuadrado con borde negro" }] }, { "key": "flags", "emojis": [{ "e": "\u{1F3C1}", "n": "chequered flag", "k": "chequered flag checkered finish flags game race racing sport win bandera de cuadros carreras deporte motor" }, { "e": "\u{1F6A9}", "n": "triangular flag", "k": "triangular flag construction golf post bandera de localizacion informativa" }, { "e": "\u{1F38C}", "n": "crossed flags", "k": "crossed flags celebration cross japanese banderas cruzadas celebracion japon" }, { "e": "\u{1F3F4}", "n": "black flag", "k": "black flag waving bandera negra ondear" }, { "e": "\u{1F3F3}\uFE0F", "n": "white flag", "k": "white flag waving bandera blanca ondear" }, { "e": "\u{1F3F3}\uFE0F\u200D\u{1F308}", "n": "rainbow flag", "k": "rainbow flag bisexual gay genderqueer glbt glbtq lesbian lgbt lgbtq lgbtqia pride queer trans transgender bandera del arcoiris" }, { "e": "\u{1F3F3}\uFE0F\u200D\u26A7\uFE0F", "n": "transgender flag", "k": "transgender flag blue light pink white bandera transgenero azul blanco lgtb rosa" }, { "e": "\u{1F3F4}\u200D\u2620\uFE0F", "n": "pirate flag", "k": "pirate flag jolly plunder roger treasure bandera pirata botin tesoro" }, { "e": "\u{1F1E6}\u{1F1E8}", "n": "flag: Ascension Island", "k": "flag ascension island ac bandera isla de la" }, { "e": "\u{1F1E6}\u{1F1E9}", "n": "flag: Andorra", "k": "flag andorra ad bandera" }, { "e": "\u{1F1E6}\u{1F1EA}", "n": "flag: United Arab Emirates", "k": "flag united arab emirates ae bandera emiratos arabes unidos" }, { "e": "\u{1F1E6}\u{1F1EB}", "n": "flag: Afghanistan", "k": "flag afghanistan af bandera afganistan" }, { "e": "\u{1F1E6}\u{1F1EC}", "n": "flag: Antigua & Barbuda", "k": "flag antigua barbuda ag bandera y" }, { "e": "\u{1F1E6}\u{1F1EE}", "n": "flag: Anguilla", "k": "flag anguilla ai bandera anguila" }, { "e": "\u{1F1E6}\u{1F1F1}", "n": "flag: Albania", "k": "flag albania al bandera" }, { "e": "\u{1F1E6}\u{1F1F2}", "n": "flag: Armenia", "k": "flag armenia am bandera" }, { "e": "\u{1F1E6}\u{1F1F4}", "n": "flag: Angola", "k": "flag angola ao bandera" }, { "e": "\u{1F1E6}\u{1F1F6}", "n": "flag: Antarctica", "k": "flag antarctica aq bandera antartida" }, { "e": "\u{1F1E6}\u{1F1F7}", "n": "flag: Argentina", "k": "flag argentina ar bandera" }, { "e": "\u{1F1E6}\u{1F1F8}", "n": "flag: American Samoa", "k": "flag american samoa as bandera americana" }, { "e": "\u{1F1E6}\u{1F1F9}", "n": "flag: Austria", "k": "flag austria at bandera" }, { "e": "\u{1F1E6}\u{1F1FA}", "n": "flag: Australia", "k": "flag australia au bandera" }, { "e": "\u{1F1E6}\u{1F1FC}", "n": "flag: Aruba", "k": "flag aruba aw bandera" }, { "e": "\u{1F1E6}\u{1F1FD}", "n": "flag: \xC5land Islands", "k": "flag aland islands ax bandera islas" }, { "e": "\u{1F1E6}\u{1F1FF}", "n": "flag: Azerbaijan", "k": "flag azerbaijan az bandera azerbaiyan" }, { "e": "\u{1F1E7}\u{1F1E6}", "n": "flag: Bosnia & Herzegovina", "k": "flag bosnia herzegovina ba bandera y" }, { "e": "\u{1F1E7}\u{1F1E7}", "n": "flag: Barbados", "k": "flag barbados bb bandera" }, { "e": "\u{1F1E7}\u{1F1E9}", "n": "flag: Bangladesh", "k": "flag bangladesh bd bandera banglades" }, { "e": "\u{1F1E7}\u{1F1EA}", "n": "flag: Belgium", "k": "flag belgium be bandera belgica" }, { "e": "\u{1F1E7}\u{1F1EB}", "n": "flag: Burkina Faso", "k": "flag burkina faso bf bandera" }, { "e": "\u{1F1E7}\u{1F1EC}", "n": "flag: Bulgaria", "k": "flag bulgaria bg bandera" }, { "e": "\u{1F1E7}\u{1F1ED}", "n": "flag: Bahrain", "k": "flag bahrain bh bandera barein" }, { "e": "\u{1F1E7}\u{1F1EE}", "n": "flag: Burundi", "k": "flag burundi bi bandera" }, { "e": "\u{1F1E7}\u{1F1EF}", "n": "flag: Benin", "k": "flag benin bj bandera" }, { "e": "\u{1F1E7}\u{1F1F1}", "n": "flag: St. Barth\xE9lemy", "k": "flag st barthelemy bl bandera san bartolome" }, { "e": "\u{1F1E7}\u{1F1F2}", "n": "flag: Bermuda", "k": "flag bermuda bm bandera bermudas" }, { "e": "\u{1F1E7}\u{1F1F3}", "n": "flag: Brunei", "k": "flag brunei bn bandera" }, { "e": "\u{1F1E7}\u{1F1F4}", "n": "flag: Bolivia", "k": "flag bolivia bo bandera" }, { "e": "\u{1F1E7}\u{1F1F6}", "n": "flag: Caribbean Netherlands", "k": "flag caribbean netherlands bq bandera caribe neerlandes" }, { "e": "\u{1F1E7}\u{1F1F7}", "n": "flag: Brazil", "k": "flag brazil br bandera brasil" }, { "e": "\u{1F1E7}\u{1F1F8}", "n": "flag: Bahamas", "k": "flag bahamas bs bandera" }, { "e": "\u{1F1E7}\u{1F1F9}", "n": "flag: Bhutan", "k": "flag bhutan bt bandera butan" }, { "e": "\u{1F1E7}\u{1F1FB}", "n": "flag: Bouvet Island", "k": "flag bouvet island bv bandera isla" }, { "e": "\u{1F1E7}\u{1F1FC}", "n": "flag: Botswana", "k": "flag botswana bw bandera botsuana" }, { "e": "\u{1F1E7}\u{1F1FE}", "n": "flag: Belarus", "k": "flag belarus by bandera bielorrusia" }, { "e": "\u{1F1E7}\u{1F1FF}", "n": "flag: Belize", "k": "flag belize bz bandera belice" }, { "e": "\u{1F1E8}\u{1F1E6}", "n": "flag: Canada", "k": "flag canada ca bandera" }, { "e": "\u{1F1E8}\u{1F1E8}", "n": "flag: Cocos (Keeling) Islands", "k": "flag cocos keeling islands cc bandera islas" }, { "e": "\u{1F1E8}\u{1F1E9}", "n": "flag: Congo - Kinshasa", "k": "flag congo kinshasa cd bandera republica democratica del" }, { "e": "\u{1F1E8}\u{1F1EB}", "n": "flag: Central African Republic", "k": "flag central african republic cf bandera republica centroafricana" }, { "e": "\u{1F1E8}\u{1F1EC}", "n": "flag: Congo - Brazzaville", "k": "flag congo brazzaville cg bandera" }, { "e": "\u{1F1E8}\u{1F1ED}", "n": "flag: Switzerland", "k": "flag switzerland ch bandera suiza" }, { "e": "\u{1F1E8}\u{1F1EE}", "n": "flag: C\xF4te d\u2019Ivoire", "k": "flag cote d ivoire ci bandera" }, { "e": "\u{1F1E8}\u{1F1F0}", "n": "flag: Cook Islands", "k": "flag cook islands ck bandera islas" }, { "e": "\u{1F1E8}\u{1F1F1}", "n": "flag: Chile", "k": "flag chile cl bandera" }, { "e": "\u{1F1E8}\u{1F1F2}", "n": "flag: Cameroon", "k": "flag cameroon cm bandera camerun" }, { "e": "\u{1F1E8}\u{1F1F3}", "n": "flag: China", "k": "flag china cn bandera" }, { "e": "\u{1F1E8}\u{1F1F4}", "n": "flag: Colombia", "k": "flag colombia co bandera" }, { "e": "\u{1F1E8}\u{1F1F5}", "n": "flag: Clipperton Island", "k": "flag clipperton island cp bandera isla" }, { "e": "\u{1F1E8}\u{1F1F7}", "n": "flag: Costa Rica", "k": "flag costa rica cr bandera" }, { "e": "\u{1F1E8}\u{1F1FA}", "n": "flag: Cuba", "k": "flag cuba cu bandera" }, { "e": "\u{1F1E8}\u{1F1FB}", "n": "flag: Cape Verde", "k": "flag cape verde cv bandera cabo" }, { "e": "\u{1F1E8}\u{1F1FC}", "n": "flag: Cura\xE7ao", "k": "flag curacao cw bandera curazao" }, { "e": "\u{1F1E8}\u{1F1FD}", "n": "flag: Christmas Island", "k": "flag christmas island cx bandera isla de navidad" }, { "e": "\u{1F1E8}\u{1F1FE}", "n": "flag: Cyprus", "k": "flag cyprus cy bandera chipre" }, { "e": "\u{1F1E8}\u{1F1FF}", "n": "flag: Czechia", "k": "flag czechia cz bandera chequia" }, { "e": "\u{1F1E9}\u{1F1EA}", "n": "flag: Germany", "k": "flag germany de bandera alemania" }, { "e": "\u{1F1E9}\u{1F1EC}", "n": "flag: Diego Garcia", "k": "flag diego garcia dg bandera" }, { "e": "\u{1F1E9}\u{1F1EF}", "n": "flag: Djibouti", "k": "flag djibouti dj bandera yibuti" }, { "e": "\u{1F1E9}\u{1F1F0}", "n": "flag: Denmark", "k": "flag denmark dk bandera dinamarca" }, { "e": "\u{1F1E9}\u{1F1F2}", "n": "flag: Dominica", "k": "flag dominica dm bandera" }, { "e": "\u{1F1E9}\u{1F1F4}", "n": "flag: Dominican Republic", "k": "flag dominican republic do bandera republica dominicana" }, { "e": "\u{1F1E9}\u{1F1FF}", "n": "flag: Algeria", "k": "flag algeria dz bandera argelia" }, { "e": "\u{1F1EA}\u{1F1E6}", "n": "flag: Ceuta & Melilla", "k": "flag ceuta melilla ea bandera y" }, { "e": "\u{1F1EA}\u{1F1E8}", "n": "flag: Ecuador", "k": "flag ecuador ec bandera" }, { "e": "\u{1F1EA}\u{1F1EA}", "n": "flag: Estonia", "k": "flag estonia ee bandera" }, { "e": "\u{1F1EA}\u{1F1EC}", "n": "flag: Egypt", "k": "flag egypt eg bandera egipto" }, { "e": "\u{1F1EA}\u{1F1ED}", "n": "flag: Western Sahara", "k": "flag western sahara eh bandera occidental" }, { "e": "\u{1F1EA}\u{1F1F7}", "n": "flag: Eritrea", "k": "flag eritrea er bandera" }, { "e": "\u{1F1EA}\u{1F1F8}", "n": "flag: Spain", "k": "flag spain es bandera espana" }, { "e": "\u{1F1EA}\u{1F1F9}", "n": "flag: Ethiopia", "k": "flag ethiopia et bandera etiopia" }, { "e": "\u{1F1EA}\u{1F1FA}", "n": "flag: European Union", "k": "flag european union eu bandera europea" }, { "e": "\u{1F1EB}\u{1F1EE}", "n": "flag: Finland", "k": "flag finland fi bandera finlandia" }, { "e": "\u{1F1EB}\u{1F1EF}", "n": "flag: Fiji", "k": "flag fiji fj bandera fiyi" }, { "e": "\u{1F1EB}\u{1F1F0}", "n": "flag: Falkland Islands", "k": "flag falkland islands fk bandera islas malvinas" }, { "e": "\u{1F1EB}\u{1F1F2}", "n": "flag: Micronesia", "k": "flag micronesia fm bandera" }, { "e": "\u{1F1EB}\u{1F1F4}", "n": "flag: Faroe Islands", "k": "flag faroe islands fo bandera islas feroe" }, { "e": "\u{1F1EB}\u{1F1F7}", "n": "flag: France", "k": "flag france fr bandera francia" }, { "e": "\u{1F1EC}\u{1F1E6}", "n": "flag: Gabon", "k": "flag gabon ga bandera" }, { "e": "\u{1F1EC}\u{1F1E7}", "n": "flag: United Kingdom", "k": "flag united kingdom gb bandera reino unido" }, { "e": "\u{1F1EC}\u{1F1E9}", "n": "flag: Grenada", "k": "flag grenada gd bandera granada" }, { "e": "\u{1F1EC}\u{1F1EA}", "n": "flag: Georgia", "k": "flag georgia ge bandera" }, { "e": "\u{1F1EC}\u{1F1EB}", "n": "flag: French Guiana", "k": "flag french guiana gf bandera guayana francesa" }, { "e": "\u{1F1EC}\u{1F1EC}", "n": "flag: Guernsey", "k": "flag guernsey gg bandera guernesey" }, { "e": "\u{1F1EC}\u{1F1ED}", "n": "flag: Ghana", "k": "flag ghana gh bandera" }, { "e": "\u{1F1EC}\u{1F1EE}", "n": "flag: Gibraltar", "k": "flag gibraltar gi bandera" }, { "e": "\u{1F1EC}\u{1F1F1}", "n": "flag: Greenland", "k": "flag greenland gl bandera groenlandia" }, { "e": "\u{1F1EC}\u{1F1F2}", "n": "flag: Gambia", "k": "flag gambia gm bandera" }, { "e": "\u{1F1EC}\u{1F1F3}", "n": "flag: Guinea", "k": "flag guinea gn bandera" }, { "e": "\u{1F1EC}\u{1F1F5}", "n": "flag: Guadeloupe", "k": "flag guadeloupe gp bandera guadalupe" }, { "e": "\u{1F1EC}\u{1F1F6}", "n": "flag: Equatorial Guinea", "k": "flag equatorial guinea gq bandera ecuatorial" }, { "e": "\u{1F1EC}\u{1F1F7}", "n": "flag: Greece", "k": "flag greece gr bandera grecia" }, { "e": "\u{1F1EC}\u{1F1F8}", "n": "flag: South Georgia & South Sandwich Islands", "k": "flag south georgia sandwich islands gs bandera islas del sur y" }, { "e": "\u{1F1EC}\u{1F1F9}", "n": "flag: Guatemala", "k": "flag guatemala gt bandera" }, { "e": "\u{1F1EC}\u{1F1FA}", "n": "flag: Guam", "k": "flag guam gu bandera" }, { "e": "\u{1F1EC}\u{1F1FC}", "n": "flag: Guinea-Bissau", "k": "flag guinea bissau gw bandera bisau" }, { "e": "\u{1F1EC}\u{1F1FE}", "n": "flag: Guyana", "k": "flag guyana gy bandera" }, { "e": "\u{1F1ED}\u{1F1F0}", "n": "flag: Hong Kong SAR China", "k": "flag hong kong sar china hk bandera rae de" }, { "e": "\u{1F1ED}\u{1F1F2}", "n": "flag: Heard & McDonald Islands", "k": "flag heard mcdonald islands hm bandera islas y" }, { "e": "\u{1F1ED}\u{1F1F3}", "n": "flag: Honduras", "k": "flag honduras hn bandera" }, { "e": "\u{1F1ED}\u{1F1F7}", "n": "flag: Croatia", "k": "flag croatia hr bandera croacia" }, { "e": "\u{1F1ED}\u{1F1F9}", "n": "flag: Haiti", "k": "flag haiti ht bandera" }, { "e": "\u{1F1ED}\u{1F1FA}", "n": "flag: Hungary", "k": "flag hungary hu bandera hungria" }, { "e": "\u{1F1EE}\u{1F1E8}", "n": "flag: Canary Islands", "k": "flag canary islands ic bandera canarias" }, { "e": "\u{1F1EE}\u{1F1E9}", "n": "flag: Indonesia", "k": "flag indonesia id bandera" }, { "e": "\u{1F1EE}\u{1F1EA}", "n": "flag: Ireland", "k": "flag ireland ie bandera irlanda" }, { "e": "\u{1F1EE}\u{1F1F1}", "n": "flag: Israel", "k": "flag israel il bandera" }, { "e": "\u{1F1EE}\u{1F1F2}", "n": "flag: Isle of Man", "k": "flag isle of man im bandera isla de" }, { "e": "\u{1F1EE}\u{1F1F3}", "n": "flag: India", "k": "flag india in bandera" }, { "e": "\u{1F1EE}\u{1F1F4}", "n": "flag: British Indian Ocean Territory", "k": "flag british indian ocean territory io bandera territorio britanico del oceano indico" }, { "e": "\u{1F1EE}\u{1F1F6}", "n": "flag: Iraq", "k": "flag iraq iq bandera irak" }, { "e": "\u{1F1EE}\u{1F1F7}", "n": "flag: Iran", "k": "flag iran ir bandera" }, { "e": "\u{1F1EE}\u{1F1F8}", "n": "flag: Iceland", "k": "flag iceland is bandera islandia" }, { "e": "\u{1F1EE}\u{1F1F9}", "n": "flag: Italy", "k": "flag italy it bandera italia" }, { "e": "\u{1F1EF}\u{1F1EA}", "n": "flag: Jersey", "k": "flag jersey je bandera" }, { "e": "\u{1F1EF}\u{1F1F2}", "n": "flag: Jamaica", "k": "flag jamaica jm bandera" }, { "e": "\u{1F1EF}\u{1F1F4}", "n": "flag: Jordan", "k": "flag jordan jo bandera jordania" }, { "e": "\u{1F1EF}\u{1F1F5}", "n": "flag: Japan", "k": "flag japan jp bandera japon" }, { "e": "\u{1F1F0}\u{1F1EA}", "n": "flag: Kenya", "k": "flag kenya ke bandera kenia" }, { "e": "\u{1F1F0}\u{1F1EC}", "n": "flag: Kyrgyzstan", "k": "flag kyrgyzstan kg bandera kirguistan" }, { "e": "\u{1F1F0}\u{1F1ED}", "n": "flag: Cambodia", "k": "flag cambodia kh bandera camboya" }, { "e": "\u{1F1F0}\u{1F1EE}", "n": "flag: Kiribati", "k": "flag kiribati ki bandera" }, { "e": "\u{1F1F0}\u{1F1F2}", "n": "flag: Comoros", "k": "flag comoros km bandera comoras" }, { "e": "\u{1F1F0}\u{1F1F3}", "n": "flag: St. Kitts & Nevis", "k": "flag st kitts nevis kn bandera san cristobal y nieves" }, { "e": "\u{1F1F0}\u{1F1F5}", "n": "flag: North Korea", "k": "flag north korea kp bandera corea del norte" }, { "e": "\u{1F1F0}\u{1F1F7}", "n": "flag: South Korea", "k": "flag south korea kr bandera corea del sur" }, { "e": "\u{1F1F0}\u{1F1FC}", "n": "flag: Kuwait", "k": "flag kuwait kw bandera" }, { "e": "\u{1F1F0}\u{1F1FE}", "n": "flag: Cayman Islands", "k": "flag cayman islands ky bandera islas caiman" }, { "e": "\u{1F1F0}\u{1F1FF}", "n": "flag: Kazakhstan", "k": "flag kazakhstan kz bandera kazajistan" }, { "e": "\u{1F1F1}\u{1F1E6}", "n": "flag: Laos", "k": "flag laos la bandera" }, { "e": "\u{1F1F1}\u{1F1E7}", "n": "flag: Lebanon", "k": "flag lebanon lb bandera libano" }, { "e": "\u{1F1F1}\u{1F1E8}", "n": "flag: St. Lucia", "k": "flag st lucia lc bandera santa" }, { "e": "\u{1F1F1}\u{1F1EE}", "n": "flag: Liechtenstein", "k": "flag liechtenstein li bandera" }, { "e": "\u{1F1F1}\u{1F1F0}", "n": "flag: Sri Lanka", "k": "flag sri lanka lk bandera" }, { "e": "\u{1F1F1}\u{1F1F7}", "n": "flag: Liberia", "k": "flag liberia lr bandera" }, { "e": "\u{1F1F1}\u{1F1F8}", "n": "flag: Lesotho", "k": "flag lesotho ls bandera lesoto" }, { "e": "\u{1F1F1}\u{1F1F9}", "n": "flag: Lithuania", "k": "flag lithuania lt bandera lituania" }, { "e": "\u{1F1F1}\u{1F1FA}", "n": "flag: Luxembourg", "k": "flag luxembourg lu bandera luxemburgo" }, { "e": "\u{1F1F1}\u{1F1FB}", "n": "flag: Latvia", "k": "flag latvia lv bandera letonia" }, { "e": "\u{1F1F1}\u{1F1FE}", "n": "flag: Libya", "k": "flag libya ly bandera libia" }, { "e": "\u{1F1F2}\u{1F1E6}", "n": "flag: Morocco", "k": "flag morocco ma bandera marruecos" }, { "e": "\u{1F1F2}\u{1F1E8}", "n": "flag: Monaco", "k": "flag monaco mc bandera" }, { "e": "\u{1F1F2}\u{1F1E9}", "n": "flag: Moldova", "k": "flag moldova md bandera moldavia" }, { "e": "\u{1F1F2}\u{1F1EA}", "n": "flag: Montenegro", "k": "flag montenegro me bandera" }, { "e": "\u{1F1F2}\u{1F1EB}", "n": "flag: St. Martin", "k": "flag st martin mf bandera san" }, { "e": "\u{1F1F2}\u{1F1EC}", "n": "flag: Madagascar", "k": "flag madagascar mg bandera" }, { "e": "\u{1F1F2}\u{1F1ED}", "n": "flag: Marshall Islands", "k": "flag marshall islands mh bandera islas" }, { "e": "\u{1F1F2}\u{1F1F0}", "n": "flag: North Macedonia", "k": "flag north macedonia mk bandera del norte" }, { "e": "\u{1F1F2}\u{1F1F1}", "n": "flag: Mali", "k": "flag mali ml bandera" }, { "e": "\u{1F1F2}\u{1F1F2}", "n": "flag: Myanmar (Burma)", "k": "flag myanmar burma mm bandera birmania" }, { "e": "\u{1F1F2}\u{1F1F3}", "n": "flag: Mongolia", "k": "flag mongolia mn bandera" }, { "e": "\u{1F1F2}\u{1F1F4}", "n": "flag: Macao SAR China", "k": "flag macao sar china mo bandera rae de" }, { "e": "\u{1F1F2}\u{1F1F5}", "n": "flag: Northern Mariana Islands", "k": "flag northern mariana islands mp bandera islas marianas del norte" }, { "e": "\u{1F1F2}\u{1F1F6}", "n": "flag: Martinique", "k": "flag martinique mq bandera martinica" }, { "e": "\u{1F1F2}\u{1F1F7}", "n": "flag: Mauritania", "k": "flag mauritania mr bandera" }, { "e": "\u{1F1F2}\u{1F1F8}", "n": "flag: Montserrat", "k": "flag montserrat ms bandera" }, { "e": "\u{1F1F2}\u{1F1F9}", "n": "flag: Malta", "k": "flag malta mt bandera" }, { "e": "\u{1F1F2}\u{1F1FA}", "n": "flag: Mauritius", "k": "flag mauritius mu bandera mauricio" }, { "e": "\u{1F1F2}\u{1F1FB}", "n": "flag: Maldives", "k": "flag maldives mv bandera maldivas" }, { "e": "\u{1F1F2}\u{1F1FC}", "n": "flag: Malawi", "k": "flag malawi mw bandera malaui" }, { "e": "\u{1F1F2}\u{1F1FD}", "n": "flag: Mexico", "k": "flag mexico mx bandera" }, { "e": "\u{1F1F2}\u{1F1FE}", "n": "flag: Malaysia", "k": "flag malaysia my bandera malasia" }, { "e": "\u{1F1F2}\u{1F1FF}", "n": "flag: Mozambique", "k": "flag mozambique mz bandera" }, { "e": "\u{1F1F3}\u{1F1E6}", "n": "flag: Namibia", "k": "flag namibia na bandera" }, { "e": "\u{1F1F3}\u{1F1E8}", "n": "flag: New Caledonia", "k": "flag new caledonia nc bandera nueva" }, { "e": "\u{1F1F3}\u{1F1EA}", "n": "flag: Niger", "k": "flag niger ne bandera" }, { "e": "\u{1F1F3}\u{1F1EB}", "n": "flag: Norfolk Island", "k": "flag norfolk island nf bandera isla" }, { "e": "\u{1F1F3}\u{1F1EC}", "n": "flag: Nigeria", "k": "flag nigeria ng bandera" }, { "e": "\u{1F1F3}\u{1F1EE}", "n": "flag: Nicaragua", "k": "flag nicaragua ni bandera" }, { "e": "\u{1F1F3}\u{1F1F1}", "n": "flag: Netherlands", "k": "flag netherlands nl bandera paises bajos" }, { "e": "\u{1F1F3}\u{1F1F4}", "n": "flag: Norway", "k": "flag norway no bandera noruega" }, { "e": "\u{1F1F3}\u{1F1F5}", "n": "flag: Nepal", "k": "flag nepal np bandera" }, { "e": "\u{1F1F3}\u{1F1F7}", "n": "flag: Nauru", "k": "flag nauru nr bandera" }, { "e": "\u{1F1F3}\u{1F1FA}", "n": "flag: Niue", "k": "flag niue nu bandera" }, { "e": "\u{1F1F3}\u{1F1FF}", "n": "flag: New Zealand", "k": "flag new zealand nz bandera nueva zelanda" }, { "e": "\u{1F1F4}\u{1F1F2}", "n": "flag: Oman", "k": "flag oman om bandera" }, { "e": "\u{1F1F5}\u{1F1E6}", "n": "flag: Panama", "k": "flag panama pa bandera" }, { "e": "\u{1F1F5}\u{1F1EA}", "n": "flag: Peru", "k": "flag peru pe bandera" }, { "e": "\u{1F1F5}\u{1F1EB}", "n": "flag: French Polynesia", "k": "flag french polynesia pf bandera polinesia francesa" }, { "e": "\u{1F1F5}\u{1F1EC}", "n": "flag: Papua New Guinea", "k": "flag papua new guinea pg bandera nueva" }, { "e": "\u{1F1F5}\u{1F1ED}", "n": "flag: Philippines", "k": "flag philippines ph bandera filipinas" }, { "e": "\u{1F1F5}\u{1F1F0}", "n": "flag: Pakistan", "k": "flag pakistan pk bandera" }, { "e": "\u{1F1F5}\u{1F1F1}", "n": "flag: Poland", "k": "flag poland pl bandera polonia" }, { "e": "\u{1F1F5}\u{1F1F2}", "n": "flag: St. Pierre & Miquelon", "k": "flag st pierre miquelon pm bandera san pedro y" }, { "e": "\u{1F1F5}\u{1F1F3}", "n": "flag: Pitcairn Islands", "k": "flag pitcairn islands pn bandera islas" }, { "e": "\u{1F1F5}\u{1F1F7}", "n": "flag: Puerto Rico", "k": "flag puerto rico pr bandera" }, { "e": "\u{1F1F5}\u{1F1F8}", "n": "flag: Palestinian Territories", "k": "flag palestinian territories ps bandera territorios palestinos" }, { "e": "\u{1F1F5}\u{1F1F9}", "n": "flag: Portugal", "k": "flag portugal pt bandera" }, { "e": "\u{1F1F5}\u{1F1FC}", "n": "flag: Palau", "k": "flag palau pw bandera palaos" }, { "e": "\u{1F1F5}\u{1F1FE}", "n": "flag: Paraguay", "k": "flag paraguay py bandera" }, { "e": "\u{1F1F6}\u{1F1E6}", "n": "flag: Qatar", "k": "flag qatar qa bandera catar" }, { "e": "\u{1F1F7}\u{1F1EA}", "n": "flag: R\xE9union", "k": "flag reunion re bandera" }, { "e": "\u{1F1F7}\u{1F1F4}", "n": "flag: Romania", "k": "flag romania ro bandera rumania" }, { "e": "\u{1F1F7}\u{1F1F8}", "n": "flag: Serbia", "k": "flag serbia rs bandera" }, { "e": "\u{1F1F7}\u{1F1FA}", "n": "flag: Russia", "k": "flag russia ru bandera rusia" }, { "e": "\u{1F1F7}\u{1F1FC}", "n": "flag: Rwanda", "k": "flag rwanda rw bandera ruanda" }, { "e": "\u{1F1F8}\u{1F1E6}", "n": "flag: Saudi Arabia", "k": "flag saudi arabia sa bandera" }, { "e": "\u{1F1F8}\u{1F1E7}", "n": "flag: Solomon Islands", "k": "flag solomon islands sb bandera islas salomon" }, { "e": "\u{1F1F8}\u{1F1E8}", "n": "flag: Seychelles", "k": "flag seychelles sc bandera" }, { "e": "\u{1F1F8}\u{1F1E9}", "n": "flag: Sudan", "k": "flag sudan sd bandera" }, { "e": "\u{1F1F8}\u{1F1EA}", "n": "flag: Sweden", "k": "flag sweden se bandera suecia" }, { "e": "\u{1F1F8}\u{1F1EC}", "n": "flag: Singapore", "k": "flag singapore sg bandera singapur" }, { "e": "\u{1F1F8}\u{1F1ED}", "n": "flag: St. Helena", "k": "flag st helena sh bandera santa elena" }, { "e": "\u{1F1F8}\u{1F1EE}", "n": "flag: Slovenia", "k": "flag slovenia si bandera eslovenia" }, { "e": "\u{1F1F8}\u{1F1EF}", "n": "flag: Svalbard & Jan Mayen", "k": "flag svalbard jan mayen sj bandera y" }, { "e": "\u{1F1F8}\u{1F1F0}", "n": "flag: Slovakia", "k": "flag slovakia sk bandera eslovaquia" }, { "e": "\u{1F1F8}\u{1F1F1}", "n": "flag: Sierra Leone", "k": "flag sierra leone sl bandera leona" }, { "e": "\u{1F1F8}\u{1F1F2}", "n": "flag: San Marino", "k": "flag san marino sm bandera" }, { "e": "\u{1F1F8}\u{1F1F3}", "n": "flag: Senegal", "k": "flag senegal sn bandera" }, { "e": "\u{1F1F8}\u{1F1F4}", "n": "flag: Somalia", "k": "flag somalia so bandera" }, { "e": "\u{1F1F8}\u{1F1F7}", "n": "flag: Suriname", "k": "flag suriname sr bandera surinam" }, { "e": "\u{1F1F8}\u{1F1F8}", "n": "flag: South Sudan", "k": "flag south sudan ss bandera del sur" }, { "e": "\u{1F1F8}\u{1F1F9}", "n": "flag: S\xE3o Tom\xE9 & Pr\xEDncipe", "k": "flag sao tome principe st bandera santo y" }, { "e": "\u{1F1F8}\u{1F1FB}", "n": "flag: El Salvador", "k": "flag el salvador sv bandera" }, { "e": "\u{1F1F8}\u{1F1FD}", "n": "flag: Sint Maarten", "k": "flag sint maarten sx bandera" }, { "e": "\u{1F1F8}\u{1F1FE}", "n": "flag: Syria", "k": "flag syria sy bandera siria" }, { "e": "\u{1F1F8}\u{1F1FF}", "n": "flag: Eswatini", "k": "flag eswatini sz bandera esuatini" }, { "e": "\u{1F1F9}\u{1F1E6}", "n": "flag: Tristan da Cunha", "k": "flag tristan da cunha ta bandera de acuna" }, { "e": "\u{1F1F9}\u{1F1E8}", "n": "flag: Turks & Caicos Islands", "k": "flag turks caicos islands tc bandera islas turcas y" }, { "e": "\u{1F1F9}\u{1F1E9}", "n": "flag: Chad", "k": "flag chad td bandera" }, { "e": "\u{1F1F9}\u{1F1EB}", "n": "flag: French Southern Territories", "k": "flag french southern territories tf bandera territorios australes franceses" }, { "e": "\u{1F1F9}\u{1F1EC}", "n": "flag: Togo", "k": "flag togo tg bandera" }, { "e": "\u{1F1F9}\u{1F1ED}", "n": "flag: Thailand", "k": "flag thailand th bandera tailandia" }, { "e": "\u{1F1F9}\u{1F1EF}", "n": "flag: Tajikistan", "k": "flag tajikistan tj bandera tayikistan" }, { "e": "\u{1F1F9}\u{1F1F0}", "n": "flag: Tokelau", "k": "flag tokelau tk bandera" }, { "e": "\u{1F1F9}\u{1F1F1}", "n": "flag: Timor-Leste", "k": "flag timor leste tl bandera" }, { "e": "\u{1F1F9}\u{1F1F2}", "n": "flag: Turkmenistan", "k": "flag turkmenistan tm bandera" }, { "e": "\u{1F1F9}\u{1F1F3}", "n": "flag: Tunisia", "k": "flag tunisia tn bandera tunez" }, { "e": "\u{1F1F9}\u{1F1F4}", "n": "flag: Tonga", "k": "flag tonga to bandera" }, { "e": "\u{1F1F9}\u{1F1F7}", "n": "flag: T\xFCrkiye", "k": "flag turkiye tr bandera turquia" }, { "e": "\u{1F1F9}\u{1F1F9}", "n": "flag: Trinidad & Tobago", "k": "flag trinidad tobago tt bandera y" }, { "e": "\u{1F1F9}\u{1F1FB}", "n": "flag: Tuvalu", "k": "flag tuvalu tv bandera" }, { "e": "\u{1F1F9}\u{1F1FC}", "n": "flag: Taiwan", "k": "flag taiwan tw bandera" }, { "e": "\u{1F1F9}\u{1F1FF}", "n": "flag: Tanzania", "k": "flag tanzania tz bandera" }, { "e": "\u{1F1FA}\u{1F1E6}", "n": "flag: Ukraine", "k": "flag ukraine ua bandera ucrania" }, { "e": "\u{1F1FA}\u{1F1EC}", "n": "flag: Uganda", "k": "flag uganda ug bandera" }, { "e": "\u{1F1FA}\u{1F1F2}", "n": "flag: U.S. Outlying Islands", "k": "flag u s outlying islands um bandera islas menores alejadas de ee uu" }, { "e": "\u{1F1FA}\u{1F1F3}", "n": "flag: United Nations", "k": "flag united nations un bandera naciones unidas" }, { "e": "\u{1F1FA}\u{1F1F8}", "n": "flag: United States", "k": "flag united states us bandera estados unidos" }, { "e": "\u{1F1FA}\u{1F1FE}", "n": "flag: Uruguay", "k": "flag uruguay uy bandera" }, { "e": "\u{1F1FA}\u{1F1FF}", "n": "flag: Uzbekistan", "k": "flag uzbekistan uz bandera" }, { "e": "\u{1F1FB}\u{1F1E6}", "n": "flag: Vatican City", "k": "flag vatican city va bandera ciudad del vaticano" }, { "e": "\u{1F1FB}\u{1F1E8}", "n": "flag: St. Vincent & Grenadines", "k": "flag st vincent grenadines vc bandera san vicente y las granadinas" }, { "e": "\u{1F1FB}\u{1F1EA}", "n": "flag: Venezuela", "k": "flag venezuela ve bandera" }, { "e": "\u{1F1FB}\u{1F1EC}", "n": "flag: British Virgin Islands", "k": "flag british virgin islands vg bandera islas virgenes britanicas" }, { "e": "\u{1F1FB}\u{1F1EE}", "n": "flag: U.S. Virgin Islands", "k": "flag u s virgin islands vi bandera islas virgenes de ee uu" }, { "e": "\u{1F1FB}\u{1F1F3}", "n": "flag: Vietnam", "k": "flag vietnam vn bandera" }, { "e": "\u{1F1FB}\u{1F1FA}", "n": "flag: Vanuatu", "k": "flag vanuatu vu bandera" }, { "e": "\u{1F1FC}\u{1F1EB}", "n": "flag: Wallis & Futuna", "k": "flag wallis futuna wf bandera y" }, { "e": "\u{1F1FC}\u{1F1F8}", "n": "flag: Samoa", "k": "flag samoa ws bandera" }, { "e": "\u{1F1FD}\u{1F1F0}", "n": "flag: Kosovo", "k": "flag kosovo xk bandera" }, { "e": "\u{1F1FE}\u{1F1EA}", "n": "flag: Yemen", "k": "flag yemen ye bandera" }, { "e": "\u{1F1FE}\u{1F1F9}", "n": "flag: Mayotte", "k": "flag mayotte yt bandera" }, { "e": "\u{1F1FF}\u{1F1E6}", "n": "flag: South Africa", "k": "flag south africa za bandera sudafrica" }, { "e": "\u{1F1FF}\u{1F1F2}", "n": "flag: Zambia", "k": "flag zambia zm bandera" }, { "e": "\u{1F1FF}\u{1F1FC}", "n": "flag: Zimbabwe", "k": "flag zimbabwe zw bandera zimbabue" }, { "e": "\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}", "n": "flag: England", "k": "flag england gbeng bandera inglaterra" }, { "e": "\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}", "n": "flag: Scotland", "k": "flag scotland gbsct bandera escocia" }, { "e": "\u{1F3F4}\u{E0067}\u{E0062}\u{E0077}\u{E006C}\u{E0073}\u{E007F}", "n": "flag: Wales", "k": "flag wales gbwls bandera gales" }] }];
|
|
7607
|
+
var COLUMNS = 8;
|
|
7608
|
+
var CATEGORY_ICONS = {
|
|
7609
|
+
recent: lucideReact.Clock,
|
|
7610
|
+
smileys: lucideReact.Smile,
|
|
7611
|
+
people: lucideReact.Hand,
|
|
7612
|
+
nature: lucideReact.Leaf,
|
|
7613
|
+
food: lucideReact.Apple,
|
|
7614
|
+
travel: lucideReact.Plane,
|
|
7615
|
+
activities: lucideReact.Trophy,
|
|
7616
|
+
objects: lucideReact.Lightbulb,
|
|
7617
|
+
symbols: lucideReact.Hash,
|
|
7618
|
+
flags: lucideReact.Flag
|
|
7619
|
+
};
|
|
7620
|
+
var DEFAULT_TITLES = {
|
|
7621
|
+
en: {
|
|
7622
|
+
recent: "Frequently used",
|
|
7623
|
+
smileys: "Smileys & emotion",
|
|
7624
|
+
people: "People & body",
|
|
7625
|
+
nature: "Animals & nature",
|
|
7626
|
+
food: "Food & drink",
|
|
7627
|
+
travel: "Travel & places",
|
|
7628
|
+
activities: "Activities",
|
|
7629
|
+
objects: "Objects",
|
|
7630
|
+
symbols: "Symbols",
|
|
7631
|
+
flags: "Flags"
|
|
7632
|
+
},
|
|
7633
|
+
es: {
|
|
7634
|
+
recent: "Usados con frecuencia",
|
|
7635
|
+
smileys: "Emoticonos y emoci\xF3n",
|
|
7636
|
+
people: "Personas y cuerpo",
|
|
7637
|
+
nature: "Animales y naturaleza",
|
|
7638
|
+
food: "Comida y bebida",
|
|
7639
|
+
travel: "Viajes y lugares",
|
|
7640
|
+
activities: "Actividades",
|
|
7641
|
+
objects: "Objetos",
|
|
7642
|
+
symbols: "S\xEDmbolos",
|
|
7643
|
+
flags: "Banderas"
|
|
7644
|
+
}
|
|
7645
|
+
};
|
|
7646
|
+
var SKIN_TONE_SWATCHES = {
|
|
7647
|
+
0: "#ffcb4c",
|
|
7648
|
+
1: "#f7dece",
|
|
7649
|
+
2: "#f3d2a2",
|
|
7650
|
+
3: "#d5ab88",
|
|
7651
|
+
4: "#af7e57",
|
|
7652
|
+
5: "#7c533e"
|
|
7653
|
+
};
|
|
7654
|
+
var SKIN_TONE_NAMES = {
|
|
7655
|
+
en: {
|
|
7656
|
+
0: "Default",
|
|
7657
|
+
1: "Light",
|
|
7658
|
+
2: "Medium-light",
|
|
7659
|
+
3: "Medium",
|
|
7660
|
+
4: "Medium-dark",
|
|
7661
|
+
5: "Dark"
|
|
7662
|
+
},
|
|
7663
|
+
es: {
|
|
7664
|
+
0: "Predeterminado",
|
|
7665
|
+
1: "Claro",
|
|
7666
|
+
2: "Claro medio",
|
|
7667
|
+
3: "Medio",
|
|
7668
|
+
4: "Oscuro medio",
|
|
7669
|
+
5: "Oscuro"
|
|
7670
|
+
}
|
|
7671
|
+
};
|
|
7672
|
+
var DEFAULT_LABELS = {
|
|
7673
|
+
en: {
|
|
7674
|
+
searchPlaceholder: "Search emoji",
|
|
7675
|
+
searchAriaLabel: "Search emoji",
|
|
7676
|
+
noResults: "No emoji found",
|
|
7677
|
+
recentTitle: "Frequently used",
|
|
7678
|
+
skinToneAriaLabel: "Choose skin tone"
|
|
7679
|
+
},
|
|
7680
|
+
es: {
|
|
7681
|
+
searchPlaceholder: "Buscar emoji",
|
|
7682
|
+
searchAriaLabel: "Buscar emoji",
|
|
7683
|
+
noResults: "No se encontraron emoji",
|
|
7684
|
+
recentTitle: "Usados con frecuencia",
|
|
7685
|
+
skinToneAriaLabel: "Elegir tono de piel"
|
|
7686
|
+
}
|
|
7687
|
+
};
|
|
7688
|
+
function normalizeEmojiQuery(input) {
|
|
7689
|
+
return input.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[^a-z0-9\s]/g, " ").replace(/\s+/g, " ").trim();
|
|
7690
|
+
}
|
|
7691
|
+
function applySkinTone(emoji, tone) {
|
|
7692
|
+
if (tone === 0 || !emoji.t) return emoji.e;
|
|
7693
|
+
return emoji.t[tone - 1] ?? emoji.e;
|
|
7694
|
+
}
|
|
7695
|
+
function readStored(key, suffix) {
|
|
7696
|
+
if (!key || typeof window === "undefined") return null;
|
|
7697
|
+
try {
|
|
7698
|
+
return window.localStorage.getItem(`${key}:${suffix}`);
|
|
7699
|
+
} catch {
|
|
7700
|
+
return null;
|
|
7701
|
+
}
|
|
7702
|
+
}
|
|
7703
|
+
function writeStored(key, suffix, value) {
|
|
7704
|
+
if (!key || typeof window === "undefined") return;
|
|
7705
|
+
try {
|
|
7706
|
+
window.localStorage.setItem(`${key}:${suffix}`, value);
|
|
7707
|
+
} catch {
|
|
7708
|
+
}
|
|
7709
|
+
}
|
|
7710
|
+
function EmojiPicker({
|
|
7711
|
+
onSelect,
|
|
7712
|
+
locale = "en",
|
|
7713
|
+
labels,
|
|
7714
|
+
className,
|
|
7715
|
+
recentLimit = 24,
|
|
7716
|
+
storageKey = "blocks-emoji"
|
|
7717
|
+
}) {
|
|
7718
|
+
const strings = React7__namespace.useMemo(
|
|
7719
|
+
() => ({ ...DEFAULT_LABELS[locale], ...labels }),
|
|
7720
|
+
[locale, labels]
|
|
7721
|
+
);
|
|
7722
|
+
const titles = React7__namespace.useMemo(
|
|
7723
|
+
() => ({ ...DEFAULT_TITLES[locale], ...labels?.categoryTitles }),
|
|
7724
|
+
[locale, labels]
|
|
7725
|
+
);
|
|
7726
|
+
const [query, setQuery] = React7__namespace.useState("");
|
|
7727
|
+
const [skinTone, setSkinTone] = React7__namespace.useState(() => {
|
|
7728
|
+
const raw = readStored(storageKey, "tone");
|
|
7729
|
+
const parsed = raw != null ? Number.parseInt(raw, 10) : 0;
|
|
7730
|
+
return parsed >= 0 && parsed <= 5 ? parsed : 0;
|
|
7731
|
+
});
|
|
7732
|
+
const [toneOpen, setToneOpen] = React7__namespace.useState(false);
|
|
7733
|
+
const [recents, setRecents] = React7__namespace.useState(() => {
|
|
7734
|
+
const raw = readStored(storageKey, "recent");
|
|
7735
|
+
if (!raw) return [];
|
|
7736
|
+
try {
|
|
7737
|
+
const parsed = JSON.parse(raw);
|
|
7738
|
+
return Array.isArray(parsed) ? parsed.filter((e) => typeof e === "string") : [];
|
|
7739
|
+
} catch {
|
|
7740
|
+
return [];
|
|
7741
|
+
}
|
|
7742
|
+
});
|
|
7743
|
+
const [focusIndex, setFocusIndex] = React7__namespace.useState(-1);
|
|
7744
|
+
const scrollRef = React7__namespace.useRef(null);
|
|
7745
|
+
const sectionRefs = React7__namespace.useRef(
|
|
7746
|
+
/* @__PURE__ */ new Map()
|
|
7747
|
+
);
|
|
7748
|
+
const normalizedQuery = normalizeEmojiQuery(query);
|
|
7749
|
+
const sections = React7__namespace.useMemo(() => {
|
|
7750
|
+
if (normalizedQuery) return [];
|
|
7751
|
+
const result = [];
|
|
7752
|
+
if (recents.length > 0) {
|
|
7753
|
+
result.push({
|
|
7754
|
+
key: "recent",
|
|
7755
|
+
title: titles.recent,
|
|
7756
|
+
emojis: recents.map((e) => ({ e, n: e, k: "" }))
|
|
7757
|
+
});
|
|
7758
|
+
}
|
|
7759
|
+
for (const category of EMOJI_CATEGORIES) {
|
|
7760
|
+
result.push({
|
|
7761
|
+
key: category.key,
|
|
7762
|
+
title: titles[category.key],
|
|
7763
|
+
emojis: category.emojis
|
|
7764
|
+
});
|
|
7765
|
+
}
|
|
7766
|
+
return result;
|
|
7767
|
+
}, [normalizedQuery, recents, titles]);
|
|
7768
|
+
const searchResults = React7__namespace.useMemo(() => {
|
|
7769
|
+
if (!normalizedQuery) return [];
|
|
7770
|
+
const out = [];
|
|
7771
|
+
for (const category of EMOJI_CATEGORIES) {
|
|
7772
|
+
for (const emoji of category.emojis) {
|
|
7773
|
+
if (emoji.k.includes(normalizedQuery)) out.push(emoji);
|
|
7774
|
+
}
|
|
7775
|
+
}
|
|
7776
|
+
return out;
|
|
7777
|
+
}, [normalizedQuery]);
|
|
7778
|
+
const flatList = React7__namespace.useMemo(() => {
|
|
7779
|
+
if (normalizedQuery) return searchResults;
|
|
7780
|
+
return sections.flatMap((s) => s.emojis);
|
|
7781
|
+
}, [normalizedQuery, searchResults, sections]);
|
|
7782
|
+
React7__namespace.useEffect(() => {
|
|
7783
|
+
setFocusIndex(-1);
|
|
7784
|
+
}, [normalizedQuery]);
|
|
7785
|
+
React7__namespace.useEffect(() => {
|
|
7786
|
+
if (focusIndex < 0) return;
|
|
7787
|
+
const el = scrollRef.current?.querySelector(
|
|
7788
|
+
`[data-emoji-index="${focusIndex}"]`
|
|
7789
|
+
);
|
|
7790
|
+
el?.focus();
|
|
7791
|
+
}, [focusIndex]);
|
|
7792
|
+
const commitRecent = React7__namespace.useCallback(
|
|
7793
|
+
(glyph) => {
|
|
7794
|
+
setRecents((prev) => {
|
|
7795
|
+
const next = [glyph, ...prev.filter((e) => e !== glyph)].slice(
|
|
7796
|
+
0,
|
|
7797
|
+
recentLimit
|
|
7798
|
+
);
|
|
7799
|
+
writeStored(storageKey, "recent", JSON.stringify(next));
|
|
7800
|
+
return next;
|
|
7801
|
+
});
|
|
7802
|
+
},
|
|
7803
|
+
[recentLimit, storageKey]
|
|
7804
|
+
);
|
|
7805
|
+
const handleSelect = React7__namespace.useCallback(
|
|
7806
|
+
(glyph) => {
|
|
7807
|
+
commitRecent(glyph);
|
|
7808
|
+
onSelect(glyph);
|
|
7809
|
+
},
|
|
7810
|
+
[commitRecent, onSelect]
|
|
7811
|
+
);
|
|
7812
|
+
const chooseTone = React7__namespace.useCallback(
|
|
7813
|
+
(tone) => {
|
|
7814
|
+
setSkinTone(tone);
|
|
7815
|
+
setToneOpen(false);
|
|
7816
|
+
writeStored(storageKey, "tone", String(tone));
|
|
7817
|
+
},
|
|
7818
|
+
[storageKey]
|
|
7819
|
+
);
|
|
7820
|
+
function scrollToCategory(key) {
|
|
7821
|
+
const el = sectionRefs.current.get(key);
|
|
7822
|
+
if (el && typeof el.scrollIntoView === "function") {
|
|
7823
|
+
el.scrollIntoView({ block: "start" });
|
|
7824
|
+
}
|
|
7825
|
+
}
|
|
7826
|
+
function handleGridKeyDown(e) {
|
|
7827
|
+
if (flatList.length === 0) return;
|
|
7828
|
+
const current = focusIndex < 0 ? 0 : focusIndex;
|
|
7829
|
+
let next = null;
|
|
7830
|
+
switch (e.key) {
|
|
7831
|
+
case "ArrowRight":
|
|
7832
|
+
next = Math.min(current + 1, flatList.length - 1);
|
|
7833
|
+
break;
|
|
7834
|
+
case "ArrowLeft":
|
|
7835
|
+
next = Math.max(current - 1, 0);
|
|
7836
|
+
break;
|
|
7837
|
+
case "ArrowDown":
|
|
7838
|
+
next = Math.min(current + COLUMNS, flatList.length - 1);
|
|
7839
|
+
break;
|
|
7840
|
+
case "ArrowUp":
|
|
7841
|
+
next = current - COLUMNS >= 0 ? current - COLUMNS : current;
|
|
7842
|
+
break;
|
|
7843
|
+
case "Home":
|
|
7844
|
+
next = 0;
|
|
7845
|
+
break;
|
|
7846
|
+
case "End":
|
|
7847
|
+
next = flatList.length - 1;
|
|
7848
|
+
break;
|
|
7849
|
+
case "Enter":
|
|
7850
|
+
case " ": {
|
|
7851
|
+
if (focusIndex >= 0 && flatList[focusIndex]) {
|
|
7852
|
+
e.preventDefault();
|
|
7853
|
+
handleSelect(applySkinTone(flatList[focusIndex], skinTone));
|
|
7854
|
+
}
|
|
7855
|
+
return;
|
|
7856
|
+
}
|
|
7857
|
+
default:
|
|
7858
|
+
return;
|
|
7859
|
+
}
|
|
7860
|
+
if (next !== null) {
|
|
7861
|
+
e.preventDefault();
|
|
7862
|
+
setFocusIndex(next);
|
|
7863
|
+
}
|
|
7864
|
+
}
|
|
7865
|
+
function handleSearchKeyDown(e) {
|
|
7866
|
+
if (e.key === "ArrowDown" && flatList.length > 0) {
|
|
7867
|
+
e.preventDefault();
|
|
7868
|
+
setFocusIndex(0);
|
|
7869
|
+
}
|
|
7870
|
+
}
|
|
7871
|
+
let flatOffset = 0;
|
|
7872
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7873
|
+
"div",
|
|
7874
|
+
{
|
|
7875
|
+
className: cn(
|
|
7876
|
+
"bg-popover text-popover-foreground flex w-[352px] max-w-[92vw] flex-col rounded-md",
|
|
7877
|
+
className
|
|
7878
|
+
),
|
|
7879
|
+
"data-slot": "emoji-picker",
|
|
7880
|
+
children: [
|
|
7881
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 border-b p-2", children: [
|
|
7882
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex-1", children: [
|
|
7883
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "text-muted-foreground pointer-events-none absolute top-1/2 left-2.5 size-4 -translate-y-1/2" }),
|
|
7884
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7885
|
+
"input",
|
|
7886
|
+
{
|
|
7887
|
+
type: "text",
|
|
7888
|
+
value: query,
|
|
7889
|
+
onChange: (e) => setQuery(e.target.value),
|
|
7890
|
+
onKeyDown: handleSearchKeyDown,
|
|
7891
|
+
placeholder: strings.searchPlaceholder,
|
|
7892
|
+
"aria-label": strings.searchAriaLabel,
|
|
7893
|
+
className: "border-input bg-background focus-visible:border-ring focus-visible:ring-ring/50 h-9 w-full rounded-md border py-2 pr-3 pl-8 text-sm outline-none focus-visible:ring-[3px]"
|
|
7894
|
+
}
|
|
7895
|
+
)
|
|
7896
|
+
] }),
|
|
7897
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
7898
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7899
|
+
"button",
|
|
7900
|
+
{
|
|
7901
|
+
type: "button",
|
|
7902
|
+
"aria-label": strings.skinToneAriaLabel,
|
|
7903
|
+
"aria-expanded": toneOpen,
|
|
7904
|
+
onClick: () => setToneOpen((v) => !v),
|
|
7905
|
+
className: "focus-visible:border-ring focus-visible:ring-ring/50 flex size-9 shrink-0 items-center justify-center rounded-md border outline-none focus-visible:ring-[3px]",
|
|
7906
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7907
|
+
"span",
|
|
7908
|
+
{
|
|
7909
|
+
className: "size-4 rounded-full ring-1 ring-black/10",
|
|
7910
|
+
style: { backgroundColor: SKIN_TONE_SWATCHES[skinTone] }
|
|
7911
|
+
}
|
|
7912
|
+
)
|
|
7913
|
+
}
|
|
7914
|
+
),
|
|
7915
|
+
toneOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7916
|
+
"div",
|
|
7917
|
+
{
|
|
7918
|
+
role: "listbox",
|
|
7919
|
+
"aria-label": strings.skinToneAriaLabel,
|
|
7920
|
+
className: "bg-popover absolute top-full right-0 z-10 mt-1 flex gap-1 rounded-md border p-1 shadow-md",
|
|
7921
|
+
children: [0, 1, 2, 3, 4, 5].map((tone) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7922
|
+
"button",
|
|
7923
|
+
{
|
|
7924
|
+
type: "button",
|
|
7925
|
+
role: "option",
|
|
7926
|
+
"aria-selected": tone === skinTone,
|
|
7927
|
+
"aria-label": SKIN_TONE_NAMES[locale][tone],
|
|
7928
|
+
title: SKIN_TONE_NAMES[locale][tone],
|
|
7929
|
+
onClick: () => chooseTone(tone),
|
|
7930
|
+
className: cn(
|
|
7931
|
+
"flex size-7 items-center justify-center rounded-md",
|
|
7932
|
+
tone === skinTone && "ring-ring ring-2"
|
|
7933
|
+
),
|
|
7934
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7935
|
+
"span",
|
|
7936
|
+
{
|
|
7937
|
+
className: "size-4 rounded-full ring-1 ring-black/10",
|
|
7938
|
+
style: { backgroundColor: SKIN_TONE_SWATCHES[tone] }
|
|
7939
|
+
}
|
|
7940
|
+
)
|
|
7941
|
+
},
|
|
7942
|
+
tone
|
|
7943
|
+
))
|
|
7944
|
+
}
|
|
7945
|
+
)
|
|
7946
|
+
] })
|
|
7947
|
+
] }),
|
|
7948
|
+
!normalizedQuery && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-0.5 border-b px-1.5 py-1", children: [
|
|
7949
|
+
recents.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7950
|
+
CategoryTab,
|
|
7951
|
+
{
|
|
7952
|
+
icon: CATEGORY_ICONS.recent,
|
|
7953
|
+
label: titles.recent,
|
|
7954
|
+
onClick: () => scrollToCategory("recent")
|
|
7955
|
+
}
|
|
7956
|
+
),
|
|
7957
|
+
EMOJI_CATEGORIES.map((category) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7958
|
+
CategoryTab,
|
|
7959
|
+
{
|
|
7960
|
+
icon: CATEGORY_ICONS[category.key],
|
|
7961
|
+
label: titles[category.key],
|
|
7962
|
+
onClick: () => scrollToCategory(category.key)
|
|
7963
|
+
},
|
|
7964
|
+
category.key
|
|
7965
|
+
))
|
|
7966
|
+
] }),
|
|
7967
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7968
|
+
"div",
|
|
7969
|
+
{
|
|
7970
|
+
ref: scrollRef,
|
|
7971
|
+
onKeyDown: handleGridKeyDown,
|
|
7972
|
+
className: "h-64 overflow-x-hidden overflow-y-auto p-2",
|
|
7973
|
+
children: normalizedQuery ? searchResults.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground py-8 text-center text-sm", children: strings.noResults }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
7974
|
+
EmojiGrid,
|
|
7975
|
+
{
|
|
7976
|
+
emojis: searchResults,
|
|
7977
|
+
startIndex: 0,
|
|
7978
|
+
activeIndex: focusIndex,
|
|
7979
|
+
skinTone,
|
|
7980
|
+
onSelect: handleSelect
|
|
7981
|
+
}
|
|
7982
|
+
) : sections.map((section) => {
|
|
7983
|
+
const startIndex = flatOffset;
|
|
7984
|
+
flatOffset += section.emojis.length;
|
|
7985
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7986
|
+
"div",
|
|
7987
|
+
{
|
|
7988
|
+
ref: (el) => {
|
|
7989
|
+
sectionRefs.current.set(section.key, el);
|
|
7990
|
+
},
|
|
7991
|
+
className: "mb-2",
|
|
7992
|
+
children: [
|
|
7993
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-muted-foreground bg-popover sticky top-0 z-[1] px-1 py-1 text-xs font-medium", children: section.title }),
|
|
7994
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7995
|
+
"div",
|
|
7996
|
+
{
|
|
7997
|
+
style: {
|
|
7998
|
+
contentVisibility: "auto",
|
|
7999
|
+
containIntrinsicSize: "auto 200px"
|
|
8000
|
+
},
|
|
8001
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8002
|
+
EmojiGrid,
|
|
8003
|
+
{
|
|
8004
|
+
emojis: section.emojis,
|
|
8005
|
+
startIndex,
|
|
8006
|
+
activeIndex: focusIndex,
|
|
8007
|
+
skinTone,
|
|
8008
|
+
onSelect: handleSelect
|
|
8009
|
+
}
|
|
8010
|
+
)
|
|
8011
|
+
}
|
|
8012
|
+
)
|
|
8013
|
+
]
|
|
8014
|
+
},
|
|
8015
|
+
section.key
|
|
8016
|
+
);
|
|
8017
|
+
})
|
|
8018
|
+
}
|
|
8019
|
+
)
|
|
8020
|
+
]
|
|
8021
|
+
}
|
|
8022
|
+
);
|
|
8023
|
+
}
|
|
8024
|
+
function CategoryTab({
|
|
8025
|
+
icon: Icon,
|
|
8026
|
+
label,
|
|
8027
|
+
onClick
|
|
8028
|
+
}) {
|
|
8029
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8030
|
+
"button",
|
|
8031
|
+
{
|
|
8032
|
+
type: "button",
|
|
8033
|
+
onClick,
|
|
8034
|
+
title: label,
|
|
8035
|
+
"aria-label": label,
|
|
8036
|
+
className: "text-muted-foreground hover:bg-accent hover:text-accent-foreground flex flex-1 items-center justify-center rounded-md p-1.5",
|
|
8037
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-4" })
|
|
8038
|
+
}
|
|
8039
|
+
);
|
|
8040
|
+
}
|
|
8041
|
+
function EmojiGrid({
|
|
8042
|
+
emojis,
|
|
8043
|
+
startIndex,
|
|
8044
|
+
activeIndex,
|
|
8045
|
+
skinTone,
|
|
8046
|
+
onSelect
|
|
8047
|
+
}) {
|
|
8048
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8049
|
+
"div",
|
|
8050
|
+
{
|
|
8051
|
+
className: "grid",
|
|
8052
|
+
style: { gridTemplateColumns: `repeat(${COLUMNS}, minmax(0, 1fr))` },
|
|
8053
|
+
children: emojis.map((emoji, i) => {
|
|
8054
|
+
const flatIndex = startIndex + i;
|
|
8055
|
+
const glyph = applySkinTone(emoji, skinTone);
|
|
8056
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8057
|
+
"button",
|
|
8058
|
+
{
|
|
8059
|
+
type: "button",
|
|
8060
|
+
"data-emoji-index": flatIndex,
|
|
8061
|
+
tabIndex: activeIndex === flatIndex || activeIndex < 0 && flatIndex === 0 ? 0 : -1,
|
|
8062
|
+
onClick: () => onSelect(glyph),
|
|
8063
|
+
title: emoji.n,
|
|
8064
|
+
"aria-label": emoji.n,
|
|
8065
|
+
className: "hover:bg-accent focus-visible:bg-accent flex aspect-square items-center justify-center rounded-md text-2xl leading-none outline-none",
|
|
8066
|
+
children: glyph
|
|
8067
|
+
},
|
|
8068
|
+
`${emoji.e}-${flatIndex}`
|
|
8069
|
+
);
|
|
8070
|
+
})
|
|
8071
|
+
}
|
|
8072
|
+
);
|
|
8073
|
+
}
|
|
8074
|
+
var DEFAULT_TRIGGER_LABEL = { en: "Insert emoji", es: "Insertar emoji" };
|
|
8075
|
+
function EmojiPickerPopover({
|
|
8076
|
+
onSelect,
|
|
8077
|
+
triggerLabel,
|
|
8078
|
+
triggerClassName: triggerClassName2,
|
|
8079
|
+
side = "top",
|
|
8080
|
+
align = "end",
|
|
8081
|
+
open,
|
|
8082
|
+
onOpenChange,
|
|
8083
|
+
keepOpenOnSelect = false,
|
|
8084
|
+
locale = "en",
|
|
8085
|
+
...pickerProps
|
|
8086
|
+
}) {
|
|
8087
|
+
const [internalOpen, setInternalOpen] = React7__namespace.useState(false);
|
|
8088
|
+
const isControlled = open !== void 0;
|
|
8089
|
+
const isOpen = isControlled ? open : internalOpen;
|
|
8090
|
+
const setOpen = React7__namespace.useCallback(
|
|
8091
|
+
(next) => {
|
|
8092
|
+
if (!isControlled) setInternalOpen(next);
|
|
8093
|
+
onOpenChange?.(next);
|
|
8094
|
+
},
|
|
8095
|
+
[isControlled, onOpenChange]
|
|
8096
|
+
);
|
|
8097
|
+
const handleSelect = React7__namespace.useCallback(
|
|
8098
|
+
(emoji) => {
|
|
8099
|
+
onSelect(emoji);
|
|
8100
|
+
if (!keepOpenOnSelect) setOpen(false);
|
|
8101
|
+
},
|
|
8102
|
+
[onSelect, keepOpenOnSelect, setOpen]
|
|
8103
|
+
);
|
|
8104
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open: isOpen, onOpenChange: setOpen, children: [
|
|
8105
|
+
/* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8106
|
+
Button,
|
|
8107
|
+
{
|
|
8108
|
+
type: "button",
|
|
8109
|
+
variant: "ghost",
|
|
8110
|
+
size: "icon",
|
|
8111
|
+
"aria-label": triggerLabel ?? DEFAULT_TRIGGER_LABEL[locale],
|
|
8112
|
+
className: cn("text-muted-foreground", triggerClassName2),
|
|
8113
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Smile, { className: "size-5" })
|
|
8114
|
+
}
|
|
8115
|
+
) }),
|
|
8116
|
+
/* @__PURE__ */ jsxRuntime.jsx(PopoverContent, { side, align, className: "w-auto p-0", children: /* @__PURE__ */ jsxRuntime.jsx(EmojiPicker, { onSelect: handleSelect, locale, ...pickerProps }) })
|
|
8117
|
+
] });
|
|
8118
|
+
}
|
|
8119
|
+
|
|
8120
|
+
// src/components/video/hls-config.ts
|
|
8121
|
+
function shouldRetryLiveEdge404(retryConfig, retryCount, _isTimeout, loaderResponse, defaultRetry) {
|
|
8122
|
+
if (loaderResponse?.code === 404) {
|
|
8123
|
+
return retryConfig != null && retryCount < retryConfig.maxNumRetry;
|
|
8124
|
+
}
|
|
8125
|
+
return defaultRetry;
|
|
8126
|
+
}
|
|
8127
|
+
var liveEdgeErrorRetry = {
|
|
8128
|
+
maxNumRetry: 8,
|
|
8129
|
+
retryDelayMs: 250,
|
|
8130
|
+
maxRetryDelayMs: 4e3,
|
|
8131
|
+
backoff: "exponential",
|
|
8132
|
+
shouldRetry: shouldRetryLiveEdge404
|
|
8133
|
+
};
|
|
8134
|
+
function createLiveHlsConfig() {
|
|
8135
|
+
return {
|
|
8136
|
+
enableWorker: true,
|
|
8137
|
+
// No custom request headers: Cache-Control/Pragma are not
|
|
8138
|
+
// CORS-safelisted and would force an OPTIONS preflight before every
|
|
8139
|
+
// manifest poll and segment fetch. Freshness is controlled by the
|
|
8140
|
+
// origin's response Cache-Control headers instead.
|
|
8141
|
+
liveSyncDurationCount: 4,
|
|
8142
|
+
liveMaxLatencyDurationCount: 12,
|
|
8143
|
+
fragLoadPolicy: {
|
|
8144
|
+
default: {
|
|
8145
|
+
maxTimeToFirstByteMs: 1e4,
|
|
8146
|
+
maxLoadTimeMs: 12e4,
|
|
8147
|
+
timeoutRetry: {
|
|
8148
|
+
maxNumRetry: 4,
|
|
8149
|
+
retryDelayMs: 0,
|
|
8150
|
+
maxRetryDelayMs: 0
|
|
8151
|
+
},
|
|
8152
|
+
errorRetry: liveEdgeErrorRetry
|
|
8153
|
+
}
|
|
8154
|
+
},
|
|
8155
|
+
playlistLoadPolicy: {
|
|
8156
|
+
default: {
|
|
8157
|
+
maxTimeToFirstByteMs: 1e4,
|
|
8158
|
+
maxLoadTimeMs: 3e4,
|
|
8159
|
+
timeoutRetry: {
|
|
8160
|
+
maxNumRetry: 2,
|
|
8161
|
+
retryDelayMs: 0,
|
|
8162
|
+
maxRetryDelayMs: 0
|
|
8163
|
+
},
|
|
8164
|
+
errorRetry: {
|
|
8165
|
+
...liveEdgeErrorRetry,
|
|
8166
|
+
maxNumRetry: 6
|
|
8167
|
+
}
|
|
8168
|
+
}
|
|
8169
|
+
}
|
|
8170
|
+
};
|
|
8171
|
+
}
|
|
8172
|
+
function createVodHlsConfig() {
|
|
8173
|
+
return {
|
|
8174
|
+
enableWorker: true
|
|
8175
|
+
};
|
|
8176
|
+
}
|
|
8177
|
+
|
|
8178
|
+
// src/components/video/hls-errors.ts
|
|
8179
|
+
var MEDIA_ERROR_NAMES = {
|
|
8180
|
+
1: "MEDIA_ERR_ABORTED",
|
|
8181
|
+
2: "MEDIA_ERR_NETWORK",
|
|
8182
|
+
3: "MEDIA_ERR_DECODE",
|
|
8183
|
+
4: "MEDIA_ERR_SRC_NOT_SUPPORTED"
|
|
8184
|
+
};
|
|
8185
|
+
var MEDIA_ERR_NETWORK = 2;
|
|
8186
|
+
var MEDIA_ERR_DECODE = 3;
|
|
8187
|
+
var MEDIA_ERR_SRC_NOT_SUPPORTED = 4;
|
|
8188
|
+
function errorMessageFromUnknown(error) {
|
|
8189
|
+
if (error instanceof Error) return error.message;
|
|
8190
|
+
if (typeof error === "string") return error;
|
|
8191
|
+
return void 0;
|
|
8192
|
+
}
|
|
8193
|
+
function isNotFound(httpStatus, details) {
|
|
8194
|
+
return httpStatus === 404 || details === "manifestLoadError" || details === "levelLoadError" || details === "fragLoadError";
|
|
8195
|
+
}
|
|
8196
|
+
function kindForHls(input) {
|
|
8197
|
+
const httpStatus = input.response?.code;
|
|
8198
|
+
if (input.type === "networkError" && isNotFound(httpStatus, input.details)) {
|
|
8199
|
+
return input.context.mode === "vod" || !input.context.manifestParsed ? "unavailable" : "network";
|
|
8200
|
+
}
|
|
8201
|
+
if (input.type === "mediaError" || input.details === "bufferAppendError" || input.details === "bufferSeekOverHole") {
|
|
8202
|
+
return "media";
|
|
8203
|
+
}
|
|
8204
|
+
return "generic";
|
|
8205
|
+
}
|
|
8206
|
+
function kindForNative(input) {
|
|
8207
|
+
const code = input.mediaError?.code;
|
|
8208
|
+
if (code === MEDIA_ERR_DECODE) return "media";
|
|
8209
|
+
if (code === MEDIA_ERR_SRC_NOT_SUPPORTED) return "unsupported";
|
|
8210
|
+
if (code === MEDIA_ERR_NETWORK) return "unavailable";
|
|
8211
|
+
return "generic";
|
|
8212
|
+
}
|
|
8213
|
+
function describePlaybackError(input) {
|
|
8214
|
+
if (input.source === "unsupported") {
|
|
8215
|
+
return {
|
|
8216
|
+
summary: "playback unsupported (hls.js unavailable, native HLS unsupported)",
|
|
8217
|
+
kind: "unsupported",
|
|
8218
|
+
detail: {
|
|
8219
|
+
source: "unsupported",
|
|
8220
|
+
kind: "unsupported",
|
|
8221
|
+
context: input.context
|
|
8222
|
+
}
|
|
8223
|
+
};
|
|
8224
|
+
}
|
|
8225
|
+
if (input.source === "native") {
|
|
8226
|
+
const code = input.mediaError?.code;
|
|
8227
|
+
const kind2 = kindForNative(input);
|
|
8228
|
+
const detail2 = {
|
|
8229
|
+
source: "native",
|
|
8230
|
+
kind: kind2,
|
|
8231
|
+
mediaErrorCode: code,
|
|
8232
|
+
mediaErrorName: code !== void 0 ? MEDIA_ERROR_NAMES[code] : void 0,
|
|
8233
|
+
errorMessage: input.mediaError?.message,
|
|
8234
|
+
context: input.context
|
|
8235
|
+
};
|
|
8236
|
+
const name = detail2.mediaErrorName ?? "MEDIA_ERR_UNKNOWN";
|
|
8237
|
+
return {
|
|
8238
|
+
summary: `native ${name}${input.mediaError?.message ? `: ${input.mediaError.message}` : ""}`,
|
|
8239
|
+
kind: kind2,
|
|
8240
|
+
detail: detail2
|
|
8241
|
+
};
|
|
8242
|
+
}
|
|
8243
|
+
const httpStatus = input.response?.code;
|
|
8244
|
+
const kind = kindForHls(input);
|
|
8245
|
+
const detail = {
|
|
8246
|
+
source: "hls",
|
|
8247
|
+
kind,
|
|
8248
|
+
type: input.type,
|
|
8249
|
+
details: input.details,
|
|
8250
|
+
fatal: input.fatal,
|
|
8251
|
+
httpStatus,
|
|
8252
|
+
url: input.url,
|
|
8253
|
+
reason: input.reason,
|
|
8254
|
+
errorMessage: errorMessageFromUnknown(input.error),
|
|
8255
|
+
context: input.context
|
|
8256
|
+
};
|
|
8257
|
+
const statusSuffix = httpStatus !== void 0 ? ` ${httpStatus}` : "";
|
|
8258
|
+
const summary = [
|
|
8259
|
+
"hls",
|
|
8260
|
+
input.type ?? "unknown",
|
|
8261
|
+
input.details ?? "unknown",
|
|
8262
|
+
input.fatal ? "(fatal)" : "(non-fatal)",
|
|
8263
|
+
statusSuffix.trim()
|
|
8264
|
+
].filter(Boolean).join(" ");
|
|
8265
|
+
return { summary, kind, detail };
|
|
8266
|
+
}
|
|
8267
|
+
|
|
8268
|
+
// src/components/video/useHlsPlayback.ts
|
|
8269
|
+
var RETRY_INTERVAL_MS = 3e3;
|
|
8270
|
+
var MAX_MEDIA_ERROR_RETRIES = 5;
|
|
8271
|
+
function useHlsPlayback({
|
|
8272
|
+
src,
|
|
8273
|
+
mode,
|
|
8274
|
+
active,
|
|
8275
|
+
autoPlay = false,
|
|
8276
|
+
muted = false,
|
|
8277
|
+
onError,
|
|
8278
|
+
onPlayingChange
|
|
8279
|
+
}) {
|
|
8280
|
+
const videoRef = React7__namespace.useRef(null);
|
|
8281
|
+
const hlsRef = React7__namespace.useRef(null);
|
|
8282
|
+
const [state, setState] = React7__namespace.useState("idle");
|
|
8283
|
+
const [qualities, setQualities] = React7__namespace.useState([]);
|
|
8284
|
+
const [activeLevel, setActiveLevel] = React7__namespace.useState(-1);
|
|
8285
|
+
const [autoplayState, setAutoplayState] = React7__namespace.useState("none");
|
|
8286
|
+
const [error, setError] = React7__namespace.useState(null);
|
|
8287
|
+
const [reloadKey, setReloadKey] = React7__namespace.useState(0);
|
|
8288
|
+
const onErrorRef = React7__namespace.useRef(onError);
|
|
8289
|
+
const onPlayingChangeRef = React7__namespace.useRef(onPlayingChange);
|
|
8290
|
+
React7__namespace.useEffect(() => {
|
|
8291
|
+
onErrorRef.current = onError;
|
|
8292
|
+
onPlayingChangeRef.current = onPlayingChange;
|
|
8293
|
+
}, [onError, onPlayingChange]);
|
|
8294
|
+
const retry = React7__namespace.useCallback(() => {
|
|
8295
|
+
setError(null);
|
|
8296
|
+
setState("loading");
|
|
8297
|
+
setAutoplayState("none");
|
|
8298
|
+
setReloadKey((k) => k + 1);
|
|
8299
|
+
}, []);
|
|
8300
|
+
React7__namespace.useEffect(() => {
|
|
8301
|
+
const media = videoRef.current;
|
|
8302
|
+
if (!media || !src || !active) {
|
|
8303
|
+
setState("idle");
|
|
8304
|
+
return;
|
|
8305
|
+
}
|
|
8306
|
+
let cancelled = false;
|
|
8307
|
+
let retryTimer = null;
|
|
8308
|
+
let manifestParsed = false;
|
|
8309
|
+
let mediaErrorRetries = 0;
|
|
8310
|
+
const teardown = [];
|
|
8311
|
+
media.muted = muted;
|
|
8312
|
+
setState("loading");
|
|
8313
|
+
setError(null);
|
|
8314
|
+
setAutoplayState("none");
|
|
8315
|
+
setQualities([]);
|
|
8316
|
+
setActiveLevel(-1);
|
|
8317
|
+
function baseContext() {
|
|
8318
|
+
return { mode, src, manifestParsed, retryCount: mediaErrorRetries };
|
|
8319
|
+
}
|
|
8320
|
+
function clearRetryTimer() {
|
|
8321
|
+
if (retryTimer !== null) {
|
|
8322
|
+
clearTimeout(retryTimer);
|
|
8323
|
+
retryTimer = null;
|
|
8324
|
+
}
|
|
8325
|
+
}
|
|
8326
|
+
function destroyHls() {
|
|
8327
|
+
hlsRef.current?.destroy();
|
|
8328
|
+
hlsRef.current = null;
|
|
8329
|
+
}
|
|
8330
|
+
function reportFatal(input) {
|
|
8331
|
+
const described = describePlaybackError(input);
|
|
8332
|
+
onErrorRef.current?.(described);
|
|
8333
|
+
setError(described);
|
|
8334
|
+
setState("error");
|
|
8335
|
+
}
|
|
8336
|
+
function attemptAutoplay(el) {
|
|
8337
|
+
void el.play().then(
|
|
8338
|
+
() => setAutoplayState("playing"),
|
|
8339
|
+
() => {
|
|
8340
|
+
el.muted = true;
|
|
8341
|
+
void el.play().then(
|
|
8342
|
+
() => setAutoplayState("muted"),
|
|
8343
|
+
() => setAutoplayState("blocked")
|
|
8344
|
+
);
|
|
8345
|
+
}
|
|
8346
|
+
);
|
|
8347
|
+
}
|
|
8348
|
+
function scheduleRetry(retryFn) {
|
|
8349
|
+
clearRetryTimer();
|
|
8350
|
+
if (cancelled) return;
|
|
8351
|
+
setState("waiting");
|
|
8352
|
+
retryTimer = setTimeout(() => {
|
|
8353
|
+
retryTimer = null;
|
|
8354
|
+
if (!cancelled) retryFn();
|
|
8355
|
+
}, RETRY_INTERVAL_MS);
|
|
8356
|
+
}
|
|
8357
|
+
function onPlaying() {
|
|
8358
|
+
manifestParsed = true;
|
|
8359
|
+
mediaErrorRetries = 0;
|
|
8360
|
+
clearRetryTimer();
|
|
8361
|
+
setState("ready");
|
|
8362
|
+
onPlayingChangeRef.current?.(true);
|
|
8363
|
+
}
|
|
8364
|
+
function onPaused() {
|
|
8365
|
+
onPlayingChangeRef.current?.(false);
|
|
8366
|
+
}
|
|
8367
|
+
media.addEventListener("playing", onPlaying);
|
|
8368
|
+
media.addEventListener("pause", onPaused);
|
|
8369
|
+
media.addEventListener("ended", onPaused);
|
|
8370
|
+
teardown.push(() => {
|
|
8371
|
+
media.removeEventListener("playing", onPlaying);
|
|
8372
|
+
media.removeEventListener("pause", onPaused);
|
|
8373
|
+
media.removeEventListener("ended", onPaused);
|
|
8374
|
+
});
|
|
8375
|
+
function initNative() {
|
|
8376
|
+
manifestParsed = false;
|
|
8377
|
+
media.removeAttribute("src");
|
|
8378
|
+
media.load();
|
|
8379
|
+
media.src = src;
|
|
8380
|
+
const onReady = () => {
|
|
8381
|
+
manifestParsed = true;
|
|
8382
|
+
clearRetryTimer();
|
|
8383
|
+
setState("ready");
|
|
8384
|
+
if (mode === "live" || autoPlay) attemptAutoplay(media);
|
|
8385
|
+
};
|
|
8386
|
+
const onErr = () => {
|
|
8387
|
+
if (manifestParsed) {
|
|
8388
|
+
reportFatal({
|
|
8389
|
+
source: "native",
|
|
8390
|
+
mediaError: media.error,
|
|
8391
|
+
context: { ...baseContext(), source: "native" }
|
|
8392
|
+
});
|
|
8393
|
+
return;
|
|
8394
|
+
}
|
|
8395
|
+
onErrorRef.current?.(
|
|
8396
|
+
describePlaybackError({
|
|
8397
|
+
source: "native",
|
|
8398
|
+
mediaError: media.error,
|
|
8399
|
+
context: { ...baseContext(), source: "native" }
|
|
8400
|
+
})
|
|
8401
|
+
);
|
|
8402
|
+
scheduleRetry(() => {
|
|
8403
|
+
media.src = src;
|
|
8404
|
+
media.load();
|
|
8405
|
+
});
|
|
8406
|
+
};
|
|
8407
|
+
media.addEventListener("loadedmetadata", onReady);
|
|
8408
|
+
media.addEventListener("error", onErr);
|
|
8409
|
+
teardown.push(() => {
|
|
8410
|
+
media.removeEventListener("loadedmetadata", onReady);
|
|
8411
|
+
media.removeEventListener("error", onErr);
|
|
8412
|
+
});
|
|
8413
|
+
}
|
|
8414
|
+
function initHlsJs(Hls) {
|
|
8415
|
+
destroyHls();
|
|
8416
|
+
manifestParsed = false;
|
|
8417
|
+
const config = mode === "live" ? createLiveHlsConfig() : createVodHlsConfig();
|
|
8418
|
+
const hls = new Hls(config);
|
|
8419
|
+
hlsRef.current = hls;
|
|
8420
|
+
hls.loadSource(src);
|
|
8421
|
+
hls.attachMedia(media);
|
|
8422
|
+
hls.on(Hls.Events.MANIFEST_PARSED, (_e, data) => {
|
|
8423
|
+
manifestParsed = true;
|
|
8424
|
+
clearRetryTimer();
|
|
8425
|
+
setQualities(
|
|
8426
|
+
data.levels.map((l, index) => ({ index, height: l.height }))
|
|
8427
|
+
);
|
|
8428
|
+
setState("ready");
|
|
8429
|
+
if (mode === "live" || autoPlay) attemptAutoplay(media);
|
|
8430
|
+
});
|
|
8431
|
+
hls.on(Hls.Events.LEVEL_SWITCHED, (_e, data) => {
|
|
8432
|
+
if (hls.autoLevelEnabled) setActiveLevel(-1);
|
|
8433
|
+
else setActiveLevel(data.level);
|
|
8434
|
+
});
|
|
8435
|
+
hls.on(Hls.Events.ERROR, (_e, data) => {
|
|
8436
|
+
onErrorRef.current?.(
|
|
8437
|
+
describePlaybackError({
|
|
8438
|
+
source: "hls",
|
|
8439
|
+
type: data.type,
|
|
8440
|
+
details: data.details,
|
|
8441
|
+
fatal: data.fatal,
|
|
8442
|
+
url: data.url,
|
|
8443
|
+
response: data.response,
|
|
8444
|
+
reason: data.reason,
|
|
8445
|
+
error: data.error,
|
|
8446
|
+
context: { ...baseContext(), source: "hls" }
|
|
8447
|
+
})
|
|
8448
|
+
);
|
|
8449
|
+
if (!data.fatal) return;
|
|
8450
|
+
if (data.type === Hls.ErrorTypes.NETWORK_ERROR) {
|
|
8451
|
+
if (!manifestParsed) {
|
|
8452
|
+
scheduleRetry(() => initHlsJs(Hls));
|
|
8453
|
+
return;
|
|
8454
|
+
}
|
|
8455
|
+
hls.startLoad();
|
|
8456
|
+
return;
|
|
8457
|
+
}
|
|
8458
|
+
mediaErrorRetries += 1;
|
|
8459
|
+
if (mediaErrorRetries === 1) {
|
|
8460
|
+
hls.recoverMediaError();
|
|
8461
|
+
return;
|
|
8462
|
+
}
|
|
8463
|
+
if (mediaErrorRetries === 2) {
|
|
8464
|
+
hls.swapAudioCodec();
|
|
8465
|
+
hls.recoverMediaError();
|
|
8466
|
+
return;
|
|
8467
|
+
}
|
|
8468
|
+
if (mediaErrorRetries < MAX_MEDIA_ERROR_RETRIES) {
|
|
8469
|
+
scheduleRetry(() => initHlsJs(Hls));
|
|
8470
|
+
return;
|
|
8471
|
+
}
|
|
8472
|
+
reportFatal({
|
|
8473
|
+
source: "hls",
|
|
8474
|
+
type: data.type,
|
|
8475
|
+
details: data.details,
|
|
8476
|
+
fatal: true,
|
|
8477
|
+
url: data.url,
|
|
8478
|
+
response: data.response,
|
|
8479
|
+
reason: data.reason,
|
|
8480
|
+
error: data.error,
|
|
8481
|
+
context: { ...baseContext(), source: "hls" }
|
|
8482
|
+
});
|
|
8483
|
+
});
|
|
8484
|
+
}
|
|
8485
|
+
async function setup() {
|
|
8486
|
+
let Hls = null;
|
|
8487
|
+
try {
|
|
8488
|
+
Hls = (await import('hls.js')).default;
|
|
8489
|
+
} catch {
|
|
8490
|
+
Hls = null;
|
|
8491
|
+
}
|
|
8492
|
+
if (cancelled) return;
|
|
8493
|
+
if (Hls && Hls.isSupported()) {
|
|
8494
|
+
initHlsJs(Hls);
|
|
8495
|
+
} else if (media.canPlayType("application/vnd.apple.mpegurl")) {
|
|
8496
|
+
initNative();
|
|
8497
|
+
} else {
|
|
8498
|
+
reportFatal({
|
|
8499
|
+
source: "unsupported",
|
|
8500
|
+
context: { ...baseContext(), source: "unsupported" }
|
|
8501
|
+
});
|
|
8502
|
+
}
|
|
8503
|
+
}
|
|
8504
|
+
void setup();
|
|
8505
|
+
return () => {
|
|
8506
|
+
cancelled = true;
|
|
8507
|
+
clearRetryTimer();
|
|
8508
|
+
for (const fn of teardown) fn();
|
|
8509
|
+
destroyHls();
|
|
8510
|
+
};
|
|
8511
|
+
}, [src, mode, active, autoPlay, muted, reloadKey]);
|
|
8512
|
+
const setLevel = React7__namespace.useCallback((index) => {
|
|
8513
|
+
const hls = hlsRef.current;
|
|
8514
|
+
if (!hls) return;
|
|
8515
|
+
hls.nextLevel = index;
|
|
8516
|
+
setActiveLevel(index);
|
|
8517
|
+
}, []);
|
|
8518
|
+
return {
|
|
8519
|
+
videoRef,
|
|
8520
|
+
state,
|
|
8521
|
+
qualities,
|
|
8522
|
+
activeLevel,
|
|
8523
|
+
setLevel,
|
|
8524
|
+
autoplayState,
|
|
8525
|
+
error,
|
|
8526
|
+
retry
|
|
8527
|
+
};
|
|
8528
|
+
}
|
|
8529
|
+
var DEFAULT_LABELS2 = {
|
|
8530
|
+
play: "Play",
|
|
8531
|
+
pause: "Pause",
|
|
8532
|
+
mute: "Mute",
|
|
8533
|
+
unmute: "Unmute",
|
|
8534
|
+
enterFullscreen: "Fullscreen",
|
|
8535
|
+
exitFullscreen: "Exit fullscreen",
|
|
8536
|
+
pictureInPicture: "Picture in picture",
|
|
8537
|
+
settings: "Settings",
|
|
8538
|
+
quality: "Quality",
|
|
8539
|
+
auto: "Auto",
|
|
8540
|
+
speed: "Speed",
|
|
8541
|
+
live: "LIVE",
|
|
8542
|
+
goLive: "Go live",
|
|
8543
|
+
tapToUnmute: "Tap to unmute",
|
|
8544
|
+
loading: "Loading\u2026",
|
|
8545
|
+
waiting: "Waiting for stream\u2026",
|
|
8546
|
+
retry: "Retry",
|
|
8547
|
+
errorUnavailable: "This video isn't available yet.",
|
|
8548
|
+
errorNetwork: "We couldn't load the video. Check your connection.",
|
|
8549
|
+
errorMedia: "There was a playback problem.",
|
|
8550
|
+
errorUnsupported: "Your browser can't play this video.",
|
|
8551
|
+
errorGeneric: "We couldn't play this video."
|
|
8552
|
+
};
|
|
8553
|
+
var PLAYBACK_RATES = [0.75, 1, 1.25, 1.5, 2];
|
|
8554
|
+
var CONTROLS_HIDE_MS = 3e3;
|
|
8555
|
+
var LIVE_EDGE_THRESHOLD_S = 8;
|
|
8556
|
+
var SEEK_STEP_S = 5;
|
|
8557
|
+
function formatTime(seconds) {
|
|
8558
|
+
if (!Number.isFinite(seconds) || seconds < 0) return "0:00";
|
|
8559
|
+
const total = Math.floor(seconds);
|
|
8560
|
+
const h = Math.floor(total / 3600);
|
|
8561
|
+
const m = Math.floor(total % 3600 / 60);
|
|
8562
|
+
const s = total % 60;
|
|
8563
|
+
const mm = h > 0 ? String(m).padStart(2, "0") : String(m);
|
|
8564
|
+
const ss = String(s).padStart(2, "0");
|
|
8565
|
+
return h > 0 ? `${h}:${mm}:${ss}` : `${mm}:${ss}`;
|
|
8566
|
+
}
|
|
8567
|
+
function VideoPlayer({
|
|
8568
|
+
src,
|
|
8569
|
+
mode,
|
|
8570
|
+
poster,
|
|
8571
|
+
autoPlay = false,
|
|
8572
|
+
muted = false,
|
|
8573
|
+
stats,
|
|
8574
|
+
labels,
|
|
8575
|
+
showQualitySelector = true,
|
|
8576
|
+
onPlayingChange,
|
|
8577
|
+
onFirstPlay,
|
|
8578
|
+
onError,
|
|
8579
|
+
className
|
|
8580
|
+
}) {
|
|
8581
|
+
const t = { ...DEFAULT_LABELS2, ...labels };
|
|
8582
|
+
const containerRef = React7__namespace.useRef(null);
|
|
8583
|
+
const firstPlayFiredRef = React7__namespace.useRef(false);
|
|
8584
|
+
const [userStarted, setUserStarted] = React7__namespace.useState(false);
|
|
8585
|
+
const active = autoPlay || !poster || userStarted;
|
|
8586
|
+
const autoplayActive = autoPlay || userStarted;
|
|
8587
|
+
const handlePlayingChange = React7__namespace.useCallback(
|
|
8588
|
+
(playing) => {
|
|
8589
|
+
setIsPlaying(playing);
|
|
8590
|
+
if (playing && !firstPlayFiredRef.current) {
|
|
8591
|
+
firstPlayFiredRef.current = true;
|
|
8592
|
+
onFirstPlay?.();
|
|
8593
|
+
}
|
|
8594
|
+
onPlayingChange?.(playing);
|
|
8595
|
+
},
|
|
8596
|
+
[onFirstPlay, onPlayingChange]
|
|
8597
|
+
);
|
|
8598
|
+
const {
|
|
8599
|
+
videoRef,
|
|
8600
|
+
state,
|
|
8601
|
+
qualities,
|
|
8602
|
+
activeLevel,
|
|
8603
|
+
setLevel,
|
|
8604
|
+
autoplayState,
|
|
8605
|
+
error,
|
|
8606
|
+
retry
|
|
8607
|
+
} = useHlsPlayback({
|
|
8608
|
+
src,
|
|
8609
|
+
mode,
|
|
8610
|
+
active,
|
|
8611
|
+
autoPlay: autoplayActive,
|
|
8612
|
+
muted,
|
|
8613
|
+
onError,
|
|
8614
|
+
onPlayingChange: handlePlayingChange
|
|
8615
|
+
});
|
|
8616
|
+
const [isPlaying, setIsPlaying] = React7__namespace.useState(false);
|
|
8617
|
+
const [isMuted, setIsMuted] = React7__namespace.useState(muted);
|
|
8618
|
+
const [volume, setVolume] = React7__namespace.useState(1);
|
|
8619
|
+
const [currentTime, setCurrentTime] = React7__namespace.useState(0);
|
|
8620
|
+
const [duration, setDuration] = React7__namespace.useState(0);
|
|
8621
|
+
const [buffered, setBuffered] = React7__namespace.useState(0);
|
|
8622
|
+
const [isFullscreen, setIsFullscreen] = React7__namespace.useState(false);
|
|
8623
|
+
const [pipActive, setPipActive] = React7__namespace.useState(false);
|
|
8624
|
+
const [controlsVisible, setControlsVisible] = React7__namespace.useState(true);
|
|
8625
|
+
const [playbackRate, setPlaybackRate] = React7__namespace.useState(1);
|
|
8626
|
+
const [openMenu, setOpenMenu] = React7__namespace.useState(
|
|
8627
|
+
null
|
|
8628
|
+
);
|
|
8629
|
+
const [behindLive, setBehindLive] = React7__namespace.useState(false);
|
|
8630
|
+
const hideTimerRef = React7__namespace.useRef(null);
|
|
8631
|
+
const pipSupported = typeof document !== "undefined" && "pictureInPictureEnabled" in document && document.pictureInPictureEnabled;
|
|
8632
|
+
const fullscreenSupported = typeof document !== "undefined" && (!!document.fullscreenEnabled || // Safari
|
|
8633
|
+
"webkitFullscreenEnabled" in document);
|
|
8634
|
+
React7__namespace.useEffect(() => {
|
|
8635
|
+
const video = videoRef.current;
|
|
8636
|
+
if (!video || !active) return;
|
|
8637
|
+
const onTimeUpdate = () => {
|
|
8638
|
+
setCurrentTime(video.currentTime);
|
|
8639
|
+
if (video.buffered.length > 0) {
|
|
8640
|
+
setBuffered(video.buffered.end(video.buffered.length - 1));
|
|
8641
|
+
}
|
|
8642
|
+
if (mode === "live" && video.seekable.length > 0) {
|
|
8643
|
+
const edge = video.seekable.end(video.seekable.length - 1);
|
|
8644
|
+
setBehindLive(edge - video.currentTime > LIVE_EDGE_THRESHOLD_S);
|
|
8645
|
+
}
|
|
8646
|
+
};
|
|
8647
|
+
const onDuration = () => setDuration(video.duration);
|
|
8648
|
+
const onVolume = () => {
|
|
8649
|
+
setIsMuted(video.muted);
|
|
8650
|
+
setVolume(video.volume);
|
|
8651
|
+
};
|
|
8652
|
+
const onRate = () => setPlaybackRate(video.playbackRate);
|
|
8653
|
+
video.addEventListener("timeupdate", onTimeUpdate);
|
|
8654
|
+
video.addEventListener("durationchange", onDuration);
|
|
8655
|
+
video.addEventListener("loadedmetadata", onDuration);
|
|
8656
|
+
video.addEventListener("volumechange", onVolume);
|
|
8657
|
+
video.addEventListener("ratechange", onRate);
|
|
8658
|
+
onVolume();
|
|
8659
|
+
return () => {
|
|
8660
|
+
video.removeEventListener("timeupdate", onTimeUpdate);
|
|
8661
|
+
video.removeEventListener("durationchange", onDuration);
|
|
8662
|
+
video.removeEventListener("loadedmetadata", onDuration);
|
|
8663
|
+
video.removeEventListener("volumechange", onVolume);
|
|
8664
|
+
video.removeEventListener("ratechange", onRate);
|
|
8665
|
+
};
|
|
8666
|
+
}, [videoRef, active, mode]);
|
|
8667
|
+
React7__namespace.useEffect(() => {
|
|
8668
|
+
const onFsChange = () => setIsFullscreen(document.fullscreenElement === containerRef.current);
|
|
8669
|
+
document.addEventListener("fullscreenchange", onFsChange);
|
|
8670
|
+
return () => document.removeEventListener("fullscreenchange", onFsChange);
|
|
8671
|
+
}, []);
|
|
8672
|
+
React7__namespace.useEffect(() => {
|
|
8673
|
+
const video = videoRef.current;
|
|
8674
|
+
if (!video) return;
|
|
8675
|
+
const onEnter = () => setPipActive(true);
|
|
8676
|
+
const onLeave = () => setPipActive(false);
|
|
8677
|
+
video.addEventListener("enterpictureinpicture", onEnter);
|
|
8678
|
+
video.addEventListener("leavepictureinpicture", onLeave);
|
|
8679
|
+
return () => {
|
|
8680
|
+
video.removeEventListener("enterpictureinpicture", onEnter);
|
|
8681
|
+
video.removeEventListener("leavepictureinpicture", onLeave);
|
|
8682
|
+
};
|
|
8683
|
+
}, [videoRef]);
|
|
8684
|
+
const scheduleHide = React7__namespace.useCallback(() => {
|
|
8685
|
+
if (hideTimerRef.current) clearTimeout(hideTimerRef.current);
|
|
8686
|
+
hideTimerRef.current = setTimeout(() => {
|
|
8687
|
+
setControlsVisible(false);
|
|
8688
|
+
setOpenMenu(null);
|
|
8689
|
+
}, CONTROLS_HIDE_MS);
|
|
8690
|
+
}, []);
|
|
8691
|
+
const revealControls = React7__namespace.useCallback(() => {
|
|
8692
|
+
setControlsVisible(true);
|
|
8693
|
+
scheduleHide();
|
|
8694
|
+
}, [scheduleHide]);
|
|
8695
|
+
React7__namespace.useEffect(() => {
|
|
8696
|
+
return () => {
|
|
8697
|
+
if (hideTimerRef.current) clearTimeout(hideTimerRef.current);
|
|
8698
|
+
};
|
|
8699
|
+
}, []);
|
|
8700
|
+
function togglePlay() {
|
|
8701
|
+
const video = videoRef.current;
|
|
8702
|
+
if (!video) return;
|
|
8703
|
+
if (video.paused) void video.play();
|
|
8704
|
+
else video.pause();
|
|
8705
|
+
}
|
|
8706
|
+
function toggleMute() {
|
|
8707
|
+
const video = videoRef.current;
|
|
8708
|
+
if (!video) return;
|
|
8709
|
+
video.muted = !video.muted;
|
|
8710
|
+
}
|
|
8711
|
+
function changeVolume(next) {
|
|
8712
|
+
const video = videoRef.current;
|
|
8713
|
+
if (!video) return;
|
|
8714
|
+
video.volume = next;
|
|
8715
|
+
video.muted = next === 0;
|
|
8716
|
+
}
|
|
8717
|
+
function seekTo(next) {
|
|
8718
|
+
const video = videoRef.current;
|
|
8719
|
+
if (!video) return;
|
|
8720
|
+
video.currentTime = next;
|
|
8721
|
+
setCurrentTime(next);
|
|
8722
|
+
}
|
|
8723
|
+
function seekBy(delta) {
|
|
8724
|
+
const video = videoRef.current;
|
|
8725
|
+
if (!video) return;
|
|
8726
|
+
seekTo(Math.min(Math.max(video.currentTime + delta, 0), duration || 0));
|
|
8727
|
+
}
|
|
8728
|
+
function goToLiveEdge() {
|
|
8729
|
+
const video = videoRef.current;
|
|
8730
|
+
if (!video || video.seekable.length === 0) return;
|
|
8731
|
+
video.currentTime = video.seekable.end(video.seekable.length - 1);
|
|
8732
|
+
if (video.paused) void video.play();
|
|
8733
|
+
}
|
|
8734
|
+
function toggleFullscreen() {
|
|
8735
|
+
const el = containerRef.current;
|
|
8736
|
+
if (!el) return;
|
|
8737
|
+
if (document.fullscreenElement === el) {
|
|
8738
|
+
void document.exitFullscreen();
|
|
8739
|
+
} else {
|
|
8740
|
+
void el.requestFullscreen?.();
|
|
8741
|
+
}
|
|
8742
|
+
}
|
|
8743
|
+
function togglePip() {
|
|
8744
|
+
const video = videoRef.current;
|
|
8745
|
+
if (!video) return;
|
|
8746
|
+
if (document.pictureInPictureElement === video) {
|
|
8747
|
+
void document.exitPictureInPicture();
|
|
8748
|
+
} else {
|
|
8749
|
+
void video.requestPictureInPicture?.();
|
|
8750
|
+
}
|
|
8751
|
+
}
|
|
8752
|
+
function changeRate(rate) {
|
|
8753
|
+
const video = videoRef.current;
|
|
8754
|
+
if (video) video.playbackRate = rate;
|
|
8755
|
+
setPlaybackRate(rate);
|
|
8756
|
+
setOpenMenu(null);
|
|
8757
|
+
}
|
|
8758
|
+
function chooseLevel(index) {
|
|
8759
|
+
setLevel(index);
|
|
8760
|
+
setOpenMenu(null);
|
|
8761
|
+
}
|
|
8762
|
+
function handleKeyDown(e) {
|
|
8763
|
+
if (!active) return;
|
|
8764
|
+
switch (e.key) {
|
|
8765
|
+
case " ":
|
|
8766
|
+
case "k":
|
|
8767
|
+
e.preventDefault();
|
|
8768
|
+
togglePlay();
|
|
8769
|
+
break;
|
|
8770
|
+
case "m":
|
|
8771
|
+
toggleMute();
|
|
8772
|
+
break;
|
|
8773
|
+
case "f":
|
|
8774
|
+
toggleFullscreen();
|
|
8775
|
+
break;
|
|
8776
|
+
case "ArrowLeft":
|
|
8777
|
+
if (mode === "vod") {
|
|
8778
|
+
e.preventDefault();
|
|
8779
|
+
seekBy(-SEEK_STEP_S);
|
|
8780
|
+
}
|
|
8781
|
+
break;
|
|
8782
|
+
case "ArrowRight":
|
|
8783
|
+
if (mode === "vod") {
|
|
8784
|
+
e.preventDefault();
|
|
8785
|
+
seekBy(SEEK_STEP_S);
|
|
8786
|
+
}
|
|
8787
|
+
break;
|
|
8788
|
+
case "ArrowUp":
|
|
8789
|
+
e.preventDefault();
|
|
8790
|
+
changeVolume(Math.min((videoRef.current?.volume ?? 1) + 0.1, 1));
|
|
8791
|
+
break;
|
|
8792
|
+
case "ArrowDown":
|
|
8793
|
+
e.preventDefault();
|
|
8794
|
+
changeVolume(Math.max((videoRef.current?.volume ?? 0) - 0.1, 0));
|
|
8795
|
+
break;
|
|
8796
|
+
}
|
|
8797
|
+
revealControls();
|
|
8798
|
+
}
|
|
8799
|
+
function errorMessage(err) {
|
|
8800
|
+
switch (err.kind) {
|
|
8801
|
+
case "unavailable":
|
|
8802
|
+
return t.errorUnavailable;
|
|
8803
|
+
case "network":
|
|
8804
|
+
return t.errorNetwork;
|
|
8805
|
+
case "media":
|
|
8806
|
+
return t.errorMedia;
|
|
8807
|
+
case "unsupported":
|
|
8808
|
+
return t.errorUnsupported;
|
|
8809
|
+
case "generic":
|
|
8810
|
+
return t.errorGeneric;
|
|
8811
|
+
default: {
|
|
8812
|
+
const _exhaustive = err.kind;
|
|
8813
|
+
return _exhaustive;
|
|
8814
|
+
}
|
|
8815
|
+
}
|
|
8816
|
+
}
|
|
8817
|
+
const VolumeIcon = isMuted || volume === 0 ? lucideReact.VolumeX : volume < 0.5 ? lucideReact.Volume1 : lucideReact.Volume2;
|
|
8818
|
+
const showSpinner = active && (state === "loading" || state === "waiting");
|
|
8819
|
+
const showControls = active && state === "ready" && (controlsVisible || !isPlaying);
|
|
8820
|
+
const showPoster = !active && !!poster;
|
|
8821
|
+
const currentLevelLabel = activeLevel < 0 ? t.auto : `${qualities.find((q) => q.index === activeLevel)?.height ?? ""}p`;
|
|
8822
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8823
|
+
"div",
|
|
8824
|
+
{
|
|
8825
|
+
ref: containerRef,
|
|
8826
|
+
"data-slot": "video-player",
|
|
8827
|
+
"data-mode": mode,
|
|
8828
|
+
className: cn(
|
|
8829
|
+
"group relative aspect-video w-full overflow-hidden rounded-lg bg-black text-white select-none",
|
|
8830
|
+
className
|
|
8831
|
+
),
|
|
8832
|
+
onMouseMove: revealControls,
|
|
8833
|
+
onMouseLeave: () => {
|
|
8834
|
+
if (isPlaying) setControlsVisible(false);
|
|
8835
|
+
},
|
|
8836
|
+
onKeyDown: handleKeyDown,
|
|
8837
|
+
tabIndex: 0,
|
|
8838
|
+
role: "region",
|
|
8839
|
+
"aria-label": "Video player",
|
|
8840
|
+
children: [
|
|
8841
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8842
|
+
"video",
|
|
8843
|
+
{
|
|
8844
|
+
ref: videoRef,
|
|
8845
|
+
playsInline: true,
|
|
8846
|
+
className: "h-full w-full bg-black",
|
|
8847
|
+
onClick: active ? togglePlay : void 0,
|
|
8848
|
+
poster
|
|
8849
|
+
}
|
|
8850
|
+
),
|
|
8851
|
+
showPoster && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8852
|
+
"button",
|
|
8853
|
+
{
|
|
8854
|
+
type: "button",
|
|
8855
|
+
"aria-label": t.play,
|
|
8856
|
+
onClick: () => {
|
|
8857
|
+
setUserStarted(true);
|
|
8858
|
+
revealControls();
|
|
8859
|
+
},
|
|
8860
|
+
className: "absolute inset-0 flex items-center justify-center bg-cover bg-center",
|
|
8861
|
+
style: poster ? { backgroundImage: `url(${poster})` } : void 0,
|
|
8862
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-16 items-center justify-center rounded-full bg-black/50 backdrop-blur-sm transition group-hover:bg-black/70", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Play, { className: "size-8 translate-x-0.5", fill: "currentColor" }) })
|
|
8863
|
+
}
|
|
8864
|
+
),
|
|
8865
|
+
showSpinner && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 flex flex-col items-center justify-center gap-3 bg-black/50 text-sm", children: [
|
|
8866
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-8 animate-spin" }),
|
|
8867
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: state === "loading" ? t.loading : t.waiting })
|
|
8868
|
+
] }),
|
|
8869
|
+
state === "error" && error && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute inset-0 flex flex-col items-center justify-center gap-4 bg-black/70 px-6 text-center text-sm", children: [
|
|
8870
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircle, { className: "text-red-400 size-8" }),
|
|
8871
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-red-200", children: errorMessage(error) }),
|
|
8872
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8873
|
+
"button",
|
|
8874
|
+
{
|
|
8875
|
+
type: "button",
|
|
8876
|
+
onClick: retry,
|
|
8877
|
+
className: "inline-flex items-center gap-2 rounded-md bg-white/15 px-3 py-1.5 text-sm hover:bg-white/25",
|
|
8878
|
+
children: [
|
|
8879
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.RotateCw, { className: "size-4" }),
|
|
8880
|
+
t.retry
|
|
8881
|
+
]
|
|
8882
|
+
}
|
|
8883
|
+
)
|
|
8884
|
+
] }),
|
|
8885
|
+
state === "ready" && autoplayState === "blocked" && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8886
|
+
"button",
|
|
8887
|
+
{
|
|
8888
|
+
type: "button",
|
|
8889
|
+
"aria-label": t.play,
|
|
8890
|
+
onClick: togglePlay,
|
|
8891
|
+
className: "flex size-16 items-center justify-center rounded-full bg-white/20 backdrop-blur-sm transition hover:bg-white/30",
|
|
8892
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Play, { className: "size-8 translate-x-0.5", fill: "currentColor" })
|
|
8893
|
+
}
|
|
8894
|
+
) }),
|
|
8895
|
+
state === "ready" && autoplayState === "muted" && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8896
|
+
"button",
|
|
8897
|
+
{
|
|
8898
|
+
type: "button",
|
|
8899
|
+
onClick: toggleMute,
|
|
8900
|
+
className: "absolute top-3 right-3 flex items-center gap-1.5 rounded-full bg-black/70 px-3 py-1.5 text-xs backdrop-blur-sm transition hover:bg-black/90",
|
|
8901
|
+
children: [
|
|
8902
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.VolumeX, { className: "size-4" }),
|
|
8903
|
+
t.tapToUnmute
|
|
8904
|
+
]
|
|
8905
|
+
}
|
|
8906
|
+
),
|
|
8907
|
+
mode === "live" && active && state === "ready" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-3 left-3 flex items-center gap-2", children: [
|
|
8908
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-1.5 rounded bg-red-600 px-2 py-0.5 text-xs font-semibold tracking-wide", children: [
|
|
8909
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "size-1.5 animate-pulse rounded-full bg-white" }),
|
|
8910
|
+
t.live
|
|
8911
|
+
] }),
|
|
8912
|
+
typeof stats?.viewers === "number" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded bg-black/60 px-2 py-0.5 text-xs", children: t.formatViewers ? t.formatViewers(stats.viewers) : `\u{1F441} ${stats.viewers}` })
|
|
8913
|
+
] }),
|
|
8914
|
+
active && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8915
|
+
"div",
|
|
8916
|
+
{
|
|
8917
|
+
className: cn(
|
|
8918
|
+
"absolute inset-x-0 bottom-0 flex flex-col gap-1 bg-gradient-to-t from-black/80 to-transparent px-3 pt-8 pb-2 transition-opacity",
|
|
8919
|
+
showControls ? "opacity-100" : "pointer-events-none opacity-0"
|
|
8920
|
+
),
|
|
8921
|
+
"data-slot": "video-controls",
|
|
8922
|
+
children: [
|
|
8923
|
+
mode === "vod" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative w-full", children: [
|
|
8924
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8925
|
+
Slider,
|
|
8926
|
+
{
|
|
8927
|
+
"aria-label": "Seek",
|
|
8928
|
+
min: 0,
|
|
8929
|
+
max: duration || 0,
|
|
8930
|
+
step: 0.1,
|
|
8931
|
+
value: [Math.min(currentTime, duration || 0)],
|
|
8932
|
+
onValueChange: (v) => seekTo(v[0] ?? 0),
|
|
8933
|
+
className: "w-full"
|
|
8934
|
+
}
|
|
8935
|
+
),
|
|
8936
|
+
duration > 0 && buffered > currentTime && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8937
|
+
"span",
|
|
8938
|
+
{
|
|
8939
|
+
"aria-hidden": "true",
|
|
8940
|
+
className: "pointer-events-none absolute top-1/2 left-0 h-1.5 -translate-y-1/2 rounded-full bg-white/25",
|
|
8941
|
+
style: {
|
|
8942
|
+
width: `${Math.min(buffered / duration * 100, 100)}%`
|
|
8943
|
+
}
|
|
8944
|
+
}
|
|
8945
|
+
)
|
|
8946
|
+
] }),
|
|
8947
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
8948
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8949
|
+
ControlButton,
|
|
8950
|
+
{
|
|
8951
|
+
label: isPlaying ? t.pause : t.play,
|
|
8952
|
+
onClick: togglePlay,
|
|
8953
|
+
children: isPlaying ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Pause, { className: "size-5", fill: "currentColor" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Play, { className: "size-5", fill: "currentColor" })
|
|
8954
|
+
}
|
|
8955
|
+
),
|
|
8956
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "group/vol flex items-center", children: [
|
|
8957
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8958
|
+
ControlButton,
|
|
8959
|
+
{
|
|
8960
|
+
label: isMuted ? t.unmute : t.mute,
|
|
8961
|
+
onClick: toggleMute,
|
|
8962
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(VolumeIcon, { className: "size-5" })
|
|
8963
|
+
}
|
|
8964
|
+
),
|
|
8965
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-0 overflow-hidden transition-all group-hover/vol:w-20 group-hover/vol:px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8966
|
+
Slider,
|
|
8967
|
+
{
|
|
8968
|
+
"aria-label": "Volume",
|
|
8969
|
+
min: 0,
|
|
8970
|
+
max: 1,
|
|
8971
|
+
step: 0.05,
|
|
8972
|
+
value: [isMuted ? 0 : volume],
|
|
8973
|
+
onValueChange: (v) => changeVolume(v[0] ?? 0)
|
|
8974
|
+
}
|
|
8975
|
+
) })
|
|
8976
|
+
] }),
|
|
8977
|
+
mode === "vod" && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-1 text-xs tabular-nums", children: [
|
|
8978
|
+
formatTime(currentTime),
|
|
8979
|
+
" / ",
|
|
8980
|
+
formatTime(duration)
|
|
8981
|
+
] }),
|
|
8982
|
+
mode === "live" && behindLive && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8983
|
+
"button",
|
|
8984
|
+
{
|
|
8985
|
+
type: "button",
|
|
8986
|
+
onClick: goToLiveEdge,
|
|
8987
|
+
className: "ml-1 flex items-center gap-1 rounded bg-white/15 px-2 py-0.5 text-xs hover:bg-white/25",
|
|
8988
|
+
children: [
|
|
8989
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "size-1.5 rounded-full bg-red-500" }),
|
|
8990
|
+
t.goLive
|
|
8991
|
+
]
|
|
8992
|
+
}
|
|
8993
|
+
),
|
|
8994
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-auto flex items-center gap-1", children: [
|
|
8995
|
+
mode === "vod" && typeof stats?.views === "number" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mr-1 text-xs", children: t.formatViews ? t.formatViews(stats.views) : `${stats.views} views` }),
|
|
8996
|
+
mode === "vod" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8997
|
+
MenuControl,
|
|
8998
|
+
{
|
|
8999
|
+
label: t.speed,
|
|
9000
|
+
open: openMenu === "speed",
|
|
9001
|
+
onOpenChange: (o) => setOpenMenu(o ? "speed" : null),
|
|
9002
|
+
trigger: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs font-semibold", children: [
|
|
9003
|
+
playbackRate,
|
|
9004
|
+
"\xD7"
|
|
9005
|
+
] }),
|
|
9006
|
+
children: PLAYBACK_RATES.map((rate) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9007
|
+
MenuItem,
|
|
9008
|
+
{
|
|
9009
|
+
selected: rate === playbackRate,
|
|
9010
|
+
onSelect: () => changeRate(rate),
|
|
9011
|
+
children: [
|
|
9012
|
+
rate,
|
|
9013
|
+
"\xD7"
|
|
9014
|
+
]
|
|
9015
|
+
},
|
|
9016
|
+
rate
|
|
9017
|
+
))
|
|
9018
|
+
}
|
|
9019
|
+
),
|
|
9020
|
+
showQualitySelector && qualities.length > 1 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9021
|
+
MenuControl,
|
|
9022
|
+
{
|
|
9023
|
+
label: t.quality,
|
|
9024
|
+
open: openMenu === "quality",
|
|
9025
|
+
onOpenChange: (o) => setOpenMenu(o ? "quality" : null),
|
|
9026
|
+
trigger: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings, { className: "size-5" }),
|
|
9027
|
+
triggerBadge: currentLevelLabel,
|
|
9028
|
+
children: [
|
|
9029
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9030
|
+
MenuItem,
|
|
9031
|
+
{
|
|
9032
|
+
selected: activeLevel < 0,
|
|
9033
|
+
onSelect: () => chooseLevel(-1),
|
|
9034
|
+
children: t.auto
|
|
9035
|
+
}
|
|
9036
|
+
),
|
|
9037
|
+
qualities.map((q) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9038
|
+
MenuItem,
|
|
9039
|
+
{
|
|
9040
|
+
selected: activeLevel === q.index,
|
|
9041
|
+
onSelect: () => chooseLevel(q.index),
|
|
9042
|
+
children: [
|
|
9043
|
+
q.height,
|
|
9044
|
+
"p"
|
|
9045
|
+
]
|
|
9046
|
+
},
|
|
9047
|
+
q.index
|
|
9048
|
+
))
|
|
9049
|
+
]
|
|
9050
|
+
}
|
|
9051
|
+
),
|
|
9052
|
+
pipSupported && /* @__PURE__ */ jsxRuntime.jsx(ControlButton, { label: t.pictureInPicture, onClick: togglePip, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9053
|
+
lucideReact.PictureInPicture2,
|
|
9054
|
+
{
|
|
9055
|
+
className: cn("size-5", pipActive && "text-primary")
|
|
9056
|
+
}
|
|
9057
|
+
) }),
|
|
9058
|
+
fullscreenSupported && /* @__PURE__ */ jsxRuntime.jsx(
|
|
9059
|
+
ControlButton,
|
|
9060
|
+
{
|
|
9061
|
+
label: isFullscreen ? t.exitFullscreen : t.enterFullscreen,
|
|
9062
|
+
onClick: toggleFullscreen,
|
|
9063
|
+
children: isFullscreen ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Minimize, { className: "size-5" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Maximize, { className: "size-5" })
|
|
9064
|
+
}
|
|
9065
|
+
)
|
|
9066
|
+
] })
|
|
9067
|
+
] })
|
|
9068
|
+
]
|
|
9069
|
+
}
|
|
9070
|
+
)
|
|
9071
|
+
]
|
|
9072
|
+
}
|
|
9073
|
+
);
|
|
9074
|
+
}
|
|
9075
|
+
function ControlButton({
|
|
9076
|
+
label,
|
|
9077
|
+
onClick,
|
|
9078
|
+
children
|
|
9079
|
+
}) {
|
|
9080
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9081
|
+
"button",
|
|
9082
|
+
{
|
|
9083
|
+
type: "button",
|
|
9084
|
+
"aria-label": label,
|
|
9085
|
+
title: label,
|
|
9086
|
+
onClick,
|
|
9087
|
+
className: "flex size-8 items-center justify-center rounded-md text-white/90 outline-none hover:bg-white/15 hover:text-white focus-visible:ring-2 focus-visible:ring-white/60",
|
|
9088
|
+
children
|
|
9089
|
+
}
|
|
9090
|
+
);
|
|
9091
|
+
}
|
|
9092
|
+
function MenuControl({
|
|
9093
|
+
label,
|
|
9094
|
+
open,
|
|
9095
|
+
onOpenChange,
|
|
9096
|
+
trigger,
|
|
9097
|
+
triggerBadge,
|
|
9098
|
+
children
|
|
9099
|
+
}) {
|
|
9100
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
9101
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
9102
|
+
"button",
|
|
9103
|
+
{
|
|
9104
|
+
type: "button",
|
|
9105
|
+
"aria-label": label,
|
|
9106
|
+
"aria-haspopup": "menu",
|
|
9107
|
+
"aria-expanded": open,
|
|
9108
|
+
title: label,
|
|
9109
|
+
onClick: () => onOpenChange(!open),
|
|
9110
|
+
className: "flex h-8 items-center gap-1 rounded-md px-1.5 text-white/90 outline-none hover:bg-white/15 hover:text-white focus-visible:ring-2 focus-visible:ring-white/60",
|
|
9111
|
+
children: [
|
|
9112
|
+
trigger,
|
|
9113
|
+
triggerBadge && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-medium", children: triggerBadge })
|
|
9114
|
+
]
|
|
9115
|
+
}
|
|
9116
|
+
),
|
|
9117
|
+
open && /* @__PURE__ */ jsxRuntime.jsx(
|
|
9118
|
+
"div",
|
|
9119
|
+
{
|
|
9120
|
+
role: "menu",
|
|
9121
|
+
className: "absolute right-0 bottom-full z-10 mb-2 min-w-24 rounded-md bg-black/90 p-1 text-sm shadow-lg backdrop-blur-sm",
|
|
9122
|
+
children
|
|
9123
|
+
}
|
|
9124
|
+
)
|
|
9125
|
+
] });
|
|
9126
|
+
}
|
|
9127
|
+
function MenuItem({
|
|
9128
|
+
selected,
|
|
9129
|
+
onSelect,
|
|
9130
|
+
children
|
|
9131
|
+
}) {
|
|
9132
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9133
|
+
"button",
|
|
9134
|
+
{
|
|
9135
|
+
type: "button",
|
|
9136
|
+
role: "menuitemradio",
|
|
9137
|
+
"aria-checked": selected,
|
|
9138
|
+
onClick: onSelect,
|
|
9139
|
+
className: "flex w-full items-center justify-between gap-3 rounded px-2 py-1.5 text-left text-white/90 hover:bg-white/15",
|
|
9140
|
+
children: [
|
|
9141
|
+
children,
|
|
9142
|
+
selected && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "size-4" })
|
|
9143
|
+
]
|
|
9144
|
+
}
|
|
9145
|
+
);
|
|
9146
|
+
}
|
|
9147
|
+
function usePlaybackStats(statsUrl, { intervalMs = 15e3, enabled = true } = {}) {
|
|
9148
|
+
const [stats, setStats] = React7__namespace.useState({});
|
|
9149
|
+
React7__namespace.useEffect(() => {
|
|
9150
|
+
if (!statsUrl || !enabled) return;
|
|
9151
|
+
let cancelled = false;
|
|
9152
|
+
const controller = new AbortController();
|
|
9153
|
+
async function poll() {
|
|
9154
|
+
try {
|
|
9155
|
+
const res = await fetch(statsUrl, {
|
|
9156
|
+
signal: controller.signal
|
|
9157
|
+
});
|
|
9158
|
+
if (!res.ok) return;
|
|
9159
|
+
const data = await res.json();
|
|
9160
|
+
if (cancelled) return;
|
|
9161
|
+
setStats({
|
|
9162
|
+
viewers: typeof data.viewers === "number" ? data.viewers : void 0,
|
|
9163
|
+
views: typeof data.views === "number" ? data.views : void 0
|
|
9164
|
+
});
|
|
9165
|
+
} catch {
|
|
9166
|
+
}
|
|
9167
|
+
}
|
|
9168
|
+
void poll();
|
|
9169
|
+
const timer = setInterval(() => void poll(), intervalMs);
|
|
9170
|
+
return () => {
|
|
9171
|
+
cancelled = true;
|
|
9172
|
+
controller.abort();
|
|
9173
|
+
clearInterval(timer);
|
|
9174
|
+
};
|
|
9175
|
+
}, [statsUrl, intervalMs, enabled]);
|
|
9176
|
+
return stats;
|
|
9177
|
+
}
|
|
7604
9178
|
function useDebouncedValue(value, delayMs) {
|
|
7605
|
-
const [debounced, setDebounced] =
|
|
7606
|
-
|
|
9179
|
+
const [debounced, setDebounced] = React7.useState(value);
|
|
9180
|
+
React7.useEffect(() => {
|
|
7607
9181
|
const id = window.setTimeout(() => setDebounced(value), delayMs);
|
|
7608
9182
|
return () => window.clearTimeout(id);
|
|
7609
9183
|
}, [value, delayMs]);
|
|
7610
9184
|
return debounced;
|
|
7611
9185
|
}
|
|
7612
9186
|
function useDebouncedValueStrict(value, delayMs) {
|
|
7613
|
-
const [debounced, setDebounced] =
|
|
7614
|
-
|
|
9187
|
+
const [debounced, setDebounced] = React7.useState(void 0);
|
|
9188
|
+
React7.useEffect(() => {
|
|
7615
9189
|
setDebounced(void 0);
|
|
7616
9190
|
const id = window.setTimeout(() => setDebounced(value), delayMs);
|
|
7617
9191
|
return () => window.clearTimeout(id);
|
|
@@ -7668,13 +9242,13 @@ function CardInput({
|
|
|
7668
9242
|
className,
|
|
7669
9243
|
onError
|
|
7670
9244
|
}) {
|
|
7671
|
-
const baseId =
|
|
7672
|
-
const [panDigits, setPanDigits] =
|
|
7673
|
-
const [expiryRaw, setExpiryRaw] =
|
|
7674
|
-
const [cvc, setCvc] =
|
|
7675
|
-
const [holderName, setHolderName] =
|
|
7676
|
-
const [panFocused, setPanFocused] =
|
|
7677
|
-
const [submitting, setSubmitting] =
|
|
9245
|
+
const baseId = React7.useId();
|
|
9246
|
+
const [panDigits, setPanDigits] = React7.useState("");
|
|
9247
|
+
const [expiryRaw, setExpiryRaw] = React7.useState("");
|
|
9248
|
+
const [cvc, setCvc] = React7.useState("");
|
|
9249
|
+
const [holderName, setHolderName] = React7.useState("");
|
|
9250
|
+
const [panFocused, setPanFocused] = React7.useState(false);
|
|
9251
|
+
const [submitting, setSubmitting] = React7.useState(false);
|
|
7678
9252
|
const inputClass = largeText ? "text-base py-3" : "";
|
|
7679
9253
|
const labelClass = largeText ? "text-base" : "text-sm";
|
|
7680
9254
|
const numberValidation = valid__default.default.number(panDigits);
|
|
@@ -7702,7 +9276,7 @@ function CardInput({
|
|
|
7702
9276
|
if (d.length >= 2) d = `${d.slice(0, 2)}/${d.slice(2)}`;
|
|
7703
9277
|
setExpiryRaw(d);
|
|
7704
9278
|
};
|
|
7705
|
-
const runTokenize =
|
|
9279
|
+
const runTokenize = React7.useCallback(async () => {
|
|
7706
9280
|
if (!expiryParsed) return;
|
|
7707
9281
|
setSubmitting(true);
|
|
7708
9282
|
try {
|
|
@@ -7928,40 +9502,40 @@ function USAddressInput({
|
|
|
7928
9502
|
className,
|
|
7929
9503
|
onError
|
|
7930
9504
|
}) {
|
|
7931
|
-
const [searchQuery, setSearchQuery] =
|
|
7932
|
-
const [showSuggestions, setShowSuggestions] =
|
|
7933
|
-
const [suggestions, setSuggestions] =
|
|
7934
|
-
const [address, setAddress] =
|
|
9505
|
+
const [searchQuery, setSearchQuery] = React7.useState("");
|
|
9506
|
+
const [showSuggestions, setShowSuggestions] = React7.useState(false);
|
|
9507
|
+
const [suggestions, setSuggestions] = React7.useState([]);
|
|
9508
|
+
const [address, setAddress] = React7.useState(
|
|
7935
9509
|
() => parseInitial(value)
|
|
7936
9510
|
);
|
|
7937
|
-
const [sessionToken] =
|
|
9511
|
+
const [sessionToken] = React7.useState(
|
|
7938
9512
|
() => typeof crypto !== "undefined" && crypto.randomUUID ? crypto.randomUUID() : `${Date.now()}-${Math.random()}`
|
|
7939
9513
|
);
|
|
7940
|
-
const [loadingAutocomplete, setLoadingAutocomplete] =
|
|
7941
|
-
const [loadingZip, setLoadingZip] =
|
|
7942
|
-
const [loadingValidate, setLoadingValidate] =
|
|
7943
|
-
const [uspsSuggestion, setUspsSuggestion] =
|
|
9514
|
+
const [loadingAutocomplete, setLoadingAutocomplete] = React7.useState(false);
|
|
9515
|
+
const [loadingZip, setLoadingZip] = React7.useState(false);
|
|
9516
|
+
const [loadingValidate, setLoadingValidate] = React7.useState(false);
|
|
9517
|
+
const [uspsSuggestion, setUspsSuggestion] = React7.useState(
|
|
7944
9518
|
null
|
|
7945
9519
|
);
|
|
7946
|
-
const [uspsVerifiedNoChange, setUspsVerifiedNoChange] =
|
|
7947
|
-
const searchRef =
|
|
7948
|
-
const suggestionCache =
|
|
7949
|
-
const warnedRef =
|
|
9520
|
+
const [uspsVerifiedNoChange, setUspsVerifiedNoChange] = React7.useState(false);
|
|
9521
|
+
const searchRef = React7.useRef(null);
|
|
9522
|
+
const suggestionCache = React7.useRef(/* @__PURE__ */ new Map());
|
|
9523
|
+
const warnedRef = React7.useRef({
|
|
7950
9524
|
autocomplete: false,
|
|
7951
9525
|
zip: false,
|
|
7952
9526
|
validate: false
|
|
7953
9527
|
});
|
|
7954
|
-
const lastZipLookup =
|
|
7955
|
-
const addressRef =
|
|
9528
|
+
const lastZipLookup = React7.useRef("");
|
|
9529
|
+
const addressRef = React7.useRef(address);
|
|
7956
9530
|
addressRef.current = address;
|
|
7957
|
-
const lastValidatedSigRef =
|
|
9531
|
+
const lastValidatedSigRef = React7.useRef("");
|
|
7958
9532
|
const debouncedSearch = useDebouncedValue(searchQuery, 400);
|
|
7959
9533
|
const zipDigits = address.zip.replace(/\D/g, "").slice(0, 5);
|
|
7960
9534
|
const debouncedZip = useDebouncedValue(zipDigits, 400);
|
|
7961
9535
|
const debouncedAddressForValidate = useDebouncedValueStrict(address, 1200);
|
|
7962
9536
|
const inputClass = largeText ? "text-base py-3" : "";
|
|
7963
9537
|
const labelClass = largeText ? "text-base" : "text-sm";
|
|
7964
|
-
|
|
9538
|
+
React7.useEffect(() => {
|
|
7965
9539
|
const handleClickOutside = (event) => {
|
|
7966
9540
|
if (searchRef.current && !searchRef.current.contains(event.target)) {
|
|
7967
9541
|
setShowSuggestions(false);
|
|
@@ -7971,7 +9545,7 @@ function USAddressInput({
|
|
|
7971
9545
|
return () => document.removeEventListener("mousedown", handleClickOutside);
|
|
7972
9546
|
}, []);
|
|
7973
9547
|
const valueSyncKey = value == null ? "" : `o:${JSON.stringify(value)}`;
|
|
7974
|
-
|
|
9548
|
+
React7.useEffect(() => {
|
|
7975
9549
|
setAddress(parseInitial(value));
|
|
7976
9550
|
}, [valueSyncKey]);
|
|
7977
9551
|
const handleFieldChange = (field, fieldValue) => {
|
|
@@ -7981,7 +9555,7 @@ function USAddressInput({
|
|
|
7981
9555
|
return next;
|
|
7982
9556
|
});
|
|
7983
9557
|
};
|
|
7984
|
-
|
|
9558
|
+
React7.useEffect(() => {
|
|
7985
9559
|
const sig = addressSig(addressRef.current);
|
|
7986
9560
|
if (sig !== lastValidatedSigRef.current) {
|
|
7987
9561
|
setUspsVerifiedNoChange(false);
|
|
@@ -7991,7 +9565,7 @@ function USAddressInput({
|
|
|
7991
9565
|
const allowAutocomplete = Boolean(autocomplete);
|
|
7992
9566
|
const allowUspsValidation = Boolean(validateAddress);
|
|
7993
9567
|
const allowZipLookup = Boolean(lookupZip);
|
|
7994
|
-
|
|
9568
|
+
React7.useEffect(() => {
|
|
7995
9569
|
if (!allowAutocomplete || !autocomplete) return;
|
|
7996
9570
|
const q = debouncedSearch.trim();
|
|
7997
9571
|
if (q.length < 3) {
|
|
@@ -8033,7 +9607,7 @@ function USAddressInput({
|
|
|
8033
9607
|
labels.autocompleteUnavailable,
|
|
8034
9608
|
onError
|
|
8035
9609
|
]);
|
|
8036
|
-
|
|
9610
|
+
React7.useEffect(() => {
|
|
8037
9611
|
if (!allowZipLookup || !lookupZip) return;
|
|
8038
9612
|
if (debouncedZip.length !== 5) return;
|
|
8039
9613
|
if (debouncedZip === lastZipLookup.current) return;
|
|
@@ -8067,7 +9641,7 @@ function USAddressInput({
|
|
|
8067
9641
|
labels.zipLookupFailed,
|
|
8068
9642
|
onError
|
|
8069
9643
|
]);
|
|
8070
|
-
|
|
9644
|
+
React7.useEffect(() => {
|
|
8071
9645
|
if (!allowUspsValidation || !validateAddress || disabled) return;
|
|
8072
9646
|
if (debouncedAddressForValidate === void 0) return;
|
|
8073
9647
|
const addr = debouncedAddressForValidate;
|
|
@@ -8452,8 +10026,8 @@ var MEXICO_STATE_PATHS = {
|
|
|
8452
10026
|
};
|
|
8453
10027
|
function MexicoMap({ selected, onToggle, className }) {
|
|
8454
10028
|
const isInteractive = typeof onToggle === "function";
|
|
8455
|
-
const selectedSet =
|
|
8456
|
-
const handleKeyDown =
|
|
10029
|
+
const selectedSet = React7__namespace.useMemo(() => new Set(selected), [selected]);
|
|
10030
|
+
const handleKeyDown = React7__namespace.useCallback(
|
|
8457
10031
|
(event, id) => {
|
|
8458
10032
|
if (!onToggle) return;
|
|
8459
10033
|
if (event.key === "Enter" || event.key === " ") {
|
|
@@ -8606,6 +10180,8 @@ exports.DropdownMenuSub = DropdownMenuSub;
|
|
|
8606
10180
|
exports.DropdownMenuSubContent = DropdownMenuSubContent;
|
|
8607
10181
|
exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger;
|
|
8608
10182
|
exports.DropdownMenuTrigger = DropdownMenuTrigger;
|
|
10183
|
+
exports.EmojiPicker = EmojiPicker;
|
|
10184
|
+
exports.EmojiPickerPopover = EmojiPickerPopover;
|
|
8609
10185
|
exports.EmptyState = EmptyState;
|
|
8610
10186
|
exports.EnvironmentBanner = EnvironmentBanner;
|
|
8611
10187
|
exports.EnvironmentContext = EnvironmentContext;
|
|
@@ -8641,12 +10217,18 @@ exports.TooltipTrigger = TooltipTrigger;
|
|
|
8641
10217
|
exports.USAddressInput = USAddressInput;
|
|
8642
10218
|
exports.UpcomingEvents = UpcomingEvents;
|
|
8643
10219
|
exports.VerifiedProfessionalBadge = VerifiedProfessionalBadge;
|
|
10220
|
+
exports.VideoPlayer = VideoPlayer;
|
|
8644
10221
|
exports.buttonVariants = buttonVariants;
|
|
8645
10222
|
exports.cn = cn;
|
|
10223
|
+
exports.createLiveHlsConfig = createLiveHlsConfig;
|
|
10224
|
+
exports.createVodHlsConfig = createVodHlsConfig;
|
|
8646
10225
|
exports.defaultLanguages = defaultLanguages;
|
|
10226
|
+
exports.describePlaybackError = describePlaybackError;
|
|
8647
10227
|
exports.getEnvironmentDotClass = getEnvironmentDotClass;
|
|
8648
10228
|
exports.getEnvironmentLabel = getEnvironmentLabel;
|
|
8649
10229
|
exports.isBlocksDataEnvironment = isBlocksDataEnvironment;
|
|
10230
|
+
exports.normalizeEmojiQuery = normalizeEmojiQuery;
|
|
10231
|
+
exports.shouldRetryLiveEdge404 = shouldRetryLiveEdge404;
|
|
8650
10232
|
exports.toggleVariants = toggleVariants;
|
|
8651
10233
|
exports.useCalendarContext = useCalendarContext;
|
|
8652
10234
|
exports.useChatRoom = useChatRoom;
|
|
@@ -8654,7 +10236,9 @@ exports.useChatSidebar = useChatSidebar;
|
|
|
8654
10236
|
exports.useDebouncedValue = useDebouncedValue;
|
|
8655
10237
|
exports.useDebouncedValueStrict = useDebouncedValueStrict;
|
|
8656
10238
|
exports.useEnvironmentContext = useEnvironmentContext;
|
|
10239
|
+
exports.useHlsPlayback = useHlsPlayback;
|
|
8657
10240
|
exports.useLanguageContext = useLanguageContext;
|
|
8658
10241
|
exports.useNotificationsContext = useNotificationsContext;
|
|
10242
|
+
exports.usePlaybackStats = usePlaybackStats;
|
|
8659
10243
|
//# sourceMappingURL=index.cjs.map
|
|
8660
10244
|
//# sourceMappingURL=index.cjs.map
|